Oracle EBS 企業稅改方案(三)-未結採購單據及部分AP Invoices稅率調整____Oracle

來源:互聯網
上載者:User

前提條件: Oracle EBS 企業稅改方案(一)-業務需求整理及基礎設定篇
Oracle EBS系統版本:11.5.10
未結採購單處理起來比未結銷售訂單麻煩多了,由於採購訂單底層表架構及邏輯,如採購接收以後不會拆分行。特別是好多公司對PR、PBA、Quotation或標準PO等等有比深度定製,處理起來比較棘手。比如:我們公司的採購訂單有客制化如下,行中添加了稅碼含稅價

另外,自動建立採購訂單也是客制化的,還好當時考慮的比較周全,對本稅改影響不是特別太,風險還是可控的。一、Supplier Site-Tax 修改供應商地點層稅。當然,根據不同公司設定預設稅碼優先順序別不同,也可以不讓操作該步驟。 • AP->Supplies->Entry->Suppliers->SupplierSites->Invoice Tax 

批量API修改供應商地點層的稅,我沒有細仔去研究。有朋友跟我講他們是直接更新該表的稅碼,如下:

Update PO_VENDOR_SITES_ALL   Set VAT_CODE = 'VAT16' Where VENDOR_SITE_ID = 924;

我也從PR->PO->Receiving->VMI/寄售耗用->Create Consumption Advice->Create AP Invoices 等等一步一步測試,好像沒有發現什麼問題。不過,我是讓使用者去一家一家供應商手工更新:):)

二、未結採購申請單
      未結採購申請單是指所有未建立採購訂單的申請,其情況如下

但是,我直接用“採購申請已批准但未建立採購訂單”使用准標AutoCreate,PO發啟動並執行稅碼是16%的稅碼(VAT16),貌似不需求修改稅率。希望有朋友幫驗證一下,是不是可能我們系統之前客制化修改標準的庫檔案或包。

三、建立VMI/寄售供應商的AP Invoices,注意:該步驟有可能設定不同預設稅碼優先順序別,有可能提前操作(包括手工AP invoices匹配的),儘可能建立 AP Invoices之前稅碼不要變
3.1 Create Consumption Advice(建立沖減通知): INV->Reports->Transactions->Create Consumption Advice:無需輸入任何條件直接提交。
3.2 Pay On Receipt AutoInvoice: AP->View->Request->Pay On Receipt AutoInvoice四 、未結採購訂單

未結採購訂單是指所有未Create AP Invoices的採購訂單。其情況如下

特別注意一點:所有VMI/寄售模式合作的供應商,未結採購訂單可以無需處理,直接修改PBA的對應行的採購單價和稅碼優先順序別的設定。由於我們有一部分VMI/寄售的結算方式是以當時下標準PO的單價結算,可以參考:Oracle EBS VMI取標準PO單價,也建議最好不處理,客制化報表匯總稅率引起的差異,直接在AP Invoices中調整。

也可以用API批量處理未結採購訂單。但是,由於資源問題暫時沒有寫,有的朋友可以分分享一下。但是,新建立訂單行的單價必須要與原來行的單價一樣。特別是單價波動比較大的材料,避免給公司帶來損失。

五、Quotations 和 BPA修改稅碼和單價:
•PO->RFQ’sand Quotations-> Quotations :修改Quotations 單價
•PO->PurchaseOrders -> Purchase Orders : 修改BPA稅率和含稅單價

之前做了一個項目,每天根據有色金重期貨價格、卡通箱平方單價和PCB板平方單價自動計算出每個原材料的單價,在該基礎上修改PL/SQL用API批量修改Quotations和PBA的單價,代碼如下:

Declare  l_iface_rec       PO.PO_HEADERS_INTERFACE%ROWTYPE;  l_iface_lines_rec po.po_lines_interface%ROWTYPE;  v_batch_id Number := 180417001; --To_Number(To_Char(To_Char(Sysdate, 'MMDDHH24MISS')));  --組織標識  l_OrgId      Number := 114; --OU ID  l_OldTaxName Varchar2(200) := 'VAT17'; --17%稅率代碼  l_NewTaxName Varchar2(200); --16%稅率代碼  l_NewTaxId   Number; --16%稅率ID  l_NewTaxRate Number; --16%稅率  --Quotation & PBA訂單題頭  注意:沒有價格分段  Cursor CrH Is    Select PHA.PO_HEADER_ID,           PHA.VENDOR_ID,           PHA.VENDOR_SITE_ID,           PHA.SEGMENT1 PO_NUMBER,           PHA.TYPE_LOOKUP_CODE,           PHA.Authorization_Status,           PHA.STATUS_LOOKUP_CODE,           PHA.AGENT_ID,           PHA.START_DATE      From PO_HEADERS_ALL PHA     Where PHA.ORG_ID = 114       --And PHA.SEGMENT1 = '211000024137'       And PHA.TYPE_LOOKUP_CODE In ('QUOTATION', 'BLANKET') --QUOTATION表示報價單,BLANKET表示PBA一攬子採購協議       And Nvl(PHA.START_DATE, Trunc(Sysdate)) <= Trunc(Sysdate) --有效開始日期       And NVL(PHA.END_DATE, Trunc(Sysdate)) >= Trunc(Sysdate) --有效結果日期       And Nvl(PHA.CLOSED_CODE, 'N') = 'N' --是否關閉       And (PHA.STATUS_LOOKUP_CODE = 'A' Or           (PHA.AUTHORIZATION_STATUS = 'APPROVED' And           Nvl(PHA.CLOSED_CODE, 'OPEN') != 'CLOSED'));  --找出Quotation & PBA行17%的稅率  Cursor CrL(P_POHEADER_ID Number) Is    Select PLA.PO_LINE_ID,           PLA.LINE_NUM,           MSI.SEGMENT1 ITEM_NUMBER,           MSI.DESCRIPTION ITEM_DESCRIPTION,           To_Number(PLA.ATTRIBUTE1) TAX_UNIT_PRICE, --含稅單價           PLA.UNIT_PRICE, --不含稅單價           TAX.TAX_RATE --17%稅率      From PO_HEADERS_ALL     PHA,           PO_LINES_ALL       PLA,           MTL_SYSTEM_ITEMS_B MSI,           AP_TAX_CODES_ALL   TAX     Where PHA.PO_HEADER_ID = PLA.PO_HEADER_ID       And 122 = MSI.ORGANIZATION_ID       And PLA.ITEM_ID = MSI.INVENTORY_ITEM_ID       And PLA.TAX_CODE_ID = TAX.TAX_ID(+)       And (PHA.TYPE_LOOKUP_CODE = 'QUOTATION' Or           (PHA.TYPE_LOOKUP_CODE = 'BLANKET' And TAX.NAME = l_OldTaxName))       And PHA.PO_HEADER_ID = P_POHEADER_ID       And PLA.LINE_NUM In (1, 9, 11)       And Nvl(PLA.CANCEL_FLAG, 'N') = 'N'       And Nvl(PLA.CLOSED_CODE, 'OPEN') != 'FINALLY CLOSED'     Order By PLA.LINE_NUM;  --通過更新成功有的介面表記錄,更新PBA的含稅單價和稅碼    Cursor CrR Is    Select PHI.DOCUMENT_NUM,           PHI.DOCUMENT_TYPE_CODE,           PLI.LINE_NUM,           PLI.PROCESS_CODE,           PLI.PO_LINE_ID,           PLI.LINE_ATTRIBUTE1,           PLI.UNIT_PRICE      From PO.PO_HEADERS_INTERFACE PHI, PO_LINES_INTERFACE PLI     where PHI.INTERFACE_HEADER_ID = PLI.INTERFACE_HEADER_ID       And PHI.BATCH_ID = v_batch_id       And PHI.DOCUMENT_TYPE_CODE = 'BLANKET'       And PHI.PROCESS_CODE = 'ACCEPTED'     Order By PHI.DOCUMENT_NUM, PLI.LINE_NUM;  v_Price      Number;    v_TaxPrice   Number;  l_UserId     Number := 1110;  l_RespId     Number := 50244;  l_RespApplId Number := 201;Begin  --初始化    fnd_global.apps_initialize(user_id      => l_UserId,                             resp_id      => l_RespId,                             resp_appl_id => l_RespApplId);  --刪除介面表資料  Begin    Delete From PO_LINES_INTERFACE     Where INTERFACE_HEADER_ID In           (Select INTERFACE_HEADER_ID              From PO.PO_HEADERS_INTERFACE             Where BATCH_ID = v_batch_id);    Delete From PO.PO_HEADERS_INTERFACE Where BATCH_ID = v_batch_id;    Commit;  Exception    When Others Then      Null;  End;  For RsH In CrH Loop    --Start Header     l_iface_rec.org_id := l_OrgId;    SELECT po_headers_interface_s.NEXTVAL      INTO l_iface_rec.interface_header_id      FROM dual;    l_iface_rec.process_code          := 'PENDING';    l_iface_rec.action                := 'UPDATE';    l_iface_rec.document_type_code    := RsH.TYPE_LOOKUP_CODE;    l_iface_rec.document_subtype      := NULL;    l_iface_rec.document_num          := RsH.PO_NUMBER;    l_iface_rec.approval_status       := 'APPROVED';    l_iface_rec.agent_id              := RsH.AGENT_ID;    l_iface_rec.vendor_id             := RsH.VENDOR_ID;    l_iface_rec.vendor_site_id        := RsH.VENDOR_SITE_ID;    l_iface_rec.interface_source_code := '17TO16';    l_iface_rec.batch_id              := v_batch_id;    INSERT INTO po.po_headers_interface VALUES l_iface_rec;    --獲得供應商地點層稅率    Begin      Select PSV.VAT_CODE, TAX.TAX_RATE, TAX.TAX_ID        Into l_NewTaxName, l_NewTaxRate, l_NewTaxId        From AP_VENDOR_SITES_V PSV, AP_TAX_CODES TAX       Where PSV.VAT_CODE = TAX.NAME(+)         And PSV.vendor_site_id = RsH.vendor_site_id;    Exception      When No_Data_Found Then        l_NewTaxRate := 0;    End;    --供應商地點層稅率未設定,預設取財務應付系統的稅率    If (Nvl(l_NewTaxRate, 0) = 0) Then      Begin        Select FIN.VAT_CODE, TAX.TAX_RATE, TAX.TAX_ID          Into l_NewTaxName, l_NewTaxRate, l_NewTaxId          From FINANCIALS_SYSTEM_PARAMETERS FIN, AP_TAX_CODES TAX         Where FIN.VAT_CODE = TAX.NAME(+)           And FIN.ORG_ID = l_OrgId;      Exception        When No_Data_Found Then          l_NewTaxRate := Null;      End;    End If;    l_NewTaxRate := Nvl(l_NewTaxRate, 0);    dbms_output.put_line('l_NewTaxName=' || l_NewTaxName);    For RsL In CrL(RsH.PO_HEADER_ID) Loop      l_iface_lines_rec.interface_header_id := l_iface_rec.interface_header_id;      l_iface_lines_rec.process_code        := 'PENDING';      l_iface_lines_rec.action              := 'UPDATE';      l_iface_lines_rec.po_line_id          := RsL.PO_LINE_ID;      l_iface_lines_rec.line_num            := RsL.Line_Num;          If (RsH.TYPE_LOOKUP_CODE = 'QUOTATION') Then --更新報價單行的單價        v_Price                      := RsL.UNIT_PRICE *                                        (1 / (1 + RsL.TAX_RATE / 100)); --計算未含稅單價        v_TaxPrice                   := v_TaxPrice *                                        (1 + l_NewTaxRate / 100); --計算含稅單價        l_iface_lines_rec.unit_price := Round(v_TaxPrice, 5);        --Dbms_output.put_line(l_iface_lines_rec.line_num ||':'|| l_iface_lines_rec.unit_price);      Else --更新一攬子採購協議行的單價         --根據含稅單價計算出未含稅單價        v_TaxPrice := RsL.TAX_UNIT_PRICE; --含稅單價        v_Price    := Round(RsL.TAX_UNIT_PRICE / (1 + l_NewTaxRate / 100),5); --計算未含稅單價        /*--根據未含稅單價計算含單價        v_Price    := RsL.UNIT_PRICE; --不含稅單價        v_TaxPrice := Round(v_Price * (1 + l_NewTaxRate / 100), 5); --計算含稅單價*/        --更新含稅單價        l_iface_lines_rec.line_attribute1 := v_TaxPrice;        --更新新非含稅單價        l_iface_lines_rec.unit_price := v_Price;        --Dbms_output.put_line(l_iface_lines_rec.line_num ||':'|| l_iface_lines_rec.line_attribute1);      End If;      SELECT po_lines_interface_s.NEXTVAL        INTO l_iface_lines_rec.interface_line_id        FROM dual;      INSERT INTO po_lines_interface VALUES l_iface_lines_rec;    End Loop; --End Line    Begin      po_docs_interface_sv5.process_po_headers_interface(x_selected_batch_id          => l_iface_rec.batch_id,                                                         x_buyer_id                   => NULL,                                                         x_document_type              => l_iface_rec.document_type_code,                                                         x_document_subtype           => l_iface_rec.document_subtype,                                                         x_create_items               => 'N',                                                         x_create_sourcing_rules_flag => NULL,                                                         x_rel_gen_method             => NULL,                                                         x_approved_status            => l_iface_rec.approval_status,                                                         x_commit_interval            => 1,                                                         x_process_code               => 'PENDING',                                                         x_interface_header_id        => Null,                                                         x_org_id_param               => NULL,                                                         x_ga_flag                    => NULL);      --更新PBA含稅單價和稅碼      For RsR In CrR Loop        Update PO_LINES_ALL           Set attribute1  = RsR.Line_Attribute1, --PBA含稅單價               TAX_CODE_ID = l_NewTaxId,               TAX_NAME    = l_NewTaxName --稅碼         where PO_LINE_ID = RSR.PO_LINE_ID;      End Loop;      --刪除更新成功的臨時介面記錄      Delete From PO_LINES_INTERFACE       Where INTERFACE_HEADER_ID = l_iface_rec.interface_header_id         And PROCESS_CODE = 'ACCEPTED';      Delete From PO.PO_HEADERS_INTERFACE       Where INTERFACE_HEADER_ID In             (Select INTERFACE_HEADER_ID                From PO_LINES_INTERFACE               Where INTERFACE_HEADER_ID = l_iface_rec.interface_header_id                 And PROCESS_CODE = 'ACCEPTED');      Commit;    Exception      When Others Then        Rollback;        Dbms_Output.put_line(RsH.TYPE_LOOKUP_CODE || '類型訂單' || RsH.PO_NUMBER || '調稅率:失敗');    End;  End Loop; --End HeaderEnd;

執行完成以後,檢查有沒有未更新成功的代碼如下,建議操作完成以後,刪除相關介面表中的資料

Select PHI.DOCUMENT_NUM,       PHI.DOCUMENT_TYPE_CODE,       PLI.LINE_NUM,       PLI.PROCESS_CODE,       PLI.PO_LINE_ID,       PLI.LINE_ATTRIBUTE1,       PLI.UNIT_PRICE  From PO.PO_HEADERS_INTERFACE PHI, PO_LINES_INTERFACE PLI where PHI.INTERFACE_HEADER_ID = PLI.INTERFACE_HEADER_ID   And PHI.BATCH_ID = &P_BATCH_ID   And PHI.DOCUMENT_TYPE_CODE = 'BLANKET'   And PLI.Process_Code != 'ACCEPTED' Order By PHI.DOCUMENT_NUM, PLI.LINE_NUM;

注意: 我們Quotations的單價是含稅價。

六、AP Invoices 
與供應商對帳時,難免有的PO接收或VMI/寄售耗用需求調整稅率,需求財務手工操作。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.