0

アデンピエールを使用しています。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在庫を注文したいときに使います、ここに入れ ProductQuantity注文します。M_InventoryLineは からネストされているため、で選択したM_Inventory関連する から在庫を注文します。WarehouseM_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

Statustable の列に情報を入れたい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[順序] = 7Level_Min= 15Av= 2020-7 = 13->below Minimum Levelとなり、

したがって、7つのうち5つしか満たすことができないため、在庫はまだ最小レベルにあります.)


Availableが最小在庫にあり、在庫を注文できない場合、ステータスは'N/A

例:M_Product_ID= 1000013( QtyInternalUse[注文] = 8, Level_Min= 12, Av= , ->と同じ12数量のため、注文できません)Availableminimum 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;

まだエラーがたくさんあり、自分の状態に基づいてトリガーを適切に記述する方法について混乱しています。

任意の提案をいただければ幸いです:)

4

1 に答える 1