DBA Data[Home] [Help]

PACKAGE BODY: APPS.HZ_TAX_ASSIGNMENT_PUB

Source


1 package body HZ_TAX_ASSIGNMENT_PUB as
2 /* $Header: ARHTLASB.pls 115.14 2003/09/30 23:50:41 acng ship $ */
3 
4 G_PKG_NAME CONSTANT VARCHAR2(30) := 'HZ_TAX_ASSIGNMENT_PUB' ;
5 
6 procedure do_create_update_loc_assign(
7         p_location_id                  IN      NUMBER,
8         p_create_update_flag           IN      VARCHAR2,
9         x_loc_id                       OUT     NOCOPY NUMBER,
10         x_return_status                IN OUT  NOCOPY VARCHAR2,  /* Changed from OUT to IN OUT*/
11         p_lock_flag                    IN      VARCHAR2 :=  FND_API.G_FALSE
12 ) IS
13 
14    l_org_id                     NUMBER;
15    l_count                      NUMBER;
16    l_rowid                      ROWID  := NULL;
17 
18    l_city                       VARCHAR2(60);
19    l_state                      VARCHAR2(60);
20    l_country                    VARCHAR2(60);
21    l_county                     VARCHAR2(60);
22    l_province                   VARCHAR2(60);
23    l_postal_code                VARCHAR2(60);
24    l_attribute1                 VARCHAR2(150);
25    l_attribute2                 VARCHAR2(150);
26    l_attribute3                 VARCHAR2(150);
27    l_attribute4                 VARCHAR2(150);
28    l_attribute5                 VARCHAR2(150);
29    l_attribute6                 VARCHAR2(150);
30    l_attribute7                 VARCHAR2(150);
31    l_attribute8                 VARCHAR2(150);
32    l_attribute9                 VARCHAR2(150);
33    l_attribute10                VARCHAR2(150);
34    l_wh_update_date             DATE;
35 
36    l_is_remit_to_location       VARCHAR2(1) := 'N';  /* New local param for remit to addr*/
37 
38    db_city                       VARCHAR2(60);
39    db_state                      VARCHAR2(60);
40    db_country                    VARCHAR2(60);
41    db_county                     VARCHAR2(60);
42    db_province                   VARCHAR2(60);
43    db_postal_code                VARCHAR2(60);
44    db_attribute1                 VARCHAR2(150);
45    db_attribute2                 VARCHAR2(150);
46    db_attribute3                 VARCHAR2(150);
47    db_attribute4                 VARCHAR2(150);
48    db_attribute5                 VARCHAR2(150);
49    db_attribute6                 VARCHAR2(150);
50    db_attribute7                 VARCHAR2(150);
51    db_attribute8                 VARCHAR2(150);
52    db_attribute9                 VARCHAR2(150);
53    db_attribute10                VARCHAR2(150);
54    db_wh_update_date             DATE;
55 
56 -- ACNG add call to location profile: BEGIN
57     l_location_profile_rec  hz_location_profile_pvt.location_profile_rec_type;
58     l_actual_content_source VARCHAR2(30);
59     l_return_status         VARCHAR2(30);
60     l_msg_count             NUMBER;
61     l_msg_data              VARCHAR2(2000);
62     l_allow_update_std        VARCHAR2(1);
63     l_date_validated          DATE;
64     l_validation_status_code  VARCHAR2(30);
65 -- ACNG add call to location profile: END
66 
67 BEGIN
68 
69 	select * 			/* Bug Fix 2020712 */
70 	into  arp_standard.sysparm
71 	from  ar_system_parameters;
72 
73   -- check org context
74   -- if org context is not available then no record will be created in
75   -- hz_loc_assignments table.
76 
77       SELECT
78         NVL(TO_NUMBER(DECODE(SUBSTRB(USERENV('CLIENT_INFO'),1,1), ' ', NULL,
79                          SUBSTRB(USERENV('CLIENT_INFO'),1,10))),-99)
80       INTO l_org_id
81       FROM dual;
82 
83 /*
84       IF l_org_id is NULL or l_org_id = -99 THEN
85 
86          FND_MESSAGE.SET_NAME('AR', 'HZ_API_MISSING_COLUMN');
87          FND_MESSAGE.SET_TOKEN('COLUMN', 'org_id');
88          FND_MSG_PUB.ADD;
89          RAISE FND_API.G_EXC_ERROR;
90      END IF;
91 */
92 
93   -- check the required fields:
94      IF p_location_id IS NULL OR
95         p_location_id = FND_API.G_MISS_NUM  THEN
96 
97           FND_MESSAGE.SET_NAME('AR', 'HZ_API_MISSING_COLUMN');
98           FND_MESSAGE.SET_TOKEN('COLUMN', 'p_location_id');
99           FND_MSG_PUB.ADD;
100           RAISE FND_API.G_EXC_ERROR;
101      END IF;
102 
103   -- IF p_lock_flag is true then
104   -- Check whether location record has been updated by another user. If not, lock it.
105   -- IF p_loc_flag is not true then the location has been locked already.
106 
107   IF p_lock_flag = 'T' OR p_lock_flag = FND_API.G_TRUE  THEN
108 
109      -- get location components
110      BEGIN
111        SELECT country, city,  state, county, province,  postal_code,
112               attribute1, attribute2, attribute3, attribute4, attribute5,
113               attribute6, attribute7, attribute8, attribute9, attribute10,
114               wh_update_date
115             , actual_content_source
116             , date_validated
117             , validation_status_code
118        INTO   l_country, l_city, l_state, l_county, l_province, l_postal_code,
119               l_attribute1,l_attribute2,l_attribute3,l_attribute4,l_attribute5,
120               l_attribute6,l_attribute7,l_attribute8,l_attribute9,l_attribute10,
121               l_wh_update_date
122             , l_actual_content_source
123             , l_date_validated
124             , l_validation_status_code
125        FROM   HZ_LOCATIONS
126        WHERE  location_id = p_location_id
127        FOR UPDATE OF location_id NOWAIT;
128 
129        EXCEPTION WHEN NO_DATA_FOUND THEN
130                          FND_MESSAGE.SET_NAME('AR', 'HZ_API_NO_RECORD');
131                          FND_MESSAGE.SET_TOKEN('RECORD', 'hz_locations');
132                          FND_MESSAGE.SET_TOKEN('VALUE', to_char(p_location_id));
133                          FND_MSG_PUB.ADD;
134                          x_return_status := FND_API.G_RET_STS_ERROR;
135 
136       END;  -- end of SELECT
137 
138   ELSE -- do not lock the location record
139        -- get location components
140 
141      BEGIN
142        SELECT country, city,  state, county, province,  postal_code,
143               attribute1, attribute2, attribute3, attribute4, attribute5,
144               attribute6, attribute7, attribute8, attribute9, attribute10,
145               wh_update_date
146             , actual_content_source
147        INTO   l_country, l_city, l_state, l_county, l_province, l_postal_code,
148               l_attribute1,l_attribute2,l_attribute3,l_attribute4,l_attribute5,
149               l_attribute6,l_attribute7,l_attribute8,l_attribute9,l_attribute10,
150               l_wh_update_date
151             , l_actual_content_source
152        FROM   HZ_LOCATIONS
153        WHERE  location_id = p_location_id;
154 
155        EXCEPTION WHEN NO_DATA_FOUND THEN
156                          FND_MESSAGE.SET_NAME('AR', 'HZ_API_NO_RECORD');
157                          FND_MESSAGE.SET_TOKEN('RECORD', 'hz_locations');
158                          FND_MESSAGE.SET_TOKEN('VALUE', to_char(p_location_id));
159                          FND_MSG_PUB.ADD;
160                          x_return_status := FND_API.G_RET_STS_ERROR;
161 
162       END;  -- end of SELECT ;
163 
164   END IF ;
165 
166 -- ACNG
167     -- raise error if the update location profile option is turned off and
168     -- the address has been validated before
169     l_allow_update_std := nvl(fnd_profile.value('HZ_UPDATE_STD_ADDRESS'), 'Y');
170     IF(l_allow_update_std = 'N' AND
171        l_date_validated IS NOT NULL AND
172        l_validation_status_code IS NOT NULL) THEN
173       FND_MESSAGE.SET_NAME('AR', 'HZ_LOC_NO_UPDATE');
174       FND_MSG_PUB.ADD;
175       RAISE fnd_api.g_exc_error;
176     END IF;
177 -- ACNG
178 
179         db_country      :=      l_country;
180         db_city         :=      l_city ;
181         db_state        :=      l_state ;
182         db_county       :=      l_county ;
183         db_province     :=      l_province;
184         db_postal_code  :=      l_postal_code;
185         db_attribute1   :=      l_attribute1;
186         db_attribute2   :=      l_attribute2;
187         db_attribute3   :=      l_attribute3;
188         db_attribute4   :=      l_attribute4;
189         db_attribute5   :=      l_attribute5;
190         db_attribute6   :=      l_attribute6;
191         db_attribute7   :=      l_attribute7;
192         db_attribute8   :=      l_attribute8;
193         db_attribute9   :=      l_attribute9;
194         db_attribute10  :=      l_attribute10;
195         db_wh_update_date:=     l_wh_update_date;
196 
197   --
198   -- Chevking whether this location is for Remit-To Address or not
199   --
200   BEGIN
201     SELECT  'Y'
202     INTO    l_is_remit_to_location
203     FROM    DUAL
204     WHERE   EXISTS ( SELECT  1
205                      FROM    hz_party_sites ps
206                      WHERE   ps.location_id = p_location_id
207                      AND     ps.party_id = -1);
208   EXCEPTION
209     WHEN NO_DATA_FOUND THEN
210       NULL;
211   END;
212 
213   -- call tax package to populate loc_id for a location
214 
215      -- run validation for default country.
216      -- Added additional condition to check whether
217      -- this is for Remit-To Address or not.
218   IF l_country = arp_standard.sysparm.default_country AND
219      l_is_remit_to_location <> 'Y' THEN
220 
221         arp_adds.Set_Location_CCID(l_country,
222                                    l_city,
223                                    l_state,
224                                    l_county,
225                                    l_province,
226                                    l_postal_code,
227                                    l_attribute1,
228                                    l_attribute2,
229                                    l_attribute3,
230                                    l_attribute4,
231                                    l_attribute5,
232                                    l_attribute6,
233                                    l_attribute7,
234                                    l_attribute8,
235                                    l_attribute9,
236                                    l_attribute10,
237                                    x_loc_id,
238                                    p_location_id );
239 
240 --Update location attributes if the values in the database do not match
241 --with the values returned by the above procedure.
242 
243 	IF         db_country      =      l_country
244 	AND        db_city         =      l_city
245 	AND        db_state        =      l_state
246 	AND        db_county       =      l_county
247 	AND        db_province     =      l_province
248 	AND        db_postal_code  =      l_postal_code
249 	AND        db_attribute1   =      l_attribute1
250 	AND        db_attribute2   =      l_attribute2
251 	AND        db_attribute3   =      l_attribute3
252 	AND        db_attribute4   =      l_attribute4
253 	AND        db_attribute5   =      l_attribute5
254 	AND        db_attribute6   =      l_attribute6
255 	AND        db_attribute7   =      l_attribute7
256 	AND        db_attribute8   =      l_attribute8
257 	AND        db_attribute9   =      l_attribute9
258 	AND        db_attribute10  =      l_attribute10 THEN
259 
260 		NULL;
261 	ELSE
262 		UPDATE hz_locations SET
263         	country      =      l_country,
264         	city         =      l_city ,
265         	state        =      l_state ,
266         	county       =      l_county ,
267         	province     =      l_province,
268         	postal_code  =      l_postal_code,
269         	attribute1   =      l_attribute1,
270         	attribute2   =      l_attribute2,
271         	attribute3   =      l_attribute3,
272         	attribute4   =      l_attribute4,
273         	attribute5   =      l_attribute5,
274         	attribute6   =      l_attribute6,
275         	attribute7   =      l_attribute7,
276         	attribute8   =      l_attribute8,
277         	attribute9   =      l_attribute9,
278         	attribute10  =      l_attribute10
279 		WHERE  location_id = p_location_id;
280 
281 -- ACNG add call to location profile: BEGIN
282 
283    IF(NOT( db_country      =      l_country
284        AND db_city         =      l_city
285        AND db_state        =      l_state
286        AND db_county       =      l_county
287        AND db_province     =      l_province
288        AND db_postal_code  =      l_postal_code)) THEN
289 
290      l_location_profile_rec.location_profile_id := NULL;
291      l_location_profile_rec.location_id := p_location_id;
292      l_location_profile_rec.actual_content_source := l_actual_content_source;
293      l_location_profile_rec.effective_start_date := NULL;
294      l_location_profile_rec.effective_end_date := NULL;
295      l_location_profile_rec.date_validated := NULL;
296      l_location_profile_rec.city := l_city;
297      l_location_profile_rec.postal_code := l_postal_code;
298      l_location_profile_rec.county := l_county;
299      l_location_profile_rec.country := l_country;
300      l_location_profile_rec.address1 := NULL;
301      l_location_profile_rec.address2 := NULL;
302      l_location_profile_rec.address3 := NULL;
303      l_location_profile_rec.address4 := NULL;
304 
305      IF(l_state IS NOT NULL) THEN
306        l_location_profile_rec.prov_state_admin_code := l_state;
307      ELSIF(l_province IS NOT NULL) THEN
308        l_location_profile_rec.prov_state_admin_code := l_province;
309      ELSE
310        l_location_profile_rec.prov_state_admin_code := NULL;
311      END IF;
312 
313      l_return_status := FND_API.G_RET_STS_SUCCESS;
314 
315      hz_location_profile_pvt.update_location_profile (
316        p_location_profile_rec      => l_location_profile_rec
317       ,x_return_status             => l_return_status
318       ,x_msg_count                 => l_msg_count
319       ,x_msg_data                  => l_msg_data );
320 
321      IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
322        RAISE fnd_api.g_exc_error;
323      ELSIF(l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
324        RAISE fnd_api.g_exc_unexpected_error;
325      END IF;
326 
327    END IF;
328 
329 -- ACNG add call to location profile: END
330 
331 	END IF;
332 
333 
334 
335      ELSE -- not default country
336                 x_loc_id := NULL;
337 
338     END IF; -- default country
339 
340 
341 /******** commented out as control does not come here, it goes thru V2 API
342   IF p_create_update_flag = 'C' THEN
343 
344      -- check if the combination of location_id and org_id exists in database,
345      -- if it exists, then tax group has created a record for a party without
346      -- any customer account site. we just update the loc_id accordingly for
347      -- that record.
348 
349      BEGIN
350        l_count := 0;
351 
352        SELECT count(*)
353        INTO l_count
354        FROM hz_loc_assignments
355        WHERE location_id = p_location_id
356        AND  nvl(org_id, l_org_id) = l_org_id;
357 
358        if l_count = 0 then
359 
360          -- insert loc_id for a new location:
361          HZ_LOC_ASSIGNMENTS_PKG.INSERT_ROW(
362           X_Rowid => l_rowid,
363           X_LOCATION_ID => p_location_id,
364           X_LOC_ID => x_loc_id,
365           X_ORG_ID => l_org_id,
366           X_CREATED_BY => hz_utility_pub.CREATED_BY,
367           X_CREATION_DATE => hz_utility_pub.CREATION_DATE,
368           X_LAST_UPDATE_LOGIN => hz_utility_pub.LAST_UPDATE_LOGIN,
369           X_LAST_UPDATE_DATE => hz_utility_pub.LAST_UPDATE_DATE,
370           X_LAST_UPDATED_BY => hz_utility_pub.LAST_UPDATED_BY,
371           X_REQUEST_ID => hz_utility_pub.REQUEST_ID,
372           X_PROGRAM_APPLICATION_ID => hz_utility_pub.PROGRAM_APPLICATION_ID,
373           X_PROGRAM_ID => hz_utility_pub.PROGRAM_ID,
374           X_PROGRAM_UPDATE_DATE => hz_utility_pub.PROGRAM_UPDATE_DATE,
375           X_WH_UPDATE_DATE => l_wh_update_date
376           );
377 
378         else -- update loc_id for an existing location.
379 
380          --Select rowid.
381          select rowid INTO l_rowid FROM hz_loc_assignments
382          WHERE location_id = p_location_id
383          AND  nvl(org_id, l_org_id) = l_org_id;
384 
385          HZ_LOC_ASSIGNMENTS_PKG.UPDATE_ROW(
386           X_Rowid => l_rowid,
387           X_LOCATION_ID => p_location_id,
388           X_LOC_ID => x_loc_id,
389           X_ORG_ID => l_org_id,
390           X_CREATED_BY => FND_API.G_MISS_NUM,
391           X_CREATION_DATE => FND_API.G_MISS_DATE,
392           X_LAST_UPDATE_LOGIN => hz_utility_pub.LAST_UPDATE_LOGIN,
393           X_LAST_UPDATE_DATE => hz_utility_pub.LAST_UPDATE_DATE,
394           X_LAST_UPDATED_BY => hz_utility_pub.LAST_UPDATED_BY,
395           X_REQUEST_ID => hz_utility_pub.REQUEST_ID,
396           X_PROGRAM_APPLICATION_ID => hz_utility_pub.PROGRAM_APPLICATION_ID,
397           X_PROGRAM_ID => hz_utility_pub.PROGRAM_ID,
398           X_PROGRAM_UPDATE_DATE => hz_utility_pub.PROGRAM_UPDATE_DATE,
399           X_WH_UPDATE_DATE => l_wh_update_date
400         );
401       end if;
402     END; -- end of p_create_update_flag = 'C'
403 
404 
405   ELSIF p_create_update_flag = 'U' THEN
406 
407      --Select rowid.
408          select rowid INTO l_rowid FROM hz_loc_assignments
409          WHERE location_id = p_location_id
410          AND  nvl(org_id, l_org_id) = l_org_id;
411 
412     -- update loc_id for modified location
413 
414     HZ_LOC_ASSIGNMENTS_PKG.UPDATE_ROW(
415           X_Rowid => l_rowid,
416           X_LOCATION_ID => p_location_id,
417           X_LOC_ID => x_loc_id,
418           X_ORG_ID => l_org_id,
419           X_CREATED_BY => FND_API.G_MISS_NUM,
420           X_CREATION_DATE => FND_API.G_MISS_DATE,
421           X_LAST_UPDATE_LOGIN => hz_utility_pub.LAST_UPDATE_LOGIN,
422           X_LAST_UPDATE_DATE => hz_utility_pub.LAST_UPDATE_DATE,
423           X_LAST_UPDATED_BY => hz_utility_pub.LAST_UPDATED_BY,
424           X_REQUEST_ID => hz_utility_pub.REQUEST_ID,
425           X_PROGRAM_APPLICATION_ID => hz_utility_pub.PROGRAM_APPLICATION_ID,
426           X_PROGRAM_ID => hz_utility_pub.PROGRAM_ID,
427           X_PROGRAM_UPDATE_DATE => hz_utility_pub.PROGRAM_UPDATE_DATE,
428           X_WH_UPDATE_DATE => l_wh_update_date
429         );
430 
431   END IF;
432 ********************* commented out till here *******************/
433 
434 end do_create_update_loc_assign;
435 
436 procedure create_loc_assignment(
437         p_api_version                  IN      NUMBER,
438         p_init_msg_list                IN      VARCHAR2:= FND_API.G_FALSE,
439         p_commit                       IN      VARCHAR2:= FND_API.G_FALSE,
440         p_location_id                  IN      NUMBER,
441         x_return_status                IN OUT  NOCOPY VARCHAR2, /* Changed from OUT to IN OUT*/
442         x_msg_count                    OUT     NOCOPY NUMBER,
443         x_msg_data                     OUT     NOCOPY VARCHAR2,
444         x_loc_id                       OUT     NOCOPY NUMBER,
445         p_lock_flag                    IN      VARCHAR2 :=FND_API.G_FALSE
446 ) IS
447 
448    l_api_name          CONSTANT VARCHAR2(30)  := 'create loc assignment';
449    l_api_version       CONSTANT  NUMBER        := 1.0;
450    l_location_id       NUMBER := p_location_id;
451    APP_EXCEPTION	EXCEPTION;
452    PRAGMA EXCEPTION_INIT(APP_EXCEPTION, -20000);
453 BEGIN
454 --Standard start of API savepoint
455         SAVEPOINT create_loc_assignment_pub;
456 --Standard call to check for call compatibility.
457         IF NOT FND_API.Compatible_API_Call(
458                                         l_api_version,
459                                         p_api_version,
460                                         l_api_name,
461                                         G_PKG_NAME)
462         THEN
463                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
464         END IF;
465 
466 --Initialize message list if p_init_msg_list is set to TRUE.
467         IF FND_API.to_Boolean(p_init_msg_list) THEN
468                 FND_MSG_PUB.initialize;
469         END IF;
470 
471 --Initialize API return status to success.
472         x_return_status := FND_API.G_RET_STS_SUCCESS;
473 
474 
475 -- Call to business logic.
476 
477 /********* following code is remarked as everything is done through V2 API now
478 -- populate loc_id by calling tax package.
479         do_create_update_loc_assign( p_location_id,
480                                      'C',
481                                      x_loc_id,
482                                      x_return_status,
483                                      p_lock_flag);
484 ****************/
485 
486     -- code for doing everything thru V2 API
487     HZ_TAX_ASSIGNMENT_V2PUB.create_loc_assignment(
488         p_location_id                  => p_location_id,
489         p_lock_flag                    => p_lock_flag,
490         p_created_by_module            => 'TCA_V1_API',
491         p_application_id               => -222,
492         x_return_status                => x_return_status,
493         x_msg_count                    => x_msg_count,
494         x_msg_data                     => x_msg_data,
495         x_loc_id                       => x_loc_id
496 );
497 
498 
499 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
500                 RAISE FND_API.G_EXC_ERROR;
501 END IF;
502 
503 --Standard check of p_commit.
504         IF FND_API.to_Boolean(p_commit) THEN
505                 Commit;
506         END IF;
507 
508 --Standard call to get message count and if count is 1, get message info.
509         FND_MSG_PUB.Count_And_Get(
510                 p_encoded => FND_API.G_FALSE,
511                 p_count => x_msg_count,
512                 p_data  => x_msg_data);
513 EXCEPTION
514         WHEN FND_API.G_EXC_ERROR THEN
515                 ROLLBACK TO create_loc_assignment_pub;
516                 x_return_status := FND_API.G_RET_STS_ERROR;
517                 FND_MSG_PUB.Count_And_Get(
518                                 p_encoded => FND_API.G_FALSE,
519                                 p_count => x_msg_count,
520                                 p_data  => x_msg_data);
521 
522         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
523                 ROLLBACK TO create_loc_assignment_pub;
524                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
525                 FND_MSG_PUB.Count_And_Get(
526                                 p_encoded => FND_API.G_FALSE,
527                                 p_count => x_msg_count,
528                                 p_data  => x_msg_data);
529 
530         WHEN  APP_EXCEPTION THEN
531                 ROLLBACK TO create_loc_assignment_pub;
532                 x_return_status := FND_API.G_RET_STS_ERROR;
533                 FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
534                 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
535                 FND_MSG_PUB.ADD;
536  		FND_MSG_PUB.Count_And_Get(
537                 p_encoded => FND_API.G_FALSE,
538                                 p_count => x_msg_count,
539                                 p_data  => x_msg_data);
540         WHEN OTHERS THEN
541                 ROLLBACK TO create_loc_assignment_pub;
542                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
543 
544                 FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
545                 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
546                 FND_MSG_PUB.ADD;
547 
548  FND_MSG_PUB.Count_And_Get(
549                 p_encoded => FND_API.G_FALSE,
550                                 p_count => x_msg_count,
551                                 p_data  => x_msg_data);
552 
553 END create_loc_assignment;
554 
555 procedure update_loc_assignment(
556         p_api_version                  IN      NUMBER,
557         p_init_msg_list                IN      VARCHAR2:= FND_API.G_FALSE,
558         p_commit                       IN      VARCHAR2:= FND_API.G_FALSE,
559         p_location_id                  IN      NUMBER,
560         x_return_status                IN OUT  NOCOPY VARCHAR2, /* Changed from OUT to IN OUT*/
561         x_msg_count                    OUT     NOCOPY NUMBER,
562         x_msg_data                     OUT     NOCOPY VARCHAR2,
563         x_loc_id                       OUT     NOCOPY NUMBER,
564         p_lock_flag                    IN      VARCHAR2 :=FND_API.G_TRUE
565 ) IS
566 
567    l_api_name           CONSTANT VARCHAR2(30)  := 'update loc assignment';
568    l_api_version        CONSTANT  NUMBER        := 1.0;
569    l_location_id        NUMBER := p_location_id;
570    APP_EXCEPTION	EXCEPTION;
571    PRAGMA EXCEPTION_INIT(APP_EXCEPTION, -20000);
572 
573 BEGIN
574 --Standard start of API savepoint
575         SAVEPOINT update_loc_assignment_pub;
576 --Standard call to check for call compatibility.
577         IF NOT FND_API.Compatible_API_Call(
578                                         l_api_version,
579                                         p_api_version,
580                                         l_api_name,
581                                         G_PKG_NAME)
582         THEN
583                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
584         END IF;
585 
586 --Initialize message list if p_init_msg_list is set to TRUE.
587         IF FND_API.to_Boolean(p_init_msg_list) THEN
588                 FND_MSG_PUB.initialize;
589         END IF;
590 
591 --Initialize API return status to success.
592         x_return_status := FND_API.G_RET_STS_SUCCESS;
593 
594 
595 -- Call to business logic.
596 
597 /******** following code is remarked as everything is now done thru V2 API
598 -- populate loc_id by calling tax package.
599         do_create_update_loc_assign( l_location_id,
600                                      'U',
601                                      x_loc_id,
602                                      x_return_status,
603                                      p_lock_flag );
604 *****************/
605 
606     -- code for doing everything by V2 API
607     HZ_TAX_ASSIGNMENT_V2PUB.update_loc_assignment(
608         p_location_id                  => l_location_id,
609         p_lock_flag                    => p_lock_flag,
610         p_created_by_module            => 'TCA_V1_API',
611         p_application_id               => -222,
612         x_return_status                => x_return_status,
613         x_msg_count                    => x_msg_count,
614         x_msg_data                     => x_msg_data,
615         x_loc_id                       => x_loc_id
616 );
617 
618 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
619                 RAISE FND_API.G_EXC_ERROR;
620 END IF;
621 
622 --Standard check of p_commit.
623         IF FND_API.to_Boolean(p_commit) THEN
624                 Commit;
625         END IF;
626 
627 --Standard call to get message count and if count is 1, get message info.
628         FND_MSG_PUB.Count_And_Get(
629                 p_encoded => FND_API.G_FALSE,
630                 p_count => x_msg_count,
631                 p_data  => x_msg_data);
632 EXCEPTION
633         WHEN FND_API.G_EXC_ERROR THEN
634                 ROLLBACK TO update_loc_assignment_pub;
635                 x_return_status := FND_API.G_RET_STS_ERROR;
636                 FND_MSG_PUB.Count_And_Get(
637                                 p_encoded => FND_API.G_FALSE,
638                                 p_count => x_msg_count,
639                                 p_data  => x_msg_data);
640 
641         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
642                 ROLLBACK TO update_loc_assignment_pub;
643                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
644                 FND_MSG_PUB.Count_And_Get(
645                                 p_encoded => FND_API.G_FALSE,
646                                 p_count => x_msg_count,
647                                 p_data  => x_msg_data);
648 
649         WHEN  APP_EXCEPTION THEN
650                 ROLLBACK TO update_loc_assignment_pub;
651                 x_return_status := FND_API.G_RET_STS_ERROR;
652                 FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
653                 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
654                 FND_MSG_PUB.ADD;
655  		FND_MSG_PUB.Count_And_Get(
656                 p_encoded => FND_API.G_FALSE,
657                                 p_count => x_msg_count,
658                                 p_data  => x_msg_data);
659 
660         WHEN OTHERS THEN
661                 ROLLBACK TO update_loc_assignment_pub;
662                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
663 
664                 FND_MESSAGE.SET_NAME('AR', 'HZ_API_OTHERS_EXCEP');
665                 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
666                 FND_MSG_PUB.ADD;
667 
668  FND_MSG_PUB.Count_And_Get(
669                 p_encoded => FND_API.G_FALSE,
670                                 p_count => x_msg_count,
671                                 p_data  => x_msg_data);
672 
673 END update_loc_assignment;
674 
675 
676 end HZ_TAX_ASSIGNMENT_PUB;