DBA Data[Home] [Help]

PACKAGE BODY: APPS.WIP_DISCRETEJOB_UTIL

Source


1 PACKAGE BODY WIP_Discretejob_Util AS
2 /* $Header: WIPUWDJB.pls 120.3 2005/10/24 17:16:07 sjchen ship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'WIP_Discretejob_Util';
7 
8 
9 --  Function Complete_Record
10 
11 FUNCTION Complete_Record
12 (   p_DiscreteJob_rec               IN  WIP_Work_Order_PUB.Discretejob_Rec_Type
13 ,   p_old_DiscreteJob_rec           IN  WIP_Work_Order_PUB.Discretejob_Rec_Type
14 ,   p_ForceCopy                     IN BOOLEAN := NULL
15 ) RETURN WIP_Work_Order_PUB.Discretejob_Rec_Type
16 IS
17 l_DiscreteJob_rec             WIP_Work_Order_PUB.Discretejob_Rec_Type := p_DiscreteJob_rec;
18 BEGIN
19 
20  IF (p_ForceCopy is NOT NULL) THEN
21    IF (p_ForceCopy = TRUE)
22      THEN
23 
24       IF p_old_DiscreteJob_rec.alternate_bom_designator = FND_API.G_MISS_CHAR THEN
25 	 NULL;
26        ELSE
27 	 l_DiscreteJob_rec.alternate_bom_designator := p_old_DiscreteJob_rec.alternate_bom_designator;
28       END IF;
29 
30       IF p_old_DiscreteJob_rec.alternate_rout_designator = FND_API.G_MISS_CHAR THEN
31 	 NULL;
32        ELSE
33 	 l_DiscreteJob_rec.alternate_rout_designator := p_old_DiscreteJob_rec.alternate_rout_designator;
34       END IF;
35 
36       IF p_old_DiscreteJob_rec.attribute1 = FND_API.G_MISS_CHAR THEN
37 	 NULL;
38        ELSE
39 	 l_DiscreteJob_rec.attribute1 := p_old_DiscreteJob_rec.attribute1;
40       END IF;
41 
42       IF p_old_DiscreteJob_rec.attribute10 = FND_API.G_MISS_CHAR THEN
43 	 NULL;
44        ELSE
45 	 l_DiscreteJob_rec.attribute10 := p_old_DiscreteJob_rec.attribute10;
46       END IF;
47 
48       IF p_old_DiscreteJob_rec.attribute11 = FND_API.G_MISS_CHAR THEN
49 	 NULL;
50        ELSE
51 	 l_DiscreteJob_rec.attribute11 := p_old_DiscreteJob_rec.attribute11;
52       END IF;
53 
54       IF p_old_DiscreteJob_rec.attribute12 = FND_API.G_MISS_CHAR THEN
55 	 NULL;
56        ELSE
57 	 l_DiscreteJob_rec.attribute12 := p_old_DiscreteJob_rec.attribute12;
58       END IF;
59 
60       IF p_old_DiscreteJob_rec.attribute13 = FND_API.G_MISS_CHAR THEN
61 	 NULL;
62        ELSE
63 	 l_DiscreteJob_rec.attribute13 := p_old_DiscreteJob_rec.attribute13;
64       END IF;
65 
66       IF p_old_DiscreteJob_rec.attribute14 = FND_API.G_MISS_CHAR THEN
67 	 NULL;
68        ELSE
69 	 l_DiscreteJob_rec.attribute14 := p_old_DiscreteJob_rec.attribute14;
70       END IF;
71 
72       IF p_old_DiscreteJob_rec.attribute15 = FND_API.G_MISS_CHAR THEN
73 	 NULL;
74        ELSE
75 	 l_DiscreteJob_rec.attribute15 := p_old_DiscreteJob_rec.attribute15;
76       END IF;
77 
78       IF p_old_DiscreteJob_rec.attribute2 = FND_API.G_MISS_CHAR THEN
79 	 NULL;
80        ELSE
81 	 l_DiscreteJob_rec.attribute2 := p_old_DiscreteJob_rec.attribute2;
82       END IF;
83 
84       IF p_old_DiscreteJob_rec.attribute3 = FND_API.G_MISS_CHAR THEN
85 	 NULL;
86        ELSE
87 	 l_DiscreteJob_rec.attribute3 := p_old_DiscreteJob_rec.attribute3;
88       END IF;
89 
90       IF p_old_DiscreteJob_rec.attribute4 = FND_API.G_MISS_CHAR THEN
91 	 NULL;
92        ELSE
93 	 l_DiscreteJob_rec.attribute4 := p_old_DiscreteJob_rec.attribute4;
94       END IF;
95 
96       IF p_old_DiscreteJob_rec.attribute5 = FND_API.G_MISS_CHAR THEN
97 	 NULL;
98        ELSE
99 	 l_DiscreteJob_rec.attribute5 := p_old_DiscreteJob_rec.attribute5;
100       END IF;
101 
102       IF p_old_DiscreteJob_rec.attribute6 = FND_API.G_MISS_CHAR THEN
103 	 NULL;
104        ELSE
105 	 l_DiscreteJob_rec.attribute6 := p_old_DiscreteJob_rec.attribute6;
106       END IF;
107 
108       IF p_old_DiscreteJob_rec.attribute7 = FND_API.G_MISS_CHAR THEN
109 	 NULL;
110        ELSE
111 	 l_DiscreteJob_rec.attribute7 := p_old_DiscreteJob_rec.attribute7;
112       END IF;
113 
114       IF p_old_DiscreteJob_rec.attribute8 = FND_API.G_MISS_CHAR THEN
115 	 NULL;
116        ELSE
117 	 l_DiscreteJob_rec.attribute8 := p_old_DiscreteJob_rec.attribute8;
118       END IF;
119 
120       IF p_old_DiscreteJob_rec.attribute9 = FND_API.G_MISS_CHAR THEN
121 	 NULL;
122        ELSE
123 	 l_DiscreteJob_rec.attribute9 := p_old_DiscreteJob_rec.attribute9;
124       END IF;
125 
126       IF p_old_DiscreteJob_rec.attribute_category = FND_API.G_MISS_CHAR THEN
127 	 NULL;
128        ELSE
129 	 l_DiscreteJob_rec.attribute_category := p_old_DiscreteJob_rec.attribute_category;
130       END IF;
131 
132       IF p_old_DiscreteJob_rec.bom_reference_id = FND_API.G_MISS_NUM THEN
133 	 NULL;
134        ELSE
135 	 l_DiscreteJob_rec.bom_reference_id := p_old_DiscreteJob_rec.bom_reference_id;
136       END IF;
137 
138       IF p_old_DiscreteJob_rec.bom_revision = FND_API.G_MISS_CHAR THEN
139 	 NULL;
140        ELSE
141 	 l_DiscreteJob_rec.bom_revision := p_old_DiscreteJob_rec.bom_revision;
142       END IF;
143 
144       IF p_old_DiscreteJob_rec.bom_revision_date = FND_API.G_MISS_DATE THEN
145 	 NULL;
146        ELSE
147 	 l_DiscreteJob_rec.bom_revision_date := p_old_DiscreteJob_rec.bom_revision_date;
148       END IF;
149 
150       IF p_old_DiscreteJob_rec.build_sequence = FND_API.G_MISS_NUM THEN
151 	 NULL;
152        ELSE
153 	 l_DiscreteJob_rec.build_sequence := p_old_DiscreteJob_rec.build_sequence;
154       END IF;
155 
156       IF p_old_DiscreteJob_rec.class_code = FND_API.G_MISS_CHAR THEN
157 	 NULL;
158        ELSE
159 	 l_DiscreteJob_rec.class_code := p_old_DiscreteJob_rec.class_code;
160       END IF;
161 
162       IF p_old_DiscreteJob_rec.common_bom_sequence_id = FND_API.G_MISS_NUM THEN
163 	 NULL;
164        ELSE
165 	 l_DiscreteJob_rec.common_bom_sequence_id := p_old_DiscreteJob_rec.common_bom_sequence_id;
166       END IF;
167 
168       IF p_old_DiscreteJob_rec.common_rout_sequence_id = FND_API.G_MISS_NUM THEN
169 	 NULL;
170        ELSE
171 	 l_DiscreteJob_rec.common_rout_sequence_id := p_old_DiscreteJob_rec.common_rout_sequence_id;
172       END IF;
173 
174       IF p_old_DiscreteJob_rec.completion_locator_id = FND_API.G_MISS_NUM THEN
175 	 NULL;
176        ELSE
177 	 l_DiscreteJob_rec.completion_locator_id := p_old_DiscreteJob_rec.completion_locator_id;
178       END IF;
179 
180       IF p_old_DiscreteJob_rec.completion_subinventory = FND_API.G_MISS_CHAR THEN
181 	 NULL;
182        ELSE
183 	 l_DiscreteJob_rec.completion_subinventory := p_old_DiscreteJob_rec.completion_subinventory;
184       END IF;
185 
186       IF p_old_DiscreteJob_rec.created_by = FND_API.G_MISS_NUM THEN
187 	 NULL;
188        ELSE
189 	 l_DiscreteJob_rec.created_by := p_old_DiscreteJob_rec.created_by;
190       END IF;
191 
192       IF p_old_DiscreteJob_rec.creation_date = FND_API.G_MISS_DATE THEN
193  	 NULL;
194        ELSE
195 	 l_DiscreteJob_rec.creation_date := p_old_DiscreteJob_rec.creation_date;
196       END IF;
197 
198       IF p_old_DiscreteJob_rec.date_closed = FND_API.G_MISS_DATE THEN
199  	 NULL;
200        ELSE
201 	 l_DiscreteJob_rec.date_closed := p_old_DiscreteJob_rec.date_closed;
202       END IF;
203 
204       IF p_old_DiscreteJob_rec.date_completed = FND_API.G_MISS_DATE THEN
205  	 NULL;
206        ELSE
207 	 l_DiscreteJob_rec.date_completed := p_old_DiscreteJob_rec.date_completed;
208       END IF;
209 
210       IF p_old_DiscreteJob_rec.date_released = FND_API.G_MISS_DATE THEN
211  	 NULL;
212        ELSE
213 	 l_DiscreteJob_rec.date_released := p_old_DiscreteJob_rec.date_released;
214       END IF;
215 
216       IF p_old_DiscreteJob_rec.demand_class = FND_API.G_MISS_CHAR THEN
217  	 NULL;
218        ELSE
219 	 l_DiscreteJob_rec.demand_class := p_old_DiscreteJob_rec.demand_class;
220       END IF;
221 
222       IF p_old_DiscreteJob_rec.description = FND_API.G_MISS_CHAR THEN
223  	 NULL;
224        ELSE
225 	 l_DiscreteJob_rec.description := p_old_DiscreteJob_rec.description;
226       END IF;
227 
228       IF p_old_DiscreteJob_rec.firm_planned_flag = FND_API.G_MISS_NUM THEN
229  	 NULL;
230        ELSE
231 	 l_DiscreteJob_rec.firm_planned_flag := p_old_DiscreteJob_rec.firm_planned_flag;
232       END IF;
233 
234       IF p_old_DiscreteJob_rec.job_type = FND_API.G_MISS_NUM THEN
235  	 NULL;
236        ELSE
237 	 l_DiscreteJob_rec.job_type := p_old_DiscreteJob_rec.job_type;
238       END IF;
239 
240       IF p_old_DiscreteJob_rec.kanban_card_id = FND_API.G_MISS_NUM THEN
241  	 NULL;
242        ELSE
243 	 l_DiscreteJob_rec.kanban_card_id := p_old_DiscreteJob_rec.kanban_card_id;
244       END IF;
245 
246       IF p_old_DiscreteJob_rec.last_updated_by = FND_API.G_MISS_NUM THEN
247  	 NULL;
248        ELSE
249 	 l_DiscreteJob_rec.last_updated_by := p_old_DiscreteJob_rec.last_updated_by;
250       END IF;
251 
252       IF p_old_DiscreteJob_rec.last_update_date = FND_API.G_MISS_DATE THEN
253  	 NULL;
254        ELSE
255 	 l_DiscreteJob_rec.last_update_date := p_old_DiscreteJob_rec.last_update_date;
256       END IF;
257 
258       IF p_old_DiscreteJob_rec.last_update_login = FND_API.G_MISS_NUM THEN
259  	 NULL;
260        ELSE
261 	 l_DiscreteJob_rec.last_update_login := p_old_DiscreteJob_rec.last_update_login;
262       END IF;
263 
264       IF p_old_DiscreteJob_rec.line_id = FND_API.G_MISS_NUM THEN
265  	 NULL;
266        ELSE
267 	 l_DiscreteJob_rec.line_id := p_old_DiscreteJob_rec.line_id;
268       END IF;
269 
270       IF p_old_DiscreteJob_rec.lot_number = FND_API.G_MISS_CHAR THEN
271  	 NULL;
272        ELSE
273 	 l_DiscreteJob_rec.lot_number := p_old_DiscreteJob_rec.lot_number;
274       END IF;
275 
276       IF p_old_DiscreteJob_rec.material_account = FND_API.G_MISS_NUM THEN
277  	 NULL;
278        ELSE
279 	 l_DiscreteJob_rec.material_account := p_old_DiscreteJob_rec.material_account;
280       END IF;
281 
282       IF p_old_DiscreteJob_rec.material_overhead_account = FND_API.G_MISS_NUM THEN
283  	 NULL;
284        ELSE
285 	 l_DiscreteJob_rec.material_overhead_account := p_old_DiscreteJob_rec.material_overhead_account;
286       END IF;
287 
288       IF p_old_DiscreteJob_rec.material_variance_account = FND_API.G_MISS_NUM THEN
289  	 NULL;
290        ELSE
291 	 l_DiscreteJob_rec.material_variance_account := p_old_DiscreteJob_rec.material_variance_account;
292       END IF;
293 
294       IF p_old_DiscreteJob_rec.mps_net_quantity = FND_API.G_MISS_NUM THEN
295  	 NULL;
296        ELSE
297 	 l_DiscreteJob_rec.mps_net_quantity := p_old_DiscreteJob_rec.mps_net_quantity;
298       END IF;
299 
300       IF p_old_DiscreteJob_rec.mps_scheduled_cpl_date = FND_API.G_MISS_DATE THEN
301  	 NULL;
302        ELSE
303 	 l_DiscreteJob_rec.mps_scheduled_cpl_date := p_old_DiscreteJob_rec.mps_scheduled_cpl_date;
304       END IF;
305 
306       IF p_old_DiscreteJob_rec.net_quantity = FND_API.G_MISS_NUM THEN
307  	 NULL;
308        ELSE
309 	 l_DiscreteJob_rec.net_quantity := p_old_DiscreteJob_rec.net_quantity;
310       END IF;
311 
312       IF p_old_DiscreteJob_rec.organization_id = FND_API.G_MISS_NUM THEN
313  	 NULL;
314        ELSE
315 	 l_DiscreteJob_rec.organization_id := p_old_DiscreteJob_rec.organization_id;
316       END IF;
317 
318       IF p_old_DiscreteJob_rec.osp_account = FND_API.G_MISS_NUM THEN
319  	 NULL;
320        ELSE
321 	 l_DiscreteJob_rec.osp_account := p_old_DiscreteJob_rec.osp_account;
322       END IF;
323 
324       IF p_old_DiscreteJob_rec.osp_variance_account = FND_API.G_MISS_NUM THEN
325  	 NULL;
326        ELSE
327 	 l_DiscreteJob_rec.osp_variance_account := p_old_DiscreteJob_rec.osp_variance_account;
328       END IF;
329 
330       IF p_old_DiscreteJob_rec.overcpl_tolerance_type = FND_API.G_MISS_NUM THEN
331  	 NULL;
332        ELSE
333 	 l_DiscreteJob_rec.overcpl_tolerance_type := p_old_DiscreteJob_rec.overcpl_tolerance_type;
334       END IF;
335 
336       IF p_old_DiscreteJob_rec.overcpl_tolerance_value = FND_API.G_MISS_NUM THEN
337  	 NULL;
338        ELSE
339 	 l_DiscreteJob_rec.overcpl_tolerance_value := p_old_DiscreteJob_rec.overcpl_tolerance_value;
340       END IF;
341 
342       IF p_old_DiscreteJob_rec.overhead_account = FND_API.G_MISS_NUM THEN
343  	 NULL;
344        ELSE
345 	 l_DiscreteJob_rec.overhead_account := p_old_DiscreteJob_rec.overhead_account;
346       END IF;
347 
348       IF p_old_DiscreteJob_rec.overhead_variance_account = FND_API.G_MISS_NUM THEN
349  	 NULL;
350        ELSE
351 	 l_DiscreteJob_rec.overhead_variance_account := p_old_DiscreteJob_rec.overhead_variance_account;
352       END IF;
353 
354       IF p_old_DiscreteJob_rec.primary_item_id = FND_API.G_MISS_NUM THEN
355  	 NULL;
356        ELSE
357 	 l_DiscreteJob_rec.primary_item_id := p_old_DiscreteJob_rec.primary_item_id;
358       END IF;
359 
360       IF p_old_DiscreteJob_rec.program_application_id = FND_API.G_MISS_NUM THEN
361  	 NULL;
362        ELSE
363 	 l_DiscreteJob_rec.program_application_id := p_old_DiscreteJob_rec.program_application_id;
364       END IF;
365 
366       IF p_old_DiscreteJob_rec.program_id = FND_API.G_MISS_NUM THEN
367  	 NULL;
368        ELSE
369 	 l_DiscreteJob_rec.program_id := p_old_DiscreteJob_rec.program_id;
370       END IF;
371 
375 	 l_DiscreteJob_rec.program_update_date := p_old_DiscreteJob_rec.program_update_date;
372       IF p_old_DiscreteJob_rec.program_update_date = FND_API.G_MISS_DATE THEN
373  	 NULL;
374        ELSE
376       END IF;
377 
381 	 l_DiscreteJob_rec.project_costed := p_old_DiscreteJob_rec.project_costed;
378       IF p_old_DiscreteJob_rec.project_costed = FND_API.G_MISS_NUM THEN
379  	 NULL;
380        ELSE
382       END IF;
383 
384       IF p_old_DiscreteJob_rec.project_id = FND_API.G_MISS_NUM THEN
385  	 NULL;
386        ELSE
387 	 l_DiscreteJob_rec.project_id := p_old_DiscreteJob_rec.project_id;
388       END IF;
389 
390       IF p_old_DiscreteJob_rec.quantity_completed = FND_API.G_MISS_NUM THEN
391  	 NULL;
392        ELSE
393 	 l_DiscreteJob_rec.quantity_completed := p_old_DiscreteJob_rec.quantity_completed;
394       END IF;
395 
396       IF p_old_DiscreteJob_rec.quantity_scrapped = FND_API.G_MISS_NUM THEN
397  	 NULL;
398        ELSE
399 	 l_DiscreteJob_rec.quantity_scrapped := p_old_DiscreteJob_rec.quantity_scrapped;
400       END IF;
401 
402       IF p_old_DiscreteJob_rec.request_id = FND_API.G_MISS_NUM THEN
403  	 NULL;
404        ELSE
405 	 l_DiscreteJob_rec.request_id := p_old_DiscreteJob_rec.request_id;
406       END IF;
407 
408       IF p_old_DiscreteJob_rec.resource_account = FND_API.G_MISS_NUM THEN
409  	 NULL;
410        ELSE
411 	 l_DiscreteJob_rec.resource_account := p_old_DiscreteJob_rec.resource_account;
412       END IF;
413 
414       IF p_old_DiscreteJob_rec.resource_variance_account = FND_API.G_MISS_NUM THEN
415  	 NULL;
416        ELSE
417 	 l_DiscreteJob_rec.resource_variance_account := p_old_DiscreteJob_rec.resource_variance_account;
418       END IF;
419 
420       IF p_old_DiscreteJob_rec.routing_reference_id = FND_API.G_MISS_NUM THEN
421  	 NULL;
422        ELSE
423 	 l_DiscreteJob_rec.routing_reference_id := p_old_DiscreteJob_rec.routing_reference_id;
424       END IF;
425 
426       IF p_old_DiscreteJob_rec.routing_revision = FND_API.G_MISS_CHAR THEN
427  	 NULL;
428        ELSE
429 	 l_DiscreteJob_rec.routing_revision := p_old_DiscreteJob_rec.routing_revision;
430       END IF;
431 
432       IF p_old_DiscreteJob_rec.routing_revision_date = FND_API.G_MISS_DATE THEN
433  	 NULL;
434        ELSE
435 	 l_DiscreteJob_rec.routing_revision_date := p_old_DiscreteJob_rec.routing_revision_date;
436       END IF;
437 
438       IF p_old_DiscreteJob_rec.scheduled_completion_date = FND_API.G_MISS_DATE THEN
439  	 NULL;
440        ELSE
441 	 l_DiscreteJob_rec.scheduled_completion_date := p_old_DiscreteJob_rec.scheduled_completion_date;
442       END IF;
443 
444       IF p_old_DiscreteJob_rec.scheduled_start_date = FND_API.G_MISS_DATE THEN
445  	 NULL;
446        ELSE
447 	 l_DiscreteJob_rec.scheduled_start_date := p_old_DiscreteJob_rec.scheduled_start_date;
448       END IF;
449 
450       IF p_old_DiscreteJob_rec.schedule_group_id = FND_API.G_MISS_NUM THEN
451  	 NULL;
452        ELSE
453 	 l_DiscreteJob_rec.schedule_group_id := p_old_DiscreteJob_rec.schedule_group_id;
454       END IF;
455 
456       IF p_old_DiscreteJob_rec.source_code = FND_API.G_MISS_CHAR THEN
457  	 NULL;
458        ELSE
459 	 l_DiscreteJob_rec.source_code := p_old_DiscreteJob_rec.source_code;
460       END IF;
461 
462       IF p_old_DiscreteJob_rec.source_line_id = FND_API.G_MISS_NUM THEN
463  	 NULL;
464        ELSE
465 	 l_DiscreteJob_rec.source_line_id := p_old_DiscreteJob_rec.source_line_id;
466       END IF;
467 
468       IF p_old_DiscreteJob_rec.start_quantity = FND_API.G_MISS_NUM THEN
469  	 NULL;
470        ELSE
471 	 l_DiscreteJob_rec.start_quantity := p_old_DiscreteJob_rec.start_quantity;
472       END IF;
473 
474       IF p_old_DiscreteJob_rec.status_type = FND_API.G_MISS_NUM THEN
475  	 NULL;
476        ELSE
477 	 l_DiscreteJob_rec.status_type := p_old_DiscreteJob_rec.status_type;
478       END IF;
479 
480       IF p_old_DiscreteJob_rec.std_cost_adj_account = FND_API.G_MISS_NUM THEN
481  	 NULL;
482        ELSE
483 	 l_DiscreteJob_rec.std_cost_adj_account := p_old_DiscreteJob_rec.std_cost_adj_account;
484       END IF;
485 
486       IF p_old_DiscreteJob_rec.task_id = FND_API.G_MISS_NUM THEN
487  	 NULL;
488        ELSE
489 	 l_DiscreteJob_rec.task_id := p_old_DiscreteJob_rec.task_id;
490       END IF;
491 
492       IF p_old_DiscreteJob_rec.wip_entity_id = FND_API.G_MISS_NUM THEN
493  	 NULL;
494        ELSE
495 	 l_DiscreteJob_rec.wip_entity_id := p_old_DiscreteJob_rec.wip_entity_id;
496       END IF;
497 
498       IF p_old_DiscreteJob_rec.wip_supply_type = FND_API.G_MISS_NUM THEN
499  	 NULL;
500        ELSE
501 	 l_DiscreteJob_rec.wip_supply_type := p_old_DiscreteJob_rec.wip_supply_type;
502       END IF;
503 
504     ELSE
505 
506       IF l_DiscreteJob_rec.alternate_bom_designator = FND_API.G_MISS_CHAR THEN
507 	 l_DiscreteJob_rec.alternate_bom_designator := p_old_DiscreteJob_rec.alternate_bom_designator;
508       END IF;
509 
510       IF l_DiscreteJob_rec.alternate_rout_designator = FND_API.G_MISS_CHAR THEN
511 	 l_DiscreteJob_rec.alternate_rout_designator := p_old_DiscreteJob_rec.alternate_rout_designator;
512       END IF;
513 
514       IF l_DiscreteJob_rec.attribute1 = FND_API.G_MISS_CHAR THEN
515 	 l_DiscreteJob_rec.attribute1 := p_old_DiscreteJob_rec.attribute1;
516       END IF;
517 
518       IF l_DiscreteJob_rec.attribute10 = FND_API.G_MISS_CHAR THEN
519 	 l_DiscreteJob_rec.attribute10 := p_old_DiscreteJob_rec.attribute10;
520       END IF;
521 
522       IF l_DiscreteJob_rec.attribute11 = FND_API.G_MISS_CHAR THEN
523 	 l_DiscreteJob_rec.attribute11 := p_old_DiscreteJob_rec.attribute11;
524       END IF;
525 
526       IF l_DiscreteJob_rec.attribute12 = FND_API.G_MISS_CHAR THEN
527 	 l_DiscreteJob_rec.attribute12 := p_old_DiscreteJob_rec.attribute12;
528       END IF;
529 
533 
530       IF l_DiscreteJob_rec.attribute13 = FND_API.G_MISS_CHAR THEN
531 	 l_DiscreteJob_rec.attribute13 := p_old_DiscreteJob_rec.attribute13;
532       END IF;
534       IF l_DiscreteJob_rec.attribute14 = FND_API.G_MISS_CHAR THEN
535 	 l_DiscreteJob_rec.attribute14 := p_old_DiscreteJob_rec.attribute14;
536       END IF;
537 
538       IF l_DiscreteJob_rec.attribute15 = FND_API.G_MISS_CHAR THEN
539 	 l_DiscreteJob_rec.attribute15 := p_old_DiscreteJob_rec.attribute15;
540       END IF;
541 
542       IF l_DiscreteJob_rec.attribute2 = FND_API.G_MISS_CHAR THEN
543 	 l_DiscreteJob_rec.attribute2 := p_old_DiscreteJob_rec.attribute2;
544       END IF;
545 
546       IF l_DiscreteJob_rec.attribute3 = FND_API.G_MISS_CHAR THEN
550       IF l_DiscreteJob_rec.attribute4 = FND_API.G_MISS_CHAR THEN
547 	 l_DiscreteJob_rec.attribute3 := p_old_DiscreteJob_rec.attribute3;
548       END IF;
549 
551 	 l_DiscreteJob_rec.attribute4 := p_old_DiscreteJob_rec.attribute4;
552       END IF;
553 
554       IF l_DiscreteJob_rec.attribute5 = FND_API.G_MISS_CHAR THEN
555 	 l_DiscreteJob_rec.attribute5 := p_old_DiscreteJob_rec.attribute5;
556       END IF;
557 
558       IF l_DiscreteJob_rec.attribute6 = FND_API.G_MISS_CHAR THEN
559 	 l_DiscreteJob_rec.attribute6 := p_old_DiscreteJob_rec.attribute6;
560       END IF;
561 
562       IF l_DiscreteJob_rec.attribute7 = FND_API.G_MISS_CHAR THEN
563 	 l_DiscreteJob_rec.attribute7 := p_old_DiscreteJob_rec.attribute7;
564       END IF;
565 
566       IF l_DiscreteJob_rec.attribute8 = FND_API.G_MISS_CHAR THEN
567 	 l_DiscreteJob_rec.attribute8 := p_old_DiscreteJob_rec.attribute8;
568       END IF;
569 
570       IF l_DiscreteJob_rec.attribute9 = FND_API.G_MISS_CHAR THEN
571 	 l_DiscreteJob_rec.attribute9 := p_old_DiscreteJob_rec.attribute9;
572       END IF;
573 
574       IF l_DiscreteJob_rec.attribute_category = FND_API.G_MISS_CHAR THEN
575 	 l_DiscreteJob_rec.attribute_category := p_old_DiscreteJob_rec.attribute_category;
576       END IF;
577 
578       IF l_DiscreteJob_rec.bom_reference_id = FND_API.G_MISS_NUM THEN
579 	 l_DiscreteJob_rec.bom_reference_id := p_old_DiscreteJob_rec.bom_reference_id;
580       END IF;
581 
582       IF l_DiscreteJob_rec.bom_revision = FND_API.G_MISS_CHAR THEN
583 	 l_DiscreteJob_rec.bom_revision := p_old_DiscreteJob_rec.bom_revision;
584       END IF;
585 
586       IF l_DiscreteJob_rec.bom_revision_date = FND_API.G_MISS_DATE THEN
587 	 l_DiscreteJob_rec.bom_revision_date := p_old_DiscreteJob_rec.bom_revision_date;
588       END IF;
589 
590       IF l_DiscreteJob_rec.build_sequence = FND_API.G_MISS_NUM THEN
591 	 l_DiscreteJob_rec.build_sequence := p_old_DiscreteJob_rec.build_sequence;
592       END IF;
593 
594       IF l_DiscreteJob_rec.class_code = FND_API.G_MISS_CHAR THEN
595 	 l_DiscreteJob_rec.class_code := p_old_DiscreteJob_rec.class_code;
596       END IF;
597 
598       IF l_DiscreteJob_rec.common_bom_sequence_id = FND_API.G_MISS_NUM THEN
599 	 l_DiscreteJob_rec.common_bom_sequence_id := p_old_DiscreteJob_rec.common_bom_sequence_id;
600       END IF;
601 
602       IF l_DiscreteJob_rec.common_rout_sequence_id = FND_API.G_MISS_NUM THEN
603 	 l_DiscreteJob_rec.common_rout_sequence_id := p_old_DiscreteJob_rec.common_rout_sequence_id;
604       END IF;
605 
606       IF l_DiscreteJob_rec.completion_locator_id = FND_API.G_MISS_NUM THEN
607 	 l_DiscreteJob_rec.completion_locator_id := p_old_DiscreteJob_rec.completion_locator_id;
608       END IF;
609 
610       IF l_DiscreteJob_rec.completion_subinventory = FND_API.G_MISS_CHAR THEN
611 	 l_DiscreteJob_rec.completion_subinventory := p_old_DiscreteJob_rec.completion_subinventory;
612       END IF;
613 
614       IF l_DiscreteJob_rec.created_by = FND_API.G_MISS_NUM THEN
615 	 l_DiscreteJob_rec.created_by := p_old_DiscreteJob_rec.created_by;
616       END IF;
617 
618       IF l_DiscreteJob_rec.creation_date = FND_API.G_MISS_DATE THEN
619 	 l_DiscreteJob_rec.creation_date := p_old_DiscreteJob_rec.creation_date;
620       END IF;
621 
622       IF l_DiscreteJob_rec.date_closed = FND_API.G_MISS_DATE THEN
623 	 l_DiscreteJob_rec.date_closed := p_old_DiscreteJob_rec.date_closed;
624       END IF;
625 
626       IF l_DiscreteJob_rec.date_completed = FND_API.G_MISS_DATE THEN
627 	 l_DiscreteJob_rec.date_completed := p_old_DiscreteJob_rec.date_completed;
628       END IF;
629 
630       IF l_DiscreteJob_rec.date_released = FND_API.G_MISS_DATE THEN
631 	 l_DiscreteJob_rec.date_released := p_old_DiscreteJob_rec.date_released;
632       END IF;
633 
634       IF l_DiscreteJob_rec.demand_class = FND_API.G_MISS_CHAR THEN
635 	 l_DiscreteJob_rec.demand_class := p_old_DiscreteJob_rec.demand_class;
636       END IF;
637 
638       IF l_DiscreteJob_rec.description = FND_API.G_MISS_CHAR THEN
639 	 l_DiscreteJob_rec.description := p_old_DiscreteJob_rec.description;
645 
640       END IF;
641 
642       IF l_DiscreteJob_rec.firm_planned_flag = FND_API.G_MISS_NUM THEN
643 	 l_DiscreteJob_rec.firm_planned_flag := p_old_DiscreteJob_rec.firm_planned_flag;
644       END IF;
646       IF l_DiscreteJob_rec.job_type = FND_API.G_MISS_NUM THEN
647 	 l_DiscreteJob_rec.job_type := p_old_DiscreteJob_rec.job_type;
648       END IF;
649 
650       IF l_DiscreteJob_rec.kanban_card_id = FND_API.G_MISS_NUM THEN
651 	 l_DiscreteJob_rec.kanban_card_id := p_old_DiscreteJob_rec.kanban_card_id;
652       END IF;
653 
654       IF l_DiscreteJob_rec.last_updated_by = FND_API.G_MISS_NUM THEN
655 	 l_DiscreteJob_rec.last_updated_by := p_old_DiscreteJob_rec.last_updated_by;
656       END IF;
657 
658       IF l_DiscreteJob_rec.last_update_date = FND_API.G_MISS_DATE THEN
659 	 l_DiscreteJob_rec.last_update_date := p_old_DiscreteJob_rec.last_update_date;
660       END IF;
661 
662       IF l_DiscreteJob_rec.last_update_login = FND_API.G_MISS_NUM THEN
663 	 l_DiscreteJob_rec.last_update_login := p_old_DiscreteJob_rec.last_update_login;
664       END IF;
665 
666       IF l_DiscreteJob_rec.line_id = FND_API.G_MISS_NUM THEN
667 	 l_DiscreteJob_rec.line_id := p_old_DiscreteJob_rec.line_id;
668       END IF;
669 
670       IF l_DiscreteJob_rec.lot_number = FND_API.G_MISS_CHAR THEN
671 	 l_DiscreteJob_rec.lot_number := p_old_DiscreteJob_rec.lot_number;
672       END IF;
673 
674       IF l_DiscreteJob_rec.material_account = FND_API.G_MISS_NUM THEN
675 	 l_DiscreteJob_rec.material_account := p_old_DiscreteJob_rec.material_account;
676       END IF;
677 
678       IF l_DiscreteJob_rec.material_overhead_account = FND_API.G_MISS_NUM THEN
679 	 l_DiscreteJob_rec.material_overhead_account := p_old_DiscreteJob_rec.material_overhead_account;
680       END IF;
681 
682       IF l_DiscreteJob_rec.material_variance_account = FND_API.G_MISS_NUM THEN
683 	 l_DiscreteJob_rec.material_variance_account := p_old_DiscreteJob_rec.material_variance_account;
684       END IF;
685 
686       IF l_DiscreteJob_rec.mps_net_quantity = FND_API.G_MISS_NUM THEN
687 	 l_DiscreteJob_rec.mps_net_quantity := p_old_DiscreteJob_rec.mps_net_quantity;
688       END IF;
689 
690       IF l_DiscreteJob_rec.mps_scheduled_cpl_date = FND_API.G_MISS_DATE THEN
691 	 l_DiscreteJob_rec.mps_scheduled_cpl_date := p_old_DiscreteJob_rec.mps_scheduled_cpl_date;
692       END IF;
693 
694       IF l_DiscreteJob_rec.net_quantity = FND_API.G_MISS_NUM THEN
695 	 l_DiscreteJob_rec.net_quantity := p_old_DiscreteJob_rec.net_quantity;
696       END IF;
697 
698       IF l_DiscreteJob_rec.organization_id = FND_API.G_MISS_NUM THEN
699 	 l_DiscreteJob_rec.organization_id := p_old_DiscreteJob_rec.organization_id;
700       END IF;
701 
702       IF l_DiscreteJob_rec.osp_account = FND_API.G_MISS_NUM THEN
703 	 l_DiscreteJob_rec.osp_account := p_old_DiscreteJob_rec.osp_account;
704       END IF;
705 
706       IF l_DiscreteJob_rec.osp_variance_account = FND_API.G_MISS_NUM THEN
707 	 l_DiscreteJob_rec.osp_variance_account := p_old_DiscreteJob_rec.osp_variance_account;
708       END IF;
709 
710       IF l_DiscreteJob_rec.overcpl_tolerance_type = FND_API.G_MISS_NUM THEN
711 	 l_DiscreteJob_rec.overcpl_tolerance_type := p_old_DiscreteJob_rec.overcpl_tolerance_type;
712       END IF;
713 
714       IF l_DiscreteJob_rec.overcpl_tolerance_value = FND_API.G_MISS_NUM THEN
715 	 l_DiscreteJob_rec.overcpl_tolerance_value := p_old_DiscreteJob_rec.overcpl_tolerance_value;
716       END IF;
717 
718       IF l_DiscreteJob_rec.overhead_account = FND_API.G_MISS_NUM THEN
719 	 l_DiscreteJob_rec.overhead_account := p_old_DiscreteJob_rec.overhead_account;
720       END IF;
721 
722       IF l_DiscreteJob_rec.overhead_variance_account = FND_API.G_MISS_NUM THEN
723 	 l_DiscreteJob_rec.overhead_variance_account := p_old_DiscreteJob_rec.overhead_variance_account;
724       END IF;
725 
726       IF l_DiscreteJob_rec.primary_item_id = FND_API.G_MISS_NUM THEN
727 	 l_DiscreteJob_rec.primary_item_id := p_old_DiscreteJob_rec.primary_item_id;
728       END IF;
729 
730       IF l_DiscreteJob_rec.program_application_id = FND_API.G_MISS_NUM THEN
731 	 l_DiscreteJob_rec.program_application_id := p_old_DiscreteJob_rec.program_application_id;
732       END IF;
733 
734       IF l_DiscreteJob_rec.program_id = FND_API.G_MISS_NUM THEN
735 	 l_DiscreteJob_rec.program_id := p_old_DiscreteJob_rec.program_id;
736       END IF;
737 
738       IF l_DiscreteJob_rec.program_update_date = FND_API.G_MISS_DATE THEN
739 	 l_DiscreteJob_rec.program_update_date := p_old_DiscreteJob_rec.program_update_date;
740       END IF;
741 
742       IF l_DiscreteJob_rec.project_costed = FND_API.G_MISS_NUM THEN
743 	 l_DiscreteJob_rec.project_costed := p_old_DiscreteJob_rec.project_costed;
744       END IF;
745 
746       IF l_DiscreteJob_rec.project_id = FND_API.G_MISS_NUM THEN
750       IF l_DiscreteJob_rec.quantity_completed = FND_API.G_MISS_NUM THEN
747 	 l_DiscreteJob_rec.project_id := p_old_DiscreteJob_rec.project_id;
748       END IF;
749 
751 	 l_DiscreteJob_rec.quantity_completed := p_old_DiscreteJob_rec.quantity_completed;
752       END IF;
753 
754       IF l_DiscreteJob_rec.quantity_scrapped = FND_API.G_MISS_NUM THEN
755 	 l_DiscreteJob_rec.quantity_scrapped := p_old_DiscreteJob_rec.quantity_scrapped;
756       END IF;
757 
758       IF l_DiscreteJob_rec.request_id = FND_API.G_MISS_NUM THEN
759 	 l_DiscreteJob_rec.request_id := p_old_DiscreteJob_rec.request_id;
760       END IF;
761 
762       IF l_DiscreteJob_rec.resource_account = FND_API.G_MISS_NUM THEN
763 	 l_DiscreteJob_rec.resource_account := p_old_DiscreteJob_rec.resource_account;
764       END IF;
765 
766       IF l_DiscreteJob_rec.resource_variance_account = FND_API.G_MISS_NUM THEN
767 	 l_DiscreteJob_rec.resource_variance_account := p_old_DiscreteJob_rec.resource_variance_account;
768       END IF;
769 
770       IF l_DiscreteJob_rec.routing_reference_id = FND_API.G_MISS_NUM THEN
771 	 l_DiscreteJob_rec.routing_reference_id := p_old_DiscreteJob_rec.routing_reference_id;
772       END IF;
773 
774       IF l_DiscreteJob_rec.routing_revision = FND_API.G_MISS_CHAR THEN
775 	 l_DiscreteJob_rec.routing_revision := p_old_DiscreteJob_rec.routing_revision;
776       END IF;
777 
778       IF l_DiscreteJob_rec.routing_revision_date = FND_API.G_MISS_DATE THEN
779 	 l_DiscreteJob_rec.routing_revision_date := p_old_DiscreteJob_rec.routing_revision_date;
780       END IF;
781 
782       IF l_DiscreteJob_rec.scheduled_completion_date = FND_API.G_MISS_DATE THEN
783 	 l_DiscreteJob_rec.scheduled_completion_date := p_old_DiscreteJob_rec.scheduled_completion_date;
784       END IF;
785 
786       IF l_DiscreteJob_rec.scheduled_start_date = FND_API.G_MISS_DATE THEN
787 	 l_DiscreteJob_rec.scheduled_start_date := p_old_DiscreteJob_rec.scheduled_start_date;
788       END IF;
789 
790       IF l_DiscreteJob_rec.schedule_group_id = FND_API.G_MISS_NUM THEN
791 	 l_DiscreteJob_rec.schedule_group_id := p_old_DiscreteJob_rec.schedule_group_id;
792       END IF;
793 
794       IF l_DiscreteJob_rec.source_code = FND_API.G_MISS_CHAR THEN
795 	 l_DiscreteJob_rec.source_code := p_old_DiscreteJob_rec.source_code;
796       END IF;
797 
798       IF l_DiscreteJob_rec.source_line_id = FND_API.G_MISS_NUM THEN
799 	 l_DiscreteJob_rec.source_line_id := p_old_DiscreteJob_rec.source_line_id;
800       END IF;
801 
802       IF l_DiscreteJob_rec.start_quantity = FND_API.G_MISS_NUM THEN
803 	 l_DiscreteJob_rec.start_quantity := p_old_DiscreteJob_rec.start_quantity;
804       END IF;
805 
806       IF l_DiscreteJob_rec.status_type = FND_API.G_MISS_NUM THEN
807 	 l_DiscreteJob_rec.status_type := p_old_DiscreteJob_rec.status_type;
808       END IF;
809 
810       IF l_DiscreteJob_rec.std_cost_adj_account = FND_API.G_MISS_NUM THEN
811 	 l_DiscreteJob_rec.std_cost_adj_account := p_old_DiscreteJob_rec.std_cost_adj_account;
812       END IF;
813 
814       IF l_DiscreteJob_rec.task_id = FND_API.G_MISS_NUM THEN
815 	 l_DiscreteJob_rec.task_id := p_old_DiscreteJob_rec.task_id;
816       END IF;
817 
818       IF l_DiscreteJob_rec.wip_entity_id = FND_API.G_MISS_NUM THEN
819 	 l_DiscreteJob_rec.wip_entity_id := p_old_DiscreteJob_rec.wip_entity_id;
820       END IF;
821 
822       IF l_DiscreteJob_rec.wip_supply_type = FND_API.G_MISS_NUM THEN
823 	 l_DiscreteJob_rec.wip_supply_type := p_old_DiscreteJob_rec.wip_supply_type;
824       END IF;
825 
826    END IF;
827   END IF;
828    RETURN l_DiscreteJob_rec;
829 
830 END Complete_Record;
831 
832 --  Function Convert_Miss_To_Null
833 
834 FUNCTION Convert_Miss_To_Null
835 (   p_DiscreteJob_rec               IN  WIP_Work_Order_PUB.Discretejob_Rec_Type
836 ) RETURN WIP_Work_Order_PUB.Discretejob_Rec_Type
837 IS
838 l_DiscreteJob_rec             WIP_Work_Order_PUB.Discretejob_Rec_Type := p_DiscreteJob_rec;
839 BEGIN
840 
841     IF l_DiscreteJob_rec.alternate_bom_designator = FND_API.G_MISS_CHAR THEN
842         l_DiscreteJob_rec.alternate_bom_designator := NULL;
843     END IF;
844 
845     IF l_DiscreteJob_rec.alternate_rout_designator = FND_API.G_MISS_CHAR THEN
846         l_DiscreteJob_rec.alternate_rout_designator := NULL;
847     END IF;
848 
849     IF l_DiscreteJob_rec.attribute1 = FND_API.G_MISS_CHAR THEN
850         l_DiscreteJob_rec.attribute1 := NULL;
851     END IF;
852 
853     IF l_DiscreteJob_rec.attribute10 = FND_API.G_MISS_CHAR THEN
857     IF l_DiscreteJob_rec.attribute11 = FND_API.G_MISS_CHAR THEN
854         l_DiscreteJob_rec.attribute10 := NULL;
855     END IF;
856 
858         l_DiscreteJob_rec.attribute11 := NULL;
859     END IF;
860 
861     IF l_DiscreteJob_rec.attribute12 = FND_API.G_MISS_CHAR THEN
862         l_DiscreteJob_rec.attribute12 := NULL;
866         l_DiscreteJob_rec.attribute13 := NULL;
863     END IF;
864 
865     IF l_DiscreteJob_rec.attribute13 = FND_API.G_MISS_CHAR THEN
867     END IF;
868 
869     IF l_DiscreteJob_rec.attribute14 = FND_API.G_MISS_CHAR THEN
870         l_DiscreteJob_rec.attribute14 := NULL;
871     END IF;
872 
873     IF l_DiscreteJob_rec.attribute15 = FND_API.G_MISS_CHAR THEN
874         l_DiscreteJob_rec.attribute15 := NULL;
875     END IF;
876 
877     IF l_DiscreteJob_rec.attribute2 = FND_API.G_MISS_CHAR THEN
878         l_DiscreteJob_rec.attribute2 := NULL;
879     END IF;
880 
881     IF l_DiscreteJob_rec.attribute3 = FND_API.G_MISS_CHAR THEN
882         l_DiscreteJob_rec.attribute3 := NULL;
883     END IF;
884 
885     IF l_DiscreteJob_rec.attribute4 = FND_API.G_MISS_CHAR THEN
886         l_DiscreteJob_rec.attribute4 := NULL;
887     END IF;
888 
889     IF l_DiscreteJob_rec.attribute5 = FND_API.G_MISS_CHAR THEN
890         l_DiscreteJob_rec.attribute5 := NULL;
891     END IF;
892 
893     IF l_DiscreteJob_rec.attribute6 = FND_API.G_MISS_CHAR THEN
894         l_DiscreteJob_rec.attribute6 := NULL;
895     END IF;
896 
897     IF l_DiscreteJob_rec.attribute7 = FND_API.G_MISS_CHAR THEN
898         l_DiscreteJob_rec.attribute7 := NULL;
899     END IF;
900 
901     IF l_DiscreteJob_rec.attribute8 = FND_API.G_MISS_CHAR THEN
902         l_DiscreteJob_rec.attribute8 := NULL;
903     END IF;
904 
905     IF l_DiscreteJob_rec.attribute9 = FND_API.G_MISS_CHAR THEN
906         l_DiscreteJob_rec.attribute9 := NULL;
907     END IF;
908 
909     IF l_DiscreteJob_rec.attribute_category = FND_API.G_MISS_CHAR THEN
910         l_DiscreteJob_rec.attribute_category := NULL;
911     END IF;
912 
913     IF l_DiscreteJob_rec.bom_reference_id = FND_API.G_MISS_NUM THEN
914         l_DiscreteJob_rec.bom_reference_id := NULL;
915     END IF;
916 
917     IF l_DiscreteJob_rec.bom_revision = FND_API.G_MISS_CHAR THEN
918         l_DiscreteJob_rec.bom_revision := NULL;
919     END IF;
920 
921     IF l_DiscreteJob_rec.bom_revision_date = FND_API.G_MISS_DATE THEN
922         l_DiscreteJob_rec.bom_revision_date := NULL;
923     END IF;
924 
925     IF l_DiscreteJob_rec.build_sequence = FND_API.G_MISS_NUM THEN
926         l_DiscreteJob_rec.build_sequence := NULL;
927     END IF;
928 
929     IF l_DiscreteJob_rec.class_code = FND_API.G_MISS_CHAR THEN
930         l_DiscreteJob_rec.class_code := NULL;
931     END IF;
932 
933     IF l_DiscreteJob_rec.common_bom_sequence_id = FND_API.G_MISS_NUM THEN
934         l_DiscreteJob_rec.common_bom_sequence_id := NULL;
935     END IF;
936 
937     IF l_DiscreteJob_rec.common_rout_sequence_id = FND_API.G_MISS_NUM THEN
938         l_DiscreteJob_rec.common_rout_sequence_id := NULL;
939     END IF;
940 
941     IF l_DiscreteJob_rec.completion_locator_id = FND_API.G_MISS_NUM THEN
942         l_DiscreteJob_rec.completion_locator_id := NULL;
943     END IF;
944 
945     IF l_DiscreteJob_rec.completion_subinventory = FND_API.G_MISS_CHAR THEN
946         l_DiscreteJob_rec.completion_subinventory := NULL;
947     END IF;
948 
949     IF l_DiscreteJob_rec.created_by = FND_API.G_MISS_NUM THEN
950         l_DiscreteJob_rec.created_by := NULL;
951     END IF;
952 
953     IF l_DiscreteJob_rec.creation_date = FND_API.G_MISS_DATE THEN
954         l_DiscreteJob_rec.creation_date := NULL;
955     END IF;
956 
957     IF l_DiscreteJob_rec.date_closed = FND_API.G_MISS_DATE THEN
958         l_DiscreteJob_rec.date_closed := NULL;
959     END IF;
960 
961     IF l_DiscreteJob_rec.date_completed = FND_API.G_MISS_DATE THEN
962         l_DiscreteJob_rec.date_completed := NULL;
963     END IF;
964 
965     IF l_DiscreteJob_rec.date_released = FND_API.G_MISS_DATE THEN
966         l_DiscreteJob_rec.date_released := NULL;
967     END IF;
968 
969     IF l_DiscreteJob_rec.demand_class = FND_API.G_MISS_CHAR THEN
970         l_DiscreteJob_rec.demand_class := NULL;
971     END IF;
972 
973     IF l_DiscreteJob_rec.description = FND_API.G_MISS_CHAR THEN
974         l_DiscreteJob_rec.description := NULL;
975     END IF;
976 
977     IF l_DiscreteJob_rec.firm_planned_flag = FND_API.G_MISS_NUM THEN
978         l_DiscreteJob_rec.firm_planned_flag := NULL;
979     END IF;
980 
981     IF l_DiscreteJob_rec.job_type = FND_API.G_MISS_NUM THEN
982         l_DiscreteJob_rec.job_type := NULL;
983     END IF;
984 
985     IF l_DiscreteJob_rec.kanban_card_id = FND_API.G_MISS_NUM THEN
986         l_DiscreteJob_rec.kanban_card_id := NULL;
987     END IF;
988 
989     IF l_DiscreteJob_rec.last_updated_by = FND_API.G_MISS_NUM THEN
990         l_DiscreteJob_rec.last_updated_by := NULL;
991     END IF;
992 
993     IF l_DiscreteJob_rec.last_update_date = FND_API.G_MISS_DATE THEN
994         l_DiscreteJob_rec.last_update_date := NULL;
995     END IF;
996 
997     IF l_DiscreteJob_rec.last_update_login = FND_API.G_MISS_NUM THEN
998         l_DiscreteJob_rec.last_update_login := NULL;
999     END IF;
1000 
1001     IF l_DiscreteJob_rec.line_id = FND_API.G_MISS_NUM THEN
1002         l_DiscreteJob_rec.line_id := NULL;
1003     END IF;
1004 
1005     IF l_DiscreteJob_rec.lot_number = FND_API.G_MISS_CHAR THEN
1006         l_DiscreteJob_rec.lot_number := NULL;
1007     END IF;
1008 
1009     IF l_DiscreteJob_rec.material_account = FND_API.G_MISS_NUM THEN
1010         l_DiscreteJob_rec.material_account := NULL;
1011     END IF;
1012 
1013     IF l_DiscreteJob_rec.material_overhead_account = FND_API.G_MISS_NUM THEN
1014         l_DiscreteJob_rec.material_overhead_account := NULL;
1015     END IF;
1016 
1020 
1017     IF l_DiscreteJob_rec.material_variance_account = FND_API.G_MISS_NUM THEN
1018         l_DiscreteJob_rec.material_variance_account := NULL;
1019     END IF;
1021     IF l_DiscreteJob_rec.mps_net_quantity = FND_API.G_MISS_NUM THEN
1022         l_DiscreteJob_rec.mps_net_quantity := NULL;
1023     END IF;
1024 
1025     IF l_DiscreteJob_rec.mps_scheduled_cpl_date = FND_API.G_MISS_DATE THEN
1026         l_DiscreteJob_rec.mps_scheduled_cpl_date := NULL;
1027     END IF;
1028 
1029     IF l_DiscreteJob_rec.net_quantity = FND_API.G_MISS_NUM THEN
1030         l_DiscreteJob_rec.net_quantity := NULL;
1031     END IF;
1032 
1033     IF l_DiscreteJob_rec.organization_id = FND_API.G_MISS_NUM THEN
1034         l_DiscreteJob_rec.organization_id := NULL;
1035     END IF;
1036 
1037     IF l_DiscreteJob_rec.osp_account = FND_API.G_MISS_NUM THEN
1038         l_DiscreteJob_rec.osp_account := NULL;
1039     END IF;
1040 
1041     IF l_DiscreteJob_rec.osp_variance_account = FND_API.G_MISS_NUM THEN
1042         l_DiscreteJob_rec.osp_variance_account := NULL;
1043     END IF;
1044 
1045     IF l_DiscreteJob_rec.overcpl_tolerance_type = FND_API.G_MISS_NUM THEN
1046         l_DiscreteJob_rec.overcpl_tolerance_type := NULL;
1047     END IF;
1048 
1049     IF l_DiscreteJob_rec.overcpl_tolerance_value = FND_API.G_MISS_NUM THEN
1050         l_DiscreteJob_rec.overcpl_tolerance_value := NULL;
1051     END IF;
1052 
1053     IF l_DiscreteJob_rec.overhead_account = FND_API.G_MISS_NUM THEN
1054         l_DiscreteJob_rec.overhead_account := NULL;
1055     END IF;
1056 
1057     IF l_DiscreteJob_rec.overhead_variance_account = FND_API.G_MISS_NUM THEN
1058         l_DiscreteJob_rec.overhead_variance_account := NULL;
1059     END IF;
1060 
1061     IF l_DiscreteJob_rec.primary_item_id = FND_API.G_MISS_NUM THEN
1062         l_DiscreteJob_rec.primary_item_id := NULL;
1063     END IF;
1064 
1065     IF l_DiscreteJob_rec.program_application_id = FND_API.G_MISS_NUM THEN
1066         l_DiscreteJob_rec.program_application_id := NULL;
1067     END IF;
1068 
1069     IF l_DiscreteJob_rec.program_id = FND_API.G_MISS_NUM THEN
1070         l_DiscreteJob_rec.program_id := NULL;
1071     END IF;
1072 
1073     IF l_DiscreteJob_rec.program_update_date = FND_API.G_MISS_DATE THEN
1074         l_DiscreteJob_rec.program_update_date := NULL;
1075     END IF;
1076 
1077     IF l_DiscreteJob_rec.project_costed = FND_API.G_MISS_NUM THEN
1078         l_DiscreteJob_rec.project_costed := NULL;
1079     END IF;
1080 
1081     IF l_DiscreteJob_rec.project_id = FND_API.G_MISS_NUM THEN
1082         l_DiscreteJob_rec.project_id := NULL;
1083     END IF;
1084 
1085     IF l_DiscreteJob_rec.quantity_completed = FND_API.G_MISS_NUM THEN
1086         l_DiscreteJob_rec.quantity_completed := NULL;
1087     END IF;
1088 
1089     IF l_DiscreteJob_rec.quantity_scrapped = FND_API.G_MISS_NUM THEN
1090         l_DiscreteJob_rec.quantity_scrapped := NULL;
1091     END IF;
1092 
1093     IF l_DiscreteJob_rec.request_id = FND_API.G_MISS_NUM THEN
1094         l_DiscreteJob_rec.request_id := NULL;
1095     END IF;
1096 
1097     IF l_DiscreteJob_rec.resource_account = FND_API.G_MISS_NUM THEN
1098         l_DiscreteJob_rec.resource_account := NULL;
1099     END IF;
1100 
1101     IF l_DiscreteJob_rec.resource_variance_account = FND_API.G_MISS_NUM THEN
1102         l_DiscreteJob_rec.resource_variance_account := NULL;
1103     END IF;
1104 
1105     IF l_DiscreteJob_rec.routing_reference_id = FND_API.G_MISS_NUM THEN
1106         l_DiscreteJob_rec.routing_reference_id := NULL;
1107     END IF;
1108 
1109     IF l_DiscreteJob_rec.routing_revision = FND_API.G_MISS_CHAR THEN
1110         l_DiscreteJob_rec.routing_revision := NULL;
1111     END IF;
1112 
1116 
1113     IF l_DiscreteJob_rec.routing_revision_date = FND_API.G_MISS_DATE THEN
1114         l_DiscreteJob_rec.routing_revision_date := NULL;
1115     END IF;
1117     IF l_DiscreteJob_rec.scheduled_completion_date = FND_API.G_MISS_DATE THEN
1118         l_DiscreteJob_rec.scheduled_completion_date := NULL;
1119     END IF;
1120 
1121     IF l_DiscreteJob_rec.scheduled_start_date = FND_API.G_MISS_DATE THEN
1122         l_DiscreteJob_rec.scheduled_start_date := NULL;
1123     END IF;
1124 
1125     IF l_DiscreteJob_rec.schedule_group_id = FND_API.G_MISS_NUM THEN
1126         l_DiscreteJob_rec.schedule_group_id := NULL;
1127     END IF;
1128 
1129     IF l_DiscreteJob_rec.source_code = FND_API.G_MISS_CHAR THEN
1130         l_DiscreteJob_rec.source_code := NULL;
1131     END IF;
1132 
1133     IF l_DiscreteJob_rec.source_line_id = FND_API.G_MISS_NUM THEN
1134         l_DiscreteJob_rec.source_line_id := NULL;
1135     END IF;
1136 
1137     IF l_DiscreteJob_rec.start_quantity = FND_API.G_MISS_NUM THEN
1138         l_DiscreteJob_rec.start_quantity := NULL;
1139     END IF;
1140 
1141     IF l_DiscreteJob_rec.status_type = FND_API.G_MISS_NUM THEN
1142         l_DiscreteJob_rec.status_type := NULL;
1143     END IF;
1144 
1145     IF l_DiscreteJob_rec.std_cost_adj_account = FND_API.G_MISS_NUM THEN
1146         l_DiscreteJob_rec.std_cost_adj_account := NULL;
1147     END IF;
1148 
1149     IF l_DiscreteJob_rec.task_id = FND_API.G_MISS_NUM THEN
1150         l_DiscreteJob_rec.task_id := NULL;
1151     END IF;
1152 
1153     IF l_DiscreteJob_rec.wip_entity_id = FND_API.G_MISS_NUM THEN
1154         l_DiscreteJob_rec.wip_entity_id := NULL;
1155     END IF;
1156 
1157     IF l_DiscreteJob_rec.wip_supply_type = FND_API.G_MISS_NUM THEN
1158         l_DiscreteJob_rec.wip_supply_type := NULL;
1159     END IF;
1160 
1161     RETURN l_DiscreteJob_rec;
1162 
1163 END Convert_Miss_To_Null;
1164 
1165 --  Procedure Update_Row
1166 
1167 PROCEDURE Update_Row
1168 (   p_DiscreteJob_rec               IN  WIP_Work_Order_PUB.Discretejob_Rec_Type
1169 )
1170 IS
1171 BEGIN
1172 
1173     UPDATE  WIP_DISCRETE_JOBS
1174     SET     ALTERNATE_BOM_DESIGNATOR       = p_DiscreteJob_rec.alternate_bom_designator
1175     ,       ALTERNATE_ROUTING_DESIGNATOR   = p_DiscreteJob_rec.alternate_rout_designator
1176     ,       ATTRIBUTE1                     = p_DiscreteJob_rec.attribute1
1177     ,       ATTRIBUTE10                    = p_DiscreteJob_rec.attribute10
1178     ,       ATTRIBUTE11                    = p_DiscreteJob_rec.attribute11
1179     ,       ATTRIBUTE12                    = p_DiscreteJob_rec.attribute12
1180     ,       ATTRIBUTE13                    = p_DiscreteJob_rec.attribute13
1181     ,       ATTRIBUTE14                    = p_DiscreteJob_rec.attribute14
1182     ,       ATTRIBUTE15                    = p_DiscreteJob_rec.attribute15
1183     ,       ATTRIBUTE2                     = p_DiscreteJob_rec.attribute2
1184     ,       ATTRIBUTE3                     = p_DiscreteJob_rec.attribute3
1185     ,       ATTRIBUTE4                     = p_DiscreteJob_rec.attribute4
1186     ,       ATTRIBUTE5                     = p_DiscreteJob_rec.attribute5
1187     ,       ATTRIBUTE6                     = p_DiscreteJob_rec.attribute6
1188     ,       ATTRIBUTE7                     = p_DiscreteJob_rec.attribute7
1189     ,       ATTRIBUTE8                     = p_DiscreteJob_rec.attribute8
1190     ,       ATTRIBUTE9                     = p_DiscreteJob_rec.attribute9
1191     ,       ATTRIBUTE_CATEGORY             = p_DiscreteJob_rec.attribute_category
1192     ,       BOM_REFERENCE_ID               = p_DiscreteJob_rec.bom_reference_id
1193     ,       BOM_REVISION                   = p_DiscreteJob_rec.bom_revision
1194     ,       BOM_REVISION_DATE              = p_DiscreteJob_rec.bom_revision_date
1195     ,       BUILD_SEQUENCE                 = p_DiscreteJob_rec.build_sequence
1196     ,       CLASS_CODE                     = p_DiscreteJob_rec.class_code
1197     ,       COMMON_BOM_SEQUENCE_ID         = p_DiscreteJob_rec.common_bom_sequence_id
1198     ,       COMMON_ROUTING_SEQUENCE_ID     = p_DiscreteJob_rec.common_rout_sequence_id
1199     ,       COMPLETION_LOCATOR_ID          = p_DiscreteJob_rec.completion_locator_id
1200     ,       COMPLETION_SUBINVENTORY        = p_DiscreteJob_rec.completion_subinventory
1201     ,       CREATED_BY                     = p_DiscreteJob_rec.created_by
1202     ,       CREATION_DATE                  = p_DiscreteJob_rec.creation_date
1203     ,       DATE_CLOSED                    = p_DiscreteJob_rec.date_closed
1204     ,       DATE_COMPLETED                 = p_DiscreteJob_rec.date_completed
1205     ,       DATE_RELEASED                  = p_DiscreteJob_rec.date_released
1206     ,       DEMAND_CLASS                   = p_DiscreteJob_rec.demand_class
1207     ,       DESCRIPTION                    = p_DiscreteJob_rec.description
1208     ,       FIRM_PLANNED_FLAG              = p_DiscreteJob_rec.firm_planned_flag
1209     ,       JOB_TYPE                       = p_DiscreteJob_rec.job_type
1210     ,       KANBAN_CARD_ID                 = p_DiscreteJob_rec.kanban_card_id
1211     ,       LAST_UPDATED_BY                = p_DiscreteJob_rec.last_updated_by
1212     ,       LAST_UPDATE_DATE               = p_DiscreteJob_rec.last_update_date
1213     ,       LAST_UPDATE_LOGIN              = p_DiscreteJob_rec.last_update_login
1214     ,       LINE_ID                        = p_DiscreteJob_rec.line_id
1215     ,       LOT_NUMBER                     = p_DiscreteJob_rec.lot_number
1216     ,       MATERIAL_ACCOUNT               = p_DiscreteJob_rec.material_account
1217     ,       MATERIAL_OVERHEAD_ACCOUNT      = p_DiscreteJob_rec.material_overhead_account
1218     ,       MATERIAL_VARIANCE_ACCOUNT      = p_DiscreteJob_rec.material_variance_account
1219     ,       MPS_NET_QUANTITY               = p_DiscreteJob_rec.mps_net_quantity
1220     ,       MPS_SCHEDULED_COMPLETION_DATE  = p_DiscreteJob_rec.mps_scheduled_cpl_date
1221     ,       NET_QUANTITY                   = p_DiscreteJob_rec.net_quantity
1225     ,       OVERCOMPLETION_TOLERANCE_TYPE  = p_DiscreteJob_rec.overcpl_tolerance_type
1222     ,       ORGANIZATION_ID                = p_DiscreteJob_rec.organization_id
1223     ,       OUTSIDE_PROCESSING_ACCOUNT     = p_DiscreteJob_rec.osp_account
1224     ,       OUTSIDE_PROC_VARIANCE_ACCOUNT  = p_DiscreteJob_rec.osp_variance_account
1226     ,       OVERCOMPLETION_TOLERANCE_VALUE = p_DiscreteJob_rec.overcpl_tolerance_value
1227     ,       OVERHEAD_ACCOUNT               = p_DiscreteJob_rec.overhead_account
1228     ,       OVERHEAD_VARIANCE_ACCOUNT      = p_DiscreteJob_rec.overhead_variance_account
1229     ,       PRIMARY_ITEM_ID                = p_DiscreteJob_rec.primary_item_id
1230     ,       PROGRAM_APPLICATION_ID         = p_DiscreteJob_rec.program_application_id
1231     ,       PROGRAM_ID                     = p_DiscreteJob_rec.program_id
1232     ,       PROGRAM_UPDATE_DATE            = p_DiscreteJob_rec.program_update_date
1233 --    ,       PROJECT_COSTED                 = p_DiscreteJob_rec.project_costed
1234     ,       PROJECT_ID                     = p_DiscreteJob_rec.project_id
1235     ,       QUANTITY_COMPLETED             = p_DiscreteJob_rec.quantity_completed
1236     ,       QUANTITY_SCRAPPED              = p_DiscreteJob_rec.quantity_scrapped
1237     ,       REQUEST_ID                     = p_DiscreteJob_rec.request_id
1238     ,       RESOURCE_ACCOUNT               = p_DiscreteJob_rec.resource_account
1239     ,       RESOURCE_VARIANCE_ACCOUNT      = p_DiscreteJob_rec.resource_variance_account
1240     ,       ROUTING_REFERENCE_ID           = p_DiscreteJob_rec.routing_reference_id
1241     ,       ROUTING_REVISION               = p_DiscreteJob_rec.routing_revision
1242     ,       ROUTING_REVISION_DATE          = p_DiscreteJob_rec.routing_revision_date
1243     ,       SCHEDULED_COMPLETION_DATE      = p_DiscreteJob_rec.scheduled_completion_date
1244     ,       SCHEDULED_START_DATE           = p_DiscreteJob_rec.scheduled_start_date
1245     ,       SCHEDULE_GROUP_ID              = p_DiscreteJob_rec.schedule_group_id
1246     ,       SOURCE_CODE                    = p_DiscreteJob_rec.source_code
1247     ,       SOURCE_LINE_ID                 = p_DiscreteJob_rec.source_line_id
1248     ,       START_QUANTITY                 = p_DiscreteJob_rec.start_quantity
1249     ,       STATUS_TYPE                    = p_DiscreteJob_rec.status_type
1250     ,       STD_COST_ADJUSTMENT_ACCOUNT    = p_DiscreteJob_rec.std_cost_adj_account
1251     ,       TASK_ID                        = p_DiscreteJob_rec.task_id
1252     ,       WIP_ENTITY_ID                  = p_DiscreteJob_rec.wip_entity_id
1253     ,       WIP_SUPPLY_TYPE                = p_DiscreteJob_rec.wip_supply_type
1254     WHERE   WIP_ENTITY_ID = p_DiscreteJob_rec.wip_entity_id
1255     ;
1256 
1257 EXCEPTION
1258 
1259     WHEN OTHERS THEN
1260 
1261         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1262         THEN
1263             FND_MSG_PUB.Add_Exc_Msg
1264             (   G_PKG_NAME
1265             ,   'Update_Row'
1266             );
1267         END IF;
1268 
1269         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1270 
1271 END Update_Row;
1272 
1273 --  Procedure Insert_Row
1274 
1275 PROCEDURE Insert_Row
1276 (   p_DiscreteJob_rec               IN  WIP_Work_Order_PUB.Discretejob_Rec_Type
1277 )
1278 IS
1279 BEGIN
1280 
1281     INSERT  INTO WIP_DISCRETE_JOBS
1282     (       ALTERNATE_BOM_DESIGNATOR
1283     ,       ALTERNATE_ROUTING_DESIGNATOR
1284     ,       ATTRIBUTE1
1285     ,       ATTRIBUTE10
1286     ,       ATTRIBUTE11
1287     ,       ATTRIBUTE12
1288     ,       ATTRIBUTE13
1289     ,       ATTRIBUTE14
1290     ,       ATTRIBUTE15
1291     ,       ATTRIBUTE2
1292     ,       ATTRIBUTE3
1293     ,       ATTRIBUTE4
1294     ,       ATTRIBUTE5
1295     ,       ATTRIBUTE6
1296     ,       ATTRIBUTE7
1297     ,       ATTRIBUTE8
1298     ,       ATTRIBUTE9
1299     ,       ATTRIBUTE_CATEGORY
1300     ,       BOM_REFERENCE_ID
1301     ,       BOM_REVISION
1302     ,       BOM_REVISION_DATE
1303     ,       BUILD_SEQUENCE
1304     ,       CLASS_CODE
1305     ,       COMMON_BOM_SEQUENCE_ID
1306     ,       COMMON_ROUTING_SEQUENCE_ID
1307     ,       COMPLETION_LOCATOR_ID
1308     ,       COMPLETION_SUBINVENTORY
1309     ,       CREATED_BY
1310     ,       CREATION_DATE
1311     ,       DATE_CLOSED
1312     ,       DATE_COMPLETED
1313     ,       DATE_RELEASED
1314     ,       DEMAND_CLASS
1315     ,       DESCRIPTION
1316     ,       FIRM_PLANNED_FLAG
1317     ,       JOB_TYPE
1318     ,       KANBAN_CARD_ID
1319     ,       LAST_UPDATED_BY
1320     ,       LAST_UPDATE_DATE
1321     ,       LAST_UPDATE_LOGIN
1322     ,       LINE_ID
1323     ,       LOT_NUMBER
1324     ,       MATERIAL_ACCOUNT
1325     ,       MATERIAL_OVERHEAD_ACCOUNT
1326     ,       MATERIAL_VARIANCE_ACCOUNT
1327     ,       MPS_NET_QUANTITY
1328     ,       MPS_SCHEDULED_COMPLETION_DATE
1329     ,       NET_QUANTITY
1330     ,       ORGANIZATION_ID
1331     ,       OUTSIDE_PROCESSING_ACCOUNT
1332     ,       OUTSIDE_PROC_VARIANCE_ACCOUNT
1333     ,       OVERCOMPLETION_TOLERANCE_TYPE
1334     ,       OVERCOMPLETION_TOLERANCE_VALUE
1335     ,       OVERHEAD_ACCOUNT
1336     ,       OVERHEAD_VARIANCE_ACCOUNT
1337     ,       PRIMARY_ITEM_ID
1338     ,       PROGRAM_APPLICATION_ID
1339     ,       PROGRAM_ID
1340     ,       PROGRAM_UPDATE_DATE
1341 --    ,       PROJECT_COSTED
1342     ,       PROJECT_ID
1343     ,       QUANTITY_COMPLETED
1344     ,       QUANTITY_SCRAPPED
1345     ,       REQUEST_ID
1346     ,       RESOURCE_ACCOUNT
1347     ,       RESOURCE_VARIANCE_ACCOUNT
1348     ,       ROUTING_REFERENCE_ID
1349     ,       ROUTING_REVISION
1350     ,       ROUTING_REVISION_DATE
1351     ,       SCHEDULED_COMPLETION_DATE
1352     ,       SCHEDULED_START_DATE
1353     ,       SCHEDULE_GROUP_ID
1354     ,       SOURCE_CODE
1355     ,       SOURCE_LINE_ID
1359     ,       TASK_ID
1356     ,       START_QUANTITY
1357     ,       STATUS_TYPE
1358     ,       STD_COST_ADJUSTMENT_ACCOUNT
1360     ,       WIP_ENTITY_ID
1361     ,       WIP_SUPPLY_TYPE
1362     )
1363     VALUES
1364     (       p_DiscreteJob_rec.alternate_bom_designator
1365     ,       p_DiscreteJob_rec.alternate_rout_designator
1366     ,       p_DiscreteJob_rec.attribute1
1367     ,       p_DiscreteJob_rec.attribute10
1368     ,       p_DiscreteJob_rec.attribute11
1369     ,       p_DiscreteJob_rec.attribute12
1370     ,       p_DiscreteJob_rec.attribute13
1371     ,       p_DiscreteJob_rec.attribute14
1372     ,       p_DiscreteJob_rec.attribute15
1373     ,       p_DiscreteJob_rec.attribute2
1374     ,       p_DiscreteJob_rec.attribute3
1375     ,       p_DiscreteJob_rec.attribute4
1376     ,       p_DiscreteJob_rec.attribute5
1377     ,       p_DiscreteJob_rec.attribute6
1378     ,       p_DiscreteJob_rec.attribute7
1379     ,       p_DiscreteJob_rec.attribute8
1380     ,       p_DiscreteJob_rec.attribute9
1381     ,       p_DiscreteJob_rec.attribute_category
1382     ,       p_DiscreteJob_rec.bom_reference_id
1383     ,       p_DiscreteJob_rec.bom_revision
1384     ,       p_DiscreteJob_rec.bom_revision_date
1385     ,       p_DiscreteJob_rec.build_sequence
1386     ,       p_DiscreteJob_rec.class_code
1387     ,       p_DiscreteJob_rec.common_bom_sequence_id
1388     ,       p_DiscreteJob_rec.common_rout_sequence_id
1389     ,       p_DiscreteJob_rec.completion_locator_id
1390     ,       p_DiscreteJob_rec.completion_subinventory
1391     ,       p_DiscreteJob_rec.created_by
1392     ,       p_DiscreteJob_rec.creation_date
1393     ,       p_DiscreteJob_rec.date_closed
1394     ,       p_DiscreteJob_rec.date_completed
1395     ,       p_DiscreteJob_rec.date_released
1396     ,       p_DiscreteJob_rec.demand_class
1397     ,       p_DiscreteJob_rec.description
1398     ,       p_DiscreteJob_rec.firm_planned_flag
1399     ,       p_DiscreteJob_rec.job_type
1400     ,       p_DiscreteJob_rec.kanban_card_id
1401     ,       p_DiscreteJob_rec.last_updated_by
1402     ,       p_DiscreteJob_rec.last_update_date
1403     ,       p_DiscreteJob_rec.last_update_login
1404     ,       p_DiscreteJob_rec.line_id
1405     ,       p_DiscreteJob_rec.lot_number
1406     ,       p_DiscreteJob_rec.material_account
1407     ,       p_DiscreteJob_rec.material_overhead_account
1408     ,       p_DiscreteJob_rec.material_variance_account
1409     ,       p_DiscreteJob_rec.mps_net_quantity
1410     ,       p_DiscreteJob_rec.mps_scheduled_cpl_date
1411     ,       p_DiscreteJob_rec.net_quantity
1412     ,       p_DiscreteJob_rec.organization_id
1413     ,       p_DiscreteJob_rec.osp_account
1414     ,       p_DiscreteJob_rec.osp_variance_account
1415     ,       p_DiscreteJob_rec.overcpl_tolerance_type
1416     ,       p_DiscreteJob_rec.overcpl_tolerance_value
1417     ,       p_DiscreteJob_rec.overhead_account
1418     ,       p_DiscreteJob_rec.overhead_variance_account
1419     ,       p_DiscreteJob_rec.primary_item_id
1420     ,       p_DiscreteJob_rec.program_application_id
1421     ,       p_DiscreteJob_rec.program_id
1422     ,       p_DiscreteJob_rec.program_update_date
1423 --    ,       p_DiscreteJob_rec.project_costed
1424     ,       p_DiscreteJob_rec.project_id
1425     ,       p_DiscreteJob_rec.quantity_completed
1426     ,       p_DiscreteJob_rec.quantity_scrapped
1427     ,       p_DiscreteJob_rec.request_id
1428     ,       p_DiscreteJob_rec.resource_account
1429     ,       p_DiscreteJob_rec.resource_variance_account
1430     ,       p_DiscreteJob_rec.routing_reference_id
1431     ,       p_DiscreteJob_rec.routing_revision
1432     ,       p_DiscreteJob_rec.routing_revision_date
1433     ,       p_DiscreteJob_rec.scheduled_completion_date
1434     ,       p_DiscreteJob_rec.scheduled_start_date
1435     ,       p_DiscreteJob_rec.schedule_group_id
1436     ,       p_DiscreteJob_rec.source_code
1437     ,       p_DiscreteJob_rec.source_line_id
1438     ,       p_DiscreteJob_rec.start_quantity
1439     ,       p_DiscreteJob_rec.status_type
1440     ,       p_DiscreteJob_rec.std_cost_adj_account
1441     ,       p_DiscreteJob_rec.task_id
1442     ,       p_DiscreteJob_rec.wip_entity_id
1443     ,       p_DiscreteJob_rec.wip_supply_type
1444     );
1445 
1446 EXCEPTION
1447 
1448     WHEN OTHERS THEN
1449 
1450         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1451         THEN
1452             FND_MSG_PUB.Add_Exc_Msg
1453             (   G_PKG_NAME
1454             ,   'Insert_Row'
1455             );
1456         END IF;
1457 
1458         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1459 
1460 END Insert_Row;
1461 
1462 --  Procedure Delete_Row
1463 
1464 PROCEDURE Delete_Row
1465 (   p_wip_entity_id                 IN  NUMBER
1466 )
1467 IS
1468 BEGIN
1469 
1470     DELETE  FROM WIP_DISCRETE_JOBS
1471     WHERE   WIP_ENTITY_ID = p_wip_entity_id
1472     ;
1473 
1474 EXCEPTION
1475 
1476     WHEN OTHERS THEN
1477 
1478         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1479         THEN
1480             FND_MSG_PUB.Add_Exc_Msg
1481             (   G_PKG_NAME
1482             ,   'Delete_Row'
1483             );
1484         END IF;
1485 
1486         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1487 
1488 END Delete_Row;
1489 
1490 --  Function Query_Row
1491 
1492 FUNCTION Query_Row
1493 (   p_wip_entity_id                 IN  NUMBER
1494 ) RETURN WIP_Work_Order_PUB.Discretejob_Rec_Type
1495 IS
1496 BEGIN
1497 
1498     RETURN Query_Rows
1499         (   p_wip_entity_id               => p_wip_entity_id
1500         )(1);
1501 
1502 END Query_Row;
1503 
1504 --  Function Query_Rows
1505 
1506 --
1507 
1511 ) RETURN WIP_Work_Order_PUB.Discretejob_Tbl_Type
1508 FUNCTION Query_Rows
1509 (   p_wip_entity_id                 IN  NUMBER :=
1510                                         NULL
1512 IS
1513 l_DiscreteJob_rec             WIP_Work_Order_PUB.Discretejob_Rec_Type;
1514 l_DiscreteJob_tbl             WIP_Work_Order_PUB.Discretejob_Tbl_Type;
1515 
1516 CURSOR l_DiscreteJob_csr IS
1517     SELECT  ALTERNATE_BOM_DESIGNATOR
1518     ,       ALTERNATE_ROUTING_DESIGNATOR
1519     ,       ATTRIBUTE1
1520     ,       ATTRIBUTE10
1521     ,       ATTRIBUTE11
1522     ,       ATTRIBUTE12
1523     ,       ATTRIBUTE13
1524     ,       ATTRIBUTE14
1525     ,       ATTRIBUTE15
1526     ,       ATTRIBUTE2
1527     ,       ATTRIBUTE3
1528     ,       ATTRIBUTE4
1529     ,       ATTRIBUTE5
1530     ,       ATTRIBUTE6
1531     ,       ATTRIBUTE7
1532     ,       ATTRIBUTE8
1533     ,       ATTRIBUTE9
1534     ,       ATTRIBUTE_CATEGORY
1535     ,       BOM_REFERENCE_ID
1536     ,       BOM_REVISION
1537     ,       BOM_REVISION_DATE
1538     ,       BUILD_SEQUENCE
1539     ,       CLASS_CODE
1540     ,       COMMON_BOM_SEQUENCE_ID
1541     ,       COMMON_ROUTING_SEQUENCE_ID
1542     ,       COMPLETION_LOCATOR_ID
1543     ,       COMPLETION_SUBINVENTORY
1544     ,       CREATED_BY
1545     ,       CREATION_DATE
1546     ,       DATE_CLOSED
1547     ,       DATE_COMPLETED
1548     ,       DATE_RELEASED
1549     ,       DEMAND_CLASS
1550     ,       DESCRIPTION
1551     ,       FIRM_PLANNED_FLAG
1552     ,       JOB_TYPE
1553     ,       KANBAN_CARD_ID
1554     ,       LAST_UPDATED_BY
1555     ,       LAST_UPDATE_DATE
1556     ,       LAST_UPDATE_LOGIN
1557     ,       LINE_ID
1558     ,       LOT_NUMBER
1559     ,       MATERIAL_ACCOUNT
1560     ,       MATERIAL_OVERHEAD_ACCOUNT
1561     ,       MATERIAL_VARIANCE_ACCOUNT
1562     ,       MPS_NET_QUANTITY
1563     ,       MPS_SCHEDULED_COMPLETION_DATE
1564     ,       NET_QUANTITY
1565     ,       ORGANIZATION_ID
1566     ,       OUTSIDE_PROCESSING_ACCOUNT
1567     ,       OUTSIDE_PROC_VARIANCE_ACCOUNT
1568     ,       OVERCOMPLETION_TOLERANCE_TYPE
1569     ,       OVERCOMPLETION_TOLERANCE_VALUE
1570     ,       OVERHEAD_ACCOUNT
1571     ,       OVERHEAD_VARIANCE_ACCOUNT
1572     ,       PRIMARY_ITEM_ID
1573     ,       PROGRAM_APPLICATION_ID
1574     ,       PROGRAM_ID
1575     ,       PROGRAM_UPDATE_DATE
1576 --    ,       PROJECT_COSTED
1577     ,       PROJECT_ID
1578     ,       QUANTITY_COMPLETED
1579     ,       QUANTITY_SCRAPPED
1580     ,       REQUEST_ID
1581     ,       RESOURCE_ACCOUNT
1582     ,       RESOURCE_VARIANCE_ACCOUNT
1583     ,       ROUTING_REFERENCE_ID
1584     ,       ROUTING_REVISION
1585     ,       ROUTING_REVISION_DATE
1586     ,       SCHEDULED_COMPLETION_DATE
1587     ,       SCHEDULED_START_DATE
1588     ,       SCHEDULE_GROUP_ID
1589     ,       SOURCE_CODE
1590     ,       SOURCE_LINE_ID
1591     ,       START_QUANTITY
1592     ,       STATUS_TYPE
1593     ,       STD_COST_ADJUSTMENT_ACCOUNT
1594     ,       TASK_ID
1595     ,       WIP_ENTITY_ID
1596     ,       WIP_SUPPLY_TYPE
1597     FROM    WIP_DISCRETE_JOBS
1598     WHERE ( WIP_ENTITY_ID = p_wip_entity_id
1599     );
1600 
1601 BEGIN
1602 
1603     --  Loop over fetched records
1604 
1605     FOR l_implicit_rec IN l_DiscreteJob_csr LOOP
1606 
1607         l_DiscreteJob_rec.alternate_bom_designator := l_implicit_rec.ALTERNATE_BOM_DESIGNATOR;
1608         l_DiscreteJob_rec.alternate_rout_designator := l_implicit_rec.ALTERNATE_ROUTING_DESIGNATOR;
1609         l_DiscreteJob_rec.attribute1   := l_implicit_rec.ATTRIBUTE1;
1610         l_DiscreteJob_rec.attribute10  := l_implicit_rec.ATTRIBUTE10;
1611         l_DiscreteJob_rec.attribute11  := l_implicit_rec.ATTRIBUTE11;
1612         l_DiscreteJob_rec.attribute12  := l_implicit_rec.ATTRIBUTE12;
1613         l_DiscreteJob_rec.attribute13  := l_implicit_rec.ATTRIBUTE13;
1614         l_DiscreteJob_rec.attribute14  := l_implicit_rec.ATTRIBUTE14;
1615         l_DiscreteJob_rec.attribute15  := l_implicit_rec.ATTRIBUTE15;
1616         l_DiscreteJob_rec.attribute2   := l_implicit_rec.ATTRIBUTE2;
1617         l_DiscreteJob_rec.attribute3   := l_implicit_rec.ATTRIBUTE3;
1618         l_DiscreteJob_rec.attribute4   := l_implicit_rec.ATTRIBUTE4;
1619         l_DiscreteJob_rec.attribute5   := l_implicit_rec.ATTRIBUTE5;
1620         l_DiscreteJob_rec.attribute6   := l_implicit_rec.ATTRIBUTE6;
1621         l_DiscreteJob_rec.attribute7   := l_implicit_rec.ATTRIBUTE7;
1622         l_DiscreteJob_rec.attribute8   := l_implicit_rec.ATTRIBUTE8;
1623         l_DiscreteJob_rec.attribute9   := l_implicit_rec.ATTRIBUTE9;
1624         l_DiscreteJob_rec.attribute_category := l_implicit_rec.ATTRIBUTE_CATEGORY;
1625         l_DiscreteJob_rec.bom_reference_id := l_implicit_rec.BOM_REFERENCE_ID;
1626         l_DiscreteJob_rec.bom_revision := l_implicit_rec.BOM_REVISION;
1627         l_DiscreteJob_rec.bom_revision_date := l_implicit_rec.BOM_REVISION_DATE;
1628         l_DiscreteJob_rec.build_sequence := l_implicit_rec.BUILD_SEQUENCE;
1629         l_DiscreteJob_rec.class_code   := l_implicit_rec.CLASS_CODE;
1630         l_DiscreteJob_rec.common_bom_sequence_id := l_implicit_rec.COMMON_BOM_SEQUENCE_ID;
1631         l_DiscreteJob_rec.common_rout_sequence_id := l_implicit_rec.COMMON_ROUTING_SEQUENCE_ID;
1632         l_DiscreteJob_rec.completion_locator_id := l_implicit_rec.COMPLETION_LOCATOR_ID;
1633         l_DiscreteJob_rec.completion_subinventory := l_implicit_rec.COMPLETION_SUBINVENTORY;
1634         l_DiscreteJob_rec.created_by   := l_implicit_rec.CREATED_BY;
1635         l_DiscreteJob_rec.creation_date := l_implicit_rec.CREATION_DATE;
1636         l_DiscreteJob_rec.date_closed  := l_implicit_rec.DATE_CLOSED;
1637         l_DiscreteJob_rec.date_completed := l_implicit_rec.DATE_COMPLETED;
1638         l_DiscreteJob_rec.date_released := l_implicit_rec.DATE_RELEASED;
1642         l_DiscreteJob_rec.job_type     := l_implicit_rec.JOB_TYPE;
1639         l_DiscreteJob_rec.demand_class := l_implicit_rec.DEMAND_CLASS;
1640         l_DiscreteJob_rec.description  := l_implicit_rec.DESCRIPTION;
1641         l_DiscreteJob_rec.firm_planned_flag := l_implicit_rec.FIRM_PLANNED_FLAG;
1643         l_DiscreteJob_rec.kanban_card_id := l_implicit_rec.KANBAN_CARD_ID;
1644         l_DiscreteJob_rec.last_updated_by := l_implicit_rec.LAST_UPDATED_BY;
1645         l_DiscreteJob_rec.last_update_date := l_implicit_rec.LAST_UPDATE_DATE;
1646         l_DiscreteJob_rec.last_update_login := l_implicit_rec.LAST_UPDATE_LOGIN;
1647         l_DiscreteJob_rec.line_id      := l_implicit_rec.LINE_ID;
1648         l_DiscreteJob_rec.lot_number   := l_implicit_rec.LOT_NUMBER;
1649         l_DiscreteJob_rec.material_account := l_implicit_rec.MATERIAL_ACCOUNT;
1650         l_DiscreteJob_rec.material_overhead_account := l_implicit_rec.MATERIAL_OVERHEAD_ACCOUNT;
1651         l_DiscreteJob_rec.material_variance_account := l_implicit_rec.MATERIAL_VARIANCE_ACCOUNT;
1652         l_DiscreteJob_rec.mps_net_quantity := l_implicit_rec.MPS_NET_QUANTITY;
1653         l_DiscreteJob_rec.mps_scheduled_cpl_date := l_implicit_rec.MPS_SCHEDULED_COMPLETION_DATE;
1654         l_DiscreteJob_rec.net_quantity := l_implicit_rec.NET_QUANTITY;
1655         l_DiscreteJob_rec.organization_id := l_implicit_rec.ORGANIZATION_ID;
1656         l_DiscreteJob_rec.osp_account  := l_implicit_rec.OUTSIDE_PROCESSING_ACCOUNT;
1657         l_DiscreteJob_rec.osp_variance_account := l_implicit_rec.OUTSIDE_PROC_VARIANCE_ACCOUNT;
1658         l_DiscreteJob_rec.overcpl_tolerance_type := l_implicit_rec.OVERCOMPLETION_TOLERANCE_TYPE;
1659         l_DiscreteJob_rec.overcpl_tolerance_value := l_implicit_rec.OVERCOMPLETION_TOLERANCE_VALUE;
1660         l_DiscreteJob_rec.overhead_account := l_implicit_rec.OVERHEAD_ACCOUNT;
1661         l_DiscreteJob_rec.overhead_variance_account := l_implicit_rec.OVERHEAD_VARIANCE_ACCOUNT;
1662         l_DiscreteJob_rec.primary_item_id := l_implicit_rec.PRIMARY_ITEM_ID;
1663         l_DiscreteJob_rec.program_application_id := l_implicit_rec.PROGRAM_APPLICATION_ID;
1664         l_DiscreteJob_rec.program_id   := l_implicit_rec.PROGRAM_ID;
1665         l_DiscreteJob_rec.program_update_date := l_implicit_rec.PROGRAM_UPDATE_DATE;
1666 --        l_DiscreteJob_rec.project_costed := l_implicit_rec.PROJECT_COSTED;
1667         l_DiscreteJob_rec.project_id   := l_implicit_rec.PROJECT_ID;
1668         l_DiscreteJob_rec.quantity_completed := l_implicit_rec.QUANTITY_COMPLETED;
1669         l_DiscreteJob_rec.quantity_scrapped := l_implicit_rec.QUANTITY_SCRAPPED;
1670         l_DiscreteJob_rec.request_id   := l_implicit_rec.REQUEST_ID;
1671         l_DiscreteJob_rec.resource_account := l_implicit_rec.RESOURCE_ACCOUNT;
1672         l_DiscreteJob_rec.resource_variance_account := l_implicit_rec.RESOURCE_VARIANCE_ACCOUNT;
1673         l_DiscreteJob_rec.routing_reference_id := l_implicit_rec.ROUTING_REFERENCE_ID;
1674         l_DiscreteJob_rec.routing_revision := l_implicit_rec.ROUTING_REVISION;
1675         l_DiscreteJob_rec.routing_revision_date := l_implicit_rec.ROUTING_REVISION_DATE;
1676         l_DiscreteJob_rec.scheduled_completion_date := l_implicit_rec.SCHEDULED_COMPLETION_DATE;
1677         l_DiscreteJob_rec.scheduled_start_date := l_implicit_rec.SCHEDULED_START_DATE;
1678         l_DiscreteJob_rec.schedule_group_id := l_implicit_rec.SCHEDULE_GROUP_ID;
1679         l_DiscreteJob_rec.source_code  := l_implicit_rec.SOURCE_CODE;
1680         l_DiscreteJob_rec.source_line_id := l_implicit_rec.SOURCE_LINE_ID;
1681         l_DiscreteJob_rec.start_quantity := l_implicit_rec.START_QUANTITY;
1682         l_DiscreteJob_rec.status_type  := l_implicit_rec.STATUS_TYPE;
1683         l_DiscreteJob_rec.std_cost_adj_account := l_implicit_rec.STD_COST_ADJUSTMENT_ACCOUNT;
1684         l_DiscreteJob_rec.task_id      := l_implicit_rec.TASK_ID;
1685         l_DiscreteJob_rec.wip_entity_id := l_implicit_rec.WIP_ENTITY_ID;
1686         l_DiscreteJob_rec.wip_supply_type := l_implicit_rec.WIP_SUPPLY_TYPE;
1687 
1688         l_DiscreteJob_tbl(l_DiscreteJob_tbl.COUNT + 1) := l_DiscreteJob_rec;
1689 
1690     END LOOP;
1691 
1692 
1693     --  PK sent and no rows found
1694 
1695     IF
1696     (p_wip_entity_id IS NOT NULL
1697      AND
1698      p_wip_entity_id <> FND_API.G_MISS_NUM)
1699     AND
1700     (l_DiscreteJob_tbl.COUNT = 0)
1701     THEN
1702         RAISE NO_DATA_FOUND;
1703     END IF;
1704 
1705 
1706     --  Return fetched table
1707 
1708     RETURN l_DiscreteJob_tbl;
1709 
1710 EXCEPTION
1711 
1712     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1713 
1714         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1715 
1716     WHEN OTHERS THEN
1717 
1718         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1719         THEN
1720             FND_MSG_PUB.Add_Exc_Msg
1721             (   G_PKG_NAME
1722             ,   'Query_Rows'
1723             );
1724         END IF;
1725 
1726         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1727 
1728 END Query_Rows;
1729 
1730 --  Procedure       lock_Row
1731 --
1732 
1733 PROCEDURE Lock_Row
1734 (   x_return_status                 OUT NOCOPY VARCHAR2
1735 ,   p_DiscreteJob_rec               IN  WIP_Work_Order_PUB.Discretejob_Rec_Type
1736 ,   x_DiscreteJob_rec               OUT NOCOPY WIP_Work_Order_PUB.Discretejob_Rec_Type
1737 )
1738 IS
1739 l_DiscreteJob_rec             WIP_Work_Order_PUB.Discretejob_Rec_Type;
1740 BEGIN
1741 
1742     SELECT  ALTERNATE_BOM_DESIGNATOR
1743     ,       ALTERNATE_ROUTING_DESIGNATOR
1744     ,       ATTRIBUTE1
1745     ,       ATTRIBUTE10
1746     ,       ATTRIBUTE11
1747     ,       ATTRIBUTE12
1748     ,       ATTRIBUTE13
1749     ,       ATTRIBUTE14
1750     ,       ATTRIBUTE15
1751     ,       ATTRIBUTE2
1752     ,       ATTRIBUTE3
1753     ,       ATTRIBUTE4
1754     ,       ATTRIBUTE5
1755     ,       ATTRIBUTE6
1756     ,       ATTRIBUTE7
1757     ,       ATTRIBUTE8
1758     ,       ATTRIBUTE9
1762     ,       BOM_REVISION_DATE
1759     ,       ATTRIBUTE_CATEGORY
1760     ,       BOM_REFERENCE_ID
1761     ,       BOM_REVISION
1763     ,       BUILD_SEQUENCE
1764     ,       CLASS_CODE
1765     ,       COMMON_BOM_SEQUENCE_ID
1766     ,       COMMON_ROUTING_SEQUENCE_ID
1767     ,       COMPLETION_LOCATOR_ID
1768     ,       COMPLETION_SUBINVENTORY
1769     ,       CREATED_BY
1770     ,       CREATION_DATE
1771     ,       DATE_CLOSED
1772     ,       DATE_COMPLETED
1773     ,       DATE_RELEASED
1774     ,       DEMAND_CLASS
1775     ,       DESCRIPTION
1776     ,       FIRM_PLANNED_FLAG
1777     ,       JOB_TYPE
1778     ,       KANBAN_CARD_ID
1779     ,       LAST_UPDATED_BY
1780     ,       LAST_UPDATE_DATE
1781     ,       LAST_UPDATE_LOGIN
1782     ,       LINE_ID
1783     ,       LOT_NUMBER
1784     ,       MATERIAL_ACCOUNT
1785     ,       MATERIAL_OVERHEAD_ACCOUNT
1786     ,       MATERIAL_VARIANCE_ACCOUNT
1787     ,       MPS_NET_QUANTITY
1788     ,       MPS_SCHEDULED_COMPLETION_DATE
1789     ,       NET_QUANTITY
1790     ,       ORGANIZATION_ID
1791     ,       OUTSIDE_PROCESSING_ACCOUNT
1792     ,       OUTSIDE_PROC_VARIANCE_ACCOUNT
1793     ,       OVERCOMPLETION_TOLERANCE_TYPE
1794     ,       OVERCOMPLETION_TOLERANCE_VALUE
1795     ,       OVERHEAD_ACCOUNT
1796     ,       OVERHEAD_VARIANCE_ACCOUNT
1797     ,       PRIMARY_ITEM_ID
1798     ,       PROGRAM_APPLICATION_ID
1799     ,       PROGRAM_ID
1800     ,       PROGRAM_UPDATE_DATE
1801 --    ,       PROJECT_COSTED
1802     ,       PROJECT_ID
1803     ,       QUANTITY_COMPLETED
1804     ,       QUANTITY_SCRAPPED
1805     ,       REQUEST_ID
1806     ,       RESOURCE_ACCOUNT
1807     ,       RESOURCE_VARIANCE_ACCOUNT
1808     ,       ROUTING_REFERENCE_ID
1809     ,       ROUTING_REVISION
1810     ,       ROUTING_REVISION_DATE
1811     ,       SCHEDULED_COMPLETION_DATE
1812     ,       SCHEDULED_START_DATE
1813     ,       SCHEDULE_GROUP_ID
1814     ,       SOURCE_CODE
1815     ,       SOURCE_LINE_ID
1816     ,       START_QUANTITY
1817     ,       STATUS_TYPE
1818     ,       STD_COST_ADJUSTMENT_ACCOUNT
1819     ,       TASK_ID
1820     ,       WIP_ENTITY_ID
1821     ,       WIP_SUPPLY_TYPE
1822     INTO    l_DiscreteJob_rec.alternate_bom_designator
1823     ,       l_DiscreteJob_rec.alternate_rout_designator
1824     ,       l_DiscreteJob_rec.attribute1
1825     ,       l_DiscreteJob_rec.attribute10
1826     ,       l_DiscreteJob_rec.attribute11
1827     ,       l_DiscreteJob_rec.attribute12
1828     ,       l_DiscreteJob_rec.attribute13
1829     ,       l_DiscreteJob_rec.attribute14
1830     ,       l_DiscreteJob_rec.attribute15
1831     ,       l_DiscreteJob_rec.attribute2
1832     ,       l_DiscreteJob_rec.attribute3
1833     ,       l_DiscreteJob_rec.attribute4
1834     ,       l_DiscreteJob_rec.attribute5
1835     ,       l_DiscreteJob_rec.attribute6
1836     ,       l_DiscreteJob_rec.attribute7
1837     ,       l_DiscreteJob_rec.attribute8
1838     ,       l_DiscreteJob_rec.attribute9
1839     ,       l_DiscreteJob_rec.attribute_category
1840     ,       l_DiscreteJob_rec.bom_reference_id
1841     ,       l_DiscreteJob_rec.bom_revision
1842     ,       l_DiscreteJob_rec.bom_revision_date
1843     ,       l_DiscreteJob_rec.build_sequence
1844     ,       l_DiscreteJob_rec.class_code
1845     ,       l_DiscreteJob_rec.common_bom_sequence_id
1846     ,       l_DiscreteJob_rec.common_rout_sequence_id
1847     ,       l_DiscreteJob_rec.completion_locator_id
1848     ,       l_DiscreteJob_rec.completion_subinventory
1849     ,       l_DiscreteJob_rec.created_by
1850     ,       l_DiscreteJob_rec.creation_date
1851     ,       l_DiscreteJob_rec.date_closed
1852     ,       l_DiscreteJob_rec.date_completed
1853     ,       l_DiscreteJob_rec.date_released
1854     ,       l_DiscreteJob_rec.demand_class
1855     ,       l_DiscreteJob_rec.description
1856     ,       l_DiscreteJob_rec.firm_planned_flag
1857     ,       l_DiscreteJob_rec.job_type
1858     ,       l_DiscreteJob_rec.kanban_card_id
1859     ,       l_DiscreteJob_rec.last_updated_by
1860     ,       l_DiscreteJob_rec.last_update_date
1861     ,       l_DiscreteJob_rec.last_update_login
1862     ,       l_DiscreteJob_rec.line_id
1863     ,       l_DiscreteJob_rec.lot_number
1864     ,       l_DiscreteJob_rec.material_account
1865     ,       l_DiscreteJob_rec.material_overhead_account
1866     ,       l_DiscreteJob_rec.material_variance_account
1867     ,       l_DiscreteJob_rec.mps_net_quantity
1868     ,       l_DiscreteJob_rec.mps_scheduled_cpl_date
1869     ,       l_DiscreteJob_rec.net_quantity
1870     ,       l_DiscreteJob_rec.organization_id
1871     ,       l_DiscreteJob_rec.osp_account
1872     ,       l_DiscreteJob_rec.osp_variance_account
1873     ,       l_DiscreteJob_rec.overcpl_tolerance_type
1874     ,       l_DiscreteJob_rec.overcpl_tolerance_value
1875     ,       l_DiscreteJob_rec.overhead_account
1876     ,       l_DiscreteJob_rec.overhead_variance_account
1877     ,       l_DiscreteJob_rec.primary_item_id
1878     ,       l_DiscreteJob_rec.program_application_id
1879     ,       l_DiscreteJob_rec.program_id
1880     ,       l_DiscreteJob_rec.program_update_date
1881 --    ,       l_DiscreteJob_rec.project_costed
1882     ,       l_DiscreteJob_rec.project_id
1883     ,       l_DiscreteJob_rec.quantity_completed
1884     ,       l_DiscreteJob_rec.quantity_scrapped
1885     ,       l_DiscreteJob_rec.request_id
1886     ,       l_DiscreteJob_rec.resource_account
1887     ,       l_DiscreteJob_rec.resource_variance_account
1888     ,       l_DiscreteJob_rec.routing_reference_id
1889     ,       l_DiscreteJob_rec.routing_revision
1890     ,       l_DiscreteJob_rec.routing_revision_date
1891     ,       l_DiscreteJob_rec.scheduled_completion_date
1892     ,       l_DiscreteJob_rec.scheduled_start_date
1893     ,       l_DiscreteJob_rec.schedule_group_id
1897     ,       l_DiscreteJob_rec.status_type
1894     ,       l_DiscreteJob_rec.source_code
1895     ,       l_DiscreteJob_rec.source_line_id
1896     ,       l_DiscreteJob_rec.start_quantity
1898     ,       l_DiscreteJob_rec.std_cost_adj_account
1899     ,       l_DiscreteJob_rec.task_id
1900     ,       l_DiscreteJob_rec.wip_entity_id
1901     ,       l_DiscreteJob_rec.wip_supply_type
1902     FROM    WIP_DISCRETE_JOBS
1903     WHERE   WIP_ENTITY_ID = p_DiscreteJob_rec.wip_entity_id
1904         FOR UPDATE NOWAIT;
1905 
1906     --  Row locked. Compare IN attributes to DB attributes.
1907 
1908     IF  WIP_GLOBALS.Equal(p_DiscreteJob_rec.alternate_bom_designator,
1909                          l_DiscreteJob_rec.alternate_bom_designator)
1910     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.alternate_rout_designator,
1911                          l_DiscreteJob_rec.alternate_rout_designator)
1912     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.attribute1,
1913                          l_DiscreteJob_rec.attribute1)
1914     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.attribute10,
1915                          l_DiscreteJob_rec.attribute10)
1916     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.attribute11,
1917                          l_DiscreteJob_rec.attribute11)
1918     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.attribute12,
1919                          l_DiscreteJob_rec.attribute12)
1920     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.attribute13,
1921                          l_DiscreteJob_rec.attribute13)
1922     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.attribute14,
1923                          l_DiscreteJob_rec.attribute14)
1924     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.attribute15,
1925                          l_DiscreteJob_rec.attribute15)
1926     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.attribute2,
1927                          l_DiscreteJob_rec.attribute2)
1928     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.attribute3,
1929                          l_DiscreteJob_rec.attribute3)
1930     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.attribute4,
1931                          l_DiscreteJob_rec.attribute4)
1932     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.attribute5,
1933                          l_DiscreteJob_rec.attribute5)
1934     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.attribute6,
1935                          l_DiscreteJob_rec.attribute6)
1936     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.attribute7,
1937                          l_DiscreteJob_rec.attribute7)
1938     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.attribute8,
1939                          l_DiscreteJob_rec.attribute8)
1940     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.attribute9,
1941                          l_DiscreteJob_rec.attribute9)
1942     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.attribute_category,
1943                          l_DiscreteJob_rec.attribute_category)
1944     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.bom_reference_id,
1945                          l_DiscreteJob_rec.bom_reference_id)
1946     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.bom_revision,
1947                          l_DiscreteJob_rec.bom_revision)
1948     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.bom_revision_date,
1949                          l_DiscreteJob_rec.bom_revision_date)
1950     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.build_sequence,
1951                          l_DiscreteJob_rec.build_sequence)
1952     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.class_code,
1953                          l_DiscreteJob_rec.class_code)
1954     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.common_bom_sequence_id,
1955                          l_DiscreteJob_rec.common_bom_sequence_id)
1956     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.common_rout_sequence_id,
1957                          l_DiscreteJob_rec.common_rout_sequence_id)
1958     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.completion_locator_id,
1959                          l_DiscreteJob_rec.completion_locator_id)
1960     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.completion_subinventory,
1961                          l_DiscreteJob_rec.completion_subinventory)
1962     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.created_by,
1963                          l_DiscreteJob_rec.created_by)
1964     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.creation_date,
1965                          l_DiscreteJob_rec.creation_date)
1966     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.date_closed,
1967                          l_DiscreteJob_rec.date_closed)
1968     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.date_completed,
1969                          l_DiscreteJob_rec.date_completed)
1970     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.date_released,
1971                          l_DiscreteJob_rec.date_released)
1972     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.demand_class,
1973                          l_DiscreteJob_rec.demand_class)
1974     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.description,
1975                          l_DiscreteJob_rec.description)
1976     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.firm_planned_flag,
1977                          l_DiscreteJob_rec.firm_planned_flag)
1978     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.job_type,
1979                          l_DiscreteJob_rec.job_type)
1980     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.kanban_card_id,
1981                          l_DiscreteJob_rec.kanban_card_id)
1982     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.last_updated_by,
1983                          l_DiscreteJob_rec.last_updated_by)
1984     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.last_update_date,
1985                          l_DiscreteJob_rec.last_update_date)
1986     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.last_update_login,
1987                          l_DiscreteJob_rec.last_update_login)
1988     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.line_id,
1989                          l_DiscreteJob_rec.line_id)
1990     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.lot_number,
1991                          l_DiscreteJob_rec.lot_number)
1992     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.material_account,
1993                          l_DiscreteJob_rec.material_account)
1994     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.material_overhead_account,
1995                          l_DiscreteJob_rec.material_overhead_account)
1999                          l_DiscreteJob_rec.mps_net_quantity)
1996     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.material_variance_account,
1997                          l_DiscreteJob_rec.material_variance_account)
1998     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.mps_net_quantity,
2000     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.mps_scheduled_cpl_date,
2001                          l_DiscreteJob_rec.mps_scheduled_cpl_date)
2002     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.net_quantity,
2003                          l_DiscreteJob_rec.net_quantity)
2004     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.organization_id,
2005                          l_DiscreteJob_rec.organization_id)
2006     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.osp_account,
2007                          l_DiscreteJob_rec.osp_account)
2008     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.osp_variance_account,
2009                          l_DiscreteJob_rec.osp_variance_account)
2010     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.overcpl_tolerance_type,
2011                          l_DiscreteJob_rec.overcpl_tolerance_type)
2012     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.overcpl_tolerance_value,
2013                          l_DiscreteJob_rec.overcpl_tolerance_value)
2014     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.overhead_account,
2015                          l_DiscreteJob_rec.overhead_account)
2016     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.overhead_variance_account,
2017                          l_DiscreteJob_rec.overhead_variance_account)
2018     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.primary_item_id,
2019                          l_DiscreteJob_rec.primary_item_id)
2020     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.program_application_id,
2021                          l_DiscreteJob_rec.program_application_id)
2022     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.program_id,
2023                          l_DiscreteJob_rec.program_id)
2024     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.program_update_date,
2025                          l_DiscreteJob_rec.program_update_date)
2026 --    AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.project_costed,
2027 --                         l_DiscreteJob_rec.project_costed)
2028     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.project_id,
2029                          l_DiscreteJob_rec.project_id)
2030     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.quantity_completed,
2031                          l_DiscreteJob_rec.quantity_completed)
2032     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.quantity_scrapped,
2033                          l_DiscreteJob_rec.quantity_scrapped)
2034     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.request_id,
2035                          l_DiscreteJob_rec.request_id)
2036     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.resource_account,
2037                          l_DiscreteJob_rec.resource_account)
2038     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.resource_variance_account,
2039                          l_DiscreteJob_rec.resource_variance_account)
2040     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.routing_reference_id,
2041                          l_DiscreteJob_rec.routing_reference_id)
2042     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.routing_revision,
2043                          l_DiscreteJob_rec.routing_revision)
2044     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.routing_revision_date,
2045                          l_DiscreteJob_rec.routing_revision_date)
2046     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.scheduled_completion_date,
2047                          l_DiscreteJob_rec.scheduled_completion_date)
2048     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.scheduled_start_date,
2049                          l_DiscreteJob_rec.scheduled_start_date)
2050     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.schedule_group_id,
2051                          l_DiscreteJob_rec.schedule_group_id)
2052     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.source_code,
2053                          l_DiscreteJob_rec.source_code)
2054     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.source_line_id,
2055                          l_DiscreteJob_rec.source_line_id)
2056     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.start_quantity,
2057                          l_DiscreteJob_rec.start_quantity)
2058     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.status_type,
2059                          l_DiscreteJob_rec.status_type)
2060     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.std_cost_adj_account,
2061                          l_DiscreteJob_rec.std_cost_adj_account)
2062     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.task_id,
2063                          l_DiscreteJob_rec.task_id)
2064     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.wip_entity_id,
2065                          l_DiscreteJob_rec.wip_entity_id)
2066     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec.wip_supply_type,
2067                          l_DiscreteJob_rec.wip_supply_type)
2068     THEN
2069 
2070         --  Row has not changed. Set out parameter.
2071 
2072         x_DiscreteJob_rec              := l_DiscreteJob_rec;
2073 
2074         --  Set return status
2075 
2076         x_return_status                := FND_API.G_RET_STS_SUCCESS;
2077         x_DiscreteJob_rec.return_status := FND_API.G_RET_STS_SUCCESS;
2078 
2079     ELSE
2080 
2081         --  Row has changed by another user.
2082 
2083         x_return_status                := FND_API.G_RET_STS_ERROR;
2084         x_DiscreteJob_rec.return_status := FND_API.G_RET_STS_ERROR;
2085 
2086         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
2087         THEN
2088 
2089             FND_MESSAGE.SET_NAME('WIP','OE_LOCK_ROW_CHANGED');
2090             FND_MSG_PUB.Add;
2091 
2092         END IF;
2093 
2094     END IF;
2095 
2096 EXCEPTION
2097 
2098     WHEN NO_DATA_FOUND THEN
2099 
2100         x_return_status                := FND_API.G_RET_STS_ERROR;
2101         x_DiscreteJob_rec.return_status := FND_API.G_RET_STS_ERROR;
2102 
2103         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
2104         THEN
2105 
2106             FND_MESSAGE.SET_NAME('WIP','OE_LOCK_ROW_DELETED');
2107             FND_MSG_PUB.Add;
2108 
2109         END IF;
2113         x_DiscreteJob_rec.return_status := FND_API.G_RET_STS_ERROR;
2110     WHEN APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION THEN
2111 
2112         x_return_status                := FND_API.G_RET_STS_ERROR;
2114 
2115         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
2116         THEN
2117 
2118             FND_MESSAGE.SET_NAME('WIP','OE_LOCK_ROW_ALREADY_LOCKED');
2119             FND_MSG_PUB.Add;
2120 
2121         END IF;
2122     WHEN OTHERS THEN
2123 
2124         x_return_status                := FND_API.G_RET_STS_UNEXP_ERROR;
2125         x_DiscreteJob_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2126 
2127         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2128         THEN
2129             FND_MSG_PUB.Add_Exc_Msg
2130             (   G_PKG_NAME
2131             ,   'Lock_Row'
2132             );
2133         END IF;
2134 
2135 END Lock_Row;
2136 
2137 
2138 
2139 FUNCTION Compare( p_DiscreteJob_rec1    IN WIP_Work_Order_PUB.Discretejob_Rec_Type,
2140                   p_DiscreteJob_rec2    IN WIP_Work_Order_PUB.Discretejob_Rec_Type)
2141   RETURN BOOLEAN
2142   IS
2143 BEGIN
2144 
2145     IF  WIP_GLOBALS.Equal(p_DiscreteJob_rec1.alternate_bom_designator,
2146 			  p_DiscreteJob_rec2.alternate_bom_designator)
2147       AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.alternate_rout_designator,
2148 			    p_DiscreteJob_rec2.alternate_rout_designator)
2149       AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.attribute1,
2150 			    p_DiscreteJob_rec2.attribute1)
2151       AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.attribute10,
2152 			    p_DiscreteJob_rec2.attribute10)
2153       AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.attribute11,
2154 			    p_DiscreteJob_rec2.attribute11)
2155       AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.attribute12,
2156 			    p_DiscreteJob_rec2.attribute12)
2157       AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.attribute13,
2158                          p_DiscreteJob_rec2.attribute13)
2159       AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.attribute14,
2160 			    p_DiscreteJob_rec2.attribute14)
2161       AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.attribute15,
2162 			    p_DiscreteJob_rec2.attribute15)
2163       AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.attribute2,
2164 			    p_DiscreteJob_rec2.attribute2)
2165       AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.attribute3,
2166 			    p_DiscreteJob_rec2.attribute3)
2167     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.attribute4,
2168                          p_DiscreteJob_rec2.attribute4)
2169     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.attribute5,
2170                          p_DiscreteJob_rec2.attribute5)
2171     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.attribute6,
2172                          p_DiscreteJob_rec2.attribute6)
2173     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.attribute7,
2174                          p_DiscreteJob_rec2.attribute7)
2175     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.attribute8,
2176                          p_DiscreteJob_rec2.attribute8)
2177     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.attribute9,
2178                          p_DiscreteJob_rec2.attribute9)
2179     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.attribute_category,
2180                          p_DiscreteJob_rec2.attribute_category)
2181     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.bom_reference_id,
2182                          p_DiscreteJob_rec2.bom_reference_id)
2183     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.bom_revision,
2184                          p_DiscreteJob_rec2.bom_revision)
2185     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.bom_revision_date,
2186                          p_DiscreteJob_rec2.bom_revision_date)
2187     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.build_sequence,
2188                          p_DiscreteJob_rec2.build_sequence)
2189     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.class_code,
2190                          p_DiscreteJob_rec2.class_code)
2191     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.common_bom_sequence_id,
2192                          p_DiscreteJob_rec2.common_bom_sequence_id)
2193     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.common_rout_sequence_id,
2194                          p_DiscreteJob_rec2.common_rout_sequence_id)
2195     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.completion_locator_id,
2196                          p_DiscreteJob_rec2.completion_locator_id)
2197     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.completion_subinventory,
2198                          p_DiscreteJob_rec2.completion_subinventory)
2199     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.created_by,
2200                          p_DiscreteJob_rec2.created_by)
2201     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.creation_date,
2202                          p_DiscreteJob_rec2.creation_date)
2203     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.date_closed,
2204                          p_DiscreteJob_rec2.date_closed)
2205     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.date_completed,
2206                          p_DiscreteJob_rec2.date_completed)
2207     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.date_released,
2208                          p_DiscreteJob_rec2.date_released)
2209     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.demand_class,
2210                          p_DiscreteJob_rec2.demand_class)
2211     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.description,
2212                          p_DiscreteJob_rec2.description)
2213     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.firm_planned_flag,
2214                          p_DiscreteJob_rec2.firm_planned_flag)
2215     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.job_type,
2216                          p_DiscreteJob_rec2.job_type)
2217     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.kanban_card_id,
2218                          p_DiscreteJob_rec2.kanban_card_id)
2219     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.last_updated_by,
2220                          p_DiscreteJob_rec2.last_updated_by)
2221     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.last_update_date,
2222                          p_DiscreteJob_rec2.last_update_date)
2223     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.last_update_login,
2227     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.lot_number,
2224                          p_DiscreteJob_rec2.last_update_login)
2225     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.line_id,
2226                          p_DiscreteJob_rec2.line_id)
2228                          p_DiscreteJob_rec2.lot_number)
2229     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.material_account,
2230                          p_DiscreteJob_rec2.material_account)
2231     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.material_overhead_account,
2232                          p_DiscreteJob_rec2.material_overhead_account)
2233     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.material_variance_account,
2234                          p_DiscreteJob_rec2.material_variance_account)
2235     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.mps_net_quantity,
2236                          p_DiscreteJob_rec2.mps_net_quantity)
2237     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.mps_scheduled_cpl_date,
2238                          p_DiscreteJob_rec2.mps_scheduled_cpl_date)
2239     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.net_quantity,
2240                          p_DiscreteJob_rec2.net_quantity)
2241     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.organization_id,
2242                          p_DiscreteJob_rec2.organization_id)
2243     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.osp_account,
2244                          p_DiscreteJob_rec2.osp_account)
2245     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.osp_variance_account,
2246                          p_DiscreteJob_rec2.osp_variance_account)
2247     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.overcpl_tolerance_type,
2248                          p_DiscreteJob_rec2.overcpl_tolerance_type)
2249     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.overcpl_tolerance_value,
2250                          p_DiscreteJob_rec2.overcpl_tolerance_value)
2251     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.overhead_account,
2252                          p_DiscreteJob_rec2.overhead_account)
2253     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.overhead_variance_account,
2254                          p_DiscreteJob_rec2.overhead_variance_account)
2255     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.primary_item_id,
2256                          p_DiscreteJob_rec2.primary_item_id)
2257     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.program_application_id,
2258                          p_DiscreteJob_rec2.program_application_id)
2259     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.program_id,
2260                          p_DiscreteJob_rec2.program_id)
2261     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.program_update_date,
2262                          p_DiscreteJob_rec2.program_update_date)
2263     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.project_costed,
2264                          p_DiscreteJob_rec2.project_costed)
2265     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.project_id,
2266                          p_DiscreteJob_rec2.project_id)
2267     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.quantity_completed,
2268                          p_DiscreteJob_rec2.quantity_completed)
2269     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.quantity_scrapped,
2270                          p_DiscreteJob_rec2.quantity_scrapped)
2271     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.request_id,
2272                          p_DiscreteJob_rec2.request_id)
2273     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.resource_account,
2274                          p_DiscreteJob_rec2.resource_account)
2275     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.resource_variance_account,
2276                          p_DiscreteJob_rec2.resource_variance_account)
2277     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.routing_reference_id,
2278                          p_DiscreteJob_rec2.routing_reference_id)
2279     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.routing_revision,
2280                          p_DiscreteJob_rec2.routing_revision)
2281     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.routing_revision_date,
2282                          p_DiscreteJob_rec2.routing_revision_date)
2283     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.scheduled_completion_date,
2284                          p_DiscreteJob_rec2.scheduled_completion_date)
2285     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.scheduled_start_date,
2286                          p_DiscreteJob_rec2.scheduled_start_date)
2287     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.schedule_group_id,
2288                          p_DiscreteJob_rec2.schedule_group_id)
2289     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.source_code,
2290                          p_DiscreteJob_rec2.source_code)
2291     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.source_line_id,
2292                          p_DiscreteJob_rec2.source_line_id)
2293     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.start_quantity,
2294                          p_DiscreteJob_rec2.start_quantity)
2295     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.status_type,
2296                          p_DiscreteJob_rec2.status_type)
2297     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.std_cost_adj_account,
2298                          p_DiscreteJob_rec2.std_cost_adj_account)
2299     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.task_id,
2300                          p_DiscreteJob_rec2.task_id)
2301     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.wip_entity_id,
2302                          p_DiscreteJob_rec2.wip_entity_id)
2303     AND WIP_GLOBALS.Equal(p_DiscreteJob_rec1.wip_supply_type,
2304                          p_DiscreteJob_rec2.wip_supply_type)
2305       THEN
2306        RETURN TRUE;
2307      ELSE
2308        RETURN FALSE;
2309     END IF;
2310 END Compare;
2311 
2312 PROCEDURE dprintf(p_DiscreteJob_rec    IN WIP_Work_Order_PUB.Discretejob_Rec_Type)
2313   IS
2314 BEGIN
2315 
2316    null;
2317 -- dbms_output.new_line;
2318 -- dbms_output.put_line('Discrete Job Record:');
2319 -- dbms_output.put_line('-------------------');
2320 -- dbms_output.put_line('completion_locator_id    : ' || To_char(p_DiscreteJob_rec.completion_locator_id));
2321 -- dbms_output.put_line('completion_subinventory  : ' || p_DiscreteJob_rec.completion_subinventory);
2322 -- dbms_output.put_line('date_completed           : ' || To_char(p_DiscreteJob_rec.date_completed,WIP_CONSTANTS.DATE_FMT));
2326 -- dbms_output.put_line('net_quantity             : ' || To_char(p_DiscreteJob_rec.net_quantity));
2323 -- dbms_output.put_line('date_released            : ' || To_char(p_DiscreteJob_rec.date_released,WIP_CONSTANTS.DATE_FMT));
2324 -- dbms_output.put_line('description              : ' || p_DiscreteJob_rec.description);
2325 -- dbms_output.put_line('job_type                 : ' || To_char(p_DiscreteJob_rec.job_type));
2327 -- dbms_output.put_line('organization_id          : ' || To_char(p_DiscreteJob_rec.organization_id));
2328 -- dbms_output.put_line('primary_item_id          : ' || To_char(p_DiscreteJob_rec.primary_item_id));
2329 -- dbms_output.put_line('quantity_completed       : ' || To_char(p_DiscreteJob_rec.quantity_completed));
2330 -- dbms_output.put_line('quantity_scrapped        : ' || To_char(p_DiscreteJob_rec.quantity_scrapped));
2331 -- dbms_output.put_line('scheduled_completion_date: ' || To_char(p_DiscreteJob_rec.scheduled_completion_date,WIP_CONSTANTS.DATE_FMT));
2332 -- dbms_output.put_line('scheduled_start_date     : ' || To_char(p_DiscreteJob_rec.scheduled_start_date,WIP_CONSTANTS.DATE_FMT));
2333 -- dbms_output.put_line('start_quantity           : ' || To_char(p_DiscreteJob_rec.start_quantity));
2334 -- dbms_output.put_line('status_type              : ' || To_char(p_DiscreteJob_rec.status_type));
2335 -- dbms_output.put_line('wip_entity_id            : ' || To_char(p_DiscreteJob_rec.wip_entity_id));
2336 -- dbms_output.put_line('kanban_card_id           : ' || To_char(p_DiscreteJob_rec.kanban_card_id));
2337 -- dbms_output.put_line('return_status            : ' || p_DiscreteJob_rec.return_status);
2338 -- dbms_output.put_line('db_flag                  : ' || p_DiscreteJob_rec.db_flag);
2339 -- dbms_output.put_line('action                   : ' || p_DiscreteJob_rec.action);
2340 -- dbms_output.put_line('End Discrete Job Record');
2341 EXCEPTION
2342    WHEN OTHERS THEN
2343       NULL;
2344 
2345 END dprintf;
2346 
2347 PROCEDURE update_job_details(p_org_id IN NUMBER,
2348                              p_wip_entity_id IN NUMBER,
2349                              p_due_date IN DATE,
2350                              p_line_id IN NUMBER,
2351                              p_schedule_group_id IN NUMBER,
2352                              p_build_sequence IN NUMBER,
2353                              p_expedited IN VARCHAR2,
2354                              p_initialize IN VARCHAR2,
2355                              x_err_msg OUT NOCOPY VARCHAR2,
2356                              x_return_status OUT NOCOPY VARCHAR2) IS
2357 CURSOR c_build_seq IS
2358 	SELECT 1
2359 	FROM WIP_DISCRETE_JOBS
2360 	WHERE SCHEDULE_GROUP_ID = p_schedule_group_id
2361 	AND   BUILD_SEQUENCE = p_build_sequence
2362 	AND   WIP_ENTITY_ID <> NVL(p_wip_entity_id, -1);
2363 
2364 CURSOR c_jobname IS
2365   select wip_entity_name
2366   from wip_entities
2367   where wip_entity_id = p_wip_entity_id;
2368 
2369   x_dummy varchar(1);
2370   x_wip_entity_name VARCHAR2(240);
2371 
2372 BEGIN
2373 
2374   x_return_status := FND_API.G_RET_STS_ERROR;
2375 
2376   if (p_initialize = 'Y') then
2377     fnd_msg_pub.initialize;
2378   end if;
2379 
2380   open c_jobname;
2381   fetch c_jobname into x_wip_entity_name;
2382   close c_jobname;
2383 
2384   -- if build sequence with no schedule group then error out
2385   if (p_build_sequence is not null and p_schedule_group_id is null) then
2386     x_err_msg := x_wip_entity_name || ' ' || fnd_message.get_string('WIP','WIP_SCHEDULE_GROUP_NULL');
2387     fnd_msg_pub.add_exc_msg(p_pkg_name => 'wip_discretejob_util',
2388                               p_procedure_name => 'update_job_details',
2389                               p_error_text => x_err_msg);
2390 
2391     -- RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2392     return;
2393   end if;
2394 
2395   -- Verify that the schedule group and build sequence are unique
2396   if (p_build_sequence is not null) then
2397 
2398     open c_build_seq;
2399     fetch c_build_seq into x_dummy;
2400 
2401     if c_build_seq%found then
2402        x_err_msg := x_wip_entity_name || ' ' || fnd_message.get_string('WIP','WIP_BUILD_SEQUENCE');
2403        fnd_msg_pub.add_exc_msg(p_pkg_name => 'wip_discretejob_util',
2404                               p_procedure_name => 'update_job_details',
2405                               p_error_text => x_err_msg);
2406 
2407       --RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2408 	close c_build_seq;
2409         return;
2410     end if;
2411 
2412     close c_build_seq;
2413   end if;
2414 
2415   update wip_discrete_jobs
2416     set due_date = p_due_date,
2417         line_id = p_line_id,
2418         schedule_group_id = p_schedule_group_id,
2419         build_sequence = p_build_sequence,
2420         expedited = p_expedited
2421     where organization_id = p_org_id and
2422           wip_entity_id = p_wip_entity_id;
2423 
2424 
2425   x_return_status := FND_API.G_RET_STS_SUCCESS;
2426 
2427   exception
2428     when fnd_api.g_exc_unexpected_error then
2429       x_return_status := fnd_api.g_ret_sts_unexp_error;
2430 
2431     when others then
2432       x_return_status := fnd_api.g_ret_sts_unexp_error;
2433       fnd_msg_pub.add_exc_msg(p_pkg_name => 'wip_discretejob_util',
2434                               p_procedure_name => 'update_job_details',
2435                               p_error_text => SQLERRM);
2436 
2437 END update_job_details;
2438 
2439 
2440 END WIP_Discretejob_Util;