{ ============================================================================== 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 " 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