[Home] [Help]
PACKAGE BODY: APPS.CSF_IB
Source
1 PACKAGE BODY CSF_IB AS
2 /* $Header: csfibasb.pls 120.11.12020000.3 2012/07/26 06:39:25 ibalint ship $ */
3
4
5 PROCEDURE create_base_product1(
6 p_api_version IN NUMBER,
7 x_return_status OUT NOCOPY varchar2,
8 x_msg_count OUT NOCOPY number,
9 x_msg_data OUT NOCOPY varchar2,
10 x_cp_id OUT NOCOPY number,
11 x_object_version_number OUT NOCOPY number,
12 p_customer_id IN NUMBER,
13 p_inv_item_id IN number,
14 p_cp_status_id in number,
15 p_quantity in number,
16 p_uom_code in varchar2,
17 p_currency_code in varchar2,
18 p_delivered_flag in varchar2 ,
19 p_installation_date in date ,
20 p_serial_number in varchar2 ,
21 p_shipped_date in date ) IS
22
23 l_cp_rec cs_installedbase_pub.cp_prod_rec_type;
24 l_ship_rec cs_installedbase_pub.CP_Ship_Rec_Type;
25 xx_cp_id number;
26
27 BEGIN
28 l_cp_rec.customer_id := p_customer_id;
29 l_cp_rec.inv_item_id := p_inv_item_id;
30 l_cp_rec.cp_status_id := p_cp_status_id;
31 l_cp_rec.quantity := p_quantity;
32 l_cp_rec.uom_code := p_uom_code;
33 l_cp_rec.currency_code := p_currency_code;
34 l_cp_rec.delivered_flag := p_delivered_flag;
35 l_cp_rec.installation_date := p_installation_date;
36
37 cs_installedbase_pub.create_base_product(
38 p_api_version => 1.0,
39 x_return_status => x_return_status,
40 x_msg_count => x_msg_count,
41 x_msg_data => x_msg_data,
42 p_cp_rec => l_cp_rec,
43 x_cp_id => x_cp_id,
44 x_object_version_number => x_object_version_number);
45
46 IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
47 if p_serial_number is not null then
48 l_ship_rec.cp_id := x_cp_id;
49 l_ship_rec.shipped_qty := p_quantity;
50 l_ship_rec.shipped_date := p_shipped_date;
51 l_ship_rec.serial_number := p_serial_number;
52 CS_InstalledBase_PUB.Record_Shipment_Info
53 (
54 p_api_version => 1.0,
55 p_init_msg_list => FND_API.G_FALSE,
56 p_commit => FND_API.G_FALSE,
57 x_return_status => x_return_status,
58 x_msg_count => x_msg_count,
59 x_msg_data => x_msg_data,
60 p_ship_rec => l_ship_rec,
61 x_new_cp_id => xx_cp_id
62 );
63 End if;
64 End if;
65
66 END create_base_product1;
67
68
69 PROCEDURE create_base_product2(
70 p_api_version IN NUMBER,
71 x_return_status OUT NOCOPY varchar2,
72 x_msg_count OUT NOCOPY number,
73 x_msg_data OUT NOCOPY varchar2,
74 x_cp_id OUT NOCOPY number,
75 X_object_version_number OUT NOCOPY number,
76 p_customer_id IN NUMBER,
77 p_inv_item_id IN number,
78 p_cp_status_id in number,
79 p_quantity in number,
80 p_uom_code in varchar2,
81 p_currency_code in varchar2,
82 p_config_parent_cp_id in number,
83 p_delivered_flag in varchar2 ,
84 p_installation_date in date ,
85 p_serial_number in varchar2 ,
86 p_shipped_date in date ) IS
87
88 l_cp_rec cs_installedbase_pub.cp_prod_rec_type;
89 l_ship_rec cs_installedbase_pub.CP_Ship_Rec_Type;
90 xx_cp_id number;
91
92 BEGIN
93 l_cp_rec.customer_id := p_customer_id;
94 l_cp_rec.inv_item_id := p_inv_item_id;
95 l_cp_rec.cp_status_id := p_cp_status_id;
96 l_cp_rec.quantity := p_quantity;
97 l_cp_rec.uom_code := p_uom_code;
98 l_cp_rec.currency_code := p_currency_code;
99 l_cp_rec.config_parent_cp_id := p_config_parent_cp_id;
100 l_cp_rec.delivered_flag := p_delivered_flag;
101 l_cp_rec.installation_date := p_installation_date;
102
103 cs_installedbase_pub.create_base_product(
104 p_api_version => 1.0,
105 x_return_status => x_return_status,
106 x_msg_count => x_msg_count,
107 x_msg_data => x_msg_data,
108 p_cp_rec => l_cp_rec,
109 x_cp_id => x_cp_id,
110 x_object_version_number => x_object_version_number);
111
112 --Added for recording serial number
113 IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
114 if p_serial_number is not null then
115 l_ship_rec.cp_id := x_cp_id;
116 l_ship_rec.shipped_qty := p_quantity;
117 l_ship_rec.shipped_date := p_shipped_date;
118 l_ship_rec.serial_number := p_serial_number;
119 CS_InstalledBase_PUB.Record_Shipment_Info
120 (
121 p_api_version => 1.0,
122 p_init_msg_list => FND_API.G_FALSE,
123 p_commit => FND_API.G_FALSE,
124 x_return_status => x_return_status,
125 x_msg_count => x_msg_count,
126 x_msg_data => x_msg_data,
127 p_ship_rec => l_ship_rec,
128 x_new_cp_id => xx_cp_id
129 );
130 end if;
131 End if;
132 END create_base_product2;
133
134
135
136 /*
137 case 3:
138 part is replacing a node in a tree. Create a new CPID
139 using the item, set its parents to point to parent of
140 the replaced cpid, and make all the cild of the replaced
141 cpid to the newly created record.
142 */
143
144 Procedure replace_product(
145 p_api_version in number,
146 x_return_status OUT NOCOPY varchar2,
147 x_msg_count OUT NOCOPY number,
148 x_msg_data OUT NOCOPY varchar2,
149 x_new_cp_id OUT NOCOPY number,
150 p_customer_id IN NUMBER,
151 p_inv_item_id IN number,
152 p_cp_status_id in number,
153 p_old_cp_status_id in number,
154 p_quantity in number,
155 p_uom_code in varchar2,
156 p_currency_code in varchar2,
157 p_cp_id in number,
158 p_qty_mismatch_ok in Varchar2 ,
159 p_config_parent_cp_id in number,
160 p_serial_number in varchar2 ,
161 p_shipped_date in date
162 ) is
163
164 l_cp_rec cs_installedbase_pub.cp_prod_rec_type;
165 l_ship_rec cs_installedbase_pub.CP_Ship_Rec_Type;
166 xx_cp_id number;
167
168
169 BEGIN
170 l_cp_rec.customer_id := p_customer_id;
171 l_cp_rec.inv_item_id := p_inv_item_id;
172 l_cp_rec.cp_status_id := p_cp_status_id;
173 l_cp_rec.quantity := p_quantity;
174 l_cp_rec.uom_code := p_uom_code;
175 l_cp_rec.currency_code := p_currency_code;
176 l_cp_rec.config_parent_cp_id := p_config_parent_cp_id;
177
178 cs_installedbase_pub.replace_product(
179 p_api_version => 1.0,
180 x_return_status => x_return_status,
181 x_msg_count => x_msg_count,
182 x_msg_data => x_msg_data,
183 p_cp_id => p_cp_id,
184 p_old_cp_status_id => p_old_cp_status_id,
185 p_cp_rec => l_cp_rec,
186 x_new_cp_id => x_new_cp_id,
187 p_qty_mismatch_ok => p_qty_mismatch_ok);
188
189 --Added for recording serial number
190 IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
191 if p_serial_number is not null then
192 l_ship_rec.cp_id := x_new_cp_id;
193 l_ship_rec.shipped_date := p_shipped_date;
194 l_ship_rec.serial_number := p_serial_number;
195 l_ship_rec.shipped_qty := p_quantity;
196 CS_InstalledBase_PUB.Record_Shipment_Info
197 (
198 p_api_version => 1.0,
199 p_init_msg_list => FND_API.G_FALSE,
200 p_commit => FND_API.G_FALSE,
201 x_return_status => x_return_status,
202 x_msg_count => x_msg_count,
203 x_msg_data => x_msg_data,
204 p_ship_rec => l_ship_rec,
205 x_new_cp_id => xx_cp_id
206 );
207 end if;
208 End if;
209 END replace_product;
210
211 Procedure Update_Product(
212 p_api_version in number,
213 x_return_status OUT NOCOPY varchar2,
214 x_msg_count OUT NOCOPY number,
215 x_msg_data OUT NOCOPY varchar2,
216 p_cp_id in number ,
217 p_customer_id IN NUMBER ,
218 p_inv_item_id IN number ,
219 p_quantity in number ,
220 p_uom_code in varchar2,
221 p_cp_status_id in number,
222 p_config_parent_cp_id number,
223 p_serial_number in varchar2 ,
224 p_shipped_date in date ) Is
225
226 l_abort_on_warn_flag Cs_InstalledBase_Pub.Abort_Upd_On_Warn_Rec_Type;
227 l_cascade_updates_flag Cs_InstalledBase_Pub.Cascade_Upd_Flag_Rec_Type;
228 l_cp_rec Cs_InstalledBase_Pub.CP_Prod_Rec_Type;
229 l_ship_rec Cs_InstalledBase_Pub.CP_Ship_Rec_Type;
230
231
232 Begin
233
234 if p_cp_status_id is not Null Then
235 l_cp_rec.cp_status_id := p_cp_status_id;
236 End If;
237 If p_customer_id is Not Null Then
238 l_cp_rec.customer_id := p_customer_id;
239 End if;
240 If p_inv_item_id is not null Then
241 l_cp_rec.inv_item_id := p_inv_item_id;
242 End If;
243 If p_quantity is Not Null Then
244 l_cp_rec.quantity := p_quantity;
245 End If;
246 If p_uom_code is Not Null Then
247 l_cp_rec.uom_code := p_uom_code;
248 End If;
249 If p_config_parent_cp_id is Not Null Then
250 l_cp_rec.config_parent_cp_id := p_config_parent_cp_id;
251 End If;
252 --Added for recording serial number
253 If p_serial_number is Not Null Then
254 l_ship_rec.shipped_date := p_shipped_date;
255 l_ship_rec.serial_number := p_serial_number;
256 End If;
257
258 Cs_InstalledBase_Pub.Update_Product
259 (
260 p_api_version => 1.0,
261 x_return_status => x_return_status,
262 x_msg_count => x_msg_count,
263 x_msg_data => x_msg_data,
264 p_cp_id => p_cp_id,
265 p_cp_rec => l_cp_rec,
266 p_ship_rec => l_ship_rec,
267 p_abort_on_warn_flag => l_abort_on_warn_flag,
268 p_cascade_updates_flag => l_cascade_updates_flag
269 );
270
271 End Update_Product;
272
273 Procedure Update_install_base (
274 p_api_version in number,
275 p_init_msg_list in varchar2 := fnd_api.g_false,
276 p_commit in varchar2 := fnd_api.g_false,
277 p_validation_level in number := fnd_api.g_valid_level_full,
278 x_return_status OUT NOCOPY varchar2,
279 x_msg_count OUT NOCOPY number,
280 x_msg_data OUT NOCOPY varchar2,
281 x_new_instance_id OUT NOCOPY number,
282 p_in_out_flag in varchar2,
283 p_transaction_type_id in number,
284 p_txn_sub_type_id in number,
285 p_instance_id in number,
286 p_inventory_item_id in number,
287 p_inv_organization_id in number,
288 p_inv_subinventory_name in varchar2,
289 p_inv_locator_id in number,
290 p_quantity in number,
291 p_inv_master_organization_id in number,
292 p_mfg_serial_number_flag in varchar2,
293 p_serial_number in varchar2,
294 p_lot_number in varchar2,
295 p_revision in varchar2,
296 p_unit_of_measure in varchar2,
297 p_party_id in number,
298 p_party_account_id in number,
299 p_party_site_id in number,
300 p_parent_instance_id in number,
301 p_instance_status_id in number := 9.99E125, --fnd_api.g_miss_num) --added for bug 3192060
302 p_item_operational_status_code in varchar2,
303 p_system_id in number,
304 p_recovered_instance_id in number ) is
305
306 l_api_version NUMBER := 1.0;
307 l_commit VARCHAR2(1) := fnd_api.g_false;
308 l_init_msg_list VARCHAR2(1) := fnd_api.g_false;
309 l_validation_level NUMBER := fnd_api.g_valid_level_full;
310 l_validate_only_flag VARCHAR2(1) := fnd_api.g_false;
311 l_in_out_flag VARCHAR2(30) := p_in_out_flag;
312 l_dest_location_rec csi_process_txn_grp.dest_location_rec;
313 l_txn_rec csi_datastructures_pub.transaction_rec;
314 l_instances_tbl csi_process_txn_grp.txn_instances_tbl;
315 l_i_parties_tbl csi_process_txn_grp.txn_i_parties_tbl;
316 l_ip_accounts_tbl csi_process_txn_grp.txn_ip_accounts_tbl;
317 l_org_units_tbl csi_process_txn_grp.txn_org_units_tbl;
318 l_ext_attrib_values_tbl csi_process_txn_grp.txn_ext_attrib_values_tbl;
319 l_pricing_attribs_tbl csi_process_txn_grp.txn_pricing_attribs_tbl;
320 l_instance_asset_tbl csi_process_txn_grp.txn_instance_asset_tbl;
321 l_ii_relationships_tbl csi_process_txn_grp.txn_ii_relationships_tbl;
322 l_return_status VARCHAR2(1) := fnd_api.g_ret_sts_success;
323 l_msg_count NUMBER;
324 l_msg_data VARCHAR2(240);
325 l_msg_index_out binary_integer;
326 l_inv_txn_typeid NUMBER := 93;
327 l_txn_error_rec csi_datastructures_pub.transaction_error_rec;
328 l_instance_status_id number:= 9.99E125 ;--FND_API.G_MISS_NUM; --added for bug 3192060
329 l_inst_ind NUMBER;
330
331 BEGIN
332
333 l_inst_ind :=1;
334 l_instance_status_id:=p_instance_status_id; --added for bug 3192060
335 IF p_in_out_flag = 'OUT' Then ---Install a part at customer's site
336 --
337 --
338 l_inv_txn_typeid := 93;
339 l_dest_location_rec.location_type_code := 'HZ_PARTY_SITES';
340 l_dest_location_rec.location_id := p_party_site_id;
341 l_dest_location_rec.INV_ORGANIZATION_ID := null;
342 l_dest_location_rec.INV_SUBINVENTORY_NAME := null;
343 l_dest_location_rec.INV_LOCATOR_ID := null;
344 l_dest_location_rec.PA_PROJECT_ID := null;
345 l_dest_location_rec.PA_PROJECT_TASK_ID := null;
346 l_dest_location_rec.IN_TRANSIT_ORDER_LINE_ID := null;
350 --
347 l_dest_location_rec.WIP_JOB_ID := null;
348 l_dest_location_rec.PO_ORDER_LINE_ID := null;
349 --
351 l_txn_rec.source_transaction_date := sysdate;
352 l_txn_rec.transaction_date := sysdate;
353 l_txn_rec.transaction_type_id := p_transaction_type_id;
354 l_txn_rec.txn_sub_type_id := p_txn_sub_type_id;
355 --
356 --
357 l_instances_tbl(l_inst_ind).ib_txn_segment_flag := 'S';
358 l_instances_tbl(l_inst_ind).instance_id := p_instance_id ;
359 l_instances_tbl(l_inst_ind).inventory_item_id := p_inventory_item_id;
360 l_instances_tbl(l_inst_ind).inv_organization_id := p_inv_organization_id;
361 l_instances_tbl(l_inst_ind).vld_organization_id := p_inv_organization_id;
362 l_instances_tbl(l_inst_ind).inv_subinventory_name := p_inv_subinventory_name;
363 l_instances_tbl(l_inst_ind).inv_locator_id := p_inv_locator_id;
364 l_instances_tbl(l_inst_ind).location_type_code := 'INVENTORY';
365 l_instances_tbl(l_inst_ind).quantity := p_quantity ;
366 l_instances_tbl(l_inst_ind).inv_master_organization_id := p_inv_master_organization_id;
367 l_instances_tbl(l_inst_ind).object_version_number := 1.0;
368 l_instances_tbl(l_inst_ind).mfg_serial_number_flag := p_mfg_serial_number_flag;
369 l_instances_tbl(l_inst_ind).unit_of_measure := p_unit_of_measure;
370 l_instances_tbl(l_inst_ind).serial_number := p_serial_number;
371 l_instances_tbl(l_inst_ind).lot_number := p_lot_number;
372 l_instances_tbl(l_inst_ind).inventory_revision := p_revision;
373 l_instances_tbl(l_inst_ind).instance_status_id := l_instance_status_id; --added for bug 3192060
374 l_instances_tbl(l_inst_ind).instance_usage_code := 'OUT_OF_ENTERPRISE';
375 l_instances_tbl(l_inst_ind).operational_status_code := p_item_operational_status_code;
376 l_instances_tbl(l_inst_ind).system_id := p_system_id;
377
378 l_i_parties_tbl(1).parent_tbl_index := 1;
379 l_i_parties_tbl(1).party_source_table := 'HZ_PARTIES';
380 l_i_parties_tbl(1).party_id := p_party_id;
381 l_i_parties_tbl(1).relationship_type_code := 'OWNER';
382 l_i_parties_tbl(1).contact_flag := 'N';
383 --
384 --
385 l_ip_accounts_tbl(1).parent_tbl_index := 1;
386 l_ip_accounts_tbl(1).party_account_id := p_party_account_id;
387 l_ip_accounts_tbl(1).relationship_type_code:= 'OWNER';
388 --
389 if p_parent_instance_id is not null Then
390 l_inst_ind:= l_inst_ind +1;
391 l_instances_tbl(l_inst_ind).ib_txn_segment_flag := 'P';
392 l_instances_tbl(l_inst_ind).instance_id := p_parent_instance_id;
393 --
394 --
395 l_ii_relationships_tbl(1).subject_index := 1;
396 l_ii_relationships_tbl(1).object_index := 2;
397 l_ii_relationships_tbl(1).relationship_type_code := 'COMPONENT-OF';
398 end if;
399
400
401 FND_FILE.put_line(FND_FILE.LOG, 'Testing bug 12640969: before if p_reovered_instance_id is not null');
402 if p_recovered_instance_id is not null Then
403 FND_FILE.put_line(FND_FILE.LOG, 'Testing for bug 12640969: Inside if p_recovered_instance_id is not null, p_recovered_instance_id='||p_recovered_instance_id);
404 l_inst_ind := l_inst_ind +1;
405 l_instances_tbl(l_inst_ind).ib_txn_segment_flag := 'P';
406 l_instances_tbl(l_inst_ind).instance_id := p_recovered_instance_id;
407 l_ii_relationships_tbl(2).subject_index := 3;
408 l_ii_relationships_tbl(2).object_index := 1;
409 l_ii_relationships_tbl(2).relationship_type_code := 'REPLACED-BY';
410 FND_FILE.put_line(FND_FILE.LOG, 'Testing for bug 12640969:After replaced by relationship was established');
411 End If;
412
413 end if;
414
415 IF p_in_out_flag = 'IN' Then ---Remove a part from customer's site
416
417 --
418 l_inv_txn_typeid := 94;
419 l_dest_location_rec.location_type_code := 'INVENTORY';
420 l_dest_location_rec.inv_organization_id := p_inv_organization_id;
421 l_dest_location_rec.inv_subinventory_name := p_inv_subinventory_name;
422 l_dest_location_rec.inv_locator_id := p_inv_locator_id;
423 --
424 --
425 l_txn_rec.source_transaction_date := sysdate;
426 l_txn_rec.transaction_date := sysdate;
427 l_txn_rec.transaction_type_id := p_transaction_type_id;
428 l_txn_rec.txn_sub_type_id := p_txn_sub_type_id;
429 --
430 --
431 l_instances_tbl(l_inst_ind).ib_txn_segment_flag := 'S';
432 l_instances_tbl(l_inst_ind).instance_id := p_instance_id;
433 l_instances_tbl(l_inst_ind).inventory_item_id := p_inventory_item_id;
434 l_instances_tbl(l_inst_ind).quantity := p_quantity;
435 l_instances_tbl(l_inst_ind).inv_organization_id := p_inv_organization_id;
436 l_instances_tbl(l_inst_ind).vld_organization_id := p_inv_organization_id;
437 l_instances_tbl(l_inst_ind).inv_master_organization_id := p_inv_master_organization_id;
438 l_instances_tbl(l_inst_ind).object_version_number := 1.0;
439 l_instances_tbl(l_inst_ind).mfg_serial_number_flag := p_mfg_serial_number_flag;
440 l_instances_tbl(l_inst_ind).unit_of_measure := p_unit_of_measure;
441 l_instances_tbl(l_inst_ind).serial_number := p_serial_number;
442 l_instances_tbl(l_inst_ind).lot_number := p_lot_number;
443 l_instances_tbl(l_inst_ind).inventory_revision := p_revision;
444 l_instances_tbl(l_inst_ind).instance_status_id := l_instance_status_id; --added for bug 3192060
445 l_instances_tbl(l_inst_ind).instance_usage_code := 'IN_INVENTORY';
446 l_instances_tbl(l_inst_ind).operational_status_code := 'OUT_OF_SERVICE';
447 l_instances_tbl(l_inst_ind).system_id := p_system_id;
448 --
449
450 l_i_parties_tbl(1).parent_tbl_index := 1;
451 l_i_parties_tbl(1).party_source_table := 'HZ_PARTIES';
452 l_i_parties_tbl(1).party_id := p_party_id;
453 l_i_parties_tbl(1).relationship_type_code := 'OWNER';
454 l_i_parties_tbl(1).contact_flag := 'N';
455
456 --
457 --
458 /*
459 l_ip_accounts_tbl(1).parent_tbl_index := 1;
460 l_ip_accounts_tbl(1).party_account_id := p_party_account_id;
461 l_ip_accounts_tbl(1).relationship_type_code := 'OWNER';
462 */
463 --
464 --
465
466 End If;
467
468 csi_process_txn_grp.process_transaction (
469 p_api_version => l_api_version,
470 p_commit => l_commit,
471 p_init_msg_list => l_init_msg_list,
472 p_validation_level => l_validation_level,
473 p_validate_only_flag => l_validate_only_flag,
474 p_in_out_flag => l_in_out_flag,
475 p_dest_location_rec => l_dest_location_rec,
476 p_txn_rec => l_txn_rec,
477 p_instances_tbl => l_instances_tbl,
478 p_i_parties_tbl => l_i_parties_tbl,
479 p_ip_accounts_tbl => l_ip_accounts_tbl,
480 p_org_units_tbl => l_org_units_tbl,
481 p_ext_attrib_vlaues_tbl => l_ext_attrib_values_tbl,
482 p_pricing_attribs_tbl => l_pricing_attribs_tbl,
483 p_instance_asset_tbl => l_instance_asset_tbl,
484 p_ii_relationships_tbl => l_ii_relationships_tbl,
485 px_txn_error_rec => l_txn_error_rec,
486 p_inv_txn_typeid_from_cs => l_inv_txn_typeid,
487 x_return_status => x_return_status,
488 x_msg_count => x_msg_count,
489 x_msg_data => x_msg_data );
490
491 if x_return_status='S' Then x_new_instance_id := l_instances_tbl(1).new_instance_id;
492 End If;
493
494
495 END UPDATE_INSTALL_BASE;
496
497
498 END csf_IB;
499
500