feat: refs #7984 add currencyDated and use
gitea/salix/pipeline/pr-dev There was a failure building this commit
Details
gitea/salix/pipeline/pr-dev There was a failure building this commit
Details
This commit is contained in:
parent
630836cd8e
commit
2e4e209208
|
@ -2692,10 +2692,18 @@ UPDATE `vn`.`invoiceIn`
|
||||||
WHERE id IN (5, 7, 8, 9, 10);
|
WHERE id IN (5, 7, 8, 9, 10);
|
||||||
|
|
||||||
INSERT INTO vn.referenceRate (currencyFk, dated, value)
|
INSERT INTO vn.referenceRate (currencyFk, dated, value)
|
||||||
VALUES (2, '2000-12-01', 1.0495),
|
VALUES (2, '2000-12-01', 1),
|
||||||
(2, '2001-01-01', 1.0531),
|
(2, '2000-12-29', 2),
|
||||||
(2, '2001-02-01', 7.6347),
|
(2, '2000-12-30', 3),
|
||||||
(2, '2000-12-31', 7.6347);
|
(2, '2000-12-31', 4),
|
||||||
|
(2, '2001-01-01', 5),
|
||||||
|
(2, '2001-02-01', 6),
|
||||||
|
(3, '2000-12-01', 10),
|
||||||
|
(3, '2000-12-29', 20),
|
||||||
|
(3, '2000-12-30', 30),
|
||||||
|
(3, '2000-12-31', 40),
|
||||||
|
(3, '2001-01-01', 50),
|
||||||
|
(3, '2001-02-01', 60);
|
||||||
|
|
||||||
UPDATE vn.ticket t
|
UPDATE vn.ticket t
|
||||||
JOIN vn.sale s ON s.ticketFk = t.id
|
JOIN vn.sale s ON s.ticketFk = t.id
|
||||||
|
|
|
@ -15,7 +15,7 @@ BEGIN
|
||||||
* @param vDated The date of exchangue
|
* @param vDated The date of exchangue
|
||||||
* @return vForeignRate The rate e of currency exchange
|
* @return vForeignRate The rate e of currency exchange
|
||||||
*/
|
*/
|
||||||
DECLARE vForeignRate DECIMAL(10,2);
|
DECLARE vForeignRate FLOAT UNSIGNED;
|
||||||
|
|
||||||
SELECT value INTO vForeignRate
|
SELECT value INTO vForeignRate
|
||||||
FROM referenceRate
|
FROM referenceRate
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`ticket_getCurrencyDate`(vSelf INT)
|
||||||
|
RETURNS INT(11)
|
||||||
|
DETERMINISTIC
|
||||||
|
BEGIN
|
||||||
|
DECLARE vCurrencyDated DATE;
|
||||||
|
|
||||||
|
SELECT IF(DATE(shipped) < util.VN_CURDATE(), shipped, util.yesterday()) INTO vCurrencyDated
|
||||||
|
FROM ticket
|
||||||
|
WHERE id = vSelf;
|
||||||
|
|
||||||
|
RETURN vCurrencyDated;
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`ticket_getCurrencyRate`(
|
||||||
|
vSelf INT,
|
||||||
|
vCurrencyFk SMALLINT
|
||||||
|
)
|
||||||
|
RETURNS DECIMAL(10,2)
|
||||||
|
NOT DETERMINISTIC
|
||||||
|
READS SQL DATA
|
||||||
|
BEGIN
|
||||||
|
/**
|
||||||
|
* Returns the rate exchange based on the specified currency for a ticket
|
||||||
|
*
|
||||||
|
* @param vSelf The ticket id
|
||||||
|
* @param vCurrencyFk The currency id, if is null, get the currency of the ticket
|
||||||
|
* @return The rate of currency exchange
|
||||||
|
*/
|
||||||
|
SELECT IFNULL(vCurrencyFk, currencyFk) INTO vCurrencyFk
|
||||||
|
FROM ticket
|
||||||
|
WHERE id = vSelf;
|
||||||
|
|
||||||
|
RETURN currency_getRate(vCurrencyFk, ticket_getCurrencyDate(vSelf));
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
|
@ -19,6 +19,6 @@ BEGIN
|
||||||
WHERE t.id = vTicketFk
|
WHERE t.id = vTicketFk
|
||||||
GROUP BY sc.saleFk) sub ON sub.saleFk = s.id
|
GROUP BY sc.saleFk) sub ON sub.saleFk = s.id
|
||||||
SET s.price = sub.price,
|
SET s.price = sub.price,
|
||||||
s.foreignPrice = currency_getRate(sub.currencyFk, NULL) * sub.price;
|
s.foreignPrice = ticket_getCurrencyRate(vTicketFk) * sub.price;
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
|
@ -26,9 +26,15 @@ BEGIN
|
||||||
i.category,
|
i.category,
|
||||||
IFNULL(s.quantity, 0) quantity,
|
IFNULL(s.quantity, 0) quantity,
|
||||||
IFNULL(s.price, 0) price,
|
IFNULL(s.price, 0) price,
|
||||||
IFNULL(s.foreignPrice, 0) foreignPrice,
|
ROUND(IFNULL(
|
||||||
|
IFNULL(
|
||||||
|
s.foreignPrice,
|
||||||
|
s.price * ticket_getCurrencyRate(vTicketFk, vCurrencyFk)
|
||||||
|
) , 0
|
||||||
|
), 2) foreignPrice,
|
||||||
ROUND(SUM(tc.cost), 2) newPrice,
|
ROUND(SUM(tc.cost), 2) newPrice,
|
||||||
s.id saleFk
|
s.id saleFk,
|
||||||
|
ticket_getCurrencyRate(vTicketFk, vCurrencyFk) currencyRate
|
||||||
FROM vn.sale s
|
FROM vn.sale s
|
||||||
JOIN vn.item i ON i.id = s.itemFk
|
JOIN vn.item i ON i.id = s.itemFk
|
||||||
JOIN vn.ticket t ON t.id = s.ticketFk
|
JOIN vn.ticket t ON t.id = s.ticketFk
|
||||||
|
@ -43,9 +49,9 @@ BEGIN
|
||||||
GROUP BY s.id ORDER BY s.id
|
GROUP BY s.id ORDER BY s.id
|
||||||
) SELECT
|
) SELECT
|
||||||
*,
|
*,
|
||||||
currency_getRate(vCurrencyFk, NULL) * newPrice newForeignPrice,
|
ROUND(currencyRate * newPrice, 2) newForeignPrice,
|
||||||
quantity * (price - newPrice) difference,
|
quantity * (newPrice - price) difference,
|
||||||
quantity * (foreignPrice - currency_getRate(vCurrencyFk, NULL) * newPrice) foreignDifference
|
quantity * (ROUND(currencyRate * newPrice, 2) - foreignPrice ) foreignDifference
|
||||||
FROM ticketPriceDifference;
|
FROM ticketPriceDifference;
|
||||||
|
|
||||||
DROP TEMPORARY TABLE tmp.ticketComponentPreview;
|
DROP TEMPORARY TABLE tmp.ticketComponentPreview;
|
||||||
|
|
|
@ -3,7 +3,8 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`sale_beforeInsert`
|
||||||
BEFORE INSERT ON `sale`
|
BEFORE INSERT ON `sale`
|
||||||
FOR EACH ROW
|
FOR EACH ROW
|
||||||
BEGIN
|
BEGIN
|
||||||
SET NEW.editorFk = account.myUser_getId();
|
SET NEW.editorFk = account.myUser_getId(),
|
||||||
SET NEW.originalQuantity = NEW.quantity;
|
NEW.originalQuantity = NEW.quantity,
|
||||||
|
NEW.currencyDated = ticket_getCurrencyDate(NEW.ticketFk);
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
|
@ -8,7 +8,8 @@ BEGIN
|
||||||
CALL util.throw('Cannot insert a service item into a ticket');
|
CALL util.throw('Cannot insert a service item into a ticket');
|
||||||
END IF;
|
END IF;
|
||||||
*/
|
*/
|
||||||
SET NEW.editorFk = account.myUser_getId();
|
SET NEW.editorFk = account.myUser_getId(),
|
||||||
|
NEW.currencyDated = ticket_getCurrencyDate(NEW.ticketFk);
|
||||||
|
|
||||||
IF NEW.discount > 100 THEN
|
IF NEW.discount > 100 THEN
|
||||||
SET NEW.discount = 0;
|
SET NEW.discount = 0;
|
||||||
|
@ -19,5 +20,9 @@ BEGIN
|
||||||
SET originFk = NEW.ticketFk, userFk = account.myUser_getId(), `action` = 'insert',
|
SET originFk = NEW.ticketFk, userFk = account.myUser_getId(), `action` = 'insert',
|
||||||
description = CONCAT('Cambio de descuento del item :', ' ', new.itemFk, ' de ', old.discount ,' a 0 ');
|
description = CONCAT('Cambio de descuento del item :', ' ', new.itemFk, ' de ', old.discount ,' a 0 ');
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
|
IF NOT(NEW.price <=> OLD.price) THEN
|
||||||
|
SET NEW.currencyDated = ticket_getCurrencyDate(NEW.ticketFk);
|
||||||
|
END IF;
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
|
@ -76,6 +76,8 @@ UPDATE vn.client c
|
||||||
SET c.defaultCompanyFk = co.companyFk,
|
SET c.defaultCompanyFk = co.companyFk,
|
||||||
c.defaultCurrencyFk = co.currencyFk;
|
c.defaultCurrencyFk = co.currencyFk;
|
||||||
|
|
||||||
|
ALTER TABLE vn.sale ADD currencyDated DATE DEFAULT NULL;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue