80 lines
1.9 KiB
MySQL
80 lines
1.9 KiB
MySQL
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`root`@`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
|
||
|
|
||
|
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;
|
||
|
|
||
|
END$$
|
||
|
DELIMITER ;
|