Files
MBS/PROYECTO/ccdir/ccprrp003.4gl
T
jpegueroandClaude Sonnet 5.5 539af7f912 CxC: ccprrp018/003/001 con reporte Genero, ccprrp052 y ccprmt002 corregidos
- ccprrp018: agrega MAIN, GROUP BY por nombre, y reemplaza la salida Excel/DDE
  (G:\ESTADO.XLS, DEL G:\ESTADOS) por un reporte Genero (ccprrp018.4rp); carga con
  un solo INSERT...SELECT en tabla temporal.
- ccprrp003: reemplaza el REPORT de texto con codigos de impresora por
  ccprrp003.4rp; agrega por cliente en una consulta (DATEDIFF, mismas reglas).
- ccprrp001: agrega MAIN, GROUP BY por nombre, reporte Genero (ccprrp001.4rp) y
  registra el formulario ccfmrp001 en FORMULARIOS_CC (faltaba, -1110).
- ccprrp052: la validacion del campo Orden estaba al reves.
- ccprmt002: cctb00002.fecha es datetime en SQL Server; el formulario, la variable
  global relacion (ccprgb000) y el CONSTRUCT la manejan como DATE; corrige que
  eLiminar mostrara exito sin actualizar filas.
- mbsERP.4pw: registra los .4rp, libgre y ccfmrp001 (sin credenciales).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-07 15:23:22 -04:00

1204 lines
41 KiB
Plaintext

{
-------------------------------------------------------------------------------
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