1. 1, Book order
  2. Oe_Order_Pub.Process_Order
  3. ( 1
  4. , Fnd_Api.G_FALSE
  5. , Fnd_Api.G_FALSE
  6. , Fnd_Api.G_FALSE
  7. , x_return_status
  8. , x_msg_count
  9. , x_msg_data
  10. IN PARAMETERS
  11. , p_header_rec => l_header_rec
  12. , p_line_tbl => l_line_tbl
  13. , p_action_request_tbl => l_action_request_tbl
  14. OUT PARAMETERS
  15. , x_header_rec => x_header_rec
  16. , x_header_val_rec => x_header_val_rec
  17. , x_Header_Adj_tbl => x_Header_Adj_tbl
  18. , x_Header_Adj_val_tbl => x_Header_Adj_val_tbl
  19. , x_Header_price_Att_tbl => x_Header_price_Att_tbl
  20. , x_Header_Adj_Att_tbl => x_Header_Adj_Att_tbl
  21. , x_Header_Adj_Assoc_tbl => x_Header_Adj_Assoc_tbl
  22. , x_Header_Scredit_tbl => x_Header_Scredit_tbl
  23. , x_Header_Scredit_val_tbl => x_Header_Scredit_val_tbl
  24. , x_line_tbl => x_line_tbl
  25. , x_line_val_tbl => x_line_val_tbl
  26. , x_Line_Adj_tbl => x_Line_Adj_tbl
  27. , x_Line_Adj_val_tbl => x_Line_Adj_val_tbl
  28. , x_Line_price_Att_tbl => x_Line_price_Att_tbl
  29. , x_Line_Adj_Att_tbl => x_Line_Adj_Att_tbl
  30. , x_Line_Adj_Assoc_tbl => x_Line_Adj_Assoc_tbl
  31. , x_Line_Scredit_tbl => x_Line_Scredit_tbl
  32. , x_Line_Scredit_val_tbl => x_Line_Scredit_val_tbl
  33. , x_Lot_Serial_tbl => x_Lot_Serial_tbl
  34. , x_Lot_Serial_val_tbl => x_Lot_Serial_val_tbl
  35. , x_action_request_tbl => x_action_request_tbl
  36. );
  37.  
  38. 2, 创建发货行
  39. WSH_DELIVERY_DETAILS_PUB.AUTOCREATE_DELIVERIES(
  40. p_api_version_number => 1.0,
  41. p_init_msg_list => APPS.FND_API.G_TRUE,
  42. p_commit => l_commit,
  43. x_return_status => x_return_status,
  44. x_msg_count => x_msg_count,
  45. x_msg_data => x_msg_data,
  46. p_line_rows => p_line_rows,
  47. x_del_rows => x_del_rows );
  48. 3, 挑库发放
  49. wsh_deliveries_pub.delivery_action(
  50. p_api_version_number => 1.0 ,
  51. p_init_msg_list => null, IN VARCHAR2,
  52. x_return_status => x_return_status, OUT VARCHAR2,
  53. x_msg_count => x_msg_count, OUT NUMBER,
  54. x_msg_data => x_msg_data, OUT VARCHAR2,
  55. p_action_code => PICK-RELEASE’, IN VARCHAR2,
  56. p_delivery_id => p_delivery_id, IN NUMBER DEFAULT NULL,
  57. p_delivery_name => p_delivery_name, IN VARCHAR2 DEFAULT NULL,
  58. x_trip_id => x_trip_id, OUT VARCHAR2,
  59. x_trip_name => x_trip_name OUT VARCHAR2
  60. );
  61. 4, 发放确认
  62. WSH_DELIVERIES_PUB.Delivery_Action(
  63. p_api_version_number => 1.0,
  64. p_init_msg_list => init_msg_list,
  65. x_return_status => x_return_status,
  66. x_msg_count => x_msg_count,
  67. x_msg_data => x_msg_data,
  68. p_action_code => p_action_code,
  69. p_delivery_id => p_delivery_id,
  70. p_delivery_name => p_delivery_name,
  71. p_asg_trip_id => p_asg_trip_id,
  72. p_asg_trip_name => p_asg_trip_name,
  73. p_asg_pickup_stop_id => p_asg_pickup_stop_id,
  74. p_asg_pickup_loc_id => p_asg_pickup_loc_id,
  75. p_asg_pickup_loc_code => p_asg_pickup_loc_code,
  76. p_asg_pickup_arr_date => p_asg_pickup_arr_date,
  77. p_asg_pickup_dep_date => p_asg_pickup_dep_date,
  78. p_asg_dropoff_stop_id => p_asg_dropoff_stop_id,
  79. p_asg_dropoff_loc_id => p_asg_dropoff_loc_id,
  80. p_asg_dropoff_loc_code => p_asg_dropoff_loc_code,
  81. p_asg_dropoff_arr_date => p_asg_dropoff_arr_date,
  82. p_asg_dropoff_dep_date => p_asg_dropoff_dep_date,
  83. p_sc_action_flag => p_sc_action_flag,
  84. p_sc_intransit_flag => p_sc_intransit_flag,
  85. p_sc_close_trip_flag => p_sc_close_trip_flag,
  86. p_sc_create_bol_flag => p_sc_create_bol_flag,
  87. p_sc_stage_del_flag => p_sc_stage_del_flag,
  88. p_sc_trip_ship_method => p_sc_trip_ship_method,
  89. p_sc_actual_dep_date => p_sc_actual_dep_date,
  90. p_sc_report_set_id => p_sc_report_set_id,
  91. p_sc_report_set_name => p_sc_report_set_name,
  92. p_wv_override_flag => p_wv_override_flag,
  93. x_trip_id => x_trip_id,
  94. x_trip_name => x_trip_name);
  95. 5, 创建Install Base
  96. csi_item_instance_pub.create_item_instance(
  97. p_api_version => 1.0 IN NUMBER
  98. ,p_instance_rec => l_instance_rec IN OUT NOCOPY csi_datastructures_pub.instance_rec
  99. ,p_ext_attrib_values_tbl => l_ext_attrib_values_tbl IN OUT NOCOPY csi_datastructures_pub.extend_attrib_values_tbl
  100. ,p_party_tbl => l_party_tbl IN OUT NOCOPY csi_datastructures_pub.party_tbl
  101. ,p_account_tbl => l_account_tbl IN OUT NOCOPY csi_datastructures_pub.party_account_tbl
  102. ,p_pricing_attrib_tbl => l_pricing_attrib_tbl IN OUT NOCOPY csi_datastructures_pub.pricing_attribs_tbl
  103. ,p_org_assignments_tbl => l_org_assignments_tbl IN OUT NOCOPY csi_datastructures_pub.organization_units_tbl
  104. ,p_asset_assignment_tbl => l_asset_assignment_tbl IN OUT NOCOPY csi_datastructures_pub.instance_asset_tbl
  105. ,p_txn_rec => l_txn_rec IN OUT NOCOPY csi_datastructures_pub.transaction_rec
  106. ,x_return_status => x_return_status OUT NOCOPY VARCHAR2
  107. ,x_msg_count => x_msg_count OUT NOCOPY NUMBER
  108. ,x_msg_data => x_msg_data); OUT NOCOPY VARCH
  109. 6, 失效Install Base
  110. csi_item_instance_pub.expire_item_instance(
  111. p_api_version => 1.0 IN NUMBER
  112. ,p_instance_rec => l_instance_rec IN csi_datastructures_pub.instance_rec
  113. ,p_txn_rec => l_txn_rec IN OUT NOCOPY csi_datastructures_pub.transaction_rec
  114. ,x_instance_id_lst => l_instance_id_lst OUT NOCOPY csi_datastructures_pub.id_tbl
  115. ,x_return_status => x_return_status OUT NOCOPY VARCHAR2
  116. ,x_msg_count => x_msg_count OUT NOCOPY NUMBER
  117. ,x_msg_data => x_msg_data OUT NOCOPY VARCHAR2
  118. );
  119.  
  120. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  121.  
  122. 具体示例代码请参加附件: Oracle OM API Sample
  123.  
  124. create or replace package comms_om_new is
  125.  
  126. -- Author : Horis
  127. -- Created : 11/11/2004 9:22:32 AM
  128. -- Purpose : Deal with order management process
  129. PROCEDURE main(
  130. itemtype in varchar2,
  131. itemkey in varchar2,
  132. actid in number,
  133. funcmode in varchar2,
  134. resultout in out varchar2);
  135.  
  136. PROCEDURE book(x_return_status OUT VARCHAR2,
  137. x_msg_count OUT NUMBER,
  138. x_msg_data OUT VARCHAR2);
  139.  
  140. PROCEDURE auto_full(errbuf OUT VARCHAR2,
  141. retcode OUT VARCHAR2,
  142. p_line_id IN NUMBER,
  143. p_user_id IN NUMBER
  144. );
  145.  
  146. PROCEDURE pick_release(x_return_status OUT VARCHAR2,
  147. x_msg_count OUT NUMBER,
  148. x_msg_data OUT VARCHAR2);
  149.  
  150. PROCEDURE ship_confirm(x_return_status OUT VARCHAR2,
  151. x_msg_count OUT NUMBER,
  152. x_msg_data OUT VARCHAR2,
  153. p_delivery_id IN NUMBER);
  154.  
  155. PROCEDURE submit_req;
  156.  
  157. PROCEDURE create_install_base(p_line_id IN NUMBER,
  158. x_return_status OUT VARCHAR2,
  159. x_msg_count OUT VARCHAR2,
  160. x_msg_data OUT VARCHAR2);
  161.  
  162. PROCEDURE create_install_base_rel(p_line_id IN NUMBER,
  163. x_return_status OUT VARCHAR2,
  164. x_msg_count OUT VARCHAR2,
  165. x_msg_data OUT VARCHAR2);
  166.  
  167. PROCEDURE expire_install_base(x_return_status OUT VARCHAR2,
  168. x_msg_count OUT NUMBER,
  169. x_msg_data OUT VARCHAR2);
  170.  
  171. PROCEDURE deal_install_base(x_return_status OUT VARCHAR2,
  172. x_msg_count OUT NUMBER,
  173. x_msg_data OUT VARCHAR2);
  174.  
  175. end comms_om_new;
  176. /
  177. create or replace package body comms_om_new
  178. is
  179.  
  180. g_header_id NUMBER;
  181. g_order_number NUMBER;
  182.  
  183. g_line_id NUMBER;
  184. g_line_ordered_quantity NUMBER;
  185. g_line_schedule_date DATE;
  186.  
  187. g_user_id NUMBER := fnd_profile.value('USER_ID');
  188. g_delivery_id NUMBER;
  189. g_cur_party_id NUMBER;
  190. g_cur_party_account_id NUMBER;
  191.  
  192. --for WF calling
  193. PROCEDURE main(
  194. itemtype in varchar2,
  195. itemkey in varchar2,
  196. actid in number,
  197. funcmode in varchar2,
  198. resultout in out varchar2)
  199. AS
  200. l_return_status VARCHAR2(1000);
  201. l_msg_count NUMBER;
  202. l_msg_data VARCHAR2(1000);
  203. l_book_flag VARCHAR2(1);
  204. l_picked_flag VARCHAR2(1);
  205. l_line_type NUMBER;
  206. req_id NUMBER;
  207. l_link_to_line_id NUMBER;
  208.  
  209. BEGIN
  210.  
  211. g_line_id := to_number(itemkey);
  212. g_user_id := wf_engine.GetItemAttrNumber(itemtype,itemkey, 'USER_ID');
  213. g_user_id := 1050;
  214.  
  215. IF (funcmode = 'RUN') THEN
  216.  
  217. SELECT ooha.header_id,
  218. ooha.order_number,
  219. oola.line_type_id,
  220. oola.link_to_line_id
  221. INTO g_header_id,
  222. g_order_number,
  223. l_line_type,
  224. l_link_to_line_id
  225. FROM oe_order_headers_all ooha,
  226. oe_order_lines_all oola
  227. WHERE ooha.header_id = oola.header_id
  228. AND oola.line_id = g_line_id
  229. AND ROWNUM = 1;
  230.  
  231. --1033 STRORDER, 1034 ChangePlan, 1036 Suspension
  232. --for child item no need to deal
  233. IF l_line_type IN (1033, 1034, 1036) AND
  234. l_link_to_line_id IS NULL
  235. THEN
  236.  
  237. req_id := fnd_request.submit_request('ONT', --application
  238. 'TBFAFL', --program
  239. NULL, --description
  240. NULL, --start_time
  241. FALSE, --sub_request
  242. g_line_id,g_user_id,chr(0),'','','','','',
  243. '','','','','','','','','','',
  244. '','','','','','','','','','',
  245. '','','','','','','','','','',
  246. '','','','','','','','','','',
  247. '','','','','','','','','','',
  248. '','','','','','','','','','',
  249. '','','','','','','','','','',
  250. '','','','','','','','','','',
  251. '','','','','','','','','','');
  252. END IF; --for transation_type
  253. resultout := 'COMPELTE:COMPLETE';
  254. RETURN;
  255.  
  256. END IF;
  257.  
  258. IF (funcmode = 'CANCEL') THEN
  259. resultout := 'COMPELTE';
  260. RETURN;
  261. END IF;
  262.  
  263. resultout := 'COMPLETE:COMPLETE';
  264. OE_STANDARD_WF.Clear_Msg_Context;
  265. return;
  266.  
  267. EXCEPTION
  268. WHEN OTHERS THEN
  269. WF_CORE.CONTEXT('comms_om_new', 'main', itemtype, itemkey, to_char(actid), funcmode );
  270. RAISE;
  271. END;
  272.  
  273. PROCEDURE book(x_return_status OUT VARCHAR2,
  274. x_msg_count OUT NUMBER,
  275. x_msg_data OUT VARCHAR2)
  276. AS
  277.  
  278. CURSOR cur_line IS
  279. SELECT line_id,
  280. ordered_quantity,
  281. schedule_ship_date
  282. FROM oe_order_lines_all
  283. WHERE line_id = g_line_id;
  284.  
  285. i NUMBER:=0;
  286. X_DEBUG_FILE VARCHAR2(100);
  287.  
  288. --IN Parameters
  289. l_header_rec OE_ORDER_PUB.Header_Rec_Type;
  290. l_action_request_tbl OE_ORDER_PUB.Request_Tbl_Type;
  291. l_line_tbl OE_ORDER_PUB.Line_Tbl_Type;
  292. --OUT Parameters
  293. x_header_rec OE_ORDER_PUB.Header_Rec_Type;
  294. x_header_val_rec OE_ORDER_PUB.Header_Val_Rec_Type;
  295. x_Header_Adj_tbl OE_ORDER_PUB.Header_Adj_Tbl_Type;
  296. x_Header_Adj_val_tbl OE_ORDER_PUB.Header_Adj_Val_Tbl_Type;
  297. x_Header_price_Att_tbl OE_ORDER_PUB.Header_Price_Att_Tbl_Type;
  298. x_Header_Adj_Att_tbl OE_ORDER_PUB.Header_Adj_Att_Tbl_Type;
  299. x_Header_Adj_Assoc_tbl OE_ORDER_PUB.Header_Adj_Assoc_Tbl_Type;
  300. x_Header_Scredit_tbl OE_ORDER_PUB.Header_Scredit_Tbl_Type;
  301. x_Header_Scredit_val_tbl OE_ORDER_PUB.Header_Scredit_Val_Tbl_Type;
  302. x_line_tbl OE_ORDER_PUB.Line_Tbl_Type;
  303. x_line_val_tbl OE_ORDER_PUB.Line_Val_Tbl_Type;
  304. x_Line_Adj_tbl OE_ORDER_PUB.Line_Adj_Tbl_Type;
  305. x_Line_Adj_val_tbl OE_ORDER_PUB.Line_Adj_Val_Tbl_Type;
  306. x_Line_price_Att_tbl OE_ORDER_PUB.Line_Price_Att_Tbl_Type;
  307. x_Line_Adj_Att_tbl OE_ORDER_PUB.Line_Adj_Att_Tbl_Type;
  308. x_Line_Adj_Assoc_tbl OE_ORDER_PUB.Line_Adj_Assoc_Tbl_Type;
  309. x_Line_Scredit_tbl OE_ORDER_PUB.Line_Scredit_Tbl_Type;
  310. x_Line_Scredit_val_tbl OE_ORDER_PUB.Line_Scredit_Val_Tbl_Type;
  311. x_Lot_Serial_tbl OE_ORDER_PUB.Lot_Serial_Tbl_Type;
  312. x_Lot_Serial_val_tbl OE_ORDER_PUB.Lot_Serial_Val_Tbl_Type;
  313. x_action_request_tbl OE_ORDER_PUB.Request_Tbl_Type;
  314.  
  315. BEGIN
  316.  
  317. oe_debug_pub.initialize;
  318. X_DEBUG_FILE := OE_DEBUG_PUB.Set_Debug_Mode('TABLE');
  319. oe_debug_pub.SetDebugLevel(1);
  320. oe_msg_pub.initialize;
  321.  
  322. fnd_file.put_line(fnd_file.log, 'g_header_id!' || g_header_id);
  323.  
  324. fnd_global.apps_initialize( g_user_id, 21623, 660,NULL); --(user_id, resp_id, app_id, NULL)
  325.  
  326. l_header_rec := Oe_Order_Pub.G_Miss_Header_Rec;
  327. l_header_rec.header_id := g_header_id;
  328. l_header_rec.operation := OE_GLOBALS.G_OPR_UPDATE;
  329.  
  330. l_action_request_tbl(1).request_type := oe_globals.g_book_order;
  331. l_action_request_tbl(1).entity_code := oe_globals.g_entity_header;
  332. l_action_request_tbl(1).entity_id := g_header_id;
  333.  
  334. i := 0;
  335. FOR row_line IN cur_line
  336. LOOP
  337. i := i+1;
  338. l_line_tbl(i) := oe_order_pub.g_miss_line_rec;
  339. l_line_tbl(i).line_id := row_line.line_id;
  340. l_line_tbl(i).shipped_quantity := row_line.ordered_quantity;
  341. l_line_tbl(i).schedule_ship_date := g_line_schedule_date;
  342. l_line_tbl(i).operation := oe_globals.g_opr_update;
  343. END LOOP;
  344.  
  345. Oe_Order_Pub.Process_Order
  346. ( 1
  347. , Fnd_Api.G_FALSE
  348. , Fnd_Api.G_FALSE
  349. , Fnd_Api.G_FALSE
  350. , x_return_status
  351. , x_msg_count
  352. , x_msg_data
  353. --IN PARAMETERS
  354. , p_header_rec => l_header_rec
  355. , p_line_tbl => l_line_tbl
  356. , p_action_request_tbl => l_action_request_tbl
  357. --OUT PARAMETERS
  358. , x_header_rec => x_header_rec
  359. , x_header_val_rec => x_header_val_rec
  360. , x_Header_Adj_tbl => x_Header_Adj_tbl
  361. , x_Header_Adj_val_tbl => x_Header_Adj_val_tbl
  362. , x_Header_price_Att_tbl => x_Header_price_Att_tbl
  363. , x_Header_Adj_Att_tbl => x_Header_Adj_Att_tbl
  364. , x_Header_Adj_Assoc_tbl => x_Header_Adj_Assoc_tbl
  365. , x_Header_Scredit_tbl => x_Header_Scredit_tbl
  366. , x_Header_Scredit_val_tbl => x_Header_Scredit_val_tbl
  367. , x_line_tbl => x_line_tbl
  368. , x_line_val_tbl => x_line_val_tbl
  369. , x_Line_Adj_tbl => x_Line_Adj_tbl
  370. , x_Line_Adj_val_tbl => x_Line_Adj_val_tbl
  371. , x_Line_price_Att_tbl => x_Line_price_Att_tbl
  372. , x_Line_Adj_Att_tbl => x_Line_Adj_Att_tbl
  373. , x_Line_Adj_Assoc_tbl => x_Line_Adj_Assoc_tbl
  374. , x_Line_Scredit_tbl => x_Line_Scredit_tbl
  375. , x_Line_Scredit_val_tbl => x_Line_Scredit_val_tbl
  376. , x_Lot_Serial_tbl => x_Lot_Serial_tbl
  377. , x_Lot_Serial_val_tbl => x_Lot_Serial_val_tbl
  378. , x_action_request_tbl => x_action_request_tbl
  379. );
  380. fnd_file.put_line(fnd_file.log, 'Success: Booked');
  381. COMMIT;
  382. EXCEPTION
  383. WHEN OTHERS THEN
  384. ROLLBACK;
  385. fnd_file.put_line(fnd_file.log, 'Failed: Booked');
  386. x_return_status := SQLERRM;
  387. END book;
  388.  
  389. PROCEDURE auto_full(errbuf OUT VARCHAR2,
  390. retcode OUT VARCHAR2,
  391. p_line_id IN NUMBER,
  392. p_user_id IN NUMBER
  393. )
  394. AS
  395. l_return_status VARCHAR2(1000);
  396. l_msg_count NUMBER;
  397. l_msg_data VARCHAR2(1000);
  398. l_picked_flag VARCHAR2(1);
  399. l_line_type NUMBER;
  400. l_cfg_start_date DATE;
  401. l_bom_item_type_id NUMBER;
  402. l_child_count NUMBER;
  403. BEGIN
  404. g_line_id := p_line_id;
  405. g_user_id := p_user_id;
  406.  
  407. BEGIN
  408. SELECT msib.bom_item_type,
  409. oola.header_id,
  410. oola.schedule_ship_date
  411. INTO l_bom_item_type_id,
  412. g_header_id,
  413. g_line_schedule_date
  414. FROM mtl_system_items_b msib,
  415. oe_order_lines_all oola
  416. WHERE msib.inventory_item_id = oola.inventory_item_id
  417. AND oola.line_id = g_line_id
  418. AND ROWNUM = 1;
  419. EXCEPTION
  420. WHEN OTHERS THEN
  421. l_bom_item_type_id := 1;
  422. END;
  423.  
  424. l_cfg_start_date := sysdate;
  425. IF l_bom_item_type_id=1 THEN
  426. <<wait_for_config>>
  427. SELECT COUNT(*)
  428. INTO l_child_count
  429. FROM oe_order_lines_all oola
  430. WHERE oola.link_to_line_id = g_line_id;
  431.  
  432. IF l_child_count=0 AND (sysdate-l_cfg_start_date)<1/24/6
  433. THEN
  434. --DBMS_LOCK.SLEEP(3);
  435. GOTO wait_for_config;
  436. INSERT INTO comms_log values('waiting');
  437. commit;
  438. END IF;
  439. END IF; --for bom module
  440.  
  441. book(l_return_status, l_msg_count, l_msg_data );
  442.  
  443. pick_release(l_return_status, l_msg_count, l_msg_data);
  444.  
  445. submit_req;
  446.  
  447. deal_install_base(l_return_status, l_msg_count, l_msg_data) ;
  448.  
  449. END;
  450.  
  451. PROCEDURE pick_release(x_return_status OUT VARCHAR2,
  452. x_msg_count OUT NUMBER,
  453. x_msg_data OUT VARCHAR2)
  454. AS
  455.  
  456. CURSOR cur_delivery_details IS
  457. SELECT delivery_detail_id
  458. FROM wsh_delivery_details
  459. WHERE source_line_id = g_line_id
  460. OR top_model_line_id = g_line_id;
  461.  
  462. p_api_version_number NUMBER :=1.0;
  463. init_msg_list VARCHAR2(200);
  464. x_msg_details VARCHAR2(3000);
  465. x_msg_summary VARCHAR2(3000);
  466.  
  467. p_line_rows WSH_UTIL_CORE.ID_TAB_TYPE;
  468. x_del_rows WSH_UTIL_CORE.ID_TAB_TYPE;
  469. l_ship_method_code VARCHAR2(100);
  470. i NUMBER;
  471. l_commit VARCHAR2(30);
  472. p_delivery_id NUMBER;
  473. p_delivery_name VARCHAR2(30);
  474. x_trip_id VARCHAR2(30);
  475. x_trip_name VARCHAR2(30);
  476. fail_api EXCEPTION;
  477. l_picked_flag VARCHAR2(10);
  478.  
  479. l_return_status VARCHAR2(1000);
  480. l_msg_count NUMBER;
  481. l_msg_data VARCHAR2(1000);
  482.  
  483. BEGIN
  484.  
  485. --Initialize (user_id, resp_id, app_id, NULL)
  486. fnd_global.apps_initialize( g_user_id, 21623, 660, NULL);
  487. -- Initialize return status
  488. x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
  489.  
  490. i := 0;
  491. FOR row_delivery_details IN cur_delivery_details
  492. LOOP
  493. p_line_rows(1) := row_delivery_details.delivery_detail_id;
  494.  
  495. WSH_DELIVERY_DETAILS_PUB.AUTOCREATE_DELIVERIES(
  496. p_api_version_number => 1.0,
  497. p_init_msg_list => APPS.FND_API.G_TRUE,
  498. p_commit => l_commit,
  499. x_return_status => x_return_status,
  500. x_msg_count => x_msg_count,
  501. x_msg_data => x_msg_data,
  502. p_line_rows => p_line_rows,
  503. x_del_rows => x_del_rows );
  504. IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
  505. RAISE fail_api;
  506. ELSE
  507. fnd_file.put_line(fnd_file.log, 'Success: Auto create delivery');
  508. END IF;
  509.  
  510. -- Pick release.
  511. p_delivery_id := x_del_rows(1);
  512. p_delivery_name := TO_CHAR( x_del_rows(1) );
  513. g_delivery_id := p_delivery_id;
  514.  
  515. wsh_deliveries_pub.delivery_action(
  516. p_api_version_number => 1.0 ,
  517. p_init_msg_list => null, -- IN VARCHAR2,
  518. x_return_status => x_return_status, -- OUT VARCHAR2,
  519. x_msg_count => x_msg_count, -- OUT NUMBER,
  520. x_msg_data => x_msg_data, -- OUT VARCHAR2,
  521. p_action_code => 'PICK-RELEASE', -- IN VARCHAR2,
  522. p_delivery_id => p_delivery_id, -- IN NUMBER DEFAULT NULL,
  523. p_delivery_name => p_delivery_name, -- IN VARCHAR2 DEFAULT NULL,
  524. x_trip_id => x_trip_id, -- OUT VARCHAR2,
  525. x_trip_name => x_trip_name -- OUT VARCHAR2
  526. );
  527.  
  528. IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
  529. RAISE fail_api;
  530. ELSE
  531. fnd_file.put_line(fnd_file.log, 'Success: Pick release');
  532. END IF;
  533.  
  534. --for pick confirm
  535. COMMIT;
  536.  
  537. <<wait_for_pick2>>
  538. BEGIN
  539. SELECT wdd.released_status
  540. INTO l_picked_flag
  541. FROM wsh_delivery_details wdd
  542. WHERE wdd.delivery_detail_id = row_delivery_details.delivery_detail_id;
  543. EXCEPTION
  544. WHEN OTHERS THEN
  545. l_picked_flag := 'Y';
  546. END;
  547. IF l_picked_flag<>'Y' THEN
  548. GOTO wait_for_pick2;
  549. END IF;
  550.  
  551. ship_confirm(l_return_status, l_msg_count, l_msg_data, p_delivery_id);
  552.  
  553. END LOOP; --row_delivery_details
  554.  
  555. EXCEPTION
  556. WHEN fail_api THEN
  557. WSH_UTIL_CORE.get_messages('Y', x_msg_summary, x_msg_details, x_msg_count);
  558. IF x_msg_count > 1 THEN
  559. x_msg_data := x_msg_summary || x_msg_details;
  560. ELSE
  561. x_msg_data := x_msg_summary || x_msg_details;
  562. END IF;
  563. END pick_release;
  564.  
  565. PROCEDURE ship_confirm(x_return_status OUT VARCHAR2,
  566. x_msg_count OUT NUMBER,
  567. x_msg_data OUT VARCHAR2,
  568. p_delivery_id IN NUMBER)
  569. IS
  570. -- Standard Parameters.
  571. p_api_version_number NUMBER :=1.0;
  572. init_msg_list VARCHAR2(200);
  573. x_msg_details VARCHAR2(3000);
  574. x_msg_summary VARCHAR2(3000);
  575. p_validation_level NUMBER;
  576.  
  577. -- Parameters for WSH_DELIVERIES_PUB.Delivery_Action.
  578. p_delivery_name VARCHAR2(30);
  579. p_action_code VARCHAR2(15);
  580. p_asg_trip_id NUMBER;
  581. p_asg_trip_name VARCHAR2(30);
  582. p_asg_pickup_stop_id NUMBER;
  583. p_asg_pickup_loc_id NUMBER;
  584. p_asg_pickup_loc_code VARCHAR2(30);
  585. p_asg_pickup_arr_date DATE;
  586. p_asg_pickup_dep_date DATE;
  587. p_asg_dropoff_stop_id NUMBER;
  588. p_asg_dropoff_loc_id NUMBER;
  589. p_asg_dropoff_loc_code VARCHAR2(30);
  590. p_asg_dropoff_arr_date DATE;
  591. p_asg_dropoff_dep_date DATE;
  592. p_sc_action_flag VARCHAR2(10);
  593. p_sc_intransit_flag VARCHAR2(10);
  594. p_sc_close_trip_flag VARCHAR2(10);
  595. p_sc_create_bol_flag VARCHAR2(10);
  596. p_sc_stage_del_flag VARCHAR2(10);
  597. p_sc_trip_ship_method VARCHAR2(30);
  598. p_sc_actual_dep_date VARCHAR2(30);
  599. p_sc_report_set_id NUMBER;
  600. p_sc_report_set_name VARCHAR2(60);
  601. p_wv_override_flag VARCHAR2(10);
  602. x_trip_id VARCHAR2(30);
  603. x_trip_name VARCHAR2(30);
  604.  
  605. /*Handle exceptions*/
  606. fail_api EXCEPTION;
  607.  
  608. X_DEBUG_FILE VARCHAR2(100);
  609. l_ship_method_code VARCHAR2(100);
  610.  
  611. BEGIN
  612.  
  613. --Initialize (user_id, resp_id, app_id, NULL)
  614. fnd_global.apps_initialize( g_user_id, 21623, 660, NULL);
  615. -- Initialize return status
  616. x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
  617.  
  618. -- Ship Confirming
  619. p_delivery_name := TO_CHAR(p_delivery_id);
  620. BEGIN
  621. SELECT shipping_method_code
  622. INTO l_ship_method_code
  623. FROM oe_order_headers_all
  624. WHERE header_id = g_header_id;
  625. EXCEPTION
  626. WHEN OTHERS THEN
  627. l_ship_method_code := NULL;
  628. END;
  629. p_action_code := 'CONFIRM'; -- The action code for ship confirm
  630. p_sc_action_flag := 'S'; -- Ship entered quantity.
  631. p_sc_intransit_flag := 'Y'; -- In transit flag is set to 'Y' closes the pickup stop and sets the delivery in transit.
  632. p_sc_close_trip_flag := 'Y'; -- Close the trip after ship confirm
  633. p_sc_trip_ship_method := l_ship_method_code; -- The ship method code
  634.  
  635. WSH_DELIVERIES_PUB.Delivery_Action(
  636. p_api_version_number => 1.0,
  637. p_init_msg_list => init_msg_list,
  638. x_return_status => x_return_status,
  639. x_msg_count => x_msg_count,
  640. x_msg_data => x_msg_data,
  641. p_action_code => p_action_code,
  642. p_delivery_id => p_delivery_id,
  643. p_delivery_name => p_delivery_name,
  644. p_asg_trip_id => p_asg_trip_id,
  645. p_asg_trip_name => p_asg_trip_name,
  646. p_asg_pickup_stop_id => p_asg_pickup_stop_id,
  647. p_asg_pickup_loc_id => p_asg_pickup_loc_id,
  648. p_asg_pickup_loc_code => p_asg_pickup_loc_code,
  649. p_asg_pickup_arr_date => p_asg_pickup_arr_date,
  650. p_asg_pickup_dep_date => p_asg_pickup_dep_date,
  651. p_asg_dropoff_stop_id => p_asg_dropoff_stop_id,
  652. p_asg_dropoff_loc_id => p_asg_dropoff_loc_id,
  653. p_asg_dropoff_loc_code => p_asg_dropoff_loc_code,
  654. p_asg_dropoff_arr_date => p_asg_dropoff_arr_date,
  655. p_asg_dropoff_dep_date => p_asg_dropoff_dep_date,
  656. p_sc_action_flag => p_sc_action_flag,
  657. p_sc_intransit_flag => p_sc_intransit_flag,
  658. p_sc_close_trip_flag => p_sc_close_trip_flag,
  659. p_sc_create_bol_flag => p_sc_create_bol_flag,
  660. p_sc_stage_del_flag => p_sc_stage_del_flag,
  661. p_sc_trip_ship_method => p_sc_trip_ship_method,
  662. p_sc_actual_dep_date => p_sc_actual_dep_date,
  663. p_sc_report_set_id => p_sc_report_set_id,
  664. p_sc_report_set_name => p_sc_report_set_name,
  665. p_wv_override_flag => p_wv_override_flag,
  666. x_trip_id => x_trip_id,
  667. x_trip_name => x_trip_name);
  668. IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
  669. RAISE fail_api;
  670. ELSE
  671. fnd_file.put_line(fnd_file.log, 'Success: Ship confirm');
  672. END IF;
  673.  
  674. COMMIT;
  675. EXCEPTION
  676. WHEN fail_api THEN
  677. WSH_UTIL_CORE.get_messages('Y', x_msg_summary, x_msg_details, x_msg_count);
  678. IF x_msg_count > 1 THEN
  679. x_msg_data := x_msg_summary || x_msg_details;
  680. ELSE
  681. x_msg_data := x_msg_summary || x_msg_details;
  682. END IF;
  683. END SHIP_CONFIRM;
  684.  
  685. PROCEDURE submit_req
  686. AS
  687. req_id NUMBER;
  688. BEGIN
  689. --submit Process transaction interface
  690. req_id := fnd_request.submit_request('INV', --application
  691. 'INCTCM', --program
  692. NULL, --description
  693. NULL, --start_time
  694. FALSE, --sub_request
  695. chr(0), '','','','','','','',
  696. '','','','','','','','','','',
  697. '','','','','','','','','','',
  698. '','','','','','','','','','',
  699. '','','','','','','','','','',
  700. '','','','','','','','','','',
  701. '','','','','','','','','','',
  702. '','','','','','','','','','',
  703. '','','','','','','','','','',
  704. '','','','','','','','','','');
  705. fnd_file.put_line(fnd_file.log, 'Submit request: Process transaction interface');
  706.  
  707. --submit WIP Move Transaction Manager
  708. req_id := fnd_request.submit_request('WIP', --application
  709. 'WICTMS', --program
  710. NULL, --description
  711. NULL, --start_time
  712. FALSE, --sub_request
  713. chr(0), '','','','','','','',
  714. '','','','','','','','','','',
  715. '','','','','','','','','','',
  716. '','','','','','','','','','',
  717. '','','','','','','','','','',
  718. '','','','','','','','','','',
  719. '','','','','','','','','','',
  720. '','','','','','','','','','',
  721. '','','','','','','','','','',
  722. '','','','','','','','','','');
  723. fnd_file.put_line(fnd_file.log, 'Submit request: WIP Move Transaction Manager');
  724.  
  725. END submit_req;
  726.  
  727. PROCEDURE create_install_base(p_line_id IN NUMBER,
  728. x_return_status OUT VARCHAR2,
  729. x_msg_count OUT VARCHAR2,
  730. x_msg_data OUT VARCHAR2)
  731. AS
  732. l_instance_rec csi_datastructures_pub.instance_rec;
  733. l_ext_attrib_values_tbl csi_datastructures_pub.extend_attrib_values_tbl;
  734. l_party_tbl csi_datastructures_pub.party_tbl;
  735. l_account_tbl csi_datastructures_pub.party_account_tbl;
  736. l_pricing_attrib_tbl csi_datastructures_pub.pricing_attribs_tbl;
  737. l_org_assignments_tbl csi_datastructures_pub.organization_units_tbl;
  738. l_asset_assignment_tbl csi_datastructures_pub.instance_asset_tbl;
  739. l_txn_rec csi_datastructures_pub.transaction_rec;
  740.  
  741. l_inventory_item_id NUMBER;
  742. l_org_id NUMBER;
  743. l_ordered_quantity NUMBER;
  744. l_uom VARCHAR2(10);
  745.  
  746. l_instance_id NUMBER;
  747. l_instance_party_id NUMBER;
  748. l_ip_account_id NUMBER;
  749. l_order_number NUMBER;
  750. l_sold_to_org_id NUMBER;
  751. l_ship_to_org_id NUMBER;
  752. l_invoice_to_org_id NUMBER;
  753. l_cur_party_id NUMBER;
  754. l_cust_account_id NUMBER;
  755. l_ship_to_site_id NUMBER;
  756. l_invoice_to_site_id NUMBER;
  757. l_user_party_id NUMBER;
  758.  
  759. cursor cur_user(p_party_id IN NUMBER) is
  760. select hr.object_id party_id
  761. FROM hz_relationships hr
  762. where hr.subject_id = p_party_id
  763. AND hr.relationship_code = 'DOCUMENT_USER'
  764. AND hr.relationship_type = 'USERS';
  765.  
  766. BEGIN
  767.  
  768. SELECT oola.inventory_item_id,
  769. oola.org_id,
  770. oola.ordered_quantity,
  771. oola.order_quantity_uom,
  772. oola.ship_to_org_id,
  773. oola.invoice_to_org_id,
  774. ooha.order_number,
  775. ooha.sold_to_org_id
  776. INTO l_inventory_item_id,
  777. l_org_id,
  778. l_ordered_quantity,
  779. l_uom,
  780. l_ship_to_org_id,
  781. l_invoice_to_org_id,
  782. l_order_number,
  783. l_sold_to_org_id
  784. FROM oe_order_lines_all oola,
  785. oe_order_headers_all ooha
  786. WHERE oola.line_id = p_line_id
  787. AND oola.header_id = ooha.header_id;
  788.  
  789. SELECT hpsu.party_site_id
  790. INTO l_ship_to_site_id
  791. FROM hz_party_site_uses hpsu
  792. WHERE hpsu.party_site_use_id = l_ship_to_org_id;
  793.  
  794. SELECT hpsu.party_site_id
  795. INTO l_invoice_to_site_id
  796. FROM hz_party_site_uses hpsu
  797. WHERE hpsu.party_site_use_id = l_invoice_to_org_id;
  798.  
  799. SELECT csi_item_instances_s.nextval
  800. INTO l_instance_id
  801. FROM dual;
  802.  
  803. l_instance_rec.instance_id := l_instance_id;
  804. l_instance_rec.instance_number := l_instance_id;
  805. l_instance_rec.external_reference := l_order_number;
  806. l_instance_rec.inventory_item_id := l_inventory_item_id;
  807. l_instance_rec.inv_master_organization_id := 86;
  808. l_instance_rec.mfg_serial_number_flag := 'N';
  809. l_instance_rec.quantity := l_ordered_quantity;
  810. l_instance_rec.unit_of_measure := l_uom;
  811. l_instance_rec.accounting_class_code := 'CUST_PROD';
  812. l_instance_rec.instance_status_id := 10000;
  813. l_instance_rec.customer_view_flag := NULL;
  814. l_instance_rec.merchant_view_flag := NULL;
  815. l_instance_rec.sellable_flag := NULL;
  816. l_instance_rec.active_start_date := TRUNC(SYSDATE);
  817. l_instance_rec.location_type_code := 'HZ_PARTY_SITES';
  818. l_instance_rec.location_id := 249;
  819. l_instance_rec.install_date := TRUNC(SYSDATE);
  820. l_instance_rec.creation_complete_flag := 'Y';
  821. l_instance_rec.version_label := 'AS_CREATED';
  822. l_instance_rec.object_version_number := 1;
  823.  
  824. --get the user account id
  825. SELECT hca.party_id,
  826. hca.cust_account_id
  827. INTO l_cur_party_id,
  828. l_cust_account_id
  829. FROM hz_cust_accounts hca
  830. WHERE hca.cust_account_id = l_sold_to_org_id;
  831.  
  832. insert into comms_log values ('cur_party_id ' || l_cur_party_id);
  833.  
  834. FOR row_user IN cur_user(l_cur_party_id) LOOP
  835. --get user's account id
  836. BEGIN
  837. SELECT hca.cust_account_id
  838. INTO l_cust_account_id
  839. FROM hz_cust_accounts hca
  840. WHERE hca.party_id = row_user.party_id
  841. AND ROWNUM=1;
  842. EXCEPTION
  843. WHEN OTHERS THEN
  844. l_cust_account_id := NULL;
  845. END;
  846.  
  847. insert into comms_log values ('user_party_id ' || row_user.party_id );
  848. insert into comms_log values ('user_party_cunt_id ' || l_cust_account_id);
  849.  
  850. SELECT csi_i_parties_s.nextval
  851. INTO l_instance_party_id
  852. FROM dual;
  853. l_party_tbl(1).instance_party_id := l_instance_party_id;
  854. l_party_tbl(1).instance_id := l_instance_id;
  855. l_party_tbl(1).party_source_table := 'HZ_PARTIES';
  856. l_party_tbl(1).party_id := row_user.party_id;
  857. l_party_tbl(1).relationship_type_code := 'DOCUMENT_USER';
  858. l_party_tbl(1).contact_flag := 'N';
  859. l_party_tbl(1).active_start_date := SYSDATE;
  860. l_party_tbl(1).object_version_number := 1;
  861.  
  862. SELECT csi_ip_accounts_s.nextval
  863. INTO l_ip_account_id
  864. FROM dual;
  865. l_account_tbl(1).ip_account_id := l_ip_account_id;
  866. l_account_tbl(1).instance_party_id := l_instance_party_id;
  867. l_account_tbl(1).party_account_id := l_cust_account_id;
  868. l_account_tbl(1).relationship_type_code := 'DOCUMENT_USER';
  869. l_account_tbl(1).active_start_date := sysdate;
  870. l_account_tbl(1).BILL_TO_ADDRESS := 1170;
  871. l_account_tbl(1).SHIP_TO_ADDRESS := 1170;
  872. l_account_tbl(1).object_version_number := 1;
  873. l_account_tbl(1).parent_tbl_index := 1;
  874. l_account_tbl(1).call_contracts := 'Y';
  875.  
  876. l_txn_rec.transaction_date := TRUNC(SYSDATE);
  877. l_txn_rec.SOURCE_TRANSACTION_DATE := TRUNC(SYSDATE);
  878. l_txn_rec.TRANSACTION_TYPE_ID := 1;
  879. l_txn_rec.OBJECT_VERSION_NUMBER := 1;
  880.  
  881. csi_item_instance_pub.create_item_instance(
  882. p_api_version => 1.0 --IN NUMBER
  883. ,p_instance_rec => l_instance_rec -- IN OUT NOCOPY csi_datastructures_pub.instance_rec
  884. ,p_ext_attrib_values_tbl => l_ext_attrib_values_tbl -- IN OUT NOCOPY csi_datastructures_pub.extend_attrib_values_tbl
  885. ,p_party_tbl => l_party_tbl --IN OUT NOCOPY csi_datastructures_pub.party_tbl
  886. ,p_account_tbl => l_account_tbl --IN OUT NOCOPY csi_datastructures_pub.party_account_tbl
  887. ,p_pricing_attrib_tbl => l_pricing_attrib_tbl --IN OUT NOCOPY csi_datastructures_pub.pricing_attribs_tbl
  888. ,p_org_assignments_tbl => l_org_assignments_tbl --IN OUT NOCOPY csi_datastructures_pub.organization_units_tbl
  889. ,p_asset_assignment_tbl => l_asset_assignment_tbl --IN OUT NOCOPY csi_datastructures_pub.instance_asset_tbl
  890. ,p_txn_rec => l_txn_rec --IN OUT NOCOPY csi_datastructures_pub.transaction_rec
  891. ,x_return_status => x_return_status --OUT NOCOPY VARCHAR2
  892. ,x_msg_count => x_msg_count --OUT NOCOPY NUMBER
  893. ,x_msg_data => x_msg_data); --OUT NOCOPY VARCH
  894.  
  895. insert into comms_log values('create install base ');
  896.  
  897. END LOOP;
  898. COMMIT;
  899. END;
  900.  
  901. PROCEDURE create_install_base_rel(p_line_id IN NUMBER,
  902. x_return_status OUT VARCHAR2,
  903. x_msg_count OUT VARCHAR2,
  904. x_msg_data OUT VARCHAR2)
  905. AS
  906. l_instance_id NUMBER;
  907. p_party_tbl csi_datastructures_pub.party_tbl;
  908.  
  909. p_txn_rec csi_datastructures_pub.transaction_rec;
  910. l_i_parties_id NUMBER;
  911. l_owner_party_id NUMBER;
  912.  
  913. cursor cur_user(p_party_id IN NUMBER) is
  914. select hr.object_id party_id
  915. FROM hz_relationships hr
  916. where hr.subject_id = p_party_id
  917. AND hr.relationship_code = 'DOCUMENT_USER'
  918. AND hr.relationship_type = 'USERS';
  919.  
  920. BEGIN
  921.  
  922. SELECT cii.instance_id, cii.owner_party_id
  923. INTO l_instance_id, l_owner_party_id
  924. FROM csi_item_instances cii
  925. WHERE cii.last_oe_order_line_id = p_line_id;
  926.  
  927. FOR row_user IN cur_user(l_owner_party_id)
  928. LOOP
  929.  
  930. SELECT csi_i_parties_s.nextval
  931. INTO l_i_parties_id
  932. FROM DUAL;
  933.  
  934. /*p_relationship_tbl(1).RELATIONSHIP_ID := l_ii_rel_id;
  935. p_relationship_tbl(1).RELATIONSHIP_TYPE_CODE := 'USED BY';
  936. p_relationship_tbl(1).OBJECT_ID := row_user.party_id;
  937. p_relationship_tbl(1).SUBJECT_ID := l_instance_id;
  938. p_relationship_tbl(1).SUBJECT_HAS_CHILD := 'N';
  939. p_relationship_tbl(1).POSITION_REFERENCE := NULL;
  940. p_relationship_tbl(1).ACTIVE_START_DATE := SYSDATE;
  941. p_relationship_tbl(1).ACTIVE_END_DATE := SYSDATE;
  942. p_relationship_tbl(1).DISPLAY_ORDER := NULL;
  943. p_relationship_tbl(1).MANDATORY_FLAG := 'N';
  944. p_relationship_tbl(1).OBJECT_VERSION_NUMBER := 1;
  945.  
  946. p_txn_rec.TRANSACTION_DATE := TRUNC(SYSDATE);
  947. p_txn_rec.SOURCE_TRANSACTION_DATE := TRUNC(SYSDATE);
  948. p_txn_rec.TRANSACTION_TYPE_ID :=1;
  949. p_txn_rec.OBJECT_VERSION_NUMBER :=1;
  950. */
  951.  
  952. insert into csi_i_parties (
  953. instance_party_id,
  954. instance_id,
  955. party_source_table,
  956. party_id,
  957. relationship_type_code,
  958. contact_flag,
  959. active_start_date,
  960. created_by,
  961. creation_date,
  962. last_updated_by,
  963. last_update_date,
  964. last_update_login,
  965. object_version_number)
  966. values( l_i_parties_id,
  967. l_instance_id,
  968. 'HZ_PARTIES',
  969. row_user.party_id,
  970. 'USED BY',
  971. 'N',
  972. sysdate,
  973. '-1',
  974. sysdate,
  975. '-1',
  976. sysdate,
  977. '-1',
  978. 1
  979. );
  980.  
  981. /* csi_party_relationships_pub.create_inst_party_relationship
  982. ( p_api_version => 1.0 ,-- IN NUMBER
  983. p_commit => 'Y' ,-- IN VARCHAR2
  984. p_init_msg_list => 'N' ,-- IN VARCHAR2
  985. p_validation_level => 0, -- IN NUMBER
  986. p_party_tbl => p_party_tbl ,-- IN OUT NOCOPY csi_datastructures_pub.party_tbl
  987. p_party_account_tbl=> p_party_account_tbl ,-- IN OUT NOCOPY csi_datastructures_pub.party_account_tbl
  988. p_txn_rec => p_txn_rec ,-- IN OUT NOCOPY csi_datastructures_pub.transaction_rec
  989. x_return_status => x_return_status ,-- OUT NOCOPY VARCHAR2
  990. x_msg_count => x_msg_count ,-- OUT NOCOPY NUMBER
  991. x_msg_data => x_msg_data -- OUT NOCOPY VARCHAR2
  992. ) ;*/
  993. END LOOP;
  994. COMMIT;
  995. END;
  996.  
  997. --expire earily install base records
  998. PROCEDURE expire_install_base(x_return_status OUT VARCHAR2,
  999. x_msg_count OUT NUMBER,
  1000. x_msg_data OUT VARCHAR2)
  1001. AS
  1002. l_instance_rec csi_datastructures_pub.instance_rec;
  1003. l_txn_rec csi_datastructures_pub.transaction_rec;
  1004. l_instance_id_lst csi_datastructures_pub.id_tbl;
  1005.  
  1006. l_cust_account_id NUMBER;
  1007. l_party_id NUMBER;
  1008. l_line_type_id NUMBER;
  1009.  
  1010. --all install base records of earliy subscripiton
  1011. CURSOR cur_instance(p_party_id IN NUMBER, p_party_account_id IN NUMBER) IS
  1012. SELECT cii.instance_id,
  1013. cii.instance_number,
  1014. cii.inventory_item_id,
  1015. cii.inv_master_organization_id,
  1016. cii.active_start_date,
  1017. cii.active_end_date
  1018. FROM csi_item_instances cii
  1019. WHERE cii.owner_party_id = p_party_id
  1020. AND cii.owner_party_account_id = p_party_account_id
  1021. AND cii.last_oe_order_line_id <> g_line_id;
  1022.  
  1023. no_need_expire EXCEPTION;
  1024.  
  1025. BEGIN
  1026.  
  1027. SELECT oola.line_type_id,
  1028. hca.cust_account_id,
  1029. hca.party_id
  1030. INTO l_line_type_id,
  1031. l_cust_account_id,
  1032. l_party_id
  1033. FROM oe_order_lines_all oola,
  1034. oe_order_headers_all ooha,
  1035. hz_cust_accounts hca
  1036. WHERE oola.line_id = g_line_id
  1037. AND oola.header_id = ooha.header_id
  1038. AND hca.cust_account_id = ooha.sold_to_org_id
  1039. AND ROWNUM = 1;
  1040.  
  1041. --for Changeplan, expire existing item install base
  1042. IF l_line_type_id <> 1034 THEN
  1043. RAISE no_need_expire;
  1044. END IF;
  1045.  
  1046. FOR row_instance IN cur_instance(l_party_id, l_cust_account_id)
  1047. LOOP
  1048. l_instance_rec.instance_id := row_instance.instance_id;
  1049. l_instance_rec.instance_number := row_instance.instance_number;
  1050. l_instance_rec.external_reference := NULL;
  1051. l_instance_rec.inventory_item_id := row_instance.inventory_item_id;
  1052. l_instance_rec.inv_master_organization_id := row_instance.inv_master_organization_id;
  1053. l_instance_rec.active_end_date := TRUNC(SYSDATE);
  1054.  
  1055. l_txn_rec.transaction_date := TRUNC(SYSDATE);
  1056. l_txn_rec.SOURCE_TRANSACTION_DATE := TRUNC(SYSDATE);
  1057. l_txn_rec.TRANSACTION_TYPE_ID := 1;
  1058. l_txn_rec.OBJECT_VERSION_NUMBER := 1;
  1059.  
  1060. csi_item_instance_pub.expire_item_instance(
  1061. p_api_version => 1.0 -- IN NUMBER
  1062. ,p_instance_rec => l_instance_rec -- IN csi_datastructures_pub.instance_rec
  1063. ,p_txn_rec => l_txn_rec -- IN OUT NOCOPY csi_datastructures_pub.transaction_rec
  1064. ,x_instance_id_lst => l_instance_id_lst-- OUT NOCOPY csi_datastructures_pub.id_tbl
  1065. ,x_return_status => x_return_status-- OUT NOCOPY VARCHAR2
  1066. ,x_msg_count => x_msg_count-- OUT NOCOPY NUMBER
  1067. ,x_msg_data => x_msg_data-- OUT NOCOPY VARCHAR2
  1068. );
  1069. END LOOP;
  1070.  
  1071. COMMIT;
  1072. EXCEPTION
  1073. WHEN no_need_expire THEN
  1074. NULL;
  1075. WHEN OTHERS THEN
  1076. NULL;
  1077. END;
  1078.  
  1079. PROCEDURE deal_install_base(x_return_status OUT VARCHAR2,
  1080. x_msg_count OUT NUMBER,
  1081. x_msg_data OUT VARCHAR2)
  1082. AS
  1083. l_cust_account_id NUMBER;
  1084. l_party_id NUMBER;
  1085. l_line_type_id NUMBER;
  1086. no_need_expire EXCEPTION;
  1087. l_inventory_item_id NUMBER;
  1088. l_product_type VARCHAR2(20);
  1089. l_item_number mtl_system_items_b.segment1%TYPE;
  1090. l_count NUMBER;
  1091. l_telephone_num VARCHAR2(20);
  1092. l_sim_num VARCHAR2(20);
  1093.  
  1094. l_return_status VARCHAR2(1000);
  1095. l_msg_count NUMBER;
  1096. l_msg_data VARCHAR2(1000);
  1097.  
  1098. --product subscribled earlier
  1099. CURSOR cur_prod IS
  1100. SELECT cii.instance_id,
  1101. cii.last_oe_order_line_id line_id
  1102. FROM csi_item_instances cii
  1103. WHERE cii.last_oe_order_line_id <> g_line_id
  1104. AND NVL(cii.attribute10,'E') = l_product_type
  1105. AND cii.owner_party_id = l_party_id
  1106. AND cii.owner_party_account_id = l_cust_account_id;
  1107.  
  1108. BEGIN
  1109.  
  1110. SELECT oola.line_type_id,
  1111. hca.cust_account_id,
  1112. hca.party_id,
  1113. oola.inventory_item_id
  1114. INTO l_line_type_id,
  1115. l_cust_account_id,
  1116. l_party_id,
  1117. l_inventory_item_id
  1118. FROM oe_order_lines_all oola,
  1119. oe_order_headers_all ooha,
  1120. hz_cust_accounts hca
  1121. WHERE oola.line_id = g_line_id
  1122. AND oola.header_id = ooha.header_id
  1123. AND hca.cust_account_id = ooha.sold_to_org_id
  1124. AND ROWNUM = 1;
  1125.  
  1126. SELECT msib.segment1
  1127. INTO l_item_number
  1128. FROM mtl_system_items_b msib
  1129. WHERE msib.organization_id = 86
  1130. AND msib.inventory_item_id = l_inventory_item_id
  1131. AND ROWNUM = 1;
  1132.  
  1133. IF l_item_number IN ('MOBILEPROD','MOBILECHANGEPLAN') THEN
  1134. l_product_type := 'M';
  1135. ELSIF l_item_number='BRODBAND' THEN
  1136. l_product_type := 'B';
  1137. ELSIF l_item_number='DIGITAL_LEASED_LINE_NATL' THEN
  1138. l_product_type := 'D';
  1139. END IF;
  1140.  
  1141. --get service number
  1142. --Get customer serial number and SIM attribute in quator
  1143. BEGIN
  1144. SELECT cn.service_num, cn.sim_num
  1145. INTO l_telephone_num, l_sim_num
  1146. FROM comms_numbers cn,
  1147. aso_quote_headers_all aqh,
  1148. aso_quote_lines_all aql,
  1149. oe_order_lines_all oola
  1150. WHERE oola.line_id = g_line_id
  1151. AND oola.header_id = aqh.order_id
  1152. AND aql.quote_header_id = aqh.quote_header_id
  1153. AND cn.quote_line_id = aql.quote_line_id
  1154. AND cn.app_id = 521
  1155. AND ROWNUM = 1;
  1156. EXCEPTION
  1157. WHEN OTHERS THEN
  1158. l_sim_num := NULL;
  1159. l_telephone_num := NULL;
  1160. END;
  1161. IF l_sim_num IS NULL THEN
  1162. BEGIN
  1163. SELECT cn.service_num, cn.sim_num
  1164. INTO l_telephone_num, l_sim_num
  1165. FROM comms_numbers cn
  1166. WHERE cn.quote_line_id = g_line_id
  1167. AND cn.app_id = 660
  1168. AND ROWNUM = 1;
  1169. EXCEPTION
  1170. WHEN OTHERS THEN
  1171. l_sim_num := NULL;
  1172. l_telephone_num := NULL;
  1173. END;
  1174. END IF;
  1175.  
  1176. --for change plan, get service number from old subscription
  1177. IF l_line_type_id=1034 AND l_sim_num IS NULL THEN
  1178. SELECT MAX(cii.serial_number), MAX(cii.attribute11)
  1179. INTO l_telephone_num, l_sim_num
  1180. FROM csi_item_instances cii
  1181. WHERE cii.owner_party_id = l_party_id
  1182. AND cii.instance_status_id = 10000;
  1183. END IF;
  1184.  
  1185. --1033, Staprodline2
  1186. --1034, ChangePlan2,
  1187. --1036, Suspension
  1188. --for Changeplan, expire existing item install base
  1189. --attribute10, 'M' Mobile, 'C' Cable, 'D' Degital, 'E' Expire
  1190. IF l_line_type_id IN (1034, 1036) THEN
  1191.  
  1192. FOR row_prod IN cur_prod
  1193. LOOP
  1194. --update product subscribled earliy
  1195. UPDATE csi_item_instances cii
  1196. SET cii.active_end_date = TRUNC(sysdate),
  1197. cii.instance_status_id = 1,
  1198. cii.attribute10 = 'E'
  1199. WHERE cii.instance_id = row_prod.instance_id;
  1200.  
  1201. --update product lines at the same order
  1202. UPDATE csi_item_instances cii
  1203. SET cii.active_end_date = TRUNC(sysdate),
  1204. cii.instance_status_id = 1,
  1205. cii.attribute10 = 'E'
  1206. WHERE cii.last_oe_order_line_id IN (
  1207. SELECT oola.line_id
  1208. FROM oe_order_lines_all oola
  1209. WHERE oola.top_model_line_id = row_prod.line_id
  1210. );
  1211. END LOOP;
  1212.  
  1213. END IF;
  1214.  
  1215. --make product type for new install base
  1216. <<wait_for_install_base>>
  1217. SELECT COUNT(*)
  1218. INTO l_count
  1219. FROM csi_item_instances cii
  1220. WHERE cii.last_oe_order_line_id = g_line_id;
  1221. IF l_count=0 THEN
  1222. GOTO wait_for_install_base;
  1223. END IF;
  1224.  
  1225. UPDATE csi_item_instances cii
  1226. SET cii.attribute10 = l_product_type,
  1227. cii.serial_number = l_telephone_num,
  1228. cii.attribute11 = l_sim_num
  1229. WHERE cii.last_oe_order_line_id = g_line_id;
  1230.  
  1231. --update comms_number for the lastest order line_id
  1232. IF l_line_type_id=1034 THEN
  1233. UPDATE comms_numbers cn
  1234. SET cn.quote_line_id = g_line_id,
  1235. cn.app_id = 660
  1236. WHERE cn.service_num = l_telephone_num;
  1237. END IF;
  1238.  
  1239. --for suspension order, update status
  1240. IF l_line_type_id=1036 THEN
  1241. --update product lines at the same order
  1242. <<wait_for_all_install_base>>
  1243. SELECT COUNT(*)
  1244. INTO l_count
  1245. FROM oe_order_lines_all oola,
  1246. oe_order_lines_all oola2
  1247. WHERE oola.header_id = oola2.header_id
  1248. AND oola2.line_id = g_line_id;
  1249. IF l_count<2 THEN
  1250. GOTO wait_for_all_install_base;
  1251. END IF;
  1252.  
  1253. UPDATE csi_item_instances cii
  1254. SET cii.instance_status_id = 10021
  1255. WHERE cii.last_oe_order_line_id IN (
  1256. SELECT oola.line_id
  1257. FROM oe_order_lines_all oola,
  1258. oe_order_lines_all oola2
  1259. WHERE oola.header_id = oola2.header_id
  1260. AND oola2.line_id = g_line_id
  1261. );
  1262. END IF;
  1263.  
  1264. --for starprod, create a child intall base for user
  1265. IF l_line_type_id=1033 THEN
  1266. create_install_base_rel(g_line_id,
  1267. l_return_status,
  1268. l_msg_count,
  1269. l_msg_data) ;
  1270. END IF;
  1271.  
  1272. COMMIT;
  1273.  
  1274. EXCEPTION
  1275. WHEN no_need_expire THEN
  1276. NULL;
  1277. WHEN OTHERS THEN
  1278. NULL;
  1279. END;
  1280.  
  1281. END comms_om_new;

Oracle EBS OM 主要API示例的更多相关文章

  1. Oracle EBS OM 发放订单

    DECLARE l_header_rec OE_ORDER_PUB.Header_Rec_Type; l_line_tbl OE_ORDER_PUB.Line_Tbl_Type; l_action_r ...

  2. Oracle EBS OM 取消订单

    DECLARE l_header_rec OE_ORDER_PUB.Header_Rec_Type; l_line_tbl OE_ORDER_PUB.Line_Tbl_Type; l_action_r ...

  3. Oracle EBS OM 保留订单

    DECLARE l_header_rec OE_ORDER_PUB.Header_Rec_Type; l_line_tbl OE_ORDER_PUB.Line_Tbl_Type; l_action_r ...

  4. Oracle EBS OM 删除订单行

    DECLARE l_header_rec OE_ORDER_PUB.Header_Rec_Type; l_line_tbl OE_ORDER_PUB.Line_Tbl_Type; l_action_r ...

  5. Oracle EBS OM 登记订单

    DECLARE l_header_rec OE_ORDER_PUB.Header_Rec_Type; l_line_tbl OE_ORDER_PUB.Line_Tbl_Type; l_action_r ...

  6. Oracle EBS OM 取消订单行

    DECLARE l_header_rec OE_ORDER_PUB.Header_Rec_Type; l_line_tbl OE_ORDER_PUB.Line_Tbl_Type; l_action_r ...

  7. Oracle EBS OM 已存在的OM订单增加物料

    DECLARE l_header_rec OE_ORDER_PUB.Header_Rec_Type; l_line_tbl OE_ORDER_PUB.Line_Tbl_Type; l_action_r ...

  8. Oracle EBS OM 创建订单

    DECLARE l_header_rec OE_ORDER_PUB.Header_Rec_Type; l_line_tbl OE_ORDER_PUB.Line_Tbl_Type; l_action_r ...

  9. Oracle EBS AR 其他API

    DECLARE L_CR_ID NUMBER; L_ATTRIBUTE_REC AR_RECEIPT_API_PUB.ATTRIBUTE_REC_TYPE; L_GLOBAL_ATT_REC AR_R ...

随机推荐

  1. C# 导入excel报错 :不是预期外部表

    错误原因:由于Excel 97-2003的连接格式与Excel 2010 的 不同造成. 解决方案1: 很多人换了2010后,问的最多的问题之一是2003里最经典的ADO中的“provider=Mic ...

  2. Linux常用命令大全(归类)

    最近都在和Linux打交道,这方面基础比较薄弱的我只好买了本鸟哥的书看看,感觉还不错.我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因, ...

  3. 原生js之canvas时钟组件

    canvas一直是前端开发中不可或缺的一种用来绘制图形的标签元素,比如压缩上传的图片.比如刮刮卡.比如制作海报.图表插件等,很多人在面试的过程中也会被问到有没有接触过canvas图形绘制. 定义 ca ...

  4. js遍历 for-of

    for-of遍历 entries() 返回一个遍历器对象,用来遍历[键名, 键值]组成的数组.对于数组,键名就是索引值:对于 Set,键名与键值相同.Map 结构的 Iterator 接口,默认就是调 ...

  5. php判断浏览器是不是IE

    1.$_SERVER['HTTP_USER_AGENT']和strpos 2.打印结果 谷歌: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Appl ...

  6. fireBug引入JQuery,方便书写jq调试代码

    在控制台执行下段代码,等到网络中加载完成后,即可正常运行jq代码.也可以根据需要进行修改引入其他js代码. javascript:(function(url) { var s = document.c ...

  7. redis的数据持久化方案

    Redis的持久化方案有两种 1.Rdb方式:快照形式,定期将内存中的数据持久化到硬盘.是Redis默认的数据持久化的形式. Rdb:缺点是:数据还没有更新到磁盘上,突然断电,造成数据的不完整性. 在 ...

  8. Spring消息之AMQP.

    一.AMQP 概述 AMQP(Advanced Message Queuing Protocol),高级消息队列协议. 简单回忆一下JMS的消息模型,可能会有助于理解AMQP的消息模型.在JMS中,有 ...

  9. Helm 架构 - 每天5分钟玩转 Docker 容器技术(161)

    在实践之前,我们先来看看 Helm 的架构. Helm 有两个重要的概念:chart 和 release. chart 是创建一个应用的信息集合,包括各种 Kubernetes 对象的配置模板.参数定 ...

  10. Bootstrap3 栅格系统-简介

    Bootstrap 提供了一套响应式.移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列.它包含了易于使用的预定义类,还有强大的mixin 用于生成更具 ...