oracle po:默認申請分組,PR自動創建PO采購訂單:強制按照PR行進行分組

有時候,需要實現強制按照PR行來自動創建PO。

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

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

如何實現?

實現的邏輯也不難,最近通過研究自動創建的包:PO_INTERFACE_S.create_documents

發現在PR自動創建PO的時候,如果po_requisition_lines_all.SUPPLIER_REF_NUMBER給的值不一樣,則在自動創建的時候,PO會自動分組。這樣子就可以比較簡單地實現了讓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您的系統沒使用。

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

0818b9ca8b590ca3270a3433284dd417.png

就是:供應商的參考編號

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

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

接著說一下具體如何實現:

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

XYG_ALP_REQ_LINE_GROUPING

XYG-客戶化應用

XXX:使用默認自動創建PO依據申請行分組

使用默認自動創建PO依據申請行分組

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

into :profile_option_value, :visible_option_value

from fnd_lookups

where lookup_type = ‘YES_NO’”

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

0818b9ca8b590ca3270a3433284dd417.png

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

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;

測試:

基本上就可以達到效果:

0818b9ca8b590ca3270a3433284dd417.png

后臺看數據:

0818b9ca8b590ca3270a3433284dd417.png

—大功告成!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/270981.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/270981.shtml
英文地址,請注明出處:http://en.pswp.cn/news/270981.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

cserialport 循環發送信號_C++信號處理

免費C語言教程&#xff1a;阿里云大學——開發者課堂(點擊文章最下方“了解更多”)信號是由操作系統傳給進程的中斷&#xff0c;會提早終止一個程序。在 UNIX、LINUX、Mac OS X 或 Windows 系統上&#xff0c;可以通過按 CtrlC 產生中斷。有些信號不能被程序捕獲&#xff0c;但…

Javascript第一天

引入的三種方法&#xff1a; 1、將javascript代碼插入html文檔<head>部分的<script>標簽中 例&#xff1a;<head> <script type“text/javascript”> //javascript 代碼 alert(‘hello world’); </script> </head> 2、將javascript代碼存…

不要在foreach循環里進行元素的remove/add操作。remove元素請使用iteratot方式,如果并發操作,需要對Iterator對象加鎖

不要在foreach循環里進行元素的remove/add操作。remove元素請使用iteratot方式&#xff0c;如果并發操作&#xff0c;需要對Iterator對象加鎖

Win7和Win10操作系統優劣對比,看完你就懂了!

一直以來&#xff0c;針對微軟的Windows系統討論最熱烈的莫過于win7和win10系統了&#xff0c;兩者究竟誰好誰壞&#xff1f;小編今天就帶大家從幾個不同的角度分析兩者的優缺點&#xff0c;如有不對&#xff0c;歡迎大家指正&#xff01;一、win 7系統的幾大特點&#xff1a;1…

linux bash命令找不到,Linux下提示命令找不到:bash:command not found

Linux下輸入某些命令時會提示&#xff1a;bash:command not found。首先&#xff0c;查看$PATH中是否包含了這些命令。$PATH&#xff1a;決定了shell到哪些目錄中去尋找命令或程序&#xff0c;PATH值是一系列的目錄。當運行程序時&#xff0c;linux到這些目錄下搜索進行編譯鏈接…

dhcp 續約review報文_Linux的私房菜 DHCP

譯DHCP服務DHCP的全稱是動態主機配置協議&#xff0c;用來自動給客戶機分配TCP/IP信息的網絡協議。Dynamic Host Configuration Protocol&#xff0c;前身是BOOTP協議&#xff0c;是一個局域網的網絡協議&#xff0c;使用UDP協議工作&#xff0c;統一使用兩個IANA分配的端口&am…

硬件編程:硬件開發中常用的幾種通信接口總結

在嵌入式系統中&#xff0c;板上通信接口是指用于將各種集成電路與其他外圍設備交互連接的通信通路或總線。以下內容為常用板上通信接口&#xff1a;包括I2C、SPI、UART、1-Wire&#xff1a;I2C總線I2C總線是一種同步、雙向、半雙工的兩線式串行接口總線。這里&#xff0c;半雙…

集合初始化時,指定集合初始值大小

集合初始化時&#xff0c;指定集合初始值大小

hadoop常用linux命令,# Hadoop學習筆記(二)——Linux常用命令

ifconfigLinux ifconfig命令用于顯示或設置網絡設備。ifconfig可設置網絡設備的狀態&#xff0c;或是顯示目前的設置。ifconfig.png語法ifconfig [網絡設備][down up -allmulti -arp -promisc][add][del][][io_addr][irq][media][mem_start][metric][mtu][netmask][tunnel][-br…

數據庫:計算地球上兩個坐標點之間里程

今天給大家分享計算地球上兩個坐標點之間里程不同數據庫版本的腳本。1、SQLServer腳本–-計算地球上兩個坐標點&#xff08;經度&#xff0c;緯度&#xff09;之間距離sql函數 CREATE FUNCTION [dbo].[fnGetDistance](LatBegin REAL , LngBegin REAL, LatEnd REAL, LngEnd REA…

jvm 崩潰日志設置_JVM致命錯誤日志(hs_err_pid.log)分析(轉載)

當jvm出現致命錯誤時&#xff0c;會生成一個錯誤文件 hs_err_pid.log&#xff0c;其中包括了導致jvm crash的重要信息&#xff0c;可以通過分析該文件定位到導致crash的根源&#xff0c;從而改善以保證系統穩定。當出現crash時&#xff0c;該文件默認會生成到工作目錄下&#x…

使用entrySet遍歷Map類集合KV,而不是keySet方式進行遍歷

使用entrySet遍歷Map類集合KV,而不是keySet方式進行遍歷

【Qt開發】Qt Creator在Windows上的調試器安裝與配置

Qt Creator在Windows上的調試器安裝與配置 如果安裝Qt時使用的是Visual Studio的預編譯版&#xff0c;那么很有可能就會缺少調試器&#xff08;Debugger&#xff09;&#xff0c;而使用MSVC的Qt對應的原生調試器是CDB&#xff08;對應MinGW的Qt使用GDB調試器&#xff09;。本文…

linux rsync 帶密碼,Linux配置ssh無密碼驗證,rsync

1.我先聲明主機pangzhiminglinux 192.168.200.129CentOS2 192.168.200.130方法大概是這樣&#xff1a;如果想從pangzhiminglinux的普通用戶無驗證登錄到CentOS2的普通用戶(單方向的)&#xff0c;那么就要在兩個主機都建立一個相同名字&#xff0c;相同密碼的普通…

Java:Lombok插件用法筆記

1、Lombok是什么東東&#xff1f;官方介紹Lombok項目是一個Java庫&#xff0c;它可以自動嵌入你的編輯器和構建工具中&#xff0c;從而減少你的代碼量。永遠不要再寫另一個getter或equals方法&#xff0c;它帶有一個注釋的你的類有一個功能全面的生成器&#xff0c;自動化你的日…

bzoj2058: [Usaco2010 Nov]Cow Photographs(逆序對)

題目大意&#xff1a;給出n個數的序列&#xff0c;每次可以交換相鄰的兩個數&#xff0c;問把序列變成編號i在編號i1左邊&#xff0c;編號1在編號n右邊(一個環)最少需要多少步。如&#xff1a;35421最少交換兩次變為34512。 一開始看到這題&#xff0c;只會O(n)&#xff0c;后來…

sap實施和開發哪個前景_2021年了!還不知道 SAP顧問的職業前景?

一、先說什么是SAP。百度詞條的解釋&#xff1a;SAP有兩個意思一為“System Applications and Products”的簡稱&#xff0c;是SAP公司的產品——企業管理解決方案的軟件名稱。也代指SAP公司。二為SAP開發的ERP&#xff08;Enterprise-wide Resource Planning&#xff09;軟件名…

Linux找最大最小值的命令,Linux中awk命令正確的求最大值、最小值、平均值、總和...

test.txt文件內容&#xff1a;911352142118求最大值&#xff1a;awk BEGIN {max 0} {if ($10 > max0) max$1} END {print "Max", max} test.txtMax 118求最小值&#xff1a;awk BEGIN {min 65536} {if ($10 < min0) min$1} END {print "Min", min}…

?分布式數據庫技術基礎:數據分布介紹

1、數據分布的定義數據分布是指在分布式環境中通過合理分布數據&#xff0c;提高數據操作自然并行度&#xff0c;以達到最優的執行效率的目的。在構建分布式數據庫系統運行環境時&#xff0c;必須考慮數據如何分布在系統的各個場地上。數據分布主要關注的問題是在分布式數據中&…