{ ------------------------------------------------------------------------------- PROGRAMA : VEPRRP045 OBJETIVO : Facturas Vendidas y Saldadas en un Rango de Fechas PROGRAMADOR : Lic. Abner Montalvo FECHA REALIZACION : Octubre 6, 1998 ------------------------------------------------------------------------------- } GLOBALS "ccprgb000.4gl" DEFINE fecha_inicial, fecha_final DATE DEFINE salir, salir1, tipo_venta CHAR(1) DEFINE cod_cliente CHAR(6), nombre_cliente CHAR(30), selec5 CHAR(500), b_balance1,b_balance DECIMAL(12,2), flag SMALLINT DEFINE tot_gen1 RECORD totald DECIMAL(12,2), totalc DECIMAL(12,2), totalg DECIMAL(12,2) END RECORD DEFINE sub_tot RECORD totald DECIMAL(12,2), totalc DECIMAL(12,2), totalg DECIMAL(12,2), total1 DECIMAL(12,2) END RECORD DEFINE clientes RECORD valor1 DECIMAL(12,2), valor DECIMAL(12,2) END RECORD DEFINE ftrango RECORD aplica_a INTEGER, tipo_doc CHAR(2), num_doc INTEGER, fecha_orig DATE, valor DECIMAL(12,2), tipo_cliente SMALLINT, sec_cliente SMALLINT END RECORD DEFINE ftdoc RECORD aplica_a INTEGER, tipo_doc CHAR(2), num_doc INTEGER, fecha_orig DATE, valor DECIMAL(12,2), tipo_cliente SMALLINT, sec_cliente SMALLINT END RECORD DEFINE ftsalida RECORD aplica_a INTEGER, tipo_doc CHAR(2), num_doc INTEGER, fecha_orig DATE, valor DECIMAL(12,2), tipo_cliente SMALLINT, sec_cliente SMALLINT END RECORD FUNCTION ccprrp045() # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 OPEN FORM ccfmrp045 FROM "ccfmrp045" DISPLAY FORM ccfmrp045 CALL pantalla() DISPLAY "ccprrp045" AT 4,3 ATTRIBUTE(RED) DISPLAY " Facturas Saldadas " AT 6,25 ATTRIBUTE(BLACK) LET tipo_papel = 1 CALL msgrp000(tipo_papel) CALL defecto(impresor) RETURNING imprime,letras.*, archivo INPUT BY NAME fecha_inicial,fecha_final ON KEY(CONTROL-P) CALL busca_printer() RETURNING imprime,letras.*, archivo 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 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 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 LET parametro = "D" CALL elijeimpresion(parametro) RETURNING orden,destino,letras.* # Busca las Facturas para el rango de fechas. LET selec5 = " SELECT b.aplica_a, b.tipo_doc, b.num_doc, b.fecha_orig, ", " b.valor, b.tipo_cliente, b.sec_cliente ", " FROM cctb00001 b ", " WHERE b.fecha_orig >= ", fecha_inicial, " AND ", " b.fecha_orig <= ", fecha_final, " AND ", " b.tipo_doc = 'FT' ", " AND ", " b.status_t IS NULL ", " ORDER BY b.fecha_orig, b.tipo_doc, b.num_doc " DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) PREPARE sel FROM selec5 DECLARE point_01 CURSOR FOR sel # Busca los documentos que esten en el rango de fechas especificado START REPORT reporte45 TO archivo DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) LET tot_gen1.totald = 0 LET tot_gen1.totalc = 0 LET tot_gen1.totalg = 0 FOREACH point_01 INTO ftrango.* LET tot_gen1.totalg = 0 DISPLAY ftrango.tipo_doc AT 20,38 DISPLAY ftrango.num_doc AT 20,41 SELECT SUM(valor+monto_desc) INTO tot_gen1.totalg FROM cctb00001 WHERE fecha_orig >= fecha_inicial AND fecha_orig <= fecha_final AND aplica_a = ftrango.aplica_a AND status_t is null # tipo_doc NOT IN ("FT") # IF tot_gen1.totalg IS NULL THEN # LET tot_gen1.totalg = 0.00 # END IF #Busca los documentos que afectan la factura, si la misma esta saldada IF tot_gen1.totalg = 0 THEN DECLARE point_02 CURSOR FOR SELECT c.aplica_a, c.tipo_doc, c.num_doc, c.fecha_orig, (c.valor + c.monto_desc), c.tipo_cliente, c.sec_cliente FROM cctb00001 c WHERE c.fecha_orig >= fecha_inicial AND c.fecha_orig <= fecha_final AND c.aplica_a = ftrango.aplica_a AND c.tipo_doc NOT IN ("FT") AND c.status_t IS NULL ORDER BY c.fecha_orig, c.tipo_doc, c.num_doc LET ftsalida.* = ftrango.* OUTPUT TO REPORT reporte45(ftsalida.*) FOREACH point_02 INTO ftdoc.* DISPLAY ftdoc.tipo_doc AT 21,38 DISPLAY ftdoc.num_doc AT 21,41 LET ftsalida.* = ftdoc.* OUTPUT TO REPORT reporte45(ftsalida.*) END FOREACH END IF END FOREACH FINISH REPORT reporte45 CALL fdestino(destino,archivo,imprime) CLEAR SCREEN END FUNCTION REPORT reporte45(x) DEFINE x RECORD aplica_a INTEGER, tipo_doc CHAR(2), num_doc INTEGER, fecha_orig DATE, valor DECIMAL(12,2), tipo_cliente SMALLINT, sec_cliente SMALLINT END RECORD DEFINE campo1 CHAR(6) DEFINE hora CHAR(5) DEFINE tipo CHAR(2) , ventas DECIMAL(12,2), direccion CHAR(80) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 ORDER BY x.aplica_a, x.tipo_doc, x.num_doc, x.fecha_orig FORMAT PAGE HEADER LET hora = time PRINT COLUMN 1, letras.comp_on PRINT COLUMN 1, "ccprrp045", COLUMN 31, "R A Y . O . V A C D O M I N I C A N A, S. A.", COLUMN 103, "Pag.", COLUMN 108, pageno using "###" PRINT COLUMN 39, "Sistema de Cuentas por Cobrar", COLUMN 101, today using "dd/mm/yyyy" PRINT COLUMN 46, "Facturas Saldadas", 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 1, "Documento", COLUMN 12, "Fecha", COLUMN 28, "Valor", COLUMN 34, "Cliente" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------" , "-----------" ON EVERY ROW PRINT COLUMN 1, x.tipo_doc, "-", COLUMN 4, x.num_doc USING "&&&&&&", COLUMN 11, x.fecha_orig using "dd/mm/yyyy", COLUMN 20, x.valor USING "##,###,##&.&&"; IF x.tipo_doc = "FT" THEN LET nombre_cliente = NULL SELECT nombre INTO nombre_cliente FROM vetb00004 WHERE tipo_cliente = a.tipo_cliente AND sec_cliente = a.sec_cliente PRINT COLUMN 34, x.tipo_cliente USING "&&", "-", COLUMN 36, x.sec_cliente USING "&&&&", " ", nombre_cliente ELSE PRINT " " END IF AFTER GROUP OF x.aplica_a PRINT COLUMN 20, "-------------" PRINT COLUMN 4, "Balance Factura ", COLUMN 20, GROUP SUM(x.valor) USING "##,###,##&.&&" ON LAST ROW PRINT letras.normal END REPORT