fix: update closeAll method to improve date handling and ticket selection logic
This commit is contained in:
parent
cd258eb44e
commit
b2071994da
|
@ -37,35 +37,52 @@ module.exports = Self => {
|
||||||
const toDate = Date.vnNew();
|
const toDate = Date.vnNew();
|
||||||
toDate.setHours(0, 0, 0, 0);
|
toDate.setHours(0, 0, 0, 0);
|
||||||
toDate.setDate(toDate.getDate() - 1);
|
toDate.setDate(toDate.getDate() - 1);
|
||||||
|
const [{dateFrom, dateTo}] = await Self.rawSql(`
|
||||||
|
SELECT ? - INTERVAL closureDaysAgo DAY dateFrom,
|
||||||
|
util.dayEnd(?) dateTo
|
||||||
|
FROM ticketConfig
|
||||||
|
LIMIT 1`, [toDate, toDate], myOptions);
|
||||||
|
|
||||||
await Self.rawSql(`
|
await Self.rawSql(`
|
||||||
|
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp.ticket_close;
|
DROP TEMPORARY TABLE IF EXISTS tmp.ticket_close;
|
||||||
CREATE TEMPORARY TABLE tmp.ticket_close
|
CREATE TEMPORARY TABLE tmp.ticket_close
|
||||||
ENGINE = MEMORY
|
ENGINE = MEMORY
|
||||||
SELECT
|
WITH wTickets AS(
|
||||||
DISTINCT t.id ticketFk,
|
SELECT t.id ticketFk
|
||||||
t.clientFk,
|
|
||||||
c.name clientName,
|
|
||||||
c.email recipient,
|
|
||||||
eu.email salesPersonEmail,
|
|
||||||
t.addressFk,
|
|
||||||
c.hasDailyInvoice,
|
|
||||||
c.hasToInvoiceByAddress,
|
|
||||||
t.totalWithVat,
|
|
||||||
t.companyFk
|
|
||||||
FROM ticket t
|
FROM ticket t
|
||||||
JOIN agencyMode am ON am.id = t.agencyModeFk
|
|
||||||
JOIN warehouse wh ON wh.id = t.warehouseFk AND wh.hasComission
|
JOIN warehouse wh ON wh.id = t.warehouseFk AND wh.hasComission
|
||||||
JOIN ticketState ts ON ts.ticketFk = t.id
|
WHERE t.shipped BETWEEN ? AND ?
|
||||||
JOIN alertLevel al ON al.id = ts.alertLevel
|
AND t.refFk IS NULL
|
||||||
JOIN client c ON c.id = t.clientFk
|
), wTicketsTracking AS(
|
||||||
LEFT JOIN account.emailUser eu ON eu.userFk = c.salesPersonFk
|
SELECT wt.ticketFk, MAX(tt.id) maxTracking
|
||||||
JOIN ticketConfig tc ON TRUE
|
FROM wTickets wt
|
||||||
WHERE (al.code = 'PACKED' OR (am.code = 'refund' AND al.code <> 'delivered'))
|
JOIN ticketTracking tt ON tt.ticketFk = wt.ticketFk
|
||||||
AND t.shipped BETWEEN ? - INTERVAL tc.closureDaysAgo DAY AND util.dayEnd(?)
|
GROUP BY tt.ticketFk
|
||||||
AND t.refFk IS NULL;
|
), wTicketsLastState AS(
|
||||||
CALL ticket_close();
|
SELECT wt.ticketFk, tt.stateFk
|
||||||
`, [toDate, toDate], myOptions);
|
FROM wTicketsTracking wt
|
||||||
|
JOIN ticketTracking tt ON tt.id = wt.maxTracking
|
||||||
|
) SELECT tls.ticketFk,
|
||||||
|
t.clientFk,
|
||||||
|
c.name clientName,
|
||||||
|
c.email recipient,
|
||||||
|
eu.email salesPersonEmail,
|
||||||
|
t.addressFk,
|
||||||
|
c.hasDailyInvoice,
|
||||||
|
c.hasToInvoiceByAddress,
|
||||||
|
t.totalWithVat,
|
||||||
|
t.companyFk
|
||||||
|
FROM wTicketsLastState tls
|
||||||
|
JOIN ticket t ON t.id = tls.ticketFk
|
||||||
|
JOIN state s ON s.id =tls.stateFk
|
||||||
|
JOIN alertLevel al ON al.id = s.alertLevel
|
||||||
|
JOIN agencyMode am ON am.id = t.agencyModeFk
|
||||||
|
JOIN client c ON c.id = t.clientFk
|
||||||
|
LEFT JOIN account.emailUser eu ON eu.userFk = c.salesPersonFk
|
||||||
|
WHERE (al.code = 'PACKED' OR (am.code = 'refund' AND al.code <> 'delivered'));
|
||||||
|
CALL ticket_close();
|
||||||
|
`, [dateFrom, dateTo], myOptions);
|
||||||
|
|
||||||
await Self.rawSql(`
|
await Self.rawSql(`
|
||||||
UPDATE ticket t
|
UPDATE ticket t
|
||||||
|
@ -76,11 +93,11 @@ module.exports = Self => {
|
||||||
JOIN ticketConfig tc ON TRUE
|
JOIN ticketConfig tc ON TRUE
|
||||||
LEFT JOIN ticketObservation tob ON tob.ticketFk = t.id
|
LEFT JOIN ticketObservation tob ON tob.ticketFk = t.id
|
||||||
SET t.routeFk = NULL
|
SET t.routeFk = NULL
|
||||||
WHERE t.shipped BETWEEN ? - INTERVAL tc.closureDaysAgo DAY AND util.dayEnd(?)
|
WHERE t.shipped BETWEEN ? AND ?
|
||||||
AND al.code NOT IN ('DELIVERED', 'PACKED')
|
AND al.code NOT IN ('DELIVERED', 'PACKED')
|
||||||
AND NOT t.packages
|
AND NOT t.packages
|
||||||
AND tob.id IS NULL
|
AND tob.id IS NULL
|
||||||
AND t.routeFk`, [toDate, toDate], myOptions);
|
AND t.routeFk`, [dateFrom, dateTo], myOptions);
|
||||||
|
|
||||||
const [clients] = await Self.rawSql(`
|
const [clients] = await Self.rawSql(`
|
||||||
SELECT clientFk clientId,
|
SELECT clientFk clientId,
|
||||||
|
|
Loading…
Reference in New Issue