diff --git a/PROYECTO/PRDIR/primpresion.4gl b/PROYECTO/PRDIR/primpresion.4gl
index 9ad2f1c..2873a33 100644
--- a/PROYECTO/PRDIR/primpresion.4gl
+++ b/PROYECTO/PRDIR/primpresion.4gl
@@ -11,7 +11,7 @@
END RECORD,
nombre_cia STRING
-FUNCTION impresion(pnumoc)
+FUNCTION impresion_oc(pnumoc)
DEFINE pnumoc,I INT
DECLARE busca_orden CURSOR FOR
diff --git a/PROYECTO/PRDIR/prprmt021.4gl b/PROYECTO/PRDIR/prprmt021.4gl
index e5a8451..ea54e9d 100644
--- a/PROYECTO/PRDIR/prprmt021.4gl
+++ b/PROYECTO/PRDIR/prprmt021.4gl
@@ -177,7 +177,7 @@ END RECORD
" ORDEN ECOMMERCE ",orden_externa USING "&&&&&&&"
INPUT ARRAY detalle FROM sdetalle.* ATTRIBUTE(WITHOUT DEFAULTS)
ON ACTION impresion ATTRIBUTE(TEXT="Orden",IMAGE="printer")
- CALL impresion(pnum_oc)
+ CALL impresion_oc(pnum_oc)
ON ACTION etiqueta ATTRIBUTE(TEXT="Label",IMAGE="fa-tag")
LET datos.celular = orden.celular
LET datos.cliente = orden.nombre_envio
diff --git a/PROYECTO/bin/ipprrp047.4rp b/PROYECTO/bin/ipprrp047.4rp
new file mode 100644
index 0000000..cca4f05
--- /dev/null
+++ b/PROYECTO/bin/ipprrp047.4rp
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PROYECTO/bin/ipprrp048.4rp b/PROYECTO/bin/ipprrp048.4rp
new file mode 100644
index 0000000..09a0137
--- /dev/null
+++ b/PROYECTO/bin/ipprrp048.4rp
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PROYECTO/bin/ipprrp051.4rp b/PROYECTO/bin/ipprrp051.4rp
new file mode 100644
index 0000000..f2da80f
--- /dev/null
+++ b/PROYECTO/bin/ipprrp051.4rp
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PROYECTO/bin/ipprrp054.4rp b/PROYECTO/bin/ipprrp054.4rp
new file mode 100644
index 0000000..ef90162
--- /dev/null
+++ b/PROYECTO/bin/ipprrp054.4rp
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PROYECTO/bin/lqprrp004.4rp b/PROYECTO/bin/lqprrp004.4rp
index 9ac921b..7e69d5f 100644
Binary files a/PROYECTO/bin/lqprrp004.4rp and b/PROYECTO/bin/lqprrp004.4rp differ
diff --git a/PROYECTO/nodir/noprrp045.4rp b/PROYECTO/bin/noprrp045.4rp
similarity index 81%
rename from PROYECTO/nodir/noprrp045.4rp
rename to PROYECTO/bin/noprrp045.4rp
index 4012cae..2884ea3 100644
--- a/PROYECTO/nodir/noprrp045.4rp
+++ b/PROYECTO/bin/noprrp045.4rp
@@ -61,6 +61,7 @@
+
@@ -68,73 +69,73 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/PROYECTO/ctdir/ctprrp004.4gl b/PROYECTO/ctdir/ctprrp004.4gl
index d0a0539..f21fdce 100644
--- a/PROYECTO/ctdir/ctprrp004.4gl
+++ b/PROYECTO/ctdir/ctprrp004.4gl
@@ -20,6 +20,7 @@ DEFINE HANDLER om.SaxDocumentHandler, -- return value from fgl_report_commitCurr
DEFINE selec5 STRING
DEFINE anos CHAR(4)
DEFINE jdx INTEGER
+DEFINE hay_filas SMALLINT
DEFINE fecha_inicio, fecha_corte, fecha1 DATE, reporte_tipo INT
MAIN
@@ -52,6 +53,7 @@ FUNCTION ctprrp004()
OPEN FORM ctfmrp004 FROM "ctfmrp004"
DISPLAY FORM ctfmrp004
+ CALL ui.Window.getCurrent().setText("Reporte Produccion Diaria")
CONSTRUCT criterio ON c.departamento, c.cod_prod FROM departamento, cod_prod
@@ -166,35 +168,42 @@ FUNCTION ctprrp004()
LET r_filename = 'ctprrp004.4rp'
- IF fgl_report_loadCurrentSettings(r_filename) THEN
- LET preview=1
- CALL selectoutput() RETURNING r_output
- CALL fgl_report_selectDevice(r_output) -- changing default
- CALL fgl_report_selectPreview(preview) -- changing default
- LET handler = fgl_report_commitCurrentSettings() -- commit changes
- END IF
-
- START REPORT reporte_detallado TO XML HANDLER HANDLER
-
LET fecha_actual = CURRENT YEAR TO FRACTION
DISPLAY selec5
-
+
PREPARE comando4 FROM selec5
DECLARE busca4 CURSOR FOR comando4
-
+ LET hay_filas = FALSE
+
FOREACH busca4 INTO prod_dia.*
- IF reporte_tipo <> 1 THEN
+ IF NOT hay_filas THEN
+ IF fgl_report_loadCurrentSettings(r_filename) THEN
+ LET preview=1
+ CALL selectoutput() RETURNING r_output
+ CALL fgl_report_selectDevice(r_output)
+ CALL fgl_report_selectPreview(preview)
+ LET handler = fgl_report_commitCurrentSettings()
+ END IF
+ START REPORT reporte_detallado TO XML HANDLER HANDLER
+ LET hay_filas = TRUE
+ END IF
+
+ IF reporte_tipo <> 1 THEN
LET prod_dia.num_doc = 0
- LET prod_dia.fecha = CURRENT
- END IF
-
+ LET prod_dia.fecha = CURRENT
+ END IF
+
OUTPUT TO REPORT reporte_detallado(
prod_dia.*, fecha_inicio, fecha_corte, fecha_actual)
END FOREACH
- FINISH REPORT reporte_detallado
+ IF hay_filas THEN
+ FINISH REPORT reporte_detallado
+ ELSE
+ CALL fgl_winmessage("INFO", "NO EXISTEN REGISTROS PARA ESTOS PARAMETROS", "INFO")
+ END IF
IF abortar_reporte THEN
RETURN
diff --git a/PROYECTO/ctdir/ctprrp014.4gl b/PROYECTO/ctdir/ctprrp014.4gl
index 4ff80f7..6dae2c3 100644
--- a/PROYECTO/ctdir/ctprrp014.4gl
+++ b/PROYECTO/ctdir/ctprrp014.4gl
@@ -20,6 +20,8 @@ DEFINE HANDLER om.SaxDocumentHandler, -- return value from fgl_report_commitCurr
DEFINE selec5 STRING
DEFINE anos STRING
+DEFINE hay_filas SMALLINT
+
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
@@ -55,6 +57,7 @@ FUNCTION ctprrp004()
OPEN FORM ctfmrp004 FROM "ctfmrp014"
DISPLAY FORM ctfmrp004
+ CALL ui.Window.getCurrent().setText("Reporte Produccion Mensual")
CONSTRUCT criterio ON c.cod_prod FROM cod_prod
@@ -128,33 +131,40 @@ FUNCTION ctprrp004()
LET r_filename = 'ctprrp014.4rp'
- IF fgl_report_loadCurrentSettings(r_filename) THEN
- LET preview=1
- CALL selectoutput() RETURNING r_output
- CALL fgl_report_selectDevice(r_output) -- changing default
- CALL fgl_report_selectPreview(preview) -- changing default
- LET handler = fgl_report_commitCurrentSettings() -- commit changes
- END IF
-
- START REPORT reporte_mensual TO XML HANDLER HANDLER
-
LET fecha_actual = CURRENT YEAR TO FRACTION
DISPLAY selec5
-
+
PREPARE comando4 FROM selec5
DECLARE busca4 CURSOR FOR comando4
-
+ LET hay_filas = FALSE
+
FOREACH busca4 INTO prod_dia.*
-
- IF prod_dia.semielaborado IS NULL THEN
+
+ IF NOT hay_filas THEN
+ IF fgl_report_loadCurrentSettings(r_filename) THEN
+ LET preview=1
+ CALL selectoutput() RETURNING r_output
+ CALL fgl_report_selectDevice(r_output)
+ CALL fgl_report_selectPreview(preview)
+ LET handler = fgl_report_commitCurrentSettings()
+ END IF
+ START REPORT reporte_mensual TO XML HANDLER HANDLER
+ LET hay_filas = TRUE
+ END IF
+
+ IF prod_dia.semielaborado IS NULL THEN
LET abortar_reporte = TRUE;
- END IF
-
+ END IF
+
OUTPUT TO REPORT reporte_mensual(prod_dia.*, anos, fecha_actual);
END FOREACH
- FINISH REPORT reporte_mensual
+ IF hay_filas THEN
+ FINISH REPORT reporte_mensual
+ ELSE
+ CALL fgl_winmessage("INFO", "NO EXISTEN REGISTROS PARA ESTOS PARAMETROS", "INFO")
+ END IF
IF abortar_reporte THEN
RETURN
diff --git a/PROYECTO/ipdir/IPPRRP048.4gl b/PROYECTO/ipdir/IPPRRP048.4gl
index 3defc37..c337d1e 100644
--- a/PROYECTO/ipdir/IPPRRP048.4gl
+++ b/PROYECTO/ipdir/IPPRRP048.4gl
@@ -75,6 +75,7 @@ FUNCTION ipprrp048()
OPEN FORM ipfmrp048 FROM "ipfmrp048"
DISPLAY FORM ipfmrp048
+ CALL ui.Window.getCurrent().setText("Transacciones de Inventario por Departamento")
DISPLAY "ipprrp048" AT 4,3
DISPLAY "Operacion Por Movimiento Detallado y Valorizado" AT 6,18
@@ -167,7 +168,7 @@ END INPUT
IF fgl_report_loadCurrentSettings(r_filename) THEN
LET preview=1
- CALL seleccionarsalida() RETURNING r_output -- load the .4rp file
+ CALL selectOutputSimple() RETURNING r_output -- load the .4rp file
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
LET handler = fgl_report_commitCurrentSettings() -- commit changes
@@ -296,5 +297,20 @@ FORMAT
PRINTX t_t_consumo,t_t_mtsAdicionales
END REPORT
+FUNCTION busca_departamento()
+ DEFINE
+ pdepartamento ui.combobox,
+ kdepartamento SMALLINT,
+ kdescripcion CHAR(30)
-
+ LET pdepartamento = ui.combobox.forname("formonly.departamento")
+ CALL pdepartamento.clear()
+ DECLARE pagar CURSOR FOR
+ SELECT departamento, nom_dpto
+ FROM adtb00001
+ WHERE status_t IS NULL
+ ORDER BY nom_dpto
+ FOREACH pagar INTO kdepartamento, kdescripcion
+ CALL pdepartamento.additem(kdepartamento, kdescripcion)
+ END FOREACH
+END FUNCTION
diff --git a/PROYECTO/ipdir/ipprrp047.4gl b/PROYECTO/ipdir/ipprrp047.4gl
index 218cc4f..3344b7a 100644
--- a/PROYECTO/ipdir/ipprrp047.4gl
+++ b/PROYECTO/ipdir/ipprrp047.4gl
@@ -78,6 +78,7 @@ FUNCTION ipprrp047()
OPEN FORM ipfmrp047 FROM "ipfmrp047"
DISPLAY FORM ipfmrp047
+ CALL ui.Window.getCurrent().setText("Transacciones de Inventario")
DISPLAY "ipprrp047" AT 4,3
DISPLAY "Operacion Por Movimiento Detallado y Valorizado" AT 6,18
@@ -200,7 +201,7 @@ END IF
IF fgl_report_loadCurrentSettings(r_filename) THEN
LET preview=1
- CALL seleccionarsalida() RETURNING r_output -- load the .4rp file
+ CALL selectOutputSimple() RETURNING r_output -- load the .4rp file
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
LET handler = fgl_report_commitCurrentSettings() -- commit changes
@@ -504,5 +505,20 @@ FORMAT
END REPORT
+FUNCTION busca_departamento()
+ DEFINE
+ pdepartamento ui.combobox,
+ kdepartamento SMALLINT,
+ kdescripcion CHAR(30)
-
+ LET pdepartamento = ui.combobox.forname("formonly.departamento")
+ CALL pdepartamento.clear()
+ DECLARE pagar CURSOR FOR
+ SELECT departamento, nom_dpto
+ FROM adtb00001
+ WHERE status_t IS NULL
+ ORDER BY nom_dpto
+ FOREACH pagar INTO kdepartamento, kdescripcion
+ CALL pdepartamento.additem(kdepartamento, kdescripcion)
+ END FOREACH
+END FUNCTION
diff --git a/PROYECTO/ipdir/ipprrp047.4rp b/PROYECTO/ipdir/ipprrp047.4rp
new file mode 100644
index 0000000..cca4f05
--- /dev/null
+++ b/PROYECTO/ipdir/ipprrp047.4rp
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PROYECTO/ipdir/ipprrp048.4rp b/PROYECTO/ipdir/ipprrp048.4rp
new file mode 100644
index 0000000..09a0137
--- /dev/null
+++ b/PROYECTO/ipdir/ipprrp048.4rp
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PROYECTO/ipdir/ipprrp051.4gl b/PROYECTO/ipdir/ipprrp051.4gl
index e010a38..0996f0a 100644
--- a/PROYECTO/ipdir/ipprrp051.4gl
+++ b/PROYECTO/ipdir/ipprrp051.4gl
@@ -87,6 +87,7 @@ FUNCTION ipprrp051()
OPEN FORM ipfmrp051 FROM "ipfmrp051"
DISPLAY FORM ipfmrp051
+ CALL ui.Window.getCurrent().setText("Transacciones de Inventario")
DISPLAY "ipprrp051" AT 4, 3
DISPLAY "Operacion Por Movimiento Detallado y Valorizado" AT 6, 18
@@ -186,8 +187,7 @@ FUNCTION ipprrp051()
IF fgl_report_loadCurrentSettings(r_filename) THEN
LET preview = 1
- CALL seleccionarsalida()
- RETURNING r_output -- load the .4rp file
+ CALL selectOutputSimple() RETURNING r_output -- load the .4rp file
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
LET handler =
@@ -381,3 +381,21 @@ REPORT opera(x, y)
LET t_t_mtsAdicionales = SUM(x.mtsAdicionales)
PRINTX t_t_consumo, t_t_mtsAdicionales
END REPORT
+
+FUNCTION busca_departamento()
+ DEFINE
+ pdepartamento ui.combobox,
+ kdepartamento SMALLINT,
+ kdescripcion CHAR(30)
+
+ LET pdepartamento = ui.combobox.forname("formonly.departamento")
+ CALL pdepartamento.clear()
+ DECLARE pagar CURSOR FOR
+ SELECT departamento, nom_dpto
+ FROM adtb00001
+ WHERE status_t IS NULL
+ ORDER BY nom_dpto
+ FOREACH pagar INTO kdepartamento, kdescripcion
+ CALL pdepartamento.additem(kdepartamento, kdescripcion)
+ END FOREACH
+END FUNCTION
diff --git a/PROYECTO/ipdir/ipprrp051.4rp b/PROYECTO/ipdir/ipprrp051.4rp
new file mode 100644
index 0000000..f2da80f
--- /dev/null
+++ b/PROYECTO/ipdir/ipprrp051.4rp
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PROYECTO/ipdir/ipprrp054.4gl b/PROYECTO/ipdir/ipprrp054.4gl
index 815c8ce..c29bc7e 100644
--- a/PROYECTO/ipdir/ipprrp054.4gl
+++ b/PROYECTO/ipdir/ipprrp054.4gl
@@ -34,6 +34,7 @@ FUNCTION ipprrp054()
OPEN FORM ipfmrp054 FROM "ipfmrp054"
DISPLAY FORM ipfmrp054
+ CALL ui.Window.getCurrent().setText("Conduces con y sin Archivo")
INPUT BY NAME fecha1,fecha2
BEFORE INPUT
AFTER INPUT
@@ -50,27 +51,34 @@ FUNCTION ipprrp054()
LET r_filename = "ipprrp054.4rp"
- CALL seleccionarsalida() RETURNING r_output
- iF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
-
-
- LET preview=1
- CALL fgl_report_selectDevice(r_output) -- changing default
- CALL fgl_report_selectPreview(preview) -- changing default
-
- LET handler = fgl_report_commitCurrentSettings() -- commit changes
- ELSE
- EXIT PROGRAM
- END IF
- START REPORT prt_co TO XML HANDLER HANDLER
- PREPARE comando FROM selec
- DECLARE busca CURSOR FOR comando
- OPEN busca USING fecha1,fecha2
+ PREPARE comando FROM selec
+ DECLARE busca CURSOR FOR comando
+ OPEN busca USING fecha1,fecha2
+ LET idx = 0
+
+ FOREACH busca INTO co.*
+ IF idx = 0 THEN
+ CALL selectOutputSimple() RETURNING r_output
+ IF fgl_report_loadCurrentSettings(r_filename) THEN
+ LET preview = 1
+ CALL fgl_report_selectDevice(r_output)
+ CALL fgl_report_selectPreview(preview)
+ LET handler = fgl_report_commitCurrentSettings()
+ ELSE
+ EXIT PROGRAM
+ END IF
+ START REPORT prt_co TO XML HANDLER HANDLER
+ LET idx = 1
+ END IF
+ OUTPUT TO REPORT prt_co(co.*)
+ END FOREACH
+
+ IF idx = 1 THEN
+ FINISH REPORT prt_co
+ ELSE
+ CALL fgl_winmessage("INFO", "NO EXISTEN REGISTROS", "INFO")
+ END IF
- FOREACH busca INTO co.*
- OUTPUT TO REPORT prt_co(co.*)
- END FOREACH
- FINISH REPORT prt_co
END INPUT
END FUNCTION
diff --git a/PROYECTO/ipdir/ipprrp054.4rp b/PROYECTO/ipdir/ipprrp054.4rp
new file mode 100644
index 0000000..ef90162
--- /dev/null
+++ b/PROYECTO/ipdir/ipprrp054.4rp
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PROYECTO/lqdir/lqprrp004.4gl b/PROYECTO/lqdir/lqprrp004.4gl
index a58d13b..dc89e0e 100644
--- a/PROYECTO/lqdir/lqprrp004.4gl
+++ b/PROYECTO/lqdir/lqprrp004.4gl
@@ -1,2 +1,823 @@
-{==============================================================================
PROGRAMA : LQPRRP004
SISTEMA : Sistema de Liquidacion Materiales
Objetivo : Liquidacion Mercancia Compras Exterior Prod. Terminados
PROGRAMADOR : Juan F. Soto
FECHA : Mayo 13, 1994
MODIFICADO : VALENTIN RODRIGUEZ
FECHA : MAYO, 2019
==============================================================================}
-GLOBALS "lqprgb000.4gl" ###### Variables para busqueda de rango de fecha
DEFINE elije,imp,afecta,tipo_inventario CHAR(1)
DEFINE p_ano,m_mes SMALLINT
DEFINE fecha1, fecha2 DATE ,
p_fecha CHAR(10)
DEFINE entra CHAR(25)
DEFINE t_costst DECIMAL(12,2)
DEFINE detalla CHAR(30)
DEFINE orden CHAR(10)
DEFINE t_variacion DECIMAL(12,2)
DEFINE debe, haber DECIMAL(12,2),
idz INT
###### Variables que la almacenan la informacion enviada al reporte
DEFINE diario1 RECORD
cuenta_no LIKE cgtb00001.cuenta_no,
debito DECIMAL(18,2)
END RECORD
DEFINE i SMALLINT
DEFINE fecha_inicial,fecha_final DATE
DEFINE primera,imp_entrada CHAR(1)
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_compania.* FROM companias a
CALL lqprrp004()
END MAIN
FUNCTION lqprrp004()
DEFINE busca_datos RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descripcion CHAR(30),
unidad CHAR(3),
cod_sp SMALLINT,
cod_sp_sec SMALLINT,
proveedor CHAR(7),
num_doc INTEGER,
num_oc INTEGER,
tipo CHAR(2),
cantidad DECIMAL(12,5),
precio DECIMAL(12,5),
flete DECIMAL(12,5),
imp_colect DECIMAL(12,5),
imp_aduana DECIMAL(12,5),
tasa DECIMAL(8,2),
cost_std LIKE intb00013.costo_st
END RECORD
LET int_flag = FALSE
OPTIONS
FORM LINE 8
OPEN FORM lqfmrp004 FROM "lqfmrp004"
DISPLAY FORM lqfmrp004
DISPLAY "lqprrp004" AT 4,3
DISPLAY "Liquidacion Mercancia pt" AT 6,28
LET tipo_papel = 2
CALL msgrp000(tipo_papel)
CONSTRUCT criterio ON c.num_oc,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec
FROM num_oc,cod_n,cod_grupo,cod_tipo,cod_sec
AFTER CONSTRUCT
IF INT_FLAG THEN
CALL msg(2)
LET INT_FLAG = FALSE
EXIT PROGRAM
END IF
EXIT CONSTRUCT
END CONSTRUCT
INPUT BY NAME tipo_inventario, p_ano,m_mes,elije,imp_entrada,imp
AFTER FIELD m_mes
SELECT fecha_inicio, fecha_corte INTO fecha_inicial,fecha_final
FROM prdtable where mes = m_mes AND ano = p_ano
DISPLAY BY NAME fecha_inicial,fecha_final
LET p_fechas = fecha_final using "ddmmyyyy"
CALL prd(p_fechas,usuarios) RETURNING bandera
IF bandera = 1 THEN
LET bandera = 0
# NEXT FIELD p_ano
END IF
AFTER INPUT
EXIT INPUT
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET chstd = FGL_WINQUESTION("PREGUNTA","Actualiza Costos STD?","yes","Yes|no","question",0)
LET chstd = UPSHIFT(chstd)
LET primera = "S"
IF tipo_inventario = '2' THEN
LET selec =
"SELECT DISTINCT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ",
" a.unidad_med,b.cod_sp,b.cod_sp_sec,b.nom_sp,c.rep_entrada,c.num_oc, ",
" c.tipo,c.cantidad_oc,c.cantidad_oc*c.fob,c.costo_flete,c.impuesto,c.otros_g,d.prima_us ",
"FROM iptb00002 a,cotb00001 b,cgtb00018 c,cgtb00017 d ",
"WHERE (a.cod_n = c.cod_n and a.cod_grupo = c.cod_grupo and ",
" a.cod_tipo = c.cod_tipo and a.cod_sec = c.cod_sec) AND ",
" (d.fecha between '", fecha_inicial USING "MM/DD/YYYY","' and '",
fecha_final USING "MM/DD/YYYY","') and ",
" (c.num_oc = d.num_oc) and (c.tipo=d.tipo) and (d.cod_sp=b.cod_sp AND ",
" d.cod_sp_sec = b.cod_sp_sec) and (c.rep_entrada = d.rep_entrada) and ",
" (c.status_t is null) and d.liquidada='",elije,"' and c.tipo = '2' ",
" AND (a.status_t IS NULL) AND (d.status_t IS NULL) and ",
criterio CLIPPED,
" ORDER BY c.num_oc,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec "
ELSE
LET selec =
"SELECT DISTINCT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ",
" a.unidad_med,b.cod_sp,b.cod_sp_sec,b.nom_sp,c.rep_entrada,c.num_oc, ",
" c.tipo,c.cantidad_oc,c.cantidad_oc*c.fob,c.costo_flete,c.impuesto,c.otros_g,d.prima_us ",
"FROM intb00001 a,cotb00001 b,cgtb00018 c,cgtb00017 d ",
"WHERE (a.cod_n = c.cod_n and a.cod_grupo = c.cod_grupo and ",
" a.cod_tipo = c.cod_tipo and a.cod_sec = c.cod_sec) AND ",
" (d.fecha between '", fecha_inicial USING "MM/dd/YYYY","' and '",
fecha_final USING "MM/dd/YYYY","') and ",
" (c.num_oc = d.num_oc) and (c.tipo=d.tipo) and (d.cod_sp=b.cod_sp AND ",
" d.cod_sp_sec = b.cod_sp_sec) and (c.rep_entrada = d.rep_entrada) and ",
" (c.status_t is null) and d.liquidada='",elije,"' and c.tipo = 1 ",
" AND (a.status_t IS NULL) AND (d.status_t IS NULL) and ",
criterio CLIPPED,
" ORDER BY c.num_oc,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec "
END IF
DISPLAY selec
DISPLAY "elije ",elije
LET idx = 1
PREPARE comando FROM selec
DECLARE busca CURSOR FOR comando
INSERT INTO cttb000log1 VALUES (GETDATE(),usuarios,'lqprrp004','ELIMINO')
FOREACH busca INTO busca_datos.*
DISPLAY "datos ",busca_datos.cod_sp_sec," ",busca_datos.descripcion
LET orden = busca_datos.num_oc USING "<<<<<<"
IF busca_datos.imp_colect is null THEN
LET busca_datos.imp_colect = 0
END IF
IF busca_datos.imp_colect < 0 THEN
LET busca_datos.imp_colect = busca_datos.imp_colect * -1
END IF
IF busca_datos.imp_aduana is null THEN
LET busca_datos.imp_aduana = 0
END IF
IF busca_datos.imp_aduana < 0 THEN
LET busca_datos.imp_aduana = busca_datos.imp_aduana * -1
END IF
# Busca el costos standard
LET busca_datos.cost_std = 0
IF tipo_inventario = '2' THEN
SELECT AVG(a.material+a.labor+a.gastos) INTO busca_datos.cost_std
FROM iptb00004 a
WHERE a.ventas = "1" and
a.ano = year(fecha_inicial) and a.cod_n = busca_datos.cod_n and
a.cod_grupo = busca_datos.cod_grupo and
a.cod_tipo = busca_datos.cod_tipo and
a.cod_sec = busca_datos.cod_sec and a.status_t is NULL
ELSE
SELECT AVG(a.costo_st) INTO busca_datos.cost_std
FROM intb00013 a
WHERE a.ano = year(fecha_inicial) and a.cod_n = busca_datos.cod_n and
a.cod_grupo = busca_datos.cod_grupo and
a.cod_tipo = busca_datos.cod_tipo and
a.cod_sec = busca_datos.cod_sec and a.status_t is NULL
END IF
IF STATUS = NOTFOUND THEN
LET busca_datos.cost_std = 0
END IF
IF busca_datos.cost_std is null THEN
LET busca_datos.cost_std = 0
END IF
IF chstd = "yes" THEN
DELETE FROM cttb00013 WHERE (fecha_lq = fecha_final AND
tipo_lq = elije AND
tipo_orden = 2 AND
num_oc = busca_datos.num_oc)
END IF
IF imp="S" THEN
LET r_filename ="lqprrp004.4rp"
IF idx = 1 THEN
IF fgl_report_loadCurrentSettings(r_filename) THEN
LET preview=1
CALL seleccionarsalida() RETURNING r_output -- load the .4rp file
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
# CALL fgl_report_configurexlsxdevice(null,null,null,false,false,null,1)
LET handler = fgl_report_commitCurrentSettings() -- commit changes
END IF
LET idx = 2
START REPORT liquida1 TO XML HANDLER HANDLER
END IF
DISPLAY "DATOS "
OUTPUT TO REPORT liquida1(busca_datos.*)
END IF
END FOREACH
IF imp = "S" THEN
IF idx > 1 THEN
FINISH REPORT liquida1
END IF
END IF
IF imp_entrada = "S" THEN
CALL edprrp0271()
END IF
END FUNCTION
REPORT liquida1(x)
DEFINE x RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descripcion CHAR(30),
unidad CHAR(3),
cod_sp SMALLINT,
cod_sp_sec SMALLINT,
proveedor CHAR(7),
num_doc INTEGER,
num_oc INTEGER,
tipo CHAR(2),
cantidad DECIMAL(12,5),
precio DECIMAL(12,5),
flete DECIMAL(12,5),
imp_colect DECIMAL(12,5),
imp_aduana DECIMAL(12,5),
tasa DECIMAL(8,2),
cost_std LIKE intb00013.costo_st
END RECORD
DEFINE valor DECIMAL(12,2)
DEFINE variacion,precio_std,fob,c_f,seguro,cost_pl,
t_fob,t_flete,t_seguro,t_cf,t_impcol,t_impaduana,t_dollar,
t_costopl,t_recibida,t_precio,o_variacion
DECIMAL(12,2)
DEFINE no_reg SMALLINT
DEFINE total_cf,t_costo, costo_unit DECIMAL(12,2),
o_impaduana,o_impcolect,o_dollar,o_cf
DECIMAL(12,2)
DEFINE ot_fob,
ot_flete,
ot_cf,
ot_seguro,
ot_impcol,
ot_impaduana,
ot_dollar,
ot_costopl,
ot_costo,
ot_precio,
ot_costst,
ot_variacion DECIMAL(12,2)
## DEFINICION DE LAS VARIABLES DE IMPRESION
DEFINE hora CHAR(5)
DEFINE fechaActual, orden_tipo CHAR(12)
DEFINE codigo CHAR(25)
DEFINE codigos_sp, tituloFecha CHAR(25)
DEFINE material,titulo STRING
{OUTPUT
## DEFINICION DE LOS MARGENES DE IMPRESION
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 3
PAGE LENGTH 150}
FORMAT
PAGE HEADER
LET hora = TIME
LET fechaActual = today using "dd/mm/yy"
IF tipo_inventario = '2' THEN
LET titulo = 'Liquidacion Mercancias Productos Terminados'
ELSE
LET titulo = 'Liquidacion Mercancias Materia Prima'
END IF
IF primera = "S" THEN
LET t_fob = 0
LET t_flete = 0
LET t_seguro = 0
LET t_cf = 0
LET t_impcol = 0
LET t_impaduana = 0
LET t_dollar = 0
LET t_costopl = 0
LET t_recibida = 0
LET t_costo = 0
LET t_precio = 0
LET t_costst = 0
LET t_variacion = 0
LET o_variacion = 0
LET primera = "N"
LET idz = 1
END IF
BEFORE GROUP OF x.num_oc
IF total_cf is null THEN
LET total_cf = 0
END IF
LET ot_fob =0
LET ot_flete =0
LET ot_cf =0
LET ot_seguro =0
LET ot_impcol =0
LET ot_impaduana =0
LET ot_dollar =0
LET ot_costopl =0
LET ot_costo =0
LET ot_precio =0
LET ot_costst =0
LET ot_variacion =0
LET tituloFecha = "Del ",fecha_inicial USING "dd/mm/yy"," Al ", fecha_final USING "dd/mm/yy"
## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS
PRINTX p_compania.nombre, hora,tituloFecha, fechaActual,fecha_inicial USING "dd/mm/yy",
fecha_final USING "dd/mm/yy",titulo
ON EVERY ROW
LET seguro = 0
LET codigo = x.cod_n using "&&&&&","-",x.cod_grupo using "&&&&&","-",
x.cod_tipo using "&&&&&","-",x.cod_sec using "&&&&&"
LET codigos_sp = x.cod_sp using "&&","-",x.cod_sp_sec using "&&&&"
LET orden_tipo = x.num_oc using "&&&&&","-",x.tipo
SELECT CONVERT(CHAR(10),MIN(a.fecha),101) INTO p_fecha FROM iptb00006 a
WHERE a.num_doc = x.num_doc and cod_mov in (10) AND status_t IS NULL
LET fob = x.precio
LET c_f = fob + x.flete
LET valor = c_f * x.tasa
IF elije = "L" THEN
LET seguro = 0
END IF
IF no_reg > 1 THEN
LET x.imp_aduana = (x.imp_aduana / total_cf) * c_f
LET x.imp_colect = (x.imp_colect / total_cf) * c_f
END IF
LET cost_pl = seguro + c_f + x.imp_colect + x.imp_aduana + valor
LET costo_unit = cost_pl / x.cantidad
LET precio_std = x.cantidad * x.cost_std
LET variacion = cost_pl - precio_std
LET material = "(",codigo,")","-",x.descripcion CLIPPED
PRINTX material, codigos_sp,x.proveedor, orden_tipo,
fob, x.flete, c_f, seguro, x.imp_colect, x.imp_aduana,
valor, cost_pl, x.cantidad, costo_unit, x.cost_std, precio_std,
variacion
IF tipo_inventario = '2' THEN
IF chstd = "YES" THEN
SELECT UNIQUE a.cod_n FROM iptb00004 a
WHERE a.cod_n = x.cod_n AND
a.cod_grupo = x.cod_grupo AND
a.cod_tipo = x.cod_tipo AND
a.cod_sec = x.cod_sec AND
a.ano = p_ano and
a.mes_ini = 1 AND
a.mes_fin = 12
IF STATUS = NOTFOUND THEN
INSERT INTO iptb00004 (ventas,mes_ini,mes_fin,ano,cod_n,cod_grupo,cod_tipo,cod_Sec,material,labor,gastos,us_crea,fech_crea)
VALUES ('1','01','12',p_ano,x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec,costo_unit,0,0,SUSER_SNAME(),GETDATE())
END IF
END IF
ELSE
IF chstd = "YES" THEN
SELECT UNIQUE a.cod_n FROM intb00013 a
WHERE a.cod_n = x.cod_n AND
a.cod_grupo = x.cod_grupo AND
a.cod_tipo = x.cod_tipo AND
a.cod_sec = x.cod_sec AND
a.ano = p_ano AND
a.mes_ini = 1 AND
a.mes_fin = 12
IF STATUS = NOTFOUND THEN
INSERT INTO intb00013 VALUES ('01','12',p_ano,x.cod_n,x.cod_grupo,x.cod_tipo,
x.cod_sec,costo_unit,null,SUSER_SNAME(),GETDATE(),null,
NULL)
END IF
END IF
END IF
INSERT INTO cttb00013 (fecha_lq,fecha,tipo_lq,num_oc,cod_n,cod_grupo,cod_tipo,cod_sec,cantidad,costo_lq,status_t,us_crea,fech_crea,tipo_orden)
VALUES (fecha_final,p_fecha,elije,x.num_oc,x.cod_n,x.cod_grupo,x.cod_tipo,
x.cod_sec,x.cantidad,costo_unit,null,usuarios,GETDATE(),x.tipo)
INSERT INTO cttb000log2
(fecha_lq,fecha,tipo_lq,num_oc,cod_n,cod_grupo,cod_tipo,cod_sec)
VALUES (fecha_final,p_fecha,elije,x.num_oc,x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec)
# Acumulacion de totales
IF o_impaduana is null THEN
LET o_impaduana = 0
END IF
IF o_variacion is null THEN
LET o_variacion = 0
END IF
IF o_impcolect is null THEN
LET o_impcolect = 0
END IF
IF o_dollar is null THEN
LET o_dollar = 0
END IF
IF o_cf is null THEN
LET o_cf = 0
END IF
LET t_fob = t_fob + fob
LET t_flete = t_flete + x.flete
LET t_seguro = t_seguro + seguro
LET t_cf = t_cf + c_f
LET t_impcol = t_impcol + x.imp_colect
LET t_impaduana = t_impaduana + x.imp_aduana
LET t_dollar = t_dollar + valor
LET t_costopl = t_costopl + cost_pl
LET t_costo = t_costo + costo_unit
LET t_precio = t_precio + x.cost_std
LET t_costst = t_costst + precio_std
LET t_variacion = t_variacion + variacion
LET o_variacion = o_variacion + cost_pl
LET o_impaduana = o_impaduana + x.imp_aduana + seguro
LET o_impcolect = o_impcolect + x.imp_colect
LET o_dollar = o_dollar + valor
LET o_cf = o_cf + c_f
LET ot_fob = ot_fob + fob
LET ot_flete = ot_flete + x.flete
LET ot_cf = ot_cf + c_f
LET ot_seguro = ot_seguro + seguro
LET ot_impcol = ot_impcol + x.imp_colect
LET ot_impaduana = ot_impaduana + x.imp_aduana
LET ot_dollar = ot_dollar + valor
LET ot_costopl = ot_costopl + cost_pl
LET ot_costo = ot_costo + costo_unit
LET ot_precio = ot_precio + x.cost_std
LET ot_costst = ot_costst + precio_std
LET ot_variacion = ot_variacion + variacion
AFTER GROUP OF x.num_oc
# Validacion del arreglo para imprimir la entrada 27
IF imp_entrada = "S" THEN
LET entrada27[idz].cuenta_no = "1161"
LET entrada27[idz].cod_aux = x.cod_sp
LET entrada27[idz].cod_sec = x.cod_sp_sec
LET entrada27[idz].num_doc = x.num_oc
LET entrada27[idz].valor = o_impaduana
LET o_impaduana = 0
LET idz = idz + 1
LET entrada27[idz].cuenta_no = "1161-01"
LET entrada27[idz].cod_aux = x.cod_sp
LET entrada27[idz].cod_sec = x.cod_sp_sec
LET entrada27[idz].num_doc = x.num_oc
LET entrada27[idz].valor = o_impcolect
LET o_impcolect = 0
LET idz = idz + 1
LET entrada27[idz].cuenta_no = "1161-02"
LET entrada27[idz].cod_aux = x.cod_sp
LET entrada27[idz].cod_sec = x.cod_sp_sec
LET entrada27[idz].num_doc = x.num_oc
LET entrada27[idz].valor = o_dollar
LET o_dollar = 0
LET idz = idz + 1
LET entrada27[idz].cuenta_no = "1161-03"
LET entrada27[idz].cod_aux = x.cod_sp
LET entrada27[idz].cod_sec = x.cod_sp_sec
LET entrada27[idz].num_doc = x.num_oc
LET entrada27[idz].valor = o_cf
LET o_cf = 0
LET idz = idz + 1
END IF
PRINTX ot_fob,ot_flete,ot_cf,ot_seguro,ot_impcol,ot_impaduana, ot_dollar,
ot_costopl,ot_costo, ot_precio,ot_costst,ot_variacion
ON LAST ROW
PRINTX t_fob, t_flete, t_cf,t_seguro,t_impcol,t_impaduana,t_dollar,
t_costopl,t_costo,t_precio,t_costst,t_variacion
LET o_impaduana = 0
LET o_impcolect = 0
LET o_dollar = 0
LET o_cf = 0
END REPORT
{-------------------------------------------------------------------------------
PROGRAMA : EDPRRP027
OBJETIVO : Listar las Entrada de Diario Productos Terminados
PROGRAMADOR : Juan F. Soto
FECHA REALIZACION : Mayo 20, 1994.
-------------------------------------------------------------------------------}
FUNCTION edprrp0271()
#WHENEVER ERROR CONTINUE
DEFINE longitud,u_mes,numero_ent,i SMALLINT,
ch_ano CHAR(4)
LET r_filename ="lqprrp004b.4rp"
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
##### Abriendo y desplegando el formulario de captura de datos
OPEN FORM edfmrp027 FROM "edfmrp027"
DISPLAY FORM edfmrp027
{ DISPLAY "edprrp027" AT 4,3
DISPLAY "Entrada de Diario Mat. Importada Rec." AT 6,21}
{ LET tipo_papel = 1
CALL msgrp000(tipo_papel)}
###### Aceptando los valores para el rango de fecha
INPUT BY NAME entra,fecha1,fecha2,afecta,detalla
BEFORE INPUT
LET numero_ent = 27
LET fecha1 =fecha_inicial
LET fecha2 =fecha_final
DISPLAY BY NAME fecha1,fecha2
CALL controlNumericoED(numero_ent, fecha1, NULL) RETURNING entra
DISPLAY BY NAME entra
AFTER FIELD entra
LET longitud = LENGTH(entra)
IF longitud != 16 THEN
LET numero_msg = 77
CALL msg(numero_msg)
NEXT FIELD entra
END IF
LET existe = "N"
SELECT unique a.ref FROM cgtb00004 a WHERE a.ref = entra
IF STATUS != NOTFOUND THEN
LET existe = "S"
END IF
AFTER FIELD fecha1
IF fecha1 IS NULL THEN
ERROR "(16) CAMPO EN BLANCO"
NEXT FIELD fecha1
END IF
AFTER FIELD fecha2
IF fecha2 is null THEN
ERROR "(16) CAMPO EN BLANCO"
NEXT FIELD fecha2
END IF
IF fecha1 > fecha2 THEN
ERROR "(149) FECHA NO PUEDE SER MAYOR QUE LA ANTERIOR"
NEXT FIELD fecha1
END IF
###### Selecionando en rango de fecha de la tabla de periodo para el fecha2
AFTER INPUT
IF int_flag THEN
ERROR "(2) OPERACION CANCELADA"
LET int_flag = false
RETURN
END IF
IF fecha2 > TODAY THEN
CALL msg(57)
END IF
END INPUT
##### Creando la facilidad para cancelar proceso con DELETE O SUPR
LET i = 1
{CALL configureoutput("XLS") RETURNING handler
START REPORT entrada271 TO XML HANDLER handler}
IF i = 1 THEN
IF fgl_report_loadCurrentSettings(r_filename) THEN
LET preview=1
CALL seleccionarsalida() RETURNING r_output -- load the .4rp file
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
LET handler = fgl_report_commitCurrentSettings() -- commit changes
END IF
LET i = 2
START REPORT entrada271 TO XML HANDLER HANDLER
END IF
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
##### Loop para enviar informacion al reporte
LET diario1.debito = t_costst
IF tipo_inventario = "2" THEN
LET diario1.cuenta_no = "1131-02"
ELSE
LET diario1.cuenta_no = "1151"
END IF
OUTPUT TO REPORT entrada271(diario1.*,fecha1,fecha2,detalla,entra)
IF i > 1 THEN
FINISH REPORT entrada271
END IF
END FUNCTION
#### Funcion para dar salida ordenada a la informacion requerida de
#### una entrada de diario de nominas local
REPORT entrada271(x,fecha1,fecha2,detalle1,entrada)
DEFINE x RECORD
cuenta_no LIKE cgtb00001.cuenta_no,
debito DECIMAL(10,2)
END RECORD
### Acumula los valores de las diferentes cuentas para entrada diario de nomina
DEFINE debito,credito DECIMAL(12,2)
DEFINE detalle1 CHAR(30)
DEFINE fecha1,fecha2 DATE #### Almacena las fecha del rango de busqueda
DEFINE cod_aux_sec CHAR(6)
DEFINE doce CHAR(2)
DEFINE hora,referencia CHAR(5)
DEFINE entrada CHAR(25),
nombre_cta LIKE cgtb00001.descripcion
DEFINE fechaActual CHAR(12)
{ OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
PAGE LENGTH 150}
FORMAT
PAGE HEADER
LET hora = TIME
LET fechaActual = today using "dd/mm/yy"
##### Selecionado la descripcion del fecha
BEFORE GROUP OF x.cuenta_no
PRINTX p_compania.nombre,hora,fechaActual,fecha1,fecha2,entrada,doce
ON EVERY ROW
SELECT a.descripcion INTO nombre_cta FROM cgtb00001 a
WHERE a.cuenta_no = x.cuenta_no
IF debito is null THEN
LET debito = 0
END IF
PRINTX x.cuenta_no, x.debito, nombre_cta
LET debito = debito + x.debito
IF afecta = "S" THEN
IF x.cuenta_no IS NOT NULL THEN
BEGIN WORK
CALL controlNumericoED(numero_ent, fecha1, usuarios) RETURNING entra
DISPLAY BY NAME entra
LET entrada = entra
INSERT INTO cgtb00004
(fecha,tipo,ref,cuenta_no,detalle_1,debito,credito,us_crea,fech_crea)
VALUES(fecha2,1,entrada,x.cuenta_no,detalle1,x.debito,0,usuarios,GETDATE())
END IF
END IF
ON LAST ROW
IF tipo_inventario = "2" THEN
SELECT a.descripcion INTO nombre_cta FROM cgtb00001 a
WHERE a.cuenta_no = "5615"
LET debe = 0
LET haber = 0
LET referencia = "5615"
ELSE
SELECT a.descripcion INTO nombre_cta FROM cgtb00001 a
WHERE a.cuenta_no = "1152"
LET debe = 0
LET haber = 0
LET referencia = "1152"
END IF
IF credito is null THEN
LET credito = 0
END IF
IF debito is null THEN
LET debito = 0
END IF
IF t_variacion > 0 THEN
LET debito = debito + t_variacion
LET debe = t_variacion
IF afecta = "S" THEN
IF tipo_inventario = "2" THEN
INSERT INTO cgtb00004(fecha,tipo,ref,cuenta_no,detalle_1,debito
,credito,us_crea,fech_crea)
VALUES(fecha2,1,entrada,"5615",detalle1,t_variacion,0,usuarios,GETDATE())
ELSE
INSERT INTO cgtb00004(fecha,tipo,ref,cuenta_no,detalle_1,debito
,credito,us_crea,fech_crea)
VALUES(fecha2,1,entrada,"1152",detalle1,t_variacion,0,usuarios,GETDATE())
END IF
END IF
ELSE
LET t_variacion = t_variacion * -1
LET credito = credito + t_variacion
LET haber = t_variacion
IF afecta = "S" THEN
INSERT INTO cgtb00004(fecha,tipo,ref,cuenta_no,detalle_1,debito
,credito,us_crea,fech_crea)
VALUES(fecha2,1,entrada,"5615",detalle1,0,t_variacion,SUSER_SNAME(),GETDATE() )
END IF
END IF
###### Acumulando totales por columna
PRINTX referencia, nombre_cta, debe, haber
LET credito = 0
# Impresion detalle de la entrada con ordenes de compras
FOR i = 1 TO idz
# IF entrada27[i].cuenta_no IS NOT NULL THEN
# IF entrada27[i].cod_aux is not null THEN
IF entrada27[i].valor < 0 THEN
LET entrada27[i].valor = entrada27[i].valor * -1
END IF
LET cod_aux_sec = entrada27[i].cod_aux using "&&","-",entrada27[i].cod_sec using "&&&&"
IF cod_aux_sec IS NULL THEN
LET cod_aux_sec = ' '
END IF
# DISPLAY "datos ",i USING "<<<"," ",entrada27[i].cod_aux using "&&","-",entrada27[i].cod_sec using "&&&&"
PRINTX entrada27[i].cuenta_no, cod_aux_sec, entrada27[i].num_doc,
entrada27[i].valor
IF entrada27[i].valor IS NULL THEN
LET entrada27[i].valor=0
END IF
LET credito = credito + entrada27[i].valor
IF afecta = "S" THEN
IF entrada27[i].valor < 0 THEN
LET entrada27[i].valor = entrada27[i].valor * -1
END IF
IF entrada27[i].cuenta_no IS NOT NULL THEN
INSERT INTO cgtb00004 (fecha,tipo,ref,cuenta_no,num_doc,cod_aux
,cod_sec,detalle_1,debito,credito,us_crea,fech_crea)
VALUES (fecha2,1,entrada,entrada27[i].cuenta_no,
entrada27[i].num_doc,entrada27[i].cod_aux,
entrada27[i].cod_sec,detalle1,0,
entrada27[i].valor,SUSER_SNAME(),GETDATE())
END IF
END IF
# END IF
#END IF
END FOR
IF afecta = "S" THEN
COMMIT WORK
END IF
###### Imprime total DEBITO y total CREDITO
PRINTX debito,credito,detalle1
LET debito = 0
LET credito = 0
END REPORT
+{==============================================================================
+ PROGRAMA : LQPRRP004
+ SISTEMA : Sistema de Liquidacion Materiales
+ Objetivo : Liquidacion Mercancia Compras Exterior Prod. Terminados
+ PROGRAMADOR : Juan F. Soto
+ FECHA : Mayo 13, 1994
+ MODIFICADO : VALENTIN RODRIGUEZ
+ FECHA : MAYO, 2019
+==============================================================================}
+GLOBALS "lqprgb000.4gl" ###### Variables para busqueda de rango de fecha
+DEFINE elije,imp,afecta,tipo_inventario CHAR(1)
+DEFINE p_ano,m_mes SMALLINT
+DEFINE fecha1, fecha2 DATE ,
+ p_fecha CHAR(10)
+DEFINE entra CHAR(25)
+DEFINE t_costst DECIMAL(12,2)
+DEFINE detalla CHAR(30)
+DEFINE orden CHAR(10)
+DEFINE t_variacion DECIMAL(12,2)
+DEFINE debe, haber DECIMAL(12,2),
+ idz INT
+
+###### Variables que la almacenan la informacion enviada al reporte
+DEFINE diario1 RECORD
+ cuenta_no LIKE cgtb00001.cuenta_no,
+ debito DECIMAL(18,2)
+END RECORD
+
+DEFINE i SMALLINT
+DEFINE fecha_inicial,fecha_final DATE
+DEFINE primera,imp_entrada CHAR(1)
+
+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_compania.* FROM companias a
+ CALL lqprrp004()
+END MAIN
+
+ FUNCTION lqprrp004()
+
+ DEFINE busca_datos RECORD
+ cod_n SMALLINT,
+ cod_grupo SMALLINT,
+ cod_tipo SMALLINT,
+ cod_sec SMALLINT,
+ descripcion CHAR(30),
+ unidad CHAR(3),
+ cod_sp SMALLINT,
+ cod_sp_sec SMALLINT,
+ proveedor CHAR(7),
+ num_doc INTEGER,
+ num_oc INTEGER,
+ tipo CHAR(2),
+ cantidad DECIMAL(12,5),
+ precio DECIMAL(12,5),
+ flete DECIMAL(12,5),
+ imp_colect DECIMAL(12,5),
+ imp_aduana DECIMAL(12,5),
+ tasa DECIMAL(8,2),
+ cost_std LIKE intb00013.costo_st
+ END RECORD
+
+ LET int_flag = FALSE
+
+ OPTIONS
+ FORM LINE 8
+
+ OPEN FORM lqfmrp004 FROM "lqfmrp004"
+ DISPLAY FORM lqfmrp004
+ DISPLAY "lqprrp004" AT 4,3
+ DISPLAY "Liquidacion Mercancia pt" AT 6,28
+
+ LET tipo_papel = 2
+ CALL msgrp000(tipo_papel)
+
+ CONSTRUCT criterio ON c.num_oc,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec
+ FROM num_oc,cod_n,cod_grupo,cod_tipo,cod_sec
+ AFTER CONSTRUCT
+ IF INT_FLAG THEN
+ CALL msg(2)
+ LET INT_FLAG = FALSE
+ EXIT PROGRAM
+ END IF
+ EXIT CONSTRUCT
+ END CONSTRUCT
+ INPUT BY NAME tipo_inventario, p_ano,m_mes,elije,imp_entrada,imp
+
+ AFTER FIELD m_mes
+ SELECT fecha_inicio, fecha_corte INTO fecha_inicial,fecha_final
+ FROM prdtable where mes = m_mes AND ano = p_ano
+
+ DISPLAY BY NAME fecha_inicial,fecha_final
+
+ LET p_fechas = fecha_final using "ddmmyyyy"
+ CALL prd(p_fechas,usuarios) RETURNING bandera
+ IF bandera = 1 THEN
+ LET bandera = 0
+ # NEXT FIELD p_ano
+ END IF
+
+ AFTER INPUT
+ EXIT INPUT
+ END INPUT
+ IF int_flag THEN
+ LET numero_msg = 2
+ CALL msg(numero_msg)
+ LET int_flag = FALSE
+ RETURN
+ END IF
+ LET chstd = FGL_WINQUESTION("PREGUNTA","Actualiza Costos STD?","yes","Yes|no","question",0)
+
+ LET chstd = UPSHIFT(chstd)
+
+
+ LET primera = "S"
+ IF tipo_inventario = '2' THEN
+ LET selec =
+ "SELECT DISTINCT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ",
+ " a.unidad_med,b.cod_sp,b.cod_sp_sec,b.nom_sp,c.rep_entrada,c.num_oc, ",
+ " c.tipo,c.cantidad_oc,c.cantidad_oc*c.fob,c.costo_flete,c.impuesto,c.otros_g,d.prima_us ",
+ "FROM iptb00002 a,cotb00001 b,cgtb00018 c,cgtb00017 d ",
+ "WHERE (a.cod_n = c.cod_n and a.cod_grupo = c.cod_grupo and ",
+ " a.cod_tipo = c.cod_tipo and a.cod_sec = c.cod_sec) AND ",
+ " (d.fecha between '", fecha_inicial USING "MM/DD/YYYY","' and '",
+ fecha_final USING "MM/DD/YYYY","') and ",
+ " (c.num_oc = d.num_oc) and (c.tipo=d.tipo) and (d.cod_sp=b.cod_sp AND ",
+ " d.cod_sp_sec = b.cod_sp_sec) and (c.rep_entrada = d.rep_entrada) and ",
+ " (c.status_t is null) and d.liquidada='",elije,"' and c.tipo = '2' ",
+ " AND (a.status_t IS NULL) AND (d.status_t IS NULL) and ",
+ criterio CLIPPED,
+ " ORDER BY c.num_oc,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec "
+ ELSE
+ LET selec =
+ "SELECT DISTINCT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ",
+ " a.unidad_med,b.cod_sp,b.cod_sp_sec,b.nom_sp,c.rep_entrada,c.num_oc, ",
+ " c.tipo,c.cantidad_oc,c.cantidad_oc*c.fob,c.costo_flete,c.impuesto,c.otros_g,d.prima_us ",
+ "FROM intb00001 a,cotb00001 b,cgtb00018 c,cgtb00017 d ",
+ "WHERE (a.cod_n = c.cod_n and a.cod_grupo = c.cod_grupo and ",
+ " a.cod_tipo = c.cod_tipo and a.cod_sec = c.cod_sec) AND ",
+ " (d.fecha between '", fecha_inicial USING "MM/dd/YYYY","' and '",
+ fecha_final USING "MM/dd/YYYY","') and ",
+ " (c.num_oc = d.num_oc) and (c.tipo=d.tipo) and (d.cod_sp=b.cod_sp AND ",
+ " d.cod_sp_sec = b.cod_sp_sec) and (c.rep_entrada = d.rep_entrada) and ",
+ " (c.status_t is null) and d.liquidada='",elije,"' and c.tipo = 1 ",
+ " AND (a.status_t IS NULL) AND (d.status_t IS NULL) and ",
+ criterio CLIPPED,
+ " ORDER BY c.num_oc,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec "
+ END IF
+ DISPLAY selec
+ DISPLAY "elije ",elije
+ LET idx = 1
+ PREPARE comando FROM selec
+ DECLARE busca CURSOR FOR comando
+
+ INSERT INTO cttb000log1 VALUES (GETDATE(),usuarios,'lqprrp004','ELIMINO')
+ FOREACH busca INTO busca_datos.*
+ DISPLAY "datos ",busca_datos.cod_sp_sec," ",busca_datos.descripcion
+ LET orden = busca_datos.num_oc USING "<<<<<<"
+
+ IF busca_datos.imp_colect is null THEN
+ LET busca_datos.imp_colect = 0
+ END IF
+
+ IF busca_datos.imp_colect < 0 THEN
+ LET busca_datos.imp_colect = busca_datos.imp_colect * -1
+ END IF
+
+ IF busca_datos.imp_aduana is null THEN
+ LET busca_datos.imp_aduana = 0
+ END IF
+
+ IF busca_datos.imp_aduana < 0 THEN
+ LET busca_datos.imp_aduana = busca_datos.imp_aduana * -1
+ END IF
+
+ # Busca el costos standard
+ LET busca_datos.cost_std = 0
+ IF tipo_inventario = '2' THEN
+ SELECT AVG(a.material+a.labor+a.gastos) INTO busca_datos.cost_std
+ FROM iptb00004 a
+ WHERE a.ventas = "1" and
+ a.ano = year(fecha_inicial) and a.cod_n = busca_datos.cod_n and
+ a.cod_grupo = busca_datos.cod_grupo and
+ a.cod_tipo = busca_datos.cod_tipo and
+ a.cod_sec = busca_datos.cod_sec and a.status_t is NULL
+ ELSE
+ SELECT AVG(a.costo_st) INTO busca_datos.cost_std
+ FROM intb00013 a
+ WHERE a.ano = year(fecha_inicial) and a.cod_n = busca_datos.cod_n and
+ a.cod_grupo = busca_datos.cod_grupo and
+ a.cod_tipo = busca_datos.cod_tipo and
+ a.cod_sec = busca_datos.cod_sec and a.status_t is NULL
+
+ END IF
+ IF STATUS = NOTFOUND THEN
+ LET busca_datos.cost_std = 0
+ END IF
+
+ IF busca_datos.cost_std is null THEN
+ LET busca_datos.cost_std = 0
+ END IF
+
+ IF chstd = "yes" THEN
+
+ DELETE FROM cttb00013 WHERE (fecha_lq = fecha_final AND
+ tipo_lq = elije AND
+ tipo_orden = 2 AND
+ num_oc = busca_datos.num_oc)
+ END IF
+
+ IF imp="S" THEN
+ LET r_filename ="lqprrp004.4rp"
+ IF idx = 1 THEN
+ IF fgl_report_loadCurrentSettings(r_filename) THEN
+ LET preview=1
+ CALL seleccionarsalida() RETURNING r_output -- load the .4rp file
+ CALL fgl_report_selectDevice(r_output) -- changing default
+ CALL fgl_report_selectPreview(preview) -- changing default
+ # CALL fgl_report_configurexlsxdevice(null,null,null,false,false,null,1)
+ LET handler = fgl_report_commitCurrentSettings() -- commit changes
+ END IF
+ LET idx = 2
+ START REPORT liquida1 TO XML HANDLER HANDLER
+ END IF
+ DISPLAY "DATOS "
+ OUTPUT TO REPORT liquida1(busca_datos.*)
+ END IF
+ END FOREACH
+
+ IF imp = "S" THEN
+ IF idx > 1 THEN
+ FINISH REPORT liquida1
+ ELSE
+ CALL fgl_winmessage("INFO","NO ENCONTRE INFORMACION CON ESOS PARAMETROS","INFO")
+ END IF
+ END IF
+
+ IF imp_entrada = "S" THEN
+ CALL edprrp0271()
+ END IF
+END FUNCTION
+
+REPORT liquida1(x)
+ DEFINE x RECORD
+ cod_n SMALLINT,
+ cod_grupo SMALLINT,
+ cod_tipo SMALLINT,
+ cod_sec SMALLINT,
+ descripcion CHAR(30),
+ unidad CHAR(3),
+ cod_sp SMALLINT,
+ cod_sp_sec SMALLINT,
+ proveedor CHAR(7),
+ num_doc INTEGER,
+ num_oc INTEGER,
+ tipo CHAR(2),
+ cantidad DECIMAL(12,5),
+ precio DECIMAL(12,5),
+ flete DECIMAL(12,5),
+ imp_colect DECIMAL(12,5),
+ imp_aduana DECIMAL(12,5),
+ tasa DECIMAL(8,2),
+ cost_std LIKE intb00013.costo_st
+ END RECORD
+
+ DEFINE valor DECIMAL(12,2)
+ DEFINE variacion,precio_std,fob,c_f,seguro,cost_pl,
+ t_fob,t_flete,t_seguro,t_cf,t_impcol,t_impaduana,t_dollar,
+ t_costopl,t_recibida,t_precio,o_variacion
+ DECIMAL(12,2)
+
+ DEFINE no_reg SMALLINT
+ DEFINE total_cf,t_costo, costo_unit DECIMAL(12,2),
+ o_impaduana,o_impcolect,o_dollar,o_cf
+ DECIMAL(12,2)
+ DEFINE ot_fob,
+ ot_flete,
+ ot_cf,
+ ot_seguro,
+ ot_impcol,
+ ot_impaduana,
+ ot_dollar,
+ ot_costopl,
+ ot_costo,
+ ot_precio,
+ ot_costst,
+ ot_variacion DECIMAL(12,2)
+
+ ## DEFINICION DE LAS VARIABLES DE IMPRESION
+ DEFINE hora CHAR(5)
+ DEFINE fechaActual, orden_tipo CHAR(12)
+ DEFINE codigo CHAR(25)
+ DEFINE codigos_sp, tituloFecha CHAR(25)
+ DEFINE material,titulo STRING
+
+ {OUTPUT
+ ## DEFINICION DE LOS MARGENES DE IMPRESION
+ TOP MARGIN 0
+ LEFT MARGIN 0
+ BOTTOM MARGIN 3
+ PAGE LENGTH 150}
+ FORMAT
+ PAGE HEADER
+ LET hora = TIME
+ LET fechaActual = today using "dd/mm/yy"
+ IF tipo_inventario = '2' THEN
+ LET titulo = 'Liquidacion Mercancias Productos Terminados'
+ ELSE
+ LET titulo = 'Liquidacion Mercancias Materia Prima'
+ END IF
+ IF primera = "S" THEN
+ LET t_fob = 0
+ LET t_flete = 0
+ LET t_seguro = 0
+ LET t_cf = 0
+ LET t_impcol = 0
+ LET t_impaduana = 0
+ LET t_dollar = 0
+ LET t_costopl = 0
+ LET t_recibida = 0
+ LET t_costo = 0
+ LET t_precio = 0
+ LET t_costst = 0
+ LET t_variacion = 0
+ LET o_variacion = 0
+ LET primera = "N"
+ LET idz = 1
+ END IF
+
+BEFORE GROUP OF x.num_oc
+
+ IF total_cf is null THEN
+ LET total_cf = 0
+ END IF
+
+ LET ot_fob =0
+ LET ot_flete =0
+ LET ot_cf =0
+ LET ot_seguro =0
+ LET ot_impcol =0
+ LET ot_impaduana =0
+ LET ot_dollar =0
+ LET ot_costopl =0
+ LET ot_costo =0
+ LET ot_precio =0
+ LET ot_costst =0
+ LET ot_variacion =0
+ LET tituloFecha = "Del ",fecha_inicial USING "dd/mm/yy"," Al ", fecha_final USING "dd/mm/yy"
+ ## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS
+ PRINTX p_compania.nombre, hora,tituloFecha, fechaActual,fecha_inicial USING "dd/mm/yy",
+ fecha_final USING "dd/mm/yy",titulo
+ ON EVERY ROW
+
+ LET seguro = 0
+ LET codigo = x.cod_n using "&&&&&","-",x.cod_grupo using "&&&&&","-",
+ x.cod_tipo using "&&&&&","-",x.cod_sec using "&&&&&"
+ LET codigos_sp = x.cod_sp using "&&","-",x.cod_sp_sec using "&&&&"
+ LET orden_tipo = x.num_oc using "&&&&&","-",x.tipo
+
+ SELECT CONVERT(CHAR(10),MIN(a.fecha),101) INTO p_fecha FROM iptb00006 a
+ WHERE a.num_doc = x.num_doc and cod_mov in (10) AND status_t IS NULL
+
+ LET fob = x.precio
+
+ LET c_f = fob + x.flete
+ LET valor = c_f * x.tasa
+
+ IF elije = "L" THEN
+ LET seguro = 0
+ END IF
+
+ IF no_reg > 1 THEN
+ LET x.imp_aduana = (x.imp_aduana / total_cf) * c_f
+ LET x.imp_colect = (x.imp_colect / total_cf) * c_f
+ END IF
+
+ LET cost_pl = seguro + c_f + x.imp_colect + x.imp_aduana + valor
+ LET costo_unit = cost_pl / x.cantidad
+ LET precio_std = x.cantidad * x.cost_std
+ LET variacion = cost_pl - precio_std
+ LET material = "(",codigo,")","-",x.descripcion CLIPPED
+
+ PRINTX material, codigos_sp,x.proveedor, orden_tipo,
+ fob, x.flete, c_f, seguro, x.imp_colect, x.imp_aduana,
+ valor, cost_pl, x.cantidad, costo_unit, x.cost_std, precio_std,
+ variacion
+
+ IF tipo_inventario = '2' THEN
+ IF chstd = "YES" THEN
+ SELECT UNIQUE a.cod_n FROM iptb00004 a
+ WHERE a.cod_n = x.cod_n AND
+ a.cod_grupo = x.cod_grupo AND
+ a.cod_tipo = x.cod_tipo AND
+ a.cod_sec = x.cod_sec AND
+ a.ano = p_ano and
+ a.mes_ini = 1 AND
+ a.mes_fin = 12
+ IF STATUS = NOTFOUND THEN
+ INSERT INTO iptb00004 (ventas,mes_ini,mes_fin,ano,cod_n,cod_grupo,cod_tipo,cod_Sec,material,labor,gastos,us_crea,fech_crea)
+ VALUES ('1','01','12',p_ano,x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec,costo_unit,0,0,SUSER_SNAME(),GETDATE())
+ END IF
+ END IF
+ ELSE
+ IF chstd = "YES" THEN
+ SELECT UNIQUE a.cod_n FROM intb00013 a
+ WHERE a.cod_n = x.cod_n AND
+ a.cod_grupo = x.cod_grupo AND
+ a.cod_tipo = x.cod_tipo AND
+ a.cod_sec = x.cod_sec AND
+ a.ano = p_ano AND
+ a.mes_ini = 1 AND
+ a.mes_fin = 12
+ IF STATUS = NOTFOUND THEN
+ INSERT INTO intb00013 VALUES ('01','12',p_ano,x.cod_n,x.cod_grupo,x.cod_tipo,
+ x.cod_sec,costo_unit,null,SUSER_SNAME(),GETDATE(),null,
+ NULL)
+ END IF
+ END IF
+
+ END IF
+
+ INSERT INTO cttb00013 (fecha_lq,fecha,tipo_lq,num_oc,cod_n,cod_grupo,cod_tipo,cod_sec,cantidad,costo_lq,status_t,us_crea,fech_crea,tipo_orden)
+ VALUES (fecha_final,p_fecha,elije,x.num_oc,x.cod_n,x.cod_grupo,x.cod_tipo,
+ x.cod_sec,x.cantidad,costo_unit,null,usuarios,GETDATE(),x.tipo)
+
+ INSERT INTO cttb000log2
+ (fecha_lq,fecha,tipo_lq,num_oc,cod_n,cod_grupo,cod_tipo,cod_sec)
+ VALUES (fecha_final,p_fecha,elije,x.num_oc,x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec)
+
+ # Acumulacion de totales
+ IF o_impaduana is null THEN
+ LET o_impaduana = 0
+ END IF
+ IF o_variacion is null THEN
+ LET o_variacion = 0
+ END IF
+ IF o_impcolect is null THEN
+ LET o_impcolect = 0
+ END IF
+ IF o_dollar is null THEN
+ LET o_dollar = 0
+ END IF
+ IF o_cf is null THEN
+ LET o_cf = 0
+ END IF
+
+ LET t_fob = t_fob + fob
+ LET t_flete = t_flete + x.flete
+ LET t_seguro = t_seguro + seguro
+ LET t_cf = t_cf + c_f
+ LET t_impcol = t_impcol + x.imp_colect
+ LET t_impaduana = t_impaduana + x.imp_aduana
+ LET t_dollar = t_dollar + valor
+ LET t_costopl = t_costopl + cost_pl
+ LET t_costo = t_costo + costo_unit
+ LET t_precio = t_precio + x.cost_std
+ LET t_costst = t_costst + precio_std
+ LET t_variacion = t_variacion + variacion
+
+ LET o_variacion = o_variacion + cost_pl
+ LET o_impaduana = o_impaduana + x.imp_aduana + seguro
+ LET o_impcolect = o_impcolect + x.imp_colect
+ LET o_dollar = o_dollar + valor
+ LET o_cf = o_cf + c_f
+
+ LET ot_fob = ot_fob + fob
+ LET ot_flete = ot_flete + x.flete
+ LET ot_cf = ot_cf + c_f
+ LET ot_seguro = ot_seguro + seguro
+ LET ot_impcol = ot_impcol + x.imp_colect
+ LET ot_impaduana = ot_impaduana + x.imp_aduana
+ LET ot_dollar = ot_dollar + valor
+ LET ot_costopl = ot_costopl + cost_pl
+ LET ot_costo = ot_costo + costo_unit
+ LET ot_precio = ot_precio + x.cost_std
+ LET ot_costst = ot_costst + precio_std
+ LET ot_variacion = ot_variacion + variacion
+
+ AFTER GROUP OF x.num_oc
+ # Validacion del arreglo para imprimir la entrada 27
+
+ IF imp_entrada = "S" THEN
+ LET entrada27[idz].cuenta_no = "1161"
+ LET entrada27[idz].cod_aux = x.cod_sp
+ LET entrada27[idz].cod_sec = x.cod_sp_sec
+ LET entrada27[idz].num_doc = x.num_oc
+ LET entrada27[idz].valor = o_impaduana
+ LET o_impaduana = 0
+ LET idz = idz + 1
+
+ LET entrada27[idz].cuenta_no = "1161-01"
+ LET entrada27[idz].cod_aux = x.cod_sp
+ LET entrada27[idz].cod_sec = x.cod_sp_sec
+ LET entrada27[idz].num_doc = x.num_oc
+ LET entrada27[idz].valor = o_impcolect
+ LET o_impcolect = 0
+ LET idz = idz + 1
+
+ LET entrada27[idz].cuenta_no = "1161-02"
+ LET entrada27[idz].cod_aux = x.cod_sp
+ LET entrada27[idz].cod_sec = x.cod_sp_sec
+ LET entrada27[idz].num_doc = x.num_oc
+ LET entrada27[idz].valor = o_dollar
+ LET o_dollar = 0
+ LET idz = idz + 1
+
+ LET entrada27[idz].cuenta_no = "1161-03"
+ LET entrada27[idz].cod_aux = x.cod_sp
+ LET entrada27[idz].cod_sec = x.cod_sp_sec
+ LET entrada27[idz].num_doc = x.num_oc
+ LET entrada27[idz].valor = o_cf
+ LET o_cf = 0
+ LET idz = idz + 1
+
+ END IF
+
+ PRINTX ot_fob,ot_flete,ot_cf,ot_seguro,ot_impcol,ot_impaduana, ot_dollar,
+ ot_costopl,ot_costo, ot_precio,ot_costst,ot_variacion
+
+ ON LAST ROW
+
+ PRINTX t_fob, t_flete, t_cf,t_seguro,t_impcol,t_impaduana,t_dollar,
+ t_costopl,t_costo,t_precio,t_costst,t_variacion
+
+ LET o_impaduana = 0
+ LET o_impcolect = 0
+ LET o_dollar = 0
+ LET o_cf = 0
+ END REPORT
+
+{-------------------------------------------------------------------------------
+PROGRAMA : EDPRRP027
+OBJETIVO : Listar las Entrada de Diario Productos Terminados
+PROGRAMADOR : Juan F. Soto
+FECHA REALIZACION : Mayo 20, 1994.
+-------------------------------------------------------------------------------}
+
+FUNCTION edprrp0271()
+
+ #WHENEVER ERROR CONTINUE
+ DEFINE longitud,u_mes,numero_ent,i SMALLINT,
+ ch_ano CHAR(4)
+ LET r_filename ="lqprrp004b.4rp"
+
+ OPTIONS
+ FORM LINE 8,
+ ERROR LINE 23,
+ COMMENT LINE 21
+
+ ##### Abriendo y desplegando el formulario de captura de datos
+ OPEN FORM edfmrp027 FROM "edfmrp027"
+ DISPLAY FORM edfmrp027
+
+ { DISPLAY "edprrp027" AT 4,3
+ DISPLAY "Entrada de Diario Mat. Importada Rec." AT 6,21}
+
+ { LET tipo_papel = 1
+ CALL msgrp000(tipo_papel)}
+
+ ###### Aceptando los valores para el rango de fecha
+
+ INPUT BY NAME entra,fecha1,fecha2,afecta,detalla
+ BEFORE INPUT
+ LET numero_ent = 27
+ LET fecha1 =fecha_inicial
+ LET fecha2 =fecha_final
+ DISPLAY BY NAME fecha1,fecha2
+
+ CALL controlNumericoED(numero_ent, fecha1, NULL) RETURNING entra
+ DISPLAY BY NAME entra
+
+ AFTER FIELD entra
+ LET longitud = LENGTH(entra)
+ IF longitud != 16 THEN
+ LET numero_msg = 77
+ CALL msg(numero_msg)
+ NEXT FIELD entra
+ END IF
+ LET existe = "N"
+ SELECT unique a.ref FROM cgtb00004 a WHERE a.ref = entra
+
+ IF STATUS != NOTFOUND THEN
+ LET existe = "S"
+ END IF
+
+ AFTER FIELD fecha1
+ IF fecha1 IS NULL THEN
+ ERROR "(16) CAMPO EN BLANCO"
+ NEXT FIELD fecha1
+ END IF
+
+ AFTER FIELD fecha2
+ IF fecha2 is null THEN
+ ERROR "(16) CAMPO EN BLANCO"
+ NEXT FIELD fecha2
+ END IF
+
+ IF fecha1 > fecha2 THEN
+ ERROR "(149) FECHA NO PUEDE SER MAYOR QUE LA ANTERIOR"
+ NEXT FIELD fecha1
+ END IF
+
+ ###### Selecionando en rango de fecha de la tabla de periodo para el fecha2
+
+ AFTER INPUT
+
+ IF int_flag THEN
+ ERROR "(2) OPERACION CANCELADA"
+ LET int_flag = false
+ RETURN
+ END IF
+ IF fecha2 > TODAY THEN
+ CALL msg(57)
+ END IF
+ END INPUT
+ ##### Creando la facilidad para cancelar proceso con DELETE O SUPR
+
+ LET i = 1
+
+ {CALL configureoutput("XLS") RETURNING handler
+ START REPORT entrada271 TO XML HANDLER handler}
+ IF i = 1 THEN
+
+ IF fgl_report_loadCurrentSettings(r_filename) THEN
+
+ LET preview=1
+ CALL seleccionarsalida() RETURNING r_output -- load the .4rp file
+ CALL fgl_report_selectDevice(r_output) -- changing default
+ CALL fgl_report_selectPreview(preview) -- changing default
+ LET handler = fgl_report_commitCurrentSettings() -- commit changes
+
+ END IF
+ LET i = 2
+ START REPORT entrada271 TO XML HANDLER HANDLER
+ END IF
+
+ DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
+ AT 19,14 ATTRIBUTE (REVERSE)
+
+ ##### Loop para enviar informacion al reporte
+
+ LET diario1.debito = t_costst
+ IF tipo_inventario = "2" THEN
+ LET diario1.cuenta_no = "1131-02"
+ ELSE
+ LET diario1.cuenta_no = "1151"
+ END IF
+ OUTPUT TO REPORT entrada271(diario1.*,fecha1,fecha2,detalla,entra)
+
+ IF i > 1 THEN
+ FINISH REPORT entrada271
+ END IF
+ END FUNCTION
+
+#### Funcion para dar salida ordenada a la informacion requerida de
+#### una entrada de diario de nominas local
+
+REPORT entrada271(x,fecha1,fecha2,detalle1,entrada)
+
+ DEFINE x RECORD
+ cuenta_no LIKE cgtb00001.cuenta_no,
+ debito DECIMAL(10,2)
+ END RECORD
+
+ ### Acumula los valores de las diferentes cuentas para entrada diario de nomina
+ DEFINE debito,credito DECIMAL(12,2)
+ DEFINE detalle1 CHAR(30)
+ DEFINE fecha1,fecha2 DATE #### Almacena las fecha del rango de busqueda
+ DEFINE numero_ent SMALLINT
+ DEFINE cod_aux_sec CHAR(6)
+ DEFINE doce CHAR(2)
+ DEFINE hora,referencia CHAR(5)
+ DEFINE entrada CHAR(25),
+ nombre_cta LIKE cgtb00001.descripcion
+ DEFINE fechaActual CHAR(12)
+
+ { OUTPUT
+ TOP MARGIN 0
+ LEFT MARGIN 0
+ BOTTOM MARGIN 2
+ PAGE LENGTH 150}
+
+ FORMAT
+ PAGE HEADER
+ LET hora = TIME
+ LET fechaActual = today using "dd/mm/yy"
+
+ ##### Selecionado la descripcion del fecha
+
+ BEFORE GROUP OF x.cuenta_no
+ PRINTX p_compania.nombre,hora,fechaActual,fecha1,fecha2,entrada,doce
+
+ ON EVERY ROW
+ SELECT a.descripcion INTO nombre_cta FROM cgtb00001 a
+ WHERE a.cuenta_no = x.cuenta_no
+
+ IF debito is null THEN
+ LET debito = 0
+ END IF
+
+ PRINTX x.cuenta_no, x.debito, nombre_cta
+
+ LET debito = debito + x.debito
+
+ IF afecta = "S" THEN
+ IF x.cuenta_no IS NOT NULL THEN
+ BEGIN WORK
+
+ LET numero_ent = 27
+ CALL controlNumericoED(numero_ent, fecha1, usuarios) RETURNING entra
+ DISPLAY BY NAME entra
+
+ LET entrada = entra
+
+ INSERT INTO cgtb00004
+ (fecha,tipo,ref,cuenta_no,detalle_1,debito,credito,us_crea,fech_crea)
+ VALUES(fecha2,1,entrada,x.cuenta_no,detalle1,x.debito,0,usuarios,GETDATE())
+ END IF
+ END IF
+
+ ON LAST ROW
+ IF tipo_inventario = "2" THEN
+ SELECT a.descripcion INTO nombre_cta FROM cgtb00001 a
+ WHERE a.cuenta_no = "5615"
+
+ LET debe = 0
+ LET haber = 0
+ LET referencia = "5615"
+ ELSE
+ SELECT a.descripcion INTO nombre_cta FROM cgtb00001 a
+ WHERE a.cuenta_no = "1152"
+
+ LET debe = 0
+ LET haber = 0
+ LET referencia = "1152"
+ END IF
+ IF credito is null THEN
+ LET credito = 0
+ END IF
+ IF debito is null THEN
+ LET debito = 0
+ END IF
+
+ IF t_variacion > 0 THEN
+ LET debito = debito + t_variacion
+ LET debe = t_variacion
+ IF afecta = "S" THEN
+ IF tipo_inventario = "2" THEN
+ INSERT INTO cgtb00004(fecha,tipo,ref,cuenta_no,detalle_1,debito
+ ,credito,us_crea,fech_crea)
+ VALUES(fecha2,1,entrada,"5615",detalle1,t_variacion,0,usuarios,GETDATE())
+ ELSE
+ INSERT INTO cgtb00004(fecha,tipo,ref,cuenta_no,detalle_1,debito
+ ,credito,us_crea,fech_crea)
+ VALUES(fecha2,1,entrada,"1152",detalle1,t_variacion,0,usuarios,GETDATE())
+ END IF
+ END IF
+ ELSE
+ LET t_variacion = t_variacion * -1
+ LET credito = credito + t_variacion
+ LET haber = t_variacion
+
+ IF afecta = "S" THEN
+ INSERT INTO cgtb00004(fecha,tipo,ref,cuenta_no,detalle_1,debito
+ ,credito,us_crea,fech_crea)
+ VALUES(fecha2,1,entrada,"5615",detalle1,0,t_variacion,SUSER_SNAME(),GETDATE() )
+ END IF
+ END IF
+
+ ###### Acumulando totales por columna
+ PRINTX referencia, nombre_cta, debe, haber
+ LET credito = 0
+ # Impresion detalle de la entrada con ordenes de compras
+ FOR i = 1 TO idz
+ # IF entrada27[i].cuenta_no IS NOT NULL THEN
+ # IF entrada27[i].cod_aux is not null THEN
+
+ IF entrada27[i].valor < 0 THEN
+ LET entrada27[i].valor = entrada27[i].valor * -1
+ END IF
+
+ LET cod_aux_sec = entrada27[i].cod_aux using "&&","-",entrada27[i].cod_sec using "&&&&"
+ IF cod_aux_sec IS NULL THEN
+ LET cod_aux_sec = ' '
+ END IF
+ # DISPLAY "datos ",i USING "<<<"," ",entrada27[i].cod_aux using "&&","-",entrada27[i].cod_sec using "&&&&"
+ PRINTX entrada27[i].cuenta_no, cod_aux_sec, entrada27[i].num_doc,
+ entrada27[i].valor
+ IF entrada27[i].valor IS NULL THEN
+ LET entrada27[i].valor=0
+ END IF
+ LET credito = credito + entrada27[i].valor
+
+ IF afecta = "S" THEN
+ IF entrada27[i].valor < 0 THEN
+ LET entrada27[i].valor = entrada27[i].valor * -1
+ END IF
+ IF entrada27[i].cuenta_no IS NOT NULL THEN
+ INSERT INTO cgtb00004 (fecha,tipo,ref,cuenta_no,num_doc,cod_aux
+ ,cod_sec,detalle_1,debito,credito,us_crea,fech_crea)
+ VALUES (fecha2,1,entrada,entrada27[i].cuenta_no,
+ entrada27[i].num_doc,entrada27[i].cod_aux,
+ entrada27[i].cod_sec,detalle1,0,
+ entrada27[i].valor,SUSER_SNAME(),GETDATE())
+ END IF
+ END IF
+ # END IF
+ #END IF
+ END FOR
+ IF afecta = "S" THEN
+ COMMIT WORK
+ END IF
+ ###### Imprime total DEBITO y total CREDITO
+ PRINTX debito,credito,detalle1
+ LET debito = 0
+ LET credito = 0
+END REPORT
+
diff --git a/PROYECTO/mbsERP.4pw b/PROYECTO/mbsERP.4pw
index 5f360ba..b489547 100644
--- a/PROYECTO/mbsERP.4pw
+++ b/PROYECTO/mbsERP.4pw
@@ -553,7 +553,7 @@
-
+
@@ -659,141 +659,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -973,21 +838,25 @@
-
+
+
-
+
+
-
+
+
-
+
+
@@ -1007,7 +876,7 @@
-
+
@@ -1074,12 +943,164 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PROYECTO/nodir/nofmrp041.4fd b/PROYECTO/nodir/nofmrp041.4fd
index 3fb25b7..da6d17d 100644
--- a/PROYECTO/nodir/nofmrp041.4fd
+++ b/PROYECTO/nodir/nofmrp041.4fd
@@ -1,20 +1,24 @@
-
+
+
+
+
-
-
-
diff --git a/PROYECTO/nodir/noprmt026.4gl b/PROYECTO/nodir/noprmt026.4gl
index 085541f..3b3df80 100644
--- a/PROYECTO/nodir/noprmt026.4gl
+++ b/PROYECTO/nodir/noprmt026.4gl
@@ -20,7 +20,9 @@ DEFINE rcol,arch_pc,prog STRING,
d_tipos,mensaje,f_tipos,filepath,p_res,res,fila,val STRING
DEFINE usuarios,clave CHAR(80),
- FILE,nombre_cia STRING
+ FILE,nombre_cia STRING,
+ celdas DICTIONARY OF STRING,
+ maxfila,maxcol INTEGER
END GLOBALS
MAIN
@@ -49,7 +51,7 @@ DEFINE ptss RECORD
departamento INT,
valor_isr DEC(12,2)
END RECORD,
- fecha_inicial,fecha_final DATE,
+ fecha_inicial,fecha_final,fecha_sig DATE,
kano,kmes, cnt,numero_msg SMALLINT,
cels CHAR(40),
filename,sysos CHAR(200),
@@ -79,7 +81,7 @@ DEFINE ptss RECORD
AFTER FIELD kmes
LET selec =
- "SELECT CONVERT(CHAR(10),MIN(a.fecha_del),103) ,CONVERT(CHAR(10),MAX(a.fecha_al),103) ",
+ "SELECT MIN(a.fecha_del), MAX(a.fecha_al) ",
" FROM notb00010 a ",
" WHERE a.ano ='", kano,"' AND a.mes ='", kmes, "'"
PREPARE busca_fecha FROM selec
@@ -98,6 +100,8 @@ DEFINE ptss RECORD
END INPUT
+ LET fecha_sig = fecha_final + 1 -- el +1 no se puede hacer dentro del SQL (date + int)
+
LET periodo = kmes USING "&&",kano USING "&&&&"
LET FILE = filepath
@@ -144,7 +148,7 @@ DEFINE ptss RECORD
CALL ui.Interface.refresh()
LET selec =
- " SELECT a.num_emp,b.nom1_emp,b.apell1_emp,b.apell2_emp,d.sexo,b.tipo_documento,b.cedula,convert(char(10),b.fech_nac,103),",
+ " SELECT a.num_emp,b.nom1_emp,b.apell1_emp,b.apell2_emp,d.sexo,b.tipo_documento,b.cedula,b.fech_nac,",
" SUM(a.valor),b.departamento ",
" FROM adtb00003 b, notb00008 a,notb00010 c,adtb00021 d ",
" WHERE b.num_emp = a.num_emp AND c.mes ='",kmes,"' AND ",
@@ -154,8 +158,8 @@ DEFINE ptss RECORD
" a.cod_mov in (1,40,36,5,24,51,34,56) AND ",
" a.num_emp = d.num_emp AND ",
#" a.cod_mov in (32) AND ",
- " convert(char(10), a.fecha,101) between '",fecha_inicial USING "mm/dd/yyyy",
- "' and '",fecha_final using "mm/dd/yyyy","' and b.nomina = 'Q' ",
+ " a.fecha >= '",fecha_inicial USING "yyyymmdd",
+ "' and a.fecha < '",(fecha_final + 1) using "yyyymmdd","' and b.nomina = 'Q' ",
" GROUP BY a.num_emp,b.nom1_emp,b.apell1_emp,b.apell2_emp,d.sexo,b.cedula,b.fech_nac,b.departamento,a.num_emp,b.tipo_documento ",
" ORDER BY b.departamento,a.num_emp "
ELSE
@@ -176,7 +180,7 @@ DEFINE ptss RECORD
CALL ui.Interface.refresh()
LET cnt = 15
LET selec =
- " SELECT a.num_emp,b.nom1_emp,b.apell1_emp,b.apell2_emp,d.sexo,b.tipo_documento,b.cedula,convert(char(10),b.fech_nac,103),",
+ " SELECT a.num_emp,b.nom1_emp,b.apell1_emp,b.apell2_emp,d.sexo,b.tipo_documento,b.cedula,b.fech_nac,",
" SUM(a.valor),a.departamento ",
" FROM adtb00003 b, notb00008 a,notb00010 c,adtb00021 d ",
" WHERE b.num_emp = a.num_emp AND b.status_t is not null and c.mes ='",kmes,"' AND ",
@@ -186,8 +190,8 @@ DEFINE ptss RECORD
#" a.cod_mov in (1,40,36,5,24,51,34) AND ",
" a.num_emp = d.num_emp AND ",
" a.cod_mov in (33) AND ",
- " convert(char(10), a.fecha,101) between '",fecha_inicial USING "mm/dd/yyyy",
- "' and '",fecha_final using "mm/dd/yyyy","' and b.nomina = 'Q' ",
+ " a.fecha >= '",fecha_inicial USING "yyyymmdd",
+ "' and a.fecha < '",(fecha_final + 1) using "yyyymmdd","' and b.nomina = 'Q' ",
" GROUP BY a.num_emp,b.nom1_emp,b.apell1_emp,b.apell2_emp,d.sexo,b.cedula,b.fech_nac,a.departamento,a.num_emp,b.tipo_documento ",
" ORDER BY a.departamento,a.num_emp "
END IF
@@ -197,7 +201,7 @@ DEFINE ptss RECORD
LET cuenta = 0
IF tipo_reporte = 'NOR' THEN
- FOREACH busca INTO ptss.*
+ FOREACH busca INTO ptss.ficha THRU ptss.departamento
LET col = 2
LET fila = cnt
@@ -240,7 +244,7 @@ DEFINE ptss RECORD
LET col = 9
LET fila = cnt
- LET val = ptss.fecha_n
+ LET val = ptss.fecha_n USING "dd/mm/yyyy"
CALL enviaDDE(fila,col,val)
LET col = 10
@@ -253,7 +257,7 @@ DEFINE ptss RECORD
SELECT ISNULL(SUM(a.valor),0) INTO ptss.valor_isr
FROM notb00008 a
WHERE a.num_emp = ptss.ficha AND
- a.fecha BETWEEN fecha_inicial AND fecha_final AND
+ a.fecha >= fecha_inicial AND a.fecha < fecha_sig AND
a.clase_mov IN ("E","I") and a.cod_mov not in (32,33)
LET col = 12
@@ -267,7 +271,7 @@ DEFINE ptss RECORD
SELECT ISNULL(SUM(a.valor),0) INTO valor_boni
FROM notb00008 a
WHERE a.num_emp = ptss.ficha AND
- a.fecha BETWEEN fecha_inicial AND fecha_final AND
+ a.fecha >= fecha_inicial AND a.fecha < fecha_sig AND
a.clase_mov IN ("E","I") and a.cod_mov in (33)
# VARIFICACION VACACIONES
@@ -275,7 +279,7 @@ DEFINE ptss RECORD
SELECT ISNULL(SUM(a.valor),0) INTO valor_vacaciones
FROM notb00008 a
WHERE a.num_emp = ptss.ficha AND
- a.fecha BETWEEN fecha_inicial AND fecha_final AND
+ a.fecha >= fecha_inicial AND a.fecha < fecha_sig AND
a.clase_mov IN ("E","I") and a.cod_mov in (36)
IF valor_vacaciones =0 THEN
@@ -305,7 +309,7 @@ DEFINE ptss RECORD
SELECT SUM(a.valor) INTO valor_boni
FROM notb00008 a
WHERE a.num_emp = ptss.ficha AND
- a.fecha BETWEEN fecha_inicial AND fecha_final AND
+ a.fecha >= fecha_inicial AND a.fecha < fecha_sig AND
a.clase_mov IN ("E","I") and a.cod_mov in (32)
@@ -333,7 +337,7 @@ DEFINE ptss RECORD
ELSE
#BONI CANCELADOS
IF tipo_reporte = "BON1" THEN
- FOREACH busca INTO ptss.*
+ FOREACH busca INTO ptss.ficha THRU ptss.departamento
LET col = 2
LET fila = cnt
@@ -368,7 +372,7 @@ DEFINE ptss RECORD
LET col = 8
LET fila = cnt
- LET val = ptss.fecha_n
+ LET val = ptss.fecha_n USING "dd/mm/yyyy"
CALL enviaDDE(fila,col,val)
LET col = 9
@@ -392,32 +396,82 @@ DEFINE ptss RECORD
END IF
- CALL fgl_winmessage("INFO","REPROTE TERMINADO","INFO")
+ CALL escribeCSV(tipo_reporte,periodo) RETURNING mensaje
+ CALL fgl_winmessage("INFO","REPORTE TERMINADO. ARCHIVO: "||mensaje,"INFO")
+END FUNCTION
+
+-- Genero 6 (GDC 6.00) ya no incluye el modulo WINDDE: en lugar de llenar Excel
+-- celda por celda, cada "celda" se guarda en memoria y al final se escribe un
+-- CSV (separador ;) con las mismas filas y columnas de la plantilla de la TSS.
+FUNCTION celda_key(xf,xc)
+ DEFINE xf,xc INTEGER
+ DEFINE sf,sc STRING
+
+ LET sf = xf USING "<<<<<&"
+ LET sc = xc USING "<<<<<&"
+ RETURN sf || "," || sc
END FUNCTION
FUNCTION enviaDDE(xfila,xcol,xval)
- DEFINE xfila,xcol,xval,xcelda STRING
-
- DISPLAY "enviado ",xfila," c ",xcol," v ",xval
-
- LET xcelda = fila_office CLIPPED,xfila CLIPPED,"C",xcol CLIPPED
- DISPLAY "celda ",xcelda
- LET xval=xval CLIPPED
- CALL ui.Interface.frontCall("WINDDE","DDEPoke", [prog,file,xcelda,xval], [res] );
- CALL checkError(res)
+ DEFINE xfila,xcol INTEGER
+ DEFINE xval STRING
+ DEFINE k STRING
+ LET k = celda_key(xfila,xcol)
+ LET celdas[k] = xval CLIPPED
+ IF xfila > maxfila THEN LET maxfila = xfila END IF
+ IF xcol > maxcol THEN LET maxcol = xcol END IF
END FUNCTION
FUNCTION terminaDDE()
- CALL ui.Interface.frontCall("WINDDE","DDEFinishAll", [], [res] );
- CALL checkError(res)
-
+ CALL celdas.clear()
+ LET maxfila = 0
+ LET maxcol = 0
END FUNCTION
FUNCTION conectarDDE()
- CALL ui.Interface.frontCall("WINDDE","DDEConnect", [prog,file], [res] )
- CALL checkError(res)
+ CALL celdas.clear()
+ LET maxfila = 0
+ LET maxcol = 0
+END FUNCTION
+-- Escribe las celdas acumuladas en FGLSPOOL/noprmt026__.csv
+-- y devuelve la ruta del archivo.
+FUNCTION escribeCSV(xtipo,xperiodo)
+ DEFINE xtipo,xperiodo STRING
+ DEFINE ch base.Channel
+ DEFINE ruta STRING
+ DEFINE f,c INTEGER
+ DEFINE lin base.StringBuffer
+ DEFINE k,v STRING
+
+ LET ruta = FGL_GETENV("FGLSPOOL")
+ IF ruta IS NULL OR ruta.getLength() = 0 THEN LET ruta = "." END IF
+ LET ruta = ruta || "\\noprmt026_" || xtipo || "_" || xperiodo || ".csv"
+
+ LET ch = base.Channel.create()
+ LET lin = base.StringBuffer.create()
+ CALL ch.openFile(ruta,"w")
+ FOR f = 1 TO maxfila
+ CALL lin.clear()
+ FOR c = 1 TO maxcol
+ LET k = celda_key(f,c)
+ IF celdas.contains(k) THEN
+ LET v = celdas[k]
+ IF v.getIndexOf(";",1) > 0 OR v.getIndexOf("\"",1) > 0 THEN
+ LET v = "\"" || v.trim() || "\""
+ END IF
+ ELSE
+ LET v = ""
+ END IF
+ IF c > 1 THEN CALL lin.append(";") END IF
+ CALL lin.append(v)
+ END FOR
+ CALL ch.writeNoNL(lin.toString())
+ CALL ch.writeNoNL("\r\n")
+ END FOR
+ CALL ch.close()
+ RETURN ruta
END FUNCTION
FUNCTION checkError(res)
diff --git a/PROYECTO/nodir/noprrp041.4gl b/PROYECTO/nodir/noprrp041.4gl
index a78fdee..071c19a 100644
--- a/PROYECTO/nodir/noprrp041.4gl
+++ b/PROYECTO/nodir/noprrp041.4gl
@@ -71,7 +71,7 @@ END GLOBALS
END INPUT
- CONSTRUCT criterio ON a.supervisor, a.num_emp
+ CONSTRUCT criterio ON a.num_emp, b.num_emp
FROM cod_sup, num_emp
ON ACTION mostrar
@@ -79,9 +79,9 @@ END GLOBALS
b.num_emp, b.nombre, a.fecha,b.cantidad,b.valor,b.descrip_mov,a.num_doc,b.fech_crea
from notb00028 a
inner join notb00029 b on a.num_doc = b.num_doc
- inner join adtb00003 c on a.supervisor = c.num_emp
+ inner join adtb00003 c on a.num_emp = c.num_emp
where " , criterio CLIPPED, " and ","
- a.fecha between '", datos.fecha_inicial USING "mm/dd/yyyy" , "' and '",datos.fecha_final USING "mm/dd/yyyy","' "
+ a.fecha >= '", datos.fecha_inicial USING "yyyymmdd" , "' and a.fecha < '",(datos.fecha_final + 1) USING "yyyymmdd","' "
DISPLAY selec
PREPARE comando FROM selec
DECLARE cotizaciones CURSOR FOR comando