EBS 创建销售订单退货单

创建销售订单退货单API

先ENTERED再BOOKED

--创建销售订单退货单
DECLARE
  v_Api_Version_Number NUMBER := 1;
  v_Return_Status      VARCHAR2(2000);
  v_Msg_Count          NUMBER;
  v_Msg_Data           VARCHAR2(2000);
  -- IN Variables --
  l_Header_Rec         Oe_Order_Pub.Header_Rec_Type;
  l_Line_Tbl           Oe_Order_Pub.Line_Tbl_Type;
  l_Action_Request_Tbl Oe_Order_Pub.Request_Tbl_Type;
  v_Line_Adj_Tbl       Oe_Order_Pub.Line_Adj_Tbl_Type;
  -- OUT Variables --
  x_Header_Rec             Oe_Order_Pub.Header_Rec_Type;
  x_Line_Tbl               Oe_Order_Pub.Line_Tbl_Type;
  x_Header_Val_Rec         Oe_Order_Pub.Header_Val_Rec_Type;
  x_Header_Adj_Tbl         Oe_Order_Pub.Header_Adj_Tbl_Type;
  x_Header_Adj_Val_Tbl     Oe_Order_Pub.Header_Adj_Val_Tbl_Type;
  x_Header_Price_Att_Tbl   Oe_Order_Pub.Header_Price_Att_Tbl_Type;
  x_Header_Adj_Att_Tbl     Oe_Order_Pub.Header_Adj_Att_Tbl_Type;
  x_Header_Adj_Assoc_Tbl   Oe_Order_Pub.Header_Adj_Assoc_Tbl_Type;
  x_Header_Scredit_Tbl     Oe_Order_Pub.Header_Scredit_Tbl_Type;
  x_Header_Scredit_Val_Tbl Oe_Order_Pub.Header_Scredit_Val_Tbl_Type;
  x_Line_Val_Tbl           Oe_Order_Pub.Line_Val_Tbl_Type;
  x_Line_Adj_Tbl           Oe_Order_Pub.Line_Adj_Tbl_Type;
  x_Line_Adj_Val_Tbl       Oe_Order_Pub.Line_Adj_Val_Tbl_Type;
  x_Line_Price_Att_Tbl     Oe_Order_Pub.Line_Price_Att_Tbl_Type;
  x_Line_Adj_Att_Tbl       Oe_Order_Pub.Line_Adj_Att_Tbl_Type;
  x_Line_Adj_Assoc_Tbl     Oe_Order_Pub.Line_Adj_Assoc_Tbl_Type;
  x_Line_Scredit_Tbl       Oe_Order_Pub.Line_Scredit_Tbl_Type;
  x_Line_Scredit_Val_Tbl   Oe_Order_Pub.Line_Scredit_Val_Tbl_Type;
  x_Lot_Serial_Tbl         Oe_Order_Pub.Lot_Serial_Tbl_Type;
  x_Lot_Serial_Val_Tbl     Oe_Order_Pub.Lot_Serial_Val_Tbl_Type;
  x_Action_Request_Tbl     Oe_Order_Pub.Request_Tbl_Type;
  l_Count                  NUMBER;
  l_Return_Status          VARCHAR2(100);
  l_Msg_Data               VARCHAR2(4000);
  l_Msg_Count              NUMBER := 0;
  l_Error_Msg              VARCHAR2(1000);
  l_Line_Count             NUMBER;
  l_Error_Count            NUMBER;
  l_Msg_Index_Out          NUMBER(10);
  l_Order_Type_Id          NUMBER;
  l_Header_Id              NUMBER;
BEGIN
  Dbms_Output.Put_Line('Starting of script');
  -- Setting the Enviroment --
  Mo_Global.Init('ONT');
  Fnd_Global.Apps_Initialize(User_Id      => 0
                            ,Resp_Id      => 50795
                            ,Resp_Appl_Id => 190);
  Mo_Global.Set_Policy_Context('S'
                              ,89);
  v_Action_Request_Tbl(1) := Oe_Order_Pub.g_Miss_Request_Rec;
  FOR r_Header IN c_Header LOOP
    SELECT Oe_Order_Headers_s.Nextval
      INTO l_Header_Id
      FROM Dual;
    l_Header_Rec.Request_Id           := g_Request_Id;
    l_Header_Rec.Request_Date         := SYSDATE;
    l_Header_Rec                      := Oe_Order_Pub.g_Miss_Header_Rec;
    l_Header_Rec.Operation            := Oe_Globals.g_Opr_Create;
    l_Header_Rec.Packing_Instructions := r_Header.Packing_Instructions;
    l_Header_Rec.Header_Id            := l_Header_Id;
    l_Header_Rec.Order_Type_Id        := l_Order_Type_Id;
    l_Header_Rec.Org_Id               := g_Org_Id;
    l_Header_Rec.Order_Source_Id      := 2;
    -- l_Header_Rec.Source_Document_Type_Id := 2;
    l_Header_Rec.Orig_Sys_Document_Ref := r_Header.Order_Number;
    --  l_Header_Rec.Source_Document_Id    := r_Header.Header_Id;
    l_Header_Rec.Order_Category_Code   := 'RETURN';
    l_Header_Rec.Lock_Control          := 1;
    l_Header_Rec.Cust_Po_Number        := r_Header.Cust_Po_Number;
    l_Header_Rec.Ship_From_Org_Id      := r_Header.Ship_From_Org_Id; 
    l_Header_Rec.Sold_To_Org_Id        := r_Header.Sold_To_Org_Id; --g_Order_Customer_Id;
    l_Header_Rec.Ship_To_Org_Id        := r_Header.Ship_To_Org_Id; --l_Ship_To_Org_Id;
    l_Header_Rec.Invoice_To_Org_Id     := r_Header.Invoice_To_Org_Id; --g_Cust_Bill_To_Org_Id;
    l_Header_Rec.Sold_To_Contact_Id    := r_Header.Sold_To_Contact_Id; --1602940;
    l_Header_Rec.Ship_To_Contact_Id    := r_Header.Ship_To_Contact_Id; --1602940;
    l_Header_Rec.Deliver_To_Org_Id     := r_Header.Deliver_To_Org_Id; --574823;
    l_Header_Rec.Deliver_To_Contact_Id := r_Header.Deliver_To_Contact_Id; --2231149;
    l_Header_Rec.Salesrep_Id           := r_Header.Salesrep_Id;
    l_Header_Rec.Flow_Status_Code      := 'ENTERED'; -- 'BOOKED';    
    l_Header_Rec.Booked_Date           := NULL; --
    -- SYSDATE;    
    l_Header_Rec.Ordered_Date            := SYSDATE;
    l_Header_Rec.Transactional_Curr_Code := r_Header.Transactional_Curr_Code; ---'CNY' ;
    l_Header_Rec.Fob_Point_Code          := r_Header.Fob_Point_Code;
    l_Header_Rec.Price_List_Id           := r_Header.Price_List_Id;
    l_Header_Rec.Conversion_Type_Code    := l_Conversion_Type_Code;
    l_Header_Rec.Shipment_Priority_Code  := l_Shipment_Priority_Code;
    l_Header_Rec.Shipping_Method_Code    := NULL;
    l_Header_Rec.Demand_Class_Code       := l_Demand_Class_Code;
    l_Header_Rec.Invoicing_Rule_Id       := l_Invoicing_Rule_Id;
    l_Header_Rec.Accounting_Rule_Id      := l_Accounting_Rule_Id;
    l_Header_Rec.Payment_Term_Id         := r_Header.Payment_Term_Id;
  
    l_Header_Rec.Creation_Date    := SYSDATE;
    l_Header_Rec.Created_By       := g_User_Id;
    l_Header_Rec.Last_Update_Date := SYSDATE;
    l_Header_Rec.Last_Updated_By  := g_User_Id;
  
    l_Return_Status := 'Begin to get Standard PO line.';
    l_Line_Tbl.Delete;
    l_Count := 1;
    FOR r_Line IN c_Line(r_Header.Inf_Header_Id) LOOP
      -- Line Record --
      l_Line_Tbl(l_Count) := Oe_Order_Pub.g_Miss_Line_Rec;
      l_Line_Tbl(l_Count).Operation := Oe_Globals.g_Opr_Create;
      l_Line_Tbl(l_Count).Header_Id := l_Header_Id;
      l_Line_Tbl(l_Count).Line_Type_Id := 1229; 
      l_Line_Tbl(l_Count).Order_Source_Id := 2;
      l_Line_Tbl(l_Count).Source_Document_Type_Id := 2;
      l_Line_Tbl(l_Count).Line_Category_Code := 'RETURN';
      l_Line_Tbl(l_Count).Return_Attribute1 := r_Header.Header_Id;
      l_Line_Tbl(l_Count).Reference_Header_Id := r_Header.Header_Id;
      l_Line_Tbl(l_Count).Source_Document_Id := r_Header.Header_Id;
      l_Line_Tbl(l_Count).Return_Attribute2 := r_Line.Line_Id;
      l_Line_Tbl(l_Count).Reference_Line_Id := r_Line.Line_Id;
      l_Line_Tbl(l_Count).Source_Document_Line_Id := r_Line.Line_Id;
      l_Line_Tbl(l_Count).Orig_Sys_Document_Ref := r_Header.Header_Id;
      l_Line_Tbl(l_Count).Orig_Sys_Line_Ref := r_Line.Line_Id;
      l_Line_Tbl(l_Count).Operation := Oe_Globals.g_Opr_Create;
      l_Line_Tbl(l_Count).Return_Reason_Code := 'CANCELLATION';
      l_Line_Tbl(l_Count).Salesrep_Id := r_Header.Salesrep_Id;
      l_Line_Tbl(l_Count).Return_Context := 'ORDER'; 
    
      l_Line_Tbl(l_Count).Inventory_Item_Id := r_Line.Inventory_Item_Id;
      l_Line_Tbl(l_Count).Order_Quantity_Uom := r_Line.Order_Quantity_Uom;
      l_Line_Tbl(l_Count).Ordered_Quantity := r_Line.Quantity;
      l_Line_Tbl(l_Count).Unit_List_Price := r_Line.Unit_List_Price;
      l_Line_Tbl(l_Count).Unit_Selling_Price := r_Line.Unit_Selling_Price;
    
      l_Line_Tbl(l_Count).Option_Flag := 'N';
      l_Line_Tbl(l_Count).Item_Type_Code := 'STANDARD';
      l_Line_Tbl(l_Count).Org_Id := r_Line.Org_Id;
      l_Line_Tbl(l_Count).Ship_From_Org_Id := r_Line.Ship_From_Org_Id;
      l_Line_Tbl(l_Count).Calculate_Price_Flag := 'N';
      l_Line_Tbl(l_Count).Tax_Exempt_Flag := 'S';
      l_Line_Tbl(l_Count).Creation_Date := SYSDATE;
      l_Line_Tbl(l_Count).Created_By := Fnd_Global.User_Id;
      l_Line_Tbl(l_Count).Last_Update_Date := SYSDATE;
      l_Line_Tbl(l_Count).Last_Updated_By := Fnd_Global.User_Id;
      l_Count := l_Count + 1;
    END LOOP;
    l_Action_Request_Tbl(1).Entity_Code := Oe_Globals.g_Entity_Header;
    Dbms_Output.Put_Line('Starting of API');
    -- Calling the API to add a new line to an existing Order --
    Oe_Order_Pub.Process_Order(p_Api_Version_Number     => 1.0
                              ,p_Init_Msg_List          => Fnd_Api.g_False
                              ,p_Return_Values          => Fnd_Api.g_False
                              ,x_Return_Status          => x_Return_Status
                              ,x_Msg_Count              => l_Msg_Count
                              ,x_Msg_Data               => l_Msg_Data
                              ,p_Org_Id                 => l_Header_Rec.Org_Id
                              ,p_Header_Rec             => l_Header_Rec
                              ,p_Line_Tbl               => l_Line_Tbl
                              ,p_Action_Request_Tbl     => l_Action_Request_Tbl
                              ,x_Header_Rec             => x_Header_Rec
                              ,x_Header_Val_Rec         => x_Header_Val_Rec
                              ,x_Header_Adj_Tbl         => x_Header_Adj_Tbl
                              ,x_Header_Adj_Val_Tbl     => x_Header_Adj_Val_Tbl
                              ,x_Header_Price_Att_Tbl   => x_Header_Price_Att_Tbl
                              ,x_Header_Adj_Att_Tbl     => x_Header_Adj_Att_Tbl
                              ,x_Header_Adj_Assoc_Tbl   => x_Header_Adj_Assoc_Tbl
                              ,x_Header_Scredit_Tbl     => x_Header_Scredit_Tbl
                              ,x_Header_Scredit_Val_Tbl => x_Header_Scredit_Val_Tbl
                              ,x_Line_Tbl               => x_Line_Tbl
                              ,x_Line_Val_Tbl           => x_Line_Val_Tbl
                              ,x_Line_Adj_Tbl           => x_Line_Adj_Tbl
                              ,x_Line_Adj_Val_Tbl       => x_Line_Adj_Val_Tbl
                              ,x_Line_Price_Att_Tbl     => x_Line_Price_Att_Tbl
                              ,x_Line_Adj_Att_Tbl       => x_Line_Adj_Att_Tbl
                              ,x_Line_Adj_Assoc_Tbl     => x_Line_Adj_Assoc_Tbl
                              ,x_Line_Scredit_Tbl       => x_Line_Scredit_Tbl
                              ,x_Line_Scredit_Val_Tbl   => x_Line_Scredit_Val_Tbl
                              ,x_Lot_Serial_Tbl         => x_Lot_Serial_Tbl
                              ,x_Lot_Serial_Val_Tbl     => x_Lot_Serial_Val_Tbl
                              ,x_Action_Request_Tbl     => x_Action_Request_Tbl);
    Dbms_Output.Put_Line('Completion of API');
    Dbms_Output.Put_Line(x_Return_Status);
    IF x_Return_Status = 'S' THEN
      Log(' 生成订单号:' || x_Header_Rec.Order_Number);
      --判断是否有行信息
      SELECT COUNT(1)
        INTO l_Line_Count
        FROM Oe_Order_Headers_All h
            ,Oe_Order_Lines_All   l
       WHERE h.Header_Id = l.Header_Id
         AND h.Org_Id = g_Org_Id
         AND h.Order_Number = x_Header_Rec.Order_Number;
    
      IF l_Line_Count = 0 THEN
        x_Return_Status := g_Ret_Sts_Error;
        l_Error_Count   := l_Error_Count + 1;
        l_Error_Msg     := l_Error_Msg || '无法生成行信息!';
      ELSE
        IF x_Header_Rec.Order_Type_Id = 1022 THEN
          BEGIN
            Fnd_File.Put_Line(Fnd_File.Log
                             ,'Auto booked not TSS OE...');
          
            Oe_Order_Book_Util.Complete_Book_Eligible(p_Api_Version_Number => 1.0
                                                     ,p_Init_Msg_List      => Fnd_Api.g_True
                                                     ,p_Header_Id          => x_Header_Rec.Header_Id
                                                     ,x_Return_Status      => l_Return_Status
                                                     ,x_Msg_Count          => l_Msg_Count
                                                     ,x_Msg_Data           => l_Msg_Data);
          
            IF (l_Return_Status <> 'S') THEN
              l_Msg_Data := 'Errors:';
              FOR l_Index IN 1 .. l_Msg_Count LOOP
              
                l_Msg_Data := l_Msg_Data ||
                              Oe_Msg_Pub.Get(p_Msg_Index => l_Index
                                            ,p_Encoded   => 'F');
              END LOOP;
              Log('l_msg_data' || l_Msg_Data);
              Log('book_order failed');
              -- ROLLBACK TO SAVEPOINT do_create_so_sp;
            ELSE
              --update po line price
              Log('book_order success');
            END IF;
          EXCEPTION
            WHEN OTHERS THEN
              Log(SQLERRM || Dbms_Utility.Format_Error_Backtrace);
          END;
        END IF;
      
      END IF;
    
    ELSE
      l_Error_Count := l_Error_Count + 1;
      FOR i IN 1 .. l_Msg_Count LOOP
        Oe_Msg_Pub.Get(p_Msg_Index     => i
                      ,p_Encoded       => Fnd_Api.g_False
                      ,p_Data          => l_Msg_Data1
                      ,p_Msg_Index_Out => l_Msg_Index_Out);
        x_Return_Message := Substr(x_Return_Message || '/' || l_Msg_Data1
                                  ,1
                                  ,200);
      END LOOP;
    
      Log(' api_import:' || l_Return_Status || '#' || x_Return_Message);
    END IF;
  
  END;

  • 17
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值