DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_VSS_WF

Source


1 PACKAGE BODY OKL_VSS_WF AS
2 /* $Header: OKLRVSWB.pls 120.4 2007/08/14 11:45:20 zrehman ship $ */
3 
4 
5 PROCEDURE raise_business_event (
6                      p_khr_id   IN VARCHAR2,
7                      p_kle_id   IN VARCHAR2,
8                      p_qte_id   IN VARCHAR2,
9                      p_requestor_id IN VARCHAR2)  IS
10 
11 
12     l_parameter_list        WF_PARAMETER_LIST_T;
13     l_key                   WF_ITEMS.item_key%TYPE;
14     l_event_name            WF_EVENTS.NAME%TYPE := 'oracle.apps.okl.vss.requestrepquote';
15     l_seq                   NUMBER;
16 
17     -- Cursor to get the value of the sequence
18   	CURSOR okl_key_csr IS
19   	SELECT okl_wf_item_s.nextval
20   	FROM   DUAL;
21 
22   BEGIN
23 
24    IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
25           FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE,
26                         'OKL_VSS_WF.raise_business_event.',
27                         'Begin(+)');
28    END IF;
29 
30     SAVEPOINT raise_business_event_sv;
31 
32   	OPEN  okl_key_csr;
33   	FETCH okl_key_csr INTO l_seq;
34   	CLOSE okl_key_csr;
35 
36     l_key := l_event_name ||l_seq ;
37 
38     -- *******
39     -- Set the parameter list
40     -- *******
41 
42     WF_EVENT.AddParameterToList('SSCKHRID',
43                                 p_khr_id,
44                                 l_parameter_list);
45 
46     WF_EVENT.AddParameterToList('SSCKLEID',
47                                 p_kle_id,
48                                 l_parameter_list);
49      WF_EVENT.AddParameterToList('SSCQTEID',
50                                 p_qte_id,
51                                 l_parameter_list);
52      WF_EVENT.AddParameterToList('REQUESTOR_ID',
53                                 p_requestor_id,
54                                 l_parameter_list);
55 
56 
57     -- Raise Business Event
58     WF_EVENT.raise(
59                  p_event_name  => l_event_name,
60                  p_event_key   => l_key,
61                  p_parameters  => l_parameter_list);
62 
63     l_parameter_list.DELETE;
64 
65    IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
66           FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE,
67                         'OKL_VSS_WF.raise_business_event.',
68                         'End(-)');
69    END IF;
70 
71   EXCEPTION
72     WHEN OTHERS THEN
73       FND_MESSAGE.SET_NAME('OKL', 'OKL_API_OTHERS_EXCEP');
74       FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
75       FND_MSG_PUB.ADD;
76       IF okl_key_csr%ISOPEN THEN
77          CLOSE okl_key_csr;
78       END IF;
79       ROLLBACK TO raise_business_event_sv;
80     IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
81               FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
82                              'OKL_VSS_WF.raise_business_event.',
83                              'EXP - OTHERS');
84     END IF;
85 
86 END  raise_business_event;
87 
88 
89 -----------Create Repurchase Quote--
90 
91 procedure createRepurchaseQuote(
92                             p_api_version                    IN  NUMBER,
93                             p_init_msg_list                  IN  VARCHAR2,
94                             p_khr_id                         IN  NUMBER,
95                             p_kle_id                         IN  NUMBER,
96                             p_art_id                         IN  NUMBER,
97                             p_qtp_code                       IN  VARCHAR2,
98                             p_requestor_id                   IN  VARCHAR2,
99                             x_return_status                  OUT NOCOPY VARCHAR2,
100                             x_msg_count                      OUT NOCOPY NUMBER,
101                             x_msg_data                       OUT NOCOPY VARCHAR2) IS
102 
103     l_api_version        NUMBER          := 1.0;
104     l_init_msg_list      VARCHAR2(1)     := Okc_Api.g_false;
105 
106     l_return_status      VARCHAR2(1);
107     l_msg_count          NUMBER;
108     l_msg_data           VARCHAR2(2000);
109 
110     SUBTYPE qtev_rec_type IS OKL_AM_REPURCHASE_ASSET_PVT.qtev_rec_type;
111     SUBTYPE tqlv_tbl_type IS OKL_AM_REPURCHASE_ASSET_PVT.tqlv_tbl_type;
112 
113     l_qtev_rec                  qtev_rec_type;
114     x_qtev_rec                  qtev_rec_type;
115     l_tqlv_tbl                  tqlv_tbl_type;
116     x_tqlv_tbl                  tqlv_tbl_type;
117     i                           NUMBER :=0;
118 
119     BEGIN
120 
121     IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
122           FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE,
123                         'OKL_VSS_WF.createRepurchaseQuote.',
124                         'Begin(+)');
125        END IF;
126 
127     l_qtev_rec.khr_id           := p_khr_id;
128     l_qtev_rec.art_id           := p_art_id;
129     l_qtev_rec.qtp_code         := p_qtp_code;
130     l_tqlv_tbl(1).kle_id        := p_kle_id;
131 
132   OKL_AM_REPURCHASE_ASSET_PUB.create_repurchase_quote(
133     p_api_version,
134     p_init_msg_list,
135     l_return_status,
136     l_msg_count,
137     l_msg_data,
138     l_qtev_rec,
139     l_tqlv_tbl,
140     x_qtev_rec,
141     x_tqlv_tbl);
142 
143     x_return_status := l_return_status;
144     x_msg_count := l_msg_count;
145     x_msg_data := l_msg_data;
146 
147       IF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
148         RAISE OKL_API.G_EXCEPTION_ERROR;
149       ELSIF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
150         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
151       END IF;
152 
153       IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
154           FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE,
155                         'OKL_VSS_WF.createRepurchaseQuote.',
156                         'End(-)');
157        END IF;
158       -- Raise Event
159 
160       raise_business_event(  p_khr_id    ,
161                      p_kle_id     ,
162                      x_qtev_rec.id    ,
163                      p_requestor_id);
164 
165   EXCEPTION
166 
167     WHEN OKL_API.G_EXCEPTION_ERROR THEN
168       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
169       FND_MSG_PUB.count_and_get(p_count   => x_msg_count,
170                                 p_data    => x_msg_data);
171 
172      IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
173               FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
174                              'OKL_VSS_WF.createRepurchaseQuote.',
175                              'EXP - G_EXCEPTION_ERROR');
176            END IF;
177 
178     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
179       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
180       FND_MSG_PUB.count_and_get(p_count   => x_msg_count,
181                                 p_data    => x_msg_data);
182       IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
183               FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
184                              'OKL_VSS_WF.createRepurchaseQuote.',
185                              'EXP - G_EXCEPTION_UNEXPECTED_ERROR');
186            END IF;
187 
188     WHEN OTHERS THEN
189       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
190       FND_MSG_PUB.ADD_EXC_MSG('OKL_SSC_ASST_LOC_SERNUM_PUB','update_counter');
191       FND_MSG_PUB.count_and_get(p_count   => x_msg_count,
192                                 p_data    => x_msg_data);
193          IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
194               FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
195                              'OKL_VSS_WF.createRepurchaseQuote.',
196                              'EXP - OTHERS');
197            END IF;
198 
199 
200 END createRepurchaseQuote;
201 
202 
203 
204 
205 
206 
207 ----------------------------UPDATE COUNTERS------------------------------------------------------
208 
209 procedure  getCountersMessage  (itemtype in varchar2,
210                                  itemkey in varchar2,
211                                  actid in number,
212                                  funcmode in varchar2,
213                                  resultout out nocopy varchar2 )
214 
215 IS
216 
217 CURSOR user_info(p_id NUMBER) IS
218 SELECT user_name from fnd_user
219 WHERE user_id = p_id;
220 
221 CURSOR approver_cur(respKey varchar2) IS
222 SELECT responsibility_id
223 FROM fnd_responsibility
224 WHERE responsibility_key = respKey
225 AND application_id = 540;
226 
227 requestor_info_rec user_info%rowtype;
228 
229 p_requestor_id NUMBER;
230 p_resp_key varchar2(30);
231 
232 l_requestor_name varchar2(100);
233 l_approver_name  varchar2(100);
234 l_respString VARCHAR2(15) := 'FND_RESP540:';
235 l_approver_id varchar2(20);
236 
237 l_doc_attr  varchar2(20) := 'SSCUPASNDOC';
238 
239 
240 BEGIN
241 
242     IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
243           FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE,
244                         'OKL_VSS_WF.getCountersMessage.',
245                         'Begin(+)');
246        END IF;
247 
248 if ( funcmode = 'RUN' ) then
249 
250 p_requestor_id:=to_number(WF_ENGINE.GetItemAttrText(itemtype,itemkey,'SSCREQUESTORID'));
251 
252 open user_info(p_requestor_id);
253 fetch user_info into requestor_info_rec;
254 l_requestor_name := requestor_info_rec.user_name;
255 close user_info;
256 
257 
258 
259 WF_ENGINE.SetItemAttrText(itemtype,itemkey,'SSCREQUESTOR', l_requestor_name);
260 
261 p_resp_key := WF_ENGINE.GetItemAttrText(itemtype,itemkey,'SSCAPPROVERRESPONSIBILITYKEY');
262 
263 open approver_cur(p_resp_key);
264 fetch approver_cur into l_approver_id;
265 close approver_cur;
266 l_approver_name := l_respString||l_approver_id;
267 
268 WF_ENGINE.SetItemAttrText(itemtype,itemkey,'SSCAPPROVER', l_approver_name);
269 
270 
271 wf_engine.SetItemAttrText (itemtype   => itemtype,
272                                    itemkey    => itemkey,
273                                    aname      => l_doc_attr,
274                                    avalue     => 'PLSQLCLOB:OKL_SSC_WF.getCountersDocument/'||
275                                                  itemtype ||':'||itemkey||':&#NID');
276 
277 resultout := 'COMPLETE';
278 
279 return;
280 end if;
281 
282 
283 if ( funcmode = 'CANCEL' ) then
284 
285 resultout := 'COMPLETE';
286 return;
287 end if;
288 if ( funcmode = 'RESPOND') then
289 resultout := 'COMPLETE';
290 return;
291 end if;
292 if ( funcmode = 'FORWARD') then
293 resultout := 'COMPLETE';
294 return;
295 end if;
296 if ( funcmode = 'TRANSFER') then
297 resultout := 'COMPLETE';
298 return;
299 end if;
300 if ( funcmode = 'TIMEOUT' ) then
301 resultout := 'COMPLETE';
302 else
303 resultout := wf_engine.eng_timedout;
304 return;
305 end if;
306 
307 
308     IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
309           FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE,
310                         'OKL_VSS_WF.getCountersMessage.',
311                         'End(-)');
312        END IF;
313 
314 exception
315 when others then
316 WF_CORE.CONTEXT ('okl_ssc_wf', 'getCountersMessage', itemtype, itemkey,actid,funcmode);
317 resultout := 'ERROR';
318 
319  IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
320               FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
321                              'OKL_VSS_WF.getCountersMessage.',
322                              'EXP - OTHERS');
323 END IF;
324 raise;
325 end getCountersMessage;
326 
327 Procedure  getCountersDocument
328             (      document_id    in      varchar2,
329                    display_type   in      varchar2,
330                    document       in out nocopy  clob,
331                    document_type  in out nocopy  varchar2
332                  )
333 
334 IS
335 
336 
337 
338 CURSOR counter_nums(p_counter_id NUMBER) IS
339 SELECT  CN.COUNTER_ID COUNTER_NUMBER,  CN.NAME COUNTER_NAME,
340         KHR.CONTRACT_NUMBER CONTRACT_NUMBER,  ASSET.NAME ASSET_NUMBER
341 FROM
342   OKC_K_LINES_TL ASSET,
343   OKC_K_LINES_B USAGE,
344   OKC_K_ITEMS UITEM,
345   OKC_K_LINES_B OKS,
346   OKC_K_LINES_B OKSU,
347   OKC_K_ITEMS OKSITEM,
348   CSI_COUNTERS_VL CN,
349   OKC_K_ITEMS ASSET_ITEM,
350   OKC_K_REL_OBJS REL,
351   OKC_K_HEADERS_B KHR,
352   OKC_K_LINES_B USUB_LINE
353 WHERE
354   CN.COUNTER_ID = p_counter_id AND
355   USAGE.DNZ_CHR_ID = KHR.ID AND
356   KHR.ID = USAGE.CHR_ID AND
357   USAGE.ID = UITEM.CLE_ID AND
358   to_char(OKS.ID) = UITEM.OBJECT1_ID1 AND
359   to_char(OKS.DNZ_CHR_ID) = REL.OBJECT1_ID1 AND
360   OKS.ID = OKSU.CLE_ID AND
361   OKS.DNZ_CHR_ID = OKSU.DNZ_CHR_ID AND
362   OKSU.ID = OKSITEM.CLE_ID AND
363   OKSITEM.OBJECT1_ID1 = to_char(CN.COUNTER_ID) AND
364   OKSITEM.JTOT_OBJECT1_CODE = 'OKX_COUNTER' AND
365   USUB_LINE.DNZ_CHR_ID = USAGE.CHR_ID AND
366   USAGE.ID = USUB_LINE.CLE_ID AND
367   USUB_LINE.ID = ASSET_ITEM.CLE_ID AND
368   OKSU.dnz_chr_id = REL.OBJECT1_ID1 AND
369   ASSET_ITEM.OBJECT1_ID1 = ASSET.ID AND
370   ASSET.language = userenv ( 'LANG' ) AND
371   REL.RTY_CODE = 'OKLUBB' AND
372   REL.JTOT_OBJECT1_CODE = 'OKL_SERVICE' AND
373   REL.CHR_ID = USAGE.DNZ_CHR_ID;
374 
375 first_index             number;
376 second_index              number;
377 third_index             number;
378 
379 l_counter_id              number;
380 --l_tal_type              varchar2(100);
381 l_itemtype              varchar2(100);
382 l_itemkey             varchar2(100);
383 
384 l_document                        varchar2(32000);
385 NL                                VARCHAR2(1) := fnd_global.newline;
386 
387     BEGIN
388 
389     IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
390           FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE,
391                         'OKL_VSS_WF.getCountersDocument.',
392                         'Begin(+)');
393        END IF;
394 
395     --the document_id is in the form of
396     --'PLSQLCLOB:OKL_SSC_WF.getAssetReturnDocument/itemtyp:itemkey:&#NID'
397     --we need to get itemtype and itemkey
398 
399     first_index := instr(document_id, '/', 1, 1);  --index of the slash '/'
400     second_index := instr(document_id, ':', 1,1);  --index of first colon ':'
401     third_index := instr(document_id, ':', 1, 2);  --index of the second colon ':'
402 
403     l_itemtype := substr(document_id, first_index+1, second_index-first_index-1);
404     l_itemkey := substr(document_id, second_index+1, third_index-second_index-1);
405 
406     l_counter_id := to_number(WF_ENGINE.GetItemAttrText(l_itemtype,l_itemkey,'SSCTASID'));
407 --    l_tal_type := WF_ENGINE.GetItemAttrText(l_itemtype,l_itemkey,'SSCTALTYPE');
408 
409 
410         IF (display_type = 'text/html') THEN
411 
412             --first generate the header
413             l_document :=   '<BR>' || NL;
414             l_document :=   l_document ||
415                             '<table cellpadding="3" cellspacing="3" border="3" summary="">' || NL;
416       l_document :=   l_document ||
417                   '<tr><th>Asset Number</th><th>Serial Number</th></tr>' || NL;
418             --loop through the record, and generate line by line
419 
420 
421             FOR serial_nums_rec in counter_nums(l_counter_id)
422             LOOP
423                     l_document  :=   l_document ||
424                   '<tr><td>' ||serial_nums_rec.COUNTER_NUMBER || '</td>';
425 
426               l_document :=   l_document ||
427                   '<td>' ||serial_nums_rec.COUNTER_NAME || '</td></tr>' || NL;
428 
429               l_document :=   l_document ||
430                   '<td>' ||serial_nums_rec.ASSET_NUMBER || '</td></tr>' || NL;
431 
432               l_document :=   l_document ||
433                   '<td>' ||serial_nums_rec.CONTRACT_NUMBER || '</td></tr>' || NL;
434 
435             END LOOP;
436 
437       l_document :=   l_document || '</table>';
438         END IF;-- end to 'text/html' display type
439 
440         wf_notification.WriteToClob( document, l_document);
441 
442     IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
443           FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE,
444                         'OKL_VSS_WF.getCountersDocument.',
445                         'End(-)');
446        END IF;
447 
448   EXCEPTION
449 
450   when others then
451   WF_CORE.CONTEXT ('OKL_SSC_WF', 'getCountersDocument', l_itemtype, l_itemkey);
452 
453    IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
454               FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
455                              'OKL_VSS_WF.getCountersDocument.',
456                              'EXP - OTHERS');
457     END IF;
458   raise;
459 
460 END getCountersDocument;
461 
462  PROCEDURE update_counter(
463                             p_api_version                    IN  NUMBER,
464                             p_init_msg_list                  IN  VARCHAR2,
465                             p_trx_id                         IN  NUMBER,
466                             x_return_status                  OUT NOCOPY VARCHAR2,
467                             x_msg_count                      OUT NOCOPY NUMBER,
468                             x_msg_data                       OUT NOCOPY VARCHAR2)
469   AS
470 
471 
472     l_counter_id                   NUMBER;
473     l_trx_id                   NUMBER;
474     l_object_version_number    NUMBER;
475 
476     l_api_version        NUMBER          := 1.0;
477     l_init_msg_list      VARCHAR2(1)     := Okc_Api.g_false;
478 
479     l_return_status      VARCHAR2(1);
480     l_msg_count          NUMBER;
481     l_msg_data           VARCHAR2(2000);
482 
483     SUBTYPE cntr_bill_rec_type IS OKL_CNTR_GRP_BILLING_PVT.cntr_bill_rec_type;
484     SUBTYPE cntr_bill_tbl_type IS OKL_CNTR_GRP_BILLING_PVT.cntr_bill_tbl_type;
485 
486     l_cntr_bill_rec                  cntr_bill_rec_type;
487     x_cntr_bill_rec                  cntr_bill_rec_type;
488     l_cntr_bill_tbl                  cntr_bill_tbl_type;
489     x_cntr_bill_tbl                  cntr_bill_tbl_type;
490     i                           NUMBER :=0;
491 
492 
493 /*
494     CURSOR c_counter_rec(c_trx_id   NUMBER)IS
495     select counter_id, counter_reading, reading_date, amount, clg_id
496     from    dual;
497 */
498 --    where   trx_id = c_trx_id;
499 
500 
501   BEGIN
502 
503       IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
504           FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE,
505                         'OKL_VSS_WF.update_counter.',
506                         'Begin(+)');
507        END IF;
508 
509 /*
510     FOR r_counter_rec in c_counter_rec(l_trx_id)
511     loop
512 
513         l_cntr_bill_rec.clg_id              :=  r_counter_rec.clg_id;
514         l_cntr_bill_rec.counter_group       :=  null;
515         l_cntr_bill_rec.counter_number      :=  r_counter_rec.counter_id;
516         l_cntr_bill_rec.counter_name        :=  null;
517         l_cntr_bill_rec.contract_number     :=  null;
518         l_cntr_bill_rec.asset_number        :=  null;
519         l_cntr_bill_rec.asset_serial_number :=  null;
520         l_cntr_bill_rec.asset_description   :=  null;
521         l_cntr_bill_rec.effective_date_from :=  null;
522         l_cntr_bill_rec.effective_date_to   :=  null;
523         l_cntr_bill_rec.Reading_date        :=  r_counter_rec.reading_date;
524         l_cntr_bill_rec.Meter_reading       :=  r_counter_rec.counter_reading;
525         l_cntr_bill_rec.Bill_amount         :=  r_counter_rec.amount;
526 
527 
528         l_cntr_bill_tbl(i) := l_cntr_bill_rec;
529 
530         i := i + 1;
531 
532     end loop;
533 */
534      OKL_CNTR_GRP_BILLING_PUB.insert_cntr_grp_bill(
535      p_api_version      => l_api_version,
536      p_init_msg_list    => l_init_msg_list,
537      x_return_status    => l_return_status,
538      x_msg_count        => l_msg_count,
539      x_msg_data         => l_msg_data,
540 	 p_cntr_bill_tbl    => l_cntr_bill_tbl,
541      x_cntr_bill_tbl    => x_cntr_bill_tbl
542     );
543 
544       IF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
545         RAISE OKL_API.G_EXCEPTION_ERROR;
546       ELSIF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
547         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
548       END IF;
549 
550       IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
551           FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE,
552                         'OKL_VSS_WF.update_counter.',
553                         'End(-)');
554        END IF;
555 
556   EXCEPTION
557 
558     WHEN OKL_API.G_EXCEPTION_ERROR THEN
559       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
560       FND_MSG_PUB.count_and_get(p_count   => x_msg_count,
561                                 p_data    => x_msg_data);
562     IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
563               FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
564                              'OKL_VSS_WF.update_counter.',
565                              'EXP - G_EXCEPTION_ERROR');
566     END IF;
567 
568     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
569       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
570       FND_MSG_PUB.count_and_get(p_count   => x_msg_count,
571                                 p_data    => x_msg_data);
572     IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
573               FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
574                              'OKL_VSS_WF.update_counter.',
575                              'EXP - G_EXCEPTION_UNEXPECTED_ERROR');
576     END IF;
577 
578     WHEN OTHERS THEN
579       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
580       FND_MSG_PUB.ADD_EXC_MSG('OKL_SSC_ASST_LOC_SERNUM_PUB','update_counter');
581       FND_MSG_PUB.count_and_get(p_count   => x_msg_count,
582                                 p_data    => x_msg_data);
583 
584     IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
585               FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
586                              'OKL_VSS_WF.update_counter.',
587                              'EXP - OTHERS');
588     END IF;
589 
590   END update_counter;
591 
592 procedure update_counter_fnc (itemtype in varchar2,
593                              itemkey in varchar2,
594                              actid in number,
595                              funcmode in varchar2,
596                              resultout out nocopy varchar2 ) is
597 
598 x_return_status varchar2(1);
599 x_msg_count number;
600 l_msg_data varchar2(2000);
601 l_trx_id number;
602 
603 l_admin   VARCHAR2(120)  := 'SYSADMIN';
604 
605 error_updating_counters EXCEPTION;
606 
607 begin
608 
609 IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
610           FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE,
611                         'OKL_VSS_WF.update_counter_fnc.',
612                         'Begin(+)');
613 END IF;
614 -- assign variable to attribute
615 WF_ENGINE.SetItemAttrText(itemtype,itemkey,'WF_ADMINISTRATOR',l_admin);
616 
617 
618 if ( funcmode = 'RUN' ) then
619 
620 
621 l_trx_id :=  to_number(WF_ENGINE.GetItemAttrText(itemtype,itemkey,'SSCTASID'));
622 
623 update_counter(p_api_version    => 1.0,
624                      p_init_msg_list     => OKC_API.G_FALSE,
625                      p_trx_id           => l_trx_id,
626                      x_return_status    => x_return_status,
627                      x_msg_count        => x_msg_count,
628                      x_msg_data         => l_msg_data);
629 
630 --check the update result
631 IF x_return_status <> 'S' THEN
632 	RAISE error_updating_counters;
633 ELSE
634 	resultout := 'COMPLETE';
635 	return;
636 END IF;
637 
638 
639 end if;
640 
641 
642 if ( funcmode = 'CANCEL' ) then
643 resultout := 'COMPLETE';
644 return;
645 end if;
646 if ( funcmode = 'RESPOND') then
647 resultout := 'COMPLETE';
648 return;
649 end if;
650 if ( funcmode = 'FORWARD') then
651 resultout := 'COMPLETE';
652 return;
653 end if;
654 if ( funcmode = 'TRANSFER') then
655 resultout := 'COMPLETE';
656 return;
657 end if;
658 if ( funcmode = 'TIMEOUT' ) then
659 resultout := 'COMPLETE';
660 else
661 resultout := wf_engine.eng_timedout;
662 return;
663 end if;
664 IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
665           FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE,
666                         'OKL_VSS_WF.update_counter_fnc.',
667                         'End(-)');
668 END IF;
669 
670 exception
671 when others then
672 WF_CORE.CONTEXT ('okl_ssc_wf', 'update_counter_fnc:'||l_msg_data, itemtype, itemkey,actid,funcmode);
673 resultout := 'ERROR';
674 IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
675               FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
676                              'OKL_VSS_WF.update_counter_fnc.',
677                              'EXP - OTHERS');
678 END IF;
679 raise;
680 
681 end update_counter_fnc;
682 
683 
684 
685 PROCEDURE populate_req_repqte_attr_wf
686            (itemtype             IN VARCHAR2,
687             itemkey              IN VARCHAR2,
688             actid                IN number,
689             funcmode             IN VARCHAR2,
690             resultout            OUT NOCOPY VARCHAR2
691             ) IS
692 
693    CURSOR contract_info_cur( p_khr_id IN NUMBER) IS
694    SELECT contract_number
695    FROM   okc_k_headers_b
696    WHERE id = p_khr_id;
697 
698    CURSOR asset_info_cur(p_kle_id IN NUMBER) IS
699    SELECT name
700    FROM okc_k_lines_v
701    WHERE  id = p_kle_id;
702 
703 
704   CURSOR quote_info_cur(p_qte_id IN NUMBER) IS
705    SELECT quote_number
706    FROM okl_trx_quotes_v
707    WHERE  id = p_qte_id;
708 
709    CURSOR requestor_info_cur(p_requestor_id IN NUMBER) IS
710    SELECT user_name FROM fnd_user
711    WHERE user_id = p_requestor_id;
712 
713 
714    l_khr_id             VARCHAR2(40);
715    l_kle_id             VARCHAR2(40);
716    l_qte_id             VARCHAR2(40);
717    l_quote_number       VARCHAR2(80);
718    l_requestor_id       VARCHAR2(40);
719    l_lease_agent_id     VARCHAR2(120) := 'LEASE';
720    l_contract_number    VARCHAR2(120);
721    l_asset_number       VARCHAR2(80);
722    l_user_name          VARCHAR2(100);
723    l_resp_id            VARCHAR2(15);
724    l_resp_key           VARCHAR2(30);
725    l_performer          VARCHAR2(27);
726    l_respString         VARCHAR2(12):='FND_RESP540:';
727 
728    api_exception  EXCEPTION;
729 
730 BEGIN
731 
732    IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
733           FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE,
734                         'OKL_VSS_WF.populate_req_repqte_attr_wf.',
735                         'Begin(+)');
736    END IF;
737 
738    IF ( funcmode = 'RUN' ) THEN
739 
740         --Read attributes from WorkFlow
741       --  l_khr_id:=WF_ENGINE.GetItemAttrText(itemtype,itemkey,'SSCQUOTEID');
742         l_khr_id:=WF_ENGINE.GetItemAttrText( itemtype => itemtype,
743 						      	             itemkey	=> itemkey,
744 							                 aname  	=> 'SSCKHRID');
745         l_kle_id:=WF_ENGINE.GetItemAttrText( itemtype => itemtype,
746 						      	             itemkey	=> itemkey,
747 							                 aname  	=> 'SSCKLEID');
748         l_qte_id:=WF_ENGINE.GetItemAttrText( itemtype => itemtype,
749 						      	             itemkey	=> itemkey,
750 							                 aname  	=> 'SSCQTEID');
751         l_requestor_id:=WF_ENGINE.GetItemAttrText( itemtype => itemtype,
752 						      	             itemkey	=> itemkey,
753 							                 aname  	=> 'REQUESTOR_ID');
754       --  l_requestor_id:=WF_ENGINE.GetItemAttrText(itemtype,itemkey,'SSCREQUESTORID');
755        -- l_resp_key:=WF_ENGINE.GetItemAttrText(itemtype,itemkey,'SSCRESPONSIBILITYKEY');
756 --l_resp_key:='OKLCSMGR';
757 
758 
759 --Read from table
760         OPEN contract_info_cur(l_khr_id);
761         FETCH contract_info_cur INTO l_contract_number;
762         CLOSE contract_info_cur;
763 
764         OPEN asset_info_cur(l_kle_id);
765         FETCH asset_info_cur INTO l_asset_number;
766         CLOSE asset_info_cur;
767 
768         OPEN quote_info_cur(l_qte_id);
769         FETCH quote_info_cur INTO l_quote_number;
770         CLOSE quote_info_cur;
771 
772         OPEN requestor_info_cur(l_requestor_id);
773         FETCH requestor_info_cur INTO l_user_name;
774         CLOSE requestor_info_cur;
775 
776 /*
777         SELECT responsibility_id INTO   l_resp_id
778         FROM   fnd_responsibility
779         WHERE  responsibility_key = l_resp_key
780         AND    application_id = 540;   */
781 
782         WF_ENGINE.SetItemAttrText ( itemtype=> itemtype,
783 				                itemkey => itemkey,
784 				                aname   => 'SSCASSET',
785          	                    avalue  => l_asset_number);
786 
787         WF_ENGINE.SetItemAttrText ( itemtype=> itemtype,
788 				                itemkey => itemkey,
789 				                aname   => 'SSCCONTRACT',
790          	                    avalue  => l_contract_number);
791 
792         WF_ENGINE.SetItemAttrText ( itemtype=> itemtype,
793 				                itemkey => itemkey,
794 				                aname   => 'LEASE_AGENT_ID',
795          	                    avalue  => 'LEASE');
796 
797 
798         WF_ENGINE.SetItemAttrText ( itemtype=> itemtype,
799 				                itemkey => itemkey,
800 				                aname   => 'SSCQTENUM',
801          	                    avalue  => l_quote_number);
802 
803         WF_ENGINE.SetItemAttrText ( itemtype=> itemtype,
804 				                itemkey => itemkey,
805 				                aname   => 'REQUESTOR_NAME',
806          	                    avalue  => l_user_name);
807 
808       --  WF_ENGINE.SetItemAttrText(itemtype,itemkey,'SSCPERFORMER', l_respString||l_resp_id);
809     --    WF_ENGINE.SetItemAttrText(itemtype,itemkey,'SSCPERFORMER', 'LEASE');
810 
811 
812         resultout := 'COMPLETE';
813 
814         RETURN;
815     END IF;
816 
817 
818     IF ( funcmode = 'CANCEL' ) THEN
819         resultout := 'COMPLETE';
820         RETURN;
821     END IF;
822 
823     IF ( funcmode = 'RESPOND') THEN
824         resultout := 'COMPLETE';
825         RETURN;
826     END IF;
827 
828     IF ( funcmode = 'FORWARD') THEN
829         resultout := 'COMPLETE';
830         RETURN;
831     END IF;
832 
833     IF ( funcmode = 'TRANSFER') THEN
834         resultout := 'COMPLETE';
835         RETURN;
836     END IF;
837 
838     IF ( funcmode = 'TIMEOUT' ) THEN
839         resultout := 'COMPLETE';
840     ELSE
841         resultout := wf_engine.eng_timedout;
842         RETURN;
843     END IF;
844 
845    IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
846           FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE,
847                         'OKL_VSS_WF.populate_req_repqte_attr_wf.',
848                         'End(-)');
849    END IF;
850 
851     EXCEPTION
852         WHEN OTHERS THEN
853              WF_CORE.CONTEXT (G_PKG_NAME, 'populate_req_repqte_attr_wf', itemtype, itemkey);
854 
855              IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
856                 FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
857                              'OKL_VSS_WF.populate_req_repqte_attr_wf.',
858                              'EXP - OTHERS');
859              END IF;
860              RAISE;
861 
862 END populate_req_repqte_attr_wf;
863 
864 PROCEDURE approve_quote_status( itemtype   IN VARCHAR2,
865                                  itemkey    IN VARCHAR2,
866 			                 	 actid		IN NUMBER,
867 			                  	 funcmode	IN VARCHAR2,
868 				                 resultout OUT NOCOPY VARCHAR2	) AS
869 
870 
871     l_id            VARCHAR2(100);
872     l_approved      VARCHAR2(1);
873     x_return_status VARCHAR2(1)  := OKL_API.G_RET_STS_SUCCESS;
874     x_msg_count     NUMBER;
875     x_msg_data      VARCHAR2(2000);
876     p_qtev_rec      OKL_QTE_PVT.qtev_rec_type;
877     x_qtev_rec      OKL_QTE_PVT.qtev_rec_type;
878     p_api_version   NUMBER       := 1;
879     p_init_msg_list VARCHAR2(1)  := FND_API.G_TRUE;
880 
881     API_ERROR       EXCEPTION;
882 
883     l_notify_response VARCHAR2(30);
884   BEGIN
885 
886    IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
887           FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE,
888                         'OKL_VSS_WF.approve_quote_status.',
889                         'Begin(+)');
890    END IF;
891 
892     IF (funcmode = 'RUN') THEN
893         l_id := wf_engine.GetItemAttrText( itemtype => itemtype,
894 						      	           itemkey	=> itemkey,
895 							               aname  	=> 'SSCQTEID');
896 
897 /*
898         l_approved := wf_engine.GetItemAttrText( itemtype => itemtype,
899 						      	           itemkey	=> itemkey,
900 							               aname  	=> 'APPROVED_YN'); */
901 
902         -- Set the quote status to REJECTED if the approval is declined
903         -- else set to 'APPROVED'
904    /*     IF nvl(l_approved, 'Y') = 'N' THEN
905             p_qtev_rec.QST_CODE := 'REJECTED';
906         ELSE */
907             p_qtev_rec.QST_CODE := 'APPROVED';
908             p_qtev_rec.DATE_APPROVED := SYSDATE;
909      --   END IF;
910 
911         p_qtev_rec.ID := to_number(l_id);
912 
913         p_qtev_rec.APPROVED_YN :=  'Y';
914 
915         okl_qte_pvt.update_row( p_api_version    => p_api_version,
916                                 p_init_msg_list  => p_init_msg_list,
917                                 x_return_status  => x_return_status,
918                                 x_msg_count      => x_msg_count,
919                                 x_msg_data       => x_msg_data,
920                                 p_qtev_rec        => p_qtev_rec,
921                                 x_qtev_rec        => x_qtev_rec);
922 
923 		IF x_return_status = OKC_API.G_RET_STS_SUCCESS THEN
924             IF nvl(l_approved, 'Y') = 'Y' THEN
925 			    resultout := 'COMPLETE:SUCCESS';
926             END IF;
927 		ELSE
928 			RAISE API_ERROR;
929 		END IF;
930 
931         RETURN ;
932     END IF;
933 
934     --
935     -- CANCEL mode
936     --
937     IF (funcmode = 'CANCEL') THEN
938       --
939       resultout := 'COMPLETE:';
940       RETURN;
941       --
942     END IF;
943 
944     --
945     -- TIMEOUT mode
946     --
947     IF (funcmode = 'TIMEOUT') THEN
948       --
949       resultout := 'COMPLETE:';
950       RETURN;
951       --
952     END IF;
953 
954     IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
955           FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE,
956                         'OKL_VSS_WF.approve_quote_status.',
957                         'End(-)');
958    END IF;
959 
960   EXCEPTION
961 
962      WHEN API_ERROR THEN
963 
964         wf_core.context('OKL_VSS_WF' , 'approve_quote_status', itemtype, itemkey, actid, funcmode);
965 
966              IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
967                 FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
968                              'OKL_VSS_WF.approve_quote_status.',
969                              'EXP - API_ERROR');
970              END IF;
971         RAISE;
972 
973      WHEN OTHERS THEN
974 
975         wf_core.context('OKL_VSS_WF' , 'approve_quote_status', itemtype, itemkey, actid, funcmode);
976 
977              IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
978                 FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
979                              'OKL_VSS_WF.approve_quote_status.',
980                              'EXP - OTHERS');
981              END IF;
982 
983         RAISE;
984 
985   END approve_quote_status;
986 
987 PROCEDURE reject_quote_status( itemtype   IN VARCHAR2,
988                                  itemkey    IN VARCHAR2,
989 			                 	 actid		IN NUMBER,
990 			                  	 funcmode	IN VARCHAR2,
991 				                 resultout OUT NOCOPY VARCHAR2	) AS
992 
993 
994     l_id            VARCHAR2(100);
995     l_approved      VARCHAR2(1);
996     x_return_status VARCHAR2(1)  := OKL_API.G_RET_STS_SUCCESS;
997     x_msg_count     NUMBER;
998     x_msg_data      VARCHAR2(2000);
999     p_qtev_rec      OKL_QTE_PVT.qtev_rec_type;
1000     x_qtev_rec      OKL_QTE_PVT.qtev_rec_type;
1001     p_api_version   NUMBER       := 1;
1002     p_init_msg_list VARCHAR2(1)  := FND_API.G_TRUE;
1003 
1004     API_ERROR       EXCEPTION;
1005 
1006     l_notify_response VARCHAR2(30);
1007   BEGIN
1008 
1009     IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1010           FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE,
1011                         'OKL_VSS_WF.reject_quote_status.',
1012                         'Begin(+)');
1013    END IF;
1014 
1015     IF (funcmode = 'RUN') THEN
1016         l_id := wf_engine.GetItemAttrText( itemtype => itemtype,
1017 						      	           itemkey	=> itemkey,
1018 							               aname  	=> 'SSCQTEID');
1019 
1020 /*
1021         l_approved := wf_engine.GetItemAttrText( itemtype => itemtype,
1022 						      	           itemkey	=> itemkey,
1023 							               aname  	=> 'APPROVED_YN'); */
1024 
1025         -- Set the quote status to REJECTED if the approval is declined
1026 
1027 
1028         p_qtev_rec.QST_CODE := 'REJECTED';
1029 
1030 
1031         p_qtev_rec.ID := to_number(l_id);
1032 
1033         p_qtev_rec.APPROVED_YN :=  'N';
1034 
1035         okl_qte_pvt.update_row( p_api_version    => p_api_version,
1036                                 p_init_msg_list  => p_init_msg_list,
1037                                 x_return_status  => x_return_status,
1038                                 x_msg_count      => x_msg_count,
1039                                 x_msg_data       => x_msg_data,
1040                                 p_qtev_rec        => p_qtev_rec,
1041                                 x_qtev_rec        => x_qtev_rec);
1042 
1043 		IF x_return_status = OKC_API.G_RET_STS_SUCCESS THEN
1044             IF nvl(l_approved, 'N') = 'N' THEN
1045 			    resultout := 'COMPLETE:ERROR';
1046             END IF;
1047 		ELSE
1048 			RAISE API_ERROR;
1049 		END IF;
1050 
1051         RETURN ;
1052     END IF;
1053 
1054     --
1055     -- CANCEL mode
1056     --
1057     IF (funcmode = 'CANCEL') THEN
1058       --
1059       resultout := 'COMPLETE:';
1060       RETURN;
1061       --
1062     END IF;
1063 
1064     --
1065     -- TIMEOUT mode
1066     --
1067     IF (funcmode = 'TIMEOUT') THEN
1068       --
1069       resultout := 'COMPLETE:';
1070       RETURN;
1071       --
1072     END IF;
1073 
1074     IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1075           FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE,
1076                         'OKL_VSS_WF.reject_quote_status.',
1077                         'End(-)');
1078    END IF;
1079 
1080   EXCEPTION
1081 
1082      WHEN API_ERROR THEN
1083 
1084         wf_core.context('OKL_VSS_WF' , 'reject_quote_status', itemtype, itemkey, actid, funcmode);
1085 
1086              IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1087                 FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
1088                              'OKL_VSS_WF.reject_quote_status.',
1089                              'EXP - API_ERROR');
1090              END IF;
1091         RAISE;
1092 
1093      WHEN OTHERS THEN
1094 
1095         wf_core.context('OKL_VSS_WF' , 'reject_quote_status', itemtype, itemkey, actid, funcmode);
1096 
1097              IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1098                 FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
1099                              'OKL_VSS_WF.reject_quote_status.',
1100                              'EXP - OTHERS');
1101              END IF;
1102 
1103         RAISE;
1104 
1105   END reject_quote_status;
1106 
1107 END OKL_VSS_WF;