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