Oracle EBS Interface/API(2)--销售订单释放暂挂(Sales Order Release Holds)

29 篇文章 0 订阅

摘自:https://blog.csdn.net/chenxianping/article/details/45061781

       Oracle EBS对客户启用信用额度,若某客户超出信用额度和销售订单行非关闭状态时,则所有销售订单或销售订单行暂挂提示Credit Check Failure。当客户的收款正常以后,需要对销售订单释放暂挂操作比较痛苦的事情。

       通客制化开发调用API批量释放,API函数:OE_Holds_Pvt.Release_Holds

 

参数

描述

p_order_tbl定义记录表(或索引表)数据类型,有二列分别为Header_Id(销售订单题头ID:OE_ORDER_HEADERS.HEADER_ID%TYPE)和Line_Id(销售订单行ID:OE_ORDER_LINES.LINE_ID%TYPE)
p_hold_id暂挂ID
p_release_reason_code释放原因代码
p_release_comment释放备注说明
x_return_status输出参数,是否执行成功参数,若值为S,则表示成功。若执行失败,则输出为E或U
x_msg_count输出参数,若执行成功,则为0;否则输出错误信息的个数
x_msg_data输出参数,若执行成功,则为空,否则输出错误说明信息

其主要核心代码例实如下:

 
  1. Declare

  2. l_return_status Varchar2(300);

  3. l_msg_data Varchar2(3000);

  4. l_msg_count Number;

  5. l_order_tbl OE_HOLDS_PVT.order_tbl_type;

  6. l_Org_id Number := 114;

  7. l_hold_id Number;

  8. i Number := 0;

  9. l_release_reason_code OE_HOLD_RELEASES.RELEASE_REASON_CODE%TYPE; --释放原因

  10. l_release_comment OE_HOLD_RELEASES.RELEASE_COMMENT%TYPE; --释放备注

  11. Cursor Cr Is

  12. SELECT hdra.header_id,

  13. hdra.order_number,

  14. hsrc.hold_source_id,

  15. hsrc.hold_id,

  16. hlda.line_id

  17. FROM oe_order_headers_all hdra, --销售订单题头

  18. oe_order_holds_all hlda, --销售订单行暂挂明细

  19. oe_hold_sources_all hsrc, --暂挂解挂明细

  20. oe_hold_definitions hdef --暂挂定义表

  21. WHERE 1 = 1

  22. AND hdra.order_number = '1110032000' --销售订单編码

  23. AND hdra.header_id = hlda.header_id

  24. AND hlda.hold_source_id = hsrc.hold_source_id

  25. AND hsrc.hold_id = hdef.hold_id

  26. AND hlda.released_flag = 'N'

  27. Order By hsrc.hold_id;

  28.  
  29. Begin

  30. fnd_client_info.set_org_context(l_Org_id);

  31. l_release_reason_code := 'MANUAL_RELEASE_MARGIN_HOLD';

  32. l_release_comment := '测试释放暂挂';

  33. For Rs In Cr Loop

  34. If (Nvl(l_hold_id, 0) > 0 And l_hold_id <> Rs.hold_id) Then

  35. OE_Holds_Pvt.Release_Holds(p_order_tbl => l_order_tbl,

  36. p_hold_id => l_hold_id,

  37. p_release_reason_code => l_release_reason_code,

  38. p_release_comment => l_release_comment,

  39. x_return_status => l_return_status,

  40. x_msg_count => l_msg_count,

  41. x_msg_data => l_msg_data);

  42. If (l_return_status = 'S') Then

  43. Dbms_Output.put_line('Release Success!');

  44. Commit;

  45. Else

  46. dbms_output.put_line('l_msg_data:' || l_msg_data);

  47. dbms_output.put_line('l_msg_count:' || l_msg_count);

  48. Rollback;

  49. End If;

  50. i := 0;

  51. End If;

  52. i := i + 1;

  53. l_hold_id := Rs.hold_id;

  54. l_order_tbl(i).header_id := Rs.header_id;

  55. l_order_tbl(i).line_id := Rs.line_id;

  56. End Loop;

  57. --

  58. If (Nvl(i, 0) > 0) Then

  59. OE_Holds_Pvt.Release_Holds(p_order_tbl => l_order_tbl,

  60. p_hold_id => l_hold_id,

  61. p_release_reason_code => l_release_reason_code,

  62. p_release_comment => l_release_comment,

  63. x_return_status => l_return_status,

  64. x_msg_count => l_msg_count,

  65. x_msg_data => l_msg_data);

  66. If (l_return_status = 'S') Then

  67. Dbms_Output.put_line('Release Success!');

  68. Commit;

  69. Else

  70. dbms_output.put_line('l_msg_data:' || l_msg_data);

  71. dbms_output.put_line('l_msg_count:' || l_msg_count);

  72. Rollback;

  73. End If;

  74. End If;

  75. END;

其中“l_release_reason_code”来源释放原因代码:RELEASE_REASON
N:OM\Setup\QuickCodes\Order Management;
用户以根实需要可以添加原因代码。

个人建议客制化开发批量释放暂挂,调用如下二个API包,原因:部分暂挂系统强制不能释放或者设置某一些职责不能释放暂挂
1.销售订单题头释放暂挂API包:OE_Holds_Pvt.process_release_holds_orders

 

参数

描述

p_num_of_records单个或多个销售订单题头ID的记录条数,与下面参数p_record_ids是对应的
p_record_ids单个或通过逗号分隔多销售订单题头ID,如:p_record_ids=>'345,235,326,984'
p_hold_id暂挂ID
p_release_reason_code释放原因代码
p_release_comment释放备注说明
x_return_status输出参数,是否执行成功参数,若值为S,则表示成功。若执行失败,则输出为E或U
x_msg_count输出参数,若执行成功,则为0;否则输出错误信息的个数
x_msg_data输出参数,若执行成功,则为空,否则输出错误说明信息

2.销售订单行释放暂挂API包:OE_Holds_Pvt.process_release_holds_lines

参数

描述

p_num_of_records单个或多个销售订单行ID的记录条数,与下面参数p_record_ids是对应的
p_record_ids单个或通过逗号分隔多销售订单行ID,如:p_record_ids=>'2345,4235,5326,6984'
p_hold_id暂挂ID
p_release_reason_code释放原因代码
p_release_comment释放备注说明
x_return_status输出参数,是否执行成功参数,若值为S,则表示成功。若执行失败,则输出为E或U
x_msg_count输出参数,若执行成功,则为0;否则输出错误信息的个数
x_msg_data输出参数,若执行成功,则为空,否则输出错误说明信息

 

系统强制不能释放暂挂的如下三种暂挂:

名称

描述

Pending Process Payment HoldThis hold is applied when Process Payment is deferred
Epayment Failure HoldThis hold is for expected errors returned by iPayment, like invalid data
Epayment Server Failure HoldThis hold is for any unxpected errors returned by ipayment, like failure to connect to the server

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值