{ ------------------------------------------------------------------------------- PROGRAMA : EDPRRP029 OBJETIVO : Entrada Devoluciones sobre ventas PROGRAMADOR : Ing. Juan F. Soto FECHA REALIZACION : Julio 11, 1994 ------------------------------------------------------------------------------- } SCHEMA smarmotech GLOBALS "cgprgb000.4gl" DEFINE ultimo INT, tiempo VARCHAR(4), container DEC(10,2), idEntrada INT MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave # CONNECT TO "marmotech" AS "IFMX" USER usuarios USING clave CONNECT to "smarmotech" AS "MSSQL" USER usuarios USING clave SELECT a.* INTO p_compania.* FROM companias a CALL edprrp029() END MAIN FUNCTION edprrp029() DEFINE rventas RECORD compania SMALLINT, factura INTEGER, fecha_factura DATE, tipo_cliente SMALLINT, sec_cliente SMALLINT, nombre VARCHAR(30), monto_bruto DECIMAL(10,2), monto_desc DECIMAL(10,2), monto_itbi DECIMAL(10,2), monto_neto DECIMAL(10,2), status_t CHAR(1) , descripcion VARCHAR(20), cuenta_no_ventas VARCHAR(10), cuenta_no_prima VARCHAR(10) , cuenta_no_itbis VARCHAR(10), cuenta_no_Devolucion VARCHAR(10), cuenta_no_descuento VARCHAR(10), tasa DEC(10,2) END RECORD # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM edfmrp029 FROM "edfmrp029" DISPLAY FORM edfmrp029 LET tipo_papel = 1 LET container = 0 CALL msgrp000(tipo_papel) INPUT BY NAME ventas,fecha_inicial, fecha_final,entrada, detalle1,afecta BEFORE INPUT LET pventas = ui.combobox.forname("formonly.ventas") CALL cventas() AFTER FIELD entrada SELECT unique ref FROM cgtb00004 WHERE ref = entrada IF STATUS != NOTFOUND THEN ERROR "(12) REGISTRO EXISTE" # NEXT FIELD entra END IF LET entra1 = entrada AFTER FIELD fecha_final IF fecha_final is null THEN ERROR "(16) CAMPO EN BLANCO" NEXT FIELD fecha_final END IF IF fecha_inicial > fecha_final THEN ERROR "(149) FECHA NO PUEDE SER MAYOR QUE LA ANTERIOR" # NEXT FIELD fecha_inicial END IF { LET tiempo=MONTH(fecha_final) USING "&&",fecha_final USING "yy" SELECT MAX(a.ref[7,9]) INTO ultimo FROM cgtb00004 a WHERE a.ref[1,5] = 'ED.07' and a.ref[11,14] = tiempo IF ultimo is null THEN LET ultimo = 0 END IF LET ultimo = ultimo + 1 LET entrada='ED.07-',ultimo USING "&&&","/",tiempo} LET idEntrada = 17; CALL controlNumericoED(idEntrada,fecha_final, NULL) RETURNING entrada DISPLAY "entrada: ",entrada DISPLAY BY NAME entrada ###### Selecionando en rango de fecha de la tabla de periodo para el fecha_final SELECT UNIQUE a.ref FROM cgtb00004 a where a.ref = entrada IF STATUS != NOTFOUND THEN ERROR "(12) REGISTRO EXISTE" # NEXT FIELD fecha_final END IF BEFORE FIELD fecha_final LET fecha_final = today AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF IF fecha_inicial is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_inicial END IF IF fecha_final is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_final END IF IF fecha_final < fecha_inicial THEN LET numero_msg = 86 CALL msg(numero_msg) NEXT FIELD fecha_final END IF EXIT INPUT END INPUT # Busca las ventas locales para el rango de fechas especificado LET selec4 = "SELECT a.cod_cia, a.num_doc, a.fecha_orig, a.tipo_cliente, ", "a.sec_cliente, b.nombre,(a.valor_cheque*-1), a.monto_desc, a.valor_efectivo,", "(a.valor*-1), a.status_t,c.descripcion,d.cuenta_no_ventas,d.cuenta_no_prima,d.cuenta_no_itbis, ", " d.cuenta_no_devolucion,d.cuenta_no_descuento,f.tasa ", "FROM cctb00001 a,vetb00004 b,vetb00061 c,vetb00060 d,cgtb00084 f ", " WHERE a.fecha_orig between ? and ? ", " and a.tipo_doc = 'NC' ", " and a.tipo_cliente = b.tipo_cliente ", " and a.sec_cliente = b.sec_cliente ", " and a.tipo_cliente = d.tipo_cliente ", " and c.ventas = d.ventas ", " and d.tipo_cliente = f.tipo_cliente ", " and c.ventas = f.ventas ", " and f.ventas = ? ", " and f.ano = year(a.fecha_orig) ", " and f.mes = month(a.fecha_orig) ", " and a.status_t IS NULL ", " ORDER BY c.descripcion,a.num_doc " PREPARE ventas_locales FROM selec4 DECLARE facturas CURSOR FOR ventas_locales OPEN facturas USING fecha_inicial, fecha_final,ventas LET idx = 1 FOREACH facturas INTO rventas.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF IF idx = 1 THEN CALL configureoutput("SVG") RETURNING handler START REPORT prn_credito TO XML HANDLER HANDLER END IF IF rventas.status_t = "E" or rventas.status_t = "D" THEN LET rventas.monto_bruto = 0 LET rventas.monto_desc = 0 LET rventas.monto_itbi = 0 LET rventas.monto_neto = 0 END IF {IF rventas.monto_bruto < 0 THEN LET rventas.monto_bruto = rventas.monto_bruto * -1 END IF IF rventas.monto_desc < 0 THEN LET rventas.monto_desc = rventas.monto_desc * -1 END IF IF rventas.monto_itbi < 0 THEN LET rventas.monto_itbi = rventas.monto_itbi * -1 END IF } LET idx = idx + 1 OUTPUT TO REPORT prn_credito(rventas.*) END FOREACH IF idx > 1 THEN FINISH REPORT prn_credito ELSE CALL fgl_winmessage("INFO","NO EXISTEN REGISTROS CON ESTAS CONDICIONES","INFO") END IF { IF fgl_report_loadCurrentSettings("formato_entrada.4rp") THEN -- load the .4rp file CALL fgl_report_selectDevice("SVG") -- changing default CALL fgl_report_selectPreview(1) LET handler = fgl_report_commitCurrentSettings() START REPORT prn_credito TO XML HANDLER HANDLER ELSE CALL fgl_winmessage("ERROR","NO SE ENCONTRO TEMPLATE","INFO") END IF } DECLARE entrada CURSOR FOR ventas_locales OPEN entrada USING fecha_inicial, fecha_final,ventas LET idx = 1 FOREACH entrada INTO rventas.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF IF idx = 1 THEN CALL configureoutput("SVG") RETURNING HANDLER START REPORT ed29 TO XML HANDLER HANDLER END IF IF rventas.status_t = "E" or rventas.status_t = "D" THEN LET rventas.monto_bruto = 0 LET rventas.monto_desc = 0 LET rventas.monto_itbi = 0 LET rventas.monto_neto = 0 END IF {IF rventas.monto_bruto < 0 THEN LET rventas.monto_bruto = rventas.monto_bruto * -1 END IF IF rventas.monto_desc < 0 THEN LET rventas.monto_desc = rventas.monto_desc * -1 END IF IF rventas.monto_itbi < 0 THEN LET rventas.monto_itbi = rventas.monto_itbi * -1 END IF } LET idx = idx + 1 OUTPUT TO REPORT ed29(rventas.*) END FOREACH IF idx > 1 THEN FINISH REPORT ed29 END IF END FUNCTION REPORT prn_credito(x) DEFINE x RECORD compania SMALLINT, factura INTEGER, fecha_factura DATE, tipo_cliente SMALLINT, sec_cliente SMALLINT, nombre VARCHAR(30), monto_bruto DECIMAL(10,2), monto_desc DECIMAL(10,2), monto_itbi DECIMAL(10,2), monto_neto DECIMAL(10,2), status_t CHAR(1), descripcion VARCHAR(20), cuenta_no_ventas VARCHAR(10), cuenta_no_prima VARCHAR(10) , cuenta_no_itbis VARCHAR(10), cuenta_no_Devolucion VARCHAR(10), cuenta_no_descuento VARCHAR(10), tasa DEC(10,2) END RECORD, p_neto,p_itbi DEC(12,2) DEFINE hora CHAR(5) OUTPUT PAGE LENGTH 100 TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 ORDER BY x.descripcion FORMAT PAGE HEADER LET hora = time PRINT COLUMN 1, "edprrp029", COLUMN 43, p_compania.nombre, COLUMN 126, "Pag.", COLUMN 131, pageno using "###" PRINT COLUMN 51, " Sistema de Ventas ", COLUMN 124, today using "dd/mm/yyyy" PRINT COLUMN 51, "Valorizacion Notas De Creditos", COLUMN 129, hora PRINT COLUMN 53, "Del ", fecha_inicial using "dd/mm/yyyy", " Al ", fecha_final using "dd/mm/yyyy" SKIP 1 LINES PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "----------------------------------" PRINT COLUMN 1, "Documen", COLUMN 11, "Fecha", COLUMN 20, "C l i e n t e", COLUMN 66, "Monto RD$", COLUMN 81, "Descuento", COLUMN 97, "Neto RD$", COLUMN 115, "Itbis", COLUMN 129, "Valor " PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------" , "----------------------------------" # , negrillas_off BEFORE GROUP OF x.descripcion PRINT x.descripcion SKIP 1 LINE ON EVERY ROW LET nom_cli = NULL IF x.status_t IS NULL THEN SELECT a.nombre INTO nom_cli FROM vetb00004 a WHERE a.tipo_cliente = x.tipo_cliente and a.sec_cliente = x.sec_cliente and a.status_t is NULL IF nom_cli IS NULL THEN LET nom_cli = "Cliente no existe. Verifique" END IF ELSE LET nom_cli = "NULA" END IF PRINT COLUMN 1, x.factura using "######", COLUMN 9, x.fecha_factura using "dd/mm/yy", COLUMN 20, x.tipo_cliente using "&&","-", x.sec_cliente using "&&&&&&"," ", x.nombre, COLUMN 60, x.monto_bruto using "####,###,###.##", COLUMN 71, x.monto_desc using "####,###,###.##", COLUMN 82, x.monto_bruto - x.monto_desc using "####,###,###.##", COLUMN 93, x.monto_itbi using "####,###,###.##", COLUMN 104, x.monto_bruto - x.monto_desc + x.monto_itbi using "####,###,###.##" AFTER GROUP OF x.descripcion SKIP 1 LINE PRINT # COLUMN 1, negrillas_on, COLUMN 28, "Total ",x.descripcion," ---> ", COLUMN 60, GROUP SUM(x.monto_bruto) using "####,###,###.##", COLUMN 71, GROUP SUM(x.monto_desc) using "####,###,###.##", COLUMN 82, GROUP SUM(x.monto_bruto - x.monto_desc) using "####,###,###.##", COLUMN 93, GROUP SUM(x.monto_itbi) using "####,###,###.##", COLUMN 104, GROUP SUM(x.monto_bruto - x.monto_desc + x.monto_itbi) using "####,###,###.##" # ON LAST ROW SKIP 1 LINE LET p_neto = SUM(x.monto_bruto - x.monto_desc + x.monto_itbi) LET p_itbi = SUM(x.monto_itbi) PRINT COLUMN 28, "Total General ---> ", COLUMN 60, SUM(x.monto_bruto) using "####,###,###.##", COLUMN 71, SUM(x.monto_desc) using "####,###,###.##", COLUMN 82, SUM(x.monto_bruto - x.monto_desc) using "####,###,###.##", COLUMN 93, SUM(x.monto_itbi) using "####,###,###.##", COLUMN 104, SUM(x.monto_bruto - x.monto_desc + x.monto_itbi) using "####,###,###.##" IF x.tasa > 1 THEN PRINT COLUMN 28, "Total General ",x.tasa USING "###.##", COLUMN 60, SUM(x.monto_bruto*x.tasa) using "####,###,###.##", COLUMN 71, SUM(x.monto_desc*x.tasa) using "####,###,###.##", COLUMN 82, SUM(x.monto_bruto - x.monto_desc) *x.tasa using "####,###,###.##", COLUMN 93, SUM(x.monto_itbi)*x.tasa using "####,###,###.##", COLUMN 104, SUM(x.monto_bruto - x.monto_desc + x.monto_itbi) *x.tasa using "####,###,###.##" END IF END REPORT REPORT ed29(x) DEFINE x RECORD compania SMALLINT, factura INTEGER, fecha_factura DATE, tipo_cliente SMALLINT, sec_cliente SMALLINT, nombre VARCHAR(30), monto_bruto DECIMAL(10,2), monto_desc DECIMAL(10,2), monto_itbi DECIMAL(10,2), monto_neto DECIMAL(10,2), status_t CHAR(1) , descripcion VARCHAR(20), cuenta_no_ventas VARCHAR(10), cuenta_no_prima VARCHAR(10) , cuenta_no_itbis VARCHAR(10), cuenta_no_Devolucion VARCHAR(10), cuenta_no_descuento VARCHAR(10), tasa DEC(10,2) END RECORD, tdebito,tcredito,bruto,prima,descuento,itbis,neto DEC(12,2), descripcion_ventas,descripcion_prima,descripcion_itbis,descripcion_devolucion,descripcion_descuento VARCHAR(40) OUTPUT PAGE LENGTH 100 FORMAT PAGE HEADER PRINT COLUMN 1, "edprrp029", COLUMN 33, p_compania.nombre, COLUMN 75, "Pag. ",pageno using "###" PRINT COLUMN 35, "Sistema de Contabilidad", COLUMN 75, today using "dd/mm/yy" PRINT COLUMN 29, "Entrada Devoluciones Sobre Ventas ", COLUMN 75, time PRINT COLUMN 34, "Del ",fecha_inicial USING "dd/mm/yyyy", " Al ",fecha_final USING "dd/mm/yyyy" # , negrillas_off SKIP 1 LINE PRINT COLUMN 01,"Entrada de Diario No.",entrada SKIP 1 LINE PRINT COLUMN 1,"Observaciones: REGISTRO DEVOLUCIONES ",x.descripcion SKIP 1 LINE PRINT COLUMN 1," _____________________________________" PRINT COLUMN 1, "--------------------------------------------------", "----------------------------------------" PRINT COLUMN 2, "Cuenta ", COLUMN 11, "Dpto", COLUMN 18, "Concepto", COLUMN 66, "Debe", COLUMN 81, "Haber" PRINT COLUMN 1, "--------------------------------------------------", "----------------------------------------" ON LAST ROW LET bruto = SUM(x.monto_bruto)*x.tasa LET descuento =SUM(x.monto_desc)*x.tasa LET itbis = SUM(x.monto_itbi)*x.tasa LET neto = SUM(x.monto_bruto - x.monto_desc + x.monto_itbi) LET tdebito=SUM(x.monto_bruto)*x.tasa+SUM(x.monto_itbi)*x.tasa LET descripcion_prima = NULL IF x.cuenta_no_prima IS NOT NULL THEN SELECT a.descripcion INTO descripcion_prima FROM cgtb00001 a WHERE a.cuenta_no = x.cuenta_no_prima LET prima = SUM(x.monto_bruto - x.monto_desc + x.monto_itbi)*(x.tasa-1) LET tcredito = SUM(x.monto_desc*x.tasa)+SUM(x.monto_bruto - x.monto_desc + x.monto_itbi)+ prima ELSE LET tcredito = SUM(x.monto_desc)+SUM(x.monto_bruto - x.monto_desc + x.monto_itbi) END IF SELECT a.descripcion INTO descripcion_Devolucion FROM cgtb00001 a WHERE a.cuenta_no = x.cuenta_no_Devolucion SELECT a.descripcion INTO descripcion_ventas FROM cgtb00001 a WHERE a.cuenta_no = x.cuenta_no_ventas SELECT a.descripcion INTO descripcion_itbis FROM cgtb00001 a WHERE a.cuenta_no = x.cuenta_no_itbis SELECT a.descripcion INTO descripcion_Descuento FROM cgtb00001 a WHERE a.cuenta_no = x.cuenta_no_descuento PRINT COLUMN 2, x.cuenta_no_Devolucion,"4101"," ",descripcion_devolucion, COLUMN 60, SUM(x.monto_bruto)*x.tasa USING "###,###,###.##" PRINT COLUMN 2, x.cuenta_no_itbis,"4101"," ",descripcion_itbis, COLUMN 60, SUM(x.monto_itbi)*x.tasa USING "###,###,###.##" PRINT COLUMN 2, x.cuenta_no_descuento,"4101"," ",descripcion_descuento, COLUMN 75, SUM(x.monto_desc*x.tasa) USING "###,###,###.##" PRINT COLUMN 2, x.cuenta_no_ventas,"4101"," ",descripcion_ventas, COLUMN 75, SUM(x.monto_bruto - x.monto_desc + x.monto_itbi) USING "###,###,###.##" IF x.cuenta_no_prima IS NOT NULL THEN PRINT COLUMN 2, x.cuenta_no_prima,"4101"," ",descripcion_prima, COLUMN 75, prima USING "###,###,###.##" END IF SKIP 1 LINE PRINT COLUMN 62,"============", COLUMN 77,"============" PRINT COLUMN 60, tdebito USING "###,###,###.##", COLUMN 75, tcredito USING "###,###,###.##" SKIP 3 LINES PRINT COLUMN 1, detalle1 IF afecta = "SI" THEN BEGIN WORK CALL controlNumericoED(idEntrada,fecha_final, usuarios) RETURNING entrada DISPLAY "entrada real: ",entrada DISPLAY BY NAME entrada INSERT INTO cgtb00004 (fecha, tipo, ref, cuenta_no,departamento, num_doc, cod_aux, cod_sec, detalles, detalle_1, detalle_2, debito, credito, status_t, us_crea, fech_crea, us_mod, fech_mod) VALUES(fecha_final,1,entrada,x.cuenta_no_Devolucion,4101, null,null,null,null, detalle1,null,bruto,0,null,usuarios,getdate(),null,null) INSERT INTO cgtb00004 (fecha, tipo, ref, cuenta_no,departamento, num_doc, cod_aux, cod_sec, detalles, detalle_1, detalle_2, debito, credito, status_t, us_crea, fech_crea, us_mod, fech_mod) VALUES(fecha_final,1,entrada,x.cuenta_no_itbis,4101, null,null,null,null, detalle1,null,itbis,0,null,usuarios,getdate(),null,null) INSERT INTO cgtb00004 (fecha, tipo, ref, cuenta_no,departamento, num_doc, cod_aux, cod_sec, detalles, detalle_1, detalle_2, debito, credito, status_t, us_crea, fech_crea, us_mod, fech_mod) VALUES(fecha_final,1,entrada,x.cuenta_no_descuento,null, null,null,null,null, detalle1,null,0,descuento,null,usuarios,getdate(),null,null) INSERT INTO cgtb00004 (fecha, tipo, ref, cuenta_no,departamento, num_doc, cod_aux, cod_sec, detalles, detalle_1, detalle_2, debito, credito, status_t, us_crea, fech_crea, us_mod, fech_mod) VALUES(fecha_final,1,entrada,x.cuenta_no_ventas,4101, null,null,null,null, detalle1,null,0,neto,null,usuarios,getdate(),null,null) IF x.cuenta_no_prima IS NOT NULL THEN INSERT INTO cgtb00004 (fecha, tipo, ref, cuenta_no,departamento, num_doc, cod_aux, cod_sec, detalles, detalle_1, detalle_2, debito, credito, status_t, us_crea, fech_crea, us_mod, fech_mod) VALUES(fecha_final,1,entrada,x.cuenta_no_prima,4101, null,null,null,null, detalle1,null,0,prima,null,usuarios,getdate(),null,null) END IF COMMIT WORK END IF END REPORT { Esta funcion se utiliza para desplegar mensajes de los reportes de los sistemas de Ray-O-Vac Dominicana. Realizada por Lic. Abner Montalvo y Johnny Soto Agosto 21, 1992 } # Desplega pantalla con logo de la compania { Esta funcion se utiliza para desplegar mensajes de errores en todos los sistemas de Ray-O-Vac Dominicana. Esta funcion busca el mensaje deseado en la tabla "msgtable" y lo despliega en la linea de mensajes } FUNCTION msg(numero_msg) DEFINE numero_msg SMALLINT DEFINE descripcion CHAR (60) SELECT desc_msg INTO descripcion FROM msgtable WHERE cod_msg = numero_msg IF status = NOTFOUND THEN LET numero_msg = 22 SELECT desc_msg INTO descripcion FROM msgtable WHERE cod_msg = numero_msg ERROR descripcion ATTRIBUTE(BOLD) ELSE ERROR descripcion ATTRIBUTE(BOLD) LET numero_msg = 0 END IF END FUNCTION