diff --git a/PROYECTO/bin/ccprrp001.4rp b/PROYECTO/bin/ccprrp001.4rp
new file mode 100644
index 0000000..90bf586
--- /dev/null
+++ b/PROYECTO/bin/ccprrp001.4rp
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PROYECTO/bin/ccprrp003.4rp b/PROYECTO/bin/ccprrp003.4rp
new file mode 100644
index 0000000..f51ce1e
--- /dev/null
+++ b/PROYECTO/bin/ccprrp003.4rp
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PROYECTO/bin/ccprrp018.4rp b/PROYECTO/bin/ccprrp018.4rp
new file mode 100644
index 0000000..1bf88fc
--- /dev/null
+++ b/PROYECTO/bin/ccprrp018.4rp
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PROYECTO/ccdir/ccfmmt002.per b/PROYECTO/ccdir/ccfmmt002.per
index f2e6af3..01174bb 100644
--- a/PROYECTO/ccdir/ccfmmt002.per
+++ b/PROYECTO/ccdir/ccfmmt002.per
@@ -25,7 +25,7 @@ end
tables
cctb00002
attributes
-fe = cctb00002.fecha,format = "dd/mm/yyyy";
+fe = formonly.fecha TYPE DATE,format = "dd/mm/yyyy";
f001 = cctb00002.sec_vend,autonext,comments =
"Digite Codigo Vendedor o Presione Ctrl-W Para Busqueda";
p = formonly.nombre_emp,noentry;
diff --git a/PROYECTO/ccdir/ccprgb000.4gl b/PROYECTO/ccdir/ccprgb000.4gl
index f0330ce..71cd1f9 100644
--- a/PROYECTO/ccdir/ccprgb000.4gl
+++ b/PROYECTO/ccdir/ccprgb000.4gl
@@ -188,7 +188,19 @@ GLOBALS
descrip6 CHAR(65)
END RECORD
- DEFINE relacion RECORD LIKE cctb00002.*
+ -- G6: cctb00002.fecha es datetime en SQL Server; en el programa se maneja como DATE
+ DEFINE relacion RECORD
+ fecha DATE,
+ cod_vend LIKE cctb00002.cod_vend,
+ sec_vend LIKE cctb00002.sec_vend,
+ sec_de LIKE cctb00002.sec_de,
+ sec_a LIKE cctb00002.sec_a,
+ status_t LIKE cctb00002.status_t,
+ us_crea LIKE cctb00002.us_crea,
+ fech_crea LIKE cctb00002.fech_crea,
+ us_mod LIKE cctb00002.us_mod,
+ fech_mod LIKE cctb00002.fech_mod
+ END RECORD
DEFINE rec_pago RECORD LIKE cctb00001.*
DEFINE cliente_bas RECORD LIKE vetb00004.*
DEFINE p_companias RECORD LIKE companias.*
diff --git a/PROYECTO/ccdir/ccprmt002.4gl b/PROYECTO/ccdir/ccprmt002.4gl
index a3c2fc6..d270b6c 100644
--- a/PROYECTO/ccdir/ccprmt002.4gl
+++ b/PROYECTO/ccdir/ccprmt002.4gl
@@ -235,10 +235,11 @@ DEFINE hoy CHAR(10)
END FUNCTION
FUNCTION ccpcmf002()
+ DEFINE ult_rec INTEGER
## Aqui se prepara para la captura del criterio de seleccion
#WHENEVER ERROR CONTINUE
CONSTRUCT criterio ON fecha,sec_vend,sec_de,sec_a
- FROM cctb00002.fecha,cctb00002.sec_vend,
+ FROM formonly.fecha,cctb00002.sec_vend,
cctb00002.sec_de,cctb00002.sec_a
IF int_flag THEN
@@ -433,8 +434,8 @@ FUNCTION ccpcmf002()
fecha = relacion.fecha
- LET relacion.sec_de = relacion.sec_de - 1
- UPDATE cctb00003 SET ult_recibo = relacion.sec_de
+ LET ult_rec = relacion.sec_de - 1
+ UPDATE cctb00003 SET ult_recibo = ult_rec
WHERE sec_vend = relacion.sec_vend AND
tipo_doc = "PG"
@@ -456,8 +457,11 @@ FUNCTION ccpcmf002()
WHERE sec_vend = relacion.sec_vend and
fecha = relacion.fecha and
sec_de = relacion.sec_de
-
- LET numero_msg = 39
+ IF sqlca.sqlerrd[3] = 0 THEN
+ LET numero_msg = 3
+ ELSE
+ LET numero_msg = 39
+ END IF
CALL msg(numero_msg)
COMMAND "Retornar"
diff --git a/PROYECTO/ccdir/ccprrp001.4gl b/PROYECTO/ccdir/ccprrp001.4gl
index 9092706..dcbf2b4 100644
--- a/PROYECTO/ccdir/ccprrp001.4gl
+++ b/PROYECTO/ccdir/ccprrp001.4gl
@@ -55,8 +55,22 @@ GLOBALS "ccprgb000.4gl"
apellido CHAR(30)
END RECORD
+MAIN
+ DEFER INTERRUPT
+ CALL ARG_VAL(1) RETURNING usuarios
+ CALL ARG_VAL(2) RETURNING clave
+
+ CONNECT TO "smarmotech" USER usuarios USING clave
+ SELECT * INTO p_companias.* FROM companias
+
+ CALL ccprrp001()
+END MAIN
+
FUNCTION ccprrp001()
DEFINE salir2,salir,salir1 CHAR(1)
+DEFINE r_output STRING
+DEFINE handler om.SaxDocumentHandler
+DEFINE hay SMALLINT
# WHENEVER ERROR CONTINUE
OPTIONS
@@ -66,7 +80,7 @@ DEFINE salir2,salir,salir1 CHAR(1)
OPEN FORM ccfmrp001 FROM "ccfmrp001"
DISPLAY FORM ccfmrp001
- CALL pantalla()
+ #CALL pantalla()
DISPLAY "ccprrp001" AT 4,3
DISPLAY "Clientes sin Ventas" AT 6,30
@@ -121,7 +135,7 @@ DEFINE salir2,salir,salir1 CHAR(1)
"WHERE d.fecha_orig <= ? AND d.tipo_cliente = a.tipo_cliente AND ",
criterio CLIPPED," AND d.status_t IS NULL AND d.sec_cliente= a.sec_cliente ",
" AND d.tipo_doc[1] = 'F' AND a.status_t is null AND ",
- criterio clipped, " GROUP BY 1,2,3"
+ criterio clipped, " GROUP BY d.tipo_cliente,d.sec_cliente,a.nombre"
DISPLAY "<< Buscando Factura del Cliente... Espere Por Favor. >>" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
@@ -130,7 +144,16 @@ DEFINE salir2,salir,salir1 CHAR(1)
DECLARE busca CURSOR FOR comando
OPEN busca USING fecha_corte
- START REPORT ventas TO "C:\\archivo"
+ LET r_output = getPreviewDevice()
+ IF NOT fgl_report_loadCurrentSettings("ccprrp001.4rp") THEN
+ CALL fgl_winmessage("ERROR", "No se pudo cargar ccprrp001.4rp", "stop")
+ RETURN
+ END IF
+ CALL fgl_report_selectDevice(r_output)
+ CALL fgl_report_selectPreview(TRUE)
+ LET handler = fgl_report_commitCurrentSettings()
+ START REPORT ventas TO XML HANDLER handler
+ LET hay = 0
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
@@ -199,12 +222,15 @@ IF (fecha_corte - vendcli.fecha) >= dia_minimo AND
LET vendcli.balance = balancli.balance - valor_de
OUTPUT TO REPORT ventas(vendcli.*,fecha_corte)
+ LET hay = 1
END IF
END WHILE
- FINISH REPORT ventas
- CLEAR SCREEN
-RUN "type C:\\archivo > %USPRINT%" END FUNCTION
+ FINISH REPORT ventas
+ IF NOT hay THEN
+ CALL fgl_winmessage("INFO", "NO EXISTEN REGISTROS PARA ESTOS PARAMETROS", "info")
+ END IF
+END FUNCTION
REPORT ventas(x,fecha5)
DEFINE x RECORD
@@ -217,112 +243,39 @@ REPORT ventas(x,fecha5)
valor DECIMAL(12,2),
balance DECIMAL(12,2)
END RECORD
-
DEFINE nombre1,apellido CHAR(30)
- DEFINE dias_c INTEGER
DEFINE fecha5 DATE
- DEFINE balance, monto_factura DECIMAL(10,2)
- DEFINE descrip_zone CHAR(30)
- 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 normal CHAR(2)
- DEFINE hora CHAR(5)
- DEFINE fecha_factura DATE
- DEFINE total_monto_zona,total_gral_monto_zona,monto DECIMAL(12,2)
-
- OUTPUT
- TOP MARGIN 0
- LEFT MARGIN 0
- BOTTOM MARGIN 2
+ DEFINE empresa, titulo, vendedor, cli, fec STRING
+ DEFINE dias_c INTEGER
ORDER BY x.sec_vend,x.sec_cliente
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 doce = ASCII 27, ASCII 77
- LET normal = ASCII 27, ASCII 80
- LET hora = time
-
- IF total_gral_monto_zona is null THEN
- LET total_gral_monto_zona = 0
- END IF
-
- LET lj = (96 - LENGTH(p_companias.nombre CLIPPED))/2
- PRINT COLUMN 1, doce ,negrillas_on
- PRINT COLUMN 1, "ccprrp001",
- COLUMN lj, p_companias.nombre,
- COLUMN 89, "Pag. ",pageno using "###"
- PRINT COLUMN 32, "Sistema de Cuentas por Cobrar",
- COLUMN 89, today using "dd/mm/yyyy"
-
- IF dia_maximo != 3650 THEN
- PRINT COLUMN 30, "Clientes sin Ventas ",
- "de ",dia_minimo using "<<<",
- " a ",dia_maximo using "<<<",
- " dias",
- COLUMN 92, hora
- ELSE
- PRINT COLUMN 29, "Clientes sin Ventas a mas de ",
- dia_minimo using "<<"," dias",
- COLUMN 92, hora
- END IF
-
- PRINT COLUMN 41, "Al ", fecha5 using "dd/mm/yyyy"
- SKIP 1 LINES
-
- PRINT COLUMN 1, "--------------------------------------------------",
- "----------------------------------------------"
-
- PRINT COLUMN 44, "|------ULTIMA VENTA------|"
- PRINT COLUMN 6, "Cliente",
- COLUMN 44, "Factura",
- COLUMN 54, "Fecha",
- COLUMN 65, "Valor",
- COLUMN 74, "No.dias",
- COLUMN 86, "Balance"
-
- PRINT COLUMN 1, "--------------------------------------------------",
- "----------------------------------------------"
-# , negrillas_off
-
- BEFORE GROUP OF x.sec_vend
- SKIP 1 LINE
- SELECT nom1_emp,apell1_emp INTO nombre1,apellido
+ BEFORE GROUP OF x.sec_vend
+ INITIALIZE nombre1, apellido TO NULL
+ SELECT nom1_emp,apell1_emp INTO nombre1,apellido
FROM adtb00003 WHERE status_t IS NULL AND num_emp = x.sec_vend
- LET descrip5 = NULL
- LET descrip5 = nombre1 CLIPPED," ",apellido CLIPPED
-
- IF descrip5 IS NULL THEN
- LET descrip5 = "Vendedor no Existe. Verifique."
- END IF
-
- PRINT COLUMN 1," Vendedor : ",x.sec_vend using "&&&&"," ", descrip5
- clipped
+ LET descrip5 = NULL
+ LET descrip5 = nombre1 CLIPPED," ",apellido CLIPPED
+ IF descrip5 IS NULL OR LENGTH(descrip5 CLIPPED) = 0 THEN
+ LET descrip5 = "Vendedor no Existe. Verifique."
+ END IF
+ LET vendedor = "Vendedor : ", x.sec_vend USING "&&&&", " ", descrip5 CLIPPED
+ LET empresa = p_companias.nombre CLIPPED
+ IF dia_maximo != 3650 THEN
+ LET titulo = "Clientes sin Ventas de ", dia_minimo USING "<<<<<",
+ " a ", dia_maximo USING "<<<<<", " dias Al ",
+ fecha5 USING "dd/mm/yyyy"
+ ELSE
+ LET titulo = "Clientes sin Ventas a mas de ", dia_minimo USING "<<<<<",
+ " dias Al ", fecha5 USING "dd/mm/yyyy"
+ END IF
+ PRINTX empresa, titulo, vendedor
ON EVERY ROW
-
- PRINT COLUMN 4, x.tipo_cliente using "&&","-",
- COLUMN 7, x.sec_cliente using "&&&&",
- COLUMN 12, x.nombre,
- COLUMN 44, x.factura using "######",
- COLUMN 52, x.fecha using "dd/mm/yyyy",
- COLUMN 61, x.valor using "$,$$$,$$$.$$",
- COLUMN 73, fecha5 - x.fecha using "###,###",
- COLUMN 82, x.balance using "---,---,---.##"
-
- AFTER GROUP OF x.sec_vend
- SKIP TO TOP OF PAGE
-
- END REPORT
-
+ LET cli = x.tipo_cliente USING "&&", "-", x.sec_cliente USING "&&&&&",
+ " ", x.nombre CLIPPED
+ LET fec = x.fecha USING "dd/mm/yyyy"
+ LET dias_c = fecha5 - x.fecha
+ PRINTX cli, x.factura, fec, x.valor, dias_c, x.balance
+END REPORT
diff --git a/PROYECTO/ccdir/ccprrp003.4gl b/PROYECTO/ccdir/ccprrp003.4gl
index 44b6200..d1315ae 100644
--- a/PROYECTO/ccdir/ccprrp003.4gl
+++ b/PROYECTO/ccdir/ccprrp003.4gl
@@ -44,6 +44,20 @@ GLOBALS "ccprgb000.4gl"
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
@@ -157,8 +171,20 @@ LABEL atras:
START REPORT reporte3 TO archivo
}
CALL seleccionarsalida() RETURNING r_output
- CALL configureoutput(r_output) RETURNING handler
- START REPORT reporte3 TO XML HANDLER HANDLER
+ 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"
@@ -201,7 +227,11 @@ LET selec1 =
IF progreso > 50 THEN
LET progreso = 50
END IF
- OUTPUT TO REPORT reporte3(doccli.*,tipo_venta,fecha_corte,valor_total)
+ 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
@@ -250,7 +280,11 @@ LET selec3 =
LET progreso = 95
END IF
- OUTPUT TO REPORT reporte3(doccli.*,tipo_venta,fecha_corte,valor_total)
+ 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
@@ -259,7 +293,46 @@ LET selec3 =
LET progreso = 100
DISPLAY progreso to progreso
CALL ui.Interface.refresh()
- FINISH REPORT reporte3
+ 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] )
@@ -1061,4 +1134,70 @@ END FUNCTION
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
diff --git a/PROYECTO/ccdir/ccprrp018.4gl b/PROYECTO/ccdir/ccprrp018.4gl
index e74eaba..1f81ce9 100644
--- a/PROYECTO/ccdir/ccprrp018.4gl
+++ b/PROYECTO/ccdir/ccprrp018.4gl
@@ -62,6 +62,16 @@ GLOBALS "ccprgb000.4gl"
END RECORD
DEFINE fecha3 DATE
+MAIN
+ DEFER INTERRUPT
+ CALL ARG_VAL(1) RETURNING usuarios
+ CALL ARG_VAL(2) RETURNING clave
+
+ CONNECT TO "smarmotech" USER usuarios USING clave
+
+ CALL ccprrp018()
+END MAIN
+
FUNCTION ccprrp018()
# WHENEVER ERROR CONTINUE
@@ -75,7 +85,7 @@ FUNCTION ccprrp018()
OPEN FORM ccfmrp018 FROM "ccfmrp018"
DISPLAY FORM ccfmrp018
- CALL pantalla()
+ #CALL pantalla()
DISPLAY "ccprrp018" AT 4,3 ATTRIBUTE(RED)
DISPLAY "Estado Cuentas Pendiente De Cobros" AT 6,21 ATTRIBUTE(BLACK)
@@ -126,7 +136,7 @@ LET selec5 =
" a.tipo_cliente = c.tipo_cliente AND ",
" a.sec_cliente = c.sec_cliente AND ",
#" a.sec_cliente = b.sec_cliente AND a.tipo_doc in ('FE','FT','NC') AND ",
- criterio CLIPPED," GROUP BY 1,2,3 HAVING SUM(a.valor+a.monto_desc) <> 0 ",
+ criterio CLIPPED," GROUP BY a.tipo_cliente,a.sec_cliente,a.aplica_a HAVING SUM(a.valor+a.monto_desc) <> 0 ",
"ORDER BY 3 "
DISPLAY "<< Buscando los Movimientos del Rango >>" AT 20,14
@@ -134,7 +144,7 @@ LET selec5 =
PREPARE movi FROM selec5
DECLARE movtos_cli CURSOR FOR movi
- OPEN movtos_cli USING fecha_final
+ #OPEN movtos_cli USING fecha_final -- G6: e_ccrp18 carga todo con un INSERT ... SELECT
LET destino = "E"
IF destino = "E" THEN
CALL e_ccrp18()
@@ -496,370 +506,183 @@ END IF
END REPORT
}
+{ G6: la salida original llenaba una plantilla de Excel por DDE (G:\ESTADO.XLS) y
+ copiaba un archivo por cliente a G:\ESTADOS. Ahora se emite un reporte de Genero
+ (ccprrp018.4rp): PDF en el navegador, visor en GDC. }
FUNCTION e_ccrp18()
- DEFINE primera,imprime_ana,imprime_cliente CHAR(1),
- cliente CHAR(70),
- codigo_g,codigo_ant,codigo_act CHAR(6),
- ret CHAR(30),
- ejecuta,localiza CHAR(80),
- documento CHAR(9)
-
---# CALL fgl_init4js()
+ DEFINE codigo_act, codigo_ant STRING
+ DEFINE handler om.SaxDocumentHandler
+ DEFINE r_output STRING
+ DEFINE hay SMALLINT
+ DEFINE sql_ins STRING
+ DEFINE fila RECORD
+ codigo STRING,
+ cliente STRING,
+ direccion STRING,
+ limite STRING,
+ zona STRING,
+ corte STRING,
+ documento STRING,
+ fecha STRING,
+ valor DECIMAL(12,2),
+ balance DECIMAL(12,2),
+ dias INTEGER
+ END RECORD
---# LET archivo = NULL
---# LET filename = NULL
---# LET filename = FGL_GETENV("USPROGRAM")
+ CREATE TEMP TABLE estado
+ (
+ tipo_cliente SMALLINT,
+ sec_cliente SMALLINT,
+ aplica_a INTEGER,
+ fecha_venc DATE,
+ valor DECIMAL(12,2),
+ tipo_doc CHAR(2),
+ fecha_min DATE
+ )
---# LET archivo = "G:\\\\ESTADO.XLS"
---# LET sysos = FGL_GETENV("OS")
+ LET sql_ins =
+ "INSERT INTO estado (tipo_cliente,sec_cliente,aplica_a,fecha_venc,valor,tipo_doc,fecha_min) ",
+ "SELECT g.tipo_cliente,g.sec_cliente,g.aplica_a,d.fmax,g.valor,d.tipo_doc,d.fmin FROM ( ",
+ " SELECT a.tipo_cliente,a.sec_cliente,a.aplica_a,SUM(a.valor+a.monto_desc) AS valor ",
+ " FROM cctb00001 a,vetb00004 c ",
+ " WHERE a.status_t IS NULL AND a.fecha_orig <= ? AND ",
+ " a.num_doc IS NOT NULL AND a.tipo_doc != 'PC' AND ",
+ " a.tipo_cliente = c.tipo_cliente AND ",
+ " a.sec_cliente = c.sec_cliente AND ",
+ criterio CLIPPED,
+ " GROUP BY a.tipo_cliente,a.sec_cliente,a.aplica_a ",
+ " HAVING SUM(a.valor+a.monto_desc) <> 0) g ",
+ "LEFT JOIN (SELECT num_doc,MIN(tipo_doc) AS tipo_doc,MIN(fecha_orig) AS fmin, ",
+ " MAX(fecha_orig) AS fmax ",
+ " FROM cctb00001 ",
+ " WHERE status_t IS NULL AND aplica_a = num_doc ",
+ " GROUP BY num_doc) d ON d.num_doc = g.aplica_a"
+ PREPARE p_ins18 FROM sql_ins
+ EXECUTE p_ins18 USING fecha_final
---# IF sysos = "Windows_NT" THEN
---# LET filename = filename CLIPPED," G:\\\\ESTADO.XLS"
---# LET localiza = "G:\\ESTADOS\\"
-
---# LET ejecuta = "DEL /S /Q ",localiza CLIPPED,"*.*"
- RUN ejecuta
- LET ejecuta = NULL
---# ELSE
---# LET filename = "C:\\\\ARCHIV~1\\\\MICROS~1\\\\OFFICE\\\\EXCEL.EXE G:\\\\ESTADO.XLS"
---# LET localiza = "G:\\ESTADOS\\"
---# LET archivo = "G:\\\\ESTADO.XLS"
+ LET r_output = getPreviewDevice()
+ IF NOT fgl_report_loadCurrentSettings("ccprrp018.4rp") THEN
+ CALL fgl_winmessage("ERROR", "No se pudo cargar ccprrp018.4rp", "stop")
+ DROP TABLE estado
+ RETURN
+ END IF
+ CALL fgl_report_selectDevice(r_output)
+ CALL fgl_report_selectPreview(TRUE)
+ LET handler = fgl_report_commitCurrentSettings()
+ START REPORT estado18 TO XML HANDLER handler
---# LET ejecuta = "DEL ",localiza CLIPPED,"*.xls"
- RUN ejecuta
- LET ejecuta = NULL
---# END IF
+ DECLARE buscate CURSOR FOR
+ SELECT a.tipo_cliente, a.sec_cliente, a.aplica_a, a.valor,
+ a.fecha_venc, a.tipo_doc, a.fecha_min
+ FROM estado a
+ ORDER BY a.tipo_cliente, a.sec_cliente, a.aplica_a
-
-# CREACION TABLA TEMPORAL
-CREATE TABLE estado
-(
- tipo_cliente SMALLINT,
- sec_cliente SMALLINT,
- aplica_a INTEGER,
- fecha_venc DATE,
- valor DECIMAL(12,2)
-)
-
-
- LET primera = "S"
- LET salir = "N"
- WHILE salir != "S"
- FETCH movtos_cli INTO movtos.*
-
- 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 prima IS NOT NULL THEN
- LET movtos.valor = movtos.valor * prima
- END IF
-
- SELECT MAX(a.fecha_orig)
- INTO fecha3
- FROM cctb00001 a
- WHERE a.num_doc = movtos.aplica_a AND
- a.status_t IS NULL AND
- a.aplica_a = a.num_doc
-
- INSERT INTO estado VALUES (movtos.tipo_cliente,movtos.sec_cliente,
- movtos.aplica_a,fecha3,movtos.valor)
- END WHILE
-
---# IF winexec(filename) THEN
-
---# IF DDEconnect("EXCEL",archivo) THEN
-
---# LET cels = "R",6 USING "<<","C3"
---# IF DDEpoke("EXCEL",archivo,cels,fecha_final) THEN
---# ELSE
---# LET numero_msg =391
---# CALL msg(numero_msg)
---# END IF
-
- DECLARE buscate CURSOR FOR
- SELECT a.tipo_cliente,a.sec_cliente,a.aplica_a,SUM(a.valor) FROM estado a
- GROUP BY 1,2,3
- ORDER BY 1,2
-
- LET primera = "S"
- LET cnt = 16
+ LET hay = 0
+ LET codigo_ant = NULL
LET balance = 0
- LET codigo_ant = "1"
- LET codigo_Act = NULL
- FOREACH buscate INTO movtos.*
+ FOREACH buscate INTO movtos.*, fecha3, tipo, fecha2
+ LET hay = 1
+ IF prima IS NOT NULL THEN
+ LET movtos.valor = movtos.valor * prima
+ END IF
+ LET codigo_act = movtos.tipo_cliente USING "##", "-",
+ movtos.sec_cliente USING "<<<<<<<<&"
+ IF codigo_ant IS NULL OR codigo_ant != codigo_act THEN
+ LET codigo_ant = codigo_act
+ LET balance = 0
+ INITIALIZE p_nombre, p_limite_credito, p_zona, p_numero, p_calle,
+ p_casa, ptelefono, pzona, pprovincia, pbarrio,
+ nombre_zona, nombre_p TO NULL
+ SELECT UNIQUE b.nombre, b.limite_credito, b.zona_postal, b.num_rnc,
+ c.calle, c.casa_num, b.telefono, b.cod_zona,
+ b.cod_provincia, c.barrio
+ INTO p_nombre, p_limite_credito, p_zona, p_numero, p_calle, p_casa,
+ ptelefono, pzona, pprovincia, pbarrio
+ FROM vetb00004 b, vetb00005 c
+ WHERE b.tipo_cliente = movtos.tipo_cliente AND
+ b.sec_cliente = movtos.sec_cliente AND
+ b.tipo_cliente = c.tipo_cliente AND
+ b.sec_cliente = c.sec_cliente AND
+ b.status_t IS NULL
+ SELECT a.descrip INTO nombre_zona FROM vetb00008 a
+ WHERE a.cod_zona = pzona
+ SELECT b.nombre_provincia INTO nombre_p
+ FROM vetb00009 a, vetb00020 b
+ WHERE a.cod_zona = pzona AND
+ a.cod_provincia = pprovincia AND
+ b.cod_provincia = a.cod_provincia
+ END IF
- LET codigo_Act = movtos.tipo_cliente USING "##",movtos.sec_cliente USING "&&&&"
- LET imprime_ana = "N"
- IF primera = "S" THEN
- LET codigo_ant = codigo_Act
- END IF
- IF codigo_ant != codigo_act THEN
- LET codigo_ant = codigo_Act
- LET primera = "S"
- LET imprime_ana = "S"
---# LET cels = "R",38 USING "<<","C2"
---# IF DDEpoke("EXCEL",archivo,cels,no_v) THEN
---# ELSE
---# LET numero_msg =391
---# CALL msg(numero_msg)
---# END IF
+ LET balance = balance + movtos.valor
+ LET fila.codigo = codigo_act
+ LET fila.cliente = p_nombre CLIPPED, " (", codigo_act, ")"
+ LET fila.direccion = p_calle CLIPPED, " #", p_casa CLIPPED, ", ",
+ pbarrio CLIPPED, " Tel. ", ptelefono CLIPPED
+ LET fila.limite = "LIMITE: ", p_limite_credito USING "##,###,##&.&&",
+ " RNC: ", p_numero CLIPPED
+ LET fila.zona = nombre_zona CLIPPED, ", ", nombre_p CLIPPED
+ LET fila.corte = "Al ", fecha_final USING "dd/mm/yyyy"
+ LET fila.documento = movtos.aplica_a USING "<<<<<<<<<", "-", tipo CLIPPED
+ LET fila.fecha = fecha2 USING "dd/mm/yyyy"
+ LET fila.valor = movtos.valor
+ LET fila.balance = balance
+ LET fila.dias = (fecha_final - fecha3) - dias2
+ OUTPUT TO REPORT estado18(fila.*)
+ END FOREACH
---# LET cels = "R",38 USING "<<","C3"
---# IF DDEpoke("EXCEL",archivo,cels,v1_30) THEN
---# ELSE
---# LET numero_msg =391
---# CALL msg(numero_msg)
---# END IF
+ FINISH REPORT estado18
+ DROP TABLE estado
---# LET cels = "R",38 USING "<<","C4"
---# IF DDEpoke("EXCEL",archivo,cels,v31_45) THEN
---# ELSE
---# LET numero_msg =391
---# CALL msg(numero_msg)
---# END IF
+ IF NOT hay THEN
+ CALL fgl_winmessage("INFO",
+ "NO EXISTEN REGISTROS PARA ESTOS PARAMETROS", "info")
+ END IF
+END FUNCTION
---# LET cels = "R",38 USING "<<","C5"
---# IF DDEpoke("EXCEL",archivo,cels,v46_60) THEN
---# ELSE
---# LET numero_msg =391
---# CALL msg(numero_msg)
---# END IF
+REPORT estado18(x)
+ DEFINE x RECORD
+ codigo STRING,
+ cliente STRING,
+ direccion STRING,
+ limite STRING,
+ zona STRING,
+ corte STRING,
+ documento STRING,
+ fecha STRING,
+ valor DECIMAL(12,2),
+ balance DECIMAL(12,2),
+ dias INTEGER
+ END RECORD
+ DEFINE nov, d1, d2, d3, d4, total DECIMAL(12,2)
---# LET cels = "R",38 USING "<<","C7"
---# IF DDEpoke("EXCEL",archivo,cels,vm_60) THEN
---# ELSE
---# LET numero_msg =391
---# CALL msg(numero_msg)
---# END IF
+ ORDER EXTERNAL BY x.codigo
---# LET command = "Run(\\\"ESTADO.XLS!SALVAR\\\";FALSE)"
---# CALL DDEExecute ("EXCEL",archivo,command) RETURNING ret
+ FORMAT
+ BEFORE GROUP OF x.codigo
+ LET nov = 0
+ LET d1 = 0
+ LET d2 = 0
+ LET d3 = 0
+ LET d4 = 0
+ LET total = 0
+ PRINTX x.cliente, x.limite, x.direccion, x.zona, x.corte
---# IF sysos = "Windows_NT" THEN
- LET ejecuta = "COPY G:\\ESTADO.XLS G:\\ESTADOS\\",
- codigo_g,".xls"
---# ELSE
- LET ejecuta = "COPY G:\\ESTADO.XLS G:\\ESTADOS\\",
- codigo_g,".xls"
---# END IF
- RUN ejecuta
-
---# LET command = "Run(\\\"ESTADO.XLS!LIMPIAR\\\";FALSE)"
---# CALL DDEExecute ("EXCEL",archivo,command) RETURNING ret
-
- LET cnt = 16
---# END IF
-
---# IF primera = "S" THEN
- LET primera = "N"
- LET imprime_cliente = "S"
-
- LET no_v = 0
- LET v1_30 = 0
- LET v31_45 = 0
- LET v46_60 = 0
- LET vm_60 = 0
-
-#### Seleciona los datos generales de identificacion del cliente
-
- LET codigo_g = movtos.tipo_cliente USING "##",movtos.sec_cliente USING "&&&&"
-
- SELECT UNIQUE b.nombre,b.limite_credito,b.zona_postal,b.num_rnc,c.calle,
- c.casa_num,b.telefono,b.cod_zona,b.cod_provincia,c.barrio
- INTO p_nombre,p_limite_credito,p_zona,p_numero,p_calle,p_casa,
- ptelefono,pzona,pprovincia,pbarrio
- FROM vetb00004 b ,vetb00005 c
- WHERE b.tipo_cliente = movtos.tipo_cliente and b.sec_cliente = movtos.sec_cliente and
- b.tipo_cliente = c.tipo_cliente and b.sec_cliente = c.sec_cliente and
- b.status_t is null
-
- SELECT a.descrip INTO nombre_zona FROM vetb00008 a
- WHERE a.cod_zona = pzona
-
- SELECT b.nombre_provincia
- INTO nombre_p FROM vetb00009 a, vetb00020 b
- WHERE a.cod_zona = pzona AND
- a.cod_provincia = pprovincia AND
- b.cod_provincia = a.cod_provincia
-
-
---# LET cliente = p_nombre CLIPPED," ","(",movtos.tipo_cliente USING "##","-",
- movtos.sec_cliente USING "&&&&",")"
---# LET cliente = cliente CLIPPED
---# LET cels = "R",8 USING "<<","C2"
---# IF DDEpoke("EXCEL",archivo,cels,cliente) THEN
---# ELSE
---# LET numero_msg =391
---# CALL msg(numero_msg)
---# END IF
-
- LET balance = 0
---# LET cliente = null
---# LET cliente = p_calle CLIPPED," #",p_casa CLIPPED,", ",pbarrio CLIPPED," Tel. ",ptelefono CLIPPED
---# LET cels = "R",9 USING "<<","C2"
---# IF DDEpoke("EXCEL",archivo,cels,cliente) THEN
---# ELSE
---# LET numero_msg =391
---# CALL msg(numero_msg)
---# END IF
-
---# LET cliente = null
---# LET cliente = "LIMITE: ",p_limite_credito USING "##,###,###.##"," ",
- "RNC: ",p_numero
---# LET cels = "R",10 USING "<<","C2"
---# IF DDEpoke("EXCEL",archivo,cels,cliente) THEN
---# ELSE
---# LET numero_msg =391
---# CALL msg(numero_msg)
---# END IF
-
---# LET cliente = null
---# LET cliente = nombre_zona CLIPPED,", ",nombre_p CLIPPED
---# LET cels = "R",11 USING "<<","C2"
---# IF DDEpoke("EXCEL",archivo,cels,cliente) THEN
---# ELSE
---# LET numero_msg =391
---# CALL msg(numero_msg)
---# END IF
-
---# END IF
-
-
- SELECT UNIQUE a.tipo_doc,MIN(a.fecha_orig) INTO tipo,fecha2
- FROM cctb00001 a
- WHERE a.num_doc = movtos.aplica_a AND a.status_t IS NULL AND
- a.aplica_a = a.num_doc
- GROUP BY 1
---# LET documento = movtos.aplica_a USING "<<<<<<","-",tipo
---# LET cels = "R",cnt USING "<<","C2"
---# IF DDEpoke("EXCEL",archivo,cels,documento) THEN
---# ELSE
---# LET numero_msg =391
---# CALL msg(numero_msg)
---# END IF
-
-
---# LET cels = "R",cnt USING "<<","C3"
---# IF DDEpoke("EXCEL",archivo,cels,fecha2) THEN
---# ELSE
---# LET numero_msg =391
---# CALL msg(numero_msg)
---# END IF
-
---# LET balance = balance + movtos.valor
-
---# LET cels = "R",cnt USING "<<","C5"
---# IF DDEpoke("EXCEL",archivo,cels,movtos.valor) THEN
---# ELSE
---# LET numero_msg =391
---# CALL msg(numero_msg)
---# END IF
---# LET balance = balance + movtos.valor
-
---# LET cels = "R",cnt USING "<<","C7"
---# IF DDEpoke("EXCEL",archivo,cels,balance) THEN
---# ELSE
---# LET numero_msg =391
---# CALL msg(numero_msg)
---# END IF
-
---# LET cels = "R",35 USING "<<","C7"
---# IF DDEpoke("EXCEL",archivo,cels,balance) THEN
---# ELSE
---# LET numero_msg =391
---# CALL msg(numero_msg)
---# END IF
-
- #LET dias = (fecha_final - fecha2) - dias2
- LET dias = (fecha_final - fecha3) - dias2
-
-
- IF dias > 0 AND dias < 31 THEN
- LET v1_30 = movtos.valor + v1_30
- END IF
- IF dias > 30 and dias < 46 THEN
- LET v31_45 = movtos.valor + v31_45
- END IF
- IF dias > 45 and dias < 61 THEN
- LET v46_60 = movtos.valor + v46_60
- END IF
- IF dias > 60 THEN
- LET vm_60 = vm_60 + movtos.valor
- END IF
-
---# LET cnt = cnt + 1
---# END FOREACH
- IF imprime_ana = "N" THEN
---# LET cels = "R",38 USING "<<","C2"
---# IF DDEpoke("EXCEL",archivo,cels,no_v) THEN
---# ELSE
---# LET numero_msg =391
---# CALL msg(numero_msg)
---# END IF
-
---# LET cels = "R",38 USING "<<","C3"
---# IF DDEpoke("EXCEL",archivo,cels,v1_30) THEN
---# ELSE
---# LET numero_msg =391
---# CALL msg(numero_msg)
---# END IF
-
---# LET cels = "R",38 USING "<<","C4"
---# IF DDEpoke("EXCEL",archivo,cels,v31_45) THEN
---# ELSE
---# LET numero_msg =391
---# CALL msg(numero_msg)
---# END IF
-
---# LET cels = "R",38 USING "<<","C5"
---# IF DDEpoke("EXCEL",archivo,cels,v46_60) THEN
---# ELSE
---# LET numero_msg =391
---# CALL msg(numero_msg)
---# END IF
-
---# LET cels = "R",38 USING "<<","C7"
---# IF DDEpoke("EXCEL",archivo,cels,vm_60) THEN
---# ELSE
---# LET numero_msg =391
---# CALL msg(numero_msg)
---# END IF
-
-{--# LET command = "Run(\\\"ESTADO.XLS!PROTEJE\\\";FALSE)"
---# CALL DDEExecute ("EXCEL",archivo,command) RETURNING ret
-}
---# LET command = "Run(\\\"ESTADO.XLS!SALVAR\\\";FALSE)"
---# CALL DDEExecute ("EXCEL",archivo,command) RETURNING ret
-
-{--# LET command = "Run(\\\"ESTADO.XLS!DESPROTEJER\\\";FALSE)"
---# CALL DDEExecute ("EXCEL",archivo,command) RETURNING ret
-}
-
---# IF sysos = "Windows_NT" THEN
- LET ejecuta = "COPY G:\\ESTADO.XLS G:\\ESTADOS\\",
- codigo_g,".xls"
---# ELSE
- LET ejecuta = "COPY G:\\ESTADO.XLS G:\\ESTADOS\\",
- codigo_g,".xls"
---# END IF
-
- RUN ejecuta
-
---# LET command = "Run(\\\"ESTADO.XLS!LIMPIAR\\\";FALSE)"
---# CALL DDEExecute ("EXCEL",archivo,command) RETURNING ret
-
- END IF
-end if
-end if
-DROP TABLE estado
---# END FUNCTION
+ ON EVERY ROW
+ LET total = total + x.valor
+ CASE
+ WHEN x.dias <= 0
+ LET nov = nov + x.valor
+ WHEN x.dias < 31
+ LET d1 = d1 + x.valor
+ WHEN x.dias < 46
+ LET d2 = d2 + x.valor
+ WHEN x.dias < 61
+ LET d3 = d3 + x.valor
+ OTHERWISE
+ LET d4 = d4 + x.valor
+ END CASE
+ PRINTX x.documento, x.fecha, x.valor, x.balance, x.dias
+ AFTER GROUP OF x.codigo
+ PRINTX nov, d1, d2, d3, d4, total
+END REPORT
diff --git a/PROYECTO/ccdir/ccprrp052.4gl b/PROYECTO/ccdir/ccprrp052.4gl
index b23d69b..e9f29cd 100644
--- a/PROYECTO/ccdir/ccprrp052.4gl
+++ b/PROYECTO/ccdir/ccprrp052.4gl
@@ -62,6 +62,7 @@ MAIN
END MAIN
FUNCTION ccprrp052()
+ DEFINE n_ord INTEGER
OPTIONS
FORM LINE 8,
@@ -97,9 +98,10 @@ FUNCTION ccprrp052()
END IF
AFTER FIELD borden
IF borden IS NOT NULL THEN
- SELECT a.num_oc FROM prtb00012 a WHERE a.num_oc = borden AND
+ LET n_ord = 0
+ SELECT COUNT(*) INTO n_ord FROM prtb00012 a WHERE a.num_oc = borden AND
a.status_t IS NULL
- IF STATUS <> NOTFOUND THEN
+ IF n_ord = 0 THEN
CALL fgl_winmessage("INFO","ORDEN NO EXISTE","INFO")
NEXT FIELD borden
END IF
diff --git a/PROYECTO/mbsERP.4pw b/PROYECTO/mbsERP.4pw
index 3ac7d8e..8630195 100644
--- a/PROYECTO/mbsERP.4pw
+++ b/PROYECTO/mbsERP.4pw
@@ -491,6 +491,7 @@
+
@@ -571,13 +572,15 @@
-
+
+
+
@@ -598,9 +601,10 @@
-
+
+