[Home] [Help]
PACKAGE BODY: APPS.JAI_PO_PROC_PKG
Source
1 PACKAGE BODY jai_po_proc_pkg AS
2 /* $Header: jai_po_proc.plb 120.1.12020000.2 2013/03/19 01:13:19 vkaranam noship $ */
3 G_PKG_NAME CONSTANT VARCHAR2(30) := 'jai_po_proc_pkg';
4 G_CURRENT_RUNTIME_LEVEL CONSTANT NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
5 G_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
6 G_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
7 G_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
8 G_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
9 G_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
10 G_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
11 G_MODULE_NAME CONSTANT VARCHAR2(30) := 'JAI.PLSQL.jai_po_proc_pkg.';
12
13 /*----------------------------------------------------------------------------*
14 | PRIVATE FUNCTIONS/PROCEDURES |
15 *----------------------------------------------------------------------------*/
16 FUNCTION get_currency_conv_rate
17 (
18 v_inv_org_id IN NUMBER
19 ,v_currency IN VARCHAR2
20 ,v_rate_date IN DATE
21 ,v_rate_type IN VARCHAR2
22 ,v_rate IN NUMBER
23 ) RETURN NUMBER;
24 FUNCTION get_func_currency(v_inv_org_id IN NUMBER) RETURN VARCHAR2;
25 FUNCTION is_split_line
26 (
27 pn_orig_ship_id IN NUMBER
28 ,pn_po_hdr_id IN NUMBER
29 ,pn_po_line_id IN NUMBER
30 ) RETURN BOOLEAN;
31
32 PROCEDURE process_split_line
33 (
34 pn_orig_ship_id IN NUMBER
35 ,pn_line_loc_id IN NUMBER
36 ,pn_quantity IN NUMBER
37 ,pn_price IN NUMBER
38 ,pv_type_lookup_code IN VARCHAR2
39 );
40 /* PROCEDURE process_po_req_line
41 (
42 pn_requisition_line_id NUMBER
43 ,pr_requisition_line PO_REQUISITION_LINES_ALL%ROWTYPE DEFAULT NULL
44 ,pv_action VARCHAR2
45 ); Move to pls file*/
46 procedure process_req_line_inserting
47 (
48 --pn_requisition_line_id NUMBER
49 pr_requisition_line PO_REQUISITION_LINES_ALL%ROWTYPE
50 );
51 procedure process_req_line_updating
52 (
53 --Pn_requisition_line_id NUMBER
54 pr_requisition_line PO_REQUISITION_LINES_ALL%ROWTYPE
55 );
56 procedure po_req_tax_default
57 (
58 --pn_requisition_line_id IN NUMBER,
59 pr_requisition_line PO_REQUISITION_LINES_ALL%ROWTYPE,
60 pn_tax_category_id OUT NOCOPY NUMBER,
61 pn_line_amount OUT NOCOPY NUMBER
62 );
63 FUNCTION get_line_loc_id
64 (
65 p_from_hdr_id NUMBER
66 ,p_line_num NUMBER
67 ,p_item_id NUMBER
68 ,p_ship_num NUMBER
69 ) RETURN NUMBER;
70 /*Added by Wenqiong for trigger replacement*
71 */
72 FUNCTION get_line_id
73 (
74 p_from_hdr_id NUMBER
75 ,p_line_num NUMBER
76 ) RETURN NUMBER;
77
78 PROCEDURE locate_source_line
79 (
80 p_header_id IN NUMBER,
81 p_line_num IN NUMBER,
82 p_line_quantity IN NUMBER,
83 p_po_line_id OUT NOCOPY NUMBER,
84 p_line_location_id OUT NOCOPY NUMBER,
85 p_line_id NUMBER DEFAULT NULL
86 );
87 /*-----------------------------------------------------------------------*
88 | PUBLIC FUNCTIONS/PROCEDURES |
89 *-----------------------------------------------------------------------*/
90
91 /*
92 REM +======================================================================+
93 REM Created By : Wenqiong Zhou
94 REM Creation Date : Jun 1, 2012
95 REM Bug Number/ER Name : 14040855/JAI Triggers Elimination
96 REM SubProgram Name : process_po_taxes
97 REM Type : processing API
98 REM Purpose : Processing PO's tax defaultatin.
99 REM It's just consolidation from jai_po_tax_pkg.Ja_In_Po_Case1
100 REM and jai_po_tax_pkg.Ja_In_Po_Case2.
101 REM TDD Reference :
102 REM
103 REM Assumptions :
104 REM
105 REM Parameter IN/OUT Type Required Description and Purpose
106 REM -------------------- ------ ------------ ---------- ------------------------------------
107 REM v_type_lookup_code IN VARCHAR2 Y Indiate which type document is.
108 REM v_quot_class_code IN VARCHAR2 Y quotation class
109 REM CALLED BY
110 REM jai_po_proc_pkg.process_po_tax_wrapper
111 REM +================================================================================================+
112 */
113 PROCEDURE process_po_taxes
114 (
115 v_type_lookup_code IN VARCHAR2
116 ,v_quot_class_code IN VARCHAR2
117 ,v_vendor_id IN NUMBER
118 ,v_vendor_site_id IN NUMBER
119 ,v_currency IN VARCHAR2
120 ,v_org_id IN NUMBER
121 ,v_item_id IN NUMBER
122 ,v_uom_code IN VARCHAR2
123 ,v_line_loc_id IN NUMBER
124 ,v_po_hdr_id IN NUMBER
125 ,v_po_line_id IN NUMBER
126 ,v_frm_po_line_id IN NUMBER
127 ,v_frm_line_loc_id IN NUMBER
128 ,v_price IN NUMBER
129 ,v_qty IN NUMBER
130 ,v_cre_dt IN DATE
131 ,v_cre_by IN NUMBER
132 ,v_last_upd_dt IN DATE
133 ,v_last_upd_by IN NUMBER
134 ,v_last_upd_login IN NUMBER
135 ,flag IN VARCHAR2
136 ,pn_conv_rate IN NUMBER DEFAULT 1
137 ,pn_assessable_value IN NUMBER
138 ,pn_vat_assess_value IN NUMBER
139 ,p_tax_category_id IN NUMBER DEFAULT NULL
140 ,pv_retroprice_changed IN VARCHAR2 DEFAULT 'N'
141 ) IS
142 CURSOR fetch_focus_id_cur IS
143 SELECT line_focus_id
144 FROM jai_po_line_locations
145 WHERE po_line_id = v_po_line_id AND
146 nvl(line_location_id,0) = nvl(v_line_loc_id,0);
147
148
149 CURSOR fetch_taxes_cur IS
150 SELECT tax_line_no, precedence_1, precedence_2, precedence_3, precedence_4,
151 precedence_5, precedence_6, precedence_7, precedence_8,
152 precedence_9, precedence_10, tax_id, currency, tax_rate, qty_rate,
153 tax_amount, tax_type, modvat_flag, vendor_id, tax_category_id
154 FROM jai_po_taxes
155 WHERE po_line_id = v_frm_po_line_id AND
156 nvl(line_location_id,0) = nvl(v_line_loc_id,0)
157 ORDER BY tax_line_no;
158
159 CURSOR fetch_mod_cr_cur(taxid IN NUMBER) IS
160 SELECT tax_type, mod_cr_percentage, vendor_id, adhoc_flag
161 FROM jai_cmn_taxes_all
162 WHERE tax_id = taxid;
163
164 CURSOR c_line_tax_category_id(p_po_line_id IN NUMBER, p_line_location_id IN NUMBER) IS
165 SELECT tax_category_id
166 FROM jai_po_line_locations
167 WHERE po_line_id = p_po_line_id AND
168 nvl(line_location_id,0) = nvl(p_line_location_id,0);
169
170 CURSOR Fetch_Sum_Cur IS
171 SELECT SUM( NVL( Tax_Amount, 0 ) )
172 FROM JAI_PO_TAXES
173 WHERE Po_Line_Id = v_po_line_id
174 AND nvl(Line_Location_Id,0) = nvl(v_line_loc_id,0)
175 AND Tax_Type <> jai_constants.tax_type_tds;
176
177 CURSOR c_tax_modified_flag(c_po_line_id NUMBER, c_line_loc_id NUMBER) IS
178 SELECT tax_modified_flag
179 FROM JAI_PO_LINE_LOCATIONS
180 WHERE po_line_id = c_po_line_id
181 AND nvl(line_location_id,0)= nvl(c_line_loc_id,0);
182 l_api_name CONSTANT VARCHAR2(30) := 'process_po_taxes';
183 v_seq_val NUMBER;
184 lv_currency VARCHAR2(30);
185 v_line_amt NUMBER;
186 v_tax_amt NUMBER;
187 v_tax_line_no NUMBER;
188 v_prec1 NUMBER;
189 v_prec2 NUMBER;
190 v_prec3 NUMBER;
191 v_prec4 NUMBER;
192 v_prec5 NUMBER;
193 v_prec6 NUMBER;
194 v_prec7 NUMBER;
195 v_prec8 NUMBER;
196 v_prec9 NUMBER;
197 v_prec10 NUMBER;
198
199 v_taxid NUMBER;
200 v_tax_rate NUMBER;
201 v_qty_rate NUMBER;
202 v_tax_type VARCHAR2(30);
203 v_mod_flag VARCHAR2(1);
204 v_vendor2_id NUMBER;
205 v_mod_cr NUMBER;
206 v_vendor1_id NUMBER;
207 lv_vendor_id NUMBER;
208 ln_quot_qty NUMBER ;
209 lv_adhoc_flag VARCHAR2(1);
210 operation VARCHAR2(2);
211 operation_flag NUMBER;
212 trans_name VARCHAR2(200);
213 v_tax_modified_flag VARCHAR2(1);
214 v_tax_category_id JAI_PO_LINE_LOCATIONS.tax_category_id%TYPE;
215 v_tax_category_id_dflt JAI_PO_LINE_LOCATIONS.tax_category_id%TYPE;
216
217 BEGIN
218
219 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
220 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
221 END IF;
222 lv_currency := v_currency;
223 lv_vendor_id := v_vendor_id;
224
225 v_line_amt := v_price * v_qty;
226 /*Move get modified flag cursor out IF branch*/
227 OPEN c_tax_modified_flag(v_frm_po_line_id,v_frm_line_loc_id);
228 FETCH c_tax_modified_flag INTO v_tax_modified_flag;
229 CLOSE c_tax_modified_flag;
230
231 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
232 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'v_tax_modified_flag:'||v_tax_modified_flag);
233 END IF;
234
235 IF v_type_lookup_code IN ('QUOTATION') AND (v_frm_po_line_id IS NOT NULL OR v_frm_line_loc_id IS NOT NULL)
236 AND v_tax_modified_flag = 'Y' THEN--Move the below condition here
237 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
238 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'enter if branch for QUOTATION and tax modified flag is Y');
239 END IF;
240
241 /*IF v_tax_modified_flag = 'Y' THEN Move to outter IF*/
242
243 OPEN fetch_focus_id_cur;
244 FETCH fetch_focus_id_cur
245 INTO v_seq_val;
246 CLOSE fetch_focus_id_cur;
247
248
249 OPEN fetch_taxes_cur;
250 LOOP
251 FETCH fetch_taxes_cur
252 INTO v_tax_line_no, v_prec1, v_prec2, v_prec3, v_prec4, v_prec5,
253 v_prec6, v_prec7, v_prec8, v_prec9, v_prec10, v_taxid, lv_currency, v_tax_rate, v_qty_rate, v_tax_amt, v_tax_type, v_mod_flag, v_vendor2_id, v_tax_category_id; -- cbabu for EnhancementBug# 2427465
254
255 EXIT WHEN fetch_taxes_cur%NOTFOUND;
256
257 OPEN fetch_mod_cr_cur(v_taxid);
258 FETCH fetch_mod_cr_cur
259 INTO v_tax_type, v_mod_cr, v_vendor1_id, lv_adhoc_flag;
260 CLOSE fetch_mod_cr_cur;
261
262 IF v_mod_flag IS NULL THEN
263 v_mod_flag := v_mod_cr;
264 END IF;
265
266 IF upper(v_tax_type) IN
267 ('CUSTOMS'
268 ,'CVD'
269 ,jai_constants.tax_type_add_cvd
270 ,jai_constants.tax_type_customs_edu_cess
271 ,jai_constants.tax_type_sh_customs_edu_cess
272 ,jai_constants.tax_type_cvd_edu_cess
273 ,jai_constants.tax_type_sh_cvd_edu_cess)
274 THEN
275 lv_vendor_id := NULL;
276 ELSIF v_tax_type = 'TDS' THEN
277 lv_vendor_id := v_vendor1_id;
278 ELSE
279 lv_vendor_id := v_vendor_id;
280 END IF;
281
282 IF nvl(v_qty,0) <> 0 THEN
283 ln_quot_qty := v_qty;
284 ELSE
285 ln_quot_qty := 1;
286 END IF;
287
288
289
290 IF nvl(lv_adhoc_flag,'N') = 'Y' THEN
291 v_tax_amt := v_tax_amt * v_qty / ln_quot_qty;
292 ELSE
293 v_tax_amt := NULL;
294 END IF;
295
296 jai_po_proc_pkg.insert_po_taxes(
297 v_type_lookup_code
298 ,v_quot_class_code
299 ,v_seq_val
300 ,v_line_loc_id
301 ,v_tax_line_no
302 ,v_po_line_id
303 ,v_po_hdr_id
304 ,v_prec1
305 ,v_prec2
306 ,v_prec3
307 ,v_prec4
308 ,v_prec5
309 ,v_prec6
310 ,v_prec7
311 ,v_prec8
312 ,v_prec9
313 ,v_prec10
314 ,v_taxid
315 ,v_price
316 ,v_qty
317 ,lv_currency
318 ,v_tax_rate
319 ,v_qty_rate
320 ,v_uom_code
321 ,v_tax_amt
322 ,v_tax_type
323 ,v_mod_flag
324 ,lv_vendor_id
325 ,NULL
326 ,v_cre_dt
327 ,v_cre_by
328 ,v_last_upd_dt
329 ,v_last_upd_by
330 ,v_last_upd_login
331 ,v_tax_category_id
332 );
333
334
335 v_tax_category_id_dflt := nvl(v_tax_category_id_dflt
336 ,v_tax_category_id);
337
338 END LOOP;
339 CLOSE fetch_taxes_cur;
340
341
342 IF v_tax_category_id_dflt IS NULL THEN
343
344 OPEN c_line_tax_category_id(v_frm_po_line_id
345 ,v_frm_line_loc_id);
346 FETCH c_line_tax_category_id
347 INTO v_tax_category_id_dflt;
348 CLOSE c_line_tax_category_id;
349
350 END IF;
351
352 UPDATE jai_po_line_locations
353 SET tax_category_id = v_tax_category_id_dflt
354 WHERE line_focus_id = v_seq_val;
355
356 /*END IF;*/
357 ELSE--PO is not quotation from RFQ
358 /*Get tax category id from vendor default*/
359 IF p_tax_category_id is null then
360 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
361 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'enter if branch for not QUOTATION and p_tax_category is null');
362 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'parameters for tax default:v_org_id,'||to_char(v_org_id)||'lv_vendor_id,'||to_char(lv_vendor_id)||'vendor_site_id,'||to_char(v_vendor_site_id)
363 ||'item_id,'||to_char(v_item_id)||'po_hdr_id,'||to_char(v_po_hdr_id)||'line_loc_id,'||to_char(v_line_loc_id)||'v_po_line_id,'||to_char(v_po_line_id));
364 END IF;
365
366 IF nvl(v_line_loc_id,0) <> 0 THEN
367 jai_cmn_tax_defaultation_pkg.Ja_In_Vendor_Default_Taxes(
368 v_org_id,
369 lv_vendor_id,
370 v_vendor_site_id,
371 v_item_id,
372 v_po_hdr_id,
373 v_line_loc_id,
374 v_tax_category_id_dflt
375 );
376 ELSE
377 jai_cmn_tax_defaultation_pkg.Ja_In_Vendor_Default_Taxes(
378 v_org_id,
379 lv_vendor_id,
380 v_vendor_site_id,
381 v_item_id,
382 v_po_hdr_id,
383 v_po_line_id,
384 v_tax_category_id_dflt
385 );
386 END IF;
387
388 ELSE --p_tax_category_id is not null then
389 DELETE Jai_Po_Taxes WHERE Po_Line_Id = v_po_line_id
390 AND NVL( Line_Location_Id, 0 ) = NVL( v_line_loc_id, 0 );
391
392 UPDATE Jai_Po_Line_Locations
393 SET Tax_Amount = NULL,
394 Total_Amount = NULL,
395 Last_Updated_By = fnd_global.user_id,
396 Last_Update_Date = sysdate,
397 Last_Update_Login = fnd_global.login_id
398 WHERE Po_Line_Id = v_po_line_id
399 AND NVL( Line_Location_Id, 0 ) = NVL( v_line_loc_id, 0 );
400
401 v_tax_category_id_dflt := p_tax_category_id;
402 END IF;
403 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
404 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'after defaultation,tax_category:'||v_tax_category_id_dflt);
405 END IF;
406
407 IF v_tax_category_id_dflt IS NOT NULL THEN
408
409 IF flag = 'INSLINES' THEN
410 v_line_amt := -1; -- Line Level Tax Defaulting.
411 operation_flag := -1;
412
413 ELSE
414 v_line_amt := v_qty*v_price; -- Shipment/Price Break Level Tax Defaulting.
415 operation_flag := 0;
416 /* Move below code out of Else branch for bug14748379 by Wenqiong 2012/10/15
417 IF flag = 'U' THEN
418 operation := '$U'; -- Updation
419 ELSE
420 operation := '$I'; -- Insert
421 END IF;
422 */ END IF;
423 --Move above code out of Else branch for bug14748379 by Wenqiong 2012/10/15 begin
424 IF flag = 'U' THEN
425 operation := '$U'; -- Updation
426 ELSE
427 operation := '$I'; -- Insert
428 END IF;
429 --Move above code out of Else branch for bug14748379 by Wenqiong 2012/10/15 end
430
431 IF v_type_lookup_code IN ( 'RFQ', 'QUOTATION' ) AND v_quot_class_code = 'BID' THEN
432 trans_name := v_type_lookup_code || TO_CHAR( v_line_loc_id ) || operation;
433 ELSIF ( v_type_lookup_code IN ( 'RFQ', 'QUOTATION' ) AND v_quot_class_code = 'CATALOG' ) OR v_type_lookup_code = 'BLANKET' THEN
434
435 IF nvl(v_line_loc_id,0) = 0 THEN
436 trans_name := v_type_lookup_code || operation;
437 ELSE
438 trans_name := v_type_lookup_code || TO_CHAR( v_line_loc_id ) || operation;
439 END IF;
440 ELSIF v_type_lookup_code IN ( 'STANDARD', 'PLANNED' , 'RELEASE' ) THEN
441 trans_name := 'OTHERS' || TO_CHAR( v_line_loc_id ) || operation;
442 ELSIF v_type_lookup_code = 'SCHEDULED' THEN
443 trans_name := v_type_lookup_code || TO_CHAR( v_line_loc_id ) || operation;
444 ELSIF v_type_lookup_code = 'BLANKET' THEN
445 trans_name := v_type_lookup_code || TO_CHAR( v_line_loc_id ) || operation;
446 END IF;
447
448 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
449 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'after defaultation,trans_name:'||trans_name);
450 END IF;
451
452
453 jai_cmn_tax_defaultation_pkg.Ja_In_Calc_Prec_Taxes(
454 LTRIM( RTRIM( trans_name ) ),
455 v_tax_category_id_dflt,
456 v_po_hdr_id,
457 v_po_line_id,
458 pn_assessable_value,
459 v_line_amt,
460 v_item_id,
461 v_qty,
462 v_uom_code,
463 lv_vendor_id,
464 lv_currency,
465 1/pn_conv_rate,
466 v_cre_dt,
467 v_cre_by,
468 v_last_upd_dt,
469 v_last_upd_by,
470 v_last_upd_login,
471 operation_flag,
472 pn_vat_assess_value
473 , pv_retroprice_changed
474
475 );
476 END IF;--if v_tax_category_id_dflt is not null
477 END IF;
478 --This Part of code is placed after END IF, to correct the tax_amount , Total_Amount
479 --Entry into Localization tables
480 IF ( v_quot_class_code = 'CATALOG' ) OR ( v_type_lookup_code = 'BLANKET' ) THEN
481 UPDATE JAI_PO_TAXES
482 SET Tax_Amount = NULL,
483 Tax_Target_Amount = NULL,
484 Last_Updated_By = v_last_upd_by,
485 Last_Update_Date = v_last_upd_dt,
486 Last_Update_Login = v_last_upd_login
487 WHERE Po_Line_Id = v_po_line_id
488 AND nvl(Line_Location_Id,0) = nvl(v_line_loc_id,0);
489
490 UPDATE JAI_PO_LINE_LOCATIONS
491 SET Tax_Amount = NULL,
492 Total_Amount = NULL,
493 Last_Updated_By = v_last_upd_by,
494 Last_Update_Date = v_last_upd_dt,
495 Last_Update_Login = v_last_upd_login
496 WHERE Po_Line_Id = v_po_line_id
497 AND nvl(Line_Location_Id,0) = nvl(v_line_loc_id,0);
498 ELSE
499 OPEN fetch_sum_cur;
500 FETCH fetch_sum_cur INTO v_tax_amt;
501 CLOSE fetch_sum_cur;
502
503 UPDATE jai_po_line_locations
504 SET tax_amount = nvl(v_tax_amt,0),
505 total_amount = nvl((v_qty * v_price),0) + nvl(v_tax_amt,0), last_updated_by = v_last_upd_by,
506 last_update_date = v_last_upd_dt, last_update_login = v_last_upd_login
507 WHERE Po_Line_Id = v_po_line_id
508 AND nvl(Line_Location_Id,0) = nvl(v_line_loc_id,0);
509 END IF;
510
511 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
512 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
513 END IF;
514 EXCEPTION
515 WHEN OTHERS THEN
516 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
517 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
518 END IF;
519 END process_po_taxes;
520
521 /*
522 REM +======================================================================+
523 REM Created By : Wenqiong Zhou
524 REM Creation Date : Jun 1, 2012
525 REM Bug Number/ER Name : 14040855/JAI Triggers Elimination
526 REM SubProgram Name : process_po_tax_wrapper
527 REM Type : processing API
528 REM Purpose : process tax related logic when the event of Create and Update for PO Documents.
529 REM The main logic is insert/update data into JAI_PO_LINE_LOCATIONS table
530 REM and JAI_PO_TAXES table.
531 REM TDD Reference :
532 REM
533 REM Assumptions :
534 REM
535 REM Parameter IN/OUT Type Required Description and Purpose
536 REM ----------------------- ------ --------------------- ---------- ------------------------------------
537 REM prec_po_line IN PO_LINES_ALL%ROWTYPE N PO Line info.
538 REM prec_po_location IN PO_LINE_LOCATIONS_ALL%ROWTYPE N PO Shipment line.
539 REM pv_retro_price_flag IN Varchar2 N retroactive price changed flag.
540 REM CALLED BY
541 REM process_po, process_po_line, process_po_shipment_line
542 REM +================================================================================================+
543 */
544 PROCEDURE process_po_tax_wrapper (prec_po_header IN po_headers_all%ROWTYPE DEFAULT NULL--Added by Wenqiong for bug16288154
545 ,prec_po_line IN PO_LINES_ALL%ROWTYPE DEFAULT NULL
546 ,prec_po_location IN PO_LINE_LOCATIONS_ALL%ROWTYPE DEFAULT NULL
547 ,pv_retro_price_flag IN VARCHAR2 DEFAULT 'N'
548 )
549 IS
550 l_api_name CONSTANT VARCHAR2(30) := 'process_po_tax_wrapper';
551
552 v_po_hdr_id PO_LINES_ALL.po_header_id%type;
553 v_po_line_id PO_LINES_ALL.po_line_id%type;
554 v_item_id PO_LINES_ALL.item_id%type;
555 v_from_line_id PO_LINES_ALL.from_line_id%type;
556 v_uom_measure PO_LINES_ALL.Unit_Meas_Lookup_Code%type;
557 v_cre_dt PO_LINES_ALL.Creation_Date%type;
558 v_cre_by PO_LINES_ALL.Created_By%type;
559 v_last_upd_dt PO_LINES_ALL.Last_Update_Date%type;
560 v_last_upd_by PO_LINES_ALL.Last_Updated_By%type;
561 v_last_upd_login PO_LINES_ALL.Last_Update_Login%type;
562
563 v_line_loc_id PO_LINE_LOCATIONS_ALL.Line_Location_Id%TYPE;
564 v_from_line_loc_id PO_LINE_LOCATIONS_ALL.From_Line_Location_Id%TYPE;
565 v_qty PO_LINE_LOCATIONS_ALL.Quantity%TYPE;
566 v_old_qty PO_LINE_LOCATIONS_ALL.Quantity%TYPE;
567 v_price PO_LINE_LOCATIONS_ALL.Price_Override%TYPE;
568 v_shipment_type PO_LINE_LOCATIONS_ALL.SHIPMENT_TYPE%TYPE;
569 v_src_ship_id prec_po_location.Source_Shipment_Id%TYPE;
570 v_po_rel_id prec_po_location.Po_Release_Id%TYPE;
571
572 ln_line_id NUMBER;
573 ln_line_loc_id NUMBER;
574 v_ship_loc_id NUMBER;
575 v_org_id NUMBER;
576 v_tax_modified_flag VARCHAR2(1);
577 v_type_lookup_code VARCHAR2(25);
578 v_uom_code VARCHAR2(25);
579
580 v_quot_class_code VARCHAR2(25);
581 v_vendor_id PO_HEADERS_ALL.vendor_id%TYPE;
582 v_vendor_site_id PO_HEADERS_ALL.vendor_site_id%TYPE;
583 v_currency PO_HEADERS_ALL.currency_code%TYPE;
584 v_default_curr PO_HEADERS_ALL.currency_code%TYPE;
585 v_currency_conv_rate PO_HEADERS_ALL.rate%TYPE;
586
587 v_line_amt NUMBER;
588
589 v_conv_rate_type PO_HEADERS_ALL.rate_type%TYPE;
590 v_conv_rate_date PO_HEADERS_ALL.rate_date%TYPE;
591 v_conv_rate PO_HEADERS_ALL.rate%TYPE;
592 v_gl_set_of_bks_id gl_sets_of_books.set_of_books_id%type ;
593 flag VARCHAR2(10);
594 v_tax_amount NUMBER;
595 v_assessable_value NUMBER;
596 v_vat_assess_value NUMBER;
597 v_line_focus_id NUMBER;
598 v_inv_org_id NUMBER;
599 CURSOR Check_Rfq_Quot_Cur(v_po_hdr_id NUMBER) IS
600 SELECT Type_Lookup_Code, Quotation_Class_Code,vendor_id, vendor_site_id
601 ,Currency_Code, Ship_To_Location_Id,rate_type, rate_date, rate
602 FROM Po_Headers_All
603 WHERE Po_Header_Id = v_po_hdr_id;
604
605 CURSOR c_line_tax_modified_flag(c_po_line_id NUMBER) IS
606 SELECT tax_modified_flag
607 FROM JAI_PO_LINE_LOCATIONS
608 WHERE po_line_id = c_po_line_id
609 AND line_location_id IS NULL;
610
611 CURSOR c_line_loc_tax_flag(c_line_loc_id NUMBER) IS
612 SELECT tax_modified_flag
613 FROM JAI_PO_LINE_LOCATIONS
614 WHERE line_location_id = c_line_loc_id;
615
616 CURSOR c_line_info (cn_po_line_id NUMBER)IS
617 SELECT item_id
618 FROM PO_LINES_ALL
619 WHERE po_line_id = cn_po_line_id;
620
621 CURSOR c_old_qty(c_line_loc_id NUMBER) IS
622 SELECT quantity
623 FROM JAI_PO_LINE_LOCATIONS
624 WHERE line_location_id = c_line_loc_id;
625
626 CURSOR Fetch_UOMCode_Cur IS
627 SELECT Uom_Code
628 FROM Mtl_Units_Of_Measure
629 WHERE Unit_Of_Measure = v_uom_measure;
630
631 CURSOR Fetch_Org_Id_Cur IS
632 SELECT Inventory_Organization_Id
633 FROM Hr_Locations
634 WHERE Location_Id = v_ship_loc_id;
635
636 CURSOR fetch_book_id_cur
637 IS
638 SELECT set_of_books_id
639 FROM org_organization_definitions
640 WHERE operating_unit = v_org_id;
641 CURSOR cur_get_curr_code IS
642 SELECT
643 sob.currency_code
644 FROM
645 financials_system_params_all FSP, gl_sets_of_books SOB
646 WHERE
647 FSP.set_of_books_id = SOB.set_of_books_id
648 AND FSP.org_id = v_org_id ;
649
650 BEGIN
651
652 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
653 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
654 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'prec_po_line.po_line_id:'||to_char(nvl(prec_po_line.po_line_id,0))||'line_location_id:'||to_char(nvl(prec_po_location.line_location_id,0)));
655 END IF;
656
657 /*Populate values to variables*/
658 IF prec_po_line.po_line_id IS NOT NULL THEN -- logic from JAI_PO_LA_TRIGGER_PKG. ARI_T1
659 --only v_type_lookup_code = 'BLANKET' OR v_quot_class_code = 'CATALOG' for insert action will enter
660 v_po_hdr_id := prec_po_line.po_header_id;
661 v_po_line_id := prec_po_line.po_line_id;
662 v_item_id := prec_po_line.item_id;
663 v_from_line_id := prec_po_line.from_line_id;
664 v_uom_measure := prec_po_line.Unit_Meas_Lookup_Code;
665 v_price := prec_po_line.UNIT_PRICE;
666 v_cre_dt := prec_po_line.Creation_Date;
667 v_cre_by := prec_po_line.Created_By;
668 v_last_upd_dt := prec_po_line.Last_Update_Date ;
669 v_last_upd_by := prec_po_line.Last_Updated_By;
670 v_last_upd_login:= prec_po_line.Last_Update_Login;
671
672 ELSIF prec_po_location.line_location_id IS NOT NULL THEN
673 v_po_hdr_id := prec_po_location.po_header_id;
674 v_po_line_id := prec_po_location.po_line_id;
675 v_line_loc_id := prec_po_location.line_location_id;
676 v_from_line_loc_id := prec_po_location.From_Line_Location_Id;
677 v_from_line_id := prec_po_location.From_Line_Id;
678 v_uom_measure := prec_po_location.Unit_Meas_Lookup_Code;
679 v_qty := prec_po_location.Quantity;
680 v_price := prec_po_location.Price_Override;
681 v_shipment_type := prec_po_location.SHIPMENT_TYPE;
682 v_src_ship_id := prec_po_location.Source_Shipment_Id;
683 v_po_rel_id := prec_po_location.Po_Release_Id;
684 v_org_id := prec_po_location.org_id;
685 v_cre_dt := prec_po_location.Creation_Date;
686 v_cre_by := prec_po_location.Created_By;
687 v_last_upd_dt := prec_po_location.Last_Update_Date ;
688 v_last_upd_by := prec_po_location.Last_Updated_By;
689 v_last_upd_login:= prec_po_location.Last_Update_Login;
690
691 OPEN c_line_info(v_po_line_id);
692 FETCH c_line_info INTO v_item_id;
693 CLOSE c_line_info;
694 END IF;
695 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
696 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'after value assignment');
697 END IF;
698
699 /*Get values from PO header*/
700 IF prec_po_header.po_header_id IS NOT NULL THEN--Added by Wenqiong for bug16288154 begin
701 v_type_lookup_code := prec_po_header.Type_Lookup_Code;
702 v_quot_class_code := prec_po_header.Quotation_Class_Code;
703 v_vendor_id := prec_po_header.vendor_id;
704 v_vendor_site_id := prec_po_header.vendor_site_id;
705 v_currency := prec_po_header.Currency_Code;
706 v_ship_loc_id := prec_po_header.Ship_To_Location_Id;
707 v_conv_rate_type := prec_po_header.rate_type;
708 v_conv_rate_date := prec_po_header.rate_date;
709 v_conv_rate := prec_po_header.rate;
710 ELSE--Added by Wenqiong for bug16288154 end
711 OPEN Check_Rfq_Quot_Cur(v_po_hdr_id);
712 FETCH Check_Rfq_Quot_Cur INTO v_type_lookup_code,v_quot_class_code,v_vendor_id, v_vendor_site_id,v_currency,v_ship_loc_id
713 ,v_conv_rate_type, v_conv_rate_date, v_conv_rate;
714 CLOSE Check_Rfq_Quot_Cur;
715
716 END IF;
717
718 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
719 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'Get values from PO header:'||'v_type_lookup_code:'||v_type_lookup_code
720 ||'v_quot_class_code:'||v_quot_class_code);
721 END IF;
722 OPEN fetch_uomcode_cur;
723 FETCH fetch_uomcode_cur INTO v_uom_code;
724 CLOSE fetch_uomcode_cur;
725 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
726 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'Get v_uom_code:'||'v_uom_code:'||v_uom_code);
727 END IF;
728
729 OPEN Fetch_Org_Id_Cur;
730 FETCH Fetch_Org_Id_Cur INTO v_inv_org_id;
731 CLOSE Fetch_Org_Id_Cur;
732
733
734 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
735 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'Get v_org_id:'||'v_org_id:'||to_char(v_org_id));
736 END IF;
737 v_currency_conv_rate := get_currency_conv_rate (v_inv_org_id => v_inv_org_id,
738 v_currency => v_currency,
739 v_rate_date => v_conv_rate_date,
740 v_rate_type => v_conv_rate_type,
741 v_rate => v_conv_rate);
742 v_default_curr := get_func_currency(v_inv_org_id);
743 /*Get tax_modifiable flag*/
744 ln_line_loc_id := v_line_loc_id;
745 ln_line_id := v_po_line_id;
746
747 IF v_quot_class_code = 'CATALOG' THEN
748 IF v_from_line_loc_id IS NOT NULL THEN
749 ln_line_loc_id := v_from_line_loc_id;
750 ELSIF v_from_line_id IS NOT NULL THEN
751 ln_line_id := v_from_line_id;
752 END IF;
753 END IF;
754
755 IF ln_line_loc_id IS NOT NULL THEN
756 OPEN c_line_loc_tax_flag(ln_line_loc_id);
757 FETCH c_line_loc_tax_flag INTO v_tax_modified_flag;
758 CLOSE c_line_loc_tax_flag;
759 ELSIF ln_line_id IS NOT NULL THEN
760 OPEN c_line_tax_modified_flag(ln_line_id);
761 FETCH c_line_tax_modified_flag INTO v_tax_modified_flag;
762 CLOSE c_line_tax_modified_flag;
763 END IF;
764
765 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
766 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'Get v_tax_modified_flag:'||'v_tax_modified_flag:'||nvl(v_tax_modified_flag,'N'));
767 END IF;
768
769 IF v_line_loc_id IS NOT NULL AND nvl(v_tax_modified_flag,'N') = 'Y' THEN
770 --jai_po_tax_pkg.cal_tax called in LLA while jai_po_tax_pkg.calculate_tax is called in HA
771 /*calculate av and VAT av*/
772 get_assessable_value(
773 pn_vendor_id => v_vendor_id
774 ,pn_vendor_site_id => v_vendor_site_id
775 ,pn_item_id => v_item_id
776 ,pn_price => v_price
777 ,pn_qty => v_qty
778 ,pv_uom_code => v_uom_code
779 ,pn_po_hdr_id => v_po_hdr_id
780 ,pv_currency => v_currency
781 ,pv_action => JAI_CONSTANTS.updating
782 ,pn_conv_rate => v_currency_conv_rate
783 ,pn_assessable_value => v_assessable_value
784 ,pn_vat_assess_value => v_vat_assess_value
785 );
786
787 OPEN c_old_qty(v_line_loc_id);
788 FETCH c_old_qty INTO v_old_qty;
789 CLOSE c_old_qty;
790
791 IF v_old_qty IS NULL OR v_old_qty = 0 THEN
792 v_old_qty := 1;
793 END IF;
794
795 UPDATE JAI_PO_TAXES a
796 SET tax_amount = (tax_amount * v_qty/ v_old_qty ),
797 tax_target_amount = (tax_target_amount * v_qty/ v_old_qty)
798 WHERE line_location_id = v_line_loc_id
799 AND EXISTS (select 1 from JAI_CMN_TAXES_ALL b where b.tax_id = a.tax_id and b.adhoc_flag = 'Y');
800
801
802 insert_jai_line_locs(
803 v_line_loc_id => v_line_loc_id
804 ,v_po_hdr_id => v_po_hdr_id
805 ,v_po_line_id => v_po_line_id
806 ,v_cre_dt => v_cre_dt
807 ,v_cre_by => v_cre_by
808 ,v_last_upd_dt => v_last_upd_dt
809 ,v_last_upd_by => v_last_upd_by
810 ,v_last_upd_login => v_last_upd_login
811 ,flag => 'U'
812 ,v_item_id => v_item_id
813 ,v_vendor_id => v_vendor_id
814 ,v_vendor_site_id => v_vendor_site_id
815 ,v_qty => v_qty
816 ,v_price_override => v_price
817 ,v_currency => v_currency
818 ,v_line_focus_id => v_line_focus_id
819 );
820
821 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
822 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'before calc_tax:'||'v_po_hdr_id:'||to_char(v_po_hdr_id)||'v_po_line_id:'||to_char(v_po_line_id)
823 ||'v_line_loc_id:'||to_char(v_line_loc_id)||'v_line_focus_id:'||to_char(v_line_focus_id)||'v_qty:'||to_char(v_qty)||'base_value:'||to_char(v_price*v_qty)||'v_assessable_value:'||to_char(v_assessable_value)||'v_vat_assess_value:'
824 ||to_char(v_vat_assess_value)||'v_default_curr:'||v_default_curr||'v_currency:'||v_currency
825 ||'p_line_quantity,'||v_qty||'p_base_value'||v_price*v_qty||'p_line_uom_code,'||v_uom_code||'p_tax_amount,'||nvl(v_tax_amount,0)||
826 'v_item_id'||v_item_id||'v_currency_conv_rate'|| 1/v_currency_conv_rate||'p_func_curr'||v_default_curr);
827
828 END IF;
829
830 jai_po_tax_pkg.calc_tax(
831 p_type => 'STANDARDPO',
832 p_header_id => v_po_hdr_id,
833 P_line_id => v_po_line_id,
834 p_line_location_id => v_line_loc_id,
835 p_line_focus_id => v_line_focus_id,
836 p_line_quantity => v_qty,
837 p_base_value => v_price*v_qty,
838 p_line_uom_code => v_uom_code,
839 p_tax_amount => v_tax_amount,
840 p_assessable_value => v_assessable_value,
841 p_vat_assess_value => v_vat_assess_value,
842 p_item_id => v_item_id,
843 p_conv_rate => 1/v_currency_conv_rate,
844 p_po_curr => v_currency,
845 p_func_curr => v_default_curr
846 , pv_retroprice_changed => pv_retro_price_flag
847 );
848
849 ELSIF v_shipment_type IN ( 'SCHEDULED', 'BLANKET' ) AND nvl(v_tax_modified_flag,'N') = 'N' THEN
850 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
851
852 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'process_release_shipment for v_shipment_type:'||v_shipment_type);
853 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'process_release_shipment,parameters:v_src_ship_id,'||v_src_ship_id||'v_line_loc_id,'||v_line_loc_id
854 ||'v_po_line_id,'||v_po_line_id||'v_po_hdr_id,'||v_po_hdr_id||'v_qty,'||v_qty||'v_po_rel_id,'||v_po_rel_id);
855 END IF;
856 delete_po_taxes(pn_po_line_id =>v_po_line_id, pn_line_loc_id => v_line_loc_id);
857 delete_jai_po_lines(pn_line_loc_id => v_line_loc_id);
858 copy_agreement_taxes(
859 p_src_ship_id => v_src_ship_id
860 ,p_qty => v_qty
861 ,p_hdr_id => v_po_hdr_id
862 ,p_line_id => v_po_line_id
863 ,p_line_loc_id => v_line_loc_id
864 ,p_ship_type => v_shipment_type
865 ,p_cre_dt => v_cre_dt
866 ,p_cre_by => v_cre_by
867 ,p_last_upd_dt => v_last_upd_dt
868 ,p_last_upd_by => v_last_upd_by
869 ,p_last_upd_login => v_last_upd_login
870 ,pv_retroprice_changed => pv_retro_price_flag
871 );
872
873 ELSE
874 IF v_type_lookup_code = 'BLANKET' OR v_quot_class_code = 'CATALOG' THEN
875 if ln_line_loc_id is null then
876 flag := 'INSLINES';
877 else
878 flag := 'I';
879 end if;
880
881 ELSE
882 flag := 'I';
883 END IF;
884 /*calculate av and VAT av*/
885 get_assessable_value(
886 pn_vendor_id => v_vendor_id
887 ,pn_vendor_site_id => v_vendor_site_id
888 ,pn_item_id => v_item_id
889 ,pn_price => v_price
890 ,pn_qty => v_qty
891 ,pv_uom_code => v_uom_code
892 ,pn_po_hdr_id => v_po_hdr_id
893 ,pv_currency => v_currency
894 ,pv_action => JAI_CONSTANTS.inserting
895 ,pn_conv_rate => v_currency_conv_rate
896 ,pn_assessable_value => v_assessable_value
897 ,pn_vat_assess_value => v_vat_assess_value
898 );
899
900 IF nvl(ln_line_loc_id,0) > 0 THEN
901 delete_po_taxes(pn_po_line_id =>v_po_line_id, pn_line_loc_id => v_line_loc_id);
902 delete_jai_po_lines(pn_line_loc_id => v_line_loc_id);
903 ELSE
904 delete_po_taxes(pn_po_line_id =>v_po_line_id);
905 delete_jai_po_lines(pn_line_id =>v_po_line_id);
906 END IF;
907 insert_jai_line_locs(
908 v_line_loc_id => v_line_loc_id
909 ,v_po_hdr_id => v_po_hdr_id
910 ,v_po_line_id => v_po_line_id
911 ,v_cre_dt => v_cre_dt
912 ,v_cre_by => v_cre_by
913 ,v_last_upd_dt => v_last_upd_dt
914 ,v_last_upd_by => v_last_upd_by
915 ,v_last_upd_login => v_last_upd_login
916 ,flag => 'I'
917 ,v_item_id => v_item_id
918 ,v_vendor_id => v_vendor_id
919 ,v_vendor_site_id => v_vendor_site_id
920 ,v_qty => v_qty
921 ,v_price_override => v_price
922 ,v_currency => v_currency
923 ,v_line_focus_id => v_line_focus_id
924 );
925
926 process_po_taxes(
927 v_type_lookup_code => v_Type_Lookup_Code
928 ,v_quot_class_code => v_Quot_Class_Code
929 ,v_vendor_id => v_vendor_id
930 ,v_vendor_site_id => v_Vendor_Site_Id
931 ,v_currency => v_currency
932 ,v_org_id => v_inv_org_id
933 ,v_item_id => v_item_id
934 ,v_uom_code => v_uom_code
935 ,v_line_loc_id => v_line_loc_id
936 ,v_po_hdr_id => v_po_hdr_id
937 ,v_po_line_id => v_po_line_id
938 ,v_frm_po_line_id => v_from_line_id
939 ,v_frm_line_loc_id => v_from_line_loc_id
940 ,v_price => v_price
941 ,v_qty => v_qty
942 ,v_cre_dt => v_cre_dt
943 ,v_cre_by => v_cre_by
944 ,v_last_upd_dt => v_last_upd_dt
945 ,v_last_upd_by => v_last_upd_by
946 ,v_last_upd_login => v_last_upd_login
947 ,flag => flag
948 ,pn_assessable_value => v_assessable_value
949 ,pn_vat_assess_value => v_vat_assess_value
950 ,pn_conv_rate => v_currency_conv_rate
951 ,p_tax_category_id => NULL
952 ,pv_retroprice_changed => pv_retro_price_flag
953 );
954 END IF;
955 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
956 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
957 END IF;
958 EXCEPTION
959 WHEN OTHERS THEN
960
961
962 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
963 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
964 END IF;
965 END process_po_tax_wrapper;
966 /*
967 REM +======================================================================+
968 REM Created By : Wenqiong Zhou
969 REM Creation Date : Jun 1, 2012
970 REM Bug Number/ER Name : 14040855/JAI Triggers Elimination
971 REM SubProgram Name : copy_source_taxes
972 REM Type : processing API
973 REM Purpose : Copy Document for defaulting taxes in Quotation to PO and PO to PO.
974 REM The main code is like jai_po_tax_pkg.copy_source_taxes.
975 REM TDD Reference :
976 REM
977 REM Assumptions :
978 REM
979 REM Parameter IN/OUT Type Required Description and Purpose
980 REM ----------------------- ------ ------------ ---------- ------------------------------------
981 REM p_type IN VARCHAR2 Y Indiate copy at line level or shipment level
982 REM p_po_hdr_id IN NUMBER Y PO header id
983 REM p_po_line_id IN NUMBER Y PO line id
984 REM p_po_line_loc_id IN NUMBER Y PO shipment line id
985 REM p_line_num IN NUMBER N PO line number
986 REM p_ship_num IN NUMBER N PO shipment number
987 REM p_item_id IN NUMBER Y Item id
988 REM p_from_hdr_id IN NUMBER Y PO header id which copy from
989 REM p_from_type_lookup_code IN VARCHAR2 Y type code of PO which copy from
990 REM p_cre_dt IN DATE Y creation date
991 REM p_cre_by IN NUMBER Y created by
992 REM p_last_upd_dt IN DATE Y last update date
993 REM p_last_upd_by IN NUMBER Y last update by
994 REM p_last_upd_login IN NUMBER Y last update login
995 REM CALLED BY
996 REM process_po_line, process_po_shipment_line
997 REM +================================================================================================+
998 */
999 PROCEDURE copy_source_taxes (
1000 p_type VARCHAR2,
1001 p_po_hdr_id NUMBER,
1002 p_po_line_id NUMBER,
1003 p_po_line_loc_id NUMBER,
1004 p_line_num NUMBER,
1005 p_ship_num NUMBER,
1006 p_item_id NUMBER,
1007 p_from_hdr_id NUMBER,
1008 p_from_type_lookup_code VARCHAR2,
1009 p_source_line_id NUMBER,
1010 p_source_loc_id NUMBER,
1011 p_cre_dt DATE,
1012 p_cre_by NUMBER,
1013 p_last_upd_dt DATE,
1014 p_last_upd_by NUMBER,
1015 p_last_upd_login NUMBER
1016 ) IS
1017 l_api_name CONSTANT VARCHAR2(30) := 'copy_source_taxes';
1018 v_ln_loc_id NUMBER := p_source_loc_id;
1019 v_line_id NUMBER := p_source_line_id;
1020 v_vendor_id number;
1021 v_vendor_site_id number;
1022 v_service_type_code varchar2(30);
1023
1024 /* move to function get_line_loc_id since mutating error.
1025 -- Cursor definition for picking line_location_id from po_line_locations_all
1026 CURSOR Fetch_Line_Loc_Id_Cur IS
1027 SELECT jpll.Line_Location_Id
1028 FROM po_line_locations_all plla, JAI_PO_LINE_LOCATIONS jpll,
1029 po_lines_all pla, po_headers_all pha
1030 WHERE pha.po_header_id = pla.po_header_id
1031 AND jpll.line_location_id = plla.line_location_id
1032 AND pha.po_header_id = plla.po_header_id
1033 AND pla.po_line_id = plla.po_line_id
1034 AND pha.po_header_id = p_from_hdr_id
1035 AND pla.line_num = p_line_num
1036 AND pla.item_id = p_item_id
1037 AND plla.shipment_num = p_ship_num;*/
1038
1039 /* move to function get_line_id since mutating error.
1040 -- Cursor definition for picking po_line_id from po_lines_all
1041 CURSOR fetch_line_id_cur IS
1042 SELECT pla.Po_Line_Id
1043 FROM po_lines_all pla, po_headers_all pha
1044 WHERE pha.Po_Header_Id = p_from_hdr_id
1045 AND pla.line_num = p_line_num
1046 AND pha.po_header_id =pla.po_header_id;*/
1047
1048 -- Cursor definition for picking values from JAI_PO_LINE_LOCATIONS
1049 CURSOR fetch_jain_line_cur IS
1050 SELECT line_location_id, po_line_id, po_header_id, item_id,tax_modified_flag,
1051 tax_amount, total_amount, line_focus_id, creation_date,
1052 created_by, last_update_date, last_updated_by, last_update_login,
1053 tax_category_id ,quantity,PRICE_OVERRIDE, currency -- cbabu for EnhancementBug# 2427465
1054 FROM JAI_PO_LINE_LOCATIONS
1055 WHERE Po_Line_Id = v_line_id
1056 AND po_header_id = p_from_hdr_id
1057 AND ( line_location_id IS NULL
1058 OR line_location_id = 0 );
1059
1060 -- Cursor definition for picking values from JAI_PO_TAXES
1061 CURSOR fetch_jain_line_tax_cur IS
1062 SELECT line_location_id,
1063 tax_line_no,
1064 po_line_id,
1065 po_header_id,
1066 precedence_1,
1067 precedence_2,
1068 precedence_3,
1069 precedence_4,
1070 precedence_5,
1071 precedence_6,
1072 precedence_7,
1073 precedence_8,
1074 precedence_9,
1075 precedence_10,
1076 tax_id,
1077 currency,
1078 tax_rate,
1079 qty_rate,
1080 uom,
1081 tax_amount,
1082 tax_type,
1083 vendor_id,
1084 modvat_flag,
1085 tax_target_amount,
1086 line_focus_id,
1087 creation_date,
1088 created_by,
1089 last_update_date,
1090 last_updated_by,
1091 last_update_login,
1092 tax_category_id
1093 FROM JAI_PO_TAXES
1094 WHERE Po_Line_Id = v_line_id
1095 AND po_header_id = p_from_hdr_id
1096 AND ( line_location_id IS NULL
1097 OR line_location_id = 0 );
1098
1099 -- Cursor definition for picking values from JAI_PO_LINE_LOCATIONS
1100 CURSOR Fetch_Ja_In_Po_Ln_Loc_Cur IS
1101 SELECT line_location_id, po_line_id, po_header_id, tax_modified_flag,
1102 tax_amount, total_amount, line_focus_id, creation_date,
1103 created_by, last_update_date, last_updated_by, last_update_login,
1104 tax_category_id,item_id, quantity,PRICE_OVERRIDE,currency
1105 FROM JAI_PO_LINE_LOCATIONS
1106 WHERE Line_Location_Id = v_ln_loc_id;
1107
1108 -- Cursor definition for picking values from JAI_PO_TAXES
1109 -- using line_location_id as where clause
1110 CURSOR fetch_po_ln_loc_tax_cur IS
1111 SELECT line_location_id,
1112 tax_line_no,
1113 po_line_id,
1114 po_header_id,
1115 precedence_1,
1116 precedence_2,
1117 precedence_3,
1118 precedence_4,
1119 precedence_5,
1120 precedence_6,
1121 precedence_7,
1122 precedence_8,
1123 precedence_9,
1124 precedence_10,
1125 tax_id,
1126 currency,
1127 tax_rate,
1128 qty_rate,
1129 uom,
1130 tax_amount,
1131 tax_type,
1132 vendor_id,
1133 modvat_flag,
1134 tax_target_amount,
1135 line_focus_id,
1136 creation_date,
1137 created_by,
1138 last_update_date,
1139 last_updated_by,
1140 last_update_login,
1141 tax_category_id
1142 FROM JAI_PO_TAXES
1143 WHERE Line_Location_Id = v_ln_loc_id;
1144
1145 cursor fetch_vendor_id_cur IS
1146 select vendor_id,vendor_site_id
1147 from po_headers_all
1148 where po_header_id=p_po_hdr_id;
1149
1150
1151 fetch_ja_in_po_ln_loc_rec FETCH_JA_IN_PO_LN_LOC_CUR%ROWTYPE;
1152 v_seq_val JAI_PO_LINE_LOCATIONS.line_focus_id%TYPE;
1153
1154 BEGIN
1155
1156 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1157 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
1158 END IF;
1159 /* OPEN Fetch_Line_Loc_Id_Cur;
1160 FETCH Fetch_Line_Loc_Id_Cur INTO v_ln_loc_id ;
1161 CLOSE Fetch_Line_Loc_Id_Cur;*/
1162 -- v_ln_loc_id := get_line_loc_id(p_from_hdr_id ,p_line_num ,p_item_id , p_ship_num);
1163
1164 /* OPEN Fetch_Line_Id_Cur;
1165 FETCH Fetch_Line_Id_Cur INTO v_line_id;
1166 CLOSE Fetch_Line_Id_Cur;*/
1167 /* v_line_id := get_line_id(p_from_hdr_id ,p_line_num); Commented out since no use for v_line_id*/
1168
1169 open fetch_vendor_id_cur;
1170 fetch fetch_vendor_id_cur into v_vendor_id, v_vendor_site_id;
1171 close fetch_vendor_id_cur;
1172
1173
1174 v_service_type_code :=jai_ar_rctla_trigger_pkg.get_service_type(v_vendor_id,v_vendor_site_id,'V');
1175
1176 IF p_type = 'L' THEN--It's for copy from quotation to po. L means from line level.
1177
1178 FOR rec1 in Fetch_Jain_Line_Cur LOOP
1179
1180 insert_jai_line_locs(
1181 v_line_loc_id => p_po_line_loc_id
1182 ,v_po_hdr_id => p_po_hdr_id
1183 ,v_po_line_id => p_po_line_id
1184 ,v_cre_dt => p_cre_dt
1185 ,v_cre_by => p_cre_by
1186 ,v_last_upd_dt => p_last_upd_dt
1187 ,v_last_upd_by => p_last_upd_by
1188 ,v_last_upd_login => p_last_upd_login
1189 ,flag => 'I'
1190 ,v_item_id => rec1.item_id
1191 ,v_vendor_id => v_vendor_id
1192 ,v_vendor_site_id => v_vendor_site_id
1193 ,v_price_override => rec1.PRICE_OVERRIDE
1194 ,v_qty => rec1.quantity
1195 ,v_tax_modified_flag => 'Y'
1196 ,v_tax_category_id => rec1.tax_category_id
1197 ,v_tax_amount => rec1.tax_amount
1198 ,v_total_amount => rec1.total_amount
1199 ,v_currency => rec1.currency
1200 ,v_line_focus_id => v_seq_val
1201 );
1202
1203
1204 END LOOP;
1205
1206 FOR rec2 in Fetch_Jain_Line_Tax_Cur LOOP
1207 insert_po_taxes
1208 ( p_from_type_lookup_code, NULL,
1209 v_seq_val, p_po_line_loc_id,
1210 rec2.tax_line_no, p_po_line_id, p_po_hdr_id,
1211 rec2.precedence_1, rec2.precedence_2, rec2.precedence_3,
1212 rec2.precedence_4, rec2.precedence_5,
1213 rec2.precedence_6, rec2.precedence_7, rec2.precedence_8,
1214 rec2.precedence_9, rec2.precedence_10,
1215 rec2.tax_id, NULL, 0, rec2.currency,
1216 rec2.tax_rate, rec2.qty_rate, rec2.uom,
1217 rec2.tax_amount , rec2.tax_type, rec2.modvat_flag,
1218 rec2.vendor_id, rec2.tax_target_amount ,
1219 p_cre_dt, p_cre_by, p_last_upd_dt,
1220 p_last_upd_by, p_last_upd_login,
1221 rec2.tax_category_id
1222 );
1223 END LOOP;
1224
1225 ELSIF p_type = 'S' THEN --It's for copy from po to po. S means from shipment line level.
1226
1227 IF v_ln_loc_id IS NOT NULL THEN
1228
1229 OPEN Fetch_Ja_In_Po_Ln_Loc_Cur ;
1230 FETCH Fetch_Ja_In_Po_Ln_Loc_Cur INTO Fetch_Ja_In_Po_Ln_Loc_Rec;
1231
1232
1233 insert_jai_line_locs(
1234 v_line_loc_id => p_po_line_loc_id
1235 ,v_po_hdr_id => p_po_hdr_id
1236 ,v_po_line_id => p_po_line_id
1237 ,v_cre_dt => p_cre_dt
1238 ,v_cre_by => p_cre_by
1239 ,v_last_upd_dt => p_last_upd_dt
1240 ,v_last_upd_by => p_last_upd_by
1241 ,v_last_upd_login => p_last_upd_login
1242 ,flag => 'I'
1243 ,v_item_id => fetch_ja_in_po_ln_loc_rec.item_id
1244 ,v_vendor_id => v_vendor_id
1245 ,v_vendor_site_id => v_vendor_site_id
1246 ,v_price_override => fetch_ja_in_po_ln_loc_rec.PRICE_OVERRIDE
1247 ,v_qty => fetch_ja_in_po_ln_loc_rec.quantity
1248 ,v_tax_modified_flag => 'Y'
1249 ,v_tax_category_id => fetch_ja_in_po_ln_loc_rec.tax_category_id
1250 ,v_tax_amount => fetch_ja_in_po_ln_loc_rec.tax_amount
1251 ,v_total_amount => fetch_ja_in_po_ln_loc_rec.total_amount
1252 ,v_currency => fetch_ja_in_po_ln_loc_rec.currency
1253 ,v_line_focus_id => v_seq_val
1254 );
1255
1256 CLOSE Fetch_Ja_In_Po_Ln_Loc_Cur;
1257
1258 FOR rec in Fetch_Po_Ln_Loc_Tax_Cur LOOP
1259 insert_po_taxes
1260 ( p_from_type_lookup_code, NULL,
1261 v_seq_val, p_po_line_loc_id,
1262 rec.tax_line_no, p_po_line_id, p_po_hdr_id,
1263 rec.precedence_1, rec.precedence_2, rec.precedence_3,
1264 rec.precedence_4, rec.precedence_5,
1265 rec.precedence_6, rec.precedence_7, rec.precedence_8,
1266 rec.precedence_9, rec.precedence_10,
1267 rec.tax_id, NULL, 0, rec.currency,
1268 rec.tax_rate, rec.qty_rate, rec.uom,
1269 rec.tax_amount , rec.tax_type, rec.modvat_flag,
1270 rec.vendor_id, rec.tax_target_amount ,
1271 p_cre_dt, p_cre_by, p_last_upd_dt,
1272 p_last_upd_by, p_last_upd_login,
1273 rec.tax_category_id
1274 );
1275 END LOOP;
1276
1277 END IF;
1278 END IF;
1279
1280 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1281 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
1282 END IF;
1283 EXCEPTION
1284 WHEN OTHERS THEN
1285
1286
1287 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
1288 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
1289 END IF;
1290 app_exception.raise_exception;
1291
1292
1293 END copy_source_taxes;
1294
1295 -----------------------------------------------------------------------
1296 -- PUBLIC PROCEDURE
1297 -- copy_quot_taxes
1298 --
1299 -- DESCRIPTION
1300 --
1301 --
1302 -- CALLED BY
1303 -- process_po_line, process_po_shipment_line
1304 -----------------------------------------------------------------------
1305 /*
1306 REM +======================================================================+
1307 REM Created By : Wenqiong Zhou
1308 REM Creation Date : Jun 1, 2012
1309 REM Bug Number/ER Name : 14040855/JAI Triggers Elimination
1310 REM SubProgram Name : copy_quot_taxes
1311 REM Type : processing API
1312 REM Purpose : Processing PO's tax defaultatin for the PO which
1313 REM has been linked by a quotation, copy taxes from quotation.
1314 REM The main code is like jai_po_tax_pkg.copy_quot_taxes.
1315 REM TDD Reference :
1316 REM
1317 REM Assumptions :
1318 REM
1319 REM Parameter IN/OUT Type Required Description and Purpose
1320 REM ----------------------- ------ ------------ ---------- ------------------------------------
1321 REM p_line_loc_id IN NUMBER Y PO shipment line id
1322 REM p_po_hdr_id IN NUMBER Y PO header id
1323 REM p_po_line_id IN NUMBER Y PO line id
1324 REM p_qty IN NUMBER N Quantity of item
1325 REM p_frm_hdr_id IN NUMBER Y PO header id which copy from
1326 REM p_frm_line_id IN NUMBER Y PO line id which copy from
1327 REM p_price IN NUMBER Y price of item
1328 REM p_unit_code IN VARCHAR2 Y Unit code of item
1329 REM p_cre_dt IN DATE Y creation date
1330 REM p_cre_by IN NUMBER Y created by
1331 REM p_last_upd_dt IN DATE Y last update date
1332 REM p_last_upd_by IN NUMBER Y last update by
1333 REM p_last_upd_login IN NUMBER Y last update login
1334 REM CALLED BY
1335 REM process_po_line, process_po_shipment_line
1336 REM +================================================================================================+
1337 */
1338 PROCEDURE copy_quot_taxes
1339 (
1340 p_line_loc_id IN NUMBER,
1341 p_po_hdr_id IN NUMBER,
1342 p_po_line_id IN NUMBER,
1343 p_item_id IN NUMBER,--Added by Wenqiong for avoid trigger mutating
1344 p_qty IN NUMBER,
1345 p_frm_hdr_id IN NUMBER,
1346 p_frm_line_id IN NUMBER,
1347 p_price IN NUMBER,
1348 p_unit_code IN VARCHAR2,
1349 p_cre_dt IN DATE,
1350 p_cre_by IN NUMBER,
1351 p_last_upd_dt IN DATE,
1352 p_last_upd_by IN NUMBER,
1353 p_last_upd_login IN NUMBER,
1354 p_call_from IN VARCHAR2
1355 )
1356 IS
1357 l_api_name CONSTANT VARCHAR2(30) := 'copy_quot_taxes';
1358 v_quot_line_loc_id NUMBER;
1359 v_line_focus_id NUMBER;
1360
1361 v_tax_amt NUMBER;
1362 dummy NUMBER;
1363
1364 v_vendor_id po_headers_all.vendor_id%TYPE;
1365 v_vendor_site_id po_headers_all.vendor_site_id%TYPE;
1366 v_currency po_headers_all.currency_code%TYPE;
1367 v_item_id po_lines_all.item_id%TYPE;
1368 v_assessable_value NUMBER;
1369 v_vat_assess_value NUMBER;
1370 v_tax_category_id_holder JAI_PO_LINE_LOCATIONS.tax_category_id%TYPE;
1371
1372 ------------------------------>
1373
1374 CURSOR tax_cur IS
1375 SELECT a.Po_Line_Id, a.tax_line_no, a.tax_id,
1376 a.precedence_1,
1377 a.precedence_2,
1378 a.precedence_3,
1379 a.precedence_4,
1380 a.precedence_5,
1381 a.precedence_6,
1382 a.precedence_7,
1383 a.precedence_8,
1384 a.precedence_9,
1385 a.precedence_10,
1386 a.currency, a.tax_rate, a.qty_rate, a.uom, a.tax_amount, a.tax_type,
1387 a.vendor_id, a.modvat_flag,
1388 tax_category_id
1389 FROM JAI_PO_TAXES a
1390 WHERE ((a.line_location_id IS NULL AND v_quot_line_loc_id=-999) OR (a.line_location_id = v_quot_line_loc_id))
1391 AND Po_Line_Id = p_frm_line_id
1392 ORDER BY a.tax_line_no;
1393
1394 CURSOR c_line_tax_category_id_1(p_po_line_id IN NUMBER) IS
1395 SELECT tax_category_id
1396 FROM JAI_PO_LINE_LOCATIONS
1397 WHERE po_line_id = p_po_line_id
1398 AND line_location_id IS NULL;
1399
1400 CURSOR c_line_tax_category_id_2(p_po_line_id IN NUMBER, p_line_location_id IN NUMBER) IS
1401 SELECT tax_category_id
1402 FROM JAI_PO_LINE_LOCATIONS
1403 WHERE po_line_id = p_po_line_id
1404 AND line_location_id = p_line_location_id;
1405
1406 CURSOR c_check_adhoc_flag(p_tax_id number) IS
1407 select nvl(adhoc_flag,'N')
1408 from JAI_CMN_TAXES_ALL
1409 where tax_id = p_tax_id;
1410
1411
1412 CURSOR cur_vendor_curr
1413 IS
1414 SELECT vendor_id,vendor_site_id,currency_code
1415 FROM po_headers_all
1416 WHERE po_header_id = p_po_hdr_id;
1417
1418 /* Replace it with separate function since trigger mutating
1419 CURSOR cur_item
1420 IS
1421 SELECT ITEM_ID
1422 FROM po_lines_all
1423 WHERE po_line_id = p_po_line_id;*/
1424
1425 v_check_adhoc_flag JAI_CMN_TAXES_ALL.adhoc_flag%type;
1426 v_tax_amount NUMBER;
1427
1428 BEGIN
1429
1430 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1431 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
1432 END IF;
1433
1434
1435 OPEN cur_vendor_curr;
1436 FETCH cur_vendor_curr INTO v_vendor_id,v_vendor_site_id,v_currency;
1437 CLOSE cur_vendor_curr;
1438
1439 /* OPEN cur_item;
1440 FETCH cur_item INTO v_item_id;
1441 CLOSE cur_item;*/
1442 /* v_item_id := get_item_id(p_po_line_id);*/
1443 v_item_id := p_item_id;
1444 IF nvl(p_call_from,'ZX') = 'TRIGGER' THEN
1445 jai_po_proc_pkg.locate_source_line
1446 ( p_frm_hdr_id,
1447 p_frm_line_id,
1448 p_qty,
1449 dummy,
1450 v_quot_line_loc_id,
1451 p_frm_line_id
1452 );
1453 ELSE
1454 jai_po_cmn_pkg.locate_source_line
1455 ( p_frm_hdr_id,
1456 p_frm_line_id,
1457 p_qty,
1458 dummy,
1459 v_quot_line_loc_id,
1460 p_frm_line_id
1461 );
1462 END IF;
1463 jai_po_proc_pkg.delete_jai_po_lines(pn_line_id=>p_po_line_id);
1464 jai_po_proc_pkg.delete_po_taxes(pn_po_line_id=>p_po_line_id);
1465
1466 insert_jai_line_locs(
1467 v_line_loc_id => p_line_loc_id
1468 ,v_po_hdr_id => p_po_hdr_id
1469 ,v_po_line_id => p_po_line_id
1470 ,v_cre_dt => p_cre_dt
1471 ,v_cre_by => p_cre_by
1472 ,v_last_upd_dt => p_last_upd_dt
1473 ,v_last_upd_by => p_last_upd_by
1474 ,v_last_upd_login => p_last_upd_login
1475 ,flag => 'I'
1476 ,v_item_id => v_item_id
1477 ,v_vendor_id => v_vendor_id
1478 ,v_vendor_site_id => v_vendor_site_id
1479 ,v_price_override => p_price
1480 ,v_qty => p_qty
1481 ,v_currency => v_currency
1482 ,v_line_focus_id => v_line_focus_id
1483 );
1484
1485
1486 FOR rec in tax_cur LOOP
1487 open c_check_adhoc_flag(rec.tax_id);
1488 fetch c_check_adhoc_flag into v_check_adhoc_flag;
1489 close c_check_adhoc_flag;
1490
1491 --If this is an Adhoc Flag, then Tax Amount is to be the same Tax Amount as in Catalog Quotation
1492 --Else Tax Amount is Zero as before.
1493
1494 if v_check_adhoc_flag ='Y' then
1495 v_tax_amount := rec.tax_amount;
1496 else
1497 v_tax_amount := 0;
1498 end if;
1499
1500
1501 insert_po_taxes
1502 ( 'STANDARD', NULL,
1503 v_line_focus_id, p_line_loc_id,
1504 rec.tax_line_no, p_po_line_id, p_po_hdr_id,
1505 rec.precedence_1, rec.precedence_2, rec.precedence_3,
1506 rec.precedence_4, rec.precedence_5,
1507 rec.precedence_6, rec.precedence_7, rec.precedence_8,
1508 rec.precedence_9, rec.precedence_10,
1509 rec.tax_id, NULL, 0, rec.currency,
1510 rec.tax_rate, rec.qty_rate, rec.uom,
1511 rec.tax_amount , rec.tax_type, rec.modvat_flag,
1512 rec.vendor_id, 0 ,
1513 p_cre_dt, p_cre_by, p_last_upd_dt,
1514 p_last_upd_by, p_last_upd_login,
1515 rec.tax_category_id
1516 );
1517
1518 v_tax_category_id_holder := nvl( rec.tax_category_id, v_tax_category_id_holder);
1519
1520 v_check_adhoc_flag :=NULL;
1521 v_tax_amount :=0;
1522 END LOOP;
1523
1524
1525 If v_tax_category_id_holder IS NULL THEN
1526 IF v_quot_line_loc_id = -999 THEN
1527 OPEN c_line_tax_category_id_1(p_frm_line_id);
1528 FETCH c_line_tax_category_id_1 INTO v_tax_category_id_holder;
1529 CLOSE c_line_tax_category_id_1;
1530 ELSE
1531 OPEN c_line_tax_category_id_2(p_frm_line_id, v_quot_line_loc_id);
1532 FETCH c_line_tax_category_id_2 INTO v_tax_category_id_holder;
1533 CLOSE c_line_tax_category_id_2;
1534 END IF;
1535 end if;
1536
1537 UPDATE JAI_PO_LINE_LOCATIONS
1538 SET tax_category_id = v_tax_category_id_holder
1539 WHERE line_focus_id = v_line_focus_id;
1540
1541 /*calculate av and VAT av*/
1542 get_assessable_value(
1543 pn_vendor_id => v_vendor_id
1544 ,pn_vendor_site_id => v_vendor_site_id
1545 ,pn_item_id => v_item_id
1546 ,pn_price => p_price
1547 ,pn_qty => p_qty
1548 ,pv_uom_code => p_unit_code
1549 ,pn_po_hdr_id => p_po_hdr_id
1550 ,pv_currency => v_currency
1551 ,pv_action => JAI_CONSTANTS.updating
1552 ,pn_assessable_value => v_assessable_value
1553 ,pn_vat_assess_value => v_vat_assess_value
1554 );
1555
1556 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1557 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,G_PKG_NAME||': p_po_hdr_id,'||p_po_hdr_id||'p_po_line_id,'||p_po_line_id||'p_line_loc_id,'||p_line_loc_id);
1558 END IF;
1559 jai_po_tax_pkg.calculate_tax(
1560 p_type => 'STANDARDPO'
1561 ,p_header_id => p_po_hdr_id
1562 ,P_line_id => p_po_line_id
1563 ,p_line_loc_id => p_line_loc_id
1564 ,p_line_quantity => p_qty
1565 ,p_price => p_price*p_qty
1566 ,p_line_uom_code => p_unit_code
1567 ,p_tax_amount => v_tax_amt
1568 ,p_assessable_value => v_assessable_value
1569 ,p_vat_assess_value => v_vat_assess_value
1570 ,p_item_id => v_item_id
1571 );
1572 /*jai_po_tax_pkg.calc_tax(
1573 p_type => 'STANDARDPO',
1574 p_header_id => p_po_hdr_id,
1575 P_line_id => p_po_line_id,
1576 p_line_location_id => p_line_loc_id,
1577 p_line_focus_id => v_line_focus_id,
1578 p_line_quantity => p_qty,
1579 p_base_value => p_price*p_qty,
1580 p_line_uom_code => p_unit_code,
1581 p_tax_amount => v_tax_amt,
1582 p_assessable_value => v_assessable_value,
1583 p_vat_assess_value => v_vat_assess_value,
1584 p_item_id => v_item_id,
1585 p_po_curr => v_currency
1586
1587
1588 );*/
1589
1590 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1591 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
1592 END IF;
1593 EXCEPTION
1594 WHEN OTHERS THEN
1595
1596
1597 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
1598 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
1599 END IF;
1600 app_exception.raise_exception;
1601
1602 END copy_quot_taxes;
1603 /*
1604 REM +======================================================================+
1605 REM Created By : Wenqiong Zhou
1606 REM Creation Date : Jun 1, 2012
1607 REM Bug Number/ER Name : 14040855/JAI Triggers Elimination
1608 REM SubProgram Name : process_po
1609 REM Type : processing API
1610 REM Purpose : Processing PO's creation or updation
1611 REM TDD Reference :
1612 REM
1613 REM Assumptions :
1614 REM
1615 REM Parameter IN/OUT Type Required Description and Purpose
1616 REM -------------------- ------ ------------ ---------- ------------------------------------
1617 REM pn_header_id IN NUMBER Y Indiate which PO is processed.
1618 REM pv_action IN VARCHAR2 Y Indiate action is inserting/updating.
1619 REM CALLED BY
1620 REM JAI_TAX_PROCESSING_PKG.calculate_tax
1621 REM +================================================================================================+
1622 */
1623 PROCEDURE process_po (pn_header_id IN Number, pv_action IN VARCHAR2) IS
1624 CURSOR c_po_line IS
1625 SELECT * FROM PO_LINES_ALL
1626 WHERE Po_Header_Id = pn_header_id;
1627
1628 CURSOR c_po_header IS
1629 SELECT * FROM PO_HEADERS_ALL
1630 WHERE po_header_id = pn_header_id;
1631
1632
1633 CURSOR c_old_curr_vendor IS
1634 SELECT DISTINCT currency,vendor_id, vendor_site_id
1635 FROM JAI_PO_LINE_LOCATIONS
1636 WHERE po_header_id = pn_header_id;
1637
1638 CURSOR Line_exist_cur(line_id NUMBER) IS
1639 SELECT 1
1640 FROM JAI_PO_LINE_LOCATIONS
1641 WHERE Po_Line_Id = line_id;
1642
1643 l_api_name CONSTANT VARCHAR2(30) := 'process_po';
1644 lv_action VARCHAR2(10);
1645 r_po_line PO_LINES_ALL%ROWTYPE;
1646 r_po_header PO_HEADERS_ALL%ROWTYPE;
1647
1648 v_old_currency PO_HEADERS_ALL.currency_code%TYPE;
1649 v_old_vendor_id PO_HEADERS_ALL.vendor_id%TYPE;
1650
1651 v_old_vendor_site_id PO_HEADERS_ALL.vendor_site_id%TYPE;
1652
1653
1654 v_curr VARCHAR2(100);
1655 v_Last_Upd_Dt Date;
1656 v_Last_Upd_By Number;
1657 v_Last_Upd_Login Number;
1658 v_line_exists_flag NUMBER;
1659
1660
1661 BEGIN
1662
1663 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1664 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
1665 END IF;
1666 OPEN c_po_header;
1667 FETCH c_po_header INTO r_po_header;
1668 CLOSE c_po_header;
1669
1670
1671 v_last_upd_dt := r_po_header.Last_Update_Date ;
1672 v_last_upd_by := r_po_header.Last_Updated_By;
1673 v_last_upd_login := r_po_header.Last_Update_Login;
1674
1675
1676 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1677 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'pv_action:'||pv_action);
1678 END IF;
1679 IF pv_action = JAI_CONSTANTS.inserting THEN
1680 FOR r_po_line IN c_po_line
1681 LOOP
1682 process_po_line(r_po_line.po_line_id,r_po_header,pv_action);
1683 END LOOP;
1684 ELSIF pv_action = JAI_CONSTANTS.updating THEN
1685
1686 OPEN c_old_curr_vendor;
1687 FETCH c_old_curr_vendor INTO v_old_currency,v_old_vendor_id,v_old_vendor_site_id;
1688 CLOSE c_old_curr_vendor;
1689 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1690 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'v_old_currency:'||v_old_currency||'v_old_vendor_id:'||nvl(v_old_vendor_id,-999)||'v_old_vendor_site_id:'||nvl(v_old_vendor_site_id,-999));
1691 END IF;
1692
1693 /*************************************** Part 1 ********************************************************/
1694 /************************** Processing For Po Currency Changed *************************************/
1695 /*******************************************************************************************************/
1696 IF nvl(v_old_currency,'INR') <> r_po_header.Currency_Code THEN
1697 jai_po_proc_pkg.update_currency(
1698 pn_po_header_id => pn_header_id
1699 ,pv_old_currency => v_old_currency
1700 ,pv_currency => r_po_header.Currency_Code
1701 ,pd_last_upd_dt => v_last_upd_dt
1702 ,pn_last_upd_by => v_last_upd_by
1703 ,pn_last_upd_login => v_last_upd_login
1704 );
1705
1706 END IF;
1707 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1708 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'after po curr changed checking');
1709 END IF;
1710 /*************************************** Part 2 ********************************************************/
1711 /************************** Processing For Po Vendor Changed *************************************/
1712 /*******************************************************************************************************/
1713 IF nvl(v_old_vendor_id,-999) <> nvl(r_po_header.vendor_id,-999) OR ( NVL(v_old_vendor_site_id, -999 ) <> NVL( r_po_header.Vendor_Site_Id, -999 ) ) THEN
1714 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1715 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'after po vendor changed checking');
1716 END IF;
1717 process_vendor_change(
1718 prec_po_header => r_po_header
1719 ,pn_old_vendor_id => v_old_vendor_id);
1720 /* Move to function process_vendor_change.
1721 IF jai_cmn_utils_pkg.validate_po_type(p_style_id => r_po_header.style_id) = FALSE THEN
1722 return;
1723 END IF;
1724
1725
1726 \*For vendor merge case, need update vendor in receipts,
1727 todo, seemed to be removed since vendor merge case will not fire through ZX.
1728 *\
1729 IF v_vendor_id <> v_old_vendor_id then
1730 for c_receipt_rec in
1731 (
1732 select distinct shipment_header_id, shipment_line_id
1733 from rcv_transactions
1734 where po_header_id = v_vendor_id
1735 )
1736 loop
1737 update JAI_RCV_LINE_TAXES
1738 set vendor_id = v_vendor_id
1739 where shipment_header_id = c_receipt_rec.shipment_header_id
1740 and shipment_line_id = c_receipt_rec.shipment_line_id
1741 and vendor_id = v_old_vendor_id;
1742 end loop;
1743 END IF;
1744
1745 FOR Rec IN Lines_Cur LOOP
1746 FOR Rec1 IN Line_Loc_Cur( Rec.Po_Line_Id ) LOOP
1747 v_po_line_id := Rec.po_line_id;
1748 v_line_loc_id := Rec1.Line_Location_Id;
1749
1750 OPEN c_po_line_dtl(Rec.Po_Line_Id);
1751 FETCH c_po_line_dtl INTO r_po_line;
1752 CLOSE c_po_line_dtl;
1753
1754 v_item_id := r_po_line.item_id;
1755
1756 OPEN Fetch_UOMCode_Cur(r_po_line.Unit_Meas_Lookup_Code);
1757 FETCH Fetch_UOMCode_Cur INTO v_uom_code;
1758 CLOSE Fetch_UOMCode_Cur;
1759
1760 OPEN tax_override_flag_cur(v_Vendor_Id,v_Vendor_Site_Id);
1761 FETCH tax_override_flag_cur INTO v_override_flag;
1762 CLOSE tax_override_flag_cur;
1763 \*Only for PO Type Blank and Quotation, line_location_id is null*\
1764 IF NVL( v_line_loc_id, -999 ) = -999 THEN
1765
1766 IF nvl(v_override_flag,'N') = 'Y' THEN
1767 delete_po_taxes(pn_po_hdr_id => pn_header_id);
1768
1769 jai_po_tax_pkg.copy_reqn_taxes
1770 (
1771 v_Vendor_Id ,
1772 v_Vendor_Site_Id,
1773 pn_header_id ,
1774 v_po_line_id,
1775 Rec1.Line_Location_Id,
1776 v_Type_Lookup_Code ,
1777 v_Quot_Class_Code ,
1778 v_Ship_To_Loc_Id ,
1779 v_Org_Id ,
1780 v_Cre_Dt ,
1781 v_Cre_By ,
1782 v_Last_Upd_Dt ,
1783 v_Last_Upd_By ,
1784 v_Last_Upd_Login
1785 ,v_rate
1786 ,v_rate_type
1787 ,v_rate_date
1788 ,v_curr
1789 );
1790 RETURN;
1791 END IF;
1792
1793 jai_po_proc_pkg.process_po_tax_wrapper ( prec_po_line => r_po_line);
1794 ELSE
1795 OPEN PO_Line_loc_cur(v_line_loc_id);
1796 FETCH PO_Line_loc_cur INTO r_po_line_loc;
1797 CLOSE PO_Line_loc_cur;
1798
1799 jai_po_proc_pkg.process_po_tax_wrapper ( prec_po_location => r_po_line_loc);
1800 END IF;
1801 END LOOP;
1802 END LOOP;
1803 jai_po_proc_pkg.update_vendor(
1804 pn_po_header_id => pn_header_id
1805 ,pn_old_vendor_id => v_old_vendor_id
1806 ,pn_vendor_id => v_vendor_id
1807 ,pn_vendor_site_id => v_vendor_site_id
1808 ,pd_last_upd_dt => v_last_upd_dt
1809 ,pn_last_upd_by => v_last_upd_by
1810 ,pn_last_upd_login => v_last_upd_login
1811 );
1812 */
1813 END IF;
1814
1815 FOR r_po_line IN c_po_line
1816 LOOP
1817 v_line_exists_flag := 0;
1818 OPEN Line_exist_cur(r_po_line.po_line_id);
1819 FETCH Line_exist_cur INTO v_line_exists_flag;
1820 CLOSE Line_exist_cur;
1821
1822 IF nvl(v_line_exists_flag,0) = 1 THEN
1823 lv_action := JAI_CONSTANTS.updating;
1824 ELSE
1825 lv_action := JAI_CONSTANTS.inserting;
1826 END IF;
1827 jai_po_proc_pkg.process_po_line(r_po_line.po_line_id,r_po_header,lv_action);
1828
1829 END LOOP;
1830
1831
1832 END IF;
1833 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1834 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
1835 END IF;
1836 EXCEPTION
1837 WHEN OTHERS THEN
1838 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
1839 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
1840 END IF;
1841 app_exception.raise_exception;
1842
1843 END process_po;
1844 /*
1845 REM +==========================================================================================================+
1846 REM Created By : Wenqiong Zhou
1847 REM Creation Date : Jun 1, 2012
1848 REM Bug Number/ER Name : 14040855/JAI Triggers Elimination
1849 REM SubProgram Name : process_po_line
1850 REM Type : processing API
1851 REM Purpose : Processing PO Line's creation or updation
1852 REM TDD Reference :
1853 REM
1854 REM Assumptions :
1855 REM
1856 REM Parameter IN/OUT Type Required Description and Purpose
1857 REM -------------------- ------ ------------------------ ---------- ------------------------------------
1858 REM pn_line_id IN NUMBER Y Indiate which PO line is processed.
1859 REM pr_po_header IN PO_HEADERS_ALL%ROWTYPE N PO header info.
1860 REM pv_action IN VARCHAR2 Y Indiate action is inserting/updating.
1861 REM CALLED BY
1862 REM jai_po_proc_pkg.process_po
1863 REM +=========================================================================================================+
1864 */
1865 PROCEDURE process_po_line (pn_line_id IN NUMBER,pr_po_header IN PO_HEADERS_ALL%ROWTYPE DEFAULT NULL, pv_action IN VARCHAR2) IS
1866
1867 l_api_name CONSTANT VARCHAR2(30) := 'process_po_line';
1868 v_po_line_id NUMBER;
1869 v_po_hdr_id NUMBER;
1870 v_frm_hdr_id NUMBER;
1871 v_frm_po_line_id NUMBER;
1872 v_currency po_headers_all.Currency_Code%TYPE;
1873 v_type_lookup_code po_headers_all.type_lookup_code%TYPE;
1874 v_from_type_lookup_code po_headers_all.from_type_lookup_code%TYPE;
1875 v_quot_class_code po_headers_all.from_type_lookup_code%TYPE;
1876 v_qty NUMBER;
1877 v_price NUMBER;
1878 v_uom_code VARCHAR2(30);
1879 v_line_uom VARCHAR2(30);
1880 v_vendor_id NUMBER;
1881 v_vendor_site_id NUMBER;
1882 v_line_loc_id NUMBER;
1883 v_line_loc_exists NUMBER;
1884 v_hook_value VARCHAR2(10);
1885 v_style_id NUMBER;
1886 v_Cre_Dt Date;
1887 v_Cre_By Number;
1888 v_Last_Upd_Dt Date;
1889 v_Last_Upd_By Number;
1890 v_Last_Upd_Login Number;
1891 v_src_line_id NUMBER;
1892
1893 CURSOR c_po_line IS
1894 SELECT * FROM PO_LINES_ALL
1895 WHERE po_line_id = pn_line_id;
1896
1897 CURSOR po_line_loc_cur IS
1898 SELECT * FROM PO_LINE_LOCATIONS_ALL
1899 WHERE po_line_id = pn_line_id
1900 AND shipment_type NOT IN ( 'SCHEDULED', 'BLANKET' );
1901
1902 CURSOR Fetch_Lines_Cur IS
1903 SELECT Line_location_id, Price_Override, Quantity
1904 FROM Po_Line_Locations_All
1905 WHERE Po_Line_Id = pn_line_id;
1906
1907 CURSOR Fetch_UOMCode_Cur( v_uom IN VARCHAR2 ) IS
1908 SELECT Uom_Code
1909 FROM Mtl_Units_Of_Measure
1910 WHERE Unit_Of_Measure = v_uom;
1911
1912 CURSOR c_get_po_line_loc_details IS
1913 SELECT DISTINCT item_id
1914 FROM JAI_PO_LINE_LOCATIONS
1915 WHERE po_line_id = pn_line_id;
1916
1917 CURSOR c_po_line_loc_exists(cn_line_loc_id NUMBER) IS
1918 SELECT 1
1919 FROM JAI_PO_LINE_LOCATIONS
1920 WHERE Line_Location_Id = cn_line_loc_id;
1921
1922 CURSOR c_po_hdr(cn_po_hdr_id NUMBER) IS
1923 SELECT *
1924 FROM PO_HEADERS_ALL
1925 WHERE po_header_id = cn_po_hdr_id;
1926
1927
1928 -- Cursor definition for picking po_line_id from po_lines_all
1929 CURSOR fetch_line_id_cur(p_from_hdr_id NUMBER, p_line_num NUMBER) IS
1930 SELECT pla.Po_Line_Id
1931 FROM po_lines_all pla, po_headers_all pha
1932 WHERE pha.Po_Header_Id = p_from_hdr_id
1933 AND pla.line_num = p_line_num
1934 AND pha.po_header_id =pla.po_header_id;
1935
1936 r_po_header PO_HEADERS_ALL%ROWTYPE;
1937 r_po_line PO_LINES_ALL%ROWTYPE;
1938 r_po_line_loc PO_LINE_LOCATIONS_ALL%ROWTYPE;
1939 r_jai_po_line_loc c_get_po_line_loc_details%ROWTYPE;
1940
1941 BEGIN
1942
1943 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1944 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
1945 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'po_line_id:'||pn_line_id||'pv_action:'||pv_action);
1946 END IF;
1947
1948
1949 OPEN c_po_line;
1950 FETCH c_po_line INTO r_po_line;
1951 CLOSE c_po_line;
1952 v_po_line_id := r_po_line.Po_Line_Id ;
1953 v_po_hdr_id := r_po_line.Po_Header_Id;
1954 v_frm_hdr_id := r_po_line.From_HEADER_Id;
1955 v_frm_po_line_id := r_po_line.From_Line_Id;
1956 v_qty := r_po_line.QUANTITY;
1957 v_line_uom := r_po_line.Unit_Meas_Lookup_Code;
1958 v_hook_value := 'TRUE';
1959
1960 v_hook_value := jai_cmn_hook_pkg.Ja_In_po_lines_all(
1961 r_po_line.PO_LINE_ID ,
1962 r_po_line.PO_HEADER_ID ,
1963 r_po_line.LINE_TYPE_ID ,
1964 r_po_line.LINE_NUM ,
1965 r_po_line.ITEM_ID ,
1966 r_po_line.ITEM_REVISION ,
1967 r_po_line.CATEGORY_ID ,
1968 r_po_line.ITEM_DESCRIPTION ,
1969 r_po_line.UNIT_MEAS_LOOKUP_CODE ,
1970 r_po_line.QUANTITY_COMMITTED ,
1971 r_po_line.COMMITTED_AMOUNT ,
1972 r_po_line.ALLOW_PRICE_OVERRIDE_FLAG ,
1973 r_po_line.NOT_TO_EXCEED_PRICE ,
1974 r_po_line.LIST_PRICE_PER_UNIT ,
1975 r_po_line.UNIT_PRICE ,
1976 r_po_line.QUANTITY ,
1977 r_po_line.UN_NUMBER_ID ,
1978 r_po_line.HAZARD_CLASS_ID ,
1979 r_po_line.NOTE_TO_VENDOR ,
1980 r_po_line.FROM_HEADER_ID ,
1981 r_po_line.FROM_LINE_ID ,
1982 r_po_line.MIN_ORDER_QUANTITY ,
1983 r_po_line.MAX_ORDER_QUANTITY ,
1984 r_po_line.QTY_RCV_TOLERANCE ,
1985 r_po_line.OVER_TOLERANCE_ERROR_FLAG ,
1986 r_po_line.MARKET_PRICE ,
1987 r_po_line.UNORDERED_FLAG ,
1988 r_po_line.CLOSED_FLAG ,
1989 r_po_line.USER_HOLD_FLAG ,
1990 r_po_line.CANCEL_FLAG ,
1991 r_po_line.CANCELLED_BY ,
1992 r_po_line.CANCEL_DATE ,
1993 r_po_line.CANCEL_REASON ,
1994 r_po_line.FIRM_STATUS_LOOKUP_CODE ,
1995 r_po_line.FIRM_DATE ,
1996 r_po_line.VENDOR_PRODUCT_NUM ,
1997 r_po_line.CONTRACT_NUM ,
1998 r_po_line.TAXABLE_FLAG ,
1999 r_po_line.TAX_NAME ,
2000 r_po_line.TYPE_1099 ,
2001 r_po_line.CAPITAL_EXPENSE_FLAG ,
2002 r_po_line.NEGOTIATED_BY_PREPARER_FLAG ,
2003 r_po_line.ATTRIBUTE_CATEGORY ,
2004 r_po_line.ATTRIBUTE1 ,
2005 r_po_line.ATTRIBUTE2 ,
2006 r_po_line.ATTRIBUTE3 ,
2007 r_po_line.ATTRIBUTE4 ,
2008 r_po_line.ATTRIBUTE5 ,
2009 r_po_line.ATTRIBUTE6 ,
2010 r_po_line.ATTRIBUTE7 ,
2011 r_po_line.ATTRIBUTE8 ,
2012 r_po_line.ATTRIBUTE9 ,
2013 r_po_line.ATTRIBUTE10 ,
2014 r_po_line.REFERENCE_NUM ,
2015 r_po_line.ATTRIBUTE11 ,
2016 r_po_line.ATTRIBUTE12 ,
2017 r_po_line.ATTRIBUTE13 ,
2018 r_po_line.ATTRIBUTE14 ,
2019 r_po_line.ATTRIBUTE15 ,
2020 r_po_line.MIN_RELEASE_AMOUNT ,
2021 r_po_line.PRICE_TYPE_LOOKUP_CODE ,
2022 r_po_line.CLOSED_CODE ,
2023 r_po_line.PRICE_BREAK_LOOKUP_CODE ,
2024 r_po_line.USSGL_TRANSACTION_CODE ,
2025 r_po_line.GOVERNMENT_CONTEXT ,
2026 r_po_line.REQUEST_ID ,
2027 r_po_line.PROGRAM_APPLICATION_ID ,
2028 r_po_line.PROGRAM_ID ,
2029 r_po_line.PROGRAM_UPDATE_DATE ,
2030 r_po_line.CLOSED_DATE ,
2031 r_po_line.CLOSED_REASON ,
2032 r_po_line.CLOSED_BY ,
2033 r_po_line.TRANSACTION_REASON_CODE ,
2034 r_po_line.ORG_ID ,
2035 r_po_line.QC_GRADE ,
2036 r_po_line.BASE_UOM ,
2037 r_po_line.BASE_QTY ,
2038 r_po_line.SECONDARY_UOM ,
2039 r_po_line.SECONDARY_QTY ,
2040 r_po_line.LINE_REFERENCE_NUM ,
2041 r_po_line.PROJECT_ID ,
2042 r_po_line.TASK_ID ,
2043 r_po_line.EXPIRATION_DATE ,
2044 r_po_line.TAX_CODE_ID
2045 );
2046
2047 IF v_hook_value = 'FALSE' THEN
2048 RETURN;
2049 END IF;
2050
2051 IF pr_po_header.po_header_id IS NULL THEN
2052 OPEN c_po_hdr(v_po_hdr_id);
2053 FETCH c_po_hdr INTO r_po_header;
2054 CLOSE c_po_hdr;
2055 ELSE
2056 r_po_header := pr_po_header;
2057 END IF;
2058
2059 v_type_lookup_code := r_po_header.type_lookup_code;
2060 v_from_type_lookup_code := r_po_header.from_type_lookup_code;
2061 v_quot_class_code := r_po_header.Quotation_Class_Code;
2062 v_Vendor_id := r_po_header.vendor_id;
2063 v_Vendor_Site_Id := r_po_header.vendor_site_id;
2064 v_currency := r_po_header.currency_code;
2065 v_style_id := r_po_header.style_id;
2066
2067
2068 OPEN Fetch_UOMCode_Cur(v_line_uom);
2069 FETCH Fetch_UOMCode_Cur INTO v_uom_code;
2070 CLOSE Fetch_UOMCode_Cur;
2071
2072 IF pv_action = JAI_CONSTANTS.inserting THEN
2073 IF v_type_lookup_code = 'BLANKET' OR v_quot_class_code = 'CATALOG' THEN
2074 IF v_type_lookup_code = 'BLANKET' AND v_frm_hdr_id IS NOT NULL THEN
2075
2076
2077 OPEN Fetch_Line_Id_Cur( v_frm_hdr_id,r_po_line.line_num);
2078 FETCH Fetch_Line_Id_Cur INTO v_src_line_id;
2079 CLOSE Fetch_Line_Id_Cur;
2080
2081 jai_po_proc_pkg.copy_source_taxes(
2082 p_type => 'L'
2083 ,p_po_hdr_id => r_po_line.po_header_id
2084 ,p_po_line_id => r_po_line.PO_LINE_ID
2085 ,p_po_line_loc_id => NULL
2086 ,p_line_num => r_po_line.line_num
2087 ,p_ship_num => NULL
2088 ,p_item_id => r_po_line.item_id
2089 ,p_from_hdr_id => v_frm_hdr_id
2090 ,p_from_type_lookup_code => v_from_type_lookup_code
2091 ,p_source_line_id => v_src_line_id
2092 ,p_source_loc_id => NULL
2093 ,p_cre_dt => r_po_line.Creation_Date
2094 ,p_cre_by => r_po_line.Created_By
2095 ,p_last_upd_dt => r_po_line.Last_Update_Date
2096 ,p_last_upd_by => r_po_line.Last_Updated_By
2097 ,p_last_upd_login => r_po_line.Last_Update_Login
2098 );
2099 RETURN;
2100 END IF;
2101
2102
2103 jai_po_proc_pkg.process_po_tax_wrapper(prec_po_line => r_po_line);
2104 END IF;
2105
2106 FOR r_po_line_loc IN po_line_loc_cur
2107 LOOP
2108 process_po_shipment_line(r_po_line_loc.LINE_LOCATION_ID,
2109 pr_po_header=> r_po_header,
2110 pr_po_line => r_po_line,
2111 pv_action => JAI_CONSTANTS.inserting);
2112 END LOOP;
2113 ELSE-- pv_action = JAI_CONSTANTS.updating
2114
2115 IF jai_cmn_utils_pkg.validate_po_type(p_style_id => v_style_id) = FALSE THEN
2116 return;
2117 END IF;
2118
2119 IF v_type_lookup_code IN ('STANDARD', 'PLANNED') AND (v_frm_hdr_id is NOT NULL and v_frm_po_line_id is NOT NULL) THEN
2120 Open Fetch_Lines_Cur;
2121 Fetch Fetch_Lines_Cur INTO v_line_loc_id, v_price, v_qty;
2122 Close Fetch_Lines_Cur;
2123
2124 /*commented out since it has been processed by trigger
2125 jai_po_proc_pkg.copy_quot_taxes(
2126 p_line_loc_id => v_line_loc_id
2127 ,p_po_hdr_id => v_po_hdr_id
2128 ,p_po_line_id => v_po_line_id
2129 ,p_item_id => r_po_line.item_id
2130 ,p_qty => v_qty
2131 ,p_frm_hdr_id => v_frm_hdr_id
2132 ,p_frm_line_id => v_frm_po_line_id
2133 ,p_price => v_price
2134 ,p_unit_code => v_uom_code
2135 ,p_cre_dt => v_cre_dt
2136 ,p_cre_by => v_cre_by
2137 ,p_last_upd_dt => v_last_upd_dt
2138 ,p_last_upd_by => v_last_upd_by
2139 ,p_last_upd_login => v_last_upd_login
2140 );*/
2141 END IF;
2142 /*Get old item id from JAI table*/
2143 OPEN c_get_po_line_loc_details;
2144 FETCH c_get_po_line_loc_details INTO r_jai_po_line_loc;
2145 CLOSE c_get_po_line_loc_details;
2146 IF r_jai_po_line_loc.item_id <> r_po_line.item_id THEN
2147 FOR r_po_line_loc IN po_line_loc_cur
2148 LOOP
2149 jai_po_proc_pkg.process_po_tax_wrapper (prec_po_location =>r_po_line_loc);
2150 END LOOP;
2151 END IF;
2152
2153 FOR r_po_line_loc IN po_line_loc_cur
2154 LOOP
2155 v_line_loc_exists := 0;
2156 OPEN c_po_line_loc_exists(r_po_line_loc.LINE_LOCATION_ID);
2157 FETCH c_po_line_loc_exists INTO v_line_loc_exists;
2158 CLOSE c_po_line_loc_exists;
2159 IF nvl(v_line_loc_exists,0) = 1 THEN
2160 jai_po_proc_pkg.process_po_shipment_line(r_po_line_loc.LINE_LOCATION_ID,
2161 pr_po_header=> r_po_header,
2162 pr_po_line => r_po_line,
2163 pv_action => JAI_CONSTANTS.updating);
2164
2165 ELSE
2166 jai_po_proc_pkg.process_po_shipment_line(
2167 r_po_line_loc.LINE_LOCATION_ID,
2168 pr_po_header=>r_po_header,
2169 pr_po_line =>r_po_line,
2170 pv_action =>JAI_CONSTANTS.inserting);
2171 END IF;
2172 END LOOP;
2173 END IF;
2174 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2175 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
2176 END IF;
2177 EXCEPTION
2178 WHEN OTHERS THEN
2179
2180
2181 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
2182 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
2183 END IF;
2184 app_exception.raise_exception;
2185
2186 END process_po_line;
2187 /*
2188 REM +==========================================================================================================+
2189 REM Created By : Wenqiong Zhou
2190 REM Creation Date : Jun 1, 2012
2191 REM Bug Number/ER Name : 14040855/JAI Triggers Elimination
2192 REM SubProgram Name : process_po_shipment_line
2193 REM Type : processing API
2194 REM Purpose : Processing PO Shipment Line's creation or updation
2195 REM TDD Reference :
2196 REM
2197 REM Assumptions :
2198 REM
2199 REM Parameter IN/OUT Type Required Description and Purpose
2200 REM -------------------- ------ ------------------------ ---------- ------------------------------------
2201 REM pn_line_loc_id IN NUMBER Y Indiate which PO shipment line is processed.
2202 REM pr_po_header IN PO_HEADERS_ALL%ROWTYPE N PO header info.
2203 REM pr_po_line IN PO_LINES_ALL%ROWTYPE N PO line info.
2204 REM pv_action IN VARCHAR2 Y Indiate action is inserting/updating.
2205 REM CALLED BY
2206 REM jai_po_proc_pkg.process_po
2207 REM +=========================================================================================================+
2208 */
2209 PROCEDURE process_po_shipment_line (pn_line_loc_id IN NUMBER,pr_po_header IN PO_HEADERS_ALL%ROWTYPE DEFAULT NULL,pr_po_line IN PO_LINES_ALL%ROWTYPE DEFAULT NULL, pv_action IN VARCHAR2) IS
2210 l_api_name CONSTANT VARCHAR2(30) := 'process_po_shipment_line';
2211 r_get_po_line_loc_details JAI_PO_LINE_LOCATIONS%ROWTYPE;
2212 po_line_loc_rec PO_LINE_LOCATIONS_ALL%ROWTYPE;
2213 old_po_line_loce_rec PO_LINE_LOCATIONS_ALL%ROWTYPE;
2214
2215
2216 lv_retro_price_flag VARCHAR2(1) := 'N';
2217 lv_process_flag VARCHAR2(10);
2218 lv_process_message VARCHAR2(2000);
2219
2220
2221 v_po_hdr_id NUMBER;
2222 v_po_line_id NUMBER;
2223 v_orig_ship_id NUMBER;
2224 v_shipment_type VARCHAR2(25);
2225 v_uom_measure VARCHAR2(30);
2226 v_uom_code VARCHAR2(30);
2227 v_shipment_num NUMBER;
2228 v_src_ship_id NUMBER;
2229 v_from_line_loc_id NUMBER;
2230 v_from_line_id NUMBER;
2231 v_from_hdr_id NUMBER;
2232 v_line_loc_id NUMBER;
2233 v_price NUMBER;
2234 v_qty NUMBER;
2235 v_cre_dt DATE ;
2236 v_cre_by NUMBER ;
2237 v_last_upd_dt DATE ;
2238 v_last_upd_by NUMBER ;
2239 v_last_upd_login NUMBER ;
2240
2241 v_ship_to_org_id NUMBER;
2242 v_from_type_lookup_code VARCHAR2(25);
2243 v_type_lookup_code VARCHAR2(25);
2244 v_vendor_id NUMBER;
2245 v_vendor_site_id NUMBER;
2246 v_currency VARCHAR2(3);
2247 v_ship_loc_id NUMBER;
2248 v_quot_from_hdr_id NUMBER;
2249 v_service_type_code VARCHAR2(30);
2250 v_count NUMBER;
2251
2252 v_item_id NUMBER;
2253 v_line_num PO_LINES_ALL.line_num%TYPE;
2254 v_style_id NUMBER;
2255
2256 v_q_line_id NUMBER;
2257 v_hook_value VARCHAR2(10);
2258 v_src_loc_id NUMBER;
2259
2260 CURSOR po_line_loc_cur IS
2261 SELECT * FROM PO_LINE_LOCATIONS_ALL
2262 WHERE line_location_id = pn_line_loc_id;
2263
2264 CURSOR c_get_po_line_loc_details (p_line_location_id IN NUMBER) IS
2265 SELECT *
2266 FROM JAI_PO_LINE_LOCATIONS
2267 WHERE line_location_id = p_line_location_id;
2268
2269 CURSOR fetch_uomcode_cur IS
2270 SELECT uom_code
2271 FROM mtl_units_of_measure
2272 WHERE unit_of_measure = v_uom_measure;
2273
2274 CURSOR Fetch_Count_Cur (cn_po_hdr_id NUMBER)IS
2275 SELECT COUNT(Line_Location_Id)
2276 FROM JAI_PO_LINE_LOCATIONS
2277 WHERE Po_Header_Id = cn_po_hdr_id ;
2278
2279 CURSOR c_po_hdr(cn_po_hdr_id NUMBER) IS
2280 SELECT *
2281 FROM PO_HEADERS_ALL
2282 WHERE po_header_id = cn_po_hdr_id;
2283
2284 CURSOR c_po_line(cn_po_line_id NUMBER) IS
2285 SELECT *
2286 FROM PO_LINES_ALL
2287 WHERE po_line_id = cn_po_line_id;
2288
2289 -- Cursor definition for picking line_location_id from po_line_locations_all
2290 CURSOR Fetch_Line_Loc_Id_Cur(p_from_hdr_id NUMBER,p_line_num NUMBER ,p_item_id NUMBER, p_ship_num NUMBER) IS
2291 SELECT jpll.Line_Location_Id
2292 FROM po_line_locations_all plla, JAI_PO_LINE_LOCATIONS jpll,
2293 po_lines_all pla, po_headers_all pha
2294 WHERE pha.po_header_id = pla.po_header_id
2295 AND jpll.line_location_id = plla.line_location_id
2296 AND pha.po_header_id = plla.po_header_id
2297 AND pla.po_line_id = plla.po_line_id
2298 AND pha.po_header_id = p_from_hdr_id
2299 AND pla.line_num = p_line_num
2300 AND pla.item_id = p_item_id
2301 AND plla.shipment_num = p_ship_num;
2302
2303 r_po_header PO_HEADERS_ALL%ROWTYPE;
2304 r_po_line PO_LINES_ALL%ROWTYPE;
2305
2306 BEGIN
2307
2308 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2309 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
2310 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'pn_line_loc_id:'||pn_line_loc_id||'pv_action:'||pv_action);
2311 END IF;
2312 OPEN po_line_loc_cur;
2313 FETCH po_line_loc_cur INTO po_line_loc_rec;
2314 CLOSE po_line_loc_cur;
2315
2316 v_hook_value := jai_cmn_hook_pkg.Ja_In_po_line_locations_all(
2317 po_line_loc_rec.LINE_LOCATION_ID ,
2318 po_line_loc_rec.PO_HEADER_ID ,
2319 po_line_loc_rec.PO_LINE_ID ,
2320 po_line_loc_rec.QUANTITY ,
2321 po_line_loc_rec.QUANTITY_RECEIVED ,
2322 po_line_loc_rec.QUANTITY_ACCEPTED ,
2323 po_line_loc_rec.QUANTITY_REJECTED ,
2324 po_line_loc_rec.QUANTITY_BILLED ,
2325 po_line_loc_rec.QUANTITY_CANCELLED ,
2326 po_line_loc_rec.UNIT_MEAS_LOOKUP_CODE ,
2327 po_line_loc_rec.PO_RELEASE_ID ,
2328 po_line_loc_rec.SHIP_TO_LOCATION_ID ,
2329 po_line_loc_rec.SHIP_VIA_LOOKUP_CODE ,
2330 po_line_loc_rec.NEED_BY_DATE ,
2331 po_line_loc_rec.PROMISED_DATE ,
2332 po_line_loc_rec.LAST_ACCEPT_DATE ,
2333 po_line_loc_rec.PRICE_OVERRIDE ,
2334 po_line_loc_rec.ENCUMBERED_FLAG ,
2335 po_line_loc_rec.ENCUMBERED_DATE ,
2336 po_line_loc_rec.UNENCUMBERED_QUANTITY ,
2337 po_line_loc_rec.FOB_LOOKUP_CODE ,
2338 po_line_loc_rec.FREIGHT_TERMS_LOOKUP_CODE ,
2339 po_line_loc_rec.TAXABLE_FLAG ,
2340 po_line_loc_rec.TAX_NAME ,
2341 po_line_loc_rec.ESTIMATED_TAX_AMOUNT ,
2342 po_line_loc_rec.FROM_HEADER_ID ,
2343 po_line_loc_rec.FROM_LINE_ID ,
2344 po_line_loc_rec.FROM_LINE_LOCATION_ID ,
2345 po_line_loc_rec.START_DATE ,
2346 po_line_loc_rec.END_DATE ,
2347 po_line_loc_rec.LEAD_TIME ,
2348 po_line_loc_rec.LEAD_TIME_UNIT ,
2349 po_line_loc_rec.PRICE_DISCOUNT ,
2350 po_line_loc_rec.TERMS_ID ,
2351 po_line_loc_rec.APPROVED_FLAG ,
2352 po_line_loc_rec.APPROVED_DATE ,
2353 po_line_loc_rec.CLOSED_FLAG ,
2354 po_line_loc_rec.CANCEL_FLAG ,
2355 po_line_loc_rec.CANCELLED_BY ,
2356 po_line_loc_rec.CANCEL_DATE ,
2357 po_line_loc_rec.CANCEL_REASON ,
2358 po_line_loc_rec.FIRM_STATUS_LOOKUP_CODE ,
2359 po_line_loc_rec.FIRM_DATE ,
2360 po_line_loc_rec.ATTRIBUTE_CATEGORY ,
2361 po_line_loc_rec.ATTRIBUTE1 ,
2362 po_line_loc_rec.ATTRIBUTE2 ,
2363 po_line_loc_rec.ATTRIBUTE3 ,
2364 po_line_loc_rec.ATTRIBUTE4 ,
2365 po_line_loc_rec.ATTRIBUTE5 ,
2366 po_line_loc_rec.ATTRIBUTE6 ,
2367 po_line_loc_rec.ATTRIBUTE7 ,
2368 po_line_loc_rec.ATTRIBUTE8 ,
2369 po_line_loc_rec.ATTRIBUTE9 ,
2370 po_line_loc_rec.ATTRIBUTE10 ,
2371 po_line_loc_rec.UNIT_OF_MEASURE_CLASS ,
2372 po_line_loc_rec.ENCUMBER_NOW ,
2373 po_line_loc_rec.ATTRIBUTE11 ,
2374 po_line_loc_rec.ATTRIBUTE12 ,
2375 po_line_loc_rec.ATTRIBUTE13 ,
2376 po_line_loc_rec.ATTRIBUTE14 ,
2377 po_line_loc_rec.ATTRIBUTE15 ,
2378 po_line_loc_rec.INSPECTION_REQUIRED_FLAG ,
2379 po_line_loc_rec.RECEIPT_REQUIRED_FLAG ,
2380 po_line_loc_rec.QTY_RCV_TOLERANCE ,
2381 po_line_loc_rec.QTY_RCV_EXCEPTION_CODE ,
2382 po_line_loc_rec.ENFORCE_SHIP_TO_LOCATION_CODE ,
2383 po_line_loc_rec.ALLOW_SUBSTITUTE_RECEIPTS_FLAG ,
2384 po_line_loc_rec.DAYS_EARLY_RECEIPT_ALLOWED ,
2385 po_line_loc_rec.DAYS_LATE_RECEIPT_ALLOWED ,
2386 po_line_loc_rec.RECEIPT_DAYS_EXCEPTION_CODE ,
2387 po_line_loc_rec.INVOICE_CLOSE_TOLERANCE ,
2388 po_line_loc_rec.RECEIVE_CLOSE_TOLERANCE ,
2389 po_line_loc_rec.SHIP_TO_ORGANIZATION_ID ,
2390 po_line_loc_rec.SHIPMENT_NUM ,
2391 po_line_loc_rec.SOURCE_SHIPMENT_ID ,
2392 po_line_loc_rec.SHIPMENT_TYPE ,
2393 po_line_loc_rec.CLOSED_CODE ,
2394 po_line_loc_rec.REQUEST_ID ,
2395 po_line_loc_rec.PROGRAM_APPLICATION_ID ,
2396 po_line_loc_rec.PROGRAM_ID ,
2397 po_line_loc_rec.PROGRAM_UPDATE_DATE ,
2398 po_line_loc_rec.USSGL_TRANSACTION_CODE ,
2399 po_line_loc_rec.GOVERNMENT_CONTEXT ,
2400 po_line_loc_rec.RECEIVING_ROUTING_ID ,
2401 po_line_loc_rec.ACCRUE_ON_RECEIPT_FLAG ,
2402 po_line_loc_rec.CLOSED_REASON ,
2403 po_line_loc_rec.CLOSED_DATE ,
2404 po_line_loc_rec.CLOSED_BY ,
2405 po_line_loc_rec.ORG_ID ,
2406 po_line_loc_rec.QUANTITY_SHIPPED ,
2407 po_line_loc_rec.COUNTRY_OF_ORIGIN_CODE ,
2408 po_line_loc_rec.TAX_USER_OVERRIDE_FLAG ,
2409 po_line_loc_rec.MATCH_OPTION ,
2410 po_line_loc_rec.TAX_CODE_ID ,
2411 po_line_loc_rec.CALCULATE_TAX_FLAG ,
2412 po_line_loc_rec.CHANGE_PROMISED_DATE_REASON
2413 );
2414
2415 IF v_hook_value = 'FALSE' THEN
2416 RETURN;
2417 END IF;
2418 v_po_hdr_id := po_line_loc_rec.PO_HEADER_ID;
2419 v_po_line_id := po_line_loc_rec.PO_LINE_ID;
2420 v_orig_ship_id := po_line_loc_rec.original_shipment_id;
2421 v_shipment_type := po_line_loc_rec.SHIPMENT_TYPE;
2422 v_shipment_num := po_line_loc_rec.Shipment_Num;
2423 v_src_ship_id := po_line_loc_rec.Source_Shipment_Id;
2424 v_from_line_loc_id := po_line_loc_rec.From_Line_Location_Id;
2425 v_from_line_id := po_line_loc_rec.From_Line_Id;
2426 v_from_hdr_id := po_line_loc_rec.From_Header_Id;
2427 v_line_loc_id := po_line_loc_rec.Line_Location_Id;
2428 v_price := po_line_loc_rec.Price_Override;
2429 v_qty := po_line_loc_rec.Quantity;
2430 v_cre_dt := po_line_loc_rec.Creation_Date;
2431 v_cre_by := po_line_loc_rec.Created_By;
2432 v_last_upd_dt := po_line_loc_rec.Last_Update_Date ;
2433 v_last_upd_by := po_line_loc_rec.Last_Updated_By;
2434 v_last_upd_login := po_line_loc_rec.Last_Update_Login;
2435 v_uom_measure := po_line_loc_rec.Unit_Meas_Lookup_Code;
2436 v_orig_ship_id := po_line_loc_rec.original_shipment_id;
2437 v_ship_to_org_id := po_line_loc_rec.SHIP_TO_ORGANIZATION_ID;
2438
2439 IF pr_po_header.po_header_id IS NULL THEN
2440 OPEN c_po_hdr(v_po_hdr_id);
2441 FETCH c_po_hdr INTO r_po_header;
2442 CLOSE c_po_hdr;
2443 ELSE
2444 r_po_header := pr_po_header;
2445 END IF;
2446
2447 IF pr_po_line.po_line_id IS NULL THEN
2448 OPEN c_po_line(v_po_line_id);
2449 FETCH c_po_line INTO r_po_line;
2450 CLOSE c_po_line;
2451 ELSE
2452 r_po_line := pr_po_line;
2453 END IF;
2454
2455 v_from_type_lookup_code := r_po_header.from_type_lookup_code;
2456 v_quot_from_hdr_id := r_po_header.from_header_id;
2457 v_type_lookup_code := r_po_header.type_lookup_code;
2458 v_Vendor_id := r_po_header.vendor_id;
2459 v_Vendor_site_id := r_po_header.vendor_site_id;
2460 v_currency := r_po_header.currency_code;
2461 v_style_id := r_po_header.style_id;
2462
2463 v_item_id := r_po_line.item_id;
2464 v_line_num := r_po_line.line_num;
2465
2466 IF jai_cmn_utils_pkg.validate_po_type(p_style_id => v_style_id) = FALSE THEN
2467 return;
2468 END IF;
2469
2470 OPEN fetch_uomcode_cur;
2471 FETCH fetch_uomcode_cur INTO v_uom_code;
2472 CLOSE fetch_uomcode_cur;
2473
2474 IF pv_action = JAI_CONSTANTS.inserting THEN
2475
2476 IF is_split_line(v_orig_ship_id, v_po_hdr_id, v_po_line_id) = TRUE THEN
2477 -- process for split line;
2478 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2479 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'v_orig_ship_id:'||v_orig_ship_id||'its split line.');
2480 END IF;
2481
2482 jai_po_proc_pkg.process_split_line(v_orig_ship_id ,v_line_loc_id,v_qty,v_price,v_type_lookup_code);
2483 ELSE
2484
2485 IF v_shipment_type NOT IN ( 'SCHEDULED' , 'BLANKET' ) THEN
2486 --Process for copy documents, from quotation to po and po to po.
2487 IF v_from_type_lookup_code IN ('QUOTATION','PLANNED','BLANKET','STANDARD') AND v_quot_from_hdr_id IS NOT NULL THEN
2488
2489 OPEN Fetch_Count_Cur(v_quot_from_hdr_id);
2490 FETCH Fetch_Count_Cur INTO v_count;
2491 CLOSE Fetch_Count_Cur;
2492
2493 IF v_count > 0 THEN
2494 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2495 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'Process for copy documents,copy_source_taxes');
2496 END IF;
2497 OPEN Fetch_Line_Loc_Id_Cur(v_quot_from_hdr_id,v_line_num,v_item_id,v_shipment_num);
2498 FETCH Fetch_Line_Loc_Id_Cur INTO v_src_loc_id ;
2499 CLOSE Fetch_Line_Loc_Id_Cur;
2500 jai_po_proc_pkg.copy_source_taxes(
2501 p_type => 'S'
2502 ,p_po_hdr_id => v_po_hdr_id
2503 ,p_po_line_id => v_po_line_id
2504 ,p_po_line_loc_id => v_line_loc_id
2505 ,p_line_num => v_line_num
2506 ,p_ship_num => v_shipment_num
2507 ,p_item_id => v_item_id
2508 ,p_from_hdr_id => v_quot_from_hdr_id
2509 ,p_from_type_lookup_code => v_from_type_lookup_code
2510 ,p_source_line_id => NULL
2511 ,p_source_loc_id => v_src_loc_id
2512 ,p_cre_dt => v_cre_dt
2513 ,p_cre_by => v_cre_by
2514 ,p_last_upd_dt => v_last_upd_dt
2515 ,p_last_upd_by => v_last_upd_by
2516 ,p_last_upd_login => v_last_upd_login
2517 );
2518 RETURN;
2519 END IF;
2520 END IF;
2521
2522 v_q_line_id := v_from_line_id;
2523 --If the following if is satisfied, it implies that PO has been linked by a quotation.
2524 IF v_type_lookup_code IN ( 'STANDARD', 'PLANNED') AND v_q_line_id IS NOT NULL THEN
2525 OPEN fetch_uomcode_cur;
2526 FETCH fetch_uomcode_cur INTO v_uom_code;
2527 CLOSE fetch_uomcode_cur;
2528 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2529 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'Process for copy documents from quotation,copy_quot_taxes');
2530 END IF;
2531 /*jai_po_proc_pkg.copy_quot_taxes(
2532 p_line_loc_id => v_line_loc_id
2533 ,p_po_hdr_id => v_po_hdr_id
2534 ,p_po_line_id => v_po_line_id
2535 ,p_item_id => v_item_id
2536 ,p_qty => v_qty
2537 ,p_frm_hdr_id => v_from_hdr_id
2538 ,p_frm_line_id => v_from_line_id
2539 ,p_price => v_price
2540 ,p_unit_code => v_uom_code
2541 ,p_cre_dt => v_cre_dt
2542 ,p_cre_by => v_cre_by
2543 ,p_last_upd_dt => v_last_upd_dt
2544 ,p_last_upd_by => v_last_upd_by
2545 ,p_last_upd_login => v_last_upd_login
2546 );*/
2547 RETURN;
2548 END IF;
2549
2550 END IF;
2551 IF v_type_lookup_code = 'QUOTATION' OR v_shipment_type IN ( 'SCHEDULED' , 'BLANKET' ) THEN
2552 JAI_AVLIST_VALIDATE_PKG.Check_AvList_Validation( pn_party_id => v_vendor_id
2553 , pn_party_site_id => v_vendor_site_id
2554 , pn_inventory_item_id => v_item_id
2555 , pd_ordered_date => trunc(sysdate)
2556 , pv_party_type => 'V'
2557 , pn_pricing_list_id => null
2558 );
2559 END IF;
2560 jai_po_proc_pkg.process_po_tax_wrapper(prec_po_location=>po_line_loc_rec);
2561 END IF;
2562
2563 jai_po_proc_pkg.process_dist(prec_po_location=>po_line_loc_rec);
2564
2565 jai_po_proc_pkg.copy_req_to_po(prec_po_location => po_line_loc_rec);
2566
2567 ELSIF pv_action = JAI_CONSTANTS.updating THEN
2568 open c_get_po_line_loc_details(v_line_loc_id);
2569 fetch c_get_po_line_loc_details into r_get_po_line_loc_details;
2570 close c_get_po_line_loc_details;
2571
2572
2573 IF po_line_loc_rec.RETROACTIVE_DATE IS NOT NULL
2574 AND (r_get_po_line_loc_details.PRICE_OVERRIDE <> v_price)
2575 THEN
2576 lv_retro_price_flag := 'Y';
2577 END IF;
2578
2579 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2580 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'old_price:'||r_get_po_line_loc_details.PRICE_OVERRIDE||'new_price:'||v_price||'lv_retro_price_flag is'||lv_retro_price_flag);
2581 END IF;
2582 -- IF (r_get_po_line_loc_details.quantity <> v_qty OR lv_retro_price_flag = 'Y') THEN
2583
2584 IF lv_retro_price_flag = 'Y' THEN
2585 old_po_line_loce_rec := po_line_loc_rec;
2586
2587 old_po_line_loce_rec.PRICE_OVERRIDE := r_get_po_line_loc_details.PRICE_OVERRIDE;
2588
2589 JAI_RETRO_PRC_PKG.Insert_Price_Changes( pr_old => old_po_line_loce_rec
2590 , pr_new => po_line_loc_rec
2591 , pv_process_flag => lv_process_flag
2592 , pv_process_message => lv_process_message
2593 );
2594
2595 IF lv_process_flag IN ('EE', 'UE')
2596 THEN
2597 FND_MESSAGE.SET_NAME ('JA','JAI_EXCEPTION_OCCURED');
2598 FND_MESSAGE.SET_TOKEN('JAI_PROCESS_MSG','JAI_PO_PROC_PKG.JAI_PO_SHIPMENT_LINE.Err:'||lv_process_message);
2599 app_exception.raise_exception;
2600 END IF;
2601 END IF;
2602
2603 jai_po_proc_pkg.process_po_tax_wrapper(prec_po_location=>po_line_loc_rec,pv_retro_price_flag => lv_retro_price_flag);
2604 -- END IF;
2605
2606
2607 END IF;
2608 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2609 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
2610 END IF;
2611 EXCEPTION
2612 WHEN OTHERS THEN
2613
2614
2615 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
2616 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
2617 END IF;
2618 app_exception.raise_exception;
2619
2620 END process_po_shipment_line;
2621 /*
2622 REM +======================================================================+
2623 REM Created By : Wenqiong Zhou
2624 REM Creation Date : Jun 1, 2012
2625 REM Bug Number/ER Name : 14040855/JAI Triggers Elimination
2626 REM SubProgram Name : update_currency
2627 REM Type : table handler API
2628 REM Purpose : Update currency in JAI_PO_LINE_LOCATIONS and JAI_PO_TAXES
2629 REM
2630 REM TDD Reference :
2631 REM
2632 REM Assumptions :
2633 REM
2634 REM Parameter IN/OUT Type Required Description and Purpose
2635 REM ----------------------- ------ ------------ ---------- ------------------------------------
2636 REM pn_po_header_id IN NUMBER Y PO header id
2637 REM pv_old_currency IN VARCHAR2 Y old currency before change.
2638 REM pv_currency IN VARCHAR2 Y new currency after change.
2639 REM pd_last_upd_dt IN DATE Y last update date
2640 REM pn_last_upd_by IN NUMBER Y last update by
2641 REM pn_last_upd_login IN NUMBER Y last update login
2642 REM CALLED BY
2643 REM process_po
2644 REM +================================================================================================+
2645 */
2646 PROCEDURE update_currency(pn_po_header_id NUMBER,pv_old_currency VARCHAR2, pv_currency VARCHAR2,pd_last_upd_dt IN DATE,
2647 pn_last_upd_by IN NUMBER,
2648 pn_last_upd_login IN NUMBER
2649 ) IS
2650 l_api_name CONSTANT VARCHAR2(30) := 'update_currency';
2651 BEGIN
2652
2653 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2654 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
2655 END IF;
2656 UPDATE JAI_PO_TAXES
2657 SET Currency = pv_currency,
2658 Last_Update_Date = pd_last_upd_dt,
2659 Last_Updated_By = pn_last_upd_by,
2660 Last_Update_Login = pn_last_upd_login
2661 WHERE Po_Header_Id = pn_po_header_id
2662 AND Currency = pv_old_currency;
2663 UPDATE JAI_PO_LINE_LOCATIONS
2664 SET Currency = pv_currency,
2665 Last_Update_Date = pd_last_upd_dt,
2666 Last_Updated_By = pn_last_upd_by,
2667 Last_Update_Login = pn_last_upd_login
2668 WHERE Po_Header_Id = pn_po_header_id;
2669
2670 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2671 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
2672 END IF;
2673 EXCEPTION
2674 WHEN OTHERS THEN
2675
2676
2677 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
2678 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
2679 END IF;
2680 app_exception.raise_exception;
2681
2682 END update_currency;
2683 /*
2684 REM +======================================================================+
2685 REM Created By : Wenqiong Zhou
2686 REM Creation Date : Jun 1, 2012
2687 REM Bug Number/ER Name : 14040855/JAI Triggers Elimination
2688 REM SubProgram Name : update_vendor
2689 REM Type : table handler API
2690 REM Purpose : Update currency in JAI_PO_LINE_LOCATIONS and JAI_PO_TAXES
2691 REM
2692 REM TDD Reference :
2693 REM
2694 REM Assumptions :
2695 REM
2696 REM Parameter IN/OUT Type Required Description and Purpose
2697 REM ----------------------- ------ ------------ ---------- ------------------------------------
2698 REM pn_po_header_id IN NUMBER Y PO header id
2699 REM pn_old_vendor_id IN NUMBER Y old vendor id before change.
2700 REM pn_vendor_id IN NUMBER Y new vendor id after change.
2701 REM pn_vendor_site_id IN NUMBER Y new vendor id after change.
2702 REM pd_last_upd_dt IN DATE Y last update date
2703 REM pn_last_upd_by IN NUMBER Y last update by
2704 REM pn_last_upd_login IN NUMBER Y last update login
2705 REM CALLED BY
2706 REM process_po
2707 REM +================================================================================================+
2708 */
2709 PROCEDURE update_vendor
2710 (
2711 pn_po_header_id NUMBER
2712 ,pn_old_vendor_id IN NUMBER
2713 ,pn_vendor_id IN NUMBER
2714 ,pn_vendor_site_id IN NUMBER
2715 ,pd_last_upd_dt IN DATE
2716 ,pn_last_upd_by IN NUMBER
2717 ,pn_last_upd_login IN NUMBER
2718 ) IS
2719 l_api_name CONSTANT VARCHAR2(30) := 'update_vendor';
2720 BEGIN
2721
2722 IF (g_level_procedure >= fnd_log.g_current_runtime_level) THEN
2723 fnd_log.STRING(g_level_procedure,g_module_name || l_api_name || '.BEGIN',g_pkg_name || ': ' || l_api_name || '()+');
2724 END IF;
2725
2726 UPDATE jai_po_taxes
2727 SET vendor_id = pn_vendor_id, last_update_date = pd_last_upd_dt,
2728 last_updated_by = pn_last_upd_by, last_update_login = pn_last_upd_login
2729 WHERE po_header_id = pn_po_header_id
2730 AND vendor_id = pn_old_vendor_id;
2731
2732 UPDATE JAI_PO_LINE_LOCATIONS
2733 SET vendor_id = pn_vendor_id,
2734 vendor_site_id = pn_vendor_site_id,
2735 Last_Update_Date = pd_last_upd_dt,
2736 Last_Updated_By = pn_last_upd_by,
2737 Last_Update_Login = pn_last_upd_login
2738 WHERE Po_Header_Id = pn_po_header_id;
2739 IF (g_level_procedure >= fnd_log.g_current_runtime_level) THEN
2740 fnd_log.STRING(g_level_procedure,g_module_name || l_api_name || '.END',g_pkg_name || ': ' || l_api_name);
2741 END IF;
2742 EXCEPTION
2743 WHEN OTHERS THEN
2744
2745 IF (g_level_unexpected >= g_current_runtime_level) THEN
2746 fnd_log.STRING(g_level_unexpected,g_module_name || l_api_name,SQLERRM);
2747 END IF;
2748 app_exception.raise_exception;
2749
2750 END update_vendor;
2751 /*
2752 REM +======================================================================+
2753 REM Created By : Wenqiong Zhou
2754 REM Creation Date : Jun 1, 2012
2755 REM Bug Number/ER Name : 14040855/JAI Triggers Elimination
2756 REM SubProgram Name : delete_jai_po_lines
2757 REM Type : table handler API
2758 REM Purpose : delete JAI_PO_LINE_LOCATIONS
2759 REM
2760 REM TDD Reference :
2761 REM
2762 REM Assumptions :
2763 REM
2764 REM Parameter IN/OUT Type Required Description and Purpose
2765 REM ----------------------- ------ ------------ ---------- ------------------------------------
2766 REM pn_line_id IN NUMBER N PO line id
2767 REM pn_line_loc_id IN NUMBER N PO line location id
2768 REM CALLED BY
2769 REM process_po_tax_wrapper
2770 REM +================================================================================================+
2771 */
2772 PROCEDURE delete_jai_po_lines(pn_line_id IN NUMBER DEFAULT NULL,pn_line_loc_id IN NUMBER DEFAULT NULL)
2773 IS
2774 l_api_name CONSTANT VARCHAR2(30) := 'delete_jai_po_lines';
2775 BEGIN
2776
2777 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2778 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
2779 END IF;
2780 IF pn_line_loc_id IS NOT NULL THEN
2781 DELETE FROM JAI_PO_LINE_LOCATIONS WHERE Line_Location_Id = pn_line_loc_id;
2782 ELSIF pn_line_id IS NOT NULL THEN
2783 DELETE FROM JAI_PO_LINE_LOCATIONS WHERE po_line_id = pn_line_id;
2784 END IF;
2785 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2786 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
2787 END IF;
2788 EXCEPTION
2789 WHEN OTHERS THEN
2790
2791
2792 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
2793 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
2794 END IF;
2795 app_exception.raise_exception;
2796
2797 END delete_jai_po_lines;
2798 /*
2799 REM +======================================================================+
2800 REM Created By : Wenqiong Zhou
2801 REM Creation Date : Jun 1, 2012
2802 REM Bug Number/ER Name : 14040855/JAI Triggers Elimination
2803 REM SubProgram Name : delete_po_taxes
2804 REM Type : table handler API
2805 REM Purpose : delete data from JAI_PO_TAXES
2806 REM
2807 REM TDD Reference :
2808 REM
2809 REM Assumptions :
2810 REM
2811 REM Parameter IN/OUT Type Required Description and Purpose
2812 REM ----------------------- ------ ------------ ---------- ------------------------------------
2813 REM pn_po_hdr_id IN NUMBER N PO header id
2814 REM pn_line_id IN NUMBER N PO line id
2815 REM pn_line_loc_id IN NUMBER N PO line location id
2816 REM CALLED BY
2817 REM process_po_tax_wrapper
2818 REM +================================================================================================+
2819 */
2820 PROCEDURE delete_po_taxes(pn_po_hdr_id IN NUMBER DEFAULT NULL,pn_po_line_id IN NUMBER DEFAULT NULL ,pn_line_loc_id IN NUMBER DEFAULT NULL)
2821 IS
2822 l_api_name CONSTANT VARCHAR2(30) := 'delete_po_taxes';
2823 BEGIN
2824
2825 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2826 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
2827 END IF;
2828 IF pn_po_hdr_id IS NOT NULL THEN
2829 DELETE FROM JAI_PO_TAXES
2830 WHERE po_header_id = pn_po_hdr_id;
2831 ELSIF pn_po_line_id IS NOT NULL THEN
2832 DELETE FROM JAI_PO_TAXES
2833 WHERE Po_Line_Id = pn_po_line_id
2834 AND NVL( Line_Location_Id, -999 ) = NVL( pn_line_loc_id, -999 );
2835 END IF;
2836 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2837 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
2838 END IF;
2839 EXCEPTION
2840 WHEN OTHERS THEN
2841
2842
2843 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
2844 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
2845 END IF;
2846 app_exception.raise_exception;
2847
2848 END delete_po_taxes;
2849 /*
2850 REM +======================================================================+
2851 REM Created By : Wenqiong Zhou
2852 REM Creation Date : Jun 1, 2012
2853 REM Bug Number/ER Name : 14040855/JAI Triggers Elimination
2854 REM SubProgram Name : delete_po_taxes
2855 REM Type : table handler API
2856 REM Purpose : insert data in JAI_PO_LINE_LOCATIONS
2857 REM
2858 REM TDD Reference :
2859 REM
2860 REM Assumptions :
2861 REM
2862 REM Parameter IN/OUT Type Required Description and Purpose
2863 REM ----------------------- ------ ------------ ---------- ------------------------------------
2864 REM v_line_loc_id IN NUMBER N PO shipment line id
2865 REM v_po_hdr_id IN NUMBER Y PO header id
2866 REM v_po_line_id IN NUMBER Y PO line id
2867 REM v_vendor_id IN NUMBER N PO vendor id
2868 REM v_vendor_site_id IN NUMBER N PO vendor site id
2869 REM v_item_id IN NUMBER Y Item id
2870 REM v_qty IN NUMBER Y Quantity of item
2871 REM v_price_override IN NUMBER N price of item
2872 REM v_tax_category_id IN NUMBER N tax category id of the line
2873 REM v_tax_amount IN NUMBER N tax amount of the line
2874 REM v_total_amount IN NUMBER N total amount of the line
2875 REM v_currency IN VARCHAR2 N currency of the PO
2876 REM v_tax_modified_flag IN VARCHAR2 N tax modified flag
2877 REM flag IN VARCHAR2 Y flag to indicate insert or udate
2878 REM v_cre_dt IN DATE Y creation date
2879 REM v_cre_by IN NUMBER Y created by
2880 REM v_last_upd_dt IN DATE Y last update date
2881 REM v_last_upd_by IN NUMBER Y last update by
2882 REM v_last_upd_login IN NUMBER Y last update login
2883 REM v_line_focus_id OUT NUMBER Y Return the line focus id after insert.
2884 REM
2885 REM Call by process_po_tax_wrapper
2886 REM +================================================================================================+
2887 */
2888 PROCEDURE insert_jai_line_locs
2889 (
2890 v_line_loc_id IN NUMBER,
2891 v_po_hdr_id IN NUMBER,
2892 v_po_line_id IN NUMBER,
2893 v_cre_dt IN DATE,
2894 v_cre_by IN NUMBER,
2895 v_last_upd_dt IN DATE,
2896 v_last_upd_by IN NUMBER,
2897 v_last_upd_login IN NUMBER,
2898 flag IN VARCHAR2,
2899 v_item_id IN NUMBER ,
2900 v_vendor_id IN NUMBER ,
2901 v_vendor_site_id IN NUMBER,
2902 v_qty IN NUMBER DEFAULT NULL,
2903 v_price_override IN NUMBER DEFAULT NULL,
2904 v_tax_category_id IN NUMBER DEFAULT NULL,
2905 v_tax_amount IN NUMBER DEFAULT NULL,
2906 v_total_amount IN NUMBER DEFAULT NULL,
2907 v_currency IN VARCHAR2,
2908 v_tax_modified_flag IN VARCHAR2 DEFAULT 'N',
2909 v_line_focus_id OUT NOCOPY NUMBER
2910 )
2911 IS
2912 l_api_name CONSTANT VARCHAR2(30) := 'insert_jai_line_locs';
2913 v_service_type_code VARCHAR2(30);
2914 v_seq_val NUMBER;
2915
2916
2917 CURSOR Fetch_Focus_Id IS
2918 SELECT JAI_PO_LINE_LOCATIONS_S.NEXTVAL
2919 FROM Dual;
2920
2921 CURSOR cur_Line_Focus_Id IS
2922 SELECT Line_Focus_Id
2923 FROM JAI_PO_LINE_LOCATIONS
2924 WHERE Line_Location_Id = v_line_Loc_id AND
2925 Po_Line_Id = v_po_line_id AND
2926 Po_Header_Id = v_po_hdr_id;
2927 BEGIN
2928
2929 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2930 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
2931 END IF;
2932 v_service_type_code :=jai_ar_rctla_trigger_pkg.get_service_type(v_vendor_id,v_vendor_site_id,'V');
2933
2934
2935 IF flag = 'I' THEN
2936
2937 OPEN Fetch_Focus_Id;
2938 FETCH Fetch_Focus_Id INTO v_seq_val;
2939 CLOSE Fetch_Focus_Id;
2940 INSERT INTO JAI_PO_LINE_LOCATIONS( Line_Focus_Id, Line_Location_Id, Po_Line_Id, Po_Header_Id,
2941 Tax_Modified_Flag, Tax_Amount, Total_Amount,currency,
2942 Creation_Date, Created_By, Last_Update_Date, Last_Updated_By,tax_category_id,Last_Update_Login,Service_type_code
2943 ,item_id,vendor_id, vendor_site_id ,quantity
2944 ,PRICE_OVERRIDE
2945 )
2946 VALUES
2947 ( v_seq_val, v_line_loc_id , v_po_line_id, v_po_hdr_id,
2948 v_tax_modified_flag, v_tax_amount, v_total_amount,v_currency,
2949 v_cre_dt, v_cre_by, v_last_upd_dt, v_last_upd_by,v_tax_category_id,
2950 v_last_upd_login,v_service_type_code
2951 , v_item_id,
2952 v_vendor_id,v_vendor_site_id, v_qty,
2953 v_price_override
2954 );
2955
2956 ELSIF flag = 'U' THEN
2957
2958 UPDATE JAI_PO_LINE_LOCATIONS
2959 SET
2960 Last_Update_Date = v_last_upd_dt,
2961 Last_Updated_By = v_last_upd_by,
2962 Last_Update_Login = v_last_upd_login
2963 ,item_id = v_item_id
2964 ,price_override = v_price_override
2965 ,vendor_id = v_vendor_id
2966 ,vendor_site_id = v_vendor_site_id
2967 ,quantity = v_qty
2968 ,currency = v_currency
2969 WHERE Line_Location_Id = v_line_Loc_id AND
2970 Po_Line_Id = v_po_line_id AND
2971 Po_Header_Id = v_po_hdr_id;
2972
2973 OPEN cur_Line_Focus_Id;
2974 FETCH cur_Line_Focus_Id INTO v_seq_val;
2975 CLOSE cur_Line_Focus_Id;
2976 END IF;
2977 v_line_focus_id := v_seq_val;
2978 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2979 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
2980 END IF;
2981 EXCEPTION
2982 WHEN OTHERS THEN
2983
2984
2985 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
2986 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
2987 END IF;
2988 app_exception.raise_exception;
2989
2990 END insert_jai_line_locs;
2991 /*
2992 REM +======================================================================+
2993 REM Created By : Wenqiong Zhou
2994 REM Creation Date : Jun 1, 2012
2995 REM Bug Number/ER Name : 14040855/JAI Triggers Elimination
2996 REM SubProgram Name : get_assessable_value
2997 REM Type : Utility API
2998 REM Purpose : Get assessable value and vat assessable value
2999 REM
3000 REM TDD Reference :
3001 REM
3002 REM Assumptions :
3003 REM
3004 REM Parameter IN/OUT Type Required Description and Purpose
3005 REM ----------------------- ------ ------------ ---------- ------------------------------------
3006 REM pn_po_hdr_id IN NUMBER Y PO header id
3007 REM pn_vendor_id IN NUMBER Y PO vendor id
3008 REM pn_vendor_site_id IN NUMBER Y PO vendor site id
3009 REM pn_item_id IN NUMBER Y Item id
3010 REM pn_qty IN NUMBER Y Quantity of item
3011 REM pn_price IN NUMBER N price of item
3012 REM pv_uom_code IN VARCHAR2 Y UOM code of itme
3013 REM pv_currency IN VARCHAR2 Y currency of the PO
3014 REM pv_action IN VARCHAR2 N Indicate action is insert or update
3015 REM pn_conv_rate IN NUMBER N convert rate for currency to functional currency
3016 REM pn_assessable_value OUT NUMBER Y Return the assessable value calculated.
3017 REM pn_vat_assess_value OUT NUMBER Y Return the VAT assessable value calculated.
3018 REM
3019 REM Call by process_po_tax_wrapper
3020 REM +================================================================================================+
3021 */
3022 PROCEDURE get_assessable_value(
3023 pn_po_hdr_id IN NUMBER,
3024 pn_vendor_id IN NUMBER,
3025 pn_vendor_site_id IN NUMBER,
3026 pn_item_id IN NUMBER,
3027 pn_price IN NUMBER,
3028 pn_qty IN NUMBER,
3029 pv_uom_code IN VARCHAR2,
3030 pv_currency IN VARCHAR2,
3031 pv_action IN VARCHAR2 DEFAULT NULL,
3032 pn_conv_rate IN NUMBER DEFAULT 1,
3033 pn_assessable_value OUT NOCOPY NUMBER,
3034 pn_vat_assess_value OUT NOCOPY NUMBER
3035 )
3036 IS
3037 l_api_name CONSTANT VARCHAR2(30) := 'get_assessable_value';
3038 v_assessable_value NUMBER;
3039 ln_vat_assess_value NUMBER;
3040 ln_default_price NUMBER;
3041 BEGIN
3042
3043 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3044 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
3045 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'parameters:pn_vendor_id,'||to_char(nvl(pn_vendor_id,0))||'pn_vendor_site_id,'||to_char(nvl(pn_vendor_site_id,0))
3046 ||'pn_item_id,'||to_char(nvl(pn_item_id,0))||'pn_price,'||to_char(nvl(pn_price,0))||'pn_qty,'||to_char(nvl(pn_qty,0))||'pv_uom_code,'||to_char(nvl(pv_uom_code,0))
3047 ||'pn_po_hdr_id,'||to_char(nvl(pn_po_hdr_id,0))||'pv_currency,'||to_char(nvl(pv_currency,0))||'pv_action,'||pv_action);
3048 END IF;
3049
3050 v_assessable_value := jai_cmn_setup_pkg.get_po_assessable_value(pn_vendor_id
3051 ,pn_vendor_site_id
3052 ,pn_item_id
3053 ,pv_uom_code);
3054 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3055 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'after get_po_assessable_value,v_assessable_value:'||to_char(nvl(v_assessable_value,0)));
3056 END IF;
3057
3058 IF nvl(v_assessable_value,0) = 0 THEN
3059 v_assessable_value := pn_price * pn_qty;
3060 ELSE
3061 v_assessable_value := v_assessable_value * pn_qty;
3062 v_assessable_value := v_assessable_value * nvl(pn_conv_rate,1);--Modified by Junjian for bug#14729941 on 10-Oct-2012
3063 END IF;
3064
3065 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3066 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'after ja_in_po_func_curr,v_assessable_value:'||to_char(nvl(v_assessable_value,0))||'factor:'||pn_conv_rate);
3067 END IF;
3068
3069 IF pv_action = JAI_CONSTANTS.inserting THEN
3070 ln_default_price := 0;
3071 ELSE
3072 ln_default_price := pn_price;
3073 END IF;
3074 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3075 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'parameters:ln_default_price,'||to_char(nvl(ln_default_price,0)));
3076 END IF;
3077 ln_vat_assess_value := jai_general_pkg.ja_in_vat_assessable_value(p_party_id => pn_vendor_id
3078 ,p_party_site_id => pn_vendor_site_id
3079 ,p_inventory_item_id => pn_item_id
3080 ,p_uom_code => pv_uom_code
3081 ,p_default_price => ln_default_price
3082 ,p_ass_value_date => trunc(SYSDATE)
3083 ,p_party_type => 'V');
3084
3085 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3086 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'after ja_in_vat_assessable_value,ln_vat_assess_value:'||to_char(nvl(ln_vat_assess_value,0))||'factor:'||v_assessable_value);
3087 END IF;
3088 IF nvl(ln_vat_assess_value,0) = 0 THEN
3089 ln_vat_assess_value := pn_price * pn_qty;
3090 ELSE
3091 ln_vat_assess_value := ln_vat_assess_value * pn_qty;
3092 ln_vat_assess_value := ln_vat_assess_value * nvl(pn_conv_rate,1);
3093
3094 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3095 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'after ja_in_po_func_curr,ln_vat_assess_value:'||to_char(nvl(ln_vat_assess_value,0))||'factor:'||v_assessable_value);
3096 END IF;
3097 END IF;
3098 pn_assessable_value := v_assessable_value;
3099 pn_vat_assess_value := ln_vat_assess_value;
3100 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3101 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'after all,ln_vat_assess_value:'||to_char(nvl(ln_vat_assess_value,0))||'v_assessable_value:'||v_assessable_value);
3102 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
3103 END IF;
3104 EXCEPTION
3105 WHEN OTHERS THEN
3106
3107
3108 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
3109 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
3110 END IF;
3111 app_exception.raise_exception;
3112
3113 END get_assessable_value;
3114 /*
3115 REM +======================================================================+
3116 REM Created By : Wenqiong Zhou
3117 REM Creation Date : Jun 1, 2012
3118 REM Bug Number/ER Name : 14040855/JAI Triggers Elimination
3119 REM SubProgram Name : is_split_line
3120 REM Type : Utility API
3121 REM Purpose : To check the new shipment line is split from old line or not.
3122 REM
3123 REM TDD Reference :
3124 REM
3125 REM Assumptions :
3126 REM
3127 REM Parameter IN/OUT Type Required Description and Purpose
3128 REM ----------------------- ------ ------------ ---------- ------------------------------------
3129 REM pn_orig_ship_id IN NUMBER Y Original Shipment ID.
3130 REM pn_po_hdr_id IN NUMBER Y PO header id
3131 REM pn_po_line_id IN NUMBER Y PO Line id
3132 REM
3133 REM Call by process_po_tax_wrapper
3134 REM +================================================================================================+
3135 */
3136 FUNCTION is_split_line(pn_orig_ship_id IN NUMBER, pn_po_hdr_id IN NUMBER, pn_po_line_id IN NUMBER) RETURN BOOLEAN IS
3137 l_api_name CONSTANT VARCHAR2(30) := 'is_split_line';
3138 CURSOR c_get_po_line_loc_details (p_line_location_id IN NUMBER) IS
3139 SELECT po_header_id, po_line_id
3140 FROM JAI_PO_LINE_LOCATIONS
3141 WHERE line_location_id = p_line_location_id;
3142 lb_split_line_flag BOOLEAN;
3143 ln_orig_po_hdr_id NUMBER;
3144 ln_orig_po_line_id NUMBER;
3145 BEGIN
3146
3147 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3148 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
3149 END IF;
3150 lb_split_line_flag := FALSE;
3151 IF pn_orig_ship_id IS NOT NULL THEN
3152 OPEN c_get_po_line_loc_details(pn_orig_ship_id);
3153 FETCH c_get_po_line_loc_details INTO ln_orig_po_hdr_id,ln_orig_po_line_id;
3154 CLOSE c_get_po_line_loc_details;
3155 IF ln_orig_po_hdr_id = pn_po_hdr_id AND ln_orig_po_line_id = pn_po_line_id THEN
3156 lb_split_line_flag := TRUE;
3157 END IF;
3158 END IF;
3159
3160 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3161
3162 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
3163 END IF;
3164 RETURN lb_split_line_flag;
3165 EXCEPTION
3166 WHEN OTHERS THEN
3167
3168
3169 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
3170 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
3171 END IF;
3172 app_exception.raise_exception;
3173
3174 END is_split_line;
3175 /*
3176 REM +======================================================================+
3177 REM Created By : Wenqiong Zhou
3178 REM Creation Date : Jun 1, 2012
3179 REM Bug Number/ER Name : 14040855/JAI Triggers Elimination
3180 REM SubProgram Name : process_split_line
3181 REM Type : Process API
3182 REM Purpose : Update original shipment line in JAI tables and create new data in JAI for split line.
3183 REM
3184 REM TDD Reference :
3185 REM
3186 REM Assumptions :
3187 REM
3188 REM Parameter IN/OUT Type Required Description and Purpose
3189 REM ----------------------- ------ ------------ ---------- ------------------------------------
3190 REM pn_orig_ship_id IN NUMBER Y Original Shipment ID.
3191 REM pn_po_hdr_id IN NUMBER Y PO header id
3192 REM pn_po_line_id IN NUMBER Y PO Line id
3193 REM
3194 REM Call by process_po_tax_wrapper
3195 REM +================================================================================================+
3196 */
3197 PROCEDURE process_split_line
3198 (
3199 pn_orig_ship_id IN NUMBER
3200 ,pn_line_loc_id IN NUMBER
3201 ,pn_quantity IN NUMBER
3202 ,pn_price IN NUMBER
3203 ,pv_type_lookup_code IN VARCHAR2
3204 )
3205 IS
3206 l_api_name CONSTANT VARCHAR2(30) := 'process_split_line';
3207 CURSOR cur_get_prev_qty IS
3208 select quantity
3209 from po_line_locations_all
3210 where line_location_id = pn_orig_ship_id;
3211
3212 CURSOR c_get_po_line_loc_details IS
3213 SELECT *
3214 FROM JAI_PO_LINE_LOCATIONS
3215 WHERE line_location_id = pn_orig_ship_id;
3216
3217 CURSOR c_get_po_taxes (p_line_location_id IN NUMBER) IS
3218 SELECT *
3219 FROM JAI_PO_TAXES
3220 WHERE line_location_id = p_line_location_id;
3221
3222 l_prev_quantity NUMBER;
3223 l_ship_line_amount NUMBER;
3224 l_tax_amount NUMBER;
3225 l_line_focus_id NUMBER;
3226
3227 rec_jai_line JAI_PO_LINE_LOCATIONS%ROWTYPE;
3228
3229 BEGIN
3230
3231 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3232 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
3233 END IF;
3234 /*Get the Quantity of the parent Line */
3235 OPEN cur_get_prev_qty;
3236 FETCH cur_get_prev_qty INTO l_prev_quantity;
3237 CLOSE cur_get_prev_qty;
3238
3239 OPEN c_get_po_line_loc_details;
3240 FETCH c_get_po_line_loc_details INTO rec_jai_line;
3241 CLOSE c_get_po_line_loc_details;
3242
3243 /*Insert into JAI_PO_LINE_LOCATIONS*/
3244 insert_jai_line_locs(
3245 v_line_loc_id => pn_line_loc_id
3246 ,v_po_hdr_id => rec_jai_line.po_header_id
3247 ,v_po_line_id => rec_jai_line.po_line_id
3248 ,v_cre_dt => rec_jai_line.creation_date
3249 ,v_cre_by => rec_jai_line.created_by
3250 ,v_last_upd_dt => rec_jai_line.last_update_date
3251 ,v_last_upd_by => rec_jai_line.last_updated_by
3252 ,v_last_upd_login => rec_jai_line.LAST_UPDATE_LOGIN
3253 ,flag => 'I'
3254 ,v_item_id => rec_jai_line.item_id
3255 ,v_vendor_id => rec_jai_line.vendor_id
3256 ,v_vendor_site_id => rec_jai_line.vendor_site_id
3257 ,v_tax_category_id => rec_jai_line.tax_category_id
3258 ,v_price_override => pn_price
3259 ,v_qty => pn_QUANTITY
3260 ,v_currency => rec_jai_line.currency
3261 ,v_line_focus_id => l_line_focus_id
3262 );
3263
3264
3265
3266 /*Insert Taxes of the parent line in to the split line after adjusting the Tax Amount and Tax Target Amount*/
3267 for r_get_po_taxes in c_get_po_taxes(pn_orig_ship_id) loop
3268
3269 insert_po_taxes
3270 ( pv_type_lookup_code, NULL,
3271 l_line_focus_id, pn_line_loc_id,
3272 r_get_po_taxes.tax_line_no, r_get_po_taxes.po_line_id, r_get_po_taxes.po_header_id,
3273 r_get_po_taxes.precedence_1, r_get_po_taxes.precedence_2, r_get_po_taxes.precedence_3,
3274 r_get_po_taxes.precedence_4, r_get_po_taxes.precedence_5,
3275 r_get_po_taxes.precedence_6, r_get_po_taxes.precedence_7, r_get_po_taxes.precedence_8,
3276 r_get_po_taxes.precedence_9, r_get_po_taxes.precedence_10,
3277 r_get_po_taxes.tax_id, NULL, 0, r_get_po_taxes.currency,
3278 r_get_po_taxes.tax_rate, r_get_po_taxes.qty_rate, r_get_po_taxes.uom,
3279 (r_get_po_taxes.tax_amount * pn_QUANTITY/l_prev_quantity), r_get_po_taxes.tax_type, r_get_po_taxes.modvat_flag,
3280 r_get_po_taxes.vendor_id, (r_get_po_taxes.tax_target_amount * pn_QUANTITY/l_prev_quantity),
3281 r_get_po_taxes.creation_date, r_get_po_taxes.created_by, r_get_po_taxes.last_update_date,
3282 r_get_po_taxes.last_updated_by, r_get_po_taxes.last_update_login,
3283 r_get_po_taxes.tax_category_id
3284 );
3285
3286 END LOOP;
3287
3288 select sum(tax_amount) into l_tax_amount
3289 from jai_po_taxes
3290 where line_location_id = pn_line_loc_id;
3291
3292 l_ship_line_amount := pn_QUANTITY * pn_price;
3293
3294 UPDATE JAI_PO_LINE_LOCATIONS
3295 SET tax_modified_flag = 'N',
3296 tax_amount = l_tax_amount,
3297 total_amount = l_ship_line_amount + l_tax_amount
3298
3299 WHERE line_location_id = pn_line_loc_id;
3300 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3301 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
3302 END IF;
3303 EXCEPTION
3304 WHEN OTHERS THEN
3305
3306
3307 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
3308 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
3309 END IF;
3310 app_exception.raise_exception;
3311
3312 END process_split_line;
3313
3314 /*
3315 REM +======================================================================+
3316 REM Created By : Wenqiong Zhou
3317 REM Creation Date : Jun 1, 2012
3318 REM Bug Number/ER Name : 14040855/JAI Triggers Elimination
3319 REM SubProgram Name : process_dist
3320 REM Type : Process API
3321 REM Purpose : Replace the logic in JAI_PO_DA_TRIGGER_PKG,will be fired when
3322 REM autocreate PO copy from requisition.
3323 REM
3324 REM TDD Reference :
3325 REM
3326 REM Assumptions :
3327 REM
3328 REM Parameter IN/OUT Type Required Description and Purpose
3329 REM ----------------------- ------ ----------------------------- ---------- ------------------------------------
3330 REM prec_po_location IN PO_LINE_LOCATIONS_ALL%ROWTYPE Y PO Line location
3331 REM
3332 REM Call by process_po_shipment_line
3333 REM +================================================================================================+
3334 */
3335 PROCEDURE process_dist(prec_po_location IN PO_LINE_LOCATIONS_ALL%ROWTYPE) IS
3336
3337 rec_dist PO_DISTRIBUTIONS_ALL%ROWTYPE;
3338
3339 /*v_po_line_id PO_DISTRIBUTIONS_ALL.Po_Line_Id%TYPE ;
3340 v_po_hdr_id PO_DISTRIBUTIONS_ALL.Po_Header_Id%TYPE;
3341 v_cre_dt PO_DISTRIBUTIONS_ALL.Creation_Date%TYPE;
3342 v_cre_by PO_DISTRIBUTIONS_ALL.Created_By%TYPE;
3343 v_last_upd_dt PO_DISTRIBUTIONS_ALL.Last_Update_Date%TYPE ;
3344 v_last_upd_by PO_DISTRIBUTIONS_ALL.Last_Updated_By%TYPE;
3345 v_last_upd_login PO_DISTRIBUTIONS_ALL.Last_Update_Login%TYPE;
3346
3347 v_line_location_id PO_DISTRIBUTIONS_ALL.line_location_id%TYPE;
3348
3349 v_type_lookup_code po_headers_all.type_lookup_code%TYPE;
3350 v_Quot_Class_Code po_headers_all.Quotation_Class_Code%TYPE;
3351 v_Ship_Loc_Id po_headers_all.Ship_To_Location_Id%TYPE;
3352 v_vendor_id po_headers_all.Vendor_id%TYPE;
3353 v_vendor_site_id po_headers_all.vendor_Site_Id%TYPE;
3354 v_curr po_headers_all.currency_code%TYPE;
3355 v_rate po_headers_all.rate%TYPE;
3356 v_rate_type po_headers_all.rate_type%TYPE;
3357 v_rate_date po_headers_all.rate_date%TYPE;
3358
3359 v_style_id po_headers_all.style_id%TYPE;
3360 v_override_flag JAI_CMN_VENDOR_SITES.override_flag%TYPE;
3361 v_tax_modified_flag JAI_PO_LINE_LOCATIONS.tax_modified_flag%TYPE;
3362 */
3363 CURSOR c_dist IS
3364 SELECT *
3365 FROM PO_DISTRIBUTIONS_ALL
3366 WHERE PO_HEADER_ID = prec_po_location.po_header_id
3367 AND PO_LINE_ID = prec_po_location.po_line_id
3368 AND LINE_LOCATION_ID = prec_po_location.line_location_id;
3369
3370 /*CURSOR get_po_hdr(c_po_header_id number) IS
3371 SELECT type_lookup_code,Quotation_Class_Code,Ship_To_Location_Id,
3372 rate, rate_type, rate_date,currency_code,
3373 nvl(Vendor_id,0), nvl(vendor_Site_Id,0),style_id
3374 FROM po_headers_all
3375 WHERE po_header_id = v_po_hdr_id;
3376
3377 CURSOR tax_override_flag_cur(c_supplier_id number, c_supp_site_id number) IS
3378 SELECT override_flag
3379 FROM JAI_CMN_VENDOR_SITES
3380 WHERE vendor_id = c_supplier_id
3381 AND vendor_site_id = c_supp_site_id;
3382
3383 Cursor c_get_tax_modified_flag IS
3384 SELECT tax_modified_flag
3385 FROM JAI_PO_LINE_LOCATIONS
3386 WHERE line_location_id = v_line_location_id;
3387
3388 CURSOR c_loc_line_cnt IS
3389 SELECT count(line_location_id)
3390 FROM JAI_PO_LINE_LOCATIONS
3391 WHERE line_location_id=v_line_location_id;
3392
3393
3394 v_count NUMBER;
3395 */
3396 lv_return_code VARCHAR2(30);
3397 lv_return_message VARCHAR2(200);
3398 l_api_name CONSTANT VARCHAR2(200) := 'process_dist';
3399 BEGIN
3400
3401 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3402 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
3403
3404 END IF;
3405
3406 OPEN c_dist;
3407 LOOP
3408 FETCH c_dist INTO rec_dist;
3409 EXIT WHEN c_dist%NOTFOUND;
3410 process_distribution_line(rec_dist,
3411 pv_return_code => lv_return_code ,
3412 pv_return_message => lv_return_message
3413 );
3414
3415
3416
3417 /* Move below code to process_distribution_line;
3418 IF nvl(rec_dist.req_distribution_id,0) <> 0 THEN
3419 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3420 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'Its copied from requisition by autocreate.');
3421 END IF;
3422
3423
3424 v_po_line_id := rec_dist.Po_Line_Id ;
3425 v_po_hdr_id := rec_dist.Po_Header_Id;
3426 v_cre_dt := rec_dist.Creation_Date;
3427 v_cre_by := rec_dist.Created_By;
3428 v_last_upd_dt := rec_dist.Last_Update_Date ;
3429 v_last_upd_by := rec_dist.Last_Updated_By;
3430 v_last_upd_login := rec_dist.Last_Update_Login;
3431 v_rate := rec_dist.rate;
3432 v_line_location_id := rec_dist.line_location_id;
3433 OPEN get_po_hdr(v_po_hdr_id);
3434 FETCH get_po_hdr into v_type_lookup_code,v_Quot_Class_Code,v_Ship_Loc_Id,
3435 v_rate, v_rate_type, v_rate_date,v_curr,v_vendor_id, v_vendor_site_id,
3436 v_style_id;
3437 CLOSE get_po_hdr;
3438
3439 IF jai_cmn_utils_pkg.validate_po_type(p_style_id => v_style_id) = FALSE THEN
3440 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3441 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'style_id:'||to_char(v_style_id)||'validate_po_type is false,return');
3442 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
3443 END IF;
3444
3445 return;
3446 END IF;
3447
3448 OPEN tax_override_flag_cur(v_vendor_id, v_vendor_site_id);
3449 FETCH tax_override_flag_cur into v_override_flag;
3450 CLOSE tax_override_flag_cur;
3451
3452 OPEN c_get_tax_modified_flag ;
3453 FETCH c_get_tax_modified_flag INTO v_tax_modified_flag ;
3454 CLOSE c_get_tax_modified_flag;
3455
3456 IF nvl(rec_dist.po_release_id,0) = 0 THEN
3457 IF nvl(v_override_flag,'N') = 'N' and NVL(v_tax_modified_flag, 'N') = 'N' THEN
3458 delete_po_taxes(pn_po_line_id =>v_po_line_id, pn_line_loc_id => v_line_location_id);
3459 delete_jai_po_lines(pn_line_loc_id =>v_line_location_id);
3460 END IF ;
3461 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3462 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'po_release_id is null, delete jai data before return.');
3463 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
3464 END IF;
3465 return;
3466 ELSE
3467 OPEN c_loc_line_cnt;
3468 FETCH c_loc_line_cnt INTO v_count;
3469 CLOSE c_loc_line_cnt;
3470 IF v_count > 0 THEN
3471 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3472 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'po_release_id is not null and jai data exists, just return.');
3473 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
3474 END IF;
3475 RETURN;
3476 END IF;
3477 END IF;
3478 IF nvl(v_override_flag,'N') = 'Y' THEN
3479 jai_po_tax_pkg.copy_reqn_taxes(v_vendor_id ,
3480 v_vendor_Site_Id ,
3481 v_Po_Hdr_Id ,
3482 v_Po_Line_Id ,
3483 v_Line_Location_id ,
3484 v_Type_Lookup_Code ,
3485 v_Quot_Class_Code ,
3486 v_Ship_Loc_Id ,
3487 NULL,--v_Org_Id ,
3488 v_Cre_Dt ,
3489 v_Cre_By ,
3490 v_Last_Upd_Dt ,
3491 v_Last_Upd_By ,
3492 v_Last_Upd_Login
3493 , v_rate
3494 , v_rate_type
3495 , v_rate_date
3496 , v_curr
3497 );
3498
3499 END IF;
3500
3501 END IF;
3502 */ END LOOP;
3503 CLOSE c_dist;
3504 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3505 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
3506 END IF;
3507 EXCEPTION
3508 WHEN OTHERS THEN
3509
3510
3511 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
3512 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
3513 END IF;
3514 app_exception.raise_exception;
3515
3516 END process_dist;
3517 /*
3518 REM +======================================================================+
3519 REM Created By : Qiong Liu
3520 REM Creation Date : Jun 1, 2012
3521 REM Bug Number/ER Name : 14040855/JAI Triggers Elimination
3522 REM SubProgram Name : process_requisition
3523 REM Type : Process API
3524 REM Purpose : Process Requistion's creation/updating.
3525 REM
3526 REM
3527 REM TDD Reference :
3528 REM
3529 REM Assumptions :
3530 REM
3531 REM Parameter IN/OUT Type Required Description and Purpose
3532 REM ----------------------- ------ ------------------- ---------- ------------------------------------
3533 REM pn_requisition_hdr_id IN NUMBer Y PO Requisition Header Id.
3534 REM
3535 REM CALLED BY
3536 REM JAI_TAX_PROCESSING_PKG.calculate_tax
3537 REM +================================================================================================+
3538 */
3539 PROCEDURE process_requisition(pn_requisition_hdr_id IN NUMBER) IS
3540
3541 CURSOR c_all_req_lines IS
3542 SELECT REQUISITION_LINE_ID
3543 FROM PO_REQUISITION_LINES_ALL
3544 WHERE REQUISITION_HEADER_ID = pn_requisition_hdr_id;
3545
3546 CURSOR c_line_exist(cn_req_line_id NUMBER) IS
3547 SELECT 1
3548 FROM JAI_PO_REQ_LINES
3549 WHERE Requisition_Line_Id = cn_req_line_id
3550 AND Requisition_Header_Id = pn_requisition_hdr_id;
3551
3552 ln_line_exist NUMBER;
3553 lv_action VARCHAR2(20);
3554 l_api_name CONSTANT VARCHAR2(200) := 'process_requisition';
3555 BEGIN
3556 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3557 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
3558 END IF;
3559
3560
3561 FOR line_rec IN c_all_req_lines
3562 LOOP
3563
3564 OPEN c_line_exist(line_rec.REQUISITION_LINE_ID);
3565 FETCH c_line_exist INTO ln_line_exist;
3566 CLOSE c_line_exist;
3567 IF nvl(ln_line_exist,0) = 0 THEN
3568 lv_action := JAI_CONSTANTS.inserting;
3569 ELSIF nvl(ln_line_exist,0) = 1 THEN
3570 lv_action := JAI_CONSTANTS.updating;
3571 END IF;
3572
3573 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3574 FND_LOG.STRING(log_level =>G_LEVEL_PROCEDURE
3575 ,module =>l_api_name
3576 ,message => '**********begin requisition*********************'||lv_action);
3577 END IF;
3578 process_po_req_line(line_rec.REQUISITION_LINE_ID,null,lv_action);
3579 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3580 FND_LOG.STRING(log_level =>G_LEVEL_PROCEDURE
3581 ,module =>l_api_name
3582 ,message => '**********end requisition*********************'||lv_action);
3583 END IF;
3584 END LOOP;
3585 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3586 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
3587 END IF;
3588 EXCEPTION
3589 WHEN OTHERS THEN
3590 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
3591 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
3592 END IF;
3593 END process_requisition;
3594 /*
3595 REM +======================================================================+
3596 REM Created By : Qiong Liu
3597 REM Creation Date : Jun 1, 2012
3598 REM Bug Number/ER Name : 14040855/JAI Triggers Elimination
3599 REM SubProgram Name : process_po_req_line
3600 REM Type : Process API
3601 REM Purpose : Process Requistion Line's creation/updating.
3602 REM
3603 REM
3604 REM TDD Reference :
3605 REM
3606 REM Assumptions :
3607 REM
3608 REM Parameter IN/OUT Type Required Description and Purpose
3609 REM ----------------------- ------ ------------------- ---------- ------------------------------------
3610 REM pn_requisition_line_id IN NUMBER Y PO Requisition Line Id.
3611 REM pv_action IN VARCHAR2 Y Indicate action is insert/update.
3612 REM
3613 REM CALLED BY
3614 REM process_requisition
3615 REM +================================================================================================+
3616 */
3617 procedure process_po_req_line
3618 (
3619 pn_requisition_line_id NUMBER,
3620 pr_requisition_line PO_REQUISITION_LINES_ALL%ROWTYPE DEFAULT NULL,--added by Wenqiong for bug16288154 .
3621 pv_action VARCHAR2
3622 ) IS
3623 CURSOR get_requesition_info IS
3624 SELECT *
3625 FROM PO_REQUISITION_LINES_ALL
3626 WHERE requisition_line_id = pn_requisition_line_id;
3627 r_requisition_line PO_REQUISITION_LINES_ALL%ROWTYPE;
3628 l_api_name CONSTANT VARCHAR2(200) := 'process_po_req_line';
3629 BEGIN
3630 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3631 FND_LOG.STRING(log_level =>G_LEVEL_PROCEDURE
3632 ,module =>G_MODULE_NAME||l_api_name||'.BEGIN'
3633 ,message => G_PKG_NAME||':'||l_api_name||'()+');
3634 FND_LOG.STRING(log_level =>G_LEVEL_PROCEDURE
3635 ,module =>G_MODULE_NAME||l_api_name
3636 ,message => 'pn_requisition_line_id'||pn_requisition_line_id||' pv_action='||pv_action);
3637 END IF;
3638 IF pr_requisition_line.REQUISITION_LINE_ID IS NULL THEN
3639 OPEN get_requesition_info;
3640 FETCH get_requesition_info INTO r_requisition_line;
3641 CLOSE get_requesition_info;
3642 ELSE
3643 r_requisition_line.REQUISITION_LINE_ID := pr_requisition_line.REQUISITION_LINE_ID ;
3644 r_requisition_line.REQUISITION_HEADER_ID := pr_requisition_line.REQUISITION_HEADER_ID ;
3645 r_requisition_line.LINE_NUM := pr_requisition_line.LINE_NUM ;
3646 r_requisition_line.LINE_TYPE_ID := pr_requisition_line.LINE_TYPE_ID ;
3647 r_requisition_line.CATEGORY_ID := pr_requisition_line.CATEGORY_ID ;
3648 r_requisition_line.ITEM_DESCRIPTION := pr_requisition_line.ITEM_DESCRIPTION ;
3649 r_requisition_line.UNIT_MEAS_LOOKUP_CODE := pr_requisition_line.UNIT_MEAS_LOOKUP_CODE ;
3650 r_requisition_line.UNIT_PRICE := pr_requisition_line.UNIT_PRICE ;
3651 r_requisition_line.QUANTITY := pr_requisition_line.QUANTITY ;
3652 r_requisition_line.DELIVER_TO_LOCATION_ID := pr_requisition_line.DELIVER_TO_LOCATION_ID ;
3653 r_requisition_line.TO_PERSON_ID := pr_requisition_line.TO_PERSON_ID ;
3654 r_requisition_line.LAST_UPDATE_DATE := pr_requisition_line.LAST_UPDATE_DATE ;
3655 r_requisition_line.LAST_UPDATED_BY := pr_requisition_line.LAST_UPDATED_BY ;
3656 r_requisition_line.SOURCE_TYPE_CODE := pr_requisition_line.SOURCE_TYPE_CODE ;
3657 r_requisition_line.LAST_UPDATE_LOGIN := pr_requisition_line.LAST_UPDATE_LOGIN ;
3658 r_requisition_line.CREATION_DATE := pr_requisition_line.CREATION_DATE ;
3659 r_requisition_line.CREATED_BY := pr_requisition_line.CREATED_BY ;
3660 r_requisition_line.ITEM_ID := pr_requisition_line.ITEM_ID ;
3661 r_requisition_line.ITEM_REVISION := pr_requisition_line.ITEM_REVISION ;
3662 r_requisition_line.QUANTITY_DELIVERED := pr_requisition_line.QUANTITY_DELIVERED ;
3663 r_requisition_line.SUGGESTED_BUYER_ID := pr_requisition_line.SUGGESTED_BUYER_ID ;
3664 r_requisition_line.ENCUMBERED_FLAG := pr_requisition_line.ENCUMBERED_FLAG ;
3665 r_requisition_line.RFQ_REQUIRED_FLAG := pr_requisition_line.RFQ_REQUIRED_FLAG ;
3666 r_requisition_line.NEED_BY_DATE := pr_requisition_line.NEED_BY_DATE ;
3667 r_requisition_line.LINE_LOCATION_ID := pr_requisition_line.LINE_LOCATION_ID ;
3668 r_requisition_line.MODIFIED_BY_AGENT_FLAG := pr_requisition_line.MODIFIED_BY_AGENT_FLAG ;
3669 r_requisition_line.PARENT_REQ_LINE_ID := pr_requisition_line.PARENT_REQ_LINE_ID ;
3670 r_requisition_line.JUSTIFICATION := pr_requisition_line.JUSTIFICATION ;
3671 r_requisition_line.NOTE_TO_AGENT := pr_requisition_line.NOTE_TO_AGENT ;
3672 r_requisition_line.NOTE_TO_RECEIVER := pr_requisition_line.NOTE_TO_RECEIVER ;
3673 r_requisition_line.PURCHASING_AGENT_ID := pr_requisition_line.PURCHASING_AGENT_ID ;
3674 r_requisition_line.DOCUMENT_TYPE_CODE := pr_requisition_line.DOCUMENT_TYPE_CODE ;
3675 r_requisition_line.BLANKET_PO_HEADER_ID := pr_requisition_line.BLANKET_PO_HEADER_ID ;
3676 r_requisition_line.BLANKET_PO_LINE_NUM := pr_requisition_line.BLANKET_PO_LINE_NUM ;
3677 r_requisition_line.CURRENCY_CODE := pr_requisition_line.CURRENCY_CODE ;
3678 r_requisition_line.RATE_TYPE := pr_requisition_line.RATE_TYPE ;
3679 r_requisition_line.RATE_DATE := pr_requisition_line.RATE_DATE ;
3680 r_requisition_line.RATE := pr_requisition_line.RATE ;
3681 r_requisition_line.CURRENCY_UNIT_PRICE := pr_requisition_line.CURRENCY_UNIT_PRICE ;
3682 r_requisition_line.SUGGESTED_VENDOR_NAME := pr_requisition_line.SUGGESTED_VENDOR_NAME ;
3683 r_requisition_line.SUGGESTED_VENDOR_LOCATION := pr_requisition_line.SUGGESTED_VENDOR_LOCATION ;
3684 r_requisition_line.SUGGESTED_VENDOR_CONTACT := pr_requisition_line.SUGGESTED_VENDOR_CONTACT ;
3685 r_requisition_line.SUGGESTED_VENDOR_PHONE := pr_requisition_line.SUGGESTED_VENDOR_PHONE ;
3686 r_requisition_line.SUGGESTED_VENDOR_PRODUCT_CODE := pr_requisition_line.SUGGESTED_VENDOR_PRODUCT_CODE ;
3687 r_requisition_line.UN_NUMBER_ID := pr_requisition_line.UN_NUMBER_ID ;
3688 r_requisition_line.HAZARD_CLASS_ID := pr_requisition_line.HAZARD_CLASS_ID ;
3689 r_requisition_line.MUST_USE_SUGG_VENDOR_FLAG := pr_requisition_line.MUST_USE_SUGG_VENDOR_FLAG ;
3690 r_requisition_line.REFERENCE_NUM := pr_requisition_line.REFERENCE_NUM ;
3691 r_requisition_line.ON_RFQ_FLAG := pr_requisition_line.ON_RFQ_FLAG ;
3692 r_requisition_line.URGENT_FLAG := pr_requisition_line.URGENT_FLAG ;
3693 r_requisition_line.CANCEL_FLAG := pr_requisition_line.CANCEL_FLAG ;
3694 r_requisition_line.SOURCE_ORGANIZATION_ID := pr_requisition_line.SOURCE_ORGANIZATION_ID ;
3695 r_requisition_line.SOURCE_SUBINVENTORY := pr_requisition_line.SOURCE_SUBINVENTORY ;
3696 r_requisition_line.DESTINATION_TYPE_CODE := pr_requisition_line.DESTINATION_TYPE_CODE ;
3697 r_requisition_line.DESTINATION_ORGANIZATION_ID := pr_requisition_line.DESTINATION_ORGANIZATION_ID ;
3698 r_requisition_line.DESTINATION_SUBINVENTORY := pr_requisition_line.DESTINATION_SUBINVENTORY ;
3699 r_requisition_line.QUANTITY_CANCELLED := pr_requisition_line.QUANTITY_CANCELLED ;
3700 r_requisition_line.CANCEL_DATE := pr_requisition_line.CANCEL_DATE ;
3701 r_requisition_line.CANCEL_REASON := pr_requisition_line.CANCEL_REASON ;
3702 r_requisition_line.CLOSED_CODE := pr_requisition_line.CLOSED_CODE ;
3703 r_requisition_line.AGENT_RETURN_NOTE := pr_requisition_line.AGENT_RETURN_NOTE ;
3704 r_requisition_line.CHANGED_AFTER_RESEARCH_FLAG := pr_requisition_line.CHANGED_AFTER_RESEARCH_FLAG ;
3705 r_requisition_line.VENDOR_ID := pr_requisition_line.VENDOR_ID ;
3706 r_requisition_line.VENDOR_SITE_ID := pr_requisition_line.VENDOR_SITE_ID ;
3707 r_requisition_line.VENDOR_CONTACT_ID := pr_requisition_line.VENDOR_CONTACT_ID ;
3708 r_requisition_line.RESEARCH_AGENT_ID := pr_requisition_line.RESEARCH_AGENT_ID ;
3709 r_requisition_line.ON_LINE_FLAG := pr_requisition_line.ON_LINE_FLAG ;
3710 r_requisition_line.WIP_ENTITY_ID := pr_requisition_line.WIP_ENTITY_ID ;
3711 r_requisition_line.WIP_LINE_ID := pr_requisition_line.WIP_LINE_ID ;
3712 r_requisition_line.WIP_REPETITIVE_SCHEDULE_ID := pr_requisition_line.WIP_REPETITIVE_SCHEDULE_ID ;
3713 r_requisition_line.WIP_OPERATION_SEQ_NUM := pr_requisition_line.WIP_OPERATION_SEQ_NUM ;
3714 r_requisition_line.WIP_RESOURCE_SEQ_NUM := pr_requisition_line.WIP_RESOURCE_SEQ_NUM ;
3715 r_requisition_line.ATTRIBUTE_CATEGORY := pr_requisition_line.ATTRIBUTE_CATEGORY ;
3716 r_requisition_line.DESTINATION_CONTEXT := pr_requisition_line.DESTINATION_CONTEXT ;
3717 r_requisition_line.INVENTORY_SOURCE_CONTEXT := pr_requisition_line.INVENTORY_SOURCE_CONTEXT ;
3718 r_requisition_line.VENDOR_SOURCE_CONTEXT := pr_requisition_line.VENDOR_SOURCE_CONTEXT ;
3719 r_requisition_line.ATTRIBUTE1 := pr_requisition_line.ATTRIBUTE1 ;
3720 r_requisition_line.ATTRIBUTE2 := pr_requisition_line.ATTRIBUTE2 ;
3721 r_requisition_line.ATTRIBUTE3 := pr_requisition_line.ATTRIBUTE3 ;
3722 r_requisition_line.ATTRIBUTE4 := pr_requisition_line.ATTRIBUTE4 ;
3723 r_requisition_line.ATTRIBUTE5 := pr_requisition_line.ATTRIBUTE5 ;
3724 r_requisition_line.ATTRIBUTE6 := pr_requisition_line.ATTRIBUTE6 ;
3725 r_requisition_line.ATTRIBUTE7 := pr_requisition_line.ATTRIBUTE7 ;
3726 r_requisition_line.ATTRIBUTE8 := pr_requisition_line.ATTRIBUTE8 ;
3727 r_requisition_line.ATTRIBUTE9 := pr_requisition_line.ATTRIBUTE9 ;
3728 r_requisition_line.ATTRIBUTE10 := pr_requisition_line.ATTRIBUTE10 ;
3729 r_requisition_line.ATTRIBUTE11 := pr_requisition_line.ATTRIBUTE11 ;
3730 r_requisition_line.ATTRIBUTE12 := pr_requisition_line.ATTRIBUTE12 ;
3731 r_requisition_line.ATTRIBUTE13 := pr_requisition_line.ATTRIBUTE13 ;
3732 r_requisition_line.ATTRIBUTE14 := pr_requisition_line.ATTRIBUTE14 ;
3733 r_requisition_line.ATTRIBUTE15 := pr_requisition_line.ATTRIBUTE15 ;
3734 r_requisition_line.BOM_RESOURCE_ID := pr_requisition_line.BOM_RESOURCE_ID ;
3735 r_requisition_line.REQUEST_ID := pr_requisition_line.REQUEST_ID ;
3736 r_requisition_line.PROGRAM_APPLICATION_ID := pr_requisition_line.PROGRAM_APPLICATION_ID ;
3737 r_requisition_line.PROGRAM_ID := pr_requisition_line.PROGRAM_ID ;
3738 r_requisition_line.PROGRAM_UPDATE_DATE := pr_requisition_line.PROGRAM_UPDATE_DATE ;
3739 r_requisition_line.USSGL_TRANSACTION_CODE := pr_requisition_line.USSGL_TRANSACTION_CODE ;
3740 r_requisition_line.GOVERNMENT_CONTEXT := pr_requisition_line.GOVERNMENT_CONTEXT ;
3741 r_requisition_line.CLOSED_REASON := pr_requisition_line.CLOSED_REASON ;
3742 r_requisition_line.CLOSED_DATE := pr_requisition_line.CLOSED_DATE ;
3743 r_requisition_line.TRANSACTION_REASON_CODE := pr_requisition_line.TRANSACTION_REASON_CODE ;
3744 r_requisition_line.QUANTITY_RECEIVED := pr_requisition_line.QUANTITY_RECEIVED ;
3745 r_requisition_line.SOURCE_REQ_LINE_ID := pr_requisition_line.SOURCE_REQ_LINE_ID ;
3746 r_requisition_line.ORG_ID := pr_requisition_line.ORG_ID ;
3747 r_requisition_line.GLOBAL_ATTRIBUTE1 := pr_requisition_line.GLOBAL_ATTRIBUTE1 ;
3748 r_requisition_line.GLOBAL_ATTRIBUTE2 := pr_requisition_line.GLOBAL_ATTRIBUTE2 ;
3749 r_requisition_line.GLOBAL_ATTRIBUTE3 := pr_requisition_line.GLOBAL_ATTRIBUTE3 ;
3750 r_requisition_line.GLOBAL_ATTRIBUTE4 := pr_requisition_line.GLOBAL_ATTRIBUTE4 ;
3751 r_requisition_line.GLOBAL_ATTRIBUTE5 := pr_requisition_line.GLOBAL_ATTRIBUTE5 ;
3752 r_requisition_line.GLOBAL_ATTRIBUTE6 := pr_requisition_line.GLOBAL_ATTRIBUTE6 ;
3753 r_requisition_line.GLOBAL_ATTRIBUTE7 := pr_requisition_line.GLOBAL_ATTRIBUTE7 ;
3754 r_requisition_line.GLOBAL_ATTRIBUTE8 := pr_requisition_line.GLOBAL_ATTRIBUTE8 ;
3755 r_requisition_line.GLOBAL_ATTRIBUTE9 := pr_requisition_line.GLOBAL_ATTRIBUTE9 ;
3756 r_requisition_line.GLOBAL_ATTRIBUTE10 := pr_requisition_line.GLOBAL_ATTRIBUTE10 ;
3757 r_requisition_line.GLOBAL_ATTRIBUTE11 := pr_requisition_line.GLOBAL_ATTRIBUTE11 ;
3758 r_requisition_line.GLOBAL_ATTRIBUTE12 := pr_requisition_line.GLOBAL_ATTRIBUTE12 ;
3759 r_requisition_line.GLOBAL_ATTRIBUTE13 := pr_requisition_line.GLOBAL_ATTRIBUTE13 ;
3760 r_requisition_line.GLOBAL_ATTRIBUTE14 := pr_requisition_line.GLOBAL_ATTRIBUTE14 ;
3761 r_requisition_line.GLOBAL_ATTRIBUTE15 := pr_requisition_line.GLOBAL_ATTRIBUTE15 ;
3762 r_requisition_line.GLOBAL_ATTRIBUTE16 := pr_requisition_line.GLOBAL_ATTRIBUTE16 ;
3763 r_requisition_line.GLOBAL_ATTRIBUTE17 := pr_requisition_line.GLOBAL_ATTRIBUTE17 ;
3764 r_requisition_line.GLOBAL_ATTRIBUTE18 := pr_requisition_line.GLOBAL_ATTRIBUTE18 ;
3765 r_requisition_line.GLOBAL_ATTRIBUTE19 := pr_requisition_line.GLOBAL_ATTRIBUTE19 ;
3766 r_requisition_line.GLOBAL_ATTRIBUTE20 := pr_requisition_line.GLOBAL_ATTRIBUTE20 ;
3767 r_requisition_line.GLOBAL_ATTRIBUTE_CATEGORY := pr_requisition_line.GLOBAL_ATTRIBUTE_CATEGORY ;
3768 r_requisition_line.KANBAN_CARD_ID := pr_requisition_line.KANBAN_CARD_ID ;
3769 r_requisition_line.CATALOG_TYPE := pr_requisition_line.CATALOG_TYPE ;
3770 r_requisition_line.CATALOG_SOURCE := pr_requisition_line.CATALOG_SOURCE ;
3771 r_requisition_line.MANUFACTURER_ID := pr_requisition_line.MANUFACTURER_ID ;
3772 r_requisition_line.MANUFACTURER_NAME := pr_requisition_line.MANUFACTURER_NAME ;
3773 r_requisition_line.MANUFACTURER_PART_NUMBER := pr_requisition_line.MANUFACTURER_PART_NUMBER ;
3774 r_requisition_line.REQUESTER_EMAIL := pr_requisition_line.REQUESTER_EMAIL ;
3775 r_requisition_line.REQUESTER_FAX := pr_requisition_line.REQUESTER_FAX ;
3776 r_requisition_line.REQUESTER_PHONE := pr_requisition_line.REQUESTER_PHONE ;
3777 r_requisition_line.UNSPSC_CODE := pr_requisition_line.UNSPSC_CODE ;
3778 r_requisition_line.OTHER_CATEGORY_CODE := pr_requisition_line.OTHER_CATEGORY_CODE ;
3779 r_requisition_line.SUPPLIER_DUNS := pr_requisition_line.SUPPLIER_DUNS ;
3780 r_requisition_line.TAX_STATUS_INDICATOR := pr_requisition_line.TAX_STATUS_INDICATOR ;
3781 r_requisition_line.PCARD_FLAG := pr_requisition_line.PCARD_FLAG ;
3782 r_requisition_line.NEW_SUPPLIER_FLAG := pr_requisition_line.NEW_SUPPLIER_FLAG ;
3783 r_requisition_line.AUTO_RECEIVE_FLAG := pr_requisition_line.AUTO_RECEIVE_FLAG ;
3784 r_requisition_line.TAX_USER_OVERRIDE_FLAG := pr_requisition_line.TAX_USER_OVERRIDE_FLAG ;
3785 r_requisition_line.TAX_CODE_ID := pr_requisition_line.TAX_CODE_ID ;
3786 r_requisition_line.NOTE_TO_VENDOR := pr_requisition_line.NOTE_TO_VENDOR ;
3787 r_requisition_line.OKE_CONTRACT_VERSION_ID := pr_requisition_line.OKE_CONTRACT_VERSION_ID ;
3788 r_requisition_line.OKE_CONTRACT_HEADER_ID := pr_requisition_line.OKE_CONTRACT_HEADER_ID ;
3789 r_requisition_line.ITEM_SOURCE_ID := pr_requisition_line.ITEM_SOURCE_ID ;
3790 r_requisition_line.SUPPLIER_REF_NUMBER := pr_requisition_line.SUPPLIER_REF_NUMBER ;
3791 r_requisition_line.SECONDARY_UNIT_OF_MEASURE := pr_requisition_line.SECONDARY_UNIT_OF_MEASURE ;
3792 r_requisition_line.SECONDARY_QUANTITY := pr_requisition_line.SECONDARY_QUANTITY ;
3793 r_requisition_line.PREFERRED_GRADE := pr_requisition_line.PREFERRED_GRADE ;
3794 r_requisition_line.SECONDARY_QUANTITY_RECEIVED := pr_requisition_line.SECONDARY_QUANTITY_RECEIVED ;
3795 r_requisition_line.SECONDARY_QUANTITY_CANCELLED := pr_requisition_line.SECONDARY_QUANTITY_CANCELLED ;
3796 r_requisition_line.VMI_FLAG := pr_requisition_line.VMI_FLAG ;
3797 r_requisition_line.AUCTION_HEADER_ID := pr_requisition_line.AUCTION_HEADER_ID ;
3798 r_requisition_line.AUCTION_DISPLAY_NUMBER := pr_requisition_line.AUCTION_DISPLAY_NUMBER ;
3799 r_requisition_line.AUCTION_LINE_NUMBER := pr_requisition_line.AUCTION_LINE_NUMBER ;
3800 r_requisition_line.REQS_IN_POOL_FLAG := pr_requisition_line.REQS_IN_POOL_FLAG ;
3801 r_requisition_line.BID_NUMBER := pr_requisition_line.BID_NUMBER ;
3802 r_requisition_line.BID_LINE_NUMBER := pr_requisition_line.BID_LINE_NUMBER ;
3803 r_requisition_line.NONCAT_TEMPLATE_ID := pr_requisition_line.NONCAT_TEMPLATE_ID ;
3804 r_requisition_line.SUGGESTED_VENDOR_CONTACT_FAX := pr_requisition_line.SUGGESTED_VENDOR_CONTACT_FAX ;
3805 r_requisition_line.SUGGESTED_VENDOR_CONTACT_EMAIL := pr_requisition_line.SUGGESTED_VENDOR_CONTACT_EMAIL ;
3806 r_requisition_line.AMOUNT := pr_requisition_line.AMOUNT ;
3807 r_requisition_line.CURRENCY_AMOUNT := pr_requisition_line.CURRENCY_AMOUNT ;
3808 r_requisition_line.LABOR_REQ_LINE_ID := pr_requisition_line.LABOR_REQ_LINE_ID ;
3809 r_requisition_line.JOB_ID := pr_requisition_line.JOB_ID ;
3810 r_requisition_line.JOB_LONG_DESCRIPTION := pr_requisition_line.JOB_LONG_DESCRIPTION ;
3811 r_requisition_line.CONTRACTOR_STATUS := pr_requisition_line.CONTRACTOR_STATUS ;
3812 r_requisition_line.CONTACT_INFORMATION := pr_requisition_line.CONTACT_INFORMATION ;
3813 r_requisition_line.SUGGESTED_SUPPLIER_FLAG := pr_requisition_line.SUGGESTED_SUPPLIER_FLAG ;
3814 r_requisition_line.CANDIDATE_SCREENING_REQD_FLAG := pr_requisition_line.CANDIDATE_SCREENING_REQD_FLAG ;
3815 r_requisition_line.CANDIDATE_FIRST_NAME := pr_requisition_line.CANDIDATE_FIRST_NAME ;
3816 r_requisition_line.CANDIDATE_LAST_NAME := pr_requisition_line.CANDIDATE_LAST_NAME ;
3817 r_requisition_line.ASSIGNMENT_END_DATE := pr_requisition_line.ASSIGNMENT_END_DATE ;
3818 r_requisition_line.OVERTIME_ALLOWED_FLAG := pr_requisition_line.OVERTIME_ALLOWED_FLAG ;
3819 r_requisition_line.CONTRACTOR_REQUISITION_FLAG := pr_requisition_line.CONTRACTOR_REQUISITION_FLAG ;
3820 r_requisition_line.DROP_SHIP_FLAG := pr_requisition_line.DROP_SHIP_FLAG ;
3821 r_requisition_line.ASSIGNMENT_START_DATE := pr_requisition_line.ASSIGNMENT_START_DATE ;
3822 r_requisition_line.ORDER_TYPE_LOOKUP_CODE := pr_requisition_line.ORDER_TYPE_LOOKUP_CODE ;
3823 r_requisition_line.PURCHASE_BASIS := pr_requisition_line.PURCHASE_BASIS ;
3824 r_requisition_line.MATCHING_BASIS := pr_requisition_line.MATCHING_BASIS ;
3825 r_requisition_line.NEGOTIATED_BY_PREPARER_FLAG := pr_requisition_line.NEGOTIATED_BY_PREPARER_FLAG ;
3826 r_requisition_line.SHIP_METHOD := pr_requisition_line.SHIP_METHOD ;
3827 r_requisition_line.ESTIMATED_PICKUP_DATE := pr_requisition_line.ESTIMATED_PICKUP_DATE ;
3828 r_requisition_line.SUPPLIER_NOTIFIED_FOR_CANCEL := pr_requisition_line.SUPPLIER_NOTIFIED_FOR_CANCEL ;
3829 r_requisition_line.BASE_UNIT_PRICE := pr_requisition_line.BASE_UNIT_PRICE ;
3830 r_requisition_line.AT_SOURCING_FLAG := pr_requisition_line.AT_SOURCING_FLAG ;
3831 r_requisition_line.TAX_ATTRIBUTE_UPDATE_CODE := pr_requisition_line.TAX_ATTRIBUTE_UPDATE_CODE ;
3832
3833 END IF;
3834 If pv_action = JAI_CONSTANTS.inserting then
3835 process_req_line_inserting(r_requisition_line);
3836 elsif pv_action = JAI_CONSTANTS.updating then
3837 process_req_line_updating(r_requisition_line);
3838 end if;
3839 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3840 FND_LOG.STRING(log_level =>G_LEVEL_PROCEDURE
3841 ,module =>G_MODULE_NAME||l_api_name||'.END'
3842 ,message => G_PKG_NAME||':'||l_api_name||'()+');
3843 END IF;
3844 EXCEPTION
3845 WHEN OTHERS THEN
3846 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
3847 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
3848 END IF;
3849 app_exception.raise_exception;
3850 end process_po_req_line;
3851 /*
3852 REM +======================================================================+
3853 REM Created By : Qiong Liu
3854 REM Creation Date : Jun 1, 2012
3855 REM Bug Number/ER Name : 14040855/JAI Triggers Elimination
3856 REM SubProgram Name : process_req_line_inserting
3857 REM Type : Process API
3858 REM Purpose : Process Requistion Line's inserting
3859 REM
3860 REM
3861 REM TDD Reference :
3862 REM
3863 REM Assumptions :
3864 REM
3865 REM Parameter IN/OUT Type Required Description and Purpose
3866 REM ----------------------- ------ ------------------- ---------- ------------------------------------
3867 REM pn_requisition_line_id IN NUMBER Y PO Requisition Line Id.
3868 REM
3869 REM CALLED BY
3870 REM process_po_req_line
3871 REM +================================================================================================+
3872 */
3873 procedure process_req_line_inserting
3874 (
3875 --pn_requisition_line_id NUMBER
3876 pr_requisition_line PO_REQUISITION_LINES_ALL%ROWTYPE
3877 ) IS
3878 v_type_lookup_code VARCHAR2(25);
3879 v_gl_set_of_bks_id NUMBER;
3880 v_org_id NUMBER;
3881 v_vendor_id NUMBER;
3882 v_seg_id VARCHAR2(20);
3883 v_line_amount NUMBER;
3884 v_tax_category_id NUMBER;
3885 v_tax_amount NUMBER;
3886 v_exclu_tax_amount NUMBER;
3887 v_total_amount NUMBER;
3888
3889 lv_apps_source_code po_requisition_headers_all.apps_source_code%type;
3890 v_tax_category_id_holder JAI_PO_LINE_LOCATIONS.tax_category_id%TYPE;
3891 v_modified_by_agent_flag po_requisition_lines_all.modified_by_agent_flag%type;
3892 v_parent_req_line_id po_requisition_lines_all.parent_req_line_id%type;
3893 lv_unit_meas_lookup po_line_locations_all.unit_meas_lookup_code%TYPE;
3894 l_func_curr_det jai_plsql_cache_pkg.func_curr_details;
3895 r_req_line PO_REQUISITION_LINES_ALL%ROWTYPE;
3896
3897 /* CURSOR get_requesition_info IS
3898 SELECT *
3899 FROM PO_REQUISITION_LINES_ALL
3900 WHERE requisition_line_id = pn_requisition_line_id;*/
3901
3902 CURSOR Fetch_Org_Id_Cur(p_Destination_Organization_Id NUMBER) IS
3903 SELECT NVL(Operating_Unit,0)
3904 FROM Org_Organization_Definitions
3905 WHERE Organization_Id = p_Destination_Organization_Id;
3906
3907 CURSOR org_cur(p_requisition_Header_Id NUMBER) IS
3908 SELECT A.Segment1, A.Type_Lookup_Code,apps_source_code
3909 FROM Po_Requisition_Headers_All A
3910 WHERE A.Requisition_Header_Id = p_requisition_Header_Id;
3911
3912
3913 l_api_name CONSTANT VARCHAR2(200) := 'process_inserting';
3914
3915 BEGIN
3916 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3917 FND_LOG.STRING(log_level =>G_LEVEL_PROCEDURE
3918 ,module =>G_MODULE_NAME||l_api_name||'.BEGIN'
3919 ,message => G_PKG_NAME||':'||l_api_name||'()+');
3920 END IF;
3921 /*OPEN get_requesition_info;
3922 FETCH get_requesition_info INTO pr_requisition_line;
3923 CLOSE get_requesition_info;
3924 */
3925 v_modified_by_agent_flag := pr_requisition_line.modified_by_agent_flag;
3926 v_parent_req_line_id := pr_requisition_line.parent_req_line_id;
3927
3928 OPEN org_cur(pr_requisition_line.requisition_header_id);
3929 FETCH Org_Cur INTO v_seg_id, v_type_lookup_code,lv_apps_source_code;
3930 CLOSE org_cur;
3931
3932 OPEN Fetch_Org_Id_Cur(pr_requisition_line.Destination_Organization_Id);
3933 FETCH Fetch_Org_Id_Cur INTO v_org_id;
3934 CLOSE Fetch_Org_Id_Cur;
3935
3936 l_func_curr_det := jai_plsql_cache_pkg.return_sob_curr
3937 (p_org_id => pr_requisition_line.Destination_Organization_Id );
3938 v_gl_set_of_bks_id := l_func_curr_det.ledger_id;
3939 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3940 FND_LOG.STRING(log_level =>G_LEVEL_PROCEDURE
3941 ,module =>G_MODULE_NAME||l_api_name
3942 ,message => 'Before insert into JAI_PO_REQ_LINES');
3943 END IF;
3944 INSERT INTO JAI_PO_REQ_LINES (
3945 requisition_line_id, requisition_header_id, tax_modified_flag,
3946 tax_amount, total_amount,SUGGESTED_VENDOR_NAME,SUGGESTED_VENDOR_LOCATION,currency_code,
3947 creation_date, created_by, last_update_date,
3948 last_updated_by, last_update_login
3949 ) VALUES (
3950 pr_requisition_line.requisition_line_id, pr_requisition_line.requisition_header_id, 'N',
3951 NULL, NULL,pr_requisition_line.SUGGESTED_VENDOR_NAME,pr_requisition_line.SUGGESTED_VENDOR_LOCATION,pr_requisition_line.currency_code,
3952 pr_requisition_line.creation_date, pr_requisition_line.created_by, pr_requisition_line.last_update_date,
3953 pr_requisition_line.last_updated_by, pr_requisition_line.last_update_login
3954 );
3955
3956 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3957 FND_LOG.STRING(log_level =>G_LEVEL_PROCEDURE
3958 ,module =>G_MODULE_NAME||l_api_name
3959 ,message => 'After insert into JAI_PO_REQ_LINES');
3960 END IF;
3961
3962 --Added by Qiong for bug14681309 Begin
3963 po_req_tax_default(pr_requisition_line,v_tax_category_id, v_line_amount);
3964 --Added by Qiong for bug14681309 End
3965
3966 SELECT SUM(jr.TAX_AMOUNT)
3967 INTO v_exclu_tax_amount
3968 FROM JAI_PO_REQ_LINE_TAXES jr,
3969 JAI_CMN_TAXES_ALL jt
3970 WHERE jr.Requisition_Header_Id = pr_requisition_line.requisition_header_id
3971 AND jr.Requisition_Line_Id = pr_requisition_line.Requisition_Line_Id
3972 AND jr.tax_id = jt.tax_id
3973 AND jr.Tax_Type <> jai_constants.tax_type_tds
3974 AND NVL(jt.INCLUSIVE_TAX_FLAG,'N') <> 'Y';
3975
3976 SELECT SUM(jr.TAX_AMOUNT)
3977 INTO v_tax_amount
3978 FROM JAI_PO_REQ_LINE_TAXES jr
3979 WHERE jr.Requisition_Header_Id = pr_requisition_line.requisition_header_id
3980 AND jr.Requisition_Line_Id = pr_requisition_line.Requisition_Line_Id
3981 AND jr.Tax_Type <> jai_constants.tax_type_tds ;
3982
3983
3984 v_total_amount := v_line_amount + v_exclu_tax_amount;
3985
3986 UPDATE JAI_PO_REQ_LINES
3987 SET tax_amount = v_tax_amount,
3988 total_amount = v_total_amount,
3989 tax_category_id=v_tax_category_id
3990 WHERE requisition_line_id = pr_requisition_line.Requisition_Line_Id;
3991 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3992 FND_LOG.STRING(log_level =>G_LEVEL_PROCEDURE
3993 ,module =>G_MODULE_NAME||l_api_name||'.END'
3994 ,message => G_PKG_NAME||':'||l_api_name||'()+');
3995 END IF;
3996 EXCEPTION
3997 WHEN OTHERS THEN
3998 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
3999 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
4000 END IF;
4001 app_exception.raise_exception;
4002 END process_req_line_inserting;
4003 /*
4004 REM +======================================================================+
4005 REM Created By : Qiong Liu
4006 REM Creation Date : Jun 1, 2012
4007 REM Bug Number/ER Name : 14040855/JAI Triggers Elimination
4008 REM SubProgram Name : process_req_line_updating
4009 REM Type : Process API
4010 REM Purpose : Process Requistion Line's updating
4011 REM
4012 REM
4013 REM TDD Reference :
4014 REM
4015 REM Assumptions :
4016 REM
4017 REM Parameter IN/OUT Type Required Description and Purpose
4018 REM ----------------------- ------ ------------------- ---------- ------------------------------------
4019 REM pn_requisition_line_id IN NUMBER Y PO Requisition Line Id.
4020 REM
4021 REM CALLED BY
4022 REM process_po_req_line
4023 REM +================================================================================================+
4024 */
4025 procedure process_req_line_updating
4026 (
4027 -- Pn_requisition_line_id NUMBER
4028 pr_requisition_line PO_REQUISITION_LINES_ALL%ROWTYPE
4029 ) IS
4030 v_dest_org_id po_requisition_lines_all.Destination_Organization_Id%TYPE;
4031 v_currency po_requisition_lines_all.Currency_Code%TYPE;
4032 v_rate_TYPE po_requisition_lines_all.Rate_TYPE%TYPE;
4033 v_rate_date po_requisition_lines_all.Rate_Date%TYPE;
4034 v_rate po_requisition_lines_all.Rate%TYPE;
4035 v_header_id po_requisition_lines_all.requisition_header_id%TYPE;
4036 v_line_id po_requisition_lines_all.requisition_line_id%TYPE;
4037 v_sugg_vendor_name po_requisition_lines_all.suggested_vendor_name%TYPE;
4038 v_sugg_vendor_loc po_requisition_lines_all.suggested_vendor_location%TYPE;
4039 v_inventory_item_id po_requisition_lines_all.item_id%TYPE;
4040 v_src_org_id po_requisition_lines_all.Source_Organization_Id%TYPE;
4041 v_uom po_requisition_lines_all.Unit_Meas_Lookup_Code%TYPE;
4042 v_quantity po_requisition_lines_all.Quantity%TYPE;
4043 v_creation_date po_requisition_lines_all.Creation_Date%TYPE;
4044 v_created_by po_requisition_lines_all.Created_By%TYPE;
4045 v_last_update_date po_requisition_lines_all.Last_Update_Date%TYPE;
4046 v_last_updated_by po_requisition_lines_all.Last_Updated_By%TYPE;
4047 v_last_update_login po_requisition_lines_all.Last_Update_Login%TYPE;
4048 v_org_id Po_Vendor_Sites_All.org_id%TYPE;
4049 v_operating_id po_requisition_lines_all.ORG_ID%TYPE;
4050 v_deliver_to_loc_id po_requisition_lines_all.DELIVER_TO_LOCATION_ID%TYPE;
4051 v_blanket_hdr po_requisition_lines_all.BLANKET_PO_HEADER_ID%TYPE;
4052 v_blanket_line po_requisition_lines_all.BLANKET_PO_LINE_NUM%TYPE;
4053 v_unit_price po_requisition_lines_all.unit_price%TYPE;
4054
4055
4056 v_tax_category_id NUMBER;
4057 v_vendor_id NUMBER;
4058 v_site_id NUMBER;
4059 v_hdr_curr VARCHAR2(15);
4060 v_tax_flag VARCHAR2(1);
4061 v_seg_id VARCHAR2(20);
4062 v_uom_code VARCHAR2(3);
4063 conv_rate NUMBER;
4064 v_assessable_value NUMBER;
4065 ln_vat_assess_value NUMBER;
4066 v_gl_set_of_bks_id NUMBER;
4067 ln_tax_amount NUMBER;
4068 lv_apps_source_code VARCHAR2(20);
4069 v_line_tax_amount NUMBER;
4070 v_line_amount NUMBER;
4071 v_total_amount NUMBER;
4072 v_exclu_tax_amount NUMBER;
4073
4074 v_type_lookup_code Po_Requisition_Headers_All.Type_Lookup_Code % TYPE;
4075 l_func_curr_det jai_plsql_cache_pkg.func_curr_details;
4076 r_new_req_line PO_REQUISITION_LINES_ALL%ROWTYPE;
4077 r_old_jai_req_line JAI_PO_REQ_LINES%ROWTYPE;
4078 r_old_jai_req_tax_line JAI_PO_REQ_LINE_TAXES%ROWTYPE;
4079
4080 /* CURSOR get_requesition_info IS
4081 SELECT *
4082 FROM PO_REQUISITION_LINES_ALL
4083 WHERE requisition_line_id = pn_requisition_line_id;
4084 */
4085 CURSOR get_jai_req_info IS
4086 SELECT *
4087 FROM JAI_PO_REQ_LINES
4088 WHERE requisition_line_id = pr_requisition_line.requisition_line_id;
4089
4090 CURSOR get_jai_req_tax_line(p_requisition_Header_Id NUMBER) IS
4091 SELECT *
4092 FROM JAI_PO_REQ_LINE_TAXES
4093 WHERE requisition_Header_Id = p_requisition_Header_Id
4094 AND requisition_line_id = pr_requisition_line.requisition_line_id;--pn_requisition_line_id;
4095
4096 CURSOR Fetch_Org_Id_Cur IS SELECT NVL(Operating_Unit,0)
4097 FROM Org_Organization_Definitions
4098 WHERE Organization_Id = v_dest_org_id;
4099
4100 CURSOR bind_cur IS
4101 SELECT Segment1, Type_Lookup_Code, apps_source_code
4102 FROM Po_Requisition_Headers_All
4103 WHERE Requisition_Header_Id = v_header_id;
4104
4105 CURSOR vend_cur(p_sugg_vendor_name IN VARCHAR2) IS
4106 SELECT vendor_id
4107 FROM po_vendors
4108 WHERE vendor_name = p_sugg_vendor_name;
4109
4110 CURSOR site_cur(p_sugg_vendor_loc IN VARCHAR2) IS
4111 SELECT Vendor_Site_Id
4112 FROM Po_Vendor_Sites_All A
4113 WHERE A.Vendor_Site_Code = p_sugg_vendor_loc
4114 AND A.Vendor_Id = v_vendor_id
4115 AND (A.Org_Id = v_org_id
4116 OR
4117 (A.Org_Id is NULL AND v_org_id is NULL));
4118
4119
4120 CURSOR Fetch_Hdr_Curr_Cur IS SELECT NVL( Currency_Code, '$' )
4121 FROM Po_Requisition_Headers_V
4122 WHERE Requisition_Header_Id = v_header_id;
4123
4124
4125
4126 CURSOR Fetch_Uom_Code_Cur IS SELECT Uom_Code
4127 FROM Mtl_Units_Of_Measure
4128 WHERE Unit_Of_Measure = v_uom;
4129
4130 CURSOR Fetch_Mod_Flag_Cur IS Select Tax_modified_Flag
4131 From JAI_PO_REQ_LINES
4132 Where Requisition_Line_Id = v_line_id;
4133
4134
4135 l_api_name CONSTANT VARCHAR2(200) := 'process_updating';
4136
4137 BEGIN
4138 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4139 FND_LOG.STRING(log_level =>G_LEVEL_PROCEDURE
4140 ,module =>G_MODULE_NAME||l_api_name||'.BEGIN'
4141 ,message => G_PKG_NAME||':'||l_api_name||'()+');
4142 END IF;
4143 /* OPEN get_requesition_info;
4144 FETCH get_requesition_info INTO r_new_req_line;
4145 CLOSE get_requesition_info;*/
4146
4147 v_dest_org_id := pr_requisition_line.Destination_Organization_Id;
4148 v_currency := r_new_req_line.Currency_Code;
4149 v_rate_type := pr_requisition_line.Rate_Type;
4150 v_rate_date := pr_requisition_line.Rate_Date;
4151 v_rate := pr_requisition_line.Rate;
4152 v_header_id := pr_requisition_line.requisition_header_id;
4153 v_line_id := pr_requisition_line.requisition_line_id;
4154 v_sugg_vendor_name := pr_requisition_line.suggested_vendor_name;
4155 v_sugg_vendor_loc := pr_requisition_line.suggested_vendor_location;
4156 v_inventory_item_id := pr_requisition_line.item_id;
4157 v_src_org_id := pr_requisition_line.Source_Organization_Id;
4158 v_uom := pr_requisition_line.Unit_Meas_Lookup_Code;
4159 v_quantity := pr_requisition_line.Quantity;
4160 v_line_tax_amount := NVL( (pr_requisition_line.quantity * pr_requisition_line.unit_price) ,0 );
4161 v_line_amount := NVL( ( pr_requisition_line.quantity * pr_requisition_line.unit_price) ,0 );
4162 v_creation_date := pr_requisition_line.Creation_Date;
4163 v_created_by := pr_requisition_line.Created_By;
4164 v_last_update_date := pr_requisition_line.Last_Update_Date;
4165 v_last_updated_by := pr_requisition_line.Last_Updated_By;
4166 v_last_update_login := pr_requisition_line.Last_Update_Login;
4167 v_org_id := 0;
4168 v_operating_id := pr_requisition_line.ORG_ID;
4169 v_deliver_to_loc_id := pr_requisition_line.DELIVER_TO_LOCATION_ID;
4170 v_blanket_hdr := pr_requisition_line.BLANKET_PO_HEADER_ID;
4171 v_blanket_line := pr_requisition_line.BLANKET_PO_LINE_NUM;
4172 v_unit_price := pr_requisition_line.unit_price;
4173
4174
4175 OPEN get_jai_req_info;
4176 FETCH get_jai_req_info INTO r_old_jai_req_line;
4177 CLOSE get_jai_req_info;
4178
4179 OPEN get_jai_req_tax_line(pr_requisition_line.requisition_header_id);
4180 FETCH get_jai_req_tax_line INTO r_old_jai_req_tax_line;
4181 CLOSE get_jai_req_tax_line;
4182
4183 OPEN bind_cur;
4184 FETCH Bind_cur INTO v_seg_id, v_type_lookup_code , lv_apps_source_code;
4185 CLOSE bind_cur;
4186
4187 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4188 FND_LOG.STRING(log_level =>G_LEVEL_PROCEDURE
4189 ,module =>G_MODULE_NAME||l_api_name
4190 ,message => 'Cancel_flag='||pr_requisition_line.cancel_flag);
4191 END IF;
4192 IF NVL(pr_requisition_line.cancel_flag,'$') = 'Y' THEN
4193 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4194 FND_LOG.STRING(log_level =>G_LEVEL_PROCEDURE
4195 ,module =>G_MODULE_NAME||l_api_name
4196 ,message => 'Processing cancelling requistion');
4197 END IF;
4198 DELETE from JAI_PO_REQ_LINE_TAXES
4199 WHERE requisition_line_id = pr_requisition_line.requisition_line_id ;
4200
4201 DELETE from JAI_PO_REQ_LINES
4202 WHERE requisition_line_id = pr_requisition_line.requisition_line_id;
4203
4204 RETURN;
4205
4206 END IF;
4207
4208 OPEN Fetch_Org_Id_Cur;
4209 FETCH Fetch_Org_Id_Cur INTO v_org_id;
4210 CLOSE Fetch_Org_Id_Cur;
4211
4212 OPEN Fetch_Mod_Flag_Cur;
4213 FETCH Fetch_Mod_Flag_Cur INTO v_tax_flag;
4214 CLOSE Fetch_Mod_Flag_Cur;
4215
4216 OPEN Fetch_Hdr_Curr_Cur;
4217 FETCH Fetch_Hdr_Curr_Cur INTO v_hdr_curr;
4218 CLOSE Fetch_Hdr_Curr_Cur;
4219
4220 OPEN vend_cur(v_sugg_vendor_name);
4221 FETCH Vend_Cur INTO v_vendor_id;
4222 CLOSE vend_cur;
4223
4224 OPEN site_cur(v_sugg_vendor_loc);
4225 FETCH Site_Cur INTO v_site_id;
4226 CLOSE site_cur;
4227
4228
4229
4230 l_func_curr_det := jai_plsql_cache_pkg.return_sob_curr
4231 (p_org_id => v_dest_org_id );
4232 v_gl_set_of_bks_id := l_func_curr_det.ledger_id;
4233
4234
4235 OPEN Fetch_Uom_Code_Cur;
4236 FETCH Fetch_Uom_Code_Cur INTO v_uom_code;
4237 CLOSE Fetch_Uom_Code_Cur;
4238
4239 v_currency := NVL( v_currency, v_hdr_curr );
4240
4241 IF NVL(v_currency,'$') = NVL(v_hdr_curr,'$') THEN
4242 conv_rate := 1;
4243 ELSE
4244 IF v_rate_type = 'User' THEN
4245 conv_rate := 1/v_rate;
4246 ELSE
4247 conv_rate := 1/jai_cmn_utils_pkg.currency_conversion( v_gl_set_of_bks_id, v_currency, v_rate_date, v_rate_type, v_rate );
4248 END IF;
4249 END IF;
4250
4251 v_assessable_value := jai_cmn_setup_pkg.get_po_assessable_value( v_vendor_id, v_site_id,
4252 v_inventory_item_id, v_uom_code );
4253
4254
4255 v_line_amount := v_line_amount * conv_rate ;
4256
4257 ln_vat_assess_value := jai_general_pkg.ja_in_vat_assessable_value
4258 ( p_party_id => v_vendor_id,
4259 p_party_site_id => v_site_id,
4260 p_inventory_item_id => v_inventory_item_id,
4261 p_uom_code => v_uom_code,
4262 p_default_price => 0,
4263 p_ass_value_date => trunc(SYSDATE),
4264 p_party_type => 'V'
4265 ) ;
4266
4267 IF NVL( v_assessable_value, 0 ) <= 0 THEN
4268 v_assessable_value := v_line_amount;
4269 ELSE
4270 v_assessable_value := v_assessable_value * v_quantity * conv_rate ;
4271 END IF;
4272
4273 IF ln_vat_assess_value = 0 THEN
4274
4275 ln_vat_assess_value := v_line_amount;
4276
4277 ELSE
4278
4279 ln_vat_assess_value := ln_vat_assess_value * v_quantity * conv_rate ;
4280
4281 END IF;
4282
4283
4284 IF (lv_apps_source_code = 'POR' AND v_currency is NULL) THEN
4285 v_currency := 'INR';
4286 END IF;
4287
4288 IF ( (
4289 NVL( r_old_jai_req_line.suggested_vendor_name, 'X' ) <> NVL( pr_requisition_line.suggested_vendor_name, 'X' )
4290 )OR
4291 (
4292 NVL( r_old_jai_req_line.suggested_vendor_location, 'X' ) <> NVL( pr_requisition_line.suggested_vendor_location, 'X' )
4293 )
4294 OR v_tax_flag = 'N'
4295 ) THEN
4296 Delete From JAI_PO_REQ_LINE_TAXES
4297 Where Requisition_Line_Id = v_line_id;
4298 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4299 FND_LOG.STRING(log_level =>G_LEVEL_PROCEDURE
4300 ,module =>G_MODULE_NAME||l_api_name
4301 ,message => 'Before call po_req_tax_default');
4302 FND_LOG.STRING(log_level =>G_LEVEL_PROCEDURE
4303 ,module =>G_MODULE_NAME||l_api_name
4304 ,message => 'Updating table JAI_PO_REQ_LINES');
4305 END IF;
4306 --Added by Qiong for bug14681309 Begin
4307 po_req_tax_default(pr_requisition_line,v_tax_category_id, v_line_amount);
4308 --Added by Qiong for bug14681309 End
4309
4310 UPDATE JAI_PO_REQ_LINES
4311 SET suggested_vendor_name = pr_requisition_line.suggested_vendor_name,
4312 suggested_vendor_location = pr_requisition_line.suggested_vendor_location,
4313 currency_code = pr_requisition_line.currency_code
4314 WHERE Requisition_Line_Id = v_line_id
4315 AND Requisition_Header_Id = v_header_id;
4316
4317 ELSIF v_tax_flag = 'Y' Then
4318 v_tax_category_id := r_old_jai_req_line.tax_category_id ;
4319 Update JAI_PO_REQ_LINE_TAXES
4320 Set Tax_Amount = 0
4321 WHERE Requisition_Header_Id = v_header_id
4322 AND Requisition_Line_Id = v_line_id
4323 AND nvl(Tax_Rate,0) <> 0 and nvl(qty_rate,0) <> 0;
4324 IF ( NVL( r_old_jai_req_line.CURRENCY_CODE, 'INR' ) <> NVL( pr_requisition_line.CURRENCY_CODE,'INR' ) ) THEN
4325 jai_po_tax_pkg.calculate_tax( 'REQUISITION', v_header_id, v_line_id, -999, -999, -999, ' ', v_line_tax_amount, v_assessable_value,
4326 ln_vat_assess_value, NULL, 1/conv_rate);
4327
4328 ELSE
4329 jai_po_tax_pkg.calc_tax(p_type => 'REQUISITION',
4330 p_header_id => v_header_id,
4331 P_line_id => v_line_id,
4332 p_line_location_id => NULL,
4333 p_line_focus_id => NULL,
4334 p_line_quantity => v_quantity,
4335 p_base_value => v_line_amount,
4336 p_line_uom_code => v_uom_code,
4337 p_tax_amount => ln_tax_amount,
4338 p_assessable_value => v_assessable_value,
4339 p_vat_assess_value => ln_vat_assess_value,
4340 p_item_id => v_inventory_item_id,
4341 p_conv_rate => 1/conv_rate,
4342 p_po_curr => v_currency,
4343 p_func_curr => v_hdr_curr);
4344 END IF;
4345
4346 END IF;
4347
4348 SELECT SUM(jr.TAX_AMOUNT)
4349 INTO v_exclu_tax_amount
4350 FROM JAI_PO_REQ_LINE_TAXES jr,
4351 JAI_CMN_TAXES_ALL jt
4352 WHERE jr.Requisition_Header_Id = pr_requisition_line.requisition_header_id
4353 AND jr.Requisition_Line_Id = pr_requisition_line.Requisition_Line_Id
4354 AND jr.tax_id = jt.tax_id
4355 AND jr.Tax_Type <> jai_constants.tax_type_tds
4356 AND NVL(jt.INCLUSIVE_TAX_FLAG,'N') <> 'Y';
4357
4358 SELECT SUM(jr.TAX_AMOUNT)
4359 INTO v_line_tax_amount
4360 FROM JAI_PO_REQ_LINE_TAXES jr
4361 WHERE jr.Requisition_Header_Id = pr_requisition_line.requisition_header_id
4362 AND jr.Requisition_Line_Id = pr_requisition_line.Requisition_Line_Id
4363 AND jr.Tax_Type <> jai_constants.tax_type_tds ;
4364
4365 v_total_amount := v_line_amount + v_exclu_tax_amount;
4366
4367 UPDATE JAI_PO_REQ_LINES
4368 SET tax_amount = v_line_tax_amount,
4369 total_amount = v_total_amount,
4370 tax_category_id=v_tax_category_id,
4371 currency_code = pr_requisition_line.currency_code
4372 WHERE requisition_line_id = pr_requisition_line.Requisition_Line_Id;
4373 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4374 FND_LOG.STRING(log_level =>G_LEVEL_PROCEDURE
4375 ,module =>G_MODULE_NAME||l_api_name||'.END'
4376 ,message => G_PKG_NAME||':'||l_api_name||'()+');
4377 END IF;
4378 EXCEPTION
4379 WHEN OTHERS THEN
4380
4381
4382 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
4383 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
4384 END IF;
4385 app_exception.raise_exception;
4386
4387 END process_req_line_updating;
4388 /*
4389 REM +======================================================================+
4390 REM Created By : Qiong Liu
4391 REM Creation Date : Jun 1, 2012
4392 REM Bug Number/ER Name : 14040855/JAI Triggers Elimination
4393 REM SubProgram Name : po_req_tax_default
4394 REM Type : Process API
4395 REM Purpose : Process Tax defaultation for Requistion Line
4396 REM
4397 REM
4398 REM TDD Reference :
4399 REM
4400 REM Assumptions :
4401 REM
4402 REM Parameter IN/OUT Type Required Description and Purpose
4403 REM ----------------------- ------ ------------------- ---------- ------------------------------------
4404 REM pn_requisition_line_id IN NUMBER Y PO Requisition Line Id.
4405 REM pn_tax_category_id OUT NUMBER Y Tax category id.
4406 REM pn_line_amount OUT NUMBER Y Line amount.
4407 REM
4408 REM CALLED BY
4409 REM process_req_line_inserting , process_req_line_updating.
4410 REM +================================================================================================+
4411 */
4412 procedure po_req_tax_default
4413 (
4414 pr_requisition_line PO_REQUISITION_LINES_ALL%ROWTYPE,
4415 pn_tax_category_id OUT NOCOPY NUMBER,
4416 pn_line_amount OUT NOCOPY NUMBER
4417 ) IS
4418
4419 v_blanket_hdr NUMBER;
4420 v_gl_set_of_bks_id NUMBER;
4421 v_org_id NUMBER;
4422 v_vendor_id NUMBER;
4423 v_site_id NUMBER;
4424 v_uom_code VARCHAR2(3);
4425 v_RATE_TYPE VARCHAR2(30);
4426 v_hdr_currency VARCHAR2(15);
4427 v_currency VARCHAR2(15);
4428 v_po_line_id NUMBER;
4429 v_line_amount NUMBER;
4430 v_tax_category_id NUMBER;
4431 v_line_location_id NUMBER;
4432 conv_rate NUMBER;
4433 v_assessable_value NUMBER;
4434 ln_vat_assess_value NUMBER;
4435 v_sob_hrou_id NUMBER;
4436 ln_tax_amount NUMBER;
4437 v_reqn_ctr Number :=0;
4438
4439 v_seg_id Po_Requisition_Headers_All.Segment1%TYPE;
4440 v_type_lookup_code Po_Requisition_Headers_All.Type_Lookup_Code%TYPE;
4441 lv_apps_source_code po_requisition_headers_all.apps_source_code%type;
4442 v_modified_by_agent_flag po_requisition_lines_all.modified_by_agent_flag%type;
4443 v_parent_req_line_id po_requisition_lines_all.parent_req_line_id%type;
4444 lv_unit_meas_lookup po_line_locations_all.unit_meas_lookup_code%TYPE;
4445 l_func_curr_det jai_plsql_cache_pkg.func_curr_details;
4446 r_req_line PO_REQUISITION_LINES_ALL%ROWTYPE;
4447
4448 /* CURSOR get_requesition_info IS
4449 SELECT *
4450 FROM PO_REQUISITION_LINES_ALL
4451 WHERE requisition_line_id = pn_requisition_line_id;*/
4452
4453 CURSOR Fetch_Org_Id_Cur(p_Destination_Organization_Id NUMBER) IS
4454 SELECT NVL(Operating_Unit,0)
4455 FROM Org_Organization_Definitions
4456 WHERE Organization_Id = p_Destination_Organization_Id;
4457
4458 CURSOR org_cur(p_requisition_Header_Id NUMBER) IS
4459 SELECT A.Segment1, A.Type_Lookup_Code,apps_source_code
4460 FROM Po_Requisition_Headers_All A
4461 WHERE A.Requisition_Header_Id = p_requisition_Header_Id;
4462
4463 CURSOR vend_cur(p_sugg_vendor_name IN VARCHAR2) IS
4464 SELECT Vendor_Id
4465 FROM Po_Vendors
4466 WHERE Vendor_Name = p_sugg_vendor_name;
4467
4468 CURSOR site_cur(p_sugg_vendor_loc IN VARCHAR2) IS
4469 SELECT Vendor_Site_Id
4470 FROM Po_Vendor_Sites_All A
4471 WHERE A.Vendor_Site_Code = p_sugg_vendor_loc
4472 AND A.Vendor_Id = v_vendor_id
4473 AND (A.Org_Id = v_org_id
4474 OR
4475 (A.Org_Id is NULL AND v_org_id is NULL)) ;
4476
4477 CURSOR cur_bpa_unit_measure(p_blanket_hdr IN NUMBER, p_blanket_line NUMBER) IS
4478 SELECT unit_meas_lookup_code
4479 FROM Po_Line_Locations_All
4480 WHERE Po_Line_Id IN (SELECT Po_Line_Id
4481 FROM Po_Lines_All
4482 WHERE Po_Header_Id = p_blanket_hdr
4483 AND Line_Num = p_blanket_line);
4484
4485
4486
4487 CURSOR cur_bpa_tax_lines(p_po_line_id IN NUMBER,p_line_location_id IN NUMBER) IS
4488 SELECT a.Po_Line_Id,
4489 a.tax_line_no lno ,
4490 a.tax_id ,
4491 a.precedence_1 p_1,
4492 a.precedence_2 p_2,
4493 a.precedence_3 p_3,
4494 a.precedence_4 p_4,
4495 a.precedence_5 p_5,
4496 a.precedence_6 p_6,
4497 a.precedence_7 p_7,
4498 a.precedence_8 p_8,
4499 a.precedence_9 p_9,
4500 a.precedence_10 p_10,
4501 a.currency ,
4502 a.tax_rate ,
4503 a.qty_rate ,
4504 a.uom ,
4505 a.tax_amount ,
4506 a.tax_type ,
4507 a.vendor_id ,
4508 a.modvat_flag ,
4509 tax_category_id
4510 FROM JAI_PO_TAXES a
4511 WHERE po_line_id = p_po_line_id
4512 AND nvl(line_location_id,-999) = p_line_location_id
4513 ORDER BY a.tax_line_no;
4514
4515 CURSOR Fetch_Hdr_Curr_Cur(p_requisition_header_id NUMBER) IS
4516 SELECT NVL( Currency_Code, '$' )
4517 FROM Po_Requisition_Headers_V
4518 WHERE Requisition_Header_Id = r_req_line.requisition_header_id;
4519
4520
4521 CURSOR Fetch_Uom_Code_Cur(cp_unit_of_meas VARCHAR2) IS
4522 SELECT Uom_Code
4523 FROM Mtl_Units_Of_Measure
4524 WHERE Unit_Of_Measure = cp_unit_of_meas;
4525
4526
4527 CURSOR c_reqn_line_id(p_reqn_line_id Number) is
4528 SELECT 1
4529 FROM JAI_PO_REQ_LINE_TAXES
4530 WHERE requisition_line_id = p_reqn_line_id;
4531
4532
4533
4534
4535 cursor c_fetch_sob_from_hrou(cp_org_id in number)
4536 is
4537 select set_of_books_id
4538 from hr_operating_units
4539 Where organization_id = cp_org_id;
4540
4541
4542 l_api_name CONSTANT VARCHAR2(200) := 'po_req_tax_default';
4543
4544 BEGIN
4545 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4546 FND_LOG.STRING(log_level =>G_LEVEL_PROCEDURE
4547 ,module =>G_MODULE_NAME||l_api_name||'.BEGIN'
4548 ,message => G_PKG_NAME||':'||l_api_name||'()+');
4549 END IF;
4550 /* OPEN get_requesition_info;
4551 FETCH get_requesition_info INTO pr_requisition_line;
4552 CLOSE get_requesition_info;*/
4553
4554 v_modified_by_agent_flag := pr_requisition_line.modified_by_agent_flag;
4555 v_parent_req_line_id := pr_requisition_line.parent_req_line_id;
4556
4557 OPEN org_cur(pr_requisition_line.requisition_header_id);
4558 FETCH Org_Cur INTO v_seg_id, v_type_lookup_code,lv_apps_source_code;
4559 CLOSE org_cur;
4560
4561 OPEN Fetch_Org_Id_Cur(pr_requisition_line.Destination_Organization_Id);
4562 FETCH Fetch_Org_Id_Cur INTO v_org_id;
4563 CLOSE Fetch_Org_Id_Cur;
4564
4565 l_func_curr_det := jai_plsql_cache_pkg.return_sob_curr
4566 (p_org_id => pr_requisition_line.Destination_Organization_Id );
4567 v_gl_set_of_bks_id := l_func_curr_det.ledger_id;
4568
4569
4570 OPEN Fetch_Hdr_Curr_Cur(pr_requisition_line.requisition_header_id);
4571 FETCH Fetch_Hdr_Curr_Cur INTO v_hdr_currency;
4572 CLOSE Fetch_Hdr_Curr_Cur;
4573
4574 OPEN vend_cur(pr_requisition_line.suggested_vendor_name);
4575 FETCH Vend_Cur INTO v_vendor_id;
4576 CLOSE vend_cur;
4577
4578 OPEN site_cur(pr_requisition_line.suggested_vendor_location);
4579 FETCH Site_Cur INTO v_site_id;
4580 CLOSE site_cur;
4581
4582 OPEN Fetch_Uom_Code_Cur(pr_requisition_line.Unit_Meas_Lookup_Code);
4583 FETCH Fetch_Uom_Code_Cur INTO v_uom_code;
4584 CLOSE Fetch_Uom_Code_Cur;
4585
4586 v_assessable_value := jai_cmn_setup_pkg.get_po_assessable_value( v_vendor_id, v_site_id,
4587 pr_requisition_line.item_id, v_uom_code );
4588
4589 v_currency := NVL( pr_requisition_line.Currency_Code, v_hdr_currency );
4590
4591 open c_fetch_sob_from_hrou(pr_requisition_line.org_id);
4592 Fetch c_fetch_sob_from_hrou into v_sob_hrou_id;
4593 close c_fetch_sob_from_hrou;
4594
4595 IF NVL(v_currency,'$$') = NVL(v_hdr_currency,'$$') THEN
4596 conv_rate := 1;
4597 ELSE
4598 IF v_rate_type = 'User' THEN
4599 conv_rate := 1/pr_requisition_line.Rate;
4600 ELSE
4601 conv_rate := 1/jai_cmn_utils_pkg.currency_conversion( v_sob_hrou_id, v_currency, pr_requisition_line.rate_date, pr_requisition_line.rate_type, pr_requisition_line.Rate );
4602 END IF;
4603 END IF;
4604
4605 v_line_amount := NVL( (pr_requisition_line.quantity * pr_requisition_line.unit_price) ,0);
4606 v_line_amount := v_line_amount * conv_rate;
4607 pn_line_amount:= v_line_amount ;
4608
4609 ln_vat_assess_value := jai_general_pkg.ja_in_vat_assessable_value
4610 ( p_party_id => v_vendor_id,
4611 p_party_site_id => v_site_id,
4612 p_inventory_item_id => pr_requisition_line.item_id,
4613 p_uom_code => v_uom_code,
4614 p_default_price => 0,
4615 p_ass_value_date => SYSDATE,
4616 p_party_type => 'V'
4617 ) ;
4618
4619 IF NVL( v_assessable_value, 0 ) <= 0 THEN
4620 v_assessable_value := v_line_amount;
4621 ELSE
4622 v_assessable_value := v_assessable_value * pr_requisition_line.quantity * conv_rate;
4623 END IF;
4624
4625 IF ln_vat_assess_value = 0 THEN
4626 ln_vat_assess_value := v_line_amount;
4627 ELSE
4628 ln_vat_assess_value := ln_vat_assess_value * pr_requisition_line.quantity * conv_rate;
4629 END IF;
4630
4631 IF (lv_apps_source_code = 'POR' AND v_currency is NULL) THEN
4632 v_currency := 'INR';
4633 END IF;
4634
4635 IF pr_requisition_line.BLANKET_PO_HEADER_ID IS NOT NULL AND pr_requisition_line.BLANKET_PO_LINE_NUM IS NOT NULL THEN
4636
4637 jai_po_cmn_pkg.locate_source_line( pr_requisition_line.BLANKET_PO_HEADER_ID, pr_requisition_line.BLANKET_PO_LINE_NUM, pr_requisition_line.quantity, v_po_line_id, v_line_location_id );
4638
4639
4640 open c_reqn_line_id(pr_requisition_line.Requisition_Line_Id);
4641 fetch c_reqn_line_id into v_reqn_ctr;
4642 close c_reqn_line_id;
4643
4644 if nvl(v_reqn_ctr,0) = 0 then
4645
4646 FOR rec IN cur_bpa_tax_lines(v_po_line_id, v_line_location_id ) LOOP
4647 v_po_line_id := Rec.Po_Line_Id;
4648 v_tax_category_id := rec.tax_category_id ;
4649
4650 INSERT INTO JAI_PO_REQ_LINE_TAXES(
4651 requisition_line_id, requisition_header_id, tax_line_no,
4652 precedence_1, precedence_2, precedence_3, precedence_4, precedence_5,
4653 precedence_6, precedence_7, precedence_8, precedence_9, precedence_10,
4654 tax_id, tax_rate, qty_rate, uom, tax_amount, tax_target_amount,
4655 tax_type, modvat_flag, vendor_id, currency,
4656 creation_date, created_by, last_update_date, last_updated_by, last_update_login,
4657 tax_category_id
4658 ) VALUES (
4659 pr_requisition_line.Requisition_Line_Id, pr_requisition_line.requisition_header_id, rec.lno,
4660 rec.p_1, rec.p_2, rec.p_3, rec.p_4, rec.p_5,
4661 rec.p_6, rec.p_7, rec.p_8, rec.p_9, rec.p_10,
4662 rec.tax_id, rec.tax_rate, rec.qty_rate, rec.uom, rec.tax_amount, rec.tax_amount + v_line_amount,
4663 rec.tax_type, rec.modvat_flag, rec.vendor_id, rec.currency,
4664 pr_requisition_line.creation_date, pr_requisition_line.created_by, pr_requisition_line.last_update_date, pr_requisition_line.last_updated_by, pr_requisition_line.last_update_login,
4665 rec.tax_category_id );
4666
4667
4668 END LOOP;
4669 end if;
4670 OPEN cur_bpa_unit_measure(pr_requisition_line.BLANKET_PO_HEADER_ID, pr_requisition_line.BLANKET_PO_LINE_NUM);
4671 FETCH cur_bpa_unit_measure INTO lv_unit_meas_lookup;
4672 CLOSE cur_bpa_unit_measure;
4673
4674 OPEN Fetch_Uom_Code_Cur(lv_unit_meas_lookup);
4675 FETCH Fetch_Uom_Code_Cur INTO v_uom_code;
4676 CLOSE Fetch_Uom_Code_Cur;
4677
4678
4679 jai_po_tax_pkg.calc_tax(p_type => 'REQUISITION_BLANKET',
4680 p_header_id => pr_requisition_line.BLANKET_PO_HEADER_ID,
4681 p_requisition_line_id => pr_requisition_line.Requisition_Line_Id ,
4682 P_line_id => v_po_line_id,
4683 p_line_location_id => v_line_location_id,
4684 p_line_focus_id => NULL,
4685 p_line_quantity => pr_requisition_line.quantity,
4686 p_base_value => v_line_amount,
4687 p_line_uom_code => v_uom_code,
4688 p_tax_amount => ln_tax_amount,
4689 p_assessable_value => v_assessable_value,
4690 p_vat_assess_value => ln_vat_assess_value,
4691 p_item_id => pr_requisition_line.item_id,
4692 p_conv_rate => 1/conv_rate,
4693 p_po_curr => v_currency,
4694 p_func_curr => v_hdr_currency);
4695
4696 ELSIF pr_requisition_line.BLANKET_PO_HEADER_ID IS NULL AND pr_requisition_line.BLANKET_PO_LINE_NUM IS NULL THEN
4697
4698 IF v_type_lookup_code = 'PURCHASE' THEN
4699
4700 jai_cmn_tax_defaultation_pkg.JA_IN_VENDOR_DEFAULT_TAXES(pr_requisition_line.Destination_Organization_Id, v_vendor_id,
4701 v_site_id, pr_requisition_line.item_id, pr_requisition_line.requisition_header_id,
4702 pr_requisition_line.Requisition_Line_Id, v_tax_category_id);
4703
4704
4705 jai_cmn_tax_defaultation_pkg.JA_IN_CALC_PREC_TAXES('PO_REQN', v_tax_category_id, pr_requisition_line.requisition_header_id,
4706 pr_requisition_line.Requisition_Line_Id, v_assessable_value, v_line_amount, pr_requisition_line.item_id, pr_requisition_line.quantity ,
4707 v_uom_code, v_vendor_id, NVL( v_currency, v_hdr_currency ), conv_rate,
4708 pr_requisition_line.creation_date, pr_requisition_line.created_by, pr_requisition_line.last_update_date,
4709 pr_requisition_line.last_updated_by, pr_requisition_line.last_update_login,p_vat_assessable_value => ln_vat_assess_value,
4710 p_modified_by_agent_flag => v_modified_by_agent_flag,
4711 p_parent_req_line_id => v_parent_req_line_id );
4712
4713 ELSIF v_type_lookup_code = 'INTERNAL' THEN
4714
4715
4716 jai_cmn_tax_defaultation_pkg.Ja_In_Org_Default_Taxes( pr_requisition_line.Source_Organization_Id, pr_requisition_line.item_id, v_tax_category_id );
4717
4718 jai_cmn_tax_defaultation_pkg.JA_IN_CALC_PREC_TAXES('PO_REQN', v_tax_category_id, pr_requisition_line.requisition_header_id,
4719 pr_requisition_line.Requisition_Line_Id, v_assessable_value, v_line_amount, pr_requisition_line.item_id, pr_requisition_line.quantity ,
4720 v_uom_code, NULL, NVL( v_currency, v_hdr_currency ), conv_rate,
4721 pr_requisition_line.creation_date, pr_requisition_line.created_by, pr_requisition_line.last_update_date,
4722 pr_requisition_line.last_updated_by, pr_requisition_line.last_update_login, -1*pr_requisition_line.Source_Organization_Id,p_vat_assessable_value => ln_vat_assess_value,
4723 p_modified_by_agent_flag => v_modified_by_agent_flag,
4724 p_parent_req_line_id => v_parent_req_line_id);
4725
4726 END IF;
4727
4728
4729 END IF;
4730 pn_tax_category_id := v_tax_category_id ;
4731 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4732 FND_LOG.STRING(log_level =>G_LEVEL_PROCEDURE
4733 ,module =>G_MODULE_NAME||l_api_name||'.END'
4734 ,message => G_PKG_NAME||':'||l_api_name||'()+');
4735 END IF;
4736 EXCEPTION
4737 WHEN OTHERS THEN
4738 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
4739 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
4740 END IF;
4741 END po_req_tax_default;
4742
4743 /*
4744 REM +======================================================================+
4745 REM Created By : Wenqiong Zhou
4746 REM Creation Date : Jun 1, 2012
4747 REM Bug Number/ER Name : 14040855/JAI Triggers Elimination
4748 REM SubProgram Name : copy_req_to_po
4749 REM Type : Process API
4750 REM Purpose : Process Tax defaultation when autocreate a po from requisition
4751 REM
4752 REM
4753 REM TDD Reference :
4754 REM
4755 REM Assumptions :
4756 REM
4757 REM Parameter IN/OUT Type Required Description and Purpose
4758 REM ----------------------- ------ ------------------------------ ---------- ------------------------------------
4759 REM prec_po_location IN Po_Line_Locations_All%ROWTYPE Y PO Requisition Line Id.
4760 REM
4761 REM CALLED BY
4762 REM process_req_line_inserting , process_req_line_updating.
4763 REM +================================================================================================+
4764 */
4765 PROCEDURE copy_req_to_po(prec_po_location IN Po_Line_Locations_All%ROWTYPE) IS
4766 v_requisition_line_id NUMBER;
4767 v_sugg_vendor_name VARCHAR2(360);
4768 v_dest_org_id NUMBER;
4769 v_sugg_vendor_location VARCHAR2(360);
4770 v_item_id NUMBER;
4771 v_shipment_type VARCHAR2(30);
4772 v_po_vendor_id NUMBER;
4773 v_vendor_id NUMBER;
4774 v_sugg_vendor_id NUMBER;
4775 v_po_vendor_site_id NUMBER;
4776 v_line_loc_id NUMBER;
4777 v_cre_dt DATE ;
4778 v_cre_by NUMBER;
4779 v_last_upd_dt DATE ;
4780 v_last_upd_by NUMBER;
4781 v_last_upd_login NUMBER ;
4782 v_hdr_curr VARCHAR2(30);
4783 v_uom_code VARCHAR2(100);
4784 v_price NUMBER ;
4785 v_qty NUMBER ;
4786 v_curr VARCHAR2(30) ;
4787 v_req_conv_rate NUMBER ;
4788 v_req_conv_type VARCHAR2(30) ;
4789 v_req_conv_date DATE ;
4790 v_t_curr VARCHAR2(30);
4791 v_po_curr VARCHAR2(30);
4792 v_po_conv_rate NUMBER;
4793 v_po_conv_type VARCHAR2(30);
4794 v_po_conv_date DATE;
4795 v_set_of_book_id NUMBER;
4796 conv_rate NUMBER;
4797 v_curr_conv_factor NUMBER;
4798 DUMMY NUMBER;
4799 v_currency_code GL_SETS_OF_BOOKS.currency_code%TYPE;
4800
4801 -- For Blanket Release
4802 v_src_ship_id NUMBER;
4803 v_po_rel_id NUMBER;
4804
4805 -- For Cursor Fetch tax cur
4806 v_po_hdr_id NUMBER;
4807 v_po_line_id NUMBER;
4808 v_line_focus_id NUMBER;
4809 Line_tot NUMBER;
4810 v_tax_amt NUMBER;
4811 v_total_amt NUMBER;
4812 v_tax_line_no NUMBER;
4813 v_prec1 NUMBER;
4814 v_prec2 NUMBER;
4815 v_prec3 NUMBER;
4816 v_prec4 NUMBER;
4817 v_prec5 NUMBER;
4818
4819 v_prec6 NUMBER;
4820 v_prec7 NUMBER;
4821 v_prec8 NUMBER;
4822 v_prec9 NUMBER;
4823 v_prec10 NUMBER;
4824
4825
4826 v_taxid NUMBER;
4827 v_tax_rate NUMBER;
4828 v_qty_rate NUMBER;
4829 v_uom VARCHAR2(15);
4830 v_tax_type VARCHAR2(30);
4831 v_mod_flag VARCHAR2(1);
4832 v_vendor2_id NUMBER;
4833 v_mod_cr NUMBER;
4834 v_vendor1_id NUMBER;
4835 v_tax_target_amt NUMBER;
4836 v_tax_amt1 NUMBER;
4837 v_assessable_value NUMBER;
4838 v_vat_assess_value NUMBER;
4839 v_loc_count NUMBER;
4840
4841 v_tax_category_id JAI_PO_TAXES.tax_category_id%TYPE;
4842 v_tax_category_id_holder JAI_PO_LINE_LOCATIONS.tax_category_id%TYPE;
4843 v_style_id po_headers_all.style_id%TYPE;
4844
4845 ------------------------------>
4846 -- Check the vendor btn the vendor present in tax lines and that of suggested vendor in requisition lines
4847 -- If they are same or any one is null then insert po vendor else keep the vendor in tact.
4848 -- Check if the document to be created is a Blanket Release / Standard Purchase Order.
4849 -- Pick up Line Location Details as well.
4850
4851 CURSOR c_inventory_org_id(p_ship_to_location_id IN NUMBER) IS
4852 SELECT Inventory_Organization_Id
4853 FROM Hr_Locations
4854 WHERE Location_Id = p_ship_to_location_id;
4855
4856 v_inventory_org_id HR_LOCATIONS.Inventory_Organization_Id%TYPE;
4857 v_line_loc_cnt NUMBER;
4858 v_ship_to_organization_id NUMBER;
4859 v_ship_to_location_id NUMBER;
4860 v_price_override PO_LINE_LOCATIONS_ALL.price_override%TYPE;
4861 v_unit_meas_lookup_code PO_LINE_LOCATIONS_ALL.unit_meas_lookup_code%TYPE;
4862 v_line_uom PO_LINES_ALL.unit_meas_lookup_code%TYPE;
4863 v_type_lookup_code PO_HEADERS_ALL.type_lookup_code%TYPE;
4864 v_quot_class_code PO_HEADERS_ALL.quotation_class_code%TYPE;
4865
4866
4867 CURSOR Fetch_Unit_Measure_Cur IS
4868 SELECT Unit_Meas_Lookup_Code
4869 FROM Po_Lines_All
4870 WHERE Po_Line_Id = v_po_line_id;
4871
4872 CURSOR Fetch_UomCode_Cur(p_uom IN VARCHAR2) IS
4873 SELECT Uom_Code
4874 FROM Mtl_Units_Of_Measure
4875 WHERE Unit_Of_Measure = p_uom;
4876
4877 -- Pick up vendor id for the corresponding Po_Header_Id
4878 CURSOR Fetch_Po_Vendor_Id_Cur( hdr_id IN NUMBER ) IS
4879 SELECT Vendor_Id, Vendor_SIte_Id, Currency_Code, Rate_Date, Rate_Type, Rate
4880 , type_lookup_code, quotation_class_code,
4881 style_id
4882 FROM Po_Headers_All
4883 WHERE Po_Header_Id = hdr_id;
4884
4885
4886
4887 CURSOR Fetch_Taxes_Cur( rqlineid IN NUMBER ) IS
4888 SELECT Tax_Line_no,
4889 Precedence_1, Precedence_2, Precedence_3, Precedence_4, Precedence_5,
4890 Precedence_6, Precedence_7, Precedence_8, Precedence_9, Precedence_10,
4891 Tax_Id, Currency, Tax_Rate, Qty_Rate, UOM, Tax_Amount, Tax_Type, Modvat_Flag,
4892 Vendor_Id, Tax_Target_Amount,
4893 tax_category_id
4894 FROM JAI_PO_REQ_LINE_TAXES
4895 WHERE requisition_line_id = rqlineid
4896 ORDER BY Tax_Line_No;
4897 rec_tax Fetch_Taxes_Cur%ROWTYPE;
4898 CURSOR Fetch_Mod_Cr_Cur( taxid IN NUMBER ) IS
4899 SELECT Tax_Type, Mod_Cr_Percentage, Vendor_Id
4900 , adhoc_flag
4901 FROM JAI_CMN_TAXES_ALL
4902 WHERE Tax_Id = taxid;
4903
4904 CURSOR Fetch_Vendor_Id IS
4905 SELECT Vendor_Id
4906 FROM Po_Vendors
4907 WHERE Vendor_Name = v_sugg_vendor_name;
4908
4909 CURSOR Tot_Amt_Cur IS
4910 SELECT SUM( NVL( Tax_Amount, 0 ) )
4911 FROM JAI_PO_TAXES
4912 WHERE line_location_id = v_line_loc_id
4913 AND Tax_Type <> jai_constants.tax_type_tds ; /* 'TDS';*/
4914
4915
4916 CURSOR Chk_localization_entry(c_req_line_id NUMBER) IS
4917 SELECT COUNT(REQUISITION_LINE_ID)
4918 FROM JAI_PO_REQ_LINES
4919 WHERE REQUISITION_LINE_ID = c_req_line_id;
4920
4921 CURSOR tax_override_flag_cur(c_vendor_id NUMBER, c_vendor_site_id NUMBER) IS
4922 SELECT override_flag
4923 FROM JAI_CMN_VENDOR_SITES
4924 WHERE vendor_id = c_vendor_id
4925 AND vendor_site_id = c_vendor_site_id;
4926
4927 v_override_flag VARCHAR2(1);
4928
4929 CURSOR c_get_tax_category_id(p_requisition_line_id IN NUMBER) IS
4930 SELECT tax_category_id
4931 FROM JAI_PO_REQ_LINES
4932 WHERE requisition_line_id = p_requisition_line_id;
4933
4934
4935
4936 v_quantity NUMBER;
4937
4938
4939 v_tax_amount NUMBER;
4940 v_adhoc_flag CHAR(1);
4941
4942 v_curr_conv_rate NUMBER;
4943
4944 v_debug BOOLEAN;
4945 v_utl_file_name VARCHAR2(50);
4946 v_utl_location VARCHAR2(512);
4947 v_myfilehandle UTL_FILE.FILE_TYPE;
4948
4949
4950 lv_tax_cnt NUMBER := 0;
4951 lv_tax_from_reqn_flag varchar2(1) := 'N';
4952
4953 l_func_curr_det jai_plsql_cache_pkg.func_curr_details;
4954 v_requisition_header_id NUMBER;
4955 v_reqn_tax NUMBER;
4956
4957 CURSOR Fetch_Focus_Id_Cur_for_req( line_id IN NUMBER , line_loc_id in Number ) IS
4958 SELECT Line_Focus_Id
4959 FROM JAI_PO_LINE_LOCATIONS
4960 WHERE Po_Line_Id = line_id
4961 AND Line_Location_Id = line_loc_id;
4962
4963 CURSOR c_get_line_loc_cnt IS
4964 select count(1) from JAI_PO_LINE_LOCATIONS
4965 where line_location_id = v_line_loc_id;
4966
4967 Cursor fetch_Tax_cnt( cp_line_loc_id in number ) is
4968 select count(1)
4969 from JAI_PO_TAXES
4970 where line_location_id = cp_line_loc_id;
4971
4972 CURSOR Fetch_Hdr_Curr_Cur IS
4973 SELECT NVL( Currency_Code, '$' )
4974 FROM Po_Requisition_Headers_V
4975 WHERE Requisition_Header_Id = v_requisition_header_id;
4976
4977 Cursor c_get_tax_modified_flag IS
4978 SELECT tax_modified_flag
4979 FROM JAI_PO_LINE_LOCATIONS
4980 WHERE line_location_id = prec_po_location.line_location_id ;
4981 lv_tax_modified_flag VARCHAR2(1) ;
4982
4983 CURSOR c_get_req_lines IS
4984 SELECT *
4985 FROM PO_REQUISITION_LINES_ALL
4986 WHERE line_location_id = prec_po_location.line_location_id;
4987
4988
4989 rec_req_line PO_REQUISITION_LINES_ALL%ROWTYPE;
4990 tax_cnt NUMBER;
4991 l_api_name CONSTANT VARCHAR2(200) := 'copy_req_to_po';
4992 BEGIN
4993
4994 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4995 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
4996 END IF;
4997
4998 v_po_hdr_id := prec_po_location.Po_Header_Id ;
4999 v_po_line_id := prec_po_location.Po_Line_Id ;
5000 Line_Tot := prec_po_location.Price_Override * prec_po_location.Quantity;
5001 v_shipment_type := prec_po_location.Shipment_Type ;
5002 v_po_rel_id := prec_po_location.Po_Release_Id ;
5003 v_src_ship_id := prec_po_location.Source_Shipment_Id ;
5004 v_quantity := prec_po_location.quantity ;
5005 v_ship_to_organization_id := prec_po_location.ship_to_organization_id;
5006 v_ship_to_location_id := prec_po_location.ship_to_location_id ;
5007 v_price_override := prec_po_location.price_override ;
5008 v_unit_meas_lookup_code := prec_po_location.Unit_Meas_Lookup_Code ;
5009 v_line_loc_id := prec_po_location.LINE_LOCATION_ID ;
5010
5011 OPEN Fetch_Po_Vendor_Id_Cur( v_po_hdr_id );
5012 FETCH Fetch_Po_Vendor_Id_Cur INTO v_po_vendor_id, v_po_vendor_site_id, v_po_curr,
5013 v_po_conv_date, v_po_conv_type, v_po_conv_rate
5014 , v_type_lookup_code, v_quot_class_code,
5015 v_style_id;
5016 CLOSE Fetch_Po_Vendor_Id_Cur;
5017
5018
5019 IF jai_cmn_utils_pkg.validate_po_type(p_style_id => v_style_id) = FALSE THEN
5020 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5021 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'style_id:'||to_char(v_style_id)||'validate_po_type is false,return');
5022 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
5023 END IF;
5024 return;
5025 END IF;
5026
5027 OPEN Fetch_Hdr_Curr_Cur;
5028 FETCH Fetch_Hdr_Curr_Cur INTO v_hdr_curr;
5029 CLOSE Fetch_Hdr_Curr_Cur;
5030
5031 v_curr := NVL( v_curr, v_hdr_curr);
5032 OPEN Fetch_Unit_Measure_Cur;
5033 FETCH Fetch_Unit_Measure_Cur INTO v_line_uom;
5034 CLOSE Fetch_Unit_Measure_Cur;
5035
5036 OPEN Fetch_UomCode_Cur(v_line_uom);
5037 FETCH Fetch_UomCode_Cur INTO v_uom_code;
5038 CLOSE Fetch_UomCode_Cur;
5039
5040 OPEN tax_override_flag_cur(v_po_vendor_id, v_po_vendor_site_id);
5041 FETCH tax_override_flag_cur INTO v_override_flag;
5042 CLOSE tax_override_flag_cur;
5043
5044
5045 OPEN c_get_req_lines;
5046 LOOP
5047 FETCH c_get_req_lines INTO rec_req_line;
5048 EXIT WHEN c_get_req_lines%NOTFOUND;
5049
5050
5051 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5052 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'v_requisition_line_id:'||to_char(rec_req_line.requisition_line_id));
5053 END IF;
5054
5055
5056 v_requisition_line_id := rec_req_line.Requisition_Line_Id;
5057 v_sugg_vendor_name := rec_req_line.Suggested_Vendor_Name;
5058 v_dest_org_id := rec_req_line.Destination_Organization_Id;
5059 v_sugg_vendor_location := rec_req_line.Suggested_Vendor_Location;
5060 v_item_id := rec_req_line.Item_Id;
5061 v_line_loc_id := rec_req_line.Line_Location_Id;
5062 v_cre_dt := rec_req_line.Creation_Date;
5063 v_cre_by := rec_req_line.Created_By;
5064 v_last_upd_dt := rec_req_line.Last_Update_Date ;
5065 v_last_upd_by := rec_req_line.Last_Updated_By;
5066 v_last_upd_login := rec_req_line.Last_Update_Login;
5067 v_price := rec_req_line.Unit_Price;
5068 v_qty := rec_req_line.Quantity;
5069 v_curr := rec_req_line.Currency_Code;
5070 v_req_conv_rate := rec_req_line.Rate;
5071 v_req_conv_type := rec_req_line.Rate_Type;
5072 v_req_conv_date := rec_req_line.Rate_Date;
5073 DUMMY := 1;
5074 v_loc_count := 0;
5075 v_requisition_header_id := rec_req_line.requisition_header_id;
5076
5077 --Modified by Junjian for bug#14729941 on 10-Oct-2012 begin
5078 v_curr_conv_factor := get_currency_conv_rate (v_inv_org_id => v_dest_org_id,
5079 v_currency => v_po_curr/*v_curr*/,
5080 v_rate_date => v_po_conv_date/*v_req_conv_date*/,
5081 v_rate_type => v_po_conv_type/*v_req_conv_type*/,
5082 v_rate => v_po_conv_rate/*v_req_conv_rate*/);
5083 v_price_override := v_price_override * nvl(v_curr_conv_factor,1);
5084 --Modified by Junjian for bug#14729941 on 10-Oct-2012 end
5085 OPEN Chk_localization_entry(v_requisition_line_id);
5086 FETCH Chk_localization_entry INTO v_loc_count;
5087 CLOSE Chk_localization_entry;
5088
5089 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5090 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'override_flag:'||NVL(v_override_flag,'N')||'v_shipment_type:'||v_shipment_type);
5091 END IF;
5092 IF NVL(v_override_flag,'N') = 'Y' AND v_shipment_type <> 'BLANKET' THEN
5093 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5094 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,G_PKG_NAME||': override_flag is Y and shipment type <> BLANKET, return');
5095 END IF;
5096 RETURN;
5097 END IF;
5098
5099 IF v_shipment_type <> 'BLANKET' THEN
5100 IF NVL(v_loc_count,0) = 0 THEN
5101 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5102 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,G_PKG_NAME||':shipment type <> BLANKET and no data in JAI req table, return');
5103 END IF;
5104 RETURN;
5105 END IF;
5106 ELSE
5107 RETURN;
5108 END IF;
5109
5110
5111 OPEN Fetch_Vendor_Id;
5112 FETCH Fetch_Vendor_Id INTO v_sugg_vendor_id;
5113 CLOSE Fetch_Vendor_Id;
5114
5115 v_sugg_vendor_id := nvl(v_sugg_vendor_id,-999);
5116
5117 OPEN c_get_line_loc_cnt;
5118 FETCH c_get_line_loc_cnt INTO v_line_loc_cnt;
5119 CLOSE c_get_line_loc_cnt;
5120 -- this means multiple requisition lines are merged into a single PO Shipment line
5121 -- so the taxes should get defaulted from SET UP's rather than carrying the reqn taxes to PO Shipment
5122
5123 IF v_line_loc_cnt > 0 THEN
5124
5125 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5126 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,G_PKG_NAME||':v_line_loc_cnt > 0');
5127 END IF;
5128
5129
5130 OPEN c_get_tax_modified_flag ;
5131 FETCH c_get_tax_modified_flag INTO lv_tax_modified_flag ;
5132 CLOSE c_get_tax_modified_flag;
5133
5134
5135 IF NVL(lv_tax_modified_flag,'N') = 'N' THEN
5136
5137 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5138 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,G_PKG_NAME||':lv_tax_modified_flag = N');
5139 END IF;
5140
5141 delete_jai_po_lines(pn_line_loc_id => v_line_loc_id);
5142
5143
5144 OPEN c_inventory_org_id( v_ship_to_location_id );
5145 FETCH c_inventory_org_id INTO v_inventory_org_id;
5146 CLOSE c_inventory_org_id;
5147
5148 insert_jai_line_locs(
5149 v_line_loc_id => v_line_loc_id
5150 ,v_po_hdr_id => v_po_hdr_id
5151 ,v_po_line_id => v_po_line_id
5152 ,v_cre_dt => v_cre_dt
5153 ,v_cre_by => v_cre_by
5154 ,v_last_upd_dt => v_last_upd_dt
5155 ,v_last_upd_by => v_last_upd_by
5156 ,v_last_upd_login => v_last_upd_login
5157 ,flag => 'I'
5158 ,v_item_id => v_item_id
5159 ,v_vendor_id => v_po_vendor_id
5160 ,v_vendor_site_id => v_po_vendor_site_id
5161 ,v_qty => v_quantity
5162 ,v_price_override => v_price_override
5163 ,v_currency => v_po_curr
5164 ,v_line_focus_id => v_line_focus_id
5165 );
5166
5167
5168 /*calculate av and VAT av*/
5169 get_assessable_value(
5170 pn_vendor_id => v_po_vendor_id
5171 ,pn_vendor_site_id => v_po_vendor_site_id
5172 ,pn_item_id => v_item_id
5173 ,pn_price => v_price_override
5174 ,pn_qty => v_quantity
5175 ,pv_uom_code => v_uom_code
5176 ,pn_po_hdr_id => v_po_hdr_id
5177 ,pv_currency => v_po_curr
5178 ,pv_action => JAI_CONSTANTS.inserting
5179 ,pn_conv_rate => v_curr_conv_factor
5180 ,pn_assessable_value => v_assessable_value
5181 ,pn_vat_assess_value => v_vat_assess_value
5182 );
5183
5184 process_po_taxes(
5185 v_type_lookup_code => v_Type_Lookup_Code
5186 ,v_quot_class_code => v_Quot_Class_Code
5187 ,v_vendor_id => v_po_vendor_id
5188 ,v_vendor_site_id => v_po_vendor_site_id
5189 ,v_currency => v_po_curr
5190 ,v_org_id => v_inventory_org_id
5191 ,v_item_id => v_item_id
5192 ,v_uom_code => v_uom_code
5193 ,v_line_loc_id => v_line_loc_id
5194 ,v_po_hdr_id => v_po_hdr_id
5195 ,v_po_line_id => v_po_line_id
5196 ,v_frm_po_line_id => NULL
5197 ,v_frm_line_loc_id => NULL
5198 ,v_price => v_price_override
5199 ,v_qty => v_quantity
5200 ,v_cre_dt => v_cre_dt
5201 ,v_cre_by => v_cre_by
5202 ,v_last_upd_dt => v_last_upd_dt
5203 ,v_last_upd_by => v_last_upd_by
5204 ,v_last_upd_login => v_last_upd_login
5205 ,flag => 'I'
5206 ,pn_conv_rate => v_curr_conv_factor
5207 ,pn_assessable_value => v_assessable_value
5208 ,pn_vat_assess_value => v_vat_assess_value
5209 );
5210
5211 END IF ;
5212 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5213 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,G_PKG_NAME||'v_line_loc_cnt >0 and after default for tax_modified_flag = N, and return.');
5214 END IF;
5215
5216 return;
5217 END IF;
5218
5219
5220 /*
5221 ||Po lines does not exists .
5222 ||Insert the line locations from requisition into po using the procedure below
5223 */
5224 insert_jai_line_locs(
5225 v_line_loc_id => v_line_loc_id
5226 ,v_po_hdr_id => v_po_hdr_id
5227 ,v_po_line_id => v_po_line_id
5228 ,v_cre_dt => v_cre_dt
5229 ,v_cre_by => v_cre_by
5230 ,v_last_upd_dt => v_last_upd_dt
5231 ,v_last_upd_by => v_last_upd_by
5232 ,v_last_upd_login => v_last_upd_login
5233 ,flag => 'I'
5234 ,v_item_id => v_item_id
5235 ,v_vendor_id => v_po_vendor_id
5236 ,v_vendor_site_id => v_po_vendor_site_id
5237 ,v_qty => v_quantity
5238 ,v_price_override => v_price_override
5239 ,v_currency => v_po_curr
5240 ,v_line_focus_id => v_line_focus_id
5241 );
5242
5243
5244 /*
5245 Fetch the line_focus_id for the current line and current
5246 line location id */
5247 SELECT COUNT(1) INTO tax_cnt FROM JAI_PO_TAXES WHERE
5248 Po_Line_Id = v_po_line_id
5249 AND Line_Location_Id = v_line_loc_id;
5250 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5251 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'before insert taxes, tax_cnt is '||tax_cnt);
5252 END IF;
5253
5254 v_reqn_tax := 0;
5255 OPEN Fetch_Taxes_Cur( v_requisition_line_id );
5256 LOOP
5257 FETCH Fetch_Taxes_Cur INTO rec_tax;
5258
5259 EXIT WHEN Fetch_Taxes_Cur%NOTFOUND;
5260 v_reqn_tax := v_reqn_tax + 1;
5261 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5262 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'in fetch_tax_cur loop:v_reqn_tax, '||v_reqn_tax);
5263 END IF;
5264
5265 OPEN Fetch_Mod_Cr_Cur( rec_tax.tax_id );
5266 FETCH Fetch_Mod_Cr_Cur INTO v_tax_type, v_mod_cr, v_vendor1_id
5267 , v_adhoc_flag;
5268 CLOSE Fetch_Mod_Cr_Cur;
5269
5270 v_currency_code := get_func_currency(v_inventory_org_id);
5271 v_t_curr := rec_tax.Currency; --Added by Junjian for bug#14729941 on 10-Oct-2012
5272 v_tax_amt := rec_tax.Tax_Amount;
5273 IF nvl(v_adhoc_flag, 'N') = 'Y' THEN
5274 IF v_t_curr <> v_po_curr THEN
5275
5276 -- as tax_currency is same as functional currency and v_curr_conv_rate contains conversion from v_po_curr to func_curr
5277 IF v_t_curr = v_currency_code THEN
5278 v_curr_conv_rate := jai_cmn_utils_pkg.currency_conversion( v_set_of_book_id , v_po_curr , v_po_conv_date , v_po_conv_type, v_po_conv_rate );
5279
5280 v_tax_amount := v_tax_amt / v_curr_conv_rate;
5281
5282 ELSE -- now tax_currency is not equal to functional currency, so division is fine
5283 v_curr_conv_rate := jai_cmn_utils_pkg.currency_conversion( v_set_of_book_id , v_t_curr , v_po_conv_date , v_po_conv_type, v_po_conv_rate );
5284 v_tax_amount := v_tax_amt * v_curr_conv_rate;
5285
5286 END IF;
5287
5288 v_curr_conv_rate := null;
5289 ELSE
5290 v_tax_amount := v_tax_amt;
5291 END IF;
5292 ELSE
5293 v_tax_amount := 0;
5294 END IF;
5295
5296
5297 IF v_mod_cr IS NOT NULL AND v_mod_cr > 0 THEN
5298 v_mod_flag := 'Y';
5299 ELSE
5300 v_mod_flag := 'N';
5301 END IF;
5302
5303 IF upper(v_tax_type) IN ( 'CUSTOMS', 'CVD',
5304 jai_constants.tax_type_add_cvd ,
5305 jai_constants.tax_type_customs_edu_Cess,JAI_CONSTANTS.TAX_TYPE_SH_CUSTOMS_EDU_CESS,
5306 jai_constants.tax_type_cvd_edu_cess,JAI_CONSTANTS.TAX_TYPE_SH_CVD_EDU_CESS)
5307 THEN
5308 v_vendor_id := NULL;
5309 ELSIF v_tax_type = 'TDS' THEN
5310 v_vendor_id := v_vendor1_id;
5311 ELSE
5312 IF NVL( v_vendor2_id, -999 ) = v_sugg_vendor_id THEN
5313 v_vendor_id := v_po_vendor_id;
5314 ELSE
5315 v_vendor_id := v_vendor2_id;
5316 END IF;
5317 END IF;
5318 insert_po_taxes
5319 ( 'STANDARD', NULL,
5320 v_line_focus_id, v_line_loc_id,
5321 rec_tax.Tax_Line_no, v_po_line_id, v_po_hdr_id,
5322 rec_tax.precedence_1, rec_tax.precedence_2, rec_tax.precedence_3,
5323 rec_tax.precedence_4, rec_tax.precedence_5,
5324 rec_tax.precedence_6, rec_tax.precedence_7, rec_tax.precedence_8,
5325 rec_tax.precedence_9, rec_tax.precedence_10,
5326 rec_tax.tax_id, NULL, 0, /*rec_tax.currency*/v_po_curr,--Modified by Junjian for bug#14729941 on 10-Oct-2012
5327 rec_tax.tax_rate, rec_tax.qty_rate, rec_tax.uom,
5328 v_tax_amount , rec_tax.tax_type, rec_tax.Modvat_Flag,
5329 rec_tax.vendor_id, rec_tax.Tax_Target_Amount ,
5330 v_cre_dt, v_cre_by, v_last_upd_dt,
5331 v_last_upd_by, v_last_upd_login,
5332 rec_tax.tax_category_id
5333 );
5334
5335
5336
5337 v_tax_amt := 0;
5338 v_tax_amount := 0;
5339 v_adhoc_flag := null;
5340
5341
5342
5343 END LOOP;
5344
5345 CLOSE Fetch_Taxes_Cur;
5346 SELECT COUNT(1) INTO tax_cnt FROM JAI_PO_TAXES WHERE
5347 Po_Line_Id = v_po_line_id
5348 AND Line_Location_Id = v_line_loc_id;
5349 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5350 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'after insert taxes, tax_cnt is '||tax_cnt);
5351 END IF;
5352 if v_reqn_tax > 0 then
5353
5354 /*calculate av and VAT av*/
5355 get_assessable_value(
5356 pn_vendor_id => v_po_vendor_id
5357 ,pn_vendor_site_id => v_po_vendor_site_id
5358 ,pn_item_id => v_item_id
5359 ,pn_price => v_price
5360 ,pn_qty => v_quantity
5361 ,pv_uom_code => v_uom_code
5362 ,pn_po_hdr_id => v_po_hdr_id
5363 ,pv_currency => v_po_curr
5364 ,pv_action => JAI_CONSTANTS.inserting
5365 ,pn_conv_rate => v_curr_conv_factor
5366 ,pn_assessable_value => v_assessable_value
5367 ,pn_vat_assess_value => v_vat_assess_value
5368 );
5369 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5370 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'before calculate_tax ');
5371 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'v_po_hdr_id:'||v_po_hdr_id||'v_po_line_id:'
5372 ||v_po_line_id||'v_line_loc_id'||v_line_loc_id || 'v_quantity:'||v_quantity||
5373 'line_tot:'||line_tot||'v_uom_code'||v_uom_code||'v_assessable_value:'||v_assessable_value
5374 ||'v_vat_assess_value'||v_vat_assess_value||'v_curr_conv_factor'||v_curr_conv_factor);
5375
5376 END IF;
5377 v_tax_amt := NULL;
5378
5379 jai_po_tax_pkg.calculate_tax( 'STANDARDPO',
5380 v_po_hdr_id ,
5381 v_po_line_id,
5382 v_line_loc_id,
5383 v_quantity,
5384 line_tot,
5385 v_uom_code,
5386 line_tot,
5387 v_assessable_value,
5388 v_vat_assess_value,
5389 v_item_id,
5390 1/v_curr_conv_factor );
5391
5392
5393 /* jai_po_tax_pkg.calc_tax(
5394 p_type => 'STANDARDPO',
5395 p_header_id => v_po_hdr_id,
5396 P_line_id => v_po_line_id,
5397 p_line_location_id => v_line_loc_id,
5398 p_line_focus_id => v_line_focus_id,
5399 p_line_quantity => v_qty,
5400 p_base_value => line_tot,
5401 p_line_uom_code => v_uom_code,
5402 p_tax_amount => v_tax_amt,
5403 p_assessable_value => v_assessable_value,
5404 p_vat_assess_value => v_vat_assess_value,
5405 p_item_id => v_item_id,
5406 p_conv_rate => 1/v_curr_conv_factor,
5407 p_po_curr => v_po_curr,
5408 p_func_curr => v_currency_code
5409
5410 );*/
5411 OPEN Tot_Amt_Cur;
5412 FETCH Tot_Amt_Cur INTO v_tax_amt;
5413 CLOSE Tot_Amt_Cur;
5414
5415 OPEN c_get_tax_category_id(rec_req_line.REQUISITION_LINE_ID);
5416 FETCH c_get_tax_category_id INTO v_tax_category_id_holder;
5417 CLOSE c_get_tax_category_id;
5418
5419
5420
5421 UPDATE JaI_Po_Line_Locations
5422 SET Tax_Amount = NVL( v_tax_amt, 0 ),
5423 Total_Amount = NVL( Line_Tot, 0 ) + NVL( v_tax_amt, 0 ),
5424 Last_Updated_By = v_last_upd_by,
5425 Last_Update_Date = v_last_upd_dt,
5426 Last_Update_Login = v_last_upd_login,
5427 tax_category_id = v_tax_category_id_holder
5428 WHERE Po_Line_Id = v_po_line_id
5429 AND Line_Location_Id = v_line_Loc_id;
5430
5431 end if;
5432 END LOOP;
5433
5434 exception
5435 WHEN OTHERS THEN
5436
5437
5438 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
5439 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
5440 END IF;
5441 app_exception.raise_exception;
5442
5443 END copy_req_to_po;
5444 /*
5445 REM +======================================================================+
5446 REM Created By : Wenqiong Zhou
5447 REM Creation Date : Jun 1, 2012
5448 REM Bug Number/ER Name : 14040855/JAI Triggers Elimination
5449 REM SubProgram Name : Cancel_po
5450 REM Type : Process API
5451 REM Purpose : Process PO cancelation.
5452 REM
5453 REM
5454 REM TDD Reference :
5455 REM
5456 REM Assumptions :
5457 REM
5458 REM Parameter IN/OUT Type Required Description and Purpose
5459 REM ----------------------- ------ ------------------------------ ---------- ------------------------------------
5460 REM prec_po_location IN Po_Line_Locations_All%ROWTYPE Y PO Requisition Line Id.
5461 REM
5462 REM CALLED BY
5463 REM process_req_line_inserting , process_req_line_updating.
5464 REM +================================================================================================+
5465 */
5466 PROCEDURE cancel_po(pn_po_hdr_id IN NUMBER) IS
5467
5468 rec_line_loc PO_LINE_LOCATIONS_ALL%ROWTYPE;
5469
5470 CURSOR cur_line_loc IS
5471 SELECT *
5472 FROM PO_LINE_LOCATIONS_ALL
5473 WHERE PO_HEADER_ID = pn_po_hdr_id;
5474
5475
5476 l_api_name CONSTANT VARCHAR2(200) := 'cancel_po';
5477 BEGIN
5478
5479 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5480 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
5481 END IF;
5482
5483 FOR rec_line_loc IN cur_line_loc
5484 LOOP
5485 jai_po_proc_pkg.cancel_po_shipment_line(rec_line_loc);
5486 END LOOP;
5487 END cancel_po;
5488 /*
5489 REM +======================================================================+
5490 REM Created By : Wenqiong Zhou
5491 REM Creation Date : Jun 1, 2012
5492 REM Bug Number/ER Name : 14040855/JAI Triggers Elimination
5493 REM SubProgram Name : process_release
5494 REM Type : Process API
5495 REM Purpose : Process PO Release.
5496 REM
5497 REM
5498 REM TDD Reference :
5499 REM
5500 REM Assumptions :
5501 REM
5502 REM Parameter IN/OUT Type Required Description and Purpose
5503 REM ----------------------- ------ ------------------------------ ---------- ------------------------------------
5504 REM pn_po_release_id IN NUMBER Y PO Release Id.
5505 REM pv_action IN VARCHAR2 Y To indicate insert/udate.
5506 REM
5507 REM CALLED BY
5508 REM JAI_TAX_PROCESSING_PKG.calculate_tax
5509 REM +=====================================================================================================+
5510 */
5511 PROCEDURE process_release(pn_po_release_id IN NUMBER, pv_action IN VARCHAR2) IS
5512 CURSOR c_release_line_locs IS
5513 SELECT *
5514 FROM PO_LINE_LOCATIONS_ALL
5515 WHERE po_release_id = pn_po_release_id;
5516
5517 CURSOR c_jai_loc_exists(cn_line_id IN NUMBER) IS
5518 SELECT 1
5519 FROM JAI_PO_LINE_LOCATIONS jai
5520 WHERE jai.PO_LINE_ID = cn_line_id
5521 AND jai.line_location_id IS NULL;
5522
5523 rec_line_location PO_LINE_LOCATIONS_ALL%ROWTYPE;
5524 ln_line_id PO_LINE_LOCATIONS_ALL.PO_LINE_ID%TYPE;
5525 ln_flag NUMBER;
5526 lv_action VARCHAR2(20);
5527 l_api_name CONSTANT VARCHAR2(30) := 'process_release';
5528 BEGIN
5529 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5530 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
5531 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'pn_po_release_id:'||pn_po_release_id||'pv_action:'||pv_action);
5532 END IF;
5533
5534 OPEN c_release_line_locs;
5535 LOOP
5536 FETCH c_release_line_locs INTO rec_line_location;
5537 EXIT WHEN c_release_line_locs%NOTFOUND;
5538 process_po_shipment_line(rec_line_location.line_location_id, NULL , NULL ,pv_action);
5539 END LOOP;
5540 CLOSE c_release_line_locs;
5541
5542 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5543 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
5544 END IF;
5545 EXCEPTION
5546 WHEN OTHERS THEN
5547
5548
5549 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
5550 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
5551 END IF;
5552 app_exception.raise_exception;
5553 END process_release;
5554 /*
5555 REM +======================================================================+
5556 REM Created By : Wenqiong Zhou
5557 REM Creation Date : Jun 1, 2012
5558 REM Bug Number/ER Name : 14040855/JAI Triggers Elimination
5559 REM SubProgram Name : copy_agreement_taxes
5560 REM Type : Process API
5561 REM Purpose : Copy blanket agreement taxes to release.
5562 REM
5563 REM
5564 REM TDD Reference :
5565 REM
5566 REM Assumptions :
5567 REM
5568 REM Parameter IN/OUT Type Required Description and Purpose
5569 REM ----------------------- ------ ------------------ ---------- ------------------------------------
5570 REM p_src_ship_id IN NUMBER Y PO Release Id.
5571 REM p_qty IN NUMBER Y quantity of item.
5572 REM p_po_hdr_id IN NUMBER Y PO header id
5573 REM p_po_line_id IN NUMBER Y PO line id
5574 REM p_po_line_loc_id IN NUMBER Y PO shipment line id
5575 REM p_ship_type IN VARCHAR2 Y PO shipment type
5576 REM p_cre_dt IN DATE Y creation date
5577 REM p_cre_by IN NUMBER Y created by
5578 REM p_last_upd_dt IN DATE Y last update date
5579 REM p_last_upd_by IN NUMBER Y last update by
5580 REM p_last_upd_login IN NUMBER Y last update login
5581 REM
5582 REM CALLED BY
5583 REM JAI_PO_PROC_PKG.process_po_tax_wrapper
5584 REM +=====================================================================================================+
5585 */
5586 PROCEDURE copy_agreement_taxes
5587 (
5588 p_src_ship_id IN NUMBER,
5589 p_qty IN NUMBER,
5590 p_hdr_id IN NUMBER,
5591 p_line_id IN NUMBER,
5592 p_line_loc_id IN NUMBER,
5593 p_ship_type IN VARCHAR2,
5594 p_cre_dt IN DATE,
5595 p_cre_by IN NUMBER,
5596 p_last_upd_dt IN DATE,
5597 p_last_upd_by IN NUMBER,
5598 p_last_upd_login IN NUMBER
5599 , pv_retroprice_changed IN VARCHAR2 DEFAULT 'N'
5600 ) IS
5601
5602 v_qty NUMBER;
5603 v_old_qty NUMBER;
5604 v_cum_qty NUMBER;
5605 v_line_id NUMBER;
5606 v_tax_amt NUMBER;
5607 v_tax_amt1 NUMBER;
5608 v_total_amt NUMBER;
5609 tax_amount NUMBER;
5610 v_line_loc_id NUMBER;
5611 i NUMBER;
5612 j NUMBER;
5613 k NUMBER;
5614 v_row NUMBER;
5615 flag BOOLEAN;
5616 v_temp_price NUMBER;
5617 v_temp_qty1 NUMBER;
5618 v_temp_qty2 NUMBER;
5619 v_count NUMBER;
5620 v_unit_price NUMBER;
5621 v_uom VARCHAR2(50);
5622 v_uom_code VARCHAR2(50);
5623 v_po_hdr_id NUMBER;
5624 v_po_line_id NUMBER;
5625 v_vendor_id NUMBER;
5626 v_vendor_site_id NUMBER;
5627 v_assessable_value NUMBER;
5628 ln_vat_assess_value NUMBER;
5629 ln_gst_assessable_value NUMBER;
5630 v_doc_curr VARCHAR2(100);
5631 v_item_id NUMBER;
5632 v_curr_conv_factor NUMBER;
5633 DUMMY NUMBER;
5634 v_tax_count NUMBER;
5635 vQryOn VARCHAR2(15);
5636
5637 TYPE v_Llid_tab IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
5638 Llid_tab v_Llid_tab;
5639
5640 TYPE v_Qty_tab IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
5641 Qty_tab v_Qty_Tab;
5642
5643 TYPE v_Price_tab IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
5644 price_tab v_Price_Tab;
5645
5646 TYPE Uom IS TABLE OF VARCHAR2(50) INDEX BY BINARY_INTEGER;
5647 uom_tab uom;
5648
5649 v_tax_category_id_holder JAI_PO_LINE_LOCATIONS.tax_category_id%TYPE;
5650
5651
5652
5653
5654 CURSOR Fetch_Taxes_Cur( lineid IN NUMBER, llid IN NUMBER ) IS
5655 SELECT Line_Location_Id, Tax_Line_No, Po_Line_Id, Po_Header_Id,
5656 Precedence_1, Precedence_2, Precedence_3, Precedence_4,Precedence_5,
5657 Precedence_6, Precedence_7, Precedence_8, Precedence_9,Precedence_10,
5658 Tax_Id, Currency, Tax_Rate, Qty_Rate, UOM, Tax_Amount, Tax_Type,
5659 Vendor_Id, Modvat_Flag, Tax_Target_Amount,
5660 tax_category_id
5661 FROM JAI_PO_TAXES
5662 WHERE NVL( Line_Location_Id, -999 ) = llid
5663 AND Po_Line_Id = lineid
5664 ORDER BY Tax_Line_No;
5665
5666 CURSOR Fetch_Tax_Lines_Cur IS
5667 SELECT line_location_id, tax_line_no, po_line_id, po_header_id,
5668 precedence_1, precedence_2, precedence_3, precedence_4, precedence_5,
5669 precedence_6, precedence_7, precedence_8, precedence_9, precedence_10,
5670 tax_id, currency, tax_rate, qty_rate, uom, tax_amount, tax_type,
5671 vendor_id, modvat_flag, tax_target_amount,
5672 tax_category_id
5673 FROM JAI_PO_TAXES
5674 WHERE line_location_id = p_src_ship_id
5675 AND po_line_id = v_po_line_id;
5676
5677
5678 v_junk_uom MTL_UNITS_OF_MEASURE.unit_of_measure%TYPE;
5679 CURSOR Fetch_Qty_Cur( llid IN NUMBER ) IS
5680 SELECT Quantity, Price_Override, Unit_Meas_Lookup_Code
5681 FROM Po_Line_Locations_All
5682 WHERE Line_Location_Id = llid;
5683
5684
5685 CURSOR Fetch_Cum_Qty_Cur(pQryOn IN VARCHAR2, pShipToOrganizationId IN NUMBER, pShipToLocationId IN NUMBER, cp_shipment_type Po_Line_Locations_All.shipment_type%type) IS
5686 SELECT SUM( Quantity )
5687 FROM Po_Line_Locations_All PLL
5688 WHERE Po_Line_Id = p_line_id
5689
5690 AND shipment_type <> cp_shipment_type --'PRICE BREAK'
5691 AND ((pQryOn = 'ALL' AND PLL.SHIP_TO_ORGANIZATION_ID = pShipToOrganizationId AND PLL.SHIP_TO_LOCATION_ID = pShipToLocationId )
5692 OR (pQryOn = 'ORG' AND PLL.SHIP_TO_ORGANIZATION_ID = pShipToOrganizationId AND PLL.SHIP_TO_LOCATION_ID IS NULL )
5693 OR (pQryOn = 'NULL' AND PLL.SHIP_TO_ORGANIZATION_ID IS NULL AND PLL.SHIP_TO_LOCATION_ID IS NULL )
5694 );
5695
5696
5697 CURSOR Fetch_Count_Llid_Cur(pQryOn IN VARCHAR2, pShipToOrganizationId IN NUMBER, pShipToLocationId IN NUMBER, cp_shipment_type Po_Line_Locations_All.shipment_type%type) IS
5698 SELECT NVL( COUNT( Line_Location_Id ), 0 )
5699 FROM Po_Line_Locations_All PLL
5700 WHERE Po_Line_Id = p_line_id
5701 AND Shipment_Type = cp_shipment_type --'PRICE BREAK'
5702 AND ((pQryOn = 'ALL' AND PLL.SHIP_TO_ORGANIZATION_ID = pShipToOrganizationId AND PLL.SHIP_TO_LOCATION_ID = pShipToLocationId )
5703 OR (pQryOn = 'ORG' AND PLL.SHIP_TO_ORGANIZATION_ID = pShipToOrganizationId AND PLL.SHIP_TO_LOCATION_ID IS NULL )
5704 OR (pQryOn = 'NULL' AND PLL.SHIP_TO_ORGANIZATION_ID IS NULL AND PLL.SHIP_TO_LOCATION_ID IS NULL )
5705 )
5706 AND SYSDATE between nvl(start_date, SYSDATE) and nvl(end_date, SYSDATE);
5707
5708
5709 CURSOR Fetch_Locid_Cur(pQryOn IN VARCHAR2, pShipToOrganizationId IN NUMBER, pShipToLocationId IN NUMBER, cp_shipment_type Po_Line_Locations_All.shipment_type%type) IS
5710 SELECT Line_Location_Id, Quantity, Price_Override, Unit_Meas_Lookup_Code
5711 FROM Po_Line_Locations_All PLL
5712 WHERE Po_Header_Id = p_hdr_id
5713 AND Po_Line_Id = p_line_id
5714 AND Shipment_Type = cp_shipment_type --'PRICE BREAK'
5715
5716 AND ((pQryOn = 'ALL' AND PLL.SHIP_TO_ORGANIZATION_ID = pShipToOrganizationId AND PLL.SHIP_TO_LOCATION_ID = pShipToLocationId )
5717 OR (pQryOn = 'ORG' AND PLL.SHIP_TO_ORGANIZATION_ID = pShipToOrganizationId AND PLL.SHIP_TO_LOCATION_ID IS NULL )
5718 OR (pQryOn = 'NULL' AND PLL.SHIP_TO_ORGANIZATION_ID IS NULL AND PLL.SHIP_TO_LOCATION_ID IS NULL )
5719 )
5720 AND SYSDATE between nvl(start_date, SYSDATE) and nvl(end_date, SYSDATE)
5721 ORDER BY Quantity;
5722
5723
5724 CURSOR cShipmentDetails(pLineLocationId IN NUMBER) IS
5725 SELECT ship_to_organization_id, ship_to_location_id
5726 FROM po_line_locations_all
5727 WHERE line_location_id = pLineLocationId;
5728 vShpDtl cShipmentDetails%ROWTYPE;
5729
5730
5731 CURSOR Fetch_Price_cur IS
5732 SELECT Price_Override
5733 FROM Po_Line_Locations_All
5734 WHERE po_header_id = p_hdr_id
5735 AND po_line_id = p_line_id
5736 AND line_location_id=p_line_loc_id;
5737
5738 CURSOR Fetch_Lineid_Cur IS
5739 SELECT Po_Line_Id, Unit_Price, Unit_Meas_Lookup_Code, Item_Id
5740 FROM Po_Lines_All
5741 WHERE Po_Line_Id = p_line_id;
5742
5743 CURSOR Fetch_UOMCode_Cur( uom IN VARCHAR2 ) IS
5744 SELECT Uom_Code
5745 FROM Mtl_Units_Of_Measure
5746 WHERE Unit_Of_Measure = uom;
5747
5748 CURSOR Fetch_Tot_Sum_Cur( llid IN NUMBER ) IS
5749 SELECT SUM( NVL( Tax_Amount, 0 ) )
5750 FROM JAI_PO_TAXES
5751 WHERE Line_Location_Id = llid
5752 AND Tax_Type <> jai_constants.tax_type_tds; --'TDS';
5753
5754 CURSOR Get_Assessable_Val_Cur IS
5755 SELECT Vendor_Id, Vendor_Site_Id, Currency_Code
5756 FROM Po_Headers_All
5757 WHERE Po_Header_Id = v_po_hdr_id;
5758
5759 CURSOR Get_Item_Id_Cur IS
5760 SELECT Item_Id
5761 FROM Po_Lines_All
5762 WHERE Po_Line_Id = v_po_line_id;
5763
5764
5765 CURSOR c_line_tax_category_id_1(p_po_line_id IN NUMBER) IS
5766 SELECT tax_category_id
5767 FROM JAI_PO_LINE_LOCATIONS
5768 WHERE po_line_id = p_po_line_id
5769 AND line_location_id IS NULL;
5770
5771 CURSOR c_line_tax_category_id_2(p_po_line_id IN NUMBER, p_line_location_id IN NUMBER) IS
5772 SELECT tax_category_id
5773 FROM JAI_PO_LINE_LOCATIONS
5774 WHERE po_line_id = p_po_line_id
5775 AND line_location_id = p_line_location_id;
5776
5777 lv_override_flag JAI_CMN_VENDOR_SITES.override_flag%type ;
5778 lv_cre_dt DATE;
5779 lv_cre_by NUMBER;
5780 lv_last_upd_dt DATE ;
5781 lv_last_upd_by NUMBER;
5782 lv_last_upd_login NUMBER;
5783 lv_price NUMBER;
5784 lv_org_id NUMBER ;
5785 lv_curr PO_HEADERS_ALL.CURRENCY_CODE%TYPE ;
5786 lv_conv_rate number ;
5787 lv_type_lookup_code VARCHAR2(30);
5788 lv_quot_class_code VARCHAR2(30);
5789 lv_rate PO_HEADERS_ALL.RATE%TYPE ;
5790 lv_ship_to_location_id PO_HEADERS_ALL.ship_to_location_id%type ;
5791
5792 lv_rate_type PO_HEADERS_ALL.RATE_TYPE%TYPE DEFAULT NULL ;
5793 lv_rate_date PO_HEADERS_ALL.RATE_DATE%TYPE DEFAULT NULL ;
5794 lv_func_curr VARCHAR2(15);
5795
5796 flag1 VARCHAR2(10);
5797 lv_cum_flag VARCHAR2(20);
5798
5799 /* Fetch Cumulative pricing flag */
5800 CURSOR Fetch_Cum_Pr_Cur( line_id IN NUMBER) IS
5801 SELECT Price_Break_Lookup_Code
5802 FROM Po_Lines_All
5803 WHERE Po_Line_Id = line_id;
5804
5805 CURSOR tax_override_flag_cur(c_vendor_id NUMBER, c_vendor_site_id NUMBER) IS
5806 SELECT override_flag
5807 FROM JAI_CMN_VENDOR_SITES
5808 WHERE vendor_id = c_vendor_id
5809 AND vendor_site_id = nvl(c_vendor_site_id,0) ;
5810
5811 cursor fetch_vendor_id_cur(p_po_hdr_id po_headers_all.po_header_id%type ) IS
5812 select vendor_id,vendor_site_id , currency_code , rate ,RATE_TYPE , RATE_DATE ,ship_to_location_id
5813 from po_headers_all
5814 where po_header_id=p_po_hdr_id;
5815
5816 CURSOR Fetch_Dtls1_Cur( lineid IN NUMBER, linelocid IN NUMBER ) IS
5817 SELECT Price_Override ,Unit_Meas_Lookup_Code
5818 FROM Po_Line_Locations_All
5819 WHERE Po_Line_Id = lineid
5820 AND Line_Location_Id = linelocid;
5821
5822 CURSOR Fetch_Org_Id_Cur IS
5823 SELECT Inventory_Organization_id
5824 FROM Hr_Locations
5825 WHERE Location_Id = lv_ship_to_location_id ;
5826
5827 v_seq_val NUMBER;
5828 l_api_name CONSTANT VARCHAR2(30) := 'copy_agreement_taxes';
5829
5830 BEGIN
5831 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5832 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
5833 END IF;
5834
5835 v_qty := p_qty;
5836 i := 1;
5837 flag := TRUE;
5838 DUMMY := 1;
5839
5840
5841
5842 v_vendor_id := null ;
5843 v_vendor_site_id := null;
5844 lv_override_flag := 'N' ;
5845 v_line_loc_id := p_line_loc_id;
5846 v_po_line_id := p_line_id;
5847 v_po_hdr_id := p_hdr_id;
5848
5849 open fetch_vendor_id_cur(p_hdr_id) ;
5850 fetch fetch_vendor_id_cur into v_vendor_id , v_vendor_site_id ,lv_curr ,lv_rate ,lv_rate_type , lv_rate_date ,lv_ship_to_location_id;
5851 close fetch_vendor_id_cur ;
5852
5853 open tax_override_flag_cur (v_vendor_id , v_vendor_site_id ) ;
5854 fetch tax_override_flag_cur into lv_override_flag ;
5855 close tax_override_flag_cur ;
5856
5857 open Fetch_Org_Id_Cur ;
5858 fetch Fetch_Org_Id_Cur into lv_org_id;
5859 close Fetch_Org_Id_Cur ;
5860
5861 OPEN c_line_tax_category_id_2(p_line_id,p_src_ship_id);
5862 FETCH c_line_tax_category_id_2 INTO v_tax_category_id_holder;
5863 CLOSE c_line_tax_category_id_2;
5864
5865 OPEN Get_Item_Id_Cur;
5866 FETCH Get_Item_Id_Cur INTO v_item_id;
5867 CLOSE Get_Item_Id_Cur;
5868
5869 OPEN Fetch_Qty_Cur( p_line_loc_id );
5870 FETCH Fetch_Qty_Cur INTO v_old_qty, v_temp_price, v_uom;
5871 CLOSE Fetch_Qty_Cur;
5872
5873 v_curr_conv_factor := get_currency_conv_rate (v_inv_org_id => lv_org_id,
5874 v_currency => lv_curr,
5875 v_rate_date => lv_rate_date,
5876 v_rate_type => lv_rate_type,
5877 v_rate => lv_rate);
5878
5879 insert_jai_line_locs(
5880 v_line_loc_id => p_line_loc_id
5881 ,v_po_hdr_id => p_hdr_id
5882 ,v_po_line_id => p_line_id
5883 ,v_cre_dt => p_cre_dt
5884 ,v_cre_by => p_cre_by
5885 ,v_last_upd_dt => p_last_upd_dt
5886 ,v_last_upd_by => p_last_upd_by
5887 ,v_last_upd_login => p_last_upd_login
5888 ,flag => 'I'
5889 ,v_item_id => v_item_id
5890 ,v_vendor_id => v_vendor_id
5891 ,v_vendor_site_id => v_vendor_site_id
5892 ,v_qty => v_old_qty
5893 ,v_price_override => v_temp_price
5894 ,v_tax_modified_flag => 'N'
5895 ,v_tax_category_id => v_tax_category_id_holder
5896 ,v_tax_amount => 0
5897 ,v_total_amount => 0
5898 ,v_currency => lv_curr
5899 ,v_line_focus_id => v_seq_val
5900 );
5901
5902
5903 IF lv_override_flag ='Y' THEN
5904 -- Override_flag ='Y'
5905 -- Cause Tax defaultation to happen
5906 -- from defaultation hirarchy
5907
5908 lv_cre_dt := p_cre_dt ;
5909 lv_cre_by := p_cre_by ;
5910 lv_last_upd_dt := p_last_upd_dt ;
5911 lv_last_upd_by := p_last_upd_by ;
5912 lv_last_upd_login := p_last_upd_login ;
5913
5914
5915
5916 lv_type_lookup_code := 'RELEASE' ;
5917 lv_quot_class_code := 'OTHERS';
5918
5919
5920
5921 OPEN Fetch_Dtls1_Cur( v_po_line_id, v_line_loc_id );
5922 FETCH Fetch_Dtls1_Cur INTO lv_price , v_uom;
5923 CLOSE Fetch_Dtls1_Cur;
5924
5925 OPEN Fetch_UomCode_Cur( v_uom );
5926 FETCH Fetch_UomCode_Cur INTO v_uom_code;
5927 CLOSE Fetch_UomCode_Cur;
5928
5929 OPEN Fetch_Org_Id_Cur;
5930 FETCH Fetch_Org_Id_Cur INTO lv_org_id;
5931 CLOSE fetch_Org_Id_Cur;
5932
5933 get_assessable_value(
5934 pn_vendor_id => v_vendor_id
5935 ,pn_vendor_site_id => v_vendor_site_id
5936 ,pn_item_id => v_item_id
5937 ,pn_price => lv_price
5938 ,pn_qty => v_qty
5939 ,pv_uom_code => v_uom_code
5940 ,pn_po_hdr_id => v_po_hdr_id
5941 ,pv_currency => lv_curr
5942 ,pv_action => JAI_CONSTANTS.inserting
5943 ,pn_conv_rate => v_curr_conv_factor
5944 ,pn_assessable_value => v_assessable_value
5945 ,pn_vat_assess_value => ln_vat_assess_value
5946 );
5947
5948 process_po_taxes(
5949 v_type_lookup_code => lv_type_lookup_code
5950 ,v_quot_class_code => lv_quot_class_code
5951 ,v_vendor_id => v_vendor_id
5952 ,v_vendor_site_id => v_vendor_site_id
5953 ,v_currency => lv_curr
5954 ,v_org_id => lv_org_id
5955 ,v_item_id => v_item_id
5956 ,v_uom_code => v_uom_code
5957 ,v_line_loc_id => v_line_loc_id
5958 ,v_po_hdr_id => v_po_hdr_id
5959 ,v_po_line_id => v_po_line_id
5960 ,v_frm_po_line_id => NULL
5961 ,v_frm_line_loc_id => NULL
5962 ,v_price => lv_price
5963 ,v_qty => v_qty
5964 ,v_cre_dt => lv_cre_dt
5965 ,v_cre_by => lv_cre_by
5966 ,v_last_upd_dt => lv_last_upd_dt
5967 ,v_last_upd_by => lv_last_upd_by
5968 ,v_last_upd_login => lv_last_upd_login
5969 ,flag => 'I'
5970 ,pn_conv_rate => v_curr_conv_factor
5971 ,pn_assessable_value => v_assessable_value
5972 ,pn_vat_assess_value => ln_vat_assess_value
5973 );
5974
5975
5976 ELSE -- For Override filag = 'N'
5977
5978 IF p_ship_type = 'SCHEDULED' THEN
5979
5980 OPEN Fetch_Qty_Cur( p_line_loc_id );
5981 FETCH Fetch_Qty_Cur INTO v_old_qty, v_temp_price, v_uom;
5982 CLOSE Fetch_Qty_Cur;
5983
5984 FOR Tax_Rec IN Fetch_Tax_Lines_Cur LOOP
5985
5986 v_tax_amt := ( NVL( Tax_Rec.Tax_Amount, 0 ) * NVL( v_qty, 0 ) ) / NVL( v_old_qty, 1 );
5987
5988 BEGIN
5989 SELECT COUNT(1) INTO v_tax_count FROM
5990 JAI_PO_TAXES
5991 WHERE Line_Location_Id = Tax_Rec.Line_Location_Id AND
5992 TAX_ID = Tax_Rec.Tax_id;
5993 END;
5994
5995 IF v_tax_count =0 THEN
5996
5997 insert_po_taxes
5998 (lv_type_lookup_code, NULL,
5999 v_seq_val, p_line_Loc_Id,
6000 Tax_Rec.Tax_Line_no, p_Line_Id, p_hdr_id,
6001 Tax_Rec.precedence_1, Tax_Rec.precedence_2, Tax_Rec.precedence_3,
6002 Tax_Rec.precedence_4, Tax_Rec.precedence_5,
6003 Tax_Rec.precedence_6, Tax_Rec.precedence_7, Tax_Rec.precedence_8,
6004 Tax_Rec.precedence_9, Tax_Rec.precedence_10,
6005 Tax_Rec.tax_id, NULL, 0, Tax_Rec.currency,
6006 Tax_Rec.tax_rate, Tax_Rec.qty_rate, Tax_Rec.uom,
6007 Tax_Rec.tax_amount , Tax_Rec.tax_type, Tax_Rec.modvat_flag,
6008 Tax_Rec.vendor_id, Tax_Rec.tax_target_amount ,
6009 p_cre_dt, p_cre_by, p_last_upd_dt, p_last_upd_by, p_last_upd_login,
6010 Tax_Rec.tax_category_id
6011 );
6012
6013 END IF;
6014 v_line_loc_id := Tax_Rec.Line_Location_Id;
6015 v_po_hdr_id := Tax_Rec.Po_Header_Id;
6016 v_po_line_id := Tax_Rec.Po_Line_Id;
6017
6018 END LOOP;
6019
6020 OPEN Fetch_Qty_Cur( v_line_loc_id );
6021 FETCH Fetch_Qty_Cur INTO v_qty, v_temp_price
6022 -- Only PLANNED Shipment Type (Source line_location_id) will have UOM and Scheduled type of Shipments will not have value
6023 -- and this is the reason why excise taxes are not getting calculated on assessable value, bcos ass value is based on UOM
6024 -- , v_uom
6025 , v_junk_uom
6026 ;
6027 CLOSE Fetch_Qty_Cur;
6028
6029 OPEN Fetch_UomCode_Cur( v_uom );
6030 FETCH Fetch_UomCode_Cur INTO v_uom_code;
6031 CLOSE Fetch_UomCode_Cur;
6032
6033 OPEN Get_Assessable_Val_Cur;
6034 FETCH Get_Assessable_Val_Cur INTO v_vendor_id, v_vendor_site_id, v_doc_curr;
6035 CLOSE Get_Assessable_Val_Cur;
6036
6037 OPEN Get_Item_Id_Cur;
6038 FETCH Get_Item_Id_Cur INTO v_item_id;
6039 CLOSE Get_Item_Id_Cur;
6040
6041
6042 get_assessable_value(
6043 pn_vendor_id => v_vendor_id
6044 ,pn_vendor_site_id => v_vendor_site_id
6045 ,pn_item_id => v_item_id
6046 ,pn_price => nvl(v_temp_price,v_unit_price)
6047 ,pn_qty => v_qty
6048 ,pv_uom_code => v_uom_code
6049 ,pn_po_hdr_id => v_po_hdr_id
6050 ,pv_currency => v_doc_curr
6051 ,pv_action => JAI_CONSTANTS.updating
6052 ,pn_conv_rate => v_curr_conv_factor
6053 ,pn_assessable_value => v_assessable_value
6054 ,pn_vat_assess_value => ln_vat_assess_value
6055 );
6056
6057
6058
6059 /* jai_po_tax_pkg.calculate_tax
6060 ( 'STANDARDPO', v_po_hdr_id , v_po_line_id, v_line_loc_id,
6061 v_qty, v_qty*v_temp_price, v_uom_code,v_tax_amt1,
6062 v_assessable_value, ln_vat_assess_value, NULL, 1/v_curr_conv_factor
6063 ); */
6064
6065 jai_po_tax_pkg.calc_tax(
6066 p_type => 'STANDARDPO',
6067 p_header_id => v_po_hdr_id,
6068 P_line_id => v_po_line_id,
6069 p_line_location_id => v_line_loc_id,
6070 p_line_focus_id => v_seq_val,
6071 p_line_quantity => v_qty,
6072 p_base_value => v_qty*v_temp_price,
6073 p_line_uom_code => v_uom_code,
6074 p_tax_amount => v_tax_amt1,
6075 p_assessable_value => v_assessable_value,
6076 p_vat_assess_value => ln_vat_assess_value,
6077 p_item_id => v_item_id,
6078 p_conv_rate => 1/v_curr_conv_factor,
6079 p_po_curr => v_doc_curr
6080
6081 );
6082 OPEN Fetch_Tot_Sum_Cur( v_line_loc_id );
6083 FETCH Fetch_Tot_Sum_Cur INTO v_tax_amt1;
6084 CLOSE Fetch_Tot_Sum_Cur;
6085
6086 UPDATE JAI_PO_LINE_LOCATIONS
6087 SET Tax_Amount = v_tax_amt1,
6088 Total_Amount = NVL( v_qty * v_temp_price, 0 ) + v_tax_amt1 ,
6089 Last_Update_Date = p_last_upd_dt,
6090 Last_Updated_By = p_last_upd_by,
6091 Last_Update_Login = p_last_upd_login
6092 WHERE Line_Location_Id = v_line_loc_id;
6093
6094 ELSE -- BLANKET
6095
6096 -- pShipToOrganizationId IN NUMBER DEFAULT NULL
6097 -- pShipToLocationId IN NUMBER DEFAULT NULL
6098
6099
6100 OPEN cShipmentDetails(p_line_loc_id);
6101 FETCH cShipmentDetails INTO vShpDtl;
6102 CLOSE cShipmentDetails;
6103
6104 IF vShpDtl.ship_to_organization_id IS NOT NULL AND vShpDtl.ship_to_location_id IS NOT NULL THEN
6105 vQryOn := 'ALL';
6106 ELSIF vShpDtl.ship_to_organization_id IS NOT NULL AND vShpDtl.ship_to_location_id IS NULL THEN
6107 vQryOn := 'ORG';
6108 ELSE
6109 vQryOn := 'NULL';
6110 END IF;
6111
6112 OPEN Fetch_Cum_Pr_Cur(v_po_line_id);
6113 FETCH Fetch_Cum_Pr_Cur INTO lv_cum_flag;
6114 CLOSE Fetch_Cum_Pr_Cur;
6115
6116 OPEN Fetch_Count_Llid_Cur(vQryOn, vShpDtl.ship_to_organization_id, vShpDtl.ship_to_location_id, 'PRICE BREAK'); /* Modified by Ramananda for removal of SQL LITERALs :bug#4428980*/
6117 FETCH Fetch_Count_Llid_Cur INTO v_count;
6118 CLOSE Fetch_Count_Llid_Cur;
6119
6120 OPEN Fetch_Lineid_Cur;
6121 FETCH Fetch_Lineid_Cur INTO v_po_line_id, v_unit_price, v_uom, v_item_id;
6122 CLOSE Fetch_Lineid_Cur;
6123 v_qty := p_qty;
6124 IF v_count > 0 THEN
6125
6126 IF lv_cum_flag = 'CUMULATIVE' THEN
6127
6128 OPEN Fetch_Cum_Qty_Cur(vQryOn, vShpDtl.ship_to_organization_id, vShpDtl.ship_to_location_id, 'PRICE BREAK'); /* Modified by Ramananda for removal of SQL LITERALs :bug#4428980*/
6129 FETCH Fetch_Cum_Qty_Cur INTO v_qty;
6130 CLOSE Fetch_Cum_Qty_Cur;
6131 ELSE
6132 v_qty := p_qty;
6133 END IF;
6134 /*
6135 Check out for I line loc. id Qty. If p_qty < then consider the line.
6136 insert all the qty, price into PL/SQL table then do all the checking.
6137 */
6138 FOR Lines_Rec IN Fetch_Locid_Cur(vQryOn, vShpDtl.ship_to_organization_id, vShpDtl.ship_to_location_id, 'PRICE BREAK') LOOP /* Modified by Ramananda for removal of SQL LITERALs :bug#4428980*/
6139 Llid_tab( i ) := Lines_Rec.Line_Location_Id;
6140 Qty_Tab( i ) := Lines_Rec.Quantity;
6141 Price_Tab( i ) := Lines_Rec.Price_Override;
6142 Uom_Tab( i ) := Lines_Rec.Unit_Meas_Lookup_Code;
6143 i := i + 1;
6144 END LOOP;
6145 i := i - 1;
6146 IF ( Qty_Tab( 1 ) > v_qty ) THEN
6147 v_line_loc_id := Llid_tab(1) ;
6148 v_line_id := p_line_id;
6149 v_qty := p_qty;
6150 ELSE
6151 FOR j IN 1 .. i LOOP
6152 v_temp_qty1 := Qty_Tab( j );
6153 IF j < i - 1 THEN
6154 v_temp_qty2 := Qty_Tab( j+1 );
6155 ELSE
6156 v_temp_qty2 := v_qty + j;
6157 END IF;
6158 IF v_qty >= v_temp_qty1 AND v_qty < v_temp_qty2 THEN
6159 v_temp_price := Price_Tab( j );
6160 v_row := j;
6161 END IF;
6162 END LOOP;
6163 If v_row is not null and v_row > 0 THEN
6164 v_line_loc_id := Llid_Tab( v_row ) ;
6165 v_line_id := p_line_id;
6166 v_qty := Qty_Tab( v_row );
6167 v_uom := Uom_Tab( v_row );
6168 Else
6169 v_line_loc_id := -999;
6170 v_line_id := p_line_id;
6171 End If;
6172 v_qty := p_qty;
6173
6174
6175 END IF;
6176
6177 ELSIF v_count = 0 THEN
6178 v_line_loc_id := -999;
6179 v_line_id := p_line_id;
6180 v_qty := p_qty;
6181 END IF;
6182
6183 OPEN FETCH_PRICE_CUR;
6184 FETCH FETCH_PRICE_CUR INTO v_unit_price;
6185 CLOSE FETCH_PRICE_CUR;
6186
6187
6188 OPEN Fetch_UomCode_Cur( v_uom );
6189 FETCH Fetch_UomCode_Cur INTO v_uom_code;
6190 CLOSE Fetch_UomCode_Cur;
6191
6192 FOR Tax_Rec IN Fetch_Taxes_Cur( v_line_id, v_line_loc_id ) LOOP
6193
6194 BEGIN
6195 SELECT COUNT(1) INTO v_tax_count FROM
6196 JAI_PO_TAXES
6197 WHERE Line_Location_Id = p_line_Loc_Id AND
6198 TAX_ID = Tax_Rec.Tax_id;
6199 END;
6200
6201
6202 IF v_tax_count =0 THEN
6203 insert_po_taxes
6204 (lv_type_lookup_code, NULL,
6205 v_seq_val, p_line_Loc_Id,
6206 Tax_Rec.Tax_Line_no, p_Line_Id, p_hdr_id,
6207 Tax_Rec.precedence_1, Tax_Rec.precedence_2, Tax_Rec.precedence_3,
6208 Tax_Rec.precedence_4, Tax_Rec.precedence_5,
6209 Tax_Rec.precedence_6, Tax_Rec.precedence_7, Tax_Rec.precedence_8,
6210 Tax_Rec.precedence_9, Tax_Rec.precedence_10,
6211 Tax_Rec.tax_id, NULL, 0, Tax_Rec.currency,
6212 Tax_Rec.tax_rate, Tax_Rec.qty_rate, Tax_Rec.uom,
6213 0, Tax_Rec.tax_type, Tax_Rec.modvat_flag,
6214 Tax_Rec.vendor_id, 0 ,
6215 p_cre_dt, p_cre_by, p_last_upd_dt, p_last_upd_by, p_last_upd_login,
6216 Tax_Rec.tax_category_id
6217 );
6218
6219
6220 END IF;
6221
6222 v_tax_category_id_holder := nvl( tax_rec.tax_category_id, v_tax_category_id_holder);
6223
6224 END LOOP;
6225
6226
6227 If v_tax_category_id_holder IS NULL THEN
6228 IF nvl(v_line_loc_id,-999) = -999 THEN
6229 OPEN c_line_tax_category_id_1(v_po_line_id);
6230 FETCH c_line_tax_category_id_1 INTO v_tax_category_id_holder;
6231 CLOSE c_line_tax_category_id_1;
6232 ELSE
6233 OPEN c_line_tax_category_id_2(v_po_line_id, v_line_loc_id);
6234 FETCH c_line_tax_category_id_2 INTO v_tax_category_id_holder;
6235 CLOSE c_line_tax_category_id_2;
6236 END IF;
6237 end if;
6238
6239 UPDATE JAI_PO_LINE_LOCATIONS
6240 SET tax_category_id = v_tax_category_id_holder
6241 WHERE line_focus_id = v_seq_val;
6242
6243 v_line_loc_id := p_line_loc_id;
6244 v_po_line_id := p_line_id;
6245 v_po_hdr_id := p_hdr_id;
6246 OPEN Get_Assessable_Val_Cur;
6247 FETCH Get_Assessable_Val_Cur INTO v_vendor_id, v_vendor_site_id, v_doc_curr;
6248 CLOSE Get_Assessable_Val_Cur;
6249
6250 OPEN Get_Item_Id_Cur;
6251 FETCH Get_Item_Id_Cur INTO v_item_id;
6252 CLOSE Get_Item_Id_Cur;
6253
6254 get_assessable_value(
6255 pn_vendor_id => v_vendor_id
6256 ,pn_vendor_site_id => v_vendor_site_id
6257 ,pn_item_id => v_item_id
6258 ,pn_price => v_temp_price
6259 ,pn_qty => v_qty
6260 ,pv_uom_code => v_uom_code
6261 ,pn_po_hdr_id => v_po_hdr_id
6262 ,pv_currency => v_doc_curr
6263 ,pv_action => JAI_CONSTANTS.updating
6264 ,pn_conv_rate => v_curr_conv_factor
6265 ,pn_assessable_value => v_assessable_value
6266 ,pn_vat_assess_value => ln_vat_assess_value
6267 );
6268
6269 Tax_Amount := v_unit_price * p_qty;
6270
6271 -- Pass Line_Location_Id in place of Header_Id in procedure Cal_Tax.
6272 /* jai_po_tax_pkg.calculate_tax( 'RELEASE', p_line_loc_id, p_line_id, v_line_loc_id,
6273 p_qty, v_unit_price * p_qty, v_uom_code,
6274 Tax_Amount, v_assessable_value,ln_vat_assess_value, NULL, 1/v_curr_conv_factor
6275 , pv_retroprice_changed
6276 ); */
6277
6278 jai_po_tax_pkg.calc_tax(
6279 p_type => 'RELEASE',
6280 p_header_id => p_line_loc_id,
6281 P_line_id => p_line_id,
6282 p_line_location_id => v_line_loc_id,
6283 p_line_focus_id => v_seq_val,
6284 p_line_quantity => p_qty,
6285 p_base_value => v_unit_price * p_qty,
6286 p_line_uom_code => v_uom_code,
6287 p_tax_amount => Tax_Amount,
6288 p_assessable_value => v_assessable_value,
6289 p_vat_assess_value => ln_vat_assess_value,
6290 p_item_id => v_item_id,
6291 p_conv_rate => 1/v_curr_conv_factor,
6292 p_po_curr => v_doc_curr
6293
6294 );
6295 END IF;
6296
6297
6298 END IF ;
6299 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6300 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
6301 END IF;
6302 EXCEPTION
6303 WHEN OTHERS THEN
6304
6305
6306 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
6307 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
6308 END IF;
6309 app_exception.raise_exception;
6310
6311 END copy_agreement_taxes;
6312
6313 /*
6314 REM +======================================================================+
6315 REM Created By : Wenqiong Zhou
6316 REM Creation Date : Jun 1, 2012
6317 REM Bug Number/ER Name : 14040855/JAI Triggers Elimination
6318 REM SubProgram Name : insert_po_taxes
6319 REM Type : Table Handler API
6320 REM Purpose : Insert data into JAI_PO_TAXES.
6321 REM
6322 REM
6323 REM TDD Reference :
6324 REM
6325 REM Assumptions :
6326 REM
6327 REM Parameter IN/OUT Type Required Description and Purpose
6328 REM ----------------------- ------ ------------------ ---------- ------------------------------------
6329 REM
6330 REM
6331 REM CALLED BY
6332 REM JAI_PO_PROC_PKG.process_po_taxes copy_agreement_taxes, copy_req_to_po
6333 REM +=====================================================================================================+
6334 */
6335 PROCEDURE insert_po_taxes
6336 (
6337 v_type_lookup_code IN VARCHAR2,
6338 v_quot_class_code IN VARCHAR2,
6339 v_seq_val IN NUMBER,
6340 v_line_loc_id IN NUMBER,
6341 v_tax_line_no IN NUMBER,
6342 v_po_line_id IN NUMBER,
6343 v_po_hdr_id IN NUMBER,
6344 v_prec1 IN NUMBER,
6345 v_prec2 IN NUMBER,
6346 v_prec3 IN NUMBER,
6347 v_prec4 IN NUMBER,
6348 v_prec5 IN NUMBER,
6349 v_prec6 IN NUMBER,
6350 v_prec7 IN NUMBER,
6351 v_prec8 IN NUMBER,
6352 v_prec9 IN NUMBER,
6353 v_prec10 IN NUMBER,
6354 v_taxid IN NUMBER,
6355 v_price IN NUMBER,
6356 v_qty IN NUMBER,
6357 v_curr IN VARCHAR2,
6358 v_tax_rate IN NUMBER,
6359 v_qty_rate IN NUMBER,
6360 v_uom IN VARCHAR2,
6361 v_tax_amt IN NUMBER ,
6362 v_tax_type VARCHAR2,
6363 v_mod_flag IN VARCHAR2,
6364 v_vendor_id IN NUMBER,
6365 v_tax_target_amt IN NUMBER,
6366 v_cre_dt IN DATE,
6367 v_cre_by IN NUMBER,
6368 v_last_upd_dt IN DATE,
6369 v_last_upd_by IN NUMBER,
6370 v_last_upd_login IN NUMBER,
6371 v_tax_category_id IN NUMBER
6372 ) IS
6373
6374 v_tax_amt1 NUMBER;
6375 v_tax NUMBER;
6376 v_tax_target NUMBER;
6377
6378 CURSOR cur_taxes_adhoc(cp_tax_id number) IS
6379 SELECT adhoc_flag
6380 FROM JAI_CMN_TAXES_ALL
6381 WHERE tax_id = cp_tax_id;
6382
6383 lv_adhoc_flag varchar2(1);
6384
6385
6386 l_api_name CONSTANT VARCHAR2(30) := 'insert_po_taxes';
6387 BEGIN
6388
6389 OPEN cur_taxes_adhoc(v_taxid);
6390 FETCH cur_taxes_adhoc INTO lv_adhoc_flag;
6391 CLOSE cur_taxes_adhoc;
6392
6393 v_tax_amt1 := 0;
6394
6395 IF v_type_lookup_code = 'BLANKET' OR v_quot_class_code = 'CATALOG' THEN
6396 v_tax := NULL;
6397 v_tax_target := NULL;
6398 ELSE
6399 v_tax := v_tax_amt;
6400 v_tax_target := v_tax_target_amt;
6401 END IF;
6402
6403
6404
6405 INSERT INTO JAI_PO_TAXES(
6406 Line_Focus_Id, Line_Location_Id, Tax_Line_No,
6407 Po_Line_Id, Po_Header_Id,
6408 Precedence_1, Precedence_2, Precedence_3, Precedence_4, Precedence_5,
6409 Precedence_6, Precedence_7, Precedence_8, Precedence_9, Precedence_10,
6410 Tax_Id, Currency, Tax_Rate, Qty_Rate, UOM,
6411 Tax_Amount, Tax_Type, Modvat_Flag,
6412 Vendor_Id, Tax_Target_Amount,
6413 Creation_Date, Created_By, Last_Update_Date,
6414 Last_Updated_By, Last_Update_Login,
6415 tax_category_id
6416 ) VALUES (
6417 v_seq_val, v_line_loc_id, v_tax_line_no,
6418 v_po_line_id, v_po_hdr_id,
6419 v_prec1, v_prec2, v_prec3, v_prec4, v_prec5,
6420 v_prec6, v_prec7, v_prec8, v_prec9, v_prec10,
6421 v_taxid, v_curr, v_tax_rate, v_qty_rate,
6422 v_uom, v_tax, v_tax_type, v_mod_flag,
6423 v_vendor_id, v_tax_target,
6424 v_cre_dt, v_cre_by, v_last_upd_dt,
6425 v_last_upd_by, v_last_upd_login,
6426 v_tax_category_id
6427 );
6428
6429 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6430 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
6431 END IF;
6432 EXCEPTION
6433 WHEN OTHERS THEN
6434
6435
6436 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
6437 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
6438 END IF;
6439 app_exception.raise_exception;
6440
6441 END insert_po_taxes;
6442 FUNCTION get_currency_conv_rate (v_inv_org_id IN number,v_currency IN VARCHAR2, v_rate_date IN DATE, v_rate_type IN VARCHAR2, v_rate IN NUMBER) RETURN NUMBER IS
6443 v_conv_rate NUMBER;
6444 v_bookid NUMBER;
6445 l_func_curr_det jai_plsql_cache_pkg.func_curr_details;
6446 l_api_name CONSTANT VARCHAR2(200) := 'get_currency_conv_rate';
6447 BEGIN
6448
6449 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6450 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
6451 END IF;
6452 l_func_curr_det := jai_plsql_cache_pkg.return_sob_curr(p_org_id => v_inv_org_id );
6453
6454 IF l_func_curr_det.currency_code <> v_currency OR v_currency IS NOT NULL THEN
6455
6456 IF v_rate_type = 'User' THEN
6457 v_conv_rate := 1/v_rate;
6458 ELSE
6459 v_bookid := l_func_curr_det.ledger_id;
6460 v_conv_rate := jai_cmn_utils_pkg.currency_conversion
6461 ( v_bookid, v_currency, v_rate_date, v_rate_type, 1 );
6462 v_conv_rate := 1/v_conv_rate;
6463 END IF;
6464 ELSE
6465 v_conv_rate := 1;
6466 END IF;
6467
6468 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6469 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,G_PKG_NAME||': v_conv_rate is '||v_conv_rate);
6470 END IF;
6471
6472 RETURN v_conv_rate;
6473 EXCEPTION
6474 WHEN OTHERS THEN
6475
6476
6477 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
6478 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
6479 END IF;
6480 app_exception.raise_exception;
6481
6482 END get_currency_conv_rate;
6483 FUNCTION get_func_currency(v_inv_org_id IN NUMBER)RETURN VARCHAR2 IS
6484 l_func_curr_det jai_plsql_cache_pkg.func_curr_details;
6485 BEGIN
6486 l_func_curr_det := jai_plsql_cache_pkg.return_sob_curr(p_org_id => v_inv_org_id );
6487 RETURN l_func_curr_det.currency_code;
6488 END get_func_currency;
6489
6490 FUNCTION rfq_quotation_related
6491 (
6492 pr_po_header po_headers_all%ROWTYPE DEFAULT NULL
6493 ,pr_po_line po_lines_all%ROWTYPE DEFAULT NULL
6494 ,pr_po_line_loc po_line_locations_all%ROWTYPE DEFAULT NULL
6495 ) RETURN BOOLEAN IS
6496 lv_type_lookup_code po_headers_all.type_lookup_code%TYPE;
6497 lv_from_type_lookup_code po_headers_all.from_type_lookup_code%TYPE;
6498 ln_from_line_id po_lines_all.from_line_id%TYPE;
6499 lb_related BOOLEAN := FALSE;
6500 CURSOR c_po_hdr(c_po_hdr_id NUMBER) IS
6501 SELECT * FROM
6502 PO_HEADERS_ALL
6503 WHERE po_header_id = c_po_hdr_id;
6504
6505 CURSOR c_po_line(c_po_line_id NUMBER) IS
6506 SELECT * FROM
6507 PO_LINES_ALL
6508 WHERE po_line_id = c_po_line_id;
6509
6510 r_po_hdr po_headers_all%ROWTYPE;
6511 r_po_line po_lines_all%ROWTYPE;
6512 l_api_name CONSTANT VARCHAR2(30) := 'ref_quotation_related';
6513 BEGIN
6514
6515 IF (g_level_procedure >= fnd_log.g_current_runtime_level) THEN
6516 fnd_log.STRING(g_level_procedure,g_module_name || l_api_name || '.BEGIN',g_pkg_name || ': ' || l_api_name || '()+');
6517 END IF;
6518 IF pr_po_header.po_header_id IS NOT NULL THEN
6519 r_po_hdr := pr_po_header;
6520 IF (g_level_procedure >= fnd_log.g_current_runtime_level) THEN
6521 fnd_log.STRING(g_level_procedure,g_module_name || l_api_name,g_pkg_name || ': ' || l_api_name || 'its called from header trigger.');
6522 END IF;
6523
6524 ELSIF pr_po_line.po_line_id IS NOT NULL THEN
6525 OPEN c_po_hdr(pr_po_line.po_header_id);
6526 FETCH c_po_hdr INTO r_po_hdr;
6527 CLOSE c_po_hdr;
6528 r_po_line := pr_po_line;
6529 IF (g_level_procedure >= fnd_log.g_current_runtime_level) THEN
6530 fnd_log.STRING(g_level_procedure,g_module_name || l_api_name,g_pkg_name || ': ' || l_api_name || 'its called from line trigger.');
6531 END IF;
6532
6533 ELSIF pr_po_line_loc.line_location_id IS NOT NULL THEN
6534 OPEN c_po_hdr(pr_po_line_loc.po_header_id);
6535 FETCH c_po_hdr INTO r_po_hdr;
6536 CLOSE c_po_hdr;
6537
6538 OPEN c_po_line(pr_po_line_loc.po_line_id);
6539 FETCH c_po_line INTO r_po_line;
6540 CLOSE c_po_line;
6541 IF (g_level_procedure >= fnd_log.g_current_runtime_level) THEN
6542 fnd_log.STRING(g_level_procedure,g_module_name || l_api_name,g_pkg_name || ': ' || l_api_name || 'its called from LLA trigger.');
6543 END IF;
6544
6545 END IF;
6546 lv_type_lookup_code :=r_po_hdr.type_lookup_code;
6547 lv_from_type_lookup_code :=r_po_hdr.from_type_lookup_code;
6548
6549 ln_from_line_id := r_po_line.from_line_id;
6550
6551 IF lv_type_lookup_code IN ( 'RFQ', 'QUOTATION' , 'BLANKET') OR (lv_from_type_lookup_code IN ('QUOTATION')/* AND lv_type_lookup_code NOT IN ( 'STANDARD')*/) --Added 'BLANKET' by Wenqiong for bug14748379 2012/10/15
6552 OR (lv_type_lookup_code IN ( 'STANDARD', 'PLANNED') AND ln_from_line_id IS NOT NULL ) THEN
6553 lb_related := TRUE;
6554 END IF;
6555 -- RETURN TRUE;
6556 IF (g_level_procedure >= fnd_log.g_current_runtime_level) THEN
6557 IF lb_related THEN
6558 fnd_log.STRING(g_level_procedure,g_module_name || l_api_name ||'.END',g_pkg_name || ',lb_related:true '||'type:'||lv_type_lookup_code||'lv_from_type_lookup_code:'||lv_from_type_lookup_code);
6559 ELSE
6560 fnd_log.STRING(g_level_procedure,g_module_name || l_api_name ||'.END',g_pkg_name || ',lb_related:false '||'type:'||lv_type_lookup_code||'lv_from_type_lookup_code:'||lv_from_type_lookup_code);
6561 END IF;
6562 END IF;
6563
6564 RETURN lb_related;
6565 END rfq_quotation_related;
6566 PROCEDURE process_quotation_line(r_old_po_line po_lines_all%ROWTYPE DEFAULT NULL ,r_po_line PO_LINES_ALL%ROWTYPE , pv_action varchar2 , pv_return_code out nocopy varchar2 , pv_return_message out nocopy varchar2 ) IS
6567 v_po_line_id NUMBER;
6568 v_po_hdr_id NUMBER;
6569 v_frm_hdr_id NUMBER;
6570 v_frm_po_line_id NUMBER;
6571 v_currency po_headers_all.Currency_Code%TYPE;
6572 v_type_lookup_code po_headers_all.type_lookup_code%TYPE;
6573 v_from_type_lookup_code po_headers_all.from_type_lookup_code%TYPE;
6574 v_quot_class_code po_headers_all.from_type_lookup_code%TYPE;
6575 v_qty NUMBER;
6576 v_price NUMBER;
6577 v_uom_code VARCHAR2(30);
6578 v_line_uom VARCHAR2(30);
6579 v_vendor_id NUMBER;
6580 v_vendor_site_id NUMBER;
6581 v_line_loc_id NUMBER;
6582 v_line_loc_exists NUMBER;
6583 v_hook_value VARCHAR2(10);
6584 v_style_id NUMBER;
6585 v_Cre_Dt Date;
6586 v_Cre_By Number;
6587 v_Last_Upd_Dt Date;
6588 v_Last_Upd_By Number;
6589 v_Last_Upd_Login Number;
6590 r_po_header PO_HEADERS_ALL%ROWTYPE;
6591
6592 CURSOR c_po_hdr(cn_po_hdr_id NUMBER) IS
6593 SELECT *
6594 FROM PO_HEADERS_ALL
6595 WHERE po_header_id = cn_po_hdr_id;
6596
6597 CURSOR Fetch_UOMCode_Cur( v_uom IN VARCHAR2 ) IS
6598 SELECT Uom_Code
6599 FROM Mtl_Units_Of_Measure
6600 WHERE Unit_Of_Measure = v_uom;
6601
6602 CURSOR Fetch_Lines_Cur IS
6603 SELECT Line_location_id, Price_Override, Quantity
6604 FROM Po_Line_Locations_All
6605 WHERE Po_Line_Id = v_po_line_id;
6606
6607 CURSOR c_get_po_line_loc_details IS
6608 SELECT DISTINCT item_id
6609 FROM JAI_PO_LINE_LOCATIONS
6610 WHERE po_line_id = v_po_line_id;
6611
6612 CURSOR po_line_loc_cur IS
6613 SELECT * FROM PO_LINE_LOCATIONS_ALL
6614 WHERE po_line_id = v_po_line_id
6615 AND shipment_type NOT IN ( 'SCHEDULED', 'BLANKET' );
6616
6617 r_jai_po_line_loc c_get_po_line_loc_details%ROWTYPE;
6618 v_src_loc_id NUMBER;
6619 v_src_line_id NUMBER;
6620 l_api_name CONSTANT VARCHAR2(30) := 'process_quotation_line';
6621 BEGIN
6622
6623 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6624 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
6625 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'pv_action:'||pv_action);
6626 END IF;
6627 pv_return_code := jai_constants.successful ;
6628
6629 v_po_line_id := r_po_line.Po_Line_Id ;
6630 v_po_hdr_id := r_po_line.Po_Header_Id;
6631 v_frm_hdr_id := r_po_line.From_HEADER_Id;
6632 v_frm_po_line_id := r_po_line.From_Line_Id;
6633 v_qty := r_po_line.QUANTITY;
6634 v_line_uom := r_po_line.Unit_Meas_Lookup_Code;
6635 v_hook_value := 'TRUE';
6636
6637 v_hook_value := jai_cmn_hook_pkg.Ja_In_po_lines_all(
6638 r_po_line.PO_LINE_ID ,
6639 r_po_line.PO_HEADER_ID ,
6640 r_po_line.LINE_TYPE_ID ,
6641 r_po_line.LINE_NUM ,
6642 r_po_line.ITEM_ID ,
6643 r_po_line.ITEM_REVISION ,
6644 r_po_line.CATEGORY_ID ,
6645 r_po_line.ITEM_DESCRIPTION ,
6646 r_po_line.UNIT_MEAS_LOOKUP_CODE ,
6647 r_po_line.QUANTITY_COMMITTED ,
6648 r_po_line.COMMITTED_AMOUNT ,
6649 r_po_line.ALLOW_PRICE_OVERRIDE_FLAG ,
6650 r_po_line.NOT_TO_EXCEED_PRICE ,
6651 r_po_line.LIST_PRICE_PER_UNIT ,
6652 r_po_line.UNIT_PRICE ,
6653 r_po_line.QUANTITY ,
6654 r_po_line.UN_NUMBER_ID ,
6655 r_po_line.HAZARD_CLASS_ID ,
6656 r_po_line.NOTE_TO_VENDOR ,
6657 r_po_line.FROM_HEADER_ID ,
6658 r_po_line.FROM_LINE_ID ,
6659 r_po_line.MIN_ORDER_QUANTITY ,
6660 r_po_line.MAX_ORDER_QUANTITY ,
6661 r_po_line.QTY_RCV_TOLERANCE ,
6662 r_po_line.OVER_TOLERANCE_ERROR_FLAG ,
6663 r_po_line.MARKET_PRICE ,
6664 r_po_line.UNORDERED_FLAG ,
6665 r_po_line.CLOSED_FLAG ,
6666 r_po_line.USER_HOLD_FLAG ,
6667 r_po_line.CANCEL_FLAG ,
6668 r_po_line.CANCELLED_BY ,
6669 r_po_line.CANCEL_DATE ,
6670 r_po_line.CANCEL_REASON ,
6671 r_po_line.FIRM_STATUS_LOOKUP_CODE ,
6672 r_po_line.FIRM_DATE ,
6673 r_po_line.VENDOR_PRODUCT_NUM ,
6674 r_po_line.CONTRACT_NUM ,
6675 r_po_line.TAXABLE_FLAG ,
6676 r_po_line.TAX_NAME ,
6677 r_po_line.TYPE_1099 ,
6678 r_po_line.CAPITAL_EXPENSE_FLAG ,
6679 r_po_line.NEGOTIATED_BY_PREPARER_FLAG ,
6680 r_po_line.ATTRIBUTE_CATEGORY ,
6681 r_po_line.ATTRIBUTE1 ,
6682 r_po_line.ATTRIBUTE2 ,
6683 r_po_line.ATTRIBUTE3 ,
6684 r_po_line.ATTRIBUTE4 ,
6685 r_po_line.ATTRIBUTE5 ,
6686 r_po_line.ATTRIBUTE6 ,
6687 r_po_line.ATTRIBUTE7 ,
6688 r_po_line.ATTRIBUTE8 ,
6689 r_po_line.ATTRIBUTE9 ,
6690 r_po_line.ATTRIBUTE10 ,
6691 r_po_line.REFERENCE_NUM ,
6692 r_po_line.ATTRIBUTE11 ,
6693 r_po_line.ATTRIBUTE12 ,
6694 r_po_line.ATTRIBUTE13 ,
6695 r_po_line.ATTRIBUTE14 ,
6696 r_po_line.ATTRIBUTE15 ,
6697 r_po_line.MIN_RELEASE_AMOUNT ,
6698 r_po_line.PRICE_TYPE_LOOKUP_CODE ,
6699 r_po_line.CLOSED_CODE ,
6700 r_po_line.PRICE_BREAK_LOOKUP_CODE ,
6701 r_po_line.USSGL_TRANSACTION_CODE ,
6702 r_po_line.GOVERNMENT_CONTEXT ,
6703 r_po_line.REQUEST_ID ,
6704 r_po_line.PROGRAM_APPLICATION_ID ,
6705 r_po_line.PROGRAM_ID ,
6706 r_po_line.PROGRAM_UPDATE_DATE ,
6707 r_po_line.CLOSED_DATE ,
6708 r_po_line.CLOSED_REASON ,
6709 r_po_line.CLOSED_BY ,
6710 r_po_line.TRANSACTION_REASON_CODE ,
6711 r_po_line.ORG_ID ,
6712 r_po_line.QC_GRADE ,
6713 r_po_line.BASE_UOM ,
6714 r_po_line.BASE_QTY ,
6715 r_po_line.SECONDARY_UOM ,
6716 r_po_line.SECONDARY_QTY ,
6717 r_po_line.LINE_REFERENCE_NUM ,
6718 r_po_line.PROJECT_ID ,
6719 r_po_line.TASK_ID ,
6720 r_po_line.EXPIRATION_DATE ,
6721 r_po_line.TAX_CODE_ID
6722 );
6723
6724 IF v_hook_value = 'FALSE' THEN
6725 RETURN;
6726 END IF;
6727
6728 OPEN c_po_hdr(v_po_hdr_id);
6729 FETCH c_po_hdr INTO r_po_header;
6730 CLOSE c_po_hdr;
6731
6732 v_type_lookup_code := r_po_header.type_lookup_code;
6733 v_from_type_lookup_code := r_po_header.from_type_lookup_code;
6734 v_quot_class_code := r_po_header.Quotation_Class_Code;
6735 v_Vendor_id := r_po_header.vendor_id;
6736 v_Vendor_Site_Id := r_po_header.vendor_site_id;
6737 v_currency := r_po_header.currency_code;
6738 v_style_id := r_po_header.style_id;
6739
6740 OPEN Fetch_UOMCode_Cur(v_line_uom);
6741 FETCH Fetch_UOMCode_Cur INTO v_uom_code;
6742 CLOSE Fetch_UOMCode_Cur;
6743
6744 IF pv_action = JAI_CONSTANTS.inserting THEN
6745 IF v_type_lookup_code = 'BLANKET' OR v_quot_class_code = 'CATALOG' THEN
6746 IF v_type_lookup_code = 'BLANKET' AND v_frm_hdr_id IS NOT NULL THEN
6747 v_src_loc_id := get_line_loc_id(v_frm_hdr_id ,r_po_line.line_num ,r_po_line.item_id , NULL);
6748 v_src_line_id := get_line_id(v_frm_hdr_id ,r_po_line.line_num );
6749 jai_po_proc_pkg.copy_source_taxes(
6750 p_type => 'L'
6751 ,p_po_hdr_id => r_po_line.po_header_id
6752 ,p_po_line_id => r_po_line.PO_LINE_ID
6753 ,p_po_line_loc_id => NULL
6754 ,p_line_num => r_po_line.line_num
6755 ,p_ship_num => NULL
6756 ,p_item_id => r_po_line.item_id
6757 ,p_from_hdr_id => v_frm_hdr_id
6758 ,p_from_type_lookup_code => v_from_type_lookup_code
6759 ,p_source_line_id => v_src_line_id
6760 ,p_source_loc_id => v_src_loc_id
6761 ,p_cre_dt => r_po_line.Creation_Date
6762 ,p_cre_by => r_po_line.Created_By
6763 ,p_last_upd_dt => r_po_line.Last_Update_Date
6764 ,p_last_upd_by => r_po_line.Last_Updated_By
6765 ,p_last_upd_login => r_po_line.Last_Update_Login
6766 );
6767 END IF;
6768 jai_po_proc_pkg.process_po_tax_wrapper(prec_po_line => r_po_line);
6769 END IF;
6770 /* --Added by Wenqiong for bug14748379 begin
6771 ELSIF v_type_lookup_code = 'BLANKET' AND v_frm_hdr_id IS NULL THEN
6772 jai_po_proc_pkg.process_po_tax_wrapper(prec_po_line => r_po_line);
6773 --Added by Wenqiong for bug14748379 end
6774 END IF;*/
6775 ELSE-- pv_action = JAI_CONSTANTS.updating
6776
6777 IF jai_cmn_utils_pkg.validate_po_type(p_style_id => v_style_id) = FALSE THEN
6778 return;
6779 END IF;
6780
6781 IF v_type_lookup_code IN ('STANDARD', 'PLANNED')
6782 AND (nvl(v_frm_hdr_id,0) <> nvl(r_old_po_line.from_header_id,0)
6783 and nvl(v_frm_po_line_id,0) <> nvl(r_old_po_line.from_line_id,0)) THEN
6784 Open Fetch_Lines_Cur;
6785 Fetch Fetch_Lines_Cur INTO v_line_loc_id, v_price, v_qty;
6786 Close Fetch_Lines_Cur;
6787 --Added by Wenqiong for trigger replacement begin.
6788 /*jai_po_proc_pkg.delete_jai_po_lines(pn_line_id=>v_po_line_id);
6789 jai_po_proc_pkg.delete_po_taxes(pn_po_line_id=>v_po_line_id);*/
6790 --Added by Wenqiong for trigger replacement end.
6791 jai_po_proc_pkg.copy_quot_taxes(
6792 p_line_loc_id => v_line_loc_id
6793 ,p_po_hdr_id => v_po_hdr_id
6794 ,p_po_line_id => v_po_line_id
6795 ,p_item_id => r_po_line.item_id --Added on 15-Jan-2013
6796 ,p_qty => v_qty
6797 ,p_frm_hdr_id => v_frm_hdr_id
6798 ,p_frm_line_id => v_frm_po_line_id
6799 ,p_price => v_price
6800 ,p_unit_code => v_uom_code
6801 ,p_cre_dt => v_cre_dt
6802 ,p_cre_by => v_cre_by
6803 ,p_last_upd_dt => v_last_upd_dt
6804 ,p_last_upd_by => v_last_upd_by
6805 ,p_last_upd_login => v_last_upd_login
6806 ,p_call_from => 'TRIGGER'
6807 );
6808 END IF;
6809 /*Get old item id from JAI table*/
6810 OPEN c_get_po_line_loc_details;
6811 FETCH c_get_po_line_loc_details INTO r_jai_po_line_loc;
6812 CLOSE c_get_po_line_loc_details;
6813 IF r_jai_po_line_loc.item_id <> r_po_line.item_id THEN
6814 FOR r_po_line_loc IN po_line_loc_cur
6815 LOOP
6816 jai_po_proc_pkg.process_po_tax_wrapper (prec_po_location =>r_po_line_loc);
6817 END LOOP;
6818 END IF;
6819 END IF;
6820 EXCEPTION
6821 WHEN OTHERS THEN
6822
6823
6824 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
6825 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
6826 END IF;
6827 app_exception.raise_exception;
6828
6829 END process_quotation_line;
6830
6831 PROCEDURE process_quotation_line_loc(po_line_loc_rec PO_LINE_LOCATIONS_ALL%ROWTYPE , pv_action varchar2 , pv_return_code out nocopy varchar2 , pv_return_message out nocopy varchar2 ) IS
6832
6833 v_po_hdr_id NUMBER;
6834 v_po_line_id NUMBER;
6835 v_orig_ship_id NUMBER;
6836 v_shipment_type VARCHAR2(25);
6837 v_uom_measure VARCHAR2(30);
6838 v_uom_code VARCHAR2(30);
6839 v_shipment_num NUMBER;
6840 v_src_ship_id NUMBER;
6841 v_from_line_loc_id NUMBER;
6842 v_from_line_id NUMBER;
6843 v_from_hdr_id NUMBER;
6844 v_line_loc_id NUMBER;
6845 v_price NUMBER;
6846 v_qty NUMBER;
6847 v_cre_dt DATE ;
6848 v_cre_by NUMBER ;
6849 v_last_upd_dt DATE ;
6850 v_last_upd_by NUMBER ;
6851 v_last_upd_login NUMBER ;
6852
6853 v_ship_to_org_id NUMBER;
6854 v_from_type_lookup_code VARCHAR2(25);
6855 v_type_lookup_code VARCHAR2(25);
6856 v_vendor_id NUMBER;
6857 v_vendor_site_id NUMBER;
6858 v_currency VARCHAR2(3);
6859 v_ship_loc_id NUMBER;
6860 v_quot_from_hdr_id NUMBER;
6861 v_service_type_code VARCHAR2(30);
6862 v_count NUMBER;
6863
6864 v_item_id NUMBER;
6865 v_line_num PO_LINES_ALL.line_num%TYPE;
6866 v_style_id NUMBER;
6867 v_hook_value VARCHAR2(10);
6868 v_src_loc_id NUMBER;
6869 v_src_line_id NUMBER;
6870 CURSOR c_po_hdr(cn_po_hdr_id NUMBER) IS
6871 SELECT *
6872 FROM PO_HEADERS_ALL
6873 WHERE po_header_id = cn_po_hdr_id;
6874
6875 CURSOR fetch_uomcode_cur IS
6876 SELECT uom_code
6877 FROM mtl_units_of_measure
6878 WHERE unit_of_measure = v_uom_measure;
6879
6880 CURSOR c_po_line(cn_po_line_id NUMBER) IS
6881 SELECT *
6882 FROM PO_LINES_ALL
6883 WHERE po_line_id = cn_po_line_id;
6884
6885 CURSOR Fetch_Count_Cur (cn_po_hdr_id NUMBER)IS
6886 SELECT COUNT(Line_Location_Id)
6887 FROM JAI_PO_LINE_LOCATIONS
6888 WHERE Po_Header_Id = cn_po_hdr_id ;
6889
6890 r_po_header PO_HEADERS_ALL%ROWTYPE;
6891 r_po_line PO_LINES_ALL%ROWTYPE;
6892
6893 l_api_name CONSTANT VARCHAR2(30) := 'process_quotation_line_loc';
6894 BEGIN
6895 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6896 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
6897 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'pv_action:'||pv_action);
6898 END IF;
6899
6900 v_hook_value := jai_cmn_hook_pkg.Ja_In_po_line_locations_all(
6901 po_line_loc_rec.LINE_LOCATION_ID ,
6902 po_line_loc_rec.PO_HEADER_ID ,
6903 po_line_loc_rec.PO_LINE_ID ,
6904 po_line_loc_rec.QUANTITY ,
6905 po_line_loc_rec.QUANTITY_RECEIVED ,
6906 po_line_loc_rec.QUANTITY_ACCEPTED ,
6907 po_line_loc_rec.QUANTITY_REJECTED ,
6908 po_line_loc_rec.QUANTITY_BILLED ,
6909 po_line_loc_rec.QUANTITY_CANCELLED ,
6910 po_line_loc_rec.UNIT_MEAS_LOOKUP_CODE ,
6911 po_line_loc_rec.PO_RELEASE_ID ,
6912 po_line_loc_rec.SHIP_TO_LOCATION_ID ,
6913 po_line_loc_rec.SHIP_VIA_LOOKUP_CODE ,
6914 po_line_loc_rec.NEED_BY_DATE ,
6915 po_line_loc_rec.PROMISED_DATE ,
6916 po_line_loc_rec.LAST_ACCEPT_DATE ,
6917 po_line_loc_rec.PRICE_OVERRIDE ,
6918 po_line_loc_rec.ENCUMBERED_FLAG ,
6919 po_line_loc_rec.ENCUMBERED_DATE ,
6920 po_line_loc_rec.UNENCUMBERED_QUANTITY ,
6921 po_line_loc_rec.FOB_LOOKUP_CODE ,
6922 po_line_loc_rec.FREIGHT_TERMS_LOOKUP_CODE ,
6923 po_line_loc_rec.TAXABLE_FLAG ,
6924 po_line_loc_rec.TAX_NAME ,
6925 po_line_loc_rec.ESTIMATED_TAX_AMOUNT ,
6926 po_line_loc_rec.FROM_HEADER_ID ,
6927 po_line_loc_rec.FROM_LINE_ID ,
6928 po_line_loc_rec.FROM_LINE_LOCATION_ID ,
6929 po_line_loc_rec.START_DATE ,
6930 po_line_loc_rec.END_DATE ,
6931 po_line_loc_rec.LEAD_TIME ,
6932 po_line_loc_rec.LEAD_TIME_UNIT ,
6933 po_line_loc_rec.PRICE_DISCOUNT ,
6934 po_line_loc_rec.TERMS_ID ,
6935 po_line_loc_rec.APPROVED_FLAG ,
6936 po_line_loc_rec.APPROVED_DATE ,
6937 po_line_loc_rec.CLOSED_FLAG ,
6938 po_line_loc_rec.CANCEL_FLAG ,
6939 po_line_loc_rec.CANCELLED_BY ,
6940 po_line_loc_rec.CANCEL_DATE ,
6941 po_line_loc_rec.CANCEL_REASON ,
6942 po_line_loc_rec.FIRM_STATUS_LOOKUP_CODE ,
6943 po_line_loc_rec.FIRM_DATE ,
6944 po_line_loc_rec.ATTRIBUTE_CATEGORY ,
6945 po_line_loc_rec.ATTRIBUTE1 ,
6946 po_line_loc_rec.ATTRIBUTE2 ,
6947 po_line_loc_rec.ATTRIBUTE3 ,
6948 po_line_loc_rec.ATTRIBUTE4 ,
6949 po_line_loc_rec.ATTRIBUTE5 ,
6950 po_line_loc_rec.ATTRIBUTE6 ,
6951 po_line_loc_rec.ATTRIBUTE7 ,
6952 po_line_loc_rec.ATTRIBUTE8 ,
6953 po_line_loc_rec.ATTRIBUTE9 ,
6954 po_line_loc_rec.ATTRIBUTE10 ,
6955 po_line_loc_rec.UNIT_OF_MEASURE_CLASS ,
6956 po_line_loc_rec.ENCUMBER_NOW ,
6957 po_line_loc_rec.ATTRIBUTE11 ,
6958 po_line_loc_rec.ATTRIBUTE12 ,
6959 po_line_loc_rec.ATTRIBUTE13 ,
6960 po_line_loc_rec.ATTRIBUTE14 ,
6961 po_line_loc_rec.ATTRIBUTE15 ,
6962 po_line_loc_rec.INSPECTION_REQUIRED_FLAG ,
6963 po_line_loc_rec.RECEIPT_REQUIRED_FLAG ,
6964 po_line_loc_rec.QTY_RCV_TOLERANCE ,
6965 po_line_loc_rec.QTY_RCV_EXCEPTION_CODE ,
6966 po_line_loc_rec.ENFORCE_SHIP_TO_LOCATION_CODE ,
6967 po_line_loc_rec.ALLOW_SUBSTITUTE_RECEIPTS_FLAG ,
6968 po_line_loc_rec.DAYS_EARLY_RECEIPT_ALLOWED ,
6969 po_line_loc_rec.DAYS_LATE_RECEIPT_ALLOWED ,
6970 po_line_loc_rec.RECEIPT_DAYS_EXCEPTION_CODE ,
6971 po_line_loc_rec.INVOICE_CLOSE_TOLERANCE ,
6972 po_line_loc_rec.RECEIVE_CLOSE_TOLERANCE ,
6973 po_line_loc_rec.SHIP_TO_ORGANIZATION_ID ,
6974 po_line_loc_rec.SHIPMENT_NUM ,
6975 po_line_loc_rec.SOURCE_SHIPMENT_ID ,
6976 po_line_loc_rec.SHIPMENT_TYPE ,
6977 po_line_loc_rec.CLOSED_CODE ,
6978 po_line_loc_rec.REQUEST_ID ,
6979 po_line_loc_rec.PROGRAM_APPLICATION_ID ,
6980 po_line_loc_rec.PROGRAM_ID ,
6981 po_line_loc_rec.PROGRAM_UPDATE_DATE ,
6982 po_line_loc_rec.USSGL_TRANSACTION_CODE ,
6983 po_line_loc_rec.GOVERNMENT_CONTEXT ,
6984 po_line_loc_rec.RECEIVING_ROUTING_ID ,
6985 po_line_loc_rec.ACCRUE_ON_RECEIPT_FLAG ,
6986 po_line_loc_rec.CLOSED_REASON ,
6987 po_line_loc_rec.CLOSED_DATE ,
6988 po_line_loc_rec.CLOSED_BY ,
6989 po_line_loc_rec.ORG_ID ,
6990 po_line_loc_rec.QUANTITY_SHIPPED ,
6991 po_line_loc_rec.COUNTRY_OF_ORIGIN_CODE ,
6992 po_line_loc_rec.TAX_USER_OVERRIDE_FLAG ,
6993 po_line_loc_rec.MATCH_OPTION ,
6994 po_line_loc_rec.TAX_CODE_ID ,
6995 po_line_loc_rec.CALCULATE_TAX_FLAG ,
6996 po_line_loc_rec.CHANGE_PROMISED_DATE_REASON
6997 );
6998
6999 IF v_hook_value = 'FALSE' THEN
7000 RETURN;
7001 END IF;
7002 v_po_hdr_id := po_line_loc_rec.PO_HEADER_ID;
7003 v_po_line_id := po_line_loc_rec.PO_LINE_ID;
7004 v_orig_ship_id := po_line_loc_rec.original_shipment_id;
7005 v_shipment_type := po_line_loc_rec.SHIPMENT_TYPE;
7006 v_shipment_num := po_line_loc_rec.Shipment_Num;
7007 v_src_ship_id := po_line_loc_rec.Source_Shipment_Id;
7008 v_from_line_loc_id := po_line_loc_rec.From_Line_Location_Id;
7009 v_from_line_id := po_line_loc_rec.From_Line_Id;
7010 v_from_hdr_id := po_line_loc_rec.From_Header_Id;
7011 v_line_loc_id := po_line_loc_rec.Line_Location_Id;
7012 v_price := po_line_loc_rec.Price_Override;
7013 v_qty := po_line_loc_rec.Quantity;
7014 v_cre_dt := po_line_loc_rec.Creation_Date;
7015 v_cre_by := po_line_loc_rec.Created_By;
7016 v_last_upd_dt := po_line_loc_rec.Last_Update_Date ;
7017 v_last_upd_by := po_line_loc_rec.Last_Updated_By;
7018 v_last_upd_login := po_line_loc_rec.Last_Update_Login;
7019 v_uom_measure := po_line_loc_rec.Unit_Meas_Lookup_Code;
7020 v_orig_ship_id := po_line_loc_rec.original_shipment_id;
7021 v_ship_to_org_id := po_line_loc_rec.SHIP_TO_ORGANIZATION_ID;
7022
7023 OPEN c_po_hdr(v_po_hdr_id);
7024 FETCH c_po_hdr INTO r_po_header;
7025 CLOSE c_po_hdr;
7026
7027 OPEN c_po_line(v_po_line_id);
7028 FETCH c_po_line INTO r_po_line;
7029 CLOSE c_po_line;
7030
7031 v_from_type_lookup_code := r_po_header.from_type_lookup_code;
7032 v_quot_from_hdr_id := r_po_header.from_header_id;
7033 v_type_lookup_code := r_po_header.type_lookup_code;
7034 v_Vendor_id := r_po_header.vendor_id;
7035 v_Vendor_site_id := r_po_header.vendor_site_id;
7036 v_currency := r_po_header.currency_code;
7037 v_style_id := r_po_header.style_id;
7038
7039 v_item_id := r_po_line.item_id;
7040 v_line_num := r_po_line.line_num;
7041
7042 IF jai_cmn_utils_pkg.validate_po_type(p_style_id => v_style_id) = FALSE THEN
7043 return;
7044 END IF;
7045
7046 OPEN fetch_uomcode_cur;
7047 FETCH fetch_uomcode_cur INTO v_uom_code;
7048 CLOSE fetch_uomcode_cur;
7049
7050 IF pv_action = JAI_CONSTANTS.inserting THEN
7051
7052 IF is_split_line(v_orig_ship_id, v_po_hdr_id, v_po_line_id) = TRUE THEN
7053 -- process for split line;
7054 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7055 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'v_orig_ship_id:'||v_orig_ship_id||'its split line.');
7056 END IF;
7057
7058 jai_po_proc_pkg.process_split_line(v_orig_ship_id ,v_line_loc_id,v_qty,v_price,v_type_lookup_code);
7059
7060 ELSE--It's not split line
7061 IF v_shipment_type NOT IN ( 'SCHEDULED' , 'BLANKET' ) THEN
7062 IF (v_from_type_lookup_code IN ('QUOTATION') AND v_quot_from_hdr_id IS NOT NULL) THEN
7063 --Process for copy documents, from quotation to po
7064 OPEN Fetch_Count_Cur(v_quot_from_hdr_id);
7065 FETCH Fetch_Count_Cur INTO v_count;
7066 CLOSE Fetch_Count_Cur;
7067
7068 IF v_count > 0 THEN
7069 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7070 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'Process for copy documents,copy_source_taxes');
7071 END IF;
7072 v_src_loc_id := get_line_loc_id(v_quot_from_hdr_id ,v_line_num ,v_item_id , v_shipment_num);
7073 v_src_line_id := get_line_id(v_quot_from_hdr_id ,v_line_num );
7074 jai_po_proc_pkg.copy_source_taxes(
7075 p_type => 'S'
7076 ,p_po_hdr_id => v_po_hdr_id
7077 ,p_po_line_id => v_po_line_id
7078 ,p_po_line_loc_id => v_line_loc_id
7079 ,p_line_num => v_line_num
7080 ,p_ship_num => v_shipment_num
7081 ,p_item_id => v_item_id
7082 ,p_from_hdr_id => v_quot_from_hdr_id
7083 ,p_from_type_lookup_code => v_from_type_lookup_code
7084 ,p_source_line_id => v_src_line_id
7085 ,p_source_loc_id => v_src_loc_id
7086 ,p_cre_dt => v_cre_dt
7087 ,p_cre_by => v_cre_by
7088 ,p_last_upd_dt => v_last_upd_dt
7089 ,p_last_upd_by => v_last_upd_by
7090 ,p_last_upd_login => v_last_upd_login
7091 );
7092 RETURN;
7093 END IF;
7094 END IF;
7095
7096 --If the following if is satisfied, it implies that PO has been linked by a quotation.
7097 IF v_type_lookup_code IN ( 'STANDARD', 'PLANNED') AND v_from_line_id IS NOT NULL THEN
7098 OPEN fetch_uomcode_cur;
7099 FETCH fetch_uomcode_cur INTO v_uom_code;
7100 CLOSE fetch_uomcode_cur;
7101 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7102 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'Process for copy documents from quotation,copy_quot_taxes');
7103 END IF;
7104 jai_po_proc_pkg.copy_quot_taxes(
7105 p_line_loc_id => v_line_loc_id
7106 ,p_po_hdr_id => v_po_hdr_id
7107 ,p_po_line_id => v_po_line_id
7108 ,p_item_id => v_item_id--Added on 15-Jan-2013
7109 ,p_qty => v_qty
7110 ,p_frm_hdr_id => v_from_hdr_id
7111 ,p_frm_line_id => v_from_line_id
7112 ,p_price => v_price
7113 ,p_unit_code => v_uom_code
7114 ,p_cre_dt => v_cre_dt
7115 ,p_cre_by => v_cre_by
7116 ,p_last_upd_dt => v_last_upd_dt
7117 ,p_last_upd_by => v_last_upd_by
7118 ,p_last_upd_login => v_last_upd_login
7119 ,p_call_from => 'TRIGGER'
7120 );
7121 RETURN;
7122 END IF;
7123
7124 IF v_type_lookup_code = 'QUOTATION' THEN
7125 JAI_AVLIST_VALIDATE_PKG.Check_AvList_Validation( pn_party_id => v_vendor_id
7126 , pn_party_site_id => v_vendor_site_id
7127 , pn_inventory_item_id => v_item_id
7128 , pd_ordered_date => trunc(sysdate)
7129 , pv_party_type => 'V'
7130 , pn_pricing_list_id => null
7131 );
7132 jai_po_proc_pkg.process_po_tax_wrapper(prec_po_location=>po_line_loc_rec);
7133 RETURN;
7134 END IF;
7135 --Added by Wenqiong for bug14748379 , move the below logic from process_po_shipment_line begin
7136 IF v_type_lookup_code = 'BLANKET' THEN
7137 jai_po_proc_pkg.process_po_tax_wrapper(prec_po_location=>po_line_loc_rec);
7138 jai_po_proc_pkg.process_dist(prec_po_location=>po_line_loc_rec);
7139 jai_po_proc_pkg.copy_req_to_po(prec_po_location => po_line_loc_rec);
7140 RETURN;
7141 END IF;
7142 --Added by Wenqiong for bug14748379 end
7143 jai_po_proc_pkg.process_po_tax_wrapper(prec_po_location=>po_line_loc_rec);
7144 END IF;
7145 END IF;
7146
7147 ELSE
7148 jai_po_proc_pkg.process_po_shipment_line(po_line_loc_rec.LINE_LOCATION_ID,
7149 pr_po_header=> r_po_header,
7150 pr_po_line => r_po_line,
7151 pv_action => JAI_CONSTANTS.updating);
7152 END IF;
7153 EXCEPTION
7154 WHEN OTHERS THEN
7155
7156
7157 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
7158 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
7159 END IF;
7160 app_exception.raise_exception;
7161
7162 END process_quotation_line_loc;
7163 PROCEDURE process_vendor_change(prec_po_header IN PO_HEADERS_ALL%ROWTYPE,pn_old_vendor_id IN NUMBER)
7164 IS
7165 CURSOR Lines_Cur IS
7166 SELECT DISTINCT Po_Line_Id
7167 FROM JAI_PO_LINE_LOCATIONS
7168 WHERE Po_Header_Id = prec_po_header.po_header_id;
7169
7170 CURSOR Line_Loc_Cur( lineid IN NUMBER ) IS
7171 SELECT Line_Location_Id
7172 FROM JAI_PO_LINE_LOCATIONS
7173 WHERE Po_Line_Id = lineid;
7174
7175 CURSOR PO_Line_loc_cur(cn_line_loc_id NUMBER) IS
7176 SELECT * FROM
7177 PO_LINE_LOCATIONS_ALL
7178 WHERE Line_Location_Id = cn_line_loc_id;
7179
7180 CURSOR c_po_line_dtl(cn_po_line_id NUMBER) IS
7181 SELECT * FROM PO_LINES_ALL
7182 WHERE PO_LINE_ID = cn_po_line_id;
7183
7184 CURSOR Fetch_UOMCode_Cur( c_uom IN VARCHAR2 ) IS
7185 SELECT Uom_Code
7186 FROM Mtl_Units_Of_Measure
7187 WHERE Unit_Of_Measure = c_uom;
7188
7189 CURSOR tax_override_flag_cur(c_supplier_id number, c_supp_site_id number) IS
7190 SELECT override_flag
7191 FROM JAI_CMN_VENDOR_SITES
7192 WHERE vendor_id = c_supplier_id
7193 AND vendor_site_id = c_supp_site_id;
7194
7195
7196 r_po_line PO_LINES_ALL%ROWTYPE;
7197 r_po_line_loc PO_LINE_LOCATIONS_ALL%ROWTYPE;
7198 ln_po_header_id PO_HEADERS_ALL.PO_HEADER_ID%TYPE := prec_po_header.po_header_id;
7199 v_po_line_id PO_LINE_LOCATIONS_ALL.PO_LINE_ID%TYPE;
7200 v_line_loc_id PO_LINE_LOCATIONS_ALL.LINE_LOCATION_ID%TYPE;
7201
7202
7203 v_override_flag VARCHAR2(1);
7204 v_line_exists_flag NUMBER;
7205 v_item_id NUMBER;
7206 v_uom_code VARCHAR2(25);
7207
7208 ln_vendor_id prec_po_header.vendor_id%TYPE := prec_po_header.vendor_id;
7209 v_Vendor_Site_Id prec_po_header.vendor_site_id%TYPE:= prec_po_header.vendor_site_id;
7210 v_Type_Lookup_Code prec_po_header.Type_Lookup_Code%TYPE:= prec_po_header.Type_Lookup_Code;
7211 v_Quot_Class_Code prec_po_header.Quotation_Class_Code%TYPE:= prec_po_header.Quotation_Class_Code;
7212 v_Org_Id prec_po_header.Org_Id%TYPE:= prec_po_header.Org_Id;
7213 v_rate prec_po_header.Rate%TYPE:= prec_po_header.Rate;
7214 v_rate_type prec_po_header.Rate_Type%TYPE:= prec_po_header.Rate_Type;
7215 v_rate_date prec_po_header.Rate_Date%TYPE := prec_po_header.Rate_Date;
7216 v_ship_to_loc_id prec_po_header.Ship_To_Location_Id%TYPE := prec_po_header.Ship_To_Location_Id;
7217 v_curr prec_po_header.Currency_Code%TYPE:= prec_po_header.Currency_Code;
7218 v_cre_dt prec_po_header.Creation_Date%TYPE:= prec_po_header.Creation_Date;
7219 v_cre_by prec_po_header.Created_By%TYPE:= prec_po_header.Created_By;
7220 v_last_upd_dt prec_po_header.Last_Update_Date%TYPE:= prec_po_header.Last_Update_Date ;
7221 v_last_upd_by prec_po_header.Last_Updated_By%TYPE:= prec_po_header.Last_Updated_By;
7222 v_last_upd_login prec_po_header.Last_Update_Login%TYPE:= prec_po_header.Last_Update_Login;
7223 l_api_name CONSTANT VARCHAR2(200) := 'process_vendor_change';
7224 BEGIN
7225 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7226 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'begin');
7227 END IF;
7228
7229 IF jai_cmn_utils_pkg.validate_po_type(p_style_id => prec_po_header.style_id) = FALSE THEN
7230 return;
7231 END IF;
7232
7233
7234 /*For vendor merge case, need update vendor in receipts,
7235 todo, seemed to be removed since vendor merge case will not fire through ZX.
7236 */
7237 IF ln_vendor_id <> nvl(pn_old_vendor_id,-999) then
7238 for c_receipt_rec in
7239 (
7240 select distinct shipment_header_id, shipment_line_id
7241 from rcv_transactions
7242 where po_header_id = ln_po_header_id
7243 )
7244 loop
7245 update JAI_RCV_LINE_TAXES
7246 set vendor_id = ln_vendor_id
7247 where shipment_header_id = c_receipt_rec.shipment_header_id
7248 and shipment_line_id = c_receipt_rec.shipment_line_id
7249 and vendor_id = pn_old_vendor_id;
7250 end loop;
7251 END IF;
7252
7253 FOR Rec IN Lines_Cur LOOP
7254 FOR Rec1 IN Line_Loc_Cur( Rec.Po_Line_Id ) LOOP
7255 v_po_line_id := Rec.po_line_id;
7256 v_line_loc_id := Rec1.Line_Location_Id;
7257
7258 OPEN c_po_line_dtl(Rec.Po_Line_Id);
7259 FETCH c_po_line_dtl INTO r_po_line;
7260 CLOSE c_po_line_dtl;
7261
7262 v_item_id := r_po_line.item_id;
7263
7264 OPEN Fetch_UOMCode_Cur(r_po_line.Unit_Meas_Lookup_Code);
7265 FETCH Fetch_UOMCode_Cur INTO v_uom_code;
7266 CLOSE Fetch_UOMCode_Cur;
7267
7268 OPEN tax_override_flag_cur(ln_vendor_id,v_Vendor_Site_Id);
7269 FETCH tax_override_flag_cur INTO v_override_flag;
7270 CLOSE tax_override_flag_cur;
7271 /*Only for PO Type Blank and Quotation, line_location_id is null*/
7272 IF NVL( v_line_loc_id, -999 ) = -999 THEN
7273
7274 IF nvl(v_override_flag,'N') = 'Y' THEN
7275 delete_po_taxes(pn_po_hdr_id => ln_po_header_id);
7276
7277 jai_po_tax_pkg.copy_reqn_taxes
7278 (
7279 ln_vendor_id ,
7280 v_Vendor_Site_Id,
7281 ln_po_header_id ,
7282 v_po_line_id,
7283 Rec1.Line_Location_Id,
7284 v_Type_Lookup_Code ,
7285 v_Quot_Class_Code ,
7286 v_Ship_To_Loc_Id ,
7287 v_Org_Id ,
7288 v_Cre_Dt ,
7289 v_Cre_By ,
7290 v_Last_Upd_Dt ,
7291 v_Last_Upd_By ,
7292 v_Last_Upd_Login
7293 ,v_rate
7294 ,v_rate_type
7295 ,v_rate_date
7296 ,v_curr
7297 );
7298 RETURN;
7299 END IF;
7300
7301 jai_po_proc_pkg.process_po_tax_wrapper (prec_po_header=> prec_po_header,
7302 prec_po_line => r_po_line);
7303 ELSE
7304 OPEN PO_Line_loc_cur(v_line_loc_id);
7305 FETCH PO_Line_loc_cur INTO r_po_line_loc;
7306 CLOSE PO_Line_loc_cur;
7307
7308 jai_po_proc_pkg.process_po_tax_wrapper (prec_po_header=> prec_po_header,
7309 prec_po_location => r_po_line_loc);
7310 END IF;
7311 END LOOP;
7312 END LOOP;
7313 jai_po_proc_pkg.update_vendor(
7314 pn_po_header_id => ln_po_header_id
7315 ,pn_old_vendor_id => pn_old_vendor_id
7316 ,pn_vendor_id => ln_vendor_id
7317 ,pn_vendor_site_id => v_vendor_site_id
7318 ,pd_last_upd_dt => v_last_upd_dt
7319 ,pn_last_upd_by => v_last_upd_by
7320 ,pn_last_upd_login => v_last_upd_login
7321 );
7322
7323
7324
7325 END process_vendor_change;
7326 FUNCTION get_line_loc_id
7327 (
7328 p_from_hdr_id NUMBER
7329 ,p_line_num NUMBER
7330 ,p_item_id NUMBER
7331 ,p_ship_num NUMBER
7332 ) RETURN NUMBER IS
7333 PRAGMA AUTONOMOUS_TRANSACTION;
7334 -- Cursor definition for picking line_location_id from po_line_locations_all
7335 CURSOR fetch_line_loc_id_cur IS
7336 SELECT jpll.line_location_id
7337 FROM po_line_locations_all plla, jai_po_line_locations jpll,
7338 po_lines_all pla, po_headers_all pha
7339 WHERE pha.po_header_id = pla.po_header_id AND
7340 jpll.line_location_id = plla.line_location_id AND
7341 pha.po_header_id = plla.po_header_id AND
7342 pla.po_line_id = plla.po_line_id AND pha.po_header_id = p_from_hdr_id AND
7343 pla.line_num = p_line_num AND pla.item_id = p_item_id AND
7344 plla.shipment_num = p_ship_num;
7345 ln_line_loc_id NUMBER;
7346 l_api_name CONSTANT VARCHAR2(30) := 'get_line_loc_id';
7347 BEGIN
7348 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7349 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name);
7350 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||'p_from_hdr_id'||p_from_hdr_id);
7351 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||'p_line_num'||p_line_num);
7352 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||'p_item_id'||p_item_id);
7353 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||'p_ship_num'||p_ship_num);
7354
7355 END IF;
7356 OPEN fetch_line_loc_id_cur;
7357 FETCH fetch_line_loc_id_cur
7358 INTO ln_line_loc_id;
7359 CLOSE fetch_line_loc_id_cur;
7360 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7361 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||', the returned ln_line_loc_id:'||ln_line_loc_id);
7362 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
7363 END IF;
7364 RETURN ln_line_loc_id;
7365 END get_line_loc_id;
7366
7367 FUNCTION get_line_id
7368 (
7369 p_from_hdr_id NUMBER
7370 ,p_line_num NUMBER
7371 ) RETURN NUMBER IS
7372 PRAGMA AUTONOMOUS_TRANSACTION;
7373 CURSOR fetch_line_id_cur IS
7374 SELECT pla.Po_Line_Id
7375 FROM po_lines_all pla, po_headers_all pha
7376 WHERE pha.Po_Header_Id = p_from_hdr_id
7377 AND pla.line_num = p_line_num
7378 AND pha.po_header_id =pla.po_header_id;
7379 l_api_name CONSTANT VARCHAR2(30) := 'get_line_id';
7380 ln_line_id NUMBER;
7381 BEGIN
7382 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7383 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name);
7384 END IF;
7385
7386 OPEN fetch_line_id_cur;
7387 FETCH fetch_line_id_cur INTO ln_line_id;
7388 CLOSE fetch_line_id_cur;
7389
7390 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7391 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||', the returned ln_line_id:'||ln_line_id);
7392 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
7393 END IF;
7394
7395 RETURN ln_line_id;
7396 END get_line_id;
7397 PROCEDURE delete_po_req_line_taxes
7398 (
7399 pn_requisition_line_id IN NUMBER
7400 ) IS
7401 BEGIN
7402 DELETE from JAI_PO_REQ_LINE_TAXES --ja_in_reqn_tax_lines
7403 WHERE requisition_line_id = pn_requisition_line_id ;
7404
7405 DELETE from JAI_PO_REQ_LINES --ja_in_reqn_lines
7406 WHERE requisition_line_id = pn_requisition_line_id;
7407
7408 END delete_po_req_line_taxes;
7409
7410 PROCEDURE locate_source_line
7411 (
7412 p_header_id IN NUMBER,
7413 p_line_num IN NUMBER,
7414 p_line_quantity IN NUMBER,
7415 p_po_line_id OUT NOCOPY NUMBER,
7416 p_line_location_id OUT NOCOPY NUMBER,
7417 p_line_id NUMBER DEFAULT NULL
7418 ) IS
7419 PRAGMA AUTONOMOUS_TRANSACTION;
7420 -- This procedure is used to find out the line_location_id from which the taxes should be defaulted in case
7421 -- there are multiple price break lines for the specified p_line_id or p_line_num of p_header_id
7422
7423 i NUMBER := 1;
7424 v_po_line_id NUMBER;
7425 v_cum_flag Po_Lines_All.Price_Break_Lookup_Code % TYPE;
7426 v_quantity NUMBER; -- := p_line_quantity; --Ramananda for File.Sql.35
7427 v_qty NUMBER;
7428 v_count NUMBER;
7429
7430 TYPE v_Llid_tab IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
7431 TYPE v_Qty_tab IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
7432
7433 Llid_tab v_Llid_tab;
7434 Qty_tab v_Qty_Tab;
7435
7436 CURSOR Fetch_Qty_Cur IS
7437 SELECT Quantity, Line_Location_Id
7438 FROM Po_Line_Locations_All
7439 WHERE Po_Header_Id = p_header_id
7440 AND Po_Line_Id = v_po_line_id
7441 and SYSDATE between nvl(start_date, SYSDATE) and nvl(end_date, SYSDATE) -- cbabu for Bug# 2740918
7442 ORDER BY Quantity;
7443
7444 CURSOR Fetch_Line_Id_Cur IS
7445 SELECT Po_Line_Id, NVL( Price_Break_Lookup_Code, 'NC' ) Price_Break_Lookup_Code
7446 FROM Po_Lines_All
7447 WHERE Po_Header_Id = p_header_id
7448 AND Line_Num = p_line_num;
7449
7450 CURSOR Fetch_Line1_Id_Cur IS
7451 SELECT NVL( Price_Break_Lookup_Code, 'NC' ) Price_Break_Lookup_Code
7452 FROM Po_Lines_All
7453 WHERE Po_Line_Id = p_line_id;
7454
7455 CURSOR Fetch_Cum_Qty_Cur IS
7456 SELECT SUM( Quantity )
7457 FROM Po_Line_Locations_All
7458 WHERE Po_Line_Id = v_po_line_id;
7459
7460 CURSOR Chk_Line_Loc_Cur IS
7461 SELECT COUNT( * )
7462 FROM Po_Line_Locations_All
7463 WHERE Po_Line_Id = v_po_line_id;
7464
7465 lv_object_name CONSTANT VARCHAR2 (61) := 'jai_po_proc_pkg.locate_source_line';
7466
7467 BEGIN
7468
7469 /*----------------------------------------------------------------------------------------------------------
7470 CHANGE HISTORY for locate_source_line
7471 S.No DD/MM/YYYY Author and Details
7472 ------------------------------------------------------------------------------------------------------------
7473 1 15/01/2013 Wenqiong for bug16101649, to avoid trigger mutating, copy this procedure from jai_po_cmn_pkg.locate_source_line
7474 Just PRAGMA AUTONOMOUS_TRANSACTION.
7475 ----------------------------------------------------------------------------------------------------------*/
7476 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7477 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||lv_object_name,G_PKG_NAME||': '||lv_object_name||'Begin');
7478 END IF;
7479 v_quantity := p_line_quantity; --Ramananda for File.Sql.35
7480
7481 IF NVL( p_line_id, -999 ) = -999 THEN
7482 OPEN Fetch_Line_Id_Cur;
7483 FETCH Fetch_Line_Id_Cur INTO v_po_line_id, v_cum_flag;
7484 CLOSE Fetch_Line_Id_Cur;
7485 ELSE
7486 OPEN Fetch_Line1_Id_Cur;
7487 FETCH Fetch_Line1_Id_Cur INTO v_cum_flag;
7488 CLOSE Fetch_Line1_Id_Cur;
7489
7490 v_po_line_id := p_line_id;
7491 END IF;
7492
7493 p_po_line_id := v_po_line_id;
7494
7495 OPEN Fetch_Cum_Qty_Cur;
7496 FETCH Fetch_Cum_Qty_Cur INTO v_qty;
7497 CLOSE Fetch_Cum_Qty_Cur;
7498
7499 IF v_cum_flag = 'CUMULATIVE' THEN
7500 v_quantity := v_qty;
7501 ELSE
7502 v_quantity := p_line_quantity;
7503 END IF;
7504
7505 OPEN Chk_Line_Loc_Cur;
7506 FETCH Chk_Line_Loc_Cur INTO v_count;
7507 CLOSE Chk_Line_Loc_Cur;
7508
7509 IF v_count = 0 THEN
7510 p_line_location_id := -999;
7511 ELSE
7512 FOR rec IN Fetch_Qty_Cur LOOP
7513 Llid_tab( i ) := NVL( rec.Line_Location_Id, -99 );
7514 Qty_Tab( i ) := rec.quantity;
7515 i := i + 1;
7516 END LOOP;
7517 i := i - 1;
7518
7519 IF Qty_tab( 1 ) > v_quantity THEN
7520 p_line_location_id := -999;
7521 ELSE
7522 FOR j IN 1 .. i-1 LOOP
7523 IF v_quantity >= Qty_tab( j ) AND v_quantity < Qty_tab( j + 1 ) THEN
7524 p_line_location_id := Llid_tab( j );
7525 END IF;
7526 END LOOP;
7527 IF v_quantity >= Qty_tab( i ) THEN
7528 p_line_location_id := Llid_tab( i );
7529 END IF;
7530 END IF;
7531 END IF;
7532 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7533 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||lv_object_name,G_PKG_NAME||': '||lv_object_name||'end');
7534 END IF;
7535 EXCEPTION
7536 WHEN OTHERS THEN
7537 p_po_line_id := null;
7538 p_line_location_id:= null;
7539 FND_MESSAGE.SET_NAME ('JA','JAI_EXCEPTION_OCCURED');
7540 FND_MESSAGE.SET_TOKEN ('JAI_PROCESS_MSG',lv_object_name ||'.Err:'||sqlerrm);
7541 app_exception.raise_exception;
7542 END locate_source_line;
7543
7544 PROCEDURE cancel_po_shipment_line(pr_po_line_loc po_line_locations_all%ROWTYPE) IS
7545
7546 v_quantity_cancelled po_line_locations_all.QUANTITY_CANCELLED%TYPE;
7547 v_qty po_line_locations_all.QUANTITY%TYPE;
7548 v_quantity_received po_line_locations_all.QUANTITY_RECEIVED%TYPE;
7549 v_po_line_id po_line_locations_all.PO_LINE_ID%TYPE;
7550 v_line_loc_id po_line_locations_all.LINE_LOCATION_ID%TYPE;
7551 v_price po_line_locations_all.price_override%TYPE;
7552 v_po_hdr_id po_line_locations_all.po_header_id%TYPE;
7553 l_total_tax_amount JAI_PO_LINE_LOCATIONS.TAX_AMOUNT%TYPE;
7554 CURSOR rec_get_tax_amount
7555 IS
7556 SELECT
7557 nvl(a.tax_amount,0) tax_amount,
7558 nvl(b.adhoc_flag, 'N') adhoc_flag
7559 FROM
7560 JAI_PO_TAXES a ,
7561 JAI_CMN_TAXES_ALL b
7562 WHERE
7563 a.tax_id = b.tax_id AND
7564 a.po_line_id = v_po_line_id AND
7565 a.po_header_id = v_po_hdr_id AND
7566 a.line_location_id = v_line_loc_id FOR UPDATE OF a.tax_amount;
7567
7568 CURSOR rec_calc_total_tax
7569 IS
7570 SELECT sum(tax_amount )
7571 FROM JAI_PO_TAXES
7572 WHERE
7573 po_line_id = v_po_line_id AND
7574 po_header_id = v_po_hdr_id AND
7575 line_location_id = v_line_loc_id AND
7576 tax_type <> jai_constants.tax_type_tds ;
7577
7578 l_api_name CONSTANT VARCHAR2(200) := 'cancel_po_shipment_line';
7579
7580 BEGIN
7581 v_quantity_cancelled := pr_po_line_loc.QUANTITY_CANCELLED;
7582 v_qty := pr_po_line_loc.QUANTITY;
7583 v_quantity_received := pr_po_line_loc.QUANTITY_RECEIVED;
7584 v_po_line_id := pr_po_line_loc.PO_LINE_ID;
7585 v_line_loc_id := pr_po_line_loc.LINE_LOCATION_ID;
7586 v_price := pr_po_line_loc.price_override;
7587 v_po_hdr_id := pr_po_line_loc.po_header_id;
7588
7589 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7590 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||': v_quantity_cancelled,'||v_quantity_cancelled||'v_line_loc_id:'||v_line_loc_id);
7591 END IF;
7592 IF nvl(v_quantity_cancelled,-9999) = nvl(v_qty,0) THEN
7593 /*
7594 Indicating that the entire line has been cancelled and no receipt has been made for ths line,
7595 then delete the line and associated taxes from JAI_PO_LINE_LOCATIONS
7596 and JAI_PO_TAXES and return .
7597 */
7598 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7599 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||': entire line been cancelled.');
7600 END IF;
7601 delete_po_taxes(pn_po_line_id=>v_po_line_id,pn_line_loc_id => v_line_loc_id);
7602
7603 delete_jai_po_lines(pn_line_loc_id => v_line_loc_id);
7604 ELSIF nvl(v_quantity_cancelled,-9999) < nvl(v_qty,0) THEN
7605 /*
7606 Indicating that a partial receipt has been made for the line and then the line has been cancelled.
7607 In such a case the cancelled quantity would be lesser than the quantity in table po_line_locations_all.
7608 Now in this scenario update the line and the associated apportioned taxes in the table JAI_PO_LINE_LOCATIONS
7609 and JAI_PO_TAXES
7610 */
7611
7612 /*
7613 Update the JAI_PO_TAXES with the apportioned tax_amount
7614 The tax amounts are apportioned in a ratio of the (quantity_received\quantity)
7615 Only the taxes which have a adhoc flag set to 'N' can be apportioned.
7616 Taxes which have adhoc flag set to 'Y' would remain unaffected .
7617
7618 */
7619 FOR cur_rec_get_tax_amount IN rec_get_tax_amount
7620 LOOP
7621
7622 UPDATE
7623 JAI_PO_TAXES
7624 SET
7625 tax_amount = (nvl(v_quantity_received,0) / nvl(v_qty,1)) * nvl(cur_rec_get_tax_amount.tax_amount,0)
7626 WHERE
7627 CURRENT OF rec_get_tax_amount;
7628
7629 -- END IF;
7630 END LOOP;
7631
7632 /*
7633 The record in ja_in_po_line_location has to be updated with the total of all taxes from JAI_PO_TAXES
7634 excluding the TDS type of taxes. The total_amount should be calculated as (quantity_received * price_override) + total of tax amount
7635 */
7636
7637 OPEN rec_calc_total_tax ;
7638 FETCH rec_calc_total_tax INTO l_total_tax_amount;
7639 CLOSE rec_calc_total_tax;
7640
7641 UPDATE
7642 JAI_PO_LINE_LOCATIONS
7643 SET
7644 tax_amount = l_total_tax_amount ,
7645 total_amount = nvl(v_quantity_received * v_price, 0) + nvl(l_total_tax_amount,0)
7646 WHERE
7647 po_line_id = v_po_line_id AND
7648 po_header_id = v_po_hdr_id AND
7649 line_location_id = v_line_loc_id ;
7650
7651
7652 END IF;
7653 END cancel_po_shipment_line;
7654
7655 /*--Added below procedures/functions for bug16288154 start*/
7656 --Move the logic from process_dist to below for trigger use only
7657 PROCEDURE process_distribution_line(
7658 pr_dist PO_DISTRIBUTIONS_ALL%ROWTYPE
7659 ,pv_return_code OUT NOCOPY VARCHAR2
7660 ,pv_return_message OUT NOCOPY VARCHAR2
7661 )IS
7662 CURSOR get_po_hdr(c_po_header_id number) IS
7663 SELECT type_lookup_code,Quotation_Class_Code,Ship_To_Location_Id,
7664 rate, rate_type, rate_date,currency_code,
7665 nvl(Vendor_id,0), nvl(vendor_Site_Id,0),style_id
7666 FROM po_headers_all
7667 WHERE po_header_id = c_po_header_id;
7668
7669 CURSOR tax_override_flag_cur(c_supplier_id number, c_supp_site_id number) IS
7670 SELECT override_flag
7671 FROM JAI_CMN_VENDOR_SITES
7672 WHERE vendor_id = c_supplier_id
7673 AND vendor_site_id = c_supp_site_id;
7674
7675 Cursor c_get_tax_modified_flag(c_line_location_id NUMBER) IS
7676 SELECT tax_modified_flag
7677 FROM JAI_PO_LINE_LOCATIONS
7678 WHERE line_location_id = c_line_location_id;
7679
7680 CURSOR c_loc_line_cnt(c_line_location_id NUMBER) IS
7681 SELECT count(line_location_id)
7682 FROM JAI_PO_LINE_LOCATIONS
7683 WHERE line_location_id=c_line_location_id;
7684
7685 v_po_line_id PO_DISTRIBUTIONS_ALL.Po_Line_Id%TYPE ;
7686 v_po_hdr_id PO_DISTRIBUTIONS_ALL.Po_Header_Id%TYPE;
7687 v_cre_dt PO_DISTRIBUTIONS_ALL.Creation_Date%TYPE;
7688 v_cre_by PO_DISTRIBUTIONS_ALL.Created_By%TYPE;
7689 v_last_upd_dt PO_DISTRIBUTIONS_ALL.Last_Update_Date%TYPE ;
7690 v_last_upd_by PO_DISTRIBUTIONS_ALL.Last_Updated_By%TYPE;
7691 v_last_upd_login PO_DISTRIBUTIONS_ALL.Last_Update_Login%TYPE;
7692
7693 v_line_location_id PO_DISTRIBUTIONS_ALL.line_location_id%TYPE;
7694
7695 v_type_lookup_code po_headers_all.type_lookup_code%TYPE;
7696 v_Quot_Class_Code po_headers_all.Quotation_Class_Code%TYPE;
7697 v_Ship_Loc_Id po_headers_all.Ship_To_Location_Id%TYPE;
7698 v_vendor_id po_headers_all.Vendor_id%TYPE;
7699 v_vendor_site_id po_headers_all.vendor_Site_Id%TYPE;
7700 v_curr po_headers_all.currency_code%TYPE;
7701 v_rate po_headers_all.rate%TYPE;
7702 v_rate_type po_headers_all.rate_type%TYPE;
7703 v_rate_date po_headers_all.rate_date%TYPE;
7704
7705 v_style_id po_headers_all.style_id%TYPE;
7706 v_override_flag JAI_CMN_VENDOR_SITES.override_flag%TYPE;
7707 v_tax_modified_flag JAI_PO_LINE_LOCATIONS.tax_modified_flag%TYPE;
7708 v_count NUMBER;
7709 l_api_name CONSTANT VARCHAR2(200) := 'process_distribution_line';
7710 BEGIN
7711
7712 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7713 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
7714 END IF;
7715 pv_return_code := jai_constants.successful ;
7716 IF nvl(pr_dist.req_distribution_id,0) <> 0 THEN
7717 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7718 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'Its copied from requisition by autocreate.');
7719 END IF;
7720
7721
7722 v_po_line_id := pr_dist.Po_Line_Id ;
7723 v_po_hdr_id := pr_dist.Po_Header_Id;
7724 v_cre_dt := pr_dist.Creation_Date;
7725 v_cre_by := pr_dist.Created_By;
7726 v_last_upd_dt := pr_dist.Last_Update_Date ;
7727 v_last_upd_by := pr_dist.Last_Updated_By;
7728 v_last_upd_login := pr_dist.Last_Update_Login;
7729 v_rate := pr_dist.rate;
7730 v_line_location_id := pr_dist.line_location_id;
7731 OPEN get_po_hdr(v_po_hdr_id);
7732 FETCH get_po_hdr into v_type_lookup_code,v_Quot_Class_Code,v_Ship_Loc_Id,
7733 v_rate, v_rate_type, v_rate_date,v_curr,v_vendor_id, v_vendor_site_id,
7734 v_style_id;
7735 CLOSE get_po_hdr;
7736
7737 IF jai_cmn_utils_pkg.validate_po_type(p_style_id => v_style_id) = FALSE THEN
7738 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7739 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'style_id:'||to_char(v_style_id)||'validate_po_type is false,return');
7740 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
7741 END IF;
7742
7743 return;
7744 END IF;
7745
7746 OPEN tax_override_flag_cur(v_vendor_id, v_vendor_site_id);
7747 FETCH tax_override_flag_cur into v_override_flag;
7748 CLOSE tax_override_flag_cur;
7749
7750 OPEN c_get_tax_modified_flag(v_line_location_id) ;
7751 FETCH c_get_tax_modified_flag INTO v_tax_modified_flag ;
7752 CLOSE c_get_tax_modified_flag;
7753
7754 IF nvl(pr_dist.po_release_id,0) = 0 THEN
7755 IF nvl(v_override_flag,'N') = 'N' and NVL(v_tax_modified_flag, 'N') = 'N' THEN
7756 delete_po_taxes(pn_po_line_id =>v_po_line_id, pn_line_loc_id => v_line_location_id);
7757 delete_jai_po_lines(pn_line_loc_id =>v_line_location_id);
7758 END IF ;
7759 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7760 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'po_release_id is null, delete jai data before return.');
7761 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
7762 END IF;
7763 return;
7764 ELSE
7765 OPEN c_loc_line_cnt(v_line_location_id);
7766 FETCH c_loc_line_cnt INTO v_count;
7767 CLOSE c_loc_line_cnt;
7768 IF v_count > 0 THEN
7769 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7770 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'po_release_id is not null and jai data exists, just return.');
7771 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
7772 END IF;
7773 RETURN;
7774 END IF;
7775 END IF;
7776 IF nvl(v_override_flag,'N') = 'Y' THEN
7777 jai_po_tax_pkg.copy_reqn_taxes(v_vendor_id ,
7778 v_vendor_Site_Id ,
7779 v_Po_Hdr_Id ,
7780 v_Po_Line_Id ,
7781 v_Line_Location_id ,
7782 v_Type_Lookup_Code ,
7783 v_Quot_Class_Code ,
7784 v_Ship_Loc_Id ,
7785 NULL,--v_Org_Id ,
7786 v_Cre_Dt ,
7787 v_Cre_By ,
7788 v_Last_Upd_Dt ,
7789 v_Last_Upd_By ,
7790 v_Last_Upd_Login
7791 , v_rate
7792 , v_rate_type
7793 , v_rate_date
7794 , v_curr
7795 );
7796
7797 END IF;
7798
7799 END IF;
7800 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7801 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'()-');
7802
7803 END IF;
7804 EXCEPTION
7805 WHEN OTHERS THEN
7806
7807 pv_return_code := 'Failure' ;
7808 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
7809 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
7810 END IF;
7811 app_exception.raise_exception;
7812
7813
7814 END process_distribution_line;
7815
7816 /*Only used for trigger replacement and copy from process_po_shipment_line and remove the calls to process_dist and copy_req_to_po*/
7817 PROCEDURE process_po_line_loc(po_line_loc_rec PO_LINE_LOCATIONS_ALL%ROWTYPE
7818 ,old_line_loc_rec PO_LINE_LOCATIONS_ALL%ROWTYPE
7819 , pv_action varchar2
7820 , pv_return_code out nocopy varchar2
7821 , pv_return_message out nocopy varchar2 ) IS
7822
7823 v_po_hdr_id NUMBER;
7824 v_po_line_id NUMBER;
7825 v_orig_ship_id NUMBER;
7826 v_shipment_type VARCHAR2(25);
7827 v_uom_measure VARCHAR2(30);
7828 v_uom_code VARCHAR2(30);
7829 v_shipment_num NUMBER;
7830 v_src_ship_id NUMBER;
7831 v_from_line_loc_id NUMBER;
7832 v_from_line_id NUMBER;
7833 v_from_hdr_id NUMBER;
7834 v_line_loc_id NUMBER;
7835 v_price NUMBER;
7836 v_qty NUMBER;
7837 v_cre_dt DATE ;
7838 v_cre_by NUMBER ;
7839 v_last_upd_dt DATE ;
7840 v_last_upd_by NUMBER ;
7841 v_last_upd_login NUMBER ;
7842
7843 v_ship_to_org_id NUMBER;
7844 v_from_type_lookup_code VARCHAR2(25);
7845 v_type_lookup_code VARCHAR2(25);
7846 v_vendor_id NUMBER;
7847 v_vendor_site_id NUMBER;
7848 v_currency VARCHAR2(3);
7849 v_ship_loc_id NUMBER;
7850 v_quot_from_hdr_id NUMBER;
7851 v_service_type_code VARCHAR2(30);
7852 v_count NUMBER;
7853
7854 v_item_id NUMBER;
7855 v_line_num PO_LINES_ALL.line_num%TYPE;
7856 v_style_id NUMBER;
7857 v_hook_value VARCHAR2(10);
7858 v_src_loc_id NUMBER;
7859 v_src_line_id NUMBER;
7860 lv_retro_price_flag VARCHAR2(1) := 'N';
7861 lv_process_flag VARCHAR2(10);
7862 lv_process_message VARCHAR2(2000);
7863 CURSOR c_po_hdr(cn_po_hdr_id NUMBER) IS
7864 SELECT *
7865 FROM PO_HEADERS_ALL
7866 WHERE po_header_id = cn_po_hdr_id;
7867
7868 CURSOR fetch_uomcode_cur IS
7869 SELECT uom_code
7870 FROM mtl_units_of_measure
7871 WHERE unit_of_measure = v_uom_measure;
7872
7873 CURSOR c_po_line(cn_po_line_id NUMBER) IS
7874 SELECT *
7875 FROM PO_LINES_ALL
7876 WHERE po_line_id = cn_po_line_id;
7877
7878 CURSOR Fetch_Count_Cur (cn_po_hdr_id NUMBER)IS
7879 SELECT COUNT(Line_Location_Id)
7880 FROM JAI_PO_LINE_LOCATIONS
7881 WHERE Po_Header_Id = cn_po_hdr_id ;
7882
7883 CURSOR c_get_po_line_loc_details (p_line_location_id IN NUMBER) IS
7884 SELECT *
7885 FROM JAI_PO_LINE_LOCATIONS
7886 WHERE line_location_id = p_line_location_id;
7887
7888
7889 r_po_header PO_HEADERS_ALL%ROWTYPE;
7890 r_po_line PO_LINES_ALL%ROWTYPE;
7891 r_get_po_line_loc_details JAI_PO_LINE_LOCATIONS%ROWTYPE;
7892 l_api_name CONSTANT VARCHAR2(30) := 'process_quotation_line_loc';
7893 BEGIN
7894 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7895 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
7896 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'pv_action:'||pv_action);
7897 END IF;
7898
7899 v_hook_value := jai_cmn_hook_pkg.Ja_In_po_line_locations_all(
7900 po_line_loc_rec.LINE_LOCATION_ID ,
7901 po_line_loc_rec.PO_HEADER_ID ,
7902 po_line_loc_rec.PO_LINE_ID ,
7903 po_line_loc_rec.QUANTITY ,
7904 po_line_loc_rec.QUANTITY_RECEIVED ,
7905 po_line_loc_rec.QUANTITY_ACCEPTED ,
7906 po_line_loc_rec.QUANTITY_REJECTED ,
7907 po_line_loc_rec.QUANTITY_BILLED ,
7908 po_line_loc_rec.QUANTITY_CANCELLED ,
7909 po_line_loc_rec.UNIT_MEAS_LOOKUP_CODE ,
7910 po_line_loc_rec.PO_RELEASE_ID ,
7911 po_line_loc_rec.SHIP_TO_LOCATION_ID ,
7912 po_line_loc_rec.SHIP_VIA_LOOKUP_CODE ,
7913 po_line_loc_rec.NEED_BY_DATE ,
7914 po_line_loc_rec.PROMISED_DATE ,
7915 po_line_loc_rec.LAST_ACCEPT_DATE ,
7916 po_line_loc_rec.PRICE_OVERRIDE ,
7917 po_line_loc_rec.ENCUMBERED_FLAG ,
7918 po_line_loc_rec.ENCUMBERED_DATE ,
7919 po_line_loc_rec.UNENCUMBERED_QUANTITY ,
7920 po_line_loc_rec.FOB_LOOKUP_CODE ,
7921 po_line_loc_rec.FREIGHT_TERMS_LOOKUP_CODE ,
7922 po_line_loc_rec.TAXABLE_FLAG ,
7923 po_line_loc_rec.TAX_NAME ,
7924 po_line_loc_rec.ESTIMATED_TAX_AMOUNT ,
7925 po_line_loc_rec.FROM_HEADER_ID ,
7926 po_line_loc_rec.FROM_LINE_ID ,
7927 po_line_loc_rec.FROM_LINE_LOCATION_ID ,
7928 po_line_loc_rec.START_DATE ,
7929 po_line_loc_rec.END_DATE ,
7930 po_line_loc_rec.LEAD_TIME ,
7931 po_line_loc_rec.LEAD_TIME_UNIT ,
7932 po_line_loc_rec.PRICE_DISCOUNT ,
7933 po_line_loc_rec.TERMS_ID ,
7934 po_line_loc_rec.APPROVED_FLAG ,
7935 po_line_loc_rec.APPROVED_DATE ,
7936 po_line_loc_rec.CLOSED_FLAG ,
7937 po_line_loc_rec.CANCEL_FLAG ,
7938 po_line_loc_rec.CANCELLED_BY ,
7939 po_line_loc_rec.CANCEL_DATE ,
7940 po_line_loc_rec.CANCEL_REASON ,
7941 po_line_loc_rec.FIRM_STATUS_LOOKUP_CODE ,
7942 po_line_loc_rec.FIRM_DATE ,
7943 po_line_loc_rec.ATTRIBUTE_CATEGORY ,
7944 po_line_loc_rec.ATTRIBUTE1 ,
7945 po_line_loc_rec.ATTRIBUTE2 ,
7946 po_line_loc_rec.ATTRIBUTE3 ,
7947 po_line_loc_rec.ATTRIBUTE4 ,
7948 po_line_loc_rec.ATTRIBUTE5 ,
7949 po_line_loc_rec.ATTRIBUTE6 ,
7950 po_line_loc_rec.ATTRIBUTE7 ,
7951 po_line_loc_rec.ATTRIBUTE8 ,
7952 po_line_loc_rec.ATTRIBUTE9 ,
7953 po_line_loc_rec.ATTRIBUTE10 ,
7954 po_line_loc_rec.UNIT_OF_MEASURE_CLASS ,
7955 po_line_loc_rec.ENCUMBER_NOW ,
7956 po_line_loc_rec.ATTRIBUTE11 ,
7957 po_line_loc_rec.ATTRIBUTE12 ,
7958 po_line_loc_rec.ATTRIBUTE13 ,
7959 po_line_loc_rec.ATTRIBUTE14 ,
7960 po_line_loc_rec.ATTRIBUTE15 ,
7961 po_line_loc_rec.INSPECTION_REQUIRED_FLAG ,
7962 po_line_loc_rec.RECEIPT_REQUIRED_FLAG ,
7963 po_line_loc_rec.QTY_RCV_TOLERANCE ,
7964 po_line_loc_rec.QTY_RCV_EXCEPTION_CODE ,
7965 po_line_loc_rec.ENFORCE_SHIP_TO_LOCATION_CODE ,
7966 po_line_loc_rec.ALLOW_SUBSTITUTE_RECEIPTS_FLAG ,
7967 po_line_loc_rec.DAYS_EARLY_RECEIPT_ALLOWED ,
7968 po_line_loc_rec.DAYS_LATE_RECEIPT_ALLOWED ,
7969 po_line_loc_rec.RECEIPT_DAYS_EXCEPTION_CODE ,
7970 po_line_loc_rec.INVOICE_CLOSE_TOLERANCE ,
7971 po_line_loc_rec.RECEIVE_CLOSE_TOLERANCE ,
7972 po_line_loc_rec.SHIP_TO_ORGANIZATION_ID ,
7973 po_line_loc_rec.SHIPMENT_NUM ,
7974 po_line_loc_rec.SOURCE_SHIPMENT_ID ,
7975 po_line_loc_rec.SHIPMENT_TYPE ,
7976 po_line_loc_rec.CLOSED_CODE ,
7977 po_line_loc_rec.REQUEST_ID ,
7978 po_line_loc_rec.PROGRAM_APPLICATION_ID ,
7979 po_line_loc_rec.PROGRAM_ID ,
7980 po_line_loc_rec.PROGRAM_UPDATE_DATE ,
7981 po_line_loc_rec.USSGL_TRANSACTION_CODE ,
7982 po_line_loc_rec.GOVERNMENT_CONTEXT ,
7983 po_line_loc_rec.RECEIVING_ROUTING_ID ,
7984 po_line_loc_rec.ACCRUE_ON_RECEIPT_FLAG ,
7985 po_line_loc_rec.CLOSED_REASON ,
7986 po_line_loc_rec.CLOSED_DATE ,
7987 po_line_loc_rec.CLOSED_BY ,
7988 po_line_loc_rec.ORG_ID ,
7989 po_line_loc_rec.QUANTITY_SHIPPED ,
7990 po_line_loc_rec.COUNTRY_OF_ORIGIN_CODE ,
7991 po_line_loc_rec.TAX_USER_OVERRIDE_FLAG ,
7992 po_line_loc_rec.MATCH_OPTION ,
7993 po_line_loc_rec.TAX_CODE_ID ,
7994 po_line_loc_rec.CALCULATE_TAX_FLAG ,
7995 po_line_loc_rec.CHANGE_PROMISED_DATE_REASON
7996 );
7997
7998 IF v_hook_value = 'FALSE' THEN
7999 RETURN;
8000 END IF;
8001 v_po_hdr_id := po_line_loc_rec.PO_HEADER_ID;
8002 v_po_line_id := po_line_loc_rec.PO_LINE_ID;
8003 v_orig_ship_id := po_line_loc_rec.original_shipment_id;
8004 v_shipment_type := po_line_loc_rec.SHIPMENT_TYPE;
8005 v_shipment_num := po_line_loc_rec.Shipment_Num;
8006 v_src_ship_id := po_line_loc_rec.Source_Shipment_Id;
8007 v_from_line_loc_id := po_line_loc_rec.From_Line_Location_Id;
8008 v_from_line_id := po_line_loc_rec.From_Line_Id;
8009 v_from_hdr_id := po_line_loc_rec.From_Header_Id;
8010 v_line_loc_id := po_line_loc_rec.Line_Location_Id;
8011 v_price := po_line_loc_rec.Price_Override;
8012 v_qty := po_line_loc_rec.Quantity;
8013 v_cre_dt := po_line_loc_rec.Creation_Date;
8014 v_cre_by := po_line_loc_rec.Created_By;
8015 v_last_upd_dt := po_line_loc_rec.Last_Update_Date ;
8016 v_last_upd_by := po_line_loc_rec.Last_Updated_By;
8017 v_last_upd_login := po_line_loc_rec.Last_Update_Login;
8018 v_uom_measure := po_line_loc_rec.Unit_Meas_Lookup_Code;
8019 v_orig_ship_id := po_line_loc_rec.original_shipment_id;
8020 v_ship_to_org_id := po_line_loc_rec.SHIP_TO_ORGANIZATION_ID;
8021
8022 OPEN c_po_hdr(v_po_hdr_id);
8023 FETCH c_po_hdr INTO r_po_header;
8024 CLOSE c_po_hdr;
8025
8026 OPEN c_po_line(v_po_line_id);
8027 FETCH c_po_line INTO r_po_line;
8028 CLOSE c_po_line;
8029
8030 v_from_type_lookup_code := r_po_header.from_type_lookup_code;
8031 v_quot_from_hdr_id := r_po_header.from_header_id;
8032 v_type_lookup_code := r_po_header.type_lookup_code;
8033 v_Vendor_id := r_po_header.vendor_id;
8034 v_Vendor_site_id := r_po_header.vendor_site_id;
8035 v_currency := r_po_header.currency_code;
8036 v_style_id := r_po_header.style_id;
8037
8038 v_item_id := r_po_line.item_id;
8039 v_line_num := r_po_line.line_num;
8040
8041 IF jai_cmn_utils_pkg.validate_po_type(p_style_id => v_style_id) = FALSE THEN
8042 return;
8043 END IF;
8044
8045 OPEN fetch_uomcode_cur;
8046 FETCH fetch_uomcode_cur INTO v_uom_code;
8047 CLOSE fetch_uomcode_cur;
8048
8049 IF pv_action = JAI_CONSTANTS.inserting THEN
8050
8051 IF is_split_line(v_orig_ship_id, v_po_hdr_id, v_po_line_id) = TRUE THEN
8052 -- process for split line;
8053 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
8054 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'v_orig_ship_id:'||v_orig_ship_id||'its split line.');
8055 END IF;
8056
8057 jai_po_proc_pkg.process_split_line(v_orig_ship_id ,v_line_loc_id,v_qty,v_price,v_type_lookup_code);
8058
8059 ELSE--It's not split line
8060 IF v_shipment_type NOT IN ( 'SCHEDULED' , 'BLANKET' ) THEN
8061 IF (v_from_type_lookup_code IN ('QUOTATION','PLANNED','BLANKET','STANDARD') AND v_quot_from_hdr_id IS NOT NULL) THEN
8062 --Process for copy documents, from quotation to po
8063 OPEN Fetch_Count_Cur(v_quot_from_hdr_id);
8064 FETCH Fetch_Count_Cur INTO v_count;
8065 CLOSE Fetch_Count_Cur;
8066
8067 IF v_count > 0 THEN
8068 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
8069 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'Process for copy documents,copy_source_taxes');
8070 END IF;
8071 v_src_loc_id := get_line_loc_id(v_quot_from_hdr_id ,v_line_num ,v_item_id , v_shipment_num);
8072 v_src_line_id := get_line_id(v_quot_from_hdr_id ,v_line_num );
8073 jai_po_proc_pkg.copy_source_taxes(
8074 p_type => 'S'
8075 ,p_po_hdr_id => v_po_hdr_id
8076 ,p_po_line_id => v_po_line_id
8077 ,p_po_line_loc_id => v_line_loc_id
8078 ,p_line_num => v_line_num
8079 ,p_ship_num => v_shipment_num
8080 ,p_item_id => v_item_id
8081 ,p_from_hdr_id => v_quot_from_hdr_id
8082 ,p_from_type_lookup_code => v_from_type_lookup_code
8083 ,p_source_line_id => v_src_line_id
8084 ,p_source_loc_id => v_src_loc_id
8085 ,p_cre_dt => v_cre_dt
8086 ,p_cre_by => v_cre_by
8087 ,p_last_upd_dt => v_last_upd_dt
8088 ,p_last_upd_by => v_last_upd_by
8089 ,p_last_upd_login => v_last_upd_login
8090 );
8091 RETURN;
8092 END IF;
8093 END IF;
8094
8095 --If the following if is satisfied, it implies that PO has been linked by a quotation.
8096 IF v_type_lookup_code IN ( 'STANDARD', 'PLANNED') AND v_from_line_id IS NOT NULL THEN
8097 OPEN fetch_uomcode_cur;
8098 FETCH fetch_uomcode_cur INTO v_uom_code;
8099 CLOSE fetch_uomcode_cur;
8100 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
8101 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'Process for copy documents from quotation,copy_quot_taxes');
8102 END IF;
8103 jai_po_proc_pkg.copy_quot_taxes(
8104 p_line_loc_id => v_line_loc_id
8105 ,p_po_hdr_id => v_po_hdr_id
8106 ,p_po_line_id => v_po_line_id
8107 ,p_item_id => v_item_id--Added on 15-Jan-2013
8108 ,p_qty => v_qty
8109 ,p_frm_hdr_id => v_from_hdr_id
8110 ,p_frm_line_id => v_from_line_id
8111 ,p_price => v_price
8112 ,p_unit_code => v_uom_code
8113 ,p_cre_dt => v_cre_dt
8114 ,p_cre_by => v_cre_by
8115 ,p_last_upd_dt => v_last_upd_dt
8116 ,p_last_upd_by => v_last_upd_by
8117 ,p_last_upd_login => v_last_upd_login
8118 ,p_call_from => 'TRIGGER'
8119 );
8120 RETURN;
8121 END IF;
8122
8123 IF v_type_lookup_code = 'QUOTATION'OR v_shipment_type IN ( 'SCHEDULED' , 'BLANKET' ) THEN
8124 JAI_AVLIST_VALIDATE_PKG.Check_AvList_Validation( pn_party_id => v_vendor_id
8125 , pn_party_site_id => v_vendor_site_id
8126 , pn_inventory_item_id => v_item_id
8127 , pd_ordered_date => trunc(sysdate)
8128 , pv_party_type => 'V'
8129 , pn_pricing_list_id => null
8130 );
8131 jai_po_proc_pkg.process_po_tax_wrapper(prec_po_location=>po_line_loc_rec);
8132 RETURN;
8133 END IF;
8134
8135 jai_po_proc_pkg.process_po_tax_wrapper(prec_po_location=>po_line_loc_rec);
8136 END IF;
8137 END IF;
8138
8139 ELSE
8140 open c_get_po_line_loc_details(v_line_loc_id);
8141 fetch c_get_po_line_loc_details into r_get_po_line_loc_details;
8142 close c_get_po_line_loc_details;
8143
8144
8145 IF po_line_loc_rec.RETROACTIVE_DATE IS NOT NULL
8146 AND (r_get_po_line_loc_details.PRICE_OVERRIDE <> v_price)
8147 THEN
8148 lv_retro_price_flag := 'Y';
8149 END IF;
8150
8151 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
8152 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'old_price:'||r_get_po_line_loc_details.PRICE_OVERRIDE||'new_price:'||v_price||'lv_retro_price_flag is'||lv_retro_price_flag);
8153 END IF;
8154 -- IF (r_get_po_line_loc_details.quantity <> v_qty OR lv_retro_price_flag = 'Y') THEN
8155
8156 IF lv_retro_price_flag = 'Y' THEN
8157
8158 JAI_RETRO_PRC_PKG.Insert_Price_Changes( pr_old => old_line_loc_rec
8159 , pr_new => po_line_loc_rec
8160 , pv_process_flag => lv_process_flag
8161 , pv_process_message => lv_process_message
8162 );
8163
8164 IF lv_process_flag IN ('EE', 'UE')
8165 THEN
8166 FND_MESSAGE.SET_NAME ('JA','JAI_EXCEPTION_OCCURED');
8167 FND_MESSAGE.SET_TOKEN('JAI_PROCESS_MSG','JAI_PO_PROC_PKG.JAI_PO_SHIPMENT_LINE.Err:'||lv_process_message);
8168 app_exception.raise_exception;
8169 END IF;
8170 END IF;
8171
8172 jai_po_proc_pkg.process_po_tax_wrapper(prec_po_location=>po_line_loc_rec,pv_retro_price_flag => lv_retro_price_flag);
8173 -- END IF;
8174
8175
8176 END IF;
8177 EXCEPTION
8178 WHEN OTHERS THEN
8179
8180
8181 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
8182 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
8183 END IF;
8184 app_exception.raise_exception;
8185
8186 END process_po_line_loc;
8187 /*This procedure is only used for requisition line trigger, mainly copy from the logic
8188 in curor c_get_req_lines of copy_req_to_po
8189 --Added by Wenqiong on Feb 16 2013 Begin*/
8190 PROCEDURE copy_req_tax_to_po(prec_po_req_line IN PO_REQUISITION_LINES_ALL%ROWTYPE
8191 ,pv_return_code OUT NOCOPY VARCHAR2
8192 ,pv_return_message OUT NOCOPY VARCHAR2
8193 ) IS
8194 v_requisition_line_id NUMBER;
8195 v_sugg_vendor_name VARCHAR2(360);
8196 v_dest_org_id NUMBER;
8197 v_sugg_vendor_location VARCHAR2(360);
8198 v_item_id NUMBER;
8199 v_shipment_type VARCHAR2(30);
8200 v_po_vendor_id NUMBER;
8201 v_vendor_id NUMBER;
8202 v_sugg_vendor_id NUMBER;
8203 v_po_vendor_site_id NUMBER;
8204 v_line_loc_id NUMBER;
8205 v_cre_dt DATE ;
8206 v_cre_by NUMBER;
8207 v_last_upd_dt DATE ;
8208 v_last_upd_by NUMBER;
8209 v_last_upd_login NUMBER ;
8210 v_hdr_curr VARCHAR2(30);
8211 v_uom_code VARCHAR2(100);
8212 v_price NUMBER ;
8213 v_qty NUMBER ;
8214 v_curr VARCHAR2(30) ;
8215 v_req_conv_rate NUMBER ;
8216 v_req_conv_type VARCHAR2(30) ;
8217 v_req_conv_date DATE ;
8218 v_t_curr VARCHAR2(30);
8219 v_po_curr VARCHAR2(30);
8220 v_po_conv_rate NUMBER;
8221 v_po_conv_type VARCHAR2(30);
8222 v_po_conv_date DATE;
8223 v_set_of_book_id NUMBER;
8224 conv_rate NUMBER;
8225 v_curr_conv_factor NUMBER;
8226 DUMMY NUMBER;
8227 v_currency_code GL_SETS_OF_BOOKS.currency_code%TYPE;
8228
8229 -- For Blanket Release
8230 v_src_ship_id NUMBER;
8231 v_po_rel_id NUMBER;
8232
8233 -- For Cursor Fetch tax cur
8234 v_po_hdr_id NUMBER;
8235 v_po_line_id NUMBER;
8236 v_line_focus_id NUMBER;
8237 Line_tot NUMBER;
8238 v_tax_amt NUMBER;
8239 v_total_amt NUMBER;
8240 v_tax_line_no NUMBER;
8241 v_prec1 NUMBER;
8242 v_prec2 NUMBER;
8243 v_prec3 NUMBER;
8244 v_prec4 NUMBER;
8245 v_prec5 NUMBER;
8246
8247 v_prec6 NUMBER;
8248 v_prec7 NUMBER;
8249 v_prec8 NUMBER;
8250 v_prec9 NUMBER;
8251 v_prec10 NUMBER;
8252
8253
8254 v_taxid NUMBER;
8255 v_tax_rate NUMBER;
8256 v_qty_rate NUMBER;
8257 v_uom VARCHAR2(15);
8258 v_tax_type VARCHAR2(30);
8259 v_mod_flag VARCHAR2(1);
8260 v_vendor2_id NUMBER;
8261 v_mod_cr NUMBER;
8262 v_vendor1_id NUMBER;
8263 v_tax_target_amt NUMBER;
8264 v_tax_amt1 NUMBER;
8265 v_assessable_value NUMBER;
8266 v_vat_assess_value NUMBER;
8267 v_loc_count NUMBER;
8268
8269 v_tax_category_id JAI_PO_TAXES.tax_category_id%TYPE;
8270 v_tax_category_id_holder JAI_PO_LINE_LOCATIONS.tax_category_id%TYPE;
8271 v_style_id po_headers_all.style_id%TYPE;
8272
8273 ------------------------------>
8274 -- Check the vendor btn the vendor present in tax lines and that of suggested vendor in requisition lines
8275 -- If they are same or any one is null then insert po vendor else keep the vendor in tact.
8276 -- Check if the document to be created is a Blanket Release / Standard Purchase Order.
8277 -- Pick up Line Location Details as well.
8278
8279 CURSOR c_inventory_org_id(p_ship_to_location_id IN NUMBER) IS
8280 SELECT Inventory_Organization_Id
8281 FROM Hr_Locations
8282 WHERE Location_Id = p_ship_to_location_id;
8283
8284 v_inventory_org_id HR_LOCATIONS.Inventory_Organization_Id%TYPE;
8285 v_line_loc_cnt NUMBER;
8286 v_ship_to_organization_id NUMBER;
8287 v_ship_to_location_id NUMBER;
8288 v_price_override PO_LINE_LOCATIONS_ALL.price_override%TYPE;
8289 v_unit_meas_lookup_code PO_LINE_LOCATIONS_ALL.unit_meas_lookup_code%TYPE;
8290 v_line_uom PO_LINES_ALL.unit_meas_lookup_code%TYPE;
8291 v_type_lookup_code PO_HEADERS_ALL.type_lookup_code%TYPE;
8292 v_quot_class_code PO_HEADERS_ALL.quotation_class_code%TYPE;
8293
8294
8295 CURSOR Fetch_Unit_Measure_Cur IS
8296 SELECT Unit_Meas_Lookup_Code
8297 FROM Po_Lines_All
8298 WHERE Po_Line_Id = v_po_line_id;
8299
8300 CURSOR Fetch_UomCode_Cur(p_uom IN VARCHAR2) IS
8301 SELECT Uom_Code
8302 FROM Mtl_Units_Of_Measure
8303 WHERE Unit_Of_Measure = p_uom;
8304
8305 -- Pick up vendor id for the corresponding Po_Header_Id
8306 CURSOR Fetch_Po_Vendor_Id_Cur( hdr_id IN NUMBER ) IS
8307 SELECT Vendor_Id, Vendor_SIte_Id, Currency_Code, Rate_Date, Rate_Type, Rate
8308 , type_lookup_code, quotation_class_code,
8309 style_id
8310 FROM Po_Headers_All
8311 WHERE Po_Header_Id = hdr_id;
8312
8313
8314
8315 CURSOR Fetch_Taxes_Cur( rqlineid IN NUMBER ) IS
8316 SELECT Tax_Line_no,
8317 Precedence_1, Precedence_2, Precedence_3, Precedence_4, Precedence_5,
8318 Precedence_6, Precedence_7, Precedence_8, Precedence_9, Precedence_10,
8319 Tax_Id, Currency, Tax_Rate, Qty_Rate, UOM, Tax_Amount, Tax_Type, Modvat_Flag,
8320 Vendor_Id, Tax_Target_Amount,
8321 tax_category_id
8322 FROM JAI_PO_REQ_LINE_TAXES
8323 WHERE requisition_line_id = rqlineid
8324 ORDER BY Tax_Line_No;
8325 rec_tax Fetch_Taxes_Cur%ROWTYPE;
8326 CURSOR Fetch_Mod_Cr_Cur( taxid IN NUMBER ) IS
8327 SELECT Tax_Type, Mod_Cr_Percentage, Vendor_Id
8328 , adhoc_flag
8329 FROM JAI_CMN_TAXES_ALL
8330 WHERE Tax_Id = taxid;
8331
8332 CURSOR Fetch_Vendor_Id IS
8333 SELECT Vendor_Id
8334 FROM Po_Vendors
8335 WHERE Vendor_Name = v_sugg_vendor_name;
8336
8337 CURSOR Tot_Amt_Cur IS
8338 SELECT SUM( NVL( Tax_Amount, 0 ) )
8339 FROM JAI_PO_TAXES
8340 WHERE line_location_id = v_line_loc_id
8341 AND Tax_Type <> jai_constants.tax_type_tds ; /* 'TDS';*/
8342
8343
8344 CURSOR Chk_localization_entry(c_req_line_id NUMBER) IS
8345 SELECT COUNT(REQUISITION_LINE_ID)
8346 FROM JAI_PO_REQ_LINES
8347 WHERE REQUISITION_LINE_ID = c_req_line_id;
8348
8349 CURSOR tax_override_flag_cur(c_vendor_id NUMBER, c_vendor_site_id NUMBER) IS
8350 SELECT override_flag
8351 FROM JAI_CMN_VENDOR_SITES
8352 WHERE vendor_id = c_vendor_id
8353 AND vendor_site_id = c_vendor_site_id;
8354
8355 v_override_flag VARCHAR2(1);
8356
8357 CURSOR c_get_tax_category_id(p_requisition_line_id IN NUMBER) IS
8358 SELECT tax_category_id
8359 FROM JAI_PO_REQ_LINES
8360 WHERE requisition_line_id = p_requisition_line_id;
8361
8362
8363
8364 v_quantity NUMBER;
8365
8366
8367 v_tax_amount NUMBER;
8368 v_adhoc_flag CHAR(1);
8369
8370 v_curr_conv_rate NUMBER;
8371
8372 v_debug BOOLEAN;
8373 v_utl_file_name VARCHAR2(50);
8374 v_utl_location VARCHAR2(512);
8375 v_myfilehandle UTL_FILE.FILE_TYPE;
8376
8377
8378 lv_tax_cnt NUMBER := 0;
8379 lv_tax_from_reqn_flag varchar2(1) := 'N';
8380
8381 l_func_curr_det jai_plsql_cache_pkg.func_curr_details;
8382 v_requisition_header_id NUMBER;
8383 v_reqn_tax NUMBER;
8384
8385 CURSOR Fetch_Focus_Id_Cur_for_req( line_id IN NUMBER , line_loc_id in Number ) IS
8386 SELECT Line_Focus_Id
8387 FROM JAI_PO_LINE_LOCATIONS
8388 WHERE Po_Line_Id = line_id
8389 AND Line_Location_Id = line_loc_id;
8390
8391 CURSOR c_get_line_loc_cnt IS
8392 select count(1) from JAI_PO_LINE_LOCATIONS
8393 where line_location_id = v_line_loc_id;
8394
8395 Cursor fetch_Tax_cnt( cp_line_loc_id in number ) is
8396 select count(1)
8397 from JAI_PO_TAXES
8398 where line_location_id = cp_line_loc_id;
8399
8400 CURSOR Fetch_Hdr_Curr_Cur IS
8401 SELECT NVL( Currency_Code, '$' )
8402 FROM Po_Requisition_Headers_V
8403 WHERE Requisition_Header_Id = prec_po_req_line.REQUISITION_HEADER_ID;
8404
8405 Cursor c_get_tax_modified_flag IS
8406 SELECT tax_modified_flag
8407 FROM JAI_PO_LINE_LOCATIONS
8408 WHERE line_location_id = prec_po_req_line.line_location_id ;
8409 lv_tax_modified_flag VARCHAR2(1) ;
8410
8411 CURSOR c_get_po_line_loc IS
8412 SELECT * FROM
8413 Po_Line_Locations_All
8414 WHERE LINE_LOCATION_ID = prec_po_req_line.Line_Location_Id;
8415
8416 prec_po_location Po_Line_Locations_All%ROWTYPE;
8417 tax_cnt NUMBER;
8418 l_api_name CONSTANT VARCHAR2(200) := 'copy_req_tax_to_po';
8419 BEGIN
8420
8421 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
8422 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
8423 END IF;
8424 pv_return_code := jai_constants.successful ;
8425 OPEN c_get_po_line_loc;
8426 FETCH c_get_po_line_loc INTO prec_po_location;
8427 CLOSE c_get_po_line_loc;
8428 v_po_hdr_id := prec_po_location.Po_Header_Id ;
8429 v_po_line_id := prec_po_location.Po_Line_Id ;
8430 Line_Tot := prec_po_location.Price_Override * prec_po_location.Quantity;
8431 v_shipment_type := prec_po_location.Shipment_Type ;
8432 v_po_rel_id := prec_po_location.Po_Release_Id ;
8433 v_src_ship_id := prec_po_location.Source_Shipment_Id ;
8434 v_quantity := prec_po_location.quantity ;
8435 v_ship_to_organization_id := prec_po_location.ship_to_organization_id;
8436 v_ship_to_location_id := prec_po_location.ship_to_location_id ;
8437 v_price_override := prec_po_location.price_override ;
8438 v_unit_meas_lookup_code := prec_po_location.Unit_Meas_Lookup_Code ;
8439 v_line_loc_id := prec_po_location.LINE_LOCATION_ID ;
8440
8441 OPEN Fetch_Po_Vendor_Id_Cur( v_po_hdr_id );
8442 FETCH Fetch_Po_Vendor_Id_Cur INTO v_po_vendor_id, v_po_vendor_site_id, v_po_curr,
8443 v_po_conv_date, v_po_conv_type, v_po_conv_rate
8444 , v_type_lookup_code, v_quot_class_code,
8445 v_style_id;
8446 CLOSE Fetch_Po_Vendor_Id_Cur;
8447
8448
8449 IF jai_cmn_utils_pkg.validate_po_type(p_style_id => v_style_id) = FALSE THEN
8450 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
8451 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'style_id:'||to_char(v_style_id)||'validate_po_type is false,return');
8452 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name);
8453 END IF;
8454 return;
8455 END IF;
8456
8457 OPEN Fetch_Hdr_Curr_Cur;
8458 FETCH Fetch_Hdr_Curr_Cur INTO v_hdr_curr;
8459 CLOSE Fetch_Hdr_Curr_Cur;
8460
8461 v_curr := NVL( v_curr, v_hdr_curr);
8462 OPEN Fetch_Unit_Measure_Cur;
8463 FETCH Fetch_Unit_Measure_Cur INTO v_line_uom;
8464 CLOSE Fetch_Unit_Measure_Cur;
8465
8466 OPEN Fetch_UomCode_Cur(v_line_uom);
8467 FETCH Fetch_UomCode_Cur INTO v_uom_code;
8468 CLOSE Fetch_UomCode_Cur;
8469
8470 OPEN tax_override_flag_cur(v_po_vendor_id, v_po_vendor_site_id);
8471 FETCH tax_override_flag_cur INTO v_override_flag;
8472 CLOSE tax_override_flag_cur;
8473
8474
8475
8476 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
8477 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'prec_po_location.line_location_id:'||to_char(prec_po_location.line_location_id));
8478 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'requisition_line_id:'||to_char(prec_po_req_line.requisition_line_id));
8479 END IF;
8480
8481
8482 v_requisition_line_id := prec_po_req_line.Requisition_Line_Id;
8483 v_sugg_vendor_name := prec_po_req_line.Suggested_Vendor_Name;
8484 v_dest_org_id := prec_po_req_line.Destination_Organization_Id;
8485 v_sugg_vendor_location := prec_po_req_line.Suggested_Vendor_Location;
8486 v_item_id := prec_po_req_line.Item_Id;
8487 v_line_loc_id := prec_po_req_line.Line_Location_Id;
8488 v_cre_dt := prec_po_req_line.Creation_Date;
8489 v_cre_by := prec_po_req_line.Created_By;
8490 v_last_upd_dt := prec_po_req_line.Last_Update_Date ;
8491 v_last_upd_by := prec_po_req_line.Last_Updated_By;
8492 v_last_upd_login := prec_po_req_line.Last_Update_Login;
8493 v_price := prec_po_req_line.Unit_Price;
8494 v_qty := prec_po_req_line.Quantity;
8495 v_curr := prec_po_req_line.Currency_Code;
8496 v_req_conv_rate := prec_po_req_line.Rate;
8497 v_req_conv_type := prec_po_req_line.Rate_Type;
8498 v_req_conv_date := prec_po_req_line.Rate_Date;
8499 DUMMY := 1;
8500 v_loc_count := 0;
8501 v_requisition_header_id := prec_po_req_line.requisition_header_id;
8502
8503 --Modified by Junjian for bug#14729941 on 10-Oct-2012 begin
8504 v_curr_conv_factor := get_currency_conv_rate (v_inv_org_id => v_dest_org_id,
8505 v_currency => v_po_curr/*v_curr*/,
8506 v_rate_date => v_po_conv_date/*v_req_conv_date*/,
8507 v_rate_type => v_po_conv_type/*v_req_conv_type*/,
8508 v_rate => v_po_conv_rate/*v_req_conv_rate*/);
8509 v_price_override := v_price_override * nvl(v_curr_conv_factor,1);
8510 --Modified by Junjian for bug#14729941 on 10-Oct-2012 end
8511 OPEN Chk_localization_entry(v_requisition_line_id);
8512 FETCH Chk_localization_entry INTO v_loc_count;
8513 CLOSE Chk_localization_entry;
8514
8515 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
8516 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'override_flag:'||NVL(v_override_flag,'N')||'v_shipment_type:'||v_shipment_type);
8517 END IF;
8518
8519 IF NVL(v_override_flag,'N') = 'Y' AND v_shipment_type <> 'BLANKET' THEN
8520 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
8521 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,G_PKG_NAME||': override_flag is Y and shipment type <> BLANKET, return');
8522 END IF;
8523 RETURN;
8524 END IF;
8525
8526 IF v_shipment_type <> 'BLANKET' THEN
8527 IF NVL(v_loc_count,0) = 0 THEN
8528 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
8529 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,G_PKG_NAME||':shipment type <> BLANKET and no data in JAI req table, return');
8530 END IF;
8531 RETURN;
8532 END IF;
8533 ELSE
8534 RETURN;
8535 END IF;
8536
8537
8538 OPEN Fetch_Vendor_Id;
8539 FETCH Fetch_Vendor_Id INTO v_sugg_vendor_id;
8540 CLOSE Fetch_Vendor_Id;
8541
8542 v_sugg_vendor_id := nvl(v_sugg_vendor_id,-999);
8543
8544 OPEN c_get_line_loc_cnt;
8545 FETCH c_get_line_loc_cnt INTO v_line_loc_cnt;
8546 CLOSE c_get_line_loc_cnt;
8547 -- this means multiple requisition lines are merged into a single PO Shipment line
8548 -- so the taxes should get defaulted from SET UP's rather than carrying the reqn taxes to PO Shipment
8549
8550 IF v_line_loc_cnt > 0 THEN
8551
8552 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
8553 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,G_PKG_NAME||':v_line_loc_cnt > 0');
8554 END IF;
8555
8556
8557 OPEN c_get_tax_modified_flag ;
8558 FETCH c_get_tax_modified_flag INTO lv_tax_modified_flag ;
8559 CLOSE c_get_tax_modified_flag;
8560
8561
8562 IF NVL(lv_tax_modified_flag,'N') = 'N' THEN
8563
8564 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
8565 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,G_PKG_NAME||':lv_tax_modified_flag = N');
8566 END IF;
8567
8568 delete_jai_po_lines(pn_line_loc_id => v_line_loc_id);
8569
8570
8571 OPEN c_inventory_org_id( v_ship_to_location_id );
8572 FETCH c_inventory_org_id INTO v_inventory_org_id;
8573 CLOSE c_inventory_org_id;
8574
8575 insert_jai_line_locs(
8576 v_line_loc_id => v_line_loc_id
8577 ,v_po_hdr_id => v_po_hdr_id
8578 ,v_po_line_id => v_po_line_id
8579 ,v_cre_dt => v_cre_dt
8580 ,v_cre_by => v_cre_by
8581 ,v_last_upd_dt => v_last_upd_dt
8582 ,v_last_upd_by => v_last_upd_by
8583 ,v_last_upd_login => v_last_upd_login
8584 ,flag => 'I'
8585 ,v_item_id => v_item_id
8586 ,v_vendor_id => v_po_vendor_id
8587 ,v_vendor_site_id => v_po_vendor_site_id
8588 ,v_qty => v_quantity
8589 ,v_price_override => v_price_override
8590 ,v_currency => v_po_curr
8591 ,v_line_focus_id => v_line_focus_id
8592 );
8593
8594
8595 /*calculate av and VAT av*/
8596 get_assessable_value(
8597 pn_vendor_id => v_po_vendor_id
8598 ,pn_vendor_site_id => v_po_vendor_site_id
8599 ,pn_item_id => v_item_id
8600 ,pn_price => v_price_override
8601 ,pn_qty => v_quantity
8602 ,pv_uom_code => v_uom_code
8603 ,pn_po_hdr_id => v_po_hdr_id
8604 ,pv_currency => v_po_curr
8605 ,pv_action => JAI_CONSTANTS.inserting
8606 ,pn_conv_rate => v_curr_conv_factor
8607 ,pn_assessable_value => v_assessable_value
8608 ,pn_vat_assess_value => v_vat_assess_value
8609 );
8610
8611 process_po_taxes(
8612 v_type_lookup_code => v_Type_Lookup_Code
8613 ,v_quot_class_code => v_Quot_Class_Code
8614 ,v_vendor_id => v_po_vendor_id
8615 ,v_vendor_site_id => v_po_vendor_site_id
8616 ,v_currency => v_po_curr
8617 ,v_org_id => v_inventory_org_id
8618 ,v_item_id => v_item_id
8619 ,v_uom_code => v_uom_code
8620 ,v_line_loc_id => v_line_loc_id
8621 ,v_po_hdr_id => v_po_hdr_id
8622 ,v_po_line_id => v_po_line_id
8623 ,v_frm_po_line_id => NULL
8624 ,v_frm_line_loc_id => NULL
8625 ,v_price => v_price_override
8626 ,v_qty => v_quantity
8627 ,v_cre_dt => v_cre_dt
8628 ,v_cre_by => v_cre_by
8629 ,v_last_upd_dt => v_last_upd_dt
8630 ,v_last_upd_by => v_last_upd_by
8631 ,v_last_upd_login => v_last_upd_login
8632 ,flag => 'I'
8633 ,pn_conv_rate => v_curr_conv_factor
8634 ,pn_assessable_value => v_assessable_value
8635 ,pn_vat_assess_value => v_vat_assess_value
8636 );
8637
8638 END IF ;
8639 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
8640 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,G_PKG_NAME||'v_line_loc_cnt >0 and after default for tax_modified_flag = N, and return.');
8641 END IF;
8642
8643 return;
8644 END IF;
8645
8646
8647 /*
8648 ||Po lines does not exists .
8649 ||Insert the line locations from requisition into po using the procedure below
8650 */
8651
8652
8653 insert_jai_line_locs(
8654 v_line_loc_id => v_line_loc_id
8655 ,v_po_hdr_id => v_po_hdr_id
8656 ,v_po_line_id => v_po_line_id
8657 ,v_cre_dt => v_cre_dt
8658 ,v_cre_by => v_cre_by
8659 ,v_last_upd_dt => v_last_upd_dt
8660 ,v_last_upd_by => v_last_upd_by
8661 ,v_last_upd_login => v_last_upd_login
8662 ,flag => 'I'
8663 ,v_item_id => v_item_id
8664 ,v_vendor_id => v_po_vendor_id
8665 ,v_vendor_site_id => v_po_vendor_site_id
8666 ,v_qty => v_quantity
8667 ,v_price_override => v_price_override
8668 ,v_currency => v_po_curr
8669 ,v_line_focus_id => v_line_focus_id
8670 );
8671
8672
8673 /*
8674 Fetch the line_focus_id for the current line and current
8675 line location id */
8676 SELECT COUNT(1) INTO tax_cnt FROM JAI_PO_TAXES WHERE
8677 Po_Line_Id = v_po_line_id
8678 AND Line_Location_Id = v_line_loc_id;
8679 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
8680 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'before insert taxes, tax_cnt is '||tax_cnt);
8681 END IF;
8682
8683 v_reqn_tax := 0;
8684 OPEN Fetch_Taxes_Cur( v_requisition_line_id );
8685 LOOP
8686 FETCH Fetch_Taxes_Cur INTO rec_tax;
8687
8688 EXIT WHEN Fetch_Taxes_Cur%NOTFOUND;
8689 v_reqn_tax := v_reqn_tax + 1;
8690 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
8691 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'in fetch_tax_cur loop:v_reqn_tax, '||v_reqn_tax);
8692 END IF;
8693
8694 OPEN Fetch_Mod_Cr_Cur( rec_tax.tax_id );
8695 FETCH Fetch_Mod_Cr_Cur INTO v_tax_type, v_mod_cr, v_vendor1_id
8696 , v_adhoc_flag;
8697 CLOSE Fetch_Mod_Cr_Cur;
8698
8699 v_currency_code := get_func_currency(v_inventory_org_id);
8700 v_t_curr := rec_tax.Currency; --Added by Junjian for bug#14729941 on 10-Oct-2012
8701 v_tax_amt := rec_tax.Tax_Amount;
8702 IF nvl(v_adhoc_flag, 'N') = 'Y' THEN
8703 IF v_t_curr <> v_po_curr THEN
8704
8705 -- as tax_currency is same as functional currency and v_curr_conv_rate contains conversion from v_po_curr to func_curr
8706 IF v_t_curr = v_currency_code THEN
8707 v_curr_conv_rate := jai_cmn_utils_pkg.currency_conversion( v_set_of_book_id , v_po_curr , v_po_conv_date , v_po_conv_type, v_po_conv_rate );
8708
8709 v_tax_amount := v_tax_amt / v_curr_conv_rate;
8710
8711 ELSE -- now tax_currency is not equal to functional currency, so division is fine
8712 v_curr_conv_rate := jai_cmn_utils_pkg.currency_conversion( v_set_of_book_id , v_t_curr , v_po_conv_date , v_po_conv_type, v_po_conv_rate );
8713 v_tax_amount := v_tax_amt * v_curr_conv_rate;
8714
8715 END IF;
8716
8717 v_curr_conv_rate := null;
8718 ELSE
8719 v_tax_amount := v_tax_amt;
8720 END IF;
8721 ELSE
8722 v_tax_amount := 0;
8723 END IF;
8724
8725
8726 IF v_mod_cr IS NOT NULL AND v_mod_cr > 0 THEN
8727 v_mod_flag := 'Y';
8728 ELSE
8729 v_mod_flag := 'N';
8730 END IF;
8731
8732 IF upper(v_tax_type) IN ( 'CUSTOMS', 'CVD',
8733 jai_constants.tax_type_add_cvd ,
8734 jai_constants.tax_type_customs_edu_Cess,JAI_CONSTANTS.TAX_TYPE_SH_CUSTOMS_EDU_CESS,
8735 jai_constants.tax_type_cvd_edu_cess,JAI_CONSTANTS.TAX_TYPE_SH_CVD_EDU_CESS)
8736 THEN
8737 v_vendor_id := NULL;
8738 ELSIF v_tax_type = 'TDS' THEN
8739 v_vendor_id := v_vendor1_id;
8740 ELSE
8741 IF NVL( v_vendor2_id, -999 ) = v_sugg_vendor_id THEN
8742 v_vendor_id := v_po_vendor_id;
8743 ELSE
8744 v_vendor_id := v_vendor2_id;
8745 END IF;
8746 END IF;
8747
8748 insert_po_taxes
8749 ( 'STANDARD', NULL,
8750 v_line_focus_id, v_line_loc_id,
8751 rec_tax.Tax_Line_no, v_po_line_id, v_po_hdr_id,
8752 rec_tax.precedence_1, rec_tax.precedence_2, rec_tax.precedence_3,
8753 rec_tax.precedence_4, rec_tax.precedence_5,
8754 rec_tax.precedence_6, rec_tax.precedence_7, rec_tax.precedence_8,
8755 rec_tax.precedence_9, rec_tax.precedence_10,
8756 rec_tax.tax_id, NULL, 0, /*rec_tax.currency*/v_po_curr,--Modified by Junjian for bug#14729941 on 10-Oct-2012
8757 rec_tax.tax_rate, rec_tax.qty_rate, rec_tax.uom,
8758 v_tax_amount , rec_tax.tax_type, rec_tax.Modvat_Flag,
8759 rec_tax.vendor_id, rec_tax.Tax_Target_Amount ,
8760 v_cre_dt, v_cre_by, v_last_upd_dt,
8761 v_last_upd_by, v_last_upd_login,
8762 rec_tax.tax_category_id
8763 );
8764
8765
8766
8767 v_tax_amt := 0;
8768 v_tax_amount := 0;
8769 v_adhoc_flag := null;
8770
8771
8772
8773 END LOOP;
8774 CLOSE Fetch_Taxes_Cur;
8775
8776
8777 SELECT COUNT(1) INTO tax_cnt FROM JAI_PO_TAXES WHERE
8778 Po_Line_Id = v_po_line_id
8779 AND Line_Location_Id = v_line_loc_id;
8780 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
8781 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'after insert taxes, tax_cnt is '||tax_cnt);
8782 END IF;
8783 if v_reqn_tax > 0 then
8784
8785 /*calculate av and VAT av*/
8786 get_assessable_value(
8787 pn_vendor_id => v_po_vendor_id
8788 ,pn_vendor_site_id => v_po_vendor_site_id
8789 ,pn_item_id => v_item_id
8790 ,pn_price => v_price
8791 ,pn_qty => v_quantity
8792 ,pv_uom_code => v_uom_code
8793 ,pn_po_hdr_id => v_po_hdr_id
8794 ,pv_currency => v_po_curr
8795 ,pv_action => JAI_CONSTANTS.inserting
8796 ,pn_conv_rate => v_curr_conv_factor
8797 ,pn_assessable_value => v_assessable_value
8798 ,pn_vat_assess_value => v_vat_assess_value
8799 );
8800 IF ( G_LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
8801 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'before calculate_tax ');
8802 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,'v_po_hdr_id:'||v_po_hdr_id||'v_po_line_id:'
8803 ||v_po_line_id||'v_line_loc_id'||v_line_loc_id || 'v_quantity:'||v_quantity||
8804 'line_tot:'||line_tot||'v_uom_code'||v_uom_code||'v_assessable_value:'||v_assessable_value
8805 ||'v_vat_assess_value'||v_vat_assess_value||'v_curr_conv_factor'||v_curr_conv_factor);
8806
8807 END IF;
8808 v_tax_amt := NULL;
8809
8810 jai_cmn_utils_pkg.write_fnd_log_msg('B13440775','14. jai_po_tax_pkg.calculate_tax. ' );
8811
8812 jai_po_tax_pkg.calculate_tax( 'STANDARDPO',
8813 v_po_hdr_id ,
8814 v_po_line_id,
8815 v_line_loc_id,
8816 v_quantity,
8817 line_tot,
8818 v_uom_code,
8819 line_tot,
8820 v_assessable_value,
8821 v_vat_assess_value,
8822 v_item_id,
8823 1/v_curr_conv_factor );
8824
8825 OPEN Tot_Amt_Cur;
8826 FETCH Tot_Amt_Cur INTO v_tax_amt;
8827 CLOSE Tot_Amt_Cur;
8828
8829 OPEN c_get_tax_category_id(prec_po_req_line.REQUISITION_LINE_ID);
8830 FETCH c_get_tax_category_id INTO v_tax_category_id_holder;
8831 CLOSE c_get_tax_category_id;
8832
8833
8834
8835 UPDATE JaI_Po_Line_Locations
8836 SET Tax_Amount = NVL( v_tax_amt, 0 ),
8837 Total_Amount = NVL( Line_Tot, 0 ) + NVL( v_tax_amt, 0 ),
8838 Last_Updated_By = v_last_upd_by,
8839 Last_Update_Date = v_last_upd_dt,
8840 Last_Update_Login = v_last_upd_login,
8841 tax_category_id = v_tax_category_id_holder
8842 WHERE Po_Line_Id = v_po_line_id
8843 AND Line_Location_Id = v_line_Loc_id;
8844
8845 end if;
8846
8847
8848
8849 exception
8850 WHEN OTHERS THEN
8851
8852 pv_return_code := 'Failure' ;
8853 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
8854 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
8855 END IF;
8856 app_exception.raise_exception;
8857
8858 END copy_req_tax_to_po;
8859 --Added by Wenqiong on Feb 16 2013 End
8860 END jai_po_proc_pkg;