日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle po:默认申请分组,PR自动创建PO采购订单:强制按照PR行进行分组

發(fā)布時間:2023/12/10 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle po:默认申请分组,PR自动创建PO采购订单:强制按照PR行进行分组 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

有時候,需要實現(xiàn)強制按照PR行來自動創(chuàng)建PO。

舉個例子:假設(shè)2張PR,同一個物料,同一個需求日期等等的,在合并采購訂單的時候,希望是2個PO行。

按照標準功能的處理邏輯,如果是同一個物料+需求日期(配置PO_NEED_BY_GROUPING=’Y’),在PR自動創(chuàng)建PO的時候,會自動合并為一行。然后發(fā)運行是2行。

如何實現(xiàn)?

實現(xiàn)的邏輯也不難,最近通過研究自動創(chuàng)建的包:PO_INTERFACE_S.create_documents

發(fā)現(xiàn)在PR自動創(chuàng)建PO的時候,如果po_requisition_lines_all.SUPPLIER_REF_NUMBER給的值不一樣,則在自動創(chuàng)建的時候,PO會自動分組。這樣子就可以比較簡單地實現(xiàn)了讓PO拆行的效果。

下面的代碼注意這里:

AND ((pli.supplier_ref_number IS NULL AND l_supplier_ref_number IS NULL)

OR (pli.supplier_ref_number = l_supplier_ref_number))

SELECT MIN(pli.line_num) INTO x_po_line_num FROM po_lines_interface pli ,po_requisition_lines_all prl ,po_line_types_b PLT -- WHERE pli.interface_header_id = x_interface_header_id AND pli.line_num IS NOT NULL AND prl.requisition_line_id <> x_requisition_line_id AND prl.requisition_line_id = pli.requisition_line_id AND pli.line_type_id = x_line_type_id -- Any new Service line types should -- cause the SELECT to fail (i.e. should not be matched). -- AND PLI.line_type_id = PLT.line_type_id AND PLT.order_type_lookup_code NOT IN ('RATE', 'FIXED PRICE') -- -- AND NVL(pli.ITEM_ID, -1) = NVL(x_item_id, -1) AND NVL(pli.ITEM_DESCRIPTION, 'null') = NVL(x_item_description, 'null') AND ((pli.ITEM_REVISION IS NULL AND x_item_revision IS NULL) OR pli.ITEM_REVISION = x_item_revision) AND pli.UNIT_OF_MEASURE = x_unit_meas_lookup_code -- -- replace x_preferred_grade to l_line_grade and -- removed secondary unit comparison. AND ((pli.PREFERRED_GRADE IS NULL AND l_line_grade IS NULL) OR (pli.PREFERRED_GRADE = l_line_grade)) -- -- FPI GA start AND ((pli.from_header_id IS NULL AND x_source_doc_id IS NULL) OR (pli.from_header_id = x_source_doc_id)) AND ((pli.from_line_id IS NULL AND x_source_doc_line_id IS NULL) OR (pli.from_line_id = x_source_doc_line_id)) AND (NVL(l_needby_prf, 'Y') = 'N' -- Bug 3201308 OR ((pli.need_by_date IS NULL AND x_need_by_date IS NULL) OR (TO_CHAR( pli.need_by_date - (TO_NUMBER( SUBSTR ( TO_CHAR (pli.need_by_date ,'DD-MM-YYYY HH24:MI:SS') ,18 ,2)) / 86400) ,'DD-MM-YYYY HH24:MI:SS') = TO_CHAR( x_need_by_date - (TO_NUMBER( SUBSTR ( TO_CHAR (x_need_by_date ,'DD-MM-YYYY HH24:MI:SS') ,18 ,2)) / 86400) ,'DD-MM-YYYY HH24:MI:SS')))) AND (NVL(l_shipto_prf, 'Y') = 'N' -- Bug 3201308 OR EXISTS (SELECT 'x' FROM HR_LOCATIONS HRL WHERE PRL.deliver_to_location_id = HRL.location_id AND NVL(HRL.ship_to_location_id, HRL.location_id) = x_ship_to_location_id UNION ALL SELECT 'x' FROM HZ_LOCATIONS HZ WHERE PRL.deliver_to_location_id = HZ.location_id AND HZ.location_id = x_ship_to_location_id)) AND (NVL(l_shipto_prf, 'Y') = 'N' -- Bug 3201308 OR ((pli.ship_to_organization_id IS NULL AND x_destination_org_id IS NULL) OR (pli.ship_to_organization_id = x_destination_org_id))) -- FPI GA end -- CONSIGNED FPI start AND ((pli.consigned_flag IS NULL AND x_consigned_flag IS NULL) OR (pli.consigned_flag = x_consigned_flag)) -- CONSIGNED FPI End AND (pli.TRANSACTION_REASON_CODE IS NULL OR pli.TRANSACTION_REASON_CODE = NVL(x_transaction_reason_code, pli.TRANSACTION_REASON_CODE)) AND NVL(pli.oke_contract_header_id, -1) = NVL(x_oke_contract_header_id, -1) AND NVL(pli.oke_contract_version_id, -1) = NVL(x_oke_contract_version_id, -1) AND NVL(pli.vendor_product_num, -1) = NVL(x_vendor_product_num, -1) AND NVL(pli.bid_number, -1) = NVL(x_bid_number, -1) AND NVL(pli.bid_line_number, -1) = NVL(x_bid_line_number, -1) AND NVL(pli.orig_from_req_flag, 'Y') <> 'N' -- AND ((pli.contract_id IS NULL AND l_contract_id IS NULL) OR (pli.contract_id = l_contract_id)) -- -- AND ((pli.supplier_ref_number IS NULL AND l_supplier_ref_number IS NULL) OR (pli.supplier_ref_number = l_supplier_ref_number)) -- ;

當前,前提是這個欄位po_requisition_lines_all.SUPPLIER_REF_NUMBER您的系統(tǒng)沒使用。

Trm上查詢了這個欄位的作用:

就是:供應(yīng)商的參考編號

而且在申請界面上也沒發(fā)現(xiàn)維護這個值的欄位。所以猜測應(yīng)該是一個參考的值的欄位。借用它來實現(xiàn)分組的效果應(yīng)該問題不大。

大不了在新增之后,如果是屬于客戶化分組用的,再用觸發(fā)器什么的將它清掉即可。

接著說一下具體如何實現(xiàn):

1 首先,功能要考慮擴展性,所以,添加一個Profile的配置是必須的:

XYG_ALP_REQ_LINE_GROUPING

XYG-客戶化應(yīng)用

XXX:使用默認自動創(chuàng)建PO依據(jù)申請行分組

使用默認自動創(chuàng)建PO依據(jù)申請行分組

SQL=”select lookup_code, meaning \”Grouping\”

into :profile_option_value, :visible_option_value

from fnd_lookups

where lookup_type = ‘YES_NO’”

Column=”\”Grouping\”(*)”

2 接著,在申請行添加一個觸發(fā)器:

CREATE OR REPLACE TRIGGER XYG_ALP_REQ_LINES_TRG01 /****************************************************************************** NAME: XYG_ALP_REQ_LINES_TRG01 PURPOSE: 主要是利用supplier_ref_number欄位強制拆分采購訂單行用 REVISIONS: Ver Date Author Description --------- ---------- --------------- ------------------------------------ 1.0 2017/03/08 Sam.T 1. Created this Trigger. ******************************************************************************/ BEFORE INSERT ON PO.po_requisition_lines_all REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW --- BEGIN IF NVL(fnd_profile.VALUE('XYG_ALP_REQ_LINE_GROUPING'),'N')='Y' THEN :NEW.supplier_ref_number:=CASE WHEN :NEW.supplier_ref_number IS NOT NULL THEN :NEW.supplier_ref_number||'->'||:NEW.REQUISITION_LINE_ID ELSE :NEW.REQUISITION_LINE_ID END;

END IF;

END XYG_ALP_REQ_LINES_TRG01;

測試:

基本上就可以達到效果:

后臺看數(shù)據(jù):

—大功告成!

總結(jié)

以上是生活随笔為你收集整理的oracle po:默认申请分组,PR自动创建PO采购订单:强制按照PR行进行分组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。