DBA Data[Home] [Help]

PACKAGE BODY: APPS.WIP_DEFAULT_RES

Source


1 PACKAGE BODY WIP_Default_Res AS
2 /* $Header: WIPDRESB.pls 120.2 2006/08/22 22:41:58 kboonyap noship $ */
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' THEN
579 
580         IF g_Res_rec.transaction_quantity IS NOT NULL
581           AND g_Res_rec.usage_rate_or_amount IS NOT NULL
582           AND g_RCV_txn.po_unit_price IS NOT NULL
583           AND g_RCV_txn.unit_of_measure IS NOT NULL THEN
584 
585           /* Fix for bug 4155822: Divide by l_po_unit_price by g_Res_rec.usage_rate_or_amount only if
586              g_Res_rec.usage_rate_or_amount is not 0 or NULL. */
587           IF (g_Res_rec.usage_rate_or_amount  IS NOT NULL AND g_Res_rec.usage_rate_or_amount  <> 0) THEN
588              l_actual_resource_rate := (l_po_unit_price / g_Res_rec.usage_rate_or_amount) + l_tax_amount ;
589           ELSE
590               /* Usage rate is zero */
591               /* Fix for bug 4155822: Need not multiply with PO quantity since we multiply with
592                  resource primary quantity to get the cost later
593               SELECT rti.primary_quantity
594               INTO   l_po_qty
595               FROM   mtl_system_items msi, rcv_transactions_interface rti
596               WHERE  msi.inventory_item_id = rti.item_id
597               AND    msi.organization_id = rti.to_organization_id
598               AND    rti.interface_transaction_id = g_Res_rec.source_line_id; */
599 
600               l_actual_resource_rate := l_po_unit_price + l_tax_amount ;
601 
602              IF g_Res_rec.action = WIP_Transaction_PUB.G_ACT_OSP_RET_TO_RCV OR
603                 g_Res_rec.action = WIP_Transaction_PUB.G_ACT_OSP_RET_TO_VEND OR
604                 g_Res_rec.action = WIP_Transaction_PUB.G_ACT_OSP_CORRECT_TO_RCV  THEN
605                 l_actual_resource_rate := -l_actual_resource_rate;
606              END IF;
607           END IF;
608         END IF;
609       ELSIF g_RCV_txn.po_unit_price IS NOT NULL then
610         l_actual_resource_rate := l_po_unit_price + l_tax_amount ;
611       END IF;
612    -- Fixed bug 5248437. This is a regression from 4232353. That fix override
613    -- the fix from bug 3418605. Basically, we should use currency conversion
614    -- rate in g_res_rec if available.
615       l_currency_conversion_rate := nvl(g_res_rec.currency_conversion_rate,
616                                         nvl(g_RCV_txn.currency_conversion_rate,
617                                             -1));
618       IF l_currency_conversion_rate = -1 THEN
619         RETURN l_actual_resource_rate;
620       ELSE
621         /* Fix for bug 3138121: actual resource rate will be rounded by extended
622           precision value instead of minimum accountable unit or precision */
623         select round(l_actual_resource_rate,nvl(fc.extended_precision,5))
624           into l_actual_resource_rate
625           from fnd_currencies fc
626           where currency_code = g_RCV_txn.currency_code;
627 
628         RETURN l_actual_resource_rate * l_currency_conversion_rate;
629       END IF;
630 
631    ELSE /* default */
632      IF (g_Res_rec.employee_id IS NOT NULL AND
633          g_Res_rec.organization_id IS NOT NULL) THEN
634 
635         select we.hourly_labor_rate
636         into l_actual_resource_rate
637         from wip_employee_labor_rates we
638         where we.employee_id = g_Res_rec.employee_id
639         and we.organization_id = g_Res_rec.organization_id
640         and we.effective_date = (select max(we1.effective_date)
641                                  from wip_employee_labor_rates we1
642                                  where we1.effective_date < sysdate
643                                  and we1.employee_id = g_Res_rec.employee_id
644                                  and we1.organization_id = g_Res_rec.organization_id);
645 
646         return l_actual_resource_rate;
647      END IF;
648    END IF;
649 
650    RETURN NULL;
651 
652 EXCEPTION
653    WHEN OTHERS THEN
654       RETURN FND_API.G_MISS_NUM;
655 
656 END Get_Actual_Resource_Rate;
657 
658 FUNCTION Get_Autocharge_Type
659 RETURN NUMBER
660 IS
661 BEGIN
662 
663    IF g_Res_rec.autocharge_type IS NOT NULL THEN
664       RETURN g_Res_rec.autocharge_type;
665    END IF;
666 
667    IF g_Res_rec.source_code = 'SFCB' THEN
668       RETURN (WIP_CONSTANTS.MANUAL) ;
669    END IF;
670 
671    IF g_WIP_op_res.autocharge_type IS NOT NULL THEN
672       RETURN g_WIP_op_res.autocharge_type;
673    ELSE
674       get_wor_attr();
675       RETURN g_WIP_op_res.autocharge_type;
676    END IF;
677 
678 EXCEPTION
679    WHEN OTHERS THEN
680       RETURN FND_API.G_MISS_NUM;
681 
682 END Get_Autocharge_Type;
683 
684 FUNCTION Get_Basis_Type
685 RETURN NUMBER
686 IS
687 BEGIN
688 
689    IF g_Res_rec.basis_type IS NOT NULL THEN
690       RETURN g_Res_rec.basis_type;
691    END IF;
692 
693    IF g_WIP_op_res.basis_type IS NOT NULL THEN
694       RETURN g_WIP_op_res.basis_type;
695    ELSE
696       get_wor_attr();
697       RETURN g_WIP_op_res.basis_type;
698    END IF;
699 
700 EXCEPTION
701    WHEN OTHERS THEN
702       RETURN FND_API.G_MISS_NUM;
703 
704 END Get_Basis_Type;
705 
706 FUNCTION Get_Completion_Transaction
707 RETURN NUMBER
708 IS
709 BEGIN
710 
711    IF g_Res_rec.completion_transaction_id IS NOT NULL THEN
712       RETURN g_Res_rec.completion_transaction_id;
713    END IF;
714 
715    RETURN NULL;
716 
717 EXCEPTION
718    WHEN OTHERS THEN
719       RETURN FND_API.G_MISS_NUM;
720 
721 END Get_Completion_Transaction;
722 
723 FUNCTION Get_Created_By
724 RETURN VARCHAR2
725 IS
726 BEGIN
727 
728    IF g_Res_rec.created_by IS NOT NULL THEN
729       RETURN g_Res_rec.created_by;
730    END IF;
731 
732    IF g_Res_rec.source_code = 'RCV'
733      AND g_Res_rec.source_line_id IS NOT NULL THEN
734 
735       IF g_RCV_txn.created_by IS NOT NULL THEN
736          RETURN g_RCV_txn.created_by;
737       ELSE
738          get_rti_attr();
739          RETURN g_RCV_txn.created_by;
740       END IF;
741 
742    END IF;
743 
744    RETURN fnd_global.user_id ;
745 
746 EXCEPTION
747    WHEN OTHERS THEN
748       RETURN FND_API.G_MISS_CHAR;
749 
750 END Get_Created_By;
751 
752 
753 FUNCTION Get_Created_By_Name
754 RETURN VARCHAR2
755 IS
756 BEGIN
757 
758    IF g_Res_rec.created_by_name IS NOT NULL THEN
759       RETURN g_Res_rec.created_by_name;
760    END IF;
761 
762    IF g_Res_rec.created_by IS NOT NULL THEN
763       SELECT user_name
764         INTO g_Res_rec.created_by_name
765         FROM fnd_user
766         WHERE user_id = g_Res_rec.created_by;
767 
768       RETURN g_Res_rec.created_by_name;
769    END IF;
770 
771    RETURN NULL;
772 
773 EXCEPTION
774    WHEN OTHERS THEN
775       RETURN FND_API.G_MISS_CHAR;
776 
777 END Get_Created_By_Name;
778 
779 FUNCTION Get_Creation_Date
780 RETURN VARCHAR2
781 IS
782 BEGIN
783 
784    IF g_Res_rec.creation_date IS NOT NULL THEN
785       RETURN g_Res_rec.creation_date;
786    END IF;
787 
788    IF g_Res_rec.source_code = 'RCV'
789      AND g_Res_rec.source_line_id IS NOT NULL THEN
790 
791       IF g_RCV_txn.creation_date IS NOT NULL THEN
792          RETURN g_RCV_txn.creation_date;
793       ELSE
794          get_rti_attr();
795          RETURN g_RCV_txn.creation_date;
796       END IF;
797 
798    END IF;
799 
800    RETURN sysdate ;
801 
802 EXCEPTION
803    WHEN OTHERS THEN
804       RETURN FND_API.G_MISS_DATE;
805 
806 END Get_Creation_Date;
807 
808 
809 FUNCTION Get_Currency_Actual_Rsc_Rate
810 RETURN NUMBER
811 IS
812 BEGIN
813 
814    IF g_Res_rec.currency_actual_rsc_rate IS NOT NULL THEN
815       RETURN g_Res_rec.currency_actual_rsc_rate;
816    END IF;
817    -- Fixed bug 5248437. This is a regression from 4232353. That fix override
818    -- the fix from bug 3418605. Basically, we should use currency conversion
819    -- rate in g_res_rec if available.
820    IF (g_Res_rec.source_code = 'RCV' AND
821        nvl(g_res_rec.currency_conversion_rate,
822            g_RCV_txn.currency_conversion_rate) is not NULL) then
823      IF ( g_Res_rec.actual_resource_rate IS NOT NULL ) THEN
824        return (g_Res_rec.actual_resource_rate /
825                nvl(g_res_rec.currency_conversion_rate,
826                    g_RCV_txn.currency_conversion_rate));
827      END IF;
828    ELSE
829      return NULL;
830    END IF;
831 
832    RETURN NULL;
833 
834 EXCEPTION
835    WHEN OTHERS THEN
836       RETURN FND_API.G_MISS_NUM;
837 
838 END Get_Currency_Actual_Rsc_Rate;
839 
840 FUNCTION Get_Currency
841 RETURN VARCHAR2
842 IS
843 BEGIN
844 
845    IF g_Res_rec.currency_code IS NOT NULL THEN
846       RETURN g_Res_rec.currency_code;
847    END IF;
848 
849 
850    IF g_Res_rec.source_code = 'RCV'
851      AND g_Res_rec.source_line_id IS NOT NULL THEN
852 
853       IF g_RCV_txn.currency_code IS NOT NULL THEN
854          RETURN g_RCV_txn.currency_code;
855       ELSE
856          get_rti_attr();
857          RETURN g_RCV_txn.currency_code;
858       END IF;
859 
860    END IF;
861 
862    RETURN NULL;
863 
864 EXCEPTION
865    WHEN OTHERS THEN
866       RETURN FND_API.G_MISS_NUM;
867 
868 END Get_Currency;
869 
870 FUNCTION Get_Currency_Conversion_Date
871 RETURN DATE
872 IS
873 BEGIN
874 
875    IF g_Res_rec.currency_conversion_date IS NOT NULL THEN
876       RETURN g_Res_rec.currency_conversion_date;
877    END IF;
878 
879    IF g_Res_rec.source_code = 'RCV'
880      AND g_Res_rec.source_line_id IS NOT NULL THEN
881 
882       IF g_RCV_txn.currency_conversion_date IS NOT NULL THEN
883          RETURN g_RCV_txn.currency_conversion_date;
884       ELSE
885          get_rti_attr();
886          RETURN g_RCV_txn.currency_conversion_date;
887       END IF;
888 
889    END IF;
890 
891    RETURN NULL;
892 
893 EXCEPTION
894    WHEN OTHERS THEN
895       RETURN FND_API.G_MISS_DATE;
896 END Get_Currency_Conversion_Date;
897 
898 FUNCTION Get_Currency_Conversion_Rate
899 RETURN NUMBER
900 IS
901 BEGIN
902 
903    IF g_Res_rec.currency_conversion_rate IS NOT NULL THEN
904       RETURN g_Res_rec.currency_conversion_rate;
905    END IF;
906 
907    IF g_Res_rec.source_code = 'RCV'
908      AND g_Res_rec.source_line_id IS NOT NULL THEN
909 
910       IF g_RCV_txn.currency_conversion_rate IS NOT NULL THEN
911          RETURN g_RCV_txn.currency_conversion_rate;
912       ELSE
913          get_rti_attr();
914          RETURN g_RCV_txn.currency_conversion_rate;
915       END IF;
916 
917    END IF;
918 
919    RETURN NULL;
920 
921 EXCEPTION
922    WHEN OTHERS THEN
923       RETURN FND_API.G_MISS_NUM;
924 
925 END Get_Currency_Conversion_Rate;
926 
927 FUNCTION Get_Currency_Conversion_Type
928 RETURN VARCHAR2
929 IS
930 BEGIN
931 
932    IF g_Res_rec.currency_conversion_type IS NOT NULL THEN
933       RETURN g_Res_rec.currency_conversion_type;
934    END IF;
935 
936    IF g_Res_rec.source_code = 'RCV'
937      AND g_Res_rec.source_line_id IS NOT NULL THEN
938 
939       IF g_RCV_txn.currency_conversion_type IS NOT NULL THEN
940          RETURN g_RCV_txn.currency_conversion_type;
941       ELSE
942          get_rti_attr();
943          RETURN g_RCV_txn.currency_conversion_type;
944       END IF;
945 
946    END IF;
947 
948    RETURN NULL;
949 
950 EXCEPTION
951    WHEN OTHERS THEN
952       RETURN FND_API.G_MISS_NUM;
953 
954 END Get_Currency_Conversion_Type;
955 
956 FUNCTION Get_Department_Code
957 RETURN VARCHAR2
958 IS
959    l_dept_code  VARCHAR2(10);
960 BEGIN
961 
962    IF g_Res_rec.department_code IS NOT NULL THEN
963       RETURN g_Res_rec.department_code;
964    END IF;
965 
966    IF g_Res_rec.department_id IS NOT NULL then
967 
968          SELECT department_code
969            INTO l_dept_code
970            FROM bom_departments
971            WHERE department_id = g_Res_rec.department_id;
972 
973            RETURN l_dept_code;
974    END IF;
975 
976    RETURN NULL;
977 
978 EXCEPTION
979    WHEN OTHERS THEN
980       RETURN FND_API.G_MISS_CHAR;
981 
982 END Get_Department_Code;
983 
984 FUNCTION Get_Department_Id
985 RETURN NUMBER
986 IS
987    l_dept_id    NUMBER;
988 BEGIN
989 
990    IF g_Res_rec.department_id IS NOT NULL THEN
991       RETURN g_Res_rec.department_id;
992    END IF;
993 
994    IF g_Res_rec.wip_entity_id IS NOT NULL
995      AND g_Res_rec.operation_seq_num IS NOT NULL
996      AND g_Res_rec.operation_seq_num IS NOT NULL THEN
997            SELECT department_id
998            INTO   l_dept_id
999            FROM   wip_operations
1000            WHERE  wip_entity_id = g_Res_rec.wip_entity_id
1001            AND    operation_seq_num = g_Res_rec.operation_seq_num
1002            AND    organization_id = g_Res_rec.organization_id
1003            AND    (repetitive_schedule_id IS NULL
1004                   OR repetitive_schedule_id = g_Res_rec.repetitive_schedule_id);
1005 
1006            RETURN l_dept_id;
1007       END IF;
1008 
1009    RETURN NULL;
1010 
1011 EXCEPTION
1012    WHEN OTHERS THEN
1013       RETURN FND_API.G_MISS_NUM;
1014 
1015 END Get_Department_Id;
1016 
1017 FUNCTION Get_Employee
1018 RETURN NUMBER
1019 IS
1020 BEGIN
1021 
1022    IF g_Res_rec.employee_id IS NOT NULL THEN
1023       RETURN g_Res_rec.employee_id;
1024    END IF;
1025 
1026    RETURN NULL;
1027 
1028 EXCEPTION
1029    WHEN OTHERS THEN
1030       RETURN FND_API.G_MISS_NUM;
1031 
1032 END Get_Employee;
1033 
1034 FUNCTION Get_Employee_Num
1035 RETURN VARCHAR2
1036 IS
1037 BEGIN
1038 
1039    IF g_Res_rec.employee_num IS NOT NULL THEN
1040       RETURN g_Res_rec.employee_num;
1041    END IF;
1042 
1043    RETURN NULL;
1044 
1045 EXCEPTION
1046    WHEN OTHERS THEN
1047       RETURN FND_API.G_MISS_CHAR;
1048 
1049 END Get_Employee_Num;
1050 
1051 FUNCTION Get_Entity_Type
1052 RETURN NUMBER
1053 IS
1054 BEGIN
1055 
1056    IF g_Res_rec.entity_type IS NOT NULL THEN
1057       RETURN g_Res_rec.entity_type;
1058    END IF;
1059 
1060    IF g_wip_entities_rec.Entity_Type IS NOT NULL THEN
1061       RETURN g_wip_entities_rec.Entity_Type;
1062    ELSE
1063       get_we_attr();
1064       RETURN g_wip_entities_rec.Entity_Type;
1065    END IF;
1066 
1067    RETURN NULL;
1068 
1069 EXCEPTION
1070    WHEN OTHERS THEN
1071       RETURN FND_API.G_MISS_NUM;
1072 
1073 END Get_Entity_Type;
1074 
1075 FUNCTION Get_Group
1076 RETURN NUMBER
1077 IS
1078 BEGIN
1079 
1080    IF g_Res_rec.group_id IS NOT NULL THEN
1081       RETURN g_Res_rec.group_id;
1082    END IF;
1083 
1084    RETURN NULL;
1085 
1086 EXCEPTION
1087    WHEN OTHERS THEN
1088       RETURN FND_API.G_MISS_NUM;
1089 
1090 END Get_Group;
1091 
1092 FUNCTION Get_Last_Updated_By
1093 RETURN VARCHAR2
1094 IS
1095 BEGIN
1096 
1097    IF g_Res_rec.last_updated_by IS NOT NULL THEN
1098       RETURN g_Res_rec.last_updated_by;
1099    END IF;
1100 
1101    IF g_Res_rec.source_code = 'RCV'
1102      AND g_Res_rec.source_line_id IS NOT NULL THEN
1103 
1104       IF g_RCV_txn.last_updated_by IS NOT NULL THEN
1105          RETURN g_RCV_txn.last_updated_by;
1106       ELSE
1107          get_rti_attr();
1108          RETURN g_RCV_txn.last_updated_by;
1109       END IF;
1110 
1111    END IF;
1112 
1113    RETURN fnd_global.user_id ;
1114 
1115 EXCEPTION
1116    WHEN OTHERS THEN
1117       RETURN FND_API.G_MISS_CHAR;
1118 
1119 END Get_Last_Updated_By;
1120 
1121 FUNCTION Get_Last_Updated_By_Name
1122 RETURN VARCHAR2
1123 IS
1124 BEGIN
1125 
1126    IF g_Res_rec.last_updated_by_name IS NOT NULL THEN
1127       RETURN g_Res_rec.last_updated_by_name;
1128    END IF;
1129 
1130    IF g_Res_rec.last_updated_by IS NOT NULL THEN
1131       SELECT user_name
1132         INTO g_Res_rec.last_updated_by_name
1133         FROM fnd_user
1134         WHERE user_id = g_Res_rec.last_updated_by;
1135 
1136       RETURN g_Res_rec.last_updated_by_name;
1137    END IF;
1138 
1139    RETURN NULL;
1140 
1141 EXCEPTION
1142    WHEN OTHERS THEN
1143       RETURN FND_API.G_MISS_CHAR;
1144 
1145 END Get_Last_Updated_By_Name;
1146 
1147 FUNCTION Get_Last_Update_Date
1148 RETURN VARCHAR2
1149 IS
1150 BEGIN
1151 
1152    IF g_Res_rec.last_update_date IS NOT NULL THEN
1153       RETURN g_Res_rec.last_update_date;
1154    END IF;
1155 
1156    IF g_Res_rec.source_code = 'RCV'
1157      AND g_Res_rec.source_line_id IS NOT NULL THEN
1158 
1159      IF g_RCV_txn.last_update_date IS NOT NULL THEN
1160         RETURN g_RCV_txn.last_update_date;
1161      ELSE
1162         get_rti_attr();
1163         RETURN g_RCV_txn.last_update_date;
1164      END IF;
1165 
1166    END IF;
1167 
1168    RETURN sysdate ;
1169 
1170 EXCEPTION
1171    WHEN OTHERS THEN
1172       RETURN FND_API.G_MISS_CHAR;
1173 
1174 END Get_Last_Update_Date;
1175 
1176 
1177 FUNCTION Get_Line_Code
1178 RETURN VARCHAR2
1179 IS
1180    l_line_code  VARCHAR2(10);
1181 BEGIN
1182 
1183    IF g_Res_rec.line_code IS NOT NULL THEN
1184       RETURN g_Res_rec.line_code;
1185    END IF;
1186 
1187    IF g_Res_rec.line_id IS NOT NULL
1188     AND g_Res_rec.organization_id IS NOT NULL THEN
1189       SELECT line_code
1190         INTO l_line_code
1191         FROM wip_lines
1192         WHERE line_id = g_Res_rec.line_id
1193         AND   organization_id = g_Res_rec.organization_id;
1194 
1195       RETURN l_line_code;
1196    END IF;
1197 
1198    RETURN NULL;
1199 
1200 EXCEPTION
1201    WHEN OTHERS THEN
1202       RETURN FND_API.G_MISS_CHAR;
1203 
1204 END Get_Line_Code;
1205 
1206 FUNCTION Get_Line_Id
1207 RETURN NUMBER
1208 IS
1209 BEGIN
1210 
1211    IF g_Res_rec.line_id IS NOT NULL THEN
1212       RETURN g_Res_rec.line_id;
1213    END IF;
1214 
1215    IF g_Res_rec.source_code = 'RCV'
1216      AND g_Res_rec.source_line_id IS NOT NULL THEN
1217 
1218       IF g_RCV_txn.wip_line_id IS NOT NULL THEN
1219          RETURN g_RCV_txn.wip_line_id;
1220       ELSE
1221          get_rti_attr();
1222          RETURN g_RCV_txn.wip_line_id;
1223       END IF;
1224 
1225    END IF;
1226 
1227    RETURN NULL;
1228 
1229 EXCEPTION
1230    WHEN OTHERS THEN
1231       RETURN FND_API.G_MISS_NUM;
1232 
1233 END Get_Line_Id;
1234 
1235 FUNCTION Get_Move_Transaction
1236 RETURN NUMBER
1237 IS
1238 BEGIN
1239 
1240    IF g_Res_rec.move_transaction_id IS NOT NULL THEN
1241       RETURN g_Res_rec.move_transaction_id;
1242    END IF;
1243 
1244    RETURN NULL;
1245 
1246 EXCEPTION
1247    WHEN OTHERS THEN
1248       RETURN FND_API.G_MISS_NUM;
1249 
1250 END Get_Move_Transaction;
1251 
1252 FUNCTION Get_Operation_Seq_Num
1253 RETURN NUMBER
1254 IS
1255 BEGIN
1256 
1257    IF g_Res_rec.operation_seq_num IS NOT NULL THEN
1258       RETURN g_Res_rec.operation_seq_num;
1259    END IF;
1260 
1261    IF g_Res_rec.source_code = 'RCV'
1262      AND g_Res_rec.source_line_id IS NOT NULL THEN
1263 
1264       IF g_RCV_txn.wip_operation_seq_num IS NOT NULL THEN
1265          RETURN g_RCV_txn.wip_operation_seq_num;
1266       ELSE
1267          get_rti_attr();
1268          RETURN g_RCV_txn.wip_operation_seq_num;
1269       END IF;
1270 
1271    END IF;
1272 
1273    RETURN NULL;
1274 
1275 EXCEPTION
1276    WHEN OTHERS THEN
1277       RETURN FND_API.G_MISS_NUM;
1278 
1279 END Get_Operation_Seq_Num;
1280 
1281 FUNCTION Get_Organization_Code
1282 RETURN VARCHAR2
1283 IS
1284 BEGIN
1285 
1286    IF g_Res_rec.organization_code IS NOT NULL THEN
1287       RETURN g_Res_rec.organization_code;
1288    END IF;
1289 
1290    IF g_Res_rec.organization_id IS NOT NULL THEN
1291       SELECT organization_code
1292         INTO g_Res_rec.organization_code
1293         FROM mtl_parameters
1294         WHERE organization_id = g_Res_rec.organization_id;
1295 
1296       RETURN g_Res_rec.organization_code;
1297    END IF;
1298 
1299    RETURN NULL;
1300 
1301 EXCEPTION
1302    WHEN OTHERS THEN
1303       RETURN FND_API.G_MISS_CHAR;
1304 
1305 END Get_Organization_Code;
1306 
1307 FUNCTION Get_Organization_Id
1308 RETURN NUMBER
1309 IS
1310 BEGIN
1311 
1312    IF g_Res_rec.organization_id IS NOT NULL THEN
1313       RETURN g_Res_rec.organization_id;
1314    END IF;
1315 
1316    IF g_Res_rec.source_code = 'RCV'
1317      AND g_Res_rec.source_line_id IS NOT NULL THEN
1318 
1319       IF g_RCV_txn.organization_id IS NOT NULL THEN
1320          RETURN g_RCV_txn.organization_id;
1321       ELSE
1322          get_rti_attr();
1323          RETURN g_RCV_txn.organization_id;
1324       END IF;
1325 
1326    END IF;
1327 
1328    RETURN NULL;
1329 
1330 EXCEPTION
1331    WHEN OTHERS THEN
1332       RETURN FND_API.G_MISS_NUM;
1333 
1334 END Get_Organization_Id;
1335 
1336 FUNCTION Get_Po_Header
1337 RETURN NUMBER
1338 IS
1339 BEGIN
1340 
1341    IF g_Res_rec.po_header_id IS NOT NULL THEN
1342       RETURN g_Res_rec.po_header_id;
1343    END IF;
1344 
1345    IF g_Res_rec.source_code = 'RCV'
1346      AND g_Res_rec.source_line_id IS NOT NULL THEN
1347 
1348       IF g_RCV_txn.po_header_id IS NOT NULL THEN
1349          RETURN g_RCV_txn.po_header_id;
1350       ELSE
1351          get_rti_attr();
1352          RETURN g_RCV_txn.po_header_id;
1353       END IF;
1354 
1355    END IF;
1356 
1357    RETURN NULL;
1358 
1359 EXCEPTION
1360    WHEN OTHERS THEN
1361       RETURN FND_API.G_MISS_NUM;
1362 
1363 END Get_Po_Header;
1364 
1365 FUNCTION Get_Po_Line
1366 RETURN NUMBER
1367 IS
1368 BEGIN
1369 
1370    IF g_Res_rec.po_line_id IS NOT NULL THEN
1371       RETURN g_Res_rec.po_line_id;
1372    END IF;
1373 
1374    IF g_Res_rec.source_code = 'RCV'
1375      AND g_Res_rec.source_line_id IS NOT NULL THEN
1376 
1377       IF g_RCV_txn.po_line_id IS NOT NULL THEN
1378          RETURN g_RCV_txn.po_line_id;
1379       ELSE
1380          get_rti_attr();
1381          RETURN g_RCV_txn.po_line_id;
1382       END IF;
1383 
1384    END IF;
1385 
1386    RETURN NULL;
1387 
1388 EXCEPTION
1389    WHEN OTHERS THEN
1390       RETURN FND_API.G_MISS_NUM;
1391 
1392 END Get_Po_Line;
1393 
1394 FUNCTION Get_Primary_Item
1395 RETURN NUMBER
1396 IS
1397 BEGIN
1398 
1399    IF g_Res_rec.primary_item_id IS NOT NULL THEN
1400       RETURN g_Res_rec.primary_item_id;
1401    END IF;
1402 
1403    IF g_wip_entities_rec.primary_item_id IS NOT NULL THEN
1404       RETURN g_wip_entities_rec.primary_item_id;
1405    ELSE
1406       get_we_attr();
1407       RETURN g_wip_entities_rec.primary_item_id;
1408    END IF;
1409 
1410    RETURN NULL;
1411 
1412 EXCEPTION
1413    WHEN OTHERS THEN
1414       RETURN FND_API.G_MISS_NUM;
1415 
1416 END Get_Primary_Item;
1417 
1418 FUNCTION Get_Primary_Quantity
1419 RETURN NUMBER
1420 IS
1421 BEGIN
1422 
1423    IF g_Res_rec.primary_quantity IS NOT NULL THEN
1424       RETURN g_Res_rec.primary_quantity;
1425    END IF;
1426 
1427    IF g_Res_rec.source_code IN ('RCV', 'SFCB') THEN
1428       RETURN g_Res_rec.transaction_quantity;
1429    END IF;
1430 
1431    RETURN NULL;
1432 
1433 EXCEPTION
1434    WHEN OTHERS THEN
1435       RETURN FND_API.G_MISS_NUM;
1436 
1437 END Get_Primary_Quantity;
1438 
1439 FUNCTION Get_Primary_Uom
1440 RETURN VARCHAR2
1441 IS
1442 BEGIN
1443 
1444    IF g_Res_rec.primary_uom IS NOT NULL THEN
1445       RETURN g_Res_rec.primary_uom;
1446    END IF;
1447 
1448    IF g_WIP_op_res.uom_code IS NOT NULL THEN
1449       RETURN g_WIP_op_res.uom_code;
1450    ELSE
1451       get_wor_attr();
1452       RETURN g_WIP_op_res.uom_code;
1453    END IF;
1454 
1455    RETURN NULL;
1456 
1457 EXCEPTION
1458    WHEN OTHERS THEN
1459       RETURN FND_API.G_MISS_CHAR;
1460 
1461 END Get_Primary_Uom;
1462 
1463 FUNCTION Get_Primary_Uom_Class
1464 RETURN VARCHAR2
1465 IS
1466 BEGIN
1467 
1468    IF g_Res_rec.primary_uom_class IS NOT NULL THEN
1469       RETURN g_Res_rec.primary_uom_class;
1470    END IF;
1471 
1472    RETURN NULL;
1473 
1474 EXCEPTION
1475    WHEN OTHERS THEN
1476       RETURN FND_API.G_MISS_CHAR;
1477 
1478 END Get_Primary_Uom_Class;
1479 
1480 FUNCTION Get_Process_Phase
1481 RETURN NUMBER
1482 IS
1483 BEGIN
1484 
1485    IF g_Res_rec.process_phase IS NOT NULL THEN
1486       RETURN g_Res_rec.process_phase;
1487    END IF;
1488 
1489    IF  g_Res_rec.source_code = 'RCV'
1490    AND g_Res_rec.source_line_id IS NOT NULL
1491    THEN
1492       RETURN (WIP_CONSTANTS.RES_VAL);
1493    END IF;
1494 
1495    IF g_Res_rec.source_code = 'SFCB'
1496    THEN
1497       RETURN (WIP_CONSTANTS.RES_PROC);
1498    END IF;
1499 
1500 
1501    RETURN NULL;
1502 
1503 EXCEPTION
1504    WHEN OTHERS THEN
1505       RETURN FND_API.G_MISS_NUM;
1506 
1507 END Get_Process_Phase;
1508 
1509 FUNCTION Get_Process_Status
1510 RETURN NUMBER
1511 IS
1512 BEGIN
1513 
1514    IF g_Res_rec.process_status IS NOT NULL THEN
1515       RETURN g_Res_rec.process_status;
1516    END IF;
1517 
1518    IF g_Res_rec.source_code = 'RCV'
1519      AND g_Res_rec.source_line_id IS NOT NULL
1520      THEN
1521       RETURN (WIP_CONSTANTS.PENDING);
1522    END IF;
1523 
1524    IF g_Res_rec.source_code = 'SFCB'
1525    THEN
1526       RETURN (WIP_CONSTANTS.PENDING);
1527    END IF;
1528 
1529    RETURN NULL;
1530 
1531 EXCEPTION
1532    WHEN OTHERS THEN
1533       RETURN FND_API.G_MISS_NUM;
1534 
1535 END Get_Process_Status;
1536 
1537 FUNCTION Get_Project
1538 RETURN NUMBER
1539 IS
1540 BEGIN
1541 
1542    IF g_Res_rec.project_id IS NOT NULL THEN
1543       RETURN g_Res_rec.project_id;
1544    END IF;
1545 
1546    IF g_Res_rec.source_code = 'RCV'
1547      AND g_Res_rec.source_line_id IS NOT NULL THEN
1548 
1549       IF g_PO_Dstr.project_id IS NOT NULL THEN
1550          RETURN g_PO_Dstr.project_id;
1551       ELSE
1552          get_pd_attr();
1553          RETURN g_PO_Dstr.project_id;
1554       END IF;
1555 
1556    END IF;
1557 
1558    RETURN NULL;
1559 
1560 EXCEPTION
1561    WHEN OTHERS THEN
1562       RETURN FND_API.G_MISS_NUM;
1563 
1564 END Get_Project;
1565 
1566 FUNCTION Get_Rcv_Transaction
1567 RETURN NUMBER
1568 IS
1569 BEGIN
1570 
1571    IF g_Res_rec.rcv_transaction_id IS NOT NULL THEN
1572       RETURN g_Res_rec.rcv_transaction_id;
1573    END IF;
1574 
1575    RETURN NULL;
1576 
1577 EXCEPTION
1578    WHEN OTHERS THEN
1579       RETURN FND_API.G_MISS_NUM;
1580 
1581 END Get_Rcv_Transaction;
1582 
1583 FUNCTION Get_Reason
1584 RETURN NUMBER
1585 IS
1586 BEGIN
1587 
1588    IF g_Res_rec.reason_id IS NOT NULL THEN
1589       RETURN g_Res_rec.reason_id;
1590    END IF;
1591 
1592    IF g_Res_rec.source_code = 'RCV'
1593      AND g_Res_rec.source_line_id IS NOT NULL THEN
1594 
1595       IF g_RCV_txn.reason_id IS NOT NULL THEN
1596          RETURN g_RCV_txn.reason_id;
1597       ELSE
1598          get_rti_attr();
1599          RETURN g_RCV_txn.reason_id;
1600       END IF;
1601 
1602    END IF;
1603 
1604    RETURN NULL;
1605 
1606 EXCEPTION
1607    WHEN OTHERS THEN
1608       RETURN FND_API.G_MISS_NUM;
1609 
1610 END Get_Reason;
1611 
1612 FUNCTION Get_Reason_Name
1613 RETURN VARCHAR2
1614 IS
1615 l_reason_name   VARCHAR2(30);
1616 BEGIN
1617 
1618    IF g_Res_rec.reason_name IS NOT NULL THEN
1619       RETURN g_Res_rec.reason_name;
1620    END IF;
1621 
1622    IF g_Res_rec.reason_id IS NOT NULL then
1623 
1624          SELECT reason_name
1625            INTO l_reason_name
1626            FROM mtl_transaction_reasons
1627            WHERE reason_id = g_Res_rec.reason_id;
1628 
1629            RETURN l_reason_name;
1630    END IF;
1631 
1632    RETURN NULL;
1633 
1634 EXCEPTION
1635    WHEN OTHERS THEN
1636       RETURN FND_API.G_MISS_CHAR;
1637 
1638 END Get_Reason_Name;
1639 
1640 FUNCTION Get_Receiving_Account
1641 RETURN NUMBER
1642 IS
1643 BEGIN
1644 
1645    IF g_Res_rec.receiving_account_id IS NOT NULL THEN
1646       RETURN g_Res_rec.receiving_account_id;
1647    END IF;
1648 
1649    IF g_Res_rec.source_code = 'RCV'
1650      AND g_Res_rec.organization_id IS NOT NULL THEN
1651 
1652       SELECT   rp.receiving_account_id
1653         INTO   g_Res_rec.receiving_account_id
1654         FROM   rcv_parameters rp
1655         WHERE  rp.organization_id = g_Res_rec.organization_id;
1656 
1657       RETURN g_Res_rec.receiving_account_id;
1658    END IF;
1659 
1660    RETURN NULL;
1661 
1662 EXCEPTION
1663    WHEN OTHERS THEN
1664       RETURN FND_API.G_MISS_NUM;
1665 
1666 END Get_Receiving_Account;
1667 
1668 FUNCTION Get_Reference
1669 RETURN VARCHAR2
1670 IS
1671 BEGIN
1672 
1673    IF g_Res_rec.reference IS NOT NULL THEN
1674       RETURN g_Res_rec.reference;
1675    END IF;
1676 
1677    IF g_Res_rec.source_code = 'RCV'
1678      AND g_Res_rec.source_line_id IS NOT NULL THEN
1679 
1680       IF g_RCV_txn.comments IS NOT NULL THEN
1681          RETURN g_RCV_txn.comments;
1682       ELSE
1683          get_rti_attr();
1684          RETURN g_RCV_txn.comments;
1685       END IF;
1686 
1687    END IF;
1688 
1689     RETURN NULL;
1690 
1691 EXCEPTION
1692    WHEN OTHERS THEN
1693       RETURN FND_API.G_MISS_CHAR;
1694 
1695 END Get_Reference;
1696 
1697 FUNCTION Get_Repetitive_Schedule
1698 RETURN NUMBER
1699 IS
1700 BEGIN
1701 
1702    IF g_Res_rec.repetitive_schedule_id IS NOT NULL THEN
1703       RETURN g_Res_rec.repetitive_schedule_id;
1704    END IF;
1705 
1706    IF g_Res_rec.source_code = 'RCV'
1707      AND g_Res_rec.source_line_id IS NOT NULL THEN
1708 
1709       IF g_RCV_txn.wip_repetitive_schedule_id IS NOT NULL THEN
1710          RETURN g_RCV_txn.wip_repetitive_schedule_id;
1711       ELSE
1712          get_rti_attr();
1713          RETURN g_RCV_txn.wip_repetitive_schedule_id;
1714       END IF;
1715 
1716    END IF;
1717 
1718    RETURN NULL;
1719 
1720 EXCEPTION
1721    WHEN OTHERS THEN
1722       RETURN FND_API.G_MISS_NUM;
1723 
1724 END Get_Repetitive_Schedule;
1725 
1726 FUNCTION Get_Resource_Code
1727 RETURN VARCHAR2
1728 IS
1729 BEGIN
1730 
1731    IF g_Res_rec.resource_code IS NOT NULL THEN
1732       RETURN g_Res_rec.resource_code;
1733    END IF;
1734 
1735    IF g_BOM_res.resource_code IS NOT NULL THEN
1736         return g_BOM_res.resource_code;
1737    END IF;
1738 
1739    IF g_Res_rec.resource_id IS NOT NULL then
1740       get_br_attr();
1741       RETURN g_BOM_res.resource_code;
1742    END IF;
1743 
1744    RETURN NULL;
1745 
1746 EXCEPTION
1747    WHEN OTHERS THEN
1748       RETURN FND_API.G_MISS_CHAR;
1749 
1750 END Get_Resource_Code;
1751 
1752 FUNCTION Get_Resource_Id
1753 RETURN NUMBER
1754 IS
1755 BEGIN
1756 
1757    IF g_Res_rec.resource_id IS NOT NULL THEN
1758       RETURN g_Res_rec.resource_id;
1759    END IF;
1760 
1761    IF g_WIP_op_res.resource_id IS NOT NULL THEN
1762       RETURN g_WIP_op_res.resource_id;
1763    ELSE
1764       get_wor_attr();
1765       RETURN g_WIP_op_res.resource_id;
1766    END IF;
1767 
1768    RETURN NULL;
1769 
1770 EXCEPTION
1771    WHEN OTHERS THEN
1772       RETURN FND_API.G_MISS_NUM;
1773 
1774 END Get_Resource_Id;
1775 
1776 FUNCTION Get_Resource_Seq_Num
1777 RETURN NUMBER
1778 IS
1779 BEGIN
1780 
1781    IF g_Res_rec.resource_seq_num IS NOT NULL THEN
1782       RETURN g_Res_rec.resource_seq_num;
1783    END IF;
1784 
1785    IF g_Res_rec.source_code = 'RCV'
1786      AND g_Res_rec.source_line_id IS NOT NULL THEN
1787 
1788       IF g_RCV_txn.wip_resource_seq_num IS NOT NULL THEN
1789          RETURN g_RCV_txn.wip_resource_seq_num;
1790       ELSE
1791          get_rti_attr();
1792          RETURN g_RCV_txn.wip_resource_seq_num;
1793       END IF;
1794 
1795    END IF;
1796 
1797    RETURN NULL;
1798 
1799 EXCEPTION
1800    WHEN OTHERS THEN
1801       RETURN FND_API.G_MISS_NUM;
1802 
1803 END Get_Resource_Seq_Num;
1804 
1805 FUNCTION Get_Resource_Type
1806 RETURN NUMBER
1807 IS
1808 BEGIN
1809 
1810    IF g_Res_rec.resource_type IS NOT NULL THEN
1811       RETURN g_Res_rec.resource_type;
1812    END IF;
1813 
1814    IF g_BOM_res.resource_type IS NOT NULL THEN
1815         return g_BOM_res.resource_type;
1816    END IF;
1817 
1818    IF g_Res_rec.resource_id IS NOT NULL then
1819       get_br_attr();
1820       RETURN g_BOM_res.resource_type;
1821    END IF;
1822 
1823    RETURN NULL;
1824 
1825 EXCEPTION
1826    WHEN OTHERS THEN
1827       RETURN FND_API.G_MISS_NUM;
1828 END Get_Resource_Type;
1829 
1830 FUNCTION Get_Source
1831 RETURN VARCHAR2
1832 IS
1833 BEGIN
1834 
1835    IF g_Res_rec.source_code IS NOT NULL THEN
1836       RETURN g_Res_rec.source_code;
1837    END IF;
1838 
1839    RETURN NULL;
1840 
1841 EXCEPTION
1842    WHEN OTHERS THEN
1843       RETURN FND_API.G_MISS_NUM;
1844 
1845 END Get_Source;
1846 
1847 FUNCTION Get_Source_Line
1848 RETURN NUMBER
1849 IS
1850 BEGIN
1851 
1852    IF g_Res_rec.source_line_id IS NOT NULL THEN
1853       RETURN g_Res_rec.source_line_id;
1854    END IF;
1855 
1856    RETURN NULL;
1857 
1858 EXCEPTION
1859    WHEN OTHERS THEN
1860       RETURN FND_API.G_MISS_NUM;
1861 
1862 END Get_Source_Line;
1863 
1864 FUNCTION Get_Standard_Rate
1865 RETURN NUMBER
1866 IS
1867 BEGIN
1868 
1869    IF g_Res_rec.standard_rate_flag IS NOT NULL THEN
1870       RETURN g_Res_rec.standard_rate_flag;
1871    END IF;
1872 
1873    IF g_WIP_op_res.std_rate_flag IS NOT NULL THEN
1874       RETURN g_WIP_op_res.std_rate_flag;
1875    ELSE
1876       get_wor_attr();
1877       RETURN g_WIP_op_res.std_rate_flag;
1878    END IF;
1879 
1880    RETURN NULL;
1881 
1882 EXCEPTION
1883    WHEN OTHERS THEN
1884       RETURN FND_API.G_MISS_NUM;
1885 
1886 END Get_Standard_Rate;
1887 
1888 FUNCTION Get_Task
1889 RETURN NUMBER
1890 IS
1891 BEGIN
1892 
1893    IF g_Res_rec.task_id IS NOT NULL THEN
1894       RETURN g_Res_rec.task_id;
1895    END IF;
1896 
1897    IF g_Res_rec.source_code = 'RCV'
1898      AND g_Res_rec.source_line_id IS NOT NULL
1899      THEN
1900       IF g_PO_Dstr.task_id IS NOT NULL THEN
1901          RETURN g_PO_Dstr.task_id;
1902       ELSE
1903          get_pd_attr();
1904          RETURN g_PO_Dstr.task_id;
1905       END IF;
1906    END IF;
1907 
1908    RETURN NULL;
1909 
1910 EXCEPTION
1911    WHEN OTHERS THEN
1912       RETURN FND_API.G_MISS_NUM;
1913 
1914 END Get_Task;
1915 
1916 FUNCTION Get_Transaction_Date
1917 RETURN DATE
1918 IS
1919 BEGIN
1920 
1921    IF g_Res_rec.transaction_date IS NOT NULL THEN
1922       RETURN g_Res_rec.transaction_date;
1923    END IF;
1924 
1925    IF g_Res_rec.source_code = 'RCV'
1926      AND g_Res_rec.source_line_id IS NOT NULL THEN
1927 
1928       IF g_RCV_txn.transaction_date IS NOT NULL THEN
1929          RETURN g_RCV_txn.transaction_date;
1930       ELSE
1931          get_rti_attr();
1932          RETURN g_RCV_txn.transaction_date;
1933       END IF;
1934 
1935    END IF;
1936 
1937    RETURN NULL;
1938 
1939 EXCEPTION
1940    WHEN OTHERS THEN
1941       RETURN FND_API.G_MISS_DATE;
1942 
1943 END Get_Transaction_Date;
1944 
1945 FUNCTION Get_Transaction
1946 RETURN NUMBER
1947 IS
1948 BEGIN
1949 
1950    IF g_Res_rec.transaction_id IS NOT NULL THEN
1951       RETURN g_Res_rec.transaction_id;
1952    END IF;
1953 
1954    RETURN NULL;
1955 
1956 EXCEPTION
1957    WHEN OTHERS THEN
1958       RETURN FND_API.G_MISS_NUM;
1959 
1960 END Get_Transaction;
1961 
1962 FUNCTION Get_Transaction_Quantity
1963 RETURN NUMBER
1964 IS
1965    l_uom_basis  VARCHAR2(25);
1966    l_po_qty     NUMBER;
1967 BEGIN
1968 
1969    IF g_Res_rec.transaction_quantity IS NOT NULL THEN
1970       RETURN g_Res_rec.transaction_quantity;
1971    END IF;
1972 
1973    IF g_Res_rec.source_code = 'RCV'
1974      AND g_Res_rec.source_line_id IS NOT NULL
1975      THEN
1976 
1977       -- Calculate the transaction quantity.
1978 
1979       SELECT msi.outside_operation_uom_type, rti.primary_quantity
1980         INTO l_uom_basis, l_po_qty
1981         FROM mtl_system_items msi, rcv_transactions_interface rti
1982         WHERE msi.inventory_item_id = rti.item_id
1983         AND   msi.organization_id = rti.to_organization_id
1984         AND   rti.interface_transaction_id = g_Res_rec.source_line_id;
1985 
1986       IF l_uom_basis = 'ASSEMBLY' THEN
1987         /* Fix for bug 4155822: Added condition usage rate or amount <> 0 */
1988         IF (    g_Res_rec.usage_rate_or_amount IS NOT NULL
1989             AND g_Res_rec.usage_rate_or_amount <> 0) THEN
1990           g_Res_rec.transaction_quantity := l_po_qty*g_Res_rec.usage_rate_or_amount;
1991         ELSE
1992           g_Res_rec.transaction_quantity := l_po_qty;
1993         END IF;
1994        ELSIF l_uom_basis = 'RESOURCE' THEN
1995          g_Res_rec.transaction_quantity := l_po_qty;
1996       ELSE
1997          RETURN NULL;
1998       END IF;
1999 
2000       IF g_Res_rec.action = WIP_Transaction_PUB.G_ACT_OSP_RET_TO_RCV
2001         OR g_Res_rec.action = WIP_Transaction_PUB.G_ACT_OSP_RET_TO_VEND
2002         OR g_Res_rec.action = WIP_Transaction_PUB.G_ACT_OSP_CORRECT_TO_RCV
2003         THEN
2004          g_Res_rec.transaction_quantity := -1* g_Res_rec.transaction_quantity;
2005       END IF;
2006 
2007       RETURN g_Res_rec.transaction_quantity;
2008    END IF;
2009 
2010    RETURN NULL;
2011 
2012 EXCEPTION
2013    WHEN OTHERS THEN
2014       RETURN FND_API.G_MISS_NUM;
2015 
2016 END Get_Transaction_Quantity;
2017 
2018 FUNCTION Get_Transaction_Type
2019 RETURN NUMBER
2020 IS
2021 BEGIN
2022 
2023    IF g_Res_rec.transaction_type IS NOT NULL THEN
2024       RETURN g_Res_rec.transaction_type;
2025    END IF;
2026 
2027    IF g_Res_rec.source_code = 'RCV'
2028      AND g_Res_rec.source_line_id IS NOT NULL
2029      THEN
2030       RETURN WIP_CONSTANTS.OSP_TXN;
2031    END IF;
2032 
2033    IF g_Res_rec.source_code = 'SFCB'
2034    THEN
2035       RETURN (WIP_CONSTANTS.RES_TXN);
2036    END IF;
2037 
2038    RETURN NULL;
2039 
2040 EXCEPTION
2041    WHEN OTHERS THEN
2042       RETURN FND_API.G_MISS_NUM;
2043 
2044 END Get_Transaction_Type;
2045 
2046 FUNCTION Get_Transaction_Uom
2047 RETURN VARCHAR2
2048 IS
2049 BEGIN
2050 
2051    IF g_Res_rec.transaction_uom IS NOT NULL THEN
2052       RETURN g_Res_rec.transaction_uom;
2053    END IF;
2054 
2055    IF g_WIP_op_res.uom_code IS NOT NULL THEN
2056       RETURN g_WIP_op_res.uom_code;
2057    ELSE
2058       get_wor_attr();
2059       RETURN g_WIP_op_res.uom_code;
2060    END IF;
2061 
2062    RETURN NULL;
2063 
2064 EXCEPTION
2065    WHEN OTHERS THEN
2066       RETURN FND_API.G_MISS_CHAR;
2067 
2068 END Get_Transaction_Uom;
2069 
2070 FUNCTION Get_Usage_Rate_Or_Amount
2071 RETURN NUMBER
2072 IS
2073 BEGIN
2074 
2075    IF g_Res_rec.usage_rate_or_amount IS NOT NULL THEN
2076       RETURN g_Res_rec.usage_rate_or_amount;
2077    END IF;
2078 
2079    IF g_WIP_op_res.usage_rate_or_amount IS NOT NULL THEN
2080       RETURN g_WIP_op_res.usage_rate_or_amount;
2081    ELSE
2082       get_wor_attr();
2083       RETURN g_WIP_op_res.usage_rate_or_amount;
2084    END IF;
2085 
2086    RETURN NULL;
2087 
2088 EXCEPTION
2089    WHEN OTHERS THEN
2090       RETURN FND_API.G_MISS_NUM;
2091 
2092 END Get_Usage_Rate_Or_Amount;
2093 
2094 FUNCTION Get_Wip_Entity
2095 RETURN NUMBER
2096 IS
2097 BEGIN
2098 
2099    IF g_Res_rec.wip_entity_id IS NOT NULL THEN
2100       RETURN g_Res_rec.wip_entity_id;
2101    END IF;
2102 
2103    IF g_Res_rec.source_code = 'RCV'
2104      AND g_Res_rec.source_line_id IS NOT NULL THEN
2105 
2106       IF g_RCV_txn.wip_entity_id IS NOT NULL THEN
2107          RETURN g_RCV_txn.wip_entity_id;
2108       ELSE
2109          get_rti_attr();
2110          RETURN g_RCV_txn.wip_entity_id;
2111       END IF;
2112 
2113    END IF;
2114 
2115    RETURN NULL;
2116 
2117 EXCEPTION
2118    WHEN OTHERS THEN
2119       RETURN FND_API.G_MISS_NUM;
2120 
2121 END Get_Wip_Entity;
2122 
2123 FUNCTION Get_Wip_Entity_Name
2124 RETURN VARCHAR2
2125 IS
2126 BEGIN
2127 
2128    IF g_Res_rec.wip_entity_name IS NOT NULL THEN
2129       RETURN g_Res_rec.wip_entity_name;
2130    END IF;
2131 
2132    IF g_wip_entities_rec.wip_entity_name IS NOT NULL THEN
2133       RETURN g_wip_entities_rec.wip_entity_name;
2134    ELSE
2135       get_we_attr();
2136       RETURN g_wip_entities_rec.wip_entity_name;
2137    END IF;
2138 
2139    RETURN NULL;
2140 
2141 EXCEPTION
2142    WHEN OTHERS THEN
2143       RETURN FND_API.G_MISS_CHAR;
2144 
2145 END Get_Wip_Entity_Name;
2146 
2147 PROCEDURE Get_Flex_Res
2148 IS
2149 BEGIN
2150 
2151     --  In the future call Flex APIs for defaults
2152 
2153     IF g_Res_rec.attribute1 = FND_API.G_MISS_CHAR THEN
2154         g_Res_rec.attribute1           := NULL;
2155     END IF;
2156 
2157     IF g_Res_rec.attribute10 = FND_API.G_MISS_CHAR THEN
2158         g_Res_rec.attribute10          := NULL;
2159     END IF;
2160 
2161     IF g_Res_rec.attribute11 = FND_API.G_MISS_CHAR THEN
2162         g_Res_rec.attribute11          := NULL;
2163     END IF;
2164 
2165     IF g_Res_rec.attribute12 = FND_API.G_MISS_CHAR THEN
2166         g_Res_rec.attribute12          := NULL;
2167     END IF;
2168 
2169     IF g_Res_rec.attribute13 = FND_API.G_MISS_CHAR THEN
2170         g_Res_rec.attribute13          := NULL;
2171     END IF;
2172 
2173     IF g_Res_rec.attribute14 = FND_API.G_MISS_CHAR THEN
2174         g_Res_rec.attribute14          := NULL;
2175     END IF;
2176 
2177     IF g_Res_rec.attribute15 = FND_API.G_MISS_CHAR THEN
2178         g_Res_rec.attribute15          := NULL;
2179     END IF;
2180 
2181     IF g_Res_rec.attribute2 = FND_API.G_MISS_CHAR THEN
2182         g_Res_rec.attribute2           := NULL;
2183     END IF;
2184 
2185     IF g_Res_rec.attribute3 = FND_API.G_MISS_CHAR THEN
2186         g_Res_rec.attribute3           := NULL;
2187     END IF;
2188 
2189     IF g_Res_rec.attribute4 = FND_API.G_MISS_CHAR THEN
2190         g_Res_rec.attribute4           := NULL;
2191     END IF;
2192 
2193     IF g_Res_rec.attribute5 = FND_API.G_MISS_CHAR THEN
2194         g_Res_rec.attribute5           := NULL;
2195     END IF;
2196 
2197     IF g_Res_rec.attribute6 = FND_API.G_MISS_CHAR THEN
2198         g_Res_rec.attribute6           := NULL;
2199     END IF;
2200 
2201     IF g_Res_rec.attribute7 = FND_API.G_MISS_CHAR THEN
2202         g_Res_rec.attribute7           := NULL;
2203     END IF;
2204 
2205     IF g_Res_rec.attribute8 = FND_API.G_MISS_CHAR THEN
2206         g_Res_rec.attribute8           := NULL;
2207     END IF;
2208 
2209     IF g_Res_rec.attribute9 = FND_API.G_MISS_CHAR THEN
2210         g_Res_rec.attribute9           := NULL;
2211     END IF;
2212 
2213     IF g_Res_rec.attribute_category = FND_API.G_MISS_CHAR THEN
2214         g_Res_rec.attribute_category   := NULL;
2215     END IF;
2216 
2217 END Get_Flex_Res;
2218 
2219 --  Procedure Attributes
2220 PROCEDURE Attributes
2221 (   p_Res_rec                       IN  WIP_Transaction_PUB.Res_Rec_Type
2222 ,   p_iteration                     IN  NUMBER := NULL
2223 ,   x_Res_rec                       IN OUT NOCOPY WIP_Transaction_PUB.Res_Rec_Type
2224 )
2225 IS
2226 BEGIN
2227 
2228     --  Check number of iterations.
2229 
2230     IF nvl(p_iteration,1) > WIP_GLOBALS.G_MAX_DEF_ITERATIONS THEN
2231 
2232         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
2233         THEN
2234 
2235             FND_MESSAGE.SET_NAME('WIP','WIP_DEF_MAX_ITERATION');
2236             FND_MSG_PUB.Add;
2237 
2238         END IF;
2239 
2240         RAISE FND_API.G_EXC_ERROR;
2241 
2242     END IF;
2243 
2244     --  Initialize global variables
2245 
2246     g_Res_rec := WIP_Transaction_PUB.G_MISS_RES_REC;
2247     g_RCV_txn := WIP_Transaction_PUB.G_MISS_RCV_TXN_REC;
2248     g_WIP_op_res := WIP_Transaction_PUB.G_MISS_WIP_OP_RES_REC;
2249     g_PO_Dstr := WIP_Transaction_PUB.G_MISS_PO_DIST_REC;
2250     g_Wip_Entities_rec := WIP_Work_Order_PUB.G_MISS_WIP_ENTITIES_REC;
2251     g_BOM_res := WIP_Transaction_PUB.G_MISS_BOM_RES_REC;
2252 
2253     g_Res_rec := p_Res_rec;
2254 
2255     --  Default missing attributes.
2256 
2257     g_Res_rec.wip_entity_id := Get_Wip_Entity;
2258     g_Res_rec.wip_entity_name := Get_Wip_Entity_Name;
2259     g_Res_rec.primary_item_id := Get_Primary_Item;
2260     g_Res_rec.line_id := Get_Line_Id;
2261     g_Res_rec.operation_seq_num := Get_Operation_Seq_Num;
2262     g_Res_rec.organization_id := Get_Organization_Id;
2263     g_Res_rec.po_header_id := Get_Po_Header;
2264     g_Res_rec.po_line_id := Get_Po_Line;
2265     g_Res_rec.reason_id := Get_Reason;
2266     g_Res_rec.reference := Get_Reference;
2267     g_Res_rec.repetitive_schedule_id := Get_Repetitive_Schedule;
2268     g_Res_rec.resource_seq_num := Get_Resource_Seq_Num;
2269     g_Res_rec.transaction_date := Get_Transaction_Date;
2270     g_Res_rec.acct_period_id := Get_Acct_Period;
2271     g_Res_rec.activity_id := Get_Activity;
2272     g_Res_rec.resource_id := Get_Resource_Id;
2273     g_Res_rec.usage_rate_or_amount := Get_Usage_Rate_Or_Amount;
2274     g_Res_rec.basis_type := Get_Basis_Type;
2275     g_Res_rec.autocharge_type := Get_Autocharge_Type;
2276     g_Res_rec.primary_uom := Get_Primary_Uom;
2277     g_Res_rec.transaction_uom := Get_Transaction_Uom;
2278     g_Res_rec.standard_rate_flag := Get_Standard_Rate;
2279     g_Res_rec.project_id := Get_Project;
2280     g_Res_rec.task_id := Get_Task;
2281     g_Res_rec.activity_name := Get_Activity_Name;
2282     g_Res_rec.transaction_quantity := Get_Transaction_Quantity;
2283     g_Res_rec.primary_quantity := Get_Primary_Quantity;
2284     g_Res_rec.currency_code := Get_Currency;
2285     g_Res_rec.currency_conversion_date := Get_Currency_Conversion_Date;
2286     g_Res_rec.currency_conversion_rate := Get_Currency_Conversion_Rate;
2287     g_Res_rec.actual_resource_rate := Get_Actual_Resource_Rate;
2288     g_Res_rec.currency_conversion_type := Get_Currency_Conversion_Type;
2289     g_Res_rec.currency_actual_rsc_rate := Get_Currency_Actual_Rsc_Rate;
2290     g_Res_rec.department_id := Get_Department_Id;
2291     g_Res_rec.department_code := Get_Department_Code;
2292     g_Res_rec.entity_type := Get_Entity_Type;
2293     g_Res_rec.created_by := Get_Created_By;
2294     g_Res_rec.created_by_name := Get_Created_By_Name;
2295     g_Res_rec.last_updated_by := Get_Last_Updated_By;
2296     g_Res_rec.last_updated_by_name := Get_Last_Updated_By_Name;
2297     g_Res_rec.line_code := Get_Line_Code;
2298     g_Res_rec.organization_code := Get_Organization_Code;
2299     g_Res_rec.process_phase := Get_Process_Phase;
2300     g_Res_rec.process_status := Get_Process_Status;
2301     g_Res_rec.reason_name := Get_Reason_Name;
2302     g_Res_rec.resource_code := Get_Resource_Code;
2303     g_Res_rec.resource_type := Get_Resource_Type;
2304     g_Res_rec.transaction_type := Get_Transaction_Type;
2305     g_Res_rec.last_update_date := Get_Last_Update_Date;
2306     g_Res_rec.creation_date := Get_Creation_Date;
2307 
2308     IF g_Res_rec.created_by IS NULL THEN
2309         g_Res_rec.created_by := NULL;
2310     END IF;
2311 
2312     IF g_Res_rec.creation_date IS NULL THEN
2313         g_Res_rec.creation_date := Sysdate;
2314     END IF;
2315 
2316     IF g_Res_rec.last_updated_by IS NULL THEN
2317         g_Res_rec.last_updated_by := NULL;
2318     END IF;
2319 
2320     IF g_Res_rec.last_update_date IS NULL THEN
2321         g_Res_rec.last_update_date := Sysdate;
2322     END IF;
2323 
2324     IF g_Res_rec.last_update_login IS NULL THEN
2325         g_Res_rec.last_update_login := NULL;
2326     END IF;
2327 
2328     IF g_Res_rec.program_application_id IS NULL THEN
2329        --FND_PROFILE.Get('CONC_PROGRAM_APPLICATION_ID',g_Res_rec.program_application_id);
2330        g_Res_rec.program_application_id := NULL;
2331     END IF;
2332 
2333     IF g_Res_rec.program_id IS NULL THEN
2334        --FND_PROFILE.Get('CONC_PROGRAM_ID', g_Res_rec.program_id);
2335        g_Res_rec.program_id := NULL;
2336     END IF;
2337 
2338     IF g_Res_rec.program_update_date IS NULL THEN
2339         g_Res_rec.program_update_date := Sysdate;
2340     END IF;
2341 
2342     IF g_Res_rec.request_id IS NULL THEN
2343        --FND_PROFILE.Get('CONC_REQUEST_ID', g_Res_rec.request_id);
2344        g_Res_rec.request_id:= NULL;
2345     END IF;
2346 
2347     x_Res_rec := g_Res_rec;
2348 END Attributes;
2349 
2350 END WIP_Default_Res;