Files
MBS/PROYECTO/PRDIR/prprmt025.4gl
T

203 lines
6.0 KiB
Plaintext

{
PROGRAMA : prprmt022.4gl
OBJETIVO : Consulta Orden de produccion
DESARROLLADO POR : Ing. Elvis Garcia
FECHA : JULIO 12, 2025
}
IMPORT util
IMPORT FGL fgldialog
SCHEMA smarmotech
DEFINE usuarios, clave STRING
DEFINE pcompanias RECORD LIKE companias.*
DEFINE criterio STRING
DEFINE fechas RECORD
fech_inicial DATE,
fech_final DATE
END RECORD
DEFINE data DYNAMIC ARRAY OF RECORD
orden_prod1 INT,
orden_ped1 INT,
cliente STRING,
fech_oc DATE,
fech_recibida STRING,
material STRING,
terminacion STRING,
cantidad DECIMAL(12,2),
origen_mat STRING,
destino_orden STRING,
enviar_a STRING,
fecha_compromiso DATE,
fecha_reprogramada STRING,
asignado_a STRING,
estatus STRING,
fecha_entregado STRING
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 prprmt025()
END MAIN
FUNCTION prprmt025()
OPEN WINDOW w1 WITH FORM "prfmmt025"
CALL ui.Interface.LoadStyles("mbsStyle")
CALL fgl_settitle("Consulta ordenes de produccion")
CALL initConditions()
CALL consulta()
DIALOG ATTRIBUTE(UNBUFFERED)
DISPLAY ARRAY data TO record2.*
ON ACTION consultar ATTRIBUTES(TEXT = "OK")
CALL initConditions()
CALL consulta()
ON ACTION salir ATTRIBUTES(TEXT = "Salir", IMAGE = "fa-power-off")
EXIT PROGRAM
END DISPLAY
END DIALOG
CLOSE WINDOW w1
END FUNCTION
FUNCTION initConditions()
INITIALIZE fechas TO NULL
DIALOG ATTRIBUTES(UNBUFFERED)
INPUT BY NAME fechas.* ATTRIBUTES(WITHOUT DEFAULTS)
AFTER INPUT
IF fechas.fech_final IS NOT NULL AND fechas.fech_inicial IS NOT NULL THEN
IF fechas.fech_inicial > fechas.fech_final THEN
CALL msg(86)
NEXT FIELD fech_inicial
END IF
END IF
END INPUT
CONSTRUCT criterio
ON c.orden_produccion, c.orden_pedido
FROM orden_prod, orden_ped
END CONSTRUCT
ON ACTION ACCEPT ATTRIBUTES(TEXT = "Consultar", IMAGE = "mag")
ACCEPT DIALOG
ON ACTION salir ATTRIBUTES(TEXT = "Salir", IMAGE = "fa-power-off")
EXIT PROGRAM
END DIALOG
END FUNCTION
FUNCTION consulta()
DEFINE sql STRING, idx INT
CALL data.clear()
LET sql =
"
SELECT c.orden_produccion, c.orden_pedido, a.fecha_oc, b.nombre, '?' AS Fecha_Recibida,
e.descripcion AS MATERIAL, f.descripcion AS TIPO, i.cantidad_detalle AS Cantidad, h.descripcion AS ORIGEN_MATERIAL, '?' AS Destino_Orden,
j.nom_dpto AS 'Enviar a', i.fecha_prometida, '?' AS 'Fecha Reprogramada', '?' AS 'Asignado a', k.descrip_estatus, a.fecha_entrega FROM
prtb00012 a INNER JOIN vetb00004 b ON a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente
INNER JOIN prtb00038 c ON a.num_oc = c.orden_pedido
INNER JOIN prtb00039 d ON c.orden_produccion = d.orden_produccion
INNER JOIN iptb00029 e ON d.cod_grupo = e.cod_grupo
INNER JOIN iptb00024 f ON d.cod_tipo = f.cod_tipo
INNER JOIN iptb00002 g ON d.cod_n = g.cod_n AND d.cod_grupo = g.cod_grupo AND d.cod_tipo = g.cod_tipo AND d.cod_sec = g.cod_sec
INNER JOIN iptb00022 h ON g.cod_cia = h.cod_cia
INNER JOIN prtb00043 i ON i.orden_produccion = d.orden_produccion AND i.cod_n = d.cod_n AND i.cod_grupo = d.cod_grupo AND i.cod_tipo = d.cod_tipo AND i.cod_sec = d.cod_sec
INNER JOIN adtb00001 j ON i.departamento = j.departamento
INNER JOIN prtb00045 k ON i.estatus = k.cod_estatus WHERE "
IF fechas.fech_inicial IS NOT NULL AND fechas.fech_final IS NULL THEN
LET SQL = SQL || " a.fecha_oc >= ? AND "
END IF
IF fechas.fech_inicial IS NULL AND fechas.fech_final IS NOT NULL THEN
LET SQL = SQL || " a.fecha_oc <= ? AND "
END IF
IF fechas.fech_final IS NOT NULL AND fechas.fech_final IS NOT NULL THEN
LET SQL =
SQL
|| " a.fecha_oc BETWEEN ? AND ? AND "
END IF
LET SQL =
SQL || criterio CLIPPED
PREPARE stmt FROM sql
DECLARE cur CURSOR FOR stmt
IF fechas.fech_inicial IS NULL AND fechas.fech_final IS NULL THEN
OPEN cur
END IF
IF fechas.fech_inicial IS NOT NULL AND fechas.fech_final IS NULL THEN
OPEN cur USING fechas.fech_inicial
END IF
IF fechas.fech_inicial IS NULL AND fechas.fech_final IS NOT NULL THEN
OPEN cur USING fechas.fech_final
END IF
IF fechas.fech_final IS NOT NULL AND fechas.fech_final IS NOT NULL THEN
OPEN cur USING fechas.fech_inicial, fechas.fech_final
END IF
OPEN cur
LET idx = 1
FOREACH cur INTO data[idx].orden_prod1,
data[idx].orden_ped1,
data[idx].fech_oc,
data[idx].cliente,
data[idx].fech_recibida,
data[idx].material,
data[idx].terminacion,
data[idx].cantidad,
data[idx].origen_mat,
data[idx].destino_orden,
data[idx].enviar_a,
data[idx].fecha_compromiso,
data[idx].fecha_reprogramada,
data[idx].asignado_a,
data[idx].estatus,
data[idx].fecha_entregado
LET idx = idx + 1
END FOREACH
END FUNCTION