7836-futureEntries #2839

Merged
pako merged 5 commits from 7836-futureEntries into dev 2024-08-08 06:06:23 +00:00
1 changed files with 128 additions and 128 deletions
Showing only changes of commit 9b2cbcd5cc - Show all commits

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(
pako marked this conversation as resolved
Review

Esta linea sobra

Esta linea sobra
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
pako marked this conversation as resolved Outdated

Como utilizas este campo iic.balanceStartingDate de la tabla invoiceInConfig, es mejor que lo setees en una variable, así no tienes que acceder a el 2 veces, sino 1.

https://wiki.verdnatura.es/index.php/Convenciones_SQL#Obtener_dato_de_una_tabla_config

Como utilizas este campo iic.balanceStartingDate de la tabla invoiceInConfig, es mejor que lo setees en una variable, así no tienes que acceder a el 2 veces, sino 1. https://wiki.verdnatura.es/index.php/Convenciones_SQL#Obtener_dato_de_una_tabla_config
Outdated
Review

ok

ok
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

¿Por que pones un 0?

¿Por que pones un 0?
Outdated
Review

Para que al sumar un NULL no me devuelva toda la suma NULL

Para que al sumar un NULL no me devuelva toda la suma NULL
'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'
pako marked this conversation as resolved Outdated

Quitar vn.

Quitar vn.
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$$
pako marked this conversation as resolved Outdated

END$$

END$$
DELIMITER ; DELIMITER ;