{ ------------------------------------------------------------------------------- PROGRAMA : CCPRRP006 OBJETIVO : Mayor Auxiliar PROGRAMADOR : JUAN SOTO FECHA REALIZACION : Marzo 1, 1993 ------------------------------------------------------------------------------- } GLOBALS "ccprgb000.4gl" DEFINE fecha_inicial, fecha_final DATE DEFINE salir, salir1, tipo_venta CHAR(1) DEFINE cod_cliente CHAR(20), selec5 CHAR(500), b_balance1,b_balance DECIMAL(12,2), flag SMALLINT, tmpdoc INT, tmptipo CHAR(2) 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 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 ccprrp006() END MAIN FUNCTION ccprrp006() # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 OPEN FORM ccfmrp006 FROM "ccfmrp006" DISPLAY FORM ccfmrp006 CONSTRUCT criterio ON b.tipo_cliente,b.sec_cliente FROM tipo_cliente,sec_cliente INPUT BY NAME fecha_inicial,fecha_final 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 # Busca Balances de los clientes LET selec5 = "SELECT b.* FROM vetb00004 b ", "WHERE ",criterio CLIPPED, " ORDER BY b.tipo_cliente, b.sec_cliente" DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) # Busca los documentos que esten en el rango de fechas especificado 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 PREPARE sel FROM selec5 DECLARE point_01 CURSOR FOR sel LET idx =1 # DELETE FROM tmpbalances1 FOREACH point_01 INTO cliente_bas.* LET clientes.valor = 0.00 SELECT SUM(valor+monto_desc) INTO clientes.valor FROM cctb00001 WHERE @fecha_orig < fecha_inicial and @tipo_cliente = cliente_bas.tipo_cliente and @sec_cliente = cliente_bas.sec_cliente and @status_t is null and tipo_doc NOT IN ("AV","AP") IF clientes.valor IS NULL THEN LET clientes.valor = 0.00 END IF LET clientes.valor1 = 0.00 SELECT SUM(valor+monto_desc) INTO clientes.valor1 FROM cctb00001 WHERE @fecha_orig < fecha_inicial and @tipo_cliente = cliente_bas.tipo_cliente and @sec_cliente = cliente_bas.sec_cliente and @status_t is null and tipo_doc in ("AV") and num_doc = aplica_a IF clientes.valor1 IS NULL THEN LET clientes.valor1 = 0.00 END IF LET clientes.valor = clientes.valor - clientes.valor1 LET b_balance = clientes.valor LET cod_cliente = cliente_bas.tipo_cliente USING"&&","-", cliente_bas.sec_cliente USING "&&&&&&" # IF b_balance <> 0 THEN # INSERT INTO tmpbalances1 (tipo_cliente,sec_cliente,num_doc,balance,tipo_doc) # VALUES (cliente_bas.tipo_cliente,cliente_bas.sec_cliente,1,b_balance,'INI') # END IF LET flag = 0 DECLARE point_02 CURSOR FOR SELECT * INTO rec_pago.* FROM cctb00001 WHERE @fecha_orig between fecha_inicial and fecha_final and @tipo_cliente = cliente_bas.tipo_cliente and @sec_cliente = cliente_bas.sec_cliente and status_t is null and (tipo_doc in ("PG","FT","FE","NC","ND","OC","DV","OD","PC") or (tipo_doc = "AV" and num_doc = aplica_a)) ORDER BY fecha_orig FOREACH point_02 LET flag = 1 IF rec_pago.tipo_doc = "AV" THEN LET rec_pago.valor = rec_pago.valor * -1 LET rec_pago.monto_desc = rec_pago.monto_desc * -1 END IF IF idx = 1 THEN CALL seleccionarsalida() RETURNING r_output CALL configureoutput(r_output) RETURNING HANDLER START REPORT reporte6 TO XML HANDLER HANDLER LET idx = idx + 1 END IF IF rec_pago.valor IS NULL THEN LET rec_pago.valor =0 END IF IF rec_pago.monto_desc IS NULL THEN LET rec_pago.monto_desc =0 END IF { IF rec_pago.valor > 0 THEN INSERT INTO tmpbalances1 (tipo_cliente,sec_cliente,num_doc,debito,credito,tipo_doc) VALUES (cliente_bas.tipo_cliente,cliente_bas.sec_cliente,rec_pago.num_doc,rec_pago.valor-rec_pago.monto_desc,'0',rec_pago.tipo_doc) ELSE INSERT INTO tmpbalances1 (tipo_cliente,sec_cliente,num_doc,debito,credito,tipo_doc) VALUES (cliente_bas.tipo_cliente,cliente_bas.sec_cliente,rec_pago.num_doc,'0',rec_pago.valor+rec_pago.monto_desc, rec_pago.tipo_doc) END IF IF rec_pago.valor < 0 THEN SELECT DISTINCT a.num_doc,a.tipo_doc INTO tmpdoc,tmptipo FROM tmpbalances1 a WHERE a.tipo_cliente = cliente_bas.tipo_cliente AND a.sec_cliente = cliente_bas.sec_cliente AND a.num_doc = rec_pago.num_doc AND a.tipo_doc = rec_pago.tipo_doc AND a.credito = rec_pago.valor IF STATUS = NOTFOUND THEN DISPLAY "DATOS not ",tmpdoc," ",tmptipo," ",cliente_bas.tipo_cliente," ",cliente_bas.sec_cliente END IF END IF } OUTPUT TO REPORT reporte6(cod_cliente) LET rec_pago.valor = 0 LET rec_pago.monto_desc = 0 END FOREACH IF flag = 0 AND clientes.valor <> 0 THEN IF idx = 1 THEN CALL seleccionarsalida() RETURNING r_output CALL configureoutput(r_output) RETURNING HANDLER START REPORT reporte6 TO XML HANDLER HANDLER LET idx = idx + 1 END IF INSERT INTO tmpbalances1 (tipo_cliente,sec_cliente,num_doc,balance,tipo_doc) VALUES (cliente_bas.tipo_cliente,cliente_bas.sec_cliente,1,clientes.valor, 'OINI') OUTPUT TO REPORT reporte6(cod_cliente) END IF END FOREACH IF idx > 1 THEN FINISH REPORT reporte6 ELSE CALL fgl_winmessage("INFO","NO EXISTEN INFORMACIONES EN ESTE RANGO DE FECHAS","INFO") END IF DISPLAY BY NAME tot_gen1.totald,tot_gen1.totalc,tot_gen1.totalg CLEAR SCREEN END FUNCTION REPORT reporte6(campo1) DEFINE campo1 CHAR(20) DEFINE doble_on,doble_off CHAR(2) DEFINE negrillas_on CHAR(2) DEFINE negrillas_off CHAR(2) DEFINE comp_on CHAR(2) DEFINE comp_off CHAR(2) DEFINE doce CHAR(2) DEFINE normal CHAR(2) DEFINE normall CHAR(3) DEFINE comprimido CHAR(3) DEFINE hora CHAR(5) DEFINE tipo CHAR(2) OUTPUT TOP MARGIN 0 LEFT MARGIN 4 BOTTOM MARGIN 2 PAGE LENGTH 100 FORMAT PAGE HEADER { LET doble_on = ASCII 14 LET doble_off = ASCII 20 LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 70 LET comp_on = ASCII 15 LET comp_off = ASCII 18 LET comprimido = ASCII 15 LET doce = ASCII 27, ASCII 77 LET normal = ASCII 27, ASCII 80} LET hora = time LET lj = (110 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, comprimido PRINT COLUMN 1, "ccprrp006", 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" PRINT COLUMN 46, " Mayor Auxiliar ", COLUMN 106, hora PRINT COLUMN 42, "Del ", fecha_inicial using "dd/mm/yyyy", " Al ", fecha_final using "dd/mm/yyyy" SKIP 1 LINES BEFORE GROUP OF campo1 PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "-----------" , negrillas_on LET b_balance1 = b_balance PRINT COLUMN 1, "Cliente:", COLUMN 10, campo1,#cliente_bas.tipo_cliente using "&&","-", #cliente_bas.sec_cliente using "&&&&&&", COLUMN 18, cliente_bas.nombre clipped, COLUMN 49, "Limite Credito", COLUMN 64, cliente_bas.limite_credito using "####,###,###.##", COLUMN 81, "Balance Inicial", COLUMN 97, clientes.valor using "----,---,--#.##" PRINT COLUMN 4, "D O C U M E N T O", COLUMN 29, "A F E C T A" PRINT COLUMN 1, "|----------------------|", COLUMN 27, "|---------------|" PRINT COLUMN 3, "Numero", COLUMN 11, "Tipo", COLUMN 17, "Fecha", COLUMN 29, "Numero", COLUMN 38, "Tipo", COLUMN 63, "D E B I T O", COLUMN 80, "C R E D I T O", COLUMN 99, "B A L A N C E" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------" , "-----------" ON EVERY ROW IF flag = 1 THEN LET b_balance1 = b_balance1 + rec_pago.valor + rec_pago.monto_desc PRINT COLUMN 3, rec_pago.num_doc using "######", COLUMN 12, rec_pago.tipo_doc, COLUMN 16, rec_pago.fecha_orig using "dd/mm/yy", COLUMN 28, rec_pago.aplica_a using "######", COLUMN 39, tipo; IF rec_pago.valor > 0 THEN PRINT COLUMN 59, rec_pago.valor + rec_pago.monto_desc using "####,###,###.##", COLUMN 97, b_balance1 using "((((,(((,(&#.##)" ELSE PRINT COLUMN 78, rec_pago.valor + rec_pago.monto_desc using "####,###,###.##", COLUMN 97, b_balance1 using "((((,(((,(&&.##)" END IF END IF AFTER GROUP OF campo1 LET sub_tot.totald = GROUP SUM(rec_pago.valor+rec_pago.monto_desc) WHERE rec_pago.valor + rec_pago.monto_desc > 0.00 LET sub_tot.totalc = GROUP SUM(rec_pago.valor+rec_pago.monto_desc) WHERE rec_pago.valor + rec_pago.monto_desc < 0.00 LET sub_tot.total1 = b_balance1 #GROUP SUM(rec_pago.valor +rec_pago.monto_desc) IF sub_tot.total1 IS NULL THEN LET sub_tot.total1 = 0 END IF LET sub_tot.totalg = b_balance1 #+ sub_tot.total1 IF sub_tot.totald is null THEN LET sub_tot.totald = 0 END IF IF sub_tot.totalc is null THEN LET sub_tot.totalc = 0 END IF IF sub_tot.totalg is null THEN LET sub_tot.totalg = 0 END IF PRINT COLUMN 27, "Total Cliente", COLUMN 61, sub_tot.totald USING "##,###,###.##", COLUMN 80, sub_tot.totalc USING "##,###,###.##", COLUMN 98, sub_tot.totalg USING "(((,(((,(((.##)" LET tot_gen1.totald = tot_gen1.totald + sub_tot.totald LET tot_gen1.totalc = tot_gen1.totalc + sub_tot.totalc LET tot_gen1.totalg = tot_gen1.totalg + sub_tot.totalg PRINT COLUMN 59, "===============", COLUMN 78, "===============", COLUMN 96, "================" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------" , "-----------" ON LAST ROW SKIP 1 LINE PRINT COLUMN 27, "Total General", COLUMN 59, tot_gen1.totald USING "##,###,###.##", COLUMN 78, tot_gen1.totalc USING "##,###,###.##", COLUMN 96, tot_gen1.totalg USING "(((,(((,(((.##)" PRINT comp_off,normal END REPORT