203 lines
6.0 KiB
Plaintext
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
|
|
|