DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_VALIDATE_AGREEMENT

Source


1 PACKAGE BODY OE_Validate_Agreement AS
2 /* $Header: OEXLAGRB.pls 120.2 2005/12/14 16:00:12 shulin noship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'OE_Validate_Agreement';
7 
8 FUNCTION Handle_Revision (
9 		p_Agreement_rec  IN  OE_Pricing_Cont_PUB.Agreement_Rec_Type
10 		)
11 		RETURN BOOLEAN ;
12 
13 FUNCTION Allow_Revision (
14 		p_Agreement_rec  IN  OE_Pricing_Cont_PUB.Agreement_Rec_Type
15 		)
16 		RETURN BOOLEAN ;
17 
18 FUNCTION Check_EndDates (
19 		p_Agreement_rec  IN  OE_Pricing_Cont_PUB.Agreement_Rec_Type
20 		)
21 		RETURN BOOLEAN ;
22 
23 --Begin code added by rchellam for OKC
24 FUNCTION Valid_Agreement_Source (
25 		p_Agreement_rec  IN  OE_Pricing_Cont_PUB.Agreement_Rec_Type
26 		)
27 		RETURN BOOLEAN;
28 --Begin code added by rchellam for OKC
29 
30 FUNCTION Check_Dates (
31 		p_Agreement_rec  IN  OE_Pricing_Cont_PUB.Agreement_Rec_Type
32 		)
33 		RETURN BOOLEAN ;
34 
35 --  Procedure Entity
36 
37 PROCEDURE Entity
38 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
39 ,   p_Agreement_rec                 IN  OE_Pricing_Cont_PUB.Agreement_Rec_Type
40 ,   p_old_Agreement_rec             IN  OE_Pricing_Cont_PUB.Agreement_Rec_Type :=
41                                         OE_Pricing_Cont_PUB.G_MISS_AGREEMENT_REC
42 )
43 IS
44 l_return_status               VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
45 BEGIN
46 
47     --  Check required attributes.
48 
49     IF  p_Agreement_rec.agreement_id IS NULL
50     THEN
51 
52         l_return_status := FND_API.G_RET_STS_ERROR;
53 
54         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
55         THEN
56 
57             FND_MESSAGE.SET_NAME('OE','OE_ATTRIBUTE_REQUIRED');
58             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','accounting_rule');
59             OE_MSG_PUB.Add;
60 
61         END IF;
62 
63     END IF;
64 
65     --Begin code added by rchellam for OKC
66     IF  p_Agreement_rec.agreement_source_code = 'PAGR' AND
67         p_Agreement_rec.price_list_id IS NULL
68     THEN
69 
70         l_return_status := FND_API.G_RET_STS_ERROR;
71 
72         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
73         THEN
74 
75             FND_MESSAGE.SET_NAME('OE','OE_ATTRIBUTE_REQUIRED');
76             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Price List Id');
77             OE_MSG_PUB.Add;
78 
79         END IF;
80 
81     END IF;
82 
83     IF l_return_status = FND_API.G_RET_STS_ERROR THEN
84 
85       RAISE FND_API.G_EXC_ERROR;
86 
87     END IF;
88 
89 --Commented by sssriniv for making terms field optional
90 /*    IF  p_Agreement_rec.agreement_source_code = 'PAGR' AND
91         p_Agreement_rec.term_id IS NULL
92     THEN
93 
94         l_return_status := FND_API.G_RET_STS_ERROR;
95 
96         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
97         THEN
98 
99             FND_MESSAGE.SET_NAME('OE','OE_ATTRIBUTE_REQUIRED');
100             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Term Id');
101             OE_MSG_PUB.Add;
102 
103         END IF;
104 
105     END IF;
106 */
107 
108     IF l_return_status = FND_API.G_RET_STS_ERROR THEN
109 
110       RAISE FND_API.G_EXC_ERROR;
111 
112     END IF;
113     --End code added by rchellam for OKC
114 
115     --
116     --  Check rest of required attributes here.
117     --
118 /* Revision Handling */
119 	 /* Check for Agreement Name exists */
120     IF  p_Agreement_rec.name is not NULL THEN
121 
122 --            OE_MSG_PUB.Add_Exc_Msg
123 --            (   G_PKG_NAME
124 --            ,   'Checking Revsion '
125 --            );
126 
127 		if NOT ( Allow_Revision( p_Agreement_rec => p_Agreement_rec))
128 		THEN
129         		l_return_status := FND_API.G_RET_STS_ERROR;
130         		IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
131         		THEN
132 				FND_MESSAGE.SET_NAME('QP','QP_NO_REVISION');
133 				OE_MSG_PUB.Add;
134 			end if;
135 
136 		END IF;
137 
138     IF l_return_status = FND_API.G_RET_STS_ERROR THEN
139 
140         RAISE FND_API.G_EXC_ERROR;
141 
142     END IF;
143 
144 	     IF NOT ( Handle_Revision (p_Agreement_rec => p_Agreement_rec ))
145 		THEN
146 
147         		l_return_status := FND_API.G_RET_STS_ERROR;
148 
149         		IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
150         		THEN
151 				FND_MESSAGE.SET_NAME('QP','QP_DUPLICATE_REVISION');
152 --            		FND_MESSAGE.SET_TOKEN('ATTRIBUTE','revision');
153 				OE_MSG_PUB.Add;
154 --            OE_MSG_PUB.Add_Exc_Msg
155 --           (   G_PKG_NAME
156 --          ,   'Revsion Cannot be the Same'
157 --            );
158 
159         		END IF;
160 
161 		ELSE
162 		   /* revision is OK, check for dates overlapping */
163 		   if NOT ( Check_Dates(p_Agreement_rec => p_Agreement_rec ))
164 		   then
165 
166         		IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
167         		THEN
168         		     l_return_status := FND_API.G_RET_STS_ERROR;
169 				FND_MESSAGE.SET_NAME('QP','QP_OVERLAPPING_START_DATE');
170 --            		FND_MESSAGE.SET_TOKEN('ATTRIBUTE','revision');
171 				OE_MSG_PUB.Add;
172 /*
173             OE_MSG_PUB.Add_Exc_Msg
174             (   G_PKG_NAME
175             ,   'Start Dates Cannot Overlap During Agreement Revisions'
176             );
177 */
178         		END IF;
179 
180 		   end if;
181 
182 
183     IF l_return_status = FND_API.G_RET_STS_ERROR THEN
184 
185         RAISE FND_API.G_EXC_ERROR;
186 
187     END IF;
188 
189 
190 		   IF NOT ( Check_EndDates(p_Agreement_rec => p_Agreement_rec ))
191 		   THEN
192 
193         		IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
194         		THEN
195         		     l_return_status := FND_API.G_RET_STS_ERROR;
196 				FND_MESSAGE.SET_NAME('QP','QP_OVERLAPPING_END_DATE');
197 --            		FND_MESSAGE.SET_TOKEN('ATTRIBUTE','revision');
198 				OE_MSG_PUB.Add;
199 /*
200             OE_MSG_PUB.Add_Exc_Msg
201             (   G_PKG_NAME
202             ,   'End Dates Cannot Overlap During Agreement Revisions'
203             );
204 */
205         		END IF;
206 
207 		   end if;
208 
209 
210 		END IF;
211     END IF;
212 
213     --  Return Error if a required attribute is missing.
214 
215     IF l_return_status = FND_API.G_RET_STS_ERROR THEN
216 
217         RAISE FND_API.G_EXC_ERROR;
218 
219     END IF;
220 
221 
222     --Begin code added by rchellam for OKC
223     IF NOT (Valid_Agreement_Source (p_Agreement_rec => p_Agreement_rec ))
224     THEN
225 
226       l_return_status := FND_API.G_RET_STS_ERROR;
227 
228       IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR) THEN
229         FND_MESSAGE.SET_NAME('QP','QP_INVALID_AGR_SOURCE_CODE');
230         OE_MSG_PUB.Add;
231       END IF;
232 
233     END IF;
234 
235     IF l_return_status = FND_API.G_RET_STS_ERROR THEN
236 
237         RAISE FND_API.G_EXC_ERROR;
238 
239     END IF;
240     --End code added by rchellam for OKC
241 
242 
243     --
244     --  Check conditionally required attributes here.
245     --
246 
247 
248     --
249     --  Validate attribute dependencies here.
250     --
251 
252 
253     --  Done validating entity
254 
255     x_return_status := l_return_status;
256 
257 EXCEPTION
258 
259     WHEN FND_API.G_EXC_ERROR THEN
260 
261         x_return_status := FND_API.G_RET_STS_ERROR;
262 
263     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
264 
265         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
266 
267     WHEN OTHERS THEN
268 
269         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
270 
271         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
272         THEN
273             OE_MSG_PUB.Add_Exc_Msg
274             (   G_PKG_NAME
275             ,   'Entity'
276             );
277         END IF;
278 
279 END Entity;
280 
281 --  Procedure Attributes
282 
283 PROCEDURE Attributes
284 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
285 ,   p_Agreement_rec                 IN  OE_Pricing_Cont_PUB.Agreement_Rec_Type
286 ,   p_old_Agreement_rec             IN  OE_Pricing_Cont_PUB.Agreement_Rec_Type :=
287                                         OE_Pricing_Cont_PUB.G_MISS_AGREEMENT_REC
288 )
289 IS
290 BEGIN
291 
292     x_return_status := FND_API.G_RET_STS_SUCCESS;
293 
294     --  Validate Agreement attributes
295 
296     IF  p_Agreement_rec.accounting_rule_id IS NOT NULL AND
297         (   p_Agreement_rec.accounting_rule_id <>
298             p_old_Agreement_rec.accounting_rule_id OR
299             p_old_Agreement_rec.accounting_rule_id IS NULL )
300     THEN
301         IF NOT OE_Validate_Attr.Accounting_Rule(p_Agreement_rec.accounting_rule_id) THEN
302             x_return_status := FND_API.G_RET_STS_ERROR;
303         END IF;
304     END IF;
305 
306     IF  p_Agreement_rec.agreement_contact_id IS NOT NULL AND
307         (   p_Agreement_rec.agreement_contact_id <>
308             p_old_Agreement_rec.agreement_contact_id OR
309             p_old_Agreement_rec.agreement_contact_id IS NULL )
310     THEN
311         IF NOT OE_Validate_Attr.Agreement_Contact(p_Agreement_rec.agreement_contact_id) THEN
312             x_return_status := FND_API.G_RET_STS_ERROR;
313         END IF;
314     END IF;
315 
316     IF  p_Agreement_rec.agreement_id IS NOT NULL AND
317         (   p_Agreement_rec.agreement_id <>
318             p_old_Agreement_rec.agreement_id OR
319             p_old_Agreement_rec.agreement_id IS NULL )
320     THEN
321         IF NOT OE_Validate_Attr.Agreement(p_Agreement_rec.agreement_id) THEN
322             x_return_status := FND_API.G_RET_STS_ERROR;
323         END IF;
324     END IF;
325 
326     IF  p_Agreement_rec.agreement_num IS NOT NULL AND
327         (   p_Agreement_rec.agreement_num <>
328             p_old_Agreement_rec.agreement_num OR
329             p_old_Agreement_rec.agreement_num IS NULL )
330     THEN
331         IF NOT OE_Validate_Attr.Agreement_Num(p_Agreement_rec.agreement_num) THEN
332             x_return_status := FND_API.G_RET_STS_ERROR;
333         END IF;
334     END IF;
335 
336     IF  p_Agreement_rec.agreement_type_code IS NOT NULL AND
337         (   p_Agreement_rec.agreement_type_code <>
338             p_old_Agreement_rec.agreement_type_code OR
339             p_old_Agreement_rec.agreement_type_code IS NULL )
340     THEN
341         IF NOT OE_Validate_Attr.Agreement_Type(p_Agreement_rec.agreement_type_code) THEN
342             x_return_status := FND_API.G_RET_STS_ERROR;
343         END IF;
344     END IF;
345 
346     IF  p_Agreement_rec.created_by IS NOT NULL AND
347         (   p_Agreement_rec.created_by <>
348             p_old_Agreement_rec.created_by OR
349             p_old_Agreement_rec.created_by IS NULL )
350     THEN
351         IF NOT OE_Validate_Attr.Created_By(p_Agreement_rec.created_by) THEN
352             x_return_status := FND_API.G_RET_STS_ERROR;
353         END IF;
354     END IF;
355 
356     IF  p_Agreement_rec.creation_date IS NOT NULL AND
357         (   p_Agreement_rec.creation_date <>
358             p_old_Agreement_rec.creation_date OR
359             p_old_Agreement_rec.creation_date IS NULL )
360     THEN
361         IF NOT OE_Validate_Attr.Creation_Date(p_Agreement_rec.creation_date) THEN
362             x_return_status := FND_API.G_RET_STS_ERROR;
363         END IF;
364     END IF;
365 
366 --
367 
368     IF  p_Agreement_rec.sold_to_org_id IS NOT NULL AND
369         (   p_Agreement_rec.sold_to_org_id <>
370             p_old_Agreement_rec.sold_to_org_id OR
371             p_old_Agreement_rec.sold_to_org_id IS NULL )
372     THEN
373         IF NOT OE_Validate_Attr.Customer(p_Agreement_rec.sold_to_org_id) THEN
374             x_return_status := FND_API.G_RET_STS_ERROR;
375         END IF;
376     END IF;
377 
378 
379 --
380 /*
381     IF  p_Agreement_rec.customer_id IS NOT NULL AND
382         (   p_Agreement_rec.customer_id <>
383             p_old_Agreement_rec.customer_id OR
384             p_old_Agreement_rec.customer_id IS NULL )
385     THEN
386         IF NOT OE_Validate_Attr.Customer(p_Agreement_rec.customer_id) THEN
387             x_return_status := FND_API.G_RET_STS_ERROR;
388         END IF;
389     END IF;
390 */
391 
392     IF  p_Agreement_rec.end_date_active IS NOT NULL AND
393         (   p_Agreement_rec.end_date_active <>
394             p_old_Agreement_rec.end_date_active OR
395             p_old_Agreement_rec.end_date_active IS NULL )
396     THEN
397         IF NOT OE_Validate_Attr.End_Date_Active(p_Agreement_rec.end_date_active) THEN
398             x_return_status := FND_API.G_RET_STS_ERROR;
399         END IF;
400     END IF;
401 
402     IF  p_Agreement_rec.freight_terms_code IS NOT NULL AND
403         (   p_Agreement_rec.freight_terms_code <>
404             p_old_Agreement_rec.freight_terms_code OR
405             p_old_Agreement_rec.freight_terms_code IS NULL )
406     THEN
407         IF NOT OE_Validate_Attr.Freight_Terms(p_Agreement_rec.freight_terms_code) THEN
408             x_return_status := FND_API.G_RET_STS_ERROR;
409         END IF;
410     END IF;
411 
412     IF  p_Agreement_rec.invoice_contact_id IS NOT NULL AND
413         (   p_Agreement_rec.invoice_contact_id <>
414             p_old_Agreement_rec.invoice_contact_id OR
415             p_old_Agreement_rec.invoice_contact_id IS NULL )
416     THEN
417         IF NOT OE_Validate_Attr.Invoice_Contact(p_Agreement_rec.invoice_contact_id) THEN
418             x_return_status := FND_API.G_RET_STS_ERROR;
419         END IF;
420     END IF;
421 
422 -- Changes
423 
424     IF  p_Agreement_rec.invoice_to_org_id IS NOT NULL AND
425         (   p_Agreement_rec.invoice_to_org_id <>
426             p_old_Agreement_rec.invoice_to_org_id OR
427             p_old_Agreement_rec.invoice_to_org_id IS NULL )
428     THEN
429         IF NOT OE_Validate_Attr.Invoice_To_Site_Use(p_Agreement_rec.invoice_to_org_id) THEN
430             x_return_status := FND_API.G_RET_STS_ERROR;
431         END IF;
432     END IF;
433 
434 --
435 /*    IF  p_Agreement_rec.invoice_to_site_use_id IS NOT NULL AND
436         (   p_Agreement_rec.invoice_to_site_use_id <>
437             p_old_Agreement_rec.invoice_to_site_use_id OR
438             p_old_Agreement_rec.invoice_to_site_use_id IS NULL )
439     THEN
440         IF NOT OE_Validate_Attr.Invoice_To_Site_Use(p_Agreement_rec.invoice_to_site_use_id) THEN
441             x_return_status := FND_API.G_RET_STS_ERROR;
442         END IF;
443     END IF;
444 */
445 
446     IF  p_Agreement_rec.invoicing_rule_id IS NOT NULL AND
447         (   p_Agreement_rec.invoicing_rule_id <>
448             p_old_Agreement_rec.invoicing_rule_id OR
449             p_old_Agreement_rec.invoicing_rule_id IS NULL )
450     THEN
451         IF NOT OE_Validate_Attr.Invoicing_Rule(p_Agreement_rec.invoicing_rule_id) THEN
452             x_return_status := FND_API.G_RET_STS_ERROR;
453         END IF;
454     END IF;
455 
456     IF  p_Agreement_rec.last_updated_by IS NOT NULL AND
457         (   p_Agreement_rec.last_updated_by <>
458             p_old_Agreement_rec.last_updated_by OR
459             p_old_Agreement_rec.last_updated_by IS NULL )
460     THEN
461         IF NOT OE_Validate_Attr.Last_Updated_By(p_Agreement_rec.last_updated_by) THEN
462             x_return_status := FND_API.G_RET_STS_ERROR;
463         END IF;
464     END IF;
465 
466     IF  p_Agreement_rec.last_update_date IS NOT NULL AND
467         (   p_Agreement_rec.last_update_date <>
468             p_old_Agreement_rec.last_update_date OR
469             p_old_Agreement_rec.last_update_date IS NULL )
470     THEN
471         IF NOT OE_Validate_Attr.Last_Update_Date(p_Agreement_rec.last_update_date) THEN
472             x_return_status := FND_API.G_RET_STS_ERROR;
473         END IF;
474     END IF;
475 
476     IF  p_Agreement_rec.last_update_login IS NOT NULL AND
477         (   p_Agreement_rec.last_update_login <>
478             p_old_Agreement_rec.last_update_login OR
479             p_old_Agreement_rec.last_update_login IS NULL )
480     THEN
481         IF NOT OE_Validate_Attr.Last_Update_Login(p_Agreement_rec.last_update_login) THEN
482             x_return_status := FND_API.G_RET_STS_ERROR;
483         END IF;
484     END IF;
485 
486     IF  p_Agreement_rec.name IS NOT NULL AND
487         (   p_Agreement_rec.name <>
488             p_old_Agreement_rec.name OR
489             p_old_Agreement_rec.name IS NULL )
490     THEN
491         IF NOT OE_Validate_Attr.Name(p_Agreement_rec.name) THEN
492             x_return_status := FND_API.G_RET_STS_ERROR;
493         END IF;
494 
495 /* Check Revisions */
496 
497 
498 
499 
500 
501     END IF;
502 
503     IF  p_Agreement_rec.override_arule_flag IS NOT NULL AND
504         (   p_Agreement_rec.override_arule_flag <>
505             p_old_Agreement_rec.override_arule_flag OR
506             p_old_Agreement_rec.override_arule_flag IS NULL )
507     THEN
508         IF NOT OE_Validate_Attr.Override_Arule(p_Agreement_rec.override_arule_flag) THEN
509             x_return_status := FND_API.G_RET_STS_ERROR;
510         END IF;
511     END IF;
512 
513     IF  p_Agreement_rec.override_irule_flag IS NOT NULL AND
514         (   p_Agreement_rec.override_irule_flag <>
515             p_old_Agreement_rec.override_irule_flag OR
516             p_old_Agreement_rec.override_irule_flag IS NULL )
517     THEN
518         IF NOT OE_Validate_Attr.Override_Irule(p_Agreement_rec.override_irule_flag) THEN
519             x_return_status := FND_API.G_RET_STS_ERROR;
520         END IF;
521     END IF;
522 
523     IF  p_Agreement_rec.price_list_id IS NOT NULL AND
524         (   p_Agreement_rec.price_list_id <>
525             p_old_Agreement_rec.price_list_id OR
526             p_old_Agreement_rec.price_list_id IS NULL )
527     THEN
528         IF NOT OE_Validate_Attr.Price_List(p_Agreement_rec.price_list_id) THEN
529             x_return_status := FND_API.G_RET_STS_ERROR;
530         END IF;
531     END IF;
532 
533     IF  p_Agreement_rec.purchase_order_num IS NOT NULL AND
534         (   p_Agreement_rec.purchase_order_num <>
535             p_old_Agreement_rec.purchase_order_num OR
536             p_old_Agreement_rec.purchase_order_num IS NULL )
537     THEN
538         IF NOT OE_Validate_Attr.Purchase_Order_Num(p_Agreement_rec.purchase_order_num) THEN
539             x_return_status := FND_API.G_RET_STS_ERROR;
540         END IF;
541     END IF;
542 
543     IF  p_Agreement_rec.revision IS NOT NULL AND
544         (   p_Agreement_rec.revision <>
545             p_old_Agreement_rec.revision OR
546             p_old_Agreement_rec.revision IS NULL )
547     THEN
548         IF NOT OE_Validate_Attr.Revision(p_Agreement_rec.revision) THEN
549             x_return_status := FND_API.G_RET_STS_ERROR;
550         END IF;
551     END IF;
552 
553     IF  p_Agreement_rec.revision_date IS NOT NULL AND
554         (   p_Agreement_rec.revision_date <>
555             p_old_Agreement_rec.revision_date OR
556             p_old_Agreement_rec.revision_date IS NULL )
557     THEN
558         IF NOT OE_Validate_Attr.Revision_Date(p_Agreement_rec.revision_date) THEN
559             x_return_status := FND_API.G_RET_STS_ERROR;
560         END IF;
561     END IF;
562 
563     IF  p_Agreement_rec.revision_reason_code IS NOT NULL AND
564         (   p_Agreement_rec.revision_reason_code <>
565             p_old_Agreement_rec.revision_reason_code OR
566             p_old_Agreement_rec.revision_reason_code IS NULL )
567     THEN
568         IF NOT OE_Validate_Attr.Revision_Reason(p_Agreement_rec.revision_reason_code) THEN
569             x_return_status := FND_API.G_RET_STS_ERROR;
570         END IF;
571     END IF;
572 
573     IF  p_Agreement_rec.salesrep_id IS NOT NULL AND
574         (   p_Agreement_rec.salesrep_id <>
575             p_old_Agreement_rec.salesrep_id OR
576             p_old_Agreement_rec.salesrep_id IS NULL )
577     THEN
578         IF NOT OE_Validate_Attr.Salesrep(p_Agreement_rec.salesrep_id) THEN
579             x_return_status := FND_API.G_RET_STS_ERROR;
580         END IF;
581     END IF;
582 
583     IF  p_Agreement_rec.ship_method_code IS NOT NULL AND
584         (   p_Agreement_rec.ship_method_code <>
585             p_old_Agreement_rec.ship_method_code OR
586             p_old_Agreement_rec.ship_method_code IS NULL )
587     THEN
588         IF NOT OE_Validate_Attr.Ship_Method(p_Agreement_rec.ship_method_code) THEN
589             x_return_status := FND_API.G_RET_STS_ERROR;
590         END IF;
591     END IF;
592 
593     IF  p_Agreement_rec.signature_date IS NOT NULL AND
594         (   p_Agreement_rec.signature_date <>
595             p_old_Agreement_rec.signature_date OR
596             p_old_Agreement_rec.signature_date IS NULL )
597     THEN
598         IF NOT OE_Validate_Attr.Signature_Date(p_Agreement_rec.signature_date) THEN
599             x_return_status := FND_API.G_RET_STS_ERROR;
600         END IF;
601     END IF;
602 
603     IF  p_Agreement_rec.start_date_active IS NOT NULL AND
604         (   p_Agreement_rec.start_date_active <>
605             p_old_Agreement_rec.start_date_active OR
606             p_old_Agreement_rec.start_date_active IS NULL )
607     THEN
608         IF NOT OE_Validate_Attr.Start_Date_Active(p_Agreement_rec.start_date_active) THEN
609             x_return_status := FND_API.G_RET_STS_ERROR;
610         END IF;
611     END IF;
612 
613     IF  p_Agreement_rec.term_id IS NOT NULL AND
614         (   p_Agreement_rec.term_id <>
615             p_old_Agreement_rec.term_id OR
616             p_old_Agreement_rec.term_id IS NULL )
617     THEN
618         IF NOT OE_Validate_Attr.Term(p_Agreement_rec.term_id) THEN
619             x_return_status := FND_API.G_RET_STS_ERROR;
620         END IF;
621     END IF;
622 
623     -- Added for bug#4029589
624     IF  p_Agreement_rec.invoice_to_customer_id IS NOT NULL AND
625         (   p_Agreement_rec.invoice_to_customer_id <>
626             p_old_Agreement_rec.invoice_to_customer_id OR
627             p_old_Agreement_rec.invoice_to_customer_id IS NULL )
628     THEN
629         IF NOT OE_Validate_Attr.Invoice_To_Customer_Id(p_Agreement_rec.invoice_to_customer_id) THEN
630             x_return_status := FND_API.G_RET_STS_ERROR;
631         END IF;
632     END IF;
633 
634     IF  (p_Agreement_rec.attribute1 IS NOT NULL AND
635         (   p_Agreement_rec.attribute1 <>
636             p_old_Agreement_rec.attribute1 OR
637             p_old_Agreement_rec.attribute1 IS NULL ))
638     OR  (p_Agreement_rec.attribute10 IS NOT NULL AND
639         (   p_Agreement_rec.attribute10 <>
640             p_old_Agreement_rec.attribute10 OR
641             p_old_Agreement_rec.attribute10 IS NULL ))
642     OR  (p_Agreement_rec.attribute11 IS NOT NULL AND
643         (   p_Agreement_rec.attribute11 <>
644             p_old_Agreement_rec.attribute11 OR
645             p_old_Agreement_rec.attribute11 IS NULL ))
646     OR  (p_Agreement_rec.attribute12 IS NOT NULL AND
647         (   p_Agreement_rec.attribute12 <>
648             p_old_Agreement_rec.attribute12 OR
649             p_old_Agreement_rec.attribute12 IS NULL ))
650     OR  (p_Agreement_rec.attribute13 IS NOT NULL AND
651         (   p_Agreement_rec.attribute13 <>
652             p_old_Agreement_rec.attribute13 OR
653             p_old_Agreement_rec.attribute13 IS NULL ))
654     OR  (p_Agreement_rec.attribute14 IS NOT NULL AND
655         (   p_Agreement_rec.attribute14 <>
656             p_old_Agreement_rec.attribute14 OR
657             p_old_Agreement_rec.attribute14 IS NULL ))
658     OR  (p_Agreement_rec.attribute15 IS NOT NULL AND
659         (   p_Agreement_rec.attribute15 <>
660             p_old_Agreement_rec.attribute15 OR
661             p_old_Agreement_rec.attribute15 IS NULL ))
662     OR  (p_Agreement_rec.attribute2 IS NOT NULL AND
663         (   p_Agreement_rec.attribute2 <>
664             p_old_Agreement_rec.attribute2 OR
665             p_old_Agreement_rec.attribute2 IS NULL ))
666     OR  (p_Agreement_rec.attribute3 IS NOT NULL AND
667         (   p_Agreement_rec.attribute3 <>
668             p_old_Agreement_rec.attribute3 OR
669             p_old_Agreement_rec.attribute3 IS NULL ))
670     OR  (p_Agreement_rec.attribute4 IS NOT NULL AND
671         (   p_Agreement_rec.attribute4 <>
672             p_old_Agreement_rec.attribute4 OR
673             p_old_Agreement_rec.attribute4 IS NULL ))
674     OR  (p_Agreement_rec.attribute5 IS NOT NULL AND
675         (   p_Agreement_rec.attribute5 <>
676             p_old_Agreement_rec.attribute5 OR
677             p_old_Agreement_rec.attribute5 IS NULL ))
678     OR  (p_Agreement_rec.attribute6 IS NOT NULL AND
679         (   p_Agreement_rec.attribute6 <>
680             p_old_Agreement_rec.attribute6 OR
681             p_old_Agreement_rec.attribute6 IS NULL ))
682     OR  (p_Agreement_rec.attribute7 IS NOT NULL AND
683         (   p_Agreement_rec.attribute7 <>
684             p_old_Agreement_rec.attribute7 OR
685             p_old_Agreement_rec.attribute7 IS NULL ))
686     OR  (p_Agreement_rec.attribute8 IS NOT NULL AND
687         (   p_Agreement_rec.attribute8 <>
688             p_old_Agreement_rec.attribute8 OR
689             p_old_Agreement_rec.attribute8 IS NULL ))
690     OR  (p_Agreement_rec.attribute9 IS NOT NULL AND
691         (   p_Agreement_rec.attribute9 <>
692             p_old_Agreement_rec.attribute9 OR
693             p_old_Agreement_rec.attribute9 IS NULL ))
694     OR  (p_Agreement_rec.context IS NOT NULL AND
695         (   p_Agreement_rec.context <>
696             p_old_Agreement_rec.context OR
697             p_old_Agreement_rec.context IS NULL ))
698     THEN
699 
700     --  These calls are temporarily commented out NOCOPY /* file.sql.39 change */
701 
702 /*
703         FND_FLEX_DESC_VAL.Set_Column_Value
704         (   column_name                   => 'ATTRIBUTE1'
705         ,   column_value                  => p_Agreement_rec.attribute1
706         );
707         FND_FLEX_DESC_VAL.Set_Column_Value
708         (   column_name                   => 'ATTRIBUTE10'
709         ,   column_value                  => p_Agreement_rec.attribute10
710         );
711         FND_FLEX_DESC_VAL.Set_Column_Value
712         (   column_name                   => 'ATTRIBUTE11'
713         ,   column_value                  => p_Agreement_rec.attribute11
714         );
715         FND_FLEX_DESC_VAL.Set_Column_Value
716         (   column_name                   => 'ATTRIBUTE12'
717         ,   column_value                  => p_Agreement_rec.attribute12
718         );
719         FND_FLEX_DESC_VAL.Set_Column_Value
720         (   column_name                   => 'ATTRIBUTE13'
721         ,   column_value                  => p_Agreement_rec.attribute13
722         );
723         FND_FLEX_DESC_VAL.Set_Column_Value
724         (   column_name                   => 'ATTRIBUTE14'
725         ,   column_value                  => p_Agreement_rec.attribute14
726         );
727         FND_FLEX_DESC_VAL.Set_Column_Value
728         (   column_name                   => 'ATTRIBUTE15'
729         ,   column_value                  => p_Agreement_rec.attribute15
730         );
731         FND_FLEX_DESC_VAL.Set_Column_Value
732         (   column_name                   => 'ATTRIBUTE2'
733         ,   column_value                  => p_Agreement_rec.attribute2
734         );
735         FND_FLEX_DESC_VAL.Set_Column_Value
736         (   column_name                   => 'ATTRIBUTE3'
737         ,   column_value                  => p_Agreement_rec.attribute3
738         );
739         FND_FLEX_DESC_VAL.Set_Column_Value
740         (   column_name                   => 'ATTRIBUTE4'
741         ,   column_value                  => p_Agreement_rec.attribute4
742         );
743         FND_FLEX_DESC_VAL.Set_Column_Value
744         (   column_name                   => 'ATTRIBUTE5'
745         ,   column_value                  => p_Agreement_rec.attribute5
746         );
747         FND_FLEX_DESC_VAL.Set_Column_Value
748         (   column_name                   => 'ATTRIBUTE6'
749         ,   column_value                  => p_Agreement_rec.attribute6
750         );
751         FND_FLEX_DESC_VAL.Set_Column_Value
752         (   column_name                   => 'ATTRIBUTE7'
753         ,   column_value                  => p_Agreement_rec.attribute7
754         );
755         FND_FLEX_DESC_VAL.Set_Column_Value
756         (   column_name                   => 'ATTRIBUTE8'
757         ,   column_value                  => p_Agreement_rec.attribute8
758         );
759         FND_FLEX_DESC_VAL.Set_Column_Value
760         (   column_name                   => 'ATTRIBUTE9'
761         ,   column_value                  => p_Agreement_rec.attribute9
762         );
763         FND_FLEX_DESC_VAL.Set_Column_Value
764         (   column_name                   => 'CONTEXT'
765         ,   column_value                  => p_Agreement_rec.context
766         );
767 */
768 
769         --  Validate descriptive flexfield.
770 
771         IF NOT OE_Validate_Attr.Desc_Flex( 'AGREEMENT' ) THEN
772             x_return_status := FND_API.G_RET_STS_ERROR;
773         END IF;
774 
775     END IF;
776 
777     --  Done validating attributes
778 
779 EXCEPTION
780 
781     WHEN FND_API.G_EXC_ERROR THEN
782 
783         x_return_status := FND_API.G_RET_STS_ERROR;
784 
785     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
786 
787         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
788 
789     WHEN OTHERS THEN
790 
791         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
792 
793         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
794         THEN
795             OE_MSG_PUB.Add_Exc_Msg
796             (   G_PKG_NAME
797             ,   'Attributes'
798             );
799         END IF;
800 
801 END Attributes;
802 
803 --  Procedure Entity_Delete
804 
805 PROCEDURE Entity_Delete
806 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
807 ,   p_Agreement_rec                 IN  OE_Pricing_Cont_PUB.Agreement_Rec_Type
808 )
809 IS
810 l_return_status               VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
811 BEGIN
812 
813     --  Validate entity delete.
814 
815     NULL;
816 
817     --  Done.
818 
819     x_return_status := l_return_status;
820 
821 EXCEPTION
822 
823     WHEN FND_API.G_EXC_ERROR THEN
824 
825         x_return_status := FND_API.G_RET_STS_ERROR;
826 
827     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
828 
829         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
830 
831     WHEN OTHERS THEN
832 
833         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
834 
835         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
836         THEN
837             OE_MSG_PUB.Add_Exc_Msg
838             (   G_PKG_NAME
839             ,   'Entity_Delete'
840             );
841         END IF;
842 
843 END Entity_Delete;
844 
845 
846 
847 FUNCTION Check_EndDates (
848 		p_Agreement_rec  IN  OE_Pricing_Cont_PUB.Agreement_Rec_Type
849 					)
850 RETURN BOOLEAN
851 IS
852 l_count NUMBER;
853 l_dummy VARCHAR2(10);
854 BEGIN
855 
856     /* Check Agreement Exists */
857     	IF p_Agreement_rec.name is NOT NULL THEN
858 /* Check for end dates overlap */
859 
860 	select 'VALID' into l_dummy
861 	from oe_agreements
862 	where name = p_Agreement_rec.name
863 	and (  nvl( trunc(start_date_active),sysdate) between
864 		  nvl(p_Agreement_rec.start_date_active, sysdate)
865 		     and
866 		  nvl(p_Agreement_rec.end_date_active, sysdate)
867 	OR     nvl(trunc(end_date_active), sysdate) between
868 		  nvl(p_Agreement_rec.start_date_active , sysdate)
869 		     and
870 		  nvl(p_Agreement_rec.end_date_active , sysdate)
871 		);
872 
873     if l_count = 0 THEN
874 	   RETURN TRUE;
875     else
876 	   RETURN FALSE;
877     end if;
878  --           OE_MSG_PUB.Add_Exc_Msg
879  --           (   G_PKG_NAME
880  --           ,   'End Dates are Overlapping' || l_count
881  --           );
882 	     /* Revison needs to be changed */
883 	END IF;
884 
885 
886 EXCEPTION
887     WHEN NO_DATA_FOUND THEN
888 	 RETURN TRUE;
889    WHEN TOO_MANY_ROWS THEN
890 	 RETURN FALSE;
891 
892 END Check_EndDates;
893 
894 
895 --
896 
897 FUNCTION Check_Dates (
898 		p_Agreement_rec  IN  OE_Pricing_Cont_PUB.Agreement_Rec_Type
899 					)
900 RETURN BOOLEAN
901 IS
902 l_count NUMBER;
903 l_dummy VARCHAR2(10);
904 BEGIN
905 
906     /* Check Agreement Exists */
907     	IF p_Agreement_rec.name is NOT NULL THEN
908 
909 /* Check for start dates */
910 
911 	select count(*)
912 	into l_count
913 	from oe_agreements
914 	where name = p_Agreement_rec.name
915 	and nvl(p_Agreement_rec.start_date_active , sysdate)
916 		  BETWEEN  nvl(trunc(start_date_active), sysdate) and
917 				 nvl(trunc(end_date_active),sysdate)
918 		  and p_Agreement_rec.revision <> revision;
919 
920      if l_count = 0 THEN
921          RETURN TRUE;
922      else
923 	     /* Revison needs to be changed */
924 		RETURN FALSE;
925      end if;
926 	END IF;
927 
928 
929 EXCEPTION
930     WHEN NO_DATA_FOUND THEN
931 	 RETURN TRUE;
932 
933    WHEN TOO_MANY_ROWS THEN
934 	 RETURN TRUE;
935 
936 END Check_Dates;
937 
938 --
939 
940 FUNCTION Allow_Revision (
941 		p_Agreement_rec  IN  OE_Pricing_Cont_PUB.Agreement_Rec_Type
942 					)
943 RETURN BOOLEAN
944 IS
945 l_count NUMBER;
946 BEGIN
947 
948 	SELECT  count(*)
949 	into l_count
950 	from oe_agreements
951     	where name = p_Agreement_rec.name
952    -- 	and revision = '1'   /* User may enter revision 2 to start with */
953 	and ( start_date_active is null
954 		or
955 		end_date_active is null ) ;
956 
957 
958 	if l_count = 0 THEN
959 		RETURN TRUE;
960 	else
961 		RETURN FALSE;
962 	END IF;
963 
964 	EXCEPTION
965 	WHEN NO_DATA_FOUND THEN
966 	  RETURN TRUE;
967 	WHEN TOO_MANY_ROWS THEN
968 		NULL;
969 END Allow_Revision;
970 
971 
972 --Begin code added by rchellam for OKC
973 
974 FUNCTION Valid_Agreement_Source (
975 		p_Agreement_rec  IN  OE_Pricing_Cont_PUB.Agreement_Rec_Type
976 					)
977 RETURN BOOLEAN
978 IS
979  l_dummy	VARCHAR2(10);
980 BEGIN
981 
982   --Check if agreement_source_code is valid
983   IF p_Agreement_rec.agreement_source_code is NOT NULL THEN
984 
985     SELECT 'VALID'
986     INTO   l_dummy
987     FROM   qp_lookups
988     WHERE  lookup_type = 'AGREEMENT_SOURCE_CODE'
989     AND    lookup_code = p_Agreement_rec.agreement_source_code;
990 
991     RETURN TRUE;
992 
993   END IF;
994 
995 EXCEPTION
996     WHEN NO_DATA_FOUND THEN
997       RETURN FALSE;
998 
999 END Valid_Agreement_Source;
1000 
1001 --End code added by rchellam for OKC
1002 
1003 
1004 FUNCTION Handle_Revision (
1005 		p_Agreement_rec  IN  OE_Pricing_Cont_PUB.Agreement_Rec_Type
1006 					)
1007 RETURN BOOLEAN
1008 IS
1009 l_dummy	VARCHAR2(100);
1010 BEGIN
1011 
1012     /* Check Agreement Exists */
1013     	IF p_Agreement_rec.name is NOT NULL THEN
1014 	    	SELECT 'VALID'
1015     		into l_dummy
1016     		FROM OE_AGREEMENTS
1017     		where name = p_Agreement_rec.name
1018      	and revision = p_Agreement_rec.revision;
1019 
1020 
1021   --          OE_MSG_PUB.Add_Exc_Msg
1022    --         (   G_PKG_NAME
1023     --        ,   'Agreement Record Exists'
1024      --       );
1025 
1026 	     /* Revison needs to be changed */
1027 		RETURN FALSE;
1028 	END IF;
1029 
1030 
1031 EXCEPTION
1032     WHEN NO_DATA_FOUND THEN
1033                 RETURN TRUE;
1034 
1035 
1036 END Handle_Revision;
1037 
1038 END OE_Validate_Agreement;