feat: Turn issues into calculated columns refs#7213
gitea/salix/pipeline/pr-dev This commit looks good Details

This commit is contained in:
Carlos Andrés 2024-05-13 12:32:46 +02:00
parent 057121582e
commit b1af625937
1 changed files with 21 additions and 16 deletions

View File

@ -20,57 +20,62 @@ BEGIN
(KEY (ticketFk))
ENGINE = MEMORY
WITH ticket AS(
SELECT id ticketFk, DATE(shipped) dated
SELECT id ticketFk, companyFk, DATE(shipped) dated
FROM vn.ticket t
WHERE clientFk = vSelf
AND refFk IS NULL
AND NOT isDeleted
AND totalWithoutVat <> 0
), dated AS(
SELECT MIN(DATE(t.dated) - INTERVAL cc.riskScope MONTH) started,
SELECT t.companyFk, MIN(DATE(t.dated) - INTERVAL cc.riskScope MONTH) started,
MAX(DATE(t.dated)) ended
FROM ticket t
JOIN vn.clientConfig cc
GROUP BY t.companyFk
), balance AS(
SELECT SUM(amount)amount
SELECT SUM(amount)amount, companyFk
FROM (
SELECT SUM(amount) amount
SELECT amount, companyFk
FROM vn.clientRisk
WHERE clientFk = vSelf
UNION ALL
SELECT -(SUM(amount) / 100) amount
SELECT -(SUM(amount) / 100) amount, tm.companyFk
FROM hedera.tpvTransaction t
JOIN hedera.tpvMerchant tm ON t.id = t.merchantFk
WHERE clientFk = vSelf
AND receiptFk IS NULL
AND status = 'ok'
) sub
WHERE companyFk
GROUP BY companyFk
), uninvoiced AS(
SELECT DATE(t.shipped) dated, SUM(t.totalWithVat) amount
SELECT t.companyFk, DATE(t.shipped) dated, SUM(IFNULL(t.totalWithVat, 0)) amount
FROM vn.ticket t
JOIN dated d
WHERE t.clientFk = vSelf
AND t.refFk IS NULL
AND t.shipped BETWEEN d.started AND d.ended
GROUP BY DATE(t.shipped)
GROUP BY t.companyFk, DATE(t.shipped)
), receipt AS(
SELECT DATE(payed) dated, SUM(amountPaid) amount
SELECT companyFk,DATE(payed) dated, SUM(amountPaid) amount
FROM vn.receipt
WHERE clientFk = vSelf
AND payed > util.VN_CURDATE()
GROUP BY DATE(payed)
GROUP BY companyFk, DATE(payed)
), risk AS(
SELECT ui.dated,
SUM(ui.amount) OVER (ORDER BY ui.dated) +
SELECT b.companyFk,
ui.dated,
SUM(ui.amount) OVER (PARTITION BY b.companyFk ORDER BY ui.dated ) +
b.amount +
SUM(IFNULL(r.amount, 0)) amount
FROM balance b
JOIN uninvoiced ui
LEFT JOIN receipt r ON r.dated > ui.dated
GROUP BY ui.dated
JOIN uninvoiced ui ON ui.companyFk = b.companyFk
LEFT JOIN receipt r ON r.dated > ui.dated AND r.companyFk = ui.companyFk
GROUP BY b.companyFk, ui.dated
)
SELECT ti.ticketFk, r.amount
SELECT ti.ticketFk, r.amount
FROM ticket ti
JOIN risk r ON r.dated = ti.dated;
JOIN risk r ON r.dated = ti.dated AND r.companyFk = ti.companyFk;
UPDATE ticket t
JOIN tTicketRisk tr ON tr.ticketFk = t.id