[Home] [Help]
PACKAGE BODY: APPS.CSP_PROD_TASK_PARTS_HISTORY
Source
1 PACKAGE BODY CSP_PROD_TASK_PARTS_HISTORY AS
2 /* $Header: cspgpthb.pls 120.2 2012/01/06 12:50:49 vmandava ship $ */
3 -- Start of Comments
4 -- Package name : CSP_PROD_TASK_PARTS_HISTORY
5 -- Purpose : This package includes the procedures that handle the history of Product-Task-Parts details.
6 -- History : 04-May-2001, Arul Joseph.
7 -- NOTE :
8 -- End of Comments
9 procedure create_parts_history(
10 errbuf OUT NOCOPY varchar2,
11 retcode OUT NOCOPY number) is
12
13 cursor c_debrief_lines is
14 select cia.inventory_item_id product_id,
15 jtb.template_id,
16 cdl.inventory_item_id,
17 inv_convert.inv_um_convert(
18 cdl.inventory_item_id,
19 null,
20 cdl.quantity,
21 cdl.uom_code,
22 msib.primary_uom_code,
23 null,
24 null) quantity,
25 msib.primary_uom_code,
26 cdl.item_revision,
27 cdh.statistics_updated,
28 cdh.debrief_header_id,
29 cdl.debrief_line_id
30 from csf_debrief_lines cdl,
31 csf_debrief_headers cdh,
32 jtf_task_assignments jta,
33 jtf_tasks_b jtb,
34 mtl_system_items_b msib,
35 cs_incidents_all cia
36 where cdl.statistics_updated is null
37 and cdl.spare_update_status = 'SUCCEEDED'
38 and cdl.issuing_sub_inventory_code is not null
39 and cdl.inventory_item_id = msib.inventory_item_id
40 and cdl.issuing_inventory_org_id = msib.organization_id
41 and cdh.debrief_header_id = cdl.debrief_header_id
42 and jta.task_assignment_id = cdh.task_assignment_id
43 and jtb.task_id = jta.task_id
44 and jtb.template_id is not null
45 and jtb.source_object_type_code = 'SR'
46 and cia.incident_id = jtb.source_object_id
47 and cia.inventory_item_id is not null
48 order by cdh.debrief_header_id;
49
50 cursor c_product_task(p_template_id number,
51 p_product_id number) is
52 select product_task_id,
53 actual_times_used
54 from csp_product_tasks cpt
55 where cpt.task_template_id = p_template_id
56 and cpt.product_id = p_product_id;
57
58 cursor c_existing_line(p_debrief_header_id number,
59 p_inventory_item_id number,
60 p_revision varchar2) is
61 select cdl.inventory_item_id
62 from csf_debrief_lines cdl
63 where cdl.debrief_header_id = p_debrief_header_id
64 and cdl.inventory_item_id = p_inventory_item_id
65 and nvl(cdl.item_revision,0) = nvl(p_revision,0)
66 and cdl.statistics_updated = 'Y';
67
68 Type v_cur_type IS REF CURSOR;
69
70 l_task_part_id number;
71 l_quantity_used number;
72 l_rollup_quantity_used number;
73 l_rollup_times_used number;
74 l_substitute_item number;
75 l_actual_times_used number;
76 l_product_task_id number;
77 l_statistics varchar2(2000);
78 l_inventory_item_id number;
79 l_increment number := 1;
80 l_debrief_header_id number;
81 l_sql_string varchar2(2000);
82 l_cur v_cur_type;
83 l_replaced_items_list varchar2(2000);
84 l_rollup_increment number;
85 l_rollup_inventory_item_id number;
86 cursor c_task_parts(p_product_task_id number,
87 p_inventory_item_id number,
88 p_revision varchar2) is
89 select ctp.task_part_id,
90 ctp.quantity_used,
91 ctp.actual_times_used,
92 ctp.rollup_quantity_used,
93 ctp.rollup_times_used
94 from csp_task_parts ctp
95 where ctp.product_task_id = p_product_task_id
96 and ctp.inventory_item_id = p_inventory_item_id
97 and nvl(ctp.revision,'-') = nvl(p_revision,'-') ;
98 l_temp_item_id NUMBER;
99 BEGIN
100
101 l_debrief_header_id := -1;
102
103 for cdl in c_debrief_lines loop
104
105 l_temp_item_id := cdl.inventory_item_id;
106
107 l_actual_times_used := null;
108 l_product_task_id := null;
109 open c_product_task(cdl.template_id,
110 cdl.product_id);
111 fetch c_product_task into l_product_task_id,
112 l_actual_times_used;
113 close c_product_task;
114
115 if cdl.debrief_header_id <> l_debrief_header_id and
116 cdl.statistics_updated is null then
117
118 l_debrief_header_id := cdl.debrief_header_id;
119 l_actual_times_used := nvl(l_actual_times_used,0) + 1;
120
121 if l_product_task_id is null then
122 create_product_task(
123 p_product_id => cdl.product_id,
124 p_template_id => cdl.template_id,
125 x_product_task_id => l_product_task_id);
126 else
127 update_product_task(
128 p_product_task_id => l_product_task_id,
129 p_actual_times_used => l_actual_times_used);
130 end if;
131
132 update csf_debrief_headers
133 set statistics_updated = 'Y',
134 last_updated_by = fnd_global.user_id,
135 last_update_date = sysdate
136 where debrief_header_id = cdl.debrief_header_id;
137
138 end if;
139
140 l_task_part_id := null;
141 l_quantity_used:= null;
142 -- Handle the debrief line
143 open c_task_parts(l_product_task_id,
144 cdl.inventory_item_id,
145 cdl.item_revision);
146 fetch c_task_parts into l_task_part_id,
147 l_quantity_used,
148 l_actual_times_used,
149 l_rollup_quantity_used,
150 l_rollup_times_used;
151 close c_task_parts;
152
153 l_quantity_used := nvl(l_quantity_used,0);
154 l_actual_times_used := nvl(l_actual_times_used,0);
155 l_rollup_quantity_used := nvl(l_rollup_quantity_used,0);
156 l_rollup_times_used := nvl(l_rollup_times_used,0);
157
158 if l_task_part_id is null then
159 l_increment := 1;
160 create_task_part(
161 p_product_task_id => l_product_task_id,
162 p_inventory_item_id => cdl.inventory_item_id,
163 p_quantity => cdl.quantity,
164 p_uom_code => cdl.primary_uom_code,
165 p_revision => cdl.item_revision,
166 p_actual_times_used => 1,
167 x_task_part_id => l_task_part_id);
168
169 handle_substitutes(
170 p_product_task_id => l_product_task_id,
171 p_task_part_id => l_task_part_id,
172 p_inventory_item_id => cdl.inventory_item_id,
173 p_quantity_used => cdl.quantity, --new
174 p_actual_times_used => 1, --new
175 p_rollup_quantity_used => cdl.quantity,
176 p_rollup_times_used => 1,
177 p_increment => l_increment,
178 p_debrief_header_id => cdl.debrief_header_id ); -- added to handel duplicate count for rolled up times used);
179
180 else
181 l_inventory_item_id := null;
182 l_increment := 0 ;
183 l_rollup_increment := 0 ;
184 -- Check if this item has already been processed on a different debrief line
185 open c_existing_line(cdl.debrief_header_id,
186 cdl.inventory_item_id,
187 cdl.item_revision
188 );
189 fetch c_existing_line into l_inventory_item_id;
190 close c_existing_line;
191 if l_inventory_item_id is null then
192 l_increment := 1;
193 end if;
194 -- we should also consider if any of the items which are replaced by this item already processed so modified above static cursor with ref cursor
195 CSP_SUPERSESSIONS_PVT.get_replaced_items_list(p_inventory_item_id => cdl.inventory_item_id
196 ,p_organization_id => NULL
197 ,x_replaced_item_list => l_replaced_items_list);
198 IF l_replaced_items_list IS NOT NULL THEN
199 l_sql_string := 'select cdl.inventory_item_id
200 from csf_debrief_lines cdl
201 where cdl.debrief_header_id = cdl.debrief_header_id
202 and cdl.inventory_item_id IN ' || l_replaced_items_list ||
203 'or cdl.inventory_item_id = cdl.inventory_item_id
204 and cdl.statistics_updated = ' || '''' || 'Y' || '''';
205
206 OPEN l_cur for l_sql_string;
207 FETCH l_cur INTO l_rollup_inventory_item_id;
208 CLOSE l_cur;
209 IF l_rollup_inventory_item_id IS NULL THEN
210 l_rollup_increment := 1;
211 END IF;
212 ELSE
213 l_rollup_increment := l_increment;
214 END IF;
215
216
217
218
219 l_actual_times_used := l_actual_times_used + l_increment;
220
221 update_task_part(
222 p_task_part_id => l_task_part_id,
223 p_quantity_used => l_quantity_used + cdl.quantity,
224 p_actual_times_used => l_actual_times_used,
225 p_rollup_quantity_used => l_rollup_quantity_used + cdl.quantity,
226 p_rollup_times_used => l_rollup_times_used + l_rollup_increment,
227 p_substitute_item => fnd_api.g_miss_num);
228
229 handle_substitutes(
230 p_product_task_id => l_product_task_id,
231 p_task_part_id => l_task_part_id,
232 p_inventory_item_id => cdl.inventory_item_id,
233 p_quantity_used => l_quantity_used + cdl.quantity, --new
234 p_actual_times_used => l_actual_times_used + l_increment, --new
235 p_rollup_quantity_used => l_rollup_quantity_used + cdl.quantity,
236 p_rollup_times_used => l_rollup_times_used + l_increment,
237 p_increment => l_increment,
238 p_debrief_header_id => cdl.debrief_header_id ); -- added to handel duplicate count for rolled up times used
239
240
241 end if;
242
243 update csf_debrief_lines
244 set statistics_updated = 'Y',
245 last_updated_by = fnd_global.user_id,
246 last_update_date = sysdate
247 where debrief_line_id = cdl.debrief_line_id;
248
249 end loop;
250
251 update_task_percentage;
252
253 End Create_parts_history;
254
255 procedure handle_substitutes(
256 p_product_task_id in number,
257 p_task_part_id in number,
258 p_inventory_item_id in number,
259 p_quantity_used in number,
260 p_actual_times_used in number,
261 p_rollup_quantity_used in number,
262 p_rollup_times_used in number,
263 p_increment in number,
264 p_debrief_header_id in number) IS
265
266 l_organization_id number;
267 l_task_part_id number;
268 l_inventory_item_id number;
269 l_actual_times_used number;
270 l_rollup_quantity_used number;
271 l_rollup_times_used number;
272 l_debrief_line_id number;
273
274 cursor substitutes is
275 select ctp.task_part_id,
276 ctp.inventory_item_id,
277 ctp.actual_times_used,
278 ctp.rollup_quantity_used,
279 ctp.rollup_times_used
280 from csp_task_parts ctp,
281 mtl_related_items_view mriv
282 where mriv.related_item_id = ctp.inventory_item_id
283 and mriv.organization_id = l_organization_id
284 and mriv.inventory_item_id = p_inventory_item_id
285 and mriv.relationship_type_id = 2
286 and ctp.product_task_id = p_product_task_id
287 and ctp.inventory_item_id <> p_inventory_item_id
288 and ctp.rollup_quantity_used is not null
289 and sysdate between nvl(ctp.start_date,sysdate-1)
290 and nvl(ctp.end_date,sysdate+1)
291 order by ctp.actual_times_used desc;
292
293 cursor debrief_line is
294 select DEBRIEF_LINE_ID
295 from csf_debrief_lines cdl
296 where INVENTORY_ITEM_ID = l_inventory_item_id
297 and debrief_header_id = p_debrief_header_id
298 and STATISTICS_UPDATED = 'Y' ;
299
300
301 begin
302
303
304
305 l_organization_id := cs_std.get_Item_Valdn_Orgzn_ID;
306 l_task_part_id := null;
307
308 open substitutes;
309 fetch substitutes into l_task_part_id,
310 l_inventory_item_id,
311 l_actual_times_used,
312 l_rollup_quantity_used,
313 l_rollup_times_used;
314 close substitutes;
315
316
317 if l_task_part_id is not null then
318
319 if l_actual_times_used >= p_actual_times_used then --Update rollup of substitute
320 open debrief_line;
321 fetch debrief_line INTO l_debrief_line_id;
322 CLOSE debrief_line;
323 IF l_debrief_line_id IS NULL THEN
324 update_task_part(
325 p_task_part_id => l_task_part_id,
326 p_quantity_used => fnd_api.g_miss_num,
327 p_actual_times_used => fnd_api.g_miss_num,
328 p_rollup_quantity_used => nvl(l_rollup_quantity_used,0) + p_rollup_quantity_used,
329 p_rollup_times_used => nvl(l_rollup_times_used,0) + p_rollup_times_used, --new
330 p_substitute_item => fnd_api.g_miss_num);
331 ELSE
332 update_task_part(
333 p_task_part_id => l_task_part_id,
334 p_quantity_used => fnd_api.g_miss_num,
335 p_actual_times_used => fnd_api.g_miss_num,
336 p_rollup_quantity_used => nvl(l_rollup_quantity_used,0) + p_rollup_quantity_used,
337 p_rollup_times_used => fnd_api.g_miss_num,
338 p_substitute_item => fnd_api.g_miss_num);
339 END IF;
340
341 update_task_part(
342 p_task_part_id => p_task_part_id,
343 p_quantity_used => fnd_api.g_miss_num,
344 p_actual_times_used => fnd_api.g_miss_num,
345 p_rollup_quantity_used => null,
346 p_rollup_times_used => null,
347 p_substitute_item => l_inventory_item_id);
348
349 elsif l_actual_times_used < p_actual_times_used then --Make this the preferred item
350
351 open debrief_line;
352 fetch debrief_line INTO l_debrief_line_id;
353 CLOSE debrief_line;
354 IF l_debrief_line_id IS NULL THEN
355 update_task_part(
356 p_task_part_id => l_task_part_id,
357 p_quantity_used => fnd_api.g_miss_num,
358 p_actual_times_used => fnd_api.g_miss_num,
359 p_rollup_quantity_used => nvl(l_rollup_quantity_used,0) + p_rollup_quantity_used,
360 p_rollup_times_used => nvl(l_rollup_times_used,0) + p_rollup_times_used, --new
361 p_substitute_item => fnd_api.g_miss_num);
362 ELSE
363 update_task_part(
364 p_task_part_id => l_task_part_id,
365 p_quantity_used => fnd_api.g_miss_num,
366 p_actual_times_used => fnd_api.g_miss_num,
367 p_rollup_quantity_used => nvl(l_rollup_quantity_used,0) + p_rollup_quantity_used,
368 p_rollup_times_used => fnd_api.g_miss_num,
369 p_substitute_item => fnd_api.g_miss_num);
370 END IF;
371
372
373 update_task_part(
374 p_task_part_id => p_task_part_id,
375 p_quantity_used => fnd_api.g_miss_num,
376 p_actual_times_used => fnd_api.g_miss_num,
377 p_rollup_quantity_used => null,
378 p_rollup_times_used => null,
379 p_substitute_item => l_inventory_item_id);
380
381 handle_supersede_items(p_product_task_id => p_product_task_id
382 ,p_task_part_id => p_task_part_id
383 ,p_inventory_item_id => p_inventory_item_id
384 ,p_rollup_quantity_used => l_rollup_quantity_used + p_rollup_quantity_used
385 ,p_rollup_times_used => l_rollup_times_used + p_rollup_times_used
386 ,p_debrief_header_id => p_debrief_header_id );
387 end if;
388 ELSE
389 handle_supersede_items(p_product_task_id => p_product_task_id
390 ,p_task_part_id => p_task_part_id
391 ,p_inventory_item_id => p_inventory_item_id
392 ,p_rollup_quantity_used => p_rollup_quantity_used
393 ,p_rollup_times_used => p_rollup_times_used
394 ,p_debrief_header_id => p_debrief_header_id );
395 end if;
396 end;
397
398 procedure handle_supersede_items(p_product_task_id in number,
399 p_task_part_id in number,
400 p_inventory_item_id in number,
401 p_rollup_quantity_used in number,
402 p_rollup_times_used in number,
403 p_debrief_header_id in number) is
404
405 l_supersede_item number;
406 l_task_part_id number;
407 l_rollup_quantity_used number;
408 l_rollup_times_used number;
409 l_primary_uom_code varchar2(50);
410
411 cursor supersede_items is
412 select ctp.task_part_id,
413 ctp.rollup_quantity_used,
414 ctp.rollup_times_used
415 from csp_task_parts ctp
416 where ctp.product_task_id = p_product_task_id
417 and ctp.inventory_item_id = l_supersede_item
418 and ctp.rollup_quantity_used is not null
419 and sysdate between nvl(ctp.start_date,sysdate-1)
420 and nvl(ctp.end_date,sysdate+1)
421 order by ctp.actual_times_used desc;
422
423 cursor primary_uom is
424 select primary_uom_code
425 from mtl_system_items_b
426 where inventory_item_id = l_supersede_item;
427
428 Type v_cur_type IS REF CURSOR;
429
430 l_cur v_cur_type;
431 l_sql_string varchar2(2000);
432 l_replaced_items_list varchar2(2000);
433 l_debrief_line_id NUMBER;
434
435 BEGIN
436 l_supersede_item := null;
437 csp_supersessions_pvt.get_top_supersede_item(p_item_id => p_inventory_item_id
438 ,p_org_id => null
439 ,x_item_id => l_supersede_item);
440 IF l_supersede_item <> p_inventory_item_id THEN
441 OPEN supersede_items;
442 FETCH supersede_items INTO l_task_part_id,
443 l_rollup_quantity_used,
444 l_rollup_times_used;
445 CLOSE supersede_items;
446 OPEN primary_uom;
447 FETCH primary_uom INTO l_primary_uom_code;
448 CLOSE primary_uom;
449
450 IF l_task_part_id IS NOT NULL THEN
451 CSP_SUPERSESSIONS_PVT.get_replaced_items_list(p_inventory_item_id => l_supersede_item
452 ,p_organization_id => NULL
453 ,x_replaced_item_list => l_replaced_items_list);
454 l_sql_string := 'select DEBRIEF_LINE_ID
455 from csf_debrief_lines cdl
456 where INVENTORY_ITEM_ID IN ' || l_replaced_items_list ||
457 'and debrief_header_id = ' || p_debrief_header_id ||
458 'and STATISTICS_UPDATED =' || '''' || 'Y' || '''' ;
459
460 OPEN l_cur for l_sql_string;
461 FETCH l_cur INTO l_debrief_line_id;
462 CLOSE l_cur;
463 IF l_debrief_line_id IS NOT NULL THEN
464 update_task_part(
465 p_task_part_id => l_task_part_id,
466 p_quantity_used => fnd_api.g_miss_num,
467 p_actual_times_used => fnd_api.g_miss_num,
468 p_rollup_quantity_used => nvl(l_rollup_quantity_used,0) + p_rollup_quantity_used,
469 p_rollup_times_used => fnd_api.g_miss_num,
470 p_substitute_item => fnd_api.g_miss_num);
471 ELSE
472 update_task_part(
473 p_task_part_id => l_task_part_id,
474 p_quantity_used => fnd_api.g_miss_num,
475 p_actual_times_used => fnd_api.g_miss_num,
476 p_rollup_quantity_used => nvl(l_rollup_quantity_used,0) + p_rollup_quantity_used,
477 p_rollup_times_used => nvl(l_rollup_times_used,0) + p_rollup_times_used, --new
478 p_substitute_item => fnd_api.g_miss_num);
479 END IF;
480
481 update_task_part(
482 p_task_part_id => p_task_part_id,
483 p_quantity_used => fnd_api.g_miss_num,
484 p_actual_times_used => fnd_api.g_miss_num,
485 p_rollup_quantity_used => null,
486 p_rollup_times_used => null,
487 p_substitute_item => l_supersede_item);
488 ELSE
489 create_task_part(
490 p_product_task_id => p_product_task_id,
491 p_inventory_item_id => l_supersede_item,
492 p_quantity => null,
493 p_uom_code => l_primary_uom_code,
494 p_revision => null,
495 p_actual_times_used => null,
496 x_task_part_id => l_task_part_id);
497 update_task_part(
498 p_task_part_id => l_task_part_id,
499 p_quantity_used => fnd_api.g_miss_num,
500 p_actual_times_used => fnd_api.g_miss_num,
501 p_rollup_quantity_used => p_rollup_quantity_used,
502 p_rollup_times_used => p_rollup_times_used,
503 p_substitute_item => fnd_api.g_miss_num);
504 update_task_part(
505 p_task_part_id => p_task_part_id,
506 p_quantity_used => fnd_api.g_miss_num,
507 p_actual_times_used => fnd_api.g_miss_num,
508 p_rollup_quantity_used => null,
509 p_rollup_times_used => null,
510 p_substitute_item => l_supersede_item);
511
512 END IF;
513 END IF;
514 END handle_supersede_items;
515
516 procedure update_task_percentage is
517
518 cursor times_used is
519 select product_id,
520 sum(cpt.actual_times_used) sum_times_used
521 from csp_product_tasks cpt
522 group by cpt.product_id;
523
524 begin
525 for tu in times_used loop
526 update csp_product_tasks
527 set task_percentage = actual_times_used / tu.sum_times_used * 100
528 where product_id = tu.product_id;
529 end loop;
530 end;
531
532 PROCEDURE Create_product_task(
533 p_product_id in number,
534 p_template_id in number,
535 x_product_task_id OUT NOCOPY number) is
536
537 l_product_task_id number;
538
539 begin
540 csp_product_tasks_pkg.insert_row(
541 px_product_task_id => x_product_task_id,
542 p_product_id => p_product_id,
543 p_task_template_id => p_template_id,
544 p_auto_manual => 'A',
545 p_actual_times_used => 1,
546 p_task_percentage => null,
547 p_attribute_category => null,
548 p_attribute1 => null,
549 p_attribute2 => null,
550 p_attribute3 => null,
551 p_attribute4 => null,
552 p_attribute5 => null,
553 p_attribute6 => null,
554 p_attribute7 => null,
555 p_attribute8 => null,
556 p_attribute9 => null,
557 p_attribute10 => null,
558 p_attribute11 => null,
559 p_attribute12 => null,
560 p_attribute13 => null,
561 p_attribute14 => null,
562 p_attribute15 => null,
563 p_created_by => fnd_global.user_id,
564 p_creation_date => sysdate,
565 p_last_updated_by => fnd_global.user_id,
566 p_last_update_date => sysdate,
567 p_last_update_login => null);
568
569 End Create_product_task;
570
571 PROCEDURE Update_product_task(
572 p_product_task_id in number,
573 p_actual_times_used in number) is
574 BEGIN
575 CSP_PRODUCT_TASKS_PKG.Update_Row(
576 p_PRODUCT_TASK_ID => p_product_task_id,
577 p_PRODUCT_ID => fnd_api.g_miss_num,
578 p_TASK_TEMPLATE_ID => fnd_api.g_miss_num,
579 p_AUTO_MANUAL => 'A',
580 p_ACTUAL_TIMES_USED => p_actual_times_used,
581 p_TASK_PERCENTAGE => fnd_api.g_miss_num,
582 p_ATTRIBUTE_CATEGORY => fnd_api.g_miss_char,
583 p_ATTRIBUTE1 => fnd_api.g_miss_char,
584 p_ATTRIBUTE2 => fnd_api.g_miss_char,
585 p_ATTRIBUTE3 => fnd_api.g_miss_char,
586 p_ATTRIBUTE4 => fnd_api.g_miss_char,
587 p_ATTRIBUTE5 => fnd_api.g_miss_char,
588 p_ATTRIBUTE6 => fnd_api.g_miss_char,
589 p_ATTRIBUTE7 => fnd_api.g_miss_char,
590 p_ATTRIBUTE8 => fnd_api.g_miss_char,
591 p_ATTRIBUTE9 => fnd_api.g_miss_char,
592 p_ATTRIBUTE10 => fnd_api.g_miss_char,
593 p_ATTRIBUTE11 => fnd_api.g_miss_char,
594 p_ATTRIBUTE12 => fnd_api.g_miss_char,
595 p_ATTRIBUTE13 => fnd_api.g_miss_char,
596 p_ATTRIBUTE14 => fnd_api.g_miss_char,
597 p_ATTRIBUTE15 => fnd_api.g_miss_char,
598 p_CREATED_BY => FND_API.G_MISS_NUM,
599 p_CREATION_DATE => FND_API.G_MISS_DATE,
600 p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID,
601 p_LAST_UPDATE_DATE => SYSDATE,
602 p_LAST_UPDATE_LOGIN => fnd_api.g_miss_num);
603
604 End Update_product_task;
605
606 PROCEDURE Create_task_part(
607 p_product_task_id in number,
608 p_inventory_item_id in number,
609 p_quantity in number,
610 p_uom_code in varchar2,
611 p_revision in varchar2,
612 p_actual_times_used in number,
613 x_task_part_id OUT NOCOPY number) is
614
615 l_task_part_id number := null;
616
617 begin
618
619 csp_task_parts_pkg.insert_row(
620 px_task_part_id => l_task_part_id,
621 p_product_task_id => p_product_task_id,
622 p_inventory_item_id => p_inventory_item_id,
623 p_manual_quantity => null,
624 p_manual_percentage => null,
625 p_quantity_used => p_quantity,
626 p_actual_times_used => p_actual_times_used,
627 p_created_by => fnd_global.user_id,
628 p_creation_date => sysdate,
629 p_last_updated_by => fnd_global.user_id,
630 p_last_update_date => sysdate,
631 p_last_update_login => null,
632 p_attribute_category => null,
633 p_attribute1 => null,
634 p_attribute2 => null,
635 p_attribute3 => null,
636 p_attribute4 => null,
637 p_attribute5 => null,
638 p_attribute6 => null,
639 p_attribute7 => null,
640 p_attribute8 => null,
641 p_attribute9 => null,
642 p_attribute10 => null,
643 p_attribute11 => null,
644 p_attribute12 => null,
645 p_attribute13 => null,
646 p_attribute14 => null,
647 p_attribute15 => null,
648 p_primary_uom_code => p_uom_code,
649 p_revision => p_revision,
650 p_start_date => null,
651 p_end_date => null,
652 p_rollup_quantity_used => p_quantity,
653 p_rollup_times_used => 1,
654 p_substitute_item => null);
655
656 x_task_part_id := l_task_part_id;
657 End Create_task_part;
658
659 PROCEDURE update_task_part(
660 p_task_part_id number,
661 p_quantity_used number,
662 p_actual_times_used number,
663 p_rollup_quantity_used number,
664 p_rollup_times_used number,
665 p_substitute_item number) is
666
667 BEGIN
668
669 csp_task_parts_pkg.Update_Row(
670 p_TASK_PART_ID => p_task_part_id,
671 p_PRODUCT_TASK_ID => fnd_api.g_miss_num,
672 p_INVENTORY_ITEM_ID => fnd_api.g_miss_num,
673 p_MANUAL_QUANTITY => fnd_api.g_miss_num,
674 p_MANUAL_PERCENTAGE => fnd_api.g_miss_num,
675 p_QUANTITY_USED => p_quantity_used,
676 p_ACTUAL_TIMES_USED => p_actual_times_used,
677 p_CREATED_BY => fnd_api.g_miss_num,
678 p_CREATION_DATE => fnd_api.g_miss_date,
679 p_LAST_UPDATED_BY => fnd_global.user_id,
680 p_LAST_UPDATE_DATE => sysdate,
681 p_LAST_UPDATE_LOGIN => fnd_api.g_miss_num,
682 p_ATTRIBUTE_CATEGORY => fnd_api.g_miss_char,
683 p_ATTRIBUTE1 => fnd_api.g_miss_char,
684 p_ATTRIBUTE2 => fnd_api.g_miss_char,
685 p_ATTRIBUTE3 => fnd_api.g_miss_char,
686 p_ATTRIBUTE4 => fnd_api.g_miss_char,
687 p_ATTRIBUTE5 => fnd_api.g_miss_char,
688 p_ATTRIBUTE6 => fnd_api.g_miss_char,
689 p_ATTRIBUTE7 => fnd_api.g_miss_char,
690 p_ATTRIBUTE8 => fnd_api.g_miss_char,
691 p_ATTRIBUTE9 => fnd_api.g_miss_char,
692 p_ATTRIBUTE10 => fnd_api.g_miss_char,
693 p_ATTRIBUTE11 => fnd_api.g_miss_char,
694 p_ATTRIBUTE12 => fnd_api.g_miss_char,
695 p_ATTRIBUTE13 => fnd_api.g_miss_char,
696 p_ATTRIBUTE14 => fnd_api.g_miss_char,
697 p_ATTRIBUTE15 => fnd_api.g_miss_char,
698 p_PRIMARY_UOM_CODE => fnd_api.g_miss_char,
699 p_REVISION => fnd_api.g_miss_char,
700 p_START_DATE => fnd_api.g_miss_date,
701 p_END_DATE => fnd_api.g_miss_date,
702 P_ROLLUP_QUANTITY_USED => p_rollup_quantity_used,
703 P_ROLLUP_TIMES_USED => p_rollup_times_used,
704 P_SUBSTITUTE_ITEM => p_substitute_item);
705
706 End Update_task_part;
707 END CSP_PROD_TASK_PARTS_HISTORY;