7965-unifyProblems #2990
|
@ -1072,12 +1072,12 @@ INSERT INTO `vn`.`sale`(`id`, `itemFk`, `ticketFk`, `concept`, `quantity`, `pric
|
||||||
(5, 1, 2, 'Ranged weapon longbow 200cm', 1, 110.33, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 'hasComponentLack'),
|
(5, 1, 2, 'Ranged weapon longbow 200cm', 1, 110.33, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 'hasComponentLack'),
|
||||||
(6, 1, 3, 'Ranged weapon longbow 200cm', 1, 110.33, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), 'hasComponentLack'),
|
(6, 1, 3, 'Ranged weapon longbow 200cm', 1, 110.33, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), 'hasComponentLack'),
|
||||||
(7, 2, 11, 'Melee weapon combat fist 15cm', 15, 7.74, 0, 0, 0, util.VN_CURDATE(), NULL),
|
(7, 2, 11, 'Melee weapon combat fist 15cm', 15, 7.74, 0, 0, 0, util.VN_CURDATE(), NULL),
|
||||||
(8, 4, 11, 'Melee weapon heavy shield 100cm', 10, 1.79, 0, 0, 0, util.VN_CURDATE(), NULL),
|
(8, 4, 11, 'Melee weapon heavy shield 100cm', 10, 1.79, 0, 0, 0, util.VN_CURDATE(), 'hasItemLost,hasRounding'),
|
||||||
(9, 1, 16, 'Ranged weapon longbow 200cm', 1, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL),
|
(9, 1, 16, 'Ranged weapon longbow 200cm', 1, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL),
|
||||||
(10, 2, 16, 'Melee weapon combat fist 15cm', 10, 7.09, 0, 0, 0, util.VN_CURDATE(), NULL),
|
(10, 2, 16, 'Melee weapon combat fist 15cm', 10, 7.09, 0, 0, 0, util.VN_CURDATE(), NULL),
|
||||||
(11, 1, 16, 'Ranged weapon longbow 200cm', 1, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL),
|
(11, 1, 16, 'Ranged weapon longbow 200cm', 1, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL),
|
||||||
(12, 4, 16, 'Melee weapon heavy shield 100cm', 20, 1.71, 0, 0, 0, util.VN_CURDATE(), NULL),
|
(12, 4, 16, 'Melee weapon heavy shield 100cm', 20, 1.71, 0, 0, 0, util.VN_CURDATE(), 'hasItemLost'),
|
||||||
(13, 2, 8, 'Melee weapon combat fist 15cm', 10, 7.08, 0, 0, 0, util.VN_CURDATE(), NULL),
|
(13, 2, 8, 'Melee weapon combat fist 15cm', 10, 7.08, 0, 0, 0, util.VN_CURDATE(), 'hasItemLost'),
|
||||||
(14, 1, 8, 'Ranged weapon longbow 200cm', 2, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL),
|
(14, 1, 8, 'Ranged weapon longbow 200cm', 2, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL),
|
||||||
(15, 1, 19, 'Ranged weapon longbow 200cm', 1, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL),
|
(15, 1, 19, 'Ranged weapon longbow 200cm', 1, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL),
|
||||||
(16, 2, 20, 'Melee weapon combat fist 15cm', 20, 7.07, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
|
(16, 2, 20, 'Melee weapon combat fist 15cm', 20, 7.07, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
|
||||||
|
@ -1088,25 +1088,25 @@ INSERT INTO `vn`.`sale`(`id`, `itemFk`, `ticketFk`, `concept`, `quantity`, `pric
|
||||||
(21, 1, 6, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 'hasComponentLack'),
|
(21, 1, 6, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 'hasComponentLack'),
|
||||||
(22, 1, 7, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
|
(22, 1, 7, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
|
||||||
(23, 1, 9, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
|
(23, 1, 9, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
|
||||||
(24, 1, 10, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
|
(24, 1, 10, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE(), 'hasItemShortage,hasComponentLack'),
|
||||||
(25, 4, 12, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
|
(25, 4, 12, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasItemLost'),
|
||||||
(26, 4, 13, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
|
(26, 4, 13, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasItemLost'),
|
||||||
(27, 4, 14, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
|
(27, 4, 14, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasItemShortage,hasComponentLack,hasItemLost'),
|
||||||
(28, 4, 15, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
|
(28, 4, 15, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasItemLost'),
|
||||||
(29, 4, 17, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
|
(29, 4, 17, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasItemShortage,hasComponentLack'),
|
||||||
(30, 4, 18, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
|
(30, 4, 18, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasItemShortage,hasComponentLack'),
|
||||||
(31, 2, 23, 'Melee weapon combat fist 15cm', -5, 7.08, 0, 0, 0, util.VN_CURDATE(), NULL),
|
(31, 2, 23, 'Melee weapon combat fist 15cm', -5, 7.08, 0, 0, 0, util.VN_CURDATE(), 'hasRounding'),
|
||||||
(32, 1, 24, 'Ranged weapon longbow 200cm', -1, 8.07, 0, 0, 0, util.VN_CURDATE(), NULL),
|
(32, 1, 24, 'Ranged weapon longbow 200cm', -1, 8.07, 0, 0, 0, util.VN_CURDATE(), NULL),
|
||||||
(33, 5, 14, 'Ranged weapon pistol 9mm', 50, 1.79, 0, 0, 0, util.VN_CURDATE(), NULL),
|
(33, 5, 14, 'Ranged weapon pistol 9mm', 50, 1.79, 0, 0, 0, util.VN_CURDATE(), NULL),
|
||||||
(34, 4, 28, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
|
(34, 4, 28, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasItemLost'),
|
||||||
(35, 4, 29, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
|
(35, 4, 29, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasItemLost'),
|
||||||
(37, 4, 31, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), NULL),
|
(37, 4, 31, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), NULL),
|
||||||
(36, 4, 30, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
|
(36, 4, 30, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasItemLost'),
|
||||||
(38, 2, 32, 'Melee weapon combat fist 15cm', 30, 7.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 'hasComponentLack'),
|
(38, 2, 32, 'Melee weapon combat fist 15cm', 30, 7.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 'hasComponentLack'),
|
||||||
(39, 1, 32, 'Ranged weapon longbow 200cm', 2, 103.49, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
|
(39, 1, 32, 'Ranged weapon longbow 200cm', 2, 103.49, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
|
||||||
(40, 2, 34, 'Melee weapon combat fist 15cm', 10.00, 3.91, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
|
(40, 2, 34, 'Melee weapon combat fist 15cm', 10.00, 3.91, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasItemLost'),
|
||||||
(41, 2, 35, 'Melee weapon combat fist 15cm', 8.00, 3.01, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'),
|
(41, 2, 35, 'Melee weapon combat fist 15cm', 8.00, 3.01, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasRounding,hasItemLost'),
|
||||||
(42, 2, 36, 'Melee weapon combat fist 15cm', 6.00, 2.50, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack');
|
(42, 2, 36, 'Melee weapon combat fist 15cm', 6.00, 2.50, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasRounding,hasItemLost');
|
||||||
|
|
||||||
INSERT INTO `vn`.`saleComponent`(`saleFk`, `componentFk`, `value`)
|
INSERT INTO `vn`.`saleComponent`(`saleFk`, `componentFk`, `value`)
|
||||||
VALUES
|
VALUES
|
||||||
|
|
|
@ -40,45 +40,70 @@ BEGIN
|
||||||
hasRounding BOOL DEFAULT FALSE,
|
hasRounding BOOL DEFAULT FALSE,
|
||||||
PRIMARY KEY (ticketFk)
|
PRIMARY KEY (ticketFk)
|
||||||
) ENGINE = MEMORY
|
) ENGINE = MEMORY
|
||||||
SELECT tt.ticketFk,
|
WITH hasItemShortage AS(
|
||||||
IF(FIND_IN_SET('isFreezed', t.problem), TRUE, FALSE) isFreezed,
|
SELECT s.ticketFk
|
||||||
t.risk,
|
FROM tmp.saleProblems sp
|
||||||
IF(FIND_IN_SET('hasRisk', t.problem), TRUE, FALSE) hasRisk,
|
JOIN vn.sale s ON s.id = sp.saleFk
|
||||||
IF(FIND_IN_SET('hasHighRisk', t.problem), TRUE, FALSE) hasHighRisk,
|
WHERE sp.hasItemShortage
|
||||||
IF(FIND_IN_SET('hasTicketRequest', t.problem), TRUE, FALSE) hasTicketRequest,
|
GROUP BY s.ticketFk
|
||||||
IF(FIND_IN_SET('isTaxDataChecked', t.problem), FALSE, TRUE) isTaxDataChecked,
|
),hasItemLost AS(
|
||||||
IF(FIND_IN_SET('isTooLittle', t.problem)
|
SELECT s.ticketFk
|
||||||
AND util.VN_NOW() < (util.VN_CURDATE() + INTERVAL HOUR(zc.`hour`) HOUR) + INTERVAL MINUTE(zc.`hour`) MINUTE,
|
FROM tmp.saleProblems sp
|
||||||
TRUE, FALSE) isTooLittle,
|
JOIN vn.sale s ON s.id = sp.saleFk
|
||||||
IF(c.businessTypeFk = 'VIP', TRUE, FALSE) isVip,
|
WHERE sp.hasItemLost
|
||||||
SUM(IFNULL(ts.hasItemShortage,0)) hasItemShortage,
|
GROUP BY s.ticketFk
|
||||||
SUM(IFNULL(ts.hasItemDelay,0)) hasItemDelay,
|
),hasRounding AS(
|
||||||
SUM(IFNULL(ts.hasItemLost,0)) hasItemLost,
|
SELECT s.ticketFk
|
||||||
IF(FIND_IN_SET('hasComponentLack', s.problem), TRUE, FALSE) hasComponentLack,
|
FROM tmp.saleProblems sp
|
||||||
SUM(IFNULL(ts.hasRounding,0)) hasRounding,
|
JOIN vn.sale s ON s.id = sp.saleFk
|
||||||
0 totalProblems
|
WHERE sp.hasRounding
|
||||||
FROM tmp.ticket tt
|
GROUP BY s.ticketFk
|
||||||
JOIN ticket t ON t.id = tt.ticketFk
|
), hasItemDelay AS(
|
||||||
JOIN client c ON c.id = t.clientFk
|
SELECT s.ticketFk
|
||||||
LEFT JOIN sale s ON s.ticketFk = t.id
|
FROM tmp.saleProblems sp
|
||||||
LEFT JOIN tmp.saleProblems ts ON ts.saleFk = s.id
|
JOIN vn.sale s ON s.id = sp.saleFk
|
||||||
LEFT JOIN zoneClosure zc ON zc.zoneFk = t.zoneFk
|
WHERE sp.hasItemDelay
|
||||||
AND zc.dated = util.VN_CURDATE()
|
GROUP BY s.ticketFk
|
||||||
GROUP BY t.id;
|
), hasComponentLack AS(
|
||||||
|
SELECT s.ticketFk
|
||||||
|
FROM tmp.saleProblems sp
|
||||||
|
JOIN vn.sale s ON s.id = sp.saleFk
|
||||||
|
WHERE FIND_IN_SET('hasComponentLack', s.problem)
|
||||||
|
GROUP BY s.ticketFk
|
||||||
|
)SELECT tt.ticketFk,
|
||||||
|
IF(FIND_IN_SET('isFreezed', t.problem), TRUE, FALSE) 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,
|
||||||
|
0 totalProblems
|
||||||
|
FROM tmp.ticket tt
|
||||||
|
JOIN vn.ticket t ON t.id = tt.ticketFk
|
||||||
|
JOIN vn.client c ON c.id = t.clientFk
|
||||||
|
LEFT JOIN hasItemShortage his ON his.ticketFk = t.id
|
||||||
|
LEFT JOIN hasItemLost hil ON hil.ticketFk = t.id
|
||||||
|
LEFT JOIN hasRounding hr ON hr.ticketFk = t.id
|
||||||
|
LEFT JOIN hasItemDelay hid ON hid.ticketFk = t.id
|
||||||
|
LEFT JOIN hasComponentLack hcl ON hcl.ticketFk = t.id
|
||||||
|
LEFT JOIN vn.zoneClosure zc ON zc.zoneFk = t.zoneFk
|
||||||
|
AND zc.dated = util.VN_CURDATE()
|
||||||
|
GROUP BY t.id;
|
||||||
|
|
||||||
UPDATE tmp.ticketProblems
|
UPDATE tmp.ticketProblems
|
||||||
SET totalProblems = (
|
SET totalProblems = isFreezed + hasHighRisk + hasTicketRequest +
|
||||||
(isFreezed) +
|
isTaxDataChecked + hasComponentLack + hasItemDelay +
|
||||||
(hasHighRisk) +
|
isTooLittle + hasItemLost + hasRounding + hasItemShortage + isVip;
|
||||||
(hasTicketRequest) +
|
|
||||||
(!isTaxDataChecked) +
|
|
||||||
(hasComponentLack) +
|
|
||||||
(hasItemDelay IS NOT NULL) +
|
|
||||||
(isTooLittle) +
|
|
||||||
(hasItemLost IS NOT NULL) +
|
|
||||||
(hasRounding IS NOT NULL) +
|
|
||||||
(hasItemShortage IS NOT NULL) +
|
|
||||||
(isVip)
|
|
||||||
);
|
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
|
@ -48,7 +48,7 @@ describe('SalesMonitor salesFilter()', () => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should now return the tickets matching the problems on false', async() => {
|
fit('should now return the tickets matching the problems on false', async() => {
|
||||||
const tx = await models.SalesMonitor.beginTransaction({});
|
const tx = await models.SalesMonitor.beginTransaction({});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -45,8 +45,8 @@ describe('ticket filter()', () => {
|
||||||
ticket.isFreezed === true ||
|
ticket.isFreezed === true ||
|
||||||
ticket.hasRisk === true ||
|
ticket.hasRisk === true ||
|
||||||
ticket.hasTicketRequest === true ||
|
ticket.hasTicketRequest === true ||
|
||||||
(typeof ticket.hasRounding === 'string' && ticket.hasRounding.trim().length > 0) ||
|
ticket.hasRounding === true ||
|
||||||
(typeof ticket.itemShortage === 'string' && ticket.itemShortage.trim().length > 0)
|
ticket.hasItemShortage === true
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(hasProblemTicket).toBe(true);
|
expect(hasProblemTicket).toBe(true);
|
||||||
|
@ -83,7 +83,7 @@ describe('ticket filter()', () => {
|
||||||
expect(ticket.isFreezed).toEqual(null);
|
expect(ticket.isFreezed).toEqual(null);
|
||||||
expect(ticket.hasRisk).toEqual(null);
|
expect(ticket.hasRisk).toEqual(null);
|
||||||
expect(ticket.hasTicketRequest).toEqual(null);
|
expect(ticket.hasTicketRequest).toEqual(null);
|
||||||
expect(ticket.itemShortage).toEqual(null);
|
expect(ticket.hasItemShortage).toEqual(null);
|
||||||
expect(ticket.hasRounding).toEqual(null);
|
expect(ticket.hasRounding).toEqual(null);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue