Compare commits
2 Commits
dev
...
4671-Regul
Author | SHA1 | Date |
---|---|---|
Javi Gallego | 0878d9bd97 | |
Javi Gallego | 4ebc812876 |
|
@ -0,0 +1,129 @@
|
||||||
|
DROP PROCEDURE IF EXISTS `vn`.`ticketComponentUpdateSale2`;
|
||||||
|
|
||||||
|
DELIMITER $$
|
||||||
|
$$
|
||||||
|
CREATE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketComponentUpdateSale2`(vComponentCode VARCHAR(255))
|
||||||
|
BEGIN
|
||||||
|
/**
|
||||||
|
* A partir de la tabla tmp.sale, crea los Movimientos_componentes
|
||||||
|
* y modifica el campo Preu de la tabla Movimientos
|
||||||
|
*
|
||||||
|
* @param i_option integer tipo de actualizacion
|
||||||
|
* @param table tmp.sale tabla memory con el campo saleFk, warehouseFk
|
||||||
|
**/
|
||||||
|
DECLARE vComponentFk INT;
|
||||||
|
DECLARE vKeepPrices BOOLEAN;
|
||||||
|
|
||||||
|
SELECT id INTO vComponentFk FROM component WHERE `code` = vComponentCode;
|
||||||
|
|
||||||
|
DELETE sc.*
|
||||||
|
FROM tmp.sale tmps
|
||||||
|
JOIN saleComponent sc ON sc.saleFk = tmps.saleFk
|
||||||
|
JOIN `component` c ON c.id = sc.componentFk
|
||||||
|
WHERE c.isRenewable;
|
||||||
|
|
||||||
|
REPLACE INTO saleComponent(saleFk, componentFk, value)
|
||||||
|
SELECT s.id, tc.componentFk, tc.cost
|
||||||
|
FROM sale s
|
||||||
|
JOIN tmp.sale tmps ON tmps.saleFk = s.id
|
||||||
|
JOIN tmp.ticketComponent tc ON tc.itemFk = s.itemFk AND tc.warehouseFk = tmps.warehouseFk
|
||||||
|
LEFT JOIN saleComponent sc ON sc.saleFk = s.id
|
||||||
|
AND sc.componentFk = tc.componentFk
|
||||||
|
LEFT JOIN `component` c ON c.id = tc.componentFk
|
||||||
|
WHERE IF(sc.componentFk IS NULL AND NOT c.isRenewable, FALSE, TRUE);
|
||||||
|
|
||||||
|
-- Añadir componente venta por paquete
|
||||||
|
DROP TEMPORARY TABLE IF EXISTS tmp.sale2;
|
||||||
|
CREATE TEMPORARY TABLE tmp.sale2
|
||||||
|
(PRIMARY KEY (saleFk))
|
||||||
|
ENGINE = MEMORY
|
||||||
|
SELECT * FROM tmp.sale;
|
||||||
|
|
||||||
|
DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponent2;
|
||||||
|
CREATE TEMPORARY TABLE tmp.ticketComponent2
|
||||||
|
SELECT * FROM tmp.ticketComponent;
|
||||||
|
|
||||||
|
REPLACE INTO saleComponent(saleFk, componentFk, value)
|
||||||
|
SELECT t.id, t.componentFk, t.cost
|
||||||
|
FROM (
|
||||||
|
SELECT s.id, tc.componentFk, tc.cost, MOD(s.quantity, b.packing) as resto
|
||||||
|
FROM vn.sale s
|
||||||
|
JOIN tmp.sale tmps ON tmps.saleFk = s.id
|
||||||
|
JOIN cache.last_buy lb ON lb.item_id = s.itemFk AND tmps.warehouseFk = lb.warehouse_id
|
||||||
|
JOIN vn.buy b ON b.id = buy_id
|
||||||
|
JOIN tmp.ticketComponent tc ON tc.itemFk = s.itemFk AND tc.warehouseFk = tmps.warehouseFk
|
||||||
|
JOIN `component` c ON c.id = tc.componentFk AND c.code = 'salePerPackage'
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT s.id
|
||||||
|
FROM vn.sale s
|
||||||
|
JOIN tmp.sale2 tmps ON tmps.saleFk = s.id
|
||||||
|
JOIN tmp.ticketComponent2 tc ON tc.itemFk = s.itemFk AND tc.warehouseFk = tmps.warehouseFk
|
||||||
|
JOIN saleComponent sc ON sc.saleFk = s.id AND sc.componentFk = tc.componentFk
|
||||||
|
JOIN `component` c ON c.id = sc.componentFk AND c.code = 'lastUnitsDiscount'
|
||||||
|
) tp ON tp.id = s.id
|
||||||
|
WHERE tp.id IS NULL
|
||||||
|
HAVING resto <> 0) t;
|
||||||
|
|
||||||
|
DROP TEMPORARY TABLE IF EXISTS
|
||||||
|
tmp.sale2,
|
||||||
|
tmp.ticketComponent2;
|
||||||
|
|
||||||
|
IF vComponentFk THEN
|
||||||
|
REPLACE INTO saleComponent(saleFk, componentFk, value)
|
||||||
|
SELECT s.id, vComponentFk, ROUND((s.price * (100 - s.discount) / 100) - SUM(sc.value), 3) dif
|
||||||
|
FROM sale s
|
||||||
|
JOIN tmp.sale tmps ON tmps.saleFk = s.id
|
||||||
|
LEFT JOIN saleComponent sc ON sc.saleFk = s.id
|
||||||
|
WHERE sc.saleFk <> vComponentFk
|
||||||
|
GROUP BY s.id
|
||||||
|
HAVING dif <> 0;
|
||||||
|
ELSE
|
||||||
|
UPDATE sale s
|
||||||
|
JOIN item i on i.id = s.itemFk
|
||||||
|
JOIN itemType it on it.id = i.typeFk
|
||||||
|
JOIN (SELECT SUM(sc.value) sumValue, sc.saleFk
|
||||||
|
FROM saleComponent sc
|
||||||
|
JOIN tmp.sale tmps ON tmps.saleFk = sc.saleFk
|
||||||
|
GROUP BY sc.saleFk) sc ON sc.saleFk = s.id
|
||||||
|
SET s.price = sumValue / ((100 - s.discount) / 100)
|
||||||
|
WHERE it.code != 'PRT' ;
|
||||||
|
|
||||||
|
REPLACE INTO saleComponent(saleFk, componentFk, value)
|
||||||
|
SELECT s.id, c.id, ROUND((s.price * (100 - s.discount) / 100) - SUM(value), 3) saleValue
|
||||||
|
FROM sale s
|
||||||
|
JOIN tmp.sale tmps ON tmps.saleFk = s.id
|
||||||
|
LEFT JOIN saleComponent sc ON sc.saleFk = s.id
|
||||||
|
LEFT JOIN component c ON c.code = 'adjustment'
|
||||||
|
WHERE sc.componentFk <> c.id
|
||||||
|
GROUP BY s.id
|
||||||
|
HAVING ROUND(saleValue, 4) <> 0;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
UPDATE sale s
|
||||||
|
JOIN (
|
||||||
|
SELECT SUM(sc.value) sumValue, sc.saleFk
|
||||||
|
FROM saleComponent sc
|
||||||
|
JOIN tmp.sale tmps ON tmps.saleFk = sc.saleFk
|
||||||
|
JOIN `component` c ON c.id = sc.componentFk
|
||||||
|
JOIN componentType ct on ct.id = c.typeFk AND ct.isBase
|
||||||
|
GROUP BY sc.saleFk) sc ON sc.saleFk = s.id
|
||||||
|
SET s.priceFixed = sumValue, s.isPriceFixed = TRUE;
|
||||||
|
|
||||||
|
DELETE sc.*
|
||||||
|
FROM saleComponent sc
|
||||||
|
JOIN tmp.sale tmps ON tmps.saleFk = sc.saleFk
|
||||||
|
JOIN sale s on s.id = sc.saleFk
|
||||||
|
JOIN item i ON i.id = s.itemFk
|
||||||
|
JOIN itemType it ON it.id = i.typeFk
|
||||||
|
WHERE it.code = 'PRT';
|
||||||
|
|
||||||
|
INSERT INTO saleComponent(saleFk, componentFk, value)
|
||||||
|
SELECT s.id, c.id, s.price
|
||||||
|
FROM sale s
|
||||||
|
JOIN tmp.sale tmps ON tmps.saleFk = s.id
|
||||||
|
JOIN item i ON i.id = s.itemFK
|
||||||
|
JOIN itemType it ON it.id = i.typeFk
|
||||||
|
LEFT JOIN component c ON c.code = 'delivery'
|
||||||
|
WHERE it.code = 'PRT' AND s.price > 0;
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
|
@ -73,28 +73,10 @@ module.exports = Self => {
|
||||||
|
|
||||||
const usesMana = await models.Sale.usesMana(ctx, myOptions);
|
const usesMana = await models.Sale.usesMana(ctx, myOptions);
|
||||||
const componentCode = usesMana ? 'mana' : 'buyerDiscount';
|
const componentCode = usesMana ? 'mana' : 'buyerDiscount';
|
||||||
const discount = await models.Component.findOne({where: {code: componentCode}}, myOptions);
|
|
||||||
const componentId = discount.id;
|
|
||||||
const componentValue = newPrice - sale.price;
|
|
||||||
|
|
||||||
const where = {
|
|
||||||
componentFk: componentId,
|
|
||||||
saleFk: id
|
|
||||||
};
|
|
||||||
const saleComponent = await models.SaleComponent.findOne({where}, myOptions);
|
|
||||||
if (saleComponent) {
|
|
||||||
await models.SaleComponent.updateAll(where, {
|
|
||||||
value: saleComponent.value + componentValue
|
|
||||||
}, myOptions);
|
|
||||||
} else {
|
|
||||||
await models.SaleComponent.create({
|
|
||||||
saleFk: id,
|
|
||||||
componentFk: componentId,
|
|
||||||
value: componentValue
|
|
||||||
}, myOptions);
|
|
||||||
}
|
|
||||||
await sale.updateAttributes({price: newPrice}, myOptions);
|
await sale.updateAttributes({price: newPrice}, myOptions);
|
||||||
|
|
||||||
|
await Self.rawSql('CALL vn.sale_calculateComponent(?, ?)', [id, componentCode], myOptions);
|
||||||
await Self.rawSql('CALL vn.manaSpellersRequery(?)', [userId], myOptions);
|
await Self.rawSql('CALL vn.manaSpellersRequery(?)', [userId], myOptions);
|
||||||
await Self.rawSql('CALL vn.ticket_recalc(?, NULL)', [sale.ticketFk], myOptions);
|
await Self.rawSql('CALL vn.ticket_recalc(?, NULL)', [sale.ticketFk], myOptions);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue