DBA Data[Home] [Help]

PACKAGE BODY: APPS.ZX_REG_REL_PUB

Source


1 PACKAGE BODY ZX_REG_REL_PUB AS
2 /* $Header: zxcregrelpubb.pls 120.19 2006/03/16 07:48:14 hdudeja ship $ */
3 
4 /* ==================================================================================================*
5  | PROCEDURE insert_rel : Inserts records in the Tax Regime relations table and builds the hierarchy  |
6  |			  Initially for the given child and parent a record is inserted with level 0  |
7  |                        Further a hierarchy is created for the child based on the parents hierarchy.|
8  * ==================================================================================================*/
9 PROCEDURE insert_rel
10 (
11         x_return_status  OUT NOCOPY VARCHAR2,
12         p_child          IN  VARCHAR2,
13         p_parent         IN VARCHAR2,
14 	X_CREATED_BY in NUMBER,
15 	X_CREATION_DATE in DATE,
16 	X_LAST_UPDATED_BY in NUMBER,
17 	X_LAST_UPDATE_DATE in DATE,
18 	X_LAST_UPDATE_LOGIN in NUMBER,
19 	X_REQUEST_ID in NUMBER,
20 	X_PROGRAM_ID in NUMBER,
21 	X_PROGRAM_LOGIN_ID in NUMBER,
22 	X_PROGRAM_APPLICATION_ID in NUMBER
23 	)
24 IS
25 CURSOR C1 is
26           SELECT
27           PARENT_REGIME_CODE,
28           PARENT_REG_LEVEL+1 as lev
29           from zx_regime_relations
30           WHERE REGIME_CODE = p_parent;
31 R1  C1%rowtype;
32 l_level Number := 0;
33 BEGIN
34    --  Initialize API return status to success
35 	x_return_status := FND_API.G_RET_STS_SUCCESS;
36    --   Insert a record with level zero
37         insert into zx_regime_relations (regime_rel_id,
38                                         regime_code,
39                                         parent_regime_code,
40                                         parent_reg_level,
41 					CREATED_BY,
42 					CREATION_DATE,
43 					LAST_UPDATED_BY,
44 					LAST_UPDATE_DATE,
45 					LAST_UPDATE_LOGIN,
46 					REQUEST_ID,
47 					PROGRAM_ID,
48 					PROGRAM_LOGIN_ID,
49 					PROGRAM_APPLICATION_ID)
50                                 values (zx_regime_relations_s.NEXTVAL,
51                                         p_child,
52                                         p_parent,
53                                         l_level,
54 					X_CREATED_BY,
55 					X_CREATION_DATE,
56 					X_LAST_UPDATED_BY,
57 					X_LAST_UPDATE_DATE,
58 					X_LAST_UPDATE_LOGIN,
59 					X_REQUEST_ID,
60 					X_PROGRAM_ID,
61 					X_PROGRAM_LOGIN_ID,
62 					X_PROGRAM_APPLICATION_ID);
63 
64   OPEN C1;
65   LOOP
66         FETCH C1 INTO R1;
67 	IF C1%NOTFOUND THEN
68 	   exit;
69 	END IF;
70    --   Generating the hierarchy for the child based on the parent hierarchy
71 	insert into zx_regime_relations (regime_rel_id,                                                                                                             regime_code,
72                                         parent_regime_code,
73                                         parent_reg_level,
74 					CREATED_BY,
75 					CREATION_DATE,
76 					LAST_UPDATED_BY,
77 					LAST_UPDATE_DATE,
78 					LAST_UPDATE_LOGIN,
79 					REQUEST_ID,
80 					PROGRAM_ID,
81 					PROGRAM_LOGIN_ID,
82 					PROGRAM_APPLICATION_ID)
83                                 values (zx_regime_relations_s.NEXTVAL,
84                                         p_child,
85                                         R1.PARENT_REGIME_CODE,
86                                         R1.LEV,
87 					X_CREATED_BY,
88 					X_CREATION_DATE,
89 					X_LAST_UPDATED_BY,
90 					X_LAST_UPDATE_DATE,
91 					X_LAST_UPDATE_LOGIN,
92 					X_REQUEST_ID,
93 					X_PROGRAM_ID,
94 					X_PROGRAM_LOGIN_ID,
95 					X_PROGRAM_APPLICATION_ID);
96 
97    END LOOP;
98    close c1;
99    EXCEPTION
100      	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
101      	 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
102 	WHEN OTHERS THEN
103 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
104 END insert_rel;
105 
106 /* ================================================================================================*
107 | PROCEDURE update_rel : Updates records in Tax Regime relations table and rebuilds the hierarchy  |
108 |			 Initially for the given child, all records are deleted. The hierarchy is  |
109 |                        rebuild for the child. This process is repeated recursively for all the   |
110 |                        children of the given child.                                              |
111 |                                                               			           |
112  * ===============================================================================================*/
113 
114 PROCEDURE update_rel
115 (
116         x_return_status  OUT NOCOPY VARCHAR2,
117         p_child          IN  VARCHAR2,
118         p_parent         IN  VARCHAR2 default null,
119 	X_LAST_UPDATED_BY in NUMBER,
120 	X_LAST_UPDATE_DATE in DATE,
121 	X_LAST_UPDATE_LOGIN in NUMBER,
122 	X_REQUEST_ID in NUMBER,
123 	X_PROGRAM_ID in NUMBER,
124 	X_PROGRAM_LOGIN_ID in NUMBER,
125 	X_PROGRAM_APPLICATION_ID in NUMBER
126 	)
127 IS
128 CURSOR C1 is
129        SELECT
130        REGIME_CODE ,
131        PARENT_REGIME_CODE
132        FROM  zx_regime_relations
133        WHERE PARENT_REGIME_CODE = p_child  AND
134        PARENT_REG_LEVEL = 0;
135  R1           C1%rowtype;
136  l_err_status VARCHAR2(1) ;
137 BEGIN
138      --  Initialize API return status to success
139 	x_return_status := FND_API.G_RET_STS_SUCCESS;
140      -- Delete all the current records of the child
141         Delete
142         from zx_regime_relations
143         where regime_code = p_child;
144      -- Regenerate the child hierarchy with the new parent if the  p_parent is not null
145        IF p_parent iS NOT NULL	THEN
146 	   insert_rel(l_err_status,p_child,p_parent,
147 	        -- for created by and created date use the same update by and update date
148 	        X_LAST_UPDATED_BY, X_LAST_UPDATE_DATE,
149 		X_LAST_UPDATED_BY, X_LAST_UPDATE_DATE,
150 		X_LAST_UPDATE_LOGIN, X_REQUEST_ID, X_PROGRAM_ID,
151 		X_PROGRAM_LOGIN_ID, X_PROGRAM_APPLICATION_ID);
152        END IF;
153      -- Repeat the update process for all the children of the regime p_child
154 OPEN C1;
155 LOOP
156 	FETCH C1 INTO R1;
157 	IF C1%NOTFOUND THEN
158 		exit;
159 	END IF;
160 	update_rel(l_err_status,R1.REGIME_CODE,R1.PARENT_REGIME_CODE,
161 		X_LAST_UPDATED_BY, X_LAST_UPDATE_DATE,
162 		X_LAST_UPDATE_LOGIN, X_REQUEST_ID, X_PROGRAM_ID,
163 		X_PROGRAM_LOGIN_ID, X_PROGRAM_APPLICATION_ID);
164 
165 END LOOP;
166 close c1;
167 EXCEPTION
168      	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
169      	       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
170 	WHEN OTHERS THEN
171 	       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
172 END;
173 
174 /* ================================================================================================*
175 | PROCEDURE update_taxes : Updates records in Taxes table if the reporting tax authority or the    |
176 |			    collecting tax authority is updated in the tax regimes table and not   |
177 |                           overriddenin the taxes table.                                          |
178 * =================================================================================================*/
179 
180 PROCEDURE update_taxes
181 (
182           x_return_status  OUT NOCOPY VARCHAR2,
183           p_regime_code          IN  VARCHAR2,
184           p_old_rep_tax_auth_id      IN  NUMBER,
185 	  p_old_coll_tax_auth_id      IN  NUMBER,
186           p_new_rep_tax_auth_id       IN  NUMBER,
187 	  p_new_coll_tax_auth_id      IN  NUMBER
188 )
189 IS
190    CURSOR C1 is
191      SELECT
192          ATTRIBUTE13,
193          ATTRIBUTE14,
194          ATTRIBUTE15,
195          ATTRIBUTE_CATEGORY,
196          ATTRIBUTE8,
197          ATTRIBUTE9,
198          ATTRIBUTE10,
199          ATTRIBUTE11,
200          ATTRIBUTE12,
201          Has_Tax_Point_Date_Rule_Flag,
202          Print_On_Invoice_Flag,
203          Use_Legal_Msg_Flag,
204          Calc_Only_Flag,
205          PRIMARY_RECOVERY_TYPE_CODE,
206          Primary_Rec_Type_Rule_Flag,
207          SECONDARY_RECOVERY_TYPE_CODE,
208          Secondary_Rec_Type_Rule_Flag,
209          Primary_Rec_Rate_Det_Rule_Flag,
210          Sec_Rec_Rate_Det_Rule_Flag,
211          Offset_Tax_Flag,
212          REQUEST_ID,
213          PROGRAM_APPLICATION_ID,
214          PROGRAM_ID,
215          Program_Login_Id,
216          Record_Type_Code,
217          Allow_Rounding_Override_Flag,
218          ATTRIBUTE1,
219          ATTRIBUTE2,
220          ATTRIBUTE3,
221          ATTRIBUTE4,
222          ATTRIBUTE5,
223          ATTRIBUTE6,
224          ATTRIBUTE7,
225          Has_Exch_Rate_Date_Rule_Flag,
226          Recovery_Rate_Override_Flag,
227          TAX,
228          TAX_ID,
229          EFFECTIVE_FROM,
230          EFFECTIVE_TO,
231          TAX_REGIME_CODE,
232          TAX_TYPE_CODE,
233          Allow_Manual_Entry_Flag,
234          Allow_Tax_Override_Flag,
235          MIN_TXBL_BSIS_THRSHLD,
236          MAX_TXBL_BSIS_THRSHLD,
237          MIN_TAX_RATE_THRSHLD,
238          MAX_TAX_RATE_THRSHLD,
239          MIN_TAX_AMT_THRSHLD,
240          MAX_TAX_AMT_THRSHLD,
241          COMPOUNDING_PRECEDENCE,
242          PERIOD_SET_NAME,
243          EXCHANGE_RATE_TYPE,
244          TAX_CURRENCY_CODE,
245          REP_TAX_AUTHORITY_ID,
246          COLL_TAX_AUTHORITY_ID,
247          TAX_PRECISION,
248          MINIMUM_ACCOUNTABLE_UNIT,
249          Rounding_Rule_Code,
250          Tax_Status_Rule_Flag,
251          Tax_Rate_Rule_Flag,
252          Def_Place_Of_Supply_Type_Code,
253          Place_Of_Supply_Rule_Flag,
254          Applicability_Rule_Flag,
255          Tax_Calc_Rule_Flag,
256          Txbl_Bsis_Thrshld_Flag,
257          Tax_Rate_Thrshld_Flag,
258          Tax_Amt_Thrshld_Flag,
259          Taxable_Basis_Rule_Flag,
260          Def_Inclusive_Tax_Flag,
261          Thrshld_Grouping_Lvl_Code,
262          Thrshld_Chk_Tmplt_Code,
263          Has_Other_Jurisdictions_Flag,
264          Allow_Exemptions_Flag,
265          Allow_Exceptions_Flag,
266          Allow_Recoverability_Flag,
267          DEF_TAX_CALC_FORMULA,
268          Tax_Inclusive_Override_Flag,
269          DEF_TAXABLE_BASIS_FORMULA,
270          Def_Registr_Party_Type_Code,
271          Registration_Type_Rule_Flag,
272          Reporting_Only_Flag,
273          Auto_Prvn_Flag,
274          Live_For_Processing_Flag,
275          Has_Detail_Tb_Thrshld_Flag,
276          Has_Tax_Det_Date_Rule_Flag,
277          Regn_Num_Same_As_Le_Flag,
278          ZONE_GEOGRAPHY_TYPE,
279          Def_Rec_Settlement_Option_Code,
280   	 Direct_Rate_Rule_Flag,
281   	 CONTENT_OWNER_ID ,
282   	 APPLIED_AMT_HANDLING_FLAG ,
283 	 PARENT_GEOGRAPHY_TYPE,
284 	 PARENT_GEOGRAPHY_ID,
285 	 ALLOW_MASS_CREATE_FLAG,
286          TAX_FULL_NAME        ,
287          LAST_UPDATE_DATE ,
288          LAST_UPDATED_BY ,
289          LAST_UPDATE_LOGIN,
290 	 SOURCE_TAX_FLAG,
291 	 SPECIAL_INCLUSIVE_TAX_FLAG,
292 	 DEF_PRIMARY_REC_RATE_CODE,
293 	 DEF_SECONDARY_REC_RATE_CODE,
294 	 ALLOW_DUP_REGN_NUM_FLAG,
295          TAX_ACCOUNT_SOURCE_TAX,
296          TAX_ACCOUNT_CREATE_METHOD_CODE,
297 	 OVERRIDE_GEOGRAPHY_TYPE,
298          TAX_EXMPT_SOURCE_TAX,
299          TAX_EXMPT_CR_METHOD_CODE,
300          OBJECT_VERSION_NUMBER,
301    	 LIVE_FOR_APPLICABILITY_FLAG,
302          APPLICABLE_BY_DEFAULT_FLAG,
303 	 LEGAL_REPORTING_STATUS_DEF_VAL
304      FROM	ZX_SCO_TAXES
305     WHERE TAX_REGIME_CODE = p_regime_code;
306     R1           C1%rowtype;
307     update_flg  BOOLEAN := FALSE;
308     l_rep_tax_auth_id NUMBER;
309     l_coll_tax_auth_id NUMBER;
310     BEGIN
311         --  Initialize API return status to success
312    	x_return_status := FND_API.G_RET_STS_SUCCESS;
313         -- Check if update of reporting tax authority id or collecting tax authority has occurred..
314     OPEN C1;
315     LOOP
316    	FETCH C1 INTO R1;
317    		  EXIT WHEN C1%NOTFOUND ;
318    	if (nvl(p_old_rep_tax_auth_id,-9999) = nvl(R1.REP_TAX_AUTHORITY_ID,-9999)) THEN
319    			update_flg := TRUE;
320                            l_rep_tax_auth_id :=  p_new_rep_tax_auth_id;
321            ELSE
322    			l_rep_tax_auth_id :=  R1.REP_TAX_AUTHORITY_ID;
323    	END IF;
324    	if (nvl(p_old_coll_tax_auth_id,-9999) = nvl(R1.COLL_TAX_AUTHORITY_ID,-9999)) THEN
325    			update_flg := TRUE;
326                            l_coll_tax_auth_id :=  p_new_coll_tax_auth_id;
327            ELSE
328    			l_coll_tax_auth_id :=  R1.COLL_TAX_AUTHORITY_ID;
329    	END IF;
330    	IF(update_flg) THEN
331    	ZX_TAXES_PKG.UPDATE_ROW
335    		  R1.ATTRIBUTE13 ,
332    	   	(
333    	   	  R1.TAX_ID ,
334    		  R1.Recovery_Rate_Override_Flag ,
336    		  R1.ATTRIBUTE14 ,
337    		  R1.ATTRIBUTE15 ,
338                   R1.ATTRIBUTE_CATEGORY ,
339                   R1.ATTRIBUTE8 ,
340    		  R1.ATTRIBUTE9 ,
341    		  R1.ATTRIBUTE10 ,
342    		  R1.ATTRIBUTE11 ,
343                   R1.ATTRIBUTE12 ,
344                   R1.Has_Tax_Point_Date_Rule_Flag ,
345                   R1.Print_On_Invoice_Flag ,
346    		  R1.Use_Legal_Msg_Flag ,
347    		  R1.Calc_Only_Flag ,
348    		  R1.PRIMARY_RECOVERY_TYPE_CODE    ,
349    		  R1.Primary_Rec_Type_Rule_Flag     ,
350    		  R1.SECONDARY_RECOVERY_TYPE_CODE  ,
351    		  R1.Secondary_Rec_Type_Rule_Flag   ,
352    		  R1.Primary_Rec_Rate_Det_Rule_Flag ,
353    		  R1.Sec_Rec_Rate_Det_Rule_Flag     ,
354    		  R1.Offset_Tax_Flag 		   ,
355    		  R1.REQUEST_ID                    ,
356    		  R1.PROGRAM_APPLICATION_ID        ,
357    		  R1.PROGRAM_ID ,
358    		  R1.Program_Login_Id ,
359    		  R1.Record_Type_Code ,
360    		  R1.Allow_Rounding_Override_Flag ,
361    		  R1.ATTRIBUTE1 ,
362    		  R1.ATTRIBUTE2 ,
363    		  R1.ATTRIBUTE3 ,
364    		  R1.ATTRIBUTE4 ,
365    		  R1.ATTRIBUTE5 ,
366    		  R1.ATTRIBUTE6 ,
367    		  R1.ATTRIBUTE7 ,
368    		  R1.Has_Exch_Rate_Date_Rule_Flag ,
369    		  R1.TAX ,
370    		  R1.EFFECTIVE_FROM ,
371    		  R1.EFFECTIVE_TO ,
372    		  R1.TAX_REGIME_CODE ,
373    		  R1.TAX_TYPE_CODE ,
374    		  R1.Allow_Manual_Entry_Flag ,
375    		  R1.Allow_Tax_Override_Flag ,
376    		  R1.MIN_TXBL_BSIS_THRSHLD ,
377    		  R1.MAX_TXBL_BSIS_THRSHLD ,
378    		  R1.MIN_TAX_RATE_THRSHLD ,
379    		  R1.MAX_TAX_RATE_THRSHLD ,
380    		  R1.MIN_TAX_AMT_THRSHLD ,
381    		  R1.MAX_TAX_AMT_THRSHLD ,
382    		  R1.COMPOUNDING_PRECEDENCE ,
383    		  R1.PERIOD_SET_NAME ,
384    		  R1.EXCHANGE_RATE_TYPE ,
385    		  R1.TAX_CURRENCY_CODE ,
386    		  l_rep_tax_auth_id,
387    		  l_coll_tax_auth_id ,
388    		  R1.TAX_PRECISION ,
389    		  R1.MINIMUM_ACCOUNTABLE_UNIT ,
390    		  R1.Rounding_Rule_Code ,
391    		  R1.Tax_Status_Rule_Flag ,
392    		  R1.Tax_Rate_Rule_Flag ,
393    		  R1.Def_Place_Of_Supply_Type_Code ,
394    		  R1.Place_Of_Supply_Rule_Flag ,
395    		  R1.Applicability_Rule_Flag ,
396    		  R1.Tax_Calc_Rule_Flag ,
397    		  R1.Txbl_Bsis_Thrshld_Flag ,
398    		  R1.Tax_Rate_Thrshld_Flag ,
399    		  R1.Tax_Amt_Thrshld_Flag ,
400    		  R1.Taxable_Basis_Rule_Flag ,
401    		  R1.Def_Inclusive_Tax_Flag ,
402    		  R1.Thrshld_Grouping_Lvl_Code ,
403    		  R1.Thrshld_Chk_Tmplt_Code ,
404    		  R1.Has_Other_Jurisdictions_Flag ,
405    		  R1.Allow_Exemptions_Flag ,
406    		  R1.Allow_Exceptions_Flag ,
407    		  R1.Allow_Recoverability_Flag ,
408    		  R1.DEF_TAX_CALC_FORMULA ,
409    		  R1.Tax_Inclusive_Override_Flag ,
410    		  R1.DEF_TAXABLE_BASIS_FORMULA ,
411    		  R1.Def_Registr_Party_Type_Code ,
412    		  R1.Registration_Type_Rule_Flag ,
413    		  R1.Reporting_Only_Flag ,
414    		  R1.Auto_Prvn_Flag ,
415    		  R1.Live_For_Processing_Flag ,
416    		  R1.Has_Detail_Tb_Thrshld_Flag ,
417    		  R1.Has_Tax_Det_Date_Rule_Flag ,
418    		  R1.TAX_FULL_NAME ,
419    		  R1.ZONE_GEOGRAPHY_TYPE ,
420    		  R1.Def_Rec_Settlement_Option_Code ,
421    		  SYSDATE,
422    		  fnd_global.user_id,
423    		  FND_GLOBAL.CONC_LOGIN_ID,
424    		  R1.Regn_Num_Same_As_Le_Flag  ,
425      	          R1.Direct_Rate_Rule_Flag,
426   		  R1.CONTENT_OWNER_ID ,
427   		  R1.APPLIED_AMT_HANDLING_FLAG,
428 		  R1.PARENT_GEOGRAPHY_TYPE,
429 		  R1.PARENT_GEOGRAPHY_ID,
430 		  R1.ALLOW_MASS_CREATE_FLAG,
431 		  R1.SOURCE_TAX_FLAG,
432 		  R1.SPECIAL_INCLUSIVE_TAX_FLAG,
433 		  R1.DEF_PRIMARY_REC_RATE_CODE,
434 		  R1.DEF_SECONDARY_REC_RATE_CODE,
435 		  R1.ALLOW_DUP_REGN_NUM_FLAG,
436 		  R1.TAX_ACCOUNT_SOURCE_TAX,
437                   R1.TAX_ACCOUNT_CREATE_METHOD_CODE,
438                   R1.OVERRIDE_GEOGRAPHY_TYPE,
439                   R1.TAX_EXMPT_SOURCE_TAX,
440                   R1.TAX_EXMPT_CR_METHOD_CODE,
441                   R1.OBJECT_VERSION_NUMBER,
442  		  R1.LIVE_FOR_APPLICABILITY_FLAG,
443                   R1.APPLICABLE_BY_DEFAULT_FLAG,
444 		  R1.LEGAL_REPORTING_STATUS_DEF_VAL
445      	  );
446    	END IF;
447    END LOOP;
448    close c1;
449    EXCEPTION
450         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
451 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
452         WHEN OTHERS THEN
453                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
454 end;
455 
456 /* ===================================================================================================*
457  | PROCEDURE get_regime_details: Obtains the regime details based on the country code or tax regime code|
458  |                      				                                                |
459  * ===================================================================================================*/
460 
461 PROCEDURE get_regime_details
462 (
463         x_return_status  OUT NOCOPY VARCHAR2,
464         p_country_code   IN  VARCHAR2 default null,
465         p_tax_regime_code IN VARCHAR2 default null,
466         x_regime_rec  OUT NOCOPY regime_rec_arr_type
467 )
468 IS
469 CURSOR C1 is
470           SELECT
471           TAX_REGIME_CODE,
472           TAX_REGIME_NAME
473           from zx_REGIMES_VL
474           WHERE TAX_REGIME_CODE = p_tax_regime_code;
475 R1  C1%rowtype;
476 CURSOR C2 is
477           SELECT
478           TAX_REGIME_CODE,
479           TAX_REGIME_NAME
480           from zx_REGIMES_VL
481           WHERE COUNTRY_CODE = p_country_code;
482 R2  C2%rowtype;
486 	x_return_status := FND_API.G_RET_STS_SUCCESS;
483 l_num NUMBER := 1;
484 BEGIN
485    --  Initialize API return status to success
487    --
488 	IF (p_country_code is null AND p_tax_regime_code is not null) THEN
489 	   OPEN C1;
490            LOOP
491 		FETCH C1 INTo R1;
492 		EXIT WHEN C1%NOTFOUND;
493                 x_regime_rec(l_num).regime_code := R1.tax_regime_code;
494                 x_regime_rec(l_num).regime_name := R1.tax_regime_name;
495                 l_num := l_num + 1;
496   	   END LOOP;
497            CLOSE C1;
498         ELSIF (p_country_code is not null AND p_tax_regime_code is null) THEN
499   	   OPEN C2;
500            LOOP
501 		FETCH C2 INTo R2;
502 		EXIT WHEN C2%NOTFOUND;
503                 x_regime_rec(l_num).regime_code := R2.tax_regime_code;
504                 x_regime_rec(l_num).regime_name := R2.tax_regime_name;
505                 l_num := l_num + 1;
506   	   END LOOP;
507            CLOSE C2;
508 	 ELSE
509 		x_return_status := 'WRONG INPUT PARAMETERS';
510 	 END IF;
511    EXCEPTION
512      	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN                                                                                        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
513 	WHEN OTHERS THEN
514       		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
515 END get_regime_details;
516 /* ===============================================================================================*
517  | PROCEDURE get_regime_hierarchy: Obtains the regime relations based on the tax regime code      |
518  * ==============================================================================================*/
519 
520 PROCEDURE get_regime_hierarchy
521 (
522         x_return_status  OUT NOCOPY VARCHAR2,
523         p_tax_regime_code IN VARCHAR2 default null,
524         x_regime_level_rec  OUT NOCOPY regime_rec_level_arr_type
525 )
526 IS
527 CURSOR C1 is
528           SELECT
529           REGIME_CODE,
530           PARENT_REGIME_CODE,
531           PARENT_REG_LEVEL
532           from zx_REGIME_RELATIONS
533           WHERE REGIME_CODE = p_tax_regime_code;
534 R1  C1%rowtype;
535 l_num NUMBER := 1;
536 BEGIN
537    --  Initialize API return status to success
538 	x_return_status := FND_API.G_RET_STS_SUCCESS;
539    --   Insert a record with level zero
540 	IF (p_tax_regime_code is not null) THEN
541 	   OPEN C1;
542            LOOP
543 		FETCH C1 into R1;
544 		EXIT WHEN C1%NOTFOUND;
545 	        x_regime_level_rec(l_num).regime_code := R1.regime_code;
546                 x_regime_level_rec(l_num).parent_regime_code := R1.parent_regime_code;
547                 x_regime_level_rec(l_num).level := R1.parent_reg_level;
548                 l_num := l_num + 1;
549    	   END LOOP;
550            CLOSE C1;
551 	 ELSE
552   	   x_return_status := 'WRONG INPUT PARAMETERS';
553 	 END IF;
554    EXCEPTION
555      	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN                                                                                        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
556 	WHEN OTHERS THEN                                                                                                                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
557 END get_regime_hierarchy;
558 END;