{ ------------------------------------------------------------------------------- PROGRAMA : EDPRRP034 OBJETIVO : Listar las Entrada de Diario Nomina Quincenal en un rango de fecha. Es usado por EDPRRP034 PROGRAMADOR : Tadeo A. Ferreras FECHA REALIZACION : Julio 28, 1993 ------------------------------------------------------------------------------- } SCHEMA smarmotech GLOBALS DEFINE rango_in,rango_fin CHAR(4), idx SMALLINT ###### Variables para busqueda de rango de fecha DEFINE detalle CHAR(30) DEFINE mes SMALLINT DEFINE ano CHAR(4) DEFINE tasa DECIMAL(5,2) DEFINE p_fecha,fecha1, fecha2 DATE DEFINE afecta,nominas CHAR(1) DEFINE entra CHAR(14) DEFINE entra1 CHAR(5) DEFINE tipo_papel SMALLINT DEFINE mano_obra,sueldo_ind,monto_banco DECIMAL(12,2), nombre_cta LIKE cgtb00001.descripcion ###### Variables para almacenar los datos selecionados DEFINE busca_desc,busca_cxc,busca_monto,valor_dep,selec5, busca_int,selec6,criterio,r_output STRING, HANDLER om.SaxDocumentHandler ###### Variables que la almacenan la informacion enviada al reporte DEFINE diario1 RECORD cuenta_no LIKE cgtb00001.cuenta_no, departamento SMALLINT, valor DECIMAL(10,2), cod_mov LIKE notb00002.cod_mov END RECORD ###### Variables que la almacenan la informacion enviada al reporte DEFINE diario2 RECORD tipo_cliente SMALLINT, sec_cliente SMALLINT, factura INTEGER, valor DECIMAL(12,2), sub_total DECIMAL(10,2) END RECORD, usuarios,clave CHAR(80), impresor SMALLINT, tiempo CHAR(4), p_companias RECORD LIKE companias.* DEFINE normal,negrilla_on,negrillas_of,comp_on,comp_off,doce,doble_on,doble_off CHAR(3), cmd,imprime,copia CHAR(150),archivo CHAR(80) END GLOBALS MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor CONNECT to "smarmotech" USER usuarios USING clave SELECT a.* INTO p_companias.* FROM companias a CALL edprrp034() END MAIN FUNCTION edprrp034() # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 ##### Abriendo y desplegando el formulario de captura de datos OPEN FORM edfmrp034 FROM "edfmrp034" DISPLAY FORM edfmrp034 # Validacion de las variables para el rango de nominas del ano actual LET rango_in = year(today) LET rango_in = rango_in[3,4] LET rango_in = rango_in clipped,"00" LET rango_fin = year(today) LET rango_fin = rango_fin[3,4] LET rango_fin = rango_fin clipped,"60" ###### Aceptando los valores para el rango de fecha INPUT BY NAME entra,fecha1,fecha2,detalle,afecta AFTER FIELD fecha1 IF fecha1 IS NULL THEN ERROR "(16) CAMPO EN BLANCO" #NEXT FIELD fecha1 END IF IF fecha1 <= p_fecha THEN ERROR "(179) EXISTE ENTRADA DE DIARIO CON ESA FECHA" NEXT FIELD fecha1 END IF AFTER FIELD fecha2 IF fecha2 is null THEN ERROR "(16) CAMPO EN BLANCO" NEXT FIELD fecha2 END IF IF fecha1 > fecha2 THEN ERROR "(149) FECHA NO PUEDE SER MAYOR QUE LA ANTERIOR" NEXT FIELD fecha1 END IF ###### Selecionando en rango de fecha de la tabla de periodo para el fecha2 AFTER INPUT IF INT_FLAG THEN ERROR "OPERACION CANCELADA" LET INT_FLAG = FALSE RETURN END IF IF afecta = 'S' THEN SELECT UNIQUE a.ref FROM cgtb00004 a where a.ref = entra IF STATUS != NOTFOUND THEN ERROR "(12) REGISTRO EXISTE" NEXT FIELD fecha2 END IF END IF EXIT INPUT END INPUT CONSTRUCT BY NAME criterio ON a.num_nomi LET busca_monto = "SELECT SUM(a.valor) FROM notb00008 a ", "WHERE a.tipo_emp = 'Q' AND a.status_t IS NULL AND ", " a.cod_mov NOT IN (100,101,102) AND ",criterio clipped DISPLAY "Buscando Datos Basicos2... Espere Por Favor" AT 19,14 PREPARE comando FROM busca_monto DECLARE busca CURSOR FOR comando OPEN busca FETCH busca INTO monto_banco ##### Creando la facilidad para cancelar proceso con DELETE O SUPR IF int_flag THEN ERROR "(2) OPERACION CANCELADA" LET int_flag = false RETURN END IF # Busca la informacion requerida LET valor_dep = "SELECT b.cta_control,a.departamento,SUM(a.valor) ", "FROM notb00008 a,notb00002 b,adtb00001 c ", "WHERE a.tipo_emp = 'Q' AND ", " a.clase_mov NOT IN ('D','R','S') AND ", " a.cod_mov = b.cod_mov AND ", " a.valor > 0 AND ",criterio clipped, " AND a.departamento = c.departamento ", " AND c.tipo_departamento = 'ADMINISTRACION' ", "GROUP BY b.cuenta_control,a.departamento ORDER BY a.departamento ", " UNION ", "SELECT b.cta_aux,a.departamento,SUM(a.valor) ", "FROM notb00008 a,notb0002 b,adtb00001 c ", "WHERE a.tipo_emp = 'Q' AND ", " a.clase_mov NOT IN ('D','R','S') AND ", " a.cod_mov = b.cod_mov AND ", " a.valor > 0 AND ",criterio clipped, " AND a.departamento = c.departamento ", " AND c.tipo_departamento = 'PRODUCCION' ", "GROUP BY b.cuenta_control,a.departamento ORDER BY a.departamento " PREPARE comando1 FROM valor_dep DECLARE buscar CURSOR FOR comando1 OPEN buscar DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) ##### Envia la Informacion al printer de contabilidad CALL seleccionarsalida() RETURNING r_output CALL configureoutput(r_output) RETURNING handler START REPORT entrada34 TO XML HANDLER handler ##### Loop para enviar informacion al reporte LET idx = 1 FOREACH buscar INTO diario1.* IF status = NOTFOUND THEN EXIT FOREACH END IF IF int_flag THEN ERROR "(2) OPERACION CANCELADA" LET int_flag = FALSE RETURN END IF OUTPUT TO REPORT entrada34(diario1.*,fecha1,fecha2,detalle,entra, monto_banco) END FOREACH FINISH REPORT entrada34 CLEAR SCREEN RUN imprime END FUNCTION #### Funcion para dar salida ordenada a la informacion requerida de #### una entrada de diario de nominas local REPORT entrada34(x,fecha1,fecha2,detalle1,entrada,monto_banco) DEFINE x RECORD cuenta_no LIKE cgtb00001.cuenta_no, departamento SMALLINT, valor DECIMAL(10,2), cod_mov LIKE notb00002.cod_mov END RECORD DEFINE j RECORD cta_aux CHAR(8), num_emp LIKE notb00008.num_emp, descrip_cta CHAR(30), monto DECIMAL(10,2) END RECORD DEFINE k RECORD num_emp CHAR(8), monto DECIMAL(10,2) END RECORD ### Acumula los valores de las diferentes cuentas para entrada diario de nomina DEFINE descrip,detalle1 CHAR(30) DEFINE tot_val,interes,mano_obra,sueldo_ind,monto_banco DECIMAL(12,2) DEFINE total1,total2,total3,total4,total5,total6 DECIMAL(12,2) DEFINE total7,total8,total9 DECIMAL(12,2) #Acumula totales DEBITO Y CREDITO DEFINE tasa1 DECIMAL(5,2) ## Almacena la tasa de la tasa de cambio DEFINE fecha1,fecha2 DATE #### Almacena las fecha del rango de busqueda DEFINE nomina CHAR(1) DEFINE doble_on CHAR(2) DEFINE doble_off CHAR(2) DEFINE negrillas_on CHAR(6) DEFINE negrillas_off CHAR(6) DEFINE comp_on CHAR(2) DEFINE comp_off CHAR(2) DEFINE doce CHAR(2) DEFINE normal CHAR(2) DEFINE normall CHAR(3) DEFINE comprimido CHAR(3) DEFINE hora CHAR(5) DEFINE dpto INTEGER DEFINE nomina1 CHAR(24) DEFINE entrada CHAR(14) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 # ORDER BY x.departamento,x.num_emp FORMAT PAGE HEADER LET doble_on = ASCII 001 LET doble_off = ASCII 002 LET negrillas_on = ASCII 027, ASCII 098 LET negrillas_off = ASCII 027, ASCII 099 LET comp_on = ASCII 31 LET comp_off = ASCII 029 LET comprimido = ASCII 031 LET doce = ASCII 030 LET normal = ASCII 029 LET normall = ASCII 029 LET hora = time ##### Selecionado la descripcion del fecha2 PRINT COLUMN 1, comp_off,"edprrp034", COLUMN 23, p_companias.nombre, COLUMN 75, "Pag. ",pageno using "###" PRINT COLUMN 35, "Sistema de Contabilidad", COLUMN 75, today using "dd/mm/yy" PRINT COLUMN 26, "Entrada de Diario Nomina", COLUMN 78, hora PRINT COLUMN 34, "Del ",fecha1 USING "dd/mm/yy", " Al ",fecha2 USING "dd/mm/yy" # , negrillas_off SKIP 1 LINE PRINT COLUMN 01,"Entrada de Diario No.", doble_on,entrada,doble_off PRINT COLUMN 1,"Observaciones: _____________________________________" PRINT COLUMN 1," _____________________________________" PRINT COLUMN 1, "--------------------------------------------------", "----------------------------------------" #,negrillas_on PRINT COLUMN 2, "Cuenta ", COLUMN 11, "Dpto", COLUMN 18, "Concepto", COLUMN 56, "Debe", COLUMN 71, "Haber" #,negrillas_off PRINT COLUMN 1, "--------------------------------------------------", "----------------------------------------" SKIP 1 LINE ON EVERY ROW IF total1 IS NULL THEN LET total1 = 0 END IF LET total1 = total1 + x.valor SELECT a.descripcion INTO descrip FROM cgtb00001 a WHERE a.cuenta_no = x.cuenta_no PRINT COLUMN 2, x.cuenta_no, COLUMN 11, x.departamento USING "&&&&", COLUMN 18, descrip CLIPPED, COLUMN 50, x.valor using "###,###,##&.&&" IF afecta = "S" THEN INSERT INTO cgtb00004 VALUES(fecha2,1,entrada,x.cuenta_no,x.departamento,null, null,null,null,detalle1,null,x.valor,0,null,user,current,null,null) END IF # LET tot_val = tot_val + x.valor ON LAST ROW ###### Acumulando totales por columna LET total7 = total1 ##### Imprimendo monto descuento para RAY.O.VAC LET busca_desc = "SELECT b.cta_aux,a.num_emp,c.descripcion,sum(a.valor) ", "FROM notb00008 a,notb00002 b,cgtb00001 c ", "WHERE b.cta_aux = c.cuenta_no AND b.cod_mov = a.cod_mov AND ", "b.cuenta_control IN ('1128') AND ", "b.clase_mov IN ('D','S','R') AND a.tipo_emp = 'Q' AND ", " a.cod_mov NOT IN (100,101,102) AND ", " b.cta_aux IS NOT NULL AND ",criterio clipped," GROUP BY 1,2,3 ", " ORDER BY 1 " PREPARE comando5 FROM busca_desc DECLARE buscar5 CURSOR FOR comando5 LET total8 = 0 FOREACH buscar5 INTO j.* LET j.monto = j.monto * -1 PRINT COLUMN 2, j.cta_aux CLIPPED, COLUMN 10,"01","-",j.num_emp USING "&&&", COLUMN 18, j.descrip_cta CLIPPED, COLUMN 65, j.monto using "###,###,##&.&&" LET total8 = total8 + j.monto IF afecta = "S" THEN INSERT INTO cgtb00004 VALUES(fecha2,1,entrada,j.cta_aux,null,null,01,j.num_emp, null,detalle1,null,0,j.monto,null,usuarios,getdate(),null,null) END IF END FOREACH LET busca_desc = "SELECT b.cta_aux,' ',c.descripcion,sum(a.valor) ", "FROM notb00008 a,notb00002 b,cgtb00001 c ", "WHERE b.cta_aux = c.cuenta_no AND b.cod_mov = a.cod_mov AND ", "b.cta_aux NOT IN ('1128') AND ", "b.clase_mov IN ('D','S','R') AND a.tipo_emp = 'Q' AND ", " a.cod_mov NOT IN (100,101,102) AND ", " b.cta_aux IS NOT NULL AND ",criterio clipped," GROUP BY 1,2,3 ", " ORDER BY 1 " PREPARE comando4 FROM busca_desc DECLARE buscar1 CURSOR FOR comando4 FOREACH buscar1 INTO j.* LET j.monto = j.monto * -1 IF j.cta_aux = "2125-01" THEN LET busca_int = "SELECT SUM(a.valor * -1) FROM notb00008 a ", "WHERE a.cod_mov = 110 AND a.tipo_emp = 'Q' AND ", criterio clipped PREPARE comando20 FROM busca_int DECLARE busca20 CURSOR FOR comando20 OPEN busca20 FETCH busca20 INTO interes LET j.monto = j.monto + interes END IF PRINT COLUMN 2, j.cta_aux CLIPPED, COLUMN 18, j.descrip_cta CLIPPED, COLUMN 65, j.monto using "###,###,##&.&&" LET total8 = total8 + j.monto IF afecta = "S" THEN INSERT INTO cgtb00004 VALUES(fecha2,1,entrada,j.cta_aux,null,null,null,null, null,detalle1,null,0,j.monto,null,usuarios,getdate(),null,null) END IF END FOREACH LET total8 = total8 + monto_banco LET nombre_cta = NULL SELECT descripcion INTO nombre_cta FROM cgtb00001 WHERE cuenta_no = "2121" PRINT COLUMN 2, "2121", COLUMN 18, nombre_cta, COLUMN 65, monto_banco using "###,###,##&.&&" IF afecta = "S" THEN INSERT INTO cgtb00004 VALUES(fecha2,1,entrada,"1104",null,null,null,null, null,detalle1,null,0,monto_banco,null,user,current,null,null) END IF ###### Imprime total DEBITO y total CREDITO SKIP 2 LINE PRINT COLUMN 1," ", #negrillas_on, COLUMN 50,"--------------", COLUMN 65,"--------------" PRINT COLUMN 35,"Totales-->", COLUMN 50,total7 USING "###,###,##&.&&", COLUMN 65,total8 USING "###,###,##&.&&" SKIP 2 LINE PRINT COLUMN 1, detalle1 PRINT COLUMN 1,comp_off,negrillas_off SKIP 4 LINE END REPORT