7836-futureEntries #2839
|
@ -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
|
|||||||
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
guillermo
commented
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
pako
commented
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
|
||||||
guillermo
commented
¿Por que pones un 0? ¿Por que pones un 0?
pako
commented
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
guillermo
commented
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
guillermo
commented
END$$ END$$
|
|||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
Loading…
Reference in New Issue
Esta linea sobra