{ ------------------------------------------------------------------------------- caPROGRAMA : CCPRRP005 OBJETIVO : Relacion de Recibos de Pagos PROGRAMADOR : Juan F. Soto FECHA REALIZACION : Abril 1, 1993 ------------------------------------------------------------------------------- } GLOBALS "ccprgb000.4gl" DEFINE tipo CHAR(2), opt5 CHAR(3) DEFINE fecha_inicial, fecha_final DATE DEFINE salir CHAR(1) DEFINE cobros RECORD cuenta_no CHAR(8), 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), descripcion CHAR(30), documento INT, cod_cia SMALLINT, localidad CHAR(40), chitbis CHAR(2) 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 "decomarmol" 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.cod_emp,a.tipo_cliente,a.sec_cliente,a.num_doc FROM localidad,tipo_cliente,sec_cliente,num_doc 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.num_doc, a.fecha_orig, a.aplica_a, a.tipo_cliente, ", "a.sec_cliente,a.valor,a.monto_desc,a.status_t,b.nombre,' ', a.num_cheque,a.cod_emp, ", "c.sucnombre,d.chitbis ", "FROM cctb00001 a LEFT OUTER JOIN sucursales c on a.cod_emp=c.sucid LEFT OUTER JOIN ", "cctb00011 d ", "ON a.num_doc = d.num_doc and a.tipo_doc = d.tipo_Doc ,vetb00004 b ", "WHERE a.fecha_orig between ? and ? ", "and a.tipo_doc = ? AND ", " a.tipo_cliente=b.tipo_cliente AND a.sec_cliente=b.sec_cliente 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 LET idx = 1 LET salir = "N" WHILE salir = "N" FETCH lrecibos INTO cobros.* IF status = NOTFOUND THEN LET salir = "S" 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 IF tipo = "AV" AND cobros.factura != cobros.recibo THEN LET cobros.descuento = 0 LET cobros.monto_recibo = 0 END IF IF cobros.status_t = "E" THEN LET cobros.nom_cli = "NULO" LET cobros.descuento = 0 LET cobros.monto_recibo = 0 END IF 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), 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), descripcion CHAR(30), documento INT, cod_cia SMALLINT, localidad CHAR(40), chitbis CHAR(2) END RECORD DEFINE total4,total5,total6 DECIMAL(12,2) DEFINE nombre_rp CHAR(20) DEFINE hora CHAR(5), otro_num INT 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 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 "---,---,---.##"," ", otro_num 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 82, SUM(x.descuento) using "---,---,---.##", COLUMN 99, SUM(x.monto_recibo-x.descuento) using "---,---,---.##" PRINT normal LET total4 = 0 LET total5 = 0 LET total6 = 0 END REPORT