{ ------------------------------------------------------------------------------- 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(10,2), descuento DECIMAL(10,2), status_t CHAR(1), nom_cli CHAR(30), descripcion CHAR(30), documento INT, cod_cia SMALLINT END RECORD 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 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 IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF INPUT BY NAME tipo,fecha_inicial,fecha_final 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 # Busca los recibos de pagos para el rango de fechas especificado 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 ", "FROM cctb00001 a,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.cod_cia,a.num_doc " DISPLAY "<< Estoy Buscando los Documentos. >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) DISPLAY " " AT 19,14 CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia LET opt5 = fgl_winquestion("IMPRESION","DESEA REPORTE POR PANTALLA?","YES","YES|NO","question",0) IF opt5 = "NO" THEN START REPORT cobros_ft TO archivo ELSE START REPORT cobros_ft TO screen END IF 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 salir = "N" WHILE salir = "N" FETCH lrecibos INTO cobros.* IF status = NOTFOUND THEN LET salir = "S" EXIT WHILE END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN 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() END WHILE LET progreso = 100 DISPLAY progreso TO progreso CALL ui.Interface.refresh() FINISH REPORT cobros_ft CLEAR SCREEN LET opt = fgl_winquestion("Atencion","Desea Imprimir Reporte?", "cancel","yes|no|cancel","question",0) LET opt = UPSHIFT(opt) IF opt = "YES" 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(10,2), descuento DECIMAL(10,2), status_t CHAR(1), nom_cli CHAR(30), descripcion CHAR(30), documento INT, cod_cia SMALLINT END RECORD DEFINE total1,total2,total3,total4,total5,total6, total_monto,total_desc,total_neto DECIMAL(12,2) DEFINE letrero CHAR(4) DEFINE nombre_rp CHAR(20) DEFINE hora CHAR(5), otro_num INT OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 ORDER BY x.cod_cia,x.recibo,x.factura FORMAT PAGE HEADER 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" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------" , "-----------" # , negrillas_off BEFORE GROUP OF x.cuenta_no PRINT COLUMN 1, negrilla_on PRINT COLUMN 1, x.cuenta_no clipped," ",x.descripcion, negrillas_of BEFORE GROUP OF x.cod_cia SKIP 1 LINE IF x.cod_cia = 1 THEN PRINT "SAN CRISTOBAL" END IF IF x.cod_cia = 2 THEN PRINT "SANTO DOMINGO" END IF IF x.cod_cia = 3 THEN PRINT "SANTIAGO" 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 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 "&&&&&&" AFTER GROUP OF x.recibo 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 "---,---,---.##" SKIP 1 LINE AFTER GROUP OF x.cuenta_no PRINT 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 "---,---,---.##" 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