DBA Data[Home] [Help]

PACKAGE BODY: APPS.POS_SUPPLIER_TAX_PROF_BO_PKG

Source


1 PACKAGE BODY pos_supplier_tax_prof_bo_pkg AS
2     /* $Header: POSSPTXPB.pls 120.1 2010/11/25 12:18:27 puppulur noship $ */
3     /*#
4     * Use this routine to get tax profile BO
5     * @param p_api_version The api version
6     * @param p_init_msg_list The Initialization message list
7     * @param p_party_id The party_id
8     * @param p_orig_system The Orig System
9     * @param p_orig_system_reference The Orig System Reference
10     * @param x_zx_party_tax_profile_bo_tbl The tax profile bo
11     * @param x_return_status The return status
12     * @param x_msg_count The message count
13     * @param x_msg_data The message data
14     * @rep:scope public
15     * @rep:lifecycle active
16     * @rep:displayname Get Supplier Tax Profile
17     * @rep:catagory BUSSINESS_ENTITY AP_SUPPLIER
18     */
19     PROCEDURE get_pos_sup_tax_prof_bo_tbl(p_api_version                 IN NUMBER DEFAULT NULL,
20                                           p_init_msg_list               IN VARCHAR2 DEFAULT NULL,
21                                           p_party_id                    IN NUMBER,
22                                           p_orig_system                 IN VARCHAR2,
23                                           p_orig_system_reference       IN VARCHAR2,
24                                           x_zx_party_tax_profile_bo_tbl OUT NOCOPY pos_tax_profile_bo_tbl,
25                                           x_return_status               OUT NOCOPY VARCHAR2,
26                                           x_msg_count                   OUT NOCOPY NUMBER,
27                                           x_msg_data                    OUT NOCOPY VARCHAR2) IS
28 
29         l_ap_supplier_tax_prof_bo_tbl pos_tax_profile_bo_tbl := pos_tax_profile_bo_tbl();
30         l_party_id                    NUMBER;
31 
32     BEGIN
33 
34         IF p_party_id IS NULL OR p_party_id = 0 THEN
35             l_party_id := pos_supplier_bo_dep_pkg.get_party_id(p_orig_system,
36                                                            p_orig_system_reference);
37         ELSE
38             l_party_id := p_party_id;
39         END IF;
40 
41         SELECT pos_tax_profile_bo(party_type_code,
42                                   supplier_flag,
43                                   customer_flag,
44                                   site_flag,
45                                   process_for_applicability_flag,
46                                   rounding_level_code,
47                                   rounding_rule_code,
48                                   withholding_start_date,
49                                   inclusive_tax_flag,
50                                   allow_awt_flag,
51                                   use_le_as_subscriber_flag,
52                                   legal_establishment_flag,
53                                   first_party_le_flag,
54                                   reporting_authority_flag,
55                                   collecting_authority_flag,
56                                   provider_type_code,
57                                   create_awt_dists_type_code,
58                                   create_awt_invoices_type_code,
59                                   tax_classification_code,
60                                   self_assess_flag,
61                                   allow_offset_tax_flag,
62                                   effective_from_use_le,
63                                   record_type_code,
64                                   created_by,
65                                   creation_date,
66                                   last_updated_by,
67                                   last_update_date,
68                                   last_update_login,
69                                   request_id,
70                                   program_application_id,
71                                   program_id,
72                                   attribute1,
73                                   attribute2,
74                                   attribute3,
75                                   attribute4,
76                                   attribute5,
77                                   attribute6,
78                                   attribute7,
79                                   attribute8,
80                                   attribute9,
81                                   attribute10,
82                                   attribute11,
83                                   attribute12,
84                                   attribute13,
85                                   attribute14,
86                                   attribute15,
87                                   attribute_category,
88                                   program_login_id,
89                                   party_tax_profile_id,
90                                   party_id,
91                                   rep_registration_number,
92                                   object_version_number,
93                                   registration_type_code,
94                                   country_code,
95                                   merged_to_ptp_id,
96                                   merged_status_code) BULK COLLECT
97         INTO   l_ap_supplier_tax_prof_bo_tbl
98         FROM   zx_party_tax_profile
99         WHERE  party_id = l_party_id;
100 
101         x_zx_party_tax_profile_bo_tbl := l_ap_supplier_tax_prof_bo_tbl;
102     EXCEPTION
103         WHEN fnd_api.g_exc_error THEN
104 
105             x_return_status := fnd_api.g_ret_sts_error;
106             x_msg_count     := 1;
107             x_msg_data      := SQLCODE || SQLERRM;
108         WHEN fnd_api.g_exc_unexpected_error THEN
109 
110             x_return_status := fnd_api.g_ret_sts_unexp_error;
111             x_msg_count     := 1;
112             x_msg_data      := SQLCODE || SQLERRM;
113         WHEN OTHERS THEN
114 
115             x_return_status := fnd_api.g_ret_sts_unexp_error;
116 
117             x_msg_count := 1;
118             x_msg_data  := SQLCODE || SQLERRM;
119     END get_pos_sup_tax_prof_bo_tbl;
120 -----------------------------------------------------
121     PROCEDURE validate_tax_profile(p_party_id               IN NUMBER,
122                                    p_rounding_level_code    IN VARCHAR2,
123                                    p_rounding_rule_code     IN VARCHAR2,
124                                    p_registration_type_code IN VARCHAR2,
125                                    p_country_code           IN VARCHAR2,
126                                    x_return_status          OUT NOCOPY VARCHAR2,
127                                    x_msg_count              OUT NOCOPY NUMBER,
128                                    x_msg_data               OUT NOCOPY VARCHAR2,
129                                    x_tax_prof_valid         OUT NOCOPY VARCHAR2,
130                                    x_party_tax_profile_id   OUT NOCOPY NUMBER,
131                                    x_country_code           OUT NOCOPY VARCHAR2) IS
132         l_dummy_lookup VARCHAR2(30);
133         l_request_id   NUMBER := fnd_global.conc_request_id;
134 
135         l_msg_count NUMBER;
136         l_msg_data  VARCHAR2(2000);
137         l_api_name CONSTANT VARCHAR2(50) := 'VALIDATE_VENDOR_PRODS_SERVICES';
138     BEGIN
139         --  Initialize API return status to success
140         x_return_status := fnd_api.g_ret_sts_success;
141         x_tax_prof_valid := 'Y';
142 
143         -- Check if the Tax Profile Id exists
144         BEGIN
145             SELECT party_tax_profile_id
146             INTO   x_party_tax_profile_id
147             FROM   zx_party_tax_profile
148             WHERE  party_id = p_party_id
149             AND    party_type_code = 'THIRD_PARTY';
150 
151             RETURN;
152 
153         EXCEPTION
154             WHEN no_data_found THEN
155                 NULL;
156         END;
157 
158         -- Validate the rounding Level using the following query
159         IF (p_rounding_level_code IS NOT NULL) THEN
160             BEGIN
161                 SELECT fndlookup.lookup_code
162                 INTO   l_dummy_lookup
163                 FROM   fnd_lookups fndlookup
164                 WHERE  fndlookup.lookup_type LIKE 'ZX_ROUNDING_LEVEL'
165                 AND    nvl(fndlookup.start_date_active, SYSDATE) <= SYSDATE
166                 AND    nvl(fndlookup.end_date_active, SYSDATE) >= SYSDATE
167                 AND    nvl(fndlookup.enabled_flag, 'N') = 'Y'
168                 AND    lookup_code = p_rounding_level_code
169                 ORDER  BY fndlookup.lookup_code;
170 
171             EXCEPTION
172                 WHEN OTHERS THEN
173                     x_tax_prof_valid := 'N';
174                     x_return_status  := fnd_api.g_ret_sts_error;
175                     x_msg_data       := 'AP_INVALID_ROUNDING_LEVEL';
176 
177             END;
178         END IF;
179 
180         IF (p_rounding_rule_code IS NOT NULL) THEN
181             -- Validate the rounding Rule using the following query
182             BEGIN
183                 SELECT fndlookup.lookup_code
184                 INTO   l_dummy_lookup
185                 FROM   fnd_lookups fndlookup
186                 WHERE  fndlookup.lookup_type LIKE 'ZX_ROUNDING_RULE'
187                 AND    nvl(fndlookup.start_date_active, SYSDATE) <= SYSDATE
188                 AND    nvl(fndlookup.end_date_active, SYSDATE) >= SYSDATE
189                 AND    nvl(fndlookup.enabled_flag, 'N') = 'Y'
190                 AND    lookup_code = p_rounding_rule_code
191                 ORDER  BY fndlookup.lookup_code;
192 
193             EXCEPTION
194                 WHEN OTHERS THEN
195                     x_tax_prof_valid := 'N';
196                     x_return_status  := fnd_api.g_ret_sts_error;
197                     x_msg_data       := 'AP_INVALID_ROUNDING_RULE';
198 
199             END;
200         END IF;
201 
202         IF (p_country_code IS NOT NULL) THEN
203             -- Validate the Country Name using the following query
204             BEGIN
205                 SELECT territory_short_name
206                 INTO   x_country_code
207                 FROM   fnd_territories_vl
208                 WHERE  territory_code = p_country_code;
209 
210                 -- Update the Interface table with the country code obtained in the prev SQL since the country code would be saved.
211             EXCEPTION
212                 WHEN OTHERS THEN
213                     x_tax_prof_valid := 'N';
214                     x_return_status  := fnd_api.g_ret_sts_error;
215                     x_msg_data       := 'AP_INVALID_COUNTRY_NAME';
216 
217             END;
218         END IF;
219 
220         IF (p_registration_type_code IS NOT NULL) THEN
221             -- Validate the Registration Type Code using the following query
222             BEGIN
223                 SELECT fndlookup.lookup_code
224                 INTO   l_dummy_lookup
225                 FROM   fnd_lookups fndlookup
226                 WHERE  fndlookup.lookup_type LIKE 'ZX_REGISTRATIONS_TYPE'
227                 AND    nvl(fndlookup.start_date_active, SYSDATE) <= SYSDATE
228                 AND    nvl(fndlookup.end_date_active, SYSDATE) >= SYSDATE
229                 AND    nvl(fndlookup.enabled_flag, 'N') = 'Y'
230                 AND    lookup_code = p_registration_type_code
231                 ORDER  BY fndlookup.lookup_code;
232 
233             EXCEPTION
234                 WHEN OTHERS THEN
235                     x_tax_prof_valid := 'N';
236                     x_return_status  := fnd_api.g_ret_sts_error;
237                     x_msg_data       := 'AP_INVALID_REGISTRATION_TYPE_CODE';
238 
239             END;
240         END IF;
241 
242     EXCEPTION
243         WHEN OTHERS THEN
244             x_tax_prof_valid := 'N';
245             x_return_status  := fnd_api.g_ret_sts_error;
246             fnd_msg_pub.count_and_get(p_count => x_msg_count,
247                                       p_data  => x_msg_data);
248     END validate_tax_profile;
249 
250     /*#
251     * Use this routine to create tax profile BO
252     * @param p_api_version The api version
253     * @param p_init_msg_list The Initialization message list
254     * @param x_zx_party_tax_profile_bo_tbl The tax profile bo
255     * @param p_party_id The party_id
256     * @param p_orig_system The Orig System
257     * @param p_orig_system_reference The Orig System Reference
258     * @param x_return_status The return status
259     * @param x_msg_count The message count
260     * @param x_msg_data The message data
261     * @param x_tax_profile_id The newly created tax profile id
262     * @rep:scope public
263     * @rep:lifecycle active
264     * @rep:displayname Create Supplier Tax Profile
265     * @rep:catagory BUSSINESS_ENTITY AP_SUPPLIER
266     */
267     PROCEDURE create_supp_tax_profile(p_api_version             IN NUMBER DEFAULT NULL,
268                                       p_init_msg_list           IN VARCHAR2 DEFAULT NULL,
269                                       x_zx_party_tax_profile_bo_tbl IN pos_tax_profile_bo_tbl,
270                                       p_party_id                IN NUMBER,
271                                       p_orig_system             IN VARCHAR2,
272                                       p_orig_system_reference   IN VARCHAR2,
273                                       p_create_update_flag      IN VARCHAR2,
274                                       x_return_status           OUT NOCOPY VARCHAR2,
275                                       x_msg_count               OUT NOCOPY NUMBER,
276                                       x_msg_data                OUT NOCOPY VARCHAR2,
277                                       x_tax_profile_id          OUT NOCOPY NUMBER) IS
278         l_tax_prof_valid       VARCHAR2(10);
279         l_party_tax_profile_id NUMBER;
280         l_country_code         VARCHAR2(40);
281         l_return_status        VARCHAR2(100);
282         l_msg_count            NUMBER;
283         l_msg_data             VARCHAR2(4000);
284         l_party_id             NUMBER;
285     BEGIN
286         x_return_status := fnd_api.g_ret_sts_success;
287 
288         IF p_party_id IS NULL OR p_party_id = 0 THEN
289             l_party_id := pos_supplier_bo_dep_pkg.get_party_id(p_orig_system,
290                                                            p_orig_system_reference);
291         ELSE
292             l_party_id := p_party_id;
293         END IF;
294 FOR i IN x_zx_party_tax_profile_bo_tbl.first .. x_zx_party_tax_profile_bo_tbl.last LOOP
295         -- Call Validate_Tax_profile to validate the Tax Profiledata
296         validate_tax_profile(p_party_id               => l_party_id,
297                              p_rounding_level_code    => x_zx_party_tax_profile_bo_tbl(i).rounding_level_code,
298                              p_rounding_rule_code     => x_zx_party_tax_profile_bo_tbl(i).rounding_rule_code,
299                              p_registration_type_code => x_zx_party_tax_profile_bo_tbl(i).registration_type_code,
300                              p_country_code           => x_zx_party_tax_profile_bo_tbl(i).country_code,
301                              x_return_status          => l_return_status,
302                              x_msg_count              => l_msg_count,
303                              x_msg_data               => l_msg_data,
304                              x_tax_prof_valid         => l_tax_prof_valid,
305                              x_party_tax_profile_id   => l_party_tax_profile_id,
306                              x_country_code           => l_country_code);
307 
308         IF p_create_update_flag = 'C' THEN
309             IF (l_tax_prof_valid = 'Y') THEN
310 
311                 -- Insert
312                 zx_party_tax_profile_pkg.insert_row(p_allow_awt_flag               => x_zx_party_tax_profile_bo_tbl(i).allow_awt_flag,
313                                                     p_allow_offset_tax_flag        => x_zx_party_tax_profile_bo_tbl(i).allow_offset_tax_flag,
314                                                     p_attribute_category           => x_zx_party_tax_profile_bo_tbl(i).attribute_category,
315                                                     p_attribute1                   => x_zx_party_tax_profile_bo_tbl(i).attribute1,
316                                                     p_attribute10                  => x_zx_party_tax_profile_bo_tbl(i).attribute10,
317                                                     p_attribute11                  => x_zx_party_tax_profile_bo_tbl(i).attribute11,
318                                                     p_attribute12                  => x_zx_party_tax_profile_bo_tbl(i).attribute12,
319                                                     p_attribute13                  => x_zx_party_tax_profile_bo_tbl(i).attribute13,
320                                                     p_attribute14                  => x_zx_party_tax_profile_bo_tbl(i).attribute14,
321                                                     p_attribute15                  => x_zx_party_tax_profile_bo_tbl(i).attribute15,
322                                                     p_attribute2                   => x_zx_party_tax_profile_bo_tbl(i).attribute2,
323                                                     p_attribute3                   => x_zx_party_tax_profile_bo_tbl(i).attribute3,
324                                                     p_attribute4                   => x_zx_party_tax_profile_bo_tbl(i).attribute4,
325                                                     p_attribute5                   => x_zx_party_tax_profile_bo_tbl(i).attribute5,
326                                                     p_attribute6                   => x_zx_party_tax_profile_bo_tbl(i).attribute6,
327                                                     p_attribute7                   => x_zx_party_tax_profile_bo_tbl(i).attribute7,
328                                                     p_attribute8                   => x_zx_party_tax_profile_bo_tbl(i).attribute8,
329                                                     p_attribute9                   => x_zx_party_tax_profile_bo_tbl(i).attribute9,
330                                                     p_collecting_authority_flag    => x_zx_party_tax_profile_bo_tbl(i).collecting_authority_flag,
331                                                     p_country_code                 => x_zx_party_tax_profile_bo_tbl(i).country_code,
332                                                     p_create_awt_dists_type_code   => x_zx_party_tax_profile_bo_tbl(i).create_awt_dists_type_code,
333                                                     p_create_awt_invoices_type_cod => x_zx_party_tax_profile_bo_tbl(i).create_awt_invoices_type_code,
334                                                     p_customer_flag                => x_zx_party_tax_profile_bo_tbl(i).customer_flag,
335                                                     p_effective_from_use_le        => x_zx_party_tax_profile_bo_tbl(i).effective_from_use_le,
336                                                     p_first_party_le_flag          => x_zx_party_tax_profile_bo_tbl(i).first_party_le_flag,
337                                                     p_inclusive_tax_flag           => x_zx_party_tax_profile_bo_tbl(i).inclusive_tax_flag,
338                                                     p_legal_establishment_flag     => x_zx_party_tax_profile_bo_tbl(i).legal_establishment_flag,
339                                                     p_party_id                     => x_zx_party_tax_profile_bo_tbl(i).party_id,
340                                                     p_party_type_code              => x_zx_party_tax_profile_bo_tbl(i).party_type_code,
341                                                     p_process_for_applicability_fl => x_zx_party_tax_profile_bo_tbl(i).process_for_applicability_flag,
342                                                     p_program_login_id             => x_zx_party_tax_profile_bo_tbl(i).program_application_id,
343                                                     p_provider_type_code           => x_zx_party_tax_profile_bo_tbl(i).provider_type_code,
344                                                     p_record_type_code             => x_zx_party_tax_profile_bo_tbl(i).record_type_code,
345                                                     p_registration_type_code       => x_zx_party_tax_profile_bo_tbl(i).registration_type_code,
346                                                     p_rep_registration_number      => x_zx_party_tax_profile_bo_tbl(i).rep_registration_number,
347                                                     p_reporting_authority_flag     => x_zx_party_tax_profile_bo_tbl(i).reporting_authority_flag,
348                                                     p_request_id                   => x_zx_party_tax_profile_bo_tbl(i).request_id,
349                                                     p_rounding_level_code          => x_zx_party_tax_profile_bo_tbl(i).rounding_level_code,
350                                                     p_rounding_rule_code           => x_zx_party_tax_profile_bo_tbl(i).rounding_rule_code,
351                                                     p_self_assess_flag             => x_zx_party_tax_profile_bo_tbl(i).self_assess_flag,
352                                                     p_site_flag                    => x_zx_party_tax_profile_bo_tbl(i).site_flag,
353                                                     p_supplier_flag                => x_zx_party_tax_profile_bo_tbl(i).supplier_flag,
354                                                     p_tax_classification_code      => x_zx_party_tax_profile_bo_tbl(i).tax_classification_code,
355                                                     p_use_le_as_subscriber_flag    => x_zx_party_tax_profile_bo_tbl(i).use_le_as_subscriber_flag,
356                                                     p_withholding_start_date       => x_zx_party_tax_profile_bo_tbl(i).withholding_start_date,
357                                                     x_return_status                => l_return_status);
358 
359                 -- The ZX API doesn't return the Tax Profile Id that has been created
360                 -- So re-querying the Tax profile Id using the party Id and the party Type
361                 --
362                 IF (l_return_status = 'S') THEN
363                     SELECT party_tax_profile_id
364                     INTO   l_party_tax_profile_id
365                     FROM   zx_party_tax_profile
366                     WHERE  party_id = l_party_id
367                     AND    party_type_code = 'THIRD_PARTY';
368 
369                     x_tax_profile_id := l_party_tax_profile_id;
370                  else
371                     x_return_status := l_return_status;
372                 x_msg_data      := l_msg_data;
373                 x_msg_count     := l_msg_count;
374                 END IF;
375 
376             ELSE
377                 x_return_status := l_return_status;
378                 x_msg_data      := l_msg_data;
379                 x_msg_count     := l_msg_count;
380             END IF;
381 
382         ELSIF p_create_update_flag = 'U' THEN
383             IF (l_tax_prof_valid = 'Y') THEN
384 
385                 zx_party_tax_profile_pkg.update_row(p_allow_awt_flag               => x_zx_party_tax_profile_bo_tbl(i).allow_awt_flag,
386                                                     p_allow_offset_tax_flag        => x_zx_party_tax_profile_bo_tbl(i).allow_offset_tax_flag,
387                                                     p_attribute_category           => x_zx_party_tax_profile_bo_tbl(i).attribute_category,
388                                                     p_attribute1                   => x_zx_party_tax_profile_bo_tbl(i).attribute1,
389                                                     p_attribute10                  => x_zx_party_tax_profile_bo_tbl(i).attribute10,
390                                                     p_attribute11                  => x_zx_party_tax_profile_bo_tbl(i).attribute11,
391                                                     p_attribute12                  => x_zx_party_tax_profile_bo_tbl(i).attribute12,
392                                                     p_attribute13                  => x_zx_party_tax_profile_bo_tbl(i).attribute13,
393                                                     p_attribute14                  => x_zx_party_tax_profile_bo_tbl(i).attribute14,
394                                                     p_attribute15                  => x_zx_party_tax_profile_bo_tbl(i).attribute15,
395                                                     p_attribute2                   => x_zx_party_tax_profile_bo_tbl(i).attribute2,
396                                                     p_attribute3                   => x_zx_party_tax_profile_bo_tbl(i).attribute3,
397                                                     p_attribute4                   => x_zx_party_tax_profile_bo_tbl(i).attribute4,
398                                                     p_attribute5                   => x_zx_party_tax_profile_bo_tbl(i).attribute5,
399                                                     p_attribute6                   => x_zx_party_tax_profile_bo_tbl(i).attribute6,
400                                                     p_attribute7                   => x_zx_party_tax_profile_bo_tbl(i).attribute7,
401                                                     p_attribute8                   => x_zx_party_tax_profile_bo_tbl(i).attribute8,
402                                                     p_attribute9                   => x_zx_party_tax_profile_bo_tbl(i).attribute9,
403                                                     p_collecting_authority_flag    => x_zx_party_tax_profile_bo_tbl(i).collecting_authority_flag,
404                                                     p_country_code                 => x_zx_party_tax_profile_bo_tbl(i).country_code,
405                                                     p_create_awt_dists_type_code   => x_zx_party_tax_profile_bo_tbl(i).create_awt_dists_type_code,
406                                                     p_create_awt_invoices_type_cod => x_zx_party_tax_profile_bo_tbl(i).create_awt_invoices_type_code,
407                                                     p_customer_flag                => x_zx_party_tax_profile_bo_tbl(i).customer_flag,
408                                                     p_effective_from_use_le        => x_zx_party_tax_profile_bo_tbl(i).effective_from_use_le,
409                                                     p_first_party_le_flag          => x_zx_party_tax_profile_bo_tbl(i).first_party_le_flag,
410                                                     p_inclusive_tax_flag           => x_zx_party_tax_profile_bo_tbl(i).inclusive_tax_flag,
411                                                     p_legal_establishment_flag     => x_zx_party_tax_profile_bo_tbl(i).legal_establishment_flag,
412                                                     p_party_id                     => x_zx_party_tax_profile_bo_tbl(i).party_id,
413                                                     p_party_type_code              => x_zx_party_tax_profile_bo_tbl(i).party_type_code,
414                                                     p_process_for_applicability_fl => x_zx_party_tax_profile_bo_tbl(i).process_for_applicability_flag,
415                                                     p_program_login_id             => x_zx_party_tax_profile_bo_tbl(i).program_application_id,
416                                                     p_provider_type_code           => x_zx_party_tax_profile_bo_tbl(i).provider_type_code,
417                                                     p_record_type_code             => x_zx_party_tax_profile_bo_tbl(i).record_type_code,
418                                                     p_registration_type_code       => x_zx_party_tax_profile_bo_tbl(i).registration_type_code,
419                                                     p_rep_registration_number      => x_zx_party_tax_profile_bo_tbl(i).rep_registration_number,
420                                                     p_reporting_authority_flag     => x_zx_party_tax_profile_bo_tbl(i).reporting_authority_flag,
421                                                     p_request_id                   => x_zx_party_tax_profile_bo_tbl(i).request_id,
422                                                     p_rounding_level_code          => x_zx_party_tax_profile_bo_tbl(i).rounding_level_code,
423                                                     p_rounding_rule_code           => x_zx_party_tax_profile_bo_tbl(i).rounding_rule_code,
424                                                     p_self_assess_flag             => x_zx_party_tax_profile_bo_tbl(i).self_assess_flag,
425                                                     p_site_flag                    => x_zx_party_tax_profile_bo_tbl(i).site_flag,
426                                                     p_supplier_flag                => x_zx_party_tax_profile_bo_tbl(i).supplier_flag,
427                                                     p_tax_classification_code      => x_zx_party_tax_profile_bo_tbl(i).tax_classification_code,
428                                                     p_use_le_as_subscriber_flag    => x_zx_party_tax_profile_bo_tbl(i).use_le_as_subscriber_flag,
429                                                     p_withholding_start_date       => x_zx_party_tax_profile_bo_tbl(i).withholding_start_date,
430                                                     p_party_tax_profile_id         => x_zx_party_tax_profile_bo_tbl(i).party_tax_profile_id,
431                                                     x_return_status                => l_return_status);
432 
433                IF (l_return_status <> 'S') THEN
434                  x_return_status := l_return_status;
435                  x_msg_data      := l_msg_data;
436                  x_msg_count     := l_msg_count;
437                END IF;
438 
439             ELSE
440                 x_return_status := l_return_status;
441                 x_msg_data      := l_msg_data;
442                 x_msg_count     := l_msg_count;
443             END IF;
444 
445         END IF;
446 
447 
448         END LOOP;
449 
450 
451     EXCEPTION
452         WHEN fnd_api.g_exc_error THEN
453 
454             x_return_status := fnd_api.g_ret_sts_error;
455             x_msg_count     := 1;
456             x_msg_data      := SQLCODE || SQLERRM;
457         WHEN fnd_api.g_exc_unexpected_error THEN
458 
459             x_return_status := fnd_api.g_ret_sts_unexp_error;
460             x_msg_count     := 1;
461             x_msg_data      := SQLCODE || SQLERRM;
462         WHEN OTHERS THEN
463 
464             x_return_status := fnd_api.g_ret_sts_unexp_error;
465 
466             x_msg_count := 1;
467             x_msg_data  := SQLCODE || SQLERRM;
468     END create_supp_tax_profile;
469 /*    /*#
470     * Use this routine to update tax profile BO
471     * @param p_api_version The api version
472     * @param p_init_msg_list The Initialization message list
473     * @param p_tax_profile_rec The tax profile bo
474     * @param x_return_status The return status
475     * @param x_msg_count The message count
476     * @param x_msg_data The message data
477     * @rep:scope public
478     * @rep:lifecycle active
479     * @rep:displayname Create Supplier Contact
480     * @rep:catagory BUSSINESS_ENTITY AP_SUPPLIER
481     */
482 /*  PROCEDURE update_supp_tax_profile(p_api_version     IN NUMBER DEFAULT NULL,
483                                       p_init_msg_list   IN VARCHAR2 DEFAULT NULL,
484                                       p_tax_profile_rec IN pos_party_tax_profile_int%ROWTYPE,
485                                       x_return_status   OUT NOCOPY VARCHAR2,
486                                       x_msg_count       OUT NOCOPY NUMBER,
487                                       x_msg_data        OUT NOCOPY VARCHAR2) IS
488         l_tax_prof_valid       VARCHAR2(10);
489         l_party_tax_profile_id NUMBER;
490         l_country_code         VARCHAR2(40);
491         l_return_status        VARCHAR2(100);
492         l_msg_count            NUMBER;
493         l_msg_data             VARCHAR2(4000);
494 
495     BEGIN
496         x_return_status := fnd_api.g_ret_sts_success;
497 
498         -- Call Validate_Tax_profile to validate the Tax Profiledata
499         validate_tax_profile(p_tax_profile_rec      => p_tax_profile_rec,
500                              x_return_status        => l_return_status,
501                              x_msg_count            => l_msg_count,
502                              x_msg_data             => l_msg_data,
503                              x_tax_prof_valid       => l_tax_prof_valid,
504                              x_party_tax_profile_id => l_party_tax_profile_id,
505                              x_country_code         => l_country_code);
506 
507         IF (l_tax_prof_valid = 'Y') THEN
508 
509             zx_party_tax_profile_pkg.update_row(p_party_tax_profile_id         => l_party_tax_profile_id,
510                                                 p_collecting_authority_flag    => NULL,
511                                                 p_provider_type_code           => NULL,
512                                                 p_create_awt_dists_type_code   => NULL,
513                                                 p_create_awt_invoices_type_cod => NULL,
514                                                 p_tax_classification_code      => NULL,
515                                                 p_self_assess_flag             => NULL,
516                                                 p_allow_offset_tax_flag        => NULL,
517                                                 p_rep_registration_number      => p_tax_profile_rec.rep_registration_number,
518                                                 p_effective_from_use_le        => NULL,
519                                                 p_record_type_code             => NULL,
520                                                 p_request_id                   => NULL,
521                                                 p_attribute1                   => NULL,
522                                                 p_attribute2                   => NULL,
523                                                 p_attribute3                   => NULL,
524                                                 p_attribute4                   => NULL,
525                                                 p_attribute5                   => NULL,
526                                                 p_attribute6                   => NULL,
527                                                 p_attribute7                   => NULL,
528                                                 p_attribute8                   => NULL,
529                                                 p_attribute9                   => NULL,
530                                                 p_attribute10                  => NULL,
531                                                 p_attribute11                  => NULL,
532                                                 p_attribute12                  => NULL,
533                                                 p_attribute13                  => NULL,
534                                                 p_attribute14                  => NULL,
535                                                 p_attribute15                  => NULL,
536                                                 p_attribute_category           => NULL,
537                                                 p_party_id                     => p_tax_profile_rec.party_id,
538                                                 p_program_login_id             => NULL,
539                                                 p_party_type_code              => 'THIRD_PARTY',
540                                                 p_supplier_flag                => NULL,
541                                                 p_customer_flag                => NULL,
542                                                 p_site_flag                    => NULL,
543                                                 p_process_for_applicability_fl => NULL,
544                                                 p_rounding_level_code          => p_tax_profile_rec.rounding_level_code,
545                                                 p_rounding_rule_code           => p_tax_profile_rec.rounding_rule_code,
546                                                 p_withholding_start_date       => NULL,
547                                                 p_inclusive_tax_flag           => p_tax_profile_rec.inclusive_tax_flag,
548                                                 p_allow_awt_flag               => NULL,
549                                                 p_use_le_as_subscriber_flag    => NULL,
550                                                 p_legal_establishment_flag     => NULL,
551                                                 p_first_party_le_flag          => NULL,
552                                                 p_reporting_authority_flag     => NULL,
553                                                 x_return_status                => x_return_status,
554                                                 p_registration_type_code       => p_tax_profile_rec.registration_type_code,
555                                                 p_country_code                 => l_country_code);
556 
557             -- The ZX API doesn't return the Tax Profile Id that has been created
558             -- So re-querying the Tax profile Id using the party Id and the party Type
559             --
560 
561         ELSE
562             x_return_status := l_return_status;
563             x_msg_data      := l_msg_data;
564             x_msg_count     := l_msg_count;
565         END IF;
566 
567     EXCEPTION
568         WHEN fnd_api.g_exc_error THEN
569 
570             x_return_status := fnd_api.g_ret_sts_error;
571             x_msg_count     := 1;
572             x_msg_data      := SQLCODE || SQLERRM;
573         WHEN fnd_api.g_exc_unexpected_error THEN
574 
575             x_return_status := fnd_api.g_ret_sts_unexp_error;
576             x_msg_count     := 1;
577             x_msg_data      := SQLCODE || SQLERRM;
578         WHEN OTHERS THEN
579 
580             x_return_status := fnd_api.g_ret_sts_unexp_error;
581 
582             x_msg_count := 1;
583             x_msg_data  := SQLCODE || SQLERRM;
584     END update_supp_tax_profile;
585 */
586 END pos_supplier_tax_prof_bo_pkg;