DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_AM_SEND_FULFILLMENT_PVT

Source


1 PACKAGE BODY OKL_AM_SEND_FULFILLMENT_PVT AS
2 /* $Header: OKLRSFWB.pls 115.13 2002/08/23 17:26:41 rmunjulu noship $ */
3 
4 
5   -- Start of comments
6   --
7   -- Procedure Name	: send_fulfillment
8   -- Description	  : Generic procedure which can be called from any AM screen
9   --                  to launch fulfillment
10   -- Business Rules	:
11   -- Parameters		  :
12   -- Version		    : 1.0
13   --
14   -- End of comments
15   PROCEDURE send_fulfillment (
16            p_api_version                 IN  NUMBER,
17            p_init_msg_list               IN  VARCHAR2,
18            x_return_status               OUT NOCOPY VARCHAR2,
19            x_msg_count                   OUT NOCOPY NUMBER,
20            x_msg_data                    OUT NOCOPY VARCHAR2,
21            p_send_rec                    IN  full_rec_type,
22            x_send_rec                    OUT NOCOPY full_rec_type) IS
23 
24 
25     l_return_status          VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
26     l_api_name               CONSTANT VARCHAR2(30):= 'send_fulfillment';
27     l_api_version            CONSTANT NUMBER      := 1;
28     l_recipient_type         VARCHAR2(3);
29     l_pt_bind_names          JTF_FM_REQUEST_GRP.G_VARCHAR_TBL_TYPE;
30     l_pt_bind_values         JTF_FM_REQUEST_GRP.G_VARCHAR_TBL_TYPE;
31     l_pt_bind_types          JTF_FM_REQUEST_GRP.G_VARCHAR_TBL_TYPE;
32     lp_send_rec              full_rec_type := p_send_rec;
33     lx_send_rec              full_rec_type := p_send_rec;
34 
35   BEGIN
36 
37 
38     -- ***************************************************************
39     -- Check API version, initialize message list and create savepoint
40     -- ***************************************************************
41 
42     --Check API version, initialize message list and create savepoint.
43     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
44                                               G_PKG_NAME,
45                                               p_init_msg_list,
46                                               l_api_version,
47                                               p_api_version,
48                                               '_PVT',
49                                               x_return_status);
50 
51     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
52       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
53     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
54       RAISE OKL_API.G_EXCEPTION_ERROR;
55     END IF;
56 
57 
58     -- ****************************************************
59     -- Set In Parameters for Send Fulfillment
60     -- ****************************************************
61 
62     -- Set the recipient type
63     IF    UPPER(lp_send_rec.p_recipient_type) = 'OKX_PARTY'      THEN
64        l_recipient_type := 'P';
65     ELSIF UPPER(lp_send_rec.p_recipient_type) = 'OKX_PARTYSITE'  THEN
66        l_recipient_type := 'PS';
67     ELSIF UPPER(lp_send_rec.p_recipient_type) = 'OKX_PCONTACT'   THEN
68        l_recipient_type := 'PC';
69     ELSIF UPPER(lp_send_rec.p_recipient_type) = 'OKX_VENDOR'     THEN
70        l_recipient_type := 'V';
71     ELSIF UPPER(lp_send_rec.p_recipient_type) = 'OKX_VENDORSITE' THEN
72        l_recipient_type := 'VS';
73     ELSIF UPPER(lp_send_rec.p_recipient_type) = 'OKX_VCONTACT'   THEN
74        l_recipient_type := 'VC';
75     ELSIF UPPER(lp_send_rec.p_recipient_type) = 'OKX_OPERUNIT'   THEN
76        l_recipient_type := 'O';
77     ELSE -- default is PARTY
78        l_recipient_type := 'P';
79     END IF;
80 
81     -- Initialize tbl types
82     l_pt_bind_types(1)  := OKL_API.G_MISS_CHAR;
83     l_pt_bind_values(1) := OKL_API.G_MISS_CHAR;
84     l_pt_bind_types(1)  := OKL_API.G_MISS_CHAR;
85 
86 
87     -- *****************
88     -- Call Fulfillment
89     -- *****************
90 
91     -- Call the fulfillment link from AM
92     OKL_AM_UTIL_PVT.execute_fulfillment_request(
93             p_api_version                  => p_api_version,
94             x_return_status                => l_return_status,
95             x_msg_count                    => x_msg_count,
96             x_msg_data                     => x_msg_data,
97             p_ptm_code                     => lp_send_rec.p_ptm_code,
98             p_agent_id                     => lp_send_rec.p_agent_id,
99             p_transaction_id               => lp_send_rec.p_transaction_id,
100             p_recipient_type               => l_recipient_type,
101             p_recipient_id                 => lp_send_rec.p_recipient_id,
102             p_recipient_email              => lp_send_rec.p_recipient_email,
103             p_pt_bind_names                => l_pt_bind_names,
104             p_pt_bind_values               => l_pt_bind_values,
105             p_pt_bind_types                => l_pt_bind_types);
106 
107     -- Raise exception when error
108     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
109       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
110     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
111       RAISE OKL_API.G_EXCEPTION_ERROR;
112     END IF;
113 
114 
115     -- *******************
116     -- Set Out Parameters
117     -- *******************
118 
119     x_return_status :=  l_return_status;
120     x_send_rec      :=  lx_send_rec;
121 
122 
123     -- *****************
124     -- End Transaction
125     -- *****************
126 
127     -- end the transaction
128     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
129 
130   EXCEPTION
131     WHEN OKL_API.G_EXCEPTION_ERROR THEN
132       x_return_status := OKL_API.HANDLE_EXCEPTIONS
133       (
134         l_api_name,
135         G_PKG_NAME,
136         'OKL_API.G_RET_STS_ERROR',
137         x_msg_count,
138         x_msg_data,
139         '_PVT'
140       );
141     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
142       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
143       (
144         l_api_name,
145         G_PKG_NAME,
146         'OKL_API.G_RET_STS_UNEXP_ERROR',
147         x_msg_count,
148         x_msg_data,
149         '_PVT'
150       );
151     WHEN OTHERS THEN
152       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
153       (
154         l_api_name,
155         G_PKG_NAME,
156         'OTHERS',
157         x_msg_count,
158         x_msg_data,
159         '_PVT'
160       );
161   END send_fulfillment;
162 
163 
164 
165   -- Start of comments
166   --
167   -- Procedure Name	: send_fulfillment
168   -- Description	  : Generic procedure which can be called from any AM screen
169   --                  to launch fulfillment. Can be used to send fulfullment to
170   --                  multiple parties/contacts/vendors simultaneously
171   -- Business Rules	:
172   -- Parameters		  :
173   -- Version		    : 1.0
174   --
175   -- End of comments
176   PROCEDURE send_fulfillment (
177            p_api_version                 IN  NUMBER,
178            p_init_msg_list               IN  VARCHAR2,
179            x_return_status               OUT NOCOPY VARCHAR2,
180            x_msg_count                   OUT NOCOPY NUMBER,
181            x_msg_data                    OUT NOCOPY VARCHAR2,
182            p_send_tbl                    IN  full_tbl_type,
183            x_send_tbl                    OUT NOCOPY full_tbl_type) IS
184 
185 
186     l_return_status          VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
187     l_api_name               CONSTANT VARCHAR2(30):= 'send_fulfillment';
188     l_api_version            CONSTANT NUMBER      := 1;
189     l_overall_status         VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
190     i                        NUMBER;
191     lp_send_tbl              full_tbl_type := p_send_tbl;
192     lx_send_tbl              full_tbl_type := p_send_tbl;
193 
194   BEGIN
195 
196 
197     -- ***************************************************************
198     -- Check API version, initialize message list and create savepoint
199     -- ***************************************************************
200 
201     --Check API version, initialize message list and create savepoint.
202     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
203                                               G_PKG_NAME,
204                                               p_init_msg_list,
205                                               l_api_version,
206                                               p_api_version,
207                                               '_PVT',
208                                               x_return_status);
209 
210     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
211       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
212     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
213       RAISE OKL_API.G_EXCEPTION_ERROR;
214     END IF;
215 
216 
217     -- *****************
218     -- Call Fulfillment
219     -- *****************
220 
221     -- Call the rec type procedure
222     IF (p_send_tbl.COUNT > 0) THEN
223       i := p_send_tbl.FIRST;
224       LOOP
225         send_fulfillment (
226           p_api_version                  => p_api_version,
227           p_init_msg_list                => OKL_API.G_FALSE,
228           x_return_status                => l_return_status,
229           x_msg_count                    => x_msg_count,
230           x_msg_data                     => x_msg_data,
231           p_send_rec                     => lp_send_tbl(i),
232           x_send_rec                     => lx_send_tbl(i));
233 
234         -- Set the overall status
235         IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
236            l_overall_status := l_return_status;
237         END IF;
238 
239         EXIT WHEN (i = lp_send_tbl.LAST);
240 
241         i := lp_send_tbl.NEXT(i);
242       END LOOP;
243     END IF;
244 
245 
246     -- *******************
247     -- Set Out Parameters
248     -- *******************
249 
250     -- Set the return status
251     x_return_status :=  l_overall_status;
252     x_send_tbl      :=  lx_send_tbl;
253 
254 
255     -- *****************
256     -- End Transaction
257     -- *****************
258 
259     -- end the transaction
260     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
261 
262   EXCEPTION
263     WHEN OKL_API.G_EXCEPTION_ERROR THEN
264       x_return_status := OKL_API.HANDLE_EXCEPTIONS
265       (
266         l_api_name,
267         G_PKG_NAME,
268         'OKL_API.G_RET_STS_ERROR',
269         x_msg_count,
270         x_msg_data,
271         '_PVT'
272       );
273     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
274       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
275       (
276         l_api_name,
277         G_PKG_NAME,
278         'OKL_API.G_RET_STS_UNEXP_ERROR',
279         x_msg_count,
280         x_msg_data,
281         '_PVT'
282       );
283     WHEN OTHERS THEN
284       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
285       (
286         l_api_name,
287         G_PKG_NAME,
288         'OTHERS',
289         x_msg_count,
290         x_msg_data,
291         '_PVT'
292       );
293   END send_fulfillment;
294 
295 
296   -- Start of comments
297   --
298   -- Procedure Name	: send_terminate_quote
299   -- Description	  : Procedure to send the party or contact info or contact point info
300   -- Business Rules	:
301   -- Parameters		  :
302   -- Version		    : 1.0
303   --
304   -- End of comments
305   PROCEDURE send_terminate_quote (
306            p_api_version                 IN  NUMBER,
307            p_init_msg_list               IN  VARCHAR2,
308            x_return_status               OUT NOCOPY VARCHAR2,
309            x_msg_count                   OUT NOCOPY NUMBER,
310            x_msg_data                    OUT NOCOPY VARCHAR2,
311            p_party_tbl                   IN  q_party_uv_tbl_type,
312            x_party_tbl                   OUT NOCOPY q_party_uv_tbl_type,
313            p_qtev_rec                    IN  qtev_rec_type,
314            x_qtev_rec                    OUT NOCOPY qtev_rec_type) IS
315 
316 
317     lp_party_tbl             q_party_uv_tbl_type := p_party_tbl;
318     lx_party_tbl             q_party_uv_tbl_type := p_party_tbl;
319     lp_send_tbl              full_tbl_type;
320     lx_send_tbl              full_tbl_type;
321 
322     l_return_status          VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
323     l_api_name               CONSTANT VARCHAR2(30):= 'send_terminate_quote';
324     l_api_version            CONSTANT NUMBER      := 1;
325     l_recipient_type         VARCHAR2(3);
326     i                        NUMBER;
327     l_ptm_code               CONSTANT VARCHAR2(200) := 'AMTER';
328     l_agent_id               CONSTANT NUMBER := FND_GLOBAL.user_id;
329 
330   BEGIN
331 
332     -- ***************************************************************
333     -- Check API version, initialize message list and create savepoint
334     -- ***************************************************************
335 
336     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
337                                               G_PKG_NAME,
338                                               p_init_msg_list,
339                                               l_api_version,
340                                               p_api_version,
341                                               '_PVT',
342                                               x_return_status);
343 
344     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
345       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
346     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
347       RAISE OKL_API.G_EXCEPTION_ERROR;
348     END IF;
349 
350 
351     -- ****************************************************
352     -- Validate and Set In Parameters for Send Fulfillment
353     -- ****************************************************
354 
355     i := lp_party_tbl.FIRST;
356     LOOP
357 
358       -- If no party details then error
359       IF  lp_party_tbl(i).po_party_id1 IS NULL
360       OR  lp_party_tbl(i).po_party_id1 = OKL_API.G_MISS_CHAR THEN
361 
362         -- Invalid value for po_party_id1.
363         OKL_API.SET_MESSAGE(p_app_name     => OKC_API.G_APP_NAME,
364                        	    p_msg_name     => OKC_API.G_INVALID_VALUE,
365                             p_token1       => G_COL_NAME_TOKEN,
366                             p_token1_value => 'po_party_id1');
367 
368         RAISE OKL_API.G_EXCEPTION_ERROR;
369 
370       END IF;
371 
372       -- If no party details then error
373       IF  lp_party_tbl(i).po_party_object IS NULL
374       OR  lp_party_tbl(i).po_party_object = OKL_API.G_MISS_CHAR THEN
375 
376         -- Invalid value for po_party_object.
377         OKL_API.SET_MESSAGE(p_app_name     => OKC_API.G_APP_NAME,
378                        	    p_msg_name     => OKC_API.G_INVALID_VALUE,
379                             p_token1       => G_COL_NAME_TOKEN,
380                             p_token1_value => 'po_party_object');
381 
382         RAISE OKL_API.G_EXCEPTION_ERROR;
383 
384       END IF;
385 
386       -- If party object passed then make sure party name is also passed
387       IF  NVL(lp_party_tbl(i).po_party_object, OKL_API.G_MISS_CHAR) <> OKL_API.G_MISS_CHAR
388       AND NVL(lp_party_tbl(i).po_party_name, OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR THEN
389 
390         -- Required value for po_party_name.
391         OKL_API.SET_MESSAGE(p_app_name     => OKC_API.G_APP_NAME,
392                        	    p_msg_name     => OKC_API.G_REQUIRED_VALUE,
393                             p_token1       => G_COL_NAME_TOKEN,
394                             p_token1_value => 'po_party_name');
395 
396         RAISE OKL_API.G_EXCEPTION_ERROR;
397 
398       END IF;
399 
400       -- If contact object passed then make sure contact name is also passed
401       IF  NVL(lp_party_tbl(i).co_contact_object, OKL_API.G_MISS_CHAR) <> OKL_API.G_MISS_CHAR
402       AND NVL(lp_party_tbl(i).co_contact_name, OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR THEN
403 
404         -- Required value for po_party_name.
405         OKL_API.SET_MESSAGE(p_app_name     => OKC_API.G_APP_NAME,
406                        	    p_msg_name     => OKC_API.G_REQUIRED_VALUE,
407                             p_token1       => G_COL_NAME_TOKEN,
408                             p_token1_value => 'co_contact_name');
409 
410         RAISE OKL_API.G_EXCEPTION_ERROR;
411 
412       END IF;
413 
414       -- If po_party_id1 not null and po_party_object not null and
415       -- co_contact_id null then party/vendor details so recipient is po_party
416       IF  NVL(lp_party_tbl(i).po_party_id1, OKL_API.G_MISS_CHAR) <>  OKL_API.G_MISS_CHAR
417       AND NVL(lp_party_tbl(i).po_party_object, OKL_API.G_MISS_CHAR) <>  OKL_API.G_MISS_CHAR
418       AND NVL(lp_party_tbl(i).co_contact_id1, OKL_API.G_MISS_CHAR) =  OKL_API.G_MISS_CHAR
419       AND NVL(lp_party_tbl(i).co_contact_object, OKL_API.G_MISS_CHAR) =  OKL_API.G_MISS_CHAR
420       AND NVL(lp_party_tbl(i).cp_point_id, OKL_API.G_MISS_NUM) =  OKL_API.G_MISS_NUM THEN
421 
422         IF NVL(lp_party_tbl(i).cp_email, OKL_API.G_MISS_CHAR) <>  OKL_API.G_MISS_CHAR THEN
423 
424           -- PARTY WITH EMAIL--
425           lp_send_tbl(i).p_recipient_type := lp_party_tbl(i).po_party_object;
426           lp_send_tbl(i).p_recipient_id   := lp_party_tbl(i).po_party_id1;
427           lp_send_tbl(i).p_recipient_email:= lp_party_tbl(i).cp_email;
428 
429         ELSE
430 
431           IF NVL(lp_party_tbl(i).co_contact_name, OKL_API.G_MISS_CHAR) <> OKL_API.G_MISS_CHAR THEN
432 
433             -- Email Id does not exist for the contact CONTACT_NAME for party PARTY_NAME,
434             -- unable to process fulfillment request.
435             OKL_API.SET_MESSAGE(p_app_name     => OKL_API.G_APP_NAME,
436                            	    p_msg_name     => 'OKL_AM_FUL_EMAIL_ERR',
437                                 p_token1       => 'CONTACT_NAME',
438                                 p_token1_value => lp_party_tbl(i).co_contact_name,
439                                 p_token2       => 'PARTY_NAME',
440                                 p_token2_value => lp_party_tbl(i).po_party_name);
441 
442             RAISE OKL_API.G_EXCEPTION_ERROR;
443 
444           ELSE
445 
446             -- Email Id does not exist for the party PARTY_NAME,
447             -- unable to process fulfillment request.
448             OKL_API.SET_MESSAGE(p_app_name     => OKL_API.G_APP_NAME,
449                            	    p_msg_name     => 'OKL_AM_FUL_EMAIL_MSG',
450                                 p_token1       => 'PARTY_NAME',
451                                 p_token1_value => lp_party_tbl(i).po_party_name);
452 
453             RAISE OKL_API.G_EXCEPTION_ERROR;
454 
455           END IF;
456 
457         END IF;
458 
459       -- If co_contact_id1 not null and co_contact_object not null and
460       -- cp_point_id null then contact details so recipient is co_contact
461       ELSIF NVL(lp_party_tbl(i).co_contact_id1, OKL_API.G_MISS_CHAR) <>  OKL_API.G_MISS_CHAR
462       AND NVL(lp_party_tbl(i).co_contact_object, OKL_API.G_MISS_CHAR) <>  OKL_API.G_MISS_CHAR
463       AND NVL(lp_party_tbl(i).cp_point_id, OKL_API.G_MISS_NUM) =  OKL_API.G_MISS_NUM
464       AND NVL(lp_party_tbl(i).cp_email, OKL_API.G_MISS_CHAR) =  OKL_API.G_MISS_CHAR THEN
465 
466         IF NVL(lp_party_tbl(i).co_email, OKL_API.G_MISS_CHAR) <>  OKL_API.G_MISS_CHAR THEN
467 
468           -- CONTACT WITH EMAIL--
469           lp_send_tbl(i).p_recipient_type := lp_party_tbl(i).co_contact_object;
470           lp_send_tbl(i).p_recipient_id   := lp_party_tbl(i).co_contact_id1;
471           lp_send_tbl(i).p_recipient_email:= lp_party_tbl(i).co_email;
472 
473         ELSE
474 
475           IF NVL(lp_party_tbl(i).co_contact_name, OKL_API.G_MISS_CHAR) <> OKL_API.G_MISS_CHAR THEN
476 
477             -- Email Id does not exist for the contact CONTACT_NAME for party PARTY_NAME,
478             -- unable to process fulfillment request.
479             OKL_API.SET_MESSAGE(p_app_name     => OKL_API.G_APP_NAME,
480                            	    p_msg_name     => 'OKL_AM_FUL_EMAIL_ERR',
481                                 p_token1       => 'CONTACT_NAME',
482                                 p_token1_value => lp_party_tbl(i).co_contact_name,
483                                 p_token2       => 'PARTY_NAME',
484                                 p_token2_value => lp_party_tbl(i).po_party_name);
485 
486             RAISE OKL_API.G_EXCEPTION_ERROR;
487 
488           ELSE
489 
490             -- Email Id does not exist for the party PARTY_NAME,
491             -- unable to process fulfillment request.
492             OKL_API.SET_MESSAGE(p_app_name     => OKL_API.G_APP_NAME,
493                            	    p_msg_name     => 'OKL_AM_FUL_EMAIL_MSG',
494                                 p_token1       => 'PARTY_NAME',
495                                 p_token1_value => lp_party_tbl(i).po_party_name);
496 
497             RAISE OKL_API.G_EXCEPTION_ERROR;
498 
499           END IF;
500 
501         END IF;
502 
503       -- If cp_point_id not null and cp_email not null
504       -- then contact point details so recipient is co_contact
505       ELSIF NVL(lp_party_tbl(i).cp_point_id, OKL_API.G_MISS_NUM) <>  OKL_API.G_MISS_NUM THEN
506         IF NVL(lp_party_tbl(i).cp_email, OKL_API.G_MISS_CHAR) <>  OKL_API.G_MISS_CHAR THEN
507 
508           -- CONTACT POINT WITH EMAIL--
509           lp_send_tbl(i).p_recipient_type := lp_party_tbl(i).co_contact_object;
510           lp_send_tbl(i).p_recipient_id   := lp_party_tbl(i).co_contact_id1;
511           lp_send_tbl(i).p_recipient_email:= lp_party_tbl(i).cp_email;
512 
513         ELSE
514 
515           IF NVL(lp_party_tbl(i).co_contact_name, OKL_API.G_MISS_CHAR) <> OKL_API.G_MISS_CHAR THEN
516 
517             -- Email Id does not exist for the contact CONTACT_NAME for party PARTY_NAME,
518             -- unable to process fulfillment request.
519             OKL_API.SET_MESSAGE(p_app_name     => OKL_API.G_APP_NAME,
520                            	    p_msg_name     => 'OKL_AM_FUL_EMAIL_ERR',
521                                 p_token1       => 'CONTACT_NAME',
522                                 p_token1_value => lp_party_tbl(i).co_contact_name,
523                                 p_token2       => 'PARTY_NAME',
524                                 p_token2_value => lp_party_tbl(i).po_party_name);
525 
526             RAISE OKL_API.G_EXCEPTION_ERROR;
527 
528           ELSE
529 
530             -- Email Id does not exist for the party PARTY_NAME,
531             -- unable to process fulfillment request.
532             OKL_API.SET_MESSAGE(p_app_name     => OKL_API.G_APP_NAME,
533                            	    p_msg_name     => 'OKL_AM_FUL_EMAIL_MSG',
534                                 p_token1       => 'PARTY_NAME',
535                                 p_token1_value => lp_party_tbl(i).po_party_name);
536 
537             RAISE OKL_API.G_EXCEPTION_ERROR;
538 
539           END IF;
540 
541         END IF;
542 
543       ELSE -- Some values missing or not a proper party/contact/contactpoint
544 
545         -- Invalid value passed to fulfillment server, unable to process fulfillment request.
546         OKL_API.SET_MESSAGE(p_app_name => OKL_API.G_APP_NAME,
547                        	    p_msg_name => 'OKL_AM_FUL_REQUEST_ERR');
548 
549         RAISE OKL_API.G_EXCEPTION_ERROR;
550 
551       END IF;
552 
553 
554       lp_send_tbl(i).p_ptm_code       := l_ptm_code;
555       lp_send_tbl(i).p_agent_id       := l_agent_id;
556       lp_send_tbl(i).p_transaction_id := lp_party_tbl(i).quote_id;
557 
558 
559       EXIT WHEN (i = lp_party_tbl.LAST);
560       i := lp_party_tbl.NEXT(i);
561     END LOOP;
562 
563 
564     -- *****************
565     -- Call Fulfillment
566     -- *****************
567 
568     send_fulfillment (
569           p_api_version                  => p_api_version,
570           p_init_msg_list                => OKL_API.G_FALSE,
571           x_return_status                => l_return_status,
572           x_msg_count                    => x_msg_count,
573           x_msg_data                     => x_msg_data,
574           p_send_tbl                     => lp_send_tbl,
575           x_send_tbl                     => lx_send_tbl);
576 
577 
578     -- Raise exception when error
579     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
580       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
581     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
582       RAISE OKL_API.G_EXCEPTION_ERROR;
583     END IF;
584 
585 
586     -- *******************
587     -- Set Out Parameters
588     -- *******************
589 
590     x_return_status :=  l_return_status;
591     x_party_tbl     :=  lx_party_tbl;
592 
593 
594     -- *****************
595     -- End Transaction
596     -- *****************
597 
598     -- end the transaction
599     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
600 
601   EXCEPTION
602     WHEN OKL_API.G_EXCEPTION_ERROR THEN
603       x_return_status := OKL_API.HANDLE_EXCEPTIONS
604       (
605         l_api_name,
606         G_PKG_NAME,
607         'OKL_API.G_RET_STS_ERROR',
608         x_msg_count,
609         x_msg_data,
610         '_PVT'
611       );
612     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
613       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
614       (
615         l_api_name,
616         G_PKG_NAME,
617         'OKL_API.G_RET_STS_UNEXP_ERROR',
618         x_msg_count,
619         x_msg_data,
620         '_PVT'
621       );
622     WHEN OTHERS THEN
623       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
624       (
625         l_api_name,
626         G_PKG_NAME,
627         'OTHERS',
628         x_msg_count,
629         x_msg_data,
630         '_PVT'
631       );
632   END send_terminate_quote;
633 
634 
635   -- Start of comments
636   --
637   -- Procedure Name	: send_repurchase_quote
638   -- Description	  : Procedure to launch fulfillment from repurchase asset scrn
639   -- Business Rules	:
640   -- Parameters		  :
641   -- Version		    : 1.0
642   --
643   -- End of comments
644 
645   PROCEDURE send_repurchase_quote (
646            p_api_version                 IN  NUMBER,
647            p_init_msg_list               IN  VARCHAR2,
648            x_return_status               OUT NOCOPY VARCHAR2,
649            x_msg_count                   OUT NOCOPY NUMBER,
650            x_msg_data                    OUT NOCOPY VARCHAR2,
651            p_send_tbl                    IN  full_tbl_type,
652            x_send_tbl                    OUT NOCOPY full_tbl_type,
653            p_qtev_rec                    IN  qtev_rec_type,
654            x_qtev_rec                    OUT NOCOPY qtev_rec_type) IS
655 
656 
657     -- Get the recipient for the quote who is a vendor
658     CURSOR okl_get_vendor_for_q_csr ( p_qte_id IN NUMBER) IS
659       SELECT OQPV.qp_party_id1    recipient_id,
660              OQPV.qp_party_object recipient_type
661       FROM   OKL_AM_QUOTE_PARTIES_UV  OQPV
662       WHERE  OQPV.quote_id = p_qte_id
663       AND    OQPV.qp_role_code = 'RECIPIENT';
664 
665     l_return_status          VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
666     l_api_name               CONSTANT VARCHAR2(30):= 'send_repurchase_quote';
667     l_api_version            CONSTANT NUMBER      := 1;
668     l_overall_status         VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
669     l_recipient_id           VARCHAR2(200);
670     l_recipient_type         VARCHAR2(200);
671     l_ptm_code               VARCHAR2(200);
672     l_pt_bind_names          JTF_FM_REQUEST_GRP.G_VARCHAR_TBL_TYPE;
673     l_pt_bind_values         JTF_FM_REQUEST_GRP.G_VARCHAR_TBL_TYPE;
674     l_pt_bind_types          JTF_FM_REQUEST_GRP.G_VARCHAR_TBL_TYPE;
675     i                        NUMBER;
676     lp_send_tbl              full_tbl_type := p_send_tbl;
677     lx_send_tbl              full_tbl_type := p_send_tbl;
678     lp_qtev_rec              qtev_rec_type := p_qtev_rec;
679     lx_qtev_rec              qtev_rec_type := p_qtev_rec;
680 
681   BEGIN
682 
683 
684     -- ***************************************************************
685     -- Check API version, initialize message list and create savepoint
686     -- ***************************************************************
687 
688     --Check API version, initialize message list and create savepoint.
689     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
690                                               G_PKG_NAME,
691                                               p_init_msg_list,
692                                               l_api_version,
693                                               p_api_version,
694                                               '_PVT',
695                                               x_return_status);
696 
697     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
698       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
699     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
700       RAISE OKL_API.G_EXCEPTION_ERROR;
701     END IF;
702 
703 
704     -- ****************************************************
705     -- Set In Parameters for Send Fulfillment
706     -- ****************************************************
707 
708     -- Set the ptm code for fulfillment api
709     l_ptm_code       := 'AMREP'; -- for repurchase quote
710 
711     -- For each recipient set the fulfillment record
712     IF lp_send_tbl.COUNT > 0 THEN
713       i := lp_send_tbl.FIRST;
714       LOOP
715 
716         -- Get the vendor id for the quote id(transaction id)
717         OPEN  okl_get_vendor_for_q_csr ( lp_send_tbl(i).p_transaction_id);
718         FETCH okl_get_vendor_for_q_csr INTO l_recipient_id, l_recipient_type;
719         CLOSE okl_get_vendor_for_q_csr;
720 
721         lp_send_tbl(i).p_ptm_code       := l_ptm_code;
722         lp_send_tbl(i).p_recipient_id   := l_recipient_id;
723         lp_send_tbl(i).p_recipient_type := l_recipient_type;
724 
725         EXIT WHEN (i = lp_send_tbl.LAST);
726         i := lp_send_tbl.NEXT(i);
727       END LOOP;
728     END IF;
729 
730 
731 
732     -- *****************
733     -- Call Fulfillment
734     -- *****************
735 
736     IF lp_send_tbl.COUNT > 0 THEN
737 
738       -- Call the send fulfillment procedure
739       send_fulfillment(
740           p_api_version        => p_api_version,
741           p_init_msg_list      => OKL_API.G_FALSE,
742           x_return_status      => l_return_status,
743           x_msg_count          => x_msg_count,
744           x_msg_data           => x_msg_data,
745           p_send_tbl           => lp_send_tbl,
746           x_send_tbl           => lx_send_tbl);
747 
748       -- Raise exception when error
749       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
750         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
751       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
752         RAISE OKL_API.G_EXCEPTION_ERROR;
753       END IF;
754     END IF;
755 
756 
757     -- *******************
758     -- Set Out Parameters
759     -- *******************
760 
761     x_return_status :=  l_return_status;
762     x_send_tbl      :=  lx_send_tbl;
763     x_qtev_rec      :=  lx_qtev_rec;
764 
765 
766     -- *****************
767     -- End Transaction
768     -- *****************
769 
770     -- end the transaction
771     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
772 
773   EXCEPTION
774     WHEN OKL_API.G_EXCEPTION_ERROR THEN
775       IF okl_get_vendor_for_q_csr%ISOPEN THEN
776         CLOSE okl_get_vendor_for_q_csr;
777       END IF;
778       x_return_status := OKL_API.HANDLE_EXCEPTIONS
779       (
780         l_api_name,
781         G_PKG_NAME,
782         'OKL_API.G_RET_STS_ERROR',
783         x_msg_count,
784         x_msg_data,
785         '_PVT'
786       );
787     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
788       IF okl_get_vendor_for_q_csr%ISOPEN THEN
789         CLOSE okl_get_vendor_for_q_csr;
790       END IF;
791       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
792       (
793         l_api_name,
794         G_PKG_NAME,
795         'OKL_API.G_RET_STS_UNEXP_ERROR',
796         x_msg_count,
797         x_msg_data,
798         '_PVT'
799       );
800     WHEN OTHERS THEN
801       IF okl_get_vendor_for_q_csr%ISOPEN THEN
802         CLOSE okl_get_vendor_for_q_csr;
803       END IF;
804       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
805       (
806         l_api_name,
807         G_PKG_NAME,
808         'OTHERS',
809         x_msg_count,
810         x_msg_data,
811         '_PVT'
812       );
813   END send_repurchase_quote;
814 
815 
816   -- Start of comments
817   --
818   -- Procedure Name	: send_restructure_quote
819   -- Description	  : Procedure to launch fulfillment from restructure quote screen
820   -- Business Rules	:
821   -- Parameters		  :
822   -- Version		    : 1.0
823   --
824   -- End of comments
825   PROCEDURE send_restructure_quote (
826            p_api_version                 IN  NUMBER,
827            p_init_msg_list               IN  VARCHAR2,
828            x_return_status               OUT NOCOPY VARCHAR2,
829            x_msg_count                   OUT NOCOPY NUMBER,
830            x_msg_data                    OUT NOCOPY VARCHAR2,
831            p_send_tbl                    IN  full_tbl_type,
832            x_send_tbl                    OUT NOCOPY full_tbl_type,
833            p_qtev_rec                    IN  qtev_rec_type,
834            x_qtev_rec                    OUT NOCOPY qtev_rec_type) IS
835 
836 
837 
838     l_return_status          VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
839     l_api_name               CONSTANT VARCHAR2(30):= 'send_restructure_quote';
840     l_api_version            CONSTANT NUMBER      := 1;
841     i                        NUMBER;
842     lp_send_tbl              full_tbl_type := p_send_tbl;
843     lx_send_tbl              full_tbl_type := p_send_tbl;
844     lp_qtev_rec              qtev_rec_type := p_qtev_rec;
845     lx_qtev_rec              qtev_rec_type := p_qtev_rec;
846 
847   BEGIN
848 
849 
850     -- ***************************************************************
851     -- Check API version, initialize message list and create savepoint
852     -- ***************************************************************
853 
854     --Check API version, initialize message list and create savepoint.
855     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
856                                               G_PKG_NAME,
857                                               p_init_msg_list,
858                                               l_api_version,
859                                               p_api_version,
860                                               '_PVT',
861                                               x_return_status);
862 
863     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
864       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
865     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
866       RAISE OKL_API.G_EXCEPTION_ERROR;
867     END IF;
868 
869 
870     -- *****************
871     -- Call Fulfillment
872     -- *****************
873 
874     -- Call the send fulfillment procedure
875     send_fulfillment(
876           p_api_version                  => p_api_version,
877           p_init_msg_list                => OKL_API.G_FALSE,
878           x_return_status                => l_return_status,
879           x_msg_count                    => x_msg_count,
880           x_msg_data                     => x_msg_data,
881           p_send_tbl                     => lp_send_tbl,
882           x_send_tbl                     => lx_send_tbl);
883 
884     -- Raise exception when error
885     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
886       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
887     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
888       RAISE OKL_API.G_EXCEPTION_ERROR;
889     END IF;
890 
891 
892     -- *******************
893     -- Set Out Parameters
894     -- *******************
895 
896     x_return_status :=  l_return_status;
897     x_send_tbl      :=  lx_send_tbl;
898     x_qtev_rec      :=  lx_qtev_rec;
899 
900 
901     -- *****************
902     -- End Transaction
903     -- *****************
904 
905     -- end the transaction
906     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
907 
908   EXCEPTION
909     WHEN OKL_API.G_EXCEPTION_ERROR THEN
910       x_return_status := OKL_API.HANDLE_EXCEPTIONS
911       (
912         l_api_name,
913         G_PKG_NAME,
914         'OKL_API.G_RET_STS_ERROR',
915         x_msg_count,
916         x_msg_data,
917         '_PVT'
918       );
919     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
920       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
921       (
922         l_api_name,
923         G_PKG_NAME,
924         'OKL_API.G_RET_STS_UNEXP_ERROR',
925         x_msg_count,
926         x_msg_data,
927         '_PVT'
928       );
929     WHEN OTHERS THEN
930       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
931       (
932         l_api_name,
933         G_PKG_NAME,
934         'OTHERS',
935         x_msg_count,
936         x_msg_data,
937         '_PVT'
938       );
939   END send_restructure_quote;
940 
941 
942 
943   -- Start of comments
944   --
945   -- Procedure Name	: send_consolidate_quote
946   -- Description	  : Procedure to launch fulfillment from consolidate quote screen
947   -- Business Rules	:
948   -- Parameters		  :
949   -- Version		    : 1.0
950   --
951   -- End of comments
952   PROCEDURE send_consolidate_quote (
953            p_api_version                 IN  NUMBER,
954            p_init_msg_list               IN  VARCHAR2,
955            x_return_status               OUT NOCOPY VARCHAR2,
956            x_msg_count                   OUT NOCOPY NUMBER,
957            x_msg_data                    OUT NOCOPY VARCHAR2,
958            p_send_tbl                    IN  full_tbl_type,
959            x_send_tbl                    OUT NOCOPY full_tbl_type,
960            p_qtev_rec                    IN  qtev_rec_type,
961            x_qtev_rec                    OUT NOCOPY qtev_rec_type) IS
962 
963 
964 
965     l_return_status          VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
966     l_api_name               CONSTANT VARCHAR2(30):= 'send_consolidate_quote';
967     l_api_version            CONSTANT NUMBER      := 1;
968     i                        NUMBER;
969     lp_send_tbl              full_tbl_type := p_send_tbl;
970     lx_send_tbl              full_tbl_type := p_send_tbl;
971     lp_qtev_rec              qtev_rec_type := p_qtev_rec;
972     lx_qtev_rec              qtev_rec_type := p_qtev_rec;
973 
974   BEGIN
975 
976 
977     -- ***************************************************************
978     -- Check API version, initialize message list and create savepoint
979     -- ***************************************************************
980 
981     --Check API version, initialize message list and create savepoint.
982     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
983                                               G_PKG_NAME,
984                                               p_init_msg_list,
985                                               l_api_version,
986                                               p_api_version,
987                                               '_PVT',
988                                               x_return_status);
989 
990     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
991       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
992     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
993       RAISE OKL_API.G_EXCEPTION_ERROR;
994     END IF;
995 
996 
997     -- *****************
998     -- Call Fulfillment
999     -- *****************
1000 
1001     -- Call the send fulfillment procedure
1002     send_fulfillment(
1003           p_api_version                  => p_api_version,
1004           p_init_msg_list                => OKL_API.G_FALSE,
1005           x_return_status                => l_return_status,
1006           x_msg_count                    => x_msg_count,
1007           x_msg_data                     => x_msg_data,
1008           p_send_tbl                     => lp_send_tbl,
1009           x_send_tbl                     => lx_send_tbl);
1010 
1011     -- Raise exception when error
1012     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1013       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1014     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1015       RAISE OKL_API.G_EXCEPTION_ERROR;
1016     END IF;
1017 
1018 
1019     -- *******************
1020     -- Set Out Parameters
1021     -- *******************
1022 
1023     x_return_status :=  l_return_status;
1024     x_send_tbl      :=  lx_send_tbl;
1025     x_qtev_rec      :=  lx_qtev_rec;
1026 
1027 
1028     -- *****************
1029     -- End Transaction
1030     -- *****************
1031 
1032     -- end the transaction
1033     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1034 
1035   EXCEPTION
1036     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1037       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1038       (
1039         l_api_name,
1040         G_PKG_NAME,
1041         'OKL_API.G_RET_STS_ERROR',
1042         x_msg_count,
1043         x_msg_data,
1044         '_PVT'
1045       );
1046     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1047       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
1048       (
1049         l_api_name,
1050         G_PKG_NAME,
1051         'OKL_API.G_RET_STS_UNEXP_ERROR',
1052         x_msg_count,
1053         x_msg_data,
1054         '_PVT'
1055       );
1056     WHEN OTHERS THEN
1057       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
1058       (
1059         l_api_name,
1060         G_PKG_NAME,
1061         'OTHERS',
1062         x_msg_count,
1063         x_msg_data,
1064         '_PVT'
1065       );
1066   END send_consolidate_quote;
1067 
1068 
1069 END OKL_AM_SEND_FULFILLMENT_PVT;