Mueve ipdir (Productos Terminados) de PROYECTOS a PROYECTO
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>
This commit is contained in:
@@ -0,0 +1,255 @@
|
||||
{
|
||||
===============================================================
|
||||
PROGRAMA : IPPRRP036
|
||||
OBJETIVO : COSTOS DE CALIDAD 2
|
||||
DESARROLLADOR : Ing. Elvis Garcia
|
||||
===============================================================
|
||||
}
|
||||
|
||||
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,
|
||||
titulo_col1 STRING,
|
||||
ventas_total DECIMAL(18, 2)
|
||||
|
||||
MAIN
|
||||
DEFER INTERRUPT
|
||||
|
||||
CALL ARG_VAL(1) RETURNING usuarios
|
||||
CALL ARG_VAL(2) RETURNING clave
|
||||
|
||||
CONNECT TO "smarmotech" USER usuarios USING clave
|
||||
|
||||
CALL ipprrp036()
|
||||
END MAIN
|
||||
|
||||
FUNCTION ipprrp036()
|
||||
|
||||
OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21
|
||||
|
||||
CLEAR SCREEN
|
||||
|
||||
OPEN FORM ipfmrp036 FROM "ipfmrp036"
|
||||
DISPLAY FORM ipfmrp036
|
||||
|
||||
INPUT BY NAME fecha1, fecha2
|
||||
|
||||
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
|
||||
|
||||
ON ACTION CANCEL
|
||||
EXIT PROGRAM
|
||||
|
||||
AFTER INPUT
|
||||
|
||||
LET idx = 1
|
||||
|
||||
-- Solo para mostrar en el header (referencia CAM).
|
||||
SELECT ISNULL(SUM(monto_bruto - descuento), 0)
|
||||
INTO ventas_total
|
||||
FROM ventas_facturas
|
||||
WHERE ano = YEAR(TODAY)
|
||||
AND numero_mes <= MONTH(TODAY)
|
||||
|
||||
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'
|
||||
|
||||
DECLARE buscar CURSOR FROM query
|
||||
FOREACH buscar INTO inv[idx].*
|
||||
LET idx = idx + 1;
|
||||
END FOREACH
|
||||
|
||||
IF idx > 1 THEN
|
||||
|
||||
LET r_filename = "ipprrp036.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, ventas_total)
|
||||
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, ventas_total)
|
||||
|
||||
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) -- PRODUCTOS: venta de la clase | DEPARTAMENTOS: MOV 30,31,55,56
|
||||
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 total_costoCalidad, costoCalidad, prod_costoCalidad DECIMAL (18,6)
|
||||
DEFINE container, titulo_columna1 STRING
|
||||
DEFINE ventas_total DECIMAL(18, 2)
|
||||
|
||||
DEFINE fecha1, fecha2, fecha_actual DATE
|
||||
|
||||
FORMAT
|
||||
FIRST PAGE HEADER
|
||||
LET fecha_actual = CURRENT
|
||||
PRINTX fecha1, fecha2, fecha_actual, titulo_columna1, ventas_total
|
||||
|
||||
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)
|
||||
|
||||
IF prod_general_fact IS NULL OR prod_general_fact = 0 THEN
|
||||
LET prod_costoCalidad = 0
|
||||
ELSE
|
||||
LET prod_costoCalidad = ((prod_mov44 + prod_mov12 + prod_mov13)
|
||||
/ ventas_total) * 100
|
||||
END IF
|
||||
|
||||
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
|
||||
IF x.total_fact IS NULL OR x.total_fact = 0 THEN
|
||||
LET costoCalidad = 0
|
||||
ELSE
|
||||
LET costoCalidad = ((x.mov12 + x.mov13 + x.mov44) /ventas_total) * 100
|
||||
END IF
|
||||
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)
|
||||
|
||||
IF total_general_fact IS NULL OR total_general_fact = 0 THEN
|
||||
LET total_costoCalidad = 0
|
||||
ELSE
|
||||
LET total_costoCalidad = ((total_mov44 + total_mov12 + total_mov13)
|
||||
/ ventas_total) * 100
|
||||
END IF
|
||||
|
||||
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
|
||||
Reference in New Issue
Block a user