我正在使用 Adempiere。我有三张桌子和一个视图。它是,'M_INVENTORY'
另一个是.
当我们要选择时使用。它显示这样'M_INVENTORYLINE'
'M_REPLENISH'
'VW_DAFTARBARANG_AVAILABLE'
M_Inventory
Warehouse
M_INVENTORY
------------------------------------
M_Inventory_ID || M_Warehouse_ID
------------------------------------
2000001 || 1000001
2000002 || 1000002
2000003 || 1000003
M_InventoryLine
当我们想要订购库存时使用,我们在这里放置
Product
并Quantity
订购。M_InventoryLine
是嵌套的,所以我们从我们选择的M_Inventory
相关订购库存。Warehouse
M_Inventory
M_INVENTORYLINE
-----------------------------------------------------------
M_Inventory_ID || M_Product_ID || QtyInternalUse || Status
2000001 || 1000011 || 5 ||
2000001 || 1000012 || 7 ||
2000001 || 1000013 || 8 ||
M_Replenish
用于检查最低库存水平。
M_REPLENISH
-----------------------------
M_Product_ID || Level_Min
1000011 || 20
1000012 || 15
1000013 || 12
库存的可用性可以在视图中检查VW_DAFTARBARANG_AVAILABLE
。
VW_DAFTARBARANG_AVAILABLE
--------------------------------------------
M_Warehouse_ID || M_Product_ID || Available
--------------------------------------------
1000001 || 1000011 || 27
1000001 || 1000012 || 20
1000001 || 1000013 || 12
1000002 || 1000011 || 25
1000002 || 1000012 || 20
1000003 || 1000011 || 25
1000003 || 1000012 || 20
我想将信息放在Status
表中的列中M_InventoryLine
。
如果Available
订购库存时超过最低库存,则状态显示'Complete'
示例 : M_Product_ID
= 1000011
( QtyInternalUse
[order] = 5
, Level_Min
= 20
, Av
= 27
, 27-5 = 22
-> Still above Minimum Level
)
如果Available
在订购一半的库存时达到最低库存,则状态显示' Partial'
示例 : M_Product_ID
= 1000012
( QtyInternalUse
[order] = 7
, Level_Min
= 15
, Av
= 20
, 20-7 = 13
-> 变成below Minimum Level
,
因此,它只能满足 7 个中的 5 个,因此库存仍处于最低水平。)
如果Available
在他的最低库存中,因此无法订购库存,则状态显示'N/A
'
示例 : M_Product_ID
= 1000013
( QtyInternalUse
[order] = 8
, Level_Min
= 12
, Av
= 12
, -> 数量Available
与 相同minimum level
,因此无法订购)
我试过通过制作这样的东西来制作触发器=
CREATE OR REPLACE TRIGGER STATUS_MR
BEFORE INSERT ON M_INVENTORYLINE
FOR EACH ROW
BEGIN
WHEN M_INVENTORY.M_WAREHOUSE_ID = M_WAREHOUSE_ID AND M_PRODUCT_ID = M_PRODUCT_ID;
IF :NEW.QTYINTERNALUSE <= VW_DAFTARBARANG_AVAILABLE.AVAILABLE THEN
:new.Status := "Complete"
ELSIF :NEW.QTYINTERNALUSE > VW_DAFTARBARANG_AVAILABLE.AVAILABLE THEN
:new.Status := "Partial"
ELSE
:new.status := "Not Available"
END IF;
END;
仍然有很多错误,我对如何根据我的条件编写好触发器感到困惑。
任何建议将不胜感激:)