IFS ERP Satış Siparişine Rezervasyon Koymak
Aşağıdaki plsql script ile bir siparişin istediğiniz satırlarına ya da hepsine belirlediğiniz lokasyondan otomatik olarak rezervasyon yaptırabilirsiniz, değişkenlerin tanımlandığı(order_no,location_no vb) satırlara commentler ekledim, kendi IFS tanımlarınıza göre düzenleyebilirsiniz.
Tabi bu işlemi satış siparişleri listesinde satırlara sağ tıklayıp rezervasyon diyerek yapabilirsiniz, ama yüklü bir sipariş varsa ve bir an önce halletmeniz isteniyorsa işinize çok yarayacağını düşünüyorum 🙂
Bu aralar IFS erp ile ilgili çok soru alıyorum, elimden geldiğince bir şeyler paylaşacağım..
DECLARE
info_ VARCHAR2(2000);
objid_ VARCHAR2(2000);
objversion_ VARCHAR2(2000);
attr_ VARCHAR2(2000);
attr2_ VARCHAR2(2000);
co_line_no_ VARCHAR2(20);
co_rel_no_ VARCHAR2(20);
co_line_item_no_ NUMBER;
state_ VARCHAR2(100);
qty_ NUMBER;
rez_miktar_ NUMBER;
co_no_ VARCHAR2(20):='R10055'; --Sipariş Numarası
BEGIN
FOR C2 IN (
SELECT * FROM customer_order_line cl
WHERE cl.order_no=co_no_
AND cl.objstate!='Reserved'
ORDER BY to_number(cl.line_no)
) LOOP
rez_miktar_ := c2.buy_qty_due;
FOR C3 IN (SELECT z.*,z.qty_onhand-z.qty_reserved serbest_miktar
FROM INVENTORY_PART_IN_STOCK Z
WHERE Z.CONTRACT=C2.CONTRACT
AND Z.PART_NO=C2.PART_NO
AND Z.QTY_ONHAND-Z.QTY_RESERVED>0
AND INVENTORY_LOCATION_API.Get_Warehouse(Z.CONTRACT,Z.LOCATION_NO)='SEVK'
AND Z.LOCATION_NO NOT IN ('DEPO') --Hangi depo ya da depolardan rezervasyon koymak isterseniz..
) LOOP
IF rez_miktar_ > c3.serbest_miktar THEN
qty_ := c3.serbest_miktar;
rez_miktar_ := rez_miktar_-qty_;
ELSE
qty_ := rez_miktar_;
rez_miktar_ := 0;
END IF ;
dbms_output.put_line('rez_miktar_'|| rez_miktar_);
dbms_output.put_line('qty_'|| qty_);
IF qty_ > 0 THEN
Reserve_Customer_Order_API.Reserve_Manually__( info_,
state_,
c2.order_no,
c2.line_no,
c2.rel_no,
c2.line_item_no,
C3.contract,
C3.part_no,
C3.location_no,
C3.lot_batch_no,
'*',
'1',
C3.waiv_dev_rej_no,
NULL,
qty_);
END IF;
END LOOP;
END LOOP;
END;
Umarım faydalı olur.