Files
MBS/PROYECTO/nodir/noprmt004.4gl
T

146 lines
4.2 KiB
Plaintext

{
==============================================================================
PROGRAMA : NOPRMT004
DESCRIPCION : PROCESO DE FIN DE ANO
OBJETIVO : ACTUALIZAR LA TABLA HISTORICA DE NOMINA(NOTB00016) Y
BORRAR TODAS LAS NOMINAS QUE ESTAN EN LA TABLA NOTB00008
PROGRAMADOR : JUAN F. SOTO
FECHA : ENERO 9, 1995.
==============================================================================
}
DATABASE marmotech
GLOBALS
DEFINE hitorico RECORD LIKE notb00016.*
DEFINE actual RECORD LIKE notb00008.*,
fecha2,p_fecha DATE,
tipo,acepta,opt CHAR(1),
p_depto,p_puesto,p_nivel,longitud SMALLINT,
fecha1 CHAR (6)
DEFINE balance RECORD
num_emp LIKE notb00008.num_emp,
cod_mov LIKE notb00008.cod_mov,
monto DECIMAL(12,2)
END RECORD
END GLOBALS
MAIN
DEFER INTERRUPT
CALL pantalla()
CALL proceso()
END MAIN
FUNCTION proceso()
OPTIONS
ERROR LINE 24,
PROMPT LINE 10
DISPLAY "noprmt004" AT 4,3
LET acepta = "S"
WHILE acepta = "S"
DISPLAY
"Entre fecha en formato dd/mm/yy" AT 22,1
PROMPT "Entre Fecha de Corte? " FOR P_fecha
DISPLAY
" " AT 22,1
IF int_flag THEN
ERROR "(2) OPERACION CANCELADA"
LET int_flag = FALSE
RETURN
END IF
DISPLAY
"ESTE PROCESO BORRA TODOS LOS REGISTROS DE LA TABLA ACTUALA DE NOMINA"
AT 12,3
DISPLAY "Y LA TRANSFIERE A UNA TABLA HISTORICA PARA FINES ESTADISTICOS."
AT 13,3
DISPLAY "TAMBIEN CREA LOS BALANCE INICIALES DE LOS CODIGOS EXISTENTES"
AT 14,3
DISPLAY "EN LA OPCION (CODIGOS CON BALANCES)." AT 15,3
DISPLAY "LA FECHA DE CORTE DEBE SER EL ULTIMO DIA DEL ANO A CERRAR."
AT 16,3
DISPLAY "<CTRL-C> CANCELA OPERACION." AT 18,3
PROMPT "ESTA SEGURO DE HACER ESTO(S/N)? " FOR CHAR opt
IF int_flag THEN
ERROR "(2) OPERACION CANCELADA"
LET int_flag = FALSE
RETURN
END IF
LET opt = upshift(opt)
IF opt = "S" THEN
# BUSCA E INSERTA LOS BALANCES INICIALES DE LOS CODIGOS BALANCEADOS
DECLARE busca1 CURSOR FOR
SELECT a.num_emp,a.cod_mov,SUM(a.valor)
FROM notb00008 a,notb00014 b
WHERE (a.cod_mov = b.cod_mov AND a.fecha <= p_fecha) and
a.num_emp is not null
GROUP BY 1,2
ORDER BY 1,2
FOREACH busca1 INTO balance.*
LET fecha1 = p_fecha using "ddmmyy"
LET fecha1 = "0101",fecha1[5,6]
LET fecha2 = fecha1
LET fecha2 = p_fecha + 1
SELECT departamento,cod_puesto,nivel_emp,nomina
INTO p_depto,p_puesto,p_nivel,tipo
FROM adtb00003 where num_emp = balance.num_emp
DISPLAY "Numero Emp: ",balance.num_emp USING "###" AT 22,1
DISPLAY "Insertando Balance... " AT 24,1
INSERT INTO notb00008 (num_emp,departamento,cod_puesto,nivel_emp,
fecha,num_nomi,cod_mov,valor,clase_mov,tipo_emp)
VALUES (balance.num_emp,p_depto,p_puesto,p_nivel,fecha2,1,balance.cod_mov,
balance.monto, "K",tipo)
DISPLAY " " AT 24,1
END FOREACH
DISPLAY "Buscando Fecha Minima " AT 24,1
SELECT MIN(fecha) INTO fecha2
FROM notb00008
WHERE clase_mov = "K"
DISPLAY "Borrando Balances Ano Anterior " AT 24,1
DELETE FROM notb00008 WHERE clase_mov = "K" AND
fecha = fecha2
DISPLAY " " AT 24,1
DISPLAY "Insertando En Tabla Historica Las Nominas..." AT 24,1
INSERT INTO notb00016
SELECT * FROM notb00008
WHERE (fecha <= p_fecha) and
(clase_mov != "K" OR clase_mov IS NULL)
DISPLAY "Borrando Las Nominas De La Tabla Actual " AT 24,1
DELETE FROM notb00008 WHERE clase_mov != "K"
DISPLAY "Fin Del Proceso " AT 24,1
EXIT WHILE
ELSE
CONTINUE WHILE
END IF
END WHILE
# BORRA LAS FACTURAS
DELETE FROM notb00008 WHERE clase_mov IS NULL
END FUNCTION
FUNCTION pantalla()
DEFINE fecha CHAR(8),
hora char(5)
LET fecha = today USING "dd/mm/yy"
LET hora = time
DISPLAY "R A Y . O . V A C D O M I N I C A N A, S. A." AT 4,17
ATTRIBUTE (REVERSE,YELLOW)
DISPLAY fecha AT 4,70 ATTRIBUTE (YELLOW)
DISPLAY "Sistema de Nomina" AT 5,31
DISPLAY "Cierre Periodo de Nomina" AT 6,28
DISPLAY hora AT 6,73 ATTRIBUTE(YELLOW)
CALL fgl_drawbox(5,79,3,1)
#CALL fgl_drawbox(1,79,22,1)
END FUNCTION