Commit inicial: fuentes MBS ERP (Genero 6) + .gitignore + docs/SETUP_PC_MBS.md
This commit is contained in:
@@ -0,0 +1,230 @@
|
||||
{=====================================================
|
||||
FUNCION : REPORTE ANÁLISIS PRODUCCIÓN
|
||||
OBJETIVO : ***************************
|
||||
PROGRAMADOR : ELVIS GARCÍA
|
||||
FECHA : 17 de abril, 2025
|
||||
=====================================================}
|
||||
GLOBALS "prprgb000.4gl"
|
||||
SCHEMA smarmotech
|
||||
|
||||
DEFINE datos RECORD
|
||||
fecha_inicial DATE,
|
||||
fecha_final DATE
|
||||
END RECORD,
|
||||
pcompanias RECORD LIKE companias.*
|
||||
|
||||
DEFINE data_prod DYNAMIC ARRAY OF RECORD
|
||||
descripcion LIKE cttb00001.descripcion ,
|
||||
nom_departamento LIKE adtb00001.nom_dpto,
|
||||
cantidad LIKE cttb00003.cantidad,
|
||||
valor LIKE cttb00003.costo_gasto
|
||||
END RECORD
|
||||
|
||||
MAIN
|
||||
DEFER INTERRUPT
|
||||
CALL ARG_VAL(1) RETURNING usuarios
|
||||
CALL ARG_VAL(2) RETURNING clave
|
||||
|
||||
CONNECT TO "smarmotech" USER usuarios USING clave
|
||||
|
||||
SELECT * INTO pcompanias.* FROM companias
|
||||
|
||||
CALL analisis_produccion()
|
||||
END MAIN
|
||||
|
||||
|
||||
|
||||
FUNCTION analisis_produccion()
|
||||
|
||||
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
|
||||
criterio STRING
|
||||
|
||||
OPEN WINDOW HOME_FRM WITH FORM 'prfmrp021'
|
||||
DIALOG ATTRIBUTE(UNBUFFERED)
|
||||
INPUT BY NAME datos .*
|
||||
|
||||
AFTER FIELD fecha_final
|
||||
|
||||
IF datos.fecha_inicial IS NULL AND DATOS.fecha_final IS NOT NULL THEN
|
||||
CALL fgl_winmessage("INFO", "SI ESPECIFICA UN RANGO DE FECHA DEBE INDICAR FECHA INICIAL", "INFO")
|
||||
NEXT FIELD fecha_inicial
|
||||
END IF
|
||||
|
||||
IF datos.fecha_final < datos.fecha_inicial THEN
|
||||
CALL fgl_winmessage("INFO", "LA FECHA FINAL DEBE SER MAS RECIENTE A LA INICIAL", "INFO")
|
||||
NEXT FIELD fecha_final
|
||||
END IF
|
||||
END INPUT
|
||||
CONSTRUCT BY NAME criterio ON c.departamento, c.cod_prod
|
||||
BEFORE CONSTRUCT
|
||||
CALL departamentos()
|
||||
|
||||
AFTER CONSTRUCT
|
||||
LET selec =
|
||||
"SELECT '(' + CAST(a.cod_prod AS VARCHAR) + ') ' + a.descripcion, b.nom_dpto, SUM(c.cantidad) as cantidad, SUM(c.costo_gasto) as valor
|
||||
FROM cttb00003 c inner join adtb00001 b on c.departamento = b.departamento
|
||||
INNER JOIN cttb00001 a on a.cod_prod = c.cod_prod
|
||||
WHERE c.fecha between '",datos.fecha_inicial USING "MM/DD/YYYY","' AND '",datos.fecha_final USING "MM/DD/YYYY" ,"'
|
||||
AND c.status_t IS NULL AND ",criterio CLIPPED,"
|
||||
group by a.cod_prod, a.descripcion, b.nom_dpto"
|
||||
|
||||
PREPARE comando FROM selec
|
||||
DECLARE produccion CURSOR FOR comando
|
||||
|
||||
LET r_filename = 'prprrp021.4rp'
|
||||
|
||||
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
|
||||
|
||||
LET preview=1
|
||||
CALL seleccionarsalida() 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
|
||||
|
||||
IF HANDLER IS NOT NULL THEN
|
||||
|
||||
START REPORT analisis_prod TO XML HANDLER HANDLER
|
||||
|
||||
LET idx = 1
|
||||
|
||||
FOREACH produccion INTO data_prod[idx].*
|
||||
OUTPUT TO REPORT analisis_prod(data_prod[idx].*,datos.*)
|
||||
LET idx = idx + 1
|
||||
END FOREACH
|
||||
|
||||
IF idx > 1 THEN
|
||||
FINISH REPORT analisis_prod
|
||||
ELSE
|
||||
CALL fgl_winmessage("INFO", "NO HAY REGISTROS EN ESTE RANGO DE FECHA Y CON LOS PARAMETROS INDICADOS", "INFO")
|
||||
NEXT FIELD fecha_final
|
||||
END IF
|
||||
|
||||
END IF
|
||||
|
||||
END CONSTRUCT
|
||||
|
||||
ON ACTION CANCEL
|
||||
CALL msg(2)
|
||||
LET INT_FLAG = FALSE
|
||||
EXIT PROGRAM
|
||||
END DIALOG
|
||||
CLOSE WINDOW HOME_FRM
|
||||
END FUNCTION
|
||||
|
||||
REPORT analisis_prod(x, y)
|
||||
|
||||
DEFINE x RECORD
|
||||
descripcion LIKE cttb00001.descripcion ,
|
||||
nom_departamento LIKE adtb00001.nom_dpto,
|
||||
cantidad LIKE cttb00003.cantidad,
|
||||
valor LIKE cttb00003.costo_gasto
|
||||
END RECORD
|
||||
|
||||
DEFINE y RECORD
|
||||
fecha_inicial DATE,
|
||||
fecha_final DATE
|
||||
END RECORD
|
||||
|
||||
DEFINE fecha_reporte DATE, rango_fecha VARCHAR(75), total_cantidad, total_valor FLOAT
|
||||
|
||||
ORDER BY x.nom_departamento,x.descripcion
|
||||
FORMAT
|
||||
|
||||
|
||||
BEFORE GROUP OF x.nom_departamento
|
||||
LET total_cantidad = 0
|
||||
LET total_valor = 0
|
||||
|
||||
ON EVERY ROW
|
||||
LET fecha_reporte = CURRENT USING "MM/DD/YYYY"
|
||||
LET rango_fecha = y.fecha_inicial,'--',y.fecha_final
|
||||
|
||||
|
||||
PRINTX rango_fecha, x.descripcion, x.nom_departamento, x.cantidad, x.valor, fecha_reporte
|
||||
|
||||
AFTER GROUP OF x.nom_departamento
|
||||
LET total_cantidad = GROUP SUM(x.cantidad)
|
||||
LET total_valor = GROUP SUM(x.valor)
|
||||
PRINTX total_cantidad, total_valor
|
||||
END REPORT
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
FUNCTION seleccionarSalida()
|
||||
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
|
||||
#CLOSE WINDOW SCREEN
|
||||
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 departamentos()
|
||||
DEFINE pdepartamento SMALLINT,pdescripcion CHAR(30),
|
||||
kdepto ui.ComboBox
|
||||
LET kdepto = ui.ComboBox.forName("formonly.departamento")
|
||||
CALL kdepto.clear()
|
||||
|
||||
DECLARE busca_dpto CURSOR FOR
|
||||
SELECT a.departamento,a.nom_dpto FROM adtb00001 a
|
||||
WHERE a.status_t IS NULL
|
||||
ORDER BY a.nom_dpto
|
||||
|
||||
FOREACH busca_dpto INTO pdepartamento,pdescripcion
|
||||
CALL kdepto.additem(pdepartamento,pdescripcion)
|
||||
END FOREACH
|
||||
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION msg(numero_msg)
|
||||
DEFINE numero_msg SMALLINT
|
||||
DEFINE descripcion CHAR (60)
|
||||
SELECT desc_msg INTO descripcion FROM msgtable
|
||||
WHERE cod_msg = numero_msg
|
||||
|
||||
IF status = NOTFOUND THEN
|
||||
|
||||
SELECT desc_msg INTO descripcion FROM msgtable
|
||||
WHERE cod_msg = 22
|
||||
LET descripcion = descripcion CLIPPED,numero_msg using "<<<<"
|
||||
ERROR descripcion ATTRIBUTE(BOLD)
|
||||
ELSE
|
||||
ERROR descripcion ATTRIBUTE(BOLD)
|
||||
LET numero_msg = 0
|
||||
END IF
|
||||
END FUNCTION
|
||||
Reference in New Issue
Block a user