Commit inicial: fuentes MBS ERP (Genero 6) + .gitignore + docs/SETUP_PC_MBS.md
This commit is contained in:
@@ -0,0 +1,261 @@
|
||||
{
|
||||
-------------------------------------------------------------------------------
|
||||
PROGRAMA : CTPRRP014
|
||||
OBJETIVO : Reporte Produccion Mensual
|
||||
PROGRAMADOR : Ing. Elvis García
|
||||
FECHA : Febrero 4, 2026.
|
||||
-------------------------------------------------------------------------------
|
||||
}
|
||||
GLOBALS "ctprgb000.4gl"
|
||||
|
||||
DEFINE
|
||||
abortar_reporte BOOLEAN,
|
||||
fecha_actual DATETIME YEAR TO FRACTION
|
||||
|
||||
DEFINE HANDLER om.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings()
|
||||
r_filename STRING, -- filename of Report Design Document including .4rp extension
|
||||
r_output STRING, -- output format option
|
||||
preview INTEGER -- TRUE/FALSE, to set preview option
|
||||
|
||||
DEFINE selec5 STRING
|
||||
DEFINE anos STRING
|
||||
|
||||
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 ctprrp004()
|
||||
END MAIN
|
||||
|
||||
FUNCTION ctprrp004()
|
||||
|
||||
DEFINE prod_dia RECORD
|
||||
semielaborado STRING,
|
||||
enero DECIMAL(12,2),
|
||||
febrero DECIMAL(12,2),
|
||||
marzo DECIMAL(12,2),
|
||||
abril DECIMAL(12,2),
|
||||
mayo DECIMAL(12,2),
|
||||
junio DECIMAL(12,2),
|
||||
julio DECIMAL(12,2),
|
||||
agosto DECIMAL(12,2),
|
||||
septiembre DECIMAL(12,2),
|
||||
octubre DECIMAL(12,2),
|
||||
noviembre DECIMAL(12,2),
|
||||
diciembre DECIMAL(12,2),
|
||||
total DECIMAL(12,2)
|
||||
END RECORD
|
||||
|
||||
OPTIONS ERROR LINE 24, FORM LINE 8
|
||||
|
||||
OPEN FORM ctfmrp004 FROM "ctfmrp014"
|
||||
DISPLAY FORM ctfmrp004
|
||||
|
||||
CONSTRUCT criterio ON c.cod_prod FROM cod_prod
|
||||
|
||||
BEFORE CONSTRUCT
|
||||
CALL anos()
|
||||
END CONSTRUCT
|
||||
|
||||
IF int_flag THEN
|
||||
LET numero_msg = 2
|
||||
CALL msg(numero_msg)
|
||||
LET int_flag = FALSE
|
||||
RETURN
|
||||
END IF
|
||||
|
||||
INPUT BY NAME anos ATTRIBUTES(WITHOUT DEFAULTS, UNBUFFERED)
|
||||
BEFORE INPUT
|
||||
CALL anos()
|
||||
LET anos = YEAR(CURRENT)
|
||||
|
||||
END INPUT
|
||||
|
||||
IF int_flag THEN
|
||||
LET numero_msg = 2
|
||||
CALL msg(numero_msg)
|
||||
LET int_flag = FALSE
|
||||
RETURN
|
||||
END IF
|
||||
|
||||
LET selec5 =
|
||||
"WITH costo_actual AS (
|
||||
SELECT
|
||||
cod_prod,
|
||||
costo_lab,
|
||||
ROW_NUMBER() OVER (
|
||||
PARTITION BY cod_prod
|
||||
ORDER BY fecha DESC
|
||||
) AS rn
|
||||
FROM cttb00034
|
||||
)
|
||||
SELECT
|
||||
CONCAT('(',c.cod_prod,') ',RTRIM(e.descripcion)),
|
||||
ISNULL(SUM(CASE WHEN MONTH(c.fecha) = 1 THEN c.cantidad * a.costo_lab ELSE 0 END),0) AS enero,
|
||||
ISNULL(SUM(CASE WHEN MONTH(c.fecha) = 2 THEN c.cantidad * a.costo_lab ELSE 0 END),0) AS febrero,
|
||||
ISNULL(SUM(CASE WHEN MONTH(c.fecha) = 3 THEN c.cantidad * a.costo_lab ELSE 0 END),0) AS marzo,
|
||||
ISNULL(SUM(CASE WHEN MONTH(c.fecha) = 4 THEN c.cantidad * a.costo_lab ELSE 0 END),0) AS abril,
|
||||
ISNULL(SUM(CASE WHEN MONTH(c.fecha) = 5 THEN c.cantidad * a.costo_lab ELSE 0 END),0) AS mayo,
|
||||
ISNULL(SUM(CASE WHEN MONTH(c.fecha) = 6 THEN c.cantidad * a.costo_lab ELSE 0 END),0) AS junio,
|
||||
ISNULL(SUM(CASE WHEN MONTH(c.fecha) = 7 THEN c.cantidad * a.costo_lab ELSE 0 END),0) AS julio,
|
||||
ISNULL(SUM(CASE WHEN MONTH(c.fecha) = 8 THEN c.cantidad * a.costo_lab ELSE 0 END),0) AS agosto,
|
||||
ISNULL(SUM(CASE WHEN MONTH(c.fecha) = 9 THEN c.cantidad * a.costo_lab ELSE 0 END),0) AS septiembre,
|
||||
ISNULL(SUM(CASE WHEN MONTH(c.fecha) = 10 THEN c.cantidad * a.costo_lab ELSE 0 END),0) AS octubre,
|
||||
ISNULL(SUM(CASE WHEN MONTH(c.fecha) = 11 THEN c.cantidad * a.costo_lab ELSE 0 END),0) AS noviembre,
|
||||
ISNULL(SUM(CASE WHEN MONTH(c.fecha) = 12 THEN c.cantidad * a.costo_lab ELSE 0 END),0) AS diciembre,
|
||||
ISNULL(SUM(c.cantidad * a.costo_lab),0) AS total
|
||||
FROM cttb00003 c
|
||||
INNER JOIN cttb00001 e ON c.cod_prod = e.cod_prod
|
||||
LEFT JOIN costo_actual a
|
||||
ON a.cod_prod = c.cod_prod
|
||||
AND a.rn = 1
|
||||
WHERE
|
||||
c.status_t IS NULL
|
||||
AND ",criterio,"
|
||||
AND YEAR(c.fecha) = ",anos,"
|
||||
GROUP BY
|
||||
c.cod_prod,
|
||||
e.descripcion;"
|
||||
|
||||
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>"
|
||||
AT 19, 14
|
||||
ATTRIBUTE(REVERSE, BOLD)
|
||||
|
||||
|
||||
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
|
||||
|
||||
FOREACH busca4 INTO prod_dia.*
|
||||
|
||||
IF prod_dia.semielaborado IS NULL THEN
|
||||
LET abortar_reporte = TRUE;
|
||||
END IF
|
||||
|
||||
OUTPUT TO REPORT reporte_mensual(prod_dia.*, anos, fecha_actual);
|
||||
END FOREACH
|
||||
|
||||
FINISH REPORT reporte_mensual
|
||||
|
||||
IF abortar_reporte THEN
|
||||
RETURN
|
||||
END IF
|
||||
|
||||
END FUNCTION
|
||||
|
||||
REPORT reporte_mensual(x, ano, fecha_actual)
|
||||
|
||||
DEFINE x RECORD
|
||||
semielaborado STRING,
|
||||
enero DECIMAL(12,2),
|
||||
febrero DECIMAL(12,2),
|
||||
marzo DECIMAL(12,2),
|
||||
abril DECIMAL(12,2),
|
||||
mayo DECIMAL(12,2),
|
||||
junio DECIMAL(12,2),
|
||||
julio DECIMAL(12,2),
|
||||
agosto DECIMAL(12,2),
|
||||
septiembre DECIMAL(12,2),
|
||||
octubre DECIMAL(12,2),
|
||||
noviembre DECIMAL(12,2),
|
||||
diciembre DECIMAL(12,2),
|
||||
total DECIMAL(12,2)
|
||||
END RECORD,
|
||||
ano STRING, fecha_actual DATETIME YEAR TO FRACTION
|
||||
|
||||
FORMAT
|
||||
|
||||
FIRST PAGE HEADER
|
||||
PRINTX ano, fecha_actual
|
||||
|
||||
ON EVERY ROW
|
||||
PRINTX x.*
|
||||
|
||||
END REPORT
|
||||
|
||||
|
||||
FUNCTION anos()
|
||||
DEFINE
|
||||
pano SMALLINT,
|
||||
kano ui.ComboBox
|
||||
LET kano = ui.ComboBox.forName("formonly.anos")
|
||||
CALL kano.clear()
|
||||
|
||||
LET pano = YEAR(CURRENT) - 20
|
||||
CALL kano.additem(pano, pano)
|
||||
|
||||
FOR idx = 1 TO 20
|
||||
|
||||
LET pano = pano + 1
|
||||
CALL kano.additem(pano, pano)
|
||||
|
||||
END FOR
|
||||
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION selectOutput()
|
||||
DEFINE
|
||||
r_output STRING, -- output format option
|
||||
r_action STRING, -- used to set preview option
|
||||
r_filename STRING, -- filename of Report Design document (the .4rp filename)
|
||||
preview INTEGER -- preview option TRUE/FALSE, to display report in Report Viewer
|
||||
|
||||
-- display form allowing user to select the .4rp filename and output options
|
||||
|
||||
OPTIONS INPUT WRAP
|
||||
OPEN WINDOW f_configuration WITH FORM "Configuration"
|
||||
LET INT_FLAG=FALSE
|
||||
LET preview = FALSE
|
||||
INPUT BY NAME r_output
|
||||
ON ACTION CANCEL
|
||||
EXIT PROGRAM
|
||||
ON ACTION CLOSE
|
||||
EXIT PROGRAM
|
||||
END INPUT
|
||||
CLOSE WINDOW f_configuration
|
||||
CALL ui.interface.refresh()
|
||||
|
||||
-- set preview variable to match output option r_action
|
||||
IF r_action IS NOT NULL THEN
|
||||
IF r_action == "preview" THEN
|
||||
LET preview = TRUE
|
||||
END IF
|
||||
END IF
|
||||
|
||||
--return report name (filename of Report Design Document) and output option variables to be used to configure the report engine
|
||||
RETURN r_output
|
||||
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION configureOutput(tipo_file)
|
||||
DEFINE tipo_file CHAR(3)
|
||||
IF NOT fgl_report_loadCurrentSettings(NULL) 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()
|
||||
|
||||
RETURN NULL
|
||||
END FUNCTION
|
||||
Reference in New Issue
Block a user