DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_OE_FORM_AGREEMENT

Source


1 PACKAGE BODY OE_OE_Form_Agreement AS
2 /* $Header: OEXFAGRB.pls 120.2 2005/12/14 16:13:41 shulin noship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'OE_OE_Form_Agreement';
7 
8 --  Global variables holding cached record.
9 
10 g_Agreement_rec               OE_Pricing_Cont_PUB.Agreement_Rec_Type;
11 g_db_Agreement_rec            OE_Pricing_Cont_PUB.Agreement_Rec_Type;
12 
13 --  Forward declaration of procedures maintaining entity record cache.
14 
15 PROCEDURE Write_Agreement
16 (   p_Agreement_rec                 IN  OE_Pricing_Cont_PUB.Agreement_Rec_Type
17 ,   p_db_record                     IN  BOOLEAN := FALSE
18 );
19 
20 FUNCTION Get_Agreement
21 (   p_db_record                     IN  BOOLEAN := FALSE
22 ,   p_agreement_id                  IN  NUMBER
23 )
24 RETURN OE_Pricing_Cont_PUB.Agreement_Rec_Type;
25 
26 PROCEDURE Clear_Agreement;
27 
28 --  Global variable holding performed operations.
29 
30 g_opr__tbl                    OE_Pricing_Cont_PUB.Agreement_Tbl_Type;
31 
32 --  Procedure : Default_Attributes
33 --
34 
35 PROCEDURE Default_Attributes
36 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
37 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
38 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
39 ,   x_accounting_rule_id            OUT NOCOPY /* file.sql.39 change */ NUMBER
40 ,   x_agreement_contact_id          OUT NOCOPY /* file.sql.39 change */ NUMBER
41 ,   x_agreement_id                  OUT NOCOPY /* file.sql.39 change */ NUMBER
42 ,   x_agreement_num                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
43 ,   x_agreement_type_code           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
44 ,   x_attribute1                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
45 ,   x_attribute10                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
46 ,   x_attribute11                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
47 ,   x_attribute12                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
48 ,   x_attribute13                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
49 ,   x_attribute14                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
50 ,   x_attribute15                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
51 ,   x_attribute2                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
52 ,   x_attribute3                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
53 ,   x_attribute4                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
54 ,   x_attribute5                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
55 ,   x_attribute6                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
56 ,   x_attribute7                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
57 ,   x_attribute8                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
58 ,   x_attribute9                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
59 ,   x_context                       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
60 ,   x_sold_to_org_id                OUT NOCOPY /* file.sql.39 change */ NUMBER
61 ,   x_end_date_active               OUT NOCOPY /* file.sql.39 change */ DATE
62 ,   x_freight_terms_code            OUT NOCOPY /* file.sql.39 change */ VARCHAR2
63 ,   x_invoice_contact_id            OUT NOCOPY /* file.sql.39 change */ NUMBER
64 ,   x_invoice_to_org_id        	    OUT NOCOPY /* file.sql.39 change */ NUMBER
65 ,   x_invoicing_rule_id             OUT NOCOPY /* file.sql.39 change */ NUMBER
66 ,   x_name                          OUT NOCOPY /* file.sql.39 change */ VARCHAR2
67 ,   x_override_arule_flag           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
68 ,   x_override_irule_flag           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
69 ,   x_price_list_id                 OUT NOCOPY /* file.sql.39 change */ NUMBER
70 ,   x_purchase_order_num            OUT NOCOPY /* file.sql.39 change */ VARCHAR2
71 ,   x_revision                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
72 ,   x_revision_date                 OUT NOCOPY /* file.sql.39 change */ DATE
73 ,   x_revision_reason_code          OUT NOCOPY /* file.sql.39 change */ VARCHAR2
74 ,   x_salesrep_id                   OUT NOCOPY /* file.sql.39 change */ NUMBER
75 ,   x_ship_method_code              OUT NOCOPY /* file.sql.39 change */ VARCHAR2
76 ,   x_signature_date                OUT NOCOPY /* file.sql.39 change */ DATE
77 ,   x_start_date_active             OUT NOCOPY /* file.sql.39 change */ DATE
78 ,   x_term_id                       OUT NOCOPY /* file.sql.39 change */ NUMBER
79 ,   x_accounting_rule               OUT NOCOPY /* file.sql.39 change */ VARCHAR2
80 ,   x_agreement_contact             OUT NOCOPY /* file.sql.39 change */ VARCHAR2
81 ,   x_agreement                     OUT NOCOPY /* file.sql.39 change */ VARCHAR2
82 ,   x_agreement_type                OUT NOCOPY /* file.sql.39 change */ VARCHAR2
83 ,   x_customer                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
84 ,   x_freight_terms                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
85 ,   x_invoice_contact               OUT NOCOPY /* file.sql.39 change */ VARCHAR2
86 ,   x_invoice_to_site_use           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
87 ,   x_invoicing_rule                OUT NOCOPY /* file.sql.39 change */ VARCHAR2
88 ,   x_override_arule                OUT NOCOPY /* file.sql.39 change */ VARCHAR2
89 ,   x_override_irule                OUT NOCOPY /* file.sql.39 change */ VARCHAR2
90 ,   x_price_list                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
91 ,   x_revision_reason               OUT NOCOPY /* file.sql.39 change */ VARCHAR2
92 ,   x_salesrep                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
93 ,   x_ship_method                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
94 ,   x_term                          OUT NOCOPY /* file.sql.39 change */ VARCHAR2
95 ,   x_agreement_source_code         OUT NOCOPY /* file.sql.39 change */ VARCHAR2 --added by rchellam for OKC
96 ,   x_orig_system_agr_id            OUT NOCOPY /* file.sql.39 change */ NUMBER --added by rchellam for OKC
97 ,   x_agreement_source              OUT NOCOPY /* file.sql.39 change */ VARCHAR2 --added by rchellam for OKC
98 ,   x_invoice_to_customer_id        OUT NOCOPY NUMBER -- Added for bug#4029589
99 )
100 IS
101 l_Agreement_rec               OE_Pricing_Cont_PUB.Agreement_Rec_Type;
102 l_Agreement_val_rec           OE_Pricing_Cont_PUB.Agreement_Val_Rec_Type;
103 l_control_rec                 oe_globals.Control_Rec_Type;
104 l_return_status               VARCHAR2(1);
105 l_x_Contract_rec              OE_Pricing_Cont_PUB.Contract_Rec_Type;
106 l_x_Agreement_rec             OE_Pricing_Cont_PUB.Agreement_Rec_Type;
107 l_x_Price_LHeader_rec         OE_Price_List_PUB.Price_List_Rec_Type;
108 l_x_Discount_Header_rec       OE_Pricing_Cont_PUB.Discount_Header_Rec_Type;
109 l_x_Price_LLine_rec           OE_Price_List_PUB.Price_List_Line_Rec_Type;
110 l_x_Price_LLine_tbl           OE_Price_List_PUB.Price_List_Line_Tbl_Type;
111 l_x_Discount_Cust_rec         OE_Pricing_Cont_PUB.Discount_Cust_Rec_Type;
112 l_x_Discount_Cust_tbl         OE_Pricing_Cont_PUB.Discount_Cust_Tbl_Type;
113 l_x_Discount_Line_rec         OE_Pricing_Cont_PUB.Discount_Line_Rec_Type;
114 l_x_Discount_Line_tbl         OE_Pricing_Cont_PUB.Discount_Line_Tbl_Type;
115 l_x_Price_Break_rec           OE_Pricing_Cont_PUB.Price_Break_Rec_Type;
116 l_x_Price_Break_tbl           OE_Pricing_Cont_PUB.Price_Break_Tbl_Type;
117 BEGIN
118 
119     oe_debug_pub.add('Entering OE_OE_Form_Agreement.Default_Attributes');
120 
121     --  Set control flags.
122 
123     l_control_rec.controlled_operation := TRUE;
124     l_control_rec.default_attributes   := TRUE;
125 
126     l_control_rec.change_attributes    := FALSE;
127     l_control_rec.validate_entity      := FALSE;
128     l_control_rec.write_to_DB          := FALSE;
129     l_control_rec.process              := FALSE;
130 
131     --  Instruct API to retain its caches
132 
133     l_control_rec.clear_api_cache      := FALSE;
134     l_control_rec.clear_api_requests   := FALSE;
135 
136     --  Load IN parameters if any exist
137 
138 
139     --  Defaulting of flex values is currently done by the form.
140     --  Set flex attributes to NULL in order to avoid defaulting them.
141 /*
142     l_Agreement_rec.attribute1                    := 'NULL';
143     l_Agreement_rec.attribute10                   := 'NULL';
144     l_Agreement_rec.attribute11                   := 'NULL';
145     l_Agreement_rec.attribute12                   := 'NULL';
146     l_Agreement_rec.attribute13                   := 'NULL';
147     l_Agreement_rec.attribute14                   := 'NULL';
148     l_Agreement_rec.attribute15                   := 'NULL';
149     l_Agreement_rec.attribute2                    := 'NULL';
150     l_Agreement_rec.attribute3                    := 'NULL';
151     l_Agreement_rec.attribute4                    := 'NULL';
152     l_Agreement_rec.attribute5                    := 'NULL';
153     l_Agreement_rec.attribute6                    := 'NULL';
154     l_Agreement_rec.attribute7                    := 'NULL';
155     l_Agreement_rec.attribute8                    := 'NULL';
156     l_Agreement_rec.attribute9                    := 'NULL';
157     l_Agreement_rec.context                       := 'NULL';
158 */
159     --  Set Operation to Create
160 
161     l_Agreement_rec.operation := oe_globals.G_OPR_CREATE;
162 
163     --  Call OE_Pricing_Cont_PVT.Process_Pricing_Cont
164 
165     OE_Pricing_Cont_PVT.Process_Pricing_Cont
166     (   p_api_version_number          => 1.0
167     ,   p_init_msg_list               => FND_API.G_TRUE
168     ,   x_return_status               => l_return_status
169     ,   x_msg_count                   => x_msg_count
170     ,   x_msg_data                    => x_msg_data
171     ,   p_control_rec                 => l_control_rec
172     ,   p_Agreement_rec               => l_Agreement_rec
173     ,   x_Contract_rec                => l_x_Contract_rec
174     ,   x_Agreement_rec               => l_x_Agreement_rec
175     ,   x_Price_LHeader_rec           => l_x_Price_LHeader_rec
176     ,   x_Discount_Header_rec         => l_x_Discount_Header_rec
177     ,   x_Price_LLine_tbl             => l_x_Price_LLine_tbl
178     ,   x_Discount_Cust_tbl           => l_x_Discount_Cust_tbl
179     ,   x_Discount_Line_tbl           => l_x_Discount_Line_tbl
180     ,   x_Price_Break_tbl             => l_x_Price_Break_tbl
181     );
182 
183     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
184         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
185     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
186         RAISE FND_API.G_EXC_ERROR;
187     END IF;
188 
189 
190     --  Load OUT parameters.
191 
192     x_accounting_rule_id           := l_x_Agreement_rec.accounting_rule_id;
193     x_agreement_contact_id         := l_x_Agreement_rec.agreement_contact_id;
194     x_agreement_id                 := l_x_Agreement_rec.agreement_id;
195     x_agreement_num                := l_x_Agreement_rec.agreement_num;
196     x_agreement_type_code          := l_x_Agreement_rec.agreement_type_code;
197     x_attribute1                   := l_x_Agreement_rec.attribute1;
198     x_attribute10                  := l_x_Agreement_rec.attribute10;
199     x_attribute11                  := l_x_Agreement_rec.attribute11;
200     x_attribute12                  := l_x_Agreement_rec.attribute12;
201     x_attribute13                  := l_x_Agreement_rec.attribute13;
202     x_attribute14                  := l_x_Agreement_rec.attribute14;
203     x_attribute15                  := l_x_Agreement_rec.attribute15;
204     x_attribute2                   := l_x_Agreement_rec.attribute2;
205     x_attribute3                   := l_x_Agreement_rec.attribute3;
206     x_attribute4                   := l_x_Agreement_rec.attribute4;
207     x_attribute5                   := l_x_Agreement_rec.attribute5;
208     x_attribute6                   := l_x_Agreement_rec.attribute6;
209     x_attribute7                   := l_x_Agreement_rec.attribute7;
210     x_attribute8                   := l_x_Agreement_rec.attribute8;
211     x_attribute9                   := l_x_Agreement_rec.attribute9;
212     x_context                      := l_x_Agreement_rec.context;
213     x_sold_to_org_id               := l_x_Agreement_rec.sold_to_org_id;
214     x_end_date_active              := l_x_Agreement_rec.end_date_active;
215     x_freight_terms_code           := l_x_Agreement_rec.freight_terms_code;
216     x_invoice_contact_id           := l_x_Agreement_rec.invoice_contact_id;
217     x_invoice_to_org_id       	   := l_x_Agreement_rec.invoice_to_org_id;
218     x_invoicing_rule_id            := l_x_Agreement_rec.invoicing_rule_id;
219     x_name                         := l_x_Agreement_rec.name;
220     x_override_arule_flag          := l_x_Agreement_rec.override_arule_flag;
221     x_override_irule_flag          := l_x_Agreement_rec.override_irule_flag;
222     x_price_list_id                := l_x_Agreement_rec.price_list_id;
223     x_purchase_order_num           := l_x_Agreement_rec.purchase_order_num;
224     x_revision                     := l_x_Agreement_rec.revision;
225     x_revision_date                := l_x_Agreement_rec.revision_date;
226     x_revision_reason_code         := l_x_Agreement_rec.revision_reason_code;
227     x_salesrep_id                  := l_x_Agreement_rec.salesrep_id;
228     x_ship_method_code             := l_x_Agreement_rec.ship_method_code;
229     x_signature_date               := l_x_Agreement_rec.signature_date;
230     x_start_date_active            := l_x_Agreement_rec.start_date_active;
231     x_term_id                      := l_x_Agreement_rec.term_id;
232     x_agreement_source_code        := l_x_Agreement_rec.agreement_source_code;
233                                        --added by rchellam for OKC
234     x_orig_system_agr_id           := l_x_Agreement_rec.orig_system_agr_id;
235                                        --added by rchellam for OKC
236     x_invoice_to_customer_id       := l_x_Agreement_rec.invoice_to_customer_id;
237                                        -- Added for bug#4029589
238 
239     --  Load display out parameters if any
240 
241     l_Agreement_val_rec := OE_Agreement_Util.Get_Values
242     (   p_Agreement_rec               => l_x_Agreement_rec
243     );
244     x_accounting_rule              := l_Agreement_val_rec.accounting_rule;
245     x_agreement_contact            := l_Agreement_val_rec.agreement_contact;
246     x_agreement                    := l_Agreement_val_rec.agreement;
247     x_agreement_type               := l_Agreement_val_rec.agreement_type;
248     x_customer                     := l_Agreement_val_rec.customer;
249     x_freight_terms                := l_Agreement_val_rec.freight_terms;
250     x_invoice_contact              := l_Agreement_val_rec.invoice_contact;
251     x_invoice_to_site_use          := l_Agreement_val_rec.invoice_to_site_use;
252 /* x_invoice_to_org          	:= l_Agreement_val_rec.invoice_to_org; */
253     x_invoicing_rule               := l_Agreement_val_rec.invoicing_rule;
254     x_override_arule               := l_Agreement_val_rec.override_arule;
255     x_override_irule               := l_Agreement_val_rec.override_irule;
256     x_price_list                   := l_Agreement_val_rec.price_list;
257     x_revision_reason              := l_Agreement_val_rec.revision_reason;
258     x_salesrep                     := l_Agreement_val_rec.salesrep;
259     x_ship_method                  := l_Agreement_val_rec.ship_method;
260     x_term                         := l_Agreement_val_rec.term;
261     x_agreement_source             := l_Agreement_val_rec.agreement_source;
262                                        --added by rchellam for OKC
263 
264     --  Write to cache.
265     --  Set db_flag to False before writing to cache
266 
267     l_x_Agreement_rec.db_flag := FND_API.G_FALSE;
268 
269     Write_Agreement
270     (   p_Agreement_rec               => l_x_Agreement_rec
271     );
272 
273     --  Set return status.
274 
275     x_return_status := FND_API.G_RET_STS_SUCCESS;
276 
277     --  Get message count and data
278 
279     OE_MSG_PUB.Count_And_Get
280     (   p_count                       => x_msg_count
281     ,   p_data                        => x_msg_data
282     );
283 
284     oe_debug_pub.add('Exiting OE_OE_Form_Agreement.Default_Attributes');
285 
286 EXCEPTION
287 
288     WHEN FND_API.G_EXC_ERROR THEN
289 
290         x_return_status := FND_API.G_RET_STS_ERROR;
291 
292         --  Get message count and data
293 
294         OE_MSG_PUB.Count_And_Get
295         (   p_count                       => x_msg_count
296         ,   p_data                        => x_msg_data
297         );
298 
299     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
300 
301         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
302 
303         --  Get message count and data
304 
305         OE_MSG_PUB.Count_And_Get
306         (   p_count                       => x_msg_count
307         ,   p_data                        => x_msg_data
308         );
309 
310     WHEN OTHERS THEN
311 
312         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
313 
314         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
315         THEN
316             OE_MSG_PUB.Add_Exc_Msg
317             (   G_PKG_NAME
318             ,   'Default_Attributes'
319             );
320         END IF;
321 
322         --  Get message count and data
323 
324         OE_MSG_PUB.Count_And_Get
325         (   p_count                       => x_msg_count
326         ,   p_data                        => x_msg_data
327         );
328 
329 END Default_Attributes;
330 
331 --  Procedure   :   Change_Attribute
332 --
333 
334 PROCEDURE Change_Attribute
335 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
336 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
337 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
338 ,   p_agreement_id                  IN  NUMBER
339 ,   p_attr_id                       IN  NUMBER
340 ,   p_attr_value                    IN  VARCHAR2
341 ,   p_attribute1                    IN  VARCHAR2
342 ,   p_attribute10                   IN  VARCHAR2
343 ,   p_attribute11                   IN  VARCHAR2
344 ,   p_attribute12                   IN  VARCHAR2
345 ,   p_attribute13                   IN  VARCHAR2
346 ,   p_attribute14                   IN  VARCHAR2
347 ,   p_attribute15                   IN  VARCHAR2
348 ,   p_attribute2                    IN  VARCHAR2
349 ,   p_attribute3                    IN  VARCHAR2
350 ,   p_attribute4                    IN  VARCHAR2
351 ,   p_attribute5                    IN  VARCHAR2
352 ,   p_attribute6                    IN  VARCHAR2
353 ,   p_attribute7                    IN  VARCHAR2
354 ,   p_attribute8                    IN  VARCHAR2
355 ,   p_attribute9                    IN  VARCHAR2
356 ,   p_context                       IN  VARCHAR2
357 ,   x_accounting_rule_id            OUT NOCOPY /* file.sql.39 change */ NUMBER
358 ,   x_agreement_contact_id          OUT NOCOPY /* file.sql.39 change */ NUMBER
359 ,   x_agreement_id                  OUT NOCOPY /* file.sql.39 change */ NUMBER
360 ,   x_agreement_num                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
361 ,   x_agreement_type_code           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
362 ,   x_attribute1                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
363 ,   x_attribute10                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
364 ,   x_attribute11                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
365 ,   x_attribute12                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
366 ,   x_attribute13                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
367 ,   x_attribute14                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
368 ,   x_attribute15                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
369 ,   x_attribute2                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
370 ,   x_attribute3                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
371 ,   x_attribute4                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
372 ,   x_attribute5                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
373 ,   x_attribute6                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
374 ,   x_attribute7                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
375 ,   x_attribute8                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
376 ,   x_attribute9                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
377 ,   x_context                       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
378 ,   x_sold_to_org_id                OUT NOCOPY /* file.sql.39 change */ NUMBER
379 ,   x_end_date_active               OUT NOCOPY /* file.sql.39 change */ DATE
380 ,   x_freight_terms_code            OUT NOCOPY /* file.sql.39 change */ VARCHAR2
381 ,   x_invoice_contact_id            OUT NOCOPY /* file.sql.39 change */ NUMBER
382 ,   x_invoice_to_org_id        	    OUT NOCOPY /* file.sql.39 change */ NUMBER
383 ,   x_invoicing_rule_id             OUT NOCOPY /* file.sql.39 change */ NUMBER
384 ,   x_name                          OUT NOCOPY /* file.sql.39 change */ VARCHAR2
385 ,   x_override_arule_flag           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
386 ,   x_override_irule_flag           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
387 ,   x_price_list_id                 OUT NOCOPY /* file.sql.39 change */ NUMBER
388 ,   x_purchase_order_num            OUT NOCOPY /* file.sql.39 change */ VARCHAR2
389 ,   x_revision                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
390 ,   x_revision_date                 OUT NOCOPY /* file.sql.39 change */ DATE
391 ,   x_revision_reason_code          OUT NOCOPY /* file.sql.39 change */ VARCHAR2
392 ,   x_salesrep_id                   OUT NOCOPY /* file.sql.39 change */ NUMBER
393 ,   x_ship_method_code              OUT NOCOPY /* file.sql.39 change */ VARCHAR2
394 ,   x_signature_date                OUT NOCOPY /* file.sql.39 change */ DATE
395 ,   x_start_date_active             OUT NOCOPY /* file.sql.39 change */ DATE
396 ,   x_term_id                       OUT NOCOPY /* file.sql.39 change */ NUMBER
397 ,   x_accounting_rule               OUT NOCOPY /* file.sql.39 change */ VARCHAR2
398 ,   x_agreement_contact             OUT NOCOPY /* file.sql.39 change */ VARCHAR2
399 ,   x_agreement                     OUT NOCOPY /* file.sql.39 change */ VARCHAR2
400 ,   x_agreement_type                OUT NOCOPY /* file.sql.39 change */ VARCHAR2
401 ,   x_customer                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
402 ,   x_freight_terms                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
403 ,   x_invoice_contact               OUT NOCOPY /* file.sql.39 change */ VARCHAR2
404 ,   x_invoice_to_site_use           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
405 ,   x_invoicing_rule                OUT NOCOPY /* file.sql.39 change */ VARCHAR2
406 ,   x_override_arule                OUT NOCOPY /* file.sql.39 change */ VARCHAR2
407 ,   x_override_irule                OUT NOCOPY /* file.sql.39 change */ VARCHAR2
408 ,   x_price_list                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
409 ,   x_revision_reason               OUT NOCOPY /* file.sql.39 change */ VARCHAR2
410 ,   x_salesrep                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
411 ,   x_ship_method                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
412 ,   x_term                          OUT NOCOPY /* file.sql.39 change */ VARCHAR2
413 ,   x_agreement_source_code         OUT NOCOPY /* file.sql.39 change */ VARCHAR2 --added by rchellam for OKC
414 ,   x_orig_system_agr_id            OUT NOCOPY /* file.sql.39 change */ NUMBER --added by rchellam for OKC
415 ,   x_agreement_source              OUT NOCOPY /* file.sql.39 change */ VARCHAR2 --added by rchellam for OKC
416 ,   x_invoice_to_customer_id        OUT NOCOPY NUMBER -- Added for bug#4029589
417 )
418 IS
419 l_Agreement_rec               OE_Pricing_Cont_PUB.Agreement_Rec_Type;
420 l_old_Agreement_rec           OE_Pricing_Cont_PUB.Agreement_Rec_Type;
421 l_Agreement_val_rec           OE_Pricing_Cont_PUB.Agreement_Val_Rec_Type;
422 l_control_rec                 oe_globals.Control_Rec_Type;
423 l_return_status               VARCHAR2(1);
424 l_x_Contract_rec              OE_Pricing_Cont_PUB.Contract_Rec_Type;
425 l_x_Agreement_rec             OE_Pricing_Cont_PUB.Agreement_Rec_Type;
426 l_x_Price_LHeader_rec         OE_Price_List_PUB.Price_List_Rec_Type;
427 l_x_Discount_Header_rec       OE_Pricing_Cont_PUB.Discount_Header_Rec_Type;
428 l_x_Price_LLine_rec           OE_Price_List_PUB.Price_List_Line_Rec_Type;
429 l_x_Price_LLine_tbl           OE_Price_List_PUB.Price_List_Line_Tbl_Type;
430 l_x_Discount_Cust_rec         OE_Pricing_Cont_PUB.Discount_Cust_Rec_Type;
431 l_x_Discount_Cust_tbl         OE_Pricing_Cont_PUB.Discount_Cust_Tbl_Type;
432 l_x_Discount_Line_rec         OE_Pricing_Cont_PUB.Discount_Line_Rec_Type;
433 l_x_Discount_Line_tbl         OE_Pricing_Cont_PUB.Discount_Line_Tbl_Type;
434 l_x_Price_Break_rec           OE_Pricing_Cont_PUB.Price_Break_Rec_Type;
435 l_x_Price_Break_tbl           OE_Pricing_Cont_PUB.Price_Break_Tbl_Type;
436 BEGIN
437 
438     oe_debug_pub.add('Entering OE_OE_Form_Agreement.Change_Attribute');
439 
440     --  Set control flags.
441 
442     l_control_rec.controlled_operation := TRUE;
443     l_control_rec.change_attributes    := TRUE;
444 
445     l_control_rec.default_attributes   := FALSE;
446     l_control_rec.validate_entity      := FALSE;
447     l_control_rec.write_to_DB          := FALSE;
448     l_control_rec.process              := FALSE;
449 
450     --  Instruct API to retain its caches
451 
452     l_control_rec.clear_api_cache      := FALSE;
453     l_control_rec.clear_api_requests   := FALSE;
454 
455     --  Read Agreement from cache
456 
457     l_Agreement_rec := Get_Agreement
458     (   p_db_record                   => FALSE
459     ,   p_agreement_id                => p_agreement_id
460     );
461 
462     l_old_Agreement_rec            := l_Agreement_rec;
463 
464     IF p_attr_id = OE_Agreement_Util.G_ACCOUNTING_RULE THEN
465         l_Agreement_rec.accounting_rule_id := TO_NUMBER(p_attr_value);
466     ELSIF p_attr_id = OE_Agreement_Util.G_AGREEMENT_CONTACT THEN
467         l_Agreement_rec.agreement_contact_id := TO_NUMBER(p_attr_value);
468     ELSIF p_attr_id = OE_Agreement_Util.G_AGREEMENT THEN
469         l_Agreement_rec.agreement_id := TO_NUMBER(p_attr_value);
470     ELSIF p_attr_id = OE_Agreement_Util.G_AGREEMENT_NUM THEN
471         l_Agreement_rec.agreement_num := p_attr_value;
472     ELSIF p_attr_id = OE_Agreement_Util.G_AGREEMENT_TYPE THEN
473         l_Agreement_rec.agreement_type_code := p_attr_value;
474     ELSIF p_attr_id = OE_Agreement_Util.G_CUSTOMER THEN
475 /*        l_Agreement_rec.customer_id := TO_NUMBER(p_attr_value); */
476         l_Agreement_rec.sold_to_org_id := TO_NUMBER(p_attr_value);
477     ELSIF p_attr_id = OE_Agreement_Util.G_END_DATE_ACTIVE THEN
478         l_Agreement_rec.end_date_active := TO_DATE(p_attr_value,'DD/MM/YYYY');
479     ELSIF p_attr_id = OE_Agreement_Util.G_FREIGHT_TERMS THEN
480         l_Agreement_rec.freight_terms_code := p_attr_value;
481     ELSIF p_attr_id = OE_Agreement_Util.G_INVOICE_CONTACT THEN
482         l_Agreement_rec.invoice_contact_id := TO_NUMBER(p_attr_value);
483     ELSIF p_attr_id = OE_Agreement_Util.G_INVOICE_TO_SITE_USE THEN
484 /*    ELSIF p_attr_id = OE_Agreement_Util.G_INVOICE_TO_ORG THEN */
485 /*        l_Agreement_rec.invoice_to_site_use_id := TO_NUMBER(p_attr_value); */
486         l_Agreement_rec.invoice_to_org_id := TO_NUMBER(p_attr_value);
487     ELSIF p_attr_id = OE_Agreement_Util.G_INVOICING_RULE THEN
488         l_Agreement_rec.invoicing_rule_id := TO_NUMBER(p_attr_value);
489     ELSIF p_attr_id = OE_Agreement_Util.G_NAME THEN
490         l_Agreement_rec.name := p_attr_value;
491     ELSIF p_attr_id = OE_Agreement_Util.G_OVERRIDE_ARULE THEN
492         l_Agreement_rec.override_arule_flag := p_attr_value;
493     ELSIF p_attr_id = OE_Agreement_Util.G_OVERRIDE_IRULE THEN
494         l_Agreement_rec.override_irule_flag := p_attr_value;
495     ELSIF p_attr_id = OE_Agreement_Util.G_PRICE_LIST THEN
496         l_Agreement_rec.price_list_id := TO_NUMBER(p_attr_value);
497     ELSIF p_attr_id = OE_Agreement_Util.G_PURCHASE_ORDER_NUM THEN
498         l_Agreement_rec.purchase_order_num := p_attr_value;
499     ELSIF p_attr_id = OE_Agreement_Util.G_REVISION THEN
500         l_Agreement_rec.revision := p_attr_value;
501     ELSIF p_attr_id = OE_Agreement_Util.G_REVISION_DATE THEN
502         l_Agreement_rec.revision_date := TO_DATE(p_attr_value,'DD/MM/YYYY');
503     ELSIF p_attr_id = OE_Agreement_Util.G_REVISION_REASON THEN
504         l_Agreement_rec.revision_reason_code := p_attr_value;
505     ELSIF p_attr_id = OE_Agreement_Util.G_SALESREP THEN
506         l_Agreement_rec.salesrep_id := TO_NUMBER(p_attr_value);
507     ELSIF p_attr_id = OE_Agreement_Util.G_SHIP_METHOD THEN
508         l_Agreement_rec.ship_method_code := p_attr_value;
509     ELSIF p_attr_id = OE_Agreement_Util.G_SIGNATURE_DATE THEN
510         l_Agreement_rec.signature_date := TO_DATE(p_attr_value,'DD/MM/YYYY');
511     ELSIF p_attr_id = OE_Agreement_Util.G_START_DATE_ACTIVE THEN
512         l_Agreement_rec.start_date_active := TO_DATE(p_attr_value,'DD/MM/YYYY');
513     ELSIF p_attr_id = OE_Agreement_Util.G_TERM THEN
514         l_Agreement_rec.term_id := TO_NUMBER(p_attr_value);
515     --Begin code added by rchellam for OKC
516     ELSIF p_attr_id = OE_Agreement_Util.G_AGREEMENT_SOURCE THEN
517         l_Agreement_rec.agreement_source_code := p_attr_value;
518     ELSIF p_attr_id = OE_Agreement_Util.G_ORIG_SYSTEM_AGR THEN
519         l_Agreement_rec.orig_system_agr_id := TO_NUMBER(p_attr_value);
520     --End code added by rchellam for OKC
521     -- Added for bug#4029589
522     ELSIF p_attr_id = OE_Agreement_Util.G_INVOICE_TO_CUSTOMER_ID THEN
523         l_Agreement_rec.invoice_to_customer_id := TO_NUMBER(p_attr_value);
524     ELSIF p_attr_id = OE_Agreement_Util.G_ATTRIBUTE1
525     OR     p_attr_id = OE_Agreement_Util.G_ATTRIBUTE10
526     OR     p_attr_id = OE_Agreement_Util.G_ATTRIBUTE11
527     OR     p_attr_id = OE_Agreement_Util.G_ATTRIBUTE12
528     OR     p_attr_id = OE_Agreement_Util.G_ATTRIBUTE13
529     OR     p_attr_id = OE_Agreement_Util.G_ATTRIBUTE14
530     OR     p_attr_id = OE_Agreement_Util.G_ATTRIBUTE15
531     OR     p_attr_id = OE_Agreement_Util.G_ATTRIBUTE2
532     OR     p_attr_id = OE_Agreement_Util.G_ATTRIBUTE3
533     OR     p_attr_id = OE_Agreement_Util.G_ATTRIBUTE4
534     OR     p_attr_id = OE_Agreement_Util.G_ATTRIBUTE5
535     OR     p_attr_id = OE_Agreement_Util.G_ATTRIBUTE6
536     OR     p_attr_id = OE_Agreement_Util.G_ATTRIBUTE7
537     OR     p_attr_id = OE_Agreement_Util.G_ATTRIBUTE8
538     OR     p_attr_id = OE_Agreement_Util.G_ATTRIBUTE9
539     OR     p_attr_id = OE_Agreement_Util.G_CONTEXT
540     THEN
541 
542         l_Agreement_rec.attribute1     := p_attribute1;
543         l_Agreement_rec.attribute10    := p_attribute10;
544         l_Agreement_rec.attribute11    := p_attribute11;
545         l_Agreement_rec.attribute12    := p_attribute12;
546         l_Agreement_rec.attribute13    := p_attribute13;
547         l_Agreement_rec.attribute14    := p_attribute14;
548         l_Agreement_rec.attribute15    := p_attribute15;
549         l_Agreement_rec.attribute2     := p_attribute2;
550         l_Agreement_rec.attribute3     := p_attribute3;
551         l_Agreement_rec.attribute4     := p_attribute4;
552         l_Agreement_rec.attribute5     := p_attribute5;
553         l_Agreement_rec.attribute6     := p_attribute6;
554         l_Agreement_rec.attribute7     := p_attribute7;
555         l_Agreement_rec.attribute8     := p_attribute8;
556         l_Agreement_rec.attribute9     := p_attribute9;
557         l_Agreement_rec.context        := p_context;
558 
559     ELSE
560 
561         --  Unexpected error, unrecognized attribute
562 
563         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
564         THEN
565             OE_MSG_PUB.Add_Exc_Msg
566             (   G_PKG_NAME
567             ,   'Change_Attribute'
568             ,   'Unrecognized attribute'
569             );
570         END IF;
571 
572         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
573 
574     END IF;
575 
576     --  Set Operation.
577 
578     IF FND_API.To_Boolean(l_Agreement_rec.db_flag) THEN
579         l_Agreement_rec.operation := oe_globals.G_OPR_UPDATE;
580     ELSE
581         l_Agreement_rec.operation := oe_globals.G_OPR_CREATE;
582     END IF;
583 
584     --  Call OE_Pricing_Cont_PVT.Process_Pricing_Cont
585 
586     OE_Pricing_Cont_PVT.Process_Pricing_Cont
587     (   p_api_version_number          => 1.0
588     ,   p_init_msg_list               => FND_API.G_TRUE
589     ,   p_validation_level            => FND_API.G_VALID_LEVEL_NONE
590     ,   x_return_status               => l_return_status
591     ,   x_msg_count                   => x_msg_count
592     ,   x_msg_data                    => x_msg_data
593     ,   p_control_rec                 => l_control_rec
594     ,   p_Agreement_rec               => l_Agreement_rec
595     ,   p_old_Agreement_rec           => l_old_Agreement_rec
596     ,   x_Contract_rec                => l_x_Contract_rec
597     ,   x_Agreement_rec               => l_x_Agreement_rec
598     ,   x_Price_LHeader_rec           => l_x_Price_LHeader_rec
599     ,   x_Discount_Header_rec         => l_x_Discount_Header_rec
600     ,   x_Price_LLine_tbl             => l_x_Price_LLine_tbl
601     ,   x_Discount_Cust_tbl           => l_x_Discount_Cust_tbl
602     ,   x_Discount_Line_tbl           => l_x_Discount_Line_tbl
603     ,   x_Price_Break_tbl             => l_x_Price_Break_tbl
604     );
605 
606     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
607         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
608     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
609         RAISE FND_API.G_EXC_ERROR;
610     END IF;
611 
612 
613     --  Init OUT parameters to missing.
614 
615     x_accounting_rule_id           := FND_API.G_MISS_NUM;
616     x_agreement_contact_id         := FND_API.G_MISS_NUM;
617     x_agreement_id                 := FND_API.G_MISS_NUM;
618     x_agreement_num                := FND_API.G_MISS_CHAR;
619     x_agreement_type_code          := FND_API.G_MISS_CHAR;
620     x_attribute1                   := FND_API.G_MISS_CHAR;
621     x_attribute10                  := FND_API.G_MISS_CHAR;
622     x_attribute11                  := FND_API.G_MISS_CHAR;
623     x_attribute12                  := FND_API.G_MISS_CHAR;
624     x_attribute13                  := FND_API.G_MISS_CHAR;
625     x_attribute14                  := FND_API.G_MISS_CHAR;
626     x_attribute15                  := FND_API.G_MISS_CHAR;
627     x_attribute2                   := FND_API.G_MISS_CHAR;
628     x_attribute3                   := FND_API.G_MISS_CHAR;
629     x_attribute4                   := FND_API.G_MISS_CHAR;
630     x_attribute5                   := FND_API.G_MISS_CHAR;
631     x_attribute6                   := FND_API.G_MISS_CHAR;
632     x_attribute7                   := FND_API.G_MISS_CHAR;
633     x_attribute8                   := FND_API.G_MISS_CHAR;
634     x_attribute9                   := FND_API.G_MISS_CHAR;
635     x_context                      := FND_API.G_MISS_CHAR;
636     x_sold_to_org_id                  := FND_API.G_MISS_NUM;
637     x_end_date_active              := FND_API.G_MISS_DATE;
638     x_freight_terms_code           := FND_API.G_MISS_CHAR;
639     x_invoice_contact_id           := FND_API.G_MISS_NUM;
640     x_invoice_to_org_id       		:= FND_API.G_MISS_NUM;
641     x_invoicing_rule_id            := FND_API.G_MISS_NUM;
642     x_name                         := FND_API.G_MISS_CHAR;
643     x_override_arule_flag          := FND_API.G_MISS_CHAR;
644     x_override_irule_flag          := FND_API.G_MISS_CHAR;
645     x_price_list_id                := FND_API.G_MISS_NUM;
646     x_purchase_order_num           := FND_API.G_MISS_CHAR;
647     x_revision                     := FND_API.G_MISS_CHAR;
648     x_revision_date                := FND_API.G_MISS_DATE;
649     x_revision_reason_code         := FND_API.G_MISS_CHAR;
650     x_salesrep_id                  := FND_API.G_MISS_NUM;
651     x_ship_method_code             := FND_API.G_MISS_CHAR;
652     x_signature_date               := FND_API.G_MISS_DATE;
653     x_start_date_active            := FND_API.G_MISS_DATE;
654     x_term_id                      := FND_API.G_MISS_NUM;
655     x_accounting_rule              := FND_API.G_MISS_CHAR;
656     x_agreement_contact            := FND_API.G_MISS_CHAR;
657     x_agreement                    := FND_API.G_MISS_CHAR;
658     x_agreement_type               := FND_API.G_MISS_CHAR;
659     x_customer                     := FND_API.G_MISS_CHAR;
660     x_freight_terms                := FND_API.G_MISS_CHAR;
661     x_invoice_contact              := FND_API.G_MISS_CHAR;
662     x_invoice_to_site_use          := FND_API.G_MISS_CHAR;
663 /*    x_invoice_org          		:= FND_API.G_MISS_CHAR; */
664     x_invoicing_rule               := FND_API.G_MISS_CHAR;
665     x_override_arule               := FND_API.G_MISS_CHAR;
666     x_override_irule               := FND_API.G_MISS_CHAR;
667     x_price_list                   := FND_API.G_MISS_CHAR;
668     x_revision_reason              := FND_API.G_MISS_CHAR;
669     x_salesrep                     := FND_API.G_MISS_CHAR;
670     x_ship_method                  := FND_API.G_MISS_CHAR;
671     x_term                         := FND_API.G_MISS_CHAR;
672     x_agreement_source_code        := FND_API.G_MISS_CHAR;
673                                         --added by rchellam for OKC
674     x_orig_system_agr_id           := FND_API.G_MISS_NUM;
675                                         --added by rchellam for OKC
676     x_agreement_source             := FND_API.G_MISS_CHAR;
677                                         --added by rchellam for OKC
678     x_invoice_to_customer_id       := FND_API.G_MISS_NUM;
679                                         -- Added for bug#4029589
680 
681     --  Load display out parameters if any
682 
683     l_Agreement_val_rec := OE_Agreement_Util.Get_Values
684     (   p_Agreement_rec               => l_x_Agreement_rec
685     ,   p_old_Agreement_rec           => l_Agreement_rec
686     );
687 
688     --  Return changed attributes.
689 
690     IF NOT oe_globals.Equal(l_x_Agreement_rec.accounting_rule_id,
691                             l_Agreement_rec.accounting_rule_id)
692     THEN
693         x_accounting_rule_id := l_x_Agreement_rec.accounting_rule_id;
694         x_accounting_rule := l_Agreement_val_rec.accounting_rule;
695     END IF;
696 
697     IF NOT oe_globals.Equal(l_x_Agreement_rec.agreement_contact_id,
698                             l_Agreement_rec.agreement_contact_id)
699     THEN
700         x_agreement_contact_id := l_x_Agreement_rec.agreement_contact_id;
701         x_agreement_contact := l_Agreement_val_rec.agreement_contact;
702     END IF;
703 
704     IF NOT oe_globals.Equal(l_x_Agreement_rec.agreement_id,
705                             l_Agreement_rec.agreement_id)
706     THEN
707         x_agreement_id := l_x_Agreement_rec.agreement_id;
708         x_agreement := l_Agreement_val_rec.agreement;
709     END IF;
710 
711     IF NOT oe_globals.Equal(l_x_Agreement_rec.agreement_num,
712                             l_Agreement_rec.agreement_num)
713     THEN
714         x_agreement_num := l_x_Agreement_rec.agreement_num;
715     END IF;
716 
717     IF NOT oe_globals.Equal(l_x_Agreement_rec.agreement_type_code,
718                             l_Agreement_rec.agreement_type_code)
719     THEN
720         x_agreement_type_code := l_x_Agreement_rec.agreement_type_code;
721         x_agreement_type := l_Agreement_val_rec.agreement_type;
722     END IF;
723 
724     IF NOT oe_globals.Equal(l_x_Agreement_rec.attribute1,
725                             l_Agreement_rec.attribute1)
726     THEN
727         x_attribute1 := l_x_Agreement_rec.attribute1;
728     END IF;
729 
730     IF NOT oe_globals.Equal(l_x_Agreement_rec.attribute10,
731                             l_Agreement_rec.attribute10)
732     THEN
733         x_attribute10 := l_x_Agreement_rec.attribute10;
734     END IF;
735 
736     IF NOT oe_globals.Equal(l_x_Agreement_rec.attribute11,
737                             l_Agreement_rec.attribute11)
738     THEN
739         x_attribute11 := l_x_Agreement_rec.attribute11;
740     END IF;
741 
742     IF NOT oe_globals.Equal(l_x_Agreement_rec.attribute12,
743                             l_Agreement_rec.attribute12)
744     THEN
745         x_attribute12 := l_x_Agreement_rec.attribute12;
746     END IF;
747 
748     IF NOT oe_globals.Equal(l_x_Agreement_rec.attribute13,
749                             l_Agreement_rec.attribute13)
750     THEN
751         x_attribute13 := l_x_Agreement_rec.attribute13;
752     END IF;
753 
754     IF NOT oe_globals.Equal(l_x_Agreement_rec.attribute14,
755                             l_Agreement_rec.attribute14)
756     THEN
757         x_attribute14 := l_x_Agreement_rec.attribute14;
758     END IF;
759 
760     IF NOT oe_globals.Equal(l_x_Agreement_rec.attribute15,
761                             l_Agreement_rec.attribute15)
762     THEN
763         x_attribute15 := l_x_Agreement_rec.attribute15;
764     END IF;
765 
766     IF NOT oe_globals.Equal(l_x_Agreement_rec.attribute2,
767                             l_Agreement_rec.attribute2)
768     THEN
769         x_attribute2 := l_x_Agreement_rec.attribute2;
770     END IF;
771 
772     IF NOT oe_globals.Equal(l_x_Agreement_rec.attribute3,
773                             l_Agreement_rec.attribute3)
774     THEN
775         x_attribute3 := l_x_Agreement_rec.attribute3;
776     END IF;
777 
778     IF NOT oe_globals.Equal(l_x_Agreement_rec.attribute4,
779                             l_Agreement_rec.attribute4)
780     THEN
781         x_attribute4 := l_x_Agreement_rec.attribute4;
782     END IF;
783 
784     IF NOT oe_globals.Equal(l_x_Agreement_rec.attribute5,
785                             l_Agreement_rec.attribute5)
786     THEN
787         x_attribute5 := l_x_Agreement_rec.attribute5;
788     END IF;
789 
790     IF NOT oe_globals.Equal(l_x_Agreement_rec.attribute6,
791                             l_Agreement_rec.attribute6)
792     THEN
793         x_attribute6 := l_x_Agreement_rec.attribute6;
794     END IF;
795 
796     IF NOT oe_globals.Equal(l_x_Agreement_rec.attribute7,
797                             l_Agreement_rec.attribute7)
798     THEN
799         x_attribute7 := l_x_Agreement_rec.attribute7;
800     END IF;
801 
802     IF NOT oe_globals.Equal(l_x_Agreement_rec.attribute8,
803                             l_Agreement_rec.attribute8)
804     THEN
805         x_attribute8 := l_x_Agreement_rec.attribute8;
806     END IF;
807 
808     IF NOT oe_globals.Equal(l_x_Agreement_rec.attribute9,
809                             l_Agreement_rec.attribute9)
810     THEN
811         x_attribute9 := l_x_Agreement_rec.attribute9;
812     END IF;
813 
814     IF NOT oe_globals.Equal(l_x_Agreement_rec.context,
815                             l_Agreement_rec.context)
816     THEN
817         x_context := l_x_Agreement_rec.context;
818     END IF;
819 
820 /*
821     IF NOT oe_globals.Equal(l_x_Agreement_rec.customer_id,
822                             l_Agreement_rec.customer_id)
823     THEN
824         x_customer_id := l_x_Agreement_rec.customer_id;
825         x_customer := l_Agreement_val_rec.customer;
826     END IF;
827 */
828 
829     IF NOT oe_globals.Equal(l_x_Agreement_rec.sold_to_org_id,
830                             l_Agreement_rec.sold_to_org_id)
831     THEN
832         x_sold_to_org_id := l_x_Agreement_rec.sold_to_org_id;
833         x_customer := l_Agreement_val_rec.customer;
834     END IF;
835 
836     IF NOT oe_globals.Equal(l_x_Agreement_rec.end_date_active,
837                             l_Agreement_rec.end_date_active)
838     THEN
839         x_end_date_active := l_x_Agreement_rec.end_date_active;
840     END IF;
841 
842     IF NOT oe_globals.Equal(l_x_Agreement_rec.freight_terms_code,
843                             l_Agreement_rec.freight_terms_code)
844     THEN
845         x_freight_terms_code := l_x_Agreement_rec.freight_terms_code;
846         x_freight_terms := l_Agreement_val_rec.freight_terms;
847     END IF;
848 
849     IF NOT oe_globals.Equal(l_x_Agreement_rec.invoice_contact_id,
850                             l_Agreement_rec.invoice_contact_id)
851     THEN
852         x_invoice_contact_id := l_x_Agreement_rec.invoice_contact_id;
853         x_invoice_contact := l_Agreement_val_rec.invoice_contact;
854     END IF;
855 
856 /*    IF NOT oe_globals.Equal(l_x_Agreement_rec.invoice_to_site_use_id,
857                             l_Agreement_rec.invoice_to_site_use_id)
858 */
859     IF NOT oe_globals.Equal(l_x_Agreement_rec.invoice_to_org_id,
860                             l_Agreement_rec.invoice_to_org_id)
861     THEN
862 /*   x_invoice_to_site_use_id := l_x_Agreement_rec.invoice_to_site_use_id;*/
863         x_invoice_to_org_id := l_x_Agreement_rec.invoice_to_org_id;
864 
865         x_invoice_to_site_use := l_Agreement_val_rec.invoice_to_site_use;
866 /*        x_invoice_to_org := l_Agreement_val_rec.invoice_to_org; */
867     END IF;
868 
869     IF NOT oe_globals.Equal(l_x_Agreement_rec.invoicing_rule_id,
870                             l_Agreement_rec.invoicing_rule_id)
871     THEN
872         x_invoicing_rule_id := l_x_Agreement_rec.invoicing_rule_id;
873         x_invoicing_rule := l_Agreement_val_rec.invoicing_rule;
874     END IF;
875 
876     IF NOT oe_globals.Equal(l_x_Agreement_rec.name,
877                             l_Agreement_rec.name)
878     THEN
879         x_name := l_x_Agreement_rec.name;
880     END IF;
881 
882     IF NOT oe_globals.Equal(l_x_Agreement_rec.override_arule_flag,
883                             l_Agreement_rec.override_arule_flag)
884     THEN
885         x_override_arule_flag := l_x_Agreement_rec.override_arule_flag;
886         x_override_arule := l_Agreement_val_rec.override_arule;
887     END IF;
888 
889     IF NOT oe_globals.Equal(l_x_Agreement_rec.override_irule_flag,
890                             l_Agreement_rec.override_irule_flag)
891     THEN
892         x_override_irule_flag := l_x_Agreement_rec.override_irule_flag;
893         x_override_irule := l_Agreement_val_rec.override_irule;
894     END IF;
895 
896     IF NOT oe_globals.Equal(l_x_Agreement_rec.price_list_id,
897                             l_Agreement_rec.price_list_id)
898     THEN
899         x_price_list_id := l_x_Agreement_rec.price_list_id;
900         x_price_list := l_Agreement_val_rec.price_list;
901     END IF;
902 
903     IF NOT oe_globals.Equal(l_x_Agreement_rec.purchase_order_num,
904                             l_Agreement_rec.purchase_order_num)
905     THEN
906         x_purchase_order_num := l_x_Agreement_rec.purchase_order_num;
907     END IF;
908 
909     IF NOT oe_globals.Equal(l_x_Agreement_rec.revision,
910                             l_Agreement_rec.revision)
911     THEN
912         x_revision := l_x_Agreement_rec.revision;
913     END IF;
914 
915     IF NOT oe_globals.Equal(l_x_Agreement_rec.revision_date,
916                             l_Agreement_rec.revision_date)
917     THEN
918         x_revision_date := l_x_Agreement_rec.revision_date;
919     END IF;
920 
921     IF NOT oe_globals.Equal(l_x_Agreement_rec.revision_reason_code,
922                             l_Agreement_rec.revision_reason_code)
923     THEN
924         x_revision_reason_code := l_x_Agreement_rec.revision_reason_code;
925         x_revision_reason := l_Agreement_val_rec.revision_reason;
926     END IF;
927 
928     IF NOT oe_globals.Equal(l_x_Agreement_rec.salesrep_id,
929                             l_Agreement_rec.salesrep_id)
930     THEN
931         x_salesrep_id := l_x_Agreement_rec.salesrep_id;
932         x_salesrep := l_Agreement_val_rec.salesrep;
933     END IF;
934 
935     IF NOT oe_globals.Equal(l_x_Agreement_rec.ship_method_code,
936                             l_Agreement_rec.ship_method_code)
937     THEN
938         x_ship_method_code := l_x_Agreement_rec.ship_method_code;
939         x_ship_method := l_Agreement_val_rec.ship_method;
940     END IF;
941 
942     IF NOT oe_globals.Equal(l_x_Agreement_rec.signature_date,
943                             l_Agreement_rec.signature_date)
944     THEN
945         x_signature_date := l_x_Agreement_rec.signature_date;
946     END IF;
947 
948     IF NOT oe_globals.Equal(l_x_Agreement_rec.start_date_active,
949                             l_Agreement_rec.start_date_active)
950     THEN
951         x_start_date_active := l_x_Agreement_rec.start_date_active;
952     END IF;
953 
954     IF NOT oe_globals.Equal(l_x_Agreement_rec.term_id,
955                             l_Agreement_rec.term_id)
956     THEN
957         x_term_id := l_x_Agreement_rec.term_id;
958         x_term := l_Agreement_val_rec.term;
959     END IF;
960 
961     --Begin code added by rchellam for OKC
962     IF NOT oe_globals.Equal(l_x_Agreement_rec.agreement_source_code,
963                             l_Agreement_rec.agreement_source_code)
964     THEN
965         x_agreement_source_code := l_x_Agreement_rec.agreement_source_code;
966         x_agreement_source := l_Agreement_val_rec.agreement_source;
967     END IF;
968 
969     IF NOT oe_globals.Equal(l_x_Agreement_rec.orig_system_agr_id,
970                             l_Agreement_rec.orig_system_agr_id)
971     THEN
972         x_orig_system_agr_id := l_x_Agreement_rec.orig_system_agr_id;
973     END IF;
974     --End code added by rchellam for OKC
975 
976     -- Added for bug#4029589
977     IF NOT oe_globals.Equal(l_x_Agreement_rec.invoice_to_customer_id,
978                             l_Agreement_rec.invoice_to_customer_id)
979     THEN
980         x_invoice_to_customer_id := l_x_Agreement_rec.invoice_to_customer_id;
981     END IF;
982     --  Write to cache.
983 
984     Write_Agreement
985     (   p_Agreement_rec               => l_x_Agreement_rec
986     );
987 
988 
989    /* Added following code to raise warning message for Bug-2106110 */
990 
991       If p_attr_id = OE_Agreement_Util.G_NAME
992         AND  l_old_Agreement_rec.name is not NULL Then
993         If l_old_Agreement_rec.name <> p_attr_value Then
994           FND_MESSAGE.SET_NAME('QP','QP_AGR_NAME_CHG');
995           OE_MSG_PUB.Add;
996          END IF;
997       End If;
998 /* End of code for Bug-2106110 */
999 
1000     --  Set return status.
1001 
1002     x_return_status := FND_API.G_RET_STS_SUCCESS;
1003 
1004     --  Get message count and data
1005 
1006     OE_MSG_PUB.Count_And_Get
1007     (   p_count                       => x_msg_count
1008     ,   p_data                        => x_msg_data
1009     );
1010 
1011     oe_debug_pub.add('Exiting OE_OE_Form_Agreement.Change_Attribute');
1012 
1013 EXCEPTION
1014 
1015     WHEN FND_API.G_EXC_ERROR THEN
1016 
1017         x_return_status := FND_API.G_RET_STS_ERROR;
1018 
1019         --  Get message count and data
1020 
1021         OE_MSG_PUB.Count_And_Get
1022         (   p_count                       => x_msg_count
1023         ,   p_data                        => x_msg_data
1024         );
1025 
1026     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1027 
1028         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1029 
1030         --  Get message count and data
1031 
1032         OE_MSG_PUB.Count_And_Get
1033         (   p_count                       => x_msg_count
1034         ,   p_data                        => x_msg_data
1035         );
1036 
1037     WHEN OTHERS THEN
1038 
1039         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1040 
1041         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1042         THEN
1043             OE_MSG_PUB.Add_Exc_Msg
1044             (   G_PKG_NAME
1045             ,   'Change_Attribute'
1046             );
1047         END IF;
1048 
1049         --  Get message count and data
1050 
1051         OE_MSG_PUB.Count_And_Get
1052         (   p_count                       => x_msg_count
1053         ,   p_data                        => x_msg_data
1054         );
1055 
1056 END Change_Attribute;
1057 
1058 --  Procedure       Validate_And_Write
1059 --
1060 
1061 PROCEDURE Validate_And_Write
1062 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1063 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1064 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1065 ,   p_agreement_id                  IN  NUMBER
1066 ,   x_creation_date                 OUT NOCOPY /* file.sql.39 change */ DATE
1067 ,   x_created_by                    OUT NOCOPY /* file.sql.39 change */ NUMBER
1068 ,   x_last_update_date              OUT NOCOPY /* file.sql.39 change */ DATE
1069 ,   x_last_updated_by               OUT NOCOPY /* file.sql.39 change */ NUMBER
1070 ,   x_last_update_login             OUT NOCOPY /* file.sql.39 change */ NUMBER
1071 )
1072 IS
1073 l_Agreement_rec               OE_Pricing_Cont_PUB.Agreement_Rec_Type;
1074 l_old_Agreement_rec           OE_Pricing_Cont_PUB.Agreement_Rec_Type;
1075 l_control_rec                 oe_globals.Control_Rec_Type;
1076 l_return_status               VARCHAR2(1);
1077 l_x_Contract_rec              OE_Pricing_Cont_PUB.Contract_Rec_Type;
1078 l_x_Agreement_rec             OE_Pricing_Cont_PUB.Agreement_Rec_Type;
1079 l_x_Price_LHeader_rec         OE_Price_List_PUB.Price_List_Rec_Type;
1080 l_x_Discount_Header_rec       OE_Pricing_Cont_PUB.Discount_Header_Rec_Type;
1081 l_x_Price_LLine_rec           OE_Price_List_PUB.Price_List_Line_Rec_Type;
1082 l_x_Price_LLine_tbl           OE_Price_List_PUB.Price_List_Line_Tbl_Type;
1083 l_x_Discount_Cust_rec         OE_Pricing_Cont_PUB.Discount_Cust_Rec_Type;
1084 l_x_Discount_Cust_tbl         OE_Pricing_Cont_PUB.Discount_Cust_Tbl_Type;
1085 l_x_Discount_Line_rec         OE_Pricing_Cont_PUB.Discount_Line_Rec_Type;
1086 l_x_Discount_Line_tbl         OE_Pricing_Cont_PUB.Discount_Line_Tbl_Type;
1087 l_x_Price_Break_rec           OE_Pricing_Cont_PUB.Price_Break_Rec_Type;
1088 l_x_Price_Break_tbl           OE_Pricing_Cont_PUB.Price_Break_Tbl_Type;
1089 BEGIN
1090 
1091     oe_debug_pub.add('Entering OE_OE_Form_Agreement.Validate_And_Write');
1092 
1093     --  Set control flags.
1094 
1095     l_control_rec.controlled_operation := TRUE;
1096     l_control_rec.validate_entity      := TRUE;
1097     l_control_rec.write_to_DB          := TRUE;
1098 
1099     l_control_rec.default_attributes   := FALSE;
1100     l_control_rec.change_attributes    := FALSE;
1101     l_control_rec.process              := FALSE;
1102 
1103     --  Instruct API to retain its caches
1104 
1105     l_control_rec.clear_api_cache      := FALSE;
1106     l_control_rec.clear_api_requests   := FALSE;
1107 
1108     --  Read Agreement from cache
1109 
1110     l_old_Agreement_rec := Get_Agreement
1111     (   p_db_record                   => TRUE
1112     ,   p_agreement_id                => p_agreement_id
1113     );
1114 
1115     l_Agreement_rec := Get_Agreement
1116     (   p_db_record                   => FALSE
1117     ,   p_agreement_id                => p_agreement_id
1118     );
1119 
1120     --  Set Operation.
1121 
1122     IF FND_API.To_Boolean(l_Agreement_rec.db_flag) THEN
1123         l_Agreement_rec.operation := oe_globals.G_OPR_UPDATE;
1124     ELSE
1125         l_Agreement_rec.operation := oe_globals.G_OPR_CREATE;
1126     END IF;
1127 
1128 
1129 
1130     --Revision Control S
1131     IF ( l_old_agreement_rec.revision <>  l_agreement_rec.revision
1132     and l_Agreement_rec.operation = oe_globals.G_OPR_UPDATE ) THEN
1133 
1134    select oe_agreements_s.nextval into l_agreement_rec.agreement_id from dual;
1135 
1136         l_Agreement_rec.operation := oe_globals.G_OPR_CREATE;
1137         l_Agreement_rec.db_flag := FND_API.G_FALSE;
1138   --OE_OE_Form_Contract.Create_Revision(l_agreement_rec.agreement_id);
1139     END IF;
1140     --Revision Control E
1141 
1142 
1143 
1144 
1145 
1146     --  Call OE_Pricing_Cont_PVT.Process_Pricing_Cont
1147 
1148 
1149     OE_Pricing_Cont_PVT.Process_Pricing_Cont
1150     (   p_api_version_number          => 1.0
1151     ,   p_init_msg_list               => FND_API.G_TRUE
1152     ,   x_return_status               => l_return_status
1153     ,   x_msg_count                   => x_msg_count
1154     ,   x_msg_data                    => x_msg_data
1155     ,   p_control_rec                 => l_control_rec
1156     ,   p_Agreement_rec               => l_Agreement_rec
1157     ,   p_old_Agreement_rec           => l_old_Agreement_rec
1158     ,   x_Contract_rec                => l_x_Contract_rec
1159     ,   x_Agreement_rec               => l_x_Agreement_rec
1160     ,   x_Price_LHeader_rec           => l_x_Price_LHeader_rec
1161     ,   x_Discount_Header_rec         => l_x_Discount_Header_rec
1162     ,   x_Price_LLine_tbl             => l_x_Price_LLine_tbl
1163     ,   x_Discount_Cust_tbl           => l_x_Discount_Cust_tbl
1164     ,   x_Discount_Line_tbl           => l_x_Discount_Line_tbl
1165     ,   x_Price_Break_tbl             => l_x_Price_Break_tbl
1166     );
1167 
1168 
1169 /*    commit; */
1170 
1171 
1172     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1173         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1174     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1175         RAISE FND_API.G_EXC_ERROR;
1176 
1177     END IF;
1178 
1179 
1180     --  Load OUT parameters.
1181 
1182 
1183     x_creation_date                := l_x_Agreement_rec.creation_date;
1184     x_created_by                   := l_x_Agreement_rec.created_by;
1185     x_last_update_date             := l_x_Agreement_rec.last_update_date;
1186     x_last_updated_by              := l_x_Agreement_rec.last_updated_by;
1187     x_last_update_login            := l_x_Agreement_rec.last_update_login;
1188 
1189     --  Clear Agreement record cache
1190 
1191     Clear_Agreement;
1192 
1193     --  Keep track of performed operations.
1194 
1195     l_old_Agreement_rec.operation := l_Agreement_rec.operation;
1196 
1197 
1198     --  Set return status.
1199 
1200     x_return_status := FND_API.G_RET_STS_SUCCESS;
1201 
1202     --  Get message count and data
1203 
1204     OE_MSG_PUB.Count_And_Get
1205     (   p_count                       => x_msg_count
1206     ,   p_data                        => x_msg_data
1207     );
1208 
1209     oe_debug_pub.add('Exiting OE_OE_Form_Agreement.Validate_And_Write');
1210 
1211 EXCEPTION
1212 
1213     WHEN FND_API.G_EXC_ERROR THEN
1214 
1215         x_return_status := FND_API.G_RET_STS_ERROR;
1216 
1217         --  Get message count and data
1218 
1219 
1220         OE_MSG_PUB.Count_And_Get
1221         (   p_count                       => x_msg_count
1222         ,   p_data                        => x_msg_data
1223         );
1224 
1225             OE_MSG_PUB.Add_Exc_Msg
1226             (   G_PKG_NAME
1227             ,   x_msg_count || '1 ' || x_msg_data
1228             );
1229 
1230     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1231 
1232         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1233 
1234         --  Get message count and data
1235 
1236         OE_MSG_PUB.Count_And_Get
1237         (   p_count                       => x_msg_count
1238         ,   p_data                        => x_msg_data
1239         );
1240             OE_MSG_PUB.Add_Exc_Msg
1241             (   G_PKG_NAME
1242             ,   x_msg_count || '2 ' || x_msg_data
1243             );
1244 
1245     WHEN OTHERS THEN
1246 
1247         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1248 
1249         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1250         THEN
1251             OE_MSG_PUB.Add_Exc_Msg
1252             (   G_PKG_NAME
1253             ,   'Validate_And_Write'
1254             );
1255         END IF;
1256 
1257         --  Get message count and data
1258 
1259         OE_MSG_PUB.Count_And_Get
1260         (   p_count                       => x_msg_count
1261         ,   p_data                        => x_msg_data
1262         );
1263 
1264             OE_MSG_PUB.Add_Exc_Msg
1265             (   G_PKG_NAME
1266             ,   x_msg_count || '3 ' || x_msg_data
1267             );
1268 
1269 END Validate_And_Write;
1270 
1271 --  Procedure       Delete_Row
1272 --
1273 
1274 PROCEDURE Delete_Row
1275 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1276 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1277 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1278 ,   p_agreement_id                  IN  NUMBER
1279 )
1280 IS
1281 l_Agreement_rec               OE_Pricing_Cont_PUB.Agreement_Rec_Type;
1282 l_control_rec                 oe_globals.Control_Rec_Type;
1283 l_return_status               VARCHAR2(1);
1284 l_x_Contract_rec              OE_Pricing_Cont_PUB.Contract_Rec_Type;
1285 l_x_Agreement_rec             OE_Pricing_Cont_PUB.Agreement_Rec_Type;
1286 l_x_Price_LHeader_rec         OE_Price_List_PUB.Price_List_Rec_Type;
1287 l_x_Discount_Header_rec       OE_Pricing_Cont_PUB.Discount_Header_Rec_Type;
1288 l_x_Price_LLine_rec           OE_Price_List_PUB.Price_List_Line_Rec_Type;
1289 l_x_Price_LLine_tbl           OE_Price_List_PUB.Price_List_Line_Tbl_Type;
1290 l_x_Discount_Cust_rec         OE_Pricing_Cont_PUB.Discount_Cust_Rec_Type;
1291 l_x_Discount_Cust_tbl         OE_Pricing_Cont_PUB.Discount_Cust_Tbl_Type;
1292 l_x_Discount_Line_rec         OE_Pricing_Cont_PUB.Discount_Line_Rec_Type;
1293 l_x_Discount_Line_tbl         OE_Pricing_Cont_PUB.Discount_Line_Tbl_Type;
1294 l_x_Price_Break_rec           OE_Pricing_Cont_PUB.Price_Break_Rec_Type;
1295 l_x_Price_Break_tbl           OE_Pricing_Cont_PUB.Price_Break_Tbl_Type;
1296 BEGIN
1297 
1298     --  Set control flags.
1299 
1300     l_control_rec.controlled_operation := TRUE;
1301     l_control_rec.validate_entity      := TRUE;
1302     l_control_rec.write_to_DB          := TRUE;
1303 
1304     l_control_rec.default_attributes   := FALSE;
1305     l_control_rec.change_attributes    := FALSE;
1306     l_control_rec.process              := FALSE;
1307 
1308     --  Instruct API to retain its caches
1309 
1310     l_control_rec.clear_api_cache      := FALSE;
1311     l_control_rec.clear_api_requests   := FALSE;
1312 
1313     --  Read DB record from cache
1314 
1315     l_Agreement_rec := Get_Agreement
1316     (   p_db_record                   => TRUE
1317     ,   p_agreement_id                => p_agreement_id
1318     );
1319 
1320     --  Set Operation.
1321 
1322     l_Agreement_rec.operation := oe_globals.G_OPR_DELETE;
1323 
1324     --  Call OE_Pricing_Cont_PVT.Process_Pricing_Cont
1325 
1326     OE_Pricing_Cont_PVT.Process_Pricing_Cont
1327     (   p_api_version_number          => 1.0
1328     ,   p_init_msg_list               => FND_API.G_TRUE
1329     ,   x_return_status               => l_return_status
1330     ,   x_msg_count                   => x_msg_count
1331     ,   x_msg_data                    => x_msg_data
1332     ,   p_control_rec                 => l_control_rec
1333     ,   p_Agreement_rec               => l_Agreement_rec
1334     ,   x_Contract_rec                => l_x_Contract_rec
1335     ,   x_Agreement_rec               => l_x_Agreement_rec
1336     ,   x_Price_LHeader_rec           => l_x_Price_LHeader_rec
1337     ,   x_Discount_Header_rec         => l_x_Discount_Header_rec
1338     ,   x_Price_LLine_tbl             => l_x_Price_LLine_tbl
1339     ,   x_Discount_Cust_tbl           => l_x_Discount_Cust_tbl
1340     ,   x_Discount_Line_tbl           => l_x_Discount_Line_tbl
1341     ,   x_Price_Break_tbl             => l_x_Price_Break_tbl
1342     );
1343 
1344     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1345         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1346     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1347         RAISE FND_API.G_EXC_ERROR;
1348     END IF;
1349 
1350 
1351     --  Clear Agreement record cache
1352 
1353     Clear_Agreement;
1354 
1355     --  Set return status.
1356 
1357     x_return_status := FND_API.G_RET_STS_SUCCESS;
1358 
1359     --  Get message count and data
1360 
1361     OE_MSG_PUB.Count_And_Get
1362     (   p_count                       => x_msg_count
1363     ,   p_data                        => x_msg_data
1364     );
1365 
1366 
1367 EXCEPTION
1368 
1369     WHEN FND_API.G_EXC_ERROR THEN
1370 
1371         x_return_status := FND_API.G_RET_STS_ERROR;
1372 
1373         --  Get message count and data
1374 
1375         OE_MSG_PUB.Count_And_Get
1376         (   p_count                       => x_msg_count
1377         ,   p_data                        => x_msg_data
1378         );
1379 
1380     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1381 
1382         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1383 
1384         --  Get message count and data
1385 
1386         OE_MSG_PUB.Count_And_Get
1387         (   p_count                       => x_msg_count
1388         ,   p_data                        => x_msg_data
1389         );
1390 
1391     WHEN OTHERS THEN
1392 
1393         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1394 
1395         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1396         THEN
1397             OE_MSG_PUB.Add_Exc_Msg
1398             (   G_PKG_NAME
1399             ,   'Delete_Row'
1400             );
1401         END IF;
1402 
1403         --  Get message count and data
1404 
1405         OE_MSG_PUB.Count_And_Get
1406         (   p_count                       => x_msg_count
1407         ,   p_data                        => x_msg_data
1408         );
1409 
1410 END Delete_Row;
1411 
1412 --  Procedure       Process_Entity
1413 --
1414 
1415 PROCEDURE Process_Entity
1416 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1417 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1418 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1419 )
1420 IS
1421 l_control_rec                 oe_globals.Control_Rec_Type;
1422 l_return_status               VARCHAR2(1);
1423 l_x_Contract_rec              OE_Pricing_Cont_PUB.Contract_Rec_Type;
1424 l_x_Agreement_rec             OE_Pricing_Cont_PUB.Agreement_Rec_Type;
1425 l_x_Price_LHeader_rec         OE_Price_List_PUB.Price_List_Rec_Type;
1426 l_x_Discount_Header_rec       OE_Pricing_Cont_PUB.Discount_Header_Rec_Type;
1427 l_x_Price_LLine_rec           OE_Price_List_PUB.Price_List_Line_Rec_Type;
1428 l_x_Price_LLine_tbl           OE_Price_List_PUB.Price_List_Line_Tbl_Type;
1429 l_x_Discount_Cust_rec         OE_Pricing_Cont_PUB.Discount_Cust_Rec_Type;
1430 l_x_Discount_Cust_tbl         OE_Pricing_Cont_PUB.Discount_Cust_Tbl_Type;
1431 l_x_Discount_Line_rec         OE_Pricing_Cont_PUB.Discount_Line_Rec_Type;
1432 l_x_Discount_Line_tbl         OE_Pricing_Cont_PUB.Discount_Line_Tbl_Type;
1433 l_x_Price_Break_rec           OE_Pricing_Cont_PUB.Price_Break_Rec_Type;
1434 l_x_Price_Break_tbl           OE_Pricing_Cont_PUB.Price_Break_Tbl_Type;
1435 BEGIN
1436 
1437     --  Set control flags.
1438 
1439     l_control_rec.controlled_operation := TRUE;
1440     l_control_rec.process              := TRUE;
1441     l_control_rec.process_entity       := oe_globals.G_ENTITY_AGREEMENT;
1442 
1443     l_control_rec.default_attributes   := FALSE;
1444     l_control_rec.change_attributes    := FALSE;
1445     l_control_rec.validate_entity      := FALSE;
1446     l_control_rec.write_to_DB          := FALSE;
1447 
1448     --  Instruct API to clear its request table
1449 
1450     l_control_rec.clear_api_cache      := FALSE;
1451     l_control_rec.clear_api_requests   := FALSE;
1452 
1453     --  Call OE_Pricing_Cont_PVT.Process_Pricing_Cont
1454 
1455     OE_Pricing_Cont_PVT.Process_Pricing_Cont
1456     (   p_api_version_number          => 1.0
1457     ,   p_init_msg_list               => FND_API.G_TRUE
1458     ,   x_return_status               => l_return_status
1459     ,   x_msg_count                   => x_msg_count
1460     ,   x_msg_data                    => x_msg_data
1461     ,   p_control_rec                 => l_control_rec
1462     ,   x_Contract_rec                => l_x_Contract_rec
1463     ,   x_Agreement_rec               => l_x_Agreement_rec
1464     ,   x_Price_LHeader_rec           => l_x_Price_LHeader_rec
1465     ,   x_Discount_Header_rec         => l_x_Discount_Header_rec
1466     ,   x_Price_LLine_tbl             => l_x_Price_LLine_tbl
1467     ,   x_Discount_Cust_tbl           => l_x_Discount_Cust_tbl
1468     ,   x_Discount_Line_tbl           => l_x_Discount_Line_tbl
1469     ,   x_Price_Break_tbl             => l_x_Price_Break_tbl
1470     );
1471 
1472     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1473         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1474     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1475         RAISE FND_API.G_EXC_ERROR;
1476     END IF;
1477 
1478 
1479     --  Set return status.
1480 
1481     x_return_status := FND_API.G_RET_STS_SUCCESS;
1482 
1483     --  Get message count and data
1484 
1485     OE_MSG_PUB.Count_And_Get
1486     (   p_count                       => x_msg_count
1487     ,   p_data                        => x_msg_data
1488     );
1489 
1490 
1491 EXCEPTION
1492 
1493     WHEN FND_API.G_EXC_ERROR THEN
1494 
1495         x_return_status := FND_API.G_RET_STS_ERROR;
1496 
1497         --  Get message count and data
1498 
1499         OE_MSG_PUB.Count_And_Get
1500         (   p_count                       => x_msg_count
1501         ,   p_data                        => x_msg_data
1502         );
1503 
1504     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1505 
1506         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1507 
1508         --  Get message count and data
1509 
1510         OE_MSG_PUB.Count_And_Get
1511         (   p_count                       => x_msg_count
1512         ,   p_data                        => x_msg_data
1513         );
1514 
1515     WHEN OTHERS THEN
1516 
1517         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1518 
1519         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1520         THEN
1521             OE_MSG_PUB.Add_Exc_Msg
1522             (   G_PKG_NAME
1523             ,   'Process_Entity'
1524             );
1525         END IF;
1526 
1527         --  Get message count and data
1528 
1529         OE_MSG_PUB.Count_And_Get
1530         (   p_count                       => x_msg_count
1531         ,   p_data                        => x_msg_data
1532         );
1533 
1534 END Process_Entity;
1535 
1536 --  Procedure       lock_Row
1537 --
1538 
1539 PROCEDURE Lock_Row
1540 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1541 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1542 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1543 ,   p_accounting_rule_id            IN  NUMBER
1544 ,   p_agreement_contact_id          IN  NUMBER
1545 ,   p_agreement_id                  IN  NUMBER
1546 ,   p_agreement_num                 IN  VARCHAR2
1547 ,   p_agreement_type_code           IN  VARCHAR2
1548 ,   p_attribute1                    IN  VARCHAR2
1549 ,   p_attribute10                   IN  VARCHAR2
1550 ,   p_attribute11                   IN  VARCHAR2
1551 ,   p_attribute12                   IN  VARCHAR2
1552 ,   p_attribute13                   IN  VARCHAR2
1553 ,   p_attribute14                   IN  VARCHAR2
1554 ,   p_attribute15                   IN  VARCHAR2
1555 ,   p_attribute2                    IN  VARCHAR2
1556 ,   p_attribute3                    IN  VARCHAR2
1557 ,   p_attribute4                    IN  VARCHAR2
1558 ,   p_attribute5                    IN  VARCHAR2
1559 ,   p_attribute6                    IN  VARCHAR2
1560 ,   p_attribute7                    IN  VARCHAR2
1561 ,   p_attribute8                    IN  VARCHAR2
1562 ,   p_attribute9                    IN  VARCHAR2
1563 ,   p_context                       IN  VARCHAR2
1564 ,   p_created_by                    IN  NUMBER
1565 ,   p_creation_date                 IN  DATE
1566 /* ,   p_customer_id                   IN  NUMBER */
1567 ,   p_sold_to_org_id                   IN  NUMBER
1568 ,   p_end_date_active               IN  DATE
1569 ,   p_freight_terms_code            IN  VARCHAR2
1570 ,   p_invoice_contact_id            IN  NUMBER
1571 /* ,   p_invoice_to_site_use_id        IN  NUMBER */
1572 ,   p_invoice_to_org_id        	 IN  NUMBER
1573 ,   p_invoicing_rule_id             IN  NUMBER
1574 ,   p_last_updated_by               IN  NUMBER
1575 ,   p_last_update_date              IN  DATE
1576 ,   p_last_update_login             IN  NUMBER
1577 ,   p_name                          IN  VARCHAR2
1578 ,   p_override_arule_flag           IN  VARCHAR2
1579 ,   p_override_irule_flag           IN  VARCHAR2
1580 ,   p_price_list_id                 IN  NUMBER
1581 ,   p_purchase_order_num            IN  VARCHAR2
1582 ,   p_revision                      IN  VARCHAR2
1583 ,   p_revision_date                 IN  DATE
1584 ,   p_revision_reason_code          IN  VARCHAR2
1585 ,   p_salesrep_id                   IN  NUMBER
1586 ,   p_ship_method_code              IN  VARCHAR2
1587 ,   p_signature_date                IN  DATE
1588 ,   p_start_date_active             IN  DATE
1589 ,   p_term_id                       IN  NUMBER
1590 ,   p_agreement_source_code         IN  VARCHAR2
1591                                          --added by rchellam for OKC
1592 ,   p_orig_system_agr_id            IN  NUMBER --added by rchellam for OKC
1593 ,   p_invoice_to_customer_id        IN  NUMBER -- Added for bug#4029589
1594 )
1595 IS
1596 l_return_status               VARCHAR2(1);
1597 l_Agreement_rec               OE_Pricing_Cont_PUB.Agreement_Rec_Type;
1598 l_x_Contract_rec              OE_Pricing_Cont_PUB.Contract_Rec_Type;
1599 l_x_Agreement_rec             OE_Pricing_Cont_PUB.Agreement_Rec_Type;
1600 l_x_Price_LHeader_rec         OE_Price_List_PUB.Price_List_Rec_Type;
1601 l_x_Discount_Header_rec       OE_Pricing_Cont_PUB.Discount_Header_Rec_Type;
1602 l_x_Price_LLine_rec           OE_Price_List_PUB.Price_List_Line_Rec_Type;
1603 l_x_Price_LLine_tbl           OE_Price_List_PUB.Price_List_Line_Tbl_Type;
1604 l_x_Discount_Cust_rec         OE_Pricing_Cont_PUB.Discount_Cust_Rec_Type;
1605 l_x_Discount_Cust_tbl         OE_Pricing_Cont_PUB.Discount_Cust_Tbl_Type;
1606 l_x_Discount_Line_rec         OE_Pricing_Cont_PUB.Discount_Line_Rec_Type;
1607 l_x_Discount_Line_tbl         OE_Pricing_Cont_PUB.Discount_Line_Tbl_Type;
1608 l_x_Price_Break_rec           OE_Pricing_Cont_PUB.Price_Break_Rec_Type;
1609 l_x_Price_Break_tbl           OE_Pricing_Cont_PUB.Price_Break_Tbl_Type;
1610 BEGIN
1611 
1612     --  Load Agreement record
1613 
1614     l_Agreement_rec.accounting_rule_id := p_accounting_rule_id;
1615     l_Agreement_rec.agreement_contact_id := p_agreement_contact_id;
1616     l_Agreement_rec.agreement_id   := p_agreement_id;
1617     l_Agreement_rec.agreement_num  := p_agreement_num;
1618     l_Agreement_rec.agreement_type_code := p_agreement_type_code;
1619     l_Agreement_rec.attribute1     := p_attribute1;
1620     l_Agreement_rec.attribute10    := p_attribute10;
1621     l_Agreement_rec.attribute11    := p_attribute11;
1622     l_Agreement_rec.attribute12    := p_attribute12;
1623     l_Agreement_rec.attribute13    := p_attribute13;
1624     l_Agreement_rec.attribute14    := p_attribute14;
1625     l_Agreement_rec.attribute15    := p_attribute15;
1626     l_Agreement_rec.attribute2     := p_attribute2;
1627     l_Agreement_rec.attribute3     := p_attribute3;
1628     l_Agreement_rec.attribute4     := p_attribute4;
1629     l_Agreement_rec.attribute5     := p_attribute5;
1630     l_Agreement_rec.attribute6     := p_attribute6;
1631     l_Agreement_rec.attribute7     := p_attribute7;
1632     l_Agreement_rec.attribute8     := p_attribute8;
1633     l_Agreement_rec.attribute9     := p_attribute9;
1634     l_Agreement_rec.context        := p_context;
1635     l_Agreement_rec.created_by     := p_created_by;
1636     l_Agreement_rec.creation_date  := p_creation_date;
1637 /*    l_Agreement_rec.customer_id    := p_customer_id; */
1638     l_Agreement_rec.sold_to_org_id    := p_sold_to_org_id;
1639     l_Agreement_rec.end_date_active := p_end_date_active;
1640     l_Agreement_rec.freight_terms_code := p_freight_terms_code;
1641     l_Agreement_rec.invoice_contact_id := p_invoice_contact_id;
1642 /*    l_Agreement_rec.invoice_to_site_use_id := p_invoice_to_site_use_id; */
1643     l_Agreement_rec.invoice_to_org_id := p_invoice_to_org_id;
1644     l_Agreement_rec.invoicing_rule_id := p_invoicing_rule_id;
1645     l_Agreement_rec.last_updated_by := p_last_updated_by;
1646     l_Agreement_rec.last_update_date := p_last_update_date;
1647     l_Agreement_rec.last_update_login := p_last_update_login;
1648     l_Agreement_rec.name           := p_name;
1649     l_Agreement_rec.override_arule_flag := p_override_arule_flag;
1650     l_Agreement_rec.override_irule_flag := p_override_irule_flag;
1651     l_Agreement_rec.price_list_id  := p_price_list_id;
1652     l_Agreement_rec.purchase_order_num := p_purchase_order_num;
1653     l_Agreement_rec.revision       := p_revision;
1654     l_Agreement_rec.revision_date  := p_revision_date;
1655     l_Agreement_rec.revision_reason_code := p_revision_reason_code;
1656     l_Agreement_rec.salesrep_id    := p_salesrep_id;
1657     l_Agreement_rec.ship_method_code := p_ship_method_code;
1658     l_Agreement_rec.signature_date := p_signature_date;
1659     l_Agreement_rec.start_date_active := p_start_date_active;
1660     l_Agreement_rec.term_id        := p_term_id;
1661     l_Agreement_rec.agreement_source_code := p_agreement_source_code;
1662     l_Agreement_rec.orig_system_agr_id := p_orig_system_agr_id;
1663     l_Agreement_rec.invoice_to_customer_id := p_invoice_to_customer_id; -- Added for bug#4029589
1664 
1665 
1666     --  Call OE_Pricing_Cont_PVT.Lock_Pricing_Cont
1667 
1668     OE_Pricing_Cont_PVT.Lock_Pricing_Cont
1669     (   p_api_version_number          => 1.0
1670     ,   p_init_msg_list               => FND_API.G_TRUE
1671     ,   x_return_status               => l_return_status
1672     ,   x_msg_count                   => x_msg_count
1673     ,   x_msg_data                    => x_msg_data
1674     ,   p_Agreement_rec               => l_Agreement_rec
1675     ,   x_Contract_rec                => l_x_Contract_rec
1676     ,   x_Agreement_rec               => l_x_Agreement_rec
1677     ,   x_Price_LHeader_rec           => l_x_Price_LHeader_rec
1678     ,   x_Discount_Header_rec         => l_x_Discount_Header_rec
1679     ,   x_Price_LLine_tbl             => l_x_Price_LLine_tbl
1680     ,   x_Discount_Cust_tbl           => l_x_Discount_Cust_tbl
1681     ,   x_Discount_Line_tbl           => l_x_Discount_Line_tbl
1682     ,   x_Price_Break_tbl             => l_x_Price_Break_tbl
1683     );
1684 
1685     IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
1686 
1687         --  Set DB flag and write record to cache.
1688 
1689         l_x_Agreement_rec.db_flag := FND_API.G_TRUE;
1690 
1691         Write_Agreement
1692         (   p_Agreement_rec               => l_x_Agreement_rec
1693         ,   p_db_record                   => TRUE
1694         );
1695 
1696     END IF;
1697 
1698     --  Set return status.
1699 
1700     x_return_status := l_return_status;
1701 
1702     --  Get message count and data
1703 
1704     OE_MSG_PUB.Count_And_Get
1705     (   p_count                       => x_msg_count
1706     ,   p_data                        => x_msg_data
1707     );
1708 
1709 
1710 EXCEPTION
1711 
1712     WHEN OTHERS THEN
1713 
1714         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1715         THEN
1716             OE_MSG_PUB.Add_Exc_Msg
1717             (   G_PKG_NAME
1718             ,   'Lock_Row'
1719             );
1720         END IF;
1721 
1722         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1723 
1724         --  Get message count and data
1725 
1726         OE_MSG_PUB.Count_And_Get
1727         (   p_count                       => x_msg_count
1728         ,   p_data                        => x_msg_data
1729         );
1730 
1731 
1732 
1733 END Lock_Row;
1734 
1735 --  Procedures maintaining Agreement record cache.
1736 
1737 PROCEDURE Write_Agreement
1738 (   p_Agreement_rec                 IN  OE_Pricing_Cont_PUB.Agreement_Rec_Type
1739 ,   p_db_record                     IN  BOOLEAN := FALSE
1740 )
1741 IS
1742 BEGIN
1743 
1744     g_Agreement_rec := p_Agreement_rec;
1745 
1746     IF p_db_record THEN
1747 
1748         g_db_Agreement_rec := p_Agreement_rec;
1749 
1750     END IF;
1751 
1752 END Write_Agreement;
1753 
1754 FUNCTION Get_Agreement
1755 (   p_db_record                     IN  BOOLEAN := FALSE
1756 ,   p_agreement_id                  IN  NUMBER
1757 )
1758 RETURN OE_Pricing_Cont_PUB.Agreement_Rec_Type
1759 IS
1760 BEGIN
1761 
1762     IF  p_agreement_id <> g_Agreement_rec.agreement_id
1763     THEN
1764 
1765         --  Query row from DB
1766 
1767         g_Agreement_rec := OE_Agreement_Util.Query_Row
1768         (   p_agreement_id                => p_agreement_id
1769         );
1770 
1771         g_Agreement_rec.db_flag        := FND_API.G_TRUE;
1772 
1773         --  Load DB record
1774 
1775         g_db_Agreement_rec             := g_Agreement_rec;
1776 
1777     END IF;
1778 
1779     IF p_db_record THEN
1780 
1781         RETURN g_db_Agreement_rec;
1782 
1783     ELSE
1784 
1785         RETURN g_Agreement_rec;
1786 
1787     END IF;
1788 
1789 END Get_Agreement;
1790 
1791 PROCEDURE Clear_Agreement
1792 IS
1793 BEGIN
1794 
1795     g_Agreement_rec                := OE_Pricing_Cont_PUB.G_MISS_AGREEMENT_REC;
1796     g_db_Agreement_rec             := OE_Pricing_Cont_PUB.G_MISS_AGREEMENT_REC;
1797 
1798 END Clear_Agreement;
1799 
1800 END OE_OE_Form_Agreement;