146 lines
4.2 KiB
Plaintext
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
|