DBA Data[Home] [Help]

PACKAGE BODY: APPS.ZX_API_PRVDR_PUB

Source


1 PACKAGE BODY ZX_API_PRVDR_PUB AS
2 /* $Header: zxifprvdrsrvpubb.pls 120.11 2006/09/21 09:30:07 vchallur ship $ */
3 /* ======================================================================*
4  | Global Data Types                                                     |
5  * ======================================================================*/
6 
7 G_PKG_NAME                  CONSTANT VARCHAR2(30) := 'ZX_API_PRVDR_PUB';
8 G_CURRENT_RUNTIME_LEVEL     CONSTANT NUMBER       := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
9 G_LEVEL_UNEXPECTED          CONSTANT NUMBER       := FND_LOG.LEVEL_UNEXPECTED;
10 G_LEVEL_ERROR               CONSTANT NUMBER       := FND_LOG.LEVEL_ERROR;
11 G_LEVEL_EXCEPTION           CONSTANT NUMBER       := FND_LOG.LEVEL_EXCEPTION;
12 G_LEVEL_EVENT               CONSTANT NUMBER       := FND_LOG.LEVEL_EVENT;
13 G_LEVEL_PROCEDURE           CONSTANT NUMBER       := FND_LOG.LEVEL_PROCEDURE;
14 G_LEVEL_STATEMENT           CONSTANT NUMBER       := FND_LOG.LEVEL_STATEMENT;
15 G_MODULE_NAME               CONSTANT VARCHAR2(30) := 'ZX.PLSQL.ZX_API_PRVDR_PUB.';
16 
17 G_SRVC_CATEGORY             CONSTANT VARCHAR2(30) := 'PTNR_SRVC_INTGRTN';
18 
19 PROCEDURE check_input_parameters (
20   p_srvc_prvdr_name IN  VARCHAR2,
21   p_srvc_type_code  IN  VARCHAR2,
22   p_country_code    IN  VARCHAR2,
23   p_business_flow   IN  VARCHAR2,
24   p_error_msg_tbl   IN  OUT NOCOPY error_messages_tbl,
25   p_error_counter   IN  OUT NOCOPY NUMBER,
26   x_srvc_type_id    OUT NOCOPY NUMBER,
27   x_api_owner_id    OUT NOCOPY NUMBER,
28   x_return_status   OUT NOCOPY VARCHAR2
29  )  IS
30   l_api_name          CONSTANT VARCHAR2(30) := 'CREATE_SRVC_REGISTRATION';
31   l_exists            NUMBER;
32   l_combination_found BOOLEAN;
33   l_struct_num        NUMBER;
34   l_delimiter         VARCHAR2(1);
35   l_api_segments      fnd_flex_key_api.segment_list;
36 
37  BEGIN
38    /*Validate Service Provider name*/
39    BEGIN
40      IF p_srvc_prvdr_name is not null THEN
41         SELECT ptp.party_tax_profile_id
42          INTO  x_api_owner_id
43          FROM HZ_PARTIES pty,
44               ZX_PARTY_TAX_PROFILE ptp
45         WHERE pty.party_name = p_srvc_prvdr_name
46           AND pty.party_id = ptp.party_id
47           AND ptp.provider_type_code in ('BOTH', 'SERVICE')
48           AND (ptp.party_tax_profile_id =1
49             OR ptp.party_tax_profile_id=2);
50      ELSE
51        fnd_message.set_name('ZX', 'ZX_SRVC_PROVIDER_REQUIRED');
52        p_error_msg_tbl(p_error_counter) := fnd_message.get;
53        x_return_status := FND_API.G_RET_STS_ERROR;
54        p_error_counter := p_error_counter+1;
55 	 END IF;
56 
57      EXCEPTION
58        WHEN NO_DATA_FOUND THEN
59        fnd_message.set_name('ZX', 'ZX_SRVC_PROVIDER_REQUIRED');
60        p_error_msg_tbl(p_error_counter) := fnd_message.get;
61        x_return_status := FND_API.G_RET_STS_ERROR;
62        p_error_counter := p_error_counter+1;
63    END;
64 
65    /*Validate Service type code*/
66      IF p_srvc_type_code is null THEN
67        fnd_message.set_name('ZX', 'ZX_SRVC_TYPE_CODE_REQD');
68        p_error_msg_tbl(p_error_counter) := fnd_message.get;
69        x_return_status := FND_API.G_RET_STS_ERROR;
70        p_error_counter := p_error_counter+1;
71      ELSIF p_srvc_type_code NOT IN ('CALCULATE_TAX','DOCUMENT_LEVEL_CHANGES','SYNCHRONIZE_FOR_TAX','COMMIT_FOR_TAX','IMPORT_EXEMPTIONS') THEN
72        fnd_message.set_name('ZX', 'ZX_SRVC_TYPE_CODE_REQD');
73        p_error_msg_tbl(p_error_counter) := fnd_message.get;
74        x_return_status := FND_API.G_RET_STS_ERROR;
75        p_error_counter := p_error_counter+1;
76      Else
77        select service_type_id
78 	into x_srvc_type_id
79 	from zx_service_types
80 	where SERVICE_TYPE_CODE = p_srvc_type_code
81 	  and SERVICE_CATEGORY_CODE = G_SRVC_CATEGORY;
82      END IF;
83 
84      /*Validate the country code*/
85      IF p_country_code is null THEN
86        fnd_message.set_name('ZX', 'ZX_COUNTRY_CODE_REQD');
87        p_error_msg_tbl(p_error_counter) := fnd_message.get;
88        x_return_status := FND_API.G_RET_STS_ERROR;
89        p_error_counter := p_error_counter+1;
90      ELSE
91        BEGIN
92          SELECT 1
93            INTO l_exists
94   		   FROM ZX_REGIMES_B
95   		  WHERE tax_regime_code = p_country_code;
96 
97   		 EXCEPTION
98 		   WHEN NO_DATA_FOUND THEN
99            fnd_message.set_name('ZX', 'ZX_COUNTRY_CODE_REQD');
100            p_error_msg_tbl(p_error_counter) := fnd_message.get;
101            x_return_status := FND_API.G_RET_STS_ERROR;
102            p_error_counter := p_error_counter+1;
103         END ;
104      END IF;
105 
106      /*Validate Business flow*/
107      IF p_business_flow is null THEN
108        fnd_message.set_name('ZX', 'ZX_BUSINESS_FLOW_REQUIRED');
109        p_error_msg_tbl(p_error_counter) := fnd_message.get;
110        x_return_status := FND_API.G_RET_STS_ERROR;
111        p_error_counter := p_error_counter+1;
112      ELSIF p_businesS_flow not in ('O2C', 'P2P') THEN
113        fnd_message.set_name('ZX', 'ZX_BUSINESS_FLOW_REQUIRED');
114        p_error_msg_tbl(p_error_counter) := fnd_message.get;
115        x_return_status := FND_API.G_RET_STS_ERROR;
116        p_error_counter := p_error_counter+1;
117 	 END IF;
118 
119 END check_input_parameters;
120 /*
121 This API is used to maintain the tax partner service registration, for the given tax interface and business flow.
122 */
123 
124 PROCEDURE create_srvc_registration (
125   p_api_version	    IN NUMBER,
126   x_error_msg_tbl   OUT NOCOPY error_messages_tbl,
127   x_return_status   OUT NOCOPY VARCHAR2,
128   p_srvc_prvdr_name IN VARCHAR2,
129   p_srvc_type_code  IN VARCHAR2,
130   p_country_code    IN VARCHAR2,
131   p_business_flow   IN VARCHAR2,
132   p_package_name    IN VARCHAR2,
133   p_procedure_name  IN VARCHAR2
134  )  IS
135   l_api_name                   CONSTANT VARCHAR2(30) := 'CREATE_SRVC_REGISTRATION';
136   l_exists                     NUMBER;
137   l_combination_found          BOOLEAN;
138   l_context_flex_structure     NUMBER;
139   l_delimiter                  VARCHAR2(1);
140   l_segments                   FND_FLEX_EXT.SegmentArray ;
141   l_dummy                      BOOLEAN;
142   l_flexfield                  VARCHAR2(2000);
143   l_error_counter              NUMBER;
144   l_code_combination_id        NUMBER;
145   l_api_owner_id               NUMBER;
146   l_api_status                 VARCHAR2(30);
147   l_return_status              VARCHAR2(30);
148   l_srvc_type_id               NUMBER;
149 
150  BEGIN
151    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
152      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
153    END IF;
154 
155     /*--------------------------------------------------+
156     |   Standard start of API savepoint                 |
157     +--------------------------------------------------*/
158     SAVEPOINT create_srvc_registration_pvt;
159 
160    /*Set the return status to Success */
161    x_return_status := FND_API.G_RET_STS_SUCCESS;
162    l_error_counter := 1;
163    l_combination_found := TRUE;
164 
165    /*Validate the input parameters*/
166    check_input_parameters(p_srvc_prvdr_name  => p_srvc_prvdr_name,
167                           p_srvc_type_code   => p_srvc_type_code,
168                           p_country_code     => p_country_code,
169                           p_business_flow    => p_business_flow,
170                           p_error_msg_tbl    => x_error_msg_tbl,
171                           p_error_counter    => l_error_counter,
172                           x_srvc_type_id     => l_srvc_type_id,
173                           x_api_owner_id     => l_api_owner_id,
174                           x_return_status    => l_return_status
175                          );
176 
177    /*Validate package name*/
178    IF p_package_name is null THEN
179        fnd_message.set_name('ZX', 'ZX_PACKAGE_REQUIRED');
180        x_error_msg_tbl(l_error_counter) := fnd_message.get;
181        x_return_status := FND_API.G_RET_STS_ERROR;
182        l_error_counter := l_error_counter+1;
183    END IF;
184 
185    /*Validate procedure name*/
186    IF p_procedure_name is null THEN
187        fnd_message.set_name('ZX', 'ZX_PROCEDURE_REQUIRED');
188        x_error_msg_tbl(l_error_counter) := fnd_message.get;
189        x_return_status := FND_API.G_RET_STS_ERROR;
190        l_error_counter := l_error_counter+1;
191    END IF;
192 
193    /*Check if combination of business group and regime exists in zx_api_combinations*/
194    BEGIN
195        SELECT code_combination_id
196          INTO l_code_combination_id
197          FROM zx_api_code_combinations
198         WHERE segment_attribute1 = p_country_code
199           AND segment_attribute2 = p_business_flow;
200 
201         EXCEPTION
202 	      WHEN NO_DATA_FOUND THEN
203 		    l_combination_found := FALSE;
204     END;
205 
206     /*Check if service already registerd */
207     IF x_error_msg_tbl.COUNT = 0 THEN
208       IF l_combination_found THEN
209         BEGIN
210           SELECT 1
211 	      INTO l_exists
212 	      FROM zx_api_registrations reg,
213 		       zx_service_types srvc
214          WHERE reg.api_owner_id = l_api_owner_id
215    	       AND srvc.service_type_id = reg.service_type_id
216 	       AND srvc.service_type_code = p_srvc_type_code
217 		   AND context_ccid = l_code_combination_id;
218 
219 	       IF l_exists = 1 THEN
220              fnd_message.set_name('ZX', 'ZX_SERVICE_RECORD_EXISTS');
221              x_error_msg_tbl(l_error_counter) := fnd_message.get;
222              x_return_status := FND_API.G_RET_STS_ERROR;
223              l_error_counter := l_error_counter+1;
224            END IF;
225 
226 	       EXCEPTION
227 	         WHEN NO_DATA_FOUND THEN
228 	         null;
229   	     END;
230       ELSE /*create the combination*/
231         SELECT context_flex_structure_id
232           INTO l_context_flex_structure
233           FROM ZX_SERVICE_TYPES
234          WHERE service_type_code = p_srvc_type_code
235            AND service_category_code = G_SRVC_CATEGORY;
236 
237          -- need to create ccid for the new tax_regime_code
238          ------------------------------------------------------------------
239          --  Find or generate the CCID for the new combination           --
240          ------------------------------------------------------------------
241          /*For the 2 segments*/
242         l_segments(1) := p_country_code;
243         l_segments(2) := p_business_flow;
244 
245         IF NOT (fnd_flex_ext.get_combination_id (application_short_name =>  'ZX',
246                                                  key_flex_code          =>  'ZX#',
247                                                  structure_number       =>  l_context_flex_structure,
248                                                  validation_date        =>  sysdate,
249                                                  n_segments             =>  2,
250                                                  segments               =>  l_segments,
251                                                  combination_id         =>  l_code_combination_id
252                                                  )) THEN
253 
254           fnd_message.set_name ('ZX', 'ZX_PTNR_SRVC_CCID_NOT_FOUND');  -- Bug 5216009
255           x_error_msg_tbl(l_error_counter) := fnd_message.get;
256           x_return_status := FND_API.G_RET_STS_ERROR;
257           l_error_counter := l_error_counter+1;
258         END IF;
259       END IF; --create code combination
260 
261       /*Create data in registrations*/
262       INSERT INTO ZX_API_REGISTRATIONS
263               (API_REGISTRATION_ID,
264                API_OWNER_ID,
265                PACKAGE_NAME,
266                PROCEDURE_NAME,
267                SERVICE_TYPE_ID,
268                CONTEXT_CCID,
269                CREATION_DATE,
270                CREATED_BY,
271                LAST_UPDATE_DATE,
272                LAST_UPDATED_BY,
273                LAST_UPDATE_LOGIN,
274 	       OBJECT_VERSION_NUMBER,
275 	       RECORD_TYPE_CODE)
276           VALUES
277                (ZX_API_REGISTRATIONS_S.nextval,
278                 l_api_owner_id,
279                 p_package_name,
280                 p_procedure_name,
281                 l_srvc_type_id,
282                 l_code_combination_id,
283                 sysdate,
284                 FND_GLOBAL.user_id,
285                 sysdate,
286                 FND_GLOBAL.user_id,
287                 FND_GLOBAL.user_id,
288 		1,
289 		'EBTAX_CREATED');
290 
291     -- Check the status of the API owner.
292       BEGIN
293         SELECT status_code
294           INTO l_api_status
295           FROM ZX_API_OWNER_STATUSES
296          WHERE api_owner_id         =  l_api_owner_id
297           AND service_category_code = G_SRVC_CATEGORY;
298       EXCEPTION
299         WHEN no_data_found then
300           -- No entry found in the zx_api_owner_stratuses
301           -- Insert a record into zx_api_owner_statuses table.
302           l_api_status := 'NEW';
303           INSERT INTO ZX_API_OWNER_STATUSES
304                      (api_owner_id
305                     , service_category_code
306                     , status_code
307                     , creation_date
308                     , created_by
309                     , last_update_date
310                     , last_updated_by
311                     , last_update_login)
312                VALUES(l_api_owner_id
313                     , G_SRVC_CATEGORY
314                     , 'NEW'
315                     , sysdate
316                     , fnd_global.user_id
317                     , sysdate
318                     , fnd_global.user_id
319                     , fnd_global.user_id);
323       IF l_api_status = 'DELETED' THEN
320       END;
321 
322       /*Status record exists- update them*/
324          UPDATE ZX_API_OWNER_STATUSES
325            SET status_code = 'NEW'
326          WHERE api_owner_id   =  l_api_owner_id
327            AND service_category_code = G_SRVC_CATEGORY;
328       ELSIF l_api_status = 'GENERATED' THEN
329          UPDATE ZX_API_OWNER_STATUSES
330            SET status_code = 'MODIFIED'
331          WHERE api_owner_id   =  l_api_owner_id
332            AND service_category_code = G_SRVC_CATEGORY;
333       END IF;
334     END IF; --no errors in errors table
335 
336     IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
337        FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'()-');
338     END IF;
339 
340     EXCEPTION
341        WHEN OTHERS THEN
342          ROLLBACK TO create_srvc_registration_pvt;
343          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
344          FND_MESSAGE.set_name('ZX','ZX_UNEXPECTED_ERROR');
345          x_error_msg_tbl(l_error_counter) := fnd_message.get;
346          l_error_counter := l_error_counter+1;
347          IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
348             FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
349          END IF;
350  END create_srvc_registration;
351 
352 
353  PROCEDURE delete_srvc_registration (
354   p_api_version	    IN NUMBER,
355   x_error_msg_tbl   OUT NOCOPY error_messages_tbl,
356   x_return_status   OUT NOCOPY VARCHAR2,
357   p_srvc_prvdr_name IN VARCHAR2,
358   p_srvc_type_code  IN VARCHAR2,
359   p_country_code    IN VARCHAR2,
360   p_business_flow   IN VARCHAR2
361  )  IS
362   l_api_name        CONSTANT VARCHAR2(30) := 'DELETE_SRVC_REGISTRATION';
363   l_api_owner_id    NUMBER;
364   l_error_counter   NUMBER;
365   l_api_status      VARCHAR2(30);
366   l_return_status   VARCHAR2(30);
367   l_count           NUMBER;
368   l_srvc_type_id    NUMBER;
369  BEGIN
370    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
371      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
372    END IF;
373 
374     /*--------------------------------------------------+
375     |   Standard start of API savepoint                 |
376     +--------------------------------------------------*/
377     SAVEPOINT delete_srvc_registration_pvt;
378 
379    /*Set the return status to Success */
380    x_return_status := FND_API.G_RET_STS_SUCCESS;
381    l_error_counter := 1;
382 
383    check_input_parameters(p_srvc_prvdr_name  => p_srvc_prvdr_name,
384                           p_srvc_type_code   => p_srvc_type_code,
385                           p_country_code     => p_country_code,
386                           p_business_flow    => p_business_flow,
387                           p_error_msg_tbl    => x_error_msg_tbl,
388                           p_error_counter    => l_error_counter,
389                           x_srvc_type_id     => l_srvc_type_id,
390                           x_api_owner_id     => l_api_owner_id,
391                           x_return_status    => l_return_status
392                          );
393     /*Determine number of records to decide the status in zx_api_owner_statues*/
394     BEGIN
395       SELECT count(*)
396         INTO l_count
397         FROM ZX_API_REGISTRATIONS
398        WHERE api_owner_id = l_api_owner_id
399          AND service_type_id = l_srvc_type_id;
400 
401     EXCEPTION
402       WHEN NO_DATA_FOUND  THEN
403       fnd_message.set_name('ZX', 'ZX_SRVC_RECORD_NOT_EXISTS');
404       x_error_msg_tbl(l_error_counter) := fnd_message.get;
405       x_return_status := FND_API.G_RET_STS_ERROR;
406       l_error_counter := l_error_counter+1;
407     END;
408 
409 	DELETE from ZX_API_REGISTRATIONS
410 	  WHERE EXISTS (SELECT *
411 	                  FROM zx_api_registrations reg,
412 					       zx_api_code_combinations cmbn,
413 						   zx_service_types srvc
414 					  WHERE reg.api_owner_id = l_api_owner_id
415 	                    AND srvc.service_type_id = reg.service_type_id
416 	                    AND srvc.service_type_code = p_srvc_type_code
417 	                    AND cmbn.segment_attribute1 = p_country_code
418 	                    AND cmbn.segment_attribute2 = p_business_flow
419 	                    AND reg.context_ccid = cmbn.code_combination_id
420                     );
421 
422     /*Update the status back to zx_api_statuses table*/
423     IF x_error_msg_tbl.COUNT = 0 THEN
424       BEGIN
425         SELECT status_code
426           INTO l_api_status
427           FROM ZX_API_OWNER_STATUSES
428          WHERE api_owner_id         =  l_api_owner_id
429            AND service_category_code = G_SRVC_CATEGORY;
430 
431          EXCEPTION
432            WHEN no_data_found then
433              null;
434       END;
435 
436       IF l_count = 1 THEN
437         IF l_api_status in ('NEW','GENERATED','MODIFIED') THEN
438            UPDATE ZX_API_OWNER_STATUSES
439               SET status_code = 'DELETED'
440             WHERE api_owner_id   =  l_api_owner_id
441               AND service_category_code = G_SRVC_CATEGORY;
442         END IF;
443       ELSE
444         IF l_api_status = 'GENERATED' THEN
445            UPDATE ZX_API_OWNER_STATUSES
446               SET status_code = 'MODIFIED'
447             WHERE api_owner_id   =  l_api_owner_id
448               AND service_category_code = G_SRVC_CATEGORY;
449         END IF;
450       END IF;
451     END IF;
452 
453    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
454      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'()-');
455    END IF;
456 
460          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
457     EXCEPTION
458        WHEN OTHERS THEN
459          ROLLBACK TO insert_row_Pvt;
461          FND_MESSAGE.set_name('ZX','ZX_UNEXPECTED_ERROR');
462          x_error_msg_tbl(l_error_counter) := fnd_message.get;
463          l_error_counter := l_error_counter+1;
464          IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
465             FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
466          END IF;
467  END DELETE_SRVC_REGISTRATION;
468 
469 
470 PROCEDURE execute_srvc_plugin (
471   p_api_version	    IN  NUMBER,
472   x_error_msg_tbl   OUT NOCOPY error_messages_tbl,
473   x_return_status   OUT NOCOPY VARCHAR2,
474   p_srvc_prvdr_name IN VARCHAR2
475  )  IS
476   l_api_name        CONSTANT VARCHAR2(30) := 'EXECUTE_SRVC_PLUGIN';
477   l_api_owner_id    NUMBER;
478   l_error_counter   NUMBER;
479   l_request_id      NUMBER;
480 
481  BEGIN
482    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
483      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
484    END IF;
485 
486     /*--------------------------------------------------+
487     |   Standard start of API savepoint                 |
488     +--------------------------------------------------*/
489     SAVEPOINT execute_srvc_plugin_pvt;
490 
491    /*Set the return status to Success */
492    x_return_status := FND_API.G_RET_STS_SUCCESS;
493 
494    /*Validate Service Provider Name*/
495    BEGIN
496      IF p_srvc_prvdr_name is not null THEN
497        SELECT ptp.party_tax_profile_id
498         INTO  l_api_owner_id
499          FROM HZ_PARTIES pty,
500               ZX_PARTY_TAX_PROFILE ptp
501          WHERE pty.party_name = p_srvc_prvdr_name
502            AND pty.party_id = ptp.party_id
503            AND ptp.provider_type_code in ('BOTH', 'SERVICE')
504            AND (ptp.party_tax_profile_id =1
505              OR ptp.party_tax_profile_id=2);
506      ELSE
507        fnd_message.set_name('ZX', 'ZX_SRVC_PROVIDER_REQUIRED');
508        x_error_msg_tbl(l_error_counter) := fnd_message.get;
509        x_return_status := FND_API.G_RET_STS_ERROR;
510        l_error_counter := l_error_counter+1;
511 	 END IF;
512 
513      EXCEPTION
514        WHEN NO_DATA_FOUND THEN
515        fnd_message.set_name('ZX', 'ZX_SRVC_PROVIDER_REQUIRED');
516        x_error_msg_tbl(l_error_counter) := fnd_message.get;
517        x_return_status := FND_API.G_RET_STS_ERROR;
518        l_error_counter := l_error_counter+1;
519    END;
520 
521    IF x_error_msg_tbl.COUNT = 0 THEN
522      l_request_id  := fnd_request.submit_request
523                        (
524                          application      => 'ZX',
525                          program          => 'ZXPTNRSRVCPLUGIN',
526                          sub_request      => false,
527                          argument1        => G_SRVC_CATEGORY,
528                          argument2        => l_api_owner_id);
529       commit;
530    END IF;
531 
532    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
533      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'()-');
534    END IF;
535 
536    EXCEPTION
537        WHEN OTHERS THEN
538          ROLLBACK TO execute_srvc_plugin_pvt;
539          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
540          fnd_message.set_name('ZX', 'ZX_UNEXPECTED_ERROR');
541          x_error_msg_tbl(l_error_counter) := fnd_message.get;
542          l_error_counter := l_error_counter+1;
543          IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
544             FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
545          END IF;
546 
547   END  execute_srvc_plugin;
548 END ZX_API_PRVDR_PUB;