DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_CHECKLINE_PUB

Source


1 PACKAGE BODY OE_CheckLine_PUB AS
2 /*  $Header: OEXCHKLB.pls 120.0 2005/05/31 23:40:38 appldev noship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME     CONSTANT VARCHAR2(30) := 'OE_CheckLine_PUB';
7 inv_num       VARCHAR2(40);
8 
9 Procedure Is_Line_Frozen( p_application_id               IN NUMBER,
10                           p_entity_short_name            in VARCHAR2,
11                           p_validation_entity_short_name in VARCHAR2,
12                           p_validation_tmplt_short_name in VARCHAR2,
13                           p_record_set_tmplt_short_name in VARCHAR2,
14                           p_scope in VARCHAR2,
15 p_result OUT NOCOPY NUMBER ) IS
16 
17 
18 l_header_id NUMBER ;
19 l_line_frozen PLS_INTEGER := 0;
20 l_line_entity Boolean := FALSE;
21 --
22 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
23 --
24 BEGIN
25    --Fix perfomance bug 2017397, this code is being remove by having a return.
26    --The check is being handled in OEXOEADJ.pld.
27    --It doesn't make sense to check all the lines repeatly for line level contraints fired.
28    --it is very costly.
29    p_result := 0;
30    Return;
31    IF l_debug_level  > 0 THEN
32        oe_debug_pub.add(  'ENTERING OE_CHECKLINE_PUB' ) ;
33    END IF;
34    IF l_debug_level  > 0 THEN
35        oe_debug_pub.add(  'VALIDATION ENTITY NAME:'||P_VALIDATION_ENTITY_SHORT_NAME ) ;
36    END IF;
37 
38    IF p_validation_entity_short_name = 'HEADER_ADJ' THEN
39       l_header_id := oe_header_adj_security.g_record.header_id;
40    ELSIF p_validation_entity_short_name = 'LINE_ADJ' THEN
41       IF l_debug_level  > 0 THEN
42           oe_debug_pub.add(  'ENTITY_SHORT_NAME'||P_VALIDATION_ENTITY_SHORT_NAME ) ;
43       END IF;
44       l_header_id := oe_line_adj_security.g_record.header_id;
45       l_line_entity := TRUE;
46    Else
47       p_result := 0;
48       Return;
49    END IF;
50 
51    IF l_header_id IS NULL OR
52       l_header_id = FND_API.G_MISS_NUM
53    THEN
54       OE_MSG_PUB.Update_Msg_Context(p_attribute_code => null);
55       IF l_debug_level  > 0 THEN
56           oe_debug_pub.add(  ' HEADER ID IS NULL' ) ;
57       END IF;
58       IF l_debug_level  > 0 THEN
59           oe_debug_pub.add(  'EXITING OE_CHECKLINE_PUB' ) ;
60       END IF;
61       p_result := 0;
62       return;
63    END IF;
64 
65    IF l_debug_level  > 0 THEN
66        oe_debug_pub.add(  'L_HEADER_ID:'||L_HEADER_ID ) ;
67    END IF;
68 
69 
70       If nvl(oe_line_adj_security.g_record.list_line_type_code,'x') = 'FREIGHT_CHARGE'
71          or nvl(oe_header_adj_security.g_record.list_line_type_code,'x') = 'FREIGHT_CHARGE'
72       Then
73          p_result := 0;
74          IF l_debug_level  > 0 THEN
75              oe_debug_pub.add(  ' THE ORDER LEVEL ADJUSTMENT IS FREIGHT_CHARGE' ) ;
76          END IF;
77          IF l_debug_level  > 0 THEN
78              oe_debug_pub.add(  'EXITING OE_CHECKLINE_PUB' ) ;
79          END IF;
80          Return;
81       End If;
82 
83 
84       If nvl(oe_line_security.g_record.item_type_code,'x') in ('INCLUDED','CONFIG') then
85          p_result := 0;
86          IF l_debug_level  > 0 THEN
87              oe_debug_pub.add(  ' THE ITEM IS INCLUDED , NO ADJUSTMENT CHECK IS NEEDED' ) ;
88          END IF;
89          IF l_debug_level  > 0 THEN
90              oe_debug_pub.add(  'EXITING OE_CHECKLINE_PUB' ) ;
91          END IF;
92          Return;
93       End If;
94 
95    Begin
96    Select 1
97    Into   l_line_frozen
98    From dual
99    Where exists
100    (Select 'x'
101     From   OE_ORDER_LINES
102     WHERE  HEADER_ID = l_header_id
103 	   AND calculate_price_flag IN ('P','N')
104            AND cancelled_flag = 'N'
105     );
106 
107    Exception
108    WHEN NO_DATA_FOUND Then
109      p_result := 0;
110      Return;
111    When Others Then
112      p_result := 0;
113      IF l_debug_level  > 0 THEN
114          oe_debug_pub.add(  ' OTHER EXCEPTION OCCURED IN OE_CHECKLINE_PUB:'||SQLERRM ) ;
115      END IF;
116       IF l_debug_level  > 0 THEN
117           oe_debug_pub.add(  'EXITING OE_CHECKLINE_PUB' ) ;
118       END IF;
119      Return;
120    End;
121 
122 
123       --For the freight change, we do not restrict order level freight because it
124       --it not prorate across lines.
125 
126 
127       IF l_line_frozen = 1 AND
128                           (l_line_entity = FALSE
129                            OR
130                            (l_line_entity = TRUE
131                             AND oe_line_adj_security.g_record.modifier_level_code = 'ORDER'
132                             )
133                            ) THEN
134 
135          IF l_debug_level  > 0 THEN
136              oe_debug_pub.add(  'HAS AT LEAST ONE LINE WITH ''N'' OR ''P'' CALCULATE_PRICE_FLAG' ) ;
137          END IF;
138          p_result := 1;
139       ELSE
140          IF l_debug_level  > 0 THEN
141              oe_debug_pub.add(  ' NO FROZEN LINE , RETURNING 0' ) ;
142          END IF;
143          p_result := 0;
144       END IF;
145     IF l_debug_level  > 0 THEN
146         oe_debug_pub.add(  'LEAVING OE_CHECKLINE_PUB' ) ;
147     END IF;
148 END Is_Line_Frozen;
149 
150 END OE_CheckLine_Pub;