Instruccion de Johnny: todos los directorios de fuentes de inventario deben migrarse de la carpeta temporal PROYECTOS a la carpeta real PROYECTO, ya que PROYECTOS sera eliminada. Se elimino tambien un archivo suelto sin relacion llamado "ipdir" que existia en PROYECTO (del commit inicial) y bloqueaba el nombre de la carpeta. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
287 lines
10 KiB
Plaintext
287 lines
10 KiB
Plaintext
{
|
|
===============================================================
|
|
PROGRAMA : IPPRRP035
|
|
OBJETIVO : COSTOS DE CALIDAD
|
|
DESARROLLADOR : Ing. Elvis García
|
|
===============================================================
|
|
}
|
|
|
|
GLOBALS "ipprgb000.4gl"
|
|
|
|
DEFINE
|
|
departamento INT,
|
|
fecha1 DATE,
|
|
fecha2 DATE,
|
|
inv DYNAMIC ARRAY OF RECORD
|
|
tipo_producto STRING,
|
|
origen_producto STRING,
|
|
mov44 DECIMAL(18, 2),
|
|
mov12 DECIMAL(18, 2),
|
|
mov13 DECIMAL(18, 2),
|
|
total DECIMAL(18, 2),
|
|
total_fact DECIMAL(18, 2)
|
|
END RECORD,
|
|
idx INT,
|
|
query STRING,
|
|
reporte_tipo TINYINT,
|
|
titulo_col1 STRING
|
|
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
|
|
CONNECT TO "smarmotech" USER usuarios USING clave
|
|
|
|
CALL ipprrp035()
|
|
END MAIN
|
|
|
|
FUNCTION ipprrp035()
|
|
|
|
OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21
|
|
|
|
CLEAR SCREEN
|
|
|
|
OPEN FORM ipfmrp035 FROM "ipfmrp035"
|
|
DISPLAY FORM ipfmrp035
|
|
|
|
INPUT BY NAME fecha1, fecha2, reporte_tipo
|
|
|
|
BEFORE INPUT
|
|
INITIALIZE fecha1, fecha2 TO NULL
|
|
|
|
AFTER FIELD fecha1
|
|
IF fecha1 IS NULL OR fecha1 > TODAY THEN
|
|
CALL msg(16)
|
|
NEXT FIELD fecha1
|
|
END IF
|
|
LET fecha2 = TODAY
|
|
DISPLAY BY NAME fecha2
|
|
|
|
AFTER FIELD fecha2
|
|
IF fecha2 IS NULL OR fecha2 < fecha1 THEN
|
|
CALL msg(16)
|
|
NEXT FIELD fecha1
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
|
|
LET idx = 1
|
|
|
|
IF reporte_tipo = 0 THEN
|
|
|
|
LET query =
|
|
"SELECT
|
|
a.producto,
|
|
a.origen,
|
|
CAST(ISNULL(SUM(CASE
|
|
WHEN a.codigo_mov = 44
|
|
THEN a.costo_standard * ABS(ISNULL(a.cantidad2,0))
|
|
ELSE 0
|
|
END),0) AS DECIMAL(18,2)) AS total_costo_44,
|
|
CAST(ISNULL(SUM(CASE
|
|
WHEN a.codigo_mov = 12
|
|
THEN a.costo_standard * ABS(ISNULL(a.cantidad2,0))
|
|
ELSE 0
|
|
END),0) AS DECIMAL(18,2)) AS total_costo_12,
|
|
CAST(ISNULL(SUM(CASE
|
|
WHEN a.codigo_mov = 13
|
|
THEN a.costo_standard * ABS(ISNULL(a.cantidad2,0))
|
|
ELSE 0
|
|
END),0) AS DECIMAL(18,2)) AS total_costo_13,
|
|
CAST(ISNULL(SUM(CASE
|
|
WHEN a.codigo_mov IN (44,12,13)
|
|
THEN a.costo_standard * ABS(ISNULL(a.cantidad2,0))
|
|
ELSE 0
|
|
END),0) AS DECIMAL(18,2)) AS total_costo_general,
|
|
CAST(ISNULL(SUM(CASE
|
|
WHEN a.codigo_mov IN (30,31,55,56)
|
|
THEN a.costo_standard * ABS(ISNULL(a.cantidad2,0))
|
|
ELSE 0
|
|
END),0) AS DECIMAL(18,2)) AS total_calculado
|
|
FROM vwipprodterm a
|
|
WHERE a.codigo_mov IN (44,12,13,30,31,55,56)
|
|
AND a.ano BETWEEN YEAR('",
|
|
fecha1 USING 'yyyy-mm-dd',
|
|
"') AND YEAR('",
|
|
fecha2 USING 'yyyy-mm-dd',
|
|
"')
|
|
AND a.mes_orden BETWEEN MONTH('",
|
|
fecha1 USING 'yyyy-mm-dd',
|
|
"') AND MONTH('",
|
|
fecha2 USING 'yyyy-mm-dd',
|
|
"')
|
|
GROUP BY a.origen, a.producto
|
|
ORDER BY a.origen, a.producto;
|
|
"
|
|
|
|
LET titulo_col1 = 'PRODUCTOS'
|
|
|
|
ELSE
|
|
|
|
LET query =
|
|
"SELECT
|
|
ISNULL(a.titulodepartamento, 'NO TIENE'),
|
|
a.origen,
|
|
CAST(ISNULL(SUM(CASE
|
|
WHEN a.codigo_mov = 44
|
|
THEN a.costo_standard * ABS(ISNULL(a.cantidad2,0))
|
|
ELSE 0
|
|
END),0) AS DECIMAL(18,2)) AS total_costo_44,
|
|
CAST(ISNULL(SUM(CASE
|
|
WHEN a.codigo_mov = 12
|
|
THEN a.costo_standard * ABS(ISNULL(a.cantidad2,0))
|
|
ELSE 0
|
|
END),0) AS DECIMAL(18,2)) AS total_costo_12,
|
|
CAST(ISNULL(SUM(CASE
|
|
WHEN a.codigo_mov = 13
|
|
THEN a.costo_standard * ABS(ISNULL(a.cantidad2,0))
|
|
ELSE 0
|
|
END),0) AS DECIMAL(18,2)) AS total_costo_13,
|
|
CAST(ISNULL(SUM(CASE
|
|
WHEN a.codigo_mov IN (44,12,13)
|
|
THEN a.costo_standard * ABS(ISNULL(a.cantidad2,0))
|
|
ELSE 0
|
|
END),0) AS DECIMAL(18,2)) AS total_costo_general,
|
|
CAST(ISNULL(SUM(CASE
|
|
WHEN a.codigo_mov IN (30,31,55,56)
|
|
THEN a.costo_standard * ABS(ISNULL(a.cantidad2,0))
|
|
ELSE 0
|
|
END),0) AS DECIMAL(18,2)) AS total_calculado
|
|
FROM vwipprodterm a
|
|
WHERE a.codigo_mov IN (44,12,13,30,31,55,56)
|
|
AND a.ano BETWEEN YEAR('",
|
|
fecha1 USING 'yyyy-mm-dd',
|
|
"') AND YEAR('",
|
|
fecha2 USING 'yyyy-mm-dd',
|
|
"')
|
|
AND a.mes_orden BETWEEN MONTH('",
|
|
fecha1 USING 'yyyy-mm-dd',
|
|
"') AND MONTH('",
|
|
fecha2 USING 'yyyy-mm-dd',
|
|
"')
|
|
GROUP BY a.origen, a.titulodepartamento
|
|
ORDER BY a.origen, a.titulodepartamento;
|
|
"
|
|
LET titulo_col1 = 'DEPARTAMENTOS'
|
|
END IF
|
|
|
|
DECLARE buscar CURSOR FROM query
|
|
FOREACH buscar INTO inv[idx].*
|
|
LET idx = idx + 1;
|
|
END FOREACH
|
|
|
|
IF idx > 1 THEN
|
|
|
|
LET r_filename = "ipprrp035.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 inv1 TO XML HANDLER HANDLER
|
|
|
|
FOR idx = 1 TO inv.getlength()
|
|
OUTPUT TO REPORT inv1(inv[idx].*, fecha1, fecha2, titulo_col1)
|
|
END FOR
|
|
|
|
FINISH REPORT inv1
|
|
ELSE
|
|
CALL fgl_winmessage("INFO", "NO EXISTEN REGISTROS", "INFO")
|
|
END IF
|
|
|
|
END INPUT
|
|
|
|
END FUNCTION
|
|
|
|
|
|
|
|
REPORT inv1(x, fecha1, fecha2, titulo_columna1)
|
|
|
|
DEFINE x RECORD
|
|
tipo_producto STRING,
|
|
origen_producto STRING,
|
|
mov44 DECIMAL(18, 2),
|
|
mov12 DECIMAL(18, 2),
|
|
mov13 DECIMAL(18, 2),
|
|
total DECIMAL(18, 2),
|
|
total_fact DECIMAL(18, 2)
|
|
END RECORD
|
|
|
|
DEFINE total_registros,total_mov44, total_mov12, total_mov13, total_general, total_general_fact DECIMAL(18, 2)
|
|
DEFINE registros_prod,prod_mov44, prod_mov12, prod_mov13, prod_general, prod_general_fact DECIMAL(18, 2)
|
|
DEFINE prod_costoCalidad, total_costoCalidad, costoCalidad DECIMAL(18,2)
|
|
DEFINE container, titulo_columna1 STRING
|
|
|
|
DEFINE fecha1, fecha2, fecha_actual DATE
|
|
|
|
FORMAT
|
|
FIRST PAGE HEADER
|
|
LET fecha_actual = CURRENT
|
|
PRINTX fecha1, fecha2, fecha_actual,titulo_columna1
|
|
|
|
AFTER GROUP OF x.origen_producto
|
|
LET prod_mov44 = GROUP SUM(x.mov44)
|
|
LET prod_mov12 = GROUP SUM(x.mov12)
|
|
LET prod_mov13 = GROUP SUM(x.mov13)
|
|
LET prod_general = GROUP SUM(x.total)
|
|
LET prod_general_fact = GROUP SUM(x.total_fact)
|
|
|
|
LET prod_costoCalidad = ((prod_mov44 + prod_mov12 + prod_mov13)
|
|
/ prod_general_fact) * 100
|
|
|
|
LET container = prod_costoCalidad, '%'
|
|
|
|
LET registros_prod = GROUP COUNT(*)
|
|
|
|
PRINTX registros_prod,prod_mov44, prod_mov12, prod_mov13,
|
|
prod_general, prod_general_fact, x.origen_producto, container
|
|
|
|
ON EVERY ROW
|
|
LET costoCalidad = ((x.mov12 + x.mov13 + x.mov44) / x.total_fact) * 100
|
|
LET container = costoCalidad, '%'
|
|
PRINTX x.mov12, x.mov13, x.mov44, x.tipo_producto, x.total, x.total_fact, container
|
|
|
|
ON LAST ROW
|
|
LET total_mov44 = SUM(x.mov44)
|
|
LET total_mov12 = SUM(x.mov12)
|
|
LET total_mov13 = SUM(x.mov13)
|
|
LET total_general = SUM(x.total)
|
|
LET total_general_fact = SUM(x.total_fact)
|
|
|
|
LET total_costoCalidad = ((total_mov44 + total_mov12 + total_mov13)
|
|
/ total_general_fact) * 100
|
|
|
|
LET container = total_costoCalidad, '%'
|
|
|
|
LET total_registros = COUNT(*)
|
|
|
|
PRINTX total_registros,total_mov44, total_mov12, total_mov13,
|
|
total_general, total_general_fact, container
|
|
|
|
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
|
|
|
|
|