[Home] [Help]
PACKAGE BODY: APPS.ZX_PTP_IMPORT
Source
1 PACKAGE BODY zx_ptp_import AS
2 /* $Header: zxptpimportb.pls 120.8.12020000.2 2012/12/03 10:41:36 srajapar noship $ */
3
4 -- ==========================================================================
5 -- Package variables
6 -- ==========================================================================
7
8 G_PKG_NAME CONSTANT VARCHAR2(30):='ZX_PTP_IMPORT';
9 G_PROC_NAME VARCHAR2(30);
10 G_BATCH_ID NUMBER(22);
11 G_RETURN_STATUS VARCHAR2(1);
12 G_MSG_DATA VARCHAR2(2000);
13 G_CUST_INTF_TABLE VARCHAR2(30);
14 G_RECORD_TYPE_CODE VARCHAR2(30);
15
16 G_INTF_PTP_TABLE_NAME VARCHAR2(30);
17 G_INTF_REG_TABLE_NAME VARCHAR2(30);
18 G_INTF_EXE_TABLE_NAME VARCHAR2(30);
19 G_INTF_RCA_TABLE_NAME VARCHAR2(30);
20 G_INTF_CUS_TABLE_NAME VARCHAR2(30);
21 G_INTF_SUP_TABLE_NAME VARCHAR2(30);
22 G_INTF_SUP_SITE_TABLE_NAME VARCHAR2(30);
23
24 G_USER_ID fnd_user.user_id%TYPE;
25 G_LOGIN_ID fnd_user.last_update_login%TYPE;
26 G_REQUEST_ID NUMBER;
27 G_PROG_APPID zx_party_tax_profile.program_application_id%TYPE;
28 G_PROG_ID zx_party_tax_profile.program_id%TYPE;
29 G_SYSDATE DATE;
30 G_SESSION_LANG VARCHAR2(99);
31
32 G_MISS_CHAR VARCHAR2(1);
33 G_MISS_DATE DATE;
34 G_MISS_NUM NUMBER;
35 G_TRUE VARCHAR2(1);
36 G_FALSE VARCHAR2(1);
37
38 G_CONC_RET_STS_SUCCESS VARCHAR2(1);
39 G_CONC_RET_STS_WARNING VARCHAR2(1);
40 G_CONC_RET_STS_ERROR VARCHAR2(1);
41 G_CONC_RET_STS_UNEXP_ERROR VARCHAR2(1);
42 G_PROG_INT_VAL NUMBER(1);
43
44 --
45 -- debug parameter constants
46 --
47 G_DEBUG_LEVEL_EXCEPTION CONSTANT NUMBER(1):= FND_LOG.LEVEL_EXCEPTION;
48 G_DEBUG_LEVEL_PROCEDURE CONSTANT NUMBER(1):= FND_LOG.LEVEL_PROCEDURE;
49 G_DEBUG_LEVEL_STATEMENT CONSTANT NUMBER(1):= FND_LOG.LEVEL_STATEMENT;
50 G_CURRENT_DEBUG_LEVEL_SET NUMBER(5):= FND_LOG.G_CURRENT_RUNTIME_LEVEL;
51 G_DEBUG_LOG_HEADER VARCHAR2(30):= 'ZX.PLSQL.'||G_PKG_NAME||'.';
52 G_DEBUG_STATEMENT VARCHAR2(2000);
53
54 G_RS_IN_PROCESS NUMBER(2);
55 G_RS_ERROR NUMBER(2);
56 G_RS_TRN_COMPLETE NUMBER(2);
57 G_RS_DFF_VAL_COMPLETE NUMBER(2);
58 G_RS_VALID NUMBER(2);
59
60 G_ES_PTP_MAND_PARAM_MISSING NUMBER;
61 G_ES_PTP_TRANS_TYPE_INVALID NUMBER;
62 G_ES_PTP_PARTY_TYPE_INVALID NUMBER;
63 G_ES_PTP_PARTY_INVALID NUMBER;
64 G_ES_PTP_PARTY_NAME_DUP NUMBER;
65 G_ES_PTP_COUNTRY_INVALID NUMBER;
66 G_ES_PTP_REG_NUM_INVALID NUMBER;
67 G_ES_PTP_REG_TYPE_INVALID NUMBER;
68 G_ES_PTP_ROUND_LEVEL_INVALID NUMBER;
69 G_ES_PTP_ROUND_RULE_INVALID NUMBER;
70 G_ES_PTP_TAX_CLASS_INVALID NUMBER;
71 G_ES_PTP_DUP_INTF_RECORD NUMBER;
72 G_ES_PTP_INC_FLG_INVALID NUMBER;
73 G_ES_PTP_APP_FLG_INVALID NUMBER;
74 G_ES_PTP_OFF_FLG_RECORD NUMBER;
75 G_ES_PTP_REG_NUM_DUP NUMBER;
76
77 G_ES_REG_MAND_PARAM_MISSING NUMBER;
78 G_ES_REG_DUP_INTF_RECORD NUMBER;
79 G_ES_REG_TRANS_TYPE_INVALID NUMBER;
80 G_ES_REG_DATE_RANGE_INVALID NUMBER;
81 G_ES_REG_REG_TYPE_INVALID NUMBER;
82 G_ES_REG_REG_STAT_INVALID NUMBER;
83 G_ES_REG_REG_SRC_INVALID NUMBER;
84 G_ES_REG_REG_RSN_INVALID NUMBER;
85 G_ES_REG_TAX_AUT_INVALID NUMBER;
86 G_ES_REG_ROUND_RULE_INVALID NUMBER;
87 G_ES_REG_INC_FLG_INVALID NUMBER;
88 G_ES_REG_LGL_LOC_INVALID NUMBER;
89 G_ES_REG_DEFREG_FLG_INVALID NUMBER;
90 G_ES_REG_TAX_REG_INVALID NUMBER;
91 G_ES_REG_TAX_PARAM_INVALID NUMBER;
92 G_ES_REG_TAX_JUR_INVALID NUMBER;
93 G_ES_REG_MULT_DEF_FLAG NUMBER;
94 G_ES_REG_REG_NUM_DUP NUMBER;
95 G_ES_REG_REG_NUM_INVALID NUMBER;
96 G_ES_REG_TAX_AUT_REQ NUMBER;
97 G_ES_REG_DATE_OVERLAP NUMBER;
98
99 G_ES_RCA_MAND_PARAM_MISSING NUMBER;
100 G_ES_RCA_DUP_INTF_RECORD NUMBER;
101 G_ES_RCA_TRANS_TYPE_INVALID NUMBER;
102 G_ES_RCA_ENTY_CD_INVALID NUMBER;
103 G_ES_RCA_DATE_RANGE_INVALID NUMBER;
104 G_ES_RCA_REP_TYPE_INVALID NUMBER;
105 G_ES_RCA_REP_CODE_INVALID NUMBER;
106 G_ES_RCA_REP_CODE_VAL_INVALID NUMBER;
107 G_ES_RCA_DATE_OVERLAP NUMBER;
108
109 G_ES_EXE_DFF_INVALID NUMBER;
110 G_ES_EXE_MAND_PARAM_MISSING NUMBER;
111 G_ES_EXE_TRANS_TYPE_INVALID NUMBER;
112 G_ES_EXE_EXMPT_RSN_INVALID NUMBER;
113 G_ES_EXE_EXMPT_STS_INVALID NUMBER;
114 G_ES_EXE_TAX_REG_INVALID NUMBER;
115 G_ES_EXE_CNT_OWN_INVALID NUMBER;
116 G_ES_EXE_TAX_PARAM_INVALID NUMBER;
117 G_ES_EXE_TAX_STS_INVALID NUMBER;
118 G_ES_EXE_TAX_JUR_INVALID NUMBER;
119 G_ES_EXE_TAX_RATE_INVALID NUMBER;
120 G_ES_EXE_LWR_LVL_FLG_INVALID NUMBER;
121 G_ES_EXE_DATE_RANGE_INVALID NUMBER;
122 G_ES_EXE_INV_ORG_INVALID NUMBER;
123 G_ES_EXE_INV_ITM_INVALID NUMBER;
124 G_ES_EXE_TAX_AUT_INVALID NUMBER;
125 G_ES_EXE_EXMPT_TYP_INVALID NUMBER;
126 G_ES_EXE_DATE_OVERLAP NUMBER;
127
128 TYPE G_DFF_ATTRIBUTES_REC IS RECORD
129 (attribute1 VARCHAR2(1)
130 ,attribute2 VARCHAR2(1)
131 ,attribute3 VARCHAR2(1)
132 ,attribute4 VARCHAR2(1)
133 ,attribute5 VARCHAR2(1)
134 ,attribute6 VARCHAR2(1)
135 ,attribute7 VARCHAR2(1)
136 ,attribute8 VARCHAR2(1)
137 ,attribute9 VARCHAR2(1)
138 ,attribute10 VARCHAR2(1)
139 ,attribute11 VARCHAR2(1)
140 ,attribute12 VARCHAR2(1)
141 ,attribute13 VARCHAR2(1)
142 ,attribute14 VARCHAR2(1)
143 ,attribute15 VARCHAR2(1)
144 );
145
146 G_DFF_USAGE_RECORD G_DFF_ATTRIBUTES_REC;
147
148
149 -- ==========================================================================
150 -- Private Functions and Procedure Declarations
151 -- ==========================================================================
152
153 PROCEDURE SetGlobals;
154 PROCEDURE SetProcessConstants;
155 PROCEDURE log_now (p_log_level IN NUMBER
156 ,p_message IN VARCHAR2
157 );
158 PROCEDURE ProcessPtyTxProfileRecord;
159 PROCEDURE ProcessRegistrationRecord;
160 PROCEDURE ProcessExemptionRecord;
161 PROCEDURE ProcessRepCodeAssocRecord;
162 PROCEDURE PtpValueToIdConversion;
163 PROCEDURE RegValueToIdConversion;
164 PROCEDURE ExemptValueToIdConversion;
165 PROCEDURE AssocValueToIdConversion;
166 PROCEDURE TRNValidation(p_table_name IN VARCHAR2,
167 p_column_name IN VARCHAR2,
168 p_country_code IN VARCHAR2
169 );
170 PROCEDURE SyncUpRegNumberToPTP;
171 PROCEDURE DupTRNValidation;
172 PROCEDURE LogErrorToTable;
173 PROCEDURE PopulateProductionTables;
174 PROCEDURE ResetRecStatusForChildTables;
175 PROCEDURE performDFFValidation;
176 PROCEDURE resetDFFFieldUsage;
177 FUNCTION getAttrValue(p_zx_exempt_rec IN zx_exemptions_int%ROWTYPE
178 ,p_column_name IN VARCHAR2
179 ) RETURN VARCHAR2 ;
180
181
182 -- ==========================================================================
183 -- Private Functions and Procedure
184 -- ==========================================================================
185
186 --
187 -- Set Global Variables that will be used by the programs
188 --
189 ------------------------------------------------------------------------------
190 PROCEDURE SetGlobals IS
191 BEGIN
192
193 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
194 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'SetGlobals','SetGlobals(+)');
195 END IF;
196
197 --
198 -- user values
199 --
200 G_USER_ID := FND_GLOBAL.user_id;
201 G_LOGIN_ID := FND_GLOBAL.login_id;
202 G_PROG_APPID := FND_GLOBAL.prog_appl_id;
203 G_PROG_ID := FND_GLOBAL.conc_program_id;
204 G_SYSDATE := NVL(G_SYSDATE,SYSDATE);
205 G_SESSION_LANG := USERENV('LANG');
206
207 --
208 -- package name
209 --
210 G_CUST_INTF_TABLE := 'RA_CUSTOMERS_INTERFACE_ALL';
211 G_RECORD_TYPE_CODE := 'USER_DEFINED';
212
213 --
214 -- interface table names
215 --
216 G_INTF_PTP_TABLE_NAME := 'ZX_PARTY_TAX_PROFILE_INT';
217 G_INTF_REG_TABLE_NAME := 'ZX_REGISTRATIONS_INT';
218 G_INTF_EXE_TABLE_NAME := 'ZX_EXEMPTIONS_INT';
219 G_INTF_RCA_TABLE_NAME := 'ZX_REPORT_CODES_ASSOC_INT';
220 G_INTF_CUS_TABLE_NAME := 'RA_CUSTOMERS_INTERFACE_ALL';
221 G_INTF_SUP_TABLE_NAME := 'AP_SUPPLIERS_INT';
222 G_INTF_SUP_SITE_TABLE_NAME := 'AP_SUPPLIER_SITES_INT';
223
224 --
225 -- concurrent program return status
226 --
227 G_CONC_RET_STS_SUCCESS := FND_API.G_RET_STS_SUCCESS;
228 G_CONC_RET_STS_WARNING := 'W';
229 G_CONC_RET_STS_ERROR := FND_API.G_RET_STS_ERROR;
230 G_CONC_RET_STS_UNEXP_ERROR := FND_API.G_RET_STS_UNEXP_ERROR;
231
232 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
233 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'SetGlobals','SetGlobals(-)');
234 END IF;
235
236 EXCEPTION
237 WHEN OTHERS THEN
238 log_now (p_log_level => FND_FILE.LOG
239 ,p_message => ' Unable to intialize Globals'||SQLERRM
240 );
241 IF (G_DEBUG_LEVEL_EXCEPTION >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
242 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,G_DEBUG_LOG_HEADER||'SetGlobals',' Unable to intialize Globals'||SQLERRM);
243 END IF;
244 RAISE;
245 END SetGlobals;
246
247
248 --
249 -- Set Process Constants
250 --
251 ------------------------------------------------------------------------------
252 PROCEDURE SetProcessConstants IS
253 BEGIN
254
255 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
256 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'SetProcessConstants','SetProcessConstants(+)');
257 END IF;
258
259 --
260 -- record status values
261 --
262 G_RS_IN_PROCESS := 1;
263 G_RS_ERROR := 3;
264 G_RS_TRN_COMPLETE := 4;
265 G_RS_DFF_VAL_COMPLETE := 8;
266 G_RS_VALID := 2;
267
268 --
269 -- Prog Internal values
270 --
271 G_PROG_INT_VAL := -1;
272
273 G_MISS_CHAR := FND_API.G_MISS_CHAR;
274 G_MISS_DATE := FND_API.G_MISS_DATE;
275 G_MISS_NUM := FND_API.G_MISS_NUM;
276 G_TRUE := FND_API.G_TRUE;
277 G_FALSE := FND_API.G_FALSE;
278
279 --
280 -- error flags for PTP records
281 --
282
283 G_ES_PTP_MAND_PARAM_MISSING := POWER(2,4);
284 G_ES_PTP_TRANS_TYPE_INVALID := POWER(2,5);
285 G_ES_PTP_PARTY_TYPE_INVALID := POWER(2,6);
286 G_ES_PTP_PARTY_INVALID := POWER(2,8);
287 G_ES_PTP_PARTY_NAME_DUP := POWER(2,9);
288 G_ES_PTP_COUNTRY_INVALID := POWER(2,10);
289 G_ES_PTP_REG_NUM_INVALID := POWER(2,11);
290 G_ES_PTP_REG_TYPE_INVALID := POWER(2,12);
291 G_ES_PTP_ROUND_LEVEL_INVALID := POWER(2,13);
292 G_ES_PTP_ROUND_RULE_INVALID := POWER(2,14);
293 G_ES_PTP_TAX_CLASS_INVALID := POWER(2,15);
294 G_ES_PTP_DUP_INTF_RECORD := POWER(2,16);
295 G_ES_PTP_INC_FLG_INVALID := POWER(2,17);
296 G_ES_PTP_APP_FLG_INVALID := POWER(2,18);
297 G_ES_PTP_OFF_FLG_RECORD := POWER(2,19);
298 G_ES_PTP_REG_NUM_DUP := POWER(2,20);
299
300 G_ES_REG_MAND_PARAM_MISSING := POWER(2,4);
301 G_ES_REG_DUP_INTF_RECORD := POWER(2,5);
302 G_ES_REG_TRANS_TYPE_INVALID := POWER(2,6);
303 G_ES_REG_DATE_RANGE_INVALID := POWER(2,8);
304 G_ES_REG_REG_TYPE_INVALID := POWER(2,9);
305 G_ES_REG_REG_STAT_INVALID := POWER(2,10);
306 G_ES_REG_REG_SRC_INVALID := POWER(2,11);
307 G_ES_REG_REG_RSN_INVALID := POWER(2,12);
308 G_ES_REG_TAX_AUT_INVALID := POWER(2,13);
309 G_ES_REG_ROUND_RULE_INVALID := POWER(2,14);
310 G_ES_REG_INC_FLG_INVALID := POWER(2,15);
311 G_ES_REG_LGL_LOC_INVALID := POWER(2,16);
312 G_ES_REG_DEFREG_FLG_INVALID := POWER(2,17);
313 G_ES_REG_TAX_REG_INVALID := POWER(2,18);
314 G_ES_REG_TAX_PARAM_INVALID := POWER(2,19);
315 G_ES_REG_TAX_JUR_INVALID := POWER(2,20);
316 G_ES_REG_MULT_DEF_FLAG := POWER(2,21);
317 G_ES_REG_REG_NUM_DUP := POWER(2,22);
318 G_ES_REG_TAX_AUT_REQ := POWER(2,23);
319 G_ES_REG_REG_NUM_INVALID := POWER(2,24);
320 G_ES_REG_DATE_OVERLAP := POWER(2,25);
321
322 G_ES_RCA_MAND_PARAM_MISSING := POWER(2,4);
323 G_ES_RCA_DUP_INTF_RECORD := POWER(2,5);
324 G_ES_RCA_TRANS_TYPE_INVALID := POWER(2,6);
325 G_ES_RCA_ENTY_CD_INVALID := POWER(2,8);
326 G_ES_RCA_DATE_RANGE_INVALID := POWER(2,9);
327 G_ES_RCA_REP_TYPE_INVALID := POWER(2,10);
328 G_ES_RCA_REP_CODE_INVALID := POWER(2,11);
329 G_ES_RCA_REP_CODE_VAL_INVALID := POWER(2,12);
330 G_ES_RCA_DATE_OVERLAP := POWER(2,13);
331
332 G_ES_EXE_DFF_INVALID := POWER(2,4);
333 G_ES_EXE_MAND_PARAM_MISSING := POWER(2,5);
334 G_ES_EXE_EXMPT_TYP_INVALID := POWER(2,6);
335 G_ES_EXE_DATE_OVERLAP := POWER(2,7);
336 G_ES_EXE_TRANS_TYPE_INVALID := POWER(2,8);
337 G_ES_EXE_EXMPT_RSN_INVALID := POWER(2,9);
338 G_ES_EXE_EXMPT_STS_INVALID := POWER(2,10);
339 G_ES_EXE_TAX_REG_INVALID := POWER(2,11);
340 G_ES_EXE_CNT_OWN_INVALID := POWER(2,12);
341 G_ES_EXE_TAX_PARAM_INVALID := POWER(2,13);
342 G_ES_EXE_TAX_STS_INVALID := POWER(2,14);
343 G_ES_EXE_TAX_JUR_INVALID := POWER(2,15);
344 G_ES_EXE_TAX_RATE_INVALID := POWER(2,16);
345 G_ES_EXE_LWR_LVL_FLG_INVALID := POWER(2,17);
346 G_ES_EXE_DATE_RANGE_INVALID := POWER(2,18);
347 G_ES_EXE_INV_ORG_INVALID := POWER(2,19);
348 G_ES_EXE_INV_ITM_INVALID := POWER(2,20);
349 G_ES_EXE_TAX_AUT_INVALID := POWER(2,21);
350
351 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
352 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'SetProcessConstants','SetProcessConstants(-)');
353 END IF;
354
355 EXCEPTION
356 WHEN OTHERS THEN
357 log_now (p_log_level => FND_FILE.LOG
358 ,p_message => ' Unable to set Global Constants '||SQLERRM
359 );
360 RAISE;
361 END SetProcessConstants;
362
363 --
364 -- write to debug into concurrent log
365 --
366 ------------------------------------------------------------------------------
367 PROCEDURE log_now (p_log_level IN NUMBER
368 ,p_message IN VARCHAR2
369 ) IS
370 BEGIN
371
372
373 --
374 -- writing to concurrent log
375 --
376
377 IF G_REQUEST_ID <> -1 THEN
378 IF p_log_level = FND_FILE.LOG THEN
379 FND_FILE.put_line(which => FND_FILE.LOG
380 ,buff => '['||To_Char(SYSDATE,'DD-MM-YYYY HH24:MI:SS')
381 ||'] '||p_message);
382 ELSE
383 FND_FILE.put_line(which => FND_FILE.OUTPUT
384 ,buff => p_message);
385 END IF;
386 END IF;
387
388 EXCEPTION
389 WHEN OTHERS THEN
390 RAISE;
391 END log_now;
392
393 --
394 -- Delete the Sucess Records from the Interface tables.
395 --
396 ------------------------------------------------------------------------------
397 PROCEDURE DELETE_SUCCESS_RECORDS
398 (p_request_id IN NUMBER
399 ,p_commit IN VARCHAR2
400 ,x_return_status OUT NOCOPY VARCHAR2
401 ,x_msg_data OUT NOCOPY VARCHAR2
402 ) IS
403 BEGIN
404
405 G_PROC_NAME := 'DELETE_SUCCESS_RECORDS';
406 log_now (p_log_level => FND_FILE.LOG
407 ,p_message => G_PROC_NAME||'(+)'
408 );
409 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
410 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||G_PROC_NAME,G_PROC_NAME||'(+)');
411 END IF;
412
413 SetGlobals();
414 SetProcessConstants();
415
416 x_return_status := G_CONC_RET_STS_SUCCESS;
417 G_REQUEST_ID := p_request_id;
418
419 ---------------------------------------
420 -- validate mandatory API parameters
421 ---------------------------------------
422 IF p_request_id IS NULL
423 OR NVL(p_commit,G_MISS_CHAR)
424 NOT IN (G_TRUE, G_FALSE)
425 THEN
426 x_return_status := G_CONC_RET_STS_ERROR;
427 FND_MESSAGE.Set_Name('ZX', 'ZX_API_INVALID_PARAM');
428 FND_MESSAGE.Set_Token('PKG_NAME', G_PKG_NAME);
429 FND_MESSAGE.Set_Token('API_NAME', G_PROC_NAME);
430 x_msg_data := FND_MESSAGE.get();
431 RETURN;
432 END IF;
433
434 G_DEBUG_STATEMENT:='Validated mandatory API parameters';
435 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
436 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||G_PROC_NAME,G_DEBUG_STATEMENT);
437 END IF;
438
439 -- create save point
440 IF FND_API.TO_BOOLEAN(p_commit) THEN
441 SAVEPOINT DEL_SUC_REC_SP;
442 END IF;
443
444 DELETE zx_party_tax_profile_int
445 WHERE request_id = G_REQUEST_ID
446 AND record_status = G_RS_VALID;
447
448 G_DEBUG_STATEMENT:='Deleted '||SQL%ROWCOUNT||' records from '||G_INTF_PTP_TABLE_NAME;
449 log_now (p_log_level => FND_FILE.LOG
450 ,p_message => G_DEBUG_STATEMENT
451 );
452 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
453 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||G_PROC_NAME,G_DEBUG_STATEMENT);
454 END IF;
455
456
457 DELETE zx_registrations_int
458 WHERE request_id = G_REQUEST_ID
459 AND record_status = G_RS_VALID;
460
461 G_DEBUG_STATEMENT:='Deleted '||SQL%ROWCOUNT||' records from '||G_INTF_REG_TABLE_NAME;
462 log_now (p_log_level => FND_FILE.LOG
463 ,p_message => G_DEBUG_STATEMENT
464 );
465 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
466 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||G_PROC_NAME,G_DEBUG_STATEMENT);
467 END IF;
468
469 DELETE zx_exemptions_int
470 WHERE request_id = G_REQUEST_ID
471 AND record_status = G_RS_VALID;
472
473 G_DEBUG_STATEMENT:='Deleted '||SQL%ROWCOUNT||' records from '||G_INTF_EXE_TABLE_NAME;
474 log_now (p_log_level => FND_FILE.LOG
475 ,p_message => G_DEBUG_STATEMENT
476 );
477 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
478 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||G_PROC_NAME,G_DEBUG_STATEMENT);
479 END IF;
480
481 DELETE zx_report_codes_assoc_int
482 WHERE request_id = G_REQUEST_ID
483 AND record_status = G_RS_VALID;
484
485 G_DEBUG_STATEMENT:='Deleted '||SQL%ROWCOUNT||' records from '||G_INTF_RCA_TABLE_NAME;
486 log_now (p_log_level => FND_FILE.LOG
487 ,p_message => G_DEBUG_STATEMENT
488 );
489 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
490 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||G_PROC_NAME,G_DEBUG_STATEMENT);
491 END IF;
492
493 IF FND_API.TO_BOOLEAN(p_commit) THEN
494 COMMIT WORK;
495 END IF;
496
497 log_now (p_log_level => FND_FILE.LOG
498 ,p_message => G_PROC_NAME||'(-)'
499 );
500 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
501 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||G_PROC_NAME,G_PROC_NAME||'(-)');
502 END IF;
503
504
505 EXCEPTION
506 WHEN OTHERS THEN
507 log_now (p_log_level => FND_FILE.LOG
508 ,p_message => G_PROC_NAME||' Exception '|| SQLERRM
509 );
510 IF FND_API.TO_BOOLEAN(p_commit) THEN
511 ROLLBACK TO DEL_SUC_REC_SP;
512 END IF;
513 x_return_status := G_CONC_RET_STS_UNEXP_ERROR;
514 x_msg_data := SQLERRM;
515 END DELETE_SUCCESS_RECORDS;
516
517 --
518 -- Reset the Record Status for Child Records
519 --
520 ------------------------------------------------------------------------------
521 PROCEDURE ResetRecStatusForChildTables IS
522 BEGIN
523
524 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
525 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'ResetRecStatusForChildTables','ResetRecStatusForChildTables(+)');
526 END IF;
527
528 UPDATE zx_party_tax_profile_int ptp_int
529 SET record_status = NULL
530 WHERE request_id = G_REQUEST_ID
531 AND record_status = G_RS_VALID
532 AND EXISTS (SELECT /*+ FIRST_ROWS(1) */ 1
533 FROM zx_party_tax_profile_int ptp_err
534 WHERE request_id = G_REQUEST_ID
535 AND NVL(record_status,G_RS_ERROR) = G_RS_ERROR
536 AND ptp_err.intf_party_reference = ptp_int.intf_party_reference
537 AND ROWNUM = 1
538 );
539
540 G_DEBUG_STATEMENT:='Updated Record Status for '||SQL%ROWCOUNT||' records from '||G_INTF_PTP_TABLE_NAME;
541 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
542 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ResetRecStatusForChildTables',G_DEBUG_STATEMENT);
543 END IF;
544
545 UPDATE zx_registrations_int reg_int
546 SET record_status = NULL
547 WHERE request_id = G_REQUEST_ID
548 AND record_status = G_RS_VALID
549 AND EXISTS (SELECT /*+ FIRST_ROWS(1) */ 1
550 FROM zx_party_tax_profile_int ptp_int
551 WHERE request_id = G_REQUEST_ID
552 AND NVL(record_status,G_RS_ERROR) = G_RS_ERROR
553 AND ptp_int.intf_ptp_reference = reg_int.intf_ptp_reference
554 AND ROWNUM = 1
555 );
556
557 G_DEBUG_STATEMENT:='Updated Record Status for '||SQL%ROWCOUNT||' records from '||G_INTF_REG_TABLE_NAME;
558 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
559 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ResetRecStatusForChildTables',G_DEBUG_STATEMENT);
560 END IF;
561
562 UPDATE zx_exemptions_int exe_int
563 SET record_status = NULL
564 WHERE request_id = G_REQUEST_ID
565 AND record_status = G_RS_VALID
566 AND EXISTS (SELECT /*+ FIRST_ROWS(1) */ 1
567 FROM zx_party_tax_profile_int ptp_int
568 WHERE request_id = G_REQUEST_ID
569 AND NVL(record_status,G_RS_ERROR) = G_RS_ERROR
570 AND ptp_int.intf_ptp_reference = exe_int.intf_ptp_reference
571 AND ROWNUM = 1
572 );
573
574 G_DEBUG_STATEMENT:='Updated Record Status for '||SQL%ROWCOUNT||' records from '||G_INTF_EXE_TABLE_NAME;
575 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
576 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ResetRecStatusForChildTables',G_DEBUG_STATEMENT);
577 END IF;
578
579 UPDATE zx_report_codes_assoc_int rca_int
580 SET record_status = NULL
581 WHERE request_id = G_REQUEST_ID
582 AND record_status = G_RS_VALID
583 AND EXISTS (SELECT /*+ FIRST_ROWS(1) */ 1
584 FROM zx_party_tax_profile_int ptp_int
585 WHERE request_id = G_REQUEST_ID
586 AND NVL(record_status,G_RS_ERROR) = G_RS_ERROR
587 AND ptp_int.intf_ptp_reference = rca_int.intf_ptp_reference
588 AND ROWNUM = 1
589 );
590
591 G_DEBUG_STATEMENT:='Updated Record Status for '||SQL%ROWCOUNT||' records from '||G_INTF_RCA_TABLE_NAME;
592 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
593 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ResetRecStatusForChildTables',G_DEBUG_STATEMENT);
594 END IF;
595
596 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
597 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'ResetRecStatusForChildTables','ResetRecStatusForChildTables(-)');
598 END IF;
599
600 EXCEPTION
601 WHEN OTHERS THEN
602 log_now (p_log_level => FND_FILE.LOG
603 ,p_message => 'ResetRecStatusForChildTables : '||SQLERRM
604 );
605 END ResetRecStatusForChildTables;
606
607 ------------------------------------------------------------------------------
608 Procedure IMPORT_PTP (
609 p_party_intf_table_name IN VARCHAR2
610 ,p_commit IN VARCHAR2
611 ,p_gather_stats IN VARCHAR2
612 ,p_validate_only IN VARCHAR2
613 ,p_insert_only IN VARCHAR2
614 ,x_return_status OUT NOCOPY VARCHAR2
615 ,x_msg_data OUT NOCOPY VARCHAR2
616 ) IS
617 ---------------------------------------------------------------------------
618 -- Start of comments
619 -- API name : Import_Ptp
620 -- Type : Protected (only for ZX Use not for customer call)
621 -- Pre-reqs : None
622 -- FUNCTION : To bulkload the Party related Tax information from the
623 -- Interface tables into Production tables after validations
624 --
625 -- Parameters:
626 -- IN :
627 --
628 --
629 -- OUT : x_return_status VARCHAR2
630 -- status of the API
631 -- 'S' if the program is success
632 -- 'W' if the program terminated successfully with atleast an
633 -- error reported onto error table
634 -- 'E' if the program has an exception
635 -- 'U' if the program has an unhandled exception
636 -- x_msg_data VARCHAR2
637 -- contains data only if return status is 'U' or 'E'
638 --
639 ---------------------------------------------------------------------------
640
641 l_temp_char_30 VARCHAR2(30);
642
643 NO_ROWS_IN_INTF_TABLE EXCEPTION;
644
645 l_msg_data VARCHAR2(4000);
646 l_msg_count NUMBER;
647 l_return_status VARCHAR2(1);
648 l_err_msg_sql VARCHAR2(4000);
649
650 BEGIN
651 ---------------------------------------
652 -- validate mandatory API parameters
653 --
654 -- NOT required as every calling program takes care
655 -- the concurrent program must be defined to make the fields mandatory
656 --
657 ---------------------------------------
658
659 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
660 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'IMPORT_PTP','IMPORT_PTP(+)');
661 END IF;
662
663 x_return_status := G_CONC_RET_STS_SUCCESS;
664
665 IF FND_API.TO_BOOLEAN(p_commit) THEN
666 SAVEPOINT IMPORT_PTP_SP;
667 END IF;
668
669 IF FND_API.TO_BOOLEAN(p_validate_only) THEN
670 BEGIN
671 SELECT 'x'
672 INTO l_temp_char_30
673 FROM ZX_PARTY_TAX_PROFILE_INT
674 WHERE NVL(record_status,G_RS_ERROR) <> G_RS_VALID
675 AND NVL(batch_id,G_MISS_NUM) =
676 NVL(G_BATCH_ID,NVL(batch_id,G_MISS_NUM))
677 AND ROWNUM = 1;
678 EXCEPTION
679 WHEN NO_DATA_FOUND THEN
680 FND_MESSAGE.Set_Name('ZX', 'ZX_BULK_NO_ROWS');
681 FND_MESSAGE.Set_Token('TABLE_NAME', G_INTF_PTP_TABLE_NAME);
682 log_now (p_log_level => FND_FILE.LOG
683 ,p_message => FND_MESSAGE.get()
684 );
685 RAISE NO_ROWS_IN_INTF_TABLE;
686 END;
687 G_DEBUG_STATEMENT:='Validate Mode : There are records to Process in PTP';
688 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
689 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'IMPORT_PTP',G_DEBUG_STATEMENT);
690 END IF;
691
692 END IF;
693
694 IF FND_API.TO_BOOLEAN(p_insert_only) THEN
695 BEGIN
696 SELECT 'x'
697 INTO l_temp_char_30
698 FROM ZX_PARTY_TAX_PROFILE_INT
699 WHERE request_id = G_REQUEST_ID
700 AND record_status = G_RS_VALID
701 AND ROWNUM = 1;
702 EXCEPTION
703 WHEN NO_DATA_FOUND THEN
704 FND_MESSAGE.Set_Name('ZX', 'ZX_BULK_NO_ROWS');
705 FND_MESSAGE.Set_Token('TABLE_NAME', G_INTF_PTP_TABLE_NAME);
706 log_now (p_log_level => FND_FILE.LOG
707 ,p_message => FND_MESSAGE.get()
708 );
709 RAISE NO_ROWS_IN_INTF_TABLE;
710 END;
711 G_DEBUG_STATEMENT:='Insert Mode : There are records to Process in PTP';
712 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
713 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'IMPORT_PTP',G_DEBUG_STATEMENT);
714 END IF;
715 END IF;
716
717 -- collect stats on the tables
718 IF FND_API.TO_BOOLEAN(p_gather_stats) THEN
719
720 SELECT owner
721 INTO l_temp_char_30
722 FROM sys.all_objects
723 WHERE object_name = G_INTF_PTP_TABLE_NAME
724 AND object_type = 'TABLE';
725
726 FND_STATS.gather_table_stats(ownname => l_temp_char_30
727 ,tabname => G_INTF_PTP_TABLE_NAME);
728 FND_STATS.gather_table_stats(ownname => l_temp_char_30
729 ,tabname => G_INTF_REG_TABLE_NAME);
730 FND_STATS.gather_table_stats(ownname => l_temp_char_30
731 ,tabname => G_INTF_EXE_TABLE_NAME);
732 FND_STATS.gather_table_stats(ownname => l_temp_char_30
733 ,tabname => G_INTF_RCA_TABLE_NAME);
734 FND_STATS.gather_table_stats(ownname => l_temp_char_30
735 ,tabname => 'ZX_ERRORS_INT');
736
737 G_DEBUG_STATEMENT:='Completed Gathering Stats on interface tables';
738 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
739 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'IMPORT_PTP',G_DEBUG_STATEMENT);
740 END IF;
741
742 END IF;
743
744 -------------------------------------
745 -- PTP record processing
746 -------------------------------------
747 IF FND_API.TO_BOOLEAN(p_validate_only) THEN
748
749 ProcessPtyTxProfileRecord();
750
751 G_DEBUG_STATEMENT:='Completed Processing Party Tax Profile Records';
752 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
753 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'IMPORT_PTP',G_DEBUG_STATEMENT);
754 END IF;
755
756 END IF;
757
758 -------------------------------------
759 -- Registration record processing
760 -------------------------------------
761 IF FND_API.TO_BOOLEAN(p_validate_only) THEN
762
763 BEGIN
764 SELECT G_INTF_REG_TABLE_NAME
765 INTO l_temp_char_30
766 FROM ZX_REGISTRATIONS_INT
767 WHERE NVL(record_status,G_RS_ERROR) <> G_RS_VALID
768 AND NVL(batch_id,G_MISS_NUM) =
769 NVL(G_BATCH_ID,NVL(batch_id,G_MISS_NUM))
770 AND ROWNUM = 1;
771
772 ProcessRegistrationRecord();
773
774 EXCEPTION
775 WHEN NO_DATA_FOUND THEN
776 l_temp_char_30 := NULL;
777 FND_MESSAGE.Set_Name('ZX', 'ZX_BULK_NO_ROWS');
778 FND_MESSAGE.Set_Token('TABLE_NAME', G_INTF_REG_TABLE_NAME);
779 log_now (p_log_level => FND_FILE.LOG
780 ,p_message => fnd_message.get()
781 );
782 END;
783
784 G_DEBUG_STATEMENT:='Completed Processing Registration Records';
785 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
786 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'IMPORT_PTP',G_DEBUG_STATEMENT);
787 END IF;
788
789 END IF;
790
791 -------------------------------------
792 -- Sync Default Registration Number onto PTP
793 -------------------------------------
794 IF FND_API.TO_BOOLEAN(p_validate_only) THEN
795
796 IF (l_temp_char_30 = G_INTF_REG_TABLE_NAME) THEN
797 SyncUpRegNumberToPTP();
798 END IF;
799
800 G_DEBUG_STATEMENT:='Completed Sync Default Registration Number onto PTP';
801 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
802 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'IMPORT_PTP',G_DEBUG_STATEMENT);
803 END IF;
804
805 END IF;
806
807
808 -------------------------------------
809 -- Duplicate Tax Registration Validation
810 -------------------------------------
811 IF FND_API.TO_BOOLEAN(p_validate_only) THEN
812
813 DupTRNValidation();
814
815 G_DEBUG_STATEMENT:='Completed Duplicate Tax Registration Validation';
816 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
817 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'IMPORT_PTP',G_DEBUG_STATEMENT);
818 END IF;
819
820 END IF;
821
822 -------------------------------------
823 -- Exemptions record processing
824 -------------------------------------
825 IF FND_API.TO_BOOLEAN(p_validate_only) THEN
826
827 BEGIN
828 SELECT G_INTF_EXE_TABLE_NAME
829 INTO l_temp_char_30
830 FROM ZX_EXEMPTIONS_INT
831 WHERE NVL(record_status,G_RS_ERROR) <> G_RS_VALID
832 AND NVL(batch_id,G_MISS_NUM) =
833 NVL(G_BATCH_ID,NVL(batch_id,G_MISS_NUM))
834 AND ROWNUM = 1;
835
836 ProcessExemptionRecord();
837
838 EXCEPTION
839 WHEN NO_DATA_FOUND THEN
840 l_temp_char_30 := NULL;
841 FND_MESSAGE.Set_Name('ZX', 'ZX_BULK_NO_ROWS');
842 FND_MESSAGE.Set_Token('TABLE_NAME', G_INTF_EXE_TABLE_NAME);
843 log_now (p_log_level => FND_FILE.LOG
844 ,p_message => fnd_message.get()
845 );
846 END;
847
848 G_DEBUG_STATEMENT:='Completed Exemptions record processing';
849 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
850 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'IMPORT_PTP',G_DEBUG_STATEMENT);
851 END IF;
852
853 END IF;
854
855 -------------------------------------
856 -- Reporting Code Association record processing
857 -------------------------------------
858 IF FND_API.TO_BOOLEAN(p_validate_only) THEN
859
860 BEGIN
861 SELECT G_INTF_RCA_TABLE_NAME
862 INTO l_temp_char_30
863 FROM ZX_REPORT_CODES_ASSOC_INT
864 WHERE NVL(record_status,G_RS_ERROR) <> G_RS_VALID
865 AND NVL(batch_id,G_MISS_NUM) =
866 NVL(G_BATCH_ID,NVL(batch_id,G_MISS_NUM))
867 AND ROWNUM = 1;
868
869 ProcessRepCodeAssocRecord();
870
871 EXCEPTION
872 WHEN NO_DATA_FOUND THEN
873 l_temp_char_30 := NULL;
874 FND_MESSAGE.Set_Name('ZX', 'ZX_BULK_NO_ROWS');
875 FND_MESSAGE.Set_Token('TABLE_NAME', G_INTF_RCA_TABLE_NAME);
876 log_now (p_log_level => FND_FILE.LOG
877 ,p_message => fnd_message.get()
878 );
879 END;
880
881 G_DEBUG_STATEMENT:='Completed Reporting Code Association record processing';
882 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
883 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'IMPORT_PTP',G_DEBUG_STATEMENT);
884 END IF;
885
886 END IF;
887
888 -------------------------------------
889 -- Populate Errors onto ZX_ERRORS_INT record processing
890 -------------------------------------
891 IF FND_API.TO_BOOLEAN(p_validate_only) THEN
892
893 LogErrorToTable();
894
895 G_DEBUG_STATEMENT:='Populated Errors onto ZX_ERRORS_INT record processing';
896 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
897 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'IMPORT_PTP',G_DEBUG_STATEMENT);
898 END IF;
899
900 END IF;
901
902 -------------------------------------
903 -- Populate Errors onto ZX_ERRORS_INT record processing
904 -------------------------------------
905 IF FND_API.TO_BOOLEAN(p_validate_only) THEN
906
907 ResetRecStatusForChildTables();
908
909 G_DEBUG_STATEMENT:='Populated Errors onto ZX_ERRORS_INT record processing';
910 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
911 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'IMPORT_PTP',G_DEBUG_STATEMENT);
912 END IF;
913
914 END IF;
915 -------------------------------------
916 -- Populate all production tables
917 -------------------------------------
918 IF FND_API.to_boolean(p_insert_only) THEN
919
920 PopulateProductionTables();
921
922 G_DEBUG_STATEMENT:='Populated all production tables';
923 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
924 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'IMPORT_PTP',G_DEBUG_STATEMENT);
925 END IF;
926
927 END IF;
928
929 IF FND_API.TO_BOOLEAN(p_commit) THEN
930
931 COMMIT WORK;
932
933 G_DEBUG_STATEMENT:='All Data Committed';
934 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
935 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'IMPORT_PTP',G_DEBUG_STATEMENT);
936 END IF;
937
938 END IF;
939
940 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
941 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'IMPORT_PTP','IMPORT_PTP(-)');
942 END IF;
943
944 EXCEPTION
945 WHEN NO_ROWS_IN_INTF_TABLE THEN
946
947 x_return_status := G_CONC_RET_STS_SUCCESS;
948 x_msg_data := NULL;
949 IF FND_API.TO_BOOLEAN(p_commit) THEN
950 ROLLBACK TO IMPORT_PTP_SP;
951 END IF;
952
953 WHEN OTHERS THEN
954 log_now (p_log_level => FND_FILE.LOG
955 ,p_message => 'IMPORT_PTP'||' : '||SQLERRM
956 );
957 IF FND_API.TO_BOOLEAN(p_commit) THEN
958 ROLLBACK TO IMPORT_PTP_SP;
959 END IF;
960 x_return_status := G_CONC_RET_STS_UNEXP_ERROR;
961 x_msg_data := SQLERRM;
962 END IMPORT_PTP;
963
964 ------------------------------------------------------------------------------
965 ------------------------------------------------------------------------------
966 PROCEDURE ProcessPtyTxProfileRecord IS
967
968 CURSOR get_country_codes IS
969 SELECT DISTINCT country_code
970 FROM zx_party_tax_profile_int
971 WHERE record_status = G_RS_IN_PROCESS
972 AND request_id = G_REQUEST_ID
973 AND country_code IN ('TW','SK','SI','SE','RU','PT','PL','NL','MT',
974 'LV','LU','LT','IT','IE','HU','GR','GB','FR',
975 'FI','ES','EE','DK','DE','CY','CO','CL','CH',
976 'AR','AT','BE','BR')
977 AND BITAND(error_number,G_ES_PTP_COUNTRY_INVALID) = 0;
978
979 l_date1 DATE;
980 l_date2 DATE;
981 l_date3 DATE;
982 l_date4 DATE;
983 l_date5 DATE;
984
985 BEGIN
986
987 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
988 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'ProcessPtyTxProfileRecord','ProcessPtyTxProfileRecord(+)');
989 END IF;
990
991 l_date1 := SYSDATE;
992
993 -------------------------
994 -- Populate default values
995 -------------------------
996 UPDATE zx_party_tax_profile_int
997 SET request_id = G_REQUEST_ID
998 ,record_status = G_RS_IN_PROCESS
999 ,dml_type = UPPER(dml_type)
1000 ,prog_int_char1 = NULL
1001 ,prog_int_num1 = 0
1002 ,error_number = 0
1003 WHERE NVL(record_status,G_RS_ERROR) <> G_RS_VALID
1004 AND NVL(batch_id,G_MISS_NUM) =
1005 NVL(G_BATCH_ID,NVL(batch_id,G_MISS_NUM));
1006
1007 G_DEBUG_STATEMENT:='Populated default values onto '||SQL%ROWCOUNT||' records';
1008 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1009 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ProcessPtyTxProfileRecord',G_DEBUG_STATEMENT);
1010 END IF;
1011
1012 -------------------------
1013 -- Check Mandatory Paramters
1014 -------------------------
1015 UPDATE zx_party_tax_profile_int
1016 SET error_number = G_ES_PTP_MAND_PARAM_MISSING
1017 WHERE request_id = G_REQUEST_ID
1018 AND record_status = G_RS_IN_PROCESS
1019 AND party_id IS NULL
1020 AND party_name IS NULL
1021 AND intf_party_reference IS NULL
1022 AND intf_party_site_reference IS NULL;
1023
1024 G_DEBUG_STATEMENT:='Mandatory Parameters not populated onto '||SQL%ROWCOUNT||' records';
1025 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1026 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ProcessPtyTxProfileRecord',G_DEBUG_STATEMENT);
1027 END IF;
1028
1029 -------------------------
1030 -- Duplicate records checking
1031 -------------------------
1032
1033 UPDATE zx_party_tax_profile_int orig
1034 SET error_number = error_number + G_ES_PTP_DUP_INTF_RECORD,
1035 record_status = G_RS_ERROR
1036 WHERE request_id = G_REQUEST_ID
1037 AND record_status = G_RS_IN_PROCESS
1038 AND EXISTS (SELECT /*+ FIRST_ROWS(1) */ 1
1039 FROM zx_party_tax_profile_int dup
1040 WHERE dup.rowid <> orig.rowid
1041 AND dup.request_id = G_REQUEST_ID
1042 AND dup.record_status = G_RS_IN_PROCESS
1043 AND NVL(dup.intf_party_reference,G_MISS_CHAR) =
1044 NVL(orig.intf_party_reference,G_MISS_CHAR)
1045 AND NVL(dup.intf_party_site_reference,G_MISS_CHAR) =
1046 NVL(orig.intf_party_site_reference,G_MISS_CHAR)
1047 AND dup.party_type_code = orig.party_type_code
1048 AND ROWNUM = 1
1049 );
1050
1051 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Duplicate records found';
1052 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1053 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ProcessPtyTxProfileRecord',G_DEBUG_STATEMENT);
1054 END IF;
1055
1056 -------------------------
1057 -- Value to Id Conversion
1058 -------------------------
1059
1060 l_date2 := SYSDATE;
1061 PtpValueToIdConversion();
1062 l_date3 := SYSDATE;
1063
1064 G_DEBUG_STATEMENT:='Completed Value to Id Conversion for PTP';
1065 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1066 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ProcessPtyTxProfileRecord',G_DEBUG_STATEMENT);
1067 END IF;
1068
1069 ------------------
1070 -- TRN Validations
1071 ------------------
1072
1073 UPDATE zx_party_tax_profile_int ptp_int
1074 SET PROG_INT_NUM1 = G_PROG_INT_VAL
1075 WHERE request_id = G_REQUEST_ID
1076 AND (country_code IS NULL OR registration_number IS NULL)
1077 AND record_status = G_RS_IN_PROCESS;
1078
1079 --Validation Per Country
1080 FOR rec in get_country_codes LOOP
1081 TRNValidation(p_table_name => G_INTF_PTP_TABLE_NAME
1082 ,p_column_name => 'country_code'
1083 ,p_country_code => rec.COUNTRY_CODE
1084 );
1085 END LOOP;
1086
1087 -- Final Updation of the Record Status and error Codes
1088
1089 UPDATE zx_party_tax_profile_int ptp_int
1090 SET error_number = error_number + G_ES_PTP_REG_NUM_INVALID
1091 WHERE country_code IS NOT NULL
1092 AND country_code IN ('TW','SK','SI','SE','RU','PT','PL','NL','MT',
1093 'LV','LU','LT','IT','IE','HU','GR','GB','FR',
1094 'FI','ES','EE','DK','DE','CY','CO','CL','CH',
1095 'AR','AT','BE','BR')
1096 AND registration_number IS NOT NULL
1097 AND prog_int_num1 <> G_PROG_INT_VAL
1098 AND request_id = G_REQUEST_ID
1099 AND record_status = G_RS_IN_PROCESS;
1100 l_date4 := SYSDATE;
1101
1102 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records with invalid TRN found';
1103 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1104 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ProcessPtyTxProfileRecord',G_DEBUG_STATEMENT);
1105 END IF;
1106
1107 ---------------------------
1108 -- Record level validations
1109 ---------------------------
1110
1111 -------------------------
1112 -- NO Other Validations
1113 -------------------------
1114
1115 UPDATE zx_party_tax_profile_int ptp_int
1116 SET record_status = DECODE(error_number,0,G_RS_VALID,G_RS_ERROR),
1117 prog_int_num1 = 0
1118 WHERE request_id = G_REQUEST_ID
1119 AND record_status = G_RS_IN_PROCESS;
1120
1121 l_date5 := SYSDATE;
1122
1123 log_now (p_log_level => FND_FILE.LOG
1124 ,p_message => '+--------------------------------------------------------------------'
1125 );
1126 log_now (p_log_level => FND_FILE.LOG
1127 ,p_message => '| PERF METRICS for Processing Party Tax Profile Records '
1128 );
1129 log_now (p_log_level => FND_FILE.LOG
1130 ,p_message => '| Time Taken for Value to ID Conversions '||(l_date3-l_date2)*86400||' Secs'
1131 );
1132 log_now (p_log_level => FND_FILE.LOG
1133 ,p_message => '| Time Taken for TRN Validation '||(l_date4-l_date3)*86400||' Secs'
1134 );
1135 log_now (p_log_level => FND_FILE.LOG
1136 ,p_message => '| Total Time Taken for PTP Record Processing '||(l_date5-l_date1)*86400||' Secs'
1137 );
1138 log_now (p_log_level => FND_FILE.LOG
1139 ,p_message => '+--------------------------------------------------------------------'
1140 );
1141
1142 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1143 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'ProcessPtyTxProfileRecord','ProcessPtyTxProfileRecord(-)');
1144 END IF;
1145
1146 EXCEPTION
1147 WHEN OTHERS THEN
1148 G_RETURN_STATUS := G_CONC_RET_STS_UNEXP_ERROR;
1149 G_MSG_DATA := SQLERRM;
1150 log_now (p_log_level => FND_FILE.LOG
1151 ,p_message => 'ProcessPtyTxProfileRecord'||' : '||SQLERRM
1152 );
1153 RAISE;
1154 END ProcessPtyTxProfileRecord;
1155
1156 ------------------------------------------------------------------------------
1157 ------------------------------------------------------------------------------
1158 ------------------------------------------------------------------------------
1159 PROCEDURE PtpValueToIdConversion IS
1160 BEGIN
1161
1162 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1163 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'PtpValueToIdConversion','PtpValueToIdConversion(+)');
1164 END IF;
1165
1166 UPDATE zx_party_tax_profile_int
1167 SET error_number = error_number + G_ES_PTP_TRANS_TYPE_INVALID
1168 WHERE record_status = G_RS_IN_PROCESS
1169 AND request_id = G_REQUEST_ID
1170 AND dml_type <> 'CREATE';
1171
1172 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records with invalid dml_type found';
1173 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1174 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'PtpValueToIdConversion',G_DEBUG_STATEMENT);
1175 END IF;
1176
1177 UPDATE zx_party_tax_profile_int
1178 SET error_number = error_number + G_ES_PTP_PARTY_TYPE_INVALID
1179 WHERE record_status = G_RS_IN_PROCESS
1180 AND request_id = G_REQUEST_ID
1181 AND party_type_code NOT IN ('THIRD_PARTY','THIRD_PARTY_SITE');
1182
1183 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records with invalid party_type_code found';
1184 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1185 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'PtpValueToIdConversion',G_DEBUG_STATEMENT);
1186 END IF;
1187
1188 -- value to id conversion for party_id Only for DML TYpe = 'UPDATE'
1189 -- written for future use at the time of creation
1190 UPDATE zx_party_tax_profile_int intf
1191 SET error_number = error_number + G_ES_PTP_PARTY_INVALID
1192 WHERE record_status = G_RS_IN_PROCESS
1193 AND request_id = G_REQUEST_ID
1194 AND party_type_code = 'THIRD_PARTY'
1195 AND dml_type = 'UPDATE'
1196 AND ( ( party_id IS NOT NULL
1197 AND NOT EXISTS
1198 (SELECT 1 FROM hz_parties WHERE party_id = intf.party_id)
1199 )
1200 OR
1201 ( party_id IS NULL
1202 AND party_name IS NOT NULL
1203 AND NOT EXISTS
1204 (SELECT 1 FROM hz_parties WHERE party_name = intf.party_name)
1205 )
1206 OR
1207 ( party_id IS NULL
1208 AND party_name IS NULL
1209 AND intf_party_reference IS NOT NULL
1210 AND NOT EXISTS
1211 (SELECT 1 FROM hz_parties
1212 WHERE orig_system_reference = intf.intf_party_reference)
1213 )
1214 );
1215
1216 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records with invalid party_id found';
1217 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1218 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'PtpValueToIdConversion',G_DEBUG_STATEMENT);
1219 END IF;
1220
1221 UPDATE zx_party_tax_profile_int intf
1222 SET party_id = CASE WHEN party_id IS NULL AND party_name IS NOT NULL
1223 THEN (SELECT party_id
1224 FROM hz_parties
1225 WHERE party_name = intf.party_name)
1226 WHEN party_id is NULL
1227 AND party_name IS NULL
1228 AND intf_party_reference IS NOT NULL
1229 THEN (SELECT 1
1230 FROM hz_parties
1231 WHERE orig_system_reference =
1232 intf.intf_party_reference)
1233 END
1234 WHERE record_status = G_RS_IN_PROCESS
1235 AND request_id = G_REQUEST_ID
1236 AND BITAND(error_number,G_ES_PTP_PARTY_INVALID) = 0
1237 AND party_type_code = 'THIRD_PARTY'
1238 AND dml_type = 'UPDATE';
1239
1240 IF G_CUST_INTF_TABLE IN (G_INTF_SUP_TABLE_NAME,G_INTF_SUP_SITE_TABLE_NAME) THEN
1241 UPDATE zx_party_tax_profile_int
1242 SET error_number = error_number + G_ES_PTP_INC_FLG_INVALID
1243 WHERE record_status = G_RS_IN_PROCESS
1244 AND request_id = G_REQUEST_ID
1245 AND inclusive_tax_flag NOT IN ('Y','N',NULL);
1246
1247 UPDATE zx_party_tax_profile_int
1248 SET error_number = error_number + G_ES_PTP_APP_FLG_INVALID
1249 WHERE record_status = G_RS_IN_PROCESS
1250 AND request_id = G_REQUEST_ID
1251 AND process_for_applicability_flag NOT IN ('Y','N',NULL);
1252
1253 UPDATE zx_party_tax_profile_int
1254 SET error_number = error_number + G_ES_PTP_OFF_FLG_RECORD
1255 WHERE record_status = G_RS_IN_PROCESS
1256 AND request_id = G_REQUEST_ID
1257 AND allow_offset_tax_flag NOT IN ('Y','N',NULL);
1258
1259 END IF;
1260
1261 -- validating the fields country_code and country_name
1262 UPDATE zx_party_tax_profile_int ptp_int
1263 SET error_number = error_number + G_ES_PTP_COUNTRY_INVALID
1264 WHERE (( country_code IS NOT NULL
1265 AND NOT EXISTS
1266 (
1267 SELECT 1
1268 FROM fnd_territories
1269 WHERE territory_code = ptp_int.country_code
1270 )
1271 )
1272 OR
1273 ( country_code IS NULL
1274 AND country_name IS NOT NULL
1275 AND NOT EXISTS
1276 (
1277 SELECT 1
1278 FROM fnd_territories_vl
1279 WHERE territory_short_name = ptp_int.country_name
1280 )
1281 )
1282 )
1283 AND record_status = G_RS_IN_PROCESS
1284 AND request_id = G_REQUEST_ID;
1285
1286 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records with invalid country found';
1287 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1288 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'PtpValueToIdConversion',G_DEBUG_STATEMENT);
1289 END IF;
1290
1291 -- value to id conversion for registration_type_code
1292 UPDATE zx_party_tax_profile_int ptp_int
1293 SET country_code = (
1294 SELECT territory_code
1295 FROM fnd_territories_vl
1296 WHERE territory_short_name = ptp_int.country_name
1297 )
1298 WHERE record_status = G_RS_IN_PROCESS
1299 AND request_id = G_REQUEST_ID
1300 AND BITAND(error_number,G_ES_PTP_COUNTRY_INVALID) = 0
1301 AND country_code IS NULL
1302 AND country_name IS NOT NULL;
1303
1304 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records updated with country_code';
1305 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1306 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'PtpValueToIdConversion',G_DEBUG_STATEMENT);
1307 END IF;
1308
1309 -- validating the fields registration_type_code and registration_type_name
1310 UPDATE zx_party_tax_profile_int ptp_int
1311 SET error_number = error_number + G_ES_PTP_REG_TYPE_INVALID
1312 WHERE (( registration_type_code IS NOT NULL
1313 AND NOT EXISTS
1314 (
1315 SELECT 1
1316 FROM fnd_lookups fndlookup
1317 WHERE fndlookup.lookup_type = 'ZX_REGISTRATIONS_TYPE'
1318 AND NVL(fndlookup.start_date_active, SYSDATE) <= SYSDATE
1319 AND NVL(fndlookup.end_date_active, SYSDATE) >= SYSDATE
1320 AND NVL(fndlookup.enabled_flag, 'N') = 'Y'
1321 AND fndlookup.lookup_code = ptp_int.registration_type_code
1322 )
1323 )
1324 OR
1325 ( registration_type_code IS NULL
1326 AND registration_type_name IS NOT NULL
1327 AND NOT EXISTS
1328 ( SELECT 1
1329 FROM fnd_lookups fndlookup
1330 WHERE fndlookup.lookup_type = 'ZX_REGISTRATIONS_TYPE'
1331 AND NVL(fndlookup.start_date_active, SYSDATE) <= SYSDATE
1332 AND NVL(fndlookup.end_date_active, SYSDATE) >= SYSDATE
1333 AND NVL(fndlookup.enabled_flag, 'N') = 'Y'
1334 AND fndlookup.meaning = ptp_int.registration_type_name
1335 )
1336 )
1337 )
1338 AND record_status = G_RS_IN_PROCESS
1339 AND request_id = G_REQUEST_ID;
1340
1341 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records with invalid registration type found';
1342 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1343 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'PtpValueToIdConversion',G_DEBUG_STATEMENT);
1344 END IF;
1345
1346 -- value to id conversion for registration_type_code
1347 UPDATE zx_party_tax_profile_int ptp_int
1348 SET registration_type_code = (
1349 SELECT fndlookup.lookup_code
1350 FROM fnd_lookups fndlookup
1351 WHERE fndlookup.lookup_type = 'ZX_REGISTRATIONS_TYPE'
1352 AND NVL(fndlookup.start_date_active, SYSDATE) <= SYSDATE
1353 AND NVL(fndlookup.end_date_active, SYSDATE) >= SYSDATE
1354 AND NVL(fndlookup.enabled_flag, 'N') = 'Y'
1355 AND fndlookup.meaning = ptp_int.registration_type_name
1356 )
1357 WHERE record_status = G_RS_IN_PROCESS
1358 AND request_id = G_REQUEST_ID
1359 AND BITAND(error_number,G_ES_PTP_REG_TYPE_INVALID) = 0
1360 AND registration_type_code IS NULL
1361 AND ptp_int.registration_type_name IS NOT NULL;
1362
1363 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records updated with registration_type_code';
1364 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1365 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'PtpValueToIdConversion',G_DEBUG_STATEMENT);
1366 END IF;
1367
1368 -- validating the fields rounding_level_code and rounding_level_name
1369 UPDATE zx_party_tax_profile_int ptp_int
1370 SET error_number = error_number + G_ES_PTP_ROUND_LEVEL_INVALID
1371 WHERE (( rounding_level_code IS NOT NULL
1372 AND NOT EXISTS
1373 (
1374 SELECT 1
1375 FROM fnd_lookups
1376 WHERE lookup_type = 'ZX_ROUNDING_LEVEL'
1377 AND NVL(start_date_active, SYSDATE) <= SYSDATE
1378 AND NVL(end_date_active, SYSDATE) >= SYSDATE
1379 AND NVL(enabled_flag, 'N') = 'Y'
1380 AND lookup_code = ptp_int.rounding_level_code
1381 )
1382 )
1383 OR
1384 ( rounding_level_code IS NULL
1385 AND rounding_level_name IS NOT NULL
1386 AND NOT EXISTS
1387 ( SELECT 1
1388 FROM fnd_lookups
1389 WHERE lookup_type = 'ZX_ROUNDING_LEVEL'
1390 AND NVL(start_date_active, SYSDATE) <= SYSDATE
1391 AND NVL(end_date_active, SYSDATE) >= SYSDATE
1392 AND NVL(enabled_flag, 'N') = 'Y'
1393 AND meaning = ptp_int.rounding_level_name
1394 )
1395 )
1396 )
1397 AND record_status = G_RS_IN_PROCESS
1398 AND request_id = G_REQUEST_ID;
1399
1400 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records with invalid rounding level found';
1401 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1402 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'PtpValueToIdConversion',G_DEBUG_STATEMENT);
1403 END IF;
1404
1405 -- value to id conversion for rounding_level_code
1406 UPDATE zx_party_tax_profile_int ptp_int
1407 SET rounding_level_code =
1408 (
1409 SELECT lookup_code
1410 FROM fnd_lookups
1411 WHERE lookup_type = 'ZX_ROUNDING_LEVEL'
1412 AND NVL(start_date_active, SYSDATE) <= SYSDATE
1413 AND NVL(end_date_active, SYSDATE) >= SYSDATE
1414 AND NVL(enabled_flag, 'N') = 'Y'
1415 AND meaning = ptp_int.rounding_level_name
1416 )
1417 WHERE record_status = G_RS_IN_PROCESS
1418 AND request_id = G_REQUEST_ID
1419 AND BITAND(error_number,G_ES_PTP_ROUND_LEVEL_INVALID) = 0
1420 AND rounding_level_code IS NULL
1421 AND rounding_level_name IS NOT NULL;
1422
1423 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records updated with rounding_level_code';
1424 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1425 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'PtpValueToIdConversion',G_DEBUG_STATEMENT);
1426 END IF;
1427
1428 -- validating the fields rounding_rule_code and rounding_rule_name
1429 UPDATE zx_party_tax_profile_int ptp_int
1430 SET error_number = error_number + G_ES_PTP_ROUND_RULE_INVALID
1431 WHERE (( rounding_rule_code IS NOT NULL
1432 AND NOT EXISTS
1433 (
1434 SELECT 1
1435 FROM fnd_lookups
1436 WHERE lookup_type = 'ZX_ROUNDING_RULE'
1437 AND NVL(start_date_active, SYSDATE) <= SYSDATE
1438 AND NVL(end_date_active, SYSDATE) >= SYSDATE
1439 AND NVL(enabled_flag, 'N') = 'Y'
1440 AND lookup_code = ptp_int.rounding_rule_code
1441 )
1442 )
1443 OR
1444 ( rounding_rule_code IS NULL
1445 AND rounding_rule_name IS NOT NULL
1446 AND NOT EXISTS
1447 ( SELECT 1
1448 FROM fnd_lookups
1449 WHERE lookup_type = 'ZX_ROUNDING_RULE'
1450 AND NVL(start_date_active, SYSDATE) <= SYSDATE
1451 AND NVL(end_date_active, SYSDATE) >= SYSDATE
1452 AND NVL(enabled_flag, 'N') = 'Y'
1453 AND meaning = ptp_int.rounding_rule_name
1454 )
1455 )
1456 )
1457 AND record_status = G_RS_IN_PROCESS
1458 AND request_id = G_REQUEST_ID;
1459
1460 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records with invalid rounding rule found';
1461 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1462 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'PtpValueToIdConversion',G_DEBUG_STATEMENT);
1463 END IF;
1464
1465 -- value to id conversion for rounding_rule_code
1466 UPDATE zx_party_tax_profile_int ptp_int
1467 SET rounding_rule_code = (
1468 SELECT lookup_code
1469 FROM fnd_lookups
1470 WHERE lookup_type = 'ZX_ROUNDING_RULE'
1471 AND NVL(start_date_active, SYSDATE) <= SYSDATE
1472 AND NVL(end_date_active, SYSDATE) >= SYSDATE
1473 AND NVL(enabled_flag, 'N') = 'Y'
1474 AND meaning = ptp_int.rounding_rule_name
1475 )
1476 WHERE record_status = G_RS_IN_PROCESS
1477 AND request_id = G_REQUEST_ID
1478 AND BITAND(error_number,G_ES_PTP_ROUND_RULE_INVALID) = 0
1479 AND rounding_rule_code IS NULL
1480 AND rounding_rule_name IS NOT NULL;
1481
1482 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records updated with rounding_rule_code';
1483 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1484 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'PtpValueToIdConversion',G_DEBUG_STATEMENT);
1485 END IF;
1486
1487 -- validating the fields tax_classification_code and tax_classification_name
1488 UPDATE zx_party_tax_profile_int ptp_int
1489 SET error_number = error_number + G_ES_PTP_TAX_CLASS_INVALID
1490 WHERE (( tax_classification_code IS NOT NULL
1491 AND NOT EXISTS
1492 (
1493 SELECT 1
1494 FROM zx_input_classifications_v
1495 WHERE enabled_flag = 'Y'
1496 AND SYSDATE BETWEEN start_date_active
1497 AND NVL(end_date_active,SYSDATE)
1498 AND lookup_code = ptp_int.tax_classification_code
1499 UNION ALL
1500 SELECT 1
1501 FROM zx_output_classifications_v
1502 WHERE enabled_flag = 'Y'
1503 AND SYSDATE BETWEEN start_date_active
1504 AND NVL(end_date_active,SYSDATE)
1505 AND lookup_code = ptp_int.tax_classification_code
1506 )
1507 )
1508 OR
1509 ( tax_classification_code IS NULL
1510 AND tax_classification_name IS NOT NULL
1511 AND NOT EXISTS
1512 (
1513 SELECT 1
1514 FROM zx_input_classifications_v
1515 WHERE enabled_flag = 'Y'
1516 AND SYSDATE BETWEEN start_date_active
1517 AND NVL(end_date_active,SYSDATE)
1518 AND meaning = ptp_int.tax_classification_name
1519 UNION ALL
1520 SELECT 1
1521 FROM zx_output_classifications_v
1522 WHERE enabled_flag = 'Y'
1523 AND SYSDATE BETWEEN start_date_active
1524 AND NVL(end_date_active,SYSDATE)
1525 AND meaning = ptp_int.tax_classification_name
1526 )
1527 )
1528 )
1529 AND record_status = G_RS_IN_PROCESS
1530 AND request_id = G_REQUEST_ID;
1531
1532 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records with invalid Tax Classification found';
1533 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1534 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'PtpValueToIdConversion',G_DEBUG_STATEMENT);
1535 END IF;
1536
1537 -- value to id conversion for rounding_rule_code
1538 UPDATE zx_party_tax_profile_int ptp_int
1539 SET tax_classification_code = (
1540 SELECT lookup_code
1541 FROM zx_input_classifications_v
1542 WHERE enabled_flag = 'Y'
1543 AND SYSDATE BETWEEN start_date_active
1544 AND NVL(end_date_active,SYSDATE)
1545 AND meaning = ptp_int.tax_classification_name
1546 UNION
1547 SELECT lookup_code
1548 FROM zx_output_classifications_v
1549 WHERE enabled_flag = 'Y'
1550 AND SYSDATE BETWEEN start_date_active
1551 AND NVL(end_date_active,SYSDATE)
1552 AND meaning = ptp_int.tax_classification_name
1553 )
1554 WHERE record_status = G_RS_IN_PROCESS
1555 AND request_id = G_REQUEST_ID
1556 AND BITAND(error_number,G_ES_PTP_TAX_CLASS_INVALID) = 0
1557 AND tax_classification_code IS NULL
1558 AND tax_classification_name IS NOT NULL;
1559
1560 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records updated with Tax Classification code';
1561 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1562 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'PtpValueToIdConversion',G_DEBUG_STATEMENT);
1563 END IF;
1564
1565 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1566 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'PtpValueToIdConversion','PtpValueToIdConversion(-)');
1567 END IF;
1568
1569 EXCEPTION
1570 WHEN OTHERS THEN
1571 G_RETURN_STATUS := G_CONC_RET_STS_UNEXP_ERROR;
1572 G_MSG_DATA := SQLERRM;
1573 log_now (p_log_level => FND_FILE.LOG
1574 ,p_message => 'PtpValueToIdConversion'||' : '||SQLERRM
1575 );
1576 RAISE;
1577 END PtpValueToIdConversion;
1578
1579 -------------------------------------------------------------------------------
1580 -------------------------------------------------------------------------------
1581 -------------------------------------------------------------------------------
1582 PROCEDURE TRNValidation(p_table_name IN VARCHAR2,
1583 p_column_name IN VARCHAR2,
1584 p_country_code IN VARCHAR2
1585 ) IS
1586 l_const_sql VARCHAR2(2000);
1587 l_dynamic_sql VARCHAR2(4000);
1588
1589 BEGIN
1590
1591 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1592 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'TRNValidation','TRNValidation(+)');
1593 END IF;
1594
1595
1596 l_const_sql :=
1597 ' UPDATE '||p_table_name||
1598 ' SET PROG_INT_NUM1 = :G_PROG_INT_VAL
1599 WHERE request_id = :G_REQUEST_ID
1600 AND record_status = :G_RS_IN_PROCESS
1601 AND registration_number IS NOT NULL
1602 AND '||p_column_name||' = :P_COUNTRY_CODE
1603 AND BITAND(error_number,:G_ES_PTP_COUNTRY_INVALID) = 0
1604 AND prog_int_num1 <> :G_PROG_INT_VAL ';
1605
1606 --Validation for Country Code TW Replacing API validate_trn_tw
1607 IF p_country_code = 'TW' THEN
1608
1609 l_dynamic_sql := l_const_sql||
1610 q'# AND REGEXP_LIKE(registration_number,'^[[:digit:]]{9}$') #' ;
1611
1612 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1613 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
1614 END IF;
1615
1616 EXECUTE IMMEDIATE l_dynamic_sql
1617 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
1618 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL;
1619
1620 --Validation for Country Code SK Replacing API VALIDATE_TRN_SK
1621
1622 ELSIF p_country_code = 'SK' THEN
1623
1624 l_dynamic_sql := l_const_sql||
1625 q'# AND (REGEXP_LIKE(registration_number,'^(SK)[[:digit:]]*$')
1626 OR ( REGEXP_LIKE(registration_number,'^[[:digit:]]{9,12}$')
1627 AND NOT REGEXP_LIKE(registration_number,'^[[:digit:]]{11}$'))) #' ;
1628
1629 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1630 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
1631 END IF;
1632
1633 EXECUTE IMMEDIATE l_dynamic_sql
1634 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
1635 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL;
1636
1637 --Validation for Country Code SI Replacing API VALIDATE_TRN_SI
1638
1639 ELSIF p_country_code = 'SI' THEN
1640
1641 l_dynamic_sql := l_const_sql||
1642 q'# AND REGEXP_LIKE(registration_number,'^(SI)?[[:digit:]]{8}$') #' ;
1643
1644 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1645 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
1646 END IF;
1647
1648 EXECUTE IMMEDIATE l_dynamic_sql
1649 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
1650 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL;
1651
1652 --Validation for Country Code SE Replacing API VALIDATE_TRN_SE
1653
1654 ELSIF p_country_code = 'SE' THEN
1655
1656 l_dynamic_sql := l_const_sql||
1657 q'# AND REGEXP_LIKE(registration_number,'^(SE)?[[:digit:]]{10}(01)$') #' ;
1658
1659 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1660 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
1661 END IF;
1662
1663 EXECUTE IMMEDIATE l_dynamic_sql
1664 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
1665 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL;
1666
1667 --Validation for Country Code RU Replacing API VALIDATE_TRN_RU
1668
1669 ELSIF p_country_code = 'RU' THEN
1670
1671 l_dynamic_sql := l_const_sql||
1672 q'# AND LENGTH(registration_number) IN (9,10,12) #' ;
1673
1674 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1675 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
1676 END IF;
1677
1678 EXECUTE IMMEDIATE l_dynamic_sql
1679 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
1680 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL;
1681
1682 --Validation for Country Code PT Replacing API VALIDATE_TRN_PT
1683
1684 ELSIF p_country_code = 'PT' THEN
1685
1686 l_dynamic_sql := l_const_sql||
1687 q'# AND (CASE WHEN REGEXP_LIKE(registration_number,'^(PT)[[:digit:]]{9}$') THEN
1688 Mod(Mod(11-Mod(((substr(registration_number,3,1)*9) + (substr(registration_number,4,1)*8) +
1689 (substr(registration_number,5,1)*7) + (substr(registration_number,6,1)*6) +
1690 (substr(registration_number,7,1)*5) + (substr(registration_number,8,1)*4) +
1691 (substr(registration_number,9,1)*3) + (substr(registration_number,10,1)*2) +
1692 (substr(registration_number,11,1)*1)),11),11),10)
1693 ELSE :G_MISS_NUM END
1694 ) = substr(registration_number,11,1) #' ;
1695
1696 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1697 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
1698 END IF;
1699
1700 EXECUTE IMMEDIATE l_dynamic_sql
1701 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
1702 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL,G_MISS_NUM;
1703
1704 --Validation for Country Code PL Replacing API VALIDATE_TRN_PL
1705
1706 ELSIF p_country_code = 'PL' THEN
1707
1708 l_dynamic_sql := l_const_sql||
1709 q'# AND (
1710 (
1711 REGEXP_LIKE(registration_number,'^[0-9-]*$')
1712 AND Length(registration_number) IN (10,13,15)
1713 )
1714 OR
1715 (
1716 REGEXP_LIKE(registration_number,'^(PL)[0-9]*$')
1717 )
1718 ) #' ;
1719
1720 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1721 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
1722 END IF;
1723
1724 EXECUTE IMMEDIATE l_dynamic_sql
1725 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
1726 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL;
1727
1728 --Validation for Country Code NL Replacing API VALIDATE_TRN_NL
1729
1730 ELSIF p_country_code = 'NL' THEN
1731
1732 l_dynamic_sql := l_const_sql||
1733 q'# AND (CASE WHEN REGEXP_LIKE(registration_number,'^(NL)[[:digit:]]{9}(B)[[:digit:]]{2}$') THEN
1734 Mod(((substr(registration_number,3,1)*9) + (substr(registration_number,4,1)*8) +
1735 (substr(registration_number,5,1)*7) + (substr(registration_number,6,1)*6) +
1736 (substr(registration_number,7,1)*5) + (substr(registration_number,8,1)*4) +
1737 (substr(registration_number,9,1)*3) + (substr(registration_number,10,1)*2)),11)
1738 ELSE :G_MISS_NUM END
1739 ) = substr(registration_number,11,1) #' ;
1740
1741 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1742 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
1743 END IF;
1744
1745 EXECUTE IMMEDIATE l_dynamic_sql
1746 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
1747 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL,G_MISS_NUM;
1748
1749 --Validation for Country Code MT Replacing API VALIDATE_TRN_MT
1750
1751 ELSIF p_country_code = 'MT' THEN
1752
1753 l_dynamic_sql := l_const_sql||
1754 q'# AND REGEXP_LIKE(registration_number,'^(MT)?[[:digit:]]{8}$') #' ;
1755
1756 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1757 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
1758 END IF;
1759
1760 EXECUTE IMMEDIATE l_dynamic_sql
1761 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
1762 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL;
1763
1764 --Validation for Country Code LV Replacing API VALIDATE_TRN_LV
1765
1766 ELSIF p_country_code = 'LV' THEN
1767
1768 l_dynamic_sql := l_const_sql||
1769 q'# AND REGEXP_LIKE(registration_number,'^(LV)?[[:digit:]]{11}$') #' ;
1770
1771 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1772 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
1773 END IF;
1774
1775 EXECUTE IMMEDIATE l_dynamic_sql
1776 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
1777 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL;
1778
1779 --Validation for Country Code LU Replacing API VALIDATE_TRN_LU
1780
1781 ELSIF p_country_code = 'LU' THEN
1782 l_dynamic_sql := l_const_sql||
1783 q'# AND REGEXP_LIKE(registration_number,'^(LU)[[:digit:]]{8}$') #' ;
1784
1785 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1786 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
1787 END IF;
1788
1789 EXECUTE IMMEDIATE l_dynamic_sql
1790 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
1791 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL;
1792
1793 --Validation for Country Code LT Replacing API VALIDATE_TRN_LT
1794
1795 ELSIF p_country_code = 'LT' THEN
1796
1797 l_dynamic_sql := l_const_sql||
1798 q'# AND (
1799 REGEXP_LIKE(registration_number,'^(LT)?[[:digit:]]{9}$')
1800 OR
1801 REGEXP_LIKE(registration_number,'^(LT)?[[:digit:]]{12}$')
1802 ) #' ;
1803
1804 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1805 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
1806 END IF;
1807
1808 EXECUTE IMMEDIATE l_dynamic_sql
1809 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
1810 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL;
1811
1812 --Validation for Country Code IT Replacing API VALIDATE_TRN_IT
1813
1814 ELSIF p_country_code = 'IT' THEN
1815
1816 l_dynamic_sql := l_const_sql||
1817 q'# AND (CASE WHEN REGEXP_LIKE(registration_number,'^(IT)?[[:digit:]]{11}$') THEN
1818 substr(substr(registration_number,2,1)*2,1,1) + nvl(substr(substr(registration_number,2,1)*2,2,1),0) +
1819 substr(substr(registration_number,4,1)*2,1,1) + nvl(substr(substr(registration_number,4,1)*2,2,1),0) +
1820 substr(substr(registration_number,6,1)*2,1,1) + nvl(substr(substr(registration_number,6,1)*2,2,1),0) +
1821 substr(substr(registration_number,8,1)*2,1,1) + nvl(substr(substr(registration_number,8,1)*2,2,1),0) +
1822 substr(substr(registration_number,10,1)*2,1,1) + nvl(substr(substr(registration_number,10,1)*2,2,1),0) +
1823 substr(registration_number,1,1) + substr(registration_number,3,1) +
1824 substr(registration_number,5,1) + substr(registration_number,7,1) + substr(registration_number,9,1)
1825 ELSE :G_MISS_NUM END) = Decode(substr(registration_number,11,1),0,0,10-substr(registration_number,11,1)) #' ;
1826
1827 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1828 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
1829 END IF;
1830
1831 EXECUTE IMMEDIATE l_dynamic_sql
1832 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
1833 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL,G_MISS_NUM;
1834
1835 --Validation for Country Code IE Replacing API VALIDATE_TRN_IE
1836
1837 ELSIF p_country_code = 'IE' THEN
1838
1839 l_dynamic_sql := l_const_sql||
1840 q'# AND (
1841 REGEXP_LIKE(registration_number,'^(IE)((.[0-9]{5}.))[A-HJ-NP-Z]$')
1842 OR
1843 REGEXP_LIKE(registration_number,'^(IE)((..[0-9]{5}))[A-HJ-NP-Z]$')
1844 ) #' ;
1845
1846 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1847 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
1848 END IF;
1849
1850 EXECUTE IMMEDIATE l_dynamic_sql
1851 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
1852 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL;
1853
1854 --Validation for Country Code HU Replacing API VALIDATE_TRN_HU
1855
1856 ELSIF p_country_code = 'HU' THEN
1857
1858 l_dynamic_sql := l_const_sql||
1859 q'# AND (CASE WHEN REGEXP_LIKE(registration_number,'^[0-9]{8,}$') THEN
1860 mod((substr(registration_number,8,1) * 1 +
1861 substr(registration_number,7,1) * 3 +
1862 substr(registration_number,6,1) * 7 +
1863 substr(registration_number,5,1) * 9 +
1864 substr(registration_number,4,1) * 1 +
1865 substr(registration_number,3,1) * 3 +
1866 substr(registration_number,2,1) * 7 +
1867 substr(registration_number,1,1) * 9),10)
1868 ELSE :G_MISS_NUM END
1869 ) = 0 #' ;
1870
1871 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1872 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
1873 END IF;
1874
1875 EXECUTE IMMEDIATE l_dynamic_sql
1876 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
1877 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL,G_MISS_NUM;
1878
1879 --Validation for Country Code GR Replacing API VALIDATE_TRN_GR
1880
1881 ELSIF p_country_code = 'GR' THEN
1882
1883 l_dynamic_sql := l_const_sql||
1884 q'# AND (CASE WHEN REGEXP_LIKE(registration_number,'^(GR|EL)?[[:digit:]]{9}$') THEN
1885 mod(mod(((substr(registration_number,3,1) * power(2,8)) +
1886 (substr(registration_number,4,1) * power(2,7)) +
1887 (substr(registration_number,5,1) * power(2,6)) +
1888 (substr(registration_number,6,1) * power(2,5)) +
1889 (substr(registration_number,7,1) * power(2,4)) +
1890 (substr(registration_number,8,1) * power(2,3)) +
1891 (substr(registration_number,9,1) * power(2,2)) +
1892 (substr(registration_number,10,1) * power(2,1))),11),10)
1893 ELSE :G_MISS_NUM END) = substr(registration_number,11,1) #' ;
1894
1895 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1896 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
1897 END IF;
1898
1899 EXECUTE IMMEDIATE l_dynamic_sql
1900 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
1901 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL,G_MISS_NUM;
1902
1903 --Validation for Country Code GB Replacing API VALIDATE_TRN_GB
1904
1905 ELSIF p_country_code = 'GB' THEN
1906 --CASE 1
1907 l_dynamic_sql := l_const_sql||
1908 q'# AND ((REGEXP_LIKE(registration_number,'^(GB)(GD)[[:digit:]]{3}$')
1909 AND substr(registration_number,5)>499)
1910 OR
1911 (REGEXP_LIKE(registration_number,'^(GB)(HA)[[:digit:]]{3}$')
1912 AND substr(registration_number,5) BETWEEN 500 AND 999)
1913 ) #' ;
1914
1915 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1916 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
1917 END IF;
1918
1919 EXECUTE IMMEDIATE l_dynamic_sql
1920 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
1921 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL;
1922
1923 --CASE 2
1924 l_dynamic_sql := l_const_sql||
1925 q'# AND 1= (CASE WHEN (REGEXP_LIKE(registration_number,'^(GB)[[:digit:]]{9}$') OR
1926 REGEXP_LIKE(registration_number,'^(GB)[[:digit:]]{12}$')) THEN
1927 (SELECT 1
1928 FROM DUAL
1929 CONNECT BY LEVEL<8
1930 HAVING (Mod(SUM(SUBSTR(registration_number,LEVEL+2,1)*(9-LEVEL)),97)-97 + SUBSTR(registration_number,-2,2) = 0) OR
1931 (Mod(SUM(SUBSTR(registration_number,LEVEL+2,1)*(9-LEVEL)),97)-97 + 55 + SUBSTR(registration_number,-2,2) = 0) OR
1932 (Mod(SUM(SUBSTR(registration_number,LEVEL+2,1)*(9-LEVEL)),97)-97 + 55 -97 + SUBSTR(registration_number,-2,2) = 0))
1933 ELSE :G_MISS_NUM END
1934 ) #' ;
1935
1936 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1937 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
1938 END IF;
1939
1940 EXECUTE IMMEDIATE l_dynamic_sql
1941 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
1942 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL,G_MISS_NUM;
1943
1944 --Validation for Country Code FR Replacing API VALIDATE_TRN_FR
1945
1946 ELSIF p_country_code = 'FR' THEN
1947
1948 l_dynamic_sql := l_const_sql||
1949 q'# AND REGEXP_LIKE(registration_number,'^(FR)[A-HJ-NP-Z0-9]{2}[[:digit:]]{9}$') #' ;
1950
1951 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1952 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
1953 END IF;
1954
1955 EXECUTE IMMEDIATE l_dynamic_sql
1956 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
1957 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL;
1958
1959 --Validation for Country Code FI Replacing API VALIDATE_TRN_FI
1960
1961 ELSIF p_country_code = 'FI' THEN
1962
1963 l_dynamic_sql := l_const_sql||
1964 q'# AND REGEXP_LIKE(registration_number,'^(FI)[[:digit:]]{8}$') #' ;
1965
1966 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1967 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
1968 END IF;
1969
1970 EXECUTE IMMEDIATE l_dynamic_sql
1971 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
1972 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL;
1973
1974 --Validation for Country Code ES Replacing API VALIDATE_TRN_ES
1975
1976 ELSIF p_country_code = 'ES' THEN
1977 --Case1
1978
1979 l_dynamic_sql := l_const_sql||
1980 q'# AND (REGEXP_LIKE(registration_number,'^(EST)[.]*$') OR REGEXP_LIKE(registration_number,'^(ESN)[.]*[A-Za-z]$')) #' ;
1981
1982 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1983 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
1984 END IF;
1985
1986 EXECUTE IMMEDIATE l_dynamic_sql
1987 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
1988 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL;
1989
1990 --Case2
1991 l_dynamic_sql := l_const_sql||
1992 q'# AND (CASE WHEN REGEXP_LIKE(registration_number,'^(ES)[0-9]+[A-Za-z]$') THEN
1993 substr('A-HJ-NP-TV-Z',mod(substr(registration_number,3,length(registration_number)-3),23) + 1,1)
1994 ELSE :G_MISS_CHAR END) = substr(registration_number, -1,1) #' ;
1995
1996 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
1997 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
1998 END IF;
1999
2000 EXECUTE IMMEDIATE l_dynamic_sql
2001 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
2002 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL,G_MISS_CHAR;
2003
2004 --Case3
2005 l_dynamic_sql := l_const_sql||
2006 q'# AND (CASE WHEN REGEXP_LIKE(registration_number,'^(ES)[yzYZ][0-9]+[A-Za-z]$') THEN
2007 substr('TRWAGMYFPDXBNJZSQVHLCKE',mod(Decode(SubStr(registration_number,3,1),'Y',1,2)||SubStr(registration_number,4,length(registration_number)-4),23) + 1,1)
2008 ELSE :G_MISS_CHAR END) = substr(registration_number, -1,1) #' ;
2009
2010 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2011 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
2012 END IF;
2013
2014 EXECUTE IMMEDIATE l_dynamic_sql
2015 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
2016 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL,G_MISS_CHAR;
2017
2018 --Case4
2019 l_dynamic_sql := l_const_sql||
2020 q'# AND (CASE WHEN REGEXP_LIKE(registration_number,'^(ES)[k-mxK-MX][0-9]+[A-Za-z]$') THEN
2021 substr('TRWAGMYFPDXBNJZSQVHLCKE',mod(substr(registration_number,4,length(registration_number)-4),23) + 1,1)
2022 ELSE :G_MISS_CHAR END) = substr(registration_number, -1,1) #' ;
2023
2024 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2025 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
2026 END IF;
2027
2028 EXECUTE IMMEDIATE l_dynamic_sql
2029 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
2030 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL,G_MISS_CHAR;
2031
2032 --Case5
2033 l_dynamic_sql := l_const_sql||
2034 q'# AND (CASE WHEN REGEXP_LIKE(registration_number,'^(ES)[A-HJP-SU-W][0-9]+[A-Ja-j]$') THEN
2035 substr('JABCDEFGHI',(10-MOD((substr(substr(registration_number,4,length(registration_number)-4),2,1) +
2036 substr(substr(registration_number,4,length(registration_number)-4),4,1) +
2037 substr(substr(registration_number,4,length(registration_number)-4),6,1) +
2038 substr(substr(substr(registration_number,4,length(registration_number)-4),1,1) * 2,1,1) +
2039 nvl(substr(to_char(to_number(substr(substr(registration_number,4,length(registration_number)-4),1,1))
2040 * 2),2,1),'0') +
2041 substr(substr(substr(registration_number,4,length(registration_number)-4),3,1) * 2,1,1) +
2042 nvl(substr(to_char(to_number(substr(substr(registration_number,4,length(registration_number)-4),3,1))
2043 * 2),2,1),'0') +
2044 substr(to_char(to_number(substr(substr(registration_number,4,length(registration_number)-4),5,1)) * 2),1,1) +
2045 nvl(substr(to_char(to_number(substr(substr(registration_number,4,length(registration_number)-4),5,1))
2046 * 2),2,1),'0') +
2047 substr(to_char(to_number(substr(substr(registration_number,4,length(registration_number)-4),7,1)) * 2),1,1) +
2048 nvl(substr(to_char(to_number(substr(substr(registration_number,4,length(registration_number)-4),7,1))
2049 * 2),2,1),'0')
2050 + nvl(to_number(substr(substr(registration_number,4,length(registration_number)-4),8,1)),0)
2051 + nvl(to_number(substr(to_char(to_number(substr(substr(registration_number,4,length(registration_number)-4),9,1)) * 2),1,1)),0) +
2052 to_number(nvl(substr(to_char(to_number(substr(substr(registration_number,4,length(registration_number)-4),9,1))
2053 * 2),2,1),'0'))),10)) + 1, 1)
2054 ELSE :G_MISS_CHAR
2055 END) = substr(registration_number, -1,1) #' ;
2056
2057 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2058 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
2059 END IF;
2060
2061 EXECUTE IMMEDIATE l_dynamic_sql
2062 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
2063 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL,G_MISS_CHAR;
2064
2065 --Case6
2066 l_dynamic_sql := l_const_sql||
2067 q'# AND (CASE WHEN REGEXP_LIKE(registration_number,'^(ES)[A-HJP-SU-W][0-9]+[k-zK-Z]$') THEN
2068 (10-MOD((substr(substr(registration_number,4,length(registration_number)-4),2,1) +
2069 substr(substr(registration_number,4,length(registration_number)-4),4,1) +
2070 substr(substr(registration_number,4,length(registration_number)-4),6,1) +
2071 substr(substr(substr(registration_number,4,length(registration_number)-4),1,1) * 2,1,1) +
2072 nvl(substr(to_char(to_number(substr(substr(registration_number,4,length(registration_number)-4),1,1))
2073 * 2),2,1),'0') +
2074 substr(substr(substr(registration_number,4,length(registration_number)-4),3,1) * 2,1,1) +
2075 nvl(substr(to_char(to_number(substr(substr(registration_number,4,length(registration_number)-4),3,1))
2076 * 2),2,1),'0') +
2077 substr(to_char(to_number(substr(substr(registration_number,4,length(registration_number)-4),5,1)) * 2),1,1) +
2078 nvl(substr(to_char(to_number(substr(substr(registration_number,4,length(registration_number)-4),5,1))
2079 * 2),2,1),'0') +
2080 substr(to_char(to_number(substr(substr(registration_number,4,length(registration_number)-4),7,1)) * 2),1,1) +
2081 nvl(substr(to_char(to_number(substr(substr(registration_number,4,length(registration_number)-4),7,1))
2082 * 2),2,1),'0')
2083 + nvl(to_number(substr(substr(registration_number,4,length(registration_number)-4),8,1)),0)
2084 + nvl(to_number(substr(to_char(to_number(substr(substr(registration_number,4,length(registration_number)-4),9,1)) * 2),1,1)),0) +
2085 to_number(nvl(substr(to_char(to_number(substr(substr(registration_number,4,length(registration_number)-4),9,1))
2086 * 2),2,1),'0'))),10))
2087 ELSE :G_MISS_NUM
2088 END) = substr(registration_number, -1,1) #' ;
2089
2090 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2091 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
2092 END IF;
2093
2094 EXECUTE IMMEDIATE l_dynamic_sql
2095 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
2096 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL,G_MISS_NUM;
2097
2098 --Validation for Country Code EE Replacing API VALIDATE_TRN_EE
2099
2100 ELSIF p_country_code = 'EE' THEN
2101
2102 l_dynamic_sql := l_const_sql||
2103 q'# AND REGEXP_LIKE(registration_number,'^(EE)[[:digit:]]{9}$') #' ;
2104
2105 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2106 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
2107 END IF;
2108
2109 EXECUTE IMMEDIATE l_dynamic_sql
2110 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
2111 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL;
2112
2113 --Validation for Country Code DK Replacing API VALIDATE_TRN_DK
2114
2115 ELSIF p_country_code = 'DK' THEN
2116
2117 l_dynamic_sql := l_const_sql||
2118 q'# AND REGEXP_LIKE(registration_number,'^(DK)[[:digit:]]{8}$') #' ;
2119
2120 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2121 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
2122 END IF;
2123
2124 EXECUTE IMMEDIATE l_dynamic_sql
2125 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
2126 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL;
2127
2128 --Validation for Country Code DE Replacing API VALIDATE_TRN_DE
2129
2130 ELSIF p_country_code = 'DE' THEN
2131
2132 l_dynamic_sql := l_const_sql||
2133 q'# AND REGEXP_LIKE(registration_number,'^(DE)[[:digit:]]{9}$') #' ;
2134
2135 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2136 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
2137 END IF;
2138
2139 EXECUTE IMMEDIATE l_dynamic_sql
2140 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
2141 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL;
2142
2143 --Validation for Country Code CY Replacing API VALIDATE_TRN_CY
2144
2145 ELSIF p_country_code = 'CY' THEN
2146
2147 l_dynamic_sql := l_const_sql||
2148 q'# AND REGEXP_LIKE(registration_number,'^(CY)[[:digit:]]{8}[A-Z]$') #' ;
2149
2150 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2151 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
2152 END IF;
2153
2154 EXECUTE IMMEDIATE l_dynamic_sql
2155 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
2156 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL;
2157
2158 --Validation for Country Code CO Replacing API VALIDATE_TRN_CO
2159
2160 ELSIF p_country_code = 'CO' THEN
2161
2162 l_dynamic_sql :=
2163 ' UPDATE '||p_table_name||
2164 ' SET PROG_INT_NUM1 = '||
2165 q'# (MOD((nvl(TO_NUMBER(SUBSTR(registration_number,-2,1)),0) *3 +
2166 nvl(TO_NUMBER(SUBSTR(registration_number,-3,1)),0) *7 +
2167 nvl(TO_NUMBER(SUBSTR(registration_number,-4,1)),0) *13 +
2168 nvl(TO_NUMBER(SUBSTR(registration_number,-5,1)),0) *17 +
2169 nvl(TO_NUMBER(SUBSTR(registration_number,-6,1)),0) *19 +
2170 nvl(TO_NUMBER(SUBSTR(registration_number,-7,1)),0) *23 +
2171 nvl(TO_NUMBER(SUBSTR(registration_number,-8,1)),0) *29 +
2172 nvl(TO_NUMBER(SUBSTR(registration_number,-9,1)),0) *37 +
2173 nvl(TO_NUMBER(SUBSTR(registration_number,-10,1)),0) *41 +
2174 nvl(TO_NUMBER(SUBSTR(registration_number,-11,1)),0) *43 +
2175 nvl(TO_NUMBER(SUBSTR(registration_number,-12,1)),0) *47 +
2176 nvl(TO_NUMBER(SUBSTR(registration_number,-13,1)),0) *53 +
2177 nvl(TO_NUMBER(SUBSTR(registration_number,-14,1)),0) *59 +
2178 nvl(TO_NUMBER(SUBSTR(registration_number,-15,1)),0) *67 +
2179 nvl(TO_NUMBER(SUBSTR(registration_number,-16,1)),0) *71),11))#'||
2180 ' WHERE request_id = :G_REQUEST_ID
2181 AND record_status = :G_RS_IN_PROCESS
2182 AND registration_number IS NOT NULL
2183 AND '||p_column_name||' = :P_COUNTRY_CODE
2184 AND BITAND(error_number,:G_ES_PTP_COUNTRY_INVALID) = 0
2185 AND prog_int_num1 <> :G_PROG_INT_VAL'||
2186 q'# AND REGEXP_LIKE(registration_number,'^[[:digit:]]{0,16}$') #';
2187
2188 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2189 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
2190 END IF;
2191
2192 EXECUTE IMMEDIATE l_dynamic_sql
2193 USING G_REQUEST_ID,G_RS_IN_PROCESS,
2194 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL;
2195
2196 l_dynamic_sql :=
2197 ' UPDATE '||p_table_name||
2198 ' SET PROG_INT_NUM1 = :G_PROG_INT_VAL
2199 WHERE request_id = :G_REQUEST_ID
2200 AND record_status = :G_RS_IN_PROCESS
2201 AND registration_number IS NOT NULL
2202 AND '||p_column_name||' = :P_COUNTRY_CODE
2203 AND BITAND(error_number,:G_ES_PTP_COUNTRY_INVALID) = 0
2204 AND DECODE(PROG_INT_NUM1,1,PROG_INT_NUM1,0,PROG_INT_NUM1,11-PROG_INT_NUM1)
2205 = nvl((SUBSTR(registration_number,-1,1)),0)
2206 AND prog_int_num1 <> :G_PROG_INT_VAL'||
2207 q'# AND REGEXP_LIKE(registration_number,'^[[:digit:]]{0,16}$') #';
2208
2209 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2210 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
2211 END IF;
2212
2213 EXECUTE IMMEDIATE l_dynamic_sql
2214 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
2215 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL;
2216
2217 ---Validation for Country Code CL Replacing API VALIDATE_TRN_CL
2218
2219 ELSIF p_country_code = 'CL' THEN
2220
2221 l_dynamic_sql := l_const_sql||
2222 q'# AND (CASE WHEN REGEXP_LIKE(registration_number,'^[[:digit:]]{0,12}[KO1-9]$') THEN
2223 (11-MOD((nvl(TO_NUMBER(SUBSTR(registration_number,-2,1)),0) *2 +
2224 nvl(TO_NUMBER(SUBSTR(registration_number,-3,1)),0) *3 +
2225 nvl(TO_NUMBER(SUBSTR(registration_number,-4,1)),0) *4 +
2226 nvl(TO_NUMBER(SUBSTR(registration_number,-5,1)),0) *5 +
2227 nvl(TO_NUMBER(SUBSTR(registration_number,-6,1)),0) *6 +
2228 nvl(TO_NUMBER(SUBSTR(registration_number,-7,1)),0) *7 +
2229 nvl(TO_NUMBER(SUBSTR(registration_number,-8,1)),0) *2 +
2230 nvl(TO_NUMBER(SUBSTR(registration_number,-9,1)),0) *3 +
2231 nvl(TO_NUMBER(SUBSTR(registration_number,-10,1)),0) *4 +
2232 nvl(TO_NUMBER(SUBSTR(registration_number,-11,1)),0) *5 +
2233 nvl(TO_NUMBER(SUBSTR(registration_number,-12,1)),0) *6 +
2234 nvl(TO_NUMBER(SUBSTR(registration_number,-13,1)),0) *7),11))
2235 ELSE :G_MISS_NUM END) = Decode(substr(registration_number,-1,1),'K',10,'0',11,substr(registration_number,-1,1)) #' ;
2236
2237 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2238 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
2239 END IF;
2240
2241 EXECUTE IMMEDIATE l_dynamic_sql
2242 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
2243 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL,G_MISS_NUM;
2244
2245 --Validation for Country Code CH Replacing API VALIDATE_TRN_CH
2246
2247 ELSIF p_country_code = 'CH' THEN
2248
2249 IF (SYSDATE < TO_DATE('01-01-2014','dd-mm-yyyy') ) THEN
2250 -- we need both old and new validations
2251 l_dynamic_sql := l_const_sql||
2252 q'# AND ( (REGEXP_LIKE(registration_number,'^(CH)[[:digit:]]{6}$') )
2253 OR
2254 #';
2255 ELSE
2256 -- we need only the new validation
2257 l_dynamic_sql := l_const_sql|| ' ( ';
2258 END IF;
2259 -- adding logic for Swiss Registration Number validation
2260 -- incorporated through bug 14677337
2261 l_dynamic_sql := l_dynamic_sql ||
2262 q'# 'VALID' =
2263 (SELECT
2264 DECODE(ceil(((REGEXP_SUBSTR(num,'[0-9]',1,1))*5+
2265 (REGEXP_SUBSTR(num,'[0-9]',1,2))*4+
2266 (REGEXP_SUBSTR(num,'[0-9]',1,3))*3+
2267 (REGEXP_SUBSTR(num,'[0-9]',1,4))*2+
2268 (REGEXP_SUBSTR(num,'[0-9]',1,5))*7+
2269 (REGEXP_SUBSTR(num,'[0-9]',1,6))*6+
2270 (REGEXP_SUBSTR(num,'[0-9]',1,7))*5+
2271 (REGEXP_SUBSTR(num,'[0-9]',1,8))*4
2272 )/11) * 11 -
2273 ((REGEXP_SUBSTR(num,'[0-9]',1,1))*5+
2274 (REGEXP_SUBSTR(num,'[0-9]',1,2))*4+
2275 (REGEXP_SUBSTR(num,'[0-9]',1,3))*3+
2276 (REGEXP_SUBSTR(num,'[0-9]',1,4))*2+
2277 (REGEXP_SUBSTR(num,'[0-9]',1,5))*7+
2278 (REGEXP_SUBSTR(num,'[0-9]',1,6))*6+
2279 (REGEXP_SUBSTR(num,'[0-9]',1,7))*5+
2280 (REGEXP_SUBSTR(num,'[0-9]',1,8))*4),
2281 10,'INVALID',
2282 (REGEXP_SUBSTR(num,'[0-9]',1,9)),'VALID',
2283 'INVALID') FINAL_RESULT
2284 FROM (SELECT
2285 REGEXP_SUBSTR(REPLACE(REGEXP_SUBSTR(registration_number,'^(CHE-[0-9]{3}.[0-9]{3}.[0-9]{3}) (MWST|TVA|IVA)$'),'.',''),'[0-9]+') NUM
2286 FROM DUAL
2287 )
2288 WHERE REGEXP_SUBSTR(registration_number,'^(CHE-[0-9]{3}.[0-9]{3}.[0-9]{3}) (MWST|TVA|IVA)$')=registration_number
2289 )
2290 )
2291 #' ;
2292
2293 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2294 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
2295 END IF;
2296
2297 EXECUTE IMMEDIATE l_dynamic_sql
2298 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
2299 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL;
2300
2301 --Validation for Country Code AR Replacing API VALIDATE_TRN_AR
2302
2303 ELSIF p_country_code = 'AR' THEN
2304 --CASE1
2305 l_dynamic_sql := l_const_sql||
2306 q'# AND Nvl(REGISTRATION_TYPE_CODE,'CUIL') = 'CUIL'
2307 AND (CASE WHEN REGEXP_LIKE(registration_number,'^[[:digit:]]{11}$') THEN
2308 (11-MOD(((TO_NUMBER(SUBSTR(registration_number,10,1))) *2 +
2309 (TO_NUMBER(SUBSTR(registration_number,9,1))) *3 +
2310 (TO_NUMBER(SUBSTR(registration_number,8,1))) *4 +
2311 (TO_NUMBER(SUBSTR(registration_number,7,1))) *5 +
2312 (TO_NUMBER(SUBSTR(registration_number,6,1))) *6 +
2313 (TO_NUMBER(SUBSTR(registration_number,5,1))) *7 +
2314 (TO_NUMBER(SUBSTR(registration_number,4,1))) *2 +
2315 (TO_NUMBER(SUBSTR(registration_number,3,1))) *3 +
2316 (TO_NUMBER(SUBSTR(registration_number,2,1))) *4 +
2317 (TO_NUMBER(SUBSTR(registration_number,1,1))) *5),11))
2318 ELSE :G_MISS_NUM END) = Decode(TO_NUMBER(SUBSTR(registration_number,11,1)),9,10,11,0,TO_NUMBER(SUBSTR(registration_number,11,1))) #' ;
2319
2320 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2321 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
2322 END IF;
2323
2324 EXECUTE IMMEDIATE l_dynamic_sql
2325 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
2326 p_country_code,(G_ES_PTP_COUNTRY_INVALID+G_ES_PTP_REG_TYPE_INVALID),G_PROG_INT_VAL,G_MISS_NUM;
2327
2328 --CASE2
2329 -- i feel for DNI it will fail always.
2330 l_dynamic_sql := l_const_sql||
2331 q'# AND Nvl(REGISTRATION_TYPE_CODE,'CUIL') = 'DNI'
2332 AND (CASE WHEN REGEXP_LIKE(registration_number,'^[[:digit:]]{9}$') THEN
2333 (11-MOD(((TO_NUMBER(SUBSTR(registration_number,10,1))) *2 +
2334 (TO_NUMBER(SUBSTR(registration_number,9,1))) *3 +
2335 (TO_NUMBER(SUBSTR(registration_number,8,1))) *4 +
2336 (TO_NUMBER(SUBSTR(registration_number,7,1))) *5 +
2337 (TO_NUMBER(SUBSTR(registration_number,6,1))) *6 +
2338 (TO_NUMBER(SUBSTR(registration_number,5,1))) *7 +
2339 (TO_NUMBER(SUBSTR(registration_number,4,1))) *2 +
2340 (TO_NUMBER(SUBSTR(registration_number,3,1))) *3 +
2341 (TO_NUMBER(SUBSTR(registration_number,2,1))) *4 +
2342 (TO_NUMBER(SUBSTR(registration_number,1,1))) *5),11))
2343 ELSE :G_MISS_NUM END) = Decode(TO_NUMBER(SUBSTR(registration_number,9,1)),9,10,11,0,TO_NUMBER(SUBSTR(registration_number,9,1))) #' ;
2344
2345 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2346 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
2347 END IF;
2348
2349 EXECUTE IMMEDIATE l_dynamic_sql
2350 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
2351 p_country_code,(G_ES_PTP_COUNTRY_INVALID+G_ES_PTP_REG_TYPE_INVALID),G_PROG_INT_VAL,G_MISS_NUM;
2352
2353 --Validation for Country Code AT Replacing API VALIDATE_TRN_AT
2354
2355 ELSIF p_country_code = 'AT' THEN
2356
2357 l_dynamic_sql := l_const_sql||
2358 q'# AND (CASE WHEN REGEXP_LIKE(registration_number,'^(ATU)[[:digit:]]{8}$') THEN
2359 substr(100 - (substr(substr(registration_number,5,1)*2,1,1) + nvl(substr(substr(registration_number,5,1)*2,2,1),0) +
2360 substr(substr(registration_number,7,1)*2,1,1) + nvl(substr(substr(registration_number,7,1)*2,2,1),0) +
2361 substr(substr(registration_number,9,1)*2,1,1) + nvl(substr(substr(registration_number,9,1)*2,2,1),0) +
2362 substr(registration_number,4,1) + substr(registration_number,6,1) +
2363 substr(registration_number,8,1) + substr(registration_number,10,1)+4)-1,1)
2364 ELSE :G_MISS_CHAR END) = substr(registration_number,11,1) #' ;
2365
2366 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2367 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
2368 END IF;
2369
2370 EXECUTE IMMEDIATE l_dynamic_sql
2371 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
2372 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL,G_MISS_CHAR;
2373
2374 --Validation for Country Code BE Replacing API VALIDATE_TRN_BE
2375
2376 ELSIF p_country_code = 'BE' THEN
2377
2378 l_dynamic_sql := l_const_sql||
2379 q'# AND (CASE WHEN REGEXP_LIKE(registration_number,'(1|0)^[[:digit:]]{9}$') THEN
2380 (97-mod(substr(registration_number,2,7),97))
2381 ELSE :G_MISS_NUM END) = substr(registration_number,9,2) #' ;
2382
2383 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2384 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
2385 END IF;
2386
2387 EXECUTE IMMEDIATE l_dynamic_sql
2388 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
2389 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL,G_MISS_NUM;
2390
2391 l_dynamic_sql := l_const_sql||
2392 q'# AND (CASE WHEN REGEXP_LIKE(registration_number,'(BE)^[[:digit:]]{9}$') THEN
2393 (97-mod(substr(registration_number,3,7),97))
2394 ELSE :G_MISS_NUM END) = substr(registration_number,10,2) #' ;
2395
2396 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2397 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
2398 END IF;
2399
2400 EXECUTE IMMEDIATE l_dynamic_sql
2401 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
2402 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL,G_MISS_NUM;
2403
2404 l_dynamic_sql := l_const_sql||
2405 q'# AND (CASE WHEN REGEXP_LIKE(registration_number,'(BE)(1|0)^[[:digit:]]{9}$') THEN
2406 (97-mod(substr(registration_number,3,7),97))
2407 ELSE :G_MISS_NUM END) = substr(registration_number,11,2) #' ;
2408
2409 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2410 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
2411 END IF;
2412
2413 EXECUTE IMMEDIATE l_dynamic_sql
2414 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
2415 p_country_code,G_ES_PTP_COUNTRY_INVALID,G_PROG_INT_VAL,G_MISS_NUM;
2416
2417 --Validation for Country Code BR Replacing API VALIDATE_TRN_BR
2418
2419 ELSIF p_country_code = 'BR' THEN
2420
2421 l_dynamic_sql := l_const_sql||
2422 q'# AND NVL(REGISTRATION_TYPE_CODE,'CNPJ') = 'OTHERS' #' ;
2423
2424 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2425 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
2426 END IF;
2427
2428 EXECUTE IMMEDIATE l_dynamic_sql
2429 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
2430 p_country_code,(G_ES_PTP_COUNTRY_INVALID+G_ES_PTP_REG_TYPE_INVALID),G_PROG_INT_VAL;
2431
2432 l_dynamic_sql := ' UPDATE '||p_table_name||
2433 ' SET PROG_INT_NUM1 = '||
2434 q'# DECODE((11 - mod(
2435 (to_number(substr(registration_number,9,1)) * 2 +
2436 to_number(substr(registration_number,8,1)) * 3 +
2437 to_number(substr(registration_number,7,1)) * 4 +
2438 to_number(substr(registration_number,6,1)) * 5 +
2439 to_number(substr(registration_number,5,1)) * 6 +
2440 to_number(substr(registration_number,4,1)) * 7 +
2441 to_number(substr(registration_number,3,1)) * 8 +
2442 to_number(substr(registration_number,2,1)) * 9 +
2443 to_number(substr(registration_number,1,1)) * 10),11)),10,0,10,0,
2444 (11 - mod(
2445 (to_number(substr(registration_number,9,1)) * 2 +
2446 to_number(substr(registration_number,8,1)) * 3 +
2447 to_number(substr(registration_number,7,1)) * 4 +
2448 to_number(substr(registration_number,6,1)) * 5 +
2449 to_number(substr(registration_number,5,1)) * 6 +
2450 to_number(substr(registration_number,4,1)) * 7 +
2451 to_number(substr(registration_number,3,1)) * 8 +
2452 to_number(substr(registration_number,2,1)) * 9 +
2453 to_number(substr(registration_number,1,1)) * 10),11))) #'
2454 ||' WHERE request_id = :G_REQUEST_ID'
2455 ||' AND record_status = :G_RS_IN_PROCESS'
2456 ||' AND registration_number IS NOT NULL'
2457 ||' AND '||p_column_name||' = :P_COUNTRY_CODE'
2458 ||' AND BITAND(error_number,:G_ES_PTP_COUNTRY_INVALID) = 0'
2459 ||' AND prog_int_num1 <> :G_PROG_INT_VAL' ||
2460 q'# AND NVL(REGISTRATION_TYPE_CODE,'CNPJ') = 'CPF'
2461 AND REGEXP_LIKE(REGISTRATION_NUMBER,'^(0000)*[[:digit:]]{11}$') #' ;
2462
2463 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2464 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
2465 END IF;
2466
2467 EXECUTE IMMEDIATE l_dynamic_sql
2468 USING G_REQUEST_ID,G_RS_IN_PROCESS,
2469 p_country_code,(G_ES_PTP_COUNTRY_INVALID+G_ES_PTP_REG_TYPE_INVALID),G_PROG_INT_VAL;
2470
2471 l_dynamic_sql := ' UPDATE '||p_table_name
2472 ||' SET PROG_INT_NUM1 = :G_PROG_INT_VAL '
2473 ||' WHERE request_id = :G_REQUEST_ID'
2474 ||' AND record_status = :G_RS_IN_PROCESS'
2475 ||' AND registration_number IS NOT NULL'
2476 ||' AND '||p_column_name||' = :P_COUNTRY_CODE'
2477 ||' AND BITAND(error_number,:G_ES_PTP_COUNTRY_INVALID) = 0'
2478 ||' AND prog_int_num1 <> :G_PROG_INT_VAL' ||
2479 q'# AND NVL(REGISTRATION_TYPE_CODE,'CNPJ') = 'CPF'
2480 AND REGEXP_LIKE(REGISTRATION_NUMBER,'^(0000)*[[:digit:]]{11}$')
2481 AND substr(to_char(PROG_INT_NUM1),1,1) = = substr(REGISTRATION_NUMBER,-2,1)
2482 AND substr(to_char(Decode((11 - mod((PROG_INT_NUM1 * 2 +
2483 to_number(substr(registration_number,9,1)) * 3 +
2484 to_number(substr(registration_number,8,1)) * 4 +
2485 to_number(substr(registration_number,7,1)) * 5 +
2486 to_number(substr(registration_number,6,1)) * 6 +
2487 to_number(substr(registration_number,5,1)) * 7 +
2488 to_number(substr(registration_number,4,1)) * 8 +
2489 to_number(substr(registration_number,3,1)) * 9 +
2490 to_number(substr(registration_number,2,1)) * 10 +
2491 to_number(substr(registration_number,1,1)) * 11),11)),11,0,10,0,
2492 (11 - mod((PROG_INT_NUM1 * 2 +
2493 to_number(substr(registration_number,9,1)) * 3 +
2494 to_number(substr(registration_number,8,1)) * 4 +
2495 to_number(substr(registration_number,7,1)) * 5 +
2496 to_number(substr(registration_number,6,1)) * 6 +
2497 to_number(substr(registration_number,5,1)) * 7 +
2498 to_number(substr(registration_number,4,1)) * 8 +
2499 to_number(substr(registration_number,3,1)) * 9 +
2500 to_number(substr(registration_number,2,1)) * 10 +
2501 to_number(substr(registration_number,1,1)) * 11),11)))),1,1)
2502 = substr(registration_number,-1,1) #' ;
2503
2504 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2505 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
2506 END IF;
2507
2508 EXECUTE IMMEDIATE l_dynamic_sql
2509 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
2510 p_country_code,(G_ES_PTP_COUNTRY_INVALID+G_ES_PTP_REG_TYPE_INVALID),G_PROG_INT_VAL;
2511
2512 l_dynamic_sql := ' UPDATE '||p_table_name
2513 ||' SET PROG_INT_NUM1 = '||
2514 q'# DECODE((11 - mod(
2515 (to_number(substr(registration_number,-3,1)) * 2 +
2516 to_number(substr(registration_number,-4,1)) * 3 +
2517 to_number(substr(registration_number,-5,1)) * 4 +
2518 to_number(substr(registration_number,-6,1)) * 5 +
2519 to_number(substr(registration_number,-7,1)) * 6 +
2520 to_number(substr(registration_number,-8,1)) * 7 +
2521 to_number(substr(registration_number,-9,1)) * 8 +
2522 to_number(substr(registration_number,-10,1)) * 9 +
2523 to_number(substr(registration_number,-11,1)) * 2 +
2524 to_number(substr(registration_number,-12,1)) * 3 +
2525 to_number(substr(registration_number,-13,1)) * 4 +
2526 to_number(substr(registration_number,-14,1))* 5),11)),10,0,10,0,
2527 (11 - mod(
2528 (to_number(substr(registration_number,-3,1)) * 2 +
2529 to_number(substr(registration_number,-4,1)) * 3 +
2530 to_number(substr(registration_number,-5,1)) * 4 +
2531 to_number(substr(registration_number,-6,1)) * 5 +
2532 to_number(substr(registration_number,-7,1)) * 6 +
2533 to_number(substr(registration_number,-8,1)) * 7 +
2534 to_number(substr(registration_number,-9,1)) * 8 +
2535 to_number(substr(registration_number,-10,1)) * 9 +
2536 to_number(substr(registration_number,-11,1)) * 2 +
2537 to_number(substr(registration_number,-12,1)) * 3 +
2538 to_number(substr(registration_number,-13,1)) * 4 +
2539 to_number(substr(registration_number,-14,1))* 5),11))) #'
2540 ||' WHERE request_id = :G_REQUEST_ID'
2541 ||' AND record_status = :G_RS_IN_PROCESS'
2542 ||' AND registration_number IS NOT NULL'
2543 ||' AND '||p_column_name||' = :P_COUNTRY_CODE'
2544 ||' AND BITAND(error_number,:G_ES_PTP_COUNTRY_INVALID) = 0'
2545 ||' AND prog_int_num1 <> :G_PROG_INT_VAL' ||
2546 q'# AND NVL(REGISTRATION_TYPE_CODE,'CNPJ') = 'CNPJ'
2547 AND REGEXP_LIKE(registration_number,'^[[:digit:]]?[[:digit:]]{14}$') #' ;
2548
2549 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2550 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
2551 END IF;
2552
2553 EXECUTE IMMEDIATE l_dynamic_sql
2554 USING G_REQUEST_ID,G_RS_IN_PROCESS,
2555 p_country_code,(G_ES_PTP_COUNTRY_INVALID+G_ES_PTP_REG_TYPE_INVALID),G_PROG_INT_VAL;
2556
2557
2558 l_dynamic_sql := ' UPDATE '||p_table_name
2559 ||' SET PROG_INT_NUM1 = :G_PROG_INT_VAL '
2560 ||' WHERE request_id = :G_REQUEST_ID'
2561 ||' AND record_status = :G_RS_IN_PROCESS'
2562 ||' AND registration_number IS NOT NULL'
2563 ||' AND '||p_column_name||' = :P_COUNTRY_CODE'
2564 ||' AND BITAND(error_number,:G_ES_PTP_COUNTRY_INVALID) = 0'
2565 ||' AND prog_int_num1 <> :G_PROG_INT_VAL' ||
2566 q'# AND NVL(REGISTRATION_TYPE_CODE,'CNPJ') = 'CNPJ'
2567 AND REGEXP_LIKE(registration_number,'^[[:digit:]]?[[:digit:]]{14}$')
2568 AND substr(to_char(PROG_INT_NUM1),1,1) = = substr(registration_number,-2,1)
2569 AND substr(to_char(Decode((11 - mod(((l_control_digit_1 * 2) +
2570 to_number(substr(registration_number,-3,1)) * 3 +
2571 to_number(substr(registration_number,-4,1)) * 4 +
2572 to_number(substr(registration_number,-5,1)) * 5 +
2573 to_number(substr(registration_number,-6,1)) * 6 +
2574 to_number(substr(registration_number,-7,1)) * 7 +
2575 to_number(substr(registration_number,-8,1)) * 8 +
2576 to_number(substr(registration_number,-9,1)) * 9 +
2577 to_number(substr(registration_number,-10,1)) * 2 +
2578 to_number(substr(registration_number,-11,1)) * 3 +
2579 to_number(substr(registration_number,-12,1)) * 4 +
2580 to_number(substr(registration_number,-13,1)) * 5 +
2581 to_number(substr(registration_number,-14,1)) * 6),11)),11,0,10,0,
2582 (11 - mod(((l_control_digit_1 * 2) +
2583 to_number(substr(registration_number,-3,1)) * 3 +
2584 to_number(substr(registration_number,-4,1)) * 4 +
2585 to_number(substr(registration_number,-5,1)) * 5 +
2586 to_number(substr(registration_number,-6,1)) * 6 +
2587 to_number(substr(registration_number,-7,1)) * 7 +
2588 to_number(substr(registration_number,-8,1)) * 8 +
2589 to_number(substr(registration_number,-9,1)) * 9 +
2590 to_number(substr(registration_number,-10,1)) * 2 +
2591 to_number(substr(registration_number,-11,1)) * 3 +
2592 to_number(substr(registration_number,-12,1)) * 4 +
2593 to_number(substr(registration_number,-13,1)) * 5 +
2594 to_number(substr(registration_number,-14,1)) * 6),11)))),1,1)
2595 = substr(registration_number,-1,1) #' ;
2596
2597 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2598 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'TRNValidation',L_DYNAMIC_SQL);
2599 END IF;
2600
2601 EXECUTE IMMEDIATE l_dynamic_sql
2602 USING G_PROG_INT_VAL,G_REQUEST_ID,G_RS_IN_PROCESS,
2603 p_country_code,(G_ES_PTP_COUNTRY_INVALID+G_ES_PTP_REG_TYPE_INVALID),G_PROG_INT_VAL;
2604
2605 END IF;
2606
2607 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2608 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'TRNValidation','TRNValidation(-)');
2609 END IF;
2610
2611 EXCEPTION
2612 WHEN OTHERS THEN
2613 log_now (p_log_level => FND_FILE.LOG
2614 ,p_message => l_dynamic_sql
2615 );
2616 log_now (p_log_level => FND_FILE.LOG
2617 ,p_message => 'TRNValidation'||' : '||p_table_name||' : '||p_country_code||' : '||SQLERRM
2618 );
2619 RAISE;
2620 END TRNValidation;
2621
2622 -------------------------------------------------------------------------------
2623 -------------------------------------------------------------------------------
2624 -------------------------------------------------------------------------------
2625
2626 PROCEDURE ProcessRegistrationRecord IS
2627
2628 CURSOR get_country_codes IS
2629 SELECT DISTINCT prog_int_char1
2630 FROM zx_registrations_int
2631 WHERE record_status = G_RS_IN_PROCESS
2632 AND request_id = G_REQUEST_ID
2633 AND BITAND(error_number,G_ES_REG_TAX_REG_INVALID) = 0
2634 AND prog_int_char1 IS NOT NULL
2635 AND prog_int_char1 IN ('TW','SK','SI','SE','RU','PT','PL','NL','MT',
2636 'LV','LU','LT','IT','IE','HU','GR','GB','FR',
2637 'FI','ES','EE','DK','DE','CY','CO','CL','CH',
2638 'AR','AT','BE','BR');
2639 l_date1 DATE;
2640 l_date2 DATE;
2641 l_date3 DATE;
2642 l_date4 DATE;
2643 l_date5 DATE;
2644
2645 BEGIN
2646
2647 l_date1 := SYSDATE;
2648
2649 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2650 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'ProcessRegistrationRecord','ProcessRegistrationRecord(+)');
2651 END IF;
2652
2653 -------------------------
2654 -- Populate default values
2655 -------------------------
2656 UPDATE zx_registrations_int
2657 SET request_id = G_REQUEST_ID
2658 ,record_status = G_RS_IN_PROCESS
2659 ,dml_type = UPPER(dml_type)
2660 ,prog_int_char1 = NULL
2661 ,prog_int_num1 = 0
2662 ,error_number = 0
2663 WHERE NVL(record_status,G_RS_ERROR) <> G_RS_VALID
2664 AND NVL(batch_id,G_MISS_NUM) =
2665 NVL(G_BATCH_ID,NVL(batch_id,G_MISS_NUM));
2666
2667 G_DEBUG_STATEMENT:='Populated default values onto '||SQL%ROWCOUNT||' records';
2668 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2669 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ProcessRegistrationRecord',G_DEBUG_STATEMENT);
2670 END IF;
2671
2672 -------------------------
2673 -- Check Mandatory Paramters
2674 -------------------------
2675
2676 UPDATE zx_registrations_int
2677 SET error_number = G_ES_REG_MAND_PARAM_MISSING
2678 WHERE request_id = G_REQUEST_ID
2679 AND record_status = G_RS_IN_PROCESS
2680 AND NVL(tax_regime_code,tax_regime_name) IS NULL;
2681
2682 G_DEBUG_STATEMENT:='Mandatory Parameters not populated for '||SQL%ROWCOUNT||' records';
2683 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2684 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ProcessRegistrationRecord',G_DEBUG_STATEMENT);
2685 END IF;
2686
2687 -------------------------
2688 -- Duplicate records checking
2689 -------------------------
2690
2691 UPDATE zx_registrations_int orig
2692 SET error_number = error_number + G_ES_REG_DUP_INTF_RECORD,
2693 record_status = G_RS_ERROR
2694 WHERE request_id = G_REQUEST_ID
2695 AND record_status = G_RS_IN_PROCESS
2696 AND error_number <> G_ES_REG_MAND_PARAM_MISSING
2697 AND EXISTS (
2698 SELECT /*+ FIRST_ROWS(1) */ 1
2699 FROM zx_registrations_int dup
2700 WHERE dup.rowid <> orig.rowid
2701 AND dup.request_id = G_REQUEST_ID
2702 AND dup.record_status = G_RS_IN_PROCESS
2703 AND NVL(dup.party_tax_profile_id,G_MISS_NUM)
2704 = NVL(orig.party_tax_profile_id,G_MISS_NUM)
2705 AND NVL(dup.intf_ptp_reference,G_MISS_CHAR)
2706 = NVL(orig.intf_ptp_reference,G_MISS_CHAR)
2707 AND NVL(dup.tax_regime_code,G_MISS_CHAR) = NVL(orig.tax_regime_code,G_MISS_CHAR)
2708 AND NVL(dup.tax_regime_name,G_MISS_CHAR) = NVL(orig.tax_regime_name,G_MISS_CHAR)
2709 AND NVL(dup.tax_code,G_MISS_CHAR) = NVL(orig.tax_code,G_MISS_CHAR)
2710 AND NVL(dup.tax_name,G_MISS_CHAR) = NVL(orig.tax_name,G_MISS_CHAR)
2711 AND NVL(dup.tax_jurisdiction_code,G_MISS_CHAR) =
2712 NVL(orig.tax_jurisdiction_code,G_MISS_CHAR)
2713 AND NVL(dup.tax_jurisdiction_name,G_MISS_CHAR) =
2714 NVL(orig.tax_jurisdiction_name,G_MISS_CHAR)
2715 AND dup.effective_from = orig.effective_from
2716 AND ROWNUM = 1
2717 );
2718
2719 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' duplicate records exists';
2720 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2721 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ProcessRegistrationRecord',G_DEBUG_STATEMENT);
2722 END IF;
2723
2724 -------------------------
2725 -- Value to Id Conversion
2726 -------------------------
2727
2728 l_date2 := SYSDATE;
2729 RegValueToIdConversion();
2730 l_date3 := SYSDATE;
2731
2732 G_DEBUG_STATEMENT:= 'Value to Id Conversion completed for reg records';
2733 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2734 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ProcessRegistrationRecord',G_DEBUG_STATEMENT);
2735 END IF;
2736
2737 -------------------------
2738 -- Record level validations
2739 -------------------------
2740 -- Registrations with overlapping date ranges.
2741
2742 UPDATE zx_registrations_int orig
2743 SET error_number = error_number + G_ES_REG_DATE_OVERLAP,
2744 record_status = G_RS_ERROR
2745 WHERE request_id = G_REQUEST_ID
2746 AND record_status = G_RS_IN_PROCESS
2747 AND BITAND(error_number,G_ES_REG_DUP_INTF_RECORD) = 0
2748 AND EXISTS (
2749 SELECT /*+ FIRST_ROWS(1) */ 1
2750 FROM zx_registrations_int dup
2751 WHERE dup.rowid <> orig.rowid
2752 AND dup.request_id = G_REQUEST_ID
2753 AND dup.record_status = G_RS_IN_PROCESS
2754 AND dup.intf_ptp_reference = orig.intf_ptp_reference
2755 AND dup.tax_regime_code = orig.tax_regime_code
2756 AND NVL(dup.tax_code,G_MISS_CHAR) = NVL(orig.tax_code,G_MISS_CHAR)
2757 AND NVL(dup.tax_jurisdiction_code,G_MISS_CHAR) =
2758 NVL(orig.tax_jurisdiction_code,G_MISS_CHAR)
2759 AND BITAND(dup.error_number,G_ES_REG_TAX_REG_INVALID+
2760 G_ES_REG_TAX_PARAM_INVALID+
2761 G_ES_REG_TAX_JUR_INVALID+
2762 G_ES_REG_DUP_INTF_RECORD) = 0
2763 AND ( dup.effective_to IS NULL
2764 OR orig.effective_from <= dup.effective_to
2765 )
2766 AND ( orig.effective_to IS NULL
2767 OR orig.effective_to >= dup.effective_from
2768 )
2769 AND ROWNUM = 1
2770 );
2771
2772 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Registrations with overlapping date ranges.';
2773 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2774 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ProcessRegistrationRecord',G_DEBUG_STATEMENT);
2775 END IF;
2776
2777 -----------------
2778 -- TRN Validation
2779 -----------------
2780
2781 --Initialise prog_int_char1 with Country Code
2782 UPDATE ZX_REGISTRATIONS_INT REG
2783 SET PROG_INT_CHAR1 = (SELECT COUNTRY_CODE
2784 FROM ZX_REGIMES_B TR
2785 WHERE TR.TAX_REGIME_CODE = REG.TAX_REGIME_CODE)
2786 WHERE request_id = G_REQUEST_ID
2787 AND PROG_INT_CHAR1 IS NULL
2788 AND TAX_REGIME_CODE IS NOT NULL
2789 AND record_status = G_RS_IN_PROCESS
2790 AND BITAND(error_number,G_ES_REG_TAX_REG_INVALID) = 0;
2791
2792 --Stamp Valid Status for Null registration_number OR Country Code
2793 UPDATE zx_registrations_int reg_int
2794 SET PROG_INT_NUM1 = G_PROG_INT_VAL
2795 WHERE request_id = G_REQUEST_ID
2796 AND prog_int_char1 IS NULL
2797 OR registration_number IS NULL
2798 AND record_status = G_RS_IN_PROCESS;
2799
2800 FOR rec in get_country_codes LOOP
2801 TRNValidation(p_table_name => G_INTF_REG_TABLE_NAME
2802 ,p_column_name => 'prog_int_char1'
2803 ,p_country_code => rec.prog_int_char1
2804 );
2805 END LOOP;
2806
2807 -- Final Updation of the Record Status and error Codes
2808 UPDATE zx_registrations_int reg
2809 SET error_number = error_number + G_ES_REG_REG_NUM_INVALID
2810 WHERE prog_int_char1 IS NOT NULL
2811 AND prog_int_char1 IN ('TW','SK','SI','SE','RU','PT','PL','NL','MT',
2812 'LV','LU','LT','IT','IE','HU','GR','GB','FR',
2813 'FI','ES','EE','DK','DE','CY','CO','CL','CH',
2814 'AR','AT','BE','BR')
2815 AND registration_number IS NOT NULL
2816 AND prog_int_num1 <> G_PROG_INT_VAL
2817 AND request_id = G_REQUEST_ID
2818 AND record_status = G_RS_IN_PROCESS;
2819
2820 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records exists with invalid TRN';
2821 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2822 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ProcessRegistrationRecord',G_DEBUG_STATEMENT);
2823 END IF;
2824
2825 l_date4 := SYSDATE;
2826
2827 -------------------------
2828 -- Record level validations
2829 -------------------------
2830
2831 -- Validation to check multiple default_registration_flag defined for a ptp
2832 UPDATE zx_registrations_int orig
2833 SET error_number = error_number + G_ES_REG_MULT_DEF_FLAG
2834 WHERE orig.record_status = G_RS_IN_PROCESS
2835 AND orig.request_id = G_REQUEST_ID
2836 AND BITAND(orig.error_number,G_ES_REG_DEFREG_FLG_INVALID) = 0
2837 AND NVL(orig.default_registration_flag,'N') = 'Y'
2838 AND EXISTS (
2839 SELECT /*+ FIRST_ROWS(1) */ 1
2840 FROM zx_registrations_int dup
2841 WHERE dup.rowid <> orig.rowid
2842 AND dup.request_id = G_REQUEST_ID
2843 AND dup.record_status = G_RS_IN_PROCESS
2844 AND NVL(dup.default_registration_flag,'N') = 'Y'
2845 AND BITAND(dup.error_number,G_ES_REG_DEFREG_FLG_INVALID) = 0
2846 AND dup.intf_ptp_reference = orig.intf_ptp_reference
2847 AND ROWNUM = 1
2848 );
2849
2850 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records exists with multiple default_registration_flag defined for a ptp';
2851 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2852 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ProcessRegistrationRecord',G_DEBUG_STATEMENT);
2853 END IF;
2854
2855 -- Validation to check when REGISTRATION_STATUS_CODE = 'REGISTERED'
2856 -- and REGISTRATION_SOURCE_CODE = 'EXPLICIT', tax authority is required
2857 UPDATE zx_registrations_int
2858 SET error_number = error_number + G_ES_REG_TAX_AUT_REQ
2859 WHERE record_status = G_RS_IN_PROCESS
2860 AND request_id = G_REQUEST_ID
2861 AND BITAND(error_number,G_ES_REG_TAX_AUT_INVALID) = 0
2862 AND NVL(registration_status_code,G_MISS_CHAR) = 'REGISTERED'
2863 AND NVL(registration_source_code,G_MISS_CHAR) = 'EXPLICIT'
2864 AND tax_authority_id IS NULL;
2865
2866 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records exists with Tax Authority req Check';
2867 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2868 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ProcessRegistrationRecord',G_DEBUG_STATEMENT);
2869 END IF;
2870
2871
2872 -------------------------
2873 -- No Other Validations
2874 -------------------------
2875
2876 UPDATE zx_registrations_int reg_int
2877 SET record_status = DECODE(error_number,0,G_RS_VALID,G_RS_ERROR)
2878 WHERE request_id = G_REQUEST_ID
2879 AND record_status = G_RS_IN_PROCESS;
2880
2881 UPDATE zx_party_tax_profile_int ptp_int
2882 SET record_status = NULL
2883 WHERE request_id = G_REQUEST_ID
2884 AND record_status = G_RS_VALID
2885 AND EXISTS (SELECT /*+ FIRST_ROWS(1) */ 1
2886 FROM zx_registrations_int reg_int
2887 WHERE request_id = G_REQUEST_ID
2888 AND record_status = G_RS_ERROR
2889 AND reg_int.intf_ptp_reference = ptp_int.intf_ptp_reference);
2890
2891 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' PTP records updated with NULL record_status';
2892 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2893 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ProcessRegistrationRecord',G_DEBUG_STATEMENT);
2894 END IF;
2895
2896
2897 l_date5 := SYSDATE;
2898
2899 log_now (p_log_level => FND_FILE.LOG
2900 ,p_message => '+--------------------------------------------------------------------'
2901 );
2902 log_now (p_log_level => FND_FILE.LOG
2903 ,p_message => '| PERF METRICS for Processing Registrations Records'
2904 );
2905 log_now (p_log_level => FND_FILE.LOG
2906 ,p_message => '| Time Taken for Value to ID Conversions '||(l_date3-l_date2)*86400||' Secs'
2907 );
2908 log_now (p_log_level => FND_FILE.LOG
2909 ,p_message => '| Time Taken for TRN Validation '||(l_date4-l_date3)*86400||' Secs'
2910 );
2911 log_now (p_log_level => FND_FILE.LOG
2912 ,p_message => '| Total Time Taken for REG Record Processing '||(l_date5-l_date1)*86400||' Secs'
2913 );
2914 log_now (p_log_level => FND_FILE.LOG
2915 ,p_message => '+--------------------------------------------------------------------'
2916 );
2917
2918 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2919 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'ProcessRegistrationRecord','ProcessRegistrationRecord(-)');
2920 END IF;
2921
2922 EXCEPTION
2923 WHEN OTHERS THEN
2924 G_RETURN_STATUS := G_CONC_RET_STS_UNEXP_ERROR;
2925 G_MSG_DATA := SQLERRM;
2926 log_now (p_log_level => FND_FILE.LOG
2927 ,p_message => 'ProcessRegistrationRecord'||' : '||SQLERRM
2928 );
2929 RAISE;
2930 END ProcessRegistrationRecord;
2931
2932
2933 ------------------------------------------------------------------------------
2934 ------------------------------------------------------------------------------
2935 ------------------------------------------------------------------------------
2936 PROCEDURE RegValueToIdConversion IS
2937 --
2938 -- records will be processed with record_status as G_RS_IN_PROCESS
2939 -- and error_number <> G_ES_REG_DUP_INTF_RECORD
2940 --
2941 BEGIN
2942
2943 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2944 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'RegValueToIdConversion','RegValueToIdConversion(+)');
2945 END IF;
2946
2947 -- Records with invalid dml_type
2948 UPDATE zx_registrations_int
2949 SET error_number = error_number + G_ES_REG_TRANS_TYPE_INVALID
2950 WHERE record_status = G_RS_IN_PROCESS
2951 AND request_id = G_REQUEST_ID
2952 AND dml_type <> 'CREATE';
2953
2954 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' REG records updated with invalid dml_type';
2955 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2956 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'RegValueToIdConversion',G_DEBUG_STATEMENT);
2957 END IF;
2958
2959 -- Validate the fields effective_to and effective_from
2960 UPDATE zx_registrations_int
2961 SET error_number = error_number + G_ES_REG_DATE_RANGE_INVALID
2962 WHERE record_status = G_RS_IN_PROCESS
2963 AND request_id = G_REQUEST_ID
2964 AND effective_to IS NOT NULL
2965 AND effective_to < effective_from;
2966
2967 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' REG records updated with invalid date ';
2968 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
2969 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'RegValueToIdConversion',G_DEBUG_STATEMENT);
2970 END IF;
2971
2972 -- validating the fields registration_type_code and registration_type_name
2973 UPDATE zx_registrations_int reg_int
2974 SET error_number = error_number + G_ES_REG_REG_TYPE_INVALID
2975 WHERE (( REGISTRATION_TYPE_CODE IS NOT NULL
2976 AND NOT EXISTS
2977 (
2978 SELECT 1
2979 FROM fnd_lookups fndlookup
2980 WHERE fndlookup.lookup_type = 'ZX_REGISTRATIONS_TYPE'
2981 AND NVL(fndlookup.start_date_active, SYSDATE) <= SYSDATE
2982 AND NVL(fndlookup.end_date_active, SYSDATE) >= SYSDATE
2983 AND NVL(fndlookup.enabled_flag, 'N') = 'Y'
2984 AND fndlookup.lookup_code = reg_int.REGISTRATION_TYPE_CODE
2985 )
2986 )
2987 OR
2988 ( REGISTRATION_TYPE_CODE IS NULL
2989 AND REGISTRATION_TYPE_NAME IS NOT NULL
2990 AND NOT EXISTS
2991 ( SELECT 1
2992 FROM fnd_lookups fndlookup
2993 WHERE fndlookup.lookup_type = 'ZX_REGISTRATIONS_TYPE'
2994 AND NVL(fndlookup.start_date_active, SYSDATE) <= SYSDATE
2995 AND NVL(fndlookup.end_date_active, SYSDATE) >= SYSDATE
2996 AND NVL(fndlookup.enabled_flag, 'N') = 'Y'
2997 AND fndlookup.meaning = reg_int.REGISTRATION_TYPE_NAME
2998 )
2999 )
3000 )
3001 AND record_status = G_RS_IN_PROCESS
3002 AND request_id = G_REQUEST_ID;
3003
3004 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' REG records updated with invalid registration_type ';
3005 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3006 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'RegValueToIdConversion',G_DEBUG_STATEMENT);
3007 END IF;
3008
3009 -- value to id conversion for registration_type_code
3010 UPDATE zx_registrations_int reg_int
3011 SET registration_type_code = (
3012 SELECT fndlookup.lookup_code
3013 FROM fnd_lookups fndlookup
3014 WHERE fndlookup.lookup_type = 'ZX_REGISTRATIONS_TYPE'
3015 AND NVL(fndlookup.start_date_active, SYSDATE) <= SYSDATE
3016 AND NVL(fndlookup.end_date_active, SYSDATE) >= SYSDATE
3017 AND NVL(fndlookup.enabled_flag, 'N') = 'Y'
3018 AND fndlookup.meaning = reg_int.REGISTRATION_TYPE_NAME
3019 )
3020 WHERE record_status = G_RS_IN_PROCESS
3021 AND request_id = G_REQUEST_ID
3022 AND BITAND(error_number,G_ES_REG_REG_TYPE_INVALID) = 0
3023 AND registration_type_code IS NULL
3024 AND reg_int.REGISTRATION_TYPE_NAME IS NOT NULL;
3025
3026 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' REG records updated with valid registration_type_code ';
3027 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3028 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'RegValueToIdConversion',G_DEBUG_STATEMENT);
3029 END IF;
3030
3031 -- validating the fields registration_status_code and registration_status_name
3032 UPDATE zx_registrations_int reg_int
3033 SET error_number = error_number + G_ES_REG_REG_STAT_INVALID
3034 WHERE (( registration_status_code IS NOT NULL
3035 AND NOT EXISTS
3036 (
3037 SELECT 1
3038 FROM fnd_lookups fndlookup
3039 WHERE fndlookup.lookup_type = 'ZX_REGISTRATIONS_STATUS'
3040 AND NVL(fndlookup.start_date_active, SYSDATE) <= SYSDATE
3041 AND NVL(fndlookup.end_date_active, SYSDATE) >= SYSDATE
3042 AND NVL(fndlookup.enabled_flag, 'N') = 'Y'
3043 AND fndlookup.lookup_code = reg_int.registration_status_code
3044 )
3045 )
3046 OR
3047 ( registration_status_code IS NULL
3048 AND registration_status_name IS NOT NULL
3049 AND NOT EXISTS
3050 ( SELECT 1
3051 FROM fnd_lookups fndlookup
3052 WHERE fndlookup.lookup_type = 'ZX_REGISTRATIONS_STATUS'
3053 AND NVL(fndlookup.start_date_active, SYSDATE) <= SYSDATE
3054 AND NVL(fndlookup.end_date_active, SYSDATE) >= SYSDATE
3055 AND NVL(fndlookup.enabled_flag, 'N') = 'Y'
3056 AND fndlookup.meaning = reg_int.registration_status_name
3057 )
3058 )
3059 )
3060 AND record_status = G_RS_IN_PROCESS
3061 AND request_id = G_REQUEST_ID;
3062
3063 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' REG records updated with invalid registration_status ';
3064 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3065 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'RegValueToIdConversion',G_DEBUG_STATEMENT);
3066 END IF;
3067
3068 -- value to id conversion for registration_status_code
3069 UPDATE zx_registrations_int reg_int
3070 SET registration_status_code = (
3071 SELECT fndlookup.lookup_code
3072 FROM fnd_lookups fndlookup
3073 WHERE fndlookup.lookup_type = 'ZX_REGISTRATIONS_STATUS'
3074 AND NVL(fndlookup.start_date_active, SYSDATE) <= SYSDATE
3075 AND NVL(fndlookup.end_date_active, SYSDATE) >= SYSDATE
3076 AND NVL(fndlookup.enabled_flag, 'N') = 'Y'
3077 AND fndlookup.meaning = reg_int.registration_status_name
3078 )
3079 WHERE record_status = G_RS_IN_PROCESS
3080 AND request_id = G_REQUEST_ID
3081 AND BITAND(error_number,G_ES_REG_REG_STAT_INVALID) = 0
3082 AND registration_status_code IS NULL
3083 AND reg_int.registration_status_name IS NOT NULL;
3084
3085 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' REG records updated with valid registration_status_code ';
3086 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3087 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'RegValueToIdConversion',G_DEBUG_STATEMENT);
3088 END IF;
3089
3090 -- validating the fields registration_source_code and registration_source_name
3091 UPDATE zx_registrations_int reg_int
3092 SET error_number = error_number + G_ES_REG_REG_SRC_INVALID
3093 WHERE (( registration_source_code IS NOT NULL
3094 AND NOT EXISTS
3095 (
3096 SELECT 1
3097 FROM fnd_lookups fndlookup
3098 WHERE fndlookup.lookup_type = 'ZX_REGISTRATIONS_SOURCE'
3099 AND NVL(fndlookup.start_date_active, SYSDATE) <= SYSDATE
3100 AND NVL(fndlookup.end_date_active, SYSDATE) >= SYSDATE
3101 AND NVL(fndlookup.enabled_flag, 'N') = 'Y'
3102 AND fndlookup.lookup_code = reg_int.registration_source_code
3103 )
3104 )
3105 OR
3106 ( registration_source_code IS NULL
3107 AND registration_source_name IS NOT NULL
3108 AND NOT EXISTS
3109 ( SELECT 1
3110 FROM fnd_lookups fndlookup
3111 WHERE fndlookup.lookup_type = 'ZX_REGISTRATIONS_SOURCE'
3112 AND NVL(fndlookup.start_date_active, SYSDATE) <= SYSDATE
3113 AND NVL(fndlookup.end_date_active, SYSDATE) >= SYSDATE
3114 AND NVL(fndlookup.enabled_flag, 'N') = 'Y'
3115 AND fndlookup.meaning = reg_int.registration_source_name
3116 )
3117 )
3118 )
3119 AND record_status = G_RS_IN_PROCESS
3120 AND request_id = G_REQUEST_ID;
3121
3122 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' REG records updated with invalid registration_source ';
3123 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3124 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'RegValueToIdConversion',G_DEBUG_STATEMENT);
3125 END IF;
3126
3127 -- value to id conversion for registration_source_code
3128 UPDATE zx_registrations_int reg_int
3129 SET registration_source_code = (
3130 SELECT fndlookup.lookup_code
3131 FROM fnd_lookups fndlookup
3132 WHERE fndlookup.lookup_type = 'ZX_REGISTRATIONS_SOURCE'
3133 AND NVL(fndlookup.start_date_active, SYSDATE) <= SYSDATE
3134 AND NVL(fndlookup.end_date_active, SYSDATE) >= SYSDATE
3135 AND NVL(fndlookup.enabled_flag, 'N') = 'Y'
3136 AND fndlookup.meaning = reg_int.registration_source_name
3137 )
3138 WHERE record_status = G_RS_IN_PROCESS
3139 AND request_id = G_REQUEST_ID
3140 AND BITAND(error_number,G_ES_REG_REG_SRC_INVALID) = 0
3141 AND registration_source_code IS NULL
3142 AND registration_source_name IS NOT NULL;
3143
3144 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' REG records updated with valid registration_source_code ';
3145 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3146 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'RegValueToIdConversion',G_DEBUG_STATEMENT);
3147 END IF;
3148
3149 -- validating the fields registration_reason_code and registration_reason_name
3150 UPDATE zx_registrations_int reg_int
3151 SET error_number = error_number + G_ES_REG_REG_RSN_INVALID
3152 WHERE (( registration_reason_code IS NOT NULL
3153 AND NOT EXISTS
3154 (
3155 SELECT 1
3156 FROM fnd_lookups fndlookup
3157 WHERE fndlookup.lookup_type = 'ZX_REGISTRATIONS_REASON'
3158 AND NVL(fndlookup.start_date_active, SYSDATE) <= SYSDATE
3159 AND NVL(fndlookup.end_date_active, SYSDATE) >= SYSDATE
3160 AND NVL(fndlookup.enabled_flag, 'N') = 'Y'
3161 AND fndlookup.lookup_code = reg_int.registration_reason_code
3162 )
3163 )
3164 OR
3165 ( registration_reason_code IS NULL
3166 AND registration_reason_name IS NOT NULL
3167 AND NOT EXISTS
3168 ( SELECT 1
3169 FROM fnd_lookups fndlookup
3170 WHERE fndlookup.lookup_type = 'ZX_REGISTRATIONS_REASON'
3171 AND NVL(fndlookup.start_date_active, SYSDATE) <= SYSDATE
3172 AND NVL(fndlookup.end_date_active, SYSDATE) >= SYSDATE
3173 AND NVL(fndlookup.enabled_flag, 'N') = 'Y'
3174 AND fndlookup.meaning = reg_int.registration_reason_name
3175 )
3176 )
3177 )
3178 AND record_status = G_RS_IN_PROCESS
3179 AND request_id = G_REQUEST_ID;
3180
3181 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' REG records updated with invalid registration_reason ';
3182 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3183 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'RegValueToIdConversion',G_DEBUG_STATEMENT);
3184 END IF;
3185
3186 -- value to id conversion for registration_reason_code
3187 UPDATE zx_registrations_int reg_int
3188 SET registration_reason_code = (
3189 SELECT fndlookup.lookup_code
3190 FROM fnd_lookups fndlookup
3191 WHERE fndlookup.lookup_type = 'ZX_REGISTRATIONS_REASON'
3192 AND NVL(fndlookup.start_date_active, SYSDATE) <= SYSDATE
3193 AND NVL(fndlookup.end_date_active, SYSDATE) >= SYSDATE
3194 AND NVL(fndlookup.enabled_flag, 'N') = 'Y'
3195 AND fndlookup.meaning = reg_int.registration_reason_name
3196 )
3197 WHERE record_status = G_RS_IN_PROCESS
3198 AND request_id = G_REQUEST_ID
3199 AND BITAND(error_number,G_ES_REG_REG_RSN_INVALID) = 0
3200 AND registration_reason_code IS NULL
3201 AND reg_int.registration_reason_name IS NOT NULL;
3202
3203 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' REG records updated with valid registration_reason_code ';
3204 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3205 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'RegValueToIdConversion',G_DEBUG_STATEMENT);
3206 END IF;
3207
3208 -- validating the fields tax_authority_id and tax_authority_name
3209 UPDATE zx_registrations_int reg_int
3210 SET error_number = error_number + G_ES_REG_TAX_AUT_INVALID
3211 WHERE (( tax_authority_id IS NOT NULL
3212 AND NOT EXISTS
3213 (
3214 SELECT 1
3215 FROM zx_party_tax_profile ptp, hz_parties pty
3216 WHERE ptp.party_type_code ='TAX_AUTHORITY'
3217 AND ptp.party_id = ptp.party_id
3218 AND pty.party_type = 'ORGANIZATION'
3219 AND ptp.party_tax_profile_id = reg_int.tax_authority_id
3220 )
3221 )
3222 OR
3223 ( tax_authority_id IS NULL
3224 AND tax_authority_name IS NOT NULL
3225 AND NOT EXISTS
3226 (
3227 SELECT 1
3228 FROM zx_party_tax_profile ptp, hz_parties pty
3229 WHERE ptp.party_type_code ='TAX_AUTHORITY'
3230 AND ptp.party_id = PTY.party_id
3231 AND pty.party_type = 'ORGANIZATION'
3232 AND pty.party_name = reg_int.tax_authority_name
3233 )
3234 )
3235 )
3236 AND record_status = G_RS_IN_PROCESS
3237 AND request_id = G_REQUEST_ID;
3238
3239 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' REG records updated with invalid tax authority ';
3240 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3241 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'RegValueToIdConversion',G_DEBUG_STATEMENT);
3242 END IF;
3243
3244 -- value to id conversion for tax_authority_id
3245 UPDATE zx_registrations_int reg_int
3246 SET tax_authority_id = (
3247 SELECT PTP.party_tax_profile_id
3248 FROM zx_party_tax_profile ptp, hz_parties pty
3249 WHERE ptp.party_type_code ='TAX_AUTHORITY'
3250 AND ptp.party_id = PTY.party_id
3251 AND pty.party_type = 'ORGANIZATION'
3252 AND pty.party_name = reg_int.tax_authority_name
3253 )
3254 WHERE record_status = G_RS_IN_PROCESS
3255 AND request_id = G_REQUEST_ID
3256 AND BITAND(error_number,G_ES_REG_TAX_AUT_INVALID) = 0
3257 AND tax_authority_id IS NULL
3258 AND tax_authority_name IS NOT NULL;
3259
3260 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' REG records updated with valid tax_authority_id ';
3261 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3262 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'RegValueToIdConversion',G_DEBUG_STATEMENT);
3263 END IF;
3264
3265 -- validating the field inclusive_tax_flag
3266 UPDATE zx_registrations_int
3267 SET error_number = error_number + G_ES_REG_INC_FLG_INVALID
3268 WHERE record_status = G_RS_IN_PROCESS
3269 AND request_id = G_REQUEST_ID
3270 AND inclusive_tax_flag NOT IN ('Y','N',NULL);
3271
3272 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' REG records updated with invalid inclusive_tax_flag ';
3273 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3274 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'RegValueToIdConversion',G_DEBUG_STATEMENT);
3275 END IF;
3276
3277 -- validating the fields rounding_rule_code and rounding_rule_name
3278 UPDATE zx_registrations_int reg_int
3279 SET error_number = error_number + G_ES_REG_ROUND_RULE_INVALID
3280 WHERE (( rounding_rule_code IS NOT NULL
3281 AND NOT EXISTS
3282 (
3283 SELECT 1
3284 FROM fnd_lookups
3285 WHERE lookup_type = 'ZX_ROUNDING_RULE'
3286 AND NVL(start_date_active, SYSDATE) <= SYSDATE
3287 AND NVL(end_date_active, SYSDATE) >= SYSDATE
3288 AND NVL(enabled_flag, 'N') = 'Y'
3289 AND lookup_code = reg_int.rounding_rule_code
3290 )
3291 )
3292 OR
3293 ( rounding_rule_code IS NULL
3294 AND rounding_rule_name IS NOT NULL
3295 AND NOT EXISTS
3296 ( SELECT 1
3297 FROM fnd_lookups
3298 WHERE lookup_type = 'ZX_ROUNDING_RULE'
3299 AND NVL(start_date_active, SYSDATE) <= SYSDATE
3300 AND NVL(end_date_active, SYSDATE) >= SYSDATE
3301 AND NVL(enabled_flag, 'N') = 'Y'
3302 AND meaning = reg_int.rounding_rule_name
3303 )
3304 )
3305 )
3306 AND record_status = G_RS_IN_PROCESS
3307 AND request_id = G_REQUEST_ID;
3308
3309 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' REG records updated with invalid rounding_rule ';
3310 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3311 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'RegValueToIdConversion',G_DEBUG_STATEMENT);
3312 END IF;
3313
3314 -- value to id conversion for rounding_rule_code
3315 UPDATE zx_registrations_int reg_int
3316 SET rounding_rule_code = (
3317 SELECT lookup_code
3318 FROM fnd_lookups
3319 WHERE lookup_type = 'ZX_ROUNDING_RULE'
3320 AND NVL(start_date_active, SYSDATE) <= SYSDATE
3321 AND NVL(end_date_active, SYSDATE) >= SYSDATE
3322 AND NVL(enabled_flag, 'N') = 'Y'
3323 AND meaning = reg_int.rounding_rule_name
3324 )
3325 WHERE record_status = G_RS_IN_PROCESS
3326 AND request_id = G_REQUEST_ID
3327 AND BITAND(error_number,G_ES_REG_ROUND_RULE_INVALID) = 0
3328 AND rounding_rule_code IS NULL
3329 AND rounding_rule_name IS NOT NULL;
3330
3331 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' REG records updated with valid rounding_rule_code ';
3332 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3333 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'RegValueToIdConversion',G_DEBUG_STATEMENT);
3334 END IF;
3335
3336 -- validating the fields legal_location_id and other asccociated columns
3337 UPDATE zx_registrations_int reg_int
3338 SET error_number = error_number + G_ES_REG_LGL_LOC_INVALID
3339 WHERE (( legal_location_id IS NOT NULL
3340 AND NOT EXISTS
3341 (
3342 SELECT 1
3343 FROM hr_locations loc
3344 WHERE legal_address_flag = 'Y'
3345 AND SYSDATE < nvl(inactive_date, SYSDATE + 1)
3346 AND loc.location_id = reg_int.legal_location_id
3347 )
3348 )
3349 OR
3350 ( legal_location_id IS NULL
3351 AND (legal_location_code IS NOT NULL OR
3352 address_line_1 IS NOT NULL OR
3353 region_1 IS NOT NULL OR
3354 town_or_city IS NOT NULL
3355 )
3356 AND NOT EXISTS
3357 (
3358 SELECT 1
3359 FROM hr_locations
3360 WHERE legal_address_flag = 'Y'
3361 AND SYSDATE < nvl(inactive_date, SYSDATE + 1)
3362 AND legal_location_code = reg_int.legal_location_code
3363 AND NVL(address_line_1,G_MISS_CHAR) = NVL(reg_int.address_line_1,G_MISS_CHAR)
3364 AND NVL(region_1,G_MISS_CHAR) = NVL(reg_int.region_1,G_MISS_CHAR)
3365 AND NVL(town_or_city,G_MISS_CHAR) = NVL(reg_int.town_or_city,G_MISS_CHAR)
3366 )
3367 )
3368 )
3369 AND record_status = G_RS_IN_PROCESS
3370 AND request_id = G_REQUEST_ID;
3371
3372 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' REG records updated with invalid legal_location_id ';
3373 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3374 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'RegValueToIdConversion',G_DEBUG_STATEMENT);
3375 END IF;
3376
3377 -- value to id conversion for legal_location_id
3378 UPDATE zx_registrations_int reg_int
3379 SET legal_location_id = (
3380 SELECT legal_location_id
3381 FROM hr_locations
3382 WHERE legal_address_flag = 'Y'
3383 AND SYSDATE < nvl(inactive_date, SYSDATE + 1)
3384 AND legal_location_code = reg_int.legal_location_code
3385 AND NVL(address_line_1,G_MISS_CHAR) =
3386 NVL(reg_int.Address_Line_1,G_MISS_CHAR)
3387 AND NVL(region_1,G_MISS_CHAR) =
3388 NVL(reg_int.Region_1,G_MISS_CHAR)
3389 AND NVL(town_or_city,G_MISS_CHAR) =
3390 NVL(reg_int.Town_OR_City,G_MISS_CHAR)
3391 )
3392 WHERE record_status = G_RS_IN_PROCESS
3393 AND request_id = G_REQUEST_ID
3394 AND BITAND(error_number,G_ES_REG_LGL_LOC_INVALID) = 0
3395 AND legal_location_id IS NULL
3396 AND ( legal_location_code IS NOT NULL OR
3397 address_line_1 IS NOT NULL OR
3398 region_1 IS NOT NULL OR
3399 town_or_city IS NOT NULL
3400 );
3401
3402 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' REG records updated with valid legal_location_id ';
3403 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3404 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'RegValueToIdConversion',G_DEBUG_STATEMENT);
3405 END IF;
3406
3407 -- validating the field default_registration_flag
3408 UPDATE zx_registrations_int
3409 SET error_number = error_number + G_ES_REG_DEFREG_FLG_INVALID
3410 WHERE record_status = G_RS_IN_PROCESS
3411 AND request_id = G_REQUEST_ID
3412 AND default_registration_flag NOT IN ('Y','N');
3413
3414 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' REG records updated with invalid default_registration_flag ';
3415 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3416 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'RegValueToIdConversion',G_DEBUG_STATEMENT);
3417 END IF;
3418
3419 -- validating the fields tax_regime_name snd tax_regime_code
3420 UPDATE zx_registrations_int reg_int
3421 SET error_number = error_number + G_ES_REG_TAX_REG_INVALID
3422 WHERE (( tax_regime_code IS NOT NULL
3423 AND NOT EXISTS
3424 (
3425 SELECT 1
3426 FROM zx_regimes_v
3427 WHERE has_sub_regime_flag <> 'Y'
3428 AND tax_regime_code = reg_int.tax_regime_code
3429 )
3430 )
3431 OR
3432 ( tax_regime_code IS NULL
3433 AND tax_regime_name IS NOT NULL
3434 AND NOT EXISTS
3435 (
3436 SELECT 1
3437 FROM zx_regimes_v
3438 WHERE has_sub_regime_flag <> 'Y'
3439 AND tax_regime_name = reg_int.tax_regime_name
3440 )
3441 )
3442 )
3443 AND record_status = G_RS_IN_PROCESS
3444 AND request_id = G_REQUEST_ID;
3445
3446 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' REG records updated with invalid tax_regime ';
3447 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3448 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'RegValueToIdConversion',G_DEBUG_STATEMENT);
3449 END IF;
3450
3451 -- value to id conversion for tax_regime_code
3452 UPDATE zx_registrations_int reg_int
3453 SET tax_regime_code = (
3454 SELECT tax_regime_name
3455 FROM zx_regimes_v
3456 WHERE has_sub_regime_flag <> 'Y'
3457 AND tax_regime_name = reg_int.tax_regime_name
3458 AND rownum=1
3459 )
3460 WHERE record_status = G_RS_IN_PROCESS
3461 AND request_id = G_REQUEST_ID
3462 AND BITAND(error_number,G_ES_REG_TAX_REG_INVALID) = 0
3463 AND tax_regime_code IS NULL
3464 AND tax_regime_name IS NOT NULL;
3465
3466 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' REG records updated with valid tax_regime_code ';
3467 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3468 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'RegValueToIdConversion',G_DEBUG_STATEMENT);
3469 END IF;
3470
3471 -- validating the fields tax and tax_name
3472 UPDATE zx_registrations_int reg_int
3473 SET error_number = error_number + G_ES_REG_TAX_PARAM_INVALID
3474 WHERE (( tax_code IS NOT NULL
3475 AND NOT EXISTS
3476 (
3477 SELECT 1
3478 FROM zx_mco_lv_taxes_v
3479 WHERE tax_regime_code = reg_int.tax_regime_code
3480 AND tax = reg_int.tax_code
3481 )
3482 )
3483 OR
3484 ( tax_code IS NULL
3485 AND tax_name IS NOT NULL
3486 AND NOT EXISTS
3487 (
3488 SELECT 1
3489 FROM zx_mco_lv_taxes_v
3490 WHERE tax_regime_code = reg_int.tax_regime_code
3491 AND tax_full_name = reg_int.tax_name
3492 )
3493 )
3494 )
3495 AND record_status = G_RS_IN_PROCESS
3496 AND request_id = G_REQUEST_ID
3497 AND BITAND(error_number,G_ES_REG_TAX_REG_INVALID) = 0;
3498
3499 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' REG records updated with invalid tax ';
3500 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3501 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'RegValueToIdConversion',G_DEBUG_STATEMENT);
3502 END IF;
3503
3504 -- value to id conversion for tax
3505 UPDATE zx_registrations_int reg_int
3506 SET tax_code = (
3507 SELECT tax
3508 FROM zx_mco_lv_taxes_v
3509 WHERE tax_regime_code = reg_int.tax_regime_code
3510 AND tax_full_name = reg_int.tax_name
3511 AND rownum=1
3512 )
3513 WHERE record_status = G_RS_IN_PROCESS
3514 AND request_id = G_REQUEST_ID
3515 AND BITAND(error_number,G_ES_REG_TAX_REG_INVALID+
3516 G_ES_REG_TAX_PARAM_INVALID) = 0
3517 AND tax_code IS NULL
3518 AND tax_name IS NOT NULL;
3519
3520 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' REG records updated with valid tax_code ';
3521 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3522 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'RegValueToIdConversion',G_DEBUG_STATEMENT);
3523 END IF;
3524
3525 -- validating the fields tax_jurisdiction_code and tax_jurisdiction_name
3526 UPDATE zx_registrations_int reg_int
3527 SET error_number = error_number + G_ES_REG_TAX_JUR_INVALID
3528 WHERE ( tax_jurisdiction_code IS NOT NULL
3529 OR tax_jurisdiction_name IS NOT NULL
3530 )
3531 AND record_status = G_RS_IN_PROCESS
3532 AND request_id = G_REQUEST_ID
3533 AND BITAND(error_number,G_ES_REG_TAX_REG_INVALID+
3534 G_ES_REG_TAX_PARAM_INVALID) = 0
3535 AND tax_code IS NULL;
3536
3537 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' REG records updated with invalid tax_jurisdiction ';
3538 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3539 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'RegValueToIdConversion',G_DEBUG_STATEMENT);
3540 END IF;
3541
3542 -- validating the fields TAX_JURISDICTION_CODE and tax_jurisdiction_name
3543 UPDATE zx_registrations_int reg_int
3544 SET error_number = error_number + G_ES_REG_TAX_JUR_INVALID
3545 WHERE (( tax_jurisdiction_code IS NOT NULL
3546 AND NOT EXISTS
3547 (
3548 SELECT 1
3549 FROM zx_jurisdictions_b
3550 WHERE tax_regime_code = reg_int.tax_regime_code
3551 AND tax = reg_int.tax_code
3552 AND tax_jurisdiction_code = reg_int.tax_jurisdiction_code
3553 AND NVL(allow_tax_registrations_flag,'N') = 'Y'
3554 )
3555 )
3556 OR
3557 ( tax_jurisdiction_code IS NULL
3558 AND tax_jurisdiction_name IS NOT NULL
3559 AND NOT EXISTS
3560 (
3561 SELECT 1
3562 FROM zx_jurisdictions_vl
3563 WHERE tax_regime_code = reg_int.tax_regime_code
3564 AND tax = reg_int.tax_code
3565 AND tax_jurisdiction_name = reg_int.tax_jurisdiction_name
3566 AND NVL(allow_tax_registrations_flag,'N') = 'Y'
3567 )
3568 )
3569 )
3570 AND record_status = G_RS_IN_PROCESS
3571 AND request_id = G_REQUEST_ID
3572 AND BITAND(error_number,G_ES_REG_TAX_REG_INVALID+
3573 G_ES_REG_TAX_PARAM_INVALID+
3574 G_ES_REG_TAX_JUR_INVALID) = 0
3575 AND tax_code IS NOT NULL;
3576
3577 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' REG records updated with invalid tax_jurisdiction ';
3578 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3579 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'RegValueToIdConversion',G_DEBUG_STATEMENT);
3580 END IF;
3581
3582 -- value to id conversion for tax_jurisdiction_code
3583 UPDATE zx_registrations_int reg_int
3584 SET tax_jurisdiction_code = (
3585 SELECT tax_jurisdiction_code
3586 FROM zx_jurisdictions_vl
3587 WHERE tax_regime_code = reg_int.tax_regime_code
3588 AND tax = reg_int.tax_code
3589 AND tax_jurisdiction_name = reg_int.tax_jurisdiction_name
3590 AND NVL(allow_tax_registrations_flag,'N') = 'Y'
3591 AND rownum=1
3592 )
3593 WHERE record_status = G_RS_IN_PROCESS
3594 AND request_id = G_REQUEST_ID
3595 AND BITAND(error_number,G_ES_REG_TAX_JUR_INVALID+
3596 G_ES_REG_TAX_REG_INVALID+
3597 G_ES_REG_TAX_PARAM_INVALID) = 0
3598 AND tax_jurisdiction_code IS NULL
3599 AND tax_jurisdiction_name IS NOT NULL;
3600
3601 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' REG records updated with valid tax_jurisdiction_code ';
3602 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3603 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'RegValueToIdConversion',G_DEBUG_STATEMENT);
3604 END IF;
3605
3606 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3607 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'RegValueToIdConversion','RegValueToIdConversion(-)');
3608 END IF;
3609
3610 EXCEPTION
3611 WHEN OTHERS THEN
3612 G_RETURN_STATUS := G_CONC_RET_STS_UNEXP_ERROR;
3613 G_MSG_DATA := SQLERRM;
3614 log_now (p_log_level => FND_FILE.LOG
3615 ,p_message => 'RegValueToIdConversion'||' : '||SQLERRM
3616 );
3617 RAISE;
3618 END RegValueToIdConversion;
3619
3620 -------------------------------------------------------------------------------
3621 -------------------------------------------------------------------------------
3622 -------------------------------------------------------------------------------
3623 PROCEDURE DupTRNValidation IS
3624
3625 BEGIN
3626
3627 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3628 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'DupTRNValidation','DupTRNValidation(+)');
3629 END IF;
3630
3631 -- Store Party Info in prog_int_char1
3632 UPDATE zx_registrations_int reg_int
3633 SET prog_int_char1 =
3634 (SELECT /*+ FIRST_ROWS(1) */ intf_party_reference
3635 FROM zx_party_tax_profile_int ptp_int
3636 WHERE ptp_int.intf_ptp_reference = reg_int.intf_ptp_reference
3637 AND ROWNUM = 1 )
3638 WHERE request_id = G_REQUEST_ID
3639 AND NVL(record_status,G_RS_ERROR) = G_RS_VALID;
3640
3641 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records updated with Party Info in prog_int_char1';
3642 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3643 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'DupTRNValidation',G_DEBUG_STATEMENT);
3644 END IF;
3645
3646 -- Ignore Records having allow_dup_regn_num_flag enables at Tax Level.
3647 UPDATE zx_registrations_int reg_int
3648 SET prog_int_num1 = G_PROG_INT_VAL
3649 WHERE request_id = G_REQUEST_ID
3650 AND NVL(record_status,G_RS_ERROR) = G_RS_VALID
3651 AND BITAND(reg_int.error_number,G_ES_REG_TAX_PARAM_INVALID) = 0
3652 and reg_int.tax_code IS NOT NULL
3653 AND EXISTS (
3654 select 1
3655 from zx_taxes_b tax
3656 where tax.tax = reg_int.tax_code
3657 and tax.tax_regime_code = reg_int.tax_regime_code
3658 and nvl(allow_dup_regn_num_flag,'N') = 'Y'
3659 );
3660
3661 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records updated with allow_dup_regn_num_flag ';
3662 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3663 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'DupTRNValidation',G_DEBUG_STATEMENT);
3664 END IF;
3665
3666 -- TRN duplicate against other Party/sites
3667 UPDATE zx_party_tax_profile_int ptp_int
3668 SET error_number = error_number + G_ES_PTP_REG_NUM_DUP
3669 WHERE request_id = G_REQUEST_ID
3670 AND NVL(record_status,G_RS_ERROR) = G_RS_VALID
3671 AND ptp_int.registration_number IS NOT NULL
3672 AND EXISTS (
3673 SELECT /*+ FIRST_ROWS(1) */ 1
3674 FROM zx_party_tax_profile_int ptp_dup
3675 WHERE ptp_dup.request_id = ptp_int.request_id
3676 AND ptp_dup.record_status = ptp_int.record_status
3677 AND ptp_dup.registration_number = ptp_int.registration_number
3678 AND ptp_dup.ROWID <> ptp_int.ROWID
3679 AND ptp_dup.intf_party_reference <> ptp_int.intf_party_reference
3680 AND ROWNUM = 1
3681 UNION ALL
3682 select /*+ FIRST_ROWS(1) */ 2
3683 from zx_registrations_int reg_dup
3684 where reg_dup.request_id = ptp_int.request_id
3685 AND reg_dup.record_status = ptp_int.record_status
3686 AND reg_dup.registration_number = ptp_int.registration_number
3687 AND reg_dup.intf_ptp_reference <> ptp_int.intf_ptp_reference
3688 AND BITAND(reg_dup.error_number,G_ES_REG_TAX_PARAM_INVALID) = 0
3689 AND reg_dup.prog_int_char1 <> ptp_int.intf_party_reference
3690 AND ROWNUM = 1
3691 );
3692
3693 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records updated with TRN duplicate against other Party/sites ';
3694 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3695 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'DupTRNValidation',G_DEBUG_STATEMENT);
3696 END IF;
3697
3698 -- TRN duplicate for Party Sites Siblings
3699 UPDATE zx_party_tax_profile_int ptp_int
3700 SET error_number = error_number + G_ES_PTP_REG_NUM_DUP
3701 WHERE request_id = G_REQUEST_ID
3702 AND NVL(record_status,G_RS_ERROR) = G_RS_VALID
3703 AND party_type_code = 'THIRD_PARTY_SITE'
3704 AND ptp_int.registration_number IS NOT NULL
3705 AND BITAND(ptp_int.error_number,G_ES_PTP_REG_NUM_DUP) = 0
3706 AND EXISTS (
3707 SELECT /*+ FIRST_ROWS(1) */ 1
3708 FROM zx_party_tax_profile_int ptp_dup
3709 WHERE ptp_dup.request_id = ptp_int.request_id
3710 AND ptp_dup.record_status = ptp_int.record_status
3711 and ptp_dup.party_type_code = 'THIRD_PARTY_SITE'
3712 AND ptp_dup.intf_party_reference = ptp_int.intf_party_reference
3713 AND ptp_dup.ROWID <> ptp_int.ROWID
3714 AND (ptp_dup.registration_number = ptp_int.registration_number
3715 OR EXISTS (
3716 select /*+ FIRST_ROWS(1) */ 2
3717 from zx_registrations_int reg_dup
3718 where reg_dup.request_id = ptp_dup.request_id
3719 AND reg_dup.record_status = ptp_dup.record_status
3720 and reg_dup.registration_number =ptp_int.registration_number
3721 and reg_dup.intf_ptp_reference =ptp_dup.intf_ptp_reference
3722 )
3723 )
3724 AND NOT EXISTS (
3725 select 1
3726 from zx_party_tax_profile_int ptp_prnt
3727 where ptp_prnt.request_id = ptp_dup.request_id
3728 AND ptp_prnt.record_status = ptp_dup.record_status
3729 and ptp_prnt.party_type_code = 'THIRD_PARTY'
3730 AND ptp_prnt.intf_party_reference = ptp_dup.intf_party_reference
3731 AND (
3732 ptp_prnt.registration_number=ptp_dup.registration_number
3733 OR EXISTS (
3734 SELECT /*+ FIRST_ROWS(1) */ 1
3735 FROM zx_registrations_int reg_prnt
3736 WHERE reg_prnt.request_id = ptp_prnt.request_id
3737 AND reg_prnt.record_status = ptp_prnt.record_status
3738 AND reg_prnt.intf_ptp_reference =ptp_prnt.intf_ptp_reference
3739 AND reg_prnt.registration_number =
3740 ptp_dup.registration_number
3741 )
3742 )
3743 )
3744 AND ROWNUM = 1
3745 );
3746
3747 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records updated with TRN duplicate for Party Sites Siblings ';
3748 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3749 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'DupTRNValidation',G_DEBUG_STATEMENT);
3750 END IF;
3751
3752 UPDATE zx_party_tax_profile_int ptp_int
3753 SET error_number = error_number + G_ES_PTP_REG_NUM_DUP
3754 WHERE request_id = G_REQUEST_ID
3755 AND NVL(record_status,G_RS_ERROR) = G_RS_VALID
3756 AND BITAND(ptp_int.error_number,G_ES_PTP_REG_NUM_DUP) = 0
3757 AND EXISTS(
3758 SELECT /*+ FIRST_ROWS(1) */ 1
3759 FROM zx_party_tax_profile prod
3760 WHERE prod.rep_registration_number = ptp_int.registration_number
3761 AND ROWNUM = 1
3762 );
3763
3764 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records updated with TRN duplicate against Production';
3765 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3766 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'DupTRNValidation',G_DEBUG_STATEMENT);
3767 END IF;
3768
3769 UPDATE zx_party_tax_profile_int ptp_int
3770 SET error_number = error_number + G_ES_PTP_REG_NUM_DUP
3771 WHERE request_id = G_REQUEST_ID
3772 AND NVL(record_status,G_RS_ERROR) = G_RS_VALID
3773 AND BITAND(ptp_int.error_number,G_ES_PTP_REG_NUM_DUP) = 0
3774 AND EXISTS(
3775 SELECT /*+ FIRST_ROWS(1) */ 1
3776 FROM zx_registrations prod
3777 WHERE prod.registration_number = ptp_int.registration_number
3778 AND ROWNUM = 1
3779 );
3780
3781 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records updated with TRN duplicate against REG Production';
3782 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3783 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'DupTRNValidation',G_DEBUG_STATEMENT);
3784 END IF;
3785
3786 -- TRN duplicate for Third Party and Third Party Site against Diff Party/Sites
3787 UPDATE zx_registrations_int reg_int
3788 SET error_number = error_number + G_ES_REG_REG_NUM_DUP
3789 WHERE request_id = G_REQUEST_ID
3790 AND NVL(record_status,G_RS_ERROR) = G_RS_VALID
3791 AND prog_int_num1 <> G_PROG_INT_VAL
3792 AND reg_int.registration_number IS NOT NULL
3793 AND EXISTS (
3794 SELECT /*+ FIRST_ROWS(1) */ 1
3795 FROM zx_party_tax_profile_int ptp_dup
3796 WHERE ptp_dup.request_id = reg_int.request_id
3797 AND ptp_dup.record_status = reg_int.record_status
3798 AND ptp_dup.registration_number = reg_int.registration_number
3799 AND ptp_dup.intf_party_reference <> reg_int.prog_int_char1
3800 AND ROWNUM = 1
3801 UNION ALL
3802 select /*+ FIRST_ROWS(1) */ 2
3803 from zx_registrations_int reg_dup
3804 where reg_dup.request_id = reg_int.request_id
3805 AND reg_dup.record_status = reg_int.record_status
3806 and reg_dup.registration_number = reg_int.registration_number
3807 AND reg_dup.ROWID <> reg_int.ROWID
3808 and reg_dup.prog_int_char1 <> reg_int.prog_int_char1
3809 AND ROWNUM = 1
3810 );
3811
3812 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records updated with TRN duplicate for Third Party and Third Party Site against Diff Party/Sites';
3813 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3814 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'DupTRNValidation',G_DEBUG_STATEMENT);
3815 END IF;
3816
3817 -- TRN duplicate for Third Party Sites Siblings
3818 UPDATE zx_registrations_int reg_int
3819 SET error_number = error_number + G_ES_REG_REG_NUM_DUP
3820 WHERE request_id = G_REQUEST_ID
3821 AND NVL(record_status,G_RS_ERROR) = G_RS_VALID
3822 AND prog_int_num1 <> G_PROG_INT_VAL
3823 AND EXISTS (SELECT /*+ FIRST_ROWS(1) */ 1
3824 FROM zx_party_tax_profile_int ptp_int
3825 WHERE ptp_int.request_id = reg_int.request_id
3826 AND ptp_int.record_status = reg_int.record_status
3827 AND ptp_int.intf_ptp_reference = reg_int.intf_ptp_reference
3828 AND ptp_int.intf_party_reference = reg_int.prog_int_char1
3829 AND ptp_int.party_type_code = 'THIRD_PARTY_SITE'
3830 AND ROWNUM = 1)
3831 AND reg_int.registration_number IS NOT NULL
3832 AND BITAND(reg_int.error_number,G_ES_REG_REG_NUM_DUP) = 0
3833 AND EXISTS (
3834 SELECT /*+ FIRST_ROWS(1) */ 1
3835 FROM zx_party_tax_profile_int ptp_dup
3836 WHERE ptp_dup.request_id = reg_int.request_id
3837 AND ptp_dup.record_status = reg_int.record_status
3838 and ptp_dup.party_type_code = 'THIRD_PARTY_SITE'
3839 AND ptp_dup.intf_party_reference = reg_int.prog_int_char1
3840 AND ptp_dup.intf_ptp_reference <> reg_int.intf_ptp_reference
3841 AND (ptp_dup.registration_number = reg_int.registration_number
3842 OR EXISTS (
3843 select /*+ FIRST_ROWS(1) */ 2
3844 from zx_registrations_int reg_dup
3845 where reg_dup.request_id = ptp_dup.request_id
3846 AND reg_dup.record_status = ptp_dup.record_status
3847 and reg_dup.registration_number =reg_int.registration_number
3848 and reg_dup.intf_ptp_reference =ptp_dup.intf_ptp_reference
3849 AND reg_dup.prog_int_char1 =reg_int.prog_int_char1
3850 AND BITAND(reg_dup.error_number,G_ES_REG_TAX_PARAM_INVALID) = 0
3851 )
3852 )
3853 AND NOT EXISTS (
3854 select /*+ FIRST_ROWS(1) */ 1
3855 from zx_party_tax_profile_int ptp_prnt
3856 where ptp_prnt.request_id = ptp_dup.request_id
3857 AND ptp_prnt.record_status = ptp_dup.record_status
3858 and ptp_prnt.party_type_code = 'THIRD_PARTY'
3859 AND ptp_prnt.intf_party_reference = ptp_dup.intf_party_reference
3860 AND (
3861 ptp_prnt.registration_number=ptp_dup.registration_number
3862 OR EXISTS (
3863 SELECT /*+ FIRST_ROWS(1) */ 1
3864 FROM zx_registrations_int reg_prnt
3865 WHERE reg_prnt.request_id = ptp_prnt.request_id
3866 AND reg_prnt.record_status = ptp_prnt.record_status
3867 AND reg_prnt.intf_ptp_reference =ptp_prnt.intf_ptp_reference
3868 AND reg_prnt.registration_number =
3869 ptp_dup.registration_number
3870 )
3871 )
3872 )
3873 AND ROWNUM = 1
3874 );
3875
3876 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records updated with TRN duplicate for Third Party Sites Siblings';
3877 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3878 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'DupTRNValidation',G_DEBUG_STATEMENT);
3879 END IF;
3880
3881 -- TRN duplicate against Prod Tables
3882 UPDATE zx_registrations_int reg_int
3883 SET error_number = error_number + G_ES_REG_REG_NUM_DUP
3884 WHERE request_id = G_REQUEST_ID
3885 AND NVL(record_status,G_RS_ERROR) = G_RS_VALID
3886 AND prog_int_num1 <> G_PROG_INT_VAL
3887 AND BITAND(reg_int.error_number,G_ES_REG_REG_NUM_DUP) = 0
3888 AND EXISTS(
3889 SELECT /*+ FIRST_ROWS(1) */ 1
3890 FROM zx_party_tax_profile prod
3891 WHERE prod.rep_registration_number = reg_int.registration_number
3892 AND ROWNUM = 1
3893 );
3894
3895 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records updated with TRN duplicate against Prod Tables';
3896 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3897 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'DupTRNValidation',G_DEBUG_STATEMENT);
3898 END IF;
3899
3900 -- TRN duplicate against Prod Tables
3901 UPDATE zx_registrations_int reg_int
3902 SET error_number = error_number + G_ES_REG_REG_NUM_DUP
3903 WHERE request_id = G_REQUEST_ID
3904 AND NVL(record_status,G_RS_ERROR) = G_RS_VALID
3905 AND prog_int_num1 <> G_PROG_INT_VAL
3906 AND BITAND(reg_int.error_number,G_ES_REG_REG_NUM_DUP) = 0
3907 AND EXISTS(
3908 SELECT /*+ FIRST_ROWS(1) */ 1
3909 FROM zx_registrations prod
3910 WHERE prod.registration_number = reg_int.registration_number
3911 AND ROWNUM = 1
3912 );
3913
3914 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records updated with TRN duplicate against Prod Tables';
3915 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3916 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'DupTRNValidation',G_DEBUG_STATEMENT);
3917 END IF;
3918
3919
3920 UPDATE zx_party_tax_profile_int ptp_int
3921 SET record_status = G_RS_ERROR
3922 WHERE request_id = G_REQUEST_ID
3923 AND record_status = G_RS_VALID
3924 AND error_number > 0;
3925
3926 G_DEBUG_STATEMENT:='Updated Record Status for '||SQL%ROWCOUNT||' records from '||G_INTF_PTP_TABLE_NAME;
3927 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3928 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'DupTRNValidation',G_DEBUG_STATEMENT);
3929 END IF;
3930
3931 UPDATE zx_registrations_int reg_int
3932 SET record_status = G_RS_ERROR
3933 WHERE request_id = G_REQUEST_ID
3934 AND record_status = G_RS_VALID
3935 AND error_number > 0;
3936
3937 G_DEBUG_STATEMENT:='Updated Record Status for '||SQL%ROWCOUNT||' records from '||G_INTF_REG_TABLE_NAME;
3938 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3939 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'DupTRNValidation',G_DEBUG_STATEMENT);
3940 END IF;
3941
3942 UPDATE zx_party_tax_profile_int ptp_int
3943 SET record_status = NULL
3944 WHERE request_id = G_REQUEST_ID
3945 AND record_status = G_RS_VALID
3946 AND EXISTS (SELECT /*+ FIRST_ROWS(1) */ 1
3947 FROM zx_registrations_int reg_int
3948 WHERE request_id = G_REQUEST_ID
3949 AND record_status = G_RS_ERROR
3950 AND reg_int.intf_ptp_reference = ptp_int.intf_ptp_reference);
3951
3952 G_DEBUG_STATEMENT:='Reset Record Status for '||SQL%ROWCOUNT||' records from '||G_INTF_PTP_TABLE_NAME;
3953 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3954 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'DupTRNValidation',G_DEBUG_STATEMENT);
3955 END IF;
3956
3957 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3958 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'DupTRNValidation','DupTRNValidation(-)');
3959 END IF;
3960
3961 EXCEPTION
3962 WHEN OTHERS THEN
3963 G_RETURN_STATUS := G_CONC_RET_STS_UNEXP_ERROR;
3964 G_MSG_DATA := SQLERRM;
3965 log_now (p_log_level => FND_FILE.LOG
3966 ,p_message => 'DupTRNValidation'||' : '||SQLERRM
3967 );
3968 RAISE;
3969 END DupTRNValidation;
3970
3971 -------------------------------------------------------------------------------
3972 -------------------------------------------------------------------------------
3973 -------------------------------------------------------------------------------
3974
3975 PROCEDURE SyncUpRegNumberToPTP IS
3976
3977 BEGIN
3978
3979 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
3980 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'SyncUpRegNumberToPTP','SyncUpRegNumberToPTP(+)');
3981 END IF;
3982
3983 UPDATE zx_party_tax_profile_int ptp_int
3984 SET registration_number = (
3985 SELECT registration_number
3986 FROM zx_registrations_int reg
3987 WHERE reg.request_id = G_REQUEST_ID
3988 AND NVL(reg.record_status,G_RS_ERROR) = G_RS_VALID
3989 AND reg.intf_ptp_reference = nvl(ptp_int.intf_ptp_reference,G_MISS_CHAR)
3990 AND NVL(reg.default_registration_flag,'N') = 'Y'
3991 AND BITAND(error_number,G_ES_REG_DEFREG_FLG_INVALID+G_ES_REG_MULT_DEF_FLAG) = 0
3992 )
3993 WHERE request_id = G_REQUEST_ID
3994 AND record_status = G_RS_IN_PROCESS
3995 AND EXISTS (
3996 SELECT 1
3997 FROM zx_registrations_int reg
3998 WHERE reg.request_id = G_REQUEST_ID
3999 AND NVL(reg.record_status,G_RS_ERROR) = G_RS_VALID
4000 AND reg.intf_ptp_reference = nvl(ptp_int.intf_ptp_reference,G_MISS_CHAR)
4001 AND NVL(reg.default_registration_flag,'N') = 'Y'
4002 AND BITAND(error_number,G_ES_REG_DEFREG_FLG_INVALID+G_ES_REG_MULT_DEF_FLAG) = 0
4003 );
4004
4005 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records synced up with TRN in PTP from REG';
4006 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4007 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'SyncUpRegNumberToPTP',G_DEBUG_STATEMENT);
4008 END IF;
4009
4010 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4011 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'SyncUpRegNumberToPTP','SyncUpRegNumberToPTP(-)');
4012 END IF;
4013
4014 EXCEPTION
4015 WHEN OTHERS THEN
4016 G_RETURN_STATUS := G_CONC_RET_STS_UNEXP_ERROR;
4017 G_MSG_DATA := SQLERRM;
4018 log_now (p_log_level => FND_FILE.LOG
4019 ,p_message => 'SyncUpRegNumberToPTP'||' : '||SQLERRM
4020 );
4021 RAISE;
4022 END SyncUpRegNumberToPTP;
4023
4024 ------------------------------------------------------------------------------
4025 ------------------------------------------------------------------------------
4026
4027 PROCEDURE ProcessExemptionRecord IS
4028
4029 l_date1 DATE;
4030 l_date2 DATE;
4031 l_date3 DATE;
4032 l_date4 DATE;
4033 l_date5 DATE;
4034 l_date6 DATE;
4035
4036 BEGIN
4037
4038 l_date1 := SYSDATE;
4039
4040 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4041 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'ProcessExemptionRecord','ProcessExemptionRecord(+)');
4042 END IF;
4043
4044 -------------------------
4045 -- Populate default values
4046 -------------------------
4047 UPDATE zx_exemptions_int
4048 SET request_id = G_REQUEST_ID
4049 ,record_status = G_RS_IN_PROCESS
4050 ,dml_type = UPPER(dml_type)
4051 ,prog_int_char1 = NULL
4052 ,prog_int_num1 = 0
4053 ,error_number = 0
4054 WHERE NVL(record_status,G_RS_ERROR) <> G_RS_VALID
4055 AND NVL(batch_id,G_MISS_NUM) =
4056 NVL(G_BATCH_ID,NVL(batch_id,G_MISS_NUM));
4057
4058 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Populated default values';
4059 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4060 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ProcessExemptionRecord',G_DEBUG_STATEMENT);
4061 END IF;
4062
4063 -------------------------
4064 -- Check Mandatory Paramters
4065 -------------------------
4066
4067 UPDATE zx_exemptions_int exe_int
4068 SET error_number = G_ES_EXE_MAND_PARAM_MISSING
4069 WHERE request_id = G_REQUEST_ID
4070 AND record_status = G_RS_IN_PROCESS
4071 AND (NVL(tax_regime_code,tax_regime_name) IS NULL OR
4072 (content_owner_id IS NULL AND content_owner_name IS NULL) OR
4073 rate_modifier IS NULL);
4074
4075 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records with Mandatory Paramters NULL';
4076 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4077 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ProcessExemptionRecord',G_DEBUG_STATEMENT);
4078 END IF;
4079
4080 -------------------------
4081 -- Duplicate records checking
4082 -------------------------
4083
4084 --NULL;
4085
4086 -------------------------
4087 -- Value to Id Conversion
4088 -------------------------
4089
4090 l_date2 := SYSDATE;
4091 ExemptValueToIdConversion();
4092 l_date3 := SYSDATE;
4093
4094 G_DEBUG_STATEMENT:= ' Value to Conversion complete for Exemptions';
4095 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4096 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ProcessExemptionRecord',G_DEBUG_STATEMENT);
4097 END IF;
4098
4099 -------------------------
4100 -- Record level validations
4101 -------------------------
4102 --Exemptions with overlapping date ranges.
4103
4104 UPDATE zx_exemptions_int orig
4105 SET error_number = error_number + G_ES_EXE_DATE_OVERLAP
4106 WHERE record_status = G_RS_IN_PROCESS
4107 AND request_id = G_REQUEST_ID
4108 AND EXISTS (
4109 SELECT /*+ FIRST_ROWS(1) */ 1
4110 FROM zx_exemptions_int dup
4111 WHERE dup.rowid <> orig.rowid
4112 AND dup.request_id = G_REQUEST_ID
4113 AND dup.record_status = G_RS_IN_PROCESS
4114 AND dup.intf_ptp_reference = orig.intf_ptp_reference
4115 AND dup.tax_regime_code = orig.tax_regime_code
4116 AND NVL(dup.tax_code,G_MISS_CHAR) = NVL(orig.tax_code,G_MISS_CHAR)
4117 AND NVL(dup.tax_status_code,G_MISS_CHAR) = NVL(orig.tax_status_code,G_MISS_CHAR)
4118 AND NVL(dup.tax_rate_code,G_MISS_CHAR) = NVL(orig.tax_rate_code,G_MISS_CHAR)
4119 AND NVL(dup.tax_jurisdiction_id,G_MISS_NUM) = NVL(orig.tax_jurisdiction_id,G_MISS_NUM)
4120 AND NVL(dup.inventory_org_id,G_MISS_NUM) = NVL(orig.inventory_org_id,G_MISS_NUM)
4121 AND NVL(dup.inventory_item_id,G_MISS_NUM) = NVL(orig.inventory_item_id,G_MISS_NUM)
4122 AND (
4123 ( dup.exemption_status_code = 'PRIMARY' AND orig.exemption_status_code = 'PRIMARY')
4124 OR
4125 ( NVL(dup.exempt_reason_code,G_MISS_CHAR) = NVL(orig.exempt_reason_code,G_MISS_CHAR)
4126 AND NVL(dup.exempt_certificate_number,G_MISS_CHAR) = NVL(orig.exempt_certificate_number,G_MISS_CHAR)
4127 )
4128 )
4129 AND ( dup.effective_to IS NULL
4130 OR orig.effective_from <= dup.effective_to
4131 )
4132 AND ( orig.effective_to IS NULL
4133 OR orig.effective_to >= dup.effective_from
4134 )
4135 );
4136
4137 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records with Exemptions overlapping date ranges.';
4138 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4139 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ProcessExemptionRecord',G_DEBUG_STATEMENT);
4140 END IF;
4141
4142 ----------------------------
4143 -- Exemption DFF Validation
4144 ----------------------------
4145
4146 l_date4 := SYSDATE;
4147 performDFFValidation();
4148 l_date5 := SYSDATE;
4149
4150 G_DEBUG_STATEMENT:= 'Exemptions DFF validation Complete';
4151 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4152 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ProcessExemptionRecord',G_DEBUG_STATEMENT);
4153 END IF;
4154
4155 ----------------------------
4156 -- Tail End Activities
4157 ----------------------------
4158
4159 UPDATE zx_exemptions_int exe_int
4160 SET record_status = DECODE(error_number,0,G_RS_VALID,G_RS_ERROR)
4161 WHERE request_id = G_REQUEST_ID
4162 AND record_status = G_RS_IN_PROCESS;
4163
4164 UPDATE zx_party_tax_profile_int ptp_int
4165 SET record_status = NULL
4166 WHERE request_id = G_REQUEST_ID
4167 AND record_status = G_RS_VALID
4168 AND EXISTS (SELECT /*+ FIRST_ROWS(1) */ 1
4169 FROM zx_exemptions_int exe_int
4170 WHERE request_id = G_REQUEST_ID
4171 AND record_status = G_RS_ERROR
4172 AND exe_int.intf_ptp_reference = ptp_int.intf_ptp_reference);
4173
4174 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records updated with record_status NULL';
4175 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4176 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ProcessExemptionRecord',G_DEBUG_STATEMENT);
4177 END IF;
4178
4179 l_date6 := SYSDATE;
4180
4181 log_now (p_log_level => FND_FILE.LOG
4182 ,p_message => '+--------------------------------------------------------------------'
4183 );
4184 log_now (p_log_level => FND_FILE.LOG
4185 ,p_message => '| PERF METRICS for Processing Exemption Records'
4186 );
4187 log_now (p_log_level => FND_FILE.LOG
4188 ,p_message => '| Time Taken for Value to ID Conversions '||(l_date3-l_date2)*86400||' Secs'
4189 );
4190 log_now (p_log_level => FND_FILE.LOG
4191 ,p_message => '| Time Taken for Date Overlap Validation '||(l_date4-l_date3)*86400||' Secs'
4192 );
4193 log_now (p_log_level => FND_FILE.LOG
4194 ,p_message => '| Time Taken for DFF Validation '||(l_date5-l_date4)*86400||' Secs'
4195 );
4196 log_now (p_log_level => FND_FILE.LOG
4197 ,p_message => '| Total Time Taken for EXE Record Processing '||(l_date6-l_date1)*86400||' Secs'
4198 );
4199 log_now (p_log_level => FND_FILE.LOG
4200 ,p_message => '+--------------------------------------------------------------------'
4201 );
4202
4203 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4204 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'ProcessExemptionRecord','ProcessExemptionRecord(-)');
4205 END IF;
4206
4207 EXCEPTION
4208 WHEN OTHERS THEN
4209 G_RETURN_STATUS := G_CONC_RET_STS_UNEXP_ERROR;
4210 G_MSG_DATA := SQLERRM;
4211 log_now (p_log_level => FND_FILE.LOG
4212 ,p_message => 'ProcessExemptionRecord'||' : '||SQLERRM
4213 );
4214 RAISE;
4215 END ProcessExemptionRecord;
4216
4217 ------------------------------------------------------------------------------
4218 ------------------------------------------------------------------------------
4219 ------------------------------------------------------------------------------
4220 PROCEDURE ExemptValueToIdConversion IS
4221 BEGIN
4222
4223 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4224 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion','ExemptValueToIdConversion(+)');
4225 END IF;
4226
4227 -- Field Validations
4228
4229 -- Records with invalid dml_type
4230 UPDATE zx_exemptions_int
4231 SET error_number = error_number + G_ES_EXE_TRANS_TYPE_INVALID
4232 WHERE record_status = G_RS_IN_PROCESS
4233 AND request_id = G_REQUEST_ID
4234 AND dml_type <> 'CREATE';
4235
4236 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with invalid dml_type';
4237 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4238 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
4239 END IF;
4240
4241 -- validating the fields exempt_reason_name and exempt_reason_code
4242 UPDATE zx_exemptions_int exe_int
4243 SET error_number = error_number + G_ES_EXE_EXMPT_RSN_INVALID
4244 WHERE (( exempt_reason_code IS NOT NULL
4245 AND NOT EXISTS
4246 (
4247 SELECT 1
4248 FROM fnd_lookups fndlookup
4249 WHERE fndlookup.lookup_type = 'ZX_EXEMPTION_REASON_CODE'
4250 AND NVL(fndlookup.start_date_active, SYSDATE) <= SYSDATE
4251 AND NVL(fndlookup.end_date_active, SYSDATE) >= SYSDATE
4252 AND NVL(fndlookup.enabled_flag, 'N') = 'Y'
4253 AND fndlookup.lookup_code = exe_int.exempt_reason_code
4254 )
4255 )
4256 OR
4257 ( exempt_reason_code IS NULL
4258 AND exempt_reason_name IS NOT NULL
4259 AND NOT EXISTS
4260 ( SELECT 1
4261 FROM fnd_lookups fndlookup
4262 WHERE fndlookup.lookup_type = 'ZX_EXEMPTION_REASON_CODE'
4263 AND NVL(fndlookup.start_date_active, SYSDATE) <= SYSDATE
4264 AND NVL(fndlookup.end_date_active, SYSDATE) >= SYSDATE
4265 AND NVL(fndlookup.enabled_flag, 'N') = 'Y'
4266 AND fndlookup.meaning = exe_int.exempt_reason_name
4267 )
4268 )
4269 )
4270 AND record_status = G_RS_IN_PROCESS
4271 AND request_id = G_REQUEST_ID;
4272
4273 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with invalid exempt_reason';
4274 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4275 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
4276 END IF;
4277
4278 -- value to id conversion for registration_reason_code
4279 UPDATE zx_exemptions_int exe_int
4280 SET exempt_reason_code = (
4281 SELECT fndlookup.lookup_code
4282 FROM fnd_lookups fndlookup
4283 WHERE fndlookup.lookup_type = 'ZX_EXEMPTION_REASON_CODE'
4284 AND NVL(fndlookup.start_date_active, SYSDATE) <= SYSDATE
4285 AND NVL(fndlookup.end_date_active, SYSDATE) >= SYSDATE
4286 AND NVL(fndlookup.enabled_flag, 'N') = 'Y'
4287 AND fndlookup.meaning = exe_int.exempt_reason_name
4288 )
4289 WHERE record_status = G_RS_IN_PROCESS
4290 AND request_id = G_REQUEST_ID
4291 AND BITAND(error_number,G_ES_EXE_EXMPT_RSN_INVALID) = 0
4292 AND exempt_reason_code IS NULL
4293 AND exempt_reason_name IS NOT NULL;
4294
4295 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with valid exempt_reason_code';
4296 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4297 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
4298 END IF;
4299
4300 -- validating the fields exemption_status_name and exemption_status_code
4301 UPDATE zx_exemptions_int exe_int
4302 SET error_number = error_number + G_ES_EXE_EXMPT_STS_INVALID
4303 WHERE (( exemption_status_code IS NOT NULL
4304 AND NOT EXISTS
4305 (
4306 SELECT 1
4307 FROM fnd_lookups fndlookup
4308 WHERE fndlookup.lookup_type = 'ZX_EXEMPTION_STATUS'
4309 AND NVL(fndlookup.start_date_active, SYSDATE) <= SYSDATE
4310 AND NVL(fndlookup.end_date_active, SYSDATE) >= SYSDATE
4311 AND NVL(fndlookup.enabled_flag, 'N') = 'Y'
4312 AND fndlookup.lookup_code = exe_int.exemption_status_code
4313 )
4314 )
4315 OR
4316 ( exemption_status_code IS NULL
4317 AND exemption_status_name IS NOT NULL
4318 AND NOT EXISTS
4319 ( SELECT 1
4320 FROM fnd_lookups fndlookup
4321 WHERE fndlookup.lookup_type = 'ZX_EXEMPTION_STATUS'
4322 AND NVL(fndlookup.start_date_active, SYSDATE) <= SYSDATE
4323 AND NVL(fndlookup.end_date_active, SYSDATE) >= SYSDATE
4324 AND NVL(fndlookup.enabled_flag, 'N') = 'Y'
4325 AND fndlookup.meaning = exe_int.exemption_status_name
4326 )
4327 )
4328 )
4329 AND record_status = G_RS_IN_PROCESS
4330 AND request_id = G_REQUEST_ID;
4331
4332 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with invalid exemption_status';
4333 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4334 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
4335 END IF;
4336
4337 -- value to id conversion for exempt_status_code
4338 UPDATE zx_exemptions_int exe_int
4339 SET exemption_status_code = (
4340 SELECT fndlookup.lookup_code
4341 FROM fnd_lookups fndlookup
4342 WHERE fndlookup.lookup_type = 'ZX_EXEMPTION_STATUS'
4343 AND NVL(fndlookup.start_date_active, SYSDATE) <= SYSDATE
4344 AND NVL(fndlookup.end_date_active, SYSDATE) >= SYSDATE
4345 AND NVL(fndlookup.enabled_flag, 'N') = 'Y'
4346 AND fndlookup.meaning = exe_int.exemption_status_name
4347 )
4348 WHERE record_status = G_RS_IN_PROCESS
4349 AND request_id = G_REQUEST_ID
4350 AND BITAND(error_number,G_ES_EXE_EXMPT_STS_INVALID) = 0
4351 AND exemption_status_code IS NULL
4352 AND exemption_status_name IS NOT NULL;
4353
4354 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with valid exemption_status_code';
4355 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4356 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
4357 END IF;
4358
4359 -- validating the fields tax_regime_name snd tax_regime_code
4360 UPDATE zx_exemptions_int exe_int
4361 SET error_number = error_number + G_ES_EXE_TAX_REG_INVALID
4362 WHERE (
4363 ( tax_regime_code IS NOT NULL
4364 AND NOT EXISTS
4365 (
4366 SELECT tax_regime_code
4367 FROM zx_regimes_v
4368 WHERE has_sub_regime_flag <> 'Y'
4369 AND tax_regime_code = exe_int.tax_regime_code
4370 )
4371 )
4372 OR
4373 ( tax_regime_code IS NULL
4374 AND tax_regime_name IS NOT NULL
4375 AND NOT EXISTS
4376 (
4377 SELECT 1
4378 FROM zx_regimes_v
4379 WHERE has_sub_regime_flag <> 'Y'
4380 AND tax_regime_name = exe_int.tax_regime_name
4381 )
4382 )
4383 )
4384 AND record_status = G_RS_IN_PROCESS
4385 AND request_id = G_REQUEST_ID;
4386
4387 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with invalid tax_regime';
4388 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4389 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
4390 END IF;
4391
4392 -- value to id conversion for tax_regime_code
4393 UPDATE zx_exemptions_int exe_int
4394 SET tax_regime_code = (
4395 SELECT tax_regime_code
4396 FROM zx_regimes_v
4397 WHERE has_sub_regime_flag <> 'Y'
4398 AND tax_regime_name = exe_int.tax_regime_name
4399 )
4400 WHERE record_status = G_RS_IN_PROCESS
4401 AND request_id = G_REQUEST_ID
4402 AND BITAND(error_number,G_ES_EXE_TAX_REG_INVALID) = 0
4403 AND tax_regime_code IS NULL
4404 AND tax_regime_name IS NOT NULL;
4405
4406 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with valid tax_regime_code';
4407 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4408 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
4409 END IF;
4410
4411 -- validating the fields content_owner_id snd content_owner_name
4412 UPDATE zx_exemptions_int exe_int
4413 SET error_number = error_number + G_ES_EXE_CNT_OWN_INVALID
4414 WHERE (( content_owner_id IS NOT NULL
4415 AND NOT EXISTS
4416 (
4417 SELECT 1
4418 FROM zx_first_party_orgs_moac_v fpo,
4419 fnd_lookups LKP,
4420 zx_regimes_usages REG
4421 WHERE fpo.party_tax_profile_id <> -99
4422 AND lkp.lookup_type = 'ZX_PTP_PARTY_TYPE'
4423 AND lkp.lookup_code = fpo.party_type_code
4424 AND SYSDATE BETWEEN lkp.start_date_active
4425 AND NVL(LKP.end_date_active,SYSDATE)
4426 AND lkp.enabled_flag = 'Y'
4427 AND reg.first_pty_org_id = fpo.party_tax_profile_id
4428 AND reg.tax_regime_code = exe_int.tax_regime_code
4429 AND fpo.party_tax_profile_id = exe_int.content_owner_id
4430 )
4431 )
4432 OR
4433 ( content_owner_id IS NULL
4434 AND content_owner_name IS NOT NULL
4435 AND NOT EXISTS
4436 (
4437 SELECT 1
4438 FROM zx_first_party_orgs_moac_v fpo,
4439 fnd_lookups lkp,
4440 zx_regimes_usages reg
4441 WHERE fpo.party_tax_profile_id <> -99
4442 AND lkp.lookup_type = 'ZX_PTP_PARTY_TYPE'
4443 AND lkp.lookup_code = fpo.party_type_code
4444 AND SYSDATE BETWEEN LKP.start_date_active
4445 AND NVL(LKP.end_date_active,SYSDATE)
4446 AND lkp.enabled_flag = 'Y'
4447 AND reg.first_pty_org_id = fpo.party_tax_profile_id
4448 AND reg.tax_regime_code = exe_int.tax_regime_code
4449 AND fpo.party_name = exe_int.content_owner_name
4450 )
4451 )
4452 )
4453 AND record_status = G_RS_IN_PROCESS
4454 AND request_id = G_REQUEST_ID
4455 AND BITAND(error_number,G_ES_EXE_TAX_REG_INVALID) = 0;
4456
4457 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with invalid content_owner';
4458 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4459 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
4460 END IF;
4461
4462 -- value to id conversion for content_owner_id
4463 UPDATE zx_exemptions_int exe_int
4464 SET content_owner_id = (
4465 SELECT fpo.party_tax_profile_id
4466 FROM zx_first_party_orgs_moac_v fpo,
4467 fnd_lookups lkp,
4468 zx_regimes_usages reg
4469 WHERE FPO.party_tax_profile_id <> -99
4470 AND lkp.lookup_type = 'ZX_PTP_PARTY_TYPE'
4471 AND lkp.lookup_code = fpo.party_type_code
4472 AND SYSDATE BETWEEN LKP.start_date_active
4473 AND NVL(LKP.end_date_active,SYSDATE)
4474 AND lkp.enabled_flag = 'Y'
4475 AND reg.first_pty_org_id = fpo.party_tax_profile_id
4476 AND reg.tax_regime_code = exe_int.tax_regime_code
4477 AND fpo.party_name = exe_int.content_owner_name
4478 )
4479 WHERE record_status = G_RS_IN_PROCESS
4480 AND request_id = G_REQUEST_ID
4481 AND BITAND(error_number,G_ES_EXE_TAX_REG_INVALID+
4482 G_ES_EXE_CNT_OWN_INVALID) = 0
4483 AND content_owner_id IS NULL
4484 AND content_owner_name IS NOT NULL;
4485
4486 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with valid content_owner_id';
4487 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4488 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
4489 END IF;
4490
4491 -- validating the fields tax and tax_name
4492 UPDATE zx_exemptions_int exe_int
4493 SET error_number = error_number + G_ES_EXE_TAX_PARAM_INVALID
4494 WHERE (( tax_code IS NOT NULL
4495 AND NOT EXISTS
4496 (
4497 SELECT 1
4498 FROM zx_taxes_b ztvl,
4499 zx_subscription_details sd
4500 WHERE ztvl.tax_regime_code = sd.tax_regime_code
4501 AND ztvl.content_owner_id = sd.parent_first_pty_org_id
4502 AND (sd.view_options_code in ('NONE', 'VFC')
4503 or
4504 (sd.view_options_code = 'VFR'
4505 AND not exists ( SELECT 1
4506 FROM zx_taxes_b b
4507 WHERE b.tax_regime_code = ztvl.tax_regime_code
4508 AND b.tax = ztvl.tax
4509 AND b.content_owner_id = sd.first_pty_org_id
4510 )
4511 )
4512 )
4513 AND ztvl.allow_exemptions_flag = 'Y'
4514 AND ztvl.live_for_applicability_flag = 'Y'
4515 AND ztvl.tax_regime_code = exe_int.tax_regime_code
4516 AND sd.first_pty_org_id = exe_int.content_owner_id
4517 AND ztvl.tax = exe_int.tax_code
4518 )
4519 )
4520 OR
4521 ( tax_code IS NULL
4522 AND tax_name IS NOT NULL
4523 AND NOT EXISTS
4524 (
4525 SELECT 1
4526 FROM zx_taxes_vl ztvl,
4527 zx_subscription_details sd
4528 WHERE ztvl.tax_regime_code = sd.tax_regime_code
4529 AND ztvl.content_owner_id = sd.parent_first_pty_org_id
4530 AND (sd.view_options_code in ('NONE', 'VFC')
4531 or
4532 (sd.view_options_code = 'VFR'
4533 AND not exists ( SELECT 1
4534 FROM zx_taxes_b b
4535 WHERE b.tax_regime_code = ztvl.tax_regime_code
4536 AND b.tax = ztvl.tax
4537 AND b.content_owner_id = sd.first_pty_org_id
4538 )
4539 )
4540 )
4541 AND ztvl.allow_exemptions_flag = 'Y'
4542 AND ztvl.live_for_applicability_flag = 'Y'
4543 AND ztvl.tax_regime_code = exe_int.tax_regime_code
4544 AND sd.first_pty_org_id = exe_int.content_owner_id
4545 AND ztvl.tax_full_name = exe_int.tax_name
4546 )
4547 )
4548 )
4549 AND record_status = G_RS_IN_PROCESS
4550 AND request_id = G_REQUEST_ID
4551 AND BITAND(error_number,G_ES_EXE_TAX_REG_INVALID+
4552 G_ES_EXE_CNT_OWN_INVALID) = 0;
4553
4554 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with invalid tax';
4555 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4556 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
4557 END IF;
4558
4559 -- value to id conversion for tax
4560 UPDATE zx_exemptions_int exe_int
4561 SET tax_code = (
4562 SELECT ztvl.tax
4563 FROM zx_taxes_vl ztvl,
4564 zx_subscription_details sd
4565 WHERE ztvl.tax_regime_code = sd.tax_regime_code
4566 AND ztvl.content_owner_id = sd.parent_first_pty_org_id
4567 AND (sd.view_options_code in ('NONE', 'VFC')
4568 or
4569 (sd.view_options_code = 'VFR'
4570 AND not exists ( SELECT 1
4571 FROM zx_taxes_b b
4572 WHERE b.tax_regime_code = ztvl.tax_regime_code
4573 AND b.tax = ztvl.tax
4574 AND b.content_owner_id = sd.first_pty_org_id
4575 )
4576 )
4577 )
4578 AND ztvl.allow_exemptions_flag = 'Y'
4579 AND ztvl.live_for_applicability_flag = 'Y'
4580 AND ztvl.tax_regime_code = exe_int.tax_regime_code
4581 AND sd.first_pty_org_id = exe_int.content_owner_id
4582 AND ztvl.tax_full_name = exe_int.tax_name
4583 )
4584 WHERE record_status = G_RS_IN_PROCESS
4585 AND request_id = G_REQUEST_ID
4586 AND BITAND(error_number,G_ES_EXE_TAX_REG_INVALID+
4587 G_ES_EXE_CNT_OWN_INVALID+
4588 G_ES_EXE_TAX_PARAM_INVALID) = 0
4589 AND tax_code IS NULL
4590 AND tax_name IS NOT NULL;
4591
4592 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with valid tax_code';
4593 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4594 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
4595 END IF;
4596
4597 -- validating the fields tax_status_code and tax_status_name
4598 UPDATE zx_exemptions_int exe_int
4599 SET error_number = error_number + G_ES_EXE_TAX_STS_INVALID
4600 WHERE (( tax_status_code IS NOT NULL
4601 AND NOT EXISTS
4602 (
4603 SELECT 1
4604 FROM zx_status_b zsvl,
4605 zx_subscription_details zsd
4606 WHERE zsvl.allow_exemptions_flag = 'Y'
4607 AND zsd.tax_regime_code = zsvl.tax_regime_code
4608 AND zsd.parent_first_pty_org_id = zsvl.content_owner_id
4609 AND (NVL(zsd.view_options_code,'NONE') IN ('NONE', 'VFC') OR
4610 (NVL(zsd.view_options_code,'VFR') = 'VFR'
4611 AND NOT EXISTS
4612 (SELECT 1
4613 FROM zx_status_b b
4614 WHERE b.tax_regime_code = zsvl.tax_regime_code
4615 AND b.tax = zsvl.tax
4616 AND b.tax_status_code = zsvl.tax_status_code
4617 AND b.content_owner_id = zsd.first_pty_org_id
4618 )
4619 )
4620 )
4621 AND zsvl.tax_regime_code = exe_int.tax_regime_code
4622 AND zsd.first_pty_org_id = exe_int.content_owner_id
4623 AND zsvl.tax = exe_int.tax_code
4624 AND zsvl.tax_status_code = exe_int.tax_status_code
4625 )
4626 )
4627 OR
4628 ( tax_status_code IS NULL
4629 AND tax_status_name IS NOT NULL
4630 AND NOT EXISTS
4631 (
4632 SELECT 1
4633 FROM zx_status_vl zsvl,
4634 zx_subscription_details zsd
4635 WHERE zsvl.allow_exemptions_flag = 'Y'
4636 AND zsd.tax_regime_code = zsvl.tax_regime_code
4637 AND zsd.parent_first_pty_org_id = zsvl.content_owner_id
4638 AND (NVL(zsd.view_options_code,'NONE') IN ('NONE', 'VFC') OR
4639 (NVL(zsd.view_options_code,'VFR') = 'VFR'
4640 AND NOT EXISTS
4641 (SELECT 1
4642 FROM zx_status_b b
4643 WHERE b.tax_regime_code = zsvl.tax_regime_code
4644 AND b.tax = zsvl.tax
4645 AND b.tax_status_code = zsvl.tax_status_code
4646 AND b.content_owner_id = zsd.first_pty_org_id
4647 )
4648 )
4649 )
4650 AND zsvl.tax_regime_code = exe_int.tax_regime_code
4651 AND zsd.first_pty_org_id = exe_int.content_owner_id
4652 AND zsvl.tax = exe_int.tax_code
4653 AND zsvl.tax_status_name = exe_int.tax_status_name
4654 )
4655 )
4656 )
4657 AND record_status = G_RS_IN_PROCESS
4658 AND request_id = G_REQUEST_ID
4659 AND BITAND(error_number,G_ES_EXE_TAX_REG_INVALID+
4660 G_ES_EXE_CNT_OWN_INVALID+
4661 G_ES_EXE_TAX_PARAM_INVALID) = 0;
4662
4663 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with invalid tax status';
4664 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4665 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
4666 END IF;
4667
4668 -- value to id conversion for tax_status_code
4669 UPDATE zx_exemptions_int exe_int
4670 SET tax_status_code = (
4671 SELECT zsvl.TAX_STATUS_CODE
4672 FROM zx_status_vl zsvl,
4673 zx_subscription_details zsd
4674 WHERE zsvl.allow_exemptions_flag = 'y'
4675 AND zsd.tax_regime_code = zsvl.tax_regime_code
4676 AND zsd.parent_first_pty_org_id = zsvl.content_owner_id
4677 AND (NVL(zsd.view_options_code,'NONE') IN ('NONE', 'VFC') OR
4678 (NVL(zsd.view_options_code,'VFR') = 'VFR'
4679 AND NOT EXISTS
4680 (SELECT 1
4681 FROM zx_status_b b
4682 WHERE b.tax_regime_code = zsvl.tax_regime_code
4683 AND b.tax = zsvl.tax
4684 AND b.tax_status_code = zsvl.tax_status_code
4685 AND b.content_owner_id = zsd.first_pty_org_id
4686 )
4687 )
4688 )
4689 AND zsvl.tax_regime_code = exe_int.tax_regime_code
4690 AND zsd.first_pty_org_id = exe_int.content_owner_id
4691 AND zsvl.tax = exe_int.tax_code
4692 AND zsvl.TAX_STATUS_NAME = exe_int.tax_status_name
4693 )
4694 WHERE record_status = G_RS_IN_PROCESS
4695 AND request_id = G_REQUEST_ID
4696 AND BITAND(error_number,G_ES_EXE_TAX_REG_INVALID+
4697 G_ES_EXE_CNT_OWN_INVALID+
4698 G_ES_EXE_TAX_PARAM_INVALID+
4699 G_ES_EXE_TAX_STS_INVALID) = 0
4700 AND tax_status_code IS NULL
4701 AND tax_status_name IS NOT NULL;
4702
4703 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with valid tax_status_code';
4704 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4705 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
4706 END IF;
4707
4708 -- validating the fields tax_jurisdictin_code and tax_jurisdiction_name
4709 UPDATE zx_exemptions_int exe_int
4710 SET error_number = error_number + G_ES_EXE_TAX_JUR_INVALID
4711 WHERE ( tax_jurisdiction_id IS NOT NULL
4712 OR tax_jurisdiction_name IS NOT NULL
4713 )
4714 AND record_status = G_RS_IN_PROCESS
4715 AND request_id = G_REQUEST_ID
4716 AND tax_code IS NULL;
4717
4718 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with invalid tax_jurisdictin';
4719 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4720 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
4721 END IF;
4722
4723 -- validating the fields tax_jurisdiction_id and tax_jurisdiction_name
4724 UPDATE zx_exemptions_int exe_int
4725 SET error_number = error_number + G_ES_EXE_TAX_JUR_INVALID
4726 WHERE (( tax_jurisdiction_id IS NOT NULL
4727 AND NOT EXISTS
4728 (
4729 SELECT 1
4730 FROM ZX_JURISDICTIONS_b
4731 WHERE TAX_REGIME_CODE = exe_int.tax_regime_code
4732 AND tax = exe_int.tax_code
4733 AND tax_jurisdiction_id = exe_int.tax_jurisdiction_id
4734 )
4735 )
4736 OR
4737 ( tax_jurisdiction_id IS NULL
4738 AND tax_jurisdiction_name IS NOT NULL
4739 AND NOT EXISTS
4740 (
4741 SELECT 1
4742 FROM zx_jurisdictions_vl
4743 WHERE tax_regime_code = exe_int.tax_regime_code
4744 AND tax = exe_int.tax_code
4745 AND tax_jurisdiction_name = exe_int.tax_jurisdiction_name
4746 )
4747 )
4748 )
4749 AND record_status = G_RS_IN_PROCESS
4750 AND request_id = G_REQUEST_ID
4751 AND BITAND(error_number,G_ES_EXE_TAX_JUR_INVALID+
4752 G_ES_EXE_TAX_REG_INVALID+
4753 G_ES_EXE_TAX_PARAM_INVALID) = 0
4754 AND tax_code IS NOT NULL;
4755
4756 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with invalid tax_jurisdictin';
4757 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4758 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
4759 END IF;
4760
4761 -- value to id conversion for tax_jurisdictin_code
4762 UPDATE zx_exemptions_int exe_int
4763 SET tax_jurisdiction_id = (
4764 SELECT tax_jurisdiction_id
4765 FROM ZX_JURISDICTIONS_VL
4766 WHERE TAX_REGIME_CODE = exe_int.tax_regime_code
4767 AND tax = exe_int.tax_code
4768 AND tax_jurisdiction_name = exe_int.tax_jurisdiction_name
4769 )
4770 WHERE record_status = G_RS_IN_PROCESS
4771 AND request_id = G_REQUEST_ID
4772 AND BITAND(error_number,G_ES_EXE_TAX_JUR_INVALID+
4773 G_ES_EXE_TAX_REG_INVALID+
4774 G_ES_EXE_TAX_PARAM_INVALID) = 0
4775 AND tax_jurisdiction_id IS NULL
4776 AND tax_jurisdiction_name IS NOT NULL;
4777
4778 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with valid tax_jurisdiction_id';
4779 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4780 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
4781 END IF;
4782
4783 -- validating the fields tax_rate_code and tax_rate_name
4784 UPDATE zx_exemptions_int exe_int
4785 SET error_number = error_number + G_ES_EXE_TAX_RATE_INVALID
4786 WHERE (( tax_rate_code IS NOT NULL
4787 AND NOT EXISTS
4788 (
4789 SELECT 1
4790 FROM zx_rates_b zrvl, zx_subscription_details sd
4791 WHERE zrvl.tax_regime_code = sd.tax_regime_code
4792 AND zrvl.content_owner_id = sd.parent_first_pty_org_id
4793 AND (sd.view_options_code in ('NONE', 'VFC')
4794 or
4795 (sd.view_options_code = 'VFR'
4796 AND not exists ( SELECT 1
4797 FROM zx_rates_b b
4798 WHERE b.tax_regime_code = zrvl.tax_regime_code
4799 AND b.tax = zrvl.tax
4800 AND b.tax_status_code = zrvl.tax_status_code
4801 AND b.tax_rate_code = zrvl.tax_rate_code
4802 AND b.content_owner_id = sd.first_pty_org_id
4803 )
4804 )
4805 )
4806 AND zrvl.tax_regime_code = exe_int.tax_regime_code
4807 AND sd.first_pty_org_id = exe_int.content_owner_id
4808 AND zrvl.tax = exe_int.tax_code
4809 AND zrvl.tax_status_code = exe_int.tax_status_code
4810 AND zrvl.tax_rate_code = exe_int.tax_rate_code
4811 )
4812 )
4813 OR
4814 ( tax_rate_code IS NULL
4815 AND tax_rate_name IS NOT NULL
4816 AND NOT EXISTS
4817 (
4818 SELECT 1
4819 FROM zx_rates_vl zrvl, zx_subscription_details sd
4820 WHERE zrvl.tax_regime_code = sd.tax_regime_code
4821 AND zrvl.content_owner_id = sd.parent_first_pty_org_id
4822 AND (sd.view_options_code in ('NONE', 'VFC')
4823 or
4824 (sd.view_options_code = 'VFR'
4825 AND not exists ( SELECT 1
4826 FROM zx_rates_b b
4827 WHERE b.tax_regime_code = zrvl.tax_regime_code
4828 AND b.tax = zrvl.tax
4829 AND b.tax_status_code = zrvl.tax_status_code
4830 AND b.tax_rate_code = zrvl.tax_rate_code
4831 AND b.content_owner_id = sd.first_pty_org_id
4832 )
4833 )
4834 )
4835 AND zrvl.tax_regime_code = exe_int.tax_regime_code
4836 AND sd.first_pty_org_id = exe_int.content_owner_id
4837 AND zrvl.tax = exe_int.tax_code
4838 AND zrvl.tax_status_code = exe_int.tax_status_code
4839 AND zrvl.tax_rate_name = exe_int.tax_rate_name
4840 )
4841 )
4842 )
4843 AND record_status = G_RS_IN_PROCESS
4844 AND request_id = G_REQUEST_ID
4845 AND BITAND(error_number,G_ES_EXE_TAX_REG_INVALID+
4846 G_ES_EXE_TAX_PARAM_INVALID+
4847 G_ES_EXE_CNT_OWN_INVALID+
4848 G_ES_EXE_TAX_STS_INVALID) = 0;
4849
4850 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with invalid tax_rate';
4851 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4852 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
4853 END IF;
4854
4855 -- value to id conversion for tax_rate_code
4856 UPDATE zx_exemptions_int exe_int
4857 SET TAX_RATE_CODE = (
4858 SELECT zrvl.tax_rate_code
4859 FROM zx_rates_vl zrvl, zx_subscription_details sd
4860 WHERE zrvl.tax_regime_code = sd.tax_regime_code
4861 AND zrvl.content_owner_id = sd.parent_first_pty_org_id
4862 AND (sd.view_options_code in ('NONE', 'VFC')
4863 or
4864 (sd.view_options_code = 'VFR'
4865 AND not exists ( SELECT 1
4866 FROM zx_rates_b b
4867 WHERE b.tax_regime_code = zrvl.tax_regime_code
4868 AND b.tax = zrvl.tax
4869 AND b.tax_status_code = zrvl.tax_status_code
4870 AND b.tax_rate_code = zrvl.tax_rate_code
4871 AND b.content_owner_id = sd.first_pty_org_id
4872 )
4873 )
4874 )
4875 AND zrvl.tax_regime_code = exe_int.tax_regime_code
4876 AND sd.first_pty_org_id = exe_int.content_owner_id
4877 AND zrvl.tax = exe_int.tax_code
4878 AND zrvl.tax_status_code = exe_int.tax_status_code
4879 AND zrvl.tax_rate_name = exe_int.tax_rate_name
4880 )
4881 WHERE record_status = G_RS_IN_PROCESS
4882 AND request_id = G_REQUEST_ID
4883 AND BITAND(error_number,G_ES_EXE_TAX_REG_INVALID+
4884 G_ES_EXE_TAX_PARAM_INVALID+
4885 G_ES_EXE_CNT_OWN_INVALID+
4886 G_ES_EXE_TAX_STS_INVALID+
4887 G_ES_EXE_TAX_RATE_INVALID) = 0
4888 AND TAX_RATE_CODE IS NULL
4889 AND tax_rate_name IS NOT NULL;
4890
4891 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with valid tax_rate_code';
4892 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4893 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
4894 END IF;
4895
4896 -- Validate the fields apply_to_lower_levels_flag
4897 UPDATE zx_exemptions_int exe_int
4898 SET error_number = error_number + G_ES_EXE_LWR_LVL_FLG_INVALID
4899 WHERE record_status = G_RS_IN_PROCESS
4900 AND request_id = G_REQUEST_ID
4901 AND apply_to_lower_levels_flag NOT IN ('Y','N');
4902
4903 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with invalid apply_to_lower_levels_flag';
4904 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4905 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
4906 END IF;
4907
4908 -- Validate the fields effective_to and effective_from
4909 UPDATE zx_exemptions_int exe_int
4910 SET error_number = error_number + G_ES_EXE_DATE_RANGE_INVALID
4911 WHERE record_status = G_RS_IN_PROCESS
4912 AND request_id = G_REQUEST_ID
4913 AND effective_to IS NOT NULL
4914 AND effective_to < effective_from;
4915
4916 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with invalid effective date';
4917 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4918 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
4919 END IF;
4920
4921 -- validating the fields inventory_org_id, inventory_org_name
4922 UPDATE zx_exemptions_int exe_int
4923 SET error_number = error_number + G_ES_EXE_INV_ORG_INVALID
4924 WHERE (( inventory_org_id IS NOT NULL
4925 AND NOT EXISTS
4926 (
4927 SELECT 1
4928 FROM org_organization_definitions ood,
4929 hr_all_organization_units org,
4930 hr_organization_information ori
4931 WHERE ood.organization_id = org.organization_id
4932 AND org.organization_id = ori.organization_id
4933 AND ori.org_information_context = 'CLASS'
4934 AND ori.org_information1 = 'INV'
4935 AND ori.org_information2 = 'Y'
4936 AND EXISTS (SELECT 1
4937 FROM mtl_parameters
4938 WHERE master_organization_id = ood.organization_id)
4939 AND ood.organization_id = exe_int.inventory_org_id
4940
4941 )
4942 )
4943 OR
4944 ( inventory_org_id IS NULL
4945 AND inventory_org_name IS NOT NULL
4946 AND NOT EXISTS
4947 (
4948 SELECT 1
4949 FROM org_organization_definitions ood,
4950 hr_all_organization_units org,
4951 hr_organization_information ori
4952 WHERE ood.organization_id = org.organization_id
4953 AND org.organization_id = ORI.organization_id
4954 AND ori.org_information_context = 'CLASS'
4955 AND ori.org_information1 = 'INV'
4956 AND ori.org_information2 = 'Y'
4957 AND EXISTS (SELECT 1
4958 FROM mtl_parameters
4959 WHERE master_organization_id = OOD.ORGANIZATION_ID
4960 )
4961 AND ood.organization_name = exe_int.inventory_org_name
4962 )
4963 )
4964 )
4965 AND record_status = G_RS_IN_PROCESS
4966 AND request_id = G_REQUEST_ID;
4967
4968 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with invalid inventory org';
4969 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4970 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
4971 END IF;
4972
4973 -- value to id conversion for inventory_org_id
4974 UPDATE zx_exemptions_int exe_int
4975 SET Inventory_Org_id =
4976 (
4977 SELECT OOD.ORGANIZATION_ID
4978 FROM ORG_ORGANIZATION_DEFINITIONS OOD,
4979 HR_ALL_ORGANIZATION_UNITS ORG,
4980 HR_ORGANIZATION_INFORMATION ORI
4981 WHERE OOD.ORGANIZATION_ID = ORG.organization_id
4982 AND ORG.organization_id = ORI.organization_id
4983 AND ORI.org_information_context = 'CLASS'
4984 AND ORI.org_information1 = 'INV'
4985 AND ORI.org_information2 = 'Y'
4986 AND EXISTS (SELECT 1
4987 FROM mtl_parameters
4988 WHERE master_organization_id = OOD.ORGANIZATION_ID)
4989 AND OOD.ORGANIZATION_NAME = exe_int.Inventory_Org_name
4990 )
4991 WHERE record_status = G_RS_IN_PROCESS
4992 AND request_id = G_REQUEST_ID
4993 AND BITAND(error_number,G_ES_EXE_INV_ORG_INVALID) = 0
4994 AND Inventory_Org_id IS NULL
4995 AND Inventory_Org_name IS NOT NULL;
4996
4997 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with valid Inventory_Org_id';
4998 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
4999 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
5000 END IF;
5001
5002 -- validating the fields item_number, inventory_item_id
5003 UPDATE zx_exemptions_int exe_int
5004 SET error_number = error_number + G_ES_EXE_INV_ITM_INVALID
5005 WHERE (( inventory_item_id IS NOT NULL
5006 AND NOT EXISTS
5007 (
5008 SELECT 1
5009 FROM MTL_SYSTEM_ITEMS_B
5010 WHERE organization_id = exe_int.inventory_org_id
5011 AND inventory_item_id = exe_int.inventory_item_id
5012 )
5013 )
5014 OR
5015 ( inventory_item_id IS NULL
5016 AND item_number IS NOT NULL
5017 AND NOT EXISTS
5018 (
5019 SELECT 1
5020 FROM MTL_SYSTEM_ITEMS_B_KFV
5021 WHERE organization_id = exe_int.inventory_org_id
5022 AND concatenated_segments = exe_int.item_number
5023 )
5024 )
5025 )
5026 AND record_status = G_RS_IN_PROCESS
5027 AND request_id = G_REQUEST_ID
5028 AND BITAND(error_number,G_ES_EXE_INV_ORG_INVALID) = 0;
5029
5030 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with invalid inventory item';
5031 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5032 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
5033 END IF;
5034
5035 -- value to id conversion for inventory_item_id
5036 UPDATE zx_exemptions_int exe_int
5037 SET inventory_item_id =
5038 (
5039 SELECT inventory_item_id
5040 FROM MTL_SYSTEM_ITEMS_B_KFV
5041 WHERE organization_id = exe_int.inventory_org_id
5042 AND concatenated_segments = exe_int.item_number
5043 )
5044 WHERE record_status = G_RS_IN_PROCESS
5045 AND request_id = G_REQUEST_ID
5046 AND BITAND(error_number,G_ES_EXE_INV_ORG_INVALID+
5047 G_ES_EXE_INV_ITM_INVALID) = 0
5048 AND inventory_item_id IS NULL
5049 AND item_number IS NOT NULL;
5050
5051 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with valid inventory_item_id';
5052 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5053 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
5054 END IF;
5055
5056 -- validating the fields issuing_tax_authority_id, issuing_tax_authority_name
5057 UPDATE zx_exemptions_int exe_int
5058 SET error_number = error_number + G_ES_EXE_TAX_AUT_INVALID
5059 WHERE (( issuing_tax_authority_id IS NOT NULL
5060 AND NOT EXISTS
5061 (
5062 SELECT 1
5063 FROM zx_party_tax_profile PTP,
5064 hz_parties PTY
5065 WHERE PTP.party_type_code ='TAX_AUTHORITY'
5066 AND PTP.party_id = PTY.party_id
5067 AND PTP.party_tax_profile_id = exe_int.issuing_tax_authority_id
5068 )
5069 )
5070 OR
5071 ( issuing_tax_authority_id IS NULL
5072 AND issuing_tax_authority_name IS NOT NULL
5073 AND NOT EXISTS
5074 (
5075 SELECT PTY.party_name
5076 FROM zx_party_tax_profile PTP,
5077 hz_parties PTY
5078 WHERE PTP.party_type_code ='TAX_AUTHORITY'
5079 AND PTP.party_id = PTY.party_id
5080 AND PTy.party_name = exe_int.issuing_tax_authority_name
5081 )
5082 )
5083 )
5084 AND record_status = G_RS_IN_PROCESS
5085 AND request_id = G_REQUEST_ID;
5086
5087 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with invalid issuing_tax_authority';
5088 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5089 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
5090 END IF;
5091
5092 -- value to id conversion for issuing_tax_authority_id
5093 UPDATE zx_exemptions_int exe_int
5094 SET issuing_tax_authority_id =
5095 (
5096 SELECT PTP.party_tax_profile_id
5097 FROM zx_party_tax_profile PTP,
5098 hz_parties PTY
5099 WHERE PTP.party_type_code ='TAX_AUTHORITY'
5100 AND PTP.party_id = PTY.party_id
5101 AND PTY.party_name = exe_int.issuing_tax_authority_name
5102 )
5103 WHERE record_status = G_RS_IN_PROCESS
5104 AND request_id = G_REQUEST_ID
5105 AND BITAND(error_number,G_ES_EXE_TAX_AUT_INVALID) = 0
5106 AND issuing_tax_authority_id IS NULL
5107 AND issuing_tax_authority_name IS NOT NULL;
5108
5109 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with valid issuing_tax_authority_id';
5110 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5111 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
5112 END IF;
5113
5114 -- validating the fields exemption_type_code and exemption_type_name
5115 UPDATE zx_exemptions_int exe_int
5116 SET error_number = error_number + G_ES_EXE_EXMPT_TYP_INVALID
5117 WHERE (( exemption_type_code IS NOT NULL
5118 AND NOT EXISTS
5119 (
5120 SELECT 1
5121 FROM fnd_lookups fndlookup
5122 WHERE fndlookup.lookup_type = 'ZX_EXEMPTION_TYPE'
5123 AND NVL(fndlookup.start_date_active, SYSDATE) <= SYSDATE
5124 AND NVL(fndlookup.end_date_active, SYSDATE) >= SYSDATE
5125 AND NVL(fndlookup.enabled_flag, 'N') = 'Y'
5126 AND fndlookup.lookup_code = exe_int.exemption_type_code
5127 )
5128 )
5129 OR
5130 ( exemption_type_code IS NULL
5131 AND exemption_type_name IS NOT NULL
5132 AND NOT EXISTS
5133 (
5134 SELECT 1
5135 FROM fnd_lookups fndlookup
5136 WHERE fndlookup.lookup_type = 'ZX_EXEMPTION_TYPE'
5137 AND NVL(fndlookup.start_date_active, SYSDATE) <= SYSDATE
5138 AND NVL(fndlookup.end_date_active, SYSDATE) >= SYSDATE
5139 AND NVL(fndlookup.enabled_flag, 'N') = 'Y'
5140 AND fndlookup.meaning = exe_int.exemption_type_name
5141 )
5142 )
5143 )
5144 AND record_status = G_RS_IN_PROCESS
5145 AND request_id = G_REQUEST_ID;
5146
5147 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with invalid exemption_type';
5148 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5149 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
5150 END IF;
5151
5152 -- value to id conversion for exemption_type_code
5153 UPDATE zx_exemptions_int exe_int
5154 SET exemption_type_code = (
5155 SELECT fndlookup.lookup_code
5156 FROM fnd_lookups fndlookup
5157 WHERE fndlookup.lookup_type = 'ZX_EXEMPTION_TYPE'
5158 AND NVL(fndlookup.start_date_active, SYSDATE) <= SYSDATE
5159 AND NVL(fndlookup.end_date_active, SYSDATE) >= SYSDATE
5160 AND NVL(fndlookup.enabled_flag, 'N') = 'Y'
5161 AND fndlookup.meaning = exe_int.exemption_type_name
5162 )
5163 WHERE record_status = G_RS_IN_PROCESS
5164 AND request_id = G_REQUEST_ID
5165 AND BITAND(error_number,G_ES_EXE_EXMPT_TYP_INVALID) = 0
5166 AND exemption_type_code IS NULL
5167 AND exemption_type_name IS NOT NULL;
5168
5169 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Records with valid exemption_type_code';
5170 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5171 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion',G_DEBUG_STATEMENT);
5172 END IF;
5173
5174 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5175 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'ExemptValueToIdConversion','ExemptValueToIdConversion(-)');
5176 END IF;
5177
5178 EXCEPTION
5179 WHEN OTHERS THEN
5180 G_RETURN_STATUS := G_CONC_RET_STS_UNEXP_ERROR;
5181 G_MSG_DATA := SQLERRM;
5182 log_now (p_log_level => FND_FILE.LOG
5183 ,p_message => 'ExemptValueToIdConversion'||' : '||SQLERRM
5184 );
5185 RAISE;
5186 END ExemptValueToIdConversion;
5187
5188
5189 ------------------------------------------------------------------------------
5190 ------------------------------------------------------------------------------
5191 ------------------------------------------------------------------------------
5192 PROCEDURE resetDFFFieldUsage IS
5193 BEGIN
5194
5195 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5196 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'resetDFFFieldUsage','resetDFFFieldUsage(+)');
5197 END IF;
5198
5199 g_dff_usage_record.attribute1 := G_FALSE;
5200 g_dff_usage_record.attribute2 := G_FALSE;
5201 g_dff_usage_record.attribute3 := G_FALSE;
5202 g_dff_usage_record.attribute4 := G_FALSE;
5203 g_dff_usage_record.attribute5 := G_FALSE;
5204 g_dff_usage_record.attribute6 := G_FALSE;
5205 g_dff_usage_record.attribute7 := G_FALSE;
5206 g_dff_usage_record.attribute8 := G_FALSE;
5207 g_dff_usage_record.attribute9 := G_FALSE;
5208 g_dff_usage_record.attribute10 := G_FALSE;
5209 g_dff_usage_record.attribute11 := G_FALSE;
5210 g_dff_usage_record.attribute12 := G_FALSE;
5211 g_dff_usage_record.attribute13 := G_FALSE;
5212 g_dff_usage_record.attribute14 := G_FALSE;
5213 g_dff_usage_record.attribute15 := G_FALSE;
5214
5215 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5216 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'resetDFFFieldUsage','resetDFFFieldUsage(-)');
5217 END IF;
5218
5219 EXCEPTION
5220 WHEN OTHERS THEN
5221 G_RETURN_STATUS := G_CONC_RET_STS_UNEXP_ERROR;
5222 G_MSG_DATA := SQLERRM;
5223 log_now (p_log_level => FND_FILE.LOG
5224 ,p_message => 'resetDFFFieldUsage : '||SQLERRM
5225 );
5226 RAISE;
5227 END resetDFFFieldUsage;
5228
5229 FUNCTION getAttrValue (
5230 p_zx_exempt_rec IN zx_exemptions_int%ROWTYPE
5231 ,p_column_name IN VARCHAR2
5232 ) RETURN VARCHAR2 IS
5233 BEGIN
5234
5235 IF p_column_name = 'ATTRIBUTE1' THEN
5236 g_dff_usage_record.attribute1 := G_TRUE;
5237 RETURN p_zx_exempt_rec.attribute1;
5238 ELSIF p_column_name = 'ATTRIBUTE2' THEN
5239 g_dff_usage_record.attribute2 := G_TRUE;
5240 RETURN p_zx_exempt_rec.attribute2;
5241 ELSIF p_column_name = 'ATTRIBUTE3' THEN
5242 g_dff_usage_record.attribute3 := G_TRUE;
5243 RETURN p_zx_exempt_rec.attribute3;
5244 ELSIF p_column_name = 'ATTRIBUTE4' THEN
5245 g_dff_usage_record.attribute4 := G_TRUE;
5246 RETURN p_zx_exempt_rec.attribute4;
5247 ELSIF p_column_name = 'ATTRIBUTE5' THEN
5248 g_dff_usage_record.attribute5 := G_TRUE;
5249 RETURN p_zx_exempt_rec.attribute5;
5250 ELSIF p_column_name = 'ATTRIBUTE6' THEN
5251 g_dff_usage_record.attribute6 := G_TRUE;
5252 RETURN p_zx_exempt_rec.attribute6;
5253 ELSIF p_column_name = 'ATTRIBUTE7' THEN
5254 g_dff_usage_record.attribute7 := G_TRUE;
5255 RETURN p_zx_exempt_rec.attribute7;
5256 ELSIF p_column_name = 'ATTRIBUTE8' THEN
5257 g_dff_usage_record.attribute8 := G_TRUE;
5258 RETURN p_zx_exempt_rec.attribute8;
5259 ELSIF p_column_name = 'ATTRIBUTE9' THEN
5260 g_dff_usage_record.attribute9 := G_TRUE;
5261 RETURN p_zx_exempt_rec.attribute9;
5262 ELSIF p_column_name = 'ATTRIBUTE10' THEN
5263 g_dff_usage_record.attribute10 := G_TRUE;
5264 RETURN p_zx_exempt_rec.attribute10;
5265 ELSIF p_column_name = 'ATTRIBUTE11' THEN
5266 g_dff_usage_record.attribute11 := G_TRUE;
5267 RETURN p_zx_exempt_rec.attribute11;
5268 ELSIF p_column_name = 'ATTRIBUTE12' THEN
5269 g_dff_usage_record.attribute12 := G_TRUE;
5270 RETURN p_zx_exempt_rec.attribute12;
5271 ELSIF p_column_name = 'ATTRIBUTE13' THEN
5272 g_dff_usage_record.attribute13 := G_TRUE;
5273 RETURN p_zx_exempt_rec.attribute13;
5274 ELSIF p_column_name = 'ATTRIBUTE14' THEN
5275 g_dff_usage_record.attribute14 := G_TRUE;
5276 RETURN p_zx_exempt_rec.attribute14;
5277 ELSIF p_column_name = 'ATTRIBUTE15' THEN
5278 g_dff_usage_record.attribute15 := G_TRUE;
5279 RETURN p_zx_exempt_rec.attribute15;
5280 ELSE
5281 RETURN NULL;
5282 END IF;
5283 EXCEPTION
5284 WHEN OTHERS THEN
5285 G_RETURN_STATUS := G_CONC_RET_STS_UNEXP_ERROR;
5286 G_MSG_DATA := SQLERRM;
5287 log_now (p_log_level => FND_FILE.LOG
5288 ,p_message => 'getAttrValue : '||SQLERRM
5289 );
5290 RAISE;
5291 END getAttrValue;
5292
5293 ------------------------------------------------------------------------------
5294 ------------------------------------------------------------------------------
5295 ------------------------------------------------------------------------------
5296 PROCEDURE performDFFValidation IS
5297 l_dflex_r fnd_dflex.dflex_r;
5298
5299 l_dflex_dr fnd_dflex.dflex_dr;
5300
5301 l_global_ctx_r fnd_dflex.context_r;
5302 l_dff_ctx_r fnd_dflex.context_r;
5303
5304 l_tbl_ctx_code fnd_dflex.context_code_a;
5305 l_tbl_ctx_is_global fnd_dflex.boolean_a;
5306
5307 l_ctx_dr fnd_dflex.contexts_dr;
5308
5309 l_global_seg_dr fnd_dflex.segments_dr;
5310 l_dff_seg_dr fnd_dflex.segments_dr;
5311
5312 l_std_ctx_code fnd_descr_flex_contexts.descriptive_flex_context_code%TYPE;
5313 l_dff_ctx_code fnd_descr_flex_contexts.descriptive_flex_context_code%TYPE;
5314
5315 l_last_attribute_category zx_exemptions_int.attribute_category%TYPE;
5316 l_global_data_elements zx_exemptions_int.attribute_category%TYPE;
5317 l_global_ctx_index NUMBER;
5318
5319 l_count NUMBER;
5320
5321 CURSOR c_exempt_records IS
5322 SELECT *
5323 FROM zx_exemptions_int
5324 WHERE request_id = G_REQUEST_ID
5325 AND record_status = G_RS_IN_PROCESS
5326 ORDER BY attribute_category desc
5327 FOR UPDATE;
5328
5329 TYPE DYNAMIC_CUR IS REF CURSOR;
5330 c_err_cursor DYNAMIC_CUR;
5331
5332 BEGIN
5333
5334 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5335 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'performDFFValidation','performDFFValidation(+)');
5336 END IF;
5337
5338 -- validate the flex field
5339 G_DEBUG_STATEMENT:= ' Validating the Flx fields';
5340 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5341 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'performDFFValidation',G_DEBUG_STATEMENT);
5342 END IF;
5343
5344 FND_DFLEX.get_flexfield
5345 (appl_short_name => 'ZX'
5346 ,flexfield_name => 'ZX_EXEMPTIONS'
5347 ,flexfield => l_dflex_r
5348 ,flexinfo => l_dflex_dr
5349 );
5350 --
5351 -- get the contexts defined for the flex field.
5352 --
5353 FND_DFLEX.get_contexts
5354 (flexfield => l_dflex_r
5355 ,contexts => l_ctx_dr
5356 );
5357 resetDFFFieldUsage();
5358 l_tbl_ctx_is_global := l_ctx_dr.is_global;
5359 IF (l_tbl_ctx_is_global.COUNT > 0) THEN
5360 --
5361 -- context fields defined
5362 --
5363 FOR i IN l_tbl_ctx_is_global.FIRST .. l_tbl_ctx_is_global.LAST LOOP
5364 l_global_ctx_index := i;
5365 EXIT WHEN l_tbl_ctx_is_global(i);
5366 END LOOP;
5367 --
5368 -- l_global_ctx_index defines where the Global DFF is located
5369 --
5370 l_dff_ctx_r.flexfield := l_dflex_r;
5371 l_global_ctx_r.flexfield := l_dflex_r;
5372 l_global_ctx_r.context_code := l_ctx_dr.context_code(l_global_ctx_index);
5373 l_last_attribute_category := l_global_ctx_r.context_code;
5374 l_global_data_elements := l_global_ctx_r.context_code;
5375
5376 FND_DFLEX.get_segments
5377 (context => l_global_ctx_r
5378 ,segments => l_global_seg_dr
5379 ,enabled_only => TRUE
5380 );
5381 --
5382 -- l_global_seg_dr will now have the segments associated to DFF
5383 --
5384 FOR cr in c_exempt_records LOOP
5385 resetDFFFieldUsage();
5386 IF NVL(cr.attribute_category,l_last_attribute_category)
5387 <> l_last_attribute_category THEN
5388 --
5389 -- attribute category has changed get the dff record
5390 --
5391 l_tbl_ctx_code := l_ctx_dr.context_code;
5392
5393 FOR i IN l_tbl_ctx_code.FIRST .. l_tbl_ctx_code.LAST LOOP
5394 IF l_tbl_ctx_code(i) = cr.attribute_category THEN
5395 l_last_attribute_category := cr.attribute_category;
5396 l_dff_ctx_r.context_code := cr.attribute_category;
5397
5398 FND_DFLEX.get_segments
5399 (context => l_dff_ctx_r
5400 ,segments => l_dff_seg_dr
5401 ,enabled_only => TRUE
5402 );
5403 --
5404 -- now we obtained the Identified Segments for cr.attribute_category
5405 --
5406 EXIT; -- for loop
5407 END IF;
5408 END LOOP;
5409 END IF;
5410
5411 --
5412 -- global segments are available at l_global_seg_dr
5413 -- dff segments are available at l_dff_seg_dr
5414 --
5415 FND_FLEX_DESCVAL.set_context_value(l_last_attribute_category);
5416
5417 IF l_global_seg_dr.application_column_name.COUNT > 0 THEN
5418 FOR i IN l_global_seg_dr.application_column_name.FIRST ..
5419 l_global_seg_dr.application_column_name.LAST LOOP
5420
5421 fnd_flex_descval.set_column_value
5422 (l_global_seg_dr.application_column_name(i)
5423 ,getAttrValue
5424 (p_zx_exempt_rec => cr
5425 ,p_column_name => l_global_seg_dr.application_column_name(i)
5426 )
5427 );
5428 END LOOP;
5429 END IF;
5430
5431 IF l_global_seg_dr.application_column_name.COUNT > 0 THEN
5432 IF l_last_attribute_category <> l_global_data_elements THEN
5433 FOR i IN l_dff_seg_dr.application_column_name.FIRST ..
5434 l_dff_seg_dr.application_column_name.LAST LOOP
5435
5436 fnd_flex_descval.set_column_value
5437 (l_dff_seg_dr.application_column_name(i)
5438 ,getAttrValue
5439 (p_zx_exempt_rec => cr
5440 ,p_column_name => l_dff_seg_dr.application_column_name(i)
5441 )
5442 );
5443 END LOOP;
5444 END IF;
5445 END IF;
5446 --
5447 -- calling FND routine to valide DFF columns
5448 --
5449 IF NOT FND_FLEX_DESCVAL.validate_desccols
5450 (appl_short_name => 'ZX'
5451 ,desc_flex_name => 'ZX_EXEMPTIONS'
5452 ) THEN
5453 UPDATE zx_exemptions_int
5454 SET error_number = error_number + G_ES_EXE_DFF_INVALID,
5455 prog_int_char1 = fnd_flex_descval.error_message
5456 WHERE CURRENT OF c_exempt_records;
5457 ELSE
5458 -- set to NULL all other DFF fields which are not defined
5459 UPDATE zx_exemptions_int intf
5460 SET attribute1 = DECODE(G_DFF_USAGE_RECORD.attribute1,G_TRUE,intf.attribute1,NULL)
5461 ,attribute2 = DECODE(G_DFF_USAGE_RECORD.attribute1,G_TRUE,intf.attribute2,NULL)
5462 ,attribute3 = DECODE(G_DFF_USAGE_RECORD.attribute1,G_TRUE,intf.attribute3,NULL)
5463 ,attribute4 = DECODE(G_DFF_USAGE_RECORD.attribute1,G_TRUE,intf.attribute4,NULL)
5464 ,attribute5 = DECODE(G_DFF_USAGE_RECORD.attribute1,G_TRUE,intf.attribute5,NULL)
5465 ,attribute6 = DECODE(G_DFF_USAGE_RECORD.attribute1,G_TRUE,intf.attribute6,NULL)
5466 ,attribute7 = DECODE(G_DFF_USAGE_RECORD.attribute1,G_TRUE,intf.attribute7,NULL)
5467 ,attribute8 = DECODE(G_DFF_USAGE_RECORD.attribute1,G_TRUE,intf.attribute8,NULL)
5468 ,attribute9 = DECODE(G_DFF_USAGE_RECORD.attribute1,G_TRUE,intf.attribute9,NULL)
5469 ,attribute10 = DECODE(G_DFF_USAGE_RECORD.attribute1,G_TRUE,intf.attribute10,NULL)
5470 ,attribute11 = DECODE(G_DFF_USAGE_RECORD.attribute1,G_TRUE,intf.attribute11,NULL)
5471 ,attribute12 = DECODE(G_DFF_USAGE_RECORD.attribute1,G_TRUE,intf.attribute12,NULL)
5472 ,attribute13 = DECODE(G_DFF_USAGE_RECORD.attribute1,G_TRUE,intf.attribute13,NULL)
5473 ,attribute14 = DECODE(G_DFF_USAGE_RECORD.attribute1,G_TRUE,intf.attribute14,NULL)
5474 ,attribute15 = DECODE(G_DFF_USAGE_RECORD.attribute1,G_TRUE,intf.attribute15,NULL)
5475 WHERE CURRENT OF c_exempt_records;
5476 END IF;
5477 END LOOP;
5478 ELSE
5479 -- no context fields defined.
5480 -- flag all record where customer has populated data into attributes
5481 UPDATE zx_exemptions_int
5482 SET error_number = error_number + G_ES_EXE_DFF_INVALID,
5483 prog_int_char1 = 'Attributes have been populated but no Context has been defined.'
5484 WHERE request_id = G_REQUEST_ID
5485 AND record_status = G_RS_IN_PROCESS
5486 AND (attribute1 IS NOT NULL
5487 OR
5488 attribute2 IS NOT NULL
5489 OR
5490 attribute3 IS NOT NULL
5491 OR
5492 attribute4 IS NOT NULL
5493 OR
5494 attribute5 IS NOT NULL
5495 OR
5496 attribute6 IS NOT NULL
5497 OR
5498 attribute7 IS NOT NULL
5499 OR
5500 attribute8 IS NOT NULL
5501 OR
5502 attribute9 IS NOT NULL
5503 OR
5504 attribute10 IS NOT NULL
5505 OR
5506 attribute11 IS NOT NULL
5507 OR
5508 attribute12 IS NOT NULL
5509 OR
5510 attribute13 IS NOT NULL
5511 OR
5512 attribute14 IS NOT NULL
5513 OR
5514 attribute15 IS NOT NULL
5515 );
5516
5517 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records flagged all record where customer has populated data into attributes';
5518 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5519 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'performDFFValidation',G_DEBUG_STATEMENT);
5520 END IF;
5521
5522 END IF;
5523 --
5524 -- DFF validation is complete
5525 --
5526 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5527 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'performDFFValidation','performDFFValidation(-)');
5528 END IF;
5529
5530 EXCEPTION
5531 WHEN OTHERS THEN
5532 IF c_exempt_records%ISOPEN THEN
5533 CLOSE c_exempt_records;
5534 END IF;
5535 G_RETURN_STATUS := G_CONC_RET_STS_UNEXP_ERROR;
5536 G_MSG_DATA := SQLERRM;
5537 log_now (p_log_level => FND_FILE.LOG
5538 ,p_message => 'performDFFValidation : '||SQLERRM
5539 );
5540 RAISE;
5541 END performDFFValidation;
5542
5543
5544 ------------------------------------------------------------------------------
5545 ------------------------------------------------------------------------------
5546 PROCEDURE ProcessRepCodeAssocRecord IS
5547
5548 l_date1 DATE;
5549 l_date2 DATE;
5550 l_date3 DATE;
5551 l_date4 DATE;
5552 l_date5 DATE;
5553
5554 BEGIN
5555
5556 l_date1 := SYSDATE;
5557
5558 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5559 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'ProcessRepCodeAssocRecord','ProcessRepCodeAssocRecord(+)');
5560 END IF;
5561
5562 -------------------------
5563 -- Populate default values
5564 -------------------------
5565 UPDATE zx_report_codes_assoc_int
5566 SET request_id = G_REQUEST_ID
5567 ,record_status = G_RS_IN_PROCESS
5568 ,dml_type = UPPER(dml_type)
5569 ,prog_int_char1 = NULL
5570 ,prog_int_num1 = 0
5571 ,error_number = 0
5572 WHERE NVL(record_status,G_RS_ERROR) <> G_RS_VALID
5573 AND NVL(batch_id,G_MISS_NUM) =
5574 NVL(G_BATCH_ID,NVL(batch_id,G_MISS_NUM));
5575
5576 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records populated with default values';
5577 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5578 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ProcessRepCodeAssocRecord',G_DEBUG_STATEMENT);
5579 END IF;
5580
5581 -------------------------
5582 -- Check Mandatory Paramters
5583 -------------------------
5584 -- party_tax_profile_id is considered in case of Update Scenario.
5585 UPDATE zx_report_codes_assoc_int
5586 SET error_number = G_ES_RCA_MAND_PARAM_MISSING
5587 WHERE request_id = G_REQUEST_ID
5588 AND record_status = G_RS_IN_PROCESS
5589 AND reporting_type_id IS NULL
5590 AND reporting_type_name IS NULL;
5591
5592 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records with Mandatory Paramters values NULL';
5593 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5594 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ProcessRepCodeAssocRecord',G_DEBUG_STATEMENT);
5595 END IF;
5596
5597 -------------------------
5598 -- Duplicate records checking
5599 -------------------------
5600
5601 UPDATE zx_report_codes_assoc_int orig
5602 SET error_number = error_number + G_ES_RCA_DUP_INTF_RECORD,
5603 record_status = G_RS_ERROR
5604 WHERE request_id = G_REQUEST_ID
5605 AND record_status = G_RS_IN_PROCESS
5606 AND error_number <> G_ES_RCA_MAND_PARAM_MISSING
5607 AND EXISTS (
5608 SELECT /*+ FIRST_ROWS(1) */ 1
5609 FROM zx_report_codes_assoc_int dup
5610 WHERE dup.rowid <> orig.rowid
5611 AND dup.request_id = G_REQUEST_ID
5612 AND dup.record_status = G_RS_IN_PROCESS
5613 AND NVL(dup.entity_id,G_MISS_NUM) = NVL(orig.entity_id,G_MISS_NUM)
5614 AND dup.intf_ptp_reference = orig.intf_ptp_reference
5615 AND nvl(dup.reporting_type_id,G_MISS_NUM) = nvl(orig.reporting_type_id,G_MISS_NUM)
5616 AND nvl(dup.reporting_type_name,G_MISS_CHAR) = nvl(orig.reporting_type_name,G_MISS_CHAR)
5617 AND dup.effective_from = orig.effective_from
5618 );
5619
5620 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' Duplicate records found';
5621 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5622 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ProcessRepCodeAssocRecord',G_DEBUG_STATEMENT);
5623 END IF;
5624
5625 -------------------------
5626 -- Value to Id Conversion
5627 -------------------------
5628
5629 l_date2 := SYSDATE;
5630 AssocValueToIdConversion();
5631 l_date3 := SYSDATE;
5632
5633 G_DEBUG_STATEMENT:= ' Value to ID Conversions Complete ';
5634 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5635 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ProcessRepCodeAssocRecord',G_DEBUG_STATEMENT);
5636 END IF;
5637
5638 -------------------------
5639 -- Record level validations
5640 -------------------------
5641
5642 -- Validation to check rca with overlapping date ranges.
5643
5644 UPDATE zx_report_codes_assoc_int orig
5645 SET error_number = error_number + G_ES_RCA_DATE_OVERLAP
5646 WHERE orig.record_status = G_RS_IN_PROCESS
5647 AND orig.request_id = G_REQUEST_ID
5648 AND EXISTS (
5649 SELECT /*+ FIRST_ROWS(1) */ 1
5650 FROM zx_report_codes_assoc_int dup
5651 WHERE dup.rowid <> orig.rowid
5652 AND dup.request_id = G_REQUEST_ID
5653 AND dup.record_status = G_RS_IN_PROCESS
5654 AND BITAND(dup.error_number,G_ES_RCA_REP_TYPE_INVALID) = 0
5655 AND dup.reporting_type_id = orig.reporting_type_id
5656 AND dup.intf_ptp_reference = orig.intf_ptp_reference
5657 AND ( dup.effective_to IS NULL
5658 OR orig.effective_from <= dup.effective_to
5659 )
5660 AND ( orig.effective_to IS NULL
5661 OR orig.effective_to >= dup.effective_from
5662 )
5663 );
5664
5665 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' rca records with overlapping date ranges.';
5666 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5667 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ProcessRepCodeAssocRecord',G_DEBUG_STATEMENT);
5668 END IF;
5669
5670 l_date4 := SYSDATE;
5671
5672 -------------------------
5673 -- NO Other Validations
5674 -------------------------
5675 UPDATE zx_report_codes_assoc_int rca_int
5676 SET record_status = DECODE(error_number,0,G_RS_VALID,G_RS_ERROR)
5677 WHERE request_id = G_REQUEST_ID
5678 AND record_status = G_RS_IN_PROCESS;
5679
5680
5681 UPDATE zx_party_tax_profile_int ptp_int
5682 SET record_status = NULL
5683 WHERE request_id = G_REQUEST_ID
5684 AND record_status = G_RS_VALID
5685 AND EXISTS (SELECT /*+ FIRST_ROWS(1) */ 1
5686 FROM zx_report_codes_assoc_int rca_int
5687 WHERE request_id = G_REQUEST_ID
5688 AND record_status = G_RS_ERROR
5689 AND rca_int.intf_ptp_reference = ptp_int.intf_ptp_reference);
5690
5691 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' ptp records with record_status updated to NULL';
5692 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5693 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'ProcessRepCodeAssocRecord',G_DEBUG_STATEMENT);
5694 END IF;
5695
5696 l_date5 := SYSDATE;
5697
5698 log_now (p_log_level => FND_FILE.LOG
5699 ,p_message => '+--------------------------------------------------------------------'
5700 );
5701 log_now (p_log_level => FND_FILE.LOG
5702 ,p_message => '| PERF METRICS for Processing Reporting Code Assoc Records'
5703 );
5704 log_now (p_log_level => FND_FILE.LOG
5705 ,p_message => '| Time Taken for Value to ID Conversions '||(l_date3-l_date2)*86400||' Secs'
5706 );
5707 log_now (p_log_level => FND_FILE.LOG
5708 ,p_message => '| Time Taken for Date Overlap Validation '||(l_date4-l_date3)*86400||' Secs'
5709 );
5710 log_now (p_log_level => FND_FILE.LOG
5711 ,p_message => '| Total Time Taken for RCA Record Processing '||(l_date5-l_date1)*86400||' Secs'
5712 );
5713 log_now (p_log_level => FND_FILE.LOG
5714 ,p_message => '+--------------------------------------------------------------------'
5715 );
5716
5717 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5718 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'ProcessRepCodeAssocRecord','ProcessRepCodeAssocRecord(-)');
5719 END IF;
5720
5721 EXCEPTION
5722 WHEN OTHERS THEN
5723 G_RETURN_STATUS := G_CONC_RET_STS_UNEXP_ERROR;
5724 G_MSG_DATA := SQLERRM;
5725 log_now (p_log_level => FND_FILE.LOG
5726 ,p_message => 'ProcessRepCodeAssocRecord'||' : '||SQLERRM
5727 );
5728 RAISE;
5729 END ProcessRepCodeAssocRecord;
5730
5731 ------------------------------------------------------------------------------
5732 ------------------------------------------------------------------------------
5733 ------------------------------------------------------------------------------
5734
5735 PROCEDURE AssocValueToIdConversion IS
5736
5737 BEGIN
5738
5739 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5740 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'AssocValueToIdConversion','AssocValueToIdConversion(+)');
5741 END IF;
5742
5743 -- Field Validations
5744
5745 -- Validate the field dml_type
5746 UPDATE zx_report_codes_assoc_int
5747 SET error_number = error_number + G_ES_RCA_TRANS_TYPE_INVALID
5748 WHERE record_status = G_RS_IN_PROCESS
5749 AND request_id = G_REQUEST_ID
5750 AND dml_type <> 'CREATE';
5751
5752 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records with invalid dml_type found';
5753 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5754 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'AssocValueToIdConversion',G_DEBUG_STATEMENT);
5755 END IF;
5756
5757 -- Validate the fields entity_code
5758 UPDATE zx_report_codes_assoc_int
5759 SET error_number = error_number + G_ES_RCA_ENTY_CD_INVALID
5760 WHERE record_status = G_RS_IN_PROCESS
5761 AND request_id = G_REQUEST_ID
5762 AND NVL(batch_id,G_MISS_NUM) =
5763 NVL(G_BATCH_ID,NVL(batch_id,G_MISS_NUM))
5764 AND entity_code <> 'ZX_PARTY_TAX_PROFILE';
5765
5766 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records with invalid entity_code found';
5767 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5768 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'AssocValueToIdConversion',G_DEBUG_STATEMENT);
5769 END IF;
5770
5771 -- Validate the fields effective_to and effective_from
5772 UPDATE zx_report_codes_assoc_int
5773 SET error_number = error_number + G_ES_RCA_DATE_RANGE_INVALID
5774 WHERE record_status = G_RS_IN_PROCESS
5775 AND request_id = G_REQUEST_ID
5776 AND effective_to IS NOT NULL
5777 AND effective_to < effective_from;
5778
5779 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records with invalid effective dates found';
5780 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5781 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'AssocValueToIdConversion',G_DEBUG_STATEMENT);
5782 END IF;
5783
5784 -- validating the fields reporting_type_id and reporting_type_name
5785 UPDATE zx_report_codes_assoc_int rca_int
5786 SET error_number = error_number + G_ES_RCA_REP_TYPE_INVALID
5787 WHERE (( reporting_type_id IS NOT NULL
5788 AND NOT EXISTS
5789 (
5790 SELECT 1
5791 FROM Zx_Reporting_Types_b RepType,
5792 Zx_Report_Types_Usages RepUsage
5793 WHERE RepType.Reporting_Type_Id = RepUsage.Reporting_Type_Id
5794 AND RepUsage.Enabled_Flag= 'Y'
5795 AND SYSDATE BETWEEN RepType. EFFECTIVE_FROM
5796 AND NVL(RepType. EFFECTIVE_TO,SYSDATE)
5797 AND RepUsage.ENTITY_CODE = 'ZX_PARTY_TAX_PROFILE'
5798 AND RepType.Has_Reporting_Codes_Flag = 'Y'
5799 AND NVL(RepType.legal_message_flag, 'N') = 'N'
5800 AND reptype.reporting_type_id = rca_int.reporting_type_id
5801 )
5802 )
5803 OR
5804 ( reporting_type_id IS NULL
5805 AND reporting_type_name IS NOT NULL
5806 AND NOT EXISTS
5807 (
5808 SELECT 1
5809 FROM Zx_Reporting_Types_VL RepType,
5810 Zx_Report_Types_Usages RepUsage
5811 WHERE RepType.Reporting_Type_Id = RepUsage.Reporting_Type_Id
5812 AND RepUsage.Enabled_Flag= 'Y'
5813 AND SYSDATE BETWEEN RepType. EFFECTIVE_FROM
5814 AND NVL(RepType. EFFECTIVE_TO,SYSDATE)
5815 AND RepUsage.ENTITY_CODE = 'ZX_PARTY_TAX_PROFILE'
5816 AND RepType.Has_Reporting_Codes_Flag = 'Y'
5817 AND NVL(RepType.legal_message_flag, 'N') = 'N'
5818 AND reptype.reporting_type_name = rca_int.reporting_type_name
5819 )
5820 )
5821 )
5822 AND record_status = G_RS_IN_PROCESS
5823 AND request_id = G_REQUEST_ID;
5824
5825 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records with invalid reporting_type found';
5826 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5827 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'AssocValueToIdConversion',G_DEBUG_STATEMENT);
5828 END IF;
5829
5830 -- value to id conversion for reporting_type_id
5831 UPDATE zx_report_codes_assoc_int rca_int
5832 SET reporting_type_id =
5833 (
5834 SELECT RepType.Reporting_Type_Id
5835 FROM Zx_Reporting_Types_VL RepType,
5836 Zx_Report_Types_Usages RepUsage
5837 WHERE RepType.Reporting_Type_Id = RepUsage.Reporting_Type_Id
5838 AND RepUsage.Enabled_Flag= 'Y'
5839 AND SYSDATE BETWEEN RepType. EFFECTIVE_FROM
5840 AND NVL(RepType. EFFECTIVE_TO,SYSDATE)
5841 AND RepUsage.ENTITY_CODE = 'ZX_PARTY_TAX_PROFILE'
5842 AND RepType.Has_Reporting_Codes_Flag = 'Y'
5843 AND NVL(RepType.legal_message_flag, 'N') = 'N'
5844 AND RepType.Reporting_Type_Name = rca_int.Reporting_Type_Name
5845 )
5846 WHERE record_status = G_RS_IN_PROCESS
5847 AND request_id = G_REQUEST_ID
5848 AND BITAND(error_number,G_ES_RCA_REP_TYPE_INVALID) = 0
5849 AND reporting_type_id IS NULL
5850 AND reporting_type_name IS NOT NULL;
5851
5852 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records updated with valid reporting_type_id';
5853 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5854 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'AssocValueToIdConversion',G_DEBUG_STATEMENT);
5855 END IF;
5856
5857 -- validating the fields reporting_code_id and reporting_code_name
5858 UPDATE zx_report_codes_assoc_int rca_int
5859 SET error_number = error_number + G_ES_RCA_REP_CODE_INVALID
5860 WHERE (( reporting_code_id IS NOT NULL
5861 AND NOT EXISTS
5862 (
5863 SELECT 1
5864 FROM ZX_REPORTING_CODES_b RepCode
5865 WHERE RepCode.Reporting_Type_Id = rca_int.Reporting_Type_Id
5866 AND SYSDATE BETWEEN RepCode.EFFECTIVE_FROM
5867 AND NVL(RepCode.EFFECTIVE_TO,SYSDATE)
5868 AND reporting_code_id = rca_int.reporting_code_id
5869 )
5870 )
5871 OR
5872 ( reporting_code_id IS NULL
5873 AND reporting_code_name IS NOT NULL
5874 AND NOT EXISTS
5875 (
5876 SELECT 1
5877 FROM ZX_REPORTING_CODES_VL RepCode
5878 WHERE RepCode.Reporting_Type_Id = rca_int.Reporting_Type_Id
5879 AND SYSDATE BETWEEN RepCode.EFFECTIVE_FROM
5880 AND NVL(RepCode.EFFECTIVE_TO,SYSDATE)
5881 AND reporting_code_name = rca_int.reporting_code_name
5882 )
5883 )
5884 )
5885 AND record_status = G_RS_IN_PROCESS
5886 AND request_id = G_REQUEST_ID
5887 AND BITAND(error_number,G_ES_RCA_REP_TYPE_INVALID) = 0;
5888
5889 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records with invalid reporting_code found';
5890 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5891 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'AssocValueToIdConversion',G_DEBUG_STATEMENT);
5892 END IF;
5893
5894 -- value to id conversion for reporting_code_id
5895 UPDATE zx_report_codes_assoc_int rca_int
5896 SET reporting_code_id =
5897 (
5898 SELECT Reporting_Code_Id
5899 FROM ZX_REPORTING_CODES_VL RepCode
5900 WHERE RepCode.Reporting_Type_Id = rca_int.Reporting_Type_Id
5901 AND SYSDATE BETWEEN RepCode.EFFECTIVE_FROM
5902 AND NVL(RepCode.EFFECTIVE_TO,SYSDATE)
5903 AND RepCode.Reporting_Code_Name = rca_int.reporting_code_name
5904 )
5905 WHERE record_status = G_RS_IN_PROCESS
5906 AND request_id = G_REQUEST_ID
5907 AND BITAND(error_number,G_ES_RCA_REP_TYPE_INVALID+
5908 G_ES_RCA_REP_CODE_INVALID) = 0
5909 AND reporting_code_id IS NULL
5910 AND reporting_code_name IS NOT NULL;
5911
5912 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records updated with valid reporting_code_id';
5913 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5914 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'AssocValueToIdConversion',G_DEBUG_STATEMENT);
5915 END IF;
5916
5917 -- validating the fields reporting_code_char_value/reporting_code_num_value/reporting_code_date_value
5918 UPDATE zx_report_codes_assoc_int rca_int
5919 SET error_number = error_number + G_ES_RCA_REP_CODE_VAL_INVALID
5920 WHERE record_status = G_RS_IN_PROCESS
5921 AND request_id = G_REQUEST_ID
5922 AND BITAND(error_number,G_ES_RCA_REP_TYPE_INVALID+
5923 G_ES_RCA_REP_CODE_INVALID) = 0
5924 AND NOT EXISTS (
5925 SELECT 1
5926 FROM ZX_REPORTING_CODES_B RepCode
5927 WHERE RepCode.Reporting_Type_Id = rca_int.Reporting_Type_Id
5928 AND RepCode.Reporting_Code_Id = rca_int.Reporting_Code_Id
5929 AND NVL(reporting_code_char_value, G_MISS_CHAR) =
5930 NVL(rca_int.reporting_code_char_value, G_MISS_CHAR)
5931 AND NVL(reporting_code_date_value, FND_API.G_MISS_DATE) =
5932 NVL(rca_int.reporting_code_date_value, FND_API.G_MISS_DATE)
5933 AND NVL(reporting_code_num_value, G_MISS_NUM) =
5934 NVL(rca_int.reporting_code_num_value, G_MISS_NUM)
5935 AND SYSDATE BETWEEN RepCode. EFFECTIVE_FROM
5936 AND NVL(RepCode. EFFECTIVE_TO,SYSDATE)
5937 );
5938
5939 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' records with invalid reporting_code_<datatype>_value found';
5940 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5941 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'AssocValueToIdConversion',G_DEBUG_STATEMENT);
5942 END IF;
5943
5944 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5945 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'AssocValueToIdConversion','AssocValueToIdConversion(-)');
5946 END IF;
5947
5948 EXCEPTION
5949 WHEN OTHERS THEN
5950 G_RETURN_STATUS := G_CONC_RET_STS_UNEXP_ERROR;
5951 G_MSG_DATA := SQLERRM;
5952 log_now (p_log_level => FND_FILE.LOG
5953 ,p_message => 'AssocValueToIdConversion'||' : '||SQLERRM
5954 );
5955 RAISE;
5956 END AssocValueToIdConversion;
5957
5958 PROCEDURE PopulateProductionTables IS
5959 BEGIN
5960
5961 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5962 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'PopulateProductionTables','PopulateProductionTables(-)');
5963 END IF;
5964
5965 UPDATE zx_party_tax_profile_int ptp_int
5966 SET party_tax_profile_id = zx_party_tax_profile_s.nextval
5967 WHERE record_status = G_RS_VALID
5968 AND request_id = G_REQUEST_ID
5969 AND party_tax_profile_id is NULL
5970 AND dml_type = 'CREATE';
5971
5972 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' ptp records updated with valid party_tax_profile_id';
5973 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5974 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'PopulateProductionTables',G_DEBUG_STATEMENT);
5975 END IF;
5976
5977 UPDATE zx_registrations_int reg_int
5978 SET party_tax_profile_id =
5979 (
5980 SELECT party_tax_profile_id
5981 FROM zx_party_tax_profile_int ptp_int
5982 WHERE ptp_int.intf_ptp_reference = reg_int.intf_ptp_reference
5983 AND ptp_int.record_status = G_RS_VALID
5984 AND ptp_int.request_id = G_REQUEST_ID
5985 )
5986 WHERE record_status = G_RS_VALID
5987 AND request_id = G_REQUEST_ID;
5988
5989 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' reg records updated with valid party_tax_profile_id';
5990 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
5991 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'PopulateProductionTables',G_DEBUG_STATEMENT);
5992 END IF;
5993
5994 UPDATE zx_exemptions_int exe_int
5995 SET party_tax_profile_id =
5996 (
5997 SELECT party_tax_profile_id
5998 FROM zx_party_tax_profile_int ptp_int
5999 WHERE ptp_int.intf_ptp_reference = exe_int.intf_ptp_reference
6000 AND ptp_int.record_status = G_RS_VALID
6001 AND ptp_int.request_id = G_REQUEST_ID
6002 )
6003 WHERE record_status = G_RS_VALID
6004 AND request_id = G_REQUEST_ID;
6005
6006 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' exe records updated with valid party_tax_profile_id';
6007 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
6008 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'PopulateProductionTables',G_DEBUG_STATEMENT);
6009 END IF;
6010
6011 UPDATE zx_report_codes_assoc_int rca_int
6012 SET (party_tax_profile_id,entity_id) =
6013 (
6014 SELECT party_tax_profile_id,party_tax_profile_id
6015 FROM zx_party_tax_profile_int ptp_int
6016 WHERE ptp_int.intf_ptp_reference = rca_int.intf_ptp_reference
6017 AND ptp_int.record_status = G_RS_VALID
6018 AND ptp_int.request_id = G_REQUEST_ID
6019 )
6020 WHERE record_status = G_RS_VALID
6021 AND request_id = G_REQUEST_ID;
6022
6023 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' rca records updated with valid party_tax_profile_id';
6024 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
6025 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'PopulateProductionTables',G_DEBUG_STATEMENT);
6026 END IF;
6027
6028 INSERT INTO zx_party_tax_profile(
6029 PARTY_TYPE_CODE,
6030 SUPPLIER_FLAG,
6031 CUSTOMER_FLAG,
6032 SITE_FLAG,
6033 PROCESS_FOR_APPLICABILITY_FLAG,
6034 ROUNDING_LEVEL_CODE,
6035 ROUNDING_RULE_CODE,
6036 WITHHOLDING_START_DATE,
6037 INCLUSIVE_TAX_FLAG,
6038 ALLOW_AWT_FLAG,
6039 USE_LE_AS_SUBSCRIBER_FLAG,
6040 LEGAL_ESTABLISHMENT_FLAG,
6041 FIRST_PARTY_LE_FLAG,
6042 REPORTING_AUTHORITY_FLAG,
6043 COLLECTING_AUTHORITY_FLAG,
6044 PROVIDER_TYPE_CODE,
6045 CREATE_AWT_DISTS_TYPE_CODE,
6046 CREATE_AWT_INVOICES_TYPE_CODE,
6047 TAX_CLASSIFICATION_CODE,
6048 SELF_ASSESS_FLAG,
6049 ALLOW_OFFSET_TAX_FLAG,
6050 EFFECTIVE_FROM_USE_LE,
6051 RECORD_TYPE_CODE,
6052 CREATED_BY,
6053 CREATION_DATE,
6054 LAST_UPDATED_BY,
6055 LAST_UPDATE_DATE,
6056 LAST_UPDATE_LOGIN,
6057 REQUEST_ID,
6058 PROGRAM_APPLICATION_ID,
6059 PROGRAM_ID,
6060 ATTRIBUTE1,
6061 ATTRIBUTE2,
6062 ATTRIBUTE3,
6063 ATTRIBUTE4,
6064 ATTRIBUTE5,
6065 ATTRIBUTE6,
6066 ATTRIBUTE7,
6067 ATTRIBUTE8,
6068 ATTRIBUTE9,
6069 ATTRIBUTE10,
6070 ATTRIBUTE11,
6071 ATTRIBUTE12,
6072 ATTRIBUTE13,
6073 ATTRIBUTE14,
6074 ATTRIBUTE15,
6075 ATTRIBUTE_CATEGORY,
6076 PROGRAM_LOGIN_ID,
6077 PARTY_TAX_PROFILE_ID,
6078 PARTY_ID,
6079 REP_REGISTRATION_NUMBER,
6080 OBJECT_VERSION_NUMBER,
6081 REGISTRATION_TYPE_CODE,
6082 COUNTRY_CODE,
6083 MERGED_TO_PTP_ID,
6084 MERGED_STATUS_CODE
6085 )
6086 (
6087 SELECT PARTY_TYPE_CODE,
6088 DECODE(G_CUST_INTF_TABLE, G_INTF_CUS_TABLE_NAME,'N',
6089 G_INTF_SUP_TABLE_NAME,'Y',
6090 G_INTF_SUP_SITE_TABLE_NAME,'Y',
6091 NULL), --SUPPLIER_FLAG,
6092 DECODE(G_CUST_INTF_TABLE, G_INTF_CUS_TABLE_NAME,'Y',
6093 G_INTF_SUP_TABLE_NAME,'N',
6094 G_INTF_SUP_SITE_TABLE_NAME,'N',
6095 NULL), --CUSTOMER_FLAG,
6096 DECODE(PARTY_TYPE_CODE,'THIRD_PARTY_SITE','Y','N'), --SITE_FLAG,
6097 DECODE(G_CUST_INTF_TABLE, G_INTF_SUP_TABLE_NAME,process_for_applicability_flag,
6098 G_INTF_SUP_SITE_TABLE_NAME,process_for_applicability_flag,
6099 NULL), --PROCESS_FOR_APPLICABILITY_FLAG,
6100 rounding_level_code,
6101 rounding_rule_code,
6102 NULL, --WITHHOLDING_START_DATE,
6103 DECODE(G_CUST_INTF_TABLE, G_INTF_SUP_TABLE_NAME,inclusive_tax_flag,
6104 G_INTF_SUP_SITE_TABLE_NAME,inclusive_tax_flag,
6105 NULL), --INCLUSIVE_TAX_FLAG,
6106 NULL, --ALLOW_AWT_FLAG,
6107 NULL, --USE_LE_AS_SUBSCRIBER_FLAG,
6108 NULL, --LEGAL_ESTABLISHMENT_FLAG,
6109 NULL, --FIRST_PARTY_LE_FLAG,
6110 NULL, --REPORTING_AUTHORITY_FLAG,
6111 NULL, --COLLECTING_AUTHORITY_FLAG,
6112 NULL, --PROVIDER_TYPE_CODE
6113 NULL, --CREATE_AWT_DISTS_TYPE_CODE,
6114 NULL, --CREATE_AWT_INVOICES_TYPE_CODE,
6115 TAX_CLASSIFICATION_CODE,
6116 NULL, --SELF_ASSESS_FLAG,
6117 DECODE(G_CUST_INTF_TABLE, G_INTF_SUP_TABLE_NAME,allow_offset_tax_flag,
6118 G_INTF_SUP_SITE_TABLE_NAME,allow_offset_tax_flag,
6119 NULL), --ALLOW_OFFSET_TAX_FLAG,
6120 NULL, --EFFECTIVE_FROM_USE_LE,
6121 G_RECORD_TYPE_CODE, --RECORD_TYPE_CODE,
6122 G_USER_ID, --CREATED_BY
6123 G_SYSDATE, --CREATION_DATE,
6124 G_USER_ID, --LAST_UPDATED_BY
6125 G_SYSDATE, --LAST_UPDATE_DATE
6126 G_LOGIN_ID, --LAST_UPDATE_LOGIN
6127 G_REQUEST_ID, --REQUEST_ID,
6128 G_PROG_APPID, --PROGRAM_APPLICATION_ID
6129 G_PROG_ID, --PROGRAM_ID
6130 NULL, --ATTRIBUTE1
6131 NULL, --ATTRIBUTE2
6132 NULL, --ATTRIBUTE3
6133 NULL, --ATTRIBUTE4
6134 NULL, --ATTRIBUTE5
6135 NULL, --ATTRIBUTE6
6136 NULL, --ATTRIBUTE7
6137 NULL, --ATTRIBUTE8
6138 NULL, --ATTRIBUTE9
6139 NULL, --ATTRIBUTE10
6140 NULL, --ATTRIBUTE11
6141 NULL, --ATTRIBUTE12
6142 NULL, --ATTRIBUTE13
6143 NULL, --ATTRIBUTE14
6144 NULL, --ATTRIBUTE15
6145 NULL, --ATTRIBUTE_CATEGORY
6146 G_LOGIN_ID, --PROGRAM_LOGIN_ID
6147 PARTY_TAX_PROFILE_ID,
6148 PARTY_ID,
6149 registration_number,
6150 1, --OBJECT_VERSION_NUMBER,
6151 REGISTRATION_TYPE_CODE,
6152 COUNTRY_CODE,
6153 NULL, --MERGED_TO_PTP_ID,
6154 NULL --MERGED_STATUS_CODE
6155 FROM zx_party_tax_profile_int
6156 WHERE record_status = G_RS_VALID
6157 AND request_id = G_REQUEST_ID
6158 AND error_number = 0
6159 );
6160
6161 G_DEBUG_STATEMENT:= 'Inserted '||SQL%ROWCOUNT||' records into zx_party_tax_profile ';
6162 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
6163 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'PopulateProductionTables',G_DEBUG_STATEMENT);
6164 END IF;
6165 log_now (p_log_level => FND_FILE.LOG
6166 ,p_message => G_DEBUG_STATEMENT
6167 );
6168
6169
6170 INSERT INTO zx_registrations (
6171 REGISTRATION_TYPE_CODE,
6172 REGISTRATION_NUMBER,
6173 VALIDATION_RULE,
6174 ROUNDING_RULE_CODE,
6175 TAX_JURISDICTION_CODE,
6176 SELF_ASSESS_FLAG,
6177 REGISTRATION_STATUS_CODE,
6178 REGISTRATION_SOURCE_CODE,
6179 REGISTRATION_REASON_CODE,
6180 TAX,
6181 TAX_REGIME_CODE,
6182 INCLUSIVE_TAX_FLAG,
6183 HAS_TAX_EXEMPTIONS_FLAG,
6184 EFFECTIVE_FROM,
6185 EFFECTIVE_TO,
6186 REP_PARTY_TAX_NAME,
6187 DEFAULT_REGISTRATION_FLAG,
6188 BANK_ACCOUNT_NUM,
6189 LEGAL_LOCATION_ID,
6190 RECORD_TYPE_CODE,
6191 CREATED_BY,
6192 CREATION_DATE,
6193 LAST_UPDATED_BY,
6194 LAST_UPDATE_DATE,
6195 LAST_UPDATE_LOGIN,
6196 REQUEST_ID,
6197 PROGRAM_APPLICATION_ID,
6198 PROGRAM_ID,
6199 ATTRIBUTE1,
6200 ATTRIBUTE2,
6201 ATTRIBUTE3,
6202 ATTRIBUTE4,
6203 ATTRIBUTE5,
6204 ATTRIBUTE6,
6205 ATTRIBUTE7,
6206 ATTRIBUTE8,
6207 ATTRIBUTE9,
6208 ATTRIBUTE10,
6209 ATTRIBUTE11,
6210 ATTRIBUTE12,
6211 ATTRIBUTE13,
6212 ATTRIBUTE14,
6213 ATTRIBUTE15,
6214 ATTRIBUTE_CATEGORY,
6215 TAX_CLASSIFICATION_CODE,
6216 PROGRAM_LOGIN_ID,
6217 REGISTRATION_ID,
6218 TAX_AUTHORITY_ID,
6219 REP_TAX_AUTHORITY_ID,
6220 COLL_TAX_AUTHORITY_ID,
6221 PARTY_TAX_PROFILE_ID,
6222 LEGAL_REGISTRATION_ID,
6223 BANK_ID,
6224 BANK_BRANCH_ID,
6225 ACCOUNT_ID,
6226 ACCOUNT_SITE_ID,
6227 OBJECT_VERSION_NUMBER,
6228 ROUNDING_LEVEL_CODE,
6229 ACCOUNT_TYPE_CODE,
6230 MERGED_TO_REGISTRATION_ID
6231 )
6232 (SELECT REGISTRATION_TYPE_CODE,
6233 REGISTRATION_NUMBER,
6234 NULL, --VALIDATION_RULE
6235 ROUNDING_RULE_CODE,
6236 TAX_JURISDICTION_CODE,
6237 NULL, --SELF_ASSESS_FLAG
6238 REGISTRATION_STATUS_CODE,
6239 REGISTRATION_SOURCE_CODE,
6240 REGISTRATION_REASON_CODE,
6241 TAX_CODE,
6242 TAX_REGIME_CODE,
6243 INCLUSIVE_TAX_FLAG,
6244 NULL, --HAS_TAX_EXEMPTIONS_FLAG
6245 EFFECTIVE_FROM,
6246 EFFECTIVE_TO,
6247 NULL, --REP_PARTY_TAX_NAME
6248 DEFAULT_REGISTRATION_FLAG,
6249 NULL, --BANK_ACCOUNT_NUM
6250 LEGAL_LOCATION_ID,
6251 G_RECORD_TYPE_CODE, --RECORD_TYPE_CODE
6252 G_USER_ID, --CREATED_BY
6253 G_SYSDATE, --CREATION_DATE
6254 G_USER_ID, --LAST_UPDATED_BY
6255 G_SYSDATE, --LAST_UPDATE_DATE
6256 G_LOGIN_ID, --LAST_UPDATE_LOGIN
6257 G_REQUEST_ID, --REQUEST_ID
6258 G_PROG_APPID, --PROGRAM_APPLICATION_ID
6259 G_PROG_ID, --PROGRAM_ID
6260 NULL, --ATTRIBUTE1
6261 NULL, --ATTRIBUTE2
6262 NULL, --ATTRIBUTE3
6263 NULL, --ATTRIBUTE4
6264 NULL, --ATTRIBUTE5
6265 NULL, --ATTRIBUTE6
6266 NULL, --ATTRIBUTE7
6267 NULL, --ATTRIBUTE8
6268 NULL, --ATTRIBUTE9
6269 NULL, --ATTRIBUTE10
6270 NULL, --ATTRIBUTE11
6271 NULL, --ATTRIBUTE12
6272 NULL, --ATTRIBUTE13
6273 NULL, --ATTRIBUTE14
6274 NULL, --ATTRIBUTE15
6275 NULL, --ATTRIBUTE_CATEGORY
6276 NULL, --TAX_CLASSIFICATION_CODE
6277 G_LOGIN_ID, --PROGRAM_LOGIN_ID
6278 ZX_REGISTRATIONS_S.nextval, --REGISTRATION_ID
6279 TAX_AUTHORITY_ID,
6280 NULL, --REP_TAX_AUTHORITY_ID
6281 NULL, --COLL_TAX_AUTHORITY_ID
6282 PARTY_TAX_PROFILE_ID,
6283 LEGAL_REGISTRATION_ID,
6284 NULL, --BANK_ID
6285 NULL, --BANK_BRANCH_ID
6286 NULL, --ACCOUNT_ID
6287 NULL, --ACCOUNT_SITE_ID
6288 1, --OBJECT_VERSION_NUMBER
6289 NULL, --ROUNDING_LEVEL_CODE
6290 NULL, --ACCOUNT_TYPE_CODE
6291 NULL --MERGED_TO_REGISTRATION_ID
6292 FROM zx_registrations_int
6293 WHERE record_status = G_RS_VALID
6294 AND request_id = G_REQUEST_ID
6295 AND error_number = 0);
6296
6297 G_DEBUG_STATEMENT:= 'Inserted '||SQL%ROWCOUNT||' records into zx_registrations ';
6298 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
6299 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'PopulateProductionTables',G_DEBUG_STATEMENT);
6300 END IF;
6301 log_now (p_log_level => FND_FILE.LOG
6302 ,p_message => G_DEBUG_STATEMENT
6303 );
6304
6305 INSERT INTO zx_exemptions(
6306 TAX_EXEMPTION_ID,
6307 EXEMPTION_TYPE_CODE,
6308 EXEMPTION_STATUS_CODE,
6309 TAX_REGIME_CODE,
6310 TAX_STATUS_CODE,
6311 TAX,
6312 TAX_RATE_CODE,
6313 EXEMPT_CERTIFICATE_NUMBER,
6314 EXEMPT_REASON_CODE,
6315 ISSUING_TAX_AUTHORITY_ID,
6316 EFFECTIVE_FROM,
6317 EFFECTIVE_TO,
6318 CONTENT_OWNER_ID,
6319 PRODUCT_ID,
6320 INVENTORY_ORG_ID,
6321 RATE_MODIFIER,
6322 TAX_JURISDICTION_ID,
6323 DET_FACTOR_TEMPL_CODE,
6324 RECORD_TYPE_CODE,
6325 CREATED_BY,
6326 CREATION_DATE,
6327 LAST_UPDATED_BY,
6328 LAST_UPDATE_DATE,
6329 LAST_UPDATE_LOGIN,
6330 REQUEST_ID,
6331 PROGRAM_APPLICATION_ID,
6332 PROGRAM_ID,
6333 PROGRAM_LOGIN_ID,
6334 ATTRIBUTE1,
6335 ATTRIBUTE2,
6336 ATTRIBUTE3,
6337 ATTRIBUTE4,
6338 ATTRIBUTE5,
6339 ATTRIBUTE6,
6340 ATTRIBUTE7,
6341 ATTRIBUTE8,
6342 ATTRIBUTE9,
6343 ATTRIBUTE10,
6344 ATTRIBUTE11,
6345 ATTRIBUTE12,
6346 ATTRIBUTE13,
6347 ATTRIBUTE14,
6348 ATTRIBUTE15,
6349 ATTRIBUTE_CATEGORY,
6350 APPLY_TO_LOWER_LEVELS_FLAG,
6351 OBJECT_VERSION_NUMBER,
6352 PARTY_TAX_PROFILE_ID,
6353 CUST_ACCOUNT_ID,
6354 SITE_USE_ID,
6355 DUPLICATE_EXEMPTION
6356 )
6357 (
6358 SELECT zx_exemptions_s.nextval, --TAX_EXEMPTION_ID,
6359 EXEMPTION_TYPE_CODE,
6360 EXEMPTION_STATUS_CODE,
6361 TAX_REGIME_CODE,
6362 TAX_STATUS_CODE,
6363 TAX_CODE,
6364 TAX_RATE_CODE,
6365 EXEMPT_CERTIFICATE_NUMBER,
6366 EXEMPT_REASON_CODE,
6367 ISSUING_TAX_AUTHORITY_ID,
6368 EFFECTIVE_FROM,
6369 EFFECTIVE_TO,
6370 CONTENT_OWNER_ID,
6371 INVENTORY_ITEM_ID, --PRODUCT_ID,
6372 INVENTORY_ORG_ID,
6373 RATE_MODIFIER,
6374 TAX_JURISDICTION_ID,
6375 NULL, --DET_FACTOR_TEMPL_CODE,
6376 G_RECORD_TYPE_CODE, --RECORD_TYPE_CODE,
6377 G_USER_ID, --CREATED_BY
6378 G_SYSDATE, --CREATION_DATE,
6379 G_USER_ID, --LAST_UPDATED_BY
6380 G_SYSDATE, --LAST_UPDATE_DATE
6381 G_LOGIN_ID, --LAST_UPDATE_LOGIN
6382 G_REQUEST_ID, --REQUEST_ID,
6383 G_PROG_APPID, --PROGRAM_APPLICATION_ID,
6384 G_PROG_ID, --PROGRAM_ID,
6385 NULL, --PROGRAM_LOGIN_ID,
6386 ATTRIBUTE1,
6387 ATTRIBUTE2,
6388 ATTRIBUTE3,
6389 ATTRIBUTE4,
6390 ATTRIBUTE5,
6391 ATTRIBUTE6,
6392 ATTRIBUTE7,
6393 ATTRIBUTE8,
6394 ATTRIBUTE9,
6395 ATTRIBUTE10,
6396 ATTRIBUTE11,
6397 ATTRIBUTE12,
6398 ATTRIBUTE13,
6399 ATTRIBUTE14,
6400 ATTRIBUTE15,
6401 ATTRIBUTE_CATEGORY,
6402 APPLY_TO_LOWER_LEVELS_FLAG,
6403 1, --OBJECT_VERSION_NUMBER,
6404 PARTY_TAX_PROFILE_ID,
6405 NULL, --CUST_ACCOUNT_ID,
6406 NULL, --SITE_USE_ID,
6407 0 --DUPLICATE_EXEMPTION
6408 FROM zx_exemptions_int
6409 WHERE record_status = G_RS_VALID
6410 AND request_id = G_REQUEST_ID
6411 AND error_number = 0);
6412
6413 G_DEBUG_STATEMENT:= 'Inserted '||SQL%ROWCOUNT||' records into zx_exemptions ';
6414 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
6415 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'PopulateProductionTables',G_DEBUG_STATEMENT);
6416 END IF;
6417 log_now (p_log_level => FND_FILE.LOG
6418 ,p_message => G_DEBUG_STATEMENT
6419 );
6420
6421 INSERT INTO zx_report_codes_assoc(
6422 REPORTING_CODE_ASSOC_ID,
6423 ENTITY_CODE,
6424 ENTITY_ID,
6425 EXCEPTION_CODE,
6426 EFFECTIVE_FROM,
6427 EFFECTIVE_TO,
6428 CREATED_BY,
6429 CREATION_DATE,
6430 LAST_UPDATED_BY,
6431 LAST_UPDATE_DATE,
6432 LAST_UPDATE_LOGIN,
6433 REPORTING_CODE_CHAR_VALUE,
6434 REPORTING_CODE_DATE_VALUE,
6435 REPORTING_CODE_NUM_VALUE,
6436 REPORTING_TYPE_ID,
6437 REPORTING_CODE_ID,
6438 OBJECT_VERSION_NUMBER
6439 )
6440 (
6441 SELECT ZX_REPORT_CODES_ASSOC_S.nextval, --REPORTING_CODE_ASSOC_ID,
6442 ENTITY_CODE,
6443 ENTITY_ID,
6444 NULL, --EXCEPTION_CODE,
6445 EFFECTIVE_FROM,
6446 EFFECTIVE_TO,
6447 G_USER_ID, --CREATED_BY
6448 G_SYSDATE, --CREATION_DATE,
6449 G_USER_ID, --LAST_UPDATED_BY
6450 G_SYSDATE, --LAST_UPDATE_DATE
6451 G_LOGIN_ID, --LAST_UPDATE_LOGIN
6452 REPORTING_CODE_CHAR_VALUE,
6453 REPORTING_CODE_DATE_VALUE,
6454 REPORTING_CODE_NUM_VALUE,
6455 REPORTING_TYPE_ID,
6456 REPORTING_CODE_ID,
6457 1 --OBJECT_VERSION_NUMBER
6458 FROM zx_report_codes_assoc_int
6459 WHERE record_status = G_RS_VALID
6460 AND request_id = G_REQUEST_ID
6461 AND error_number = 0
6462 );
6463
6464 G_DEBUG_STATEMENT:= 'Inserted '||SQL%ROWCOUNT||' records into zx_report_codes_assoc ';
6465 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
6466 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'PopulateProductionTables',G_DEBUG_STATEMENT);
6467 END IF;
6468 log_now (p_log_level => FND_FILE.LOG
6469 ,p_message => G_DEBUG_STATEMENT
6470 );
6471
6472 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
6473 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'PopulateProductionTables','PopulateProductionTables(-)');
6474 END IF;
6475
6476 EXCEPTION
6477 WHEN OTHERS THEN
6478 G_RETURN_STATUS := G_CONC_RET_STS_UNEXP_ERROR;
6479 G_MSG_DATA := SQLERRM;
6480 log_now (p_log_level => FND_FILE.LOG
6481 ,p_message => 'PopulateProductionTables'||' : '||SQLERRM
6482 );
6483 RAISE;
6484 END PopulateProductionTables;
6485
6486
6487 --
6488 -- Log Error Messages
6489 --
6490 ------------------------------------------------------------------------------
6491 PROCEDURE LogErrorToTable IS
6492 CURSOR c_ptp_errors IS
6493 SELECT *
6494 FROM zx_party_tax_profile_int
6495 WHERE request_id = G_REQUEST_ID
6496 AND record_status = G_RS_ERROR;
6497
6498 CURSOR c_reg_errors IS
6499 SELECT ptp_int.party_type_code, ptp_int.party_id, reg_int.*
6500 FROM zx_registrations_int reg_int, zx_party_tax_profile_int ptp_int
6501 WHERE reg_int.request_id = G_REQUEST_ID
6502 AND reg_int.record_status = G_RS_ERROR
6503 AND ptp_int.intf_ptp_reference = reg_int.intf_ptp_reference
6504 AND ptp_int.request_id = reg_int.request_id;
6505
6506 CURSOR c_exe_errors IS
6507 SELECT ptp_int.party_type_code, ptp_int.party_id, exe_int.*
6508 FROM zx_exemptions_int exe_int, zx_party_tax_profile_int ptp_int
6509 WHERE exe_int.request_id = G_REQUEST_ID
6510 AND exe_int.record_status = G_RS_ERROR
6511 AND ptp_int.intf_ptp_reference = exe_int.intf_ptp_reference
6512 AND ptp_int.request_id = exe_int.request_id;
6513
6514 CURSOR c_rca_errors IS
6515 SELECT ptp_int.party_type_code, ptp_int.party_id, rca_int.*
6516 FROM zx_report_codes_assoc_int rca_int, zx_party_tax_profile_int ptp_int
6517 WHERE rca_int.request_id = G_REQUEST_ID
6518 AND rca_int.record_status = G_RS_ERROR
6519 AND ptp_int.intf_ptp_reference = rca_int.intf_ptp_reference
6520 AND ptp_int.request_id = rca_int.request_id;
6521
6522 l_msg_mand_param VARCHAR2(4000);
6523
6524 TYPE ERR_REC_TYPE IS RECORD
6525 (
6526 intf_ptp_reference zx_errors_int.intf_ptp_reference%TYPE
6527 ,party_type_code zx_errors_int.party_type_code%TYPE
6528 ,message_text zx_errors_int.message_text%TYPE
6529 ,prog_int_record_ref zx_errors_int.prog_int_record_ref%TYPE
6530 ,party_id zx_errors_int.party_id%TYPE
6531 );
6532
6533 TYPE error_table_type IS TABLE OF ERR_REC_TYPE INDEX BY BINARY_INTEGER;
6534 l_error_table error_table_type;
6535 l_rec_index NUMBER(22);
6536 l_temp_char zx_party_tax_profile_int.intf_ptp_reference%TYPE;
6537 l_start_number NUMBER;
6538
6539 BEGIN
6540
6541 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
6542 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'LogErrorToTable','LogErrorToTable(+)');
6543 END IF;
6544
6545 UPDATE zx_party_tax_profile_int
6546 SET intf_ptp_reference = G_REQUEST_ID||'**'||ROWNUM
6547 WHERE request_id = G_REQUEST_ID
6548 AND record_status = G_RS_ERROR
6549 AND intf_ptp_reference IS NULL;
6550
6551 l_rec_index := 0;
6552 FOR cr in c_ptp_errors LOOP
6553 IF BITAND(cr.error_number,G_ES_PTP_MAND_PARAM_MISSING) <> 0 THEN
6554 fnd_message.set_name('ZX','ZX_INTF_MAND_VALUE_MISSING');
6555 l_rec_index := l_rec_index +1;
6556 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6557 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6558 l_error_table(l_rec_index).party_id := cr.party_id;
6559 l_error_table(l_rec_index).message_text := fnd_message.get();
6560 END IF;
6561 IF BITAND(cr.error_number,G_ES_PTP_DUP_INTF_RECORD) <> 0 THEN
6562 fnd_message.set_name('ZX','ZX_BULK_DUP_PTP_REF');
6563 l_rec_index := l_rec_index +1;
6564 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6565 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6566 l_error_table(l_rec_index).party_id := cr.party_id;
6567 l_error_table(l_rec_index).message_text := fnd_message.get();
6568 END IF;
6569 IF BITAND(cr.error_number,G_ES_PTP_TRANS_TYPE_INVALID) <> 0 THEN
6570 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
6571 fnd_message.set_token('VALUE_NAME',cr.dml_type );
6572 fnd_message.set_token('COLUMN_NAME','DML_TYPE' );
6573 l_rec_index := l_rec_index +1;
6574 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6575 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6576 l_error_table(l_rec_index).party_id := cr.party_id;
6577 l_error_table(l_rec_index).message_text := fnd_message.get();
6578 END IF;
6579 IF BITAND(cr.error_number,G_ES_PTP_PARTY_TYPE_INVALID) <> 0 THEN
6580 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
6581 fnd_message.set_token('VALUE_NAME',cr.party_type_code );
6582 fnd_message.set_token('COLUMN_NAME','PARTY_TYPE_CODE' );
6583 l_rec_index := l_rec_index +1;
6584 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6585 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6586 l_error_table(l_rec_index).party_id := cr.party_id;
6587 l_error_table(l_rec_index).message_text := fnd_message.get();
6588 END IF;
6589 IF BITAND(cr.error_number,G_ES_PTP_PARTY_INVALID) <> 0 THEN
6590 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
6591 fnd_message.set_token('VALUE_NAME',cr.party_type_code );
6592 fnd_message.set_token('COLUMN_NAME','PARTY_TYPE_CODE' );
6593 l_rec_index := l_rec_index +1;
6594 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6595 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6596 l_error_table(l_rec_index).party_id := cr.party_id;
6597 l_error_table(l_rec_index).message_text := fnd_message.get();
6598 END IF;
6599 IF BITAND(cr.error_number,G_ES_PTP_PARTY_NAME_DUP) <> 0 THEN
6600 fnd_message.set_name('ZX','ZX_PTP_PARTY_NAME_DUP');
6601 l_rec_index := l_rec_index +1;
6602 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6603 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6604 l_error_table(l_rec_index).party_id := cr.party_id;
6605 l_error_table(l_rec_index).message_text := fnd_message.get();
6606 END IF;
6607 IF BITAND(cr.error_number,G_ES_PTP_COUNTRY_INVALID) <> 0 THEN
6608 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
6609 IF cr.country_code IS NOT NULL THEN
6610 fnd_message.set_token('VALUE_NAME',cr.country_code );
6611 fnd_message.set_token('COLUMN_NAME','COUNTRY_CODE' );
6612 ELSE
6613 fnd_message.set_token('VALUE_NAME',cr.country_name );
6614 fnd_message.set_token('COLUMN_NAME','COUNTRY_NAME' );
6615 END IF;
6616 l_rec_index := l_rec_index +1;
6617 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6618 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6619 l_error_table(l_rec_index).party_id := cr.party_id;
6620 l_error_table(l_rec_index).message_text := fnd_message.get();
6621 END IF;
6622 IF BITAND(cr.error_number,G_ES_PTP_REG_NUM_INVALID) <> 0 THEN
6623 fnd_message.set_name('ZX','ZX_REG_NUM_INVALID');
6624 l_rec_index := l_rec_index +1;
6625 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6626 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6627 l_error_table(l_rec_index).party_id := cr.party_id;
6628 l_error_table(l_rec_index).message_text := fnd_message.get();
6629 END IF;
6630 IF BITAND(cr.error_number,G_ES_PTP_REG_TYPE_INVALID) <> 0 THEN
6631 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
6632 IF cr.registration_type_code IS NOT NULL THEN
6633 fnd_message.set_token('VALUE_NAME',cr.registration_type_code );
6634 fnd_message.set_token('COLUMN_NAME','REGISTRATION_TYPE_CODE' );
6635 ELSE
6636 fnd_message.set_token('VALUE_NAME',cr.registration_type_name );
6637 fnd_message.set_token('COLUMN_NAME','REGISTRATION_TYPE_NAME' );
6638 END IF;
6639 l_rec_index := l_rec_index +1;
6640 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6641 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6642 l_error_table(l_rec_index).party_id := cr.party_id;
6643 l_error_table(l_rec_index).message_text := fnd_message.get();
6644 END IF;
6645
6646 IF BITAND(cr.error_number,G_ES_PTP_ROUND_LEVEL_INVALID) <> 0 THEN
6647 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
6648 IF cr.rounding_level_code IS NOT NULL THEN
6649 fnd_message.set_token('VALUE_NAME',cr.rounding_level_code );
6650 fnd_message.set_token('COLUMN_NAME','ROUNDING_LEVEL_CODE' );
6651 ELSE
6652 fnd_message.set_token('VALUE_NAME',cr.rounding_level_name );
6653 fnd_message.set_token('COLUMN_NAME','ROUNDING_LEVEL_NAME' );
6654 END IF;
6655 l_rec_index := l_rec_index +1;
6656 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6657 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6658 l_error_table(l_rec_index).party_id := cr.party_id;
6659 l_error_table(l_rec_index).message_text := fnd_message.get();
6660 END IF;
6661
6662 IF BITAND(cr.error_number,G_ES_PTP_ROUND_RULE_INVALID) <> 0 THEN
6663 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
6664 IF cr.rounding_rule_code IS NOT NULL THEN
6665 fnd_message.set_token('VALUE_NAME',cr.rounding_rule_code );
6666 fnd_message.set_token('COLUMN_NAME','ROUNDING_RULE_CODE' );
6667 ELSE
6668 fnd_message.set_token('VALUE_NAME',cr.rounding_rule_name );
6669 fnd_message.set_token('COLUMN_NAME','ROUNDING_RULE_NAME' );
6670 END IF;
6671 l_rec_index := l_rec_index +1;
6672 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6673 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6674 l_error_table(l_rec_index).party_id := cr.party_id;
6675 l_error_table(l_rec_index).message_text := fnd_message.get();
6676 END IF;
6677 IF BITAND(cr.error_number,G_ES_PTP_TAX_CLASS_INVALID) <> 0 THEN
6678 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
6679 IF cr.tax_classification_code IS NOT NULL THEN
6680 fnd_message.set_token('VALUE_NAME',cr.tax_classification_code );
6681 fnd_message.set_token('COLUMN_NAME','TAX_CLASSIFICATION_CODE' );
6682 ELSE
6683 fnd_message.set_token('VALUE_NAME',cr.tax_classification_name );
6684 fnd_message.set_token('COLUMN_NAME','TAX_CLASSIFICATION_NAME' );
6685 END IF;
6686 l_rec_index := l_rec_index +1;
6687 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6688 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6689 l_error_table(l_rec_index).party_id := cr.party_id;
6690 l_error_table(l_rec_index).message_text := fnd_message.get();
6691 END IF;
6692 IF BITAND(cr.error_number,G_ES_PTP_INC_FLG_INVALID) <> 0 THEN
6693 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
6694 fnd_message.set_token('VALUE_NAME',cr.inclusive_tax_flag );
6695 fnd_message.set_token('COLUMN_NAME','INCLUSIVE_TAX_FLAG' );
6696 l_rec_index := l_rec_index +1;
6697 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6698 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6699 l_error_table(l_rec_index).party_id := cr.party_id;
6700 l_error_table(l_rec_index).message_text := fnd_message.get();
6701 END IF;
6702 IF BITAND(cr.error_number,G_ES_PTP_APP_FLG_INVALID) <> 0 THEN
6703 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
6704 fnd_message.set_token('VALUE_NAME',cr.process_for_applicability_flag );
6705 fnd_message.set_token('COLUMN_NAME','PROCESS_FOR_APPLICABILITY_FLAG' );
6706 l_rec_index := l_rec_index +1;
6707 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6708 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6709 l_error_table(l_rec_index).party_id := cr.party_id;
6710 l_error_table(l_rec_index).message_text := fnd_message.get();
6711 END IF;
6712 IF BITAND(cr.error_number,G_ES_PTP_OFF_FLG_RECORD) <> 0 THEN
6713 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
6714 fnd_message.set_token('VALUE_NAME',cr.allow_offset_tax_flag );
6715 fnd_message.set_token('COLUMN_NAME','ALLOW_OFFSET_TAX_FLAG' );
6716 l_rec_index := l_rec_index +1;
6717 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6718 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6719 l_error_table(l_rec_index).party_id := cr.party_id;
6720 l_error_table(l_rec_index).message_text := fnd_message.get();
6721 END IF;
6722 IF BITAND(cr.error_number,G_ES_PTP_REG_NUM_DUP) <> 0 THEN
6723 fnd_message.set_name('ZX','ZX_BULK_DUP_REG_NUM');
6724 fnd_message.set_token('REGISTRATION_NUMBER',cr.registration_number );
6725 l_rec_index := l_rec_index +1;
6726 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6727 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6728 l_error_table(l_rec_index).party_id := cr.party_id;
6729 l_error_table(l_rec_index).message_text := fnd_message.get();
6730 END IF;
6731
6732 FOR loop_index IN NVL(l_error_table.FIRST,0)..NVL(l_error_table.LAST,-1) LOOP
6733 INSERT INTO zx_errors_int
6734 (request_id
6735 ,error_table_name
6736 ,intf_ptp_reference
6737 ,party_type_code
6738 ,message_text
6739 ,prog_int_record_ref
6740 ,party_id
6741 )
6742 VALUES
6743 (G_REQUEST_ID
6744 ,G_INTF_PTP_TABLE_NAME
6745 ,l_error_table(loop_index).intf_ptp_reference
6746 ,l_error_table(loop_index).party_type_code
6747 ,l_error_table(loop_index).message_text
6748 ,NULL
6749 ,l_error_table(loop_index).party_id
6750 );
6751 END LOOP;
6752 l_error_table.DELETE();
6753 l_rec_index := 0;
6754 END LOOP;
6755 l_error_table.DELETE();
6756
6757 --
6758 -- end of inserting ptp error records into zx_errors_int
6759 --
6760 --
6761 -- start of inserting errors for registration validations
6762 --
6763 l_rec_index := 0;
6764 FOR cr in c_reg_errors LOOP
6765 IF BITAND(cr.error_number,G_ES_REG_MAND_PARAM_MISSING) <> 0 THEN
6766 fnd_message.set_name('ZX','ZX_INTF_MAND_VALUE_MISSING');
6767 l_rec_index := l_rec_index +1;
6768 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6769 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6770 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
6771 l_error_table(l_rec_index).party_id := cr.party_id;
6772 l_error_table(l_rec_index).message_text := fnd_message.get();
6773 END IF;
6774 IF BITAND(cr.error_number,G_ES_REG_DUP_INTF_RECORD) <> 0 THEN
6775 fnd_message.set_name('ZX','ZX_BULK_DUP_REG_REF');
6776 l_rec_index := l_rec_index +1;
6777 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6778 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6779 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
6780 l_error_table(l_rec_index).party_id := cr.party_id;
6781 l_error_table(l_rec_index).message_text := fnd_message.get();
6782 END IF;
6783 IF BITAND(cr.error_number,G_ES_REG_DATE_OVERLAP) <> 0 THEN
6784 fnd_message.set_name('ZX','ZX_PERIOD_OVERLAP');
6785 l_rec_index := l_rec_index +1;
6786 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6787 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6788 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
6789 l_error_table(l_rec_index).party_id := cr.party_id;
6790 l_error_table(l_rec_index).message_text := fnd_message.get();
6791 END IF;
6792 IF BITAND(cr.error_number,G_ES_REG_TRANS_TYPE_INVALID) <> 0 THEN
6793 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
6794 fnd_message.set_token('VALUE_NAME',cr.dml_type );
6795 fnd_message.set_token('COLUMN_NAME','DML_TYPE' );
6796 l_rec_index := l_rec_index +1;
6797 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6798 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6799 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
6800 l_error_table(l_rec_index).party_id := cr.party_id;
6801 l_error_table(l_rec_index).message_text := fnd_message.get();
6802 END IF;
6803 IF BITAND(cr.error_number,G_ES_REG_DATE_RANGE_INVALID) <> 0 THEN
6804 fnd_message.set_name('ZX','ZX_DATE_RANGE_INVALID');
6805 l_rec_index := l_rec_index +1;
6806 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6807 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6808 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
6809 l_error_table(l_rec_index).party_id := cr.party_id;
6810 l_error_table(l_rec_index).message_text := fnd_message.get();
6811 END IF;
6812 IF BITAND(cr.error_number,G_ES_REG_REG_TYPE_INVALID) <> 0 THEN
6813 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
6814 IF cr.registration_type_code IS NOT NULL THEN
6815 fnd_message.set_token('VALUE_NAME',cr.registration_type_code );
6816 fnd_message.set_token('COLUMN_NAME','REGISTRATION_TYPE_CODE' );
6817 ELSE
6818 fnd_message.set_token('VALUE_NAME',cr.registration_type_name );
6819 fnd_message.set_token('COLUMN_NAME','REGISTRATION_TYPE_NAME' );
6820 END IF;
6821 l_rec_index := l_rec_index +1;
6822 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6823 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6824 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
6825 l_error_table(l_rec_index).party_id := cr.party_id;
6826 l_error_table(l_rec_index).message_text := fnd_message.get();
6827 END IF;
6828 IF BITAND(cr.error_number,G_ES_REG_REG_STAT_INVALID) <> 0 THEN
6829 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
6830 IF cr.registration_status_code IS NOT NULL THEN
6831 fnd_message.set_token('VALUE_NAME',cr.registration_status_code );
6832 fnd_message.set_token('COLUMN_NAME','REGISTRATION_STATUS_CODE' );
6833 ELSE
6834 fnd_message.set_token('VALUE_NAME',cr.registration_status_name );
6835 fnd_message.set_token('COLUMN_NAME','REGISTRATION_STATUS_NAME' );
6836 END IF;
6837 l_rec_index := l_rec_index +1;
6838 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6839 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6840 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
6841 l_error_table(l_rec_index).party_id := cr.party_id;
6842 l_error_table(l_rec_index).message_text := fnd_message.get();
6843 END IF;
6844 IF BITAND(cr.error_number,G_ES_REG_REG_SRC_INVALID) <> 0 THEN
6845 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
6846 IF cr.registration_source_code IS NOT NULL THEN
6847 fnd_message.set_token('VALUE_NAME',cr.registration_source_code );
6848 fnd_message.set_token('COLUMN_NAME','REGISTRATION_SOURCE_CODE' );
6849 ELSE
6850 fnd_message.set_token('VALUE_NAME',cr.registration_source_name );
6851 fnd_message.set_token('COLUMN_NAME','REGISTRATION_SOURCE_NAME' );
6852 END IF;
6853 l_rec_index := l_rec_index +1;
6854 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6855 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6856 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
6857 l_error_table(l_rec_index).party_id := cr.party_id;
6858 l_error_table(l_rec_index).message_text := fnd_message.get();
6859 END IF;
6860 IF BITAND(cr.error_number,G_ES_REG_REG_RSN_INVALID) <> 0 THEN
6861 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
6862 IF cr.registration_reason_code IS NOT NULL THEN
6863 fnd_message.set_token('VALUE_NAME',cr.registration_reason_code );
6864 fnd_message.set_token('COLUMN_NAME','REGISTRATION_REASON_CODE' );
6865 ELSE
6866 fnd_message.set_token('VALUE_NAME',cr.registration_reason_name );
6867 fnd_message.set_token('COLUMN_NAME','REGISTRATION_REASON_NAME' );
6868 END IF;
6869 l_rec_index := l_rec_index +1;
6870 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6871 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6872 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
6873 l_error_table(l_rec_index).party_id := cr.party_id;
6874 l_error_table(l_rec_index).message_text := fnd_message.get();
6875 END IF;
6876 IF BITAND(cr.error_number,G_ES_REG_TAX_AUT_INVALID) <> 0 THEN
6877 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
6878 IF cr.tax_authority_id IS NOT NULL THEN
6879 fnd_message.set_token('VALUE_NAME',cr.tax_authority_id );
6880 fnd_message.set_token('COLUMN_NAME','TAX_AUTHORITY_ID' );
6881 ELSE
6882 fnd_message.set_token('VALUE_NAME',cr.tax_authority_name );
6883 fnd_message.set_token('COLUMN_NAME','TAX_AUTHORITY_NAME' );
6884 END IF;
6885 l_rec_index := l_rec_index +1;
6886 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6887 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6888 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
6889 l_error_table(l_rec_index).party_id := cr.party_id;
6890 l_error_table(l_rec_index).message_text := fnd_message.get();
6891 END IF;
6892 IF BITAND(cr.error_number,G_ES_REG_ROUND_RULE_INVALID) <> 0 THEN
6893 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
6894 IF cr.registration_type_code IS NOT NULL THEN
6895 fnd_message.set_token('VALUE_NAME',cr.rounding_rule_code );
6896 fnd_message.set_token('COLUMN_NAME','ROUNDING_RULE_CODE' );
6897 ELSE
6898 fnd_message.set_token('VALUE_NAME',cr.rounding_rule_name );
6899 fnd_message.set_token('COLUMN_NAME','ROUNDING_RULE_NAME' );
6900 END IF;
6901 l_rec_index := l_rec_index +1;
6902 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6903 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6904 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
6905 l_error_table(l_rec_index).party_id := cr.party_id;
6906 l_error_table(l_rec_index).message_text := fnd_message.get();
6907 END IF;
6908 IF BITAND(cr.error_number,G_ES_REG_INC_FLG_INVALID) <> 0 THEN
6909 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
6910 fnd_message.set_token('VALUE_NAME',cr.inclusive_tax_flag );
6911 fnd_message.set_token('COLUMN_NAME','INCLUSIVE_TAX_FLAG' );
6912 l_rec_index := l_rec_index +1;
6913 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6914 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6915 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
6916 l_error_table(l_rec_index).party_id := cr.party_id;
6917 l_error_table(l_rec_index).message_text := fnd_message.get();
6918 END IF;
6919 IF BITAND(cr.error_number,G_ES_REG_LGL_LOC_INVALID) <> 0 THEN
6920 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
6921 IF cr.legal_location_id IS NOT NULL THEN
6922 fnd_message.set_token('VALUE_NAME',cr.legal_location_id );
6923 fnd_message.set_token('COLUMN_NAME','LEGAL_LOCATION_ID' );
6924 ELSE
6925 fnd_message.set_token('VALUE_NAME',cr.legal_location_code||':'
6926 ||cr.address_line_1||':'||cr.town_or_city||':'||cr.region_1 );
6927 fnd_message.set_token('COLUMN_NAME','LEGAL_LOCATION_CODE'||':'
6928 ||'ADDRESS_LINE_1'||':'||'TOWN_OR_CITY'||':'||'REGION_1');
6929 END IF;
6930 l_rec_index := l_rec_index +1;
6931 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6932 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6933 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
6934 l_error_table(l_rec_index).party_id := cr.party_id;
6935 l_error_table(l_rec_index).message_text := fnd_message.get();
6936 END IF;
6937 IF BITAND(cr.error_number,G_ES_REG_DEFREG_FLG_INVALID) <> 0 THEN
6938 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
6939 fnd_message.set_token('VALUE_NAME',cr.default_registration_flag );
6940 fnd_message.set_token('COLUMN_NAME','DEFAULT_REGISTRATION_FLAG' );
6941 l_rec_index := l_rec_index +1;
6942 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6943 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6944 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
6945 l_error_table(l_rec_index).party_id := cr.party_id;
6946 l_error_table(l_rec_index).message_text := fnd_message.get();
6947 END IF;
6948 IF BITAND(cr.error_number,G_ES_REG_TAX_REG_INVALID) <> 0 THEN
6949 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
6950 IF cr.tax_regime_code IS NOT NULL THEN
6951 fnd_message.set_token('VALUE_NAME',cr.tax_regime_code );
6952 fnd_message.set_token('COLUMN_NAME','TAX_REGIME_CODE' );
6953 ELSE
6954 fnd_message.set_token('VALUE_NAME',cr.tax_regime_name );
6955 fnd_message.set_token('COLUMN_NAME','TAX_REGIME_NAME' );
6956 END IF;
6957 l_rec_index := l_rec_index +1;
6958 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6959 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6960 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
6961 l_error_table(l_rec_index).party_id := cr.party_id;
6962 l_error_table(l_rec_index).message_text := fnd_message.get();
6963 END IF;
6964 IF BITAND(cr.error_number,G_ES_REG_TAX_PARAM_INVALID) <> 0 THEN
6965 fnd_message.set_name('ZX','ZX_BULK_TAX_INVALID');
6966 IF cr.tax_code IS NOT NULL THEN
6967 fnd_message.set_token('TAX',cr.tax_code );
6968 ELSE
6969 fnd_message.set_token('TAX',cr.tax_name );
6970 END IF;
6971 IF cr.tax_regime_name IS NULL THEN
6972 fnd_message.set_token('TAX_REGIME',cr.tax_regime_code );
6973 ELSE
6974 fnd_message.set_token('TAX_REGIME',cr.tax_regime_name );
6975 END IF;
6976 l_rec_index := l_rec_index +1;
6977 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
6978 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
6979 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
6980 l_error_table(l_rec_index).party_id := cr.party_id;
6981 l_error_table(l_rec_index).message_text := fnd_message.get();
6982 END IF;
6983 IF BITAND(cr.error_number,G_ES_REG_TAX_JUR_INVALID) <> 0 THEN
6984 fnd_message.set_name('ZX','ZX_BULK_TAX_JUR_INVALID');
6985 IF cr.tax_jurisdiction_code IS NOT NULL THEN
6986 fnd_message.set_token('TAX_JURISDICTION',cr.tax_jurisdiction_code );
6987 ELSE
6988 fnd_message.set_token('TAX_JURISDICTION',cr.tax_jurisdiction_name );
6989 END IF;
6990 IF cr.tax_name IS NULL THEN
6991 fnd_message.set_token('TAX',cr.tax_code );
6992 ELSE
6993 fnd_message.set_token('TAX',cr.tax_name );
6994 END IF;
6995 IF cr.tax_regime_name IS NULL THEN
6996 fnd_message.set_token('TAX_REGIME',cr.tax_regime_code );
6997 ELSE
6998 fnd_message.set_token('TAX_REGIME',cr.tax_regime_name );
6999 END IF;
7000 l_rec_index := l_rec_index +1;
7001 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7002 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7003 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7004 l_error_table(l_rec_index).party_id := cr.party_id;
7005 l_error_table(l_rec_index).message_text := fnd_message.get();
7006 END IF;
7007 IF BITAND(cr.error_number,G_ES_REG_REG_NUM_DUP) <> 0 THEN
7008 fnd_message.set_name('ZX','ZX_BULK_DUP_REG_NUM');
7009 fnd_message.set_token('REGISTRATION_NUMBER',cr.registration_number );
7010 l_rec_index := l_rec_index +1;
7011 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7012 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7013 l_error_table(l_rec_index).party_id := cr.party_id;
7014 l_error_table(l_rec_index).message_text := fnd_message.get();
7015 END IF;
7016 IF BITAND(cr.error_number,G_ES_REG_REG_NUM_INVALID) <> 0 THEN
7017 fnd_message.set_name('ZX','ZX_REG_NUM_INVALID');
7018 l_rec_index := l_rec_index +1;
7019 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7020 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7021 l_error_table(l_rec_index).party_id := cr.party_id;
7022 l_error_table(l_rec_index).message_text := fnd_message.get();
7023 END IF;
7024 IF BITAND(cr.error_number,G_ES_REG_TAX_AUT_REQ) <> 0 THEN
7025 fnd_message.set_name('ZX','ZX_REG_TAX_AUTHORITY_REQUIRED');
7026 l_rec_index := l_rec_index +1;
7027 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7028 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7029 l_error_table(l_rec_index).party_id := cr.party_id;
7030 l_error_table(l_rec_index).message_text := fnd_message.get();
7031 END IF;
7032 IF BITAND(cr.error_number,G_ES_REG_MULT_DEF_FLAG) <> 0 THEN
7033 fnd_message.set_name('ZX','ZX_REG_MULT_DEF_REG');
7034 l_rec_index := l_rec_index +1;
7035 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7036 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7037 l_error_table(l_rec_index).party_id := cr.party_id;
7038 l_error_table(l_rec_index).message_text := fnd_message.get();
7039 END IF;
7040
7041 FOR loop_index IN NVL(l_error_table.FIRST,0)..NVL(l_error_table.LAST,-1) LOOP
7042 INSERT INTO zx_errors_int
7043 (request_id
7044 ,error_table_name
7045 ,intf_ptp_reference
7046 ,party_type_code
7047 ,message_text
7048 ,prog_int_record_ref
7049 ,party_id
7050 )
7051 VALUES
7052 (G_REQUEST_ID
7053 ,G_INTF_REG_TABLE_NAME
7054 ,l_error_table(loop_index).intf_ptp_reference
7055 ,l_error_table(loop_index).party_type_code
7056 ,l_error_table(loop_index).message_text
7057 ,l_error_table(loop_index).prog_int_record_ref
7058 ,l_error_table(loop_index).party_id
7059 );
7060 END LOOP;
7061 l_error_table.DELETE();
7062 l_rec_index := 0;
7063
7064 END LOOP;
7065 l_error_table.DELETE();
7066 --
7067 -- end of inserting registration error records into zx_errors_int
7068 --
7069
7070 --
7071 -- start of inserting errors for exemption validations
7072 --
7073 l_rec_index := 0;
7074 FOR cr in c_exe_errors LOOP
7075 IF BITAND(cr.error_number,G_ES_EXE_MAND_PARAM_MISSING) <> 0 THEN
7076 fnd_message.set_name('ZX','ZX_INTF_MAND_VALUE_MISSING');
7077 l_rec_index := l_rec_index +1;
7078 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7079 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7080 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7081 l_error_table(l_rec_index).party_id := cr.party_id;
7082 l_error_table(l_rec_index).message_text := fnd_message.get();
7083 END IF;
7084 IF BITAND(cr.error_number,G_ES_EXE_TRANS_TYPE_INVALID) <> 0 THEN
7085 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
7086 fnd_message.set_token('VALUE_NAME',cr.dml_type );
7087 fnd_message.set_token('COLUMN_NAME','DML_TYPE' );
7088 l_rec_index := l_rec_index +1;
7089 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7090 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7091 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7092 l_error_table(l_rec_index).party_id := cr.party_id;
7093 l_error_table(l_rec_index).message_text := fnd_message.get();
7094 END IF;
7095 IF BITAND(cr.error_number,G_ES_EXE_DATE_RANGE_INVALID) <> 0 THEN
7096 fnd_message.set_name('ZX','ZX_DATE_RANGE_INVALID');
7097 l_rec_index := l_rec_index +1;
7098 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7099 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7100 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7101 l_error_table(l_rec_index).party_id := cr.party_id;
7102 l_error_table(l_rec_index).message_text := fnd_message.get();
7103 END IF;
7104 IF BITAND(cr.error_number,G_ES_EXE_DFF_INVALID) <> 0 THEN
7105 l_rec_index := l_rec_index +1;
7106 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7107 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7108 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7109 l_error_table(l_rec_index).party_id := cr.party_id;
7110 l_error_table(l_rec_index).message_text := cr.prog_int_char1;
7111 END IF;
7112 IF BITAND(cr.error_number,G_ES_EXE_EXMPT_RSN_INVALID) <> 0 THEN
7113 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
7114 IF cr.exempt_reason_code IS NOT NULL THEN
7115 fnd_message.set_token('VALUE_NAME',cr.exempt_reason_code );
7116 fnd_message.set_token('COLUMN_NAME','EXEMPT_REASON_CODE' );
7117 ELSE
7118 fnd_message.set_token('VALUE_NAME',cr.exempt_reason_name );
7119 fnd_message.set_token('COLUMN_NAME','EXEMPT_REASON_NAME' );
7120 END IF;
7121 l_rec_index := l_rec_index +1;
7122 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7123 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7124 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7125 l_error_table(l_rec_index).party_id := cr.party_id;
7126 l_error_table(l_rec_index).message_text := fnd_message.get();
7127 END IF;
7128 IF BITAND(cr.error_number,G_ES_EXE_EXMPT_STS_INVALID) <> 0 THEN
7129 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
7130 IF cr.exemption_status_code IS NOT NULL THEN
7131 fnd_message.set_token('VALUE_NAME',cr.exemption_status_code );
7132 fnd_message.set_token('COLUMN_NAME','EXEMPTION_STATUS_CODE' );
7133 ELSE
7134 fnd_message.set_token('VALUE_NAME',cr.exemption_status_name );
7135 fnd_message.set_token('COLUMN_NAME','EXEMPTION_STATUS_NAME' );
7136 END IF;
7137 l_rec_index := l_rec_index +1;
7138 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7139 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7140 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7141 l_error_table(l_rec_index).party_id := cr.party_id;
7142 l_error_table(l_rec_index).message_text := fnd_message.get();
7143 END IF;
7144 IF BITAND(cr.error_number,G_ES_EXE_TAX_REG_INVALID) <> 0 THEN
7145 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
7146 IF cr.tax_regime_code IS NOT NULL THEN
7147 fnd_message.set_token('VALUE_NAME',cr.tax_regime_code );
7148 fnd_message.set_token('COLUMN_NAME','TAX_REGIME_CODE' );
7149 ELSE
7150 fnd_message.set_token('VALUE_NAME',cr.tax_regime_name );
7151 fnd_message.set_token('COLUMN_NAME','TAX_REGIME_NAME' );
7152 END IF;
7153 l_rec_index := l_rec_index +1;
7154 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7155 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7156 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7157 l_error_table(l_rec_index).party_id := cr.party_id;
7158 l_error_table(l_rec_index).message_text := fnd_message.get();
7159 END IF;
7160 IF BITAND(cr.error_number,G_ES_EXE_CNT_OWN_INVALID) <> 0 THEN
7161 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
7162 IF cr.content_owner_id IS NOT NULL THEN
7163 fnd_message.set_token('VALUE_NAME',cr.content_owner_id );
7164 fnd_message.set_token('COLUMN_NAME','CONTENT_OWNER_ID' );
7165 ELSE
7166 fnd_message.set_token('VALUE_NAME',cr.content_owner_name );
7167 fnd_message.set_token('COLUMN_NAME','CONTENT_OWNER_NAME' );
7168 END IF;
7169 l_rec_index := l_rec_index +1;
7170 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7171 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7172 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7173 l_error_table(l_rec_index).party_id := cr.party_id;
7174 l_error_table(l_rec_index).message_text := fnd_message.get();
7175 END IF;
7176 IF BITAND(cr.error_number,G_ES_EXE_TAX_PARAM_INVALID) <> 0 THEN
7177 fnd_message.set_name('ZX','ZX_BULK_TAX_INVALID');
7178 IF cr.tax_code IS NOT NULL THEN
7179 fnd_message.set_token('TAX',cr.tax_code );
7180 ELSE
7181 fnd_message.set_token('TAX',cr.tax_name );
7182 END IF;
7183 IF cr.tax_regime_name IS NULL THEN
7184 fnd_message.set_token('TAX_REGIME',cr.tax_regime_code );
7185 ELSE
7186 fnd_message.set_token('TAX_REGIME',cr.tax_regime_name );
7187 END IF;
7188 l_rec_index := l_rec_index +1;
7189 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7190 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7191 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7192 l_error_table(l_rec_index).party_id := cr.party_id;
7193 l_error_table(l_rec_index).message_text := fnd_message.get();
7194 END IF;
7195 IF BITAND(cr.error_number,G_ES_EXE_TAX_STS_INVALID) <> 0 THEN
7196 fnd_message.set_name('ZX','ZX_BULK_TAX_STATUS_INVALID');
7197 IF cr.tax_status_code IS NOT NULL THEN
7198 fnd_message.set_token('TAX_STATUS',cr.tax_status_code );
7199 ELSE
7200 fnd_message.set_token('TAX_STATUS',cr.tax_status_name );
7201 END IF;
7202 IF cr.tax_regime_name IS NULL THEN
7203 fnd_message.set_token('TAX_REGIME',cr.tax_regime_code );
7204 ELSE
7205 fnd_message.set_token('TAX_REGIME',cr.tax_regime_name );
7206 END IF;
7207 IF cr.tax_name IS NULL THEN
7208 fnd_message.set_token('TAX',cr.tax_code );
7209 ELSE
7210 fnd_message.set_token('TAX',cr.tax_name );
7211 END IF;
7212 l_rec_index := l_rec_index +1;
7213 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7214 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7215 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7216 l_error_table(l_rec_index).party_id := cr.party_id;
7217 l_error_table(l_rec_index).message_text := fnd_message.get();
7218 END IF;
7219 IF BITAND(cr.error_number,G_ES_EXE_TAX_JUR_INVALID) <> 0 THEN
7220 fnd_message.set_name('ZX','ZX_BULK_TAX_JUR_INVALID');
7221 IF cr.tax_jurisdiction_id IS NOT NULL THEN
7222 fnd_message.set_token('TAX_JURISDICTION',cr.tax_jurisdiction_id );
7223 ELSE
7224 fnd_message.set_token('TAX_JURISDICTION',cr.tax_jurisdiction_name );
7225 END IF;
7226 IF cr.tax_name IS NULL THEN
7227 fnd_message.set_token('TAX',cr.tax_code );
7228 ELSE
7229 fnd_message.set_token('TAX',cr.tax_name );
7230 END IF;
7231 IF cr.tax_regime_name IS NULL THEN
7232 fnd_message.set_token('TAX_REGIME',cr.tax_regime_code );
7233 ELSE
7234 fnd_message.set_token('TAX_REGIME',cr.tax_regime_name );
7235 END IF;
7236 l_rec_index := l_rec_index +1;
7237 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7238 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7239 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7240 l_error_table(l_rec_index).party_id := cr.party_id;
7241 l_error_table(l_rec_index).message_text := fnd_message.get();
7242 END IF;
7243 IF BITAND(cr.error_number,G_ES_EXE_TAX_RATE_INVALID) <> 0 THEN
7244 fnd_message.set_name('ZX','ZX_BULK_TAX_RATE_INVALID');
7245 IF cr.tax_rate_code IS NOT NULL THEN
7246 fnd_message.set_token('TAX_RATE',cr.tax_rate_code );
7247 ELSE
7248 fnd_message.set_token('TAX_RATE',cr.tax_rate_name );
7249 END IF;
7250 IF cr.tax_regime_name IS NULL THEN
7251 fnd_message.set_token('TAX_REGIME',cr.tax_regime_code );
7252 ELSE
7253 fnd_message.set_token('TAX_REGIME',cr.tax_regime_name );
7254 END IF;
7255 IF cr.tax_name IS NULL THEN
7256 fnd_message.set_token('TAX',cr.tax_code );
7257 ELSE
7258 fnd_message.set_token('TAX',cr.tax_name );
7259 END IF;
7260 IF cr.tax_status_name IS NULL THEN
7261 fnd_message.set_token('TAX_STATUS',cr.tax_status_code );
7262 ELSE
7263 fnd_message.set_token('TAX_STATUS',cr.tax_status_name );
7264 END IF;
7265 IF cr.tax_jurisdiction_name IS NULL THEN
7266 fnd_message.set_token('TAX_JURISDICTION',cr.tax_jurisdiction_id );
7267 ELSE
7268 fnd_message.set_token('TAX_JURISDICTION',cr.tax_jurisdiction_name );
7269 END IF;
7270 l_rec_index := l_rec_index +1;
7271 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7272 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7273 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7274 l_error_table(l_rec_index).party_id := cr.party_id;
7275 l_error_table(l_rec_index).message_text := fnd_message.get();
7276 END IF;
7277 IF BITAND(cr.error_number,G_ES_EXE_LWR_LVL_FLG_INVALID) <> 0 THEN
7278 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
7279 fnd_message.set_token('VALUE_NAME',cr.apply_to_lower_levels_flag );
7280 fnd_message.set_token('COLUMN_NAME','APPLY_TO_LOWER_LEVELS_FLAG' );
7281 l_rec_index := l_rec_index +1;
7282 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7283 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7284 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7285 l_error_table(l_rec_index).party_id := cr.party_id;
7286 l_error_table(l_rec_index).message_text := fnd_message.get();
7287 END IF;
7288 IF BITAND(cr.error_number,G_ES_EXE_INV_ORG_INVALID) <> 0 THEN
7289 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
7290 IF cr.inventory_org_id IS NOT NULL THEN
7291 fnd_message.set_token('VALUE_NAME',cr.inventory_org_id );
7292 fnd_message.set_token('COLUMN_NAME','INVENTORY_ORG_ID' );
7293 ELSE
7294 fnd_message.set_token('VALUE_NAME',cr.inventory_org_name );
7295 fnd_message.set_token('COLUMN_NAME','INVENTORY_ORG_NAME' );
7296 END IF;
7297 l_rec_index := l_rec_index +1;
7298 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7299 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7300 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7301 l_error_table(l_rec_index).party_id := cr.party_id;
7302 l_error_table(l_rec_index).message_text := fnd_message.get();
7303 END IF;
7304 IF BITAND(cr.error_number,G_ES_EXE_INV_ITM_INVALID) <> 0 THEN
7305 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
7306 IF cr.inventory_item_id IS NOT NULL THEN
7307 fnd_message.set_token('VALUE_NAME',cr.inventory_item_id );
7308 fnd_message.set_token('COLUMN_NAME','inventory_item_id' );
7309 ELSE
7310 fnd_message.set_token('VALUE_NAME',cr.Item_number );
7311 fnd_message.set_token('COLUMN_NAME','ITEM_NUMBER' );
7312 END IF;
7313 l_rec_index := l_rec_index +1;
7314 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7315 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7316 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7317 l_error_table(l_rec_index).party_id := cr.party_id;
7318 l_error_table(l_rec_index).message_text := fnd_message.get();
7319 END IF;
7320 IF BITAND(cr.error_number,G_ES_EXE_TAX_AUT_INVALID) <> 0 THEN
7321 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
7322 IF cr.issuing_tax_authority_id IS NOT NULL THEN
7323 fnd_message.set_token('VALUE_NAME',cr.issuing_tax_authority_id );
7324 fnd_message.set_token('COLUMN_NAME','issuing_tax_authority_id' );
7325 ELSE
7326 fnd_message.set_token('VALUE_NAME',cr.issuing_tax_authority_name );
7327 fnd_message.set_token('COLUMN_NAME','issuing_tax_authority_name' );
7328 END IF;
7329 l_rec_index := l_rec_index +1;
7330 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7331 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7332 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7333 l_error_table(l_rec_index).party_id := cr.party_id;
7334 l_error_table(l_rec_index).message_text := fnd_message.get();
7335 END IF;
7336 IF BITAND(cr.error_number,G_ES_EXE_EXMPT_TYP_INVALID) <> 0 THEN
7337 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
7338 IF cr.exemption_type_code IS NOT NULL THEN
7339 fnd_message.set_token('VALUE_NAME',cr.exemption_type_code );
7340 fnd_message.set_token('COLUMN_NAME','EXEMPTION_TYPE_CODE' );
7341 ELSE
7342 fnd_message.set_token('VALUE_NAME',cr.exemption_type_name );
7343 fnd_message.set_token('COLUMN_NAME','EXEMPTION_TYPE_NAME' );
7344 END IF;
7345 l_rec_index := l_rec_index +1;
7346 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7347 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7348 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7349 l_error_table(l_rec_index).party_id := cr.party_id;
7350 l_error_table(l_rec_index).message_text := fnd_message.get();
7351 END IF;
7352 IF BITAND(cr.error_number,G_ES_EXE_DATE_OVERLAP) <> 0 THEN
7353 fnd_message.set_name('ZX','ZX_PERIOD_OVERLAP');
7354 l_rec_index := l_rec_index +1;
7355 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7356 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7357 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7358 l_error_table(l_rec_index).party_id := cr.party_id;
7359 l_error_table(l_rec_index).message_text := fnd_message.get();
7360 END IF;
7361
7362 FOR loop_index IN NVL(l_error_table.FIRST,0)..NVL(l_error_table.LAST,-1) LOOP
7363 INSERT INTO zx_errors_int
7364 (request_id
7365 ,error_table_name
7366 ,intf_ptp_reference
7367 ,party_type_code
7368 ,message_text
7369 ,prog_int_record_ref
7370 ,party_id
7371 )
7372 VALUES
7373 (G_REQUEST_ID
7374 ,G_INTF_EXE_TABLE_NAME
7375 ,l_error_table(loop_index).intf_ptp_reference
7376 ,l_error_table(loop_index).party_type_code
7377 ,l_error_table(loop_index).message_text
7378 ,l_error_table(loop_index).prog_int_record_ref
7379 ,l_error_table(loop_index).party_id
7380 );
7381 END LOOP;
7382 l_error_table.DELETE();
7383 l_rec_index := 0;
7384 END LOOP;
7385 --
7386 -- end of inserting exemption error records into zx_errors_int
7387 --
7388 l_error_table.DELETE();
7389 --
7390 -- start of inserting errors for RCA validations
7391 --
7392 l_rec_index := 0;
7393 FOR cr in c_rca_errors LOOP
7394 IF BITAND(cr.error_number,G_ES_RCA_MAND_PARAM_MISSING) <> 0 THEN
7395 fnd_message.set_name('ZX','ZX_INTF_MAND_VALUE_MISSING');
7396 l_rec_index := l_rec_index +1;
7397 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7398 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7399 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7400 l_error_table(l_rec_index).party_id := cr.party_id;
7401 l_error_table(l_rec_index).message_text := fnd_message.get();
7402 END IF;
7403 IF BITAND(cr.error_number,G_ES_RCA_DUP_INTF_RECORD) <> 0 THEN
7404 fnd_message.set_name('ZX','ZX_BULK_DUP_RCA_REF');
7405 l_rec_index := l_rec_index +1;
7406 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7407 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7408 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7409 l_error_table(l_rec_index).party_id := cr.party_id;
7410 l_error_table(l_rec_index).message_text := fnd_message.get();
7411 END IF;
7412 IF BITAND(cr.error_number,G_ES_RCA_TRANS_TYPE_INVALID) <> 0 THEN
7413 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
7414 fnd_message.set_token('VALUE_NAME',cr.dml_type );
7415 fnd_message.set_token('COLUMN_NAME','DML_TYPE' );
7416 l_rec_index := l_rec_index +1;
7417 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7418 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7419 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7420 l_error_table(l_rec_index).party_id := cr.party_id;
7421 l_error_table(l_rec_index).message_text := fnd_message.get();
7422 END IF;
7423 IF BITAND(cr.error_number,G_ES_RCA_ENTY_CD_INVALID) <> 0 THEN
7424 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
7425 fnd_message.set_token('VALUE_NAME',cr.entity_code );
7426 fnd_message.set_token('COLUMN_NAME','ENTITY_CODE' );
7427 l_rec_index := l_rec_index +1;
7428 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7429 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7430 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7431 l_error_table(l_rec_index).party_id := cr.party_id;
7432 l_error_table(l_rec_index).message_text := fnd_message.get();
7433 END IF;
7434 IF BITAND(cr.error_number,G_ES_RCA_DATE_RANGE_INVALID) <> 0 THEN
7435 fnd_message.set_name('ZX','ZX_DATE_RANGE_INVALID');
7436 l_rec_index := l_rec_index +1;
7437 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7438 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7439 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7440 l_error_table(l_rec_index).party_id := cr.party_id;
7441 l_error_table(l_rec_index).message_text := fnd_message.get();
7442 END IF;
7443 IF BITAND(cr.error_number,G_ES_RCA_REP_TYPE_INVALID) <> 0 THEN
7444 fnd_message.set_name('ZX','ZX_BULK_INVALID_VALUE');
7445 IF cr.reporting_type_id IS NOT NULL THEN
7446 fnd_message.set_token('VALUE_NAME',cr.reporting_type_id );
7447 fnd_message.set_token('COLUMN_NAME','REPORTING_TYPE_ID' );
7448 ELSE
7449 fnd_message.set_token('VALUE_NAME',cr.reporting_type_name );
7450 fnd_message.set_token('COLUMN_NAME','REPORTING_TYPE_NAME' );
7451 END IF;
7452 l_rec_index := l_rec_index +1;
7453 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7454 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7455 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7456 l_error_table(l_rec_index).party_id := cr.party_id;
7457 l_error_table(l_rec_index).message_text := fnd_message.get();
7458 END IF;
7459 IF BITAND(cr.error_number,G_ES_RCA_REP_CODE_INVALID) <> 0 THEN
7460 fnd_message.set_name('ZX','ZX_BULK_RC_INVALID');
7461 IF cr.reporting_code_id IS NOT NULL THEN
7462 fnd_message.set_token('REP_CODE',cr.reporting_code_id );
7463 ELSE
7464 fnd_message.set_token('REP_CODE',cr.reporting_code_name );
7465 END IF;
7466 IF cr.reporting_type_name IS NULL THEN
7467 fnd_message.set_token('REP_TYPE',cr.reporting_type_id );
7468 ELSE
7469 fnd_message.set_token('REP_TYPE',cr.reporting_type_name );
7470 END IF;
7471 l_rec_index := l_rec_index +1;
7472 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7473 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7474 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7475 l_error_table(l_rec_index).party_id := cr.party_id;
7476 l_error_table(l_rec_index).message_text := fnd_message.get();
7477 END IF;
7478 IF BITAND(cr.error_number,G_ES_RCA_REP_CODE_VAL_INVALID) <> 0 THEN
7479 fnd_message.set_name('ZX','ZX_BULK_RV_INVALID');
7480 IF cr.reporting_code_name IS NULL THEN
7481 fnd_message.set_token('REP_CODE',cr.reporting_code_id );
7482 ELSE
7483 fnd_message.set_token('REP_CODE',cr.reporting_code_name );
7484 END IF;
7485 IF cr.reporting_code_char_value IS NOT NULL THEN
7486 fnd_message.set_token('REP_VALUE',cr.reporting_code_char_value );
7487 ELSIF cr.reporting_code_num_value IS NOT NULL THEN
7488 fnd_message.set_token('REP_VALUE',cr.reporting_code_num_value );
7489 ELSE
7490 fnd_message.set_token('REP_VALUE',cr.reporting_code_date_value );
7491 END IF;
7492 l_rec_index := l_rec_index +1;
7493 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7494 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7495 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7496 l_error_table(l_rec_index).party_id := cr.party_id;
7497 l_error_table(l_rec_index).message_text := fnd_message.get();
7498 END IF;
7499 IF BITAND(cr.error_number,G_ES_RCA_DATE_OVERLAP) <> 0 THEN
7500 fnd_message.set_name('ZX','ZX_PERIOD_OVERLAP');
7501 l_rec_index := l_rec_index +1;
7502 l_error_table(l_rec_index).intf_ptp_reference := cr.intf_ptp_reference;
7503 l_error_table(l_rec_index).party_type_code := cr.party_type_code;
7504 l_error_table(l_rec_index).prog_int_record_ref := cr.prog_int_record_ref;
7505 l_error_table(l_rec_index).party_id := cr.party_id;
7506 l_error_table(l_rec_index).message_text := fnd_message.get();
7507 END IF;
7508
7509 FOR loop_index IN NVL(l_error_table.FIRST,0)..NVL(l_error_table.LAST,-1) LOOP
7510 INSERT INTO zx_errors_int
7511 (request_id
7512 ,error_table_name
7513 ,intf_ptp_reference
7514 ,party_type_code
7515 ,message_text
7516 ,prog_int_record_ref
7517 ,party_id
7518 )
7519 VALUES
7520 (G_REQUEST_ID
7521 ,G_INTF_RCA_TABLE_NAME
7522 ,l_error_table(loop_index).intf_ptp_reference
7523 ,l_error_table(loop_index).party_type_code
7524 ,l_error_table(loop_index).message_text
7525 ,l_error_table(loop_index).prog_int_record_ref
7526 ,l_error_table(loop_index).party_id
7527 );
7528 END LOOP;
7529 l_error_table.DELETE();
7530 l_rec_index := 0;
7531
7532 END LOOP;
7533
7534 --
7535 -- end of inserting RCA error records into zx_errors_int
7536 --
7537 l_error_table.DELETE();
7538
7539 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
7540 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'LogErrorToTable','LogErrorToTable(-)');
7541 END IF;
7542
7543
7544 EXCEPTION
7545 WHEN OTHERS THEN
7546 IF c_ptp_errors%ISOPEN THEN
7547 CLOSE c_ptp_errors;
7548 END IF;
7549 IF c_reg_errors%ISOPEN THEN
7550 CLOSE c_reg_errors;
7551 END IF;
7552 IF c_exe_errors%ISOPEN THEN
7553 CLOSE c_exe_errors;
7554 END IF;
7555 IF c_rca_errors%ISOPEN THEN
7556 CLOSE c_rca_errors;
7557 END IF;
7558 log_now (p_log_level => FND_FILE.LOG
7559 ,p_message => 'LogErrorToTable'||' : '||SQLERRM
7560 );
7561 RAISE;
7562 END LogErrorToTable;
7563
7564 -- ==========================================================================
7565 -- Public Functions and Procedures
7566 -- ==========================================================================
7567
7568 -- wrapper for handling the product specific code
7569 ---------------------------------------------------------------------------
7570 ---------------------------------------------------------------------------
7571 PROCEDURE IMPORT_WRAPPER
7572 (p_request_id IN NUMBER
7573 ,p_interface_table_name IN VARCHAR2
7574 ,p_gather_stats IN VARCHAR2
7575 ,p_validate_only IN VARCHAR2
7576 ,p_sql_select_insert_ptp_intf IN VARCHAR2
7577 ,p_sql_from_insert_ptp_intf IN VARCHAR2
7578 ,p_insert_only IN VARCHAR2
7579 ,p_sql_select_valid_party_id IN VARCHAR2
7580 ,p_sql_from_valid_party_id IN VARCHAR2
7581 ,p_sql_select_insert_ptp_prod IN VARCHAR2
7582 ,p_sql_from_insert_ptp_prod IN VARCHAR2
7583 ,p_commit IN VARCHAR2
7584 ,p_batch_id IN NUMBER
7585 ,x_return_status OUT NOCOPY VARCHAR2
7586 ,x_msg_data OUT NOCOPY VARCHAR2
7587 ) IS
7588
7589 l_dynamic_sql VARCHAR2(4000);
7590 l_date1 DATE;
7591 l_date2 DATE;
7592 l_date3 DATE;
7593 l_date4 DATE;
7594 l_date5 DATE;
7595 l_date6 DATE;
7596 l_date7 DATE;
7597 l_date8 DATE;
7598 l_date9 DATE;
7599 l_date10 DATE;
7600 l_date11 DATE;
7601 l_date12 DATE;
7602
7603 BEGIN
7604
7605 G_PROC_NAME:= 'IMPORT_WRAPPER';
7606 log_now (p_log_level => FND_FILE.LOG
7607 ,p_message => G_PROC_NAME||'(+)'
7608 );
7609 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
7610 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'IMPORT_WRAPPER','IMPORT_WRAPPER(+)');
7611 END IF;
7612
7613 SetGlobals();
7614 SetProcessConstants();
7615
7616 x_return_status := G_CONC_RET_STS_SUCCESS;
7617 G_BATCH_ID := p_batch_id;
7618 G_REQUEST_ID := p_request_id;
7619
7620 ---------------------------------------
7621 -- validate mandatory API parameters
7622 ---------------------------------------
7623 IF p_request_id IS NULL
7624 OR p_interface_table_name IS NULL
7625 OR NVL(p_gather_stats,G_MISS_CHAR)
7626 NOT IN (G_TRUE, G_FALSE)
7627 OR NVL(p_validate_only,G_MISS_CHAR)
7628 NOT IN (G_TRUE, G_FALSE)
7629 OR (p_validate_only IS NOT NULL AND
7630 (
7631 ( p_sql_select_insert_ptp_intf IS NULL
7632 AND p_sql_from_insert_ptp_intf IS NOT NULL
7633 )
7634 OR
7635 ( p_sql_select_insert_ptp_intf IS NOT NULL
7636 AND p_sql_from_insert_ptp_intf IS NULL
7637 )
7638
7639 )
7640 )
7641 OR NVL(p_insert_only,G_MISS_CHAR)
7642 NOT IN (G_TRUE, G_FALSE)
7643 OR (p_insert_only IS NOT NULL AND
7644 (
7645 ( p_sql_select_valid_party_id IS NULL
7646 AND p_sql_from_valid_party_id IS NOT NULL
7647 )
7648 OR
7649 ( p_sql_select_valid_party_id IS NOT NULL
7650 AND p_sql_from_valid_party_id IS NULL
7651 )
7652 )
7653 OR
7654 (
7655 ( p_sql_select_insert_ptp_prod IS NULL
7656 AND p_sql_from_insert_ptp_prod IS NOT NULL
7657 )
7658 OR
7659 ( p_sql_select_insert_ptp_prod IS NOT NULL
7660 AND p_sql_from_insert_ptp_prod IS NULL
7661 )
7662 )
7663 )
7664 OR NVL(p_commit,G_MISS_CHAR)
7665 NOT IN (G_TRUE, G_FALSE)
7666 THEN
7667 x_return_status := G_CONC_RET_STS_ERROR;
7668 FND_MESSAGE.Set_Name('ZX', 'ZX_API_INVALID_PARAM');
7669 FND_MESSAGE.Set_Token('PKG_NAME', G_PKG_NAME);
7670 FND_MESSAGE.Set_Token('API_NAME', G_PROC_NAME);
7671 x_msg_data := FND_MESSAGE.get();
7672 RETURN;
7673 END IF;
7674
7675 G_DEBUG_STATEMENT:= 'Completed validating mandatory API parameters';
7676 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
7677 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'IMPORT_WRAPPER',G_DEBUG_STATEMENT);
7678 END IF;
7679
7680 IF p_interface_table_name = G_CUST_INTF_TABLE THEN
7681 -- processing data specific to customers interface table of TCA
7682 l_date1 := SYSDATE;
7683 IF FND_API.TO_BOOLEAN(p_validate_only) THEN
7684 --
7685 -- insert data into ptp intf table for those records where in customer
7686 -- has populated into registration_number and country into
7687 -- ra_customers_interface_all
7688 --
7689 -- sample dynamic sql
7690 --
7691 -- INSERT INTO zx_party_tax_profile_int
7692 -- (registration_number,country_code,dml_type,intf_party_reference
7693 -- ,intf_party_site_reference,party_type_code,batch_id,request_id)
7694 ---------------------------------------------------
7695 -- p_sql_select_insert_ptp_intf is defined below
7696 ---------------------------------------------------
7697 -- SELECT CUST_TAX_REFERENCE, country, Decode(INSERT_UPDATE_FLAG,'I','CREATE','U','UPDATE',INSERT_UPDATE_FLAG),
7698 -- Nvl(orig_system_customer_ref,orig_system_party_ref) AS intf_party_reference, orig_system_address_ref AS intf_party_site_reference,
7699 -- CASE WHEN orig_system_party_ref IS NOT NULL THEN 'THIRD_PARTY_SITE' ELSE 'THIRD_PARTY' END AS party_type_code
7700 ---------------------------------------------------
7701 -- p_sql_select_insert_ptp_intf ends here
7702 ---------------------------------------------------
7703 -- ,-1,-2
7704 ---------------------------------------------------
7705 -- p_sql_from_insert_ptp_intf is defined below
7706 ---------------------------------------------------
7707 -- FROM ra_customers_interface_all hz_rcia WHERE insert_update_flag = 'I' AND cust_tax_reference IS NOT NULL
7708 ---------------------------------------------------
7709 -- p_sql_from_insert_ptp_intf ends here
7710 ---------------------------------------------------
7711 -- AND NOT EXISTS
7712 -- (SELECT 1
7713 -- FROM zx_party_tax_profile_int zx_ptp_int
7714 -- WHERE zx_ptp_int.record_status IS NULL
7715 -- AND NVL(zx_ptp_int.batch_id,G_MISS_NUM) = NVL(G_BATCH_ID,NVL(zx_ptp_int.batch_id,G_MISS_NUM))
7716 -- AND Nvl(zx_ptp_int.intf_party_reference,G_MISS_CHAR) = Nvl(Nvl(hz_rcia.orig_system_customer_ref,hz_rcia.orig_system_party_ref),G_MISS_CHAR)
7717 -- AND Nvl(zx_ptp_int.intf_party_site_reference,G_MISS_CHAR) = Nvl(hz_rcia.orig_system_address_ref,G_MISS_CHAR)
7718 -- )
7719 l_date2 := SYSDATE;
7720 IF p_sql_select_insert_ptp_intf IS NOT NULL
7721 AND p_sql_from_insert_ptp_intf IS NOT NULL THEN
7722 BEGIN
7723 l_dynamic_sql := 'INSERT INTO zx_party_tax_profile_int '
7724 ||' (registration_number ,country_code ,dml_type'
7725 ||' ,intf_party_reference ,intf_party_site_reference ,party_type_code'
7726 ||' ,batch_id)'
7727 ||' '|| p_sql_select_insert_ptp_intf
7728 ||' ,:G_BATCH_ID'
7729 ||' '||p_sql_from_insert_ptp_intf
7730 ||' AND NOT EXISTS '
7731 ||' (SELECT 1 FROM zx_party_tax_profile_int zx_ptp_int'
7732 ||' WHERE NVL(zx_ptp_int.record_status,'||G_RS_ERROR||') <> '||G_RS_VALID
7733 ||' AND NVL(zx_ptp_int.batch_id,'||G_MISS_NUM||') '
7734 ||'= '||NVL(G_BATCH_ID,G_MISS_NUM)
7735 ||' AND NVL(zx_ptp_int.intf_party_reference,'''||G_MISS_CHAR||''') '
7736 ||' = NVL(NVL(hz_rcia.orig_system_party_ref'
7737 ||',hz_rcia.orig_system_customer_ref),'''||G_MISS_CHAR||''')'
7738 ||' AND NVL(zx_ptp_int.intf_party_site_reference,'''||G_MISS_CHAR||''')'
7739 ||' = NVL(hz_rcia.orig_system_address_ref,'''||G_MISS_CHAR||''')'
7740 ||')';
7741
7742 EXECUTE IMMEDIATE l_dynamic_sql USING IN G_BATCH_ID;
7743
7744 EXCEPTION
7745 WHEN OTHERS THEN
7746 log_now (p_log_level => FND_FILE.LOG
7747 ,p_message => 'Error Executing below Populate PTP Intf SQL :'||SQLERRM
7748 );
7749 log_now (p_log_level => FND_FILE.LOG
7750 ,p_message => l_dynamic_sql
7751 );
7752 G_DEBUG_STATEMENT:= 'error executing Populate PTP Intf SQL :'||SQLERRM;
7753 IF (G_DEBUG_LEVEL_EXCEPTION >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
7754 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,G_DEBUG_LOG_HEADER||'IMPORT_WRAPPER',G_DEBUG_STATEMENT);
7755 END IF;
7756
7757 RAISE;
7758 END;
7759 G_DEBUG_STATEMENT:= 'Completed executing Populate PTP Intf SQL ';
7760 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
7761 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'IMPORT_WRAPPER',G_DEBUG_STATEMENT);
7762 END IF;
7763 END IF;
7764
7765 l_date3 := SYSDATE;
7766 IMPORT_PTP (
7767 p_party_intf_table_name => p_interface_table_name
7768 ,p_commit => G_FALSE
7769 ,p_gather_stats => p_gather_stats
7770 ,p_validate_only => p_validate_only
7771 ,p_insert_only => G_FALSE
7772 ,x_return_status => x_return_status
7773 ,x_msg_data => x_msg_data
7774 );
7775 l_date4 := SYSDATE;
7776
7777 IF x_return_status <> G_CONC_RET_STS_SUCCESS THEN
7778 RETURN;
7779 ELSE
7780 BEGIN
7781 SELECT G_CONC_RET_STS_WARNING
7782 INTO x_return_status
7783 FROM DUAL
7784 WHERE EXISTS (SELECT /*+ FIRST_ROWS(1) */ 1
7785 FROM zx_errors_int
7786 WHERE request_id = G_REQUEST_ID
7787 AND ROWNUM=1);
7788 EXCEPTION
7789 WHEN OTHERS THEN
7790 x_return_status := G_CONC_RET_STS_SUCCESS;
7791 END;
7792 END IF;
7793
7794 G_DEBUG_STATEMENT:= 'Completed Validate Mode for IMPORT_WRAPPER ';
7795 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
7796 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'IMPORT_WRAPPER',G_DEBUG_STATEMENT);
7797 END IF;
7798
7799 END IF; -- end p_validate_only
7800 l_date5 := SYSDATE;
7801 IF FND_API.TO_BOOLEAN(p_insert_only) THEN
7802
7803 -- sample code for p_sql_select_valid_party_id
7804 -- SELECT party_id, 'THIRD_PARTY' as party_type_code, orig_system_reference as intf_party_reference, NULL as intf_party_site_reference
7805 -- sample code for p_sql_from_valid_party_id
7806 -- FROM hz_parties
7807 -- WHERE request_id = G_REQUEST_ID
7808 -- AND .. ..
7809 l_date6 := SYSDATE;
7810 IF p_sql_select_valid_party_id IS NOT NULL
7811 AND p_sql_from_valid_party_id IS NOT NULL THEN
7812 BEGIN
7813 l_dynamic_sql := 'MERGE INTO zx_party_tax_profile_int ptp_int'
7814 ||' USING ('||p_sql_select_valid_party_id
7815 ||' '||p_sql_from_valid_party_id ||') hz_int'
7816 ||' ON ('
7817 || ' ptp_int.request_id = '||G_REQUEST_ID
7818 || ' AND ptp_int.record_status = '||G_RS_VALID
7819 || ' AND ptp_int.party_type_code = hz_int.party_type_code'
7820 || ' AND ptp_int.intf_party_reference = hz_int.intf_party_reference'
7821 || ' AND nvl(ptp_int.intf_party_site_reference,'''||G_MISS_CHAR||''') '
7822 || ' = nvl(hz_int.intf_party_site_reference,'''||G_MISS_CHAR||''') '
7823 || ' )'
7824 || ' WHEN MATCHED THEN UPDATE'
7825 || ' SET party_id = hz_int.party_id';
7826 EXECUTE IMMEDIATE l_dynamic_sql;
7827 EXCEPTION
7828 WHEN OTHERS THEN
7829 log_now (p_log_level => FND_FILE.LOG
7830 ,p_message => 'Error Executing below Party ID SQL :'||SQLERRM
7831 );
7832 log_now (p_log_level => FND_FILE.LOG
7833 ,p_message => l_dynamic_sql
7834 );
7835 G_DEBUG_STATEMENT:= 'Error Executing below Party ID SQL :'||SQLERRM;
7836 IF (G_DEBUG_LEVEL_EXCEPTION >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
7837 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,G_DEBUG_LOG_HEADER||'IMPORT_WRAPPER',G_DEBUG_STATEMENT);
7838 END IF;
7839 RAISE;
7840 END;
7841 G_DEBUG_STATEMENT:= 'Completed executing below Party ID SQL ';
7842 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
7843 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'IMPORT_WRAPPER',G_DEBUG_STATEMENT);
7844 END IF;
7845 END IF;
7846 l_date7 := SYSDATE;
7847
7848 UPDATE zx_party_tax_profile_int zx_ptp_int
7849 SET record_status = NULL
7850 WHERE request_id = G_REQUEST_ID
7851 AND record_status = G_RS_VALID
7852 AND party_id IS NULL;
7853
7854 G_DEBUG_STATEMENT:= SQL%ROWCOUNT||' PTP records updated with record_status = NULL';
7855 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
7856 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'IMPORT_WRAPPER',G_DEBUG_STATEMENT);
7857 END IF;
7858
7859 ResetRecStatusForChildTables();
7860
7861 l_date8 := SYSDATE;
7862 IMPORT_PTP (
7863 p_party_intf_table_name => p_interface_table_name
7864 ,p_commit => G_FALSE
7865 ,p_gather_stats => G_FALSE
7866 ,p_validate_only => G_FALSE
7867 ,p_insert_only => p_insert_only
7868 ,x_return_status => x_return_status
7869 ,x_msg_data => x_msg_data
7870 );
7871 l_date9 := SYSDATE;
7872
7873 IF x_return_status <> G_CONC_RET_STS_SUCCESS THEN
7874 RETURN;
7875 END IF;
7876
7877 BEGIN
7878 IF p_interface_table_name = G_CUST_INTF_TABLE THEN
7879 l_dynamic_sql :=
7880 ' BEGIN '||
7881 ' HZ_CUSTOMER_INT.sync_tax_reference '||
7882 ' (p_request_id => :g_request_id '||
7883 ' ,x_return_status => :x_return_status '||
7884 ' ,x_msg_data => :x_msg_data '||
7885 ' ); '||
7886 ' END;';
7887 EXECUTE IMMEDIATE l_dynamic_sql
7888 USING IN G_REQUEST_ID,
7889 OUT x_return_status,
7890 OUT x_msg_data;
7891 log_now (p_log_level => FND_FILE.LOG
7892 ,p_message => 'Returned HZ API with status '||x_return_status||' x_msg_data'||x_msg_data
7893 );
7894 IF x_return_status <> G_CONC_RET_STS_SUCCESS THEN
7895 RETURN;
7896 END IF;
7897 END IF;
7898 EXCEPTION
7899 WHEN OTHERS THEN
7900 IF sqlerrm LIKE '%PLS-00302%' THEN
7901 log_now (p_log_level => FND_FILE.LOG
7902 ,p_message => 'HZ_CUSTOMER_INT.sync_tax_reference not defined.'
7903 );
7904 ELSE
7905 log_now (p_log_level => FND_FILE.LOG
7906 ,p_message => 'Error Executing hz_customer_int.sync_tax_reference API :'||SQLERRM
7907 );
7908 log_now (p_log_level => FND_FILE.LOG
7909 ,p_message => l_dynamic_sql
7910 );
7911 G_DEBUG_STATEMENT:= 'Error Executing hz_customer_int.sync_tax_reference API :'||SQLERRM;
7912 IF (G_DEBUG_LEVEL_EXCEPTION >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
7913 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,G_DEBUG_LOG_HEADER||'IMPORT_WRAPPER',G_DEBUG_STATEMENT);
7914 END IF;
7915 RAISE;
7916 END IF;
7917 END;
7918 l_date10 := SYSDATE;
7919
7920 -- sample code for p_sql_select_insert_ptp_prod
7921 -- SELECT party_id, 'THIRD_PARTY'
7922 --
7923 -- sample code for p_sql_from_insert_ptp_prod
7924 -- FROM hz_parties hz_insert
7925 -- WHERE request_id = G_REQUEST_ID
7926 BEGIN
7927
7928 l_dynamic_sql := 'INSERT INTO ZX_PARTY_TAX_PROFILE'
7929 ||'(party_id,party_type_code,country_code'
7930 ||',party_tax_profile_id,creation_date,created_by,last_update_date'
7931 ||',last_updated_by,last_update_login,object_version_number,request_id'
7932 ||',program_application_id,program_id,record_type_code)'
7933 || p_sql_select_insert_ptp_prod
7934 ||' ,zx_party_tax_profile_s.nextval ,:g_date1 '
7935 ||','||G_USER_ID||',:g_date2'
7936 ||','||G_USER_ID||','||G_LOGIN_ID||',1'||','||G_REQUEST_ID
7937 ||','||G_PROG_APPID||','||G_PROG_ID||','''||G_RECORD_TYPE_CODE||''''
7938 ||' '||p_sql_from_insert_ptp_prod||' '
7939 ||' AND NOT EXISTS '
7940 ||' (SELECT 1 FROM zx_party_tax_profile_int zx_ptp_int'
7941 ||' WHERE zx_ptp_int.request_id = '||G_REQUEST_ID
7942 ||' AND zx_ptp_int.party_id = hz_insert.party_id'
7943 ||' AND zx_ptp_int.party_type_code = hz_insert.party_type_code'
7944 ||')';
7945
7946 EXECUTE IMMEDIATE l_dynamic_sql
7947 USING G_SYSDATE, G_SYSDATE;
7948 EXCEPTION
7949 WHEN OTHERS THEN
7950 log_now (p_log_level => FND_FILE.LOG
7951 ,p_message => 'Error Executing below Populate PTP Table SQL :'||SQLERRM
7952 );
7953 log_now (p_log_level => FND_FILE.LOG
7954 ,p_message => l_dynamic_sql
7955 );
7956 G_DEBUG_STATEMENT:= 'Error Executing below Populate PTP Table SQL :'||SQLERRM;
7957 IF (G_DEBUG_LEVEL_EXCEPTION >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
7958 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,G_DEBUG_LOG_HEADER||'IMPORT_WRAPPER',G_DEBUG_STATEMENT);
7959 END IF;
7960 RAISE;
7961 END;
7962 l_date11 := SYSDATE;
7963
7964 G_DEBUG_STATEMENT:= 'Completed Insert Mode for IMPORT_WRAPPER';
7965 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
7966 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'IMPORT_WRAPPER',G_DEBUG_STATEMENT);
7967 END IF;
7968
7969 END IF; -- end p_insert_only
7970 l_date12 := SYSDATE;
7971
7972 log_now (p_log_level => FND_FILE.LOG
7973 ,p_message => '+--------------------------------------------------------------------'
7974 );
7975 log_now (p_log_level => FND_FILE.LOG
7976 ,p_message => '| PERF METRICS FOR IMPORT_WRAPPER '
7977 );
7978 IF FND_API.TO_BOOLEAN(p_validate_only) THEN
7979 log_now (p_log_level => FND_FILE.LOG
7980 ,p_message => '| Time Taken to Populate PTP Table '||(l_date3-l_date2)*86400||' Secs'
7981 );
7982 log_now (p_log_level => FND_FILE.LOG
7983 ,p_message => '| Time Taken for IMPORT_PTP API '||(l_date4-l_date3)*86400||' Secs'
7984 );
7985 END IF;
7986 IF FND_API.TO_BOOLEAN(p_insert_only) THEN
7987 log_now (p_log_level => FND_FILE.LOG
7988 ,p_message => '| Time Taken to Populate Party Id '||(l_date7-l_date6)*86400||' Secs'
7989 );
7990 log_now (p_log_level => FND_FILE.LOG
7991 ,p_message => '| Time Taken to Sync Tax Reference '||(l_date10-l_date9)*86400||' Secs'
7992 );
7993 log_now (p_log_level => FND_FILE.LOG
7994 ,p_message => '| Time Taken to Populate PTP Table '||(l_date11-l_date10)*86400||' Secs'
7995 );
7996 log_now (p_log_level => FND_FILE.LOG
7997 ,p_message => '| Time Taken for IMPORT_PTP API '||(l_date9-l_date8)*86400||' Secs'
7998 );
7999 END IF;
8000 log_now (p_log_level => FND_FILE.LOG
8001 ,p_message => '| Total Time Taken for Validation Mode '||(l_date5-l_date1)*86400||' Secs'
8002 );
8003 log_now (p_log_level => FND_FILE.LOG
8004 ,p_message => '| Total Time Taken for Insert Mode '||(l_date12-l_date5)*86400||' Secs'
8005 );
8006 log_now (p_log_level => FND_FILE.LOG
8007 ,p_message => '| Time Taken by Import Wrapper '||(l_date12-l_date1)*86400||' Secs'
8008 );
8009 log_now (p_log_level => FND_FILE.LOG
8010 ,p_message => '+--------------------------------------------------------------------'
8011 );
8012
8013 END IF; -- end p_interface_table_name
8014
8015 log_now (p_log_level => FND_FILE.LOG
8016 ,p_message => G_PROC_NAME||'(-)'
8017 );
8018 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
8019 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'IMPORT_WRAPPER','IMPORT_WRAPPER(-)');
8020 END IF;
8021
8022 EXCEPTION
8023 WHEN OTHERS THEN
8024 x_return_status := G_CONC_RET_STS_UNEXP_ERROR;
8025 x_msg_data := SQLERRM;
8026 log_now (p_log_level => FND_FILE.LOG
8027 ,p_message => G_PROC_NAME||' : '||SQLERRM
8028 );
8029 END IMPORT_WRAPPER;
8030
8031 ---------------------------------------------------------------------------
8032 ---------------------------------------------------------------------------
8033
8034 PROCEDURE MESSAGE_WRAPPER
8035 (p_request_id IN NUMBER
8036 ,p_interface_table_name IN VARCHAR2
8037 ,p_display_stats IN VARCHAR2
8038 ,p_display_messages IN VARCHAR2
8039 ,p_message_header_string_1 IN VARCHAR2
8040 ,p_message_header_string_2 IN VARCHAR2
8041 ,x_return_status OUT NOCOPY VARCHAR2
8042 ,x_msg_data OUT NOCOPY VARCHAR2
8043 ) IS
8044
8045 l_message VARCHAR2(4000);
8046 l_std_underscore VARCHAR2(28);
8047 l_filler_space_msg_line VARCHAR2(84);
8048 l_msg_header_unit_length NUMBER(2);
8049 l_tot_records_msg VARCHAR2(80);
8050 l_exe_records_msg VARCHAR2(80);
8051 l_count_success_records NUMBER(10);
8052 l_count_exception_records NUMBER(10);
8053 l_message_line1 VARCHAR2(2000);
8054 l_message_line2 VARCHAR2(2000);
8055 l_msg_ptp_table VARCHAR2(2000);
8056 l_msg_reg_table VARCHAR2(2000);
8057 l_msg_exe_table VARCHAR2(2000);
8058 l_msg_rca_table VARCHAR2(2000);
8059
8060 CURSOR c_error_records_cust (cp_request_id IN NUMBER
8061 ,cp_msg_ptp_table IN VARCHAR2
8062 ,cp_msg_exe_table IN VARCHAR2
8063 ,cp_msg_reg_table IN VARCHAR2
8064 ,cp_msg_rca_table IN VARCHAR2
8065 ) IS
8066 SELECT ptp_int.intf_party_reference, ptp_int.intf_party_site_reference
8067 ,DECODE(err_int.error_table_name
8068 ,G_INTF_PTP_TABLE_NAME,cp_msg_ptp_table
8069 ,G_INTF_EXE_TABLE_NAME,cp_msg_exe_table
8070 ,G_INTF_REG_TABLE_NAME,cp_msg_reg_table
8071 ,G_INTF_RCA_TABLE_NAME,cp_msg_rca_table
8072 ,' ') AS user_table_name
8073 ,err_int.message_text
8074 FROM zx_errors_int err_int, zx_party_tax_profile_int ptp_int
8075 WHERE err_int.request_id = G_REQUEST_ID
8076 AND err_int.request_id = ptp_int.request_id
8077 AND err_int.intf_ptp_reference = ptp_int.intf_ptp_reference
8078 ORDER BY intf_party_reference, intf_party_site_reference NULLS FIRST,
8079 DECODE(error_table_name,G_INTF_PTP_TABLE_NAME,1
8080 ,G_INTF_EXE_TABLE_NAME,2
8081 ,G_INTF_REG_TABLE_NAME,3
8082 ,G_INTF_RCA_TABLE_NAME,4,5),
8083 prog_int_record_ref NULLS FIRST;
8084
8085 l_date1 DATE;
8086 l_num1 NUMBER;
8087
8088 BEGIN
8089
8090 G_PROC_NAME := 'MESSAGE_WRAPPER';
8091 log_now (p_log_level => FND_FILE.LOG
8092 ,p_message => G_PROC_NAME||'(+)'
8093 );
8094 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
8095 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'MESSAGE_WRAPPER','MESSAGE_WRAPPER(+)');
8096 END IF;
8097
8098 SetGlobals();
8099 SetProcessConstants();
8100
8101 x_return_status := G_CONC_RET_STS_SUCCESS;
8102 G_REQUEST_ID := p_request_id;
8103 l_std_underscore := '----------------------------';
8104 l_msg_header_unit_length := 36;
8105
8106 ---------------------------------------
8107 -- validate mandatory API parameters
8108 ---------------------------------------
8109 IF p_request_id IS NULL
8110 OR p_interface_table_name IS NULL
8111 OR NVL(p_display_stats,G_MISS_CHAR)
8112 NOT IN (G_TRUE, G_FALSE)
8113 OR NVL(p_display_messages,G_MISS_CHAR)
8114 NOT IN (G_TRUE, G_FALSE)
8115 OR ( FND_API.to_boolean(p_display_messages)
8116 AND ( p_message_header_string_1 IS NULL
8117 OR p_message_header_string_2 IS NULL
8118 )
8119 )
8120 THEN
8121 x_return_status := G_CONC_RET_STS_ERROR;
8122 FND_MESSAGE.Set_Name('ZX', 'ZX_API_INVALID_PARAM');
8123 FND_MESSAGE.Set_Token('PKG_NAME', G_PKG_NAME);
8124 FND_MESSAGE.Set_Token('API_NAME', G_PROC_NAME);
8125 x_msg_data := FND_MESSAGE.get();
8126 RETURN;
8127 END IF;
8128
8129 G_DEBUG_STATEMENT:= 'Completed validating mandatory API parameters';
8130 IF (G_DEBUG_LEVEL_STATEMENT >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
8131 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,G_DEBUG_LOG_HEADER||'MESSAGE_WRAPPER',G_DEBUG_STATEMENT);
8132 END IF;
8133
8134 IF FND_API.to_boolean (p_display_stats) THEN
8135 IF p_interface_table_name = G_CUST_INTF_TABLE THEN
8136
8137 l_date1 := SYSDATE;
8138
8139 SELECT NVL(SUM(DECODE(NVL(record_status,G_RS_ERROR),G_RS_ERROR,1,0)),0), NVL(SUM(1),0)
8140 INTO l_count_exception_records, l_count_success_records
8141 FROM zx_party_tax_profile_int
8142 WHERE request_id = G_REQUEST_ID;
8143 fnd_message.set_name('ZX','ZX_TOT_IMPORTED_RECORDS');
8144 l_tot_records_msg := fnd_message.get();
8145 fnd_message.set_name('ZX','ZX_TOT_EXCEPTION_RECORDS');
8146 l_exe_records_msg := fnd_message.get();
8147 --
8148 -- start print the summary for party tax profile
8149 --
8150 log_now (p_log_level => FND_FILE.OUTPUT
8151 ,p_message => G_INTF_PTP_TABLE_NAME
8152 );
8153 log_now (p_log_level => FND_FILE.OUTPUT
8154 ,p_message => l_std_underscore
8155 );
8156 log_now (p_log_level => FND_FILE.OUTPUT
8157 ,p_message => l_tot_records_msg||' '||l_count_success_records
8158 );
8159 log_now (p_log_level => FND_FILE.OUTPUT
8160 ,p_message => l_exe_records_msg||' '||l_count_exception_records
8161 );
8162 log_now (p_log_level => FND_FILE.OUTPUT
8163 ,p_message => ''
8164 );
8165 --
8166 -- end print the summary for party tax profile
8167 --
8168 l_message_line1 := RPAD(G_INTF_REG_TABLE_NAME,l_msg_header_unit_length,' ')
8169 || RPAD(G_INTF_EXE_TABLE_NAME,l_msg_header_unit_length,' ')
8170 || G_INTF_RCA_TABLE_NAME;
8171
8172 l_message_line2 := RPAD(l_std_underscore,l_msg_header_unit_length,' ')
8173 || RPAD(l_std_underscore,l_msg_header_unit_length,' ')
8174 || l_std_underscore;
8175 --
8176 -- start print the summary for the child records
8177 --
8178 log_now (p_log_level => FND_FILE.OUTPUT
8179 ,p_message => l_message_line1
8180 );
8181 log_now (p_log_level => FND_FILE.OUTPUT
8182 ,p_message => l_message_line2
8183 );
8184
8185 SELECT NVL(SUM(DECODE(record_status,G_RS_ERROR,1,0)),0), NVL(SUM(1),0)
8186 INTO l_count_exception_records, l_count_success_records
8187 FROM zx_registrations_int
8188 WHERE request_id = G_REQUEST_ID;
8189 l_message_line1 := RPAD(l_tot_records_msg||' '||l_count_success_records
8190 ,l_msg_header_unit_length,' ');
8191 l_message_line2 := RPAD(l_exe_records_msg||' '||l_count_exception_records
8192 ,l_msg_header_unit_length,' ');
8193
8194 SELECT NVL(SUM(DECODE(record_status,G_RS_ERROR,1,0)),0), NVL(SUM(1),0)
8195 INTO l_count_exception_records, l_count_success_records
8196 FROM zx_exemptions_int
8197 WHERE request_id = G_REQUEST_ID;
8198 l_message_line1 := l_message_line1
8199 || RPAD(l_tot_records_msg||' '||l_count_success_records,
8200 l_msg_header_unit_length,' ');
8201 l_message_line2 := l_message_line2
8202 || RPAD(l_exe_records_msg||' '||l_count_exception_records,
8203 l_msg_header_unit_length,' ');
8204
8205 SELECT NVL(SUM(DECODE(record_status,G_RS_ERROR,1,0)),0), NVL(SUM(1),0)
8206 INTO l_count_exception_records, l_count_success_records
8207 FROM zx_report_codes_assoc_int
8208 WHERE request_id = G_REQUEST_ID;
8209 l_message_line1 := l_message_line1
8210 || l_tot_records_msg||' '||l_count_success_records;
8211 l_message_line2 := l_message_line2
8212 || l_exe_records_msg||' '||l_count_exception_records;
8213
8214 log_now (p_log_level => FND_FILE.OUTPUT
8215 ,p_message => l_message_line1
8216 );
8217 log_now (p_log_level => FND_FILE.OUTPUT
8218 ,p_message => l_message_line2
8219 );
8220 log_now (p_log_level => FND_FILE.OUTPUT
8221 ,p_message => ''
8222 );
8223 log_now (p_log_level => FND_FILE.LOG
8224 ,p_message => '+--------------------------------------------------------------------'
8225 );
8226 log_now (p_log_level => FND_FILE.LOG
8227 ,p_message => '| PERF METRICS FOR MESSAGE_WRAPPER TO DISPLAY STATISTICS '
8228 );
8229 log_now (p_log_level => FND_FILE.LOG
8230 ,p_message => '| Time Taken by Message API to display Stats '||(SYSDATE-l_date1)*86400||' Secs'
8231 );
8232 log_now (p_log_level => FND_FILE.LOG
8233 ,p_message => '+--------------------------------------------------------------------'
8234 );
8235 --
8236 -- end print the summary for the child records
8237 --
8238 END IF; -- p_interface_table_name = G_CUST_INTF_TABLE
8239
8240 END IF; -- p_display_stats
8241
8242 IF FND_API.to_boolean(p_display_messages) THEN
8243
8244 BEGIN
8245 SELECT 1
8246 INTO l_num1
8247 FROM DUAL
8248 WHERE EXISTS (SELECT /*+ FIRST_ROWS(1) */ 1
8249 FROM zx_errors_int
8250 WHERE request_id = G_REQUEST_ID
8251 AND ROWNUM=1);
8252 EXCEPTION
8253 WHEN OTHERS THEN
8254 l_num1 := 0;
8255 END;
8256
8257 IF l_num1 = 1 THEN
8258 IF p_interface_table_name = G_CUST_INTF_TABLE THEN
8259 --
8260 -- table names are not translatable items, so we hardcode them
8261 --
8262
8263 l_date1 := SYSDATE;
8264
8265 fnd_message.set_name('ZX','ZX_PTP_ERROR_HEADER');
8266 fnd_message.set_token('TABLE_NAME', G_INTF_PTP_TABLE_NAME);
8267 l_message_line1 := fnd_message.get();
8268
8269 log_now (p_log_level => FND_FILE.OUTPUT
8270 ,p_message => l_message_line1
8271 );
8272 log_now (p_log_level => FND_FILE.OUTPUT
8273 ,p_message => ''
8274 );
8275 log_now (p_log_level => FND_FILE.OUTPUT
8276 ,p_message => p_message_header_string_1
8277 );
8278 log_now (p_log_level => FND_FILE.OUTPUT
8279 ,p_message => p_message_header_string_2
8280 );
8281
8282 fnd_message.set_name('ZX','ZX_PTP_ERR_CATEGORY_NAME');
8283 l_msg_ptp_table := fnd_message.get();
8284
8285 fnd_message.set_name('ZX','ZX_EXE_ERR_CATEGORY_NAME');
8286 l_msg_exe_table := fnd_message.get();
8287
8288 fnd_message.set_name('ZX','ZX_REG_ERR_CATEGORY_NAME');
8289 l_msg_reg_table := fnd_message.get();
8290
8291 fnd_message.set_name('ZX','ZX_RCA_ERR_CATEGORY_NAME');
8292 l_msg_rca_table := fnd_message.get();
8293
8294 ---------------------------------------------
8295 -- the message format will have 4 columns
8296 -- party_reference max 27 characters
8297 -- party_site_reference max 27 characters
8298 -- category max 15 characters
8299 -- Filler for next line of error message = 27+1+27+1+15+1 = 72
8300 -- Error message 132-72 = 60
8301 ---------------------------------------------
8302 -- this program has some hardcoded numbers based on the above
8303 -- please do not change any of the field sizes
8304 ---------------------------------------------
8305 l_filler_space_msg_line := ' '
8306 ||' ';
8307 FOR cr in c_error_records_cust(cp_request_id => G_REQUEST_ID
8308 ,cp_msg_ptp_table => l_msg_ptp_table
8309 ,cp_msg_exe_table => l_msg_exe_table
8310 ,cp_msg_reg_table => l_msg_reg_table
8311 ,cp_msg_rca_table => l_msg_rca_table)
8312 LOOP
8313 l_message_line1 :=
8314 RPAD(SUBSTR(cr.intf_party_reference,1,27),28,' ')||
8315 RPAD(SUBSTR(NVL(cr.intf_party_site_reference,' '),1,27),28,' ')||
8316 RPAD(SUBSTR(cr.user_table_name,1,15),16,' ');
8317 l_message_line2 := cr.message_text;
8318
8319 WHILE LENGTH(l_message_line2) > 60 LOOP
8320 l_message_line1 := l_message_line1||SUBSTR(l_message_line2,1,60);
8321
8322 log_now (p_log_level => FND_FILE.OUTPUT
8323 ,p_message => l_message_line1
8324 );
8325 l_message_line2 := SUBSTR(l_message_line2,61);
8326 l_message_line1 := l_filler_space_msg_line;
8327 END LOOP;
8328 log_now (p_log_level => FND_FILE.OUTPUT
8329 ,p_message => l_message_line1||l_message_line2
8330 );
8331 log_now (p_log_level => FND_FILE.OUTPUT
8332 ,p_message => ' '
8333 );
8334 END LOOP;
8335
8336 log_now (p_log_level => FND_FILE.LOG
8337 ,p_message => '+--------------------------------------------------------------------'
8338 );
8339 log_now (p_log_level => FND_FILE.LOG
8340 ,p_message => '| PERF METRICS FOR MESSAGE_WRAPPER TO DISPLAY ERRORS '
8341 );
8342 log_now (p_log_level => FND_FILE.LOG
8343 ,p_message => '| Time Taken by Message API to display Errors '||(SYSDATE-l_date1)*86400||' Secs'
8344 );
8345 log_now (p_log_level => FND_FILE.LOG
8346 ,p_message => '+--------------------------------------------------------------------'
8347 );
8348 END IF; -- p_interface_table_name = G_CUST_INTF_TABLE
8349 END IF; -- lnum1
8350 END IF; -- p_display_messages
8351
8352
8353 log_now (p_log_level => FND_FILE.LOG
8354 ,p_message => G_PROC_NAME||'(-)'
8355 );
8356 IF (G_DEBUG_LEVEL_PROCEDURE >= G_CURRENT_DEBUG_LEVEL_SET ) THEN
8357 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,G_DEBUG_LOG_HEADER||'MESSAGE_WRAPPER','MESSAGE_WRAPPER(-)');
8358 END IF;
8359
8360 EXCEPTION
8361 WHEN OTHERS THEN
8362 IF c_error_records_cust%ISOPEN THEN
8363 CLOSE c_error_records_cust;
8364 END IF;
8365 x_return_status := G_CONC_RET_STS_UNEXP_ERROR;
8366 x_msg_data := SQLERRM;
8367 log_now (p_log_level => FND_FILE.LOG
8368 ,p_message => G_PROC_NAME||' : '||SQLERRM
8369 );
8370 END MESSAGE_WRAPPER;
8371
8372
8373 END ZX_PTP_IMPORT;