80 lines
2.1 KiB
MySQL
80 lines
2.1 KiB
MySQL
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`supplierExpenses`(vEnded DATE)
|
||
|
BEGIN
|
||
|
|
||
|
DROP TEMPORARY TABLE IF EXISTS openingBalance;
|
||
|
|
||
|
CREATE TEMPORARY TABLE openingBalance(
|
||
|
dueDated DATE
|
||
|
, supplierFk INT NOT NULL
|
||
|
, companyFk INT NOT NULL
|
||
|
, eurAmount DOUBLE NOT NULL
|
||
|
, foreignAmount DOUBLE NOT NULL
|
||
|
, PRIMARY KEY(supplierFk, companyFk))
|
||
|
ENGINE = MEMORY;
|
||
|
|
||
|
-- Calcula el balance inicial y final de cada proveedor
|
||
|
INSERT INTO openingBalance
|
||
|
SELECT MAX(dueDated),
|
||
|
supplierFk,
|
||
|
companyFk,
|
||
|
sum(amount) eurAmount,
|
||
|
sum(divisa) foreignAmount
|
||
|
FROM (
|
||
|
SELECT p.dueDated,
|
||
|
p.supplierFk,
|
||
|
p.companyFk,
|
||
|
p.amount,
|
||
|
p.divisa
|
||
|
FROM payment p
|
||
|
JOIN currency c ON c.id = p.currencyFk
|
||
|
JOIN company co ON co.id = p.companyFk
|
||
|
WHERE p.dueDated > '2014-12-31'
|
||
|
AND p.dueDated <= vEnded
|
||
|
AND co.`code` = 'VNL'
|
||
|
AND c.`code` <> 'EUR'
|
||
|
UNION ALL
|
||
|
|
||
|
SELECT iidd.dueDated,
|
||
|
ii.supplierFk,
|
||
|
ii.companyFk,
|
||
|
- iidd.amount,
|
||
|
- iidd.foreignValue
|
||
|
FROM invoiceIn ii
|
||
|
JOIN invoiceInDueDay iidd ON ii.id = iidd.invoiceInFk
|
||
|
JOIN currency c ON c.id = ii.currencyFk
|
||
|
JOIN company co ON co.id = ii.companyFk
|
||
|
WHERE iidd.dueDated > '2014-12-31'
|
||
|
AND iidd.dueDated <= vEnded
|
||
|
AND ii.isBooked AND co.`code` = 'VNL'
|
||
|
AND c.`code` <> 'EUR'
|
||
|
UNION ALL
|
||
|
|
||
|
SELECT se.dueDated,
|
||
|
se.supplierFk,
|
||
|
se.companyFk,
|
||
|
- se.amount,
|
||
|
0
|
||
|
FROM supplierExpense se
|
||
|
JOIN currency c ON c.id = se.currencyFk
|
||
|
JOIN company co ON co.id = se.companyFk
|
||
|
WHERE se.dueDated > '2014-12-31'
|
||
|
AND se.dueDated <= vEnded
|
||
|
AND co.`code` = 'VNL' AND c.`code` <> 'EUR'
|
||
|
) sub
|
||
|
GROUP BY companyFk, supplierFk;
|
||
|
|
||
|
SELECT ob.dueDated
|
||
|
, ob.supplierFk
|
||
|
, ob.companyFk
|
||
|
, ob.eurAmount
|
||
|
, s.`name`
|
||
|
FROM openingBalance ob
|
||
|
LEFT JOIN supplier s ON s.id = ob.supplierFk
|
||
|
WHERE ob.eurAmount <> 0 AND ob.foreignAmount = 0;
|
||
|
|
||
|
DROP TEMPORARY TABLE openingBalance;
|
||
|
|
||
|
END$$
|
||
|
DELIMITER ;
|