Files
MBS/WEBSERVICES/REST/datosCocina.4gl
T

103 lines
3.6 KiB
Plaintext

{
FUNCION : datosCocinas.4gl
OBJETIVO : Publicar los datos para realizar estados de las cocinas modulares
DESARROLLADO POR: ING. JUAN SOTO
FECHA : Julio 20, 2026
}
IMPORT util
-- Tipos reutilizables para evitar duplicar la definición de campos
TYPE t_datos RECORD
ventasCantidad, cantidadInsumos DEC(12, 5),
ventasVAlor, gastos, valorIsumos DEC(18, 2),
cod_msg INT,
descripcion STRING
END RECORD
FUNCTION datosCocina(data)
DEFINE data STRING
DEFINE
credenciales RECORD
usuario VARCHAR(50),
clave VARCHAR(50),
fechaCorte DATE
END RECORD,
fecha1, fecha2 DATE
-- Registros temporales donde cae cada FETCH antes de copiarlo al arreglo
DEFINE datos t_datos
CALL util.JSON.parse(data, credenciales)
DISPLAY "USUARIO ", credenciales.usuario, " clave ", credenciales.clave
CONNECT TO "smarmotech" USER credenciales.usuario USING credenciales.clave
IF STATUS < 0 THEN
LET datos.cod_msg = 400
LET datos.descripcion = "USUARIO NO VALIDO ", SQLCA.SQLERRM
DISCONNECT CURRENT
RETURN util.JSON.stringify(datos)
END IF
SELECT a.fecha_inicio, a.fecha_corte
INTO fecha1, fecha2
FROM prdtable a
WHERE a.ano = YEAR(credenciales.fechaCorte)
AND a.mes = MONTH(credenciales.fechaCorte)
-- VENTAS NETAS (bruto - descuento) * prima_us. Se agrega a nivel de encabezado
-- (vetb00002) con EXISTS para no duplicar sub_total/monto_desc por cada linea de detalle.
SELECT ISNULL(SUM(cantidadtrx),0), ISNULL(SUM(neto),0)
INTO datos.ventasCantidad, datos.ventasVAlor
FROM ventas_facturas
WHERE ano = YEAR(credenciales.fechaCorte)
AND numero_mes = MONTH(credenciales.fechaCorte)
AND cod_n IN (52, 56, 40, 43) AND cod_grupo IN (1511,1500,668)
-- GASTOS del departamento de Ensamble Modulares (6118) = SUM(debito - credito)
-- Solo cuentas de gasto: cuenta_no que inicia en '7'.
SELECT ISNULL(SUM(a.debito - a.credito), 0)
INTO datos.gastos
FROM cgtb00004 a
WHERE a.fecha BETWEEN fecha1 AND fecha2
AND a.departamento = 6118
AND a.cuenta_no LIKE '7%'
AND a.tipo <> 3
AND a.status_t IS NULL
-- CANTIDAD DE INSUMOS consumidos en el periodo (movimiento 86)
SELECT ISNULL(SUM(a.cantidad_2 * - 1), 0)
INTO datos.cantidadInsumos
FROM iptb00006 a
WHERE a.cod_mov = 86
AND a.status_t IS NULL
AND a.fecha BETWEEN fecha1 AND fecha2
-- VALOR DE INSUMOS: unidades del periodo * costo estandar (material+labor+gastos)
-- tomado de iptb00004 (mes_fin=12 del ano de fecha2), no del costo del movimiento.
SELECT ISNULL(
SUM((a.cantidad_2 * - 1) * (b.material + b.labor + b.gastos)), 0)
INTO datos.valorIsumos
FROM iptb00006 a
INNER
JOIN iptb00004 b
ON b.cod_n = a.cod_n
AND b.cod_grupo = a.cod_grupo
AND b.cod_tipo = a.cod_tipo
AND b.cod_sec = a.cod_sec
WHERE a.cod_mov = 86
AND a.status_t IS NULL
AND a.fecha BETWEEN fecha1 AND fecha2
AND b.mes_fin = 12
AND b.ano = YEAR(fecha2)
DISCONNECT CURRENT
LET datos.cod_msg = 200
LET datos.descripcion = 'OPERACION EXITOSA'
RETURN util.JSON.stringify(datos)
END FUNCTION