87 lines
2.0 KiB
SQL
87 lines
2.0 KiB
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`buy_afterUpsert`(
|
|
vSelf INT
|
|
)
|
|
BEGIN
|
|
/**
|
|
* Triggered actions when a buy is updated or inserted.
|
|
*
|
|
* @param vSelf The buy reference
|
|
*/
|
|
DECLARE vEntryFk INT;
|
|
DECLARE vItemFk INT;
|
|
DECLARE vPackingOut DECIMAL(10,2);
|
|
DECLARE vWarehouse INT;
|
|
DECLARE vStandardFlowerBox INT;
|
|
DECLARE vWarehouseOut INT;
|
|
DECLARE vIsMerchandise BOOL;
|
|
DECLARE vIsFeedStock BOOL;
|
|
DECLARE vWeight DECIMAL(10,2);
|
|
DECLARE vPacking INT;
|
|
|
|
SELECT b.entryFk,
|
|
b.itemFk,
|
|
i.packingOut,
|
|
ic.merchandise,
|
|
vc.standardFlowerBox,
|
|
b.weight,
|
|
b.packing
|
|
INTO
|
|
vEntryFk,
|
|
vItemFk,
|
|
vPackingOut,
|
|
vIsMerchandise,
|
|
vStandardFlowerBox,
|
|
vWeight,
|
|
vPacking
|
|
FROM buy b
|
|
LEFT JOIN item i ON i.id = b.itemFk
|
|
LEFT JOIN itemType it ON it.id = i.typeFk
|
|
LEFT JOIN itemCategory ic ON ic.id = it.categoryFk
|
|
LEFT JOIN packaging p ON p.id = b.packagingFk AND NOT p.isBox
|
|
JOIN volumeConfig vc ON TRUE
|
|
WHERE b.id = vSelf;
|
|
|
|
SELECT t.warehouseInFk, t.warehouseOutFk
|
|
INTO vWarehouse, vWarehouseOut
|
|
FROM entry e
|
|
JOIN travel t ON t.id = e.travelFk
|
|
WHERE e.id = vEntryFk;
|
|
|
|
IF vIsMerchandise THEN
|
|
IF vWarehouse IS NULL THEN
|
|
CALL util.throw('The entry does not have travel');
|
|
END IF;
|
|
|
|
REPLACE itemCost SET
|
|
itemFk = vItemFk,
|
|
warehouseFk = vWarehouse,
|
|
cm3 = buy_getUnitVolume(vSelf),
|
|
cm3Delivery = IFNULL((vStandardFlowerBox * 1000) / vPackingOut, buy_getUnitVolume(vSelf));
|
|
|
|
IF vWeight AND vPacking THEN
|
|
UPDATE itemCost SET
|
|
grams = vWeight * 1000 / vPacking
|
|
WHERE itemFk = vItemFk
|
|
AND warehouseFk = vWarehouse;
|
|
END IF;
|
|
END IF;
|
|
|
|
SELECT isFeedStock INTO vIsFeedStock
|
|
FROM warehouse WHERE id = vWarehouseOut;
|
|
|
|
IF vIsFeedStock THEN
|
|
INSERT IGNORE INTO producer(`name`)
|
|
SELECT es.company_name
|
|
FROM buy b
|
|
JOIN edi.ekt be ON be.id = b.ektFk
|
|
JOIN edi.supplier es ON es.supplier_id = be.pro
|
|
WHERE b.id = vSelf;
|
|
|
|
END IF;
|
|
CREATE OR REPLACE TEMPORARY TABLE tmp.buysToCheck
|
|
SELECT vSelf id;
|
|
CALL buy_checkItem();
|
|
END$$
|
|
DELIMITER ;
|