DBA Data[Home] [Help]

PACKAGE BODY: APPS.ZX_ACCOUNT_TAX_RATES_PKG

Source


1 PACKAGE BODY zx_account_tax_rates_pkg AS
2 /* $Header: zxglatrb.pls 120.6 2006/11/10 23:59:40 pla ship $ */
3 
4   ---
5   --- PRIVATE FUNCTIONS
6   ---
7 
8   --
9   -- Procedure
10   --   select_row
11   -- Purpose
12   --   Gets the row from gl_tax_options associated with
13   --   the given ledger id and organization.
14   -- History
15   --
16   -- Arguments
17   --   recinfo 		A row from zx_account_rates
18   -- Example
19   --   gl_tax_options_pkg.select_row(recinfo);
20   -- Notes
21   --
22   PROCEDURE select_row( recinfo IN OUT NOCOPY zx_account_rates%ROWTYPE )  IS
23   BEGIN
24     SELECT  *
25     INTO    recinfo
26     FROM    zx_account_rates
27     WHERE   ledger_id = recinfo.ledger_id
28     AND     content_owner_id = recinfo.content_owner_id;
29   EXCEPTION
30     WHEN app_exceptions.application_exception THEN
31       RAISE;
32     WHEN OTHERS THEN
33       fnd_message.set_name('SQLGL', 'GL_UNHANDLED_EXCEPTION');
34       fnd_message.set_token('PROCEDURE',
35                             'zx_account_rates.select_row');
36       RAISE;
37   END select_row;
38 
39 
40   --
41   -- PUBLIC FUNCTIONS
42   --
43 
44   PROCEDURE select_columns(
45 	      x_ledger_id				NUMBER,
46 	      x_content_owner_id			NUMBER,
47 	      x_tax_precision			IN OUT NOCOPY	NUMBER,
48 	      x_tax_mau				IN OUT NOCOPY 	NUMBER) IS
49 
50     recinfo zx_account_rates%ROWTYPE;
51 
52   BEGIN
53     recinfo.ledger_id := x_ledger_id;
54     recinfo.content_owner_id := x_content_owner_id;
55     select_row( recinfo );
56     x_tax_precision := recinfo.tax_precision;
57     x_tax_mau := recinfo.tax_mau;
58 
59   EXCEPTION
60     WHEN app_exceptions.application_exception THEN
61       RAISE;
62     WHEN OTHERS THEN
63       fnd_message.set_name('SQLGL', 'GL_UNHANDLED_EXCEPTION');
64       fnd_message.set_token('PROCEDURE',
65                             'zx_account_rates.select_columns');
66       RAISE;
67   END select_columns;
68 
69 
70   PROCEDURE duplicate_tax_options ( x_ledger_id	        NUMBER,
71  				    x_content_owner_id	NUMBER,
72 				    x_rowid	        VARCHAR2 ) IS
73     x_total 	NUMBER;
74   BEGIN
75     SELECT count(*)
76     INTO x_total
77     FROM zx_account_rates
78     WHERE ledger_id = x_ledger_id
79     AND   content_owner_id = x_content_owner_id
80     AND ( x_rowid is null OR rowid <> x_rowid );
81 
82     IF (x_total <> 0) THEN
83       -- A already record exists for this ledger id and org id
84       fnd_message.set_name('SQLGL', 'GL_STAX_DUPLICATE_RECORD');
85       app_exception.raise_exception;
86     END IF;
87 
88   END duplicate_tax_options;
89 
90 
91   PROCEDURE org_name ( x_org_id		NUMBER,
92 		       x_org_name	IN OUT NOCOPY	VARCHAR2 ) IS
93     org_cursor	NUMBER;
94     row_count   NUMBER;
95   BEGIN
96 
97     org_cursor := dbms_sql.open_cursor;
98     dbms_sql.parse(org_cursor,
99 		   'SELECT name ' ||
100 		   'FROM hr_operating_units ' ||
101 		   'WHERE organization_id = :org_id ',
102 		   dbms_sql.v7);
103     dbms_sql.define_column(org_cursor, 1, x_org_name, 240);
104     dbms_sql.bind_variable(org_cursor, ':org_id', x_org_id);
105 
106     row_count := dbms_sql.execute_and_fetch(org_cursor);
107     IF (row_count = 0) THEN
108       RAISE NO_DATA_FOUND;
109     END IF;
110 
111     dbms_sql.column_value(org_cursor, 1, x_org_name);
112     dbms_sql.close_cursor(org_cursor);
113   END org_name;
114 
115 
116   PROCEDURE insert_row(
117                 X_LEDGER_ID                       NUMBER,
118                 X_CONTENT_OWNER_ID                NUMBER,
119                 X_ACCOUNT_SEGMENT_VALUE           VARCHAR2,
120                 X_TAX_PRECISION                   NUMBER,
121                 X_CALCULATION_LEVEL_CODE          VARCHAR2,
122                 X_ALLOW_RATE_OVERRIDE_FLAG        VARCHAR2,
123                 X_TAX_MAU                         NUMBER,
124                 X_TAX_CURRENCY_CODE               VARCHAR2,
125                 X_TAX_CLASS                       VARCHAR2,
126                 X_TAX_REGIME_CODE                 VARCHAR2,
127                 X_TAX                             VARCHAR2,
128                 X_TAX_STATUS_CODE                 VARCHAR2,
129                 X_TAX_RATE_CODE                   VARCHAR2,
130                 X_ROUNDING_RULE_CODE              VARCHAR2,
131                 X_AMT_INCL_TAX_FLAG               VARCHAR2,
132                 X_RECORD_TYPE_CODE                VARCHAR2,
133                 X_CREATION_DATE                   DATE,
134                 X_CREATED_BY                      NUMBER,
135                 X_LAST_UPDATED_BY                 NUMBER,
136                 X_LAST_UPDATE_DATE                DATE,
137                 X_LAST_UPDATE_LOGIN               NUMBER,
138                 X_ATTRIBUTE_CATEGORY              VARCHAR2,
139                 X_ATTRIBUTE1                      VARCHAR2,
140                 X_ATTRIBUTE2                      VARCHAR2,
141                 X_ATTRIBUTE3                      VARCHAR2,
142                 X_ATTRIBUTE4                      VARCHAR2,
143                 X_ATTRIBUTE5                      VARCHAR2,
144                 X_ATTRIBUTE6                      VARCHAR2,
145                 X_ATTRIBUTE7                      VARCHAR2,
146                 X_ATTRIBUTE8                      VARCHAR2,
147                 X_ATTRIBUTE9                      VARCHAR2,
148                 X_ATTRIBUTE10                     VARCHAR2,
149                 X_ATTRIBUTE11                     VARCHAR2,
150                 X_ATTRIBUTE12                     VARCHAR2,
151                 X_ATTRIBUTE13                     VARCHAR2,
152                 X_ATTRIBUTE14                     VARCHAR2,
153                 X_ATTRIBUTE15                     VARCHAR2,
154                 X_ALLOW_ROUNDING_OVERRIDE_FLAG	  VARCHAR2)  IS
155     CURSOR C IS SELECT ROWID FROM ZX_ACCOUNT_RATES
156                 WHERE LEDGER_ID = X_LEDGER_ID
157                 AND CONTENT_OWNER_ID = X_CONTENT_OWNER_ID
158                 AND  (tax_class = X_TAX_CLASS OR
159                       (tax_class IS NULL AND X_TAX_CLASS IS NULL) );
160     dummy VARCHAR2(30);
161   BEGIN
162     INSERT INTO ZX_ACCOUNT_RATES
163       (ledger_id,
164        content_owner_id,
165        account_segment_value,
166        tax_precision,
167        calculation_level_code,
168        allow_rate_override_flag,
169        tax_mau,
170        tax_currency_code,
171        tax_class,
172        tax_regime_code,
173        tax,
174        tax_status_code,
175        tax_rate_code,
176        rounding_rule_code,
177        amt_incl_tax_flag,
178        record_type_code,
179        creation_date,
180        created_by,
181        last_updated_by,
182        last_update_date,
183        last_update_login,
184        attribute_category,
185        attribute1,
186        attribute2,
187        attribute3,
188        attribute4,
189        attribute5,
190        attribute6,
191        attribute7,
192        attribute8,
193        attribute9,
194        attribute10,
195        attribute11,
196        attribute12,
197        attribute13,
198        attribute14,
199        attribute15,
200        allow_rounding_override_flag)
201    VALUES
202      (X_LEDGER_ID,
203       X_CONTENT_OWNER_ID,
204       X_ACCOUNT_SEGMENT_VALUE,
205       X_TAX_PRECISION,
206       X_CALCULATION_LEVEL_CODE,
207       X_ALLOW_RATE_OVERRIDE_FLAG,
208       X_TAX_MAU,
209       X_TAX_CURRENCY_CODE,
210       X_TAX_CLASS,
211       X_TAX_REGIME_CODE,
212       X_TAX,
213       X_TAX_STATUS_CODE,
214       X_TAX_RATE_CODE,
215       X_ROUNDING_RULE_CODE,
216       X_AMT_INCL_TAX_FLAG,
217       X_RECORD_TYPE_CODE,
218       X_CREATION_DATE,
219       X_CREATED_BY,
220       X_LAST_UPDATED_BY,
221       X_LAST_UPDATE_DATE,
222       X_LAST_UPDATE_LOGIN,
223       X_ATTRIBUTE_CATEGORY,
224       X_ATTRIBUTE1,
225       X_ATTRIBUTE2,
226       X_ATTRIBUTE3,
227       X_ATTRIBUTE4,
228       X_ATTRIBUTE5,
229       X_ATTRIBUTE6,
230       X_ATTRIBUTE7,
231       X_ATTRIBUTE8,
232       X_ATTRIBUTE9,
233       X_ATTRIBUTE10,
234       X_ATTRIBUTE11,
235       X_ATTRIBUTE12,
236       X_ATTRIBUTE13,
237       X_ATTRIBUTE14,
238       X_ATTRIBUTE15,
239       X_ALLOW_ROUNDING_OVERRIDE_FLAG);
240 
241     OPEN C;
242     FETCH C INTO dummy;
243     IF (C%NOTFOUND) THEN
244       CLOSE C;
245       RAISE NO_DATA_FOUND;
246     END IF;
247     CLOSE C;
248 
249   END insert_row;
250 
251 
252   PROCEDURE update_row (
253                 X_RECORD_LEVEL 			  VARCHAR2,
254 		    X_LEDGER_ID                       NUMBER,
255                 X_CONTENT_OWNER_ID                NUMBER,
256                 X_ACCOUNT_SEGMENT_VALUE           VARCHAR2,
257                 X_TAX_PRECISION                   NUMBER,
258                 X_CALCULATION_LEVEL_CODE          VARCHAR2,
259                 X_ALLOW_RATE_OVERRIDE_FLAG        VARCHAR2,
260                 X_TAX_MAU                         NUMBER,
261                 X_TAX_CURRENCY_CODE               VARCHAR2,
262                 X_TAX_CLASS                       VARCHAR2,
263                 X_TAX_REGIME_CODE                 VARCHAR2,
264                 X_TAX                             VARCHAR2,
265                 X_TAX_STATUS_CODE                 VARCHAR2,
266                 X_TAX_RATE_CODE                   VARCHAR2,
267                 X_ROUNDING_RULE_CODE              VARCHAR2,
268                 X_AMT_INCL_TAX_FLAG               VARCHAR2,
269                 X_RECORD_TYPE_CODE                VARCHAR2,
270                 X_CREATION_DATE                   DATE,
271                 X_CREATED_BY                      NUMBER,
272                 X_LAST_UPDATED_BY                 NUMBER,
273                 X_LAST_UPDATE_DATE                DATE,
274                 X_LAST_UPDATE_LOGIN               NUMBER,
275                 X_ATTRIBUTE_CATEGORY              VARCHAR2,
276                 X_ATTRIBUTE1                      VARCHAR2,
277                 X_ATTRIBUTE2                      VARCHAR2,
278                 X_ATTRIBUTE3                      VARCHAR2,
279                 X_ATTRIBUTE4                      VARCHAR2,
280                 X_ATTRIBUTE5                      VARCHAR2,
281                 X_ATTRIBUTE6                      VARCHAR2,
282                 X_ATTRIBUTE7                      VARCHAR2,
283                 X_ATTRIBUTE8                      VARCHAR2,
284                 X_ATTRIBUTE9                      VARCHAR2,
285                 X_ATTRIBUTE10                     VARCHAR2,
286                 X_ATTRIBUTE11                     VARCHAR2,
287                 X_ATTRIBUTE12                     VARCHAR2,
288                 X_ATTRIBUTE13                     VARCHAR2,
289                 X_ATTRIBUTE14                     VARCHAR2,
290                 X_ATTRIBUTE15                     VARCHAR2,
291                 X_ALLOW_ROUNDING_OVERRIDE_FLAG	  VARCHAR2,
292                 X_CONTENT_OWNER_ID_ORIG           NUMBER,
293                 X_ACCOUNT_SEGMENT_VALUE_ORIG      VARCHAR2,
294                 X_TAX_CLASS_ORIG                  VARCHAR2)  IS
295 
296  BEGIN
297 
298      IF x_record_level = 'LEDGER'  THEN
299 
300         /******
301 	BEGIN
302 
303    	   UPDATE ZX_ACCOUNT_RATES
307 		  calculation_level_code         = X_CALCULATION_LEVEL_CODE,
304  	      SET tax_currency_code              = X_TAX_CURRENCY_CODE,
305 		  tax_precision                  = X_TAX_PRECISION,
306 		  tax_mau                        = X_TAX_MAU,
308                   allow_rounding_override_flag   = X_ALLOW_ROUNDING_OVERRIDE_FLAG
309 	    WHERE ledger_id             = X_LEDGER_ID
310             --AND content_owner_id      = NVL(X_CONTENT_OWNER_ID_ORIG, content_owner_id)
311               AND account_segment_value IS NULL
312               AND (tax_class IN ('INPUT', 'OUTPUT')
313                   OR tax_class is null);
314 
315 
316   	EXCEPTION
317   	   WHEN OTHERS THEN
318 	      NULL;
319 	END;
320         ***/
321 
322         BEGIN
323 
324    	   UPDATE ZX_ACCOUNT_RATES
325  	      SET content_owner_id               = X_CONTENT_OWNER_ID,
326 		  allow_rate_override_flag       = X_ALLOW_RATE_OVERRIDE_FLAG,
327 	          -- tax_class                      = X_TAX_CLASS,
328 		  tax_regime_code                = X_TAX_REGIME_CODE,
329 		  tax                            = X_TAX,
330 		  tax_status_code                = X_TAX_STATUS_CODE,
331 		  tax_rate_code                  = X_TAX_RATE_CODE,
332 		  rounding_rule_code             = X_ROUNDING_RULE_CODE,
333 		  amt_incl_tax_flag              = X_AMT_INCL_TAX_FLAG,
334                   tax_currency_code              = X_TAX_CURRENCY_CODE,
335                   tax_precision                  = X_TAX_PRECISION,
336                   tax_mau                        = X_TAX_MAU,
337                   calculation_level_code         = X_CALCULATION_LEVEL_CODE,
338                   allow_rounding_override_flag   = X_ALLOW_ROUNDING_OVERRIDE_FLAG,
339 		  record_type_code               = X_RECORD_TYPE_CODE,
340 		  creation_date                  = X_CREATION_DATE,
341 		  created_by                     = X_CREATED_BY,
345 		  attribute_category             = X_ATTRIBUTE_CATEGORY,
342 		  last_updated_by                = X_LAST_UPDATED_BY,
343 		  last_update_date               = X_LAST_UPDATE_DATE,
344 		  last_update_login              = X_LAST_UPDATE_LOGIN,
346 		  attribute1                     = X_ATTRIBUTE1,
347 		  attribute2                     = X_ATTRIBUTE2,
348 		  attribute3                     = X_ATTRIBUTE3,
349 		  attribute4                     = X_ATTRIBUTE4,
350 		  attribute5                     = X_ATTRIBUTE5,
351 		  attribute6                     = X_ATTRIBUTE6,
352 		  attribute7                     = X_ATTRIBUTE7,
353 		  attribute8                     = X_ATTRIBUTE8,
354 		  attribute9                     = X_ATTRIBUTE9,
355 		  attribute10                    = X_ATTRIBUTE10,
356 		  attribute11                    = X_ATTRIBUTE11,
357 		  attribute12                    = X_ATTRIBUTE12,
358 		  attribute13                    = X_ATTRIBUTE13,
359 		  attribute14                    = X_ATTRIBUTE14,
360 		  attribute15                    = X_ATTRIBUTE15
361 	    WHERE ledger_id             = X_LEDGER_ID
362               AND content_owner_id      = X_CONTENT_OWNER_ID
363               AND account_segment_value IS NULL
364               AND  (tax_class = X_TAX_CLASS OR
365                     (tax_class IS NULL AND X_TAX_CLASS IS NULL ));
366 
367 	   IF (SQL%NOTFOUND) THEN
368 	     RAISE NO_DATA_FOUND;
369    	   END IF;
370   	EXCEPTION
371   	   WHEN OTHERS THEN
372 	      NULL;
373 	END;
374 
375      ELSIF X_RECORD_LEVEL = 'ACCOUNT' then
376 
377 
378 	    UPDATE ZX_ACCOUNT_RATES
379 	     	   SET ledger_id                      = X_LEDGER_ID,
380 	    		content_owner_id               = X_CONTENT_OWNER_ID,
381 	    		account_segment_value          = X_ACCOUNT_SEGMENT_VALUE,
382 	    		tax_precision                  = X_TAX_PRECISION,
383 	    		calculation_level_code         = X_CALCULATION_LEVEL_CODE,
384 	    		allow_rate_override_flag       = X_ALLOW_RATE_OVERRIDE_FLAG,
385 	    		tax_mau                        = X_TAX_MAU,
386 	    		tax_currency_code              = X_TAX_CURRENCY_CODE,
387 	    		tax_class                      = X_TAX_CLASS,
388 	    		tax_regime_code                = X_TAX_REGIME_CODE,
389 	    		tax                            = X_TAX,
390 	    		tax_status_code                = X_TAX_STATUS_CODE,
391 	    		tax_rate_code                  = X_TAX_RATE_CODE,
392 	    		rounding_rule_code             = X_ROUNDING_RULE_CODE,
393 	    		amt_incl_tax_flag              = X_AMT_INCL_TAX_FLAG,
394 	    		record_type_code               = X_RECORD_TYPE_CODE,
395 	    		creation_date                  = X_CREATION_DATE,
396 	    		created_by                     = X_CREATED_BY,
397 	    		last_updated_by                = X_LAST_UPDATED_BY,
398 	    		last_update_date               = X_LAST_UPDATE_DATE,
399 	    		last_update_login              = X_LAST_UPDATE_LOGIN,
400 	    		attribute_category             = X_ATTRIBUTE_CATEGORY,
401 	    		attribute1                     = X_ATTRIBUTE1,
402 	    		attribute2                     = X_ATTRIBUTE2,
403 	    		attribute3                     = X_ATTRIBUTE3,
404 	    		attribute4                     = X_ATTRIBUTE4,
405 	    		attribute5                     = X_ATTRIBUTE5,
406 	    		attribute6                     = X_ATTRIBUTE6,
407 	    		attribute7                     = X_ATTRIBUTE7,
408 	    		attribute8                     = X_ATTRIBUTE8,
409 	    		attribute9                     = X_ATTRIBUTE9,
410 	    		attribute10                    = X_ATTRIBUTE10,
411 	    		attribute11                    = X_ATTRIBUTE11,
412 	    		attribute12                    = X_ATTRIBUTE12,
413 	    		attribute13                    = X_ATTRIBUTE13,
414 	    		attribute14                    = X_ATTRIBUTE14,
415 	    		attribute15                    = X_ATTRIBUTE15,
416 	    		allow_rounding_override_flag   = X_ALLOW_ROUNDING_OVERRIDE_FLAG
417 	    WHERE  ledger_id             = X_LEDGER_ID
418 	    AND    content_owner_id      = X_CONTENT_OWNER_ID
419 	    AND    account_segment_value = X_ACCOUNT_SEGMENT_VALUE
420             AND    (tax_class = X_TAX_CLASS OR
421                     (tax_class IS NULL AND X_TAX_CLASS IS NULL ));
422 
423 		IF (SQL%NOTFOUND) THEN
424 		  RAISE NO_DATA_FOUND;
425    		END IF;
426 
427 	END IF;
428 
429 
430   END update_row;
431 
432 
433   PROCEDURE lock_row(
434                 X_RECORD_LEVEL 			  VARCHAR2,
435                 X_LEDGER_ID                       NUMBER,
436                 X_CONTENT_OWNER_ID                NUMBER,
437                 X_ACCOUNT_SEGMENT_VALUE           VARCHAR2,
438                 X_TAX_PRECISION                   NUMBER,
439                 X_CALCULATION_LEVEL_CODE          VARCHAR2,
440                 X_ALLOW_RATE_OVERRIDE_FLAG        VARCHAR2,
444                 X_TAX_REGIME_CODE                 VARCHAR2,
441                 X_TAX_MAU                         NUMBER,
442                 X_TAX_CURRENCY_CODE               VARCHAR2,
443                 X_TAX_CLASS                       VARCHAR2,
445                 X_TAX                             VARCHAR2,
446                 X_TAX_STATUS_CODE                 VARCHAR2,
447                 X_TAX_RATE_CODE                   VARCHAR2,
448                 X_ROUNDING_RULE_CODE              VARCHAR2,
449                 X_AMT_INCL_TAX_FLAG               VARCHAR2,
450                 X_RECORD_TYPE_CODE                VARCHAR2,
451                 X_CREATION_DATE                   DATE,
452                 X_CREATED_BY                      NUMBER,
453                 X_LAST_UPDATED_BY                 NUMBER,
454                 X_LAST_UPDATE_DATE                DATE,
455                 X_LAST_UPDATE_LOGIN               NUMBER,
456                 X_ATTRIBUTE_CATEGORY              VARCHAR2,
457                 X_ATTRIBUTE1                      VARCHAR2,
458                 X_ATTRIBUTE2                      VARCHAR2,
459                 X_ATTRIBUTE3                      VARCHAR2,
460                 X_ATTRIBUTE4                      VARCHAR2,
461                 X_ATTRIBUTE5                      VARCHAR2,
462                 X_ATTRIBUTE6                      VARCHAR2,
463                 X_ATTRIBUTE7                      VARCHAR2,
464                 X_ATTRIBUTE8                      VARCHAR2,
465                 X_ATTRIBUTE9                      VARCHAR2,
466                 X_ATTRIBUTE10                     VARCHAR2,
467                 X_ATTRIBUTE11                     VARCHAR2,
468                 X_ATTRIBUTE12                     VARCHAR2,
469                 X_ATTRIBUTE13                     VARCHAR2,
470                 X_ATTRIBUTE14                     VARCHAR2,
471                 X_ATTRIBUTE15                     VARCHAR2,
472                 X_ALLOW_ROUNDING_OVERRIDE_FLAG	  VARCHAR2)  IS
473     CURSOR C1 IS
474       SELECT *
475       FROM ZX_ACCOUNT_RATES
479       AND  (tax_class = X_TAX_CLASS OR
476       WHERE ledger_id = X_LEDGER_ID
477       AND   content_owner_id = X_CONTENT_OWNER_ID
478       AND   account_segment_value is null
480             (tax_class IS NULL AND X_TAX_CLASS IS NULL ))
481       FOR UPDATE OF tax_currency_code NOWAIT;
482 
483     CURSOR C2 IS
484       SELECT *
485       FROM ZX_ACCOUNT_RATES
486       WHERE ledger_id = X_LEDGER_ID
487         AND content_owner_id = X_CONTENT_OWNER_ID
488         AND account_segment_value = X_ACCOUNT_SEGMENT_VALUE
489         AND  (tax_class = X_TAX_CLASS OR
490             (tax_class IS NULL AND X_TAX_CLASS IS NULL ))
491 
492 
493       FOR UPDATE OF tax_currency_code NOWAIT;
494 
495     Recinfo1 C1%ROWTYPE;
496     Recinfo2 C2%ROWTYPE;
497   BEGIN
498 
499     IF X_RECORD_LEVEL = 'LEDGER' THEN
500       OPEN C1;
501       FETCH C1 INTO Recinfo1;
502        IF (C1%NOTFOUND) THEN
503          CLOSE C1;
504            FND_MESSAGE.set_name('FND', 'FORM_RECORD_DELETED');
505            APP_EXCEPTION.raise_exception;
506         END IF;
507       CLOSE C1;
508 
509       IF (    (Recinfo1.ledger_id = X_LEDGER_ID)
510   	  AND (Recinfo1.content_owner_id = X_CONTENT_OWNER_ID)
511 	  AND ((Recinfo1.account_segment_value = X_ACCOUNT_SEGMENT_VALUE)
512                       OR (X_ACCOUNT_SEGMENT_VALUE IS NULL AND X_ACCOUNT_SEGMENT_VALUE IS NULL))
513 	  AND (Recinfo1.tax_precision = X_TAX_PRECISION)
514 	  AND (Recinfo1.calculation_level_code = X_CALCULATION_LEVEL_CODE)
515 	  AND (Recinfo1.allow_rate_override_flag = X_ALLOW_RATE_OVERRIDE_FLAG)
516 	        OR (Recinfo1.allow_rate_override_flag IS NULL AND X_ALLOW_RATE_OVERRIDE_FLAG IS NULL)
517 	  AND (   (Recinfo1.tax_mau = X_TAX_MAU)
518 	       OR (    (Recinfo1.tax_mau IS NULL)
519 		 AND (X_TAX_MAU IS NULL)))
520 	  AND (   (Recinfo1.tax_currency_code = X_TAX_CURRENCY_CODE)
521 	       OR (    (Recinfo1.tax_currency_code IS NULL)
522 	  	 AND (X_TAX_CURRENCY_CODE IS NULL)))
523 	  AND (   (Recinfo1.tax_class = X_TAX_CLASS)
524 	       OR (    (Recinfo1.tax_class IS NULL)
525 	  	 AND (X_TAX_CLASS IS NULL)))
526 	  AND ((Recinfo1.tax_regime_code = X_TAX_REGIME_CODE)
527              OR (  X_TAX_REGIME_CODE IS NULL
528              AND Recinfo1.tax_regime_code IS NULL) )
529 	  AND ((Recinfo1.tax = X_TAX)
530              OR (  X_TAX IS NULL
531              AND Recinfo1.tax IS NULL) )
532 	  AND ((Recinfo1.tax_status_code = X_TAX_STATUS_CODE)
533              OR (X_TAX_STATUS_CODE IS NULL
534              AND Recinfo1.tax_status_code IS NULL) )
535 	  AND ((Recinfo1.tax_rate_code = X_TAX_RATE_CODE)
536              OR (X_TAX_RATE_CODE IS NULL
537              AND Recinfo1.tax_rate_code IS NULL) )
538 	  AND (   (Recinfo1.rounding_rule_code = X_ROUNDING_RULE_CODE)
539 	       OR (    (Recinfo1.rounding_rule_code IS NULL)
543 	  	 AND (X_AMT_INCL_TAX_FLAG IS NULL)))
540 	  	 AND (X_ROUNDING_RULE_CODE IS NULL)))
541 	  AND (   (Recinfo1.amt_incl_tax_flag = X_AMT_INCL_TAX_FLAG)
542 	       OR (    (Recinfo1.amt_incl_tax_flag IS NULL)
544 	  AND (   (Recinfo1.record_type_code = X_RECORD_TYPE_CODE)
545 	       OR (    (Recinfo1.record_type_code IS NULL)
546 	  	 AND (X_RECORD_TYPE_CODE IS NULL)))
547 	  AND (   (Recinfo1.attribute_category = X_ATTRIBUTE_CATEGORY)
548 	       OR (    (Recinfo1.attribute_category IS NULL)
549 	  	 AND (X_ATTRIBUTE_CATEGORY IS NULL)))
550 	  AND (   (Recinfo1.attribute1 = X_ATTRIBUTE1)
551 	       OR (    (Recinfo1.attribute1 IS NULL)
552 	  	 AND (X_ATTRIBUTE1 IS NULL)))
553 	  AND (   (Recinfo1.attribute2 = X_ATTRIBUTE2)
554 	       OR (    (Recinfo1.attribute2 IS NULL)
555 	  	 AND (X_ATTRIBUTE2 IS NULL)))
556 	  AND (   (Recinfo1.attribute3 = X_ATTRIBUTE3)
557 	       OR (    (Recinfo1.attribute3 IS NULL)
558 	 	 AND (X_ATTRIBUTE3 IS NULL)))
559 	  AND (   (Recinfo1.attribute4 = X_ATTRIBUTE4)
560 	       OR (    (Recinfo1.attribute4 IS NULL)
561 	  	 AND (X_ATTRIBUTE4 IS NULL)))
562 	  AND (   (Recinfo1.attribute5 = X_ATTRIBUTE5)
563 	       OR (    (Recinfo1.attribute5 IS NULL)
564 	  	 AND (X_ATTRIBUTE5 IS NULL)))
565 	  AND (   (Recinfo1.attribute6 = X_ATTRIBUTE6)
566 	       OR (    (Recinfo1.attribute6 IS NULL)
567 		 AND (X_ATTRIBUTE6 IS NULL)))
568 	  AND (   (Recinfo1.attribute7 = X_ATTRIBUTE7)
569 	       OR (    (Recinfo1.attribute7 IS NULL)
570 		 AND (X_ATTRIBUTE7 IS NULL)))
571 	  AND (   (Recinfo1.attribute8 = X_ATTRIBUTE8)
572 	       OR (    (Recinfo1.attribute8 IS NULL)
573 		 AND (X_ATTRIBUTE8 IS NULL)))
574 	  AND (   (Recinfo1.attribute9 = X_ATTRIBUTE9)
575 	       OR (    (Recinfo1.attribute9 IS NULL)
576 	  	 AND (X_ATTRIBUTE9 IS NULL)))
577 	  AND (   (Recinfo1.attribute10 = X_ATTRIBUTE10)
578 	       OR (    (Recinfo1.attribute10 IS NULL)
579 		 AND (X_ATTRIBUTE10 IS NULL)))
580 	  AND (   (Recinfo1.attribute11 = X_ATTRIBUTE11)
581 	       OR (    (Recinfo1.attribute11 IS NULL)
582 		 AND (X_ATTRIBUTE11 IS NULL)))
583 	  AND (   (Recinfo1.attribute12 = X_ATTRIBUTE12)
584 	       OR (    (Recinfo1.attribute12 IS NULL)
585 		 AND (X_ATTRIBUTE12 IS NULL)))
586 	  AND (   (Recinfo1.attribute13 = X_ATTRIBUTE13)
587 	       OR (    (Recinfo1.attribute13 IS NULL)
588 	  	 AND (X_ATTRIBUTE13 IS NULL)))
589 	  AND (   (Recinfo1.attribute14 = X_ATTRIBUTE14)
590 	       OR (    (Recinfo1.attribute14 IS NULL)
591 		 AND (X_ATTRIBUTE14 IS NULL)))
592 	  AND (   (Recinfo1.attribute15 = X_ATTRIBUTE15)
593 	       OR (    (Recinfo1.attribute15 IS NULL)
594 		 AND (X_ATTRIBUTE15 IS NULL)))
595 	  AND (   (Recinfo1.allow_rounding_override_flag = X_ALLOW_ROUNDING_OVERRIDE_FLAG)
596 	       OR (    (Recinfo1.allow_rounding_override_flag IS NULL)
597 		 AND (X_ALLOW_ROUNDING_OVERRIDE_FLAG IS NULL)))
598          ) THEN
599 
600         RETURN;
601       ELSE
602         FND_MESSAGE.set_name('FND', 'FORM_RECORD_CHANGED');
603         APP_EXCEPTION.raise_exception;
604       END IF;
605 
606 
607     ELSIF X_RECORD_LEVEL = 'ACCOUNT' THEN
608       OPEN C2;
609       FETCH C2 INTO Recinfo2;
610        IF (C2%NOTFOUND) THEN
611          CLOSE C2;
612            FND_MESSAGE.set_name('FND', 'FORM_RECORD_DELETED');
613            APP_EXCEPTION.raise_exception;
614         END IF;
615       CLOSE C2;
616 
617 
618       IF (    (Recinfo2.ledger_id = X_LEDGER_ID)
619   	  AND (Recinfo2.content_owner_id = X_CONTENT_OWNER_ID)
620 	  AND (Recinfo2.account_segment_value = X_ACCOUNT_SEGMENT_VALUE)
621 	  AND (Recinfo2.tax_precision = X_TAX_PRECISION)
622 	  AND (Recinfo2.calculation_level_code = X_CALCULATION_LEVEL_CODE)
623 	  AND ((Recinfo2.allow_rate_override_flag = X_ALLOW_RATE_OVERRIDE_FLAG)
624 	        OR (Recinfo2.allow_rate_override_flag IS NULL AND X_ALLOW_RATE_OVERRIDE_FLAG IS NULL))
625 	  AND (   (Recinfo2.tax_mau = X_TAX_MAU)
626 	       OR (    (Recinfo2.tax_mau IS NULL)
630 	  	 AND (X_TAX_CURRENCY_CODE IS NULL)))
627 		 AND (X_TAX_MAU IS NULL)))
628 	  AND (   (Recinfo2.tax_currency_code = X_TAX_CURRENCY_CODE)
629 	       OR (    (Recinfo2.tax_currency_code IS NULL)
631 	  AND (   (Recinfo2.tax_class = X_TAX_CLASS)
632 	       OR (    (Recinfo2.tax_class IS NULL)
633 	  	 AND (X_TAX_CLASS IS NULL)))
634 	  AND ((Recinfo2.tax_regime_code = X_TAX_REGIME_CODE)
635              OR (  X_TAX_REGIME_CODE IS NULL
636              AND Recinfo2.tax_regime_code IS NULL) )
637 	  AND ((Recinfo2.tax = X_TAX)
638              OR (  X_TAX IS NULL
639              AND Recinfo2.tax IS NULL) )
640 	  AND ((Recinfo2.tax_status_code = X_TAX_STATUS_CODE)
641              OR (X_TAX_STATUS_CODE IS NULL
642              AND Recinfo2.tax_status_code IS NULL) )
643 	  AND ((Recinfo2.tax_rate_code = X_TAX_RATE_CODE)
644              OR (X_TAX_RATE_CODE IS NULL
645              AND Recinfo2.tax_rate_code IS NULL) )
646 	  AND ((Recinfo2.rounding_rule_code = X_ROUNDING_RULE_CODE)
647 	       OR (    (Recinfo2.rounding_rule_code IS NULL)
648 	  	 AND (X_ROUNDING_RULE_CODE IS NULL)))
649 	  AND (   (Recinfo2.amt_incl_tax_flag = X_AMT_INCL_TAX_FLAG)
650 	       OR (    (Recinfo2.amt_incl_tax_flag IS NULL)
651 	  	 AND (X_AMT_INCL_TAX_FLAG IS NULL)))
652 	  AND (   (Recinfo2.record_type_code = X_RECORD_TYPE_CODE)
653 	       OR (    (Recinfo2.record_type_code IS NULL)
654 	  	 AND (X_RECORD_TYPE_CODE IS NULL)))
655 	  AND (   (Recinfo2.attribute_category = X_ATTRIBUTE_CATEGORY)
656 	       OR (    (Recinfo2.attribute_category IS NULL)
657 	  	 AND (X_ATTRIBUTE_CATEGORY IS NULL)))
658 	  AND (   (Recinfo2.attribute1 = X_ATTRIBUTE1)
659 	       OR (    (Recinfo2.attribute1 IS NULL)
663 	  	 AND (X_ATTRIBUTE2 IS NULL)))
660 	  	 AND (X_ATTRIBUTE1 IS NULL)))
661 	  AND (   (Recinfo2.attribute2 = X_ATTRIBUTE2)
662 	       OR (    (Recinfo2.attribute2 IS NULL)
664 	  AND (   (Recinfo2.attribute3 = X_ATTRIBUTE3)
665 	       OR (    (Recinfo2.attribute3 IS NULL)
666 	 	 AND (X_ATTRIBUTE3 IS NULL)))
667 	  AND (   (Recinfo2.attribute4 = X_ATTRIBUTE4)
668 	       OR (    (Recinfo2.attribute4 IS NULL)
669 	  	 AND (X_ATTRIBUTE4 IS NULL)))
670 	  AND (   (Recinfo2.attribute5 = X_ATTRIBUTE5)
671 	       OR (    (Recinfo2.attribute5 IS NULL)
672 	  	 AND (X_ATTRIBUTE5 IS NULL)))
673 	  AND (   (Recinfo2.attribute6 = X_ATTRIBUTE6)
674 	       OR (    (Recinfo2.attribute6 IS NULL)
675 		 AND (X_ATTRIBUTE6 IS NULL)))
676 	  AND (   (Recinfo2.attribute7 = X_ATTRIBUTE7)
677 	       OR (    (Recinfo2.attribute7 IS NULL)
678 		 AND (X_ATTRIBUTE7 IS NULL)))
679 	  AND (   (Recinfo2.attribute8 = X_ATTRIBUTE8)
680 	       OR (    (Recinfo2.attribute8 IS NULL)
681 		 AND (X_ATTRIBUTE8 IS NULL)))
682 	  AND (   (Recinfo2.attribute9 = X_ATTRIBUTE9)
683 	       OR (    (Recinfo2.attribute9 IS NULL)
684 	  	 AND (X_ATTRIBUTE9 IS NULL)))
685 	  AND (   (Recinfo2.attribute10 = X_ATTRIBUTE10)
686 	       OR (    (Recinfo2.attribute10 IS NULL)
687 		 AND (X_ATTRIBUTE10 IS NULL)))
688 	  AND (   (Recinfo2.attribute11 = X_ATTRIBUTE11)
689 	       OR (    (Recinfo2.attribute11 IS NULL)
690 		 AND (X_ATTRIBUTE11 IS NULL)))
691 	  AND (   (Recinfo2.attribute12 = X_ATTRIBUTE12)
692 	       OR (    (Recinfo2.attribute12 IS NULL)
693 		 AND (X_ATTRIBUTE12 IS NULL)))
694 	  AND (   (Recinfo2.attribute13 = X_ATTRIBUTE13)
695 	       OR (    (Recinfo2.attribute13 IS NULL)
696 	  	 AND (X_ATTRIBUTE13 IS NULL)))
697 	  AND (   (Recinfo2.attribute14 = X_ATTRIBUTE14)
698 	       OR (    (Recinfo2.attribute14 IS NULL)
699 		 AND (X_ATTRIBUTE14 IS NULL)))
700 	  AND (   (Recinfo2.attribute15 = X_ATTRIBUTE15)
701 	       OR (    (Recinfo2.attribute15 IS NULL)
702 		 AND (X_ATTRIBUTE15 IS NULL)))
703 	  AND (   (Recinfo2.allow_rounding_override_flag = X_ALLOW_ROUNDING_OVERRIDE_FLAG)
704 	       OR (    (x_allow_rounding_override_flag IS NULL)
705 		 AND (X_ALLOW_ROUNDING_OVERRIDE_FLAG IS NULL)))
706          ) THEN
707 
708         RETURN;
709       ELSE
710         FND_MESSAGE.set_name('FND', 'FORM_RECORD_CHANGED');
711         APP_EXCEPTION.raise_exception;
712       END IF;
713     END IF;
714 
715 
716   END lock_row;
717 
718 
719 END zx_account_tax_rates_pkg;