1 package body ZX_REGISTRATIONS_PKG as
2 /* $Header: zxcregb.pls 120.10 2005/09/16 23:28:22 dbetanco ship $ */
3
4 procedure INSERT_ROW (
5 P_REQUEST_ID in NUMBER,
6 P_ATTRIBUTE1 in VARCHAR2,
7 P_ATTRIBUTE2 in VARCHAR2,
8 P_ATTRIBUTE3 in VARCHAR2,
9 P_ATTRIBUTE4 in VARCHAR2,
10 P_ATTRIBUTE5 in VARCHAR2,
11 P_ATTRIBUTE6 in VARCHAR2,
12 P_VALIDATION_RULE in VARCHAR2,
13 P_ROUNDING_RULE_CODE in VARCHAR2,
14 P_TAX_JURISDICTION_CODE in VARCHAR2,
15 P_SELF_ASSESS_FLAG in VARCHAR2,
16 P_REGISTRATION_STATUS_CODE in VARCHAR2,
17 P_REGISTRATION_SOURCE_CODE in VARCHAR2,
18 P_REGISTRATION_REASON_CODE in VARCHAR2,
19 P_TAX in VARCHAR2,
20 P_TAX_REGIME_CODE in VARCHAR2,
21 P_INCLUSIVE_TAX_FLAG in VARCHAR2,
22 P_EFFECTIVE_FROM in DATE,
23 P_EFFECTIVE_TO in DATE,
24 P_REP_PARTY_TAX_NAME in VARCHAR2,
25 P_DEFAULT_REGISTRATION_FLAG in VARCHAR2,
26 P_BANK_ACCOUNT_NUM in VARCHAR2,
27 P_RECORD_TYPE_CODE in VARCHAR2,
28 P_LEGAL_LOCATION_ID in NUMBER,
29 P_TAX_AUTHORITY_ID in NUMBER,
30 P_REP_TAX_AUTHORITY_ID in NUMBER,
31 P_COLL_TAX_AUTHORITY_ID in NUMBER,
32 P_REGISTRATION_TYPE_CODE in VARCHAR2,
33 P_REGISTRATION_NUMBER in VARCHAR2,
34 P_PARTY_TAX_PROFILE_ID in NUMBER,
35 P_LEGAL_REGISTRATION_ID in NUMBER,
36 P_BANK_ID in NUMBER,
37 P_BANK_BRANCH_ID in NUMBER,
38 P_ACCOUNT_SITE_ID in NUMBER,
39 P_ATTRIBUTE14 in VARCHAR2,
40 P_ATTRIBUTE15 in VARCHAR2,
41 P_ATTRIBUTE_CATEGORY in VARCHAR2,
42 P_PROGRAM_LOGIN_ID in NUMBER,
43 P_ACCOUNT_ID in NUMBER,
44 P_TAX_CLASSIFICATION_CODE in VARCHAR2,
45 P_ATTRIBUTE7 in VARCHAR2,
46 P_ATTRIBUTE8 in VARCHAR2,
47 P_ATTRIBUTE9 in VARCHAR2,
48 P_ATTRIBUTE10 in VARCHAR2,
49 P_ATTRIBUTE11 in VARCHAR2,
50 P_ATTRIBUTE12 in VARCHAR2,
51 P_ATTRIBUTE13 in VARCHAR2,
52 X_RETURN_STATUS out NOCOPY VARCHAR2
53 ) is
54 L_REGISTRATION_ID ZX_REGISTRATIONS.REGISTRATION_ID%TYPE;
55 L_DEF_REGISTRATION_ID ZX_REGISTRATIONS.REGISTRATION_ID%TYPE;
56 L_REG_ID ZX_REGISTRATIONS.REGISTRATION_ID%TYPE;
57 L_REG_ID1 ZX_REGISTRATIONS.REGISTRATION_ID%TYPE;
58 L_INCLUSIVE_TAX_FLAG ZX_REGISTRATIONS.INCLUSIVE_TAX_FLAG%TYPE;
59 L_SELF_ASSESS_FLAG ZX_REGISTRATIONS.SELF_ASSESS_FLAG%TYPE;
60 L_ROUNDING_RULE_CODE ZX_REGISTRATIONS.ROUNDING_RULE_CODE%TYPE;
61 L_COUNTRY_CODE ZX_REGIMES_B.COUNTRY_CODE%TYPE;
62 L_PARTY_TYPE_CODE ZX_PARTY_TAX_PROFILE.PARTY_TYPE_CODE%TYPE;
63 x_party_type_token VARCHAR2(1000);
64 x_party_name_token VARCHAR2(5000);
65 x_party_site_name_token VARCHAR2(5000);
66 x_error_buffer VARCHAR2(80);
67 x_return_status1 VARCHAR2(80);
68 CURSOR reg_cur IS SELECT REGISTRATION_ID FROM ZX_REGISTRATIONS
69 WHERE REGISTRATION_ID = L_REGISTRATION_ID;
70 --Get Default Registration for current PTP_ID
71 CURSOR default_reg_cur IS SELECT REGISTRATION_ID FROM ZX_REGISTRATIONS
72 WHERE PARTY_TAX_PROFILE_ID = P_PARTY_TAX_PROFILE_ID
73 AND DEFAULT_REGISTRATION_FLAG = 'Y';
74 begin
75 --Initialise x_return_status variable
76 X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
77 --Inclusive_tax_flag, ROUNDING_RULE_CODE and self_assess_flag for tax registrations are defaulted primary from party tax profile.
78 BEGIN
79 select INCLUSIVE_TAX_FLAG, SELF_ASSESS_FLAG, ROUNDING_RULE_CODE, PARTY_TYPE_CODE
80 INTO L_INCLUSIVE_TAX_FLAG, L_SELF_ASSESS_FLAG, L_ROUNDING_RULE_CODE, L_PARTY_TYPE_CODE
81 from ZX_PARTY_TAX_PROFILE
82 where PARTY_TAX_PROFILE_ID = P_PARTY_TAX_PROFILE_ID;
83 EXCEPTION WHEN NO_DATA_FOUND THEN
84 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
85 arp_util_tax.debug('Error: "No Party created in ZX_PARTY_TAX_PROFILE for the Registration with Regime : " ' || P_TAX_REGIME_CODE || ' and Tax: ' ||P_TAX || ' and Jurisdiction: ' || P_TAX_JURISDICTION_CODE);
86 END;
87 --Effective From cannot be null
88 IF P_EFFECTIVE_FROM IS NULL THEN
89 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
90 arp_util_tax.debug('Error: "Effective From cannot be null for the Registration with Regime : " ' || P_TAX_REGIME_CODE || ' and Tax: ' ||P_TAX || ' and Jurisdiction: ' || P_TAX_JURISDICTION_CODE);
91 END IF;
92 --Tax Regime Code cannot be null
93 IF P_TAX_REGIME_CODE IS NULL THEN
94 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
95 arp_util_tax.debug('Error: "Tax Regime Code cannot be null for the Registration with Regime : " ' || P_TAX_REGIME_CODE || ' and Tax: ' ||P_TAX || ' and Jurisdiction: ' || P_TAX_JURISDICTION_CODE);
96 END IF;
97 IF (P_EFFECTIVE_FROM IS NOT NULL) AND (P_EFFECTIVE_FROM > P_EFFECTIVE_TO) THEN
98 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
99 arp_util_tax.debug('Error: "The Effective To date must be the same as or after the Effective From date. for the Registration with Regime : " ' || P_TAX_REGIME_CODE || ' and Tax: ' ||P_TAX || ' and Jurisdiction: ' || P_TAX_JURISDICTION_CODE);
100 END IF;
101 IF (P_TAX IS NULL) AND (P_TAX_JURISDICTION_CODE IS NOT NULL) THEN
102 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
103 arp_util_tax.debug('Error: "Tax must be entered if the Tax Jursidiction Code has been specified for the Registration with Regime : " ' || P_TAX_REGIME_CODE || ' and Tax: ' ||P_TAX || ' and Jurisdiction: ' || P_TAX_JURISDICTION_CODE);
104 END IF;
105 --Tax is mandatory when Jurisdiction is not null
106 IF (P_TAX_REGIME_CODE IS NOT NULL) AND (P_PARTY_TAX_PROFILE_ID IS NOT NULL) THEN
107 --Registration should be unique
108 BEGIN
109 SELECT REGISTRATION_ID
110 INTO L_REG_ID
111 FROM ZX_REGISTRATIONS
112 WHERE ((P_EFFECTIVE_TO is NULL AND EFFECTIVE_TO is NULL)
113 OR (P_EFFECTIVE_FROM BETWEEN EFFECTIVE_FROM
114 AND NVL(EFFECTIVE_TO,P_EFFECTIVE_TO ) )
115 OR ( NVL(P_EFFECTIVE_TO, EFFECTIVE_TO+1) BETWEEN EFFECTIVE_FROM
116 AND NVL(EFFECTIVE_TO ,P_EFFECTIVE_TO ) )
117 OR (P_EFFECTIVE_FROM < EFFECTIVE_FROM
118 AND (NVL(P_EFFECTIVE_TO, EFFECTIVE_TO) > EFFECTIVE_TO OR P_EFFECTIVE_TO IS NULL)))
119 AND (REGISTRATION_NUMBER = P_REGISTRATION_NUMBER OR (P_REGISTRATION_NUMBER IS NULL and REGISTRATION_NUMBER is null))
120 AND TAX_REGIME_CODE = P_TAX_REGIME_CODE
121 AND (TAX = P_TAX OR (P_TAX IS NULL and TAX is null))
122 AND (TAX_JURISDICTION_CODE = P_TAX_JURISDICTION_CODE OR (P_TAX_JURISDICTION_CODE IS NULL and TAX_JURISDICTION_CODE is null))
123 AND PARTY_TAX_PROFILE_ID = P_PARTY_TAX_PROFILE_ID;
124 EXCEPTION WHEN NO_DATA_FOUND THEN
125 NULL;
126 END;
127 --Registration should be unique at each level
128 BEGIN
129 SELECT REGISTRATION_ID
130 INTO L_REG_ID1
131 FROM ZX_REGISTRATIONS
132 WHERE ((P_EFFECTIVE_TO is NULL AND EFFECTIVE_TO is NULL)
133 OR (P_EFFECTIVE_FROM BETWEEN EFFECTIVE_FROM
134 AND NVL(EFFECTIVE_TO,P_EFFECTIVE_TO ) )
135 OR ( NVL(P_EFFECTIVE_TO, EFFECTIVE_TO+1) BETWEEN EFFECTIVE_FROM
136 AND NVL(EFFECTIVE_TO ,P_EFFECTIVE_TO ) )
137 OR (P_EFFECTIVE_FROM < EFFECTIVE_FROM
138 AND (NVL(P_EFFECTIVE_TO, EFFECTIVE_TO) > EFFECTIVE_TO OR P_EFFECTIVE_TO IS NULL)))
139 AND NOT(REGISTRATION_NUMBER = P_REGISTRATION_NUMBER OR (P_REGISTRATION_NUMBER IS NULL and REGISTRATION_NUMBER is null))
140 AND TAX_REGIME_CODE = P_TAX_REGIME_CODE
141 AND (TAX = P_TAX OR (P_TAX IS NULL and TAX is null))
142 AND (TAX_JURISDICTION_CODE = P_TAX_JURISDICTION_CODE OR (P_TAX_JURISDICTION_CODE IS NULL and TAX_JURISDICTION_CODE is null))
143 AND PARTY_TAX_PROFILE_ID = P_PARTY_TAX_PROFILE_ID;
144 EXCEPTION WHEN NO_DATA_FOUND THEN
145 NULL;
146 END;
147 END IF;
148 IF L_REG_ID IS NOT NULL THEN
149 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
150 arp_util_tax.debug('Error: "The registration details already exist for this party for the Registration with Regime : " ' || P_TAX_REGIME_CODE || ' and Tax: ' ||P_TAX || ' and Jurisdiction: ' || P_TAX_JURISDICTION_CODE);
151 END IF;
152 IF L_REG_ID1 IS NOT NULL THEN
153 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
154 arp_util_tax.debug('Error: "This party already has a registration for this Jurisdiction for the Registration with Regime : " ' || P_TAX_REGIME_CODE || ' and Tax: ' ||P_TAX || ' and Jurisdiction: ' || P_TAX_JURISDICTION_CODE);
155 END IF;
156 --If the registration is marked as default, then registration number must be entered.
157 IF P_DEFAULT_REGISTRATION_FLAG = 'Y' AND P_REGISTRATION_NUMBER IS NULL THEN
158 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
159 arp_util_tax.debug('Error: "Tax Registration Number is not valid for the Registration with Regime : " ' || P_TAX_REGIME_CODE || ' and Tax: ' ||P_TAX || ' and Jurisdiction: ' || P_TAX_JURISDICTION_CODE);
160 --Check RegistrationNumber validity
161 ELSIF (P_REGISTRATION_NUMBER IS NOT NULL AND P_LEGAL_REGISTRATION_ID IS NULL) THEN
162 BEGIN
163 BEGIN
164 SELECT COUNTRY_CODE
165 INTO L_COUNTRY_CODE
166 FROM ZX_REGIMES_B
167 WHERE TAX_REGIME_CODE = P_TAX_REGIME_CODE;
168 EXCEPTION WHEN NO_DATA_FOUND THEN
169 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
170 arp_util_tax.debug('Error: "No CountryCOde exists in ZX_REGIMES_B for the Registration with Regime : "
171 ' || P_TAX_REGIME_CODE || ' and Tax: ' ||P_TAX || ' and Jurisdiction: ' || P_TAX_JURISDICTION_CODE);
172 END;
173 /*
174 ZX_TRN_VALIDATION_PKG.VALIDATE_TRN
175 (l_country_code,
176 p_registration_number,
177 p_tax_regime_code,
178 p_tax,
179 p_party_tax_profile_id,
180 l_party_type_code,
181 p_registration_type_code,
182 x_error_buffer,
183 x_return_status1,
184 x_party_type_token,
185 x_party_name_token,
186 x_party_site_name_token
187 );
188 */
189 x_return_status1 := 'S'; -- P1
190 IF x_return_status1 <> 'S' THEN
191 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
192 arp_util_tax.debug('Error: "Registration Number is invalid for the Registration with Regime : "
193 ' || P_TAX_REGIME_CODE || ' and Tax: ' ||P_TAX || ' and Jurisdiction: ' || P_TAX_JURISDICTION_CODE);
194 END IF;
195 END;
196 END IF;
197 -- Check the Default Registration status and accordingly populates corresponding
198 -- Registration Number to PartyTaxProfile entity
199 IF P_DEFAULT_REGISTRATION_FLAG = 'Y' THEN
200 OPEN default_reg_cur;
201 FETCH default_reg_cur INTO L_DEF_REGISTRATION_ID;
202 --If this is the only defaulted registration then update PTP
203 IF (default_reg_cur%notfound) AND (X_RETURN_STATUS = FND_API.G_RET_STS_SUCCESS) then
204 --Update PTP
205 UPDATE ZX_PARTY_TAX_PROFILE
206 SET Rep_Registration_Number = P_REGISTRATION_NUMBER,
207 Object_Version_Number = Object_Version_Number + 1
208 WHERE PARTY_TAX_PROFILE_ID = P_PARTY_TAX_PROFILE_ID
209 ;
210 ELSE
211 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
212 arp_util_tax.debug('Error: "Already a Regiatration has been defaulted for Regime : " ' || P_TAX_REGIME_CODE || ' and Tax: ' ||P_TAX || ' and Jurisdiction: ' || P_TAX_JURISDICTION_CODE);
213 END IF;
214 CLOSE default_reg_cur;
215 END IF;--end P_DEFAULT_REGISTRATION_FLAG
216 --Insert only when there is no error
217 IF X_RETURN_STATUS = FND_API.G_RET_STS_SUCCESS THEN
218 select ZX_REGISTRATIONS_S.nextval into L_REGISTRATION_ID from dual;
219 insert into ZX_REGISTRATIONS (
220 REQUEST_ID,
221 ATTRIBUTE1,
222 ATTRIBUTE2,
223 ATTRIBUTE3,
224 ATTRIBUTE4,
225 ATTRIBUTE5,
226 ATTRIBUTE6,
227 VALIDATION_RULE,
228 ROUNDING_RULE_CODE,
229 TAX_JURISDICTION_CODE,
230 SELF_ASSESS_FLAG,
231 REGISTRATION_STATUS_CODE,
232 REGISTRATION_SOURCE_CODE,
233 REGISTRATION_REASON_CODE,
234 TAX,
235 TAX_REGIME_CODE,
236 INCLUSIVE_TAX_FLAG,
237 EFFECTIVE_FROM,
238 EFFECTIVE_TO,
239 REP_PARTY_TAX_NAME,
240 DEFAULT_REGISTRATION_FLAG,
241 BANK_ACCOUNT_NUM,
242 RECORD_TYPE_CODE,
243 REGISTRATION_ID,
244 LEGAL_LOCATION_ID,
248 REGISTRATION_TYPE_CODE,
245 TAX_AUTHORITY_ID,
246 REP_TAX_AUTHORITY_ID,
247 COLL_TAX_AUTHORITY_ID,
249 REGISTRATION_NUMBER,
250 PARTY_TAX_PROFILE_ID,
251 LEGAL_REGISTRATION_ID,
252 BANK_ID,
253 BANK_BRANCH_ID,
254 ACCOUNT_SITE_ID,
255 ATTRIBUTE14,
256 ATTRIBUTE15,
257 ATTRIBUTE_CATEGORY,
258 PROGRAM_LOGIN_ID,
259 ACCOUNT_ID,
260 TAX_CLASSIFICATION_CODE,
261 ATTRIBUTE7,
262 ATTRIBUTE8,
263 ATTRIBUTE9,
264 ATTRIBUTE10,
265 ATTRIBUTE11,
266 ATTRIBUTE12,
267 ATTRIBUTE13,
268 CREATION_DATE,
269 CREATED_BY,
270 LAST_UPDATE_DATE,
271 LAST_UPDATED_BY,
272 LAST_UPDATE_LOGIN,
273 OBJECT_VERSION_NUMBER
274 ) values (
275 P_REQUEST_ID,
276 P_ATTRIBUTE1,
277 P_ATTRIBUTE2,
278 P_ATTRIBUTE3,
279 P_ATTRIBUTE4,
280 P_ATTRIBUTE5,
281 P_ATTRIBUTE6,
282 P_VALIDATION_RULE,
283 NVL(P_ROUNDING_RULE_CODE, L_ROUNDING_RULE_CODE),
284 P_TAX_JURISDICTION_CODE,
285 NVL(P_SELF_ASSESS_FLAG, L_SELF_ASSESS_FLAG),
286 P_REGISTRATION_STATUS_CODE,
287 P_REGISTRATION_SOURCE_CODE,
288 P_REGISTRATION_REASON_CODE,
289 P_TAX,
290 P_TAX_REGIME_CODE,
291 NVL(P_INCLUSIVE_TAX_FLAG, L_INCLUSIVE_TAX_FLAG),
292 NVL(P_EFFECTIVE_FROM, SYSDATE),
293 P_EFFECTIVE_TO,
294 P_REP_PARTY_TAX_NAME,
295 P_DEFAULT_REGISTRATION_FLAG,
296 P_BANK_ACCOUNT_NUM,
297 P_RECORD_TYPE_CODE,
298 L_REGISTRATION_ID,
299 P_LEGAL_LOCATION_ID,
300 P_TAX_AUTHORITY_ID,
301 P_REP_TAX_AUTHORITY_ID,
302 P_COLL_TAX_AUTHORITY_ID,
303 P_REGISTRATION_TYPE_CODE,
304 P_REGISTRATION_NUMBER,
305 P_PARTY_TAX_PROFILE_ID,
306 P_LEGAL_REGISTRATION_ID,
307 P_BANK_ID,
308 P_BANK_BRANCH_ID,
309 P_ACCOUNT_SITE_ID,
310 P_ATTRIBUTE14,
311 P_ATTRIBUTE15,
312 P_ATTRIBUTE_CATEGORY,
313 P_PROGRAM_LOGIN_ID,
314 P_ACCOUNT_ID,
315 P_TAX_CLASSIFICATION_CODE,
316 P_ATTRIBUTE7,
317 P_ATTRIBUTE8,
318 P_ATTRIBUTE9,
319 P_ATTRIBUTE10,
320 P_ATTRIBUTE11,
321 P_ATTRIBUTE12,
322 P_ATTRIBUTE13,
323 sysdate,
324 FND_GLOBAL.User_ID,
325 sysdate,
326 FND_GLOBAL.User_ID,
327 FND_GLOBAL.Login_ID,
328 1
329 );
330 OPEN reg_cur;
331 FETCH reg_cur INTO L_REGISTRATION_ID;
332 IF (reg_cur%notfound) then
333 CLOSE reg_cur;
334 --Set x_return_status param
335 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
336 arp_util_tax.debug('Error: "The Registration row has not been inserted for Regime : " ' || P_TAX_REGIME_CODE || ' and Tax: ' ||P_TAX || ' and Jurisdiction: ' || P_TAX_JURISDICTION_CODE);
337 END IF;--end reg_cur%notfound
338 CLOSE reg_cur;
339 END IF;--end X_RETURN_STATUS
340 EXCEPTION
341 --Index violation check
342 WHEN DUP_VAL_ON_INDEX THEN
343 --Set x_return_status param
344 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
345 arp_util_tax.debug('Error: "The Registration row already exists for Regime : " ' || P_TAX_REGIME_CODE || ' and Tax: ' ||P_TAX || ' and Jurisdiction: ' || P_TAX_JURISDICTION_CODE);
346 end INSERT_ROW;
347
348 procedure UPDATE_ROW (
349 P_REGISTRATION_ID in NUMBER,
350 P_REQUEST_ID in NUMBER,
351 P_ATTRIBUTE1 in VARCHAR2,
352 P_ATTRIBUTE2 in VARCHAR2,
353 P_ATTRIBUTE3 in VARCHAR2,
354 P_ATTRIBUTE4 in VARCHAR2,
355 P_ATTRIBUTE5 in VARCHAR2,
356 P_ATTRIBUTE6 in VARCHAR2,
357 P_VALIDATION_RULE in VARCHAR2,
358 P_ROUNDING_RULE_CODE in VARCHAR2,
359 P_TAX_JURISDICTION_CODE in VARCHAR2,
360 P_SELF_ASSESS_FLAG in VARCHAR2,
361 P_REGISTRATION_STATUS_CODE in VARCHAR2,
362 P_REGISTRATION_SOURCE_CODE in VARCHAR2,
363 P_REGISTRATION_REASON_CODE in VARCHAR2,
364 P_TAX in VARCHAR2,
365 P_TAX_REGIME_CODE in VARCHAR2,
366 P_INCLUSIVE_TAX_FLAG in VARCHAR2,
367 P_EFFECTIVE_FROM in DATE,
368 P_EFFECTIVE_TO in DATE,
369 P_REP_PARTY_TAX_NAME in VARCHAR2,
370 P_DEFAULT_REGISTRATION_FLAG in VARCHAR2,
371 P_BANK_ACCOUNT_NUM in VARCHAR2,
372 P_RECORD_TYPE_CODE in VARCHAR2,
373 P_LEGAL_LOCATION_ID in NUMBER,
374 P_TAX_AUTHORITY_ID in NUMBER,
375 P_REP_TAX_AUTHORITY_ID in NUMBER,
376 P_COLL_TAX_AUTHORITY_ID in NUMBER,
377 P_REGISTRATION_TYPE_CODE in VARCHAR2,
378 P_REGISTRATION_NUMBER in VARCHAR2,
379 P_PARTY_TAX_PROFILE_ID in NUMBER,
380 P_LEGAL_REGISTRATION_ID in NUMBER,
381 P_BANK_ID in NUMBER,
382 P_BANK_BRANCH_ID in NUMBER,
383 P_ACCOUNT_SITE_ID in NUMBER,
384 P_ATTRIBUTE14 in VARCHAR2,
385 P_ATTRIBUTE15 in VARCHAR2,
386 P_ATTRIBUTE_CATEGORY in VARCHAR2,
387 P_PROGRAM_LOGIN_ID in NUMBER,
388 P_ACCOUNT_ID in NUMBER,
389 P_TAX_CLASSIFICATION_CODE in VARCHAR2,
390 P_ATTRIBUTE7 in VARCHAR2,
391 P_ATTRIBUTE8 in VARCHAR2,
392 P_ATTRIBUTE9 in VARCHAR2,
393 P_ATTRIBUTE10 in VARCHAR2,
394 P_ATTRIBUTE11 in VARCHAR2,
395 P_ATTRIBUTE12 in VARCHAR2,
396 P_ATTRIBUTE13 in VARCHAR2,
397 X_RETURN_STATUS out NOCOPY VARCHAR2
398 ) is
399 L_REGISTRATION_ID ZX_REGISTRATIONS.REGISTRATION_ID%TYPE;
400 L_DEF_REGISTRATION_ID ZX_REGISTRATIONS.REGISTRATION_ID%TYPE;
401 L_REG_ID ZX_REGISTRATIONS.REGISTRATION_ID%TYPE;
402 L_REG_ID1 ZX_REGISTRATIONS.REGISTRATION_ID%TYPE;
403 --If Registration has active exemptions then it cannot be end dated.
404 -----Commented out since exemption is not based on registrations
405 /* CURSOR exempt_cur IS
406 SELECT EFFECTIVE_TO
407 FROM ZX_EXEMPTIONS
411 --Get Default Registration for current PTP_ID
408 WHERE TAX_REGISTRATION_ID = P_REGISTRATION_ID;
409 */
410 -----Commented out since exemption is not based on registrations
412 CURSOR default_reg_cur IS SELECT REGISTRATION_ID FROM ZX_REGISTRATIONS
413 WHERE PARTY_TAX_PROFILE_ID = P_PARTY_TAX_PROFILE_ID
414 AND DEFAULT_REGISTRATION_FLAG = 'Y'
415 AND REGISTRATION_ID <> P_REGISTRATION_ID;
416 begin
417 --Initialise x_return_status variable
418 X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
419 --Effective From cannot be null
420 IF P_EFFECTIVE_FROM IS NULL THEN
421 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
422 arp_util_tax.debug('Error: "Effective From cannot be null for the Registration with Regime : " ' || P_TAX_REGIME_CODE || ' and Tax: ' ||P_TAX || ' and Jurisdiction: ' || P_TAX_JURISDICTION_CODE);
423 END IF;
424 --Tax Regime Code cannot be null
425 IF P_TAX_REGIME_CODE IS NULL THEN
426 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
427 arp_util_tax.debug('Error: "Tax Regime Code cannot be null for the Registration with Regime : " ' || P_TAX_REGIME_CODE || ' and Tax: ' ||P_TAX || ' and Jurisdiction: ' || P_TAX_JURISDICTION_CODE);
428 END IF;
429 IF (P_EFFECTIVE_FROM IS NOT NULL) AND (P_EFFECTIVE_FROM > P_EFFECTIVE_TO) THEN
430 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
431 arp_util_tax.debug('Error: "The Effective To date must be the same as or after the Effective From date. for the Registration with Regime : " ' || P_TAX_REGIME_CODE || ' and Tax: ' ||P_TAX || ' and Jurisdiction: ' || P_TAX_JURISDICTION_CODE);
432 END IF;
433 --Tax is mandatory when Jurisdiction is not null
434 IF (P_TAX IS NULL) AND (P_TAX_JURISDICTION_CODE IS NOT NULL) THEN
435 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
436 arp_util_tax.debug('Error: "Tax must be entered if the Tax Jursidiction Code has been specified for the Registration with Regime : " ' || P_TAX_REGIME_CODE || ' and Tax: ' ||P_TAX || ' and Jurisdiction: ' || P_TAX_JURISDICTION_CODE);
437 END IF;
438 IF (P_TAX_REGIME_CODE IS NOT NULL) AND (P_PARTY_TAX_PROFILE_ID IS NOT NULL) THEN
439 --Registration should be unique
440 BEGIN
441 SELECT REGISTRATION_ID
442 INTO L_REG_ID
443 FROM ZX_REGISTRATIONS
444 WHERE ((P_EFFECTIVE_TO is NULL AND EFFECTIVE_TO is NULL)
445 OR (P_EFFECTIVE_FROM BETWEEN EFFECTIVE_FROM
446 AND NVL(EFFECTIVE_TO,P_EFFECTIVE_TO ) )
447 OR ( NVL(P_EFFECTIVE_TO, EFFECTIVE_TO+1) BETWEEN EFFECTIVE_FROM
448 AND NVL(EFFECTIVE_TO ,P_EFFECTIVE_TO ) )
449 OR (P_EFFECTIVE_FROM < EFFECTIVE_FROM
450 AND (NVL(P_EFFECTIVE_TO, EFFECTIVE_TO) > EFFECTIVE_TO OR P_EFFECTIVE_TO IS NULL)))
451 AND (REGISTRATION_NUMBER = P_REGISTRATION_NUMBER OR (P_REGISTRATION_NUMBER IS NULL and REGISTRATION_NUMBER is null))
452 AND TAX_REGIME_CODE = P_TAX_REGIME_CODE
453 AND (TAX = P_TAX OR (P_TAX IS NULL and TAX is null))
454 AND (TAX_JURISDICTION_CODE = P_TAX_JURISDICTION_CODE OR (P_TAX_JURISDICTION_CODE IS NULL and TAX_JURISDICTION_CODE is null))
455 AND PARTY_TAX_PROFILE_ID = P_PARTY_TAX_PROFILE_ID
456 AND REGISTRATION_ID <> P_REGISTRATION_ID;
457 EXCEPTION WHEN NO_DATA_FOUND THEN
458 NULL;
459 END;
460 --Registration should be unique at each level
461 BEGIN
462 SELECT REGISTRATION_ID
463 INTO L_REG_ID1
464 FROM ZX_REGISTRATIONS
465 WHERE ((P_EFFECTIVE_TO is NULL AND EFFECTIVE_TO is NULL)
466 OR (P_EFFECTIVE_FROM BETWEEN EFFECTIVE_FROM
467 AND NVL(EFFECTIVE_TO,P_EFFECTIVE_TO ) )
468 OR ( NVL(P_EFFECTIVE_TO, EFFECTIVE_TO+1) BETWEEN EFFECTIVE_FROM
469 AND NVL(EFFECTIVE_TO ,P_EFFECTIVE_TO ) )
470 OR (P_EFFECTIVE_FROM < EFFECTIVE_FROM
471 AND (NVL(P_EFFECTIVE_TO, EFFECTIVE_TO) > EFFECTIVE_TO OR P_EFFECTIVE_TO IS NULL)))
472 AND NOT(REGISTRATION_NUMBER = P_REGISTRATION_NUMBER OR (P_REGISTRATION_NUMBER IS NULL and REGISTRATION_NUMBER is null))
473 AND TAX_REGIME_CODE = P_TAX_REGIME_CODE
474 AND (TAX = P_TAX OR (P_TAX IS NULL and TAX is null))
475 AND (TAX_JURISDICTION_CODE = P_TAX_JURISDICTION_CODE OR (P_TAX_JURISDICTION_CODE IS NULL and TAX_JURISDICTION_CODE is null))
476 AND PARTY_TAX_PROFILE_ID = P_PARTY_TAX_PROFILE_ID
477 AND REGISTRATION_ID <> P_REGISTRATION_ID;
478 EXCEPTION WHEN NO_DATA_FOUND THEN
479 NULL;
480 END;
481 END IF;
482 IF L_REG_ID IS NOT NULL THEN
483 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
484 arp_util_tax.debug('Error: "The registration details already exist for this party for the Registration with Regime : " ' || P_TAX_REGIME_CODE || ' and Tax: ' ||P_TAX || ' and Jurisdiction: ' || P_TAX_JURISDICTION_CODE);
485 END IF;
486 IF L_REG_ID1 IS NOT NULL THEN
487 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
488 arp_util_tax.debug('Error: "This party already has a registration for this Jurisdiction for the Registration with Regime : " ' || P_TAX_REGIME_CODE || ' and Tax: ' ||P_TAX || ' and Jurisdiction: ' || P_TAX_JURISDICTION_CODE);
489 END IF;
490 --If Registration has active exemptions then it cannot be end dated.
491 -----Commented out since exemption is not based on registrations
492 /*IF P_EFFECTIVE_TO IS NOT NULL THEN
493 FOR exempt_rec IN exempt_cur LOOP
494 IF exempt_rec.EFFECTIVE_TO IS NOT NULL THEN
495 IF P_EFFECTIVE_TO < exempt_rec.EFFECTIVE_TO THEN
496 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
497 arp_util_tax.debug('Error: "ZX_EXEMPT_EXISTS_FOR_REG for the Registration with Regime : " ' || P_TAX_REGIME_CODE || ' and Tax: ' ||P_TAX || ' and Jurisdiction: ' || P_TAX_JURISDICTION_CODE);
498 EXIT;
499 END IF;
500 ELSE --exempt_rec.EFFECTIVE_TO IS NULL
501 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
505 END LOOP;
502 arp_util_tax.debug('Error: "ZX_EXEMPT_EXISTS_FOR_REG for the Registration with Regime : " ' || P_TAX_REGIME_CODE || ' and Tax: ' ||P_TAX || ' and Jurisdiction: ' || P_TAX_JURISDICTION_CODE);
503 EXIT;
504 END IF; -- exempt_rec.EFFECTIVE_TO
506 END IF; -- end P_EFFECTIVE_TO
507 */
508 -----Commented out since exemption is not based on registrations
509 --Check the Default Registration status and accordingly populates corresponding Registration Number to PartyTaxProfile entity
510 IF P_DEFAULT_REGISTRATION_FLAG = 'Y' THEN
511 OPEN default_reg_cur;
512 FETCH default_reg_cur INTO L_DEF_REGISTRATION_ID;
513 --If this is the only defaulted registration then update PTP
514 IF (default_reg_cur%notfound) AND (X_RETURN_STATUS = FND_API.G_RET_STS_SUCCESS) then
515 --Update PTP
516 UPDATE ZX_PARTY_TAX_PROFILE SET Rep_Registration_Number = P_REGISTRATION_NUMBER,
517 Object_Version_Number = Object_Version_Number + 1
518 WHERE PARTY_TAX_PROFILE_ID = P_PARTY_TAX_PROFILE_ID;
519
520 ELSE
521 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
522 arp_util_tax.debug('Error: "Already a Regiatration has been defaulted for Regime : " ' || P_TAX_REGIME_CODE || ' and Tax: ' ||P_TAX || ' and Jurisdiction: ' || P_TAX_JURISDICTION_CODE);
523 END IF;
524 CLOSE default_reg_cur;
525 END IF;--end P_DEFAULT_REGISTRATION_FLAG
526 --Update only when there is no error
527 IF X_RETURN_STATUS = FND_API.G_RET_STS_SUCCESS THEN
528 update ZX_REGISTRATIONS set
529 REQUEST_ID = DECODE( P_REQUEST_ID, NULL, REQUEST_ID, P_REQUEST_ID ),
530 ATTRIBUTE1 = DECODE( P_ATTRIBUTE1, NULL, ATTRIBUTE1, P_ATTRIBUTE1 ),
531 ATTRIBUTE2 = DECODE( P_ATTRIBUTE2, NULL, ATTRIBUTE2, P_ATTRIBUTE2 ),
532 ATTRIBUTE3 = DECODE( P_ATTRIBUTE3, NULL, ATTRIBUTE3, P_ATTRIBUTE3 ),
533 ATTRIBUTE4 = DECODE( P_ATTRIBUTE4, NULL, ATTRIBUTE4, P_ATTRIBUTE4 ),
534 ATTRIBUTE5 = DECODE( P_ATTRIBUTE5, NULL, ATTRIBUTE5, P_ATTRIBUTE5 ),
535 ATTRIBUTE6 = DECODE( P_ATTRIBUTE6, NULL, ATTRIBUTE6, P_ATTRIBUTE6 ),
536 VALIDATION_RULE = DECODE( P_VALIDATION_RULE, NULL, VALIDATION_RULE, P_VALIDATION_RULE ),
537 ROUNDING_RULE_CODE = DECODE( P_ROUNDING_RULE_CODE, NULL, ROUNDING_RULE_CODE, P_ROUNDING_RULE_CODE ),
538 TAX_JURISDICTION_CODE = DECODE( P_TAX_JURISDICTION_CODE, NULL, TAX_JURISDICTION_CODE, P_TAX_JURISDICTION_CODE ),
539 SELF_ASSESS_FLAG = DECODE( P_SELF_ASSESS_FLAG, NULL, SELF_ASSESS_FLAG, P_SELF_ASSESS_FLAG ),
540 REGISTRATION_STATUS_CODE = DECODE( P_REGISTRATION_STATUS_CODE, NULL, REGISTRATION_STATUS_CODE, P_REGISTRATION_STATUS_CODE ),
541 REGISTRATION_SOURCE_CODE = DECODE( P_REGISTRATION_SOURCE_CODE, NULL, REGISTRATION_SOURCE_CODE, P_REGISTRATION_SOURCE_CODE ),
542 REGISTRATION_REASON_CODE = DECODE( P_REGISTRATION_REASON_CODE, NULL, REGISTRATION_REASON_CODE, P_REGISTRATION_REASON_CODE ),
543 TAX = DECODE( P_TAX, NULL, TAX, P_TAX ),
544 TAX_REGIME_CODE = DECODE( P_TAX_REGIME_CODE, NULL, TAX_REGIME_CODE, P_TAX_REGIME_CODE ),
545 INCLUSIVE_TAX_FLAG = DECODE( P_INCLUSIVE_TAX_FLAG, NULL, INCLUSIVE_TAX_FLAG, P_INCLUSIVE_TAX_FLAG ),
546 EFFECTIVE_FROM = DECODE( P_EFFECTIVE_FROM, NULL, EFFECTIVE_FROM, P_EFFECTIVE_FROM ),
547 EFFECTIVE_TO = DECODE( P_EFFECTIVE_TO, NULL, EFFECTIVE_TO, P_EFFECTIVE_TO ),
548 REP_PARTY_TAX_NAME = DECODE( P_REP_PARTY_TAX_NAME, NULL, REP_PARTY_TAX_NAME, P_REP_PARTY_TAX_NAME ),
549 DEFAULT_REGISTRATION_FLAG = DECODE( P_DEFAULT_REGISTRATION_FLAG, NULL, DEFAULT_REGISTRATION_FLAG, P_DEFAULT_REGISTRATION_FLAG ),
550 BANK_ACCOUNT_NUM = DECODE( P_BANK_ACCOUNT_NUM, NULL, BANK_ACCOUNT_NUM, P_BANK_ACCOUNT_NUM ),
551 RECORD_TYPE_CODE = DECODE( P_RECORD_TYPE_CODE, NULL, RECORD_TYPE_CODE, P_RECORD_TYPE_CODE ),
552 LEGAL_LOCATION_ID = DECODE( P_LEGAL_LOCATION_ID, NULL, LEGAL_LOCATION_ID, P_LEGAL_LOCATION_ID ),
553 TAX_AUTHORITY_ID = DECODE( P_TAX_AUTHORITY_ID, NULL, TAX_AUTHORITY_ID, P_TAX_AUTHORITY_ID ),
554 REP_TAX_AUTHORITY_ID = DECODE( P_REP_TAX_AUTHORITY_ID, NULL, REP_TAX_AUTHORITY_ID, P_REP_TAX_AUTHORITY_ID ),
555 COLL_TAX_AUTHORITY_ID = DECODE( P_COLL_TAX_AUTHORITY_ID, NULL, COLL_TAX_AUTHORITY_ID, P_COLL_TAX_AUTHORITY_ID ),
556 REGISTRATION_TYPE_CODE = DECODE( P_REGISTRATION_TYPE_CODE, NULL, REGISTRATION_TYPE_CODE, P_REGISTRATION_TYPE_CODE ),
557 REGISTRATION_NUMBER = DECODE( P_REGISTRATION_NUMBER, NULL, REGISTRATION_NUMBER, P_REGISTRATION_NUMBER ),
558 PARTY_TAX_PROFILE_ID = DECODE( P_PARTY_TAX_PROFILE_ID, NULL, PARTY_TAX_PROFILE_ID, P_PARTY_TAX_PROFILE_ID ),
559 LEGAL_REGISTRATION_ID = DECODE( P_LEGAL_REGISTRATION_ID, NULL, LEGAL_REGISTRATION_ID, P_LEGAL_REGISTRATION_ID ),
560 BANK_ID = DECODE( P_BANK_ID, NULL, BANK_ID, P_BANK_ID ),
561 BANK_BRANCH_ID = DECODE( P_BANK_BRANCH_ID, NULL, BANK_BRANCH_ID, P_BANK_BRANCH_ID ),
562 ACCOUNT_SITE_ID = DECODE( P_ACCOUNT_SITE_ID, NULL, ACCOUNT_SITE_ID, P_ACCOUNT_SITE_ID ),
563 ATTRIBUTE14 = DECODE( P_ATTRIBUTE14, NULL, ATTRIBUTE14, P_ATTRIBUTE14 ),
564 ATTRIBUTE15 = DECODE( P_ATTRIBUTE15, NULL, ATTRIBUTE15, P_ATTRIBUTE15 ),
565 ATTRIBUTE_CATEGORY = DECODE( P_ATTRIBUTE_CATEGORY, NULL, ATTRIBUTE_CATEGORY, P_ATTRIBUTE_CATEGORY ),
566 PROGRAM_LOGIN_ID = DECODE( P_PROGRAM_LOGIN_ID, NULL, PROGRAM_LOGIN_ID, P_PROGRAM_LOGIN_ID ),
567 ACCOUNT_ID = DECODE( P_ACCOUNT_ID, NULL, ACCOUNT_ID, P_ACCOUNT_ID ),
568 TAX_CLASSIFICATION_CODE = DECODE( P_TAX_CLASSIFICATION_CODE, NULL, TAX_CLASSIFICATION_CODE, P_TAX_CLASSIFICATION_CODE ),
569 ATTRIBUTE7 = DECODE( P_ATTRIBUTE7, NULL, ATTRIBUTE7, P_ATTRIBUTE7 ),
570 ATTRIBUTE8 = DECODE( P_ATTRIBUTE8, NULL, ATTRIBUTE8, P_ATTRIBUTE8 ),
571 ATTRIBUTE9 = DECODE( P_ATTRIBUTE9, NULL, ATTRIBUTE9, P_ATTRIBUTE9 ),
572 ATTRIBUTE10 = DECODE( P_ATTRIBUTE10, NULL, ATTRIBUTE10, P_ATTRIBUTE10 ),
573 ATTRIBUTE11 = DECODE( P_ATTRIBUTE11, NULL, ATTRIBUTE11, P_ATTRIBUTE11 ),
574 ATTRIBUTE12 = DECODE( P_ATTRIBUTE12, NULL, ATTRIBUTE12, P_ATTRIBUTE12 ),
575 ATTRIBUTE13 = DECODE( P_ATTRIBUTE13, NULL, ATTRIBUTE13, P_ATTRIBUTE13 ),
576 LAST_UPDATE_DATE = sysdate,
577 LAST_UPDATED_BY = FND_GLOBAL.User_ID,
578 LAST_UPDATE_LOGIN = FND_GLOBAL.Login_ID,
579 Object_Version_Number = Object_Version_Number + 1
580 where REGISTRATION_ID = P_REGISTRATION_ID;
581 if (sql%notfound) then
582 --Set x_return_status param
583 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
584 arp_util_tax.debug('Error: "The Registration row has not been updated for Regime : " ' || P_TAX_REGIME_CODE || ' and Tax: ' ||P_TAX || ' and Jurisdiction: ' || P_TAX_JURISDICTION_CODE);
585 end if;--end sql%notfound
586 END IF;--end X_RETURN_STATUS
587 end UPDATE_ROW;
588
589 procedure DELETE_ROW (
590 P_REGISTRATION_ID in NUMBER,
591 X_RETURN_STATUS out NOCOPY VARCHAR2
592 ) is
593 begin
594 --Initialise x_return_status variable
595 X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
596 --Delete the row
597 delete from ZX_REGISTRATIONS
598 where REGISTRATION_ID = P_REGISTRATION_ID;
599
600 if (sql%notfound) then
601 --Set x_return_status param
602 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
603 raise no_data_found;
604 end if;
605 end DELETE_ROW;
606
607 end ZX_REGISTRATIONS_PKG;