DBA Data[Home] [Help]

PACKAGE BODY: APPS.CS_CHARGE_CORE_PVT

Source


1 PACKAGE BODY CS_Charge_Core_PVT AS
2 /*$Header: csxchcrb.pls 120.1.12010000.2 2008/09/02 05:44:24 sshilpam ship $*/
3 
4 /*********** Global  Variables  ********************************/
5 G_PKG_NAME     CONSTANT  VARCHAR2(30)  := 'CS_Charge_Details_PUB' ;
6 
7 
8 PROCEDURE Get_Source_Id(
9                 p_source_code       IN   VARCHAR2,
10                 p_source_number     IN   VARCHAR2,
11                 p_org_id            IN   NUMBER,
12                 x_source_id        OUT NOCOPY   NUMBER,
13                 p_return_status    OUT NOCOPY   VARCHAR2)  IS
14 
15 BEGIN
16 -- Initialize API return status to success
17 
18   p_return_status := 'S' ;
19 
20 
21   IF p_source_code = 'SR'  THEN
22 
23       IF p_source_number  IS NOT NULL THEN
24               SELECT  incident_id INTO  x_source_id
25               FROM    CS_INCIDENTS_ALL_B
26               WHERE   incident_number = p_source_number;
27       ELSE
28              p_return_status := 'F' ;
29 
30       END IF ;
31 
32   ELSIF p_source_code = 'DR' THEN
33 
34       IF p_source_number  IS NOT NULL THEN
35            SELECT  repair_line_id INTO x_source_id
36            FROM    CSD_REPAIRS
37            WHERE   repair_number = p_source_number ;
38       ELSE
39              p_return_status := 'F' ;
40       END IF ;
41 
42   ELSIF p_source_code = 'SD' THEN
43 
44       IF p_source_number  IS NOT NULL THEN
45            SELECT  debrief_header_id INTO x_source_id
46            FROM    csf_debrief_headers
47            WHERE   debrief_number = p_source_number ;
48       ELSE
49           p_return_status := 'F' ;
50       END IF ;
51 
52   ELSE
53          p_return_status := 'F' ;
54   END IF ;
55 
56   EXCEPTION
57   WHEN NO_DATA_FOUND  THEN
58          p_return_status := 'F' ;
59 
60 END  Get_Source_Id ;
61 
62 
63 -- Stubs for removed code
64 -- Stubs for removed code
65 -- Stubs for removed code
66 
67 Procedure default_attributes(p_org OUT NOCOPY number,
68                              x_return_status OUT NOCOPY varchar2) is
69 BEGIN null; END;
70 
71 
72 PROCEDURE Get_Invoice_details(
73                 p_order_header_id   IN   NUMBER,
74                 p_order_line_id     IN   NUMBER,
75                 x_invoice_number   OUT NOCOPY   VARCHAR2,
76                 x_invoice_date     OUT NOCOPY   DATE) is
77 
78 
79 /* Fix bug 2901318
80 CURSOR Inv_Det(p_order_header_id number) IS
81        SELECT min(TRX.TRX_NUMBER), to_char(TRX.TRX_DATE)
82          FROM OE_ORDER_HEADERS_ALL HD,
83               RA_CUSTOMER_TRX_ALL TRX,
84               OE_ORDER_LINES_ALL L,
85               RA_CUSTOMER_TRX_LINES_ALL TRXL
86          WHERE HD.HEADER_ID = L.HEADER_ID
87 	      AND  trxl.INTERFACE_LINE_CONTEXT    = 'ORDER ENTRY'
88 	      AND  trxl.INTERFACE_LINE_ATTRIBUTE1 = to_char(hd.ORDER_NUMBER)
89 	      -- AND  trxl.INTERFACE_LINE_ATTRIBUTE2 = to_char(hd.ORDER_TYPE_ID) -- bug:2463968
90               AND  trxl.INTERFACE_LINE_ATTRIBUTE6 = to_char(l.LINE_ID)
91               AND TRX.CUSTOMER_TRX_ID = TRXL.CUSTOMER_TRX_ID
92               AND HD.HEADER_ID    = p_order_header_id
93          group by trx.trx_number,trx.trx_date; */
94 
95 /*
96 -- Fix bug 2901318
97 CURSOR Inv_Det(p_order_header_id number) IS
98        SELECT min(TRX.TRX_NUMBER), to_char(TRX.TRX_DATE)
99          FROM OE_ORDER_HEADERS_ALL HD,
100               RA_CUSTOMER_TRX_ALL TRX,
101               RA_CUSTOMER_TRX_LINES_ALL TRXL,
102               oe_transaction_types_tl ottt
103          WHERE HD.HEADER_ID = p_order_header_id
104            and ottt.transaction_type_id = hd.ORDER_TYPE_ID
105            and trxl.sales_order = to_char(hd.ORDER_NUMBER)
106 	       AND  trxl.INTERFACE_LINE_ATTRIBUTE2 = ottt.name
107            AND TRX.CUSTOMER_TRX_ID = TRXL.CUSTOMER_TRX_ID
108          group by trx.trx_number, trx.trx_date;
109 */
110 
111  -- Added to resolve Bug # 3816254
112 
113   Cursor get_order_details(p_order_header_id number) IS
114     SELECT order_number
115      FROM  oe_order_headers_all
116     WHERE  header_id = p_order_header_id;
117 
118   Cursor get_invoice_details(p_order_header_number NUMBER,
119                              p_line_id NUMBER)IS
120     SELECT TRX.TRX_NUMBER,
121            TRX.TRX_DATE
122     FROM   RA_CUSTOMER_TRX_ALL TRX
126                                   AND    TRXL.INTERFACE_LINE_ATTRIBUTE1 = to_char(p_order_header_number)
123     WHERE  TRX.CUSTOMER_TRX_ID IN (SELECT TRXL.CUSTOMER_TRX_ID  -- Bug 7117570 Changed = to IN
124                                   FROM   RA_CUSTOMER_TRX_LINES_ALL TRXL
125                                   WHERE  TRXL.INTERFACE_LINE_CONTEXT    = 'ORDER ENTRY'
127                                   AND    TRXL.INTERFACE_LINE_ATTRIBUTE6 = to_char(p_line_id)
128   			          AND    TRXL.SALES_ORDER = to_char(p_order_header_number));
129    -- Fixed bug:5104595
130    /* SELECT TRX.TRX_NUMBER,
131            TRX.TRX_DATE
132     FROM   RA_CUSTOMER_TRX_LINES_ALL TRXL,
133            RA_CUSTOMER_TRX_ALL TRX
134     WHERE  TRXL.INTERFACE_LINE_CONTEXT    = 'ORDER ENTRY'
135     AND    TRXL.INTERFACE_LINE_ATTRIBUTE1 = to_char(p_order_header_number)
136     AND    TRXL.INTERFACE_LINE_ATTRIBUTE6 = to_char(p_line_id)
137     AND    TRX.CUSTOMER_TRX_ID = TRXL.CUSTOMER_TRX_ID; */
138 
139     l_order_number NUMBER;
140 
141 BEGIN
142 
143       OPEN get_order_details(p_order_header_id);
144       FETCH get_order_details
145       INTO l_order_number;
146       CLOSE get_order_details;
147 
148       IF l_order_number IS NOT NULL AND
149          p_order_line_id IS NOT NULL THEN
150 
151         FOR v_cur in get_invoice_details(l_order_number,
152                                        p_order_line_id) LOOP
153           x_invoice_number := v_cur.TRX_NUMBER;
154           x_invoice_date :=  v_cur.TRX_DATE;
155           exit;
156 
157         END LOOP;
158 
159       ELSE
160          x_invoice_number := null;
161          x_invoice_date := null;
162       END IF;
163 
164       /*
165       OPEN Inv_Det(p_order_header_id);
166       FETCH Inv_Det
167       INTO x_invoice_number,
168 	   x_invoice_date;
169       CLOSE Inv_Det;
170       */
171 
172   EXCEPTION
173   When NO_DATA_FOUND THEN
174      BEGIN
175          x_invoice_number := null;
176          x_invoice_date   := null;
177      END;
178 END;
179 
180 
181 /*
182 --  tkochend - commented out because not used
183 --  tkochend - commented out because not used
184 --  tkochend - commented out because not used
185 Procedure default_attributes(p_org    OUT NOCOPY number,
186 				         x_return_status OUT NOCOPY varchar2) is
187 p_resp_appl_id NUMBER;
188 p_user_id NUMBER;
189 p_resp_id NUMBER;
190 p_login_id NUMBER;
191 p_org_id NUMBER;
192 
193 BEGIN
194 
195  -- ----------------------------------------------------------------------
196  -- FND_GLOBAL.RESP_APPL_ID, FND_GLOBAL.RESP_ID, and FND_GLOBAL.LOGIN_ID
197  -- returns -1 by default, which is an invalid value. FND_GLOBAL.USER_ID
198  -- is okay, because user ID -1 corresponds to user 'ANONYMOUS.'  If
199  -- FND_GLOBAL returns -1, the variables are set to NULL instead.
200  -- ----------------------------------------------------------------------
201 
202    IF ((p_resp_appl_id IS NULL) AND (FND_GLOBAL.RESP_APPL_ID <> -1)) THEN
203 	  -- ID is not passed in, return the default.
204 	 p_resp_appl_id := FND_GLOBAL.RESP_APPL_ID;
205    END IF;
206 
207    IF ((p_resp_id IS NULL) AND (FND_GLOBAL.RESP_ID <> -1)) THEN
208 	    p_resp_id := FND_GLOBAL.RESP_ID;
209    END IF;
210 
211    IF (p_user_id IS NULL) THEN
212 	  p_user_id := FND_GLOBAL.USER_ID;
213    END IF;
214 
215    IF ((p_login_id = FND_API.G_MISS_NUM) AND
216 	   (FND_GLOBAL.LOGIN_ID NOT IN (-1,0))) THEN
217 	  p_login_id := FND_GLOBAL.LOGIN_ID;
218     ELSE
219 	   p_login_id := NULL;
220    END IF;
221 
222    IF (p_org_id IS NULL) THEN
223 	 SELECT TO_NUMBER(DECODE(SUBSTRB(USERENV('CLIENT_INFO'),1,1), ' ', NULL,
224 				   SUBSTRB(USERENV('CLIENT_INFO'),1,10)))
225 	 INTO   p_org_id
226       FROM   dual;
227 
228    IF (p_org_id IS NULL) THEN
229 	p_org_id := TO_NUMBER(FND_PROFILE.Value_Specific('ORG_ID', p_user_id,
230 						    p_resp_id, p_resp_appl_id));
231    END IF;
232 
233   IF p_org_id IS NOT NULL THEN
234 
235   p_org := p_org_id;
236 
237   x_return_status := 'Y';
238 
239   ELSE
240   x_return_status := 'N';
241   END IF;
242 
243  END IF;
244 END Default_attributes;
245 
246 --End of removed code
247 --End of removed code
248 --End of removed code
249 */
250 
251 
252 FUNCTION Get_Ship_To_site_Id (
253 		p_qte_header_id		NUMBER,
254 		p_qte_line_id		NUMBER) RETURN NUMBER
255 IS
256     CURSOR c_ship_site1 IS
257 	SELECT ship_to_org_id
258 	FROM   CS_ESTIMATE_DETAILS
259 	WHERE  incident_id = p_qte_header_id
260 	AND    estimate_detail_id = p_qte_line_id;
261 
262     CURSOR c_ship_site2 IS
263 	SELECT ship_to_org_id
264 	FROM   CS_ESTIMATE_DETAILS
265 	WHERE  incident_id = p_qte_header_id
266 	AND    estimate_detail_id IS NULL ;
267 
268     l_ship_site_id		NUMBER;
269     l_ship_site_use_id   NUMBER;
270 
271     CURSOR c_cust_id IS
272     SELECT account_id
273     FROM   CS_INCIDENTS_ALL_B
274     WHERE  incident_id = p_qte_header_id;
275 
276     CURSOR C_site_use(l_cust_id NUMBER, l_ship_site_id NUMBER) IS
277          SELECT site_use_id
278          FROM   hz_cust_site_uses b,
279 			 hz_cust_acct_sites a
280          WHERE b.cust_acct_site_id = a.cust_acct_site_id
281          AND   b.site_use_code = 'SHIP_TO' --and b.primary_flag = 'Y'
282          AND   a.party_site_id = l_ship_site_id
283          AND   a.cust_account_id = l_cust_id;
284 
285     l_cust_id NUMBER;
286     l_return_status VARCHAR2(1);
287     l_msg_count number;
291     OPEN c_ship_site1;
288     l_msg_data VARCHAR2(2000);
289 
290 BEGIN
292     FETCH c_ship_site1 INTO l_ship_site_id;
293     IF c_ship_site1%FOUND THEN
294 	CLOSE c_ship_site1;
295     -- Get the Customer Account from the header
296     OPEN c_cust_id;
297     FETCH c_cust_id INTO l_cust_id;
298     CLOSE c_cust_id;
299 
300     -- Get the site use id from the HZ_cust_site_uses
301 
302     OPEN C_site_use(l_cust_id , l_ship_site_id);
303     FETCH C_site_use into l_ship_site_use_id;
304     CLOSE C_site_use;
305 
306   	return l_ship_site_use_id;
307     END IF;
308     CLOSE c_ship_site1;
309     OPEN c_ship_site2;
310     FETCH c_ship_site2 INTO l_ship_site_id;
311     IF c_ship_site2%FOUND THEN
312 	CLOSE c_ship_site2;
313 
314       -- Get the Customer Account from the header
315     OPEN c_cust_id;
316     FETCH c_cust_id INTO l_cust_id;
317     CLOSE c_cust_id;
318 
319        -- Get the site use id from the HZ_cust_site_uses
320 
321     OPEN C_site_use(l_cust_id , l_ship_site_id);
322     FETCH C_site_use into l_ship_site_use_id;
323     CLOSE C_site_use;
324 
325   	return l_ship_site_use_id;
326 
327 	END IF;
328     CLOSE c_ship_site2;
329     return l_ship_site_use_id;
330 END Get_Ship_To_site_Id;
331 
332 FUNCTION Get_invoice_to_party_site_id (
333 		p_qte_header_id		NUMBER,
334 		p_qte_line_id		NUMBER
335 		) RETURN NUMBER
336 IS
337     CURSOR c_inv_site1 IS
338 	SELECT invoice_to_org_id
339 	FROM   CS_ESTIMATE_DETAILS
340 	WHERE  estimate_detail_id = p_qte_line_id
341      AND    incident_id = p_qte_header_id;
342 
343     CURSOR c_inv_site2 IS
344 	SELECT invoice_to_org_id
345 	FROM   CS_ESTIMATE_DETAILS
346 	WHERE  incident_id = p_qte_header_id;
347 
348 
349     l_inv_site_id		NUMBER;
350 
351 
352     l_ship_site_id		NUMBER;
353     l_bill_site_use_id  NUMBER;
354 
355     CURSOR c_cust_id IS
356     SELECT customer_id
357     FROM   CS_INCIDENTS_ALL_B
358     WHERE  incident_id = p_qte_header_id;
359 
360   CURSOR C_site_use(l_cust_id NUMBER, l_inv_site_id NUMBER) IS
361          SELECT site_use_id
362          FROM hz_cust_site_uses b,hz_cust_acct_sites a
363          WHERE b.cust_acct_site_id = a.cust_acct_site_id
364          AND b.site_use_code = 'BILL_TO'
365          AND a.party_site_id = l_inv_site_id
366          AND a.cust_account_id = l_cust_id;
367 
368     l_cust_id NUMBER;
369 
370 BEGIN
371 
372     OPEN c_inv_site1;
373     FETCH c_inv_site1 INTO l_inv_site_id;
374     IF c_inv_site1%FOUND THEN
375 	CLOSE c_inv_site1;
376 
377     -- Get the Customer Account from the header
378     OPEN c_cust_id;
379     FETCH c_cust_id INTO l_cust_id;
380     CLOSE c_cust_id;
381 
382     -- Get the site use id from the HZ_cust_site_uses
383 
384     OPEN C_site_use(l_cust_id , l_inv_site_id);
385     FETCH C_site_use into l_bill_site_use_id;
386     CLOSE C_site_use;
387     return l_bill_site_use_id;
388 
389     END IF;
390     CLOSE c_inv_site1;
391     OPEN c_inv_site2;
392     FETCH c_inv_site2 INTO l_inv_site_id;
393     IF c_inv_site2%FOUND THEN
394 	CLOSE c_inv_site2;
395 
396     -- Get the Customer Account from the header
397     OPEN c_cust_id;
398     FETCH c_cust_id INTO l_cust_id;
399     CLOSE c_cust_id;
400 
401     -- Get the site use id from the HZ_cust_site_uses
402 
403     OPEN C_site_use(l_cust_id , l_inv_site_id);
404     FETCH C_site_use into l_bill_site_use_id;
405     CLOSE C_site_use;
406     return l_bill_site_use_id;
407     END IF;
408     CLOSE c_inv_site2;
409     return l_bill_site_use_id;
410 END Get_invoice_to_party_site_id;
411 
412 Function Number_Format(p_value_amount IN NUMBER) return VARCHAR2
413 
414 IS
415 
416 l_format VARCHAR2(2000);
417 l_value_amount VARCHAR2(100);
418 
419 BEGIN
420 
421   IF p_value_amount IS NOT NULL THEN
422     fnd_currency.build_format_mask(l_format,30,2,1);
423     l_value_amount := to_char(p_value_amount, l_format);
424 
425   ELSE
426     --p_value_amount is null
427     l_value_amount := null;
428 
429   END IF;
430 
431 
432   return l_value_amount;
433 
434 END;
435 
436 
437 Function Get_Value_Name(p_restriction_type    IN VARCHAR2,
438                         p_value_object_id     IN NUMBER) return VARCHAR2
439 IS
440 
441 Cursor c_party_name IS
442 select party_name||'-'||party_number party_name
443   from hz_parties
444  where party_id = p_value_object_id
445    and nvl(status, 'A') = 'A';
446 
447 Cursor c_incident_type IS
448 select name
449   from cs_incident_types_vl
450  where incident_type_id = p_value_object_id;
451 
452 l_value_name VARCHAR2(4000) := null;
453 
454 BEGIN
455 
456  IF p_restriction_type = 'BILL_TO_CUSTOMER' THEN
457     OPEN c_party_name;
458     FETCH c_party_name INTO l_value_name;
459     CLOSE c_party_name;
460 
461   ELSE
462     IF p_restriction_type = 'SERVICE_REQUEST_TYPE' THEN
463       OPEN c_incident_type;
464       FETCH c_incident_type INTO l_value_name;
465       CLOSE c_incident_type;
466     END IF;
467   END IF;
468 
469   return l_value_name;
470 
471 END Get_Value_Name;
472 
473 
474 END CS_Charge_Core_PVT ;
475