{ ------------------------------------------------------------------------------- PROGRAMA : CCPRRP003 OBJETIVO : Saldos por Antiguedad PROGRAMADOR : ING. JUAN F. SOTO FECHA REALIZACION : Marzo 30, 1993 ------------------------------------------------------------------------------- } GLOBALS "ccprgb000.4gl" DEFINE fecha_corte DATE , dcmd CHAR(100), tipo_credito smallint DEFINE doccli RECORD tipo_cliente SMALLINT, sec_cliente SMALLINT, nombre CHAR(30), aplica_a INTEGER, pendiente DECIMAL(12,2), fecha_factura DATE, cliente CHAR(7) END RECORD DEFINE tot_gen2 RECORD total1 DECIMAL(10,2), total2 DECIMAL(10,2), total3 DECIMAL(10,2), total4 DECIMAL(10,2), total5 DECIMAL(10,2) END RECORD DEFINE valor_total DECIMAL(12,2) 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 ccprrp003() END MAIN FUNCTION ccprrp003() DEFINE sql_ag STRING, lit_corte STRING DEFINE ag RECORD tc, sc SMALLINT, nom CHAR(30), c1, c2, c3, c4, c5, tot DECIMAL(14,2) END RECORD DEFINE fila3 RECORD grupo SMALLINT, empresa STRING, titulo STRING, cliente STRING, c1, c2, c3, c4, c5, total DECIMAL(14,2), pct DECIMAL(8,2) END RECORD # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM ccfmrp003 FROM "ccfmrp003" DISPLAY FORM ccfmrp003 #CALL pantalla() DISPLAY "ccprrp003" AT 4,3 DISPLAY "Saldos por Antiguedad" AT 6,29 LET tipo_papel = 1 CALL msgrp000(tipo_papel) INPUT BY NAME tipo_venta,fecha_corte,tipo_credito AFTER FIELD tipo_venta IF tipo_venta is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tipo_venta END IF IF tipo_venta = "1" OR tipo_venta = "2" THEN DISPLAY BY NAME tipo_venta ELSE LET numero_msg = 7 CALL msg(numero_msg) NEXT FIELD tipo_venta END IF BEFORE FIELD fecha_corte LET fecha_corte = today AFTER FIELD fecha_corte IF fecha_corte is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_corte END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF IF tipo_venta is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tipo_venta END IF IF tipo_venta = "1" OR tipo_venta = "2" THEN DISPLAY BY NAME tipo_venta ELSE LET numero_msg = 7 CALL msg(numero_msg) NEXT FIELD tipo_venta END IF IF fecha_corte is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_corte END IF DISPLAY "Buscando Balance general ... Espere por favor" AT 19,14 SELECT SUM(a.valor+a.monto_desc) INTO valor_total FROM cctb00001 a WHERE a.status_t IS NULL AND a.fecha_orig <= fecha_corte AND a.tipo_doc != "PC" EXIT INPUT END INPUT CONSTRUCT BY NAME criterio ON a.tipo_cliente,a.sec_cliente IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF # Busca pendiente de las facturas cuyas fechas de vencimiento son menores # a la fecha de corte LABEL atras: LET cero = fgl_winquestion("Atencion","Desea Clientes con saldo en cero?", "cancel","yes|no|cancel","question",0) LET cero = UPSHIFT(cero) LET cero = cero CLIPPED 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 START REPORT reporte3 TO archivo } CALL seleccionarsalida() RETURNING r_output CALL configureoutput3(r_output) RETURNING handler IF handler IS NULL THEN CALL fgl_winmessage("ERROR","No se pudo cargar ccprrp003.4rp","stop") RETURN END IF CREATE TEMP TABLE s3 ( tipo_cliente SMALLINT, sec_cliente SMALLINT, nombre CHAR(30), aplica_a INTEGER, pendiente DECIMAL(12,2), fecha_factura DATE ) LET cmd = null LET cmd = FGL_GETENV("FGLSPOOL")||"\\DATA.txt" START REPORT reporte33 TO cmd LET selec1 = "SELECT a.tipo_cliente,a.sec_cliente,c.nombre,a.num_doc,a.valor+a.monto_desc, ", " CONVERT(CHAR(10),a.fecha_ven,103) ", "FROM cctb00001 a, vetb00004 c ", "WHERE a.tipo_cliente=c.tipo_cliente AND a.sec_cliente = c.sec_cliente AND ", " a.fecha_orig <= ? AND a.status_t is null and a.tipo_doc in('AV') and ", " a.num_doc = a.aplica_a AND ",criterio CLIPPED, " and ", " a.tipo_cliente not in (18,19) " PREPARE comando1 FROM selec1 DECLARE ft_pendiente1 CURSOR FOR comando1 OPEN ft_pendiente1 USING fecha_corte 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() FOREACH ft_pendiente1 INTO doccli.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET doccli.cliente = doccli.tipo_cliente using "&&","-", doccli.sec_cliente using "&&&&" LET doccli.pendiente = doccli.pendiente * -1 LET progreso = progreso + 10 IF progreso > 50 THEN LET progreso = 50 END IF IF doccli.fecha_factura IS NULL OR doccli.fecha_factura = MDY(12,31,1899) THEN LET doccli.fecha_factura = MDY(1,1,2001) END IF INSERT INTO s3 VALUES (doccli.tipo_cliente, doccli.sec_cliente, doccli.nombre, doccli.aplica_a, doccli.pendiente, doccli.fecha_factura) OUTPUT TO REPORT reporte33(doccli.*,tipo_venta,fecha_corte,valor_total) DISPLAY progreso TO progreso CALL ui.Interface.refresh() END FOREACH LET selec3 = "SELECT a.tipo_cliente,a.sec_cliente,c.nombre,a.aplica_a, ", " SUM(a.valor+a.monto_desc) ", "FROM cctb00001 a, vetb00004 c ", "WHERE a.tipo_cliente=c.tipo_cliente AND a.sec_cliente = c.sec_cliente AND ", " a.fecha_orig <= ? AND a.status_t is null ", "and a.tipo_doc not in ('AV','PC') and a.tipo_cliente not in (18,19) and ", criterio clipped," GROUP BY a.tipo_cliente,a.sec_cliente,c.nombre,a.aplica_a HAVING SUM(a.valor + a.monto_desc) <> 0 " DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) PREPARE comando FROM selec3 DECLARE ft_pendiente CURSOR FOR comando OPEN ft_pendiente USING fecha_corte FOREACH ft_pendiente INTO doccli.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET doccli.cliente = doccli.tipo_cliente using "&&","-", doccli.sec_cliente using "&&&&" LET doccli.fecha_factura = "01/01/2001" SELECT MAX(a.fecha_ven) INTO doccli.fecha_factura FROM cctb00001 a WHERE a.num_doc = doccli.aplica_a and a.tipo_doc not in ("PG" ,"PC","NC","ND","AV") and #("PG" ,"PC","NC","ND","AV","OC","DV") and a.tipo_cliente = doccli.tipo_cliente and a.sec_cliente = doccli.sec_cliente and a.status_t is null LET progreso = progreso + 1 IF progreso > 95 THEN LET progreso = 95 END IF IF doccli.fecha_factura IS NULL OR doccli.fecha_factura = MDY(12,31,1899) THEN LET doccli.fecha_factura = MDY(1,1,2001) END IF INSERT INTO s3 VALUES (doccli.tipo_cliente, doccli.sec_cliente, doccli.nombre, doccli.aplica_a, doccli.pendiente, doccli.fecha_factura) OUTPUT TO REPORT reporte33(doccli.*,tipo_venta,fecha_corte,valor_total) DISPLAY progreso TO progreso CALL ui.Interface.refresh() END FOREACH LET progreso = 100 DISPLAY progreso to progreso CALL ui.Interface.refresh() LET lit_corte = "CONVERT(DATE,'", fecha_corte USING "yyyy-mm-dd", "',23)" LET sql_ag = "SELECT tipo_cliente, sec_cliente, MAX(nombre), ", " SUM(CASE WHEN DATEDIFF(day,fecha_factura,", lit_corte, ") <= 0 THEN pendiente ELSE 0 END), ", " SUM(CASE WHEN DATEDIFF(day,fecha_factura,", lit_corte, ") BETWEEN 1 AND 30 THEN pendiente ELSE 0 END), ", " SUM(CASE WHEN DATEDIFF(day,fecha_factura,", lit_corte, ") BETWEEN 31 AND 60 THEN pendiente ELSE 0 END), ", " SUM(CASE WHEN DATEDIFF(day,fecha_factura,", lit_corte, ") BETWEEN 61 AND 90 THEN pendiente ELSE 0 END), ", " SUM(CASE WHEN DATEDIFF(day,fecha_factura,", lit_corte, ") >= 91 THEN pendiente ELSE 0 END), ", " SUM(pendiente) FROM s3 GROUP BY tipo_cliente, sec_cliente " IF cero = "NO" THEN LET sql_ag = sql_ag, " HAVING SUM(pendiente) <> 0 " END IF LET sql_ag = sql_ag, " ORDER BY tipo_cliente, sec_cliente " START REPORT estado3 TO XML HANDLER handler DECLARE c_ag CURSOR FROM sql_ag FOREACH c_ag INTO ag.* LET fila3.grupo = 1 LET fila3.empresa = p_companias.nombre CLIPPED IF tipo_venta = "1" THEN LET fila3.titulo = "Saldos por Antiguedad al ", fecha_corte USING "dd/mm/yyyy", " Valores en RD$" ELSE LET fila3.titulo = "Saldos por Antiguedad al ", fecha_corte USING "dd/mm/yyyy", " Valores en US$" END IF LET fila3.cliente = ag.tc USING "&&", "-", ag.sc USING "&&&&&", " ", ag.nom CLIPPED LET fila3.c1 = ag.c1 LET fila3.c2 = ag.c2 LET fila3.c3 = ag.c3 LET fila3.c4 = ag.c4 LET fila3.c5 = ag.c5 LET fila3.total = ag.tot IF valor_total IS NULL OR valor_total = 0 THEN LET fila3.pct = 0 ELSE LET fila3.pct = (ag.tot / valor_total) * 100 END IF OUTPUT TO REPORT estado3(fila3.*) END FOREACH FINISH REPORT estado3 DROP TABLE s3 FINISH REPORT reporte33 CALL ui.Interface.frontCall("standard","getenv", ["CREDITO"], [dcmd] ) LET chmensaje = "desde servidor ",cmd CLIPPED, " hasta pc ",dcmd CALL fgl_winmessage("INFO",chmensaje,"INFO") CALL fgl_putfile(cmd,dcmd) DISPLAY BY NAME tot_gen2.* 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 reporte3(x,venta,corte,valor_gral) DEFINE x RECORD tipo_cliente SMALLINT, sec_cliente SMALLINT, nombre CHAR(30), aplica_a INTEGER, pendiente DECIMAL(12,2), fecha_factura DATE, cliente CHAR(7) END RECORD DEFINE valor_gral DECIMAL(12,2) DEFINE venta CHAR(1), corte DATE DEFINE doble_on CHAR(2) DEFINE 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 comprimido CHAR(3) DEFINE normall CHAR(3) DEFINE normal CHAR(2) DEFINE hora CHAR(5) DEFINE fecha_factura DATE DEFINE de1a30, de31a45, de46a60, masde60, mas120,total_saldo DECIMAL(12,2) DEFINE t30, t45, t60, tm60,tm120, tsaldo, ct30, ct45, ct60, ctm60,ctm120, ctsaldo DECIMAL(12,2) DEFINE dias INTEGER OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 # ORDER BY x.cliente,x.aplica_a 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 031 LET doce = ASCII 27, ASCII 77 LET normal = ASCII 27, ASCII 80 LET normall = ASCII 030} LET hora = time LET lj = (137 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, doce ,negrillas_on PRINT COLUMN 1, comp_on PRINT COLUMN 1, "ccprrp003", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 130, "Pag. ",pageno using "###" PRINT COLUMN 48, " Sistema de Cuentas por Cobrar", COLUMN 128, today using "dd/mm/yyyy" PRINT COLUMN 48, " Saldos por Antiguedad al ", corte using "dd/mm/yy", COLUMN 133, hora IF venta = "1" THEN PRINT COLUMN 61, "Valores en RD$" ELSE PRINT COLUMN 61, "Valores en US$" END IF SKIP 1 LINES PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------" PRINT COLUMN 2, "C l i e n t e", COLUMN 46, "Corriente", COLUMN 66, "De 1 a 30", COLUMN 82, "De 31 a 60", COLUMN 99, "De 61 a 90", COLUMN 113, "Mas De 90", COLUMN 135, "Total" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------" , negrillas_off BEFORE GROUP OF x.cliente LET descrip1 = x.nombre LET de1a30 = 0 LET de31a45 = 0 LET de46a60 = 0 LET masde60 = 0 LET total_saldo = 0 IF descrip1 IS NULL THEN LET descrip1 = "Cliente no Existe. Verifique." END IF #PRINT COLUMN 1, " " ON EVERY ROW IF de1a30 IS NULL THEN LET de1a30 = 0 END IF IF de31a45 IS NULL THEN LET de31a45 = 0 END IF IF de46a60 IS NULL THEN LET de46a60 = 0 END IF IF masde60 IS NULL THEN LET masde60 = 0 END IF IF mas120 IS NULL THEN LET mas120 = 0 END IF IF total_saldo IS NULL THEN LET total_saldo = 0 END IF IF x.fecha_factura IS NULL THEN LET x.fecha_factura = 0 END IF IF x.fecha_factura ='12/31/1899' THEN LET x.fecha_factura = '01/01/2001' END IF LET dias = corte - x.fecha_factura print x.aplica_a," ",x.pendiente," ",x.fecha_factura IF dias <= 0 THEN LET de1a30 = de1a30 + x.pendiente LET total_saldo = total_saldo + x.pendiente END IF IF dias > 0 AND dias < 31 THEN LET de31a45 = de31a45 + x.pendiente LET total_saldo = total_saldo + x.pendiente END IF IF dias >=31 AND dias < 61 THEN LET de46a60 = de46a60 + x.pendiente LET total_saldo = total_saldo + x.pendiente END IF IF dias >= 61 AND dias < 91 THEN LET masde60 = masde60 + x.pendiente LET total_saldo = total_saldo + x.pendiente END IF IF dias >= 91 THEN LET mas120 = mas120 + x.pendiente LET total_saldo = total_saldo + x.pendiente END IF AFTER GROUP OF x.cliente IF cero = "NO" THEN IF total_saldo != 0 THEN PRINT COLUMN 1, x.tipo_cliente using "&&", "-", x.sec_cliente using "&&&&", " ", descrip1 clipped, COLUMN 40, de1a30 using "(((,(((,(((.##)", COLUMN 61, de31a45 using "(((,(((,(((.##)", COLUMN 77, de46a60 using "(((,(((,(((.##)", COLUMN 93, masde60 using "(((,(((,(((.##)", COLUMN 109, mas120 using "(((,(((,(((.##)", COLUMN 125, total_saldo using "(((,(((,(((.##)"," ", (total_saldo/valor_gral)*100 USING "(((.##)"," ", "%" IF de1a30 > 0 THEN LET ct30 = ct30 + de1a30 END IF IF de31a45 > 0 THEN LET ct45 = ct45 + de31a45 END IF IF de46a60 > 0 THEN LET ct60 = ct60 + de46a60 END IF IF masde60 > 0 THEN LET ctm60 = ctm60 + masde60 END IF IF mas120 > 0 THEN LET ctm120 = ctm120 + mas120 END IF IF total_saldo > 0 THEN LET ctsaldo = ctsaldo + total_saldo END IF END IF ELSE PRINT COLUMN 1, x.tipo_cliente using "&&", "-", x.sec_cliente using "&&&&", " ", descrip1 clipped, COLUMN 40, de1a30 using "(((,(((,(((.##)", COLUMN 61, de31a45 using "(((,(((,(((.##)", COLUMN 77, de46a60 using "(((,(((,(((.##)", COLUMN 93, masde60 using "(((,(((,(((.##)", COLUMN 109, mas120 using "(((,(((,(((.##)", COLUMN 125, total_saldo using "(((,(((,(((.##)"," ", (total_saldo/valor_gral)*100 USING "(((.##)"," ","%" IF de1a30 > 0 THEN LET ct30 = ct30 + de1a30 END IF IF de31a45 > 0 THEN LET ct45 = ct45 + de31a45 END IF IF de46a60 > 0 THEN LET ct60 = ct60 + de46a60 END IF IF masde60 > 0 THEN LET ctm60 = ctm60 + masde60 END IF IF mas120 > 0 THEN LET ctm120 = ctm120 + mas120 END IF IF total_saldo > 0 THEN LET ctsaldo = ctsaldo + total_saldo END IF END IF IF tm120 IS NULL THEN LET tm120 = 0 LET ctm120 = 0 END IF IF ctm120 IS NULL THEN LET ctm120 = 0 END IF IF t30 IS NULL THEN LET t30 = 0 LET ct30 = 0 END IF IF ct30 IS NULL THEN LET ct30 = 0 END IF IF t45 IS NULL THEN LET t45 = 0 LET ct45 = 0 END IF IF ct45 IS NULL THEN LET ct45 = 0 END IF IF t60 IS NULL THEN LET t60 = 0 LET ct60 = 0 END IF IF ct60 IS NULL THEN LET ct60 = 0 END IF IF tm60 IS NULL THEN LET tm60 = 0 LET ctm60 = 0 END IF IF ctm60 IS NULL THEN LET ctm60 = 0 END IF IF tsaldo IS NULL THEN LET tsaldo = 0 LET ctsaldo = 0 END IF IF ctsaldo IS NULL THEN LET ctsaldo = 0 END IF LET t30 = t30 + de1a30 LET t45 = t45 + de31a45 LET t60 = t60 + de46a60 LET tm60 = tm60 + masde60 LET tm120 = tm120 + mas120 LET tsaldo = tsaldo + total_saldo LET de1a30 = 0 LET de31a45 = 0 LET de46a60 = 0 LET masde60 = 0 LET mas120 = 0 LET total_saldo = 0 ON LAST ROW SKIP 1 LINE PRINT COLUMN 1, negrillas_on, COLUMN 23, "Totales -->", COLUMN 41, t30 using "(((,(((,(((.##)", COLUMN 61, t45 using "(((,(((,(((.##)", COLUMN 77, t60 using "(((,(((,(((.##)", COLUMN 93, tm60 using "(((,(((,(((.##)", COLUMN 109, tm120 using "(((,(((,(((.##)", COLUMN 125, tsaldo using "(((,(((,(((.##)" , negrillas_off SKIP 1 LINE PRINT COLUMN 23, "Total CXC---> ", COLUMN 41, ct30 using "(((,(((,(((.##)", COLUMN 61, ct45 using "(((,(((,(((.##)", COLUMN 77, ct60 using "(((,(((,(((.##)", COLUMN 93, ctm60 using "(((,(((,(((.##)", COLUMN 109, ctm120 using "(((,(((,(((.##)", COLUMN 125, ctsaldo using "(((,(((,(((.##)" LET ct30 = 0 LET ct45 = 0 LET ct60 = 0 LET ctm60 = 0 LET ctm120 = 0 LET tot_gen2.total1 = 0 LET tot_gen2.total2 = 0 LET tot_gen2.total3 = 0 LET tot_gen2.total4 = 0 LET tot_gen2.total5 = 0 LET tot_gen2.total1 = t30 LET tot_gen2.total2 = t45 LET tot_gen2.total3 = t60 LET tot_gen2.total4 = tm60 LET tot_gen2.total5 = tsaldo LET t30 = 0 LET t45 = 0 LET t60 = 0 LET tm60 = 0 LET tsaldo = 0 PRINT comp_off END REPORT REPORT reporte33(x,venta,corte,valor_gral) DEFINE x RECORD tipo_cliente SMALLINT, sec_cliente SMALLINT, nombre CHAR(30), aplica_a INTEGER, pendiente DECIMAL(12,2), fecha_factura DATE, cliente CHAR(7) END RECORD, nombre_c CHAR(80), numero_rnc CHAR(11), siglas CHAR(15), sexo CHAR(1), cedula_v CHAR(9), cedula_n CHAR(11), rnc_personal CHAR(11), numero_p CHAR(10), nacionalidad CHAR(15), numero_lic CHAR(11), fecha_na CHAR(10), ciudad_nac CHAR(20), pais_nac CHAR(15), estado_civil CHAR(1), numero_depen CHAR(2), nombre_conyu CHAR(40), cedula_conyu CHAR(11), telefono_ca CHAR(7), telefono_trab CHAR(7), telefono_ca1 CHAR(20), telefono_trab1 CHAR(20), celular CHAR(20), direccion_re CHAR(80), cuidad_re CHAR(20), otra_dir CHAR(80), ciudad_otra CHAR(20), numero_cta CHAR(40), unidad_moneda CHAR(1), tipo_cta CHAR(20), relacion_cta CHAR(20), descrip_cta CHAR(20), status_cta CHAR(20), comentarios CHAR(20), fecha_apertura CHAR(16), limite_cr CHAR(10), credito_alto CHAR(10), numero_cuotas CHAR(3), monto_cuota CHAR(10), fecha_ult_act CHAR(10), balance_act CHAR(10), monto_atraso CHAR(10), s1_29 CHAR(10), s30_59 CHAR(10), s60_89 CHAR(10), s90_119 CHAR(10), s120_149 CHAR(10), s150_179 CHAR(10), smas180 CHAR(10), clasificacion CHAR(30), comentarios_s CHAR(100), fecha_a DATETIME YEAR TO MINUTE DEFINE valor_gral DECIMAL(12,2) DEFINE venta CHAR(1), corte DATE DEFINE fecha_factura,fecha_ult_a DATE DEFINE de1a30, de31a45, de46a60, masde60, mas120,total_saldo DECIMAL(12,2) DEFINE t30, t45, t60, tm60,tm120, tsaldo, ct30, ct45, ct60, ctm60,ctm120, ctsaldo DECIMAL(12,2) DEFINE dias INTEGER, pid CHAR(1) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 0 PAGE LENGTH 600 ORDER BY x.cliente,x.aplica_a FORMAT BEFORE GROUP OF x.cliente LET numero_rnc = null LET sexo = null LET cedula_n = NULL LET telefono_ca=NULL LET telefono_trab=NULL LET cuidad_re=NULL LET fecha_a = NULL LET limite_cr = NULL SELECT a.num_rnc,a.zona_postal,a.telefono_casa,a.telefono,a.telex,ISNULL(b.calle,' ')+' '+ ISNULL(b.casa_num,' ')+' '+ISNULL(b.urbanizacion,' '), c.nombre_provincia,a.fech_crea,a.limite_credito INTO numero_rnc,cedula_n,telefono_ca1,telefono_trab1,celular,direccion_re,cuidad_re, fecha_a,limite_cr FROM vetb00004 a,vetb00005 b,vetb00020 c WHERE a.tipo_cliente = b.tipo_cliente and a.sec_cliente = b.sec_cliente and a.tipo_cliente = x.tipo_cliente and a.cod_provincia = c.cod_provincia AND a.sec_cliente = x.sec_cliente LET descrip1 = x.nombre LET de1a30 = 0 LET de31a45 = 0 LET de46a60 = 0 LET masde60 = 0 LET total_saldo = 0 IF descrip1 IS NULL THEN LET descrip1 = "Cliente no Existe. Verifique." END IF LET nombre_c = x.nombre LET nacionalidad = "DOMINICANA" # LET otra_dir = SPACES(80) # LET ciudad_otra = SPACES(20) LET numero_cta = x.tipo_cliente USING "&&",x.sec_cliente using "&&&&&" LET unidad_moneda = " " # BUSCA EL TIPO DE CLIENTES LET tipo_cta = null SELECT a.descripcion INTO tipo_cta FROM vetb00061 a,vetb00060 b WHERE b.tipo_cliente = x.tipo_cliente and a.ventas = b.ventas LET status_cta = "ACTIVA" # LET comentarios = SPACES(20) LET fecha_apertura = fecha_a LET fecha_apertura = fecha_apertura[1,4],fecha_apertura[6,7],fecha_apertura[9,10] LET fecha_apertura = fecha_apertura CLIPPED LET credito_alto = "0" LET numero_cuotas = "0" LET monto_cuota = "0" LET telefono_ca = telefono_ca1[1,3],telefono_ca1[5,8] LET telefono_trab = telefono_trab1[1,3],telefono_trab1[5,8] # LET fecha_ult_act CHAR(10), ON EVERY ROW IF de1a30 IS NULL THEN LET de1a30 = 0 END IF IF de31a45 IS NULL THEN LET de31a45 = 0 END IF IF de46a60 IS NULL THEN LET de46a60 = 0 END IF IF masde60 IS NULL THEN LET masde60 = 0 END IF IF mas120 IS NULL THEN LET mas120 = 0 END IF IF total_saldo IS NULL THEN LET total_saldo = 0 END IF IF x.fecha_factura IS NULL THEN LET x.fecha_factura = 0 END IF LET dias = corte - x.fecha_factura IF dias <= 0 THEN LET de1a30 = de1a30 + x.pendiente LET total_saldo = total_saldo + x.pendiente END IF IF dias > 0 AND dias < 31 THEN LET de31a45 = de31a45 + x.pendiente LET total_saldo = total_saldo + x.pendiente END IF IF dias >=31 AND dias < 61 THEN LET de46a60 = de46a60 + x.pendiente LET total_saldo = total_saldo + x.pendiente END IF IF dias >= 61 AND dias < 91 THEN LET masde60 = masde60 + x.pendiente LET total_saldo = total_saldo + x.pendiente END IF IF dias >= 91 THEN LET mas120 = mas120 + x.pendiente LET total_saldo = total_saldo + x.pendiente END IF AFTER GROUP OF x.cliente # IF cero = "N" THEN ESTO SE COLOCO EN COMENTARIO PARA EXTRAER TODOS LOS CLIENTES AUNQUE SU SALDO SEA CERO # IF total_saldo != 0 THEN IF total_saldo != 0 THEN LET status_cta = "ACTIVA" ELSE LET status_cta = "CANCELADA" END IF IF limite_cr IS NULL THEN LET limite_cr = 0 END IF IF mas120 <0 THEN LET mas120 = 0 END IF IF de1a30 <0 THEN LET de1a30 =0 END IF IF de31a45 < 0 THEN LET de31a45 =0 END IF IF de46a60 < 0 THEN LET de46a60 =0 END IF LET balance_act = total_saldo {LET monto_atraso = mas120 LET s1_29 = de1a30 LET s30_59 = de31a45 LET s60_89 = de46a60 LET s90_119 = masde60 LET s120_149 = mas120 LET s150_179 = 0 LET smas180 = 0 } LET monto_atraso = 0 LET s1_29 = 0 LET s30_59 = 0 LET s60_89 = 0 LET s90_119 = 0 LET s120_149 = 0 LET s150_179 = 0 LET smas180 = 0 SELECT MAX(a.fecha_orig) INTO fecha_ult_a FROM cctb00001 a WHERE a.tipo_cliente = x.tipo_cliente AND a.sec_cliente = x.sec_cliente AND a.fecha_orig <= fecha_corte # DATA CREDITO IF fecha_a <= fecha_corte THEN IF tipo_credito = 1 THEN IF balance_Act >= 0 THEN PRINT "[E]", "[",nombre_c,"]", "[",numero_rnc,"]", "[",15 SPACES,"]", "[",sexo,"]", "[",9 SPACES,"]", "[",cedula_n,"]", "[",11 SPACES,"]", "[",10 SPACES,"]", "[",nacionalidad,"]", "[",11 SPACES,"]", "[",10 spaces,"]", "[",20 SPACES,"]", "[",15 SPACES,"]", "["," ","]", "[",2 SPACES,"]", "[",40 SPACES,"]", "[",11 SPACES,"]", "[",telefono_ca ,"]", "[",telefono_trab ,"]", "[",direccion_re,"]", "[",cuidad_re,"]", "[",80 SPACES,"]", "[",20 SPACES,"]", "[",numero_cta,"]", "[",unidad_moneda,"]", "[",tipo_cta,"]", "[",20 SPACES,"]", "[",20 SPACES,"]", "[",status_cta,"]", "[",20 SPACES,"]", "[",fecha_apertura[1,10],"]", "[",limite_cr USING "&&&&&&&&&&","]", "[","0000000000","]", "[",3 SPACES,"]", "[","0000000000","]", "[",fecha_ult_a USING "YYYYMMDD","]", "[",balance_act USING "-&&&&&&&&&","]", "[",monto_atraso USING "-&&&&&&&&&","]", "[",s1_29 USING "-&&&&&&&&&","]", "[",s30_59 USING "-&&&&&&&&","]", "[",s60_89 USING "-&&&&&&&&&","]", "[",s90_119 USING "-&&&&&&&&&","]", "[",s120_149 USING "-&&&&&&&&&","]", "[",s150_179 USING "-&&&&&&&&&", "]", "[",smas180 USING "-&&&&&&&&&","]", "[",30 SPACES,"]", "[",100 SPACES,"]" END IF END IF # TRANSUNION IF tipo_credito = 2 THEN IF balance_Act >= 0 THEN IF sexo = "1" THEN LET pid = "E" ELSE LET pid = "I" END IF PRINT "pid","[",numero_cta,"]", "[",nombre_c,"]", "[ ]", "[",numero_rnc,"]", "[",15 SPACES,"]", "[",nombre_c,"]", "[ ]", "[",9 SPACES,"]", "[",numero_rnc,"]", "[",telefono_ca1,"]", "[",telefono_trab1,"]", "[",celular,"]", "[",11 spaces,"]", "[",11 spaces,"]", "[",11 spaces,"]", "[",direccion_re,"]", "[",10 spaces,"]", # Esquina "[",10 spaces,"]", #numero "[",10 spaces,"]", #edificio "[",10 spaces,"]", #piso "[",10 spaces,"]", #apartamento "[",10 spaces,"]", "[",10 spaces,"]", "[",10 spaces,"]", "[",cuidad_re,"]", "[",10 spaces,"]", "[",10 spaces,"]", "[",10 spaces,"]", "[",10 spaces,"]", "[",10 spaces,"]", "[",10 spaces,"]", "[",10 spaces,"]", "[",10 spaces,"]", "[",10 spaces,"]", "[",10 spaces,"]", #provincia o monicipio de la direccion 2 "[",10 spaces,"]", "[",unidad_moneda,"]", "[",tipo_cta,"]", "[",20 SPACES,"]", "[",20 SPACES,"]", "[",status_cta,"]", "[",20 SPACES,"]", "[",fecha_apertura[1,10],"]", "[",limite_cr USING "&&&&&&&&&&","]", "[","0000000000","]", "[",3 SPACES,"]", "[","0000000000","]", "[",fecha_ult_a USING "YYYYMMDD","]", "["," ","]", "[",balance_act USING "-&&&&&&&&&","]", "[",monto_atraso USING "-&&&&&&&&&","]", "[",s1_29 USING "-&&&&&&&&&","]", "[",s30_59 USING "-&&&&&&&&","]", "[",s60_89 USING "-&&&&&&&&&","]", "[",s90_119 USING "-&&&&&&&&&","]", "[",s120_149 USING "-&&&&&&&&&","]", "[",s150_179 USING "-&&&&&&&&&", "]", "[",smas180 USING "-&&&&&&&&&","]", "[",30 SPACES,"]", "[",100 SPACES,"]" END IF END IF END IF IF de1a30 > 0 THEN LET ct30 = ct30 + de1a30 END IF IF de31a45 > 0 THEN LET ct45 = ct45 + de31a45 END IF IF de46a60 > 0 THEN LET ct60 = ct60 + de46a60 END IF IF masde60 > 0 THEN LET ctm60 = ctm60 + masde60 END IF IF mas120 > 0 THEN LET ctm120 = ctm120 + mas120 END IF IF total_saldo > 0 THEN LET ctsaldo = ctsaldo + total_saldo END IF IF tm120 IS NULL THEN LET tm120 = 0 LET ctm120 = 0 END IF IF ctm120 IS NULL THEN LET ctm120 = 0 END IF IF t30 IS NULL THEN LET t30 = 0 LET ct30 = 0 END IF IF ct30 IS NULL THEN LET ct30 = 0 END IF IF t45 IS NULL THEN LET t45 = 0 LET ct45 = 0 END IF IF ct45 IS NULL THEN LET ct45 = 0 END IF IF t60 IS NULL THEN LET t60 = 0 LET ct60 = 0 END IF IF ct60 IS NULL THEN LET ct60 = 0 END IF IF tm60 IS NULL THEN LET tm60 = 0 LET ctm60 = 0 END IF IF ctm60 IS NULL THEN LET ctm60 = 0 END IF IF tsaldo IS NULL THEN LET tsaldo = 0 LET ctsaldo = 0 END IF IF ctsaldo IS NULL THEN LET ctsaldo = 0 END IF LET t30 = t30 + de1a30 LET t45 = t45 + de31a45 LET t60 = t60 + de46a60 LET tm60 = tm60 + masde60 LET tm120 = tm120 + mas120 LET tsaldo = tsaldo + total_saldo LET de1a30 = 0 LET de31a45 = 0 LET de46a60 = 0 LET masde60 = 0 LET mas120 = 0 LET total_saldo = 0 END REPORT FUNCTION configureoutput3(tipo_file) DEFINE tipo_file CHAR(3) IF NOT fgl_report_loadCurrentSettings("ccprrp003.4rp") THEN RETURN NULL END IF CALL fgl_report_setPageMargins("0.5cm","0.5cm","0.5cm","0.5cm") CALL fgl_report_selectDevice(tipo_file) CALL fgl_report_configurexlsxdevice(null,null,null,false,false,null,1) CALL fgl_report_selectPreview(TRUE) RETURN fgl_report_commitCurrentSettings() END FUNCTION REPORT estado3(x) DEFINE x RECORD grupo SMALLINT, empresa STRING, titulo STRING, cliente STRING, c1, c2, c3, c4, c5, total DECIMAL(14,2), pct DECIMAL(8,2) END RECORD DEFINE t30, t45, t60, tm60, tm120, tsaldo DECIMAL(14,2) DEFINE ct30, ct45, ct60, ctm60, ctm120, ctsaldo DECIMAL(14,2) ORDER EXTERNAL BY x.grupo FORMAT BEFORE GROUP OF x.grupo LET t30 = 0 LET t45 = 0 LET t60 = 0 LET tm60 = 0 LET tm120 = 0 LET tsaldo = 0 LET ct30 = 0 LET ct45 = 0 LET ct60 = 0 LET ctm60 = 0 LET ctm120 = 0 LET ctsaldo = 0 PRINTX x.empresa, x.titulo ON EVERY ROW LET t30 = t30 + x.c1 LET t45 = t45 + x.c2 LET t60 = t60 + x.c3 LET tm60 = tm60 + x.c4 LET tm120 = tm120 + x.c5 LET tsaldo = tsaldo + x.total IF x.c1 > 0 THEN LET ct30 = ct30 + x.c1 END IF IF x.c2 > 0 THEN LET ct45 = ct45 + x.c2 END IF IF x.c3 > 0 THEN LET ct60 = ct60 + x.c3 END IF IF x.c4 > 0 THEN LET ctm60 = ctm60 + x.c4 END IF IF x.c5 > 0 THEN LET ctm120 = ctm120 + x.c5 END IF IF x.total > 0 THEN LET ctsaldo = ctsaldo + x.total END IF PRINTX x.cliente, x.c1, x.c2, x.c3, x.c4, x.c5, x.total, x.pct AFTER GROUP OF x.grupo LET tot_gen2.total1 = t30 LET tot_gen2.total2 = t45 LET tot_gen2.total3 = t60 LET tot_gen2.total4 = tm60 LET tot_gen2.total5 = tsaldo PRINTX t30, t45, t60, tm60, tm120, tsaldo, ct30, ct45, ct60, ctm60, ctm120, ctsaldo END REPORT