admin 發表於 2018-8-10 15:46:02

FND_EVENT 以 ('PURCHASE_ORDER_RELEASED'.'PurchaseOrder') 為例

FND_EVENT: PURCHASE_ORDER_RELEASED'.'PurchaseOrder'
FND_EVENT_PARAMETER:

NameType
BUYER_CODESTRING
BUYER_NAMESTRING
EVENT_DATETIMEDATETIME
ORDER_NOSTRING
TOTAL_BASE_PRICENUMBER
USER_DESCRIPTIONSTRING
USER_IDENTITYSTRING
USER_MAIL_ADDRESSSTRING
USER_MOBILE_PHONESTRING
VENDOR_MAIL_ADDRESSSTRING
VENDOR_NAMESTRING
VENDOR_NOSTRING
FND_EVENT_ACTION


PROCEDURE Release__ (
   info_       OUT    VARCHAR2,
   objid_      IN   VARCHAR2,
   objversion_ IN OUT VARCHAR2,
   attr_       IN OUT VARCHAR2,
   action_   IN   VARCHAR2 )
IS
   rec_ PURCHASE_ORDER_TAB%ROWTYPE;
BEGIN
   General_SYS.Init_Method(lu_name_, 'PURCHASE_ORDER_API', 'Release__');
   Client_SYS.Clear_Attr(attr_);
   IF (action_ = 'CHECK') THEN
      NULL;
   ELSIF (action_ = 'DO') THEN
      rec_ := Lock_By_Id___(objid_, objversion_);
      Finite_State_Machine___(rec_, 'Release', attr_);
      objversion_ := to_char(rec_.rowversion, 'YYYYMMDDHH24MISS');
      Finite_State_Add_To_Attr___(rec_, attr_);
      Purch_Order_Event_Creation_API.Purchase_Order_Released(rec_.order_no);
   END IF;
   info_ := Client_SYS.Get_All_Info;
END Release__;

Purch_Order_Event_Creation_API.Purchase_Order_Released(rec_.order_no);

PROCEDURE Purchase_Order_Released (
   order_no_IN VARCHAR2 )
IS
   msg_             VARCHAR2(2000);
   fnd_user_      VARCHAR2(30);
   vendor_no_       VARCHAR2(10);
   buyer_code_      VARCHAR2(20);
   temp_info_       VARCHAR2(2000);
   ptr_             NUMBER;
   name_            VARCHAR2(2000);
   value_         VARCHAR2(2000);

   CURSOR get_purorder_info IS
      SELECT vendor_no,
             buyer_code
      FROM PURCHASE_ORDER
       WHERE order_no = order_no_;

BEGIN
   General_SYS.Init_Method(lu_name_, 'PURCH_ORDER_EVENT_CREATION_API', 'Purchase_Order_Released');
   IF (Event_SYS.Event_Enabled('PurchaseOrder', 'PURCHASE_ORDER_RELEASED')) THEN
      msg_ := Message_SYS.Construct('PURCHASE_ORDER_RELEASED');
      --
      -- Standard Event Parameters
      --
      fnd_user_ := Fnd_Session_API.Get_Fnd_User;
      Message_SYS.Add_Attribute( msg_, 'EVENT_DATETIME', Site_API.Get_Site_Date(Purchase_Order_API.Get_Contract(order_no_)));
      Message_SYS.Add_Attribute( msg_, 'USER_IDENTITY', fnd_user_);
      Message_SYS.Add_Attribute( msg_, 'USER_DESCRIPTION', Fnd_User_API.Get_Description(fnd_user_));
      Message_SYS.Add_Attribute( msg_, 'USER_MAIL_ADDRESS', Fnd_User_API.Get_Property(fnd_user_, 'SMTP_MAIL_ADDRESS'));
      Message_SYS.Add_Attribute( msg_, 'USER_MOBILE_PHONE', Fnd_User_API.Get_Property(fnd_user_, 'MOBILE_PHONE'));
      --
      -- Primary key for object
      --
      Message_SYS.Add_Attribute( msg_, 'ORDER_NO', order_no_);
      --
      -- Other important information
      --
      OPEN get_purorder_info;
      FETCH get_purorder_info INTO vendor_no_, buyer_code_;
      CLOSE get_purorder_info;

      Message_SYS.Add_Attribute( msg_, 'VENDOR_NO', vendor_no_);
      Message_SYS.Add_Attribute( msg_, 'VENDOR_NAME', Supplier_API.Get_Vendor_Name(vendor_no_));
      Message_SYS.Add_Attribute( msg_, 'VENDOR_MAIL_ADDRESS', Supplier_API.Get_Default_E_Mail(vendor_no_));
      Message_SYS.Add_Attribute( msg_, 'TOTAL_BASE_PRICE', Purchase_Order_API.Calc_Order_Total(order_no_));
      Message_SYS.Add_Attribute( msg_, 'BUYER_CODE', buyer_code_);
      Message_SYS.Add_Attribute( msg_, 'BUYER_NAME', Purchase_Buyer_API.Get_Name(buyer_code_));

      temp_info_ := Client_SYS.Get_All_Info();

      Event_SYS.Event_Execute('PurchaseOrder', 'PURCHASE_ORDER_RELEASED', msg_);

      IF (temp_info_ IS NOT NULL) THEN
         WHILE (Client_SYS.Get_Next_From_Attr(temp_info_, ptr_, name_, value_ )) LOOP
            Client_SYS.Add_Info(lu_name_, value_);
         END LOOP;
      END IF;
   END IF;
END Purchase_Order_Released;

Event_SYS.Event_Execute('PurchaseOrder', 'PURCHASE_ORDER_RELEASED', msg_);



Fnd_Event_Action_API.Activate_Action(event_lu_name_, event_id_, my_rec_.action_number, formatted_data_);

--->fnd_event_action_api.action_mail ---->Command_SYS.Mail

PROCEDURE Action_Mail (
   mail_data_ IN VARCHAR2,
   msg_       IN VARCHAR2 )
IS
   from_name_VARCHAR2(2000);
   to_name_    VARCHAR2(2000);
   text_       VARCHAR2(32000);
   subject_    VARCHAR2(2000);
   attach_   VARCHAR2(2000);
   error_text_ VARCHAR2(2000);
   cc_         VARCHAR2(2000);
   timer_      VARCHAR2(2000);
   audit_      VARCHAR2(2000);
   from_alias_ VARCHAR2(2000);
   mail_       VARCHAR2(32000);
BEGIN
   General_SYS.Init_Method(lu_name_, 'FND_EVENT_ACTION_API', 'Action_Mail');
   mail_      := Make_Message(mail_data_, msg_);
   -- FROM is not mandatory. Use Appowner if not stated.
   from_name_ := Message_SYS.Find_Attribute(mail_, 'FROM', Fnd_Session_API.Get_App_Owner);
   to_name_   := Set_Parameter(mail_, 'TO');
   text_      := Set_Parameter(mail_, 'MESSAGE');
   subject_   := Set_Parameter(mail_, 'SUBJECT');
   attach_    := Set_Parameter(mail_, 'ATTACH');
   Command_SYS.Mail(from_name_,to_name_,text_, error_text_,attach_,cc_,
                  subject_,timer_, audit_,from_alias_);
END Action_Mail;
頁: [1]
查看完整版本: FND_EVENT 以 ('PURCHASE_ORDER_RELEASED'.'PurchaseOrder') 為例