DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_FREIGHT_RATING_UTIL

Source


1 PACKAGE BODY OE_FREIGHT_RATING_util AS
2 /* $Header: OEXUFRRB.pls 120.1.12010000.3 2009/06/26 12:14:44 nitagarw ship $ */
3 
4 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'OE_FREIGHT_RATING_UTIL';
5 G_BINARY_LIMIT CONSTANT NUMBER := OE_GLOBALS.G_BINARY_LIMIT; -- Added for bug 8636027
6 
7 FUNCTION IS_FREIGHT_RATING_AVAILABLE RETURN BOOLEAN IS
8 l_code_release varchar2(30) := NULL;
9 l_enable_freight_rating varchar2(1) := NULL;
10 
11 --
12 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
13 --
14 BEGIN
15 
16    IF l_debug_level  > 0 THEN
17        oe_debug_pub.add(  'OEXUFRRB: IN IS_FREIGHT_RATING_AVAILABLE' ) ;
18    END IF;
19 
20    l_code_release := OE_CODE_CONTROL.Get_Code_Release_Level;
21 
22    IF l_code_release < '110509' THEN
23       IF l_debug_level  > 0 THEN
24           oe_debug_pub.add(  'LESS THAN PACK I' , 3 ) ;
25       END IF;
26       Return False;
27    END IF;
28 
29 -- Check whether FTE is Installed. If not Exit
30 
31     IF G_FTE_INSTALLED IS NULL THEN
32        G_FTE_INSTALLED := OE_GLOBALS.CHECK_PRODUCT_INSTALLED(716);
33     END IF;
34 
35     IF G_FTE_INSTALLED = 'N' THEN
36        --FND_MESSAGE.Set_Name('ONT','ONT_FTE_NOT_INSTALLED');
37        --OE_MSG_PUB.Add;
38        IF l_debug_level  > 0 THEN
39            oe_debug_pub.add(  'FTE IS NOT INSTALLED!' , 3 ) ;
40        END IF;
41        RETURN False;
42     END IF;
43 
44   l_enable_freight_rating := nvl(OE_Sys_Parameters.Value('FTE_INTEGRATION'), 'N');
45 
46    IF  l_enable_freight_rating in ('N', 'S') THEN
47        IF l_debug_level  > 0 THEN
48            oe_debug_pub.add(  'ENABLE_FREIGHT_RATING IS NO ' , 3 ) ;
49        END IF;
50        Return False;
51    END IF;
52 
53 
54    Return True;
55 
56    EXCEPTION
57 
58       WHEN OTHERS THEN
59 
60         Return False;
61 
62 END;
63 
64  FUNCTION Get_Cost_Amount
65  (   p_cost_type_code                IN  VARCHAR2
66  )RETURN VARCHAR2 IS
67  l_api_version_number          CONSTANT NUMBER := 1.0;
68  l_api_name                    CONSTANT VARCHAR2(30):= 'Get_Cost_Amount';
69  l_line_rec                    OE_Order_PUB.Line_Rec_Type;
70  l_cost_amount                 NUMBER := 0.0;
71  --
72  l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
73  --
74  BEGIN
75 
76  IF l_debug_level  > 0 THEN
77      oe_debug_pub.add(  'OEXUFRRB:INSIDE GET COST AMOUNT FOR' || P_COST_TYPE_CODE , 1 ) ;
78  END IF;
79 
80     -- Get the Line record from the Global Record
81     l_line_rec := OE_ORDER_PUB.G_LINE;
82 
83     -- Validate the Line_id.
84 
85     IF l_line_rec.line_id is NULL OR l_line_rec.line_id = FND_API.G_MISS_NUM
86     THEN
87         IF l_debug_level  > 0 THEN
88             oe_debug_pub.add(  'L_LINE_REC.LINE_ID IS NULL OR L_LINE_REC.LINE_ID IS FND_API.G_MISS_NUM' ) ;
89             oe_debug_pub.add(  'EXITING CHARGES' ) ;
90         END IF;
91         RETURN NULL;
92     END IF;
93 
94     -- Check for values of cost_type_code
95 
96     IF p_cost_type_code is NULL OR p_cost_type_code = FND_API.G_MISS_CHAR THEN
97        IF l_debug_level  > 0 THEN
98            oe_debug_pub.add(  'P_COST_TYPE_CODE IS NULL OR P_COST_TYPE_CODE IS FND_API.G_MISS_CHAR' ) ;
99            oe_debug_pub.add(  'EXITING CHARGES' ) ;
100        END IF;
101        RETURN NULL;
102     END IF;
103 
104     -- Check for Pricing Quantity
105 
106   /*
107     IF l_line_rec.pricing_quantity IS NULL OR
108 	  l_line_rec.pricing_quantity = FND_API.G_MISS_NUM OR
109 	  l_line_rec.pricing_quantity <= 0 THEN
110           oe_debug_pub.add('l_line_rec.pricing_quantity = FND_API.G_MISS_NUM OR _line_rec.pricing_quantity <= 0');
111           oe_debug_pub.add('exiting charges');
112 	  RETURN NULL;
113     END IF;
114   */
115 
116     -- Check whether the line is shippable and has got shipped
117 
118     IF l_line_rec.shippable_flag = 'Y' THEN
119         IF l_line_rec.shipped_quantity > 0 THEN
120 
121        -- Cost records are stored in OE_PRICE_ADJUSTMENTS table with
122 	  -- list_line_type_code = 'COST'
123           IF l_debug_level  > 0 THEN
124               oe_debug_pub.add(  'LINE IS SHIPPABLE AND IS SHIPPED' , 3 ) ;
125           END IF;
126           SELECT NVL(SUM(ADJUSTED_AMOUNT),0)
127 	  INTO l_cost_amount
128 	  FROM OE_PRICE_ADJUSTMENTS
129 	  WHERE LINE_ID = l_line_rec.line_id
130 	  AND LIST_LINE_TYPE_CODE = 'COST'
131 	  AND CHARGE_TYPE_CODE = p_cost_type_code
132           AND nvl(ESTIMATED_FLAG, 'N') <> 'Y';
133 
134  IF l_debug_level  > 0 THEN
135      oe_debug_pub.add(  'AFTER GETTING COST AMOUNT ' || TO_CHAR ( L_COST_AMOUNT ) , 3 ) ;
136  END IF;
137 
138           RETURN FND_NUMBER.NUMBER_TO_CANONICAL(l_cost_amount);
139        ELSE
140           SELECT NVL(SUM(ADJUSTED_AMOUNT),0)
141 	  INTO l_cost_amount
142 	  FROM OE_PRICE_ADJUSTMENTS
143 	  WHERE LINE_ID = l_line_rec.line_id
144 	  AND LIST_LINE_TYPE_CODE = 'COST'
145 	  AND CHARGE_TYPE_CODE = p_cost_type_code
146           AND ESTIMATED_FLAG = 'Y';
147 
148  IF l_debug_level  > 0 THEN
149      oe_debug_pub.add(  'AFTER GETTING ESTIMATED COST AMOUNT ' || TO_CHAR ( L_COST_AMOUNT ) , 3 ) ;
150  END IF;
151 
152           RETURN FND_NUMBER.NUMBER_TO_CANONICAL(l_cost_amount);
153        END IF;
154     ELSE
155            IF l_debug_level  > 0 THEN
156                oe_debug_pub.add(  'LINE NOT SHIPPABLE OR IS NOT SHIPPED' , 3 ) ;
157            END IF;
158 	   RETURN NULL;
159 
160     END IF;
161     IF l_debug_level  > 0 THEN
162         oe_debug_pub.add(  'LEAVING CHARGES' ) ;
163     END IF;
164  EXCEPTION
165 
166     WHEN NO_DATA_FOUND THEN
167            IF l_debug_level  > 0 THEN
168                oe_debug_pub.add(  'NO COST INFORMATION FOUND IN OE_PRICE_ADJUSTMENTS' ) ;
169            END IF;
170 	   RETURN FND_NUMBER.NUMBER_TO_CANONICAL(0);
171 
172     WHEN OTHERS THEN
173 
174         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
175         THEN
176             FND_MSG_PUB.Add_Exc_Msg
177             (   G_PKG_NAME
178             ,   'Get_Cost_Amount'
179             );
180         END IF;
181            IF l_debug_level  > 0 THEN
182                oe_debug_pub.add(  'UNEXCPETED ERRORS:'||SQLERRM ) ;
183            END IF;
184 	   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
185  END Get_Cost_Amount;
186 
187 FUNCTION Get_List_Line_Type_Code
188 (   p_key	IN NUMBER)
189 RETURN VARCHAR2
190 IS
191 
192 l_list_line_type_code	VARCHAR2(30);
193 l_list_line_type_code_rec   List_Line_Type_Code_Rec_Type;
194 
195 --
196 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
197 --
198 BEGIN
199 
200     IF l_debug_level  > 0 THEN
201         oe_debug_pub.add(  'ENTERING OE_FREIGHT_RATING_UTIL.GET_LIST_LINE_TYPE_CODE' , 1 ) ;
202     END IF;
203 
204     IF 	p_key IS NOT NULL THEN
205 
206         IF g_list_line_type_code_tbl.Exists(MOD(p_key,G_BINARY_LIMIT)) THEN       -- Bug 8636027
207 
208          l_list_line_type_code
209             := g_list_line_type_code_tbl(MOD(p_key,G_BINARY_LIMIT)).list_line_type_code;            -- Bug 8636027
210 
211             IF l_debug_level  > 0 THEN
212                 oe_debug_pub.add(  'LIST LINE TYPE CODE FOR HEADER: ' || P_KEY ||' IS: ' || L_LIST_LINE_TYPE_CODE , 3 ) ;
213             END IF;
214 
215         ELSE
216 
217            BEGIN
218            SELECT  list_line_type_code
219            INTO   l_list_line_type_code
220            FROM   oe_price_adjustments
221            WHERE  header_id = p_key
222            AND    list_header_id = p_key * (-1)
223            AND    list_line_type_code = 'OM_CALLED_FREIGHT_RATES'
224            AND    rownum = 1;
225 
226            EXCEPTION WHEN NO_DATA_FOUND THEN
227              l_list_line_type_code := NULL;
228            END;
229 
230            IF l_list_line_type_code IS NOT NULL THEN
231              l_list_line_type_code_rec.list_line_type_code
232                  := l_list_line_type_code;
233              g_list_line_type_code_tbl(MOD(p_key,G_BINARY_LIMIT))              -- Bug 8636027
234                  := l_list_line_type_code_rec;
235 
236                          IF l_debug_level  > 0 THEN
237                              oe_debug_pub.add(  'LOADING LIST LINE TYPE CODE FOR HEADER: ' || P_KEY ||' IS: ' || L_LIST_LINE_TYPE_CODE , 3 ) ;
238                          END IF;
239            END IF;
240 
241         END IF;
242 
243     END IF;
244 
245     IF l_debug_level  > 0 THEN
246         oe_debug_pub.add(  'EXITING OE_FREIGHT_RATING_UTIL.GET_LIST_LINE_TYPE_CODE' , 1 ) ;
247     END IF;
248 
249     RETURN l_list_line_type_code;
250 
251 EXCEPTION
252     WHEN NO_DATA_FOUND THEN
253       NULL;
254 
255     WHEN OTHERS THEN
256 
257     	IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
258 	THEN
259     	    OE_MSG_PUB.Add_Exc_Msg
260     	    (	G_PKG_NAME  	    ,
261     	        'Get_List_Line_Type_Code'
262 	    );
263     	END IF;
264 
265 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
266 END Get_List_Line_Type_Code;
267 
268  FUNCTION Get_Estimated_Cost_Amount
269  (   p_cost_type_code                IN  VARCHAR2
270  )RETURN VARCHAR2 IS
271  l_api_version_number          CONSTANT NUMBER := 1.0;
272  l_api_name                    CONSTANT VARCHAR2(30):= 'Get_Cost_Amount';
273  l_line_rec                    OE_Order_PUB.Line_Rec_Type;
274  l_cost_amount                 NUMBER := 0.0;
275  --
276  l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
277  --
278  BEGIN
279 
280  IF l_debug_level  > 0 THEN
281      oe_debug_pub.add(  'OEXUFRRB:INSIDE get_estimated_cost_amount FOR' || P_COST_TYPE_CODE , 1 ) ;
282  END IF;
283 
284     -- Get the Line record from the Global Record
285     l_line_rec := OE_ORDER_PUB.G_LINE;
286 
287     -- Validate the Line_id.
288 
289     IF l_line_rec.line_id is NULL OR l_line_rec.line_id = FND_API.G_MISS_NUM
290     THEN
291         IF l_debug_level  > 0 THEN
292             oe_debug_pub.add(  'L_LINE_REC.LINE_ID IS NULL OR L_LINE_REC.LINE_ID IS FND_API.G_MISS_NUM' ) ;
293             oe_debug_pub.add(  'EXITING CHARGES' ) ;
294         END IF;
295         RETURN NULL;
296     END IF;
297 
298     -- Check for values of cost_type_code
299 
300     IF p_cost_type_code is NULL OR p_cost_type_code = FND_API.G_MISS_CHAR THEN
301        IF l_debug_level  > 0 THEN
302            oe_debug_pub.add(  'P_COST_TYPE_CODE IS NULL OR P_COST_TYPE_CODE IS FND_API.G_MISS_CHAR' ) ;
303            oe_debug_pub.add(  'EXITING CHARGES' ) ;
304        END IF;
305        RETURN NULL;
306     END IF;
307 
308     -- Check for Pricing Quantity
309 
310   /*
311     IF l_line_rec.pricing_quantity IS NULL OR
312 	  l_line_rec.pricing_quantity = FND_API.G_MISS_NUM OR
313 	  l_line_rec.pricing_quantity <= 0 THEN
314           oe_debug_pub.add('l_line_rec.pricing_quantity = FND_API.G_MISS_NUM OR _line_rec.pricing_quantity <= 0');
315           oe_debug_pub.add('exiting charges');
316 	  RETURN NULL;
317     END IF;
318   */
319 
320     -- Check whether the line is shippable and has got shipped
321 
322     IF l_line_rec.shippable_flag = 'Y' THEN
323           SELECT NVL(SUM(ADJUSTED_AMOUNT),0)
324 	  INTO l_cost_amount
325 	  FROM OE_PRICE_ADJUSTMENTS
326 	  WHERE LINE_ID = l_line_rec.line_id
327 	  AND LIST_LINE_TYPE_CODE = 'COST'
328 	  AND CHARGE_TYPE_CODE = p_cost_type_code
329           AND ESTIMATED_FLAG = 'Y';
330 
331  IF l_debug_level  > 0 THEN
332      oe_debug_pub.add(  'AFTER GETTING ESTIMATED COST AMOUNT ' || TO_CHAR ( L_COST_AMOUNT ) , 3 ) ;
333  END IF;
334 
335           RETURN FND_NUMBER.NUMBER_TO_CANONICAL(l_cost_amount);
336     ELSE
337            IF l_debug_level  > 0 THEN
338                oe_debug_pub.add(  'LINE NOT SHIPPABLE ' , 3 ) ;
339            END IF;
340 	   RETURN FND_NUMBER.NUMBER_TO_CANONICAL(0);
341 
342     END IF;
343     IF l_debug_level  > 0 THEN
344         oe_debug_pub.add(  'LEAVING CHARGES' ) ;
345     END IF;
346  EXCEPTION
347 
348     WHEN NO_DATA_FOUND THEN
349            IF l_debug_level  > 0 THEN
350                oe_debug_pub.add(  'NO COST INFORMATION FOUND IN OE_PRICE_ADJUSTMENTS' ) ;
351            END IF;
352 	   RETURN FND_NUMBER.NUMBER_TO_CANONICAL(0);
353 
354     WHEN OTHERS THEN
355 
356         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
357         THEN
358             FND_MSG_PUB.Add_Exc_Msg
359             (   G_PKG_NAME
360             ,   'Get_Cost_Amount'
361             );
362         END IF;
363            IF l_debug_level  > 0 THEN
364                oe_debug_pub.add(  'UNEXCPETED ERRORS:'||SQLERRM ) ;
365            END IF;
366 	   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
367  END Get_Estimated_Cost_Amount;
368 
369 PROCEDURE Create_Dummy_Adjustment(p_header_id in number) IS
370 l_price_adjustment_id number := -1;
371 --
372 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
373 --
374 BEGIN
375 
376   IF p_header_id is not null THEN
377 
378     select oe_price_adjustments_s.nextval
379     into   l_price_adjustment_id
380     from   dual;
381 
382     INSERT INTO oe_price_adjustments
383            (PRICE_ADJUSTMENT_ID
384            ,HEADER_ID
385            ,LINE_ID
386            ,PRICING_PHASE_ID
387            ,LIST_LINE_TYPE_CODE
388            ,LIST_HEADER_ID
389            ,LIST_LINE_ID
390            ,ADJUSTED_AMOUNT
391            ,AUTOMATIC_FLAG
392            ,UPDATED_FLAG
393            ,APPLIED_FLAG
394            ,CREATION_DATE
395            ,CREATED_BY
396            ,LAST_UPDATE_DATE
397            ,LAST_UPDATED_BY
398            )
399     VALUES
400           (l_price_adjustment_id
401            ,p_header_id
402            ,NULL
403            ,-1
404            ,'OM_CALLED_FREIGHT_RATES'
405            ,-1*p_header_id
406            ,NULL
407            ,-1
408            ,'N'
409            ,'Y'
410            ,NULL
411            ,sysdate
412            ,1
413            ,sysdate
414            ,1
415           );
416 
417   END IF;
418 
419 
420 END Create_Dummy_Adjustment;
421 
422 -- Added as part of bug 6955343
423 FUNCTION Get_Estimated_Cost_Amount_Ns
424  (   p_cost_type_code                IN  VARCHAR2
425  )RETURN VARCHAR2 IS
426   l_api_version_number          CONSTANT NUMBER := 1.0;
427   l_api_name                    CONSTANT VARCHAR2(30):= 'Get_Estimated_Cost_Amount_Ns';
428   l_line_rec                    OE_Order_PUB.Line_Rec_Type;
429   l_cost_amount                 NUMBER := 0.0;
430   --
431   l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
432   --
433   BEGIN
434 
435    IF l_debug_level  > 0 THEN
436       oe_debug_pub.add('OEXUFRRB: Inside Procedure Get_Estimated_Cost_Amount_Ns');
437       oe_debug_pub.add('p_cost_type_code  : ' || P_COST_TYPE_CODE , 1 ) ;
438    END IF;
439    -- Get the Line record from the Global Record
440    l_line_rec := OE_ORDER_PUB.G_LINE;
441 
442    -- Validate the Line_id.
443 
444    IF l_line_rec.line_id is NULL OR l_line_rec.line_id = FND_API.G_MISS_NUM
445    THEN
446       IF l_debug_level  > 0 THEN
447          oe_debug_pub.add(  'L_LINE_REC.LINE_ID IS NULL OR L_LINE_REC.LINE_ID IS FND_API.G_MISS_NUM' ) ;
448          oe_debug_pub.add(  'EXITING CHARGES' ) ;
449       END IF;
450       RETURN NULL;
451    END IF;
452 
453    -- Check for values of cost_type_code
454 
455    IF p_cost_type_code is NULL OR p_cost_type_code = FND_API.G_MISS_CHAR THEN
456       IF l_debug_level  > 0 THEN
457          oe_debug_pub.add(  'P_COST_TYPE_CODE IS NULL OR P_COST_TYPE_CODE IS FND_API.G_MISS_CHAR' ) ;
458          oe_debug_pub.add(  'EXITING CHARGES' ) ;
459       END IF;
460       RETURN NULL;
461    END IF;
462 
463    SELECT NVL(SUM(ADJUSTED_AMOUNT),0)
464    INTO l_cost_amount
465    FROM OE_PRICE_ADJUSTMENTS
466    WHERE LINE_ID = l_line_rec.line_id
467    AND LIST_LINE_TYPE_CODE = 'COST'
468    AND CHARGE_TYPE_CODE = p_cost_type_code
469    AND ESTIMATED_FLAG = 'Y';
470 
471    IF l_debug_level  > 0 THEN
472       oe_debug_pub.add(  'AFTER GETTING ESTIMATED COST AMOUNT ' || TO_CHAR ( L_COST_AMOUNT ) , 3 ) ;
473    END IF;
474    RETURN FND_NUMBER.NUMBER_TO_CANONICAL(l_cost_amount);
475    IF l_debug_level  > 0 THEN
476       oe_debug_pub.add(  'LEAVING CHARGES' ) ;
477    END IF;
478  EXCEPTION
479    WHEN NO_DATA_FOUND THEN
480       IF l_debug_level  > 0 THEN
481          oe_debug_pub.add(  'NO COST INFORMATION FOUND IN OE_PRICE_ADJUSTMENTS' ) ;
482       END IF;
483       RETURN FND_NUMBER.NUMBER_TO_CANONICAL(0);
484    WHEN OTHERS THEN
485       IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
486       THEN
487          FND_MSG_PUB.Add_Exc_Msg
488                 (   G_PKG_NAME
489                 ,   'Get_Cost_Amount'
490                 );
491       END IF;
492       IF l_debug_level  > 0 THEN
493          oe_debug_pub.add(  'UNEXCPETED ERRORS:'||SQLERRM ) ;
494       END IF;
495       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
496 END Get_Estimated_Cost_Amount_ns;
497 
498 END OE_FREIGHT_RATING_util;