reviewed
gitea/salix/pipeline/pr-dev There was a failure building this commit Details

This commit is contained in:
Pako Natek 2024-08-07 10:42:14 +02:00
parent fc7c7beef7
commit 9b2cbcd5cc
1 changed files with 128 additions and 128 deletions

View File

@ -1,5 +1,4 @@
DELIMITER $$ DELIMITER $$
$$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE vn.supplier_statementWithEntries( CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE vn.supplier_statementWithEntries(
vSupplierFk INT, vSupplierFk INT,
vCurrencyFk INT, vCurrencyFk INT,
@ -20,9 +19,15 @@ BEGIN
* @param vHasEntries Indicates if future entries must be shown * @param vHasEntries Indicates if future entries must be shown
* @return tmp.supplierStatement * @return tmp.supplierStatement
*/ */
DECLARE vBalanceStartingDate DATETIME;
SET @euroBalance:= 0; SET @euroBalance:= 0;
SET @currencyBalance:= 0; SET @currencyBalance:= 0;
SELECT balanceStartingDate
INTO vBalanceStartingDate
FROM invoiceInConfig;
CREATE OR REPLACE TEMPORARY TABLE tmp.supplierStatement CREATE OR REPLACE TEMPORARY TABLE tmp.supplierStatement
ENGINE = MEMORY ENGINE = MEMORY
SELECT *, SELECT *,
@ -35,132 +40,127 @@ BEGIN
IFNULL(invoiceCurrency, 0), 2 IFNULL(invoiceCurrency, 0), 2
) currencyBalance ) currencyBalance
FROM ( FROM (
SELECT * FROM SELECT NULL bankFk,
( ii.companyFk,
SELECT NULL bankFk, ii.serial,
ii.companyFk, ii.id,
ii.serial, CASE
ii.id, WHEN vOrderBy = 'issued' THEN ii.issued
CASE WHEN vOrderBy = 'bookEntried' THEN ii.bookEntried
WHEN vOrderBy = 'issued' THEN ii.issued WHEN vOrderBy = 'booked' THEN ii.booked
WHEN vOrderBy = 'bookEntried' THEN ii.bookEntried WHEN vOrderBy = 'dueDate' THEN iid.dueDated
WHEN vOrderBy = 'booked' THEN ii.booked END dated,
WHEN vOrderBy = 'dueDate' THEN iid.dueDated CONCAT('S/Fra ', ii.supplierRef) sref,
END dated, IF(ii.currencyFk > 1,
CONCAT('S/Fra ', ii.supplierRef) sref, ROUND(SUM(iid.foreignValue) / SUM(iid.amount), 3),
IF(ii.currencyFk > 1, NULL
ROUND(SUM(iid.foreignValue) / SUM(iid.amount), 3), ) changeValue,
NULL CAST(SUM(iid.amount) AS DECIMAL(10,2)) invoiceEuros,
) changeValue, CAST(SUM(iid.foreignValue) AS DECIMAL(10,2)) invoiceCurrency,
CAST(SUM(iid.amount) AS DECIMAL(10,2)) invoiceEuros, NULL paymentEuros,
CAST(SUM(iid.foreignValue) AS DECIMAL(10,2)) invoiceCurrency, NULL paymentCurrency,
NULL paymentEuros, ii.currencyFk,
NULL paymentCurrency, ii.isBooked,
ii.currencyFk, c.code,
ii.isBooked, 'invoiceIn' statementType
c.code, FROM invoiceIn ii
'invoiceIn' statementType JOIN invoiceInDueDay iid ON iid.invoiceInFk = ii.id
FROM invoiceIn ii JOIN currency c ON c.id = ii.currencyFk
JOIN invoiceInDueDay iid ON iid.invoiceInFk = ii.id WHERE ii.issued >= vBalanceStartingDate
JOIN currency c ON c.id = ii.currencyFk AND ii.supplierFk = vSupplierFk
JOIN invoiceInConfig iic AND vCurrencyFk IN (ii.currencyFk, 0)
WHERE ii.issued >= iic.balanceStartingDate AND vCompanyFk IN (ii.companyFk, 0)
AND ii.supplierFk = vSupplierFk AND (vIsConciliated = ii.isBooked OR NOT vIsConciliated)
AND vCurrencyFk IN (ii.currencyFk, 0) GROUP BY iid.id
AND vCompanyFk IN (ii.companyFk, 0) UNION ALL
AND (vIsConciliated = ii.isBooked OR NOT vIsConciliated) SELECT p.bankFk,
GROUP BY iid.id p.companyFk,
UNION ALL NULL,
SELECT p.bankFk, p.id,
p.companyFk, CASE
NULL, WHEN vOrderBy = 'issued' THEN p.received
p.id, WHEN vOrderBy = 'bookEntried' THEN p.received
CASE WHEN vOrderBy = 'booked' THEN p.received
WHEN vOrderBy = 'issued' THEN p.received WHEN vOrderBy = 'dueDate' THEN p.dueDated
WHEN vOrderBy = 'bookEntried' THEN p.received END,
WHEN vOrderBy = 'booked' THEN p.received CONCAT(IFNULL(pm.name, ''),
WHEN vOrderBy = 'dueDate' THEN p.dueDated IF(pn.concept <> '',
END, CONCAT(' : ', pn.concept),
CONCAT(IFNULL(pm.name, ''), '')
IF(pn.concept <> '', ),
CONCAT(' : ', pn.concept), IF(p.currencyFk > 1, p.divisa / p.amount, NULL),
'') NULL,
), NULL,
IF(p.currencyFk > 1, p.divisa / p.amount, NULL), p.amount,
NULL, p.divisa,
NULL, p.currencyFk,
p.amount, p.isConciliated,
p.divisa, c.code,
p.currencyFk, 'payment'
p.isConciliated, FROM payment p
c.code, LEFT JOIN currency c ON c.id = p.currencyFk
'payment' LEFT JOIN accounting a ON a.id = p.bankFk
FROM payment p LEFT JOIN payMethod pm ON pm.id = p.payMethodFk
LEFT JOIN currency c ON c.id = p.currencyFk LEFT JOIN promissoryNote pn ON pn.paymentFk = p.id
LEFT JOIN accounting a ON a.id = p.bankFk WHERE p.received >= vBalanceStartingDate
LEFT JOIN payMethod pm ON pm.id = p.payMethodFk AND p.supplierFk = vSupplierFk
LEFT JOIN promissoryNote pn ON pn.paymentFk = p.id AND vCurrencyFk IN (p.currencyFk, 0)
JOIN invoiceInConfig iic AND vCompanyFk IN (p.companyFk, 0)
WHERE p.received >= iic.balanceStartingDate AND (vIsConciliated = p.isConciliated OR NOT vIsConciliated)
AND p.supplierFk = vSupplierFk UNION ALL
AND vCurrencyFk IN (p.currencyFk, 0) SELECT NULL,
AND vCompanyFk IN (p.companyFk, 0) companyFk,
AND (vIsConciliated = p.isConciliated OR NOT vIsConciliated) NULL,
UNION ALL se.id,
SELECT NULL, CASE
companyFk, WHEN vOrderBy = 'issued' THEN se.dated
NULL, WHEN vOrderBy = 'bookEntried' THEN se.dated
se.id, WHEN vOrderBy = 'booked' THEN se.dated
CASE WHEN vOrderBy = 'dueDate' THEN se.dueDated
WHEN vOrderBy = 'issued' THEN se.dated END,
WHEN vOrderBy = 'bookEntried' THEN se.dated se.description,
WHEN vOrderBy = 'booked' THEN se.dated 1,
WHEN vOrderBy = 'dueDate' THEN se.dueDated amount,
END, NULL,
se.description, NULL,
1, NULL,
amount, currencyFk,
NULL, isConciliated,
NULL, c.`code`,
NULL, 'expense'
currencyFk, FROM supplierExpense se
isConciliated, JOIN currency c ON c.id = se.currencyFk
c.`code`, WHERE se.supplierFk = vSupplierFk
'expense' AND vCurrencyFk IN (se.currencyFk,0)
FROM supplierExpense se AND vCompanyFk IN (se.companyFk,0)
JOIN currency c ON c.id = se.currencyFk AND (vIsConciliated = se.isConciliated OR NOT vIsConciliated)
WHERE se.supplierFk = vSupplierFk UNION ALL
AND vCurrencyFk IN (se.currencyFk,0) SELECT NULL bankFk,
AND vCompanyFk IN (se.companyFk,0) e.companyFk,
AND (vIsConciliated = se.isConciliated OR NOT vIsConciliated) 'E' serial,
UNION ALL e.invoiceNumber id,
SELECT NULL bankFk, tr.landed dated,
e.companyFk, CONCAT('Ent. ',e.id) sref,
'E' serial, 1 / ((e.commission/100)+1) changeValue,
e.invoiceNumber id, e.invoiceAmount * (1 + (e.commission/100)),
tr.landed dated, e.invoiceAmount,
CONCAT('Ent. ',e.id) sref, NULL,
1 / ((e.commission/100)+1) changeValue, NULL,
e.invoiceAmount * (1 + (e.commission/100)), e.currencyFk,
e.invoiceAmount, FALSE isBooked,
NULL, c.code,
NULL, 'order'
e.currencyFk, FROM entry e
FALSE isBooked, JOIN travel tr ON tr.id = e.travelFk
c.code, JOIN currency c ON c.id = e.currencyFk
'order' WHERE e.supplierFk = vSupplierFk
FROM vn.entry e AND tr.landed >= CURDATE()
JOIN travel tr ON tr.id = e.travelFk AND e.invoiceInFk IS NULL
JOIN currency c ON c.id = e.currencyFk AND vHasEntries
WHERE e.supplierFk = vSupplierFk ORDER BY (dated IS NULL AND NOT isBooked),
AND tr.landed >= CURDATE() dated,
AND e.invoiceInFk IS NULL IF(vOrderBy = 'dueDate', id, NULL)
AND vHasEntries LIMIT 10000000000000000000
) sub
ORDER BY (dated IS NULL AND NOT isBooked),
dated,
IF(vOrderBy = 'dueDate', id, NULL)
LIMIT 10000000000000000000
) t; ) t;
END;$$ END$$
DELIMITER ; DELIMITER ;