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;