アデンピエールを使用しています。3 つのテーブルとビューがあります。それは'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
table の列に情報を入れたいM_InventoryLine
。
Available
在庫発注時の最低在庫数以上の場合、ステータスが表示されます'Complete'
例 : M_Product_ID
= 1000011
( QtyInternalUse
[順序] = 5
, Level_Min
= 20
, Av
= 27
, 27-5 = 22
-> Still above Minimum Level
)
Available
在庫が半分注文されたときに最小在庫に達すると、ステータスが表示されます' Partial'
例:M_Product_ID
= 1000012
( QtyInternalUse
[順序] = 7
、Level_Min
= 15
、Av
= 20
、20-7 = 13
->below Minimum Level
となり、
したがって、7つのうち5つしか満たすことができないため、在庫はまだ最小レベルにあります.)
Available
が最小在庫にあり、在庫を注文できない場合、ステータスは'N/A
「
例:M_Product_ID
= 1000013
( QtyInternalUse
[注文] = 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;
まだエラーがたくさんあり、自分の状態に基づいてトリガーを適切に記述する方法について混乱しています。
任意の提案をいただければ幸いです:)