DBA Data[Home] [Help]

PACKAGE BODY: APPS.POS_CLM_UTIL_PKG

Source


1 PACKAGE BODY POS_CLM_UTIL_PKG as
2 /* $Header: POSCLMUTILB.pls 120.8 2011/09/23 06:41:52 ramkandu ship $ */
3 
4   FUNCTION getCLMStatus RETURN VARCHAR2
5   IS
6   ProfileValue VARCHAR2(1);
7   BEGIN
8     --CLM FLAG
9     ProfileValue := NVL(FND_PROFILE.VALUE('PO_CLM_INSTALLED'),'N');
10     RETURN ProfileValue;
11   EXCEPTION WHEN OTHERS THEN
12     RETURN 'N';
13   END getCLMStatus;
14 
15 
16   FUNCTION IsFundedInfoSLINAllowed RETURN VARCHAR2 IS
17     InfoFundedStatus VARCHAR2(1);
18   BEGIN
19 
20     --Change THIS FLAG to Disable Info Funded
21     InfoFundedStatus := 'N';
22 
23     IF getCLMStatus <> 'Y'
24     THEN
25       RETURN 'N';
26     ELSE
27       RETURN InfoFundedStatus;
28     END IF;
29   END;
30 
31   --Enforce Single Distribution Flag
32   FUNCTION IsEnforceSingleDistEnabled
33   RETURN VARCHAR2
34   IS
35     EnforceSingleDistStatus VARCHAR2(1);
36   BEGIN
37 
38     --Change THIS FLAG to Disable Enforce Single Distribution
39     EnforceSingleDistStatus := 'N';
40 
41     IF getCLMStatus <> 'Y'
42     THEN
43       RETURN 'N';
44     ELSE
45       RETURN EnforceSingleDistStatus;
46     END IF;
47   END IsEnforceSingleDistEnabled;
48 
49   --Complex Pricing Flag
50   FUNCTION IsComplexPricingAllowed return varchar2 is
51     ComplexPricingStatus VARCHAR2(1);
52   BEGIN
53 
54     --Change THIS FLAG to Disable Complex Pricing
55     ComplexPricingStatus := 'N';
56     IF getCLMStatus <> 'Y'
57     THEN
58       RETURN 'N';
59     ELSE
60       RETURN ComplexPricingStatus;
61     END IF;
62   END;
63 
64   FUNCTION Isclminstalled
65   RETURN BOOLEAN
66   IS
67   BEGIN
68     if getCLMStatus ='Y'
69     THEN
70       RETURN TRUE;
71     ELSE
72       RETURN FALSE;
73     END IF;
74 
75   END isclminstalled;
76 
77   FUNCTION includeOptionAmount RETURN VARCHAR2 is begin  return 'Y'; end;
78 
79   FUNCTION validateInfoflags(  p_from_clm_info_flag IN VARCHAR2
80                               ,p_to_clm_info_flag   IN VARCHAR2
81                             )
82    RETURN BOOLEAN
83    IS
84    BEGIN
85     IF Nvl(p_from_clm_info_flag,'N') = 'N' AND Nvl(p_to_clm_info_flag,'N') ='N' THEN
86      RETURN FALSE;
87     ELSE
88      RETURN TRUE;
89     END IF;
90    END validateInfoflags;
91 
92    FUNCTION valdiateFundFalgs (    p_from_clm_funded_flag IN VARCHAR2
93                                   ,p_to_clm_funded_flag IN VARCHAR2
94                                )
95    RETURN BOOLEAN
96     IS
97    BEGIN
98      IF p_from_clm_funded_flag ='Y' AND p_to_clm_funded_flag='Y' THEN
99      RETURN FALSE ;
100      ELSE
101      RETURN TRUE;
102      END IF;
103    END valdiateFundFalgs;
104 
105   Procedure getclmFlags
106           (p_product  IN VARCHAR2
107           ,p_document_id IN NUMBER
108           ,p_line_id  IN NUMBER
109           ,x_clm_info_flag IN out NOCOPY VARCHAR2
110           ,x_clm_funded_flag IN OUT NOCOPY VARCHAR2)
111   IS
112     l_clm_info_flag  NUMBER := NULL;
113   BEGIN
114     IF p_product = 'PO' THEN
115       SELECT  Nvl(clm_info_flag,'N'),clm_funded_flag
116       INTO    x_clm_info_flag, x_clm_funded_flag
117       FROM   po_lines_draft_all
118       WHERE  po_line_id = p_line_id;
119     ELSIF p_product = 'ICX' THEN
120       SELECT  Nvl(clm_info_flag,'N'),clm_funded_flag
121       INTO    x_clm_info_flag, x_clm_funded_flag
122       FROM   po_requisition_lines_all
123       WHERE  requisition_line_id = p_line_id;
124     ELSIF p_product ='PON' THEN
125        SELECT  Nvl(clm_info_flag,'N'),clm_funded_flag
126        INTO   x_clm_info_flag, x_clm_funded_flag
127        FROM   pon_auction_item_prices_all
128              WHERE  line_number = p_line_id
129              AND auction_header_id = p_document_id;
130 
131 
132     ELSIF p_product='PON BID' THEN
133         SELECT Nvl(clm_info_flag,'N'),clm_funded_flag
134          INTO   x_clm_info_flag, x_clm_funded_flag
135         FROM   pon_bid_item_prices
136         WHERE  BID_NUMBER = p_line_id
137         AND auction_header_id = p_document_id;
138 
139     END IF;
140   EXCEPTION
141     WHEN OTHERS THEN
142          NULL;
143   END getclmflags;
144 
145   FUNCTION Getlinenum
146        (p_product  IN VARCHAR2
147         ,p_document_id IN NUMBER
148         ,p_line_id  IN NUMBER)
149   RETURN NUMBER
150   IS
151     l_line_num  NUMBER := NULL;
152   BEGIN
153     IF p_product = 'PO' THEN
154       SELECT LINE_NUM        --line_num_display
155       INTO    l_line_num
156       FROM   po_lines_draft_all
157       WHERE  po_line_id = p_line_id;
158     ELSIF p_product = 'ICX' THEN
159       SELECT  LINE_NUM
160       INTO     l_line_num
161       FROM   po_requisition_lines_all
162       WHERE  requisition_line_id = p_line_id;
163     ELSIF p_product ='PON' THEN
164        /*SELECT LINE_NUM_DISPLAY
165        INTO   l_line_num
166        FROM   pon_auction_item_prices_all
167              WHERE  line_number = p_line_id
168              AND auction_header_id = p_document_id;*/
169              l_line_num := p_line_id;
170 
171     ELSIF p_product='PON BID' THEN
172        /* SELECT LINE_NUM_DISPLAY
173          INTO   l_line_num
174         FROM   pon_bid_item_prices
175         WHERE  BID_NUMBER = p_line_id
176         AND auction_header_id = p_document_id;*/
177          l_line_num := p_line_id;
178     END IF;
179 
180     RETURN l_line_num;
181   EXCEPTION
182     WHEN OTHERS THEN
183       RETURN NULL;
184   END Getlinenum;
185 
186   FUNCTION isOptionExist
187        (p_product      IN VARCHAR2,
188         p_document_id  IN NUMBER DEFAULT NULL,
189         p_line_id      IN VARCHAR2)
190   RETURN VARCHAR2
191   IS
192     l_flag  VARCHAR2(1) := 'N';
193     l_line_num NUMBER;
194   BEGIN
195     -- l_line_num:= getlinenum(p_product,p_document_id,p_line_id);
196     IF p_product = 'PO' THEN
197       SELECT 'Y'
198       INTO   l_flag
199       FROM   dual
200       WHERE  EXISTS (SELECT 'x'
201                          FROM   po_lines_draft_all
202                          WHERE  CLM_BASE_LINE_NUM = p_line_id
203                          AND PO_HEADER_ID=Nvl(p_document_id,PO_HEADER_ID));
204 
205     ELSIF p_product = 'ICX' THEN
206 
207       SELECT 'Y'
208       INTO   l_flag
209       FROM   dual
210       WHERE  EXISTS (SELECT 'x'
211                          FROM   po_requisition_lines_all
212                          WHERE  CLM_BASE_LINE_NUM = p_line_id
213                          AND    REQUISITION_HEADER_ID=Nvl(p_document_id,REQUISITION_HEADER_ID));
214 
215    ELSIF p_product = 'PON' THEN
216       SELECT 'Y'
217       INTO   l_flag
218       FROM   dual
219       WHERE  EXISTS (SELECT 'x'
220                          FROM   pon_auction_item_prices_all
221                          WHERE  1=1
222                          AND CLM_BASE_LINE_NUM = p_line_id
223                          AND auction_header_id = p_document_id);
224 
225    ELSIF p_product = 'PON BID' THEN
226       SELECT 'Y'
227       INTO   l_flag
228       FROM   dual
229       WHERE  EXISTS (SELECT 'x'
230                          FROM   pon_bid_item_prices
231                          WHERE  CLM_BASE_LINE_NUM = p_line_id
232                                 AND auction_header_id = p_document_id);
233 
234   END IF;
235 
236     RETURN l_flag;
237 
238  EXCEPTION
239     WHEN No_Data_Found THEN
240       RETURN 'N';
241     WHEN OTHERS THEN
242       RETURN 'N';
243 
244 END isOptionExist;
245 
246   FUNCTION Isclinvalidformove
247        (p_product      IN VARCHAR2,
248         p_document_id  IN NUMBER DEFAULT NULL,
249         p_line_id      IN VARCHAR2)
250   RETURN VARCHAR2
251   IS
252     l_flag  VARCHAR2(1) := 'N';
253   BEGIN
254     IF p_product = 'PO' THEN
255       SELECT 'Y'
256       INTO   l_flag
257       FROM   dual
258       WHERE  NOT EXISTS (SELECT 'x'
259                          FROM   po_lines_draft_all
260                          WHERE  group_line_id = p_line_id);
261 
262 
263     ELSIF p_product = 'ICX' THEN
264       SELECT 'Y'
265       INTO   l_flag
266       FROM   dual
267       WHERE  NOT EXISTS (SELECT 'x'
268                          FROM   po_requisition_lines_all
269                          WHERE  group_line_id = p_line_id);
270 
271 
272 
273 
274     ELSIF p_product = 'PON' THEN
275       SELECT 'Y'
276       INTO   l_flag
277       FROM   dual
278       WHERE  NOT EXISTS (SELECT 'x'
279                          FROM   pon_auction_item_prices_all
280                          WHERE  group_line_id = p_line_id
281                                 AND auction_header_id = p_document_id);
282 
283 
284 
285     ELSIF p_product = 'PON BID' THEN
286       SELECT 'Y'
287       INTO   l_flag
288       FROM   dual
289       WHERE  NOT EXISTS (SELECT 'x'
290                          FROM   pon_bid_item_prices
291                          WHERE  group_line_id = p_line_id
292                                 AND auction_header_id = p_document_id);
293 
294 
295     END IF;
296 
297     RETURN l_flag;
298   EXCEPTION
299     WHEN No_Data_Found THEN
300       RETURN 'N';
301     WHEN OTHERS THEN
302       RETURN 'N';
303   END isclinvalidformove;
304 
305   FUNCTION Get_group_line_id
306        (p_product        IN VARCHAR2,
307         p_document_id    IN NUMBER DEFAULT NULL,
308         p_group_line_id  IN VARCHAR2)
309   RETURN NUMBER
310   IS
311     l_group_line_id  NUMBER := NULL;
312   BEGIN
313     IF p_product = 'PO' THEN
314       SELECT group_line_id
315       INTO   l_group_line_id
316       FROM   po_lines_draft_all
317       WHERE  po_line_id = p_group_line_id;
318     ELSIF p_product = 'ICX' THEN
319       SELECT group_line_id
320       INTO   l_group_line_id
321       FROM   po_requisition_lines_all
322       WHERE  requisition_line_id = p_group_line_id;
323     ELSIF p_product = 'PON' THEN
324       SELECT group_line_id
325       INTO   l_group_line_id
326       FROM   pon_auction_item_prices_all
327       WHERE  auction_header_id = p_document_id
328              AND line_number = p_group_line_id;
329     ELSIF p_product = 'PON BID' THEN
330       SELECT group_line_id
331       INTO   l_group_line_id
332       FROM   pon_bid_item_prices
333       WHERE  auction_header_id = p_document_id
334              AND bid_number = p_group_line_id;
335     END IF;
336 
337     RETURN l_group_line_id;
338   EXCEPTION
339     WHEN OTHERS THEN
340       NULL;
341   END get_group_line_id;
342 
343 
344 PROCEDURE Check_Uda_Enabled
345 (
346     p_functional_area_code  IN  VARCHAR2
347    ,p_document_type_code    IN  VARCHAR2
348    ,p_document_style_id     IN  NUMBER
349    ,x_enabled_flag          OUT NOCOPY VARCHAR2
350    ,x_return_status         OUT NOCOPY VARCHAR2
351    ,x_errorcode             OUT NOCOPY NUMBER
352    ,x_msg_count             OUT NOCOPY NUMBER
353    ,x_msg_data              OUT NOCOPY VARCHAR2
354 )
355 IS
356     d_progress  NUMBER := 0;
357 
358 BEGIN
359 
360     x_enabled_flag := 'Y';
361 
362     x_return_status :=  FND_API.G_RET_STS_SUCCESS;
363 EXCEPTION
364 WHEN OTHERS THEN
365     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
366 
367 END Check_Uda_Enabled;
368 
369 
370 PROCEDURE GET_MODIF_LINE_INFO
371 (
372     p_draftId                 IN  NUMBER,
373     p_header_id               IN  NUMBER,
374     p_line_type_id            IN  NUMBER,
375     p_item_id                 IN  NUMBER,
376     p_job_id                  IN  NUMBER,
377     p_contract_type           IN  VARCHAR2,
378     p_matching_basis          IN  VARCHAR2,
379     x_line_type               OUT NOCOPY VARCHAR2,
380     x_item_number             OUT NOCOPY VARCHAR2,
381     x_job_title               OUT NOCOPY VARCHAR2,
382     x_contract_type           OUT NOCOPY VARCHAR2,
383     x_funded_amount           OUT NOCOPY NUMBER,
384     x_return_status           OUT NOCOPY VARCHAR2,
385     x_errorcode               OUT NOCOPY NUMBER,
386     x_msg_count               OUT NOCOPY NUMBER,
387     x_msg_data                OUT NOCOPY VARCHAR2
388 )
389 IS
390    d_progress          NUMBER := 0;
391 BEGIN
392 
393     d_progress  := 1;
394 
395     BEGIN
396 
397       SELECT LINE_TYPE
398       INTO   x_line_type
399       FROM   PO_LINE_TYPES
400       WHERE  LINE_TYPE_ID = p_line_type_id AND
401       ROWNUM=1;
402 
403     EXCEPTION WHEN OTHERS THEN
404        x_line_type := NULL;
405     END;
406 
407     d_progress  := 2;
408 
409     BEGIN
410 
411       SELECT CONCATENATED_SEGMENTS
412       INTO   x_item_number
413       FROM   MTL_SYSTEM_ITEMS_KFV
414       WHERE  INVENTORY_ITEM_ID = p_item_id AND
415       ROWNUM=1;
416 
417     EXCEPTION WHEN OTHERS THEN
418        x_item_number := NULL;
419     END;
420 
421 
422     d_progress  := 3;
423 
424     BEGIN
425 
426       SELECT PJ.NAME
427       INTO   x_job_title
428       FROM   PER_JOBS PJ
429       WHERE  PJ.JOB_ID = p_job_id AND
430       ROWNUM=1;
431 
432     EXCEPTION WHEN OTHERS THEN
433        x_job_title := NULL;
434     END;
435 
436 
437     d_progress  := 4;
438 
439     BEGIN
440 
441       IF p_matching_basis = 'QUANTITY' THEN
442          SELECT DISPLAYED_FIELD
443          INTO   x_contract_type
444          FROM   PO_LOOKUP_CODES
445          WHERE  LOOKUP_CODE = p_contract_type AND
446                 LOOKUP_TYPE = 'PO_FEDERAL_CONTRACT_TYPES_QTY';
447       ELSIF p_matching_basis = 'AMOUNT' THEN
448          SELECT DISPLAYED_FIELD
449          INTO   x_contract_type
450          FROM   PO_LOOKUP_CODES
451          WHERE  LOOKUP_CODE = p_contract_type AND
452                 LOOKUP_TYPE = 'PO_FEDERAL_CONTRACT_TYPES_AMT';
453       END IF;
454 
455     EXCEPTION WHEN OTHERS THEN
456        x_contract_type := NULL;
457     END;
458 
459 
460     x_funded_amount := NULL;
461     x_return_status :=  FND_API.G_RET_STS_SUCCESS;
462 
463 EXCEPTION WHEN OTHERS THEN
464 
465     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
466 
467 END GET_MODIF_LINE_INFO;
468 
469 PROCEDURE GET_MODIF_LINE_UDA_INFO
470 (
471     p_draftId                 IN  NUMBER,
472     p_header_id               IN  NUMBER,
473     p_line_type_id            IN  NUMBER,
474     p_org_id                  IN  NUMBER,
475     p_idc_type                IN  VARCHAR2,
476     p_contract_type           IN  VARCHAR2,
477     p_item_id                 IN  NUMBER,
478     p_matching_basis          IN  VARCHAR2,
479     x_line_type               OUT NOCOPY VARCHAR2,
480     x_org_name                OUT NOCOPY VARCHAR2,
481     x_contract_type           OUT NOCOPY VARCHAR2,
482     x_item_name               OUT NOCOPY VARCHAR2,
483     x_currency_code           OUT NOCOPY VARCHAR2,
484     x_idc_type                OUT NOCOPY VARCHAR2,
485     x_ext_price_label         OUT NOCOPY VARCHAR2,
486     x_document_type           OUT NOCOPY VARCHAR2,
487     x_return_status           OUT NOCOPY VARCHAR2,
488     x_errorcode               OUT NOCOPY NUMBER,
489     x_msg_count               OUT NOCOPY NUMBER,
490     x_msg_data                OUT NOCOPY VARCHAR2
491 )
492 IS
493    d_progress          NUMBER := 0;
494 BEGIN
495     d_progress  := 1;
496 
497     BEGIN
498 
499       SELECT LINE_TYPE
500       INTO   x_line_type
501       FROM   PO_LINE_TYPES
502       WHERE  LINE_TYPE_ID = p_line_type_id AND
503       ROWNUM=1;
504 
505     EXCEPTION WHEN OTHERS THEN
506        x_line_type := NULL;
507     END;
508 
509     d_progress  := 2;
510 
511     BEGIN
512 
513       SELECT  name
514       INTO    x_org_name
515       FROM    hr_all_organization_units_tl
516       WHERE   organization_id = p_org_id
517       AND     language = USERENV('LANG');
518 
519     EXCEPTION WHEN OTHERS THEN
520        x_org_name := NULL;
521     END;
522 
523     d_progress  := 3;
524 
525     BEGIN
526 
527       IF p_matching_basis = 'QUANTITY' THEN
528          SELECT DISPLAYED_FIELD
529          INTO   x_contract_type
530          FROM   PO_LOOKUP_CODES
531          WHERE  LOOKUP_CODE = p_contract_type AND
532                 LOOKUP_TYPE = 'PO_FEDERAL_CONTRACT_TYPES_QTY';
533       ELSIF p_matching_basis = 'AMOUNT' THEN
534          SELECT DISPLAYED_FIELD
535          INTO   x_contract_type
536          FROM   PO_LOOKUP_CODES
537          WHERE  LOOKUP_CODE = p_contract_type AND
538                 LOOKUP_TYPE = 'PO_FEDERAL_CONTRACT_TYPES_AMT';
539       END IF;
540 
541     EXCEPTION WHEN OTHERS THEN
542        x_contract_type := NULL;
543     END;
544 
545     d_progress  := 4;
546 
547     BEGIN
548 
549       SELECT CONCATENATED_SEGMENTS
550       INTO   x_item_name
551       FROM   MTL_SYSTEM_ITEMS_KFV
552       WHERE  INVENTORY_ITEM_ID = p_item_id AND
553       ROWNUM=1;
554 
555     EXCEPTION WHEN OTHERS THEN
556        x_item_name := NULL;
557     END;
558 
559     d_progress  := 5;
560 
561     BEGIN
562        IF p_draftId = '-1' OR p_draftId IS NULL THEN
563          SELECT CURRENCY_CODE
564          INTO   x_currency_code
565          FROM   po_headers_all
566          WHERE  PO_HEADER_ID = p_header_id;
567        ELSE
568          SELECT CURRENCY_CODE
569          INTO   x_currency_code
570          FROM   po_headers_merge_v
571          WHERE  PO_HEADER_ID = p_header_id AND
572                 DRAFT_ID = p_draftId;
573        END IF;
574 
575     EXCEPTION WHEN OTHERS THEN
576        x_currency_code := NULL;
577     END;
578 
579     d_progress  := 6;
580 
581     BEGIN
582 
583       IF p_matching_basis = 'QUANTITY' THEN
584          SELECT DISPLAYED_FIELD
585          INTO   x_idc_type
586          FROM   PO_LOOKUP_CODES
587          WHERE  LOOKUP_CODE = p_idc_type AND
588                 LOOKUP_TYPE = 'PO_FEDERAL_IDC_TYPES';
589       ELSIF p_matching_basis = 'AMOUNT' THEN
590          SELECT DISPLAYED_FIELD
591          INTO   x_idc_type
592          FROM   PO_LOOKUP_CODES
593          WHERE  LOOKUP_CODE = p_idc_type AND
594                 LOOKUP_TYPE = 'PO_FEDERAL_IDC_TYPES';
595       END IF;
596 
597     EXCEPTION WHEN OTHERS THEN
598        x_idc_type := NULL;
599     END;
600 
601     d_progress  := 7;
602 
603     BEGIN
604 
605         SELECT PO_CLM_CP_LABEL_EXT.getHintLabel(p_matching_basis,
606                                                 p_contract_type,
607                                                 p_idc_type)
608         INTO   x_ext_price_label
609         FROM   dual;
610     EXCEPTION WHEN OTHERS THEN
611        x_ext_price_label := NULL;
612     END;
613 
614     d_progress  := 8;
615 
616     BEGIN
617        IF p_draftId = '-1' OR p_draftId IS NULL THEN
618          SELECT TYPE_LOOKUP_CODE
619          INTO   x_document_type
620          FROM   po_headers_all
621          WHERE  PO_HEADER_ID = p_header_id;
622        ELSE
623          SELECT TYPE_LOOKUP_CODE
624          INTO   x_document_type
625          FROM   po_headers_merge_v
626          WHERE  PO_HEADER_ID = p_header_id AND
627                 DRAFT_ID = p_draftId;
628        END IF;
629     EXCEPTION WHEN OTHERS THEN
630        x_document_type := NULL;
631     END;
632 
633 
634     x_return_status :=  FND_API.G_RET_STS_SUCCESS;
635 
636 EXCEPTION WHEN OTHERS THEN
637 
638     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
639 
640 END GET_MODIF_LINE_UDA_INFO;
641 
642 PROCEDURE GET_MODIF_HEADER_INFO
643 (
644     p_draftId                 IN  NUMBER,
645     p_header_id               IN  NUMBER,
646     p_vendor_id               IN  NUMBER,
647     p_vendor_site_id          IN  NUMBER,
648     p_user_id                 IN  NUMBER,
649     p_orgId                   IN  NUMBER,
650     p_term_id                 IN  NUMBER,
651     p_ship_to_loc_id          IN  NUMBER,
652     p_bill_to_loc_id          IN  NUMBER,
653     p_document_level          IN  VARCHAR2,
654     p_freight_lookup_code     IN  VARCHAR2,
655     p_ship_cntrl_lookup_code  IN  VARCHAR2,
656     p_fob_lookup_code         IN  VARCHAR2,
657     x_chg_amt                 OUT NOCOPY NUMBER,
658     x_chg_amt_wo_opt          OUT NOCOPY NUMBER,
659     x_vendor_name             OUT NOCOPY VARCHAR2,
660     x_vendor_site_code        OUT NOCOPY VARCHAR2,
661     x_addr_line1              OUT NOCOPY VARCHAR2,
662     x_addr_line2              OUT NOCOPY VARCHAR2,
663     x_addr_line3              OUT NOCOPY VARCHAR2,
664     x_city_state              OUT NOCOPY VARCHAR2,
665     x_country                 OUT NOCOPY VARCHAR2,
666     x_employee_id             OUT NOCOPY NUMBER,
667     x_employee_full_name      OUT NOCOPY VARCHAR2,
668     x_emp_location_id         OUT NOCOPY NUMBER,
669     x_agent_id                OUT NOCOPY NUMBER,
670     x_org_name                OUT NOCOPY VARCHAR2,
671     x_pay_term_name           OUT NOCOPY VARCHAR2,
672     x_freight_meaning         OUT NOCOPY VARCHAR2,
673     x_ship_cntrl_meaning      OUT NOCOPY VARCHAR2,
674     x_fob_meaning             OUT NOCOPY VARCHAR2,
675     x_ship_addr1              OUT NOCOPY VARCHAR2,
676     x_ship_addr2              OUT NOCOPY VARCHAR2,
677     x_ship_addr3              OUT NOCOPY VARCHAR2,
678     x_ship_city_state         OUT NOCOPY VARCHAR2,
679     x_bill_addr1              OUT NOCOPY VARCHAR2,
680     x_bill_addr2              OUT NOCOPY VARCHAR2,
681     x_bill_addr3              OUT NOCOPY VARCHAR2,
682     x_bill_city_state         OUT NOCOPY VARCHAR2,
683     x_return_status           OUT NOCOPY VARCHAR2,
684     x_errorcode               OUT NOCOPY NUMBER,
685     x_msg_count               OUT NOCOPY NUMBER,
686     x_msg_data                OUT NOCOPY VARCHAR2
687 )
688 IS
689    d_progress          NUMBER := 0;
690    l_old_chg_amt       NUMBER := 0;
691    l_new_chg_amt       NUMBER := 0;
692    l_new_chg_exopt_amt NUMBER := 0;
693    l_old_chg_exopt_amt NUMBER := 0;
694 BEGIN
695 
696     d_progress  := 1;
697 
698     BEGIN
699 
700       SELECT CHANGED_AMT, CHANGED_AMT_EXCL_OPT
701       INTO   x_chg_amt, x_chg_amt_wo_opt
702       FROM   PO_DRAFTS
703       WHERE  DRAFT_ID = p_draftId AND
704              DOCUMENT_ID = p_header_id;
705 
706       IF x_chg_amt IS NULL THEN
707         l_new_chg_amt := PO_DOCUMENT_TOTALS_PVT.getAmountOrdered(p_doc_level => p_document_level,
708                                                                  p_doc_level_id => p_header_id,
709                                                                  p_data_source => 'TRANSACTION',
710                                                                  p_draft_id => p_draftId);
711 
712         l_old_chg_amt := PO_DOCUMENT_TOTALS_PVT.getAmountOrdered(p_doc_level => p_document_level,
713                                                                  p_doc_level_id => p_header_id,
714                                                                  p_data_source => 'TRANSACTION',
715                                                                  p_draft_id => -1);
716 
717         x_chg_amt :=  l_new_chg_amt - l_old_chg_amt;
718       END IF;
719 
720       IF x_chg_amt_wo_opt IS NULL THEN
721         l_new_chg_exopt_amt := PO_DOCUMENT_TOTALS_PVT.getAmountOrderedExclOptions(p_doc_level => p_document_level,
722                                                                                   p_doc_level_id => p_header_id,
723                                                                                   p_data_source => 'TRANSACTION',
724                                                                                   p_draft_id => p_draftId);
725 
726         l_old_chg_exopt_amt := PO_DOCUMENT_TOTALS_PVT.getAmountOrderedExclOptions(p_doc_level => p_document_level,
727                                                                                   p_doc_level_id => p_header_id,
728                                                                                   p_data_source => 'TRANSACTION',
729                                                                                   p_draft_id => -1);
730 
731         x_chg_amt_wo_opt :=  l_new_chg_exopt_amt - l_old_chg_exopt_amt;
732       END IF;
733 
734       IF x_chg_amt IS NULL THEN
735  	      x_chg_amt := 0;
736  	    END IF;
737 
738  	    IF x_chg_amt_wo_opt IS NULL THEN
739         x_chg_amt_wo_opt := 0;
740       END IF;
741 
742     EXCEPTION WHEN OTHERS THEN
743        x_chg_amt := 0;
744        x_chg_amt_wo_opt := 0;
745     END;
746 
747     d_progress  := 2;
748 
749     BEGIN
750 
751        SELECT VENDOR_NAME INTO x_vendor_name FROM PO_VENDORS WHERE VENDOR_ID = p_vendor_id;
752 
753     EXCEPTION WHEN OTHERS THEN
754        x_vendor_name := NULL;
755     END;
756 
757     d_progress  := 3;
758 
759     BEGIN
760 
761        SELECT VENDOR_SITE_CODE,
762               ADDRESS_LINE1,
763               ADDRESS_LINE2,
764               ADDRESS_LINE3,
765               CITY||', '||STATE||' '||ZIP CITYSTATE,
766               COUNTRY
767        INTO   x_vendor_site_code,
768               x_addr_line1,
769               x_addr_line2,
770               x_addr_line3,
771               x_city_state,
772               x_country
773       FROM   PO_VENDOR_SITES_ALL
774        WHERE  VENDOR_SITE_ID = p_vendor_site_id;
775 
776     EXCEPTION WHEN OTHERS THEN
777        x_vendor_site_code := NULL;
778        x_addr_line1 := NULL;
779        x_addr_line1 := NULL;
780        x_addr_line3 := NULL;
781        x_city_state := NULL;
782        x_country := NULL;
783     END;
784 
785     d_progress  := 4;
786 
787     BEGIN
788 
789        SELECT EMP.person_id,
790               EMP.full_name,
791               nvl(EMP.location_id, 0),
792               POA.agent_id
793        INTO   x_employee_id,
794               x_employee_full_name,
795               x_emp_location_id,
796               x_agent_id
797        FROM   fnd_user FU,
798               per_workforce_current_x EMP,
799               po_agents POA
800        WHERE  FU.employee_id = p_user_id
801               AND FU.employee_id = EMP.person_id (+)
802               AND EMP.person_id = POA.agent_id (+)
803               AND sysdate BETWEEN NVL(POA.start_date_active (+), sysdate - 1)
804               AND NVL(POA.end_date_active (+), sysdate + 1)
805               AND ROWNUM=1;
806 
807     EXCEPTION WHEN OTHERS THEN
808        x_employee_full_name := NULL;
809     END;
810 
811     d_progress  := 5;
812 
813     BEGIN
814 
815        x_org_name := PO_GA_PVT.get_org_name( p_org_id => p_orgId);
816 
817     EXCEPTION WHEN OTHERS THEN
818        x_org_name := NULL;
819     END;
820 
821     d_progress  := 6;
822 
823     BEGIN
824 
825        SELECT NAME INTO x_pay_term_name FROM ap_terms WHERE term_id = p_term_id;
826 
827     EXCEPTION WHEN OTHERS THEN
828        x_pay_term_name := NULL;
829     END;
830 
831     d_progress  := 7;
832 
833     BEGIN
834 
835        SELECT displayed_field
836        INTO   x_freight_meaning
837        FROM   po_lookup_codes
838        WHERE  lookup_type = 'FREIGHT TERMS'
839               AND lookup_code = p_freight_lookup_code;
840 
841     EXCEPTION WHEN OTHERS THEN
842        x_freight_meaning := NULL;
843     END;
844 
845     d_progress  := 8;
846 
847     BEGIN
848 
849        SELECT displayed_field
850        INTO   x_ship_cntrl_meaning
851        FROM   po_lookup_codes
852        WHERE  lookup_type = 'SHIPPING CONTROL'
853               AND lookup_code = p_ship_cntrl_lookup_code;
854 
855     EXCEPTION WHEN OTHERS THEN
856        x_ship_cntrl_meaning := NULL;
857     END;
858 
859     d_progress  := 9;
860 
861     BEGIN
862 
863        SELECT displayed_field
864        INTO   x_fob_meaning
865        FROM   po_lookup_codes
866        WHERE  lookup_type = 'FOB'
867               AND lookup_code = p_fob_lookup_code;
868 
869     EXCEPTION WHEN OTHERS THEN
870        x_fob_meaning := NULL;
871     END;
872 
873     d_progress  := 10;
874 
875     BEGIN
876 
877        SELECT ADDRESS_LINE_1,
878               ADDRESS_LINE_2,
879               ADDRESS_LINE_3,
880               TOWN_OR_CITY||', '||REGION_2||' '||POSTAL_CODE SHIP_CITY_STATE
881        INTO   x_ship_addr1,
882               x_ship_addr2,
883               x_ship_addr3,
884               x_ship_city_state
885        FROM   HR_LOCATIONS_ALL
886        WHERE  LOCATION_ID = p_ship_to_loc_id;
887 
888     EXCEPTION WHEN OTHERS THEN
889        x_ship_addr1 := NULL;
890        x_ship_addr2 := NULL;
891        x_ship_addr3 := NULL;
892        x_ship_city_state := NULL;
893     END;
894 
895     d_progress  := 11;
896 
897     BEGIN
898 
899        SELECT ADDRESS_LINE_1,
900               ADDRESS_LINE_2,
901               ADDRESS_LINE_3,
902               TOWN_OR_CITY||', '||REGION_2||' '||POSTAL_CODE SHIP_CITY_STATE
903        INTO   x_bill_addr1,
904               x_bill_addr2,
905               x_bill_addr3,
906               x_bill_city_state
907        FROM   HR_LOCATIONS_ALL
908        WHERE  LOCATION_ID = p_bill_to_loc_id;
909 
910 
911     EXCEPTION WHEN OTHERS THEN
912        x_bill_addr1 := NULL;
913        x_bill_addr2 := NULL;
914        x_bill_addr3 := NULL;
915        x_bill_city_state := NULL;
916     END;
917 
918 
919     x_return_status :=  FND_API.G_RET_STS_SUCCESS;
920 
921 EXCEPTION WHEN OTHERS THEN
922 
923     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
924 
925 END GET_MODIF_HEADER_INFO;
926 
927   FUNCTION Isvalidtomove
928        (p_product                    IN VARCHAR2,
929         p_action                     IN VARCHAR2,
930         p_document_id                IN NUMBER DEFAULT NULL,
931         p_from_line_id               IN NUMBER,
932         p_from_group_line_id         IN NUMBER,
933         p_from_clm_info_flag         IN VARCHAR2,
934         p_from_clm_option_indicator  IN VARCHAR2,
935         p_from_clm_base_line_num     IN NUMBER,
936         p_from_clm_option_num        IN NUMBER,
937         p_from_clm_option_from_date  IN DATE,
938         p_from_clm_option_to_date    IN DATE,
939         p_from_clm_funded_flag       IN VARCHAR2,
940         p_to_line_id                 IN NUMBER,
941         p_to_group_line_id           IN NUMBER,
942         p_to_clm_info_flag           IN VARCHAR2,
943         p_to_clm_option_indicator    IN VARCHAR2,
944         p_to_clm_base_line_num       IN NUMBER,
945         p_to_clm_option_num          IN NUMBER,
946         p_to_clm_option_from_date    IN DATE,
947         p_to_clm_option_to_date      IN DATE,
948         p_to_clm_funded_flag         IN VARCHAR2)
949   RETURN VARCHAR2
950   IS
951 
952   l_group_line_id NUMBER;
953   l_clm_info_flag VARCHAR2(1);
954   l_clm_funded_flag VARCHAR2(1);
955 
956   BEGIN
957     -- Do not show option lines
958     IF p_from_line_id = p_to_line_id THEN
959       RETURN 'N';
960     END IF;
961 
962     /* moving a normal clin/slin before or after then show all normal clins  start*/
963     IF p_action IN ('BEFORE','AFTER')
964        AND p_from_clm_base_line_num IS NULL THEN
965       IF p_to_clm_base_line_num IS NOT NULL THEN
966         RETURN 'N';
967       END IF;
968 
969       IF p_from_group_line_id IS NULL
970          AND p_to_group_line_id IS NULL
971          AND p_to_clm_base_line_num IS NULL THEN
972         RETURN 'Y';
973       END IF;
974 
975       IF p_from_group_line_id IS NOT NULL
976          AND p_to_group_line_id IS NULL
977          AND p_to_clm_base_line_num IS NULL THEN
978         RETURN 'Y';
979       END IF;
980 
981       IF p_from_group_line_id IS NOT NULL
982          AND p_to_group_line_id = p_from_group_line_id
983          AND p_to_clm_base_line_num IS NULL THEN
984         RETURN 'Y';
985       END IF;
986 
987       RETURN 'N';
988     END IF;
989 
990     /* moving a normal clin/slin before or after then show all normal clins  end*/
991 
992     /* Moving a Normal clin/slin as slin start*/
993     IF p_action = 'AS_SLIN'
994        AND p_from_clm_base_line_num IS NULL THEN
995 
996 
997       IF p_to_clm_base_line_num IS NOT NULL THEN
998         RETURN 'N';
999       END IF;
1000 
1001       IF    NOT validateInfoflags(p_from_clm_info_flag,p_to_clm_info_flag)
1002             OR  NOT valdiateFundFalgs(p_from_clm_funded_flag,p_to_clm_funded_flag) THEN
1003             RETURN 'N';
1004       END IF;
1005 
1006 
1007 
1008       IF p_from_group_line_id IS NULL THEN
1009 
1010           IF Isclinvalidformove(p_product,p_document_id,p_from_line_id) = 'N'
1011             OR isOptionExist(p_product,p_document_id,p_from_line_id) = 'Y'
1012           THEN
1013             RETURN 'N';
1014           END IF;
1015 
1016           IF p_to_group_line_id IS NULL THEN
1017              RETURN 'Y';
1018           END IF;
1019       END IF;
1020 
1021 
1022       IF p_from_group_line_id IS NOT NULL
1023          AND p_to_group_line_id IS NULL THEN
1024         IF isOptionExist(p_product,p_document_id,p_from_line_id) = 'Y' then
1025          return 'N';
1026         end if;
1027         IF p_from_group_line_id = p_to_line_id THEN
1028           RETURN 'N';
1029         END IF;
1030 
1031       RETURN 'Y';
1032       END IF;
1033 
1034       RETURN 'N';
1035     END IF;
1036 
1037     /* Moving a Normal clin/slin as slin end*/
1038     /* Moving a Normal clin/slin as option start */
1039     IF p_action = 'AS_OPTION'
1040        AND p_from_clm_base_line_num IS NULL THEN
1041       IF p_to_clm_base_line_num IS NOT NULL THEN
1042         RETURN 'N';
1043       END IF;
1044 
1045       IF p_from_group_line_id IS NULL THEN
1046           IF Isclinvalidformove(p_product,p_document_id,p_from_line_id) = 'N'
1047              OR isOptionExist(p_product,p_document_id,p_from_line_id) = 'Y'
1048           THEN
1049              RETURN 'N';
1050           END IF;
1051 
1052           IF p_from_line_id = p_to_group_line_id THEN
1053             RETURN 'N';
1054           END IF;
1055 
1056         IF p_to_group_line_id IS NOT NULL  THEN
1057         -- i.e Making normal clin as option to slin if the to line is 'slin'
1058         -- Then validate info and funding flags with the parent of the 'to slin'.
1059            getclmFlags
1060            (p_product  => p_product
1061           ,p_document_id => p_document_id
1062           ,p_line_id  => p_to_group_line_id
1063           ,x_clm_info_flag => l_clm_info_flag
1064           ,x_clm_funded_flag => l_clm_funded_flag);
1065 
1066           IF   NOT validateInfoflags(p_from_clm_info_flag,l_clm_info_flag)
1067           OR   NOT valdiateFundFalgs(p_from_clm_funded_flag,l_clm_funded_flag) THEN
1068           RETURN 'N';
1069           END IF;
1070          END IF;
1071         RETURN 'Y';
1072       END IF;
1073 
1074       /* Show only base slins from the current clin - option clins are eliminated
1075       at the first palce itself */
1076       IF p_from_group_line_id IS NOT NULL THEN
1077         IF  p_to_group_line_id = p_from_group_line_id THEN
1078           RETURN 'Y';
1079         END IF;
1080 
1081         RETURN 'N';
1082       END IF;
1083     END IF;
1084 
1085     /* Moving a Normal clin/slin as option end */
1086     /* Moving a o-clin/o-slin before,after is an invalid operation start*/
1087     IF p_action IN ('BEFORE','AFTER')
1088        AND p_from_clm_base_line_num IS NOT NULL THEN
1089 
1090        IF p_from_group_line_id IS NULL THEN
1091           IF p_to_group_line_id IS NULL AND p_from_clm_base_line_num=p_to_clm_base_line_num THEN
1092           RETURN 'Y';
1093           END IF;
1094        END IF;
1095 
1096        IF p_from_group_line_id IS NOT NULL THEN
1097         IF p_to_group_line_id = p_from_group_line_id AND  p_from_clm_base_line_num=p_to_clm_base_line_num THEN
1098         RETURN 'Y';
1099         END IF;
1100        END IF;
1101 
1102       RETURN 'N';
1103     END IF;
1104 
1105     /* Moving a o-clin/o-slin before,after is an invalid operation end*/
1106     /* moving a o-clin/slin as slin start*/
1107     IF p_action = 'AS_SLIN'
1108        AND p_from_clm_base_line_num IS NOT NULL THEN
1109       IF p_to_clm_base_line_num IS NOT NULL
1110          AND p_to_group_line_id IS NOT NULL THEN
1111         RETURN 'N';
1112       END IF;
1113 
1114       IF p_from_group_line_id IS NULL THEN
1115         RETURN 'N';
1116       END IF;
1117 
1118       IF p_from_group_line_id IS NOT NULL THEN
1119 
1120           IF    NOT validateInfoflags(p_from_clm_info_flag,p_to_clm_info_flag)
1121             OR  NOT valdiateFundFalgs(p_from_clm_funded_flag,p_to_clm_funded_flag) THEN
1122               RETURN 'N';
1123           END IF;
1124 
1125         IF p_to_group_line_id IS NULL
1126            AND p_to_clm_base_line_num IS NOT NULL THEN
1127           RETURN 'Y';
1128         END IF;
1129       END IF;
1130 
1131       RETURN 'N';
1132     END IF;
1133 
1134     /* moving a o-clin/slin as slin end*/
1135     /* moving a o-clin/slin as option start*/
1136     IF p_action = 'AS_OPTION'
1137        AND p_from_clm_base_line_num IS NOT NULL THEN
1138       IF p_to_clm_base_line_num IS NOT NULL THEN
1139         RETURN 'N';
1140       END IF;
1141 
1142       IF p_from_clm_base_line_num = p_to_line_id THEN
1143         RETURN 'N';
1144       END IF;
1145 
1146       IF p_from_group_line_id IS NULL THEN
1147         RETURN 'Y';
1148       END IF;
1149 
1150       IF p_from_group_line_id IS NOT NULL
1151          AND p_to_group_line_id = p_from_group_line_id THEN
1152         RETURN 'Y';
1153       END IF;
1154 
1155       RETURN 'N';
1156     END IF;
1157 
1158     /* moving a o-clin/slin as option end*/
1159     RETURN 'N';
1160   EXCEPTION
1161     WHEN OTHERS THEN
1162       RETURN 'N';
1163   END isvalidtomove;
1164 
1165 END POS_CLM_UTIL_PKG;