DBA Data[Home] [Help]

PACKAGE BODY: APPS.WIP_DEFAULT_RES

Source


1 PACKAGE BODY WIP_Default_Res AS
2 /* $Header: WIPDRESB.pls 120.4.12020000.3 2013/03/12 13:24:45 akuppa ship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'WIP_Default_Res';
7 
8 --  Package global used within the package.
9 
10 --  The get_***_attr procedures populate the global variables listed
11 --  below.  When the get_<attr_name> procedure get called, they will
12 --  default from the global variables if they have been populated
13 
14 g_Res_rec                     WIP_Transaction_PUB.Res_Rec_Type;
15 g_RCV_txn                     WIP_Transaction_PUB.Rcv_Txn_Type;
16 g_WIP_op_res                  WIP_Transaction_PUB.WIP_Op_Res_Type;
17 g_PO_Dstr                     WIP_Transaction_PUB.PO_Dist_Type;
18 g_Wip_Entities_rec            WIP_Work_Order_PUB.Wip_Entities_Rec_Type :=
19                                 WIP_Work_Order_PUB.G_MISS_WIP_ENTITIES_REC;
20 g_BOM_res                     WIP_Transaction_PUB.BOM_Resource_Type;
21 
22 --  Get functions.
23 
24 /* Private Procedure that will populate all the attributes from RCV_TRANSACTIONS_INTERFACE. Populating each attribute individually will be a performance hit, so call this procedure once */
25 PROCEDURE get_rti_attr
26 IS
27 
28    l_wip_entity_id              NUMBER := FND_API.G_MISS_NUM;
29    l_wip_line_id                NUMBER := FND_API.G_MISS_NUM;
30    l_wip_repetitive_schedule_id NUMBER := FND_API.G_MISS_NUM;
31    l_wip_operation_seq_num      NUMBER := FND_API.G_MISS_NUM;
32    l_wip_resource_seq_num       NUMBER := FND_API.G_MISS_NUM;
33    l_transaction_date           DATE := FND_API.G_MISS_DATE;
34    l_creation_date              DATE := FND_API.G_MISS_DATE;
35    l_created_by                 NUMBER := FND_API.G_MISS_NUM;
36    l_item_id                    NUMBER := FND_API.G_MISS_NUM;
37    l_last_update_date           DATE := FND_API.G_MISS_DATE;
38    l_last_updated_by            NUMBER := FND_API.G_MISS_NUM;
39    l_last_update_login          NUMBER := FND_API.G_MISS_NUM;
40    l_organization_id            NUMBER := FND_API.G_MISS_NUM;
41    l_primary_unit_of_measure    VARCHAR2(25) := FND_API.G_MISS_CHAR;
42    l_reason_id                  NUMBER := FND_API.G_MISS_NUM;
43    l_source_doc_quantity        NUMBER := FND_API.G_MISS_NUM;
44    l_source_doc_unit_of_measure VARCHAR2(25) := FND_API.G_MISS_CHAR;
45    l_comments                   VARCHAR2(240) := FND_API.G_MISS_CHAR;
46    l_quantity                   NUMBER :=  FND_API.G_MISS_NUM;
47    l_unit_of_measure            VARCHAR2(25) := FND_API.G_MISS_CHAR;
48    l_po_header_id               NUMBER := FND_API.G_MISS_NUM;
49    l_po_line_id                 NUMBER := FND_API.G_MISS_NUM;
50    l_po_unit_price              NUMBER := FND_API.G_MISS_NUM;
51    l_currency_code              VARCHAR2(15) := FND_API.G_MISS_CHAR;
52    l_currency_conversion_type   VARCHAR2(10) := FND_API.G_MISS_CHAR;
53    l_currency_conversion_rate   NUMBER := FND_API.G_MISS_NUM;
54    l_currency_conversion_date   DATE := FND_API.G_MISS_DATE;
55 BEGIN
56 
57    IF g_Res_rec.source_code = 'RCV'
58      AND g_Res_rec.source_line_id IS NOT NULL THEN
59 
60       --dbms_output.put_line('osp.rcv_transaction_id = ' || g_Res_rec.rcv_transaction_id);
61 
62       SELECT wip_entity_id
63         , wip_line_id
64         , wip_repetitive_schedule_id
65         , wip_operation_seq_num
66         , wip_resource_seq_num
67         , transaction_date
68         , creation_date
69         , created_by
70         , item_id
71         , last_update_date
72         , last_updated_by
73         , last_update_login
74         , to_organization_id
75         , reason_id
76         , source_doc_unit_of_measure
77         , comments
78         , po_header_id
79         , po_line_id
80         , po_unit_price
81         , quantity
82         , unit_of_measure
83         , primary_unit_of_measure
84         , currency_code
85         , currency_conversion_type
86         , currency_conversion_rate
87         , currency_conversion_date
88         INTO l_wip_entity_id
89         , l_wip_line_id
90         , l_wip_repetitive_schedule_id
91         , l_wip_operation_seq_num
92         , l_wip_resource_seq_num
93         , l_transaction_date
94         , l_creation_date
95         , l_created_by
96         , l_item_id
97         , l_last_update_date
98         , l_last_updated_by
99         , l_last_update_login
100         , l_organization_id
101         , l_reason_id
102         , l_source_doc_unit_of_measure
103         , l_comments
104         , l_po_header_id
105         , l_po_line_id
106         , l_po_unit_price
107         , l_quantity
108         , l_unit_of_measure
109         , l_primary_unit_of_measure
110         , l_currency_code
111         , l_currency_conversion_type
112         , l_currency_conversion_rate
113         , l_currency_conversion_date
114         FROM RCV_TRANSACTIONS_INTERFACE
115         WHERE interface_transaction_id = g_Res_rec.source_line_id;
116 
117 
118       IF g_RCV_txn.quantity IS NULL THEN
119          g_RCV_txn.quantity := l_quantity;
120       END IF;
121       IF g_RCV_txn.unit_of_measure IS NULL THEN
122          g_RCV_txn.unit_of_measure := l_unit_of_measure;
123       END IF;
124       IF g_RCV_txn.wip_entity_id IS NULL THEN
125          g_RCV_txn.Wip_Entity_Id := l_wip_entity_id;
126       END IF;
127       IF g_RCV_txn.wip_line_id IS NULL THEN
128          g_RCV_txn.wip_line_Id   := l_wip_line_id;
129       END IF;
130       IF g_RCV_txn.wip_repetitive_schedule_id IS NULL THEN
131          g_RCV_txn.wip_repetitive_schedule_id := l_wip_repetitive_schedule_id;
132       END IF;
133       IF g_RCV_txn.wip_operation_seq_num IS NULL THEN
134          g_RCV_txn.wip_operation_seq_num := l_wip_operation_seq_num;
135       END IF;
136       IF g_RCV_txn.wip_resource_seq_num IS NULL THEN
137          g_RCV_txn.wip_resource_seq_Num := l_wip_resource_seq_num;
138       END IF;
139       IF g_RCV_txn.transaction_date IS NULL THEN
140          g_RCV_txn.Transaction_Date := l_transaction_date;
141       END IF;
142       IF g_RCV_txn.creation_date IS NULL THEN
143          g_RCV_txn.Creation_Date := l_creation_date;
144       END IF;
145       IF g_RCV_txn.created_by IS NULL THEN
146          g_RCV_txn.Created_By := l_created_by;
147       END IF;
148       IF g_RCV_txn.item_id IS NULL THEN
149          g_RCV_txn.item_id := l_item_id;
150       END IF;
151       IF g_RCV_txn.last_update_date IS NULL THEN
152          g_RCV_txn.Last_Update_Date := l_last_update_date;
153       END IF;
154       IF g_RCV_txn.last_updated_by IS NULL THEN
155          g_RCV_txn.Last_Updated_By := l_last_updated_by;
156       END IF;
157       IF g_RCV_txn.last_update_login IS NULL THEN
158          g_RCV_txn.Last_Update_Login := l_last_update_login;
159       END IF;
160       IF g_RCV_txn.organization_id IS NULL THEN
161          g_RCV_txn.Organization_Id := l_organization_id;
162       END IF;
163       IF g_RCV_txn.reason_id IS NULL THEN
164          g_RCV_txn.Reason_Id := l_reason_id;
165       END IF;
166       IF g_RCV_txn.source_doc_unit_of_measure IS NULL THEN
167          g_RCV_txn.source_doc_unit_of_measure := l_source_doc_unit_of_measure;
168       END IF;
169       IF g_RCV_txn.comments IS NULL THEN
170          g_RCV_txn.comments := l_comments;
171       END IF;
172       IF g_RCV_txn.po_header_id IS NULL THEN
173          g_RCV_txn.Po_Header_Id := l_po_header_id;
174       END IF;
175       IF g_RCV_txn.po_line_id IS NULL THEN
176          g_RCV_txn.Po_Line_Id := l_po_line_id;
177       END IF;
178       IF g_RCV_txn.po_unit_price IS NULL THEN
179          g_RCV_txn.Po_unit_price := l_po_unit_price;
180       END IF;
181       IF g_RCV_txn.primary_unit_of_measure IS NULL THEN
182          g_RCV_txn.primary_unit_of_measure := l_primary_unit_of_measure;
183       END IF;
184       IF g_RCV_txn.currency_code IS NULL THEN
185          g_RCV_txn.Currency_Code := l_currency_code;
186       END IF;
187       IF g_RCV_txn.currency_conversion_type IS NULL THEN
188          g_RCV_txn.currency_conversion_type := l_currency_conversion_type;
189       END IF;
190       IF g_RCV_txn.currency_conversion_rate IS NULL THEN
191          g_RCV_txn.currency_conversion_rate := l_currency_conversion_rate;
192       END IF;
193       IF g_RCV_txn.currency_conversion_date IS NULL THEN
194          g_RCV_txn.currency_conversion_date := l_currency_conversion_date;
195       END IF;
196 
197    END IF;
198 
199 EXCEPTION
200    WHEN OTHERS THEN
201      fnd_msg_pub.add_exc_msg('WIP_Default_Res', 'get_rti_attr');
202 END get_rti_attr;
203 
204 
205 
206 /* Private Procedure that will populate all the attributes from WIP_OPERATION_RESOURCES. Populating each attribute individually will be a performance hit, so call this procedure in all the attributes it populates.  */
207 
208 PROCEDURE get_wor_attr
209   IS
210      l_activity_id             NUMBER := FND_API.G_MISS_NUM;
211      l_resource_id             NUMBER := FND_API.G_MISS_NUM;
212      l_usage_rate_or_amount    NUMBER := FND_API.G_MISS_NUM;
213      l_basis_type              NUMBER := FND_API.G_MISS_NUM;
214      l_autocharge_type         NUMBER := FND_API.G_MISS_NUM;
215      l_uom_code                VARCHAR2(3) := FND_API.G_MISS_CHAR;
216      l_std_rate_flag           NUMBER := FND_API.G_MISS_NUM;
217 
218 BEGIN
219 
220    IF g_Res_rec.wip_entity_id IS NOT NULL
221      AND g_Res_rec.operation_seq_num IS NOT NULL
222      AND g_Res_rec.resource_seq_num IS NOT NULL
223      AND g_Res_rec.organization_id IS NOT NULL
224      THEN
225 
226       SELECT activity_id
227         , resource_id
228         , usage_rate_or_amount
229         , basis_type
230         , autocharge_type
231         , uom_code
232         , standard_rate_flag
233         INTO l_activity_id
234         , l_resource_id
235         , l_usage_rate_or_amount
236         , l_basis_type
237         , l_autocharge_type
238         , l_uom_code
239         , l_std_rate_flag
240         FROM wip_operation_resources
241         WHERE wip_entity_id = g_Res_rec.wip_entity_id
242         AND   organization_id = g_Res_rec.organization_id
243         AND   operation_seq_num = g_Res_rec.operation_seq_num
244         AND   resource_seq_num = g_Res_rec.resource_seq_num
245         AND   (repetitive_schedule_id IS NULL
246                OR repetitive_schedule_id = g_Res_rec.repetitive_schedule_id);
247 
248 
249       IF g_WIP_op_res.activity_id IS NULL THEN
250          g_WIP_op_res.activity_id := l_activity_id;
251       END IF;
252       IF g_WIP_op_res.resource_id IS NULL THEN
253          g_WIP_op_res.resource_id := l_resource_id;
254       END IF;
255       IF g_WIP_op_res.usage_rate_or_amount IS NULL THEN
256          g_WIP_op_res.usage_rate_or_amount := l_usage_rate_or_amount;
257       END IF;
258       IF g_WIP_op_res.basis_type IS NULL THEN
259          g_WIP_op_res.basis_type := l_basis_type;
260       END IF;
261       IF g_WIP_op_res.autocharge_type IS NULL THEN
262          g_WIP_op_res.autocharge_type := l_autocharge_type;
263       END IF;
264       IF g_WIP_op_res.uom_code IS NULL THEN
265          g_WIP_op_res.uom_code := l_uom_code;
266       END IF;
267       IF g_WIP_op_res.uom_code IS NULL THEN
268          g_WIP_op_res.uom_code := l_uom_code;
269       END IF;
270       IF g_WIP_op_res.std_rate_flag IS NULL THEN
271          g_WIP_op_res.std_rate_flag := l_std_rate_flag;
272       END IF;
273 
274    END IF;
275 
276 EXCEPTION
277    WHEN OTHERS THEN
278      fnd_msg_pub.add_exc_msg('WIP_Default_Res', 'get_wor_attr');
279 END get_wor_attr;
280 
281 
282 PROCEDURE get_we_attr
283 IS
284 BEGIN
285 
286    IF g_Res_rec.wip_entity_id IS NOT NULL THEN
287 
288       g_Wip_Entities_rec := WIP_Wip_Entities_Util.Query_Row(g_Res_rec.wip_entity_id);
289 
290    END IF;
291 
292 EXCEPTION
293    WHEN OTHERS THEN
294      fnd_msg_pub.add_exc_msg('WIP_Default_Res', 'get_we_attr');
295 END get_we_attr;
296 
297 
298 PROCEDURE get_pd_attr
299 IS
300    l_project_id         NUMBER  := FND_API.G_MISS_NUM;
301    l_task_id            NUMBER  := FND_API.G_MISS_NUM;
302    l_nonrecoverable_tax NUMBER  := FND_API.G_MISS_NUM;
303    l_quantity_ordered   NUMBER  := FND_API.G_MISS_NUM;
304    l_po_uom             VARCHAR2(25) := FND_API.G_MISS_CHAR;
305 BEGIN
306 
307    IF g_Res_rec.source_code = 'RCV'
308      AND g_Res_rec.source_line_id IS NOT NULL THEN
309 
310       SELECT pd.project_id
311         , pd.task_id
312         , nonrecoverable_tax
313         , quantity_ordered
314         INTO l_project_id
315         , l_task_id
316         , l_nonrecoverable_tax
317         , l_quantity_ordered
318         FROM po_distributions_all pd,
319         rcv_transactions_interface rti
320         WHERE rti.po_distribution_id = pd.po_distribution_id
321         AND   rti.interface_transaction_id = g_Res_rec.source_line_id;
322 
323       IF g_PO_Dstr.project_id IS NULL THEN
324          g_PO_Dstr.project_id := l_project_id;
325       END IF;
326       IF g_PO_Dstr.task_id IS NULL THEN
327          g_PO_Dstr.task_id := l_task_id;
328       END IF;
329       IF g_PO_Dstr.nonrecoverable_tax IS NULL THEN
330          g_PO_Dstr.nonrecoverable_tax := nvl(l_nonrecoverable_tax, 0 );
331       END IF;
332       IF g_PO_Dstr.primary_quantity_ordered IS NULL THEN
333 
334          IF g_RCV_txn.item_id IS NULL
335           OR g_RCV_txn.primary_unit_of_measure IS NULL
336           OR g_RCV_txn.po_line_id IS NULL THEN
337                 get_rti_attr();
338          END IF;
339 
340          /* get the uom that was used on the Purchase Order */
341          select UNIT_MEAS_LOOKUP_CODE
342          into l_po_uom
343          from po_lines_all
344          where po_line_id = g_RCV_txn.po_line_id;
345 
346         /*
347            Fixed Bug#2139994. Changed g_RCV_txn.quantity to l_quantity_ordered
348            in the from_quantity parameter
349         */
350 
351          g_PO_Dstr.primary_quantity_ordered :=
352                 inv_convert.inv_um_convert(
353                         item_id         => g_RCV_txn.item_id,
354                         precision       => NULL,
355                         from_quantity   => l_quantity_ordered,
356                         from_unit       => NULL,
357                         to_unit         => NULL,
358                         from_name       => l_po_uom,
359                         to_name         => g_RCV_txn.primary_unit_of_measure
360                         );
361       END IF;
362    END IF;
363 
364 EXCEPTION
365    WHEN OTHERS THEN
366      fnd_msg_pub.add_exc_msg('WIP_Default_Res', 'get_pd_attr');
367 END get_pd_attr;
368 
369 PROCEDURE get_br_attr
370 IS
371    l_resource_code VARCHAR2(10) := FND_API.G_MISS_CHAR;
372    l_resource_type NUMBER       := FND_API.G_MISS_NUM;
373 BEGIN
374 
375    IF g_Res_rec.resource_id IS NOT NULL THEN
376 
377       SELECT resource_code
378         , resource_type
379         INTO l_resource_code
380         , l_resource_type
381         FROM bom_resources br
382         WHERE br.resource_id = g_Res_rec.resource_id;
383 
384       IF g_BOM_res.resource_code IS NULL THEN
385          g_BOM_res.resource_code := l_resource_code;
386       END IF;
387       IF g_BOM_res.resource_type IS NULL THEN
388          g_BOM_res.resource_type := l_resource_type;
389       END IF;
390 
391    END IF;
392 
393 EXCEPTION
394    WHEN OTHERS THEN
395      fnd_msg_pub.add_exc_msg('WIP_Default_Res', 'get_br_attr');
396 END get_br_attr;
397 
398 FUNCTION Get_Acct_Period
399 RETURN NUMBER
400 IS
401   l_acct_period_id      NUMBER;
402   l_open_past_period    BOOLEAN;
403 BEGIN
404 
405    IF g_Res_rec.acct_period_id IS NOT NULL THEN
406       RETURN g_Res_rec.acct_period_id;
407    END IF;
408 
409    IF ( ( ( g_Res_rec.source_code = 'RCV'
410             AND g_Res_rec.source_line_id IS NOT NULL )
411          OR g_Res_rec.source_code = 'SFCB'
412         )
413        AND g_Res_rec.transaction_date IS NOT NULL
414        AND g_Res_rec.organization_id IS NOT NULL
415      )
416      THEN
417 
418    /* Remove for timezone support in J
419       SELECT oap.acct_period_id
420         INTO   l_acct_period_id
421         FROM   org_acct_periods oap
422         WHERE  oap.organization_id = g_Res_rec.organization_id
423         AND    oap.period_close_date is null
424         AND    trunc(g_Res_rec.transaction_date) between
425                trunc(oap.period_start_date) and
426                trunc(oap.schedule_close_date);
427     */
428 
429       invttmtx.tdatechk(org_id => g_Res_rec.organization_id,
430                      transaction_date => g_Res_rec.transaction_date,
431                      period_id => l_acct_period_id,
432                      open_past_period => l_open_past_period );
433 
434       RETURN l_acct_period_id;
435    END IF;
436 
437    RETURN NULL;
438 
439 EXCEPTION
440    WHEN OTHERS THEN
441       RETURN FND_API.G_MISS_NUM;
442 
443 END Get_Acct_Period;
444 
445 FUNCTION Get_Activity
446 RETURN NUMBER
447 IS
448    l_activity_id NUMBER := FND_API.G_MISS_NUM;
449 BEGIN
450 
451    IF g_Res_rec.activity_id IS NOT NULL THEN
452       RETURN g_Res_rec.activity_id;
453    END IF;
454 
455    IF g_WIP_op_res.activity_id IS NOT NULL THEN
456       RETURN g_WIP_op_res.activity_id;
457    ELSE
458       get_wor_attr();
459       RETURN g_WIP_op_res.activity_id;
460    END IF;
461 
462    RETURN NULL;
463 
464 EXCEPTION
465    WHEN OTHERS THEN
466       RETURN FND_API.G_MISS_NUM;
467 
468 END Get_Activity;
469 
470 FUNCTION Get_Activity_Name
471 RETURN VARCHAR2
472 IS
473 BEGIN
474 
475    IF g_Res_rec.activity_name IS NOT NULL THEN
476       RETURN g_Res_rec.activity_name;
477    END IF;
478 
479    IF g_Res_rec.activity_id IS NOT NULL then
480 
481       SELECT activity
482         INTO g_Res_rec.activity_name
483         FROM cst_activities
484         WHERE activity_id = g_Res_rec.activity_id;
485 
486       RETURN g_Res_rec.activity_name;
487    END IF;
488 
489    RETURN NULL;
490 
491 EXCEPTION
492    WHEN OTHERS THEN
493       RETURN FND_API.G_MISS_CHAR;
494 
495 END Get_Activity_Name;
496 
497 FUNCTION Get_Actual_Resource_Rate
498 RETURN NUMBER
499 IS
500   l_actual_resource_rate              NUMBER := FND_API.G_MISS_NUM;
501   l_uom_basis  VARCHAR2(25);
502   l_uom_code   VARCHAR2(3);
503   l_po_uom     VARCHAR2(25) ;
504   l_po_unit_price NUMBER;
505   l_conversion_factor NUMBER;
506   l_currency_conversion_rate NUMBER;
507   l_tax_amount        NUMBER;
508   l_resource_qty_ordered NUMBER ;
509   l_po_qty NUMBER := 1 ;
510 BEGIN
511 
512   IF g_Res_rec.actual_resource_rate IS NOT NULL THEN
513     RETURN g_Res_rec.actual_resource_rate;
514   END IF;
515 
516   IF g_Res_rec.source_code = 'RCV'
517     AND g_Res_rec.source_line_id IS NOT NULL THEN
518       IF g_RCV_txn.item_id IS NOT NULL
519         OR g_RCV_txn.organization_id IS NOT NULL THEN
520           get_rti_attr();
521       END IF;
522 
523       SELECT msi.outside_operation_uom_type
524       INTO l_uom_basis
525       FROM mtl_system_items msi
526       WHERE msi.inventory_item_id = g_RCV_txn.item_id
527       AND   msi.organization_id = g_RCV_txn.organization_id;
528 
529      /* Fixed for Bug#2031267 */
530 
531       IF g_po_dstr.nonrecoverable_tax IS NULL
532           OR g_po_dstr.primary_quantity_ordered IS NULL THEN
533              get_pd_attr();
534       END IF;
535 
536     /* Fixed for Bug#2917061  */
537 
538       if l_uom_basis = 'ASSEMBLY' AND g_Res_rec.usage_rate_or_amount <> 0 then
539              l_resource_qty_ordered := g_po_dstr.primary_quantity_ordered * g_Res_rec.usage_rate_or_amount ;
540       else
541              l_resource_qty_ordered := g_po_dstr.primary_quantity_ordered  ;
542       end if ;
543 
544       /* Fix for Bug#2139994 */
545 
546       l_tax_amount := nvl((g_po_dstr.nonrecoverable_tax/l_resource_qty_ordered) , 0) ;
547 
548        /* Fix for Bug# 2396342 */
549 
550        select UNIT_MEAS_LOOKUP_CODE
551        into l_po_uom
552        from po_lines_all
553        where po_line_id = g_RCV_txn.po_line_id;
554 
555       if l_po_uom  <> g_RCV_txn.primary_unit_of_measure then
556          l_conversion_factor  := inv_convert.inv_um_convert
557                                      (g_RCV_txn.item_id,
558                                       NULL,
559                                       1,
560                                       NULL,
561                                       NULL,
562                                       g_RCV_txn.primary_unit_of_measure,
563                                       l_po_uom
564                                      );
565       else
566         l_conversion_factor := 1 ;
567       end if ;
568 
569       /* return null when inv_um_convert can't convert */
570 
571       if l_conversion_factor = -99999 then
572                 RETURN FND_API.G_MISS_NUM;
573       end if ;
574 
575       l_po_unit_price := g_RCV_txn.po_unit_price  * l_conversion_factor ;
576 
577 
578       IF l_uom_basis = 'ASSEMBLY' AND g_Res_rec.transaction_quantity IS NOT NULL
579           AND g_Res_rec.usage_rate_or_amount IS NOT NULL
580           AND g_RCV_txn.po_unit_price IS NOT NULL
581           AND g_RCV_txn.unit_of_measure IS NOT NULL THEN
582 
583           /* Fix for bug 4155822: Divide by l_po_unit_price by g_Res_rec.usage_rate_or_amount only if
584              g_Res_rec.usage_rate_or_amount is not 0 or NULL. */
585              l_actual_resource_rate := (l_po_unit_price /  CASE WHEN NVL(g_Res_rec.usage_rate_or_amount,0) = 0 THEN 1
586                                     ELSE g_Res_rec.usage_rate_or_amount END)+ l_tax_amount ;
587              IF g_Res_rec.action IN ( WIP_Transaction_PUB.G_ACT_OSP_RET_TO_RCV ,WIP_Transaction_PUB.G_ACT_OSP_RET_TO_VEND,WIP_Transaction_PUB.G_ACT_OSP_CORRECT_TO_RCV)
588 AND g_Res_rec.primary_quantity=0 THEN --Bug#16470292:Replaced usage rate with primary quantity
589                 l_actual_resource_rate := -l_actual_resource_rate;
590              END IF;
591              --Bug#15842225(FP of Bug#14365506): Commeneted the rest of the code below, so that negative resource rate is  set only when usage rate is 0
592               /* Usage rate is zero
593               /* Fix for bug 4155822: Need not multiply with PO quantity since we multiply with
594                  resource primary quantity to get the cost later
595               SELECT rti.primary_quantity
596               INTO   l_po_qty
597               FROM   mtl_system_items msi, rcv_transactions_interface rti
598               WHERE  msi.inventory_item_id = rti.item_id
599               AND    msi.organization_id = rti.to_organization_id
600               AND    rti.interface_transaction_id = g_Res_rec.source_line_id;
601 
602               l_actual_resource_rate := l_po_unit_price + l_tax_amount ;
603 
604              /*Fix for bug 8601418. comment following code to prevent negative l_actual_resource_rate
605                 IF g_Res_rec.action = WIP_Transaction_PUB.G_ACT_OSP_RET_TO_RCV OR
606                 g_Res_rec.action = WIP_Transaction_PUB.G_ACT_OSP_RET_TO_VEND OR
607                 g_Res_rec.action = WIP_Transaction_PUB.G_ACT_OSP_CORRECT_TO_RCV  THEN
608                 l_actual_resource_rate := -l_actual_resource_rate;
609              END IF;
610           END IF;
611         END IF; */
612       ELSIF g_RCV_txn.po_unit_price IS NOT NULL then
613         l_actual_resource_rate := l_po_unit_price + l_tax_amount ;
614       END IF;
615    -- Fixed bug 5248437. This is a regression from 4232353. That fix override
616    -- the fix from bug 3418605. Basically, we should use currency conversion
617    -- rate in g_res_rec if available.
618       l_currency_conversion_rate := nvl(g_res_rec.currency_conversion_rate,
619                                         nvl(g_RCV_txn.currency_conversion_rate,
620                                             -1));
621       IF l_currency_conversion_rate = -1 THEN
622         RETURN l_actual_resource_rate;
623       ELSE
624         /* Fix for bug 3138121: actual resource rate will be rounded by extended
625           precision value instead of minimum accountable unit or precision */
626          /*Bug#15842225(FP of bug#12979788): do not round l_actual_resource_rate, passing raw data to costing
627         select round(l_actual_resource_rate,nvl(fc.extended_precision,5))
628           into l_actual_resource_rate
629           from fnd_currencies fc
630           where currency_code = g_RCV_txn.currency_code;*/
631 
632         RETURN l_actual_resource_rate * l_currency_conversion_rate;
633       END IF;
634 
635    ELSE /* default */
636      IF (g_Res_rec.employee_id IS NOT NULL AND
637          g_Res_rec.organization_id IS NOT NULL) THEN
638 
639         select we.hourly_labor_rate
640         into l_actual_resource_rate
641         from wip_employee_labor_rates we
642         where we.employee_id = g_Res_rec.employee_id
643         and we.organization_id = g_Res_rec.organization_id
644         and we.effective_date = (select max(we1.effective_date)
645                                  from wip_employee_labor_rates we1
646                                  where we1.effective_date < sysdate
647                                  and we1.employee_id = g_Res_rec.employee_id
648                                  and we1.organization_id = g_Res_rec.organization_id);
649 
650         return l_actual_resource_rate;
651      END IF;
652    END IF;
653 
654    RETURN NULL;
655 
656 EXCEPTION
657    WHEN OTHERS THEN
658       RETURN FND_API.G_MISS_NUM;
659 
660 END Get_Actual_Resource_Rate;
661 
662 FUNCTION Get_Autocharge_Type
663 RETURN NUMBER
664 IS
665 BEGIN
666 
667    IF g_Res_rec.autocharge_type IS NOT NULL THEN
668       RETURN g_Res_rec.autocharge_type;
669    END IF;
670 
671    IF g_Res_rec.source_code = 'SFCB' THEN
672       RETURN (WIP_CONSTANTS.MANUAL) ;
673    END IF;
674 
675    IF g_WIP_op_res.autocharge_type IS NOT NULL THEN
676       RETURN g_WIP_op_res.autocharge_type;
677    ELSE
678       get_wor_attr();
679       RETURN g_WIP_op_res.autocharge_type;
680    END IF;
681 
682 EXCEPTION
683    WHEN OTHERS THEN
684       RETURN FND_API.G_MISS_NUM;
685 
686 END Get_Autocharge_Type;
687 
688 FUNCTION Get_Basis_Type
689 RETURN NUMBER
690 IS
691 BEGIN
692 
693    IF g_Res_rec.basis_type IS NOT NULL THEN
694       RETURN g_Res_rec.basis_type;
695    END IF;
696 
697    IF g_WIP_op_res.basis_type IS NOT NULL THEN
698       RETURN g_WIP_op_res.basis_type;
699    ELSE
700       get_wor_attr();
701       RETURN g_WIP_op_res.basis_type;
702    END IF;
703 
704 EXCEPTION
705    WHEN OTHERS THEN
706       RETURN FND_API.G_MISS_NUM;
707 
708 END Get_Basis_Type;
709 
710 FUNCTION Get_Completion_Transaction
711 RETURN NUMBER
712 IS
713 BEGIN
714 
715    IF g_Res_rec.completion_transaction_id IS NOT NULL THEN
716       RETURN g_Res_rec.completion_transaction_id;
717    END IF;
718 
719    RETURN NULL;
720 
721 EXCEPTION
722    WHEN OTHERS THEN
723       RETURN FND_API.G_MISS_NUM;
724 
725 END Get_Completion_Transaction;
726 
727 FUNCTION Get_Created_By
728 RETURN VARCHAR2
729 IS
730 BEGIN
731 
732    IF g_Res_rec.created_by IS NOT NULL THEN
733       RETURN g_Res_rec.created_by;
734    END IF;
735 
736    IF g_Res_rec.source_code = 'RCV'
737      AND g_Res_rec.source_line_id IS NOT NULL THEN
738 
739       IF g_RCV_txn.created_by IS NOT NULL THEN
740          RETURN g_RCV_txn.created_by;
741       ELSE
742          get_rti_attr();
743          RETURN g_RCV_txn.created_by;
744       END IF;
745 
746    END IF;
747 
748    RETURN fnd_global.user_id ;
749 
750 EXCEPTION
751    WHEN OTHERS THEN
752       RETURN FND_API.G_MISS_CHAR;
753 
754 END Get_Created_By;
755 
756 
757 FUNCTION Get_Created_By_Name
758 RETURN VARCHAR2
759 IS
760 BEGIN
761 
762    IF g_Res_rec.created_by_name IS NOT NULL THEN
763       RETURN g_Res_rec.created_by_name;
764    END IF;
765 
766    IF g_Res_rec.created_by IS NOT NULL THEN
767       SELECT user_name
768         INTO g_Res_rec.created_by_name
769         FROM fnd_user
770         WHERE user_id = g_Res_rec.created_by;
771 
772       RETURN g_Res_rec.created_by_name;
773    END IF;
774 
775    RETURN NULL;
776 
777 EXCEPTION
778    WHEN OTHERS THEN
779       RETURN FND_API.G_MISS_CHAR;
780 
781 END Get_Created_By_Name;
782 
783 FUNCTION Get_Creation_Date
784 RETURN DATE /*Fix bug 8971751(FP 8933207)*/
785 IS
786 BEGIN
787 
788    IF g_Res_rec.creation_date IS NOT NULL THEN
789       RETURN g_Res_rec.creation_date;
790    END IF;
791 
792    IF g_Res_rec.source_code = 'RCV'
793      AND g_Res_rec.source_line_id IS NOT NULL THEN
794 
795       IF g_RCV_txn.creation_date IS NOT NULL THEN
796          RETURN g_RCV_txn.creation_date;
797       ELSE
798          get_rti_attr();
799          RETURN g_RCV_txn.creation_date;
800       END IF;
801 
802    END IF;
803 
804    RETURN sysdate ;
805 
806 EXCEPTION
807    WHEN OTHERS THEN
808       RETURN FND_API.G_MISS_DATE;
809 
810 END Get_Creation_Date;
811 
812 
813 FUNCTION Get_Currency_Actual_Rsc_Rate
814 RETURN NUMBER
815 IS
816 BEGIN
817 
818    IF g_Res_rec.currency_actual_rsc_rate IS NOT NULL THEN
819       RETURN g_Res_rec.currency_actual_rsc_rate;
820    END IF;
821    -- Fixed bug 5248437. This is a regression from 4232353. That fix override
822    -- the fix from bug 3418605. Basically, we should use currency conversion
823    -- rate in g_res_rec if available.
824    IF (g_Res_rec.source_code = 'RCV' AND
825        nvl(g_res_rec.currency_conversion_rate,
826            g_RCV_txn.currency_conversion_rate) is not NULL) then
827      IF ( g_Res_rec.actual_resource_rate IS NOT NULL ) THEN
828        return (g_Res_rec.actual_resource_rate /
829                nvl(g_res_rec.currency_conversion_rate,
830                    g_RCV_txn.currency_conversion_rate));
831      END IF;
832    ELSE
833      return NULL;
834    END IF;
835 
836    RETURN NULL;
837 
838 EXCEPTION
839    WHEN OTHERS THEN
840       RETURN FND_API.G_MISS_NUM;
841 
842 END Get_Currency_Actual_Rsc_Rate;
843 
844 FUNCTION Get_Currency
845 RETURN VARCHAR2
846 IS
847 BEGIN
848 
849    IF g_Res_rec.currency_code IS NOT NULL THEN
850       RETURN g_Res_rec.currency_code;
851    END IF;
852 
853 
854    IF g_Res_rec.source_code = 'RCV'
855      AND g_Res_rec.source_line_id IS NOT NULL THEN
856 
857       IF g_RCV_txn.currency_code IS NOT NULL THEN
858          RETURN g_RCV_txn.currency_code;
859       ELSE
860          get_rti_attr();
861          RETURN g_RCV_txn.currency_code;
862       END IF;
863 
864    END IF;
865 
866    RETURN NULL;
867 
868 EXCEPTION
869    WHEN OTHERS THEN
870       RETURN FND_API.G_MISS_NUM;
871 
872 END Get_Currency;
873 
874 FUNCTION Get_Currency_Conversion_Date
875 RETURN DATE
876 IS
877 BEGIN
878 
879    IF g_Res_rec.currency_conversion_date IS NOT NULL THEN
880       RETURN g_Res_rec.currency_conversion_date;
881    END IF;
882 
883    IF g_Res_rec.source_code = 'RCV'
884      AND g_Res_rec.source_line_id IS NOT NULL THEN
885 
886       IF g_RCV_txn.currency_conversion_date IS NOT NULL THEN
887          RETURN g_RCV_txn.currency_conversion_date;
888       ELSE
889          get_rti_attr();
890          RETURN g_RCV_txn.currency_conversion_date;
891       END IF;
892 
893    END IF;
894 
895    RETURN NULL;
896 
897 EXCEPTION
898    WHEN OTHERS THEN
899       RETURN FND_API.G_MISS_DATE;
900 END Get_Currency_Conversion_Date;
901 
902 FUNCTION Get_Currency_Conversion_Rate
903 RETURN NUMBER
904 IS
905 BEGIN
906 
907    IF g_Res_rec.currency_conversion_rate IS NOT NULL THEN
908       RETURN g_Res_rec.currency_conversion_rate;
909    END IF;
910 
911    IF g_Res_rec.source_code = 'RCV'
912      AND g_Res_rec.source_line_id IS NOT NULL THEN
913 
914       IF g_RCV_txn.currency_conversion_rate IS NOT NULL THEN
915          RETURN g_RCV_txn.currency_conversion_rate;
916       ELSE
917          get_rti_attr();
918          RETURN g_RCV_txn.currency_conversion_rate;
919       END IF;
920 
921    END IF;
922 
923    RETURN NULL;
924 
925 EXCEPTION
926    WHEN OTHERS THEN
927       RETURN FND_API.G_MISS_NUM;
928 
929 END Get_Currency_Conversion_Rate;
930 
931 FUNCTION Get_Currency_Conversion_Type
932 RETURN VARCHAR2
933 IS
934 BEGIN
935 
936    IF g_Res_rec.currency_conversion_type IS NOT NULL THEN
937       RETURN g_Res_rec.currency_conversion_type;
938    END IF;
939 
940    IF g_Res_rec.source_code = 'RCV'
941      AND g_Res_rec.source_line_id IS NOT NULL THEN
942 
943       IF g_RCV_txn.currency_conversion_type IS NOT NULL THEN
944          RETURN g_RCV_txn.currency_conversion_type;
945       ELSE
946          get_rti_attr();
947          RETURN g_RCV_txn.currency_conversion_type;
948       END IF;
949 
950    END IF;
951 
952    RETURN NULL;
953 
954 EXCEPTION
955    WHEN OTHERS THEN
956       RETURN FND_API.G_MISS_NUM;
957 
958 END Get_Currency_Conversion_Type;
959 
960 FUNCTION Get_Department_Code
961 RETURN VARCHAR2
962 IS
963    l_dept_code  VARCHAR2(10);
964 BEGIN
965 
966    IF g_Res_rec.department_code IS NOT NULL THEN
967       RETURN g_Res_rec.department_code;
968    END IF;
969 
970    IF g_Res_rec.department_id IS NOT NULL then
971 
972          SELECT department_code
973            INTO l_dept_code
974            FROM bom_departments
975            WHERE department_id = g_Res_rec.department_id;
976 
977            RETURN l_dept_code;
978    END IF;
979 
980    RETURN NULL;
981 
982 EXCEPTION
983    WHEN OTHERS THEN
984       RETURN FND_API.G_MISS_CHAR;
985 
986 END Get_Department_Code;
987 
988 FUNCTION Get_Department_Id
989 RETURN NUMBER
990 IS
991    l_dept_id    NUMBER;
992 BEGIN
993 
994    IF g_Res_rec.department_id IS NOT NULL THEN
995       RETURN g_Res_rec.department_id;
996    END IF;
997 
998    IF g_Res_rec.wip_entity_id IS NOT NULL
999      AND g_Res_rec.operation_seq_num IS NOT NULL
1000      AND g_Res_rec.operation_seq_num IS NOT NULL THEN
1001            SELECT department_id
1002            INTO   l_dept_id
1003            FROM   wip_operations
1004            WHERE  wip_entity_id = g_Res_rec.wip_entity_id
1005            AND    operation_seq_num = g_Res_rec.operation_seq_num
1006            AND    organization_id = g_Res_rec.organization_id
1007            AND    (repetitive_schedule_id IS NULL
1008                   OR repetitive_schedule_id = g_Res_rec.repetitive_schedule_id);
1009 
1010            RETURN l_dept_id;
1011       END IF;
1012 
1013    RETURN NULL;
1014 
1015 EXCEPTION
1016    WHEN OTHERS THEN
1017       RETURN FND_API.G_MISS_NUM;
1018 
1019 END Get_Department_Id;
1020 
1021 FUNCTION Get_Employee
1022 RETURN NUMBER
1023 IS
1024 BEGIN
1025 
1026    IF g_Res_rec.employee_id IS NOT NULL THEN
1027       RETURN g_Res_rec.employee_id;
1028    END IF;
1029 
1030    RETURN NULL;
1031 
1032 EXCEPTION
1033    WHEN OTHERS THEN
1034       RETURN FND_API.G_MISS_NUM;
1035 
1036 END Get_Employee;
1037 
1038 FUNCTION Get_Employee_Num
1039 RETURN VARCHAR2
1040 IS
1041 BEGIN
1042 
1043    IF g_Res_rec.employee_num IS NOT NULL THEN
1044       RETURN g_Res_rec.employee_num;
1045    END IF;
1046 
1047    RETURN NULL;
1048 
1049 EXCEPTION
1050    WHEN OTHERS THEN
1051       RETURN FND_API.G_MISS_CHAR;
1052 
1053 END Get_Employee_Num;
1054 
1055 FUNCTION Get_Entity_Type
1056 RETURN NUMBER
1057 IS
1058 BEGIN
1059 
1060    IF g_Res_rec.entity_type IS NOT NULL THEN
1061       RETURN g_Res_rec.entity_type;
1062    END IF;
1063 
1064    IF g_wip_entities_rec.Entity_Type IS NOT NULL THEN
1065       RETURN g_wip_entities_rec.Entity_Type;
1066    ELSE
1067       get_we_attr();
1068       RETURN g_wip_entities_rec.Entity_Type;
1069    END IF;
1070 
1071    RETURN NULL;
1072 
1073 EXCEPTION
1074    WHEN OTHERS THEN
1075       RETURN FND_API.G_MISS_NUM;
1076 
1077 END Get_Entity_Type;
1078 
1079 FUNCTION Get_Group
1080 RETURN NUMBER
1081 IS
1082 BEGIN
1083 
1084    IF g_Res_rec.group_id IS NOT NULL THEN
1085       RETURN g_Res_rec.group_id;
1086    END IF;
1087 
1088    RETURN NULL;
1089 
1090 EXCEPTION
1091    WHEN OTHERS THEN
1092       RETURN FND_API.G_MISS_NUM;
1093 
1094 END Get_Group;
1095 
1096 FUNCTION Get_Last_Updated_By
1097 RETURN VARCHAR2
1098 IS
1099 BEGIN
1100 
1101    IF g_Res_rec.last_updated_by IS NOT NULL THEN
1102       RETURN g_Res_rec.last_updated_by;
1103    END IF;
1104 
1105    IF g_Res_rec.source_code = 'RCV'
1106      AND g_Res_rec.source_line_id IS NOT NULL THEN
1107 
1108       IF g_RCV_txn.last_updated_by IS NOT NULL THEN
1109          RETURN g_RCV_txn.last_updated_by;
1110       ELSE
1111          get_rti_attr();
1112          RETURN g_RCV_txn.last_updated_by;
1113       END IF;
1114 
1115    END IF;
1116 
1117    RETURN fnd_global.user_id ;
1118 
1119 EXCEPTION
1120    WHEN OTHERS THEN
1121       RETURN FND_API.G_MISS_CHAR;
1122 
1123 END Get_Last_Updated_By;
1124 
1125 FUNCTION Get_Last_Updated_By_Name
1126 RETURN VARCHAR2
1127 IS
1128 BEGIN
1129 
1130    IF g_Res_rec.last_updated_by_name IS NOT NULL THEN
1131       RETURN g_Res_rec.last_updated_by_name;
1132    END IF;
1133 
1134    IF g_Res_rec.last_updated_by IS NOT NULL THEN
1135       SELECT user_name
1136         INTO g_Res_rec.last_updated_by_name
1137         FROM fnd_user
1138         WHERE user_id = g_Res_rec.last_updated_by;
1139 
1140       RETURN g_Res_rec.last_updated_by_name;
1141    END IF;
1142 
1143    RETURN NULL;
1144 
1145 EXCEPTION
1146    WHEN OTHERS THEN
1147       RETURN FND_API.G_MISS_CHAR;
1148 
1149 END Get_Last_Updated_By_Name;
1150 
1151 FUNCTION Get_Last_Update_Date
1152 RETURN DATE /*Fix Bug 8971751(FP 8933207)*/
1153 IS
1154 BEGIN
1155 
1156    IF g_Res_rec.last_update_date IS NOT NULL THEN
1157       RETURN g_Res_rec.last_update_date;
1158    END IF;
1159 
1160    IF g_Res_rec.source_code = 'RCV'
1161      AND g_Res_rec.source_line_id IS NOT NULL THEN
1162 
1163      IF g_RCV_txn.last_update_date IS NOT NULL THEN
1164         RETURN g_RCV_txn.last_update_date;
1165      ELSE
1166         get_rti_attr();
1167         RETURN g_RCV_txn.last_update_date;
1168      END IF;
1169 
1170    END IF;
1171 
1172    RETURN sysdate ;
1173 
1174 EXCEPTION
1175    WHEN OTHERS THEN
1176       RETURN FND_API.G_MISS_CHAR;
1177 
1178 END Get_Last_Update_Date;
1179 
1180 
1181 FUNCTION Get_Line_Code
1182 RETURN VARCHAR2
1183 IS
1184    l_line_code  VARCHAR2(10);
1185 BEGIN
1186 
1187    IF g_Res_rec.line_code IS NOT NULL THEN
1188       RETURN g_Res_rec.line_code;
1189    END IF;
1190 
1191    IF g_Res_rec.line_id IS NOT NULL
1192     AND g_Res_rec.organization_id IS NOT NULL THEN
1193       SELECT line_code
1194         INTO l_line_code
1195         FROM wip_lines
1196         WHERE line_id = g_Res_rec.line_id
1197         AND   organization_id = g_Res_rec.organization_id;
1198 
1199       RETURN l_line_code;
1200    END IF;
1201 
1202    RETURN NULL;
1203 
1204 EXCEPTION
1205    WHEN OTHERS THEN
1206       RETURN FND_API.G_MISS_CHAR;
1207 
1208 END Get_Line_Code;
1209 
1210 FUNCTION Get_Line_Id
1211 RETURN NUMBER
1212 IS
1213 BEGIN
1214 
1215    IF g_Res_rec.line_id IS NOT NULL THEN
1216       RETURN g_Res_rec.line_id;
1217    END IF;
1218 
1219    IF g_Res_rec.source_code = 'RCV'
1220      AND g_Res_rec.source_line_id IS NOT NULL THEN
1221 
1222       IF g_RCV_txn.wip_line_id IS NOT NULL THEN
1223          RETURN g_RCV_txn.wip_line_id;
1224       ELSE
1225          get_rti_attr();
1226          RETURN g_RCV_txn.wip_line_id;
1227       END IF;
1228 
1229    END IF;
1230 
1231    RETURN NULL;
1232 
1233 EXCEPTION
1234    WHEN OTHERS THEN
1235       RETURN FND_API.G_MISS_NUM;
1236 
1237 END Get_Line_Id;
1238 
1239 FUNCTION Get_Move_Transaction
1240 RETURN NUMBER
1241 IS
1242 BEGIN
1243 
1244    IF g_Res_rec.move_transaction_id IS NOT NULL THEN
1245       RETURN g_Res_rec.move_transaction_id;
1246    END IF;
1247 
1248    RETURN NULL;
1249 
1250 EXCEPTION
1251    WHEN OTHERS THEN
1252       RETURN FND_API.G_MISS_NUM;
1253 
1254 END Get_Move_Transaction;
1255 
1256 FUNCTION Get_Operation_Seq_Num
1257 RETURN NUMBER
1258 IS
1259 BEGIN
1260 
1261    IF g_Res_rec.operation_seq_num IS NOT NULL THEN
1262       RETURN g_Res_rec.operation_seq_num;
1263    END IF;
1264 
1265    IF g_Res_rec.source_code = 'RCV'
1266      AND g_Res_rec.source_line_id IS NOT NULL THEN
1267 
1268       IF g_RCV_txn.wip_operation_seq_num IS NOT NULL THEN
1269          RETURN g_RCV_txn.wip_operation_seq_num;
1270       ELSE
1271          get_rti_attr();
1272          RETURN g_RCV_txn.wip_operation_seq_num;
1273       END IF;
1274 
1275    END IF;
1276 
1277    RETURN NULL;
1278 
1279 EXCEPTION
1280    WHEN OTHERS THEN
1281       RETURN FND_API.G_MISS_NUM;
1282 
1283 END Get_Operation_Seq_Num;
1284 
1285 FUNCTION Get_Organization_Code
1286 RETURN VARCHAR2
1287 IS
1288 BEGIN
1289 
1290    IF g_Res_rec.organization_code IS NOT NULL THEN
1291       RETURN g_Res_rec.organization_code;
1292    END IF;
1293 
1294    IF g_Res_rec.organization_id IS NOT NULL THEN
1295       SELECT organization_code
1296         INTO g_Res_rec.organization_code
1297         FROM mtl_parameters
1298         WHERE organization_id = g_Res_rec.organization_id;
1299 
1300       RETURN g_Res_rec.organization_code;
1301    END IF;
1302 
1303    RETURN NULL;
1304 
1305 EXCEPTION
1306    WHEN OTHERS THEN
1307       RETURN FND_API.G_MISS_CHAR;
1308 
1309 END Get_Organization_Code;
1310 
1311 FUNCTION Get_Organization_Id
1312 RETURN NUMBER
1313 IS
1314 BEGIN
1315 
1316    IF g_Res_rec.organization_id IS NOT NULL THEN
1317       RETURN g_Res_rec.organization_id;
1318    END IF;
1319 
1320    IF g_Res_rec.source_code = 'RCV'
1321      AND g_Res_rec.source_line_id IS NOT NULL THEN
1322 
1323       IF g_RCV_txn.organization_id IS NOT NULL THEN
1324          RETURN g_RCV_txn.organization_id;
1325       ELSE
1326          get_rti_attr();
1327          RETURN g_RCV_txn.organization_id;
1328       END IF;
1329 
1330    END IF;
1331 
1332    RETURN NULL;
1333 
1334 EXCEPTION
1335    WHEN OTHERS THEN
1336       RETURN FND_API.G_MISS_NUM;
1337 
1338 END Get_Organization_Id;
1339 
1340 FUNCTION Get_Po_Header
1341 RETURN NUMBER
1342 IS
1343 BEGIN
1344 
1345    IF g_Res_rec.po_header_id IS NOT NULL THEN
1346       RETURN g_Res_rec.po_header_id;
1347    END IF;
1348 
1349    IF g_Res_rec.source_code = 'RCV'
1350      AND g_Res_rec.source_line_id IS NOT NULL THEN
1351 
1352       IF g_RCV_txn.po_header_id IS NOT NULL THEN
1353          RETURN g_RCV_txn.po_header_id;
1354       ELSE
1355          get_rti_attr();
1356          RETURN g_RCV_txn.po_header_id;
1357       END IF;
1358 
1359    END IF;
1360 
1361    RETURN NULL;
1362 
1363 EXCEPTION
1364    WHEN OTHERS THEN
1365       RETURN FND_API.G_MISS_NUM;
1366 
1367 END Get_Po_Header;
1368 
1369 FUNCTION Get_Po_Line
1370 RETURN NUMBER
1371 IS
1372 BEGIN
1373 
1374    IF g_Res_rec.po_line_id IS NOT NULL THEN
1375       RETURN g_Res_rec.po_line_id;
1376    END IF;
1377 
1378    IF g_Res_rec.source_code = 'RCV'
1379      AND g_Res_rec.source_line_id IS NOT NULL THEN
1380 
1381       IF g_RCV_txn.po_line_id IS NOT NULL THEN
1382          RETURN g_RCV_txn.po_line_id;
1383       ELSE
1384          get_rti_attr();
1385          RETURN g_RCV_txn.po_line_id;
1386       END IF;
1387 
1388    END IF;
1389 
1390    RETURN NULL;
1391 
1392 EXCEPTION
1393    WHEN OTHERS THEN
1394       RETURN FND_API.G_MISS_NUM;
1395 
1396 END Get_Po_Line;
1397 
1398 FUNCTION Get_Primary_Item
1399 RETURN NUMBER
1400 IS
1401 BEGIN
1402 
1403    IF g_Res_rec.primary_item_id IS NOT NULL THEN
1404       RETURN g_Res_rec.primary_item_id;
1405    END IF;
1406 
1407    IF g_wip_entities_rec.primary_item_id IS NOT NULL THEN
1408       RETURN g_wip_entities_rec.primary_item_id;
1409    ELSE
1410       get_we_attr();
1411       RETURN g_wip_entities_rec.primary_item_id;
1412    END IF;
1413 
1414    RETURN NULL;
1415 
1416 EXCEPTION
1417    WHEN OTHERS THEN
1418       RETURN FND_API.G_MISS_NUM;
1419 
1420 END Get_Primary_Item;
1421 
1422 FUNCTION Get_Primary_Quantity
1423 RETURN NUMBER
1424 IS
1425 BEGIN
1426 
1427    IF g_Res_rec.primary_quantity IS NOT NULL THEN
1428       RETURN g_Res_rec.primary_quantity;
1429    END IF;
1430 
1431    IF g_Res_rec.source_code IN ('RCV', 'SFCB') THEN
1432       RETURN g_Res_rec.transaction_quantity;
1433    END IF;
1434 
1435    RETURN NULL;
1436 
1437 EXCEPTION
1438    WHEN OTHERS THEN
1439       RETURN FND_API.G_MISS_NUM;
1440 
1441 END Get_Primary_Quantity;
1442 
1443 FUNCTION Get_Primary_Uom
1444 RETURN VARCHAR2
1445 IS
1446 BEGIN
1447 
1448    IF g_Res_rec.primary_uom IS NOT NULL THEN
1449       RETURN g_Res_rec.primary_uom;
1450    END IF;
1451 
1452    IF g_WIP_op_res.uom_code IS NOT NULL THEN
1453       RETURN g_WIP_op_res.uom_code;
1454    ELSE
1455       get_wor_attr();
1456       RETURN g_WIP_op_res.uom_code;
1457    END IF;
1458 
1459    RETURN NULL;
1460 
1461 EXCEPTION
1462    WHEN OTHERS THEN
1463       RETURN FND_API.G_MISS_CHAR;
1464 
1465 END Get_Primary_Uom;
1466 
1467 FUNCTION Get_Primary_Uom_Class
1468 RETURN VARCHAR2
1469 IS
1470 BEGIN
1471 
1472    IF g_Res_rec.primary_uom_class IS NOT NULL THEN
1473       RETURN g_Res_rec.primary_uom_class;
1474    END IF;
1475 
1476    RETURN NULL;
1477 
1478 EXCEPTION
1479    WHEN OTHERS THEN
1480       RETURN FND_API.G_MISS_CHAR;
1481 
1482 END Get_Primary_Uom_Class;
1483 
1484 FUNCTION Get_Process_Phase
1485 RETURN NUMBER
1486 IS
1487 BEGIN
1488 
1489    IF g_Res_rec.process_phase IS NOT NULL THEN
1490       RETURN g_Res_rec.process_phase;
1491    END IF;
1492 
1493    IF  g_Res_rec.source_code = 'RCV'
1494    AND g_Res_rec.source_line_id IS NOT NULL
1495    THEN
1496       RETURN (WIP_CONSTANTS.RES_VAL);
1497    END IF;
1498 
1499    IF g_Res_rec.source_code = 'SFCB'
1500    THEN
1501       RETURN (WIP_CONSTANTS.RES_PROC);
1502    END IF;
1503 
1504 
1505    RETURN NULL;
1506 
1507 EXCEPTION
1508    WHEN OTHERS THEN
1509       RETURN FND_API.G_MISS_NUM;
1510 
1511 END Get_Process_Phase;
1512 
1513 FUNCTION Get_Process_Status
1514 RETURN NUMBER
1515 IS
1516 BEGIN
1517 
1518    IF g_Res_rec.process_status IS NOT NULL THEN
1519       RETURN g_Res_rec.process_status;
1520    END IF;
1521 
1522    IF g_Res_rec.source_code = 'RCV'
1523      AND g_Res_rec.source_line_id IS NOT NULL
1524      THEN
1525       RETURN (WIP_CONSTANTS.PENDING);
1526    END IF;
1527 
1528    IF g_Res_rec.source_code = 'SFCB'
1529    THEN
1530       RETURN (WIP_CONSTANTS.PENDING);
1531    END IF;
1532 
1533    RETURN NULL;
1534 
1535 EXCEPTION
1536    WHEN OTHERS THEN
1537       RETURN FND_API.G_MISS_NUM;
1538 
1539 END Get_Process_Status;
1540 
1541 FUNCTION Get_Project
1542 RETURN NUMBER
1543 IS
1544 BEGIN
1545 
1546    IF g_Res_rec.project_id IS NOT NULL THEN
1547       RETURN g_Res_rec.project_id;
1548    END IF;
1549 
1550    IF g_Res_rec.source_code = 'RCV'
1551      AND g_Res_rec.source_line_id IS NOT NULL THEN
1552 
1553       IF g_PO_Dstr.project_id IS NOT NULL THEN
1554          RETURN g_PO_Dstr.project_id;
1555       ELSE
1556          get_pd_attr();
1557          RETURN g_PO_Dstr.project_id;
1558       END IF;
1559 
1560    END IF;
1561 
1562    RETURN NULL;
1563 
1564 EXCEPTION
1565    WHEN OTHERS THEN
1566       RETURN FND_API.G_MISS_NUM;
1567 
1568 END Get_Project;
1569 
1570 FUNCTION Get_Rcv_Transaction
1571 RETURN NUMBER
1572 IS
1573 BEGIN
1574 
1575    IF g_Res_rec.rcv_transaction_id IS NOT NULL THEN
1576       RETURN g_Res_rec.rcv_transaction_id;
1577    END IF;
1578 
1579    RETURN NULL;
1580 
1581 EXCEPTION
1582    WHEN OTHERS THEN
1583       RETURN FND_API.G_MISS_NUM;
1584 
1585 END Get_Rcv_Transaction;
1586 
1587 FUNCTION Get_Reason
1588 RETURN NUMBER
1589 IS
1590 BEGIN
1591 
1592    IF g_Res_rec.reason_id IS NOT NULL THEN
1593       RETURN g_Res_rec.reason_id;
1594    END IF;
1595 
1596    IF g_Res_rec.source_code = 'RCV'
1597      AND g_Res_rec.source_line_id IS NOT NULL THEN
1598 
1599       IF g_RCV_txn.reason_id IS NOT NULL THEN
1600          RETURN g_RCV_txn.reason_id;
1601       ELSE
1602          get_rti_attr();
1603          RETURN g_RCV_txn.reason_id;
1604       END IF;
1605 
1606    END IF;
1607 
1608    RETURN NULL;
1609 
1610 EXCEPTION
1611    WHEN OTHERS THEN
1612       RETURN FND_API.G_MISS_NUM;
1613 
1614 END Get_Reason;
1615 
1616 FUNCTION Get_Reason_Name
1617 RETURN VARCHAR2
1618 IS
1619 l_reason_name   VARCHAR2(30);
1620 BEGIN
1621 
1622    IF g_Res_rec.reason_name IS NOT NULL THEN
1623       RETURN g_Res_rec.reason_name;
1624    END IF;
1625 
1626    IF g_Res_rec.reason_id IS NOT NULL then
1627 
1628          SELECT reason_name
1629            INTO l_reason_name
1630            FROM mtl_transaction_reasons
1631            WHERE reason_id = g_Res_rec.reason_id;
1632 
1633            RETURN l_reason_name;
1634    END IF;
1635 
1636    RETURN NULL;
1637 
1638 EXCEPTION
1639    WHEN OTHERS THEN
1640       RETURN FND_API.G_MISS_CHAR;
1641 
1642 END Get_Reason_Name;
1643 
1644 FUNCTION Get_Receiving_Account
1645 RETURN NUMBER
1646 IS
1647 BEGIN
1648 
1649    IF g_Res_rec.receiving_account_id IS NOT NULL THEN
1650       RETURN g_Res_rec.receiving_account_id;
1651    END IF;
1652 
1653    IF g_Res_rec.source_code = 'RCV'
1654      AND g_Res_rec.organization_id IS NOT NULL THEN
1655 
1656       SELECT   rp.receiving_account_id
1657         INTO   g_Res_rec.receiving_account_id
1658         FROM   rcv_parameters rp
1659         WHERE  rp.organization_id = g_Res_rec.organization_id;
1660 
1661       RETURN g_Res_rec.receiving_account_id;
1662    END IF;
1663 
1664    RETURN NULL;
1665 
1666 EXCEPTION
1667    WHEN OTHERS THEN
1668       RETURN FND_API.G_MISS_NUM;
1669 
1670 END Get_Receiving_Account;
1671 
1672 FUNCTION Get_Reference
1673 RETURN VARCHAR2
1674 IS
1675 BEGIN
1676 
1677    IF g_Res_rec.reference IS NOT NULL THEN
1678       RETURN g_Res_rec.reference;
1679    END IF;
1680 
1681    IF g_Res_rec.source_code = 'RCV'
1682      AND g_Res_rec.source_line_id IS NOT NULL THEN
1683 
1684       IF g_RCV_txn.comments IS NOT NULL THEN
1685          RETURN g_RCV_txn.comments;
1686       ELSE
1687          get_rti_attr();
1688          RETURN g_RCV_txn.comments;
1689       END IF;
1690 
1691    END IF;
1692 
1693     RETURN NULL;
1694 
1695 EXCEPTION
1696    WHEN OTHERS THEN
1697       RETURN FND_API.G_MISS_CHAR;
1698 
1699 END Get_Reference;
1700 
1701 FUNCTION Get_Repetitive_Schedule
1702 RETURN NUMBER
1703 IS
1704 BEGIN
1705 
1706    IF g_Res_rec.repetitive_schedule_id IS NOT NULL THEN
1707       RETURN g_Res_rec.repetitive_schedule_id;
1708    END IF;
1709 
1710    IF g_Res_rec.source_code = 'RCV'
1711      AND g_Res_rec.source_line_id IS NOT NULL THEN
1712 
1713       IF g_RCV_txn.wip_repetitive_schedule_id IS NOT NULL THEN
1714          RETURN g_RCV_txn.wip_repetitive_schedule_id;
1715       ELSE
1716          get_rti_attr();
1717          RETURN g_RCV_txn.wip_repetitive_schedule_id;
1718       END IF;
1719 
1720    END IF;
1721 
1722    RETURN NULL;
1723 
1724 EXCEPTION
1725    WHEN OTHERS THEN
1726       RETURN FND_API.G_MISS_NUM;
1727 
1728 END Get_Repetitive_Schedule;
1729 
1730 FUNCTION Get_Resource_Code
1731 RETURN VARCHAR2
1732 IS
1733 BEGIN
1734 
1735    IF g_Res_rec.resource_code IS NOT NULL THEN
1736       RETURN g_Res_rec.resource_code;
1737    END IF;
1738 
1739    IF g_BOM_res.resource_code IS NOT NULL THEN
1740         return g_BOM_res.resource_code;
1741    END IF;
1742 
1743    IF g_Res_rec.resource_id IS NOT NULL then
1744       get_br_attr();
1745       RETURN g_BOM_res.resource_code;
1746    END IF;
1747 
1748    RETURN NULL;
1749 
1750 EXCEPTION
1751    WHEN OTHERS THEN
1752       RETURN FND_API.G_MISS_CHAR;
1753 
1754 END Get_Resource_Code;
1755 
1756 FUNCTION Get_Resource_Id
1757 RETURN NUMBER
1758 IS
1759 BEGIN
1760 
1761    IF g_Res_rec.resource_id IS NOT NULL THEN
1762       RETURN g_Res_rec.resource_id;
1763    END IF;
1764 
1765    IF g_WIP_op_res.resource_id IS NOT NULL THEN
1766       RETURN g_WIP_op_res.resource_id;
1767    ELSE
1768       get_wor_attr();
1769       RETURN g_WIP_op_res.resource_id;
1770    END IF;
1771 
1772    RETURN NULL;
1773 
1774 EXCEPTION
1775    WHEN OTHERS THEN
1776       RETURN FND_API.G_MISS_NUM;
1777 
1778 END Get_Resource_Id;
1779 
1780 FUNCTION Get_Resource_Seq_Num
1781 RETURN NUMBER
1782 IS
1783 BEGIN
1784 
1785    IF g_Res_rec.resource_seq_num IS NOT NULL THEN
1786       RETURN g_Res_rec.resource_seq_num;
1787    END IF;
1788 
1789    IF g_Res_rec.source_code = 'RCV'
1790      AND g_Res_rec.source_line_id IS NOT NULL THEN
1791 
1792       IF g_RCV_txn.wip_resource_seq_num IS NOT NULL THEN
1793          RETURN g_RCV_txn.wip_resource_seq_num;
1794       ELSE
1795          get_rti_attr();
1796          RETURN g_RCV_txn.wip_resource_seq_num;
1797       END IF;
1798 
1799    END IF;
1800 
1801    RETURN NULL;
1802 
1803 EXCEPTION
1804    WHEN OTHERS THEN
1805       RETURN FND_API.G_MISS_NUM;
1806 
1807 END Get_Resource_Seq_Num;
1808 
1809 FUNCTION Get_Resource_Type
1810 RETURN NUMBER
1811 IS
1812 BEGIN
1813 
1814    IF g_Res_rec.resource_type IS NOT NULL THEN
1815       RETURN g_Res_rec.resource_type;
1816    END IF;
1817 
1818    IF g_BOM_res.resource_type IS NOT NULL THEN
1819         return g_BOM_res.resource_type;
1820    END IF;
1821 
1822    IF g_Res_rec.resource_id IS NOT NULL then
1823       get_br_attr();
1824       RETURN g_BOM_res.resource_type;
1825    END IF;
1826 
1827    RETURN NULL;
1828 
1829 EXCEPTION
1830    WHEN OTHERS THEN
1831       RETURN FND_API.G_MISS_NUM;
1832 END Get_Resource_Type;
1833 
1834 FUNCTION Get_Source
1835 RETURN VARCHAR2
1836 IS
1837 BEGIN
1838 
1839    IF g_Res_rec.source_code IS NOT NULL THEN
1840       RETURN g_Res_rec.source_code;
1841    END IF;
1842 
1843    RETURN NULL;
1844 
1845 EXCEPTION
1846    WHEN OTHERS THEN
1847       RETURN FND_API.G_MISS_NUM;
1848 
1849 END Get_Source;
1850 
1851 FUNCTION Get_Source_Line
1852 RETURN NUMBER
1853 IS
1854 BEGIN
1855 
1856    IF g_Res_rec.source_line_id IS NOT NULL THEN
1857       RETURN g_Res_rec.source_line_id;
1858    END IF;
1859 
1860    RETURN NULL;
1861 
1862 EXCEPTION
1863    WHEN OTHERS THEN
1864       RETURN FND_API.G_MISS_NUM;
1865 
1866 END Get_Source_Line;
1867 
1868 FUNCTION Get_Standard_Rate
1869 RETURN NUMBER
1870 IS
1871 BEGIN
1872 
1873    IF g_Res_rec.standard_rate_flag IS NOT NULL THEN
1874       RETURN g_Res_rec.standard_rate_flag;
1875    END IF;
1876 
1877    IF g_WIP_op_res.std_rate_flag IS NOT NULL THEN
1878       RETURN g_WIP_op_res.std_rate_flag;
1879    ELSE
1880       get_wor_attr();
1881       RETURN g_WIP_op_res.std_rate_flag;
1882    END IF;
1883 
1884    RETURN NULL;
1885 
1886 EXCEPTION
1887    WHEN OTHERS THEN
1888       RETURN FND_API.G_MISS_NUM;
1889 
1890 END Get_Standard_Rate;
1891 
1892 FUNCTION Get_Task
1893 RETURN NUMBER
1894 IS
1895 BEGIN
1896 
1897    IF g_Res_rec.task_id IS NOT NULL THEN
1898       RETURN g_Res_rec.task_id;
1899    END IF;
1900 
1901    IF g_Res_rec.source_code = 'RCV'
1902      AND g_Res_rec.source_line_id IS NOT NULL
1903      THEN
1904       IF g_PO_Dstr.task_id IS NOT NULL THEN
1905          RETURN g_PO_Dstr.task_id;
1906       ELSE
1907          get_pd_attr();
1908          RETURN g_PO_Dstr.task_id;
1909       END IF;
1910    END IF;
1911 
1912    RETURN NULL;
1913 
1914 EXCEPTION
1915    WHEN OTHERS THEN
1916       RETURN FND_API.G_MISS_NUM;
1917 
1918 END Get_Task;
1919 
1920 FUNCTION Get_Transaction_Date
1921 RETURN DATE
1922 IS
1923 BEGIN
1924 
1925    IF g_Res_rec.transaction_date IS NOT NULL THEN
1926       RETURN g_Res_rec.transaction_date;
1927    END IF;
1928 
1929    IF g_Res_rec.source_code = 'RCV'
1930      AND g_Res_rec.source_line_id IS NOT NULL THEN
1931 
1932       IF g_RCV_txn.transaction_date IS NOT NULL THEN
1933          RETURN g_RCV_txn.transaction_date;
1934       ELSE
1935          get_rti_attr();
1936          RETURN g_RCV_txn.transaction_date;
1937       END IF;
1938 
1939    END IF;
1940 
1941    RETURN NULL;
1942 
1943 EXCEPTION
1944    WHEN OTHERS THEN
1945       RETURN FND_API.G_MISS_DATE;
1946 
1947 END Get_Transaction_Date;
1948 
1949 FUNCTION Get_Transaction
1950 RETURN NUMBER
1951 IS
1952 BEGIN
1953 
1954    IF g_Res_rec.transaction_id IS NOT NULL THEN
1955       RETURN g_Res_rec.transaction_id;
1956    END IF;
1957 
1958    RETURN NULL;
1959 
1960 EXCEPTION
1961    WHEN OTHERS THEN
1962       RETURN FND_API.G_MISS_NUM;
1963 
1964 END Get_Transaction;
1965 
1966 FUNCTION Get_Transaction_Quantity
1967 RETURN NUMBER
1968 IS
1969    l_uom_basis  VARCHAR2(25);
1970    l_po_qty     NUMBER;
1971 BEGIN
1972 
1973    IF g_Res_rec.transaction_quantity IS NOT NULL THEN
1974       RETURN g_Res_rec.transaction_quantity;
1975    END IF;
1976 
1977    IF g_Res_rec.source_code = 'RCV'
1978      AND g_Res_rec.source_line_id IS NOT NULL
1979      THEN
1980 
1981       -- Calculate the transaction quantity.
1982 
1983       SELECT msi.outside_operation_uom_type, rti.primary_quantity
1984         INTO l_uom_basis, l_po_qty
1985         FROM mtl_system_items msi, rcv_transactions_interface rti
1986         WHERE msi.inventory_item_id = rti.item_id
1987         AND   msi.organization_id = rti.to_organization_id
1988         AND   rti.interface_transaction_id = g_Res_rec.source_line_id;
1989 
1990       IF l_uom_basis = 'ASSEMBLY' THEN
1991         /* Fix for bug 4155822: Added condition usage rate or amount <> 0 */
1992         IF (    g_Res_rec.usage_rate_or_amount IS NOT NULL
1993             AND g_Res_rec.usage_rate_or_amount <> 0) THEN
1994           g_Res_rec.transaction_quantity := l_po_qty*g_Res_rec.usage_rate_or_amount;
1995         ELSE
1996           g_Res_rec.transaction_quantity := l_po_qty;
1997         END IF;
1998        ELSIF l_uom_basis = 'RESOURCE' THEN
1999          g_Res_rec.transaction_quantity := l_po_qty;
2000       ELSE
2001          RETURN NULL;
2002       END IF;
2003 
2004       IF g_Res_rec.action = WIP_Transaction_PUB.G_ACT_OSP_RET_TO_RCV
2005         OR g_Res_rec.action = WIP_Transaction_PUB.G_ACT_OSP_RET_TO_VEND
2006         OR g_Res_rec.action = WIP_Transaction_PUB.G_ACT_OSP_CORRECT_TO_RCV
2007         THEN
2008          g_Res_rec.transaction_quantity := -1* g_Res_rec.transaction_quantity;
2009       END IF;
2010 
2011       RETURN g_Res_rec.transaction_quantity;
2012    END IF;
2013 
2014    RETURN NULL;
2015 
2016 EXCEPTION
2017    WHEN OTHERS THEN
2018       RETURN FND_API.G_MISS_NUM;
2019 
2020 END Get_Transaction_Quantity;
2021 
2022 FUNCTION Get_Transaction_Type
2023 RETURN NUMBER
2024 IS
2025 BEGIN
2026 
2027    IF g_Res_rec.transaction_type IS NOT NULL THEN
2028       RETURN g_Res_rec.transaction_type;
2029    END IF;
2030 
2031    IF g_Res_rec.source_code = 'RCV'
2032      AND g_Res_rec.source_line_id IS NOT NULL
2033      THEN
2034       RETURN WIP_CONSTANTS.OSP_TXN;
2035    END IF;
2036 
2037    IF g_Res_rec.source_code = 'SFCB'
2038    THEN
2039       RETURN (WIP_CONSTANTS.RES_TXN);
2040    END IF;
2041 
2042    RETURN NULL;
2043 
2044 EXCEPTION
2045    WHEN OTHERS THEN
2046       RETURN FND_API.G_MISS_NUM;
2047 
2048 END Get_Transaction_Type;
2049 
2050 FUNCTION Get_Transaction_Uom
2051 RETURN VARCHAR2
2052 IS
2053 BEGIN
2054 
2055    IF g_Res_rec.transaction_uom IS NOT NULL THEN
2056       RETURN g_Res_rec.transaction_uom;
2057    END IF;
2058 
2059    IF g_WIP_op_res.uom_code IS NOT NULL THEN
2060       RETURN g_WIP_op_res.uom_code;
2061    ELSE
2062       get_wor_attr();
2063       RETURN g_WIP_op_res.uom_code;
2064    END IF;
2065 
2066    RETURN NULL;
2067 
2068 EXCEPTION
2069    WHEN OTHERS THEN
2070       RETURN FND_API.G_MISS_CHAR;
2071 
2072 END Get_Transaction_Uom;
2073 
2074 FUNCTION Get_Usage_Rate_Or_Amount
2075 RETURN NUMBER
2076 IS
2077 BEGIN
2078 
2079    IF g_Res_rec.usage_rate_or_amount IS NOT NULL THEN
2080       RETURN g_Res_rec.usage_rate_or_amount;
2081    END IF;
2082 
2083    IF g_WIP_op_res.usage_rate_or_amount IS NOT NULL THEN
2084       RETURN g_WIP_op_res.usage_rate_or_amount;
2085    ELSE
2086       get_wor_attr();
2087       RETURN g_WIP_op_res.usage_rate_or_amount;
2088    END IF;
2089 
2090    RETURN NULL;
2091 
2092 EXCEPTION
2093    WHEN OTHERS THEN
2094       RETURN FND_API.G_MISS_NUM;
2095 
2096 END Get_Usage_Rate_Or_Amount;
2097 
2098 FUNCTION Get_Wip_Entity
2099 RETURN NUMBER
2100 IS
2101 BEGIN
2102 
2103    IF g_Res_rec.wip_entity_id IS NOT NULL THEN
2104       RETURN g_Res_rec.wip_entity_id;
2105    END IF;
2106 
2107    IF g_Res_rec.source_code = 'RCV'
2108      AND g_Res_rec.source_line_id IS NOT NULL THEN
2109 
2110       IF g_RCV_txn.wip_entity_id IS NOT NULL THEN
2111          RETURN g_RCV_txn.wip_entity_id;
2112       ELSE
2113          get_rti_attr();
2114          RETURN g_RCV_txn.wip_entity_id;
2115       END IF;
2116 
2117    END IF;
2118 
2119    RETURN NULL;
2120 
2121 EXCEPTION
2122    WHEN OTHERS THEN
2123       RETURN FND_API.G_MISS_NUM;
2124 
2125 END Get_Wip_Entity;
2126 
2127 FUNCTION Get_Wip_Entity_Name
2128 RETURN VARCHAR2
2129 IS
2130 BEGIN
2131 
2132    IF g_Res_rec.wip_entity_name IS NOT NULL THEN
2133       RETURN g_Res_rec.wip_entity_name;
2134    END IF;
2135 
2136    IF g_wip_entities_rec.wip_entity_name IS NOT NULL THEN
2137       RETURN g_wip_entities_rec.wip_entity_name;
2138    ELSE
2139       get_we_attr();
2140       RETURN g_wip_entities_rec.wip_entity_name;
2141    END IF;
2142 
2143    RETURN NULL;
2144 
2145 EXCEPTION
2146    WHEN OTHERS THEN
2147       RETURN FND_API.G_MISS_CHAR;
2148 
2149 END Get_Wip_Entity_Name;
2150 
2151 PROCEDURE Get_Flex_Res
2152 IS
2153 BEGIN
2154 
2155     --  In the future call Flex APIs for defaults
2156 
2157     IF g_Res_rec.attribute1 = FND_API.G_MISS_CHAR THEN
2158         g_Res_rec.attribute1           := NULL;
2159     END IF;
2160 
2161     IF g_Res_rec.attribute10 = FND_API.G_MISS_CHAR THEN
2162         g_Res_rec.attribute10          := NULL;
2163     END IF;
2164 
2165     IF g_Res_rec.attribute11 = FND_API.G_MISS_CHAR THEN
2166         g_Res_rec.attribute11          := NULL;
2167     END IF;
2168 
2169     IF g_Res_rec.attribute12 = FND_API.G_MISS_CHAR THEN
2170         g_Res_rec.attribute12          := NULL;
2171     END IF;
2172 
2173     IF g_Res_rec.attribute13 = FND_API.G_MISS_CHAR THEN
2174         g_Res_rec.attribute13          := NULL;
2175     END IF;
2176 
2177     IF g_Res_rec.attribute14 = FND_API.G_MISS_CHAR THEN
2178         g_Res_rec.attribute14          := NULL;
2179     END IF;
2180 
2181     IF g_Res_rec.attribute15 = FND_API.G_MISS_CHAR THEN
2182         g_Res_rec.attribute15          := NULL;
2183     END IF;
2184 
2185     IF g_Res_rec.attribute2 = FND_API.G_MISS_CHAR THEN
2186         g_Res_rec.attribute2           := NULL;
2187     END IF;
2188 
2189     IF g_Res_rec.attribute3 = FND_API.G_MISS_CHAR THEN
2190         g_Res_rec.attribute3           := NULL;
2191     END IF;
2192 
2193     IF g_Res_rec.attribute4 = FND_API.G_MISS_CHAR THEN
2194         g_Res_rec.attribute4           := NULL;
2195     END IF;
2196 
2197     IF g_Res_rec.attribute5 = FND_API.G_MISS_CHAR THEN
2198         g_Res_rec.attribute5           := NULL;
2199     END IF;
2200 
2201     IF g_Res_rec.attribute6 = FND_API.G_MISS_CHAR THEN
2202         g_Res_rec.attribute6           := NULL;
2203     END IF;
2204 
2205     IF g_Res_rec.attribute7 = FND_API.G_MISS_CHAR THEN
2206         g_Res_rec.attribute7           := NULL;
2207     END IF;
2208 
2209     IF g_Res_rec.attribute8 = FND_API.G_MISS_CHAR THEN
2210         g_Res_rec.attribute8           := NULL;
2211     END IF;
2212 
2213     IF g_Res_rec.attribute9 = FND_API.G_MISS_CHAR THEN
2214         g_Res_rec.attribute9           := NULL;
2215     END IF;
2216 
2217     IF g_Res_rec.attribute_category = FND_API.G_MISS_CHAR THEN
2218         g_Res_rec.attribute_category   := NULL;
2219     END IF;
2220 
2221 END Get_Flex_Res;
2222 
2223 --  Procedure Attributes
2224 PROCEDURE Attributes
2225 (   p_Res_rec                       IN  WIP_Transaction_PUB.Res_Rec_Type
2226 ,   p_iteration                     IN  NUMBER := NULL
2227 ,   x_Res_rec                       IN OUT NOCOPY WIP_Transaction_PUB.Res_Rec_Type
2228 )
2229 IS
2230 BEGIN
2231 
2232     --  Check number of iterations.
2233 
2234     IF nvl(p_iteration,1) > WIP_GLOBALS.G_MAX_DEF_ITERATIONS THEN
2235 
2236         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
2237         THEN
2238 
2239             FND_MESSAGE.SET_NAME('WIP','WIP_DEF_MAX_ITERATION');
2240             FND_MSG_PUB.Add;
2241 
2242         END IF;
2243 
2244         RAISE FND_API.G_EXC_ERROR;
2245 
2246     END IF;
2247 
2248     --  Initialize global variables
2249 
2250     g_Res_rec := WIP_Transaction_PUB.G_MISS_RES_REC;
2251     g_RCV_txn := WIP_Transaction_PUB.G_MISS_RCV_TXN_REC;
2252     g_WIP_op_res := WIP_Transaction_PUB.G_MISS_WIP_OP_RES_REC;
2253     g_PO_Dstr := WIP_Transaction_PUB.G_MISS_PO_DIST_REC;
2254     g_Wip_Entities_rec := WIP_Work_Order_PUB.G_MISS_WIP_ENTITIES_REC;
2255     g_BOM_res := WIP_Transaction_PUB.G_MISS_BOM_RES_REC;
2256 
2257     g_Res_rec := p_Res_rec;
2258 
2259     --  Default missing attributes.
2260 
2261     g_Res_rec.wip_entity_id := Get_Wip_Entity;
2262     g_Res_rec.wip_entity_name := Get_Wip_Entity_Name;
2263     g_Res_rec.primary_item_id := Get_Primary_Item;
2264     g_Res_rec.line_id := Get_Line_Id;
2265     g_Res_rec.operation_seq_num := Get_Operation_Seq_Num;
2266     g_Res_rec.organization_id := Get_Organization_Id;
2267     g_Res_rec.po_header_id := Get_Po_Header;
2268     g_Res_rec.po_line_id := Get_Po_Line;
2269     g_Res_rec.reason_id := Get_Reason;
2270     g_Res_rec.reference := Get_Reference;
2271     g_Res_rec.repetitive_schedule_id := Get_Repetitive_Schedule;
2272     g_Res_rec.resource_seq_num := Get_Resource_Seq_Num;
2273     g_Res_rec.transaction_date := Get_Transaction_Date;
2274     g_Res_rec.acct_period_id := Get_Acct_Period;
2275     g_Res_rec.activity_id := Get_Activity;
2276     g_Res_rec.resource_id := Get_Resource_Id;
2277     g_Res_rec.usage_rate_or_amount := Get_Usage_Rate_Or_Amount;
2278     g_Res_rec.basis_type := Get_Basis_Type;
2279     g_Res_rec.autocharge_type := Get_Autocharge_Type;
2280     g_Res_rec.primary_uom := Get_Primary_Uom;
2281     g_Res_rec.transaction_uom := Get_Transaction_Uom;
2282     g_Res_rec.standard_rate_flag := Get_Standard_Rate;
2283     g_Res_rec.project_id := Get_Project;
2284     g_Res_rec.task_id := Get_Task;
2285     g_Res_rec.activity_name := Get_Activity_Name;
2286     g_Res_rec.transaction_quantity := Get_Transaction_Quantity;
2287     g_Res_rec.primary_quantity := Get_Primary_Quantity;
2288     g_Res_rec.currency_code := Get_Currency;
2289     g_Res_rec.currency_conversion_date := Get_Currency_Conversion_Date;
2290     g_Res_rec.currency_conversion_rate := Get_Currency_Conversion_Rate;
2291     g_Res_rec.actual_resource_rate := Get_Actual_Resource_Rate;
2292     g_Res_rec.currency_conversion_type := Get_Currency_Conversion_Type;
2293     g_Res_rec.currency_actual_rsc_rate := Get_Currency_Actual_Rsc_Rate;
2294     g_Res_rec.department_id := Get_Department_Id;
2295     g_Res_rec.department_code := Get_Department_Code;
2296     g_Res_rec.entity_type := Get_Entity_Type;
2297     g_Res_rec.created_by := Get_Created_By;
2298     g_Res_rec.created_by_name := Get_Created_By_Name;
2299     g_Res_rec.last_updated_by := Get_Last_Updated_By;
2300     g_Res_rec.last_updated_by_name := Get_Last_Updated_By_Name;
2301     g_Res_rec.line_code := Get_Line_Code;
2302     g_Res_rec.organization_code := Get_Organization_Code;
2303     g_Res_rec.process_phase := Get_Process_Phase;
2304     g_Res_rec.process_status := Get_Process_Status;
2305     g_Res_rec.reason_name := Get_Reason_Name;
2306     g_Res_rec.resource_code := Get_Resource_Code;
2307     g_Res_rec.resource_type := Get_Resource_Type;
2308     g_Res_rec.transaction_type := Get_Transaction_Type;
2309     g_Res_rec.last_update_date := Get_Last_Update_Date;
2310     g_Res_rec.creation_date := Get_Creation_Date;
2311 
2312     IF g_Res_rec.created_by IS NULL THEN
2313         g_Res_rec.created_by := NULL;
2314     END IF;
2315 
2316     IF g_Res_rec.creation_date IS NULL THEN
2317         g_Res_rec.creation_date := Sysdate;
2318     END IF;
2319 
2320     IF g_Res_rec.last_updated_by IS NULL THEN
2321         g_Res_rec.last_updated_by := NULL;
2322     END IF;
2323 
2324     IF g_Res_rec.last_update_date IS NULL THEN
2325         g_Res_rec.last_update_date := Sysdate;
2326     END IF;
2327 
2328     IF g_Res_rec.last_update_login IS NULL THEN
2329         g_Res_rec.last_update_login := NULL;
2330     END IF;
2331 
2332     IF g_Res_rec.program_application_id IS NULL THEN
2333        --FND_PROFILE.Get('CONC_PROGRAM_APPLICATION_ID',g_Res_rec.program_application_id);
2334        g_Res_rec.program_application_id := NULL;
2335     END IF;
2336 
2337     IF g_Res_rec.program_id IS NULL THEN
2338        --FND_PROFILE.Get('CONC_PROGRAM_ID', g_Res_rec.program_id);
2339        g_Res_rec.program_id := NULL;
2340     END IF;
2341 
2342     IF g_Res_rec.program_update_date IS NULL THEN
2343         g_Res_rec.program_update_date := Sysdate;
2344     END IF;
2345 
2346     IF g_Res_rec.request_id IS NULL THEN
2347        --FND_PROFILE.Get('CONC_REQUEST_ID', g_Res_rec.request_id);
2348        g_Res_rec.request_id:= NULL;
2349     END IF;
2350 
2351     x_Res_rec := g_Res_rec;
2352 END Attributes;
2353 
2354 END WIP_Default_Res;