DBA Data[Home] [Help]

PACKAGE BODY: APPS.JAI_GST_TAX_DEFAULTATION_PKG

Source


1 PACKAGE BODY jai_gst_tax_defaultation_pkg AS
2   /* $Header: jai_gst_tax_dflt.plb 120.4 2010/10/11 08:44:58 pezheng noship $ */
3 
4 
5 
6 --==========================================================================
7 --  FUNCTION NAME:
8 --    get_organization_state          Private
9 --
10 --  DESCRIPTION:
11 --    Get state code of Organization+Location setup
12 --
13 --   Return:
14 --    Varchar2
15 --     The state code
16 --
17 --  ER NAME/BUG#
18 --    GST Enhancement/ bug 10043656
19 --
20 --  PARAMETERS:
21 --      In:  pn_organization_id       Organization ID
22 --           pn_location_id           Location ID
23 --
24 --
25 --  DESIGN REFERENCES:
26 --       <<TDD_12_2_FIN_JAI_Enhanced_GST.doc>>
27 --
28 --  CALL FROM
29 --
30 --
31 --  CHANGE HISTORY:
32 --  20-Sep-2010                Created by peng.zheng
33 --==========================================================================
34 FUNCTION get_organization_state(pn_organization_id IN NUMBER,
35                                 pn_location_id     IN NUMBER)
36     RETURN VARCHAR2 IS
37 
38     CURSOR cur_get_master_org_id IS
39       SELECT master_organization_id FROM oe_system_parameters;
40 
41     CURSOR cur_state(pn_organization_id IN NUMBER) IS
42       SELECT jrp.state_code state_code
43         FROM JAI_RGM_PARTIES jrp, JAI_RGM_DEFINITIONS jrd
44        WHERE jrp.ORGANIZATION_ID = pn_organization_id
45          AND jrp.ORGANIZATION_TYPE = 'IO' --inventory organization
46          AND jrd.regime_id = jrp.regime_id
47          AND jrd.regime_code = jai_constants.cgst_regime
48          AND jrp.location_id = pn_location_id;
49 
50     CURSOR cur_sgst_state(pn_organization_id IN NUMBER) IS
51       SELECT jrp.state_code state_code
52         FROM JAI_RGM_PARTIES jrp, JAI_RGM_DEFINITIONS jrd
53        WHERE jrp.ORGANIZATION_ID = pn_organization_id
54          AND jrp.ORGANIZATION_TYPE = 'IO' --inventory organization
55          AND jrd.regime_id = jrp.regime_id
56          AND jrd.regime_code = jai_constants.sgst_regime
57          AND jrp.location_id = pn_location_id;
58 
59     v_organization_id NUMBER;
60     v_state           JAI_RGM_PARTIES.state_code%TYPE;
61   BEGIN
62     IF pn_organization_id IS NULL THEN
63       OPEN cur_get_master_org_id;
64       FETCH cur_get_master_org_id
65         INTO v_organization_id;
66       CLOSE cur_get_master_org_id;
67     ELSE
68       v_organization_id := pn_organization_id;
69     END IF;
70 
71     OPEN cur_state(v_organization_id);
72     FETCH cur_state
73       INTO v_state;
74     CLOSE cur_state;
75 
76     --If not found in CGST, get from SGST
77     IF v_state IS NULL THEN
78       OPEN cur_sgst_state(v_organization_id);
79       FETCH cur_sgst_state
80         INTO v_state;
81       CLOSE cur_sgst_state;
82     END IF;
83 
84     RETURN v_state;
85 
86   END get_organization_state;
87 
88 --==========================================================================
89 --  FUNCTION NAME:
90 --    get_org_state          Private
91 --
92 --  DESCRIPTION:
93 --    Get state code of org setup
94 --
95 --   Return:
96 --    Varchar2
97 --     The state code
98 --
99 --  ER NAME/BUG#
100 --    GST Enhancement/ bug 10043656
101 --
102 --  PARAMETERS:
103 --      In:  pn_org_id       Org ID
104 --
105 --
106 --  DESIGN REFERENCES:
107 --       <<TDD_12_2_FIN_JAI_Enhanced_GST.doc>>
108 --
109 --  CALL FROM
110 --
111 --
112 --  CHANGE HISTORY:
113 --  20-Sep-2010                Created by peng.zheng
114 --==========================================================================
115 FUNCTION get_org_state(pn_org_id IN NUMBER) RETURN VARCHAR2 IS
116 
117     CURSOR cur_state IS
118       SELECT jrp.state_code state_code
119         FROM JAI_RGM_PARTIES jrp, JAI_RGM_DEFINITIONS jrd
120        WHERE jrp.ORGANIZATION_ID = pn_org_id
121          AND jrp.ORGANIZATION_TYPE = 'OU' --operating unit
122          AND jrd.regime_id = jrp.regime_id
123          AND jrd.regime_code = jai_constants.cgst_regime
124          AND jrp.state_code IS NOT NULL;
125 
126     CURSOR cur_sgst_state IS
127       SELECT jrp.state_code state_code
128         FROM JAI_RGM_PARTIES jrp, JAI_RGM_DEFINITIONS jrd
129        WHERE jrp.ORGANIZATION_ID = pn_org_id
130          AND jrp.ORGANIZATION_TYPE = 'OU' --operating unit
131          AND jrd.regime_id = jrp.regime_id
132          AND jrd.regime_code = jai_constants.sgst_regime
133          AND jrp.state_code IS NOT NULL;
134 
135     v_state JAI_RGM_PARTIES.state_code%TYPE;
136   BEGIN
137 
138     OPEN cur_state;
139     FETCH cur_state
140       INTO v_state;
141     CLOSE cur_state;
142 
143     IF v_state IS NULL THEN
144       OPEN cur_sgst_state;
145       FETCH cur_sgst_state
146         INTO v_state;
147       CLOSE cur_sgst_state;
148 
149     END IF;
150 
151     RETURN v_state;
152 
153   END get_org_state;
154 
155 --==========================================================================
156 --  FUNCTION NAME:
157 --    get_cust_inter_flag          Private
158 --
159 --  DESCRIPTION:
160 --  to check if transaction is inter-state or not
161 --   compare the state of customer/site and location setup
162 --   Return:
163 --    Varchar2
164 --     Y: inter-state
165 --     N: intra-state
166 --
167 --  ER NAME/BUG#
168 --    GST Enhancement/ bug 10043656
169 --
170 --  PARAMETERS:
171 --      In:  pn_organization_id       Organization ID
172 --           pn_location_id           Location ID
173 --           pn_customer_id           Customer ID
174 --           pn_ship_to_site_use_id    Ship to site use id
175 --
176 --
177 --  DESIGN REFERENCES:
178 --       <<TDD_12_2_FIN_JAI_Enhanced_GST.doc>>
179 --
180 --  CALL FROM
181 --
182 --
183 --  CHANGE HISTORY:
184 --  20-Sep-2010                Created by peng.zheng
185 --==========================================================================
186   FUNCTION get_cust_inter_flag(pn_organization_id     IN NUMBER,
187                                pn_location_id         IN NUMBER,
188                                pn_customer_id         IN NUMBER,
189                                pn_ship_to_site_use_id IN NUMBER)
190     RETURN VARCHAR2 IS
191 
192     -- to get address_id
193     CURSOR cur_address IS
194       SELECT cust_acct_site_id address_id
195         FROM hz_cust_site_uses_all A
196        WHERE A.site_use_id = pn_ship_to_site_use_id;
197 
198     -- to get cust state
199     CURSOR cur_state(p_address_id IN NUMBER DEFAULT 0) IS
200       SELECT STATE_CODE
201         FROM JAI_CMN_CUS_ADDRESSES a
202        WHERE A.customer_id = pn_customer_id
203          AND A.address_id = p_address_id;
204 
205     v_address_id         NUMBER;
206     v_cust_state         VARCHAR2(120);
207     v_organization_state VARCHAR2(120);
208 
209   BEGIN
210 
211     OPEN cur_address;
212     FETCH cur_address
213       INTO v_address_id;
214     CLOSE cur_address;
215 
216     IF v_address_id IS NOT NULL THEN
217       OPEN cur_state(v_address_id);
218       FETCH cur_state
219         INTO v_cust_state;
220       CLOSE cur_state;
221     END IF;
222 
223     IF v_cust_state IS NULL THEN
224       OPEN cur_state(0);
225       FETCH cur_state
226         INTO v_cust_state;
227       CLOSE cur_state;
228     END IF;
229 
230     v_organization_state := get_organization_state(pn_organization_id,
231                                                    pn_location_id);
232 
233     IF v_cust_state IS NOT NULL AND v_organization_state IS NOT NULL THEN
234       IF v_cust_state = v_organization_state THEN
235         RETURN 'N';
236       ELSE
237         RETURN 'Y';
238       END IF;
239     ELSE
240       RETURN NULL;
241     END IF;
242 
243   END get_cust_inter_flag;
244 
245 --==========================================================================
246 --  FUNCTION NAME:
247 --    get_vendor_inter_flag          Private
248 --
249 --  DESCRIPTION:
250 --  to check if transaction is inter-state or not
251 --   compare the state of vendor/site and location setup
252 --   Return:
253 --    Varchar2
254 --     Y: inter-state
255 --     N: intra-state
256 --
257 --  ER NAME/BUG#
258 --    GST Enhancement/ bug 10043656
259 --
260 --  PARAMETERS:
261 --      In:  pn_organization_id       Organization ID
262 --           pn_location_id           Location ID
263 --           pn_vendor_id             Vendor ID
264 --           pn_vendor_site_id        Vendor Site ID
265 --
266 --
267 --  DESIGN REFERENCES:
268 --       <<TDD_12_2_FIN_JAI_Enhanced_GST.doc>>
269 --
270 --  CALL FROM
271 --
272 --
273 --  CHANGE HISTORY:
274 --  20-Sep-2010                Created by peng.zheng
275 --==========================================================================
276 
277   FUNCTION get_vendor_inter_flag(pn_organization_id IN NUMBER,
278                                  pn_location_id     IN NUMBER,
279                                  pn_vendor_id       NUMBER,
280                                  pn_vendor_site_id  NUMBER) RETURN VARCHAR2 IS
281 
282     -- to get state
283     CURSOR cur_state(pn_vendor_site_id IN NUMBER DEFAULT 0) IS
284       SELECT STATE_CODE
285         FROM JAI_CMN_VENDOR_SITES A
286        WHERE a.vendor_id = pn_vendor_id
287          AND a.vendor_site_id = pn_vendor_site_id;
288 
289     v_vendor_state       VARCHAR2(120);
290     v_organization_state VARCHAR2(120);
291 
292   BEGIN
293 
294     IF pn_vendor_site_id IS NOT NULL THEN
295       OPEN cur_state(pn_vendor_site_id);
296       FETCH cur_state
297         INTO v_vendor_state;
298       CLOSE cur_state;
299     END IF;
300 
301     IF v_vendor_state IS NULL THEN
302       OPEN cur_state(0);
303       FETCH cur_state
304         INTO v_vendor_state;
305       CLOSE cur_state;
306     END IF;
307 
308     v_organization_state := get_organization_state(pn_organization_id,
309                                                    pn_location_id);
310 
311     IF v_vendor_state IS NOT NULL AND v_organization_state IS NOT NULL THEN
312       IF v_vendor_state = v_organization_state THEN
313         RETURN 'N';
314       ELSE
315         RETURN 'Y';
316       END IF;
317     ELSE
318       RETURN NULL;
319     END IF;
320 
321   END get_vendor_inter_flag;
322 
323 --==========================================================================
324 --  FUNCTION NAME:
325 --    get_vendor_inter_by_ou          Private
326 --
327 --  DESCRIPTION:
328 --  to check if transaction is inter-state or not
329 --   compare the state of vendor/site and org setup
330 --   Return:
331 --    Varchar2
332 --     Y: inter-state
333 --     N: intra-state
334 --
335 --  ER NAME/BUG#
336 --    GST Enhancement/ bug 10043656
337 --
338 --  PARAMETERS:
339 --      In:
340 --           pn_org_id                 Org ID
341 --           pn_vendor_id             Vendor ID
342 --           pn_vendor_site_id        Vendor Site ID
343 --
344 --
345 --  DESIGN REFERENCES:
346 --       <<TDD_12_2_FIN_JAI_Enhanced_GST.doc>>
347 --
348 --  CALL FROM
349 --
350 --
351 --  CHANGE HISTORY:
352 --  20-Sep-2010                Created by peng.zheng
353 --==========================================================================
354 
355   FUNCTION get_vendor_inter_by_ou(pn_org_id IN NUMBER,
356                                   pn_vendor_id       NUMBER,
357                                   pn_vendor_site_id  NUMBER) RETURN VARCHAR2 IS
358 
359     -- to get state
360     CURSOR cur_state(pn_vendor_site_id IN NUMBER DEFAULT 0) IS
361       SELECT STATE_CODE
362         FROM JAI_CMN_VENDOR_SITES A
363        WHERE a.vendor_id = pn_vendor_id
364          AND a.vendor_site_id = pn_vendor_site_id;
365 
366     v_vendor_state VARCHAR2(120);
367     v_org_state    VARCHAR2(120);
368 
369   BEGIN
370 
371     IF pn_vendor_site_id IS NOT NULL THEN
372       OPEN cur_state(pn_vendor_site_id);
373       FETCH cur_state
374         INTO v_vendor_state;
375       CLOSE cur_state;
376     END IF;
377 
378     IF v_vendor_state IS NULL THEN
379       OPEN cur_state(0);
380       FETCH cur_state
381         INTO v_vendor_state;
382       CLOSE cur_state;
383     END IF;
384 
385     v_org_state := get_org_state(pn_org_id);
386 
387     IF v_vendor_state IS NOT NULL AND v_org_state IS NOT NULL THEN
388       IF v_vendor_state =
389          v_org_state THEN
390         RETURN 'N';
391       ELSE
392         RETURN 'Y';
393       END IF;
394     ELSE
395       RETURN NULL;
396     END IF;
397 
398   END get_vendor_inter_by_ou;
399 
400 
401 --==========================================================================
402 --  PROCEDURE NAME:
403 --    jai_gst_cust_default_taxes          Public
404 --
405 --  DESCRIPTION:
406 --    To get a customer/site's tax default category
407 --
408 --  ER NAME/BUG#
409 --    GST Enhancement/ bug 10043656
410 --
411 --  PARAMETERS:
412 --      In:  pn_organization_id       1st Party Organization ID
413 --           pn_location_id           1st Party Location ID
414 --           pn_customer_id           Customer ID
415 --           pn_ship_to_site_use_id    Ship to site use id
416 --           pn_inventory_item_id       Inventory Item
417 --           pd_transaction_date        Transaction date, used to compare with the tax category's start date and end date.
418 --  In/Out:  pn_tax_category_id         The default tax category ID
419 --
420 --
421 --  DESIGN REFERENCES:
422 --       <<TDD_12_2_FIN_JAI_Enhanced_GST.doc>>
423 --
424 --  CALL FROM
425 --       JAI_AR_RCTLA_TRIGGER_PKG
426 --       JAI_AR_RCTA_TRIGGER_PKG
427 --       JAI_MTL_TRXS_PKG
428 --       JAI_OE_OLA_TRIGGER_PKG
429 --
430 --
431 --  CHANGE HISTORY:
432 --  20-Sep-2010                Created by peng.zheng
433 --==========================================================================
434 PROCEDURE jai_gst_cust_default_taxes(pn_organization_id     IN NUMBER,
435                                        pn_location_id         IN NUMBER,
436                                        pn_customer_id         IN NUMBER,
437                                        pn_ship_to_site_use_id IN NUMBER,
438                                        pn_inventory_item_id   IN NUMBER,
439                                        pd_transaction_date    IN DATE,
440                                        pn_tax_category_id     IN OUT NOCOPY NUMBER) IS
441     v_address_id        NUMBER;
442     v_tax_category_list VARCHAR2(30);
443     v_tax_category_id   NUMBER;
444 
445     lv_object_name CONSTANT VARCHAR2(61) := 'jai_gst_tax_defaultation_pkg.jai_gst_cust_default_taxes';
446 
447     -- to get address_id
448     CURSOR address_cur(pn_ship_to_site_use_id IN NUMBER) IS
449       SELECT cust_acct_site_id address_id
450         FROM hz_cust_site_uses_all A
451        WHERE A.site_use_id = pn_ship_to_site_use_id;
452 
453     -- to get tax_category_list
454     CURSOR tax_catg_list_cur(pn_customer_id IN NUMBER, p_address_id IN NUMBER DEFAULT 0) IS
455       SELECT tax_category_list
456         FROM JAI_CMN_CUS_ADDRESSES a
457        WHERE A.customer_id = pn_customer_id
458          AND A.address_id = p_address_id;
459 
460     CURSOR tax_catg_id_cur(p_tax_category_list IN VARCHAR2, pn_inventory_item_id IN NUMBER, p_inter_flag IN VARCHAR2) IS
461       SELECT t.tax_category_id
462         FROM JAI_INV_ITM_TAXCTG_DTLS a, JAI_CMN_TAX_CTGS_ALL t
463        WHERE pd_transaction_date >= nvl(t.start_date, pd_transaction_date)
464          AND pd_transaction_date < trunc(nvl(t.end_date, pd_transaction_date ) +1)
465          AND nvl(t.INTER_STATE_FLAG, 'N') = p_inter_flag
466          AND t.tax_category_id = a.tax_category_id
467          AND a.tax_category_list = p_tax_category_list
468          AND a.inventory_item_id = pn_inventory_item_id;
469 
470     v_inter_flag VARCHAR2(1);
471 
472   BEGIN
473 
474     OPEN address_cur(pn_ship_to_site_use_id);
475     FETCH address_cur
476       INTO v_address_id;
477     CLOSE address_cur;
478 
479     IF pn_customer_id IS NOT NULL AND v_address_id IS NOT NULL THEN
480       OPEN tax_catg_list_cur(pn_customer_id, v_address_id);
481       FETCH tax_catg_list_cur
482         INTO v_tax_category_list;
483       CLOSE tax_catg_list_cur;
484     END IF;
485 
486     IF v_tax_category_list IS NULL THEN
487       OPEN tax_catg_list_cur(pn_customer_id, 0);
488       FETCH tax_catg_list_cur
489         INTO v_tax_category_list;
490       CLOSE tax_catg_list_cur;
491     END IF;
492 
493     v_inter_flag := get_cust_inter_flag(pn_organization_id,
494                                         pn_location_id,
495                                         pn_customer_id,
496                                         pn_ship_to_site_use_id);
497 
498     IF v_inter_flag IS NOT NULL THEN
499 
500 
501       IF v_tax_category_list IS NOT NULL THEN
502         OPEN tax_catg_id_cur(v_tax_category_list,
503                              pn_inventory_item_id,
504                              v_inter_flag); --added by peng.zheng for bug 10043656
505         FETCH tax_catg_id_cur
506           INTO v_tax_category_id;
507         CLOSE tax_catg_id_cur;
508 
509       END IF;
510 
511       IF v_tax_category_id IS NULL THEN
512 
513 
514         jai_gst_org_default_taxes(pn_organization_id,
515                                 pn_location_id,
516                                 pn_customer_id,
517                                 pn_ship_to_site_use_id,
518                                 'C',
519                                 pn_inventory_item_id,
520                                 pd_transaction_date,
521                                 v_tax_category_id);
522 
523       END IF;
524     END IF; --added by peng.zheng for bug 10043656
525 
526     pn_tax_category_id := v_tax_category_id;
527 
528 
529   EXCEPTION
530     WHEN OTHERS THEN
531       FND_MESSAGE.SET_NAME('JA', 'JAI_EXCEPTION_OCCURED');
532       FND_MESSAGE.SET_TOKEN('JAI_PROCESS_MSG',
533                             lv_object_name || '. Err:' || SQLERRM);
534       app_exception.raise_exception;
535 
536   END jai_gst_cust_default_taxes;
537 
538 
539 --==========================================================================
540 --  PROCEDURE NAME:
541 --    jai_gst_vendor_default_taxes          Public
542 --
543 --  DESCRIPTION:
544 --    To get a venodr/site's tax category
545 --
546 --  ER NAME/BUG#
547 --    GST Enhancement/ bug 10043656
548 --
549 --  PARAMETERS:
550 --      In:  pn_organization_id       1st Party Organization ID
551 --           pn_location_id           1st Party Location ID
552 --           pn_vendor_id             Vendor ID
553 --           pn_vendor_site_id        Vendor Site ID
554 --           pn_inventory_item_id       Inventory Item
555 --           pd_transaction_date        Transaction date, used to compare with the tax category's start date and end date.
556 --  In/Out:  pn_tax_category_id         The default tax category ID
557 --
558 --
559 --  DESIGN REFERENCES:
560 --       <<TDD_12_2_FIN_JAI_Enhanced_GST.doc>>
561 --
562 --  CALL FROM
563 --       JAI_PO_RLA_TRIGGER_PKG
564 --       jai_po_tax_pkg
565 --       JAI_MTL_TRXS_PKG
566 --
567 --
568 --  CHANGE HISTORY:
569 --  20-Sep-2010                Created by peng.zheng
570 --==========================================================================
571 PROCEDURE jai_gst_vendor_default_taxes(pn_organization_id   IN NUMBER,
572                                          pn_location_id       IN NUMBER,
573                                          pn_vendor_id         IN NUMBER,
574                                          pn_vendor_site_id    IN NUMBER,
575                                          pn_inventory_item_id IN NUMBER,
576                                          pd_transaction_date  IN DATE,
577                                          pn_tax_category_id   IN OUT NOCOPY NUMBER) IS
578 
579     v_tax_category_list VARCHAR2(30);
580     v_tax_category_id   NUMBER;
581 
582     v_inter_flag VARCHAR2(1);
583 
584     lv_object_name CONSTANT VARCHAR2(61) := 'jai_gst_tax_defaultation_pkg.jai_gst_vendor_default_taxes';
585 
586     -- to get tax_category_list
587     CURSOR tax_catg_list_cur(pn_vendor_id IN NUMBER, pn_vendor_site_id IN NUMBER DEFAULT 0) IS
588       SELECT tax_category_list
589         FROM JAI_CMN_VENDOR_SITES A
590        WHERE a.vendor_id = pn_vendor_id
591          AND a.vendor_site_id = pn_vendor_site_id;
592 
593     -- to get tax_category_id
594     CURSOR tax_catg_id_cur(p_tax_category_list IN VARCHAR2, pn_inventory_item_id IN NUMBER, p_inter_flag IN VARCHAR2) IS
595       SELECT t.tax_category_id
596         FROM JAI_INV_ITM_TAXCTG_DTLS a, JAI_CMN_TAX_CTGS_ALL t
597        WHERE pd_transaction_date >= nvl(t.start_date, pd_transaction_date)
598          AND pd_transaction_date < trunc(nvl(t.end_date, pd_transaction_date ) +1)
599          AND nvl(t.INTER_STATE_FLAG, 'N') = p_inter_flag
600          AND a.tax_category_id = t.tax_category_id
601          AND a.tax_category_list = p_tax_category_list
602          AND a.inventory_item_id = pn_inventory_item_id;
603 
604   BEGIN
605 
606     IF pn_vendor_id IS NOT NULL AND pn_vendor_site_id IS NOT NULL THEN
607       OPEN tax_catg_list_cur(pn_vendor_id, pn_vendor_site_id);
608       FETCH tax_catg_list_cur
609         INTO v_tax_category_list;
610       CLOSE tax_catg_list_cur;
611     END IF;
612 
613     IF v_tax_category_list IS NULL THEN
614       OPEN tax_catg_list_cur(pn_vendor_id, 0);
615       FETCH tax_catg_list_cur
616         INTO v_tax_category_list;
617       CLOSE tax_catg_list_cur;
618     END IF;
619 
620     v_inter_flag := get_vendor_inter_flag(pn_organization_id,
621                                           pn_location_id,
622                                           pn_vendor_id,
623                                           pn_vendor_site_id);
624     IF v_inter_flag IS NOT NULL THEN
625 
626       IF v_tax_category_list IS NOT NULL THEN
627         OPEN tax_catg_id_cur(v_tax_category_list,
628                              pn_inventory_item_id,
629                              v_inter_flag);
630         FETCH tax_catg_id_cur
631           INTO v_tax_category_id;
632         CLOSE tax_catg_id_cur;
633       END IF;
634 
635       IF NVL(v_tax_category_id, 0) = 0 THEN
636 
637         jai_gst_org_default_taxes(pn_organization_id,
638                                 pn_location_id,
639                                 pn_vendor_id,
640                                 pn_vendor_site_id,
641                                 'V',
642                                 pn_inventory_item_id,
643                                 pd_transaction_date,
644                                 v_tax_category_id);
645 
646       END IF;
647     END IF; --end IF v_inter_flag IS NOT NULL
648 
649     pn_tax_category_id := v_tax_category_id;
650 
651   EXCEPTION
652     WHEN OTHERS THEN
653       FND_MESSAGE.SET_NAME('JA', 'JAI_EXCEPTION_OCCURED');
654       FND_MESSAGE.SET_TOKEN('JAI_PROCESS_MSG',
655                             lv_object_name || '. Err:' || SQLERRM);
656       app_exception.raise_exception;
657 
658   END jai_gst_vendor_default_taxes;
659 
660 
661 --==========================================================================
662 --  PROCEDURE NAME:
663 --    jai_gst_org_default_taxes          Public
664 --
665 --  DESCRIPTION:
666 --    If not get category from customer or vendor's setup, this procedure will using tax classification to fetch tax category
667 --
668 --  ER NAME/BUG#
669 --    GST Enhancement/ bug 10043656
670 --
671 --  PARAMETERS:
672 --      In:  pn_organization_id       Organization ID
673 --           pn_location_id           Location ID
674 --           pn_party_id             Customer_id/vendor_id
675 --           pn_party_site_id        ship_to_site_use_id when SO(NOT customer_site_id)/vendor_site_id when PO
676 --           pv_party_type             C:Customer/V:Vendor
677 --           pn_inventory_item_id     Inventory Item
678 --           pd_transaction_date      Transaction date, used to compare with the tax category's start date and end date.
679 --  In/Out:  pn_tax_category_id       The default tax category ID
680 --
681 --
682 --  DESIGN REFERENCES:
683 --       <<TDD_12_2_FIN_JAI_Enhanced_GST.doc>>
684 --
685 --  CALL FROM
686 --       JAI_PO_RLA_TRIGGER_PKG
687 --       JAI_AR_RCTLA_TRIGGER_PKG
688 --       JAI_AR_RCTA_TRIGGER_PKG
689 --       JAI_OE_OLA_TRIGGER_PKG
690 --
691 --
692 --  CHANGE HISTORY:
693 --  20-Sep-2010                Created by peng.zheng
694 --==========================================================================
695 
696   PROCEDURE jai_gst_org_default_taxes(pn_organization_id   IN NUMBER,
697                                       pn_location_id       IN NUMBER,
698                                       pn_party_id          IN NUMBER,
699                                       pn_party_site_id     IN NUMBER,
700                                       pv_party_type        IN VARCHAR2,
701                                       pn_inventory_item_id IN NUMBER,
702                                       pd_transaction_date  IN DATE,
703                                       pn_tax_category_id   IN OUT NOCOPY NUMBER) IS
704 
705     lv_object_name CONSTANT VARCHAR2(61) := 'jai_gst_tax_defaultation_pkg.jai_gst_org_default_taxes';
706 
707     v_operating_unit NUMBER;
708 
709     CURSOR cur_get_master_org_id IS
710       SELECT org_id operating_unit, master_organization_id
711         FROM oe_system_parameters;
712 
713     CURSOR operating_unit_cur(c_org_id NUMBER) IS
714       SELECT operating_unit
715         FROM org_organization_definitions
716        WHERE organization_id = NVL(c_org_id, 0);
717 
718     rec_cur_get_master_org_id CUR_GET_MASTER_ORG_ID%ROWTYPE;
719 
720     --get tax_classification, if cgst not found, get from SGST
724        WHERE a.attribute_code = jai_constants.tax_classification
721     CURSOR tax_classification_cur(v_org_id IN NUMBER, v_inventory_item_id IN NUMBER) IS
722       SELECT a.attribute_value
723         FROM JAI_RGM_ITM_TMPL_ATTRS a, JAI_RGM_ITM_REGNS r
725          AND r.RGM_ITEM_REGNS_ID = a.RGM_ITEM_REGNS_ID
726          AND r.inventory_item_id = v_inventory_item_id
727          AND r.organization_id = v_org_id
728          AND r.regime_code = jai_constants.cgst_regime;
729     CURSOR sgst_tax_classification_cur(v_org_id IN NUMBER, v_inventory_item_id IN NUMBER) IS
730       SELECT a.attribute_value
731         FROM JAI_RGM_ITM_TMPL_ATTRS a, JAI_RGM_ITM_REGNS r
732        WHERE a.attribute_code = jai_constants.tax_classification
733          AND r.RGM_ITEM_REGNS_ID = a.RGM_ITEM_REGNS_ID
734          AND r.inventory_item_id = v_inventory_item_id
735          AND r.organization_id = v_org_id
736          AND r.regime_code = jai_constants.sgst_regime;
737 
738     v_inter_flag         VARCHAR2(1);
739     v_tax_classification VARCHAR2(240);
740     v_organization_id    NUMBER;
741 
742   BEGIN
743 
744     IF pn_organization_id IS NULL THEN
745       OPEN cur_get_master_org_id;
746       FETCH cur_get_master_org_id
747         INTO rec_cur_get_master_org_id;
748       CLOSE cur_get_master_org_id;
749       v_operating_unit := rec_cur_get_master_org_id.operating_unit;
750     ELSE
751 
752       OPEN operating_unit_cur(pn_organization_id);
753       FETCH operating_unit_cur
754         INTO v_operating_unit;
755       CLOSE operating_unit_cur;
756     END IF;
757 
758     v_operating_unit := NVL(v_operating_unit, 0);
759     v_organization_id := nvl(pn_organization_id, rec_cur_get_master_org_id.master_organization_id);
760 
761     IF pv_party_type = 'C' THEN
762       v_inter_flag := get_cust_inter_flag(v_organization_id,
763                                           pn_location_id,
764                                           pn_party_id,
765                                           pn_party_site_id);
766     ELSIF pv_party_type = 'V' THEN
767       v_inter_flag := get_vendor_inter_flag(v_organization_id,
768                                             pn_location_id,
769                                             pn_party_id,
770                                             pn_party_site_id);
771     END IF;
772 
773     IF v_inter_flag IS NOT NULL THEN
774       OPEN tax_classification_cur(v_organization_id, pn_inventory_item_id);
775       FETCH tax_classification_cur
776         INTO v_tax_classification;
777       CLOSE tax_classification_cur;
778 
779       IF v_tax_classification IS NULL THEN
780         OPEN sgst_tax_classification_cur(v_organization_id,
781                                          pn_inventory_item_id);
782         FETCH sgst_tax_classification_cur
783           INTO v_tax_classification;
784         CLOSE sgst_tax_classification_cur;
785 
786       END IF;
787 
788       IF v_tax_classification IS NOT NULL THEN
789         BEGIN
790           SELECT b.tax_category_id
791             INTO pn_tax_category_id
792             FROM JAI_CMN_TAX_CTGS_ALL b
793            WHERE pd_transaction_date >= nvl(b.start_date, pd_transaction_date)
794              AND pd_transaction_date < trunc(nvl(b.end_date, pd_transaction_date ) +1)
795              AND nvl(b.inter_state_flag, 'N') = v_inter_flag
796              AND b.tax_classification = v_tax_classification
797              AND b.org_id = v_operating_unit;
798         EXCEPTION
799           WHEN OTHERS THEN
800             --Not normally found, no_data_found or too_much_record or others.
801             --pn_tax_category_id remains NULL.
802             pn_tax_category_id := NULL;
803         END;
804 
805       END IF;
806     END IF; --IF v_inter_flag IS NOT NULL
807 
808   EXCEPTION
809     WHEN OTHERS THEN
810       FND_MESSAGE.SET_NAME('JA', 'JAI_EXCEPTION_OCCURED');
811       FND_MESSAGE.SET_TOKEN('JAI_PROCESS_MSG',
812                             lv_object_name || '. Err:' || SQLERRM);
813       app_exception.raise_exception;
814 
815   END jai_gst_org_default_taxes;
816 
817 END jai_gst_tax_defaultation_pkg;