DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_VP_ASSOCIATIONS_PVT

Source


1 PACKAGE BODY OKL_VP_ASSOCIATIONS_PVT AS
2 /* $Header: OKLRVASB.pls 120.12 2006/07/11 10:07:18 dkagrawa noship $ */
3 
4   G_LA_ASSOC_DATE_MISMATCH CONSTANT fnd_new_messages.message_name%TYPE DEFAULT 'OKL_VN_LA_ASSOC_DATES_MSMTCH';
5   G_LC_ASSOC_DATE_MISMATCH CONSTANT fnd_new_messages.message_name%TYPE DEFAULT 'OKL_VN_LC_ASSOC_DATES_MSMTCH';
6   G_ET_ASSOC_DATE_MISMATCH CONSTANT fnd_new_messages.message_name%TYPE DEFAULT 'OKL_VN_ET_ASSOC_DATES_MSMTCH';
7   G_FP_ASSOC_DATE_MISMATCH CONSTANT fnd_new_messages.message_name%TYPE DEFAULT 'OKL_VN_FP_ASSOC_DATES_MSMTCH';
8   G_IT_ASSOC_DATE_MISMATCH CONSTANT fnd_new_messages.message_name%TYPE DEFAULT 'OKL_VN_IT_ASSOC_DATES_MSMTCH';
9   G_IC_ASSOC_DATE_MISMATCH CONSTANT fnd_new_messages.message_name%TYPE DEFAULT 'OKL_VN_IC_ASSOC_DATES_MSMTCH';
10   G_AGRMNT_MSG_TOKEN CONSTANT fnd_new_messages.message_name%TYPE DEFAULT 'AGRMNT';
11 
12   --------------------------------------------------------
13   -- Validations for the associations
14   --------------------------------------------------------
15   PROCEDURE validate_uniqueness(
16     x_return_status                OUT NOCOPY VARCHAR2
17    ,p_vasv_rec                     IN vasv_rec_type
18   )IS
19 
20     -- cursor to check uniqueness for lease contract templates
21     CURSOR c_is_uniq_csr IS
22     SELECT chr.contract_number
23       FROM okl_vp_associations assoc
24           ,okc_k_headers_b chr
25      WHERE assoc.chr_id = p_vasv_rec.chr_id
26        AND assoc.assoc_object_id = chr.id
27        AND chr.scs_code = 'LEASE'
28        AND assoc.assoc_object_id = p_vasv_rec.assoc_object_id
29        AND assoc.assoc_object_type_code = p_vasv_rec.assoc_object_type_code
30        AND (assoc.id <> p_vasv_rec.id OR p_vasv_rec.id = OKL_API.G_MISS_NUM or p_vasv_rec.id IS NULL)
31        AND (
32              (trunc(p_vasv_rec.start_date) BETWEEN trunc(assoc.start_date) AND trunc(nvl(assoc.end_date,okl_api.g_miss_date))) OR
33              (trunc(assoc.start_date) BETWEEN trunc(p_vasv_rec.start_date) AND trunc(nvl(p_vasv_rec.end_date,okl_api.g_miss_date)))
34            );
35     lv_contract_number okc_k_headers_b.contract_number%TYPE;
36   BEGIN
37     x_return_status := OKL_API.G_RET_STS_SUCCESS;
38     IF(p_vasv_rec.assoc_object_type_code = 'LC_TEMPLATE')THEN
39       OPEN c_is_uniq_csr;
40       LOOP
41         FETCH c_is_uniq_csr INTO lv_contract_number;
42         EXIT WHEN (c_is_uniq_csr%NOTFOUND OR lv_contract_number IS NOT NULL);
43       END LOOP;
44       CLOSE c_is_uniq_csr;
45       IF(lv_contract_number IS NOT NULL)THEN
46         okl_api.set_message(p_app_name => OKL_API.G_APP_NAME
47                            ,p_msg_name => 'OKL_VN_DUPLICATE_LCT'
48                            ,p_token1  => 'CONTRACT_TEMPLATE'
49                            ,p_token1_value => lv_contract_number
50                             );
51         x_return_status := OKL_API.G_RET_STS_ERROR;
52       END IF;
53     END IF;
54   END validate_uniqueness;
55 
56   PROCEDURE validate_vp_associations_dates (
57     x_return_status                OUT NOCOPY VARCHAR2,
58     p_vasv_rec                     IN vasv_rec_type
59     ) IS
60     l_api_name        	VARCHAR2(30) := 'VALIDATE_VP_ASSOCIATIONS_DATES';
61     l_return_status     VARCHAR2(1)  := OKL_API.G_RET_STS_SUCCESS;
62 
63    CURSOR lc_dates_csr (p_object_id IN NUMBER) IS
64    SELECT start_date, end_date
65    FROM okc_k_headers_b
66    WHERE id = p_object_id
67    AND scs_code = 'LEASE'
68    AND template_yn= 'Y';
69 
70    l_start_date DATE;
71    l_end_date   DATE;
72    l_pa_end_date DATE;
73 
74 
75    -- abindal start --
76    --lease application template --
77    CURSOR la_dates_csr (p_object_id IN NUMBER, p_version_number IN NUMBER) IS
78    SELECT valid_from,
79           valid_to
80    FROM okl_leaseapp_templ_versions_v
81    WHERE leaseapp_template_id = p_object_id
82    AND version_status = 'ACTIVE'
83    AND version_number = p_version_number;
84    -- abindal end --
85 
86    l_parent_object_id NUMBER;
87 
88    CURSOR get_creq_type_csr(cp_crs_id okl_vp_change_requests.id%TYPE)IS
89    SELECT change_type_code
90          ,chr_id
91      FROM okl_vp_change_requests
92     WHERE id = cp_crs_id;
93    cv_get_creq_type get_creq_type_csr%ROWTYPE;
94 
95    CURSOR c_get_khr_id (cp_crs_id okl_vp_change_requests.id%TYPE)IS
96    SELECT id
97      FROM okl_k_headers
98     WHERE crs_id = cp_crs_id;
99 
100    CURSOR c_get_parent_dt_csr(cp_chr_id okc_k_headers_b.id%TYPE)IS
101    SELECT start_date
102          ,end_date
103          ,contract_number
104      FROM okc_k_headers_b
105     WHERE id = cp_chr_id;
106 
107    lv_parent_start_date okc_k_headers_b.start_date%TYPE;
108    lv_parent_end_date okc_k_headers_b.end_date%TYPE;
109    lv_contract_number okc_k_headers_b.contract_number%TYPE;
110    lv_message_name fnd_new_messages.message_name%TYPE;
111 
112  BEGIN
113    x_return_status := l_return_status;
114 
115    -- first determine the parent object id
116    IF(p_vasv_rec.chr_id IS NOT NULL AND p_vasv_rec.chr_id <> OKL_API.G_MISS_NUM)THEN
117      l_parent_object_id := p_vasv_rec.chr_id;
118    ELSIF(p_vasv_rec.crs_id IS NOT NULL AND p_vasv_rec.crs_id <> OKL_API.G_MISS_NUM)THEN
119      -- this implies that crs_id is provided, which means we are validating against an
120      -- association type of change request. determine the chr_id from this crs_id
121      OPEN get_creq_type_csr(p_vasv_rec.crs_id); FETCH get_creq_type_csr INTO cv_get_creq_type;
122      CLOSE get_creq_type_csr;
123      IF('AGREEMENT' =  cv_get_creq_type.change_type_code)THEN
124         OPEN c_get_khr_id(p_vasv_rec.crs_id); FETCH c_get_khr_id INTO l_parent_object_id;
125         CLOSE c_get_khr_id;
126      ELSE
127        -- association type of change request
128        l_parent_object_id := cv_get_creq_type.chr_id;
129      END IF;
130    END IF;
131 
132    -- validate if the object effective dates are within the agreement effective dates
133    IF(l_parent_object_id IS NOT NULL)THEN
134      OPEN c_get_parent_dt_csr(l_parent_object_id);
135      FETCH c_get_parent_dt_csr INTO lv_parent_start_date,lv_parent_end_date,lv_contract_number;
136      CLOSE c_get_parent_dt_csr;
137      IF((TRUNC(p_vasv_rec.start_date) < TRUNC(lv_parent_start_date))
138         OR(TRUNC(NVL(p_vasv_rec.end_date, okl_accounting_util.g_final_date)) > TRUNC(NVL(lv_parent_end_date,okl_accounting_util.g_final_date)))
139         )THEN
140        IF(p_vasv_rec.assoc_object_type_code = 'LC_TEMPLATE')THEN
141          lv_message_name := G_LC_ASSOC_DATE_MISMATCH;
142        ELSIF(p_vasv_rec.assoc_object_type_code = 'LA_TEMPLATE')THEN
143          lv_message_name := G_LA_ASSOC_DATE_MISMATCH;
144        ELSIF(p_vasv_rec.assoc_object_type_code = 'LA_EOT_VALUES')THEN
145          lv_message_name := G_ET_ASSOC_DATE_MISMATCH;
146        ELSIF(p_vasv_rec.assoc_object_type_code = 'LA_FINANCIAL_PRODUCT')THEN
147          lv_message_name := G_FP_ASSOC_DATE_MISMATCH;
148        ELSIF(p_vasv_rec.assoc_object_type_code = 'LA_ITEMS')THEN
149          lv_message_name := G_IT_ASSOC_DATE_MISMATCH;
150        ELSIF(p_vasv_rec.assoc_object_type_code = 'LA_ITEM_CATEGORIES')THEN
151          lv_message_name := G_IC_ASSOC_DATE_MISMATCH;
152        END IF;
153         OKL_API.SET_MESSAGE(p_app_name => OKL_API.G_APP_NAME, p_msg_name => lv_message_name);
154 	       x_return_status := OKL_API.G_RET_STS_ERROR;
155         RAISE G_EXCEPTION_HALT_VALIDATION;
156      END IF;
157    END IF;
158 
159    -- Validate association dates --
160    IF (p_vasv_rec.assoc_object_type_code = 'LC_TEMPLATE' ) THEN
161      -- abindal Changed chr_id to assoc_object_id --
162      -- OPEN lc_dates_csr (p_vasv_rec.chr_id);
163  	   OPEN lc_dates_csr (p_vasv_rec.assoc_object_id);
164      FETCH lc_dates_csr INTO l_start_date, l_end_date;
165      CLOSE lc_dates_csr;
166 
167  	   l_pa_end_date := NVL(p_vasv_rec.end_date, l_end_date);
168 
169  	   IF (p_vasv_rec.start_date < l_start_date OR p_vasv_rec.start_date > l_end_date) OR
170         (l_pa_end_date < l_start_date OR l_pa_end_date > l_end_date) THEN
171         OKL_API.SET_MESSAGE(p_app_name => OKL_API.G_APP_NAME,
172                             p_msg_name => 'OKL_VP_ASSOC_INV_DATES'
173                            );
174 	       x_return_status := OKL_API.G_RET_STS_ERROR;
175         RAISE G_EXCEPTION_HALT_VALIDATION;
176      END IF;
177    END IF;
178 
179    -- abindal start --
180 	  IF (p_vasv_rec.assoc_object_type_code = 'LA_TEMPLATE' ) THEN
181 	    OPEN la_dates_csr (p_vasv_rec.assoc_object_id, p_vasv_rec.assoc_object_version);
182 	    FETCH la_dates_csr INTO l_start_date, l_end_date;
183 	    CLOSE la_dates_csr;
184 
185  	   l_pa_end_date := NVL(p_vasv_rec.end_date, l_end_date);
186 
187 	    IF (p_vasv_rec.start_date < l_start_date OR p_vasv_rec.start_date > l_end_date) OR
188 	       (l_pa_end_date < l_start_date OR l_pa_end_date > l_end_date) THEN
189          OKL_API.SET_MESSAGE(p_app_name => OKL_API.G_APP_NAME,
190                              p_msg_name => 'OKL_VP_ASSOC_INV_DATES'
191                             );
192 		       x_return_status := OKL_API.G_RET_STS_ERROR;
193          RAISE G_EXCEPTION_HALT_VALIDATION;
194 	    END IF;
195 	  END IF;
196    -- abindal end --
197 
198   EXCEPTION
199     WHEN G_EXCEPTION_HALT_VALIDATION THEN
200       NULL;
201     WHEN OTHERS THEN
202       OKL_API.SET_MESSAGE( p_app_name     => OKL_API.G_APP_NAME
203                           ,p_msg_name     => G_UNEXPECTED_ERROR
204                           ,p_token1       => G_SQLCODE_TOKEN
205                           ,p_token1_value => SQLCODE
206                           ,p_token2       => G_SQLERRM_TOKEN
207                           ,p_token2_value => SQLERRM);
208       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
209   END validate_vp_associations_dates;
210 
211   PROCEDURE validate_object_version (
212     x_return_status                OUT NOCOPY VARCHAR2,
213     p_vasv_rec                     IN vasv_rec_type
214     ) IS
215 	l_api_name        	VARCHAR2(30) := 'VALIDATE_OBJECT_VERSION';
216     l_return_status     VARCHAR2(1)  := OKL_API.G_RET_STS_SUCCESS;
217 
218   BEGIN
219      x_return_status := l_return_status;
220 
221 	 -- Validate object version for lease applicaiton--
222 
223   EXCEPTION
224     WHEN G_EXCEPTION_HALT_VALIDATION THEN
225       NULL;
226     WHEN OTHERS THEN
227       OKL_API.SET_MESSAGE( p_app_name     => OKL_API.G_APP_NAME
228                           ,p_msg_name     => G_UNEXPECTED_ERROR
229                           ,p_token1       => G_SQLCODE_TOKEN
230                           ,p_token1_value => SQLCODE
231                           ,p_token2       => G_SQLERRM_TOKEN
232                           ,p_token2_value => SQLERRM);
233       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
234   END validate_object_version;
235 
236   PROCEDURE create_vp_associations(
237     p_api_version                  IN NUMBER,
238     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
239     x_return_status                OUT NOCOPY VARCHAR2,
240     x_msg_count                    OUT NOCOPY NUMBER,
241     x_msg_data                     OUT NOCOPY VARCHAR2,
242     p_vasv_rec                     IN vasv_rec_type,
243     x_vasv_rec                     OUT NOCOPY vasv_rec_type
244  ) IS
245      l_api_name          CONSTANT VARCHAR2(30) := 'CREATE_VP_ASSOCIATIONS';
246      l_return_status     VARCHAR2(1)  := OKL_API.G_RET_STS_SUCCESS;
247      l_exist VARCHAR2(1);
248      -- abindal start --
249      l_dummy             VARCHAR2(1);
250      -- Manu 02-Sep-2005 remove references to APPLICATION_TYPE
251      -- l_application_type  OKL_LEASEAPP_TEMPLATES_V.APPLICATION_TYPE%TYPE;
252      l_credit_class	     OKL_LEASEAPP_TMPLS.CUST_CREDIT_CLASSIFICATION%TYPE;
253      l_credit_purpose    OKL_LEASEAPP_TMPLS.CREDIT_REVIEW_PURPOSE%TYPE;
254      -- l_sic_code          OKL_LEASEAPP_TEMPLATES_V.APPLICATION_TYPE%TYPE;
255      l_sic_code          OKL_LEASEAPP_TMPLS.INDUSTRY_CODE%TYPE;
256      l_agrmnt_name       OKC_K_HEADERS_B.CONTRACT_NUMBER%TYPE;
257      /* Manu 31-Aug-2005 Remove REFERENCE_NUMBER column */
258      -- l_appl_temp_name    OKL_LEASEAPP_TEMPLATES_V.REFERENCE_NUMBER%TYPE;
259      l_appl_temp_name    OKL_LEASEAPP_TMPLS.NAME%TYPE;
260      lv_change_type_code okl_vp_change_requests.change_type_code%TYPE;
261      -- abindal end --
262 
263      CURSOR check_duplicate_csr (p_chr_id NUMBER, p_assoc_obj_id NUMBER, p_start_date DATE, p_end_date DATE) IS
264      SELECT '1'
265      FROM   okl_vp_associations
266      WHERE  chr_id = p_chr_id
267      AND    assoc_object_id = p_assoc_obj_id
268      AND    start_date <= p_start_date
269      AND    nvl(end_date,sysdate) >= nvl(p_end_date,sysdate);
270 
271      CURSOR check_duplicate_csr1 (p_crs_id NUMBER, p_assoc_obj_id NUMBER, p_start_date DATE, p_end_date DATE) IS
272      SELECT '1'
273      FROM   okl_vp_associations
274      WHERE  crs_id = p_crs_id
275      AND    assoc_object_id = p_assoc_obj_id
276      AND    start_date <= p_start_date
277      AND    nvl(end_date,sysdate) >= nvl(p_end_date,sysdate);
278 
279      -- abindal start --
280      CURSOR get_la_rec(cp_assoc_id IN NUMBER) IS
281      -- Manu 02-Sep-2005 remove references to APPLICATION_TYPE
282      SELECT -- application_type,
283             cust_credit_classification,
284             credit_review_purpose,
285             -- Change sic_code to industry_code
286             -- sic_code,
287             industry_code,
288             /* Manu 31-Aug-2005 Remove REFERENCE_NUMBER column */
289             -- reference_number
290             name
291      FROM   OKL_LEASEAPP_TMPLS
292      WHERE  id = cp_assoc_id;
293 
294      -- Manu 02-Sep-2005 remove references to APPLICATION_TYPE
295      CURSOR get_la_assoc_chr_rec(cp_chr_id IN NUMBER, -- cp_appl_type IN VARCHAR2,
296                                  cp_credit_class IN VARCHAR2, cp_credit_review IN VARCHAR2, cp_sic_code IN VARCHAR2)IS
297      SELECT 'X'
298      FROM   OKL_LEASEAPP_TMPLS lat,
299             okl_vp_associations_v vpa
300      WHERE  lat.id = vpa.assoc_object_id
301      AND    vpa.assoc_object_type_code = 'LA_TEMPLATE'
302      AND    vpa.chr_id = cp_chr_id
303      AND    lat.cust_credit_classification = cp_credit_class
304      AND    lat.credit_review_purpose = cp_credit_review
305      AND    (lat.industry_code = cp_sic_code OR cp_sic_code IS NULL);
306 
307      -- Manu 02-Sep-2005 remove references to APPLICATION_TYPE
308      CURSOR get_la_assoc_crs_rec(cp_crs_id IN NUMBER, -- cp_appl_type IN VARCHAR2,
309                                  cp_credit_class IN VARCHAR2, cp_credit_review IN VARCHAR2, cp_sic_code IN VARCHAR2)IS
310      SELECT 'X'
311      FROM   OKL_LEASEAPP_TMPLS lat,
312             okl_vp_associations_v vpa
313      WHERE  lat.id = vpa.assoc_object_id
314      AND    vpa.assoc_object_type_code = 'LA_TEMPLATE'
315      AND    vpa.crs_id = cp_crs_id
316      -- Manu 02-Sep-2005 remove references to APPLICATION_TYPE
317      -- AND    lat.application_type = cp_appl_type
318      AND    lat.cust_credit_classification = cp_credit_class
319      AND    lat.credit_review_purpose = cp_credit_review
320      -- Manu 01-Sep-2005 Change sic_code to industry_code
321      -- AND    lat.sic_code = cp_sic_code;
322      AND    lat.industry_code = cp_sic_code;
323 
324      CURSOR get_agrmnt_name(cp_chr_id IN NUMBER) IS
325      SELECT contract_number
326      FROM   OKC_K_HEADERS_B
327      WHERE  id = cp_chr_id;
328 
329      CURSOR c_get_creq_info(cp_crs_id okl_vp_change_requests.id%TYPE) IS
330      SELECT change_type_code
331      FROM   okl_vp_change_requests
332      WHERE  id = cp_crs_id;
333 
334      CURSOR c_get_agr_number(cp_crs_id okl_vp_change_requests.id%TYPE)IS
335      SELECT chr.contract_number
336      FROM   okc_k_headers_b chr,
337             okl_k_headers khr
338      WHERE  chr.id = khr.id
339      AND    khr.crs_id = cp_crs_id;
340 
341      CURSOR get_agreement_name(cp_crs_id IN NUMBER) IS
342      SELECT contract_number
343      FROM   OKC_K_HEADERS_B okc,
344             OKL_VP_CHANGE_REQUESTS chr
345      WHERE  chr.id = cp_crs_id
346      AND    okc.id = chr.chr_id;
347     -- abindal end --
348 
349      CURSOR c_chk_lat_dates(cp_chr_id okc_k_headers_b.id%TYPE
350                            ,cp_object_id okl_vp_associations.assoc_object_id%TYPE
351                            ,cp_start_date okl_vp_associations.start_date%TYPE
352                            ,cp_end_date okl_vp_associations.end_date%TYPE)IS
353      SELECT 'X'
354        FROM okl_vp_associations
355       WHERE chr_id = cp_chr_id
356         AND assoc_object_id = cp_object_id
357         AND ((trunc(start_date) BETWEEN trunc(cp_start_date) AND trunc(NVL(cp_end_date,okl_accounting_util.g_final_date))) OR
358              (trunc(cp_start_date) BETWEEN trunc(start_date) AND TRUNC(NVL(end_date,okl_accounting_util.g_final_date))));
359 
360      CURSOR c_chk_lat_dates1(cp_crs_id okl_vp_change_requests.id%TYPE
361                            ,cp_object_id okl_vp_associations.assoc_object_id%TYPE
362                            ,cp_start_date okl_vp_associations.start_date%TYPE
363                            ,cp_end_date okl_vp_associations.end_date%TYPE)IS
364      SELECT 'X'
365        FROM okl_vp_associations
366       WHERE crs_id = cp_crs_id
367         AND assoc_object_id = cp_object_id
368         AND ((trunc(start_date) BETWEEN trunc(cp_start_date) AND trunc(NVL(cp_end_date,okl_accounting_util.g_final_date))) OR
369              (trunc(cp_start_date) BETWEEN trunc(start_date) AND TRUNC(NVL(end_date,okl_accounting_util.g_final_date))));
370 
371    BEGIN
372 
373      x_return_status := l_return_status;
374      -- Call start_activity to create savepoint, check compatibility
375      -- and initialize message list
376      l_return_status := OKL_API.START_ACTIVITY (l_api_name
377                                                 ,p_init_msg_list
378                                                 ,'_PVT'
379                                                 ,x_return_status);
380 
381      -- Check if activity started successfully
382      IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
383         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
384      ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
385         RAISE OKL_API.G_EXCEPTION_ERROR;
386      END IF;
387 
388   -- Make sure either chr_id or crs_id is populated--
389   IF(p_vasv_rec.chr_id = OKL_API.G_MISS_NUM OR p_vasv_rec.chr_id IS NULL) AND
390     (p_vasv_rec.crs_id = OKL_API.G_MISS_NUM OR p_vasv_rec.crs_id IS NULL) THEN
391     OKL_API.set_message(OKL_API.G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'chr_id or crs_id');
392     x_return_status := OKL_API.G_RET_STS_ERROR;
393     RAISE OKL_API.G_EXCEPTION_ERROR;
394   END IF;
395 
396   -- abindal start --
397   OPEN get_la_rec(p_vasv_rec.assoc_object_id);
398 
399   -- Manu 02-Sep-2005 remove references to APPLICATION_TYPE
400   FETCH get_la_rec INTO l_credit_class, l_credit_purpose, l_sic_code, l_appl_temp_name;
401   CLOSE get_la_rec;
402 
403    IF (p_vasv_rec.chr_id IS NOT NULL AND p_vasv_rec.chr_id <> OKL_API.G_MISS_NUM) THEN
404      IF('LA_TEMPLATE' = p_vasv_rec.assoc_object_type_code)THEN
405         l_dummy := null;
406         OPEN c_chk_lat_dates (p_vasv_rec.chr_id, p_vasv_rec.assoc_object_id, p_vasv_rec.start_date, p_vasv_rec.end_date);
407         FETCH c_chk_lat_dates INTO l_dummy;
408         CLOSE c_chk_lat_dates;
409 
410         IF (l_dummy IS NOT NULL) THEN
411           OPEN get_agrmnt_name(p_vasv_rec.chr_id);
412           FETCH get_agrmnt_name INTO l_agrmnt_name;
413           CLOSE  get_agrmnt_name;
414 
415           OKL_API.SET_MESSAGE(OKL_API.G_APP_NAME,
416                               'OKL_VP_LAT_VERSION_DATES_ERR',
417                               'APP_TEMPLATE',
418                               l_appl_temp_name,
419                               'AGR_NUMBER',
420                               l_agrmnt_name
421                              );
422           x_return_status := OKL_API.G_RET_STS_ERROR;
423           RAISE OKL_API.G_EXCEPTION_ERROR;
424         END IF;
425      END IF;
426    END IF;
427 
428    IF (p_vasv_rec.crs_id IS NOT NULL AND p_vasv_rec.crs_id <> OKL_API.G_MISS_NUM) THEN
429      IF('LA_TEMPLATE' = p_vasv_rec.assoc_object_type_code)THEN
430        OPEN  c_get_creq_info (p_vasv_rec.crs_id);
431        FETCH c_get_creq_info INTO lv_change_type_code;
432        CLOSE c_get_creq_info;
433        -- for AGREEMENT type of change request, the context agreement needs to be derived
434        IF('AGREEMENT' = lv_change_type_code)THEN
435           OPEN  c_get_agr_number(p_vasv_rec.crs_id);
436           FETCH c_get_agr_number INTO l_agrmnt_name;
437           CLOSE c_get_agr_number;
438        ELSIF('ASSOCIATION' = lv_change_type_code)THEN
439          -- for ASSOCIATION type of change request, the chr_id in the okl_vp_change_requests table is as good
440          OPEN  get_agreement_name(p_vasv_rec.crs_id);
441          FETCH get_agreement_name INTO l_agrmnt_name;
442          CLOSE get_agreement_name;
443        END IF;
444         l_dummy := null;
445         OPEN c_chk_lat_dates1 (p_vasv_rec.crs_id, p_vasv_rec.assoc_object_id, p_vasv_rec.start_date, p_vasv_rec.end_date);
446         FETCH c_chk_lat_dates1 INTO l_dummy;
447         CLOSE c_chk_lat_dates1;
448 
449        IF (l_dummy IS NOT NULL) THEN
450          OKL_API.SET_MESSAGE( OKL_API.G_APP_NAME,
451                               'OKL_VP_LAT_VERSION_DATES_ERR',
452                               'APP_TEMPLATE',
453                               l_appl_temp_name,
454                               'AGR_NUMBER',
455                               l_agrmnt_name
456                             );
457          x_return_status := OKL_API.G_RET_STS_ERROR;
458          RAISE OKL_API.G_EXCEPTION_ERROR;
459        END IF;
460      END IF;
461    END IF;
462   -- abindal end --
463 
464     -- sjalasut, added uniqueness check for Lease Contract Template. A Lease Contract Template instance cannot exist on the Program Agreement
465     -- more than once for given effective dates
466     validate_uniqueness(x_return_status => x_return_status, p_vasv_rec => p_vasv_rec);
467     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
468       l_return_status := x_return_status;
469       RAISE OKL_API.G_EXCEPTION_ERROR;
470     END IF;
471 
472      OKL_VAS_PVT.insert_row(p_api_version,
473                             p_init_msg_list,
474                             x_return_status,
475                             x_msg_count,
476                             x_msg_data,
477                             p_vasv_rec,
478                             x_vasv_rec);
479 
480      If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
481        raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
482      Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
483        raise OKL_API.G_EXCEPTION_ERROR;
484      End If;
485 
486      validate_vp_associations_dates(x_return_status, x_vasv_rec);
487      IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
488        l_return_status := x_return_status;
489        RAISE OKL_API.G_EXCEPTION_ERROR;
490      END IF;
491      validate_object_version(x_return_status, x_vasv_rec);
492      IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
493        l_return_status := x_return_status;
494        RAISE OKL_API.G_EXCEPTION_ERROR;
495      END IF;
496 
497      x_return_status := l_return_status;
498 
499     /* Manu 29-Jun-2005 Begin */
500   IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
501     OKL_VENDOR_PROGRAM_PVT.passed_to_incomplete(p_api_version    => p_api_version
502                          ,p_init_msg_list => p_init_msg_list
503                          ,x_return_status => x_return_status
504                          ,x_msg_count     => x_msg_count
505                          ,x_msg_data      => x_msg_data
506                          ,p_program_id    => p_vasv_rec.chr_id
507                         );
508   END IF;
509     /* Manu 29-Jun-2005 END */
510 
511      OKL_API.END_ACTIVITY (x_msg_count
512                            ,x_msg_data );
513 
514    EXCEPTION
515      WHEN OKL_API.G_EXCEPTION_ERROR THEN
516      x_return_status := OKL_API.HANDLE_EXCEPTIONS
517               (l_api_name,
518               G_PKG_NAME,
519               'OKL_API.G_RET_STS_ERROR',
520               x_msg_count,
521               x_msg_data,
522               '_PVT');
523      WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
524      x_return_status :=OKL_API.HANDLE_EXCEPTIONS
525              (l_api_name,
526              G_PKG_NAME,
527              'OKL_API.G_RET_STS_UNEXP_ERROR',
528              x_msg_count,
529              x_msg_data,
530              '_PVT');
531      WHEN OTHERS THEN
532      x_return_status :=OKL_API.HANDLE_EXCEPTIONS
533              (l_api_name,
534              G_PKG_NAME,
535              'OTHERS',
536              x_msg_count,
537              x_msg_data,
538              '_PVT');
539    END create_vp_associations;
540 
541    PROCEDURE create_vp_associations(
542      p_api_version                  IN NUMBER,
543      p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
544      x_return_status                OUT NOCOPY VARCHAR2,
545      x_msg_count                    OUT NOCOPY NUMBER,
546      x_msg_data                     OUT NOCOPY VARCHAR2,
547      p_vasv_tbl                     IN vasv_tbl_type,
548      x_vasv_tbl                     OUT NOCOPY vasv_tbl_type
549      ) IS
550      l_api_name          CONSTANT VARCHAR2(30) := 'CREATE_VP_ASSOCIATIONS';
551      l_return_status     VARCHAR2(1)  := OKL_API.G_RET_STS_SUCCESS;
552      l_overall_status     VARCHAR2(1)   := OKL_API.G_RET_STS_SUCCESS;
553      i                    NUMBER;
554    BEGIN
555 
556      If p_vasv_tbl.COUNT > 0 Then
557        i := p_vasv_tbl.FIRST;
558        LOOP
559          -- call procedure in complex API for a record
560          create_vp_associations(p_api_version,
561                            		  p_init_msg_list,
562                           		  x_return_status,
563                             	  x_msg_count,
564                             	  x_msg_data,
565                             	  p_vasv_tbl(i),
566                             	  x_vasv_tbl(i));
567          If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
568            If l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR Then
569              l_overall_status := x_return_status;
570            End If;
571          End If;
572 
573        EXIT WHEN (i = p_vasv_tbl.LAST);
574        i := p_vasv_tbl.NEXT(i);
575        END LOOP;
576 
577        -- return overall status
578        x_return_status := l_overall_status;
579      End If;
580 
581     If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
582 	  raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
583     Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
584 	  raise OKL_API.G_EXCEPTION_ERROR;
585     End If;
586 
587    EXCEPTION
588      WHEN OKL_API.G_EXCEPTION_ERROR THEN
589      x_return_status := OKL_API.HANDLE_EXCEPTIONS
590               (l_api_name,
591               G_PKG_NAME,
592               'OKL_API.G_RET_STS_ERROR',
593               x_msg_count,
594               x_msg_data,
595               '_PVT');
596      WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
597      x_return_status :=OKL_API.HANDLE_EXCEPTIONS
598              (l_api_name,
599              G_PKG_NAME,
600              'OKL_API.G_RET_STS_UNEXP_ERROR',
601              x_msg_count,
602              x_msg_data,
603              '_PVT');
604      WHEN OTHERS THEN
605      x_return_status :=OKL_API.HANDLE_EXCEPTIONS
606              (l_api_name,
607              G_PKG_NAME,
608              'OTHERS',
609              x_msg_count,
610              x_msg_data,
611              '_PVT');
612    END create_vp_associations;
613 
614    PROCEDURE lock_vp_associations(
615      p_api_version                  IN NUMBER,
616      p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
617      x_return_status                OUT NOCOPY VARCHAR2,
618      x_msg_count                    OUT NOCOPY NUMBER,
619      x_msg_data                     OUT NOCOPY VARCHAR2,
620      p_vasv_rec                    IN vasv_rec_type
621      ) IS
622      l_api_name          CONSTANT VARCHAR2(30) := 'LOCK_VP_ASSOCIATIONS';
623      l_return_status     VARCHAR2(1)  := OKL_API.G_RET_STS_SUCCESS;
624    BEGIN
625      x_return_status := l_return_status;
626      -- Call start_activity to create savepoint, check compatibility
627      -- and initialize message list
628      l_return_status := OKL_API.START_ACTIVITY (l_api_name
629                                                 ,p_init_msg_list
630                                                 ,'_PVT'
631                                                 ,x_return_status);
632      -- Check if activity started successfully
633      IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
634         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
635      ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
636         RAISE OKL_API.G_EXCEPTION_ERROR;
637      END IF;
638 
639      OKL_VAS_PVT.lock_row(p_api_version,
640                             p_init_msg_list,
641                             x_return_status,
642                             x_msg_count,
643                             x_msg_data,
644                             p_vasv_rec);
645 
646      If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
647 	  raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
648      Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
649 	  raise OKL_API.G_EXCEPTION_ERROR;
650      End If;
651 
652      OKL_API.END_ACTIVITY (x_msg_count
653                            ,x_msg_data );
654 
655    EXCEPTION
656      WHEN OKL_API.G_EXCEPTION_ERROR THEN
657      x_return_status := OKL_API.HANDLE_EXCEPTIONS
658               (l_api_name,
659               G_PKG_NAME,
660               'OKL_API.G_RET_STS_ERROR',
661               x_msg_count,
662               x_msg_data,
663               '_PVT');
664      WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
665      x_return_status :=OKL_API.HANDLE_EXCEPTIONS
666              (l_api_name,
667              G_PKG_NAME,
668              'OKL_API.G_RET_STS_UNEXP_ERROR',
669              x_msg_count,
670              x_msg_data,
671              '_PVT');
672      WHEN OTHERS THEN
673      x_return_status :=OKL_API.HANDLE_EXCEPTIONS
674              (l_api_name,
675              G_PKG_NAME,
676              'OTHERS',
677              x_msg_count,
678              x_msg_data,
679              '_PVT');
680    END lock_vp_associations;
681 
682    PROCEDURE lock_vp_associations(
683      p_api_version                  IN NUMBER,
684      p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
685      x_return_status                OUT NOCOPY VARCHAR2,
686      x_msg_count                    OUT NOCOPY NUMBER,
687      x_msg_data                     OUT NOCOPY VARCHAR2,
688      p_vasv_tbl                     IN vasv_tbl_type
689      ) IS
690      l_api_name          CONSTANT VARCHAR2(30) := 'LOCK_VP_ASSOCIATIONS';
691      l_return_status     VARCHAR2(1)  := OKL_API.G_RET_STS_SUCCESS;
692      l_overall_status     VARCHAR2(1)   := OKL_API.G_RET_STS_SUCCESS;
693      i                    NUMBER;
694    BEGIN
695 
696      If p_vasv_tbl.COUNT > 0 Then
697        i := p_vasv_tbl.FIRST;
698        LOOP
699          -- call procedure in complex API for a record
700          lock_vp_associations(p_api_version,
701                                 p_init_msg_list,
702                                 x_return_status,
703                                 x_msg_count,
704                                 x_msg_data,
705                                 p_vasv_tbl(i));
706          If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
707            If l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR Then
708              l_overall_status := x_return_status;
709            End If;
710          End If;
711 
712        EXIT WHEN (i = p_vasv_tbl.LAST);
713        i := p_vasv_tbl.NEXT(i);
714        END LOOP;
715 
716        -- return overall status
717        x_return_status := l_overall_status;
718      End If;
719 
720     If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
721 	  raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
722     Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
723 	  raise OKL_API.G_EXCEPTION_ERROR;
724     End If;
725 
726    EXCEPTION
727      WHEN OKL_API.G_EXCEPTION_ERROR THEN
728      x_return_status := OKL_API.HANDLE_EXCEPTIONS
729               (l_api_name,
730               G_PKG_NAME,
731               'OKL_API.G_RET_STS_ERROR',
732               x_msg_count,
733               x_msg_data,
734               '_PVT');
735      WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
736      x_return_status :=OKL_API.HANDLE_EXCEPTIONS
737              (l_api_name,
738              G_PKG_NAME,
739              'OKL_API.G_RET_STS_UNEXP_ERROR',
740              x_msg_count,
741              x_msg_data,
742              '_PVT');
743      WHEN OTHERS THEN
744      x_return_status :=OKL_API.HANDLE_EXCEPTIONS
745              (l_api_name,
746              G_PKG_NAME,
747              'OTHERS',
748              x_msg_count,
749              x_msg_data,
750              '_PVT');
751    END lock_vp_associations;
752 
753    PROCEDURE delete_vp_associations(
754      p_api_version                  IN NUMBER,
755      p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
756      x_return_status                OUT NOCOPY VARCHAR2,
757      x_msg_count                    OUT NOCOPY NUMBER,
758      x_msg_data                     OUT NOCOPY VARCHAR2,
759      p_vasv_rec                    IN vasv_rec_type
760      ) IS
761      l_api_name          CONSTANT VARCHAR2(30) := 'DELETE_VP_ASSOCIATIONS';
762      l_return_status     VARCHAR2(1)  := OKL_API.G_RET_STS_SUCCESS;
763      l_chr_id            OKL_VP_ASSOCIATIONS.CHR_ID%TYPE;
764 
765 
766      CURSOR cur_get_chr_id IS
767      SELECT chr_id
768      FROM   okl_vp_associations
769      WHERE  id = p_vasv_rec.id;
770 
771    BEGIN
772      x_return_status := l_return_status;
773      -- Call start_activity to create savepoint, check compatibility
774      -- and initialize message list
775      l_return_status := OKL_API.START_ACTIVITY (l_api_name
776                                                 ,p_init_msg_list
777                                                 ,'_PVT'
778                                                 ,x_return_status);
779      -- Check if activity started successfully
780      IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
781         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
782      ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
783         RAISE OKL_API.G_EXCEPTION_ERROR;
784      END IF;
785 
786 
787     /* Manu 29-Jun-2005 Begin */
788     OPEN  cur_get_chr_id;
789     FETCH cur_get_chr_id INTO l_chr_id;
790     CLOSE cur_get_chr_id;
791     /* Manu 29-Jun-2005 END */
792 
793 
794      OKL_VAS_PVT.delete_row(p_api_version,
795                             p_init_msg_list,
796                             x_return_status,
797                             x_msg_count,
798                             x_msg_data,
799                             p_vasv_rec);
800 
801      If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
802 	  raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
803      Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
804 	  raise OKL_API.G_EXCEPTION_ERROR;
805      End If;
806 
807 
808     /* Manu 29-Jun-2005 Begin */
809   IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
810     OKL_VENDOR_PROGRAM_PVT.passed_to_incomplete(p_api_version    => p_api_version
811                          ,p_init_msg_list => p_init_msg_list
812                          ,x_return_status => x_return_status
813                          ,x_msg_count     => x_msg_count
814                          ,x_msg_data      => x_msg_data
815                          ,p_program_id    => l_chr_id
816                         );
817   END IF;
818     /* Manu 29-Jun-2005 END */
819 
820      OKL_API.END_ACTIVITY (x_msg_count
821                            ,x_msg_data );
822 
823    EXCEPTION
824      WHEN OKL_API.G_EXCEPTION_ERROR THEN
825      x_return_status := OKL_API.HANDLE_EXCEPTIONS
826               (l_api_name,
827               G_PKG_NAME,
828               'OKL_API.G_RET_STS_ERROR',
829               x_msg_count,
830               x_msg_data,
831               '_PVT');
832      WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
833      x_return_status :=OKL_API.HANDLE_EXCEPTIONS
834              (l_api_name,
835              G_PKG_NAME,
836              'OKL_API.G_RET_STS_UNEXP_ERROR',
837              x_msg_count,
838              x_msg_data,
839              '_PVT');
840      WHEN OTHERS THEN
841      x_return_status :=OKL_API.HANDLE_EXCEPTIONS
842              (l_api_name,
843              G_PKG_NAME,
844              'OTHERS',
845              x_msg_count,
846              x_msg_data,
847              '_PVT');
848    END delete_vp_associations;
849 
850    PROCEDURE delete_vp_associations(
851      p_api_version                  IN NUMBER,
852      p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
853      x_return_status                OUT NOCOPY VARCHAR2,
854      x_msg_count                    OUT NOCOPY NUMBER,
855      x_msg_data                     OUT NOCOPY VARCHAR2,
856      p_vasv_tbl                     IN vasv_tbl_type
857      ) IS
858      l_api_name          CONSTANT VARCHAR2(30) := 'DELETE_VP_ASSOCIATIONS';
859      l_return_status     VARCHAR2(1)  := OKL_API.G_RET_STS_SUCCESS;
860      l_overall_status     VARCHAR2(1)   := OKL_API.G_RET_STS_SUCCESS;
861      i                    NUMBER;
862    BEGIN
863 
864      If p_vasv_tbl.COUNT > 0 Then
865        i := p_vasv_tbl.FIRST;
866        LOOP
867          -- call procedure in complex API for a record
868          delete_vp_associations(p_api_version,
869                                   p_init_msg_list,
870                                   x_return_status,
871                                   x_msg_count,
872                                   x_msg_data,
873                                   p_vasv_tbl(i));
874          If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
875            If l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR Then
876              l_overall_status := x_return_status;
877            End If;
878          End If;
879 
880        EXIT WHEN (i = p_vasv_tbl.LAST);
881        i := p_vasv_tbl.NEXT(i);
882        END LOOP;
883 
884        -- return overall status
885        x_return_status := l_overall_status;
886      End If;
887 
888     If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
889 	  raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
890     Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
891 	  raise OKL_API.G_EXCEPTION_ERROR;
892     End If;
893 
894    EXCEPTION
895      WHEN OKL_API.G_EXCEPTION_ERROR THEN
896      x_return_status := OKL_API.HANDLE_EXCEPTIONS
897               (l_api_name,
898               G_PKG_NAME,
899               'OKL_API.G_RET_STS_ERROR',
900               x_msg_count,
901               x_msg_data,
902               '_PVT');
903      WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
904      x_return_status :=OKL_API.HANDLE_EXCEPTIONS
905              (l_api_name,
906              G_PKG_NAME,
907              'OKL_API.G_RET_STS_UNEXP_ERROR',
908              x_msg_count,
909              x_msg_data,
910              '_PVT');
911      WHEN OTHERS THEN
912      x_return_status :=OKL_API.HANDLE_EXCEPTIONS
913              (l_api_name,
914              G_PKG_NAME,
915              'OTHERS',
916              x_msg_count,
917              x_msg_data,
918              '_PVT');
919    END delete_vp_associations;
920 
921    PROCEDURE update_vp_associations(
922      p_api_version                  IN NUMBER,
923      p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
924      x_return_status                OUT NOCOPY VARCHAR2,
925      x_msg_count                    OUT NOCOPY NUMBER,
926      x_msg_data                     OUT NOCOPY VARCHAR2,
927      p_vasv_rec                     IN vasv_rec_type,
928      x_vasv_rec                     OUT NOCOPY vasv_rec_type
929      ) IS
930      l_api_name          CONSTANT VARCHAR2(30) := 'UPDATE_VP_ASSOCIATIONS';
931      l_return_status     VARCHAR2(1)  := OKL_API.G_RET_STS_SUCCESS;
932 		 l_vasv_rec vasv_rec_type;
933    BEGIN
934      x_return_status := l_return_status;
935      -- Call start_activity to create savepoint, check compatibility
936      -- and initialize message list
937      l_return_status := OKL_API.START_ACTIVITY (l_api_name
938                                                 ,p_init_msg_list
939                                                 ,'_PVT'
940                                                 ,x_return_status);
941      -- Check if activity started successfully
942      IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
943         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
944      ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
945         RAISE OKL_API.G_EXCEPTION_ERROR;
946      END IF;
947 
948     -- sjalasut, added uniqueness check for Lease Contract Template. A Lease Contract Template instance cannot exist on the Program Agreement
949     -- more than once for given effective dates
950     validate_uniqueness(x_return_status => x_return_status, p_vasv_rec => p_vasv_rec);
951     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
952       l_return_status := x_return_status;
953       RAISE OKL_API.G_EXCEPTION_ERROR;
954     END IF;
955 
956 		 -- need to pass G_MISS_.. to the required fields with null values
957 		 -- to avoid errors from TAPIs--
958 		 l_vasv_rec := p_vasv_rec;
959 
960 		 if (l_vasv_rec.chr_id is null) then
961 		   l_vasv_rec.chr_id := OKL_API.G_MISS_NUM;
962 		 end if;
963 		 if (l_vasv_rec.crs_id is null) then
964 		   l_vasv_rec.crs_id := OKL_API.G_MISS_NUM;
965 		 end if;
966 		 if (l_vasv_rec.object_version_number is null) then
967 		   l_vasv_rec.object_version_number := OKL_API.G_MISS_NUM;
968 		 end if;
969 		 if (l_vasv_rec.assoc_object_type_code is null) then
970 		   l_vasv_rec.assoc_object_type_code := OKL_API.G_MISS_CHAR;
971 		 end if;
972 		 if (l_vasv_rec.start_date is null) then
973 		   l_vasv_rec.start_date := OKL_API.G_MISS_DATE;
974 		 end if;
975 		 if (l_vasv_rec.assoc_object_id is null) then
976 		   l_vasv_rec.assoc_object_id := OKL_API.G_MISS_NUM;
977 		 end if;
978 		 if (l_vasv_rec.created_by is null) then
979 		   l_vasv_rec.created_by := OKL_API.G_MISS_NUM;
980 		 end if;
981 		 if (l_vasv_rec.creation_date is null) then
982 		   l_vasv_rec.creation_date := OKL_API.G_MISS_DATE;
983 		 end if;
984 		 if (l_vasv_rec.last_updated_by is null) then
985 		   l_vasv_rec.last_updated_by := OKL_API.G_MISS_NUM;
986 		 end if;
987 		 if (l_vasv_rec.last_update_date is null) then
988 		   l_vasv_rec.last_update_date := OKL_API.G_MISS_DATE;
989 		 end if;
990 
991      OKL_VAS_PVT.update_row(p_api_version,
992                             p_init_msg_list,
993                             x_return_status,
994                             x_msg_count,
995                             x_msg_data,
996                             l_vasv_rec,
997                             x_vasv_rec);
998 
999      If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
1000 	  raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1001      Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
1002 	  raise OKL_API.G_EXCEPTION_ERROR;
1003      End If;
1004 
1005      validate_vp_associations_dates(x_return_status, x_vasv_rec);
1006 
1007      IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1008        l_return_status := x_return_status;
1009        RAISE OKL_API.G_EXCEPTION_ERROR;
1010      END IF;
1011 
1012      validate_object_version(x_return_status, x_vasv_rec);
1013 
1014      IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1015        l_return_status := x_return_status;
1016        RAISE OKL_API.G_EXCEPTION_ERROR;
1017      END IF;
1018 
1019     /* Manu 29-Jun-2005 Begin */
1020   IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1021     OKL_VENDOR_PROGRAM_PVT.passed_to_incomplete(p_api_version    => p_api_version
1022                          ,p_init_msg_list => p_init_msg_list
1023                          ,x_return_status => x_return_status
1024                          ,x_msg_count     => x_msg_count
1025                          ,x_msg_data      => x_msg_data
1026                          ,p_program_id    => l_vasv_rec.chr_id
1027                         );
1028   END IF;
1029     /* Manu 29-Jun-2005 END */
1030 
1031      OKL_API.END_ACTIVITY (x_msg_count
1032                            ,x_msg_data );
1033 
1034    EXCEPTION
1035      WHEN OKL_API.G_EXCEPTION_ERROR THEN
1036      x_return_status := OKL_API.HANDLE_EXCEPTIONS
1037               (l_api_name,
1038               G_PKG_NAME,
1039               'OKL_API.G_RET_STS_ERROR',
1040               x_msg_count,
1041               x_msg_data,
1042               '_PVT');
1043      WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1044      x_return_status :=OKL_API.HANDLE_EXCEPTIONS
1045              (l_api_name,
1046              G_PKG_NAME,
1047              'OKL_API.G_RET_STS_UNEXP_ERROR',
1048              x_msg_count,
1049              x_msg_data,
1050              '_PVT');
1051      WHEN OTHERS THEN
1052      x_return_status :=OKL_API.HANDLE_EXCEPTIONS
1053              (l_api_name,
1054              G_PKG_NAME,
1055              'OTHERS',
1056              x_msg_count,
1057              x_msg_data,
1058              '_PVT');
1059    END update_vp_associations;
1060 
1061    PROCEDURE update_vp_associations(
1062      p_api_version                  IN NUMBER,
1063      p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1064      x_return_status                OUT NOCOPY VARCHAR2,
1065      x_msg_count                    OUT NOCOPY NUMBER,
1066      x_msg_data                     OUT NOCOPY VARCHAR2,
1067      p_vasv_tbl                     IN vasv_tbl_type,
1068      x_vasv_tbl                     OUT NOCOPY vasv_tbl_type
1069      ) IS
1070      l_api_name          CONSTANT VARCHAR2(30) := 'UPDATE_VP_ASSOCIATIONS';
1071      l_return_status     VARCHAR2(1)  := OKL_API.G_RET_STS_SUCCESS;
1072      l_overall_status     VARCHAR2(1)   := OKL_API.G_RET_STS_SUCCESS;
1073      i                    NUMBER;
1074 
1075    BEGIN
1076 
1077      If p_vasv_tbl.COUNT > 0 Then
1078        i := p_vasv_tbl.FIRST;
1079        LOOP
1080          -- call procedure in complex API for a record
1081          update_vp_associations(p_api_version,
1082                                   p_init_msg_list,
1083                                   x_return_status,
1084                                   x_msg_count,
1085                                   x_msg_data,
1086                                   p_vasv_tbl(i),
1087                                   x_vasv_tbl(i));
1088          If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
1089            If l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR Then
1090              l_overall_status := x_return_status;
1091            End If;
1092          End If;
1093 
1094        EXIT WHEN (i = p_vasv_tbl.LAST);
1095        i := p_vasv_tbl.NEXT(i);
1096        END LOOP;
1097 
1098        -- return overall status
1099        x_return_status := l_overall_status;
1100      End If;
1101 
1102      If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
1103 	  raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1104      Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
1105 	  raise OKL_API.G_EXCEPTION_ERROR;
1106      End If;
1107 
1108    EXCEPTION
1109      WHEN OKL_API.G_EXCEPTION_ERROR THEN
1110      x_return_status := OKL_API.HANDLE_EXCEPTIONS
1111               (l_api_name,
1112               G_PKG_NAME,
1113               'OKL_API.G_RET_STS_ERROR',
1114               x_msg_count,
1115               x_msg_data,
1116               '_PVT');
1117      WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1118      x_return_status :=OKL_API.HANDLE_EXCEPTIONS
1119              (l_api_name,
1120              G_PKG_NAME,
1121              'OKL_API.G_RET_STS_UNEXP_ERROR',
1122              x_msg_count,
1123              x_msg_data,
1124              '_PVT');
1125      WHEN OTHERS THEN
1126      x_return_status :=OKL_API.HANDLE_EXCEPTIONS
1127              (l_api_name,
1128              G_PKG_NAME,
1129              'OTHERS',
1130              x_msg_count,
1131              x_msg_data,
1132              '_PVT');
1133    END update_vp_associations;
1134 
1135    PROCEDURE validate_vp_associations(
1136      p_api_version                  IN NUMBER,
1137      p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1138      x_return_status                OUT NOCOPY VARCHAR2,
1139      x_msg_count                    OUT NOCOPY NUMBER,
1140      x_msg_data                     OUT NOCOPY VARCHAR2,
1141      p_vasv_rec                     IN vasv_rec_type
1142      ) IS
1143      l_api_name          CONSTANT VARCHAR2(30) := 'VALIDATE_VP_ASSOCIATIONS';
1144      l_return_status     VARCHAR2(1)  := OKL_API.G_RET_STS_SUCCESS;
1145 
1146 	 --
1147    BEGIN
1148      x_return_status := l_return_status;
1149      -- Call start_activity to create savepoint, check compatibility
1150      -- and initialize message list
1151      l_return_status := OKL_API.START_ACTIVITY (l_api_name
1152                                                 ,p_init_msg_list
1153                                                 ,'_PVT'
1154                                                 ,x_return_status);
1155      -- Check if activity started successfully
1156      IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1157         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1158      ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1159         RAISE OKL_API.G_EXCEPTION_ERROR;
1160      END IF;
1161 
1162 	 -- Validate the record before column level validation
1163      validate_vp_associations_dates(x_return_status, p_vasv_rec);
1164 
1165      If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
1166 	  raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1167      Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
1168 	  raise OKL_API.G_EXCEPTION_ERROR;
1169      End If;
1170 
1171 	 -- Validate LA unique combination --
1172 
1173 
1174 
1175      OKL_VAS_PVT.validate_row(p_api_version,
1176                             p_init_msg_list,
1177                             x_return_status,
1178                             x_msg_count,
1179                             x_msg_data,
1180                             p_vasv_rec);
1181 
1182      If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
1183 	  raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1184      Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
1185 	  raise OKL_API.G_EXCEPTION_ERROR;
1186      End If;
1187 
1188      OKL_API.END_ACTIVITY (x_msg_count
1189                            ,x_msg_data );
1190 
1191    EXCEPTION
1192      WHEN OKL_API.G_EXCEPTION_ERROR THEN
1193      x_return_status := OKL_API.HANDLE_EXCEPTIONS
1194               (l_api_name,
1195               G_PKG_NAME,
1196               'OKL_API.G_RET_STS_ERROR',
1197               x_msg_count,
1198               x_msg_data,
1199               '_PVT');
1200      WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1201      x_return_status :=OKL_API.HANDLE_EXCEPTIONS
1202              (l_api_name,
1203              G_PKG_NAME,
1204              'OKL_API.G_RET_STS_UNEXP_ERROR',
1205              x_msg_count,
1206              x_msg_data,
1207              '_PVT');
1208      WHEN OTHERS THEN
1209      x_return_status :=OKL_API.HANDLE_EXCEPTIONS
1210              (l_api_name,
1211              G_PKG_NAME,
1212              'OTHERS',
1213              x_msg_count,
1214              x_msg_data,
1215              '_PVT');
1216    END validate_vp_associations;
1217 
1218    PROCEDURE validate_vp_associations(
1219      p_api_version                  IN NUMBER,
1220      p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1221      x_return_status                OUT NOCOPY VARCHAR2,
1222      x_msg_count                    OUT NOCOPY NUMBER,
1223      x_msg_data                     OUT NOCOPY VARCHAR2,
1224      p_vasv_tbl                     IN vasv_tbl_type
1225      ) IS
1226      l_api_name          CONSTANT VARCHAR2(30) := 'VALIDATE_VP_ASSOCIATIONS';
1227      l_return_status     VARCHAR2(1)  := OKL_API.G_RET_STS_SUCCESS;
1228      l_overall_status     VARCHAR2(1)   := OKL_API.G_RET_STS_SUCCESS;
1229      i                    NUMBER;
1230    BEGIN
1231 
1232      If p_vasv_tbl.COUNT > 0 Then
1233        i := p_vasv_tbl.FIRST;
1234        LOOP
1235          -- call procedure in complex API for a record
1236          validate_vp_associations(p_api_version,
1237                           		    p_init_msg_list,
1238                           			x_return_status,
1239                           			x_msg_count,
1240                          			x_msg_data,
1241                           			p_vasv_tbl(i));
1242          If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
1243            If l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR Then
1244              l_overall_status := x_return_status;
1245            End If;
1246          End If;
1247 
1248        EXIT WHEN (i = p_vasv_tbl.LAST);
1249        i := p_vasv_tbl.NEXT(i);
1250        END LOOP;
1251 
1252        -- return overall status
1253        x_return_status := l_overall_status;
1254      End If;
1255 
1256     If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
1257 	  raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1258     Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
1259 	  raise OKL_API.G_EXCEPTION_ERROR;
1260     End If;
1261 
1262    EXCEPTION
1263      WHEN OKL_API.G_EXCEPTION_ERROR THEN
1264      x_return_status := OKL_API.HANDLE_EXCEPTIONS
1265               (l_api_name,
1266               G_PKG_NAME,
1267               'OKL_API.G_RET_STS_ERROR',
1268               x_msg_count,
1269               x_msg_data,
1270               '_PVT');
1271      WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1272      x_return_status :=OKL_API.HANDLE_EXCEPTIONS
1273              (l_api_name,
1274              G_PKG_NAME,
1275              'OKL_API.G_RET_STS_UNEXP_ERROR',
1276              x_msg_count,
1277              x_msg_data,
1278              '_PVT');
1279      WHEN OTHERS THEN
1280      x_return_status :=OKL_API.HANDLE_EXCEPTIONS
1281              (l_api_name,
1282              G_PKG_NAME,
1283              'OTHERS',
1284              x_msg_count,
1285              x_msg_data,
1286              '_PVT');
1287    END validate_vp_associations;
1288 
1289 
1290    PROCEDURE copy_vp_associations(
1291      p_api_version                  IN NUMBER,
1292      p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1293      x_return_status                OUT NOCOPY VARCHAR2,
1294      x_msg_count                    OUT NOCOPY NUMBER,
1295      x_msg_data                     OUT NOCOPY VARCHAR2,
1296      p_vasv_rec                     IN vasv_rec_type,
1297      x_vasv_rec                     OUT NOCOPY vasv_rec_type
1298      ) IS
1299      l_api_name          CONSTANT VARCHAR2(30) := 'COPY_VP_ASSOCIATIONS';
1300      l_return_status     VARCHAR2(1)  := OKL_API.G_RET_STS_SUCCESS;
1301 
1302 	 --get the vp to be copied--
1303 	 CURSOR copy_vp_assoc_csr (p_id NUMBER) IS
1304 	 SELECT start_date,
1305 		  	end_date,
1306 			description,
1307 		 	assoc_object_type_code,
1308 			assoc_object_id,
1309 			assoc_object_version
1310 	 FROM okl_vp_associations
1311 	 WHERE id = p_id;
1312 
1313 	 l_vasv_rec vasv_rec_type;
1314    BEGIN
1315      x_return_status := l_return_status;
1316      -- Call start_activity to create savepoint, check compatibility
1317      -- and initialize message list
1318      l_return_status := OKL_API.START_ACTIVITY (l_api_name
1319                                                 ,p_init_msg_list
1320                                                 ,'_PVT'
1321                                                 ,x_return_status);
1322      -- Check if activity started successfully
1323      IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1324         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1325      ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1326         RAISE OKL_API.G_EXCEPTION_ERROR;
1327      END IF;
1328 
1329 	 OPEN copy_vp_assoc_csr (p_vasv_rec.id);
1330 	 FETCH copy_vp_assoc_csr INTO l_vasv_rec.start_date,
1331 	 	   			   		l_vasv_rec.end_date,
1332 							l_vasv_rec.description,
1333 							l_vasv_rec.assoc_object_type_code,
1334 							l_vasv_rec.assoc_object_id,
1335 							l_vasv_rec.assoc_object_version;
1336 	 CLOSE copy_vp_assoc_csr;
1337 
1338 	 l_vasv_rec.chr_id := p_vasv_rec.chr_id;
1339 	 OKL_VAS_PVT.insert_row(p_api_version,
1340                             p_init_msg_list,
1341                             x_return_status,
1342                             x_msg_count,
1343                             x_msg_data,
1344                             l_vasv_rec,
1345                             x_vasv_rec);
1346 
1347      If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
1348 	  raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1349      Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
1350 	  raise OKL_API.G_EXCEPTION_ERROR;
1351      End If;
1352 
1353      OKL_API.END_ACTIVITY (x_msg_count
1354                            ,x_msg_data );
1355 
1356    EXCEPTION
1357      WHEN OKL_API.G_EXCEPTION_ERROR THEN
1358      x_return_status := OKL_API.HANDLE_EXCEPTIONS
1359               (l_api_name,
1360               G_PKG_NAME,
1361               'OKL_API.G_RET_STS_ERROR',
1362               x_msg_count,
1363               x_msg_data,
1364               '_PVT');
1365      WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1366      x_return_status :=OKL_API.HANDLE_EXCEPTIONS
1367              (l_api_name,
1368              G_PKG_NAME,
1369              'OKL_API.G_RET_STS_UNEXP_ERROR',
1370              x_msg_count,
1371              x_msg_data,
1372              '_PVT');
1373      WHEN OTHERS THEN
1374      x_return_status :=OKL_API.HANDLE_EXCEPTIONS
1375              (l_api_name,
1376              G_PKG_NAME,
1377              'OTHERS',
1378              x_msg_count,
1379              x_msg_data,
1380              '_PVT');
1381    END copy_vp_associations;
1382 
1383    -- Copy associations for normal agreement copy or crs (of type 'Agreement') copy--
1384    PROCEDURE copy_vp_associations(
1385      p_api_version                  IN NUMBER,
1386      p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1387      x_return_status                OUT NOCOPY VARCHAR2,
1388      x_msg_count                    OUT NOCOPY NUMBER,
1389      x_msg_data                     OUT NOCOPY VARCHAR2,
1390      p_vasv_tbl                     IN vasv_tbl_type,
1391      x_vasv_tbl                     OUT NOCOPY vasv_tbl_type
1392      ) IS
1393      l_api_name          CONSTANT VARCHAR2(30) := 'COPY_VP_ASSOCIATIONS';
1394      l_return_status     VARCHAR2(1)  := OKL_API.G_RET_STS_SUCCESS;
1395      l_overall_status     VARCHAR2(1)   := OKL_API.G_RET_STS_SUCCESS;
1396      i                    NUMBER;
1397    BEGIN
1398 
1399      If p_vasv_tbl.COUNT > 0 Then
1400        i := p_vasv_tbl.FIRST;
1401        LOOP
1402          -- call procedure in complex API for a record
1403          copy_vp_associations(p_api_version,
1404                           	  p_init_msg_list,
1405                           	  x_return_status,
1406                           	  x_msg_count,
1407                          	  x_msg_data,
1408                           	  p_vasv_tbl(i),
1409 							  x_vasv_tbl(i));
1410          If x_return_status <> OKL_API.G_RET_STS_SUCCESS Then
1411            If l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR Then
1412              l_overall_status := x_return_status;
1413            End If;
1414          End If;
1415 
1416        EXIT WHEN (i = p_vasv_tbl.LAST);
1417        i := p_vasv_tbl.NEXT(i);
1418        END LOOP;
1419 
1420        -- return overall status
1421        x_return_status := l_overall_status;
1422      End If;
1423 
1424     If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
1425 	  raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1426     Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
1427 	  raise OKL_API.G_EXCEPTION_ERROR;
1428     End If;
1429 
1430    EXCEPTION
1431      WHEN OKL_API.G_EXCEPTION_ERROR THEN
1432      x_return_status := OKL_API.HANDLE_EXCEPTIONS
1433               (l_api_name,
1434               G_PKG_NAME,
1435               'OKL_API.G_RET_STS_ERROR',
1436               x_msg_count,
1437               x_msg_data,
1438               '_PVT');
1439      WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1440      x_return_status :=OKL_API.HANDLE_EXCEPTIONS
1441              (l_api_name,
1442              G_PKG_NAME,
1443              'OKL_API.G_RET_STS_UNEXP_ERROR',
1444              x_msg_count,
1445              x_msg_data,
1446              '_PVT');
1447      WHEN OTHERS THEN
1448      x_return_status :=OKL_API.HANDLE_EXCEPTIONS
1449              (l_api_name,
1450              G_PKG_NAME,
1451              'OTHERS',
1452              x_msg_count,
1453              x_msg_data,
1454              '_PVT');
1455    END copy_vp_associations;
1456 
1457    -- Copy associations from crs call --crs of type 'Associations'--
1458    PROCEDURE copy_crs_associations(
1459      p_api_version                  IN NUMBER,
1460      p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1461      x_return_status                OUT NOCOPY VARCHAR2,
1462      x_msg_count                    OUT NOCOPY NUMBER,
1463      x_msg_data                     OUT NOCOPY VARCHAR2,
1464      p_chr_id                       IN NUMBER,
1465 	 p_crs_id                       IN NUMBER
1466      ) IS
1467      l_api_name          CONSTANT VARCHAR2(30) := 'COPY_CRS_ASSOCIATIONS';
1468      l_return_status     VARCHAR2(1)  := OKL_API.G_RET_STS_SUCCESS;
1469 
1470 	 --get the vp to be copied--
1471 	 CURSOR copy_vp_assoc_csr (p_chr_id NUMBER) IS
1472 	 SELECT start_date,
1473 		  	end_date,
1474 			description,
1475 		 	assoc_object_type_code,
1476 			assoc_object_id,
1477 			assoc_object_version
1478 	 FROM okl_vp_associations
1479 	 WHERE chr_id = p_chr_id
1480 	 AND crs_id IS NULL;
1481 
1482      l_vasv_tbl vasv_tbl_type;
1483      xl_vasv_tbl vasv_tbl_type;
1484      l_vasv_rec vasv_rec_type;
1485      i NUMBER;
1486    BEGIN
1487      x_return_status := l_return_status;
1488      -- Call start_activity to create savepoint, check compatibility
1489      -- and initialize message list
1490      l_return_status := OKL_API.START_ACTIVITY (l_api_name
1491                                                 ,p_init_msg_list
1492                                                 ,'_PVT'
1493                                                 ,x_return_status);
1494      -- Check if activity started successfully
1495      IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1496         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1497      ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1498         RAISE OKL_API.G_EXCEPTION_ERROR;
1499      END IF;
1500 
1501 	 OPEN copy_vp_assoc_csr (p_chr_id);
1502      LOOP
1503 	   FETCH copy_vp_assoc_csr INTO l_vasv_rec.start_date,
1504 	 	   			   		l_vasv_rec.end_date,
1505 							l_vasv_rec.description,
1506 							l_vasv_rec.assoc_object_type_code,
1507 							l_vasv_rec.assoc_object_id,
1508 							l_vasv_rec.assoc_object_version;
1509 	   EXIT WHEN copy_vp_assoc_csr%NOTFOUND;
1510 	   i := copy_vp_assoc_csr%RowCount;
1511 	   l_vasv_rec.crs_id := p_crs_id;
1512 	   l_vasv_tbl(i) := l_vasv_rec;
1513 	 END LOOP;
1514 	 CLOSE copy_vp_assoc_csr;
1515 
1516 	 IF (l_vasv_tbl.count <> 0) THEN
1517         OKL_VAS_PVT.insert_row(
1518           p_api_version                  => p_api_version,
1519           p_init_msg_list                => p_init_msg_list,
1520           x_return_status                => x_return_status,
1521           x_msg_count                    => x_msg_count,
1522           x_msg_data                     => x_msg_data,
1523           p_vasv_tbl                     => l_vasv_tbl,
1524           x_vasv_tbl                     => xl_vasv_tbl
1525         );
1526 	 END IF;
1527 
1528      If x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR Then
1529 	  raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1530      Elsif x_return_status = OKL_API.G_RET_STS_ERROR Then
1531 	  raise OKL_API.G_EXCEPTION_ERROR;
1532      End If;
1533 
1534      OKL_API.END_ACTIVITY (x_msg_count
1535                            ,x_msg_data );
1536 
1537    EXCEPTION
1538      WHEN OKL_API.G_EXCEPTION_ERROR THEN
1539      x_return_status := OKL_API.HANDLE_EXCEPTIONS
1540               (l_api_name,
1541               G_PKG_NAME,
1542               'OKL_API.G_RET_STS_ERROR',
1543               x_msg_count,
1544               x_msg_data,
1545               '_PVT');
1546      WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1547      x_return_status :=OKL_API.HANDLE_EXCEPTIONS
1548              (l_api_name,
1549              G_PKG_NAME,
1550              'OKL_API.G_RET_STS_UNEXP_ERROR',
1551              x_msg_count,
1552              x_msg_data,
1553              '_PVT');
1554      WHEN OTHERS THEN
1555      x_return_status :=OKL_API.HANDLE_EXCEPTIONS
1556              (l_api_name,
1557              G_PKG_NAME,
1558              'OTHERS',
1559              x_msg_count,
1560              x_msg_data,
1561              '_PVT');
1562    END copy_crs_associations;
1563 
1564 
1565 
1566 END OKL_VP_ASSOCIATIONS_PVT;