103 lines
3.6 KiB
Plaintext
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
|