#7965 - unifyProblems #2990
|
@ -6,6 +6,7 @@ BEGIN
|
|||
/**
|
||||
* Calcula los problemas para un conjunto de sale
|
||||
*
|
||||
* @param vIsTodayRelative Indica si se calcula el disponible como si todo saliera hoy
|
||||
* @table tmp.sale(saleFk) Identificadores de los sale a calcular
|
||||
* @return tmp.saleProblems
|
||||
*/
|
||||
|
@ -45,7 +46,7 @@ BEGIN
|
|||
JOIN parking p ON p.id = sh.parkingFk
|
||||
JOIN sector s ON s.id = p.sectorFk
|
||||
GROUP BY ish.itemFk, s.warehouseFk;
|
||||
|
||||
|
||||
-- Disponible, faltas, inventario y retrasos
|
||||
OPEN vCursor;
|
||||
l: LOOP
|
||||
|
@ -55,11 +56,11 @@ BEGIN
|
|||
IF vDone THEN
|
||||
LEAVE l;
|
||||
END IF;
|
||||
|
||||
|
||||
-- Disponible: no va a haber suficiente producto para preparar todos los pedidos
|
||||
CALL cache.available_refresh(vAvailableCache, FALSE, vWarehouseFk, vDate);
|
||||
|
||||
-- Faltas: visible, disponible y ubicado son menores que la cantidad vendida
|
||||
|
||||
-- Faltas: visible, disponible y ubicado son menores que la cantidad vendida
|
||||
CALL cache.visible_refresh(vVisibleCache, FALSE, vWarehouseFk);
|
||||
|
||||
INSERT INTO tmp.saleProblems(saleFk, hasItemShortage)
|
||||
|
@ -69,16 +70,16 @@ BEGIN
|
|||
JOIN ticket t ON t.id = s.ticketFk
|
||||
JOIN item i ON i.id = s.itemFk
|
||||
JOIN itemType it ON it.id = i.typeFk
|
||||
JOIN itemCategory ic ON ic.id = it.categoryFk
|
||||
JOIN itemCategory ic ON ic.id = it.categoryFk
|
||||
LEFT JOIN cache.visible v ON v.item_id = i.id
|
||||
AND v.calc_id = vVisibleCache
|
||||
LEFT JOIN cache.available av ON av.item_id = i.id
|
||||
AND av.calc_id = vAvailableCache
|
||||
LEFT JOIN tItemShelving tis ON tis.itemFk = i.id
|
||||
AND tis.warehouseFk = t.warehouseFk
|
||||
WHERE IFNULL(v.visible, 0) < s.quantity
|
||||
AND IFNULL(av.available, 0) < s.quantity
|
||||
AND IFNULL(tis.visible, 0) < s.quantity
|
||||
AND tis.warehouseFk = t.warehouseFk
|
||||
WHERE (v.visible < s.quantity AND v.visible IS NOT NULL)
|
||||
AND (av.available < s.quantity AND av.available IS NOT NULL)
|
||||
AND (tis.visible < s.quantity AND tis.visible IS NOT NULL)
|
||||
AND NOT s.isPicked
|
||||
AND NOT s.reserved
|
||||
AND ic.merchandise
|
||||
|
@ -87,7 +88,7 @@ BEGIN
|
|||
AND util.VN_CURDATE() = vDate
|
||||
AND t.warehouseFk = vWarehouseFk
|
||||
GROUP BY s.id;
|
||||
|
||||
|
||||
-- Inventario: Visible suficiente, pero ubicado menor a la cantidad vendida
|
||||
INSERT INTO tmp.saleProblems(saleFk, hasItemLost)
|
||||
SELECT s.id, TRUE
|
||||
|
@ -100,9 +101,9 @@ BEGIN
|
|||
LEFT JOIN cache.visible v ON v.item_id = s.itemFk
|
||||
AND v.calc_id = vVisibleCache
|
||||
LEFT JOIN tItemShelving tis ON tis.itemFk = i.id
|
||||
AND tis.warehouseFk = t.warehouseFk
|
||||
WHERE IFNULL(v.visible, 0) >= s.quantity
|
||||
AND IFNULL(tis.visible, 0) < s.quantity
|
||||
AND tis.warehouseFk = t.warehouseFk
|
||||
WHERE (v.visible >= s.quantity AND v.visible IS NOT NULL)
|
||||
AND (tis.visible < s.quantity AND tis.visible IS NOT NULL)
|
||||
AND s.quantity > 0
|
||||
AND NOT s.isPicked
|
||||
AND NOT s.reserved
|
||||
|
@ -116,7 +117,7 @@ BEGIN
|
|||
|
||||
-- Retraso: Disponible suficiente, pero no visible ni ubicado
|
||||
INSERT INTO tmp.saleProblems(saleFk, hasItemDelay)
|
||||
SELECT s.id, TRUE
|
||||
SELECT s.id, TRUE
|
||||
FROM tmp.sale ts
|
||||
JOIN sale s ON s.id = ts.saleFk
|
||||
JOIN ticket t ON t.id = s.ticketFk
|
||||
|
@ -128,10 +129,10 @@ BEGIN
|
|||
LEFT JOIN cache.available av ON av.item_id = i.id
|
||||
AND av.calc_id = vAvailableCache
|
||||
LEFT JOIN tItemShelving tis ON tis.itemFk = i.id
|
||||
AND tis.warehouseFk = t.warehouseFk
|
||||
WHERE IFNULL(v.visible, 0) < s.quantity
|
||||
AND IFNULL(av.available, 0) >= s.quantity
|
||||
AND IFNULL(tis.visible, 0) < s.quantity
|
||||
AND tis.warehouseFk = t.warehouseFk
|
||||
WHERE (v.visible < s.quantity AND v.visible IS NOT NULL)
|
||||
AND (av.available < s.quantity AND av.available IS NOT NULL)
|
||||
AND (tis.visible < s.quantity AND tis.visible IS NOT NULL)
|
||||
AND s.quantity > 0
|
||||
AND NOT s.isPicked
|
||||
AND NOT s.reserved
|
||||
|
@ -141,9 +142,9 @@ BEGIN
|
|||
AND util.VN_CURDATE() = vDate
|
||||
AND t.warehouseFk = vWarehouseFk
|
||||
GROUP BY s.id
|
||||
ON DUPLICATE KEY UPDATE hasItemDelay = TRUE;
|
||||
ON DUPLICATE KEY UPDATE hasItemDelay = TRUE;
|
||||
|
||||
-- Redondeo: cantidad incorrecta con respecto al grouping
|
||||
-- Redondeo: cantidad incorrecta con respecto al grouping
|
||||
CALL buy_getUltimate(NULL, vWarehouseFk, vDate);
|
||||
|
||||
INSERT INTO tmp.saleProblems(saleFk, hasRounding)
|
||||
|
@ -155,7 +156,7 @@ BEGIN
|
|||
JOIN item i ON i.id = s.itemFk
|
||||
JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk
|
||||
JOIN buy b ON b.id = bu.buyFk
|
||||
WHERE MOD(s.quantity, b.`grouping`)
|
||||
WHERE MOD(s.quantity, b.`grouping`)
|
||||
GROUP BY s.id
|
||||
ON DUPLICATE KEY UPDATE hasRounding = TRUE;
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ BEGIN
|
|||
/**
|
||||
* Calcula los problemas para un conjunto de tickets.
|
||||
*
|
||||
* @param vIsTodayRelative Indica si se calcula el disponible como si todo saliera hoy
|
||||
* @table tmp.ticket(ticketFk) Identificadores de los tickets a calcular
|
||||
* @return tmp.ticketProblems, tmp.saleProblems
|
||||
*/
|
||||
|
@ -13,14 +14,14 @@ BEGIN
|
|||
saleFk INT(11),
|
||||
PRIMARY KEY (saleFk)
|
||||
) ENGINE = MEMORY
|
||||
SELECT DISTINCT s.id saleFk
|
||||
SELECT DISTINCT s.id saleFk
|
||||
FROM tmp.ticket tt
|
||||
JOIN ticket t ON t.id = tt.ticketFk
|
||||
JOIN ticket t ON t.id = tt.ticketFk
|
||||
JOIN sale s ON s.ticketFk = t.id
|
||||
WHERE t.shipped BETWEEN util.VN_CURDATE()
|
||||
AND util.dayEnd(util.VN_CURDATE() + INTERVAL IF(vIsTodayRelative, 9.9, 1.9) DAY)
|
||||
GROUP BY s.id;
|
||||
|
||||
|
||||
CALL sale_getProblems(vIsTodayRelative);
|
||||
|
||||
CREATE OR REPLACE TEMPORARY TABLE tmp.ticketProblems (
|
||||
|
@ -57,7 +58,7 @@ BEGIN
|
|||
FROM tmp.saleProblems sp
|
||||
JOIN vn.sale s ON s.id = sp.saleFk
|
||||
WHERE sp.hasRounding
|
||||
GROUP BY s.ticketFk
|
||||
GROUP BY s.ticketFk
|
||||
), hasItemDelay AS(
|
||||
SELECT s.ticketFk
|
||||
FROM tmp.saleProblems sp
|
||||
|
@ -71,23 +72,22 @@ BEGIN
|
|||
WHERE FIND_IN_SET('hasComponentLack', s.problem)
|
||||
GROUP BY s.ticketFk
|
||||
)SELECT tt.ticketFk,
|
||||
IF(FIND_IN_SET('isFreezed', t.problem), TRUE, FALSE) isFreezed,
|
||||
FIND_IN_SET('isFreezed', t.problem) isFreezed,
|
||||
t.risk,
|
||||
IF(FIND_IN_SET('hasRisk', t.problem), TRUE, FALSE) hasRisk,
|
||||
IF(FIND_IN_SET('hasHighRisk', t.problem), TRUE, FALSE) hasHighRisk,
|
||||
IF(FIND_IN_SET('hasTicketRequest', t.problem), TRUE, FALSE) hasTicketRequest,
|
||||
IF(FIND_IN_SET('isTaxDataChecked', t.problem), TRUE, FALSE) isTaxDataChecked,
|
||||
IF(FIND_IN_SET('isTooLittle', t.problem)
|
||||
AND util.VN_NOW() < (util.VN_CURDATE() +
|
||||
INTERVAL HOUR(zc.`hour`) HOUR) +
|
||||
INTERVAL MINUTE(zc.`hour`) MINUTE,
|
||||
TRUE, FALSE) isTooLittle,
|
||||
IF(c.businessTypeFk = 'VIP', TRUE, FALSE) isVip,
|
||||
IF(his.ticketFk IS NULL, FALSE, TRUE) hasItemShortage,
|
||||
IF(hid.ticketFk IS NULL, FALSE, TRUE) hasItemDelay,
|
||||
IF(hil.ticketFk IS NULL, FALSE, TRUE) hasItemLost,
|
||||
IF(hcl.ticketFk IS NULL, FALSE, TRUE) hasComponentLack,
|
||||
IF(hr.ticketFk IS NULL, FALSE, TRUE) hasRounding,
|
||||
FIND_IN_SET('hasRisk', t.problem) hasRisk,
|
||||
FIND_IN_SET('hasHighRisk', t.problem) hasHighRisk,
|
||||
FIND_IN_SET('hasTicketRequest', t.problem) hasTicketRequest,
|
||||
FIND_IN_SET('isTaxDataChecked', t.problem) isTaxDataChecked,
|
||||
FIND_IN_SET('isTooLittle', t.problem)
|
||||
AND util.VN_NOW() < (util.VN_CURDATE() +
|
||||
INTERVAL HOUR(zc.`hour`) HOUR) +
|
||||
INTERVAL MINUTE(zc.`hour`) MINUTE isTooLittle,
|
||||
c.businessTypeFk = 'VIP' isVip,
|
||||
NOT (his.ticketFk IS NULL) hasItemShortage,
|
||||
NOT (hid.ticketFk IS NULL) hasItemDelay,
|
||||
NOT (hil.ticketFk IS NULL) hasItemLost,
|
||||
NOT (hcl.ticketFk IS NULL) hasComponentLack,
|
||||
NOT (hr.ticketFk IS NULL) hasRounding,
|
||||
0 totalProblems
|
||||
FROM tmp.ticket tt
|
||||
JOIN vn.ticket t ON t.id = tt.ticketFk
|
||||
|
@ -100,12 +100,12 @@ BEGIN
|
|||
LEFT JOIN vn.zoneClosure zc ON zc.zoneFk = t.zoneFk
|
||||
AND zc.dated = util.VN_CURDATE()
|
||||
GROUP BY t.id;
|
||||
|
||||
|
||||
UPDATE tmp.ticketProblems
|
||||
SET totalProblems = isFreezed + hasHighRisk + hasTicketRequest +
|
||||
isTaxDataChecked + hasComponentLack + hasItemDelay +
|
||||
SET totalProblems = isFreezed + hasHighRisk + hasTicketRequest +
|
||||
isTaxDataChecked + hasComponentLack + hasItemDelay +
|
||||
isTooLittle + hasItemLost + hasRounding + hasItemShortage + isVip;
|
||||
|
||||
|
||||
DROP TEMPORARY TABLE tmp.sale;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
Loading…
Reference in New Issue