{ ------------------------------------------------------------------------------- caPROGRAMA : CCPRRP005 OBJETIVO : Relacion de Recibos de Pagos PROGRAMADOR : Juan F. Soto FECHA REALIZACION : Abril 1, 1993 ------------------------------------------------------------------------------- } GLOBALS "ccprgb000.4gl" DEFINE tipo CHAR(2) DEFINE fecha_inicial, fecha_final DATE DEFINE salir CHAR(1) DEFINE cobros RECORD cuenta_no CHAR(8), tipo_doc CHAR(2), recibo INTEGER, fecha_recibo DATE, factura INTEGER, tipo_cliente SMALLINT, sec_cliente SMALLINT, monto_recibo DECIMAL(12, 2), descuento DECIMAL(12, 2), status_t CHAR(1), nom_cli CHAR(30), comentario CHAR(100), documento INT, cod_cia SMALLINT, localidad CHAR(40), chitbis CHAR(2), valor_efectivo DEC(12, 2), valor_cheque DEC(12, 2), valor_tarjeta DEC(12, 2), valor_link DEC(12, 2), bodega VARCHAR(100), cod_mov, num_doc_alm INT, factura_ext INT END RECORD MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor CALL startlog("CCRP05.TXT") CONNECT TO "smarmotech" AS "MSSQL" USER usuarios USING clave CALL defecto( usuarios, clave, impresor) RETURNING imprime, negrilla_on, negrillas_of, doble_on, doble_off, comp_on, comp_off, doce, normal, archivo, copia CALL ccprrp005() END MAIN FUNCTION ccprrp005() # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM ccfmrp005 FROM "ccfmrp005" DISPLAY FORM ccfmrp005 DISPLAY "ccprrp005" AT 4, 3 DISPLAY "Documentos" AT 6, 35 LET tipo_papel = 1 CALL msgrp000(tipo_papel) CONSTRUCT criterio ON a.sucid, a.tipo_cliente, a.sec_cliente, a.num_doc FROM sucid, tipo_cliente, sec_cliente, num_doc BEFORE CONSTRUCT CALL localidades('1') AFTER CONSTRUCT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF END CONSTRUCT INPUT BY NAME tipo, fecha_inicial, fecha_final, grafico AFTER FIELD tipo IF tipo IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tipo END IF SELECT UNIQUE tipo_doc FROM cctb00001 WHERE tipo_doc = tipo IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD tipo END IF AFTER FIELD fecha_inicial IF fecha_inicial IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_inicial END IF BEFORE FIELD fecha_final LET fecha_final = TODAY DISPLAY BY NAME fecha_final AFTER FIELD fecha_final 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 END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF SELECT a.* INTO p_companias.* FROM companias a LET selec3 = "SELECT a.cuenta_no,a.tipo_Doc,a.num_doc, a.fecha_orig, a.aplica_a, a.tipo_cliente, ", "a.sec_cliente,a.valor,a.monto_desc,a.status_t,b.nombre,d.comentario, a.num_cheque,a.sucid, ", "c.sucnombre,d.chitbis,a.valor_efectivo,a.valor_cheque,a.valor_tarjeta,a.valor_link, x.descripcion,a.banco,a.num_cheque,a.factura_ext ", "FROM cctb00001 a INNER JOIN vetb00004 b ON a.tipo_cliente = b.tipo_cliente AND ", " a.sec_cliente = b.sec_cliente LEFT OUTER JOIN sucursales c on a.cod_emp=c.sucid LEFT OUTER JOIN ", "cctb00011 d ON d.tipo_cliente = b.tipo_cliente AND d.sec_cliente = b.sec_cliente AND ", " a.num_doc = d.num_doc and a.tipo_doc = d.tipo_Doc LEFT OUTER JOIN intb00009 x ON a.bodega = x.cod_bodega ", "WHERE a.fecha_orig between ? and ? ", "and a.tipo_doc = ? AND ", CRITERIO CLIPPED, " ORDER BY a.num_doc " DISPLAY "<< Estoy Buscando los Documentos. >>" AT 19, 14 ATTRIBUTE(REVERSE, BOLD) DISPLAY " " AT 19, 14 DISPLAY " " AT 19, 14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19, 14 ATTRIBUTE(REVERSE) LET progreso = 20 DISPLAY progreso TO progreso CALL ui.Interface.refresh() PREPARE cobros_locales FROM selec3 DECLARE lrecibos CURSOR FOR cobros_locales OPEN lrecibos USING fecha_inicial, fecha_final, tipo # DELETE FROM tmpcobros LET idx = 1 LET salir = "N" WHILE salir = "N" FETCH lrecibos INTO cobros.* IF status = NOTFOUND THEN LET salir = "S" DISPLAY "salio del while" EXIT WHILE END IF IF idx = 1 THEN IF grafico = "SI" THEN CALL seleccionarSalida() RETURNING r_output CALL configureoutput(r_output) RETURNING HANDLER START REPORT cobros_ft TO XML HANDLER HANDLER ELSE CALL defecto( usuarios, clave, impresor) RETURNING imprime, negrilla_on, negrillas_of, doble_on, doble_off, comp_on, comp_off, doce, normal, archivo, copia START REPORT cobros_ft TO archivo END IF END IF IF cobros.monto_recibo IS NULL THEN LET cobros.monto_recibo = 0 END IF IF cobros.descuento IS NULL THEN LET cobros.descuento = 0 END IF IF cobros.monto_recibo < 0 THEN LET cobros.monto_recibo = cobros.monto_recibo * -1 END IF IF cobros.DESCUENTO < 0 THEN LET cobros.descuento = cobros.descuento * -1 END IF LET idx = idx + 1 IF tipo = "AV" AND cobros.factura != cobros.recibo THEN LET cobros.descuento = 0 LET cobros.monto_recibo = 0 CONTINUE WHILE END IF IF cobros.status_t = "E" THEN LET cobros.nom_cli = "NULO" LET cobros.descuento = 0 LET cobros.monto_recibo = 0 END IF # INSERT INTO tmpcobros VALUES (cobros.tipo_doc,cobros.recibo,cobros.monto_recibo,cobros.descuento) OUTPUT TO REPORT cobros_ft(cobros.*) LET progreso = progreso + 1 IF progreso > 80 THEN LET progreso = 80 END IF DISPLAY progreso TO progreso CALL ui.Interface.refresh() LET idx = idx + 1 END WHILE LET progreso = 100 DISPLAY progreso TO progreso CALL ui.Interface.refresh() IF idx = 1 THEN CALL fgl_winmessage( "ERROR", "NO EXISTEN DATOS CON ESAS CONDICIONES", "INFO") ELSE FINISH REPORT cobros_ft END IF IF grafico <> "SI" THEN RUN imprime END IF END FUNCTION REPORT cobros_ft(x) DEFINE x RECORD cuenta_no CHAR(8), tipo_Doc CHAR(2), recibo INTEGER, fecha_recibo DATE, factura INTEGER, tipo_cliente SMALLINT, sec_cliente SMALLINT, monto_recibo DECIMAL(12, 2), descuento DECIMAL(12, 2), status_t CHAR(1), nom_cli CHAR(30), comentario CHAR(100), documento INT, cod_cia SMALLINT, localidad CHAR(40), chitbis CHAR(2), valor_efectivo DEC(12, 2), valor_cheque DEC(12, 2), valor_tarjeta DEC(12, 2), valor_link DEC(12, 2), bodega VARCHAR(100), cod_mov, num_doc_alm INT, factura_ext INT END RECORD DEFINE total4, total5, total6 DECIMAL(12, 2) DEFINE nombre_rp CHAR(20) DEFINE hora CHAR(5), otro_num INT OUTPUT PAGE LENGTH 100 ORDER BY x.recibo, x.factura FORMAT PAGE HEADER IF grafico <> "SI" THEN LET doble_on = ASCII 14 LET doble_off = ASCII 20 LET comp_on = ASCII 15 LET comp_off = ASCII 18 LET doce = ASCII 27, ASCII 77 LET normal = ASCII 27, ASCII 80 ELSE LET doble_on = NULL LET doble_off = NULL LET comp_on = NULL LET comp_off = NULL LET doce = NULL LET normal = NULL LET negrilla_on = NULL END IF LET hora = TIME LET lj = (110 - LENGTH(p_companias.nombre CLIPPED)) / 2 PRINT COLUMN 1, comp_on, negrilla_on PRINT COLUMN 1, "ccprrp005", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 103, "Pag. ", PAGENO USING "###" PRINT COLUMN 39, "Sistema de Cuentas por Cobrar", COLUMN 101, TODAY USING "dd/mm/yyyy" IF tipo = "AV" THEN LET nombre_rp = "AVANCE ORDEN " END IF IF tipo = "FE" THEN LET nombre_rp = "Factura Export." END IF IF tipo = "FT" THEN LET nombre_rp = "Factura Local " END IF IF tipo = "PC" THEN LET nombre_rp = "Pago de Contado" END IF IF tipo = "PG" THEN LET nombre_rp = "Recibos de pago" END IF IF tipo = "NC" THEN LET nombre_rp = "Notas de Creditos" END IF IF tipo = "OC" THEN LET nombre_rp = "Otros Creditos" END IF IF tipo = "OD" THEN LET nombre_rp = "Otros Debitos" END IF IF tipo = "ND" THEN LET nombre_rp = "Notas de Debito" END IF PRINT COLUMN 46, nombre_rp, COLUMN 106, hora PRINT COLUMN 42, "Del ", fecha_inicial USING "dd/mm/yyyy", " Al ", fecha_final USING "dd/mm/yyyy" SKIP 1 LINES PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "--------------------------" PRINT COLUMN 2, "Recibo", COLUMN 10, "Fecha", COLUMN 18, "Afecta", COLUMN 26, "C l i e n t e", COLUMN 74, "Monto", COLUMN 86, "Descuento", COLUMN 107, "Neto", COLUMN 118, "LOCALIDAD", 2 SPACES, x.chitbis PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "--------------------------" # , negrillas_off BEFORE GROUP OF x.recibo WHENEVER ERROR CONTINUE #BUSCA RELACION DE NUMEROS LET otro_num = NULL # SELECT a.num_trans INTO otro_num FROM cctb00020 a # WHERE a.num_oc = x.recibo and a.tipo_doc =tipo IF x.bodega IS NOT NULL THEN LET x.bodega = 'ALMACEN: ', x.bodega CLIPPED END IF PRINT COLUMN 2, x.recibo USING "######", COLUMN 9, x.fecha_recibo USING "dd/mm/yyyy", 2 SPACES, x.comentario CLIPPED, 2 SPACES, x.bodega CLIPPED, "-", X.cod_mov USING "<<", "-", X.num_doc_alm USING "<<<<<<<" IF x.tipo_doc = 'AV' THEN IF x.valor_efectivo > 0 THEN PRINT 2 SPACES, "Valor efectivo:", x.valor_efectivo USING "###,###,###.##" END IF IF x.valor_cheque > 0 THEN PRINT 2 SPACES, "Valor Cheque :", x.valor_cheque USING "###,###,###.##" END IF IF x.valor_tarjeta > 0 THEN PRINT 2 SPACES, "Valor Tarjeta :", x.valor_tarjeta USING "###,###,###.##" END IF END IF ON EVERY ROW # WHENEVER ERROR CONTINUE #BUSCA RELACION DE NUMEROS # LET otro_num = NULL # SELECT a.num_trans INTO otro_num FROM cctb00020 a # WHERE a.num_oc = x.recibo and a.tipo_doc =tipo IF tipo = "FE" OR tipo = "FT" THEN LET x.documento = NULL SELECT a.conduce INTO x.factura FROM vetb00002 a WHERE a.factura = x.recibo END IF # PRINT COLUMN 2, x.recibo using "######", # COLUMN 9, x.fecha_recibo using "dd/mm/yyyy"; IF tipo <> 'AV' THEN PRINT COLUMN 20, x.factura USING "######"; ELSE PRINT COLUMN 20, x.documento USING "&&&&&&"; END IF PRINT COLUMN 27, x.tipo_cliente USING "&&", "-", x.sec_cliente USING "&&&&&&", " ", x.nom_cli CLIPPED, COLUMN 67, x.monto_recibo USING "---,---,---.##", COLUMN 82, x.descuento USING "---,---,---.##", COLUMN 98, x.monto_recibo - x.descuento USING "---,---,---.##", " ", x.factura_ext USING "&&&&&&", COLUMN 115, x.localidad AFTER GROUP OF x.recibo IF GROUP COUNT(*) > 1 THEN PRINT COLUMN 64, "--------------", COLUMN 80, "--------------", COLUMN 96, "--------------" PRINT COLUMN 67, GROUP SUM(x.monto_recibo) USING "---,---,---.##", COLUMN 82, GROUP SUM(x.descuento) USING "---,---,---.##", COLUMN 99, GROUP SUM(x.monto_recibo - x.descuento) USING "---,---,---.##" END IF SKIP 1 LINE ON LAST ROW SKIP 1 LINE PRINT COLUMN 35, "Totales --> ", COLUMN 67, SUM(x.monto_recibo) USING "--,---,---,---.##", COLUMN 85, SUM(x.descuento) USING "--,---,---,---.##", COLUMN 103, SUM(x.monto_recibo - x.descuento) USING "--,---,---,---.##" SKIP 1 LINE PRINT COLUMN 35, "******RESUMEN**********" PRINT COLUMN 38, "VALOR EFECTIVO :", SUM(x.valor_efectivo) USING "###,###,###.##" PRINT COLUMN 38, "VALOR TRANSFERENCIA:", SUM(x.valor_cheque) USING "###,###,###.##" PRINT COLUMN 38, "VALOR TARJETA :", SUM(x.valor_tarjeta) USING "###,###,###.##" PRINT COLUMN 38, "VALOR LINK :", SUM(x.valor_link) USING "###,###,###.##" PRINT normal LET total4 = 0 LET total5 = 0 LET total6 = 0 END REPORT