salix/db/routines/vn2008/procedures/confection_control_source.sql

106 lines
3.2 KiB
SQL

DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`confection_control_source`(vDated DATE, vScopeDays TINYINT)
BEGIN
DECLARE vMidnight DATETIME DEFAULT TIMESTAMP(vDated,'23:59:59');
DECLARE vEndingDate DATETIME DEFAULT TIMESTAMPADD(DAY,vScopeDays,vMidnight);
DECLARE maxAlertLevel INT DEFAULT 2;
DROP TEMPORARY TABLE IF EXISTS tmp.production_buffer;
CREATE TEMPORARY TABLE tmp.production_buffer
ENGINE = MEMORY
SELECT
date(t.Fecha) as Fecha,
hour(t.Fecha) as Hora,
hour(t.Fecha) as Departure,
t.Id_Ticket,
m.Id_Movimiento,
m.Cantidad,
m.Concepte,
ABS(m.Reservado) Reservado,
i.Categoria,
tp.Tipo,
t.Alias as Cliente,
wh.name as Almacen,
t.warehouse_id,
cs.province_id,
a.agency_id,
ct.description as Taller,
stock.visible,
stock.available
FROM vn2008.Tickets t
JOIN vn2008.Agencias a ON a.Id_Agencia = t.Id_Agencia
JOIN vn2008.warehouse wh ON wh.id = t.warehouse_id
JOIN vn2008.Movimientos m ON m.Id_Ticket = t.Id_Ticket
JOIN vn2008.Articles i ON i.Id_Article = m.Id_Article
JOIN vn2008.Tipos tp ON tp.tipo_id = i.tipo_id
JOIN vn.confectionType ct ON ct.id = tp.confeccion
JOIN vn2008.Consignatarios cs on cs.Id_Consigna = t.Id_Consigna
LEFT JOIN vn.ticketState tls on tls.ticketFk = t.Id_Ticket
LEFT JOIN
(
SELECT item_id, sum(visible) visible, sum(available) available
FROM
(
SELECT a.item_id, 0 as visible, a.available
FROM cache.cache_calc cc
LEFT JOIN cache.available a ON a.calc_id = cc.id
WHERE cc.cache_id IN (2,8)
AND cc.params IN (concat("1/", util.VN_CURDATE()),concat("44/", util.VN_CURDATE()))
UNION ALL
SELECT v.item_id, v.visible, 0 as available
FROM cache.cache_calc cc
LEFT JOIN cache.visible v ON v.calc_id = cc.id
where cc.cache_id IN (2,8) and cc.params IN ("1","44")
) sub
GROUP BY item_id
) stock ON stock.item_id = m.Id_Article
WHERE tp.confeccion
AND tls.alertLevel < maxAlertLevel
AND wh.hasConfectionTeam
AND t.Fecha BETWEEN vDated AND vEndingDate
AND m.Cantidad > 0;
-- Entradas
INSERT INTO tmp.production_buffer(
Fecha,
Id_Ticket,
Cantidad,
Concepte,
Categoria,
Cliente,
Almacen,
Taller
)
SELECT
tr.shipment AS Fecha,
e.Id_Entrada AS Id_Ticket,
c.Cantidad,
a.Article,
a.Categoria,
whi.name as Cliente,
who.name as Almacen,
ct.description as Taller
FROM vn2008.Compres c
JOIN vn2008.Entradas e ON e.Id_Entrada = c.Id_Entrada
JOIN vn2008.travel tr ON tr.id = e.travel_id
JOIN vn2008.warehouse whi ON whi.id = tr.warehouse_id
JOIN vn2008.warehouse who ON who.id = tr.warehouse_id_out
JOIN vn2008.Articles a ON a.Id_Article = c.Id_Article
JOIN vn2008.Tipos tp ON tp.tipo_id = a.tipo_id
JOIN vn.confectionType ct ON ct.id = tp.confeccion
WHERE who.hasConfectionTeam
AND tp.confeccion
AND tr.shipment BETWEEN vDated AND vEndingDate;
SELECT * FROM tmp.production_buffer;
END$$
DELIMITER ;