{ ------------------------------------------------------------------------------- PROGRAMA : EDPRRP116 OBJETIVO : Listar las Entrada de Diario Cobros Clientes INTERNACIONALES US$ Ingresos PROGRAMADOR : JUAN SOTO FECHA REALIZACION : Septiembre 11, 2004 ------------------------------------------------------------------------------- } SCHEMA smarmotech GLOBALS "cgprgb000.4gl" DEFINE nombre_cta,detalle_ent,nombrecia VARCHAR(100), afecta_act VARCHAR(2) 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.nombre INTO nombrecia FROM companias a CALL edprrp116() END MAIN FUNCTION edprrp116() DEFINE diario1 RECORD valor DECIMAL(10,2), monto_desc DECIMAL(10,2), cuenta_no_ingresos VARCHAR(10), cuenta_no_prima_ingresos,cuenta_no_ventas,cuenta_no_prima VARCHAR(10), departamento INT, tasa DEC(10,2) END RECORD, p_cctb01 RECORD LIKE cctb00001.*, mes,ano INT OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 ##### Abriendo y desplegando el formulario de captura de datos OPEN FORM edfmrp115 FROM "edfmrp116" DISPLAY FORM edfmrp115 ###### Aceptando los valores para el rango de fecha INPUT BY NAME ventas,fecha1,fecha2,entra,afecta_act,detalle_ent WITHOUT DEFAULTS BEFORE INPUT LET pventas = ui.combobox.forname("formonly.ventas") CALL cventas() LET mes = MONTH(TODAY)-1 IF mes = 0 THEN LET mes = 12 LET ano = YEAR(TODAY) - 1 LET fecha1 = MDY(mes,1,ano) LET fecha2 = MDY(1,1,ano+1) - 1 ELSE LET ano = YEAR(TODAY) LET fecha1 = MDY(mes,1,ano) LET fecha2 = MDY(mes+1,1,ano)-1 END IF DISPLAY BY NAME fecha1,fecha2 BEFORE FIELD entra CALL controlNumericoED(24,fecha2, NULL) RETURNING entra DISPLAY "entrada: ",entra DISPLAY BY NAME entra,ventas 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 AFTER FIELD entra SELECT UNIQUE CONVERT(varchar(10),a.fecha,103),a.ref INTO fecha2,entra FROM cgtb00004 a WHERE a.ref = entra IF status != NOTFOUND THEN DISPLAY BY NAME fecha2 LET numero_msg = 12 CALL msg(numero_msg) # CALL controlNumericoED(15,fecha2, NULL) RETURNING entra NEXT FIELD fecha1 END IF DISPLAY BY NAME entra ###### 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_act = 'SI' 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 { IF ventas = 1 THEN ERROR "NO PUEDES GENERAR ENTRADA DE VENTAS LOCALES EN ESTE PROGRAMA" NEXT FIELD ventas END IF} END INPUT ##### 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 CALL seleccionarsalida() RETURNING r_output CALL configureOutput(r_output) RETURNING handler START REPORT entrada14 TO XML HANDLER handler # Busca la informacion requerida LET tasa = tasa -1 DECLARE buscar CURSOR FOR SELECT a.num_doc,a.aplica_a,a.tipo_doc,ISNULL(a.valor,0),ISNULL(a.monto_desc,0),b.cuenta_no_ingresos, b.cuenta_no_prima_ingresos,b.cuenta_no_ventas, b.cuenta_no_prima,b.departamento, c.tasa FROM cctb00001 a,vetb00060 b,cgtb00084 c WHERE a.status_t IS NULL AND (a.tipo_doc IN ("AV")) AND a.tipo_cliente = b.tipo_cliente AND a.num_doc = a.aplica_a AND b.ventas =ventas AND b.tipo_cliente = c.tipo_cliente AND c.ano = YEAR(fecha1) AND c.mes = MONTH(fecha2) AND a.fecha_orig BETWEEN fecha1 AND fecha2 AND referenciaEntrada IS NULL UNION SELECT a.num_Doc,a.aplica_a,a.tipo_doc,ISNULL(a.valor,0),ISNULL(a.monto_desc,0),b.cuenta_no_ingresos, b.cuenta_no_prima_ingresos,b.cuenta_no_ventas,b.cuenta_no_prima, b.departamento,c.tasa FROM cctb00001 a,vetb00060 b,cgtb00084 c WHERE a.status_t IS NULL AND (a.tipo_doc IN ("PG","PC")) AND a.tipo_cliente = b.tipo_cliente AND b.ventas =ventas AND b.tipo_cliente = c.tipo_cliente AND c.ano = YEAR(fecha1) AND c.mes = MONTH(fecha2) AND a.fecha_orig BETWEEN fecha1 AND fecha2 AND referenciaEntrada IS NULL DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) OPEN buscar ##### Envia la Informacion al printer de contabilidad DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) DELETE FROM tmpcobros ##### Loop para enviar informacion al reporte DISPLAY "parametros ",ventas," ",fecha1, " ",fecha2," " FOREACH buscar INTO p_cctb01.num_doc,p_cctb01.aplica_a, p_cctb01.tipo_doc,p_cctb01.valor,p_cctb01.monto_desc,diario1.cuenta_no_ingresos,diario1.cuenta_no_prima_ingresos, diario1.cuenta_no_ventas,diario1.cuenta_no_prima, diario1.departamento, tasa IF p_cctb01.monto_desc is null THEN LET p_cctb01.monto_desc = 0 END IF IF p_cctb01.valor is null THEN LET p_cctb01.valor = 0 END IF IF p_cctb01.valor < 0 THEN LET p_cctb01.valor = p_cctb01.valor *-1 END IF IF tasa > 1 THEN LET tasa = tasa - 1 END IF IF p_cctb01.monto_desc < 0 THEN LET p_cctb01.monto_desc = p_cctb01.monto_desc *-1 END IF INSERT INTO tmpcobros VALUES (p_cctb01.tipo_doc,p_cctb01.num_Doc,p_cctb01.aplica_a, p_cctb01.valor,p_cctb01.monto_desc) OUTPUT TO REPORT entrada14(p_cctb01.tipo_doc,p_cctb01.valor,p_cctb01.monto_desc, diario1.cuenta_no_ingresos,diario1.cuenta_no_prima_ingresos, diario1.cuenta_no_ventas,diario1.cuenta_no_prima,diario1.departamento, tasa, p_cctb01.num_doc,p_cctb01.tipo_doc) END FOREACH FINISH REPORT entrada14 END FUNCTION #### Funcion para dar salida ordenada a la informacion requerida de #### una entrada de diario de nominas local REPORT entrada14(x,xcuenta_no_ingreso,xcuenta_no_prima_ingresos,xcuenta_no_ventas, xcuenta_no_prima,xdepartamento,xtasa,pnumdoc,xtipodoc) DEFINE x RECORD tipo_doc VARCHAR(2), valor,monto_desc DEC(12,2) END RECORD, LJ SMALLINT, xcuenta_no_ingreso,xcuenta_no_prima_ingresos,xcuenta_no_ventas,xcuenta_no_prima VARCHAR(8), xdepartamento,xdeptoAct,pnumdoc INT, tienedepto CHAR(1), xtipodoc CHAR(2), ventasDescripcion VARCHAR(50) ### Acumula los valores de las diferentes cuentas para entrada diario de nomina DEFINE debito,credito,xtasa DECIMAL(12,2), xtipoClientes VARCHAR(50), total1,total2,total4 DECIMAL(12,2), { doble_on CHAR(2), doble_off CHAR(2), negrillas_on CHAR(6), negrillas_off CHAR(6), comp_off CHAR(2) , } hora CHAR(5), entrada CHAR(25), tcredito,tdebito DEC(12,2) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 FORMAT PAGE HEADER { LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 70 LET comp_on = ASCII 15 LET comp_off = ASCII 18 LET normal = ASCII 27, ASCII 80} LET hora = time ##### Selecionado la descripcion del fecha2 LET lj = (80 - LENGTH(nombrecia CLIPPED))/2 PRINT COLUMN 1, comp_off PRINT COLUMN 1,"edprrp116", COLUMN lj, nombrecia CLIPPED, COLUMN 73, " Pag. ",pageno using "###" PRINT COLUMN 28, "Sistema de Contabilidad", COLUMN 73, today using "dd/mm/yy" SELECT a.descripcion INTO ventasDescripcion FROM vetb00061 a WHERE a.ventas = ventas PRINT COLUMN 30, ventasDescripcion CLIPPED, COLUMN 76, hora { IF ventas = 2 OR ventas = 4 THEN PRINT COLUMN 15, "Entrada de Diario Cobros Clientes INTERNACIONALES USD$", COLUMN 76, hora ELSE IF ventas = 1 THEN PRINT COLUMN 15, "Entrada de Diario Cobros Clientes LOCALES", COLUMN 76, hora ELSE IF ventas = 3 THEN PRINT COLUMN 15, "Entrada de Diario Cobros Clientes LOCALES USD$", COLUMN 76, hora END IF END IF END IF } PRINT COLUMN 28, "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,entra,doble_off SELECT a.descripcion INTO xtipoClientes FROM vetb00061 a WHERE a.ventas = ventas PRINT COLUMN 1, "Observaciones:",detalle_ent CLIPPED," ",xtipoClientes PRINT COLUMN 1, " _____________________________________" PRINT COLUMN 1, "----------------------------------------", "----------------------------------------" PRINT COLUMN 2, "Cuenta ", COLUMN 11, "Dpto", COLUMN 18, "Concepto", COLUMN 56, "Debe", COLUMN 71, "Haber" PRINT COLUMN 1, "----------------------------------------", "----------------------------------------" SKIP 1 LINE ON EVERY ROW IF afecta_act = "SI" THEN UPDATE cctb00001 SET referenciaEntrada = entra,us_mod = usuarios,fech_mod = getdate() WHERE num_Doc = pnumdoc AND tipo_doc = xtipodoc END IF IF debito is null THEN LET debito = 0 END IF IF credito is null THEN LET credito = 0 END IF IF total1 IS NULL THEN LET total1 = 0 END IF IF total2 IS NULL THEN LET total2 = 0 END IF IF total4 IS NULL THEN LET total4 = 0 END IF LET total1 = total1 + x.valor LET total2 = total2 + x.monto_desc LET debito = debito + x.valor LET tdebito = 0 LET tcredito = 0 ON LAST ROW LET nombre_cta = NULL SELECT a.descripcion,ISNULL(a.depto,'N') INTO nombre_cta,tienedepto FROM cgtb00001 a WHERE a.cuenta_no = xcuenta_no_ingreso IF nombre_cta IS NULL THEN LET nombre_cta = "CUENTA SIN DESCRIPCION" END IF # IF tienedepto ='N' THEN # LET xdepartamento = NULL # END IF LET debito = 0 LET debito = SUM(x.valor+x.monto_desc) IF debito IS NULL THEN LET debito = 0 END IF LET xdeptoAct = null PRINT COLUMN 2, xcuenta_no_ingreso; IF tienedepto = 'S' THEN LET xdeptoAct = xdepartamento PRINT 2 SPACES, xdepartamento USING "<<<<<"; END IF PRINT COLUMN 18, nombre_cta CLIPPED, COLUMN 50, debito using "###,###,##&.&&" BEGIN WORK IF afecta_act = "SI" THEN CALL controlNumericoED(15,fecha2, usuarios) RETURNING entra DISPLAY "entrada real: ", entra DISPLAY BY NAME entra INSERT INTO cgtb00004 (fecha,tipo,ref, cuenta_no, detalle_1, departamento, debito,credito,us_crea,fech_crea) VALUES(fecha2,1, entra,xcuenta_no_ingreso,detalle_ent, xdeptoAct, debito,0, usuarios,GETDATE()) END IF LET tdebito = tdebito + debito IF xcuenta_no_prima_ingresos IS NOT NULL THEN SELECT descripcion INTO nombre_cta FROM cgtb00001 WHERE cuenta_no = xcuenta_no_prima_ingresos PRINT COLUMN 2, xcuenta_no_prima_ingresos, COLUMN 18, nombre_cta CLIPPED, COLUMN 50, debito*tasa using "###,###,##&.&&" IF afecta_act = "SI" THEN INSERT INTO cgtb00004 (fecha,tipo,ref, cuenta_no, detalle_1,debito, credito,us_crea, fech_crea) VALUES(fecha2,1, entra,xcuenta_no_prima_ingresos,detalle1, debito*xtasa,0, usuarios,GETDATE()) END IF LET tdebito = tdebito + debito*tasa END IF LET nombre_cta = NULL SELECT a.descripcion,ISNULL(a.depto,'N') INTO nombre_cta, tienedepto FROM cgtb00001 a WHERE a.cuenta_no = xcuenta_no_ventas IF nombre_cta IS NULL THEN LET nombre_cta = "CUENTA SIN DESCRIPCION" END IF # IF tienedepto ='N' THEN # LET xdepartamento = NULL # END IF LET xdeptoAct = null PRINT COLUMN 2, xcuenta_no_ventas; IF tienedepto = 'S' THEN LET xdeptoAct = xdepartamento PRINT 2 SPACES, xdepartamento USING "<<<<<"; END IF PRINT COLUMN 18, nombre_cta CLIPPED, COLUMN 65, debito using "###,###,##&.&&" IF afecta_act = "SI" THEN INSERT INTO cgtb00004 (fecha,tipo,ref, cuenta_no, detalle_1, departamento, debito,credito, us_crea, fech_crea) VALUES(fecha2,1, entra,xcuenta_no_ventas,detalle_ent, xdeptoAct, 0, debito,usuarios,GETDATE()) END IF LET tcredito = tcredito + debito IF xcuenta_no_prima IS NOT NULL THEN LET nombre_cta = NULL SELECT descripcion INTO nombre_cta FROM cgtb00001 WHERE cuenta_no = xcuenta_no_prima IF nombre_cta IS NULL THEN LET nombre_cta = "CUENTA SIN DESCRIPCION" END IF PRINT COLUMN 2, xcuenta_no_prima, COLUMN 18, nombre_cta CLIPPED, COLUMN 65, debito*tasa using "###,###,##&.&&" IF afecta_act = "SI" THEN INSERT INTO cgtb00004 (fecha,tipo,ref, cuenta_no, detalle_1,debito,credito, us_crea, fech_crea) VALUES(fecha2,1, entra, xcuenta_no_prima,detalle_ent, 0, debito*tasa,usuarios,GETDATE()) END IF LET tcredito = tcredito + debito*tasa END IF COMMIT WORK ###### Imprime total DEBITO y total CREDITO SKIP 1 LINE PRINT COLUMN 50,"--------------", COLUMN 65,"--------------" PRINT COLUMN 35,"Totales-->", COLUMN 50,tdebito USING "###,###,##&.&&", COLUMN 65,tcredito USING "###,###,##&.&&" SKIP 2 LINE PRINT COLUMN 1, detalle_ent SKIP 30 LINE PRINT COLUMN 10,"--------------", COLUMN 35,"--------------", COLUMN 60,"--------------" PRINT COLUMN 10,"PREPARADO POR", COLUMN 35," REVISADO POR ", COLUMN 60,"AUTORIZADO POR" SKIP 4 LINE END REPORT