DBA Data[Home] [Help]

PACKAGE BODY: APPS.CSI_PRICING_ATTRIB_VLD_PVT

Source


1 PACKAGE BODY csi_pricing_attrib_vld_pvt AS
2 /* $Header: csivpavb.pls 120.0 2005/05/24 17:35:40 appldev noship $ */
3 G_PKG_NAME   VARCHAR2(30) := 'csi_pricing_attrib_vld_pvt';
4 
5 /*----------------------------------------------------------*/
6 /* Function Name :  Is_Valid_instance_id                    */
7 /*                                                          */
8 /* Description  :  This function checks if  instance        */
9 /*                 ids are valid                            */
10 /*----------------------------------------------------------*/
11 
12 FUNCTION Is_Valid_instance_id
13                         (p_instance_id    IN      NUMBER
14                         ,p_event          IN      VARCHAR2
15                         ,p_stack_err_msg  IN      BOOLEAN)
16 RETURN BOOLEAN
17 IS
18   l_instance_id            NUMBER;
19 BEGIN
20   -- Verify that instance id is passed
21   IF p_instance_id IS NULL THEN
22     IF ( p_stack_err_msg = TRUE ) THEN
23                FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_INSTANCE_ID');
24                FND_MESSAGE.SET_TOKEN('INSTANCE_ID',p_instance_id);
25                FND_MSG_PUB.Add;
26     END IF;
27     RETURN FALSE;
28   ELSE
29     BEGIN
30       SELECT  '1'
31       INTO    l_instance_id
32       FROM    csi_item_instances
33       WHERE   instance_id = p_instance_id
34       AND     ((active_end_date is NULL) OR (active_end_date  >= SYSDATE));
35 
36       RETURN TRUE;
37     EXCEPTION
38       WHEN NO_DATA_FOUND THEN
39         IF p_event = 'INSERT' THEN
40             IF ( p_stack_err_msg = TRUE ) THEN
41                FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_INSTANCE_ID');
42                FND_MESSAGE.SET_TOKEN('INSTANCE_ID',p_instance_id);
43                FND_MSG_PUB.Add;
44             END IF;
45             RETURN FALSE;
46         ELSIF p_event = 'UPDATE' THEN
47             IF ( p_stack_err_msg = TRUE ) THEN
48                FND_MESSAGE.SET_NAME('CSI','CSI_API_EXP_PRI_INST_ID');
49                FND_MESSAGE.SET_TOKEN('INSTANCE_ID',p_instance_id);
50                FND_MSG_PUB.Add;
51             END IF;
52             RETURN FALSE;
53         END IF;
54     END;
55   END IF;
56 END Is_Valid_instance_id;
57 
58 
59 
60 
61 /*----------------------------------------------------------*/
62 /* Function Name :  Val_inst_id_for_update                  */
63 /*                                                          */
64 /* Description  :  This function checks if  instance        */
65 /*                 ids can be updated                       */
66 /*----------------------------------------------------------*/
67 
68 FUNCTION Val_inst_id_for_update
69                     (p_instance_id_new    IN      NUMBER
70                     ,p_instance_id_old   IN      NUMBER
71                     ,p_stack_err_msg     IN      BOOLEAN)
72 RETURN BOOLEAN
73 IS
74   l_instance_id            NUMBER;
75 BEGIN
76   -- Verify that instance id is passed
77   IF (p_instance_id_old = p_instance_id_new) THEN
78      RETURN TRUE;
79   ELSE
80      IF ( p_stack_err_msg = TRUE ) THEN
81           FND_MESSAGE.SET_NAME('CSI','CSI_API_CANT_CHANGE_INST_ID');
82           FND_MESSAGE.SET_TOKEN('INSTANCE_ID_OLD',p_instance_id_old);
83           FND_MSG_PUB.Add;
84      END IF;
85      RETURN FALSE;
86   END IF;
87 
88 EXCEPTION
89    WHEN OTHERS THEN
90         IF ( p_stack_err_msg = TRUE ) THEN
91           FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_INSTANCE_ID');
92           FND_MESSAGE.SET_TOKEN('INSTANCE_ID_OLD',p_instance_id_old);
93           FND_MSG_PUB.Add;
94         END IF;
95         RETURN FALSE;
96 END Val_inst_id_for_update;
97 
98 
99 
100 
101 /*----------------------------------------------------------*/
102 /* Function Name :  Is_StartDate_Valid                      */
103 /*                                                          */
104 /* Description  :  This function checks if start date       */
105 /*                 is valid                                 */
106 /*----------------------------------------------------------*/
107 
108 FUNCTION Is_StartDate_Valid
109 (       p_start_date            IN  OUT NOCOPY DATE,
110         p_end_date              IN   DATE,
111         p_instance_id           IN NUMBER,
112         p_stack_err_msg IN      BOOLEAN
113 ) RETURN BOOLEAN IS
114 
115     l_return_value  BOOLEAN := TRUE;
116     CURSOR c1 IS
117        SELECT active_start_date,
118                active_end_date
119        FROM csi_item_instances
120        WHERE instance_id = p_instance_id;
121     l_date_rec   c1%ROWTYPE;
122 
123 BEGIN
124        IF ((p_start_date IS NULL) OR (p_start_date = FND_API.G_MISS_DATE)) THEN
125           p_start_date := SYSDATE;
126           RETURN l_return_value;
127        END IF;
128 
129       IF ((p_end_date is NOT NULL)
130          AND
131          (p_end_date <> FND_API.G_MISS_DATE)
132          AND
133          (p_start_date > p_end_date)) THEN
134             l_return_value  := FALSE;
135             FND_MESSAGE.SET_NAME('CSI','CSI_API_INVAL_PRI_START_DATE');
136             FND_MESSAGE.SET_TOKEN('START_DATE',p_start_date);
137             FND_MSG_PUB.Add;
138             RETURN l_return_value;
139       END IF;
140 
141       OPEN c1;
142          FETCH c1 INTO l_date_rec;
143          IF c1%NOTFOUND THEN
144               l_return_value  := FALSE;
145               IF ( p_stack_err_msg = TRUE ) THEN
146                   FND_MESSAGE.SET_NAME('CSI','CSI_API_INVAL_INST_START_DATE');
147                   FND_MESSAGE.SET_TOKEN('ENTITY','Pricing Attribute');
148                   FND_MSG_PUB.Add;
149               END IF;
150          END IF;
151 
152           IF (p_start_date < l_date_rec.active_start_date)
153              OR
154              (p_start_date > NVL(l_date_rec.active_end_date,p_start_date))
155              OR
156              (p_start_date > SYSDATE)
157           THEN
158               l_return_value  := FALSE;
159               IF ( p_stack_err_msg = TRUE ) THEN
160                   FND_MESSAGE.SET_NAME('CSI','CSI_API_INVAL_PRI_START_DATE');
161                   FND_MESSAGE.SET_TOKEN('START_DATE',p_start_date);
162                   FND_MSG_PUB.Add;
163               END IF;
164            END IF;
165        CLOSE c1;
166        RETURN l_return_value;
167 
168 
169 END Is_StartDate_Valid;
170 
171 
172 /*----------------------------------------------------------*/
173 /* Function Name :  Is_EndDate_Valid                        */
174 /*                                                          */
175 /* Description  :  This function checks if end date         */
176 /*                 is valid                                 */
177 /*----------------------------------------------------------*/
178 
179 FUNCTION Is_EndDate_Valid
180 (
181     p_start_date        IN   DATE,
182     p_end_date          IN   DATE,
183     p_instance_id       IN   NUMBER,
184     p_pricing_attr_id   IN   NUMBER,
185     p_txn_id            IN   NUMBER,
186     p_stack_err_msg     IN   BOOLEAN
187 ) RETURN BOOLEAN IS
188 
189     l_return_value  BOOLEAN := TRUE;
190     l_transaction_date   date;
191 
192     CURSOR c1 IS
193        SELECT active_start_date,
194               active_end_date
195        FROM   csi_item_instances
196        WHERE  instance_id = p_instance_id;
197 
198        l_date_rec   c1%ROWTYPE;
199 
200 BEGIN
201       IF  ((p_pricing_attr_id IS NULL) OR  (p_pricing_attr_id = FND_API.G_MISS_NUM)) THEN
202         IF ((p_end_date is NOT NULL) AND (p_end_date <> fnd_api.g_miss_date)) THEN
203 
204            IF p_end_date < SYSDATE THEN
205              l_return_value  := FALSE;
206               FND_MESSAGE.SET_NAME('CSI','CSI_API_INVAL_PRI_END_DATE');
207 	          FND_MESSAGE.SET_TOKEN('END_DATE',p_end_date);
208 	          FND_MSG_PUB.Add;
209               l_return_value := FALSE;
210               RETURN l_return_value;
211             END IF;
212         END IF;
213           RETURN l_return_value;
214 
215      ELSE
216 
217       IF p_end_date < sysdate THEN
218          SELECT MAX(t.transaction_date)
219          INTO   l_transaction_date
220          FROM   csi_i_pricing_attribs_h s,
221                 csi_transactions t
222          WHERE  s.pricing_attribute_id=p_pricing_attr_id
223          AND    s.transaction_id=t.transaction_id
224          AND    t.transaction_id <>nvl(p_txn_id, -99999);
225 
226           IF l_transaction_date > p_end_date
227            THEN
228             fnd_message.set_name('CSI','CSI_HAS_TXNS');
229             fnd_message.set_token('END_DATE_ACTIVE',p_end_date);
230             fnd_msg_pub.add;
231             l_return_value := FALSE;
232             RETURN l_return_value;
233           END IF;
234       END IF;
235 
236       IF ((p_end_date is not null) and (p_end_date <> fnd_api.g_miss_date)) then
237        OPEN c1;
238          FETCH c1 INTO l_date_rec;
239 
240           IF (p_end_date > NVL(l_date_rec.active_end_date, p_end_date))
241             OR
242             (p_end_date < l_date_rec.active_start_date)
243           THEN
244             l_return_value  := FALSE;
245             IF ( p_stack_err_msg = TRUE ) THEN
246               FND_MESSAGE.SET_NAME('CSI','CSI_API_INVAL_PRI_END_DATE');
247               FND_MESSAGE.SET_TOKEN('END_DATE',p_end_date);
248               FND_MSG_PUB.Add;
249             END IF;
250              RETURN l_return_value;
251            END IF;
252        CLOSE c1;
253       END IF;
254      END IF;
255     RETURN l_return_value;
256 
257 END Is_EndDate_Valid;
258 
259 
260 /*----------------------------------------------------------*/
261 /* Function Name :  Is_Valid_pricing_attrib_id              */
262 /*                                                          */
263 /* Description  :  This function checks if  pricing_attrib  */
264 /*                 ids are valid                            */
265 /*----------------------------------------------------------*/
266 
267 FUNCTION Is_Valid_pricing_attrib_id
268        (p_pricing_attrib_id IN      NUMBER
269        ,p_stack_err_msg     IN      BOOLEAN
270        )
271 RETURN BOOLEAN
272 IS
273   l_pricing_attrib_id            NUMBER;
274 BEGIN
275   -- Verify that pricing attrib_id is valid
276      IF p_pricing_attrib_id IS NULL THEN
277         IF ( p_stack_err_msg = TRUE ) THEN
278           FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_PRI_ATT_ID');
279           FND_MESSAGE.SET_TOKEN('PRICING_ATTRIB_ID',p_pricing_attrib_id);
280           FND_MSG_PUB.Add;
281         END IF;
282         RETURN FALSE;
283      ELSE
284         SELECT  '1'
285         INTO    l_pricing_attrib_id
286         FROM    csi_i_pricing_attribs
287         WHERE   pricing_attribute_id  = p_pricing_attrib_id;
288         IF ( p_stack_err_msg = TRUE ) THEN
289           FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_PRI_ATT_ID');
290           FND_MESSAGE.SET_TOKEN('PRICING_ATTRIB_ID',p_pricing_attrib_id);
291           FND_MSG_PUB.Add;
292         END IF;
293         RETURN FALSE;
294      END IF;
295 
296 EXCEPTION
297       WHEN NO_DATA_FOUND THEN
298         RETURN  TRUE;
299 END Is_Valid_pricing_attrib_id;
300 
301 
302 
303 /*----------------------------------------------------------*/
304 /* Function Name :  Val_and_get_pri_att_id                  */
305 /*                                                          */
306 /* Description  :  This function checks if  pricing_attrib  */
307 /*                 ids are valid and returns values         */
308 /*----------------------------------------------------------*/
309 
310 FUNCTION Val_and_get_pri_att_id
311        (p_pricing_attrib_id    IN     NUMBER
312        ,p_pricing_attribs_rec  OUT NOCOPY csi_datastructures_pub.pricing_attribs_rec
313        ,p_stack_err_msg        IN     BOOLEAN
314         )
315 RETURN BOOLEAN
316 IS
317   l_pricing_attrib_id            NUMBER;
318 BEGIN
319      IF p_pricing_attrib_id IS NULL THEN
320         IF ( p_stack_err_msg = TRUE ) THEN
321           FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_PRI_ATT_ID');
322           FND_MESSAGE.SET_TOKEN('PRICING_ATTRIB_ID',p_pricing_attrib_id);
323           FND_MSG_PUB.Add;
324         END IF;
325         RETURN FALSE;
326      ELSE
327       -- Verify that pricing attribute id is passed
328        SELECT   pricing_attribute_id,
329                  instance_id,
330                  active_start_date,
331                  active_end_date,
332                  pricing_context,
333                  pricing_attribute1,
334                  pricing_attribute2,
335                  pricing_attribute3,
336                  pricing_attribute4,
337                  pricing_attribute5,
338                  pricing_attribute6,
339                  pricing_attribute7,
340                  pricing_attribute8,
341                  pricing_attribute9,
342                  pricing_attribute10,
343                  pricing_attribute11,
344                  pricing_attribute12,
345                  pricing_attribute13,
346                  pricing_attribute14,
347                  pricing_attribute15,
348                  pricing_attribute16,
349                  pricing_attribute17,
350                  pricing_attribute18,
351                  pricing_attribute19,
352                  pricing_attribute20,
353                  pricing_attribute21,
354                  pricing_attribute22,
355                  pricing_attribute23,
356                  pricing_attribute24,
357                  pricing_attribute25,
358                  pricing_attribute26,
359                  pricing_attribute27,
360                  pricing_attribute28,
361                  pricing_attribute29,
362                  pricing_attribute30,
363                  pricing_attribute31,
364                  pricing_attribute32,
365                  pricing_attribute33,
366                  pricing_attribute34,
367                  pricing_attribute35,
368                  pricing_attribute36,
369                  pricing_attribute37,
370                  pricing_attribute38,
371                  pricing_attribute39,
372                  pricing_attribute40,
373                  pricing_attribute41,
374                  pricing_attribute42,
375                  pricing_attribute43,
376                  pricing_attribute44,
377                  pricing_attribute45,
378                  pricing_attribute46,
379                  pricing_attribute47,
380                  pricing_attribute48,
381                  pricing_attribute49,
382                  pricing_attribute50,
383                  pricing_attribute51,
384                  pricing_attribute52,
385                  pricing_attribute53,
386                  pricing_attribute54,
387                  pricing_attribute55,
388                  pricing_attribute56,
389                  pricing_attribute57,
390                  pricing_attribute58,
391                  pricing_attribute59,
392                  pricing_attribute60,
393                  pricing_attribute61,
394                  pricing_attribute62,
395                  pricing_attribute63,
396                  pricing_attribute64,
397                  pricing_attribute65,
398                  pricing_attribute66,
399                  pricing_attribute67,
400                  pricing_attribute68,
401                  pricing_attribute69,
402                  pricing_attribute70,
403                  pricing_attribute71,
404                  pricing_attribute72,
405                  pricing_attribute73,
406                  pricing_attribute74,
407                  pricing_attribute75,
408                  pricing_attribute76,
409                  pricing_attribute77,
410                  pricing_attribute78,
411                  pricing_attribute79,
412                  pricing_attribute80,
413                  pricing_attribute81,
414                  pricing_attribute82,
415                  pricing_attribute83,
416                  pricing_attribute84,
417                  pricing_attribute85,
418                  pricing_attribute86,
419                  pricing_attribute87,
420                  pricing_attribute88,
421                  pricing_attribute89,
422                  pricing_attribute90,
423                  pricing_attribute91,
424                  pricing_attribute92,
425                  pricing_attribute93,
426                  pricing_attribute94,
427                  pricing_attribute95,
428                  pricing_attribute96,
429                  pricing_attribute97,
430                  pricing_attribute98,
431                  pricing_attribute99,
432                  pricing_attribute100,
433                  context,
434                  attribute1,
435                  attribute2,
436                  attribute3,
437                  attribute4,
438                  attribute5,
439                  attribute6,
440                  attribute7,
441                  attribute8,
442                  attribute9,
443                  attribute10,
444                  attribute11,
445                  attribute12,
446                  attribute13,
447                  attribute14,
448                  attribute15,
449                  object_version_number
450        INTO      p_pricing_attribs_rec.pricing_attribute_id,
451                  p_pricing_attribs_rec.instance_id,
452                  p_pricing_attribs_rec.active_start_date,
453                  p_pricing_attribs_rec.active_end_date,
454                  p_pricing_attribs_rec.pricing_context,
455                  p_pricing_attribs_rec.pricing_attribute1,
456                  p_pricing_attribs_rec.pricing_attribute2,
457                  p_pricing_attribs_rec.pricing_attribute3,
458                  p_pricing_attribs_rec.pricing_attribute4,
459                  p_pricing_attribs_rec.pricing_attribute5,
460                  p_pricing_attribs_rec.pricing_attribute6,
461                  p_pricing_attribs_rec.pricing_attribute7,
462                  p_pricing_attribs_rec.pricing_attribute8,
463                  p_pricing_attribs_rec.pricing_attribute9,
464                  p_pricing_attribs_rec.pricing_attribute10,
465                  p_pricing_attribs_rec.pricing_attribute11,
466                  p_pricing_attribs_rec.pricing_attribute12,
467                  p_pricing_attribs_rec.pricing_attribute13,
468                  p_pricing_attribs_rec.pricing_attribute14,
469                  p_pricing_attribs_rec.pricing_attribute15,
470                  p_pricing_attribs_rec.pricing_attribute16,
471                  p_pricing_attribs_rec.pricing_attribute17,
472                  p_pricing_attribs_rec.pricing_attribute18,
473                  p_pricing_attribs_rec.pricing_attribute19,
474                  p_pricing_attribs_rec.pricing_attribute20,
475                  p_pricing_attribs_rec.pricing_attribute21,
476                  p_pricing_attribs_rec.pricing_attribute22,
477                  p_pricing_attribs_rec.pricing_attribute23,
478                  p_pricing_attribs_rec.pricing_attribute24,
479                  p_pricing_attribs_rec.pricing_attribute25,
480                  p_pricing_attribs_rec.pricing_attribute26,
481                  p_pricing_attribs_rec.pricing_attribute27,
482                  p_pricing_attribs_rec.pricing_attribute28,
483                  p_pricing_attribs_rec.pricing_attribute29,
484                  p_pricing_attribs_rec.pricing_attribute30,
485                  p_pricing_attribs_rec.pricing_attribute31,
486                  p_pricing_attribs_rec.pricing_attribute32,
487                  p_pricing_attribs_rec.pricing_attribute33,
488                  p_pricing_attribs_rec.pricing_attribute34,
489                  p_pricing_attribs_rec.pricing_attribute35,
490                  p_pricing_attribs_rec.pricing_attribute36,
491                  p_pricing_attribs_rec.pricing_attribute37,
492                  p_pricing_attribs_rec.pricing_attribute38,
493                  p_pricing_attribs_rec.pricing_attribute39,
494                  p_pricing_attribs_rec.pricing_attribute40,
495                  p_pricing_attribs_rec.pricing_attribute41,
496                  p_pricing_attribs_rec.pricing_attribute42,
497                  p_pricing_attribs_rec.pricing_attribute43,
498                  p_pricing_attribs_rec.pricing_attribute44,
499                  p_pricing_attribs_rec.pricing_attribute45,
500                  p_pricing_attribs_rec.pricing_attribute46,
501                  p_pricing_attribs_rec.pricing_attribute47,
502                  p_pricing_attribs_rec.pricing_attribute48,
503                  p_pricing_attribs_rec.pricing_attribute49,
504                  p_pricing_attribs_rec.pricing_attribute50,
505                  p_pricing_attribs_rec.pricing_attribute51,
506                  p_pricing_attribs_rec.pricing_attribute52,
507                  p_pricing_attribs_rec.pricing_attribute53,
508                  p_pricing_attribs_rec.pricing_attribute54,
509                  p_pricing_attribs_rec.pricing_attribute55,
510                  p_pricing_attribs_rec.pricing_attribute56,
511                  p_pricing_attribs_rec.pricing_attribute57,
512                  p_pricing_attribs_rec.pricing_attribute58,
513                  p_pricing_attribs_rec.pricing_attribute59,
514                  p_pricing_attribs_rec.pricing_attribute60,
515                  p_pricing_attribs_rec.pricing_attribute61,
516                  p_pricing_attribs_rec.pricing_attribute62,
517                  p_pricing_attribs_rec.pricing_attribute63,
518                  p_pricing_attribs_rec.pricing_attribute64,
519                  p_pricing_attribs_rec.pricing_attribute65,
520                  p_pricing_attribs_rec.pricing_attribute66,
521                  p_pricing_attribs_rec.pricing_attribute67,
522                  p_pricing_attribs_rec.pricing_attribute68,
523                  p_pricing_attribs_rec.pricing_attribute69,
524                  p_pricing_attribs_rec.pricing_attribute70,
525                  p_pricing_attribs_rec.pricing_attribute71,
526                  p_pricing_attribs_rec.pricing_attribute72,
527                  p_pricing_attribs_rec.pricing_attribute73,
528                  p_pricing_attribs_rec.pricing_attribute74,
529                  p_pricing_attribs_rec.pricing_attribute75,
530                  p_pricing_attribs_rec.pricing_attribute76,
531                  p_pricing_attribs_rec.pricing_attribute77,
532                  p_pricing_attribs_rec.pricing_attribute78,
533                  p_pricing_attribs_rec.pricing_attribute79,
534                  p_pricing_attribs_rec.pricing_attribute80,
535                  p_pricing_attribs_rec.pricing_attribute81,
536                  p_pricing_attribs_rec.pricing_attribute82,
537                  p_pricing_attribs_rec.pricing_attribute83,
538                  p_pricing_attribs_rec.pricing_attribute84,
539                  p_pricing_attribs_rec.pricing_attribute85,
540                  p_pricing_attribs_rec.pricing_attribute86,
541                  p_pricing_attribs_rec.pricing_attribute87,
542                  p_pricing_attribs_rec.pricing_attribute88,
543                  p_pricing_attribs_rec.pricing_attribute89,
544                  p_pricing_attribs_rec.pricing_attribute90,
545                  p_pricing_attribs_rec.pricing_attribute91,
546                  p_pricing_attribs_rec.pricing_attribute92,
547                  p_pricing_attribs_rec.pricing_attribute93,
548                  p_pricing_attribs_rec.pricing_attribute94,
549                  p_pricing_attribs_rec.pricing_attribute95,
550                  p_pricing_attribs_rec.pricing_attribute96,
551                  p_pricing_attribs_rec.pricing_attribute97,
552                  p_pricing_attribs_rec.pricing_attribute98,
553                  p_pricing_attribs_rec.pricing_attribute99,
554                  p_pricing_attribs_rec.pricing_attribute100,
555                  p_pricing_attribs_rec.context,
556                  p_pricing_attribs_rec.attribute1,
557                  p_pricing_attribs_rec.attribute2,
558                  p_pricing_attribs_rec.attribute3,
559                  p_pricing_attribs_rec.attribute4,
560                  p_pricing_attribs_rec.attribute5,
561                  p_pricing_attribs_rec.attribute6,
562                  p_pricing_attribs_rec.attribute7,
563                  p_pricing_attribs_rec.attribute8,
564                  p_pricing_attribs_rec.attribute9,
565                  p_pricing_attribs_rec.attribute10,
566                  p_pricing_attribs_rec.attribute11,
567                  p_pricing_attribs_rec.attribute12,
568                  p_pricing_attribs_rec.attribute13,
569                  p_pricing_attribs_rec.attribute14,
570                  p_pricing_attribs_rec.attribute15,
571                  p_pricing_attribs_rec.object_version_number
572        FROM  csi_i_pricing_attribs
573        WHERE pricing_attribute_id  = p_pricing_attrib_id;
574        RETURN  TRUE;
575    END IF;
576 
577 EXCEPTION
578       WHEN NO_DATA_FOUND THEN
579         IF ( p_stack_err_msg = TRUE ) THEN
580           FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_PRI_ATT_ID');
581           FND_MESSAGE.SET_TOKEN('PRICING_ATTRIB_ID',p_pricing_attrib_id);
582           FND_MSG_PUB.Add;
583         END IF;
584         RETURN FALSE;
585 END Val_and_get_pri_att_id ;
586 
587 
588 /*----------------------------------------------------------*/
589 /* Function Name :  Is_Expire_Op                            */
590 /*                                                          */
591 /* Description  :  This function checks if it is a          */
592 /*                 ids are valid and returns values         */
593 /*----------------------------------------------------------*/
594 
595 FUNCTION Is_Expire_Op
596            (p_pricing_attribs_rec IN csi_datastructures_pub.pricing_attribs_rec
597        ,p_stack_err_msg     IN  BOOLEAN
598        )
599 RETURN BOOLEAN
600 IS
601 BEGIN
602        IF    (p_pricing_attribs_rec.instance_id          =  FND_API.G_MISS_NUM)   AND
603              (p_pricing_attribs_rec.active_start_date    =  FND_API.G_MISS_DATE)  AND
604              (p_pricing_attribs_rec.active_end_date      =  SYSDATE)              AND
605              (p_pricing_attribs_rec.pricing_context      =  FND_API.G_MISS_CHAR)  AND
606              (p_pricing_attribs_rec.pricing_attribute1   =  FND_API.G_MISS_CHAR)  AND
607              (p_pricing_attribs_rec.pricing_attribute2   =  FND_API.G_MISS_CHAR)  AND
608              (p_pricing_attribs_rec.pricing_attribute3   =  FND_API.G_MISS_CHAR)  AND
609              (p_pricing_attribs_rec.pricing_attribute4   =  FND_API.G_MISS_CHAR)  AND
610              (p_pricing_attribs_rec.pricing_attribute5   =  FND_API.G_MISS_CHAR)  AND
611              (p_pricing_attribs_rec.pricing_attribute6   =  FND_API.G_MISS_CHAR)  AND
612              (p_pricing_attribs_rec.pricing_attribute7   =  FND_API.G_MISS_CHAR)  AND
613              (p_pricing_attribs_rec.pricing_attribute8   =  FND_API.G_MISS_CHAR)  AND
614              (p_pricing_attribs_rec.pricing_attribute9   =  FND_API.G_MISS_CHAR)  AND
615              (p_pricing_attribs_rec.pricing_attribute10  =  FND_API.G_MISS_CHAR)  AND
616              (p_pricing_attribs_rec.pricing_attribute11  =  FND_API.G_MISS_CHAR)  AND
617              (p_pricing_attribs_rec.pricing_attribute12  =  FND_API.G_MISS_CHAR)  AND
618              (p_pricing_attribs_rec.pricing_attribute13  =  FND_API.G_MISS_CHAR)  AND
619              (p_pricing_attribs_rec.pricing_attribute14  =  FND_API.G_MISS_CHAR)  AND
620              (p_pricing_attribs_rec.pricing_attribute15  =  FND_API.G_MISS_CHAR)  AND
621              (p_pricing_attribs_rec.pricing_attribute16  =  FND_API.G_MISS_CHAR)  AND
622              (p_pricing_attribs_rec.pricing_attribute17  =  FND_API.G_MISS_CHAR)  AND
623              (p_pricing_attribs_rec.pricing_attribute18  =  FND_API.G_MISS_CHAR)  AND
624              (p_pricing_attribs_rec.pricing_attribute19  =  FND_API.G_MISS_CHAR)  AND
625              (p_pricing_attribs_rec.pricing_attribute20  =  FND_API.G_MISS_CHAR)  AND
626              (p_pricing_attribs_rec.pricing_attribute21  =  FND_API.G_MISS_CHAR)  AND
627              (p_pricing_attribs_rec.pricing_attribute22  =  FND_API.G_MISS_CHAR)  AND
628              (p_pricing_attribs_rec.pricing_attribute23  =  FND_API.G_MISS_CHAR)  AND
629              (p_pricing_attribs_rec.pricing_attribute24  =  FND_API.G_MISS_CHAR)  AND
630              (p_pricing_attribs_rec.pricing_attribute25  =  FND_API.G_MISS_CHAR)  AND
631              (p_pricing_attribs_rec.pricing_attribute26  =  FND_API.G_MISS_CHAR)  AND
632              (p_pricing_attribs_rec.pricing_attribute27  =  FND_API.G_MISS_CHAR)  AND
633              (p_pricing_attribs_rec.pricing_attribute28  =  FND_API.G_MISS_CHAR)  AND
634              (p_pricing_attribs_rec.pricing_attribute29  =  FND_API.G_MISS_CHAR)  AND
635              (p_pricing_attribs_rec.pricing_attribute30  =  FND_API.G_MISS_CHAR)  AND
636              (p_pricing_attribs_rec.pricing_attribute31  =  FND_API.G_MISS_CHAR)  AND
637              (p_pricing_attribs_rec.pricing_attribute32  =  FND_API.G_MISS_CHAR)  AND
638              (p_pricing_attribs_rec.pricing_attribute33  =  FND_API.G_MISS_CHAR)  AND
639              (p_pricing_attribs_rec.pricing_attribute34  =  FND_API.G_MISS_CHAR)  AND
640              (p_pricing_attribs_rec.pricing_attribute35  =  FND_API.G_MISS_CHAR)  AND
641              (p_pricing_attribs_rec.pricing_attribute36  =  FND_API.G_MISS_CHAR)  AND
642              (p_pricing_attribs_rec.pricing_attribute37  =  FND_API.G_MISS_CHAR)  AND
643              (p_pricing_attribs_rec.pricing_attribute38  =  FND_API.G_MISS_CHAR)  AND
644              (p_pricing_attribs_rec.pricing_attribute39  =  FND_API.G_MISS_CHAR)  AND
645              (p_pricing_attribs_rec.pricing_attribute40  =  FND_API.G_MISS_CHAR)  AND
646              (p_pricing_attribs_rec.pricing_attribute41  =  FND_API.G_MISS_CHAR)  AND
647              (p_pricing_attribs_rec.pricing_attribute42  =  FND_API.G_MISS_CHAR)  AND
648              (p_pricing_attribs_rec.pricing_attribute43  =  FND_API.G_MISS_CHAR)  AND
649              (p_pricing_attribs_rec.pricing_attribute44  =  FND_API.G_MISS_CHAR)  AND
650              (p_pricing_attribs_rec.pricing_attribute45  =  FND_API.G_MISS_CHAR)  AND
651              (p_pricing_attribs_rec.pricing_attribute46  =  FND_API.G_MISS_CHAR)  AND
652              (p_pricing_attribs_rec.pricing_attribute47  =  FND_API.G_MISS_CHAR)  AND
653              (p_pricing_attribs_rec.pricing_attribute48  =  FND_API.G_MISS_CHAR)  AND
654              (p_pricing_attribs_rec.pricing_attribute49  =  FND_API.G_MISS_CHAR)  AND
655              (p_pricing_attribs_rec.pricing_attribute50  =  FND_API.G_MISS_CHAR)  AND
656              (p_pricing_attribs_rec.pricing_attribute51  =  FND_API.G_MISS_CHAR)  AND
657              (p_pricing_attribs_rec.pricing_attribute52  =  FND_API.G_MISS_CHAR)  AND
658              (p_pricing_attribs_rec.pricing_attribute53  =  FND_API.G_MISS_CHAR)  AND
659              (p_pricing_attribs_rec.pricing_attribute54  =  FND_API.G_MISS_CHAR)  AND
660              (p_pricing_attribs_rec.pricing_attribute55  =  FND_API.G_MISS_CHAR)  AND
661              (p_pricing_attribs_rec.pricing_attribute56  =  FND_API.G_MISS_CHAR)  AND
662              (p_pricing_attribs_rec.pricing_attribute57  =  FND_API.G_MISS_CHAR)  AND
663              (p_pricing_attribs_rec.pricing_attribute58  =  FND_API.G_MISS_CHAR)  AND
664              (p_pricing_attribs_rec.pricing_attribute59  =  FND_API.G_MISS_CHAR)  AND
665              (p_pricing_attribs_rec.pricing_attribute60  =  FND_API.G_MISS_CHAR)  AND
666              (p_pricing_attribs_rec.pricing_attribute61  =  FND_API.G_MISS_CHAR)  AND
667              (p_pricing_attribs_rec.pricing_attribute62  =  FND_API.G_MISS_CHAR)  AND
668              (p_pricing_attribs_rec.pricing_attribute63  =  FND_API.G_MISS_CHAR)  AND
669              (p_pricing_attribs_rec.pricing_attribute64  =  FND_API.G_MISS_CHAR)  AND
670              (p_pricing_attribs_rec.pricing_attribute65  =  FND_API.G_MISS_CHAR)  AND
671              (p_pricing_attribs_rec.pricing_attribute66  =  FND_API.G_MISS_CHAR)  AND
672              (p_pricing_attribs_rec.pricing_attribute67  =  FND_API.G_MISS_CHAR)  AND
673              (p_pricing_attribs_rec.pricing_attribute68  =  FND_API.G_MISS_CHAR)  AND
674              (p_pricing_attribs_rec.pricing_attribute69  =  FND_API.G_MISS_CHAR)  AND
675              (p_pricing_attribs_rec.pricing_attribute70  =  FND_API.G_MISS_CHAR)  AND
676              (p_pricing_attribs_rec.pricing_attribute71  =  FND_API.G_MISS_CHAR)  AND
677              (p_pricing_attribs_rec.pricing_attribute72  =  FND_API.G_MISS_CHAR)  AND
678              (p_pricing_attribs_rec.pricing_attribute73  =  FND_API.G_MISS_CHAR)  AND
679              (p_pricing_attribs_rec.pricing_attribute74  =  FND_API.G_MISS_CHAR)  AND
680              (p_pricing_attribs_rec.pricing_attribute75  =  FND_API.G_MISS_CHAR)  AND
681              (p_pricing_attribs_rec.pricing_attribute76  =  FND_API.G_MISS_CHAR)  AND
682              (p_pricing_attribs_rec.pricing_attribute77  =  FND_API.G_MISS_CHAR)  AND
683              (p_pricing_attribs_rec.pricing_attribute78  =  FND_API.G_MISS_CHAR)  AND
684              (p_pricing_attribs_rec.pricing_attribute79  =  FND_API.G_MISS_CHAR)  AND
685              (p_pricing_attribs_rec.pricing_attribute80  =  FND_API.G_MISS_CHAR)  AND
686              (p_pricing_attribs_rec.pricing_attribute81  =  FND_API.G_MISS_CHAR)  AND
687              (p_pricing_attribs_rec.pricing_attribute82  =  FND_API.G_MISS_CHAR)  AND
688              (p_pricing_attribs_rec.pricing_attribute83  =  FND_API.G_MISS_CHAR)  AND
689              (p_pricing_attribs_rec.pricing_attribute84  =  FND_API.G_MISS_CHAR)  AND
690              (p_pricing_attribs_rec.pricing_attribute85  =  FND_API.G_MISS_CHAR)  AND
691              (p_pricing_attribs_rec.pricing_attribute86  =  FND_API.G_MISS_CHAR)  AND
692              (p_pricing_attribs_rec.pricing_attribute87  =  FND_API.G_MISS_CHAR)  AND
693              (p_pricing_attribs_rec.pricing_attribute88  =  FND_API.G_MISS_CHAR)  AND
694              (p_pricing_attribs_rec.pricing_attribute89  =  FND_API.G_MISS_CHAR)  AND
695              (p_pricing_attribs_rec.pricing_attribute90  =  FND_API.G_MISS_CHAR)  AND
696              (p_pricing_attribs_rec.pricing_attribute91  =  FND_API.G_MISS_CHAR)  AND
697              (p_pricing_attribs_rec.pricing_attribute92  =  FND_API.G_MISS_CHAR)  AND
698              (p_pricing_attribs_rec.pricing_attribute93  =  FND_API.G_MISS_CHAR)  AND
699              (p_pricing_attribs_rec.pricing_attribute94  =  FND_API.G_MISS_CHAR)  AND
700              (p_pricing_attribs_rec.pricing_attribute95  =  FND_API.G_MISS_CHAR)  AND
701              (p_pricing_attribs_rec.pricing_attribute96  =  FND_API.G_MISS_CHAR)  AND
702              (p_pricing_attribs_rec.pricing_attribute97  =  FND_API.G_MISS_CHAR)  AND
703              (p_pricing_attribs_rec.pricing_attribute98  =  FND_API.G_MISS_CHAR)  AND
704              (p_pricing_attribs_rec.pricing_attribute99  =  FND_API.G_MISS_CHAR)  AND
705              (p_pricing_attribs_rec.pricing_attribute100 =  FND_API.G_MISS_CHAR)  AND
706              (p_pricing_attribs_rec.context              =  FND_API.G_MISS_CHAR)  AND
707              (p_pricing_attribs_rec.attribute1           =  FND_API.G_MISS_CHAR)  AND
708              (p_pricing_attribs_rec.attribute2           =  FND_API.G_MISS_CHAR)  AND
709              (p_pricing_attribs_rec.attribute3           =  FND_API.G_MISS_CHAR)  AND
710              (p_pricing_attribs_rec.attribute4           =  FND_API.G_MISS_CHAR)  AND
711              (p_pricing_attribs_rec.attribute5           =  FND_API.G_MISS_CHAR)  AND
712              (p_pricing_attribs_rec.attribute6           =  FND_API.G_MISS_CHAR)  AND
713              (p_pricing_attribs_rec.attribute7           =  FND_API.G_MISS_CHAR)  AND
714              (p_pricing_attribs_rec.attribute8           =  FND_API.G_MISS_CHAR)  AND
715              (p_pricing_attribs_rec.attribute9           =  FND_API.G_MISS_CHAR)  AND
716              (p_pricing_attribs_rec.attribute10          =  FND_API.G_MISS_CHAR)  AND
717              (p_pricing_attribs_rec.attribute11          =  FND_API.G_MISS_CHAR)  AND
718              (p_pricing_attribs_rec.attribute12          =  FND_API.G_MISS_CHAR)  AND
719              (p_pricing_attribs_rec.attribute13          =  FND_API.G_MISS_CHAR)  AND
720              (p_pricing_attribs_rec.attribute14          =  FND_API.G_MISS_CHAR)  AND
721              (p_pricing_attribs_rec.attribute15          =  FND_API.G_MISS_CHAR)  THEN
722 
723            RETURN TRUE;
724          ELSE
725            RETURN FALSE;
726          END IF;
727 
728 END Is_Expire_Op;
729 
730 
731 
732 /*----------------------------------------------------------*/
733 /* Function Name :  Is_Updatable                            */
734 /*                                                          */
735 /* Description  :  This function checks if this is a        */
736 /*                 an updatable record                      */
737 /*----------------------------------------------------------*/
738 
739 FUNCTION Is_Updatable
740        (p_old_date          IN   DATE
741        ,p_new_date          IN   DATE
742        ,p_stack_err_msg     IN   BOOLEAN
743        )
744 RETURN BOOLEAN
745 IS
746 BEGIN
747    IF p_old_date < SYSDATE THEN
748       IF p_new_date = FND_API.G_MISS_DATE THEN
749         IF ( p_stack_err_msg = TRUE ) THEN
750           FND_MESSAGE.SET_NAME('CSI','CSI_API_NOT_UPDATABLE');
751           FND_MESSAGE.SET_TOKEN('ACTIVE_END_DATE',p_old_date);
752           FND_MSG_PUB.Add;
753           RAISE FND_API.G_EXC_ERROR;
754         END IF;
755         RETURN FALSE;
756       ELSE
757         RETURN TRUE;
758       END IF;
759    ELSE
760      RETURN TRUE;
761    END IF;
762 
763 END Is_Updatable;
764 
765 
766 
767 /*----------------------------------------------------------*/
768 /* Function Name :  get_pricing_attrib_id                   */
769 /*                                                          */
770 /* Description  :  This function generates                  */
771 /*                 pricing_attrib_id using a sequence       */
772 /*----------------------------------------------------------*/
773 
774 FUNCTION get_pricing_attrib_id
775        ( p_stack_err_msg IN      BOOLEAN
776        )
777 RETURN NUMBER
778 IS
779   l_pricing_attrib_id     NUMBER;
780 BEGIN
781       SELECT  csi_i_pricing_attribs_s.nextval
782       INTO    l_pricing_attrib_id
783       FROM    dual;
784       RETURN  l_pricing_attrib_id ;
785 EXCEPTION
786   WHEN OTHERS THEN
787     IF ( p_stack_err_msg = TRUE ) THEN
788        FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_PRI_ATT_ID');
789        FND_MESSAGE.SET_TOKEN('PRICING_ATTRIB_ID',l_pricing_attrib_id);
790        FND_MSG_PUB.Add;
791     END IF;
792 END get_pricing_attrib_id;
793 
794 
795 
796 /*----------------------------------------------------------*/
797 /* Function Name :  get_pricing_attrib_h_id                 */
798 /*                                                          */
799 /* Description  :  This function generates                  */
800 /*                 pricing_attrib_h_id using a sequence     */
801 /*----------------------------------------------------------*/
802 
803 FUNCTION get_pricing_attrib_h_id
804        ( p_stack_err_msg IN      BOOLEAN
805        )
806 RETURN NUMBER
807 IS
808   l_pricing_attrib_h_id     NUMBER;
809 BEGIN
810       SELECT  csi_i_pricing_attribs_h_s.nextval
811       INTO    l_pricing_attrib_h_id
812       FROM    dual;
813       RETURN  l_pricing_attrib_h_id ;
814 EXCEPTION
815   WHEN OTHERS THEN
816     IF ( p_stack_err_msg = TRUE ) THEN
817       FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ATT_H_ID');
818       FND_MESSAGE.SET_TOKEN('PRICING_ATTRIB_H_ID',l_pricing_attrib_h_id);
819       FND_MSG_PUB.Add;
820     END IF;
821 END get_pricing_attrib_h_id;
822 
823 
824 /*-------------------------------------------------------------- */
825 /* Function Name :  get_object_version_number                    */
826 /*                                                               */
827 /* Description  :  This function generates object_version_number */
828 /*                 using previous version numbers                */
829 /*---------------------------------------------------------------*/
830 
831 FUNCTION get_object_version_number
832          (p_object_version_number IN  NUMBER
833          ,p_stack_err_msg         IN      BOOLEAN
834          )
835 RETURN NUMBER
836 IS
837   l_object_version_number     NUMBER;
838 
839 BEGIN
840    l_object_version_number := p_object_version_number + 1;
841    RETURN l_object_version_number;
842 EXCEPTION
843   WHEN OTHERS THEN
844     IF ( p_stack_err_msg = TRUE ) THEN
845          FND_MESSAGE.SET_NAME('CSI','CSI_API_OBJ_VER_MISMATCH');
846          FND_MSG_PUB.Add;
847     END IF;
848 END get_object_version_number ;
849 
850 
851 /*-------------------------------------------------------------- */
852 /* Function Name :  Is_valid_obj_ver_num                         */
853 /*                                                               */
854 /* Description  :  This function generates object_version_number */
855 /*                 using previous version numbers                */
856 /*---------------------------------------------------------------*/
857 
858 FUNCTION Is_valid_obj_ver_num
859     (p_obj_ver_numb_new IN  NUMBER
860     ,p_obj_ver_numb_old IN  NUMBER
861     ,p_stack_err_msg    IN  BOOLEAN
862      )
863 RETURN BOOLEAN
864 IS
865   l_object_version_number     NUMBER;
866 
867 BEGIN
868   IF (p_obj_ver_numb_new = p_obj_ver_numb_old ) THEN
869       RETURN TRUE;
870   ELSE
871       IF ( p_stack_err_msg = TRUE ) THEN
872         FND_MESSAGE.SET_NAME('CSI','CSI_API_OBJ_VER_MISMATCH');
873         FND_MSG_PUB.Add;
874       END IF;
875       RETURN FALSE;
876   END IF;
877 
878 EXCEPTION
879   WHEN OTHERS THEN
880     IF ( p_stack_err_msg = TRUE ) THEN
881       FND_MESSAGE.SET_NAME('CSI','CSI_API_OBJ_VER_MISMATCH');
882       FND_MSG_PUB.Add;
883       RETURN FALSE;
884     END IF;
885 END Is_valid_obj_ver_num;
886 
887 
888 /*-------------------------------------------------------------- */
889 /* Function Name :  get_full_dump_frequency                      */
890 /*                                                               */
891 /* Description  :  This function gets the dump frequency         */
892 /*                                                               */
893 /*---------------------------------------------------------------*/
894 
895 FUNCTION get_full_dump_frequency
896     (p_stack_err_msg IN  BOOLEAN
897      )
898 RETURN NUMBER
899 IS
900   l_dump_frequency     NUMBER;
901 
902 BEGIN
903    IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
904       csi_gen_utility_pvt.populate_install_param_rec;
905    END IF;
906    --
907    l_dump_frequency := csi_datastructures_pub.g_install_param_rec.history_full_dump_frequency;
908    --
909    IF p_stack_err_msg = TRUE THEN
910       IF l_dump_frequency IS NULL THEN
911          FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_FULL_DUMP_FAILED');
912          FND_MSG_PUB.ADD;
913       END IF;
914    END IF;
915 
916    RETURN  l_dump_frequency;
917 END get_full_dump_frequency;
918 
919 
920 END csi_pricing_attrib_vld_pvt;