Etiket arşivi: ifs erp plsql script

IFS ERP-Satış Siparişi Fiyat Güncellemek

IFS ERP-Satış Siparişi Fiyat Güncellemek

Aşağıdaki plsql blok ile, IFS satış siparişinin fiyatları fiyat listesi ile yeniden güncellenmiş olur, production ortamlarda denemeden önce test ortamlarında sonuçlarını görünüz.Tabi statüsü planned ve released olan satırlar için geçerlidir. Currency TL olarak alınmıştır, dövizli satışlarda kur ve yabancı para değerlerini hesaplayıp göndermek gerekir.

DECLARE
info_ VARCHAR2(2000);
objid_ VARCHAR2(2000);
objversion_ VARCHAR2(2000);
attr_ VARCHAR2(2000);
BEGIN
FOR rec_ IN (

SELECT k.*,
NVL((SELECT fl.sales_price
FROM IFSAPP.SALES_PRICE_LIST_PART fl
WHERE fl.price_list_no='Fiyat Listesi No'
AND fl.catalog_no =k.catalog_no),0) fiyat ,
k.sale_unit_price satıs_fiyati
FROM customer_ordeR_line k
WHERE k.order_no IN ('&SIP_NO')
AND k.sale_unit_price=0

) LOOP

Client_Sys.Clear_Attr(attr_);
Client_Sys.Add_To_Attr('SALE_UNIT_PRICE',rec_.fiyat,attr_);
Client_Sys.Add_To_Attr('BASE_SALE_UNIT_PRICE',rec_.fiyat,attr_);
Client_Sys.Add_To_Attr('CURRENCY_RATE',1,attr_);

IFSAPP.Customer_Order_Line_api.Modify(attr_,rec_.order_no,rec_.line_no,rec_.rel_no,rec_.line_item_no);

END LOOP;
END;

IFS ERP Satış Siparişine Rezervasyon Koymak

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.