DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKC_CONTRACT_SEQ_PVT

Source


1 package body okc_contract_seq_pvt as
2 /* $Header: OKCCKSQB.pls 120.2 2006/08/25 06:40:11 npalepu noship $ */
3 
4 	l_debug VARCHAR2(1) := NVL(FND_PROFILE.VALUE('AFLOG_ENABLED'),'N');
5 
6   --
7   -- Procedure to create Sequence Header details
8   --
9   PROCEDURE create_seq_header(
10     p_api_version                  IN NUMBER,
11     p_init_msg_list                IN VARCHAR2 ,
12     x_return_status                OUT NOCOPY VARCHAR2,
13     x_msg_count                    OUT NOCOPY NUMBER,
14     x_msg_data                     OUT NOCOPY VARCHAR2,
15     p_ksqv_rec                     IN ksqv_rec_type,
16     x_ksqv_rec                     OUT NOCOPY ksqv_rec_type) IS
17   BEGIN
18     --
19     -- Call Simple API
20     --
21     IF (l_debug = 'Y') THEN
22        okc_debug.set_indentation('create_seq_header');
23        okc_debug.log('100: Entering create_seq_header', 2);
24     END IF;
25     okc_ksq_pvt.insert_row(
26 	    p_api_version,
27 	    p_init_msg_list,
28 	    x_return_status,
29 	    x_msg_count,
30 	    x_msg_data,
31 	    p_ksqv_rec,
32 	    x_ksqv_rec);
33     IF (l_debug = 'Y') THEN
34        okc_debug.log('200: Exiting create_seq_header', 2);
35        okc_debug.reset_indentation;
36     END IF;
37   END create_seq_header;
38 
39   PROCEDURE create_seq_header(
40     p_api_version                  IN NUMBER,
41     p_init_msg_list                IN VARCHAR2 ,
42     x_return_status                OUT NOCOPY VARCHAR2,
43     x_msg_count                    OUT NOCOPY NUMBER,
44     x_msg_data                     OUT NOCOPY VARCHAR2,
45     p_ksqv_tbl                     IN ksqv_tbl_type,
46     x_ksqv_tbl                     OUT NOCOPY ksqv_tbl_type) IS
47   BEGIN
48     IF (l_debug = 'Y') THEN
49        okc_debug.set_indentation('create_seq_header');
50        okc_debug.log('300: Entering create_seq_header', 2);
51     END IF;
52     okc_ksq_pvt.insert_row(
53 	    p_api_version,
54 	    p_init_msg_list,
55 	    x_return_status,
56 	    x_msg_count,
57 	    x_msg_data,
58 	    p_ksqv_tbl,
59 	    x_ksqv_tbl);
60     IF (l_debug = 'Y') THEN
61        okc_debug.log('400: Exiting create_seq_header', 2);
62        okc_debug.reset_indentation;
63     END IF;
64   END create_seq_header;
65 
66   PROCEDURE update_seq_header(
67     p_api_version                  IN NUMBER,
68     p_init_msg_list                IN VARCHAR2 ,
69     x_return_status                OUT NOCOPY VARCHAR2,
70     x_msg_count                    OUT NOCOPY NUMBER,
71     x_msg_data                     OUT NOCOPY VARCHAR2,
72     p_ksqv_rec                     IN ksqv_rec_type,
73     x_ksqv_rec                     OUT NOCOPY ksqv_rec_type) IS
74   BEGIN
75     IF (l_debug = 'Y') THEN
76        okc_debug.set_indentation('update_seq_header');
77        okc_debug.log('500: Entering update_seq_header', 2);
78     END IF;
79     okc_ksq_pvt.update_row(
80 	    p_api_version,
81 	    p_init_msg_list,
82 	    x_return_status,
83 	    x_msg_count,
84 	    x_msg_data,
85 	    p_ksqv_rec,
86 	    x_ksqv_rec);
87     IF (l_debug = 'Y') THEN
88        okc_debug.log('600: Exiting update_seq_header', 2);
89        okc_debug.reset_indentation;
90     END IF;
91   END update_seq_header;
92 
93   PROCEDURE update_seq_header(
94     p_api_version                  IN NUMBER,
95     p_init_msg_list                IN VARCHAR2 ,
96     x_return_status                OUT NOCOPY VARCHAR2,
97     x_msg_count                    OUT NOCOPY NUMBER,
98     x_msg_data                     OUT NOCOPY VARCHAR2,
99     p_ksqv_tbl                     IN ksqv_tbl_type,
100     x_ksqv_tbl                     OUT NOCOPY ksqv_tbl_type) IS
101   BEGIN
102     IF (l_debug = 'Y') THEN
103        okc_debug.set_indentation('update_seq_header');
104        okc_debug.log('700: Entering update_seq_header', 2);
105     END IF;
106     okc_ksq_pvt.update_row(
107 	    p_api_version,
108 	    p_init_msg_list,
109 	    x_return_status,
110 	    x_msg_count,
111 	    x_msg_data,
112 	    p_ksqv_tbl,
113 	    x_ksqv_tbl);
114     IF (l_debug = 'Y') THEN
115        okc_debug.log('800: Exiting update_seq_header', 2);
116        okc_debug.reset_indentation;
117     END IF;
118   END update_seq_header;
119 
120   PROCEDURE delete_seq_header(
121     p_api_version                  IN NUMBER,
122     p_init_msg_list                IN VARCHAR2 ,
123     x_return_status                OUT NOCOPY VARCHAR2,
124     x_msg_count                    OUT NOCOPY NUMBER,
125     x_msg_data                     OUT NOCOPY VARCHAR2,
126     p_ksqv_rec                     IN ksqv_rec_type) IS
127   BEGIN
128     IF (l_debug = 'Y') THEN
129        okc_debug.set_indentation('delete_seq_header');
130        okc_debug.log('900: Entering delete_seq_header', 2);
131     END IF;
132     okc_ksq_pvt.delete_row(
133 	    p_api_version,
134 	    p_init_msg_list,
135 	    x_return_status,
136 	    x_msg_count,
137 	    x_msg_data,
138 	    p_ksqv_rec);
139     IF (l_debug = 'Y') THEN
140        okc_debug.log('1000: Exiting delete_seq_header', 2);
141        okc_debug.reset_indentation;
142     END IF;
143   END delete_seq_header;
144 
145   PROCEDURE delete_seq_header(
146     p_api_version                  IN NUMBER,
147     p_init_msg_list                IN VARCHAR2 ,
148     x_return_status                OUT NOCOPY VARCHAR2,
149     x_msg_count                    OUT NOCOPY NUMBER,
150     x_msg_data                     OUT NOCOPY VARCHAR2,
151     p_ksqv_tbl                     IN ksqv_tbl_type) IS
152   BEGIN
153     IF (l_debug = 'Y') THEN
154        okc_debug.set_indentation('delete_seq_header');
155        okc_debug.log('1100: Entering delete_seq_header', 2);
156     END IF;
157     okc_ksq_pvt.delete_row(
158 	    p_api_version,
159 	    p_init_msg_list,
160 	    x_return_status,
161 	    x_msg_count,
162 	    x_msg_data,
163 	    p_ksqv_tbl);
164     IF (l_debug = 'Y') THEN
165        okc_debug.log('1200: Exiting delete_seq_header', 2);
166        okc_debug.reset_indentation;
167     END IF;
168   END delete_seq_header;
169 
170   PROCEDURE lock_seq_header(
171     p_api_version                  IN NUMBER,
172     p_init_msg_list                IN VARCHAR2 ,
173     x_return_status                OUT NOCOPY VARCHAR2,
174     x_msg_count                    OUT NOCOPY NUMBER,
175     x_msg_data                     OUT NOCOPY VARCHAR2,
176     p_ksqv_rec                     IN ksqv_rec_type) IS
177   BEGIN
178     IF (l_debug = 'Y') THEN
179        okc_debug.set_indentation('lock_seq_header');
180        okc_debug.log('1300: Entering lock_seq_header', 2);
181     END IF;
182     okc_ksq_pvt.lock_row(
183 	    p_api_version,
184 	    p_init_msg_list,
185 	    x_return_status,
186 	    x_msg_count,
187 	    x_msg_data,
188 	    p_ksqv_rec);
189     IF (l_debug = 'Y') THEN
190        okc_debug.log('1400: Exiting lock_seq_header', 2);
191        okc_debug.reset_indentation;
192     END IF;
193   END lock_seq_header;
194 
195   PROCEDURE lock_seq_header(
196     p_api_version                  IN NUMBER,
197     p_init_msg_list                IN VARCHAR2 ,
198     x_return_status                OUT NOCOPY VARCHAR2,
199     x_msg_count                    OUT NOCOPY NUMBER,
200     x_msg_data                     OUT NOCOPY VARCHAR2,
201     p_ksqv_tbl                     IN ksqv_tbl_type) IS
202   BEGIN
203     IF (l_debug = 'Y') THEN
204        okc_debug.set_indentation('lock_seq_header');
205        okc_debug.log('1500: Entering lock_seq_header', 2);
206     END IF;
207     okc_ksq_pvt.lock_row(
208 	    p_api_version,
209 	    p_init_msg_list,
210 	    x_return_status,
211 	    x_msg_count,
212 	    x_msg_data,
213 	    p_ksqv_tbl);
214     IF (l_debug = 'Y') THEN
215        okc_debug.log('1600: Exiting lock_seq_header', 2);
216        okc_debug.reset_indentation;
217     END IF;
218   END lock_seq_header;
219 
220   PROCEDURE validate_seq_header(
221     p_api_version                  IN NUMBER,
222     p_init_msg_list                IN VARCHAR2 ,
223     x_return_status                OUT NOCOPY VARCHAR2,
224     x_msg_count                    OUT NOCOPY NUMBER,
225     x_msg_data                     OUT NOCOPY VARCHAR2,
226     p_ksqv_rec                     IN ksqv_rec_type) IS
227   BEGIN
228     IF (l_debug = 'Y') THEN
229        okc_debug.set_indentation('validate_seq_header');
230        okc_debug.log('1700: Entering validate_seq_header', 2);
231     END IF;
232     okc_ksq_pvt.validate_row(
233 	    p_api_version,
234 	    p_init_msg_list,
235 	    x_return_status,
236 	    x_msg_count,
237 	    x_msg_data,
238 	    p_ksqv_rec);
239     IF (l_debug = 'Y') THEN
240        okc_debug.log('1800: Exiting validate_seq_header', 2);
241        okc_debug.reset_indentation;
242     END IF;
243   END validate_seq_header;
244 
245   PROCEDURE validate_seq_header(
246     p_api_version                  IN NUMBER,
247     p_init_msg_list                IN VARCHAR2 ,
248     x_return_status                OUT NOCOPY VARCHAR2,
249     x_msg_count                    OUT NOCOPY NUMBER,
250     x_msg_data                     OUT NOCOPY VARCHAR2,
251     p_ksqv_tbl                     IN ksqv_tbl_type) IS
252   BEGIN
253     IF (l_debug = 'Y') THEN
254        okc_debug.set_indentation('validate_seq_header');
255        okc_debug.log('1900: Entering validate_seq_header', 2);
256     END IF;
257     okc_ksq_pvt.validate_row(
258 	    p_api_version,
259 	    p_init_msg_list,
260 	    x_return_status,
261 	    x_msg_count,
262 	    x_msg_data,
263 	    p_ksqv_tbl);
264     IF (l_debug = 'Y') THEN
265        okc_debug.log('2000: Exiting validate_seq_header', 2);
266        okc_debug.reset_indentation;
267     END IF;
268   END validate_seq_header;
269 
270   PROCEDURE create_seq_lines(
271     p_api_version                  IN NUMBER,
272     p_init_msg_list                IN VARCHAR2 ,
273     x_return_status                OUT NOCOPY VARCHAR2,
274     x_msg_count                    OUT NOCOPY NUMBER,
275     x_msg_data                     OUT NOCOPY VARCHAR2,
276     p_lsqv_rec                     IN lsqv_rec_type,
277     x_lsqv_rec                     OUT NOCOPY lsqv_rec_type) IS
278     --
279     l_lsqv_rec                     lsqv_rec_type := p_lsqv_rec;
280     l_seq                          number;
281     l_docseq_name                  fnd_document_sequences.name%TYPE;
282     l_doc_sequence_id              fnd_document_sequences.doc_sequence_id%TYPE;
283     l_set_of_books_id              okx_organization_defs_v.set_of_books_id%TYPE;
284     l_return_status                VARCHAR2(1);
285     l_row_notfound                 Boolean;
286     --
287     -- AOL sequence need not be created if the prefix and the suffix
288     -- are already used bu some other detail. Use the same document
289     -- sequence id in this case.
290     --
291     cursor c1(p_line_code okc_k_seq_lines.line_code%TYPE,
292               p_prefix okc_k_seq_lines.contract_number_prefix%TYPE,
293               p_suffix okc_k_seq_lines.contract_Number_suffix%TYPE) is
294     select doc_sequence_id
295       from okc_k_seq_lines
296      where line_code = p_line_code
297        and ((contract_number_prefix = p_prefix)
298         or  (contract_number_prefix is null
299        and   p_prefix is null))
300        and ((contract_number_suffix = p_suffix)
301         or  (contract_number_suffix is null
302        and   p_suffix is null));
303     --
304     -- cursor to get the doc_sequence_id, used in the simple api
305     --
306     cursor c2 is
307     select doc_sequence_id
308       from fnd_document_sequences
309      where name = l_docseq_name;
310     --
311     -- cursor to get the set of books id
312     --
313     cursor c3(p_id IN NUMBER) is
314     select set_of_books_id
315       from okx_organization_defs_v
316      where id1= p_id
317        and organization_type = 'OPERATING_UNIT'
318        and information_type = 'Operating Unit Information';
319 
320     --NPALEPU ADDED ON 22-AUG-2006 FOR BUG # 5470760
321     l_org_id NUMBER;
322     --NPALEPU ADDED ON 25-AUG-2006 FOR BUG # 5488217
323     CURSOR ORG_ID_CSR IS
324     SELECT ou.organization_id
325     FROM hr_operating_units ou
326     WHERE mo_global.check_access(ou.organization_id) = 'Y';
327     --END NPALEPU
328 
329   BEGIN
330     IF (l_debug = 'Y') THEN
331        okc_debug.set_indentation('create_seq_lines');
332        okc_debug.log('2100: Entering create_seq_lines', 2);
333     END IF;
334     x_return_status := OKC_API.G_RET_STS_SUCCESS;
335     -- First check if the same prefix and suffix is already in use
336     Open c1(l_lsqv_rec.line_code,
337             l_lsqv_rec.contract_number_prefix,
338             l_lsqv_rec.contract_number_suffix);
339     Fetch c1 Into l_doc_sequence_id;
340     l_row_notfound := c1%NotFound;
341     Close c1;
342 
343     If l_row_notfound Then
344       --
345       -- If doc sequence does not exist, do the AOL setup here first
346       -- First create the document sequence details.
347       -- Populate fnd_document_sequences table
348       --
349       select okc_k_seq_lines_s1.nextval into l_seq from dual;
350       l_docseq_name := Fnd_Profile.Value('OKC_DOC_SEQUENCE_NAME') ||
351                        To_Char(l_seq);
352       l_return_status := Fnd_Seqnum.Define_Doc_Seq
353                               (app_id      => 510,
354                                docseq_name => l_docseq_name,
355                                docseq_type => 'A',
356                                msg_flag    => 'N',
357                                init_value  => l_lsqv_rec.start_seq_no,
358                                p_startdate => sysdate);
359       If l_return_status <> FND_SEQNUM.SEQSUCC Then
360         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
361         RAISE G_EXCEPTION_HALT_VALIDATION;
362       End If;
363       -- Get the document sequence id just generated
364       Open c2;
365       Fetch c2 Into l_doc_sequence_id;
366       Close c2;
367     End If;
368     --
369     -- Next call simple api; however set the document sequence id first.
370     --
371     l_lsqv_rec.doc_sequence_id := l_doc_sequence_id;
372     --
373     okc_lsq_pvt.insert_row(
374 	    p_api_version,
375 	    p_init_msg_list,
376 	    l_return_status,
377 	    x_msg_count,
378 	    x_msg_data,
379 	    l_lsqv_rec,
380 	    x_lsqv_rec);
381     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
382       x_return_status := l_return_status;
383       RAISE G_EXCEPTION_HALT_VALIDATION;
384     End If;
385     --
386     -- Continue with the AOL setup if not already done.
387     --
388     If l_row_notfound Then
389       --
390       -- Now create a document category.
391       -- Populate the fnd_doc_sequence_categories table.
392       --
393       Fnd_Seq_Categories_Pkg.Insert_Cat(
394             x_application_id    => 510,
395             x_category_code     => l_docseq_name,
396             x_category_name     => l_docseq_name,
397             x_description       => l_docseq_name,
398             x_table_name        => 'OKC_K_HEADERS_B',
399             x_last_updated_by   => x_lsqv_rec.last_updated_by,
400             x_created_by        => x_lsqv_rec.created_by,
401             x_last_update_login => x_lsqv_rec.last_update_login);
402       --
403       -- Next create an intersection between category and sequence.
404       -- Get the set of books for the current Org. To do that we
405       -- will have to first set the org itself.
406       --
407 
408       --npalepu modified the code for bug # 5470760
409       /*okc_context.set_okc_org_context;
410       Open c3(Sys_Context('OKC_CONTEXT', 'ORG_ID'));
411       Fetch c3 Into l_set_of_books_id;
412       Close c3; */
413       /*If operating_unit_id is not null use it, else if business_group_id is not null use it else use default org_id */
414       IF l_lsqv_rec.OPERATING_UNIT_ID IS NOT NULL THEN
415         l_org_id := l_lsqv_rec.OPERATING_UNIT_ID;
416      ELSIF l_lsqv_rec.BUSINESS_GROUP_ID IS NOT NULL THEN
417         l_org_id := l_lsqv_rec.BUSINESS_GROUP_ID;
418      --NPALEPU MODIFIED ON 25-AUG-2006 FOR BUG # 5488217
419      ELSIF MO_UTILS.GET_DEFAULT_ORG_ID IS NOT NULL THEN
420         l_org_id := MO_UTILS.GET_DEFAULT_ORG_ID;
421      ELSE
422         OPEN ORG_ID_CSR;
423         FETCH ORG_ID_CSR INTO l_org_id;
424         CLOSE ORG_ID_CSR;
425      END IF;
426 
427      IF l_org_id IS NOT NULL THEN
428         OPEN c3(l_org_id);
429         FETCH c3 Into l_set_of_books_id;
430         CLOSE c3;
431      END IF;
432      --END NPALEPU
433 
434       --
435       -- Populate the fnd_doc_doc_sequence_assignment table.
436       --
437       l_return_status := Fnd_Seqnum.Assign_Doc_Seq
438                               (app_id      => 510,
439                                docseq_name => l_docseq_name,
440                                cat_code    => l_docseq_name,
441                                sob_id      => l_set_of_books_id,
442                                met_code    => 'A',
443                                p_startdate => x_lsqv_rec.creation_date,
444                                p_enddate   => Null);
445       If l_return_status <> FND_SEQNUM.SEQSUCC Then
446         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
447         RAISE G_EXCEPTION_HALT_VALIDATION;
448       End If;
449     End If;
450     IF (l_debug = 'Y') THEN
451        okc_debug.log('2200: Exiting create_seq_lines', 2);
452        okc_debug.reset_indentation;
453     END IF;
454   EXCEPTION
455     WHEN G_EXCEPTION_HALT_VALIDATION THEN
456       IF (l_debug = 'Y') THEN
457          okc_debug.log('2300: Exiting create_seq_lines', 2);
458          okc_debug.reset_indentation;
459       END IF;
460       --npalepu added on 25-AUG-2006 for bug # 5488217
461       IF ORG_ID_CSR%ISOPEN THEN
462         CLOSE ORG_ID_CSR;
463       END IF;
464       --end npalepu
465     WHEN OTHERS THEN
466       OKC_API.set_message(p_app_name      => g_app_name,
467                           p_msg_name      => g_unexpected_error,
468                           p_token1        => g_sqlcode_token,
469                           p_token1_value  => sqlcode,
470                           p_token2        => g_sqlerrm_token,
471                           p_token2_value  => sqlerrm);
472       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
473       IF (l_debug = 'Y') THEN
474          okc_debug.log('2400: Exiting create_seq_lines', 2);
475          okc_debug.reset_indentation;
476       END IF;
477       --npalepu added on 25-AUG-2006 for bug # 5488217
478       IF ORG_ID_CSR%ISOPEN THEN
479         CLOSE ORG_ID_CSR;
480       END IF;
481       --end npalepu
482   END create_seq_lines;
483 
484   PROCEDURE create_seq_lines(
485     p_api_version                  IN NUMBER,
486     p_init_msg_list                IN VARCHAR2 ,
487     x_return_status                OUT NOCOPY VARCHAR2,
488     x_msg_count                    OUT NOCOPY NUMBER,
489     x_msg_data                     OUT NOCOPY VARCHAR2,
490     p_lsqv_tbl                     IN lsqv_tbl_type,
491     x_lsqv_tbl                     OUT NOCOPY lsqv_tbl_type) IS
492     i			           NUMBER := 0;
493     l_return_status 		   VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
494   BEGIN
495     IF (l_debug = 'Y') THEN
496        okc_debug.set_indentation('create_seq_lines');
497        okc_debug.log('2500: Entering create_seq_lines', 2);
498     END IF;
499     x_return_status := OKC_API.G_RET_STS_SUCCESS;
500     IF (p_lsqv_tbl.COUNT > 0) THEN
501       i := p_lsqv_tbl.FIRST;
502       LOOP
503         create_seq_lines(
504 	       p_api_version,
505 	       p_init_msg_list,
506 	       l_return_status,
507 	       x_msg_count,
508 	       x_msg_data,
509 	       p_lsqv_tbl(i),
510                x_lsqv_tbl(i));
511         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
512           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
513             x_return_status := l_return_status;
514             raise G_EXCEPTION_HALT_VALIDATION;
515           ELSE
516             x_return_status := l_return_status;
517           END IF;
518         END IF;
519         EXIT WHEN (i = p_lsqv_tbl.LAST);
520         i := p_lsqv_tbl.NEXT(i);
521       END LOOP;
522     END IF;
523     IF (l_debug = 'Y') THEN
524        okc_debug.log('2600: Exiting create_seq_lines', 2);
525        okc_debug.reset_indentation;
526     END IF;
527   EXCEPTION
528     WHEN G_EXCEPTION_HALT_VALIDATION THEN
529       IF (l_debug = 'Y') THEN
530          okc_debug.log('2700: Exiting create_seq_lines', 2);
531          okc_debug.reset_indentation;
532       END IF;
533     WHEN OTHERS THEN
534       OKC_API.set_message(p_app_name      => g_app_name,
535                           p_msg_name      => g_unexpected_error,
536                           p_token1        => g_sqlcode_token,
537                           p_token1_value  => sqlcode,
538                           p_token2        => g_sqlerrm_token,
539                           p_token2_value  => sqlerrm);
540       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
541       IF (l_debug = 'Y') THEN
542          okc_debug.log('2800: Exiting create_seq_lines', 2);
543          okc_debug.reset_indentation;
544       END IF;
545   END create_seq_lines;
546 
547   PROCEDURE update_seq_lines(
548     p_api_version                  IN NUMBER,
549     p_init_msg_list                IN VARCHAR2 ,
550     x_return_status                OUT NOCOPY VARCHAR2,
551     x_msg_count                    OUT NOCOPY NUMBER,
552     x_msg_data                     OUT NOCOPY VARCHAR2,
553     p_lsqv_rec                     IN lsqv_rec_type,
554     x_lsqv_rec                     OUT NOCOPY lsqv_rec_type) IS
555   BEGIN
556     IF (l_debug = 'Y') THEN
557        okc_debug.set_indentation('update_seq_lines');
558        okc_debug.log('2900: Entering update_seq_lines', 2);
559     END IF;
560     okc_lsq_pvt.update_row(
561 	    p_api_version,
562 	    p_init_msg_list,
563 	    x_return_status,
564 	    x_msg_count,
565 	    x_msg_data,
566 	    p_lsqv_rec,
567 	    x_lsqv_rec);
568     IF (l_debug = 'Y') THEN
569        okc_debug.log('3000: Exiting update_seq_lines', 2);
570        okc_debug.reset_indentation;
571     END IF;
572   END update_seq_lines;
573 
574   PROCEDURE update_seq_lines(
575     p_api_version                  IN NUMBER,
576     p_init_msg_list                IN VARCHAR2 ,
577     x_return_status                OUT NOCOPY VARCHAR2,
578     x_msg_count                    OUT NOCOPY NUMBER,
579     x_msg_data                     OUT NOCOPY VARCHAR2,
580     p_lsqv_tbl                     IN lsqv_tbl_type,
581     x_lsqv_tbl                     OUT NOCOPY lsqv_tbl_type) IS
582   BEGIN
583     IF (l_debug = 'Y') THEN
584        okc_debug.set_indentation('update_seq_lines');
585        okc_debug.log('3100: Entering update_seq_lines', 2);
586     END IF;
587     okc_lsq_pvt.update_row(
588 	    p_api_version,
589 	    p_init_msg_list,
590 	    x_return_status,
591 	    x_msg_count,
592 	    x_msg_data,
593 	    p_lsqv_tbl,
594 	    x_lsqv_tbl);
595     IF (l_debug = 'Y') THEN
596        okc_debug.log('3200: Exiting update_seq_lines', 2);
597        okc_debug.reset_indentation;
598     END IF;
599   END update_seq_lines;
600 
601   PROCEDURE delete_seq_lines(
602     p_api_version                  IN NUMBER,
603     p_init_msg_list                IN VARCHAR2 ,
604     x_return_status                OUT NOCOPY VARCHAR2,
605     x_msg_count                    OUT NOCOPY NUMBER,
606     x_msg_data                     OUT NOCOPY VARCHAR2,
607     p_lsqv_rec                     IN lsqv_rec_type) IS
608   BEGIN
609     IF (l_debug = 'Y') THEN
610        okc_debug.set_indentation('delete_seq_lines');
611        okc_debug.log('3300: Entering delete_seq_lines', 2);
612     END IF;
613     okc_lsq_pvt.delete_row(
614 	    p_api_version,
615 	    p_init_msg_list,
616 	    x_return_status,
617 	    x_msg_count,
618 	    x_msg_data,
619 	    p_lsqv_rec);
620     IF (l_debug = 'Y') THEN
621        okc_debug.log('3400: Exiting delete_seq_lines', 2);
622        okc_debug.reset_indentation;
623     END IF;
624   END delete_seq_lines;
625 
626   PROCEDURE delete_seq_lines(
627     p_api_version                  IN NUMBER,
628     p_init_msg_list                IN VARCHAR2 ,
629     x_return_status                OUT NOCOPY VARCHAR2,
630     x_msg_count                    OUT NOCOPY NUMBER,
631     x_msg_data                     OUT NOCOPY VARCHAR2,
632     p_lsqv_tbl                     IN lsqv_tbl_type) IS
633   BEGIN
634     IF (l_debug = 'Y') THEN
635        okc_debug.set_indentation('delete_seq_lines');
636        okc_debug.log('3500: Entering delete_seq_lines', 2);
637     END IF;
638     okc_lsq_pvt.delete_row(
639 	    p_api_version,
640 	    p_init_msg_list,
641 	    x_return_status,
642 	    x_msg_count,
643 	    x_msg_data,
644 	    p_lsqv_tbl);
645     IF (l_debug = 'Y') THEN
646        okc_debug.log('3600: Exiting delete_seq_lines', 2);
647        okc_debug.reset_indentation;
648     END IF;
649   END delete_seq_lines;
650 
651   PROCEDURE lock_seq_lines(
652     p_api_version                  IN NUMBER,
653     p_init_msg_list                IN VARCHAR2 ,
654     x_return_status                OUT NOCOPY VARCHAR2,
655     x_msg_count                    OUT NOCOPY NUMBER,
656     x_msg_data                     OUT NOCOPY VARCHAR2,
657     p_lsqv_rec                     IN lsqv_rec_type) IS
658   BEGIN
659     IF (l_debug = 'Y') THEN
660        okc_debug.set_indentation('lock_seq_lines');
661        okc_debug.log('3700: Entering lock_seq_lines', 2);
662     END IF;
663     okc_lsq_pvt.lock_row(
664 	    p_api_version,
665 	    p_init_msg_list,
666 	    x_return_status,
667 	    x_msg_count,
668 	    x_msg_data,
669 	    p_lsqv_rec);
670     IF (l_debug = 'Y') THEN
671        okc_debug.log('3800: Exiting lock_seq_lines', 2);
672        okc_debug.reset_indentation;
673     END IF;
674   END lock_seq_lines;
675 
676   PROCEDURE lock_seq_lines(
677     p_api_version                  IN NUMBER,
678     p_init_msg_list                IN VARCHAR2 ,
679     x_return_status                OUT NOCOPY VARCHAR2,
680     x_msg_count                    OUT NOCOPY NUMBER,
681     x_msg_data                     OUT NOCOPY VARCHAR2,
682     p_lsqv_tbl                     IN lsqv_tbl_type) IS
683   BEGIN
684     IF (l_debug = 'Y') THEN
685        okc_debug.set_indentation('lock_seq_lines');
686        okc_debug.log('3900: Entering lock_seq_lines', 2);
687     END IF;
688     okc_lsq_pvt.lock_row(
689 	    p_api_version,
690 	    p_init_msg_list,
691 	    x_return_status,
692 	    x_msg_count,
693 	    x_msg_data,
694 	    p_lsqv_tbl);
695     IF (l_debug = 'Y') THEN
696        okc_debug.log('4000: Exiting lock_seq_lines', 2);
697        okc_debug.reset_indentation;
698     END IF;
699   END lock_seq_lines;
700 
701   PROCEDURE validate_seq_lines(
702     p_api_version                  IN NUMBER,
703     p_init_msg_list                IN VARCHAR2 ,
704     x_return_status                OUT NOCOPY VARCHAR2,
705     x_msg_count                    OUT NOCOPY NUMBER,
706     x_msg_data                     OUT NOCOPY VARCHAR2,
707     p_lsqv_rec                     IN lsqv_rec_type) IS
708   BEGIN
709     IF (l_debug = 'Y') THEN
710        okc_debug.set_indentation('validate_seq_lines');
711        okc_debug.log('4100: Entering validate_seq_lines', 2);
712     END IF;
713     okc_lsq_pvt.validate_row(
714 	    p_api_version,
715 	    p_init_msg_list,
716 	    x_return_status,
717 	    x_msg_count,
718 	    x_msg_data,
719 	    p_lsqv_rec);
720     IF (l_debug = 'Y') THEN
721        okc_debug.log('4200: Exiting validate_seq_lines', 2);
722        okc_debug.reset_indentation;
723     END IF;
724   END validate_seq_lines;
725 
726   PROCEDURE validate_seq_lines(
727     p_api_version                  IN NUMBER,
728     p_init_msg_list                IN VARCHAR2 ,
729     x_return_status                OUT NOCOPY VARCHAR2,
730     x_msg_count                    OUT NOCOPY NUMBER,
731     x_msg_data                     OUT NOCOPY VARCHAR2,
732     p_lsqv_tbl                     IN lsqv_tbl_type) IS
733   BEGIN
734     IF (l_debug = 'Y') THEN
735        okc_debug.set_indentation('validate_seq_lines');
736        okc_debug.log('4300: Entering validate_seq_lines', 2);
737     END IF;
738     okc_lsq_pvt.validate_row(
739 	    p_api_version,
740 	    p_init_msg_list,
741 	    x_return_status,
742 	    x_msg_count,
743 	    x_msg_data,
744 	    p_lsqv_tbl);
745     IF (l_debug = 'Y') THEN
746        okc_debug.log('4400: Exiting validate_seq_lines', 2);
747        okc_debug.reset_indentation;
748     END IF;
749   END validate_seq_lines;
750 
751   --
752   -- Complex API to check whether or not the contract number
753   -- can be generated
754   --
755   PROCEDURE Is_K_Autogenerated(
756     p_scs_code Varchar2,
757     x_return_status OUT NOCOPY Varchar2) IS
758   BEGIN
759     IF (l_debug = 'Y') THEN
760        okc_debug.set_indentation('Is_K_Autogenerated');
761        okc_debug.log('4500: Entering Is_K_Autogenerated', 2);
762     END IF;
763     --
764     -- Call Simple API
765     --
766     okc_ksq_pvt.Is_K_Autogenerated(
767             p_scs_code,
768             x_return_status);
769     IF (l_debug = 'Y') THEN
770        okc_debug.log('4600: Exiting Is_K_Autogenerated', 2);
771        okc_debug.reset_indentation;
772     END IF;
773   END Is_K_Autogenerated;
774 
775   --
776   -- Complex API to Get the Contract Number
777   --
778   PROCEDURE Get_K_Number(
779     p_scs_code                     IN VARCHAR2,
780     p_contract_number_modifier     IN VARCHAR2,
781     x_contract_number              OUT NOCOPY VARCHAR2,
782     x_return_status                OUT NOCOPY VARCHAR2) IS
783   BEGIN
784     IF (l_debug = 'Y') THEN
785        okc_debug.set_indentation('Get_K_Number');
786        okc_debug.log('4700: Entering Get_K_Number', 2);
787     END IF;
788     --
789     -- Call Simple API
790     --
791     okc_ksq_pvt.Get_K_Number(
792             p_scs_code,
793             p_contract_number_modifier,
794             x_contract_number,
795             x_return_status);
796     IF (l_debug = 'Y') THEN
797        okc_debug.log('4800: Exiting Get_K_Number', 2);
798        okc_debug.reset_indentation;
799     END IF;
800   END Get_K_Number;
801 
802 END OKC_CONTRACT_SEQ_PVT;