DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_BLANKET_UTIL

Source


1 PACKAGE BODY OE_Blanket_util AS
2 /* $Header: OEXUBSOB.pls 120.19.12010000.5 2008/11/18 01:51:05 smusanna ship $ */
3 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'OE_Blanket_Util';
4 
5 PROCEDURE Insert_History_Records
6           (p_header_rec           IN OUT NOCOPY OE_Blanket_PUB.Header_Rec_Type
7           ,p_line_tbl             IN OUT NOCOPY OE_Blanket_PUB.Line_Tbl_Type
8           ,p_version_flag in varchar2 := null
9           ,p_phase_change_flag in varchar2 := null
10           ,x_return_status        IN OUT NOCOPY VARCHAR2
11           );
12 
13 PROCEDURE Validate_Min_Max_Range (p_min_value IN NUMBER, p_max_value IN NUMBER, p_attribute IN VARCHAR2, x_return_status IN OUT NOCOPY VARCHAR2);
14 
15 PROCEDURE Lock_Blanket
16 (   x_return_status             OUT NOCOPY VARCHAR2
17 ,   p_blanket_id                IN NUMBER
18 ,   p_blanket_line_id           IN NUMBER
19 ,   p_x_lock_control            IN OUT NOCOPY NUMBER
20 );
21 
22 -- ER 5743580
23 
24 FUNCTION Validate_Ship_to_Org
25 ( p_ship_to_org_id      IN  NUMBER
26 , p_sold_to_org_id      IN  NUMBER)
27 RETURN BOOLEAN
28 IS
29 l_dummy VARCHAR2(10);
30 l_site_use_code   VARCHAR2(30) := 'SHIP_TO';
31 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
32 
33 BEGIN
34     IF l_debug_level > 0 then
35     oe_debug_pub.add('Entering Validate_ship_to_org',1);
36     oe_debug_pub.add('ship_to_org_id :'||to_char(p_ship_to_org_id),2);
37     END IF;
38 
39     IF  g_customer_relations = 'N' THEN
40 
41     Select 'VALID'
42     Into   l_dummy
43     From   oe_ship_to_orgs_v
44     Where  customer_id = p_sold_to_org_id
45     AND          site_use_id = p_ship_to_org_id
46     AND  status = 'A'
47     AND  address_status ='A'; --bug 2752321
48     IF l_debug_level > 0 then
49     oe_debug_pub.add('Exiting Validate_ship_to_org',1);
50     END IF;
51     RETURN TRUE;
52     ELSIF g_customer_relations = 'Y' THEN
53         IF l_debug_level > 0 then
54         oe_debug_pub.add ('Cr: Yes Line Ship',2);
55         END IF;
56 
57     SELECT /* MOAC_SQL_CHANGE */ 'VALID'
58     Into   l_dummy
59     FROM   HZ_CUST_SITE_USES_ALL SITE,
60            HZ_CUST_ACCT_SITES ACCT_SITE
61     WHERE SITE.SITE_USE_ID     = p_ship_to_org_id
62     AND SITE.SITE_USE_CODE     = l_site_use_code
63     AND SITE.CUST_ACCT_SITE_ID = ACCT_SITE.CUST_ACCT_SITE_ID
64     AND SITE.STATUS = 'A'
65        AND ACCT_SITE.STATUS ='A' AND --bug 2752321
66     ACCT_SITE.CUST_ACCOUNT_ID in (
67                     SELECT p_sold_to_org_id FROM DUAL
68                     UNION
69                     SELECT CUST_ACCOUNT_ID FROM
70                     HZ_CUST_ACCT_RELATE_ALL h WHERE
71                     RELATED_CUST_ACCOUNT_ID = p_sold_to_org_id
72                     and h.org_id=acct_site.org_id
73                         and ship_to_flag = 'Y' and status = 'A')
74     AND EXISTS(SELECT 1 FROM HZ_CUST_ACCOUNTS WHERE CUST_ACCOUNT_ID =
75 ACCT_SITE.CUST_ACCOUNT_ID AND STATUS='A')
76     AND ROWNUM = 1;
77    RETURN TRUE;
78     ELSIF g_customer_relations = 'A' THEN
79     SELECT  'VALID'
80     INTO    l_dummy
81     FROM    OE_SHIP_TO_ORGS_V   SHP
82     WHERE   SHP.ORGANIZATION_ID =p_ship_to_org_id
83     AND     SHP.STATUS = 'A'
84     AND     SHP.ADDRESS_STATUS ='A' --bug 2752321
85     AND     SYSDATE BETWEEN NVL(SHP.START_DATE_ACTIVE, SYSDATE)
86                     AND     NVL(SHP.END_DATE_ACTIVE, SYSDATE);
87 
88     RETURN TRUE;
89 
90     END IF;
91    RETURN TRUE;
92 
93 
94 EXCEPTION
95 
96    WHEN OTHERS THEN
97       RETURN FALSE;
98 
99 END Validate_Ship_To_Org;
100 
101 
102 FUNCTION Validate_Deliver_To_Org
103 ( p_deliver_to_org_id IN  NUMBER
104 , p_sold_to_org_id        IN  NUMBER)
105 RETURN BOOLEAN
106 IS
107 l_dummy VARCHAR2(10);
108 l_site_use_code   VARCHAR2(30) := 'DELIVER_TO';
109 
110 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
111 BEGIN
112   IF l_debug_level > 0 then
113   oe_debug_pub.add('Entering OE_VALIDATE_LINE.Validate_Deliver_To_Org',1);
114   oe_debug_pub.add('deliver_to_org_id :'||to_char(p_deliver_to_org_id),2);
115   END IF;
116 
117 
118   IF g_customer_relations  = 'N' THEN
119     SELECT 'VALID'
120     INTO   l_dummy
121     FROM   oe_deliver_to_orgs_v
122     WHERE  customer_id = p_sold_to_org_id
123     AND          site_use_id = p_deliver_to_org_id
124     AND  status = 'A'
125     AND  address_status ='A';--bug 2752321
126     IF l_debug_level > 0 then
127     oe_debug_pub.add('Exiting OE_VALIDATE_LINE.Validate_Deliver_To_Org',1);
128     END IF;
129     RETURN TRUE;
130 
131   ELSIF g_customer_relations = 'Y' THEN
132     IF l_debug_level > 0 then
133     oe_debug_pub.add('Cr: Yes Line Deliver',2);
134     END IF;
135 
136     SELECT /* MOAC_SQL_CHANGE */ 'VALID'
137       Into   l_dummy
138       FROM   HZ_CUST_SITE_USES_ALL SITE,
139            HZ_CUST_ACCT_SITES ACCT_SITE
140      WHERE SITE.SITE_USE_ID     = p_deliver_to_org_id
141        AND SITE.SITE_USE_CODE     = l_site_use_code
142        AND SITE.CUST_ACCT_SITE_ID = ACCT_SITE.CUST_ACCT_SITE_ID
143        AND SITE.STATUS = 'A'
144        AND ACCT_SITE.STATUS ='A' AND
145        ACCT_SITE.CUST_ACCOUNT_ID in (
146                     SELECT p_sold_to_org_id FROM DUAL
147                     UNION
148                     SELECT CUST_ACCOUNT_ID FROM
149                     HZ_CUST_ACCT_RELATE_ALL h WHERE
150                     RELATED_CUST_ACCOUNT_ID = p_sold_to_org_id
151                     and h.org_id=acct_site.org_id
152                         and ship_to_flag = 'Y' and status='A')
153     AND EXISTS(SELECT 1 FROM HZ_CUST_ACCOUNTS WHERE CUST_ACCOUNT_ID =
154 ACCT_SITE.CUST_ACCOUNT_ID AND STATUS='A')
155         AND ROWNUM = 1;
156 
157     IF l_debug_level > 0 then
158     oe_debug_pub.add('Exiting OE_VALIDATE_LINE.Validate_Deliver_To_Org',1);
159     END IF;
160     RETURN TRUE;
161 
162   ELSIF g_customer_relations = 'A' THEN
163 
164     SELECT  'VALID'
165       INTO    l_dummy
166       FROM    OE_DELIVER_TO_ORGS_V   DEL
167      WHERE   DEL.ORGANIZATION_ID =p_deliver_to_org_id
168        AND     DEL.STATUS = 'A'
169                AND DEL.ADDRESS_STATUS ='A' --bug 2752321
170        AND     SYSDATE BETWEEN NVL(DEL.START_DATE_ACTIVE, SYSDATE)
171                     AND     NVL(DEL.END_DATE_ACTIVE, SYSDATE);
172     IF l_debug_level > 0 then
173     oe_debug_pub.add('Exiting OE_VALIDATE_LINE.Validate_Deliver_To_Org',1);
174     END IF;
175     RETURN TRUE;
176 
177 
178   END IF;
179    IF l_debug_level > 0 then
180   oe_debug_pub.add('Exiting OE_VALIDATE_LINE.Validate_Deliver_To_Org',1);
181    END IF;
182   RETURN TRUE;
183 
184 EXCEPTION
185 
186    WHEN OTHERS THEN
187       RETURN FALSE;
188 
189 END Validate_Deliver_To_Org;
190 
191 
192 FUNCTION Validate_Invoice_To_Org
193 ( p_Invoice_to_org_id IN  NUMBER
194 , p_sold_to_org_id        IN  NUMBER)
195 RETURN BOOLEAN
196 IS
197 l_dummy VARCHAR2(10);
198 l_site_use_code   VARCHAR2(30) := 'BILL_TO';
199 
200 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
201 BEGIN
202   IF l_debug_level > 0 then
203   oe_debug_pub.add('Entering Validate_Invoice_To_Org',1);
204   oe_debug_pub.add('Invoice_to_org_id :'||to_char(p_Invoice_to_org_id),2);
205   END IF;
206 
207 
208   IF g_customer_relations  = 'N' THEN
209 
210             Select 'VALID'
211             Into   l_dummy
212             From   oe_invoice_to_orgs_v
213             Where  customer_id = p_sold_to_org_id
214             And    site_use_id = p_invoice_to_org_id
215             and    status='A'
216             and   address_status ='A';
217           RETURN TRUE;
218 
219     ELSIF g_customer_relations = 'Y' THEN
220         IF l_debug_level > 0 then
221         oe_debug_pub.add('Cr: Yes Line Inv',2);
222         END IF;
223 
224     SELECT /* MOAC_SQL_CHANGE */ 'VALID'
225     Into   l_dummy
226     FROM   HZ_CUST_SITE_USES_ALL SITE,
227            HZ_CUST_ACCT_SITES ACCT_SITE
228     WHERE SITE.SITE_USE_ID     = p_invoice_to_org_id
229     AND SITE.SITE_USE_CODE     = l_site_use_code
230     AND SITE.CUST_ACCT_SITE_ID = ACCT_SITE.CUST_ACCT_SITE_ID
231     AND SITE.STATUS = 'A'
232        AND ACCT_SITE.STATUS ='A' AND
233     ACCT_SITE.CUST_ACCOUNT_ID in (
234                     SELECT p_sold_to_org_id FROM DUAL
235                     UNION
236                     SELECT CUST_ACCOUNT_ID FROM
237                     HZ_CUST_ACCT_RELATE_ALL h WHERE
238                     RELATED_CUST_ACCOUNT_ID = p_sold_to_org_id
239                     and h.org_id=acct_site.org_id
240                         and bill_to_flag = 'Y' and status='A')
241     AND EXISTS(SELECT 1 FROM HZ_CUST_ACCOUNTS WHERE CUST_ACCOUNT_ID = ACCT_SITE.CUST_ACCOUNT_ID AND STATUS='A')
242     AND ROWNUM = 1;
243 
244   RETURN TRUE;
245   END IF;
246   RETURN TRUE;
247 
248         EXCEPTION
249                 WHEN OTHERS THEN
250            RETURN FALSE;
251    END Validate_Invoice_To_Org;
252  -- End ER 5743580
253 
254 
255 PROCEDURE create_price_list(
256 			    p_index in NUMBER,
257 			    x_return_status OUT NOCOPY varchar2)
258 IS
259  gpr_return_status varchar2(1) := NULL;
260  gpr_msg_count number := 0;
261  gpr_msg_data varchar2(2000);
262  gpr_price_list_rec QP_PRICE_LIST_PUB.Price_List_Rec_Type;
263  gpr_price_list_val_rec QP_PRICE_LIST_PUB.Price_List_Val_Rec_Type;
264  gpr_price_list_line_tbl QP_PRICE_LIST_PUB.Price_List_Line_Tbl_Type;
265  gpr_price_list_line_val_tbl QP_PRICE_LIST_PUB.Price_List_Line_Val_Tbl_Type;
266  gpr_qualifiers_tbl QP_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
267  l_qualifiers_tbl QP_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
268  gpr_qualifiers_val_tbl QP_Qualifier_Rules_Pub.Qualifiers_Val_Tbl_Type;
269  gpr_pricing_attr_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Tbl_Type;
270  gpr_pricing_attr_val_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Val_Tbl_Type;
271  ppr_price_list_rec QP_PRICE_LIST_PUB.Price_List_Rec_Type;
272  ppr_price_list_val_rec QP_PRICE_LIST_PUB.Price_List_Val_Rec_Type;
273  ppr_price_list_line_tbl QP_PRICE_LIST_PUB.Price_List_Line_Tbl_Type;
274  ppr_price_list_line_val_tbl QP_PRICE_LIST_PUB.Price_List_Line_Val_Tbl_Type;
275  ppr_qualifiers_tbl QP_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
276  ppr_qualifiers_val_tbl QP_Qualifier_Rules_Pub.Qualifiers_Val_Tbl_Type;
277  ppr_pricing_attr_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Tbl_Type;
278  ppr_pricing_attr_val_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Val_Tbl_Type;
279  xpr_price_list_rec QP_PRICE_LIST_PUB.Price_List_Rec_Type;
280  xpr_price_list_val_rec QP_PRICE_LIST_PUB.Price_List_Val_Rec_Type;
281  xpr_price_list_line_tbl QP_PRICE_LIST_PUB.Price_List_Line_Tbl_Type;
282  xpr_price_list_line_val_tbl QP_PRICE_LIST_PUB.Price_List_Line_Val_Tbl_Type;
283  xpr_qualifiers_tbl QP_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
284  xpr_qualifiers_val_tbl QP_Qualifier_Rules_Pub.Qualifiers_Val_Tbl_Type;
285  xpr_pricing_attr_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Tbl_Type;
286  xpr_pricing_attr_val_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Val_Tbl_Type;
287  K number := 1;
288  j number := 1;
289  I number := p_Index;
290  lheader_id number;
291 
292 --
293 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
294 --
295 BEGIN
296    /* set the list_header_id to g_miss_num */
297 
298     if l_debug_level > 0 then
299 	oe_debug_pub.add('Blanket In create price list');
300     end if;
301 	IF oe_delayed_requests_pvt.g_delayed_requests(I).param1 IS NULL THEN
302 		RETURN;
303 	END IF;
304 
305    gpr_price_list_rec.list_header_id := FND_API.G_MISS_NUM;
306    gpr_price_list_rec.name := oe_delayed_requests_pvt.g_delayed_requests(I).param1;
307    gpr_price_list_rec.list_type_code := 'PRL';
308    gpr_price_list_rec.list_source_code := 'BLKT';
309 --   gpr_price_list_rec.description := oe_delayed_requests_pvt.g_delayed_requests(I).paramtext1;
310    gpr_price_list_rec.currency_code := oe_delayed_requests_pvt.g_delayed_requests(I).param2;
311    --11i10 Pricing Changes Start
312    if oe_code_control.get_code_release_level >= '110510' then
313       gpr_price_list_rec.list_source_code := 'BSO';
314       gpr_price_list_rec.orig_system_header_ref :=
315                 oe_delayed_requests_pvt.g_delayed_requests(I).entity_id;
316       gpr_price_list_rec.shareable_flag := 'N';
317       gpr_price_list_rec.sold_to_org_id :=
318                 oe_delayed_requests_pvt.g_delayed_requests(I).param7;
319       -- Add blanket header qualifier
320         l_qualifiers_tbl(1).excluder_flag := 'N';
321         l_qualifiers_tbl(1).comparison_operator_code := '=';
322         l_qualifiers_tbl(1).qualifier_context := 'ORDER';
323         l_qualifiers_tbl(1).qualifier_precedence := 700;
324         l_qualifiers_tbl(1).qualifier_attribute := 'QUALIFIER_ATTRIBUTE5';
325         -- Blanket Header ID is the qualifier attribute value
326         l_qualifiers_tbl(1).qualifier_attr_value :=
327                 oe_delayed_requests_pvt.g_delayed_requests(I).entity_id;
328         l_qualifiers_tbl(1).qualifier_grouping_no := 1;
329         l_qualifiers_tbl(1).operation := QP_GLOBALS.G_OPR_CREATE;
330    end if;
331    --11i10 Pricing Changes End
332 
333    gpr_price_list_rec.operation := QP_GLOBALS.G_OPR_CREATE;
334    --MOAC changes to force the PL tobe created in a ORG
335    gpr_price_list_rec.org_id := mo_global.get_current_org_id;
336    gpr_price_list_rec.global_flag := 'N';
337    lheader_id := oe_delayed_requests_pvt.g_delayed_requests(I).entity_id;
338 
339 	I := oe_delayed_requests_pvt.g_delayed_requests.first;
340 
341 	WHILE I IS NOT NULL
342 	LOOP
343 IF oe_delayed_requests_pvt.g_delayed_requests(I).request_type = 'CREATE_BLANKET_PRICE_LIST'
344 		AND
345 		oe_delayed_requests_pvt.g_delayed_requests(I).entity_code =
346 			 oe_blanket_pub.g_entity_blanket_LINE THEN
347     if l_debug_level > 0 then
348 	oe_debug_pub.add('Blanket In create price list - line');
349     end if;
350 		IF oe_delayed_requests_pvt.g_delayed_requests(I).param1 IS NULL THEN
351                      if l_debug_level > 0 then
352 			oe_debug_pub.add('Blanket In Skip');
353                      end if;
354 			GOTO SKIP_LINE;
355 		END IF;
356 	g_line_id_tbl(K).line_id := oe_delayed_requests_pvt.g_delayed_requests(I).entity_id;
357 
358           gpr_price_list_line_tbl(K).list_line_id := FND_API.G_MISS_NUM;
359           gpr_price_list_line_tbl(K).list_line_type_code := 'PLL';
360           gpr_price_list_line_tbl(K).operation := QP_GLOBALS.G_OPR_CREATE;
361           gpr_price_list_line_tbl(K).operand := oe_delayed_requests_pvt.g_delayed_requests(I).param1;
362           gpr_price_list_line_tbl(K).arithmetic_operator := 'UNIT_PRICE';
363 
364         -- Bug 3209215, Issue 9.1
365         -- Pass precedence value on price list lines
366         gpr_price_list_line_tbl(K).product_precedence := 1;
367 
368         gpr_pricing_attr_tbl(K).pricing_attribute_id := FND_API.G_MISS_NUM;
369         gpr_pricing_attr_tbl(K).list_line_id := FND_API.G_MISS_NUM;
370         gpr_pricing_attr_tbl(K).PRODUCT_ATTRIBUTE_CONTEXT := 'ITEM';
371 
372 
373 	IF oe_delayed_requests_pvt.g_delayed_requests(I).param4 = 'CAT' THEN
374 
375 	   gpr_pricing_attr_tbl(K).PRODUCT_ATTRIBUTE := 'PRICING_ATTRIBUTE2';
376            gpr_pricing_attr_tbl(K).PRODUCT_ATTR_VALUE := oe_delayed_requests_pvt.g_delayed_requests(I).param3;
377 
378 	ELSIF oe_delayed_requests_pvt.g_delayed_requests(I).param4 = 'ALL' THEN
379 
380 	   gpr_pricing_attr_tbl(K).PRODUCT_ATTRIBUTE := 'PRICING_ATTRIBUTE3';
381            gpr_pricing_attr_tbl(K).PRODUCT_ATTR_VALUE := 'ALL';
382 
383 	ELSE
384 
385 	   gpr_pricing_attr_tbl(K).PRODUCT_ATTRIBUTE := 'PRICING_ATTRIBUTE1';
386            gpr_pricing_attr_tbl(K).PRODUCT_ATTR_VALUE := oe_delayed_requests_pvt.g_delayed_requests(I).param3;
387 
388            -- 11i10 Pricing Change
389            -- Send customer item on price list line record
390            IF oe_delayed_requests_pvt.g_delayed_requests(I).param4 = 'CUST'
391               AND OE_Code_Control.Get_Code_Release_Level >= '110510'
392            THEN
393               gpr_price_list_line_tbl(K).customer_item_id :=
394                 oe_delayed_requests_pvt.g_delayed_requests(I).param8;
395              oe_debug_pub.add('sending cust item id :'||
396                 gpr_price_list_line_tbl(K).customer_item_id);
397            END IF;
398 
399 	END IF;
400 
401 
402 
403         gpr_pricing_attr_tbl(K).PRODUCT_UOM_CODE := oe_delayed_requests_pvt.g_delayed_requests(I).param2;
404         gpr_pricing_attr_tbl(K).EXCLUDER_FLAG := 'N';
405         gpr_pricing_attr_tbl(K).ATTRIBUTE_GROUPING_NO := 1;
406         gpr_pricing_attr_tbl(K).PRICE_LIST_LINE_INDEX := K;
407         gpr_pricing_attr_tbl(K).operation := QP_GLOBALS.G_OPR_CREATE;
408 			k:= K+1;
409 		<< SKIP_LINE >>
410 		oe_delayed_requests_pvt.g_delayed_requests.delete(I);
411 		END IF;
412 		I := oe_delayed_requests_pvt.g_delayed_requests.next(I);
413 
414 	END LOOP;
415 
416         /*
417         -- 11i10 Pricing Changes
418         IF OE_Code_Control.Get_Code_Release_Level >= '110510' THEN
419         -----------------------------------------------------------
420         -- Set up the blanket line qualifier record
421         -----------------------------------------------------------
422         gpr_qualifiers_tbl(K).qualifier_grouping_no := 1;
423         gpr_qualifiers_tbl(K).excluder_flag := 'N';
424         gpr_qualifiers_tbl(K).qualifier_precedence := 700;
425         gpr_qualifiers_tbl(K).qualifier_context := 'ORDER';
426         gpr_qualifiers_tbl(K).qualifier_attribute := 'QUALIFIER_ATTRIBUTE6';
427         gpr_qualifiers_tbl(K).comparison_operator_code := '=';
428         -- Blanket Line ID is the qualifier attribute value
429         gpr_qualifiers_tbl(K).qualifier_attr_value := oe_delayed_requests_pvt.g_delayed_requests(I).entity_id;
430         oe_debug_pub.add('entity id :'||oe_delayed_requests_pvt.g_delayed_requests(I).entity_id);
431         gpr_qualifiers_tbl(K).operation := QP_GLOBALS.G_OPR_CREATE;
432         END IF;
433         */
434 
435         QP_PRICE_LIST_GRP.Process_Price_List
436 (   p_api_version_number            => 1
437 ,   p_init_msg_list                 => FND_API.G_FALSE
438 ,   p_return_values                 => FND_API.G_FALSE
439 ,   p_commit                        => FND_API.G_FALSE
440 ,   x_return_status                 => x_return_status
441 ,   x_msg_count                     => gpr_msg_count
442 ,   x_msg_data                      => gpr_msg_data
443 ,   p_PRICE_LIST_rec                => gpr_price_list_rec
444 ,   p_PRICE_LIST_LINE_tbl           => gpr_price_list_line_tbl
445 ,   p_PRICING_ATTR_tbl              => gpr_pricing_attr_tbl
446 ,   p_qualifiers_tbl                => l_qualifiers_tbl
447 ,   x_PRICE_LIST_rec                => ppr_price_list_rec
448 ,   x_PRICE_LIST_val_rec            => ppr_price_list_val_rec
449 ,   x_PRICE_LIST_LINE_tbl           => ppr_price_list_line_tbl
450 ,   x_PRICE_LIST_LINE_val_tbl       => ppr_price_list_line_val_tbl
451 ,   x_QUALIFIERS_tbl                => ppr_qualifiers_tbl
452 ,   x_QUALIFIERS_val_tbl            => ppr_qualifiers_val_tbl
453 ,   x_PRICING_ATTR_tbl              => ppr_pricing_attr_tbl
454 ,   x_PRICING_ATTR_val_tbl          => ppr_pricing_attr_val_tbl
455 );
456 
457 
458   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
459 
460       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
461 
462   END IF;
463 
464 
465   IF OE_Code_Control.Code_Release_Level >= '110510' THEN
466 
467      gpr_pricing_attr_tbl.delete;
468      K := ppr_price_list_line_tbl.first;
469      WHILE K is not null LOOP
470         gpr_pricing_attr_tbl(K).list_line_id :=
471                  ppr_price_list_line_tbl(K).list_line_id;
472         gpr_pricing_attr_tbl(K).operation := QP_GLOBALS.G_OPR_CREATE;
473         gpr_pricing_attr_tbl(K).pricing_attribute_context := 'QP_INTERNAL';
474         gpr_pricing_attr_tbl(K).pricing_attribute := 'PRICING_ATTRIBUTE1';
475         gpr_pricing_attr_tbl(K).pricing_attr_value_from :=
476                  ppr_price_list_line_tbl(K).list_line_id;
477         gpr_pricing_attr_tbl(K).comparison_operator_code := '=';
478         if l_debug_level > 0 then
479            oe_debug_pub.add('pricing attr id :'||
480                                gpr_pricing_attr_tbl(K).pricing_attribute_id);
481            oe_debug_pub.add('list line id :'||
482                                gpr_pricing_attr_tbl(K).pricing_attr_value_from);
483         end if;
484 	K := ppr_price_list_line_tbl.next(K);
485      END LOOP;
486 
487      QP_PRICE_LIST_GRP.Process_Price_List
488            ( p_api_version_number            => 1
489            ,   p_init_msg_list                 => FND_API.G_FALSE
490            ,   p_return_values                 => FND_API.G_FALSE
491            ,   p_commit                        => FND_API.G_FALSE
492            ,   x_return_status                 => x_return_status
493            ,   x_msg_count                     => gpr_msg_count
494            ,   x_msg_data                      => gpr_msg_data
495            ,   p_PRICING_ATTR_tbl              => gpr_pricing_attr_tbl
496            ,   x_PRICE_LIST_rec                => xpr_price_list_rec
497            ,   x_PRICE_LIST_val_rec            => xpr_price_list_val_rec
498            ,   x_PRICE_LIST_LINE_tbl           => xpr_price_list_line_tbl
499            ,   x_PRICE_LIST_LINE_val_tbl       => xpr_price_list_line_val_tbl
500            ,   x_QUALIFIERS_tbl                => xpr_qualifiers_tbl
501            ,   x_QUALIFIERS_val_tbl            => xpr_qualifiers_val_tbl
502            ,   x_PRICING_ATTR_tbl              => xpr_pricing_attr_tbl
503            ,   x_PRICING_ATTR_val_tbl          => xpr_pricing_attr_val_tbl
504            );
505 
506       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
507          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
508       END IF;
509 
510   END IF; -- end if code release level check to create pricing attributes
511 
512 
513   --11i10 Pricing Changes Start
514   if oe_code_control.get_code_release_level >= '110510' then
515 	Update oe_blanket_headers
516            set lock_control = lock_control + 1
517                ,last_updated_by = fnd_global.user_id
518                ,last_update_date = sysdate
519 	where header_id = lheader_id ;
520 	Update oe_blanket_headers_ext
521 	set new_price_list_id = ppr_price_list_rec.list_header_id
522         where order_number = (select  /* MOAC_SQL_CHANGE */ order_number
523                                 from oe_blanket_headers_all
524                                where header_id = lheader_id);
525         g_header_rec.new_price_list_id := ppr_price_list_rec.list_header_id;
526         --for bug 3285562
527         IF g_header_rec.price_list_id is NULL
528         THEN
529            Update oe_blanket_headers
530            set price_list_id = ppr_price_list_rec.list_header_id
531            where header_id = lheader_id;
532         g_header_rec.price_list_id := ppr_price_list_rec.list_header_id;
533         END IF;
534         --End bug 3285562
535   else
536 	Update oe_blanket_headers
537 	set --qp_list_header_id = ppr_price_list_rec.list_header_id,
538 	    price_list_id = ppr_price_list_rec.list_header_id ,
539 		lock_control = lock_control + 1
540 	where header_id = lheader_id ;
541         g_header_rec.price_list_id := ppr_price_list_rec.list_header_id;
542   end if;
543   --11i10 Pricing Changes End
544 
545 	K := ppr_price_list_line_tbl.first;
546 	WHILE K is not null
547 	LOOP
548 
549 	Update oe_blanket_lines
550 	set
551 	    price_list_id = ppr_price_list_rec.list_header_id,
552 		lock_control = lock_control + 1
553 	WHERE
554 	line_id = g_line_id_tbl(K).line_id ;
555 
556 	UPDATE oe_blanket_lines_ext
557 	SET
558 	    qp_list_line_id = ppr_price_list_line_tbl(K).list_line_id
559 	WHERE
560 	line_id = g_line_id_tbl(K).line_id ;
561 
562 		K := ppr_price_list_line_tbl.next(K);
563 	END LOOP;
564 
565         OE_GLOBALS.G_CASCADING_REQUEST_LOGGED := TRUE;
566 		g_new_price_list := false;
567 EXCEPTION
568 
569     WHEN FND_API.G_EXC_ERROR THEN
570 
571         x_return_status := FND_API.G_RET_STS_ERROR;
572 
573         --  Get message count and data
574 
575 
576     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
577 
578         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
579 
580 
581     WHEN OTHERS THEN
582 
583         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
584 
585 END create_price_list;
586 
587 PROCEDURE Add_price_list_line
588 (p_req_ind           IN NUMBER
589 ,x_return_status     OUT NOCOPY varchar2)
590 IS
591  gpr_return_status varchar2(1) := NULL;
592  gpr_msg_count number := 0;
593  gpr_msg_data varchar2(2000);
594  gpr_price_list_rec QP_PRICE_LIST_PUB.Price_List_Rec_Type;
595  gpr_price_list_val_rec QP_PRICE_LIST_PUB.Price_List_Val_Rec_Type;
596  gpr_price_list_line_tbl QP_PRICE_LIST_PUB.Price_List_Line_Tbl_Type;
597  gpr_price_list_line_val_tbl QP_PRICE_LIST_PUB.Price_List_Line_Val_Tbl_Type;
598  gpr_qualifiers_tbl QP_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
599  gpr_qualifiers_val_tbl QP_Qualifier_Rules_Pub.Qualifiers_Val_Tbl_Type;
600  gpr_pricing_attr_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Tbl_Type;
601  gpr_pricing_attr_val_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Val_Tbl_Type;
602  ppr_price_list_rec QP_PRICE_LIST_PUB.Price_List_Rec_Type;
603  ppr_price_list_val_rec QP_PRICE_LIST_PUB.Price_List_Val_Rec_Type;
604  ppr_price_list_line_tbl QP_PRICE_LIST_PUB.Price_List_Line_Tbl_Type;
605  ppr_price_list_line_val_tbl QP_PRICE_LIST_PUB.Price_List_Line_Val_Tbl_Type;
606  ppr_qualifiers_tbl QP_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
607  ppr_qualifiers_val_tbl QP_Qualifier_Rules_Pub.Qualifiers_Val_Tbl_Type;
608  ppr_pricing_attr_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Tbl_Type;
609  ppr_pricing_attr_val_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Val_Tbl_Type;
610  xpr_price_list_rec QP_PRICE_LIST_PUB.Price_List_Rec_Type;
611  xpr_price_list_val_rec QP_PRICE_LIST_PUB.Price_List_Val_Rec_Type;
612  xpr_price_list_line_tbl QP_PRICE_LIST_PUB.Price_List_Line_Tbl_Type;
613  xpr_price_list_line_val_tbl QP_PRICE_LIST_PUB.Price_List_Line_Val_Tbl_Type;
614  xpr_qualifiers_tbl QP_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
615  xpr_qualifiers_val_tbl QP_Qualifier_Rules_Pub.Qualifiers_Val_Tbl_Type;
616  xpr_pricing_attr_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Tbl_Type;
617  xpr_pricing_attr_val_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Val_Tbl_Type;
618  K number := 1;
619  j number := 1;
620  I number := p_req_ind;
621  lheader_id number;
622 
623 --
624 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
625 --
626 BEGIN
627 	--begin commented the below if statement for bug 4762658
628 		/*IF oe_delayed_requests_pvt.g_delayed_requests(I).param3 IS NULL THEN
629 				RETURN;
630 		END IF;*/
631 	--end for bug 4762658
632 	--for bug 3229225
633         IF  (oe_delayed_requests_pvt.g_delayed_requests(I).param1 IS NULL OR oe_delayed_requests_pvt.g_delayed_requests(I).param1=FND_API.G_MISS_NUM)
634         THEN
635            IF l_debug_level > 0
636            THEN
637               oe_debug_pub.add('Skip for null values');
638            END IF;
639            oe_delayed_requests_pvt.g_delayed_requests.delete(I);
640            GOTO SKIP_LINE1;
641         END IF;
642 
643           gpr_price_list_line_tbl(K).list_line_id := FND_API.G_MISS_NUM;
644           gpr_price_list_line_tbl(K).list_line_type_code := 'PLL';
645           gpr_price_list_line_tbl(K).operation := QP_GLOBALS.G_OPR_CREATE;
646           gpr_price_list_line_tbl(K).operand := oe_delayed_requests_pvt.g_delayed_requests(I).param1;
647           gpr_price_list_line_tbl(K).arithmetic_operator := 'UNIT_PRICE';
648           gpr_price_list_line_tbl(K).list_header_id :=
649 	   oe_delayed_requests_pvt.g_delayed_requests(I).param5 ;
650         -- Bug 3209215, Issue 9.1
651         -- Pass precedence value on price list lines
652         gpr_price_list_line_tbl(K).product_precedence := 1;
653 
654         gpr_pricing_attr_tbl(K).pricing_attribute_id := FND_API.G_MISS_NUM;
655         gpr_pricing_attr_tbl(K).list_line_id := FND_API.G_MISS_NUM;
656         gpr_pricing_attr_tbl(K).list_header_id :=
657 		oe_delayed_requests_pvt.g_delayed_requests(I).param5;
658         gpr_pricing_attr_tbl(K).PRODUCT_ATTRIBUTE_CONTEXT := 'ITEM';
659 
660 	IF oe_delayed_requests_pvt.g_delayed_requests(I).param4 = 'CAT' THEN
661 
662 	   gpr_pricing_attr_tbl(K).PRODUCT_ATTRIBUTE := 'PRICING_ATTRIBUTE2';
663            gpr_pricing_attr_tbl(K).PRODUCT_ATTR_VALUE := oe_delayed_requests_pvt.g_delayed_requests(I).param3;
664 
665 	ELSIF oe_delayed_requests_pvt.g_delayed_requests(I).param4 = 'ALL' THEN
666 
667 	   gpr_pricing_attr_tbl(K).PRODUCT_ATTRIBUTE := 'PRICING_ATTRIBUTE3';
668            gpr_pricing_attr_tbl(K).PRODUCT_ATTR_VALUE := 'ALL';
669 
670 	ELSE
671 
672 	   gpr_pricing_attr_tbl(K).PRODUCT_ATTRIBUTE := 'PRICING_ATTRIBUTE1';
673            gpr_pricing_attr_tbl(K).PRODUCT_ATTR_VALUE := oe_delayed_requests_pvt.g_delayed_requests(I).param3;
674 
675            -- 11i10 Pricing Change
676            -- Send customer item on price list line record
677            IF oe_delayed_requests_pvt.g_delayed_requests(I).param4 = 'CUST'
678               AND OE_Code_Control.Get_Code_Release_Level >= '110510'
679            THEN
680               gpr_price_list_line_tbl(K).customer_item_id :=
681                 oe_delayed_requests_pvt.g_delayed_requests(I).param8;
682              oe_debug_pub.add('sending cust item id :'||
683                 gpr_price_list_line_tbl(K).customer_item_id);
684            END IF;
685 
686 	END IF;
687 
688         gpr_pricing_attr_tbl(K).PRODUCT_UOM_CODE := oe_delayed_requests_pvt.g_delayed_requests(I).param2;
689         gpr_pricing_attr_tbl(K).EXCLUDER_FLAG := 'N';
690         gpr_pricing_attr_tbl(K).ATTRIBUTE_GROUPING_NO := 1;
691         gpr_pricing_attr_tbl(K).PRICE_LIST_LINE_INDEX := K;
692         gpr_pricing_attr_tbl(K).operation := QP_GLOBALS.G_OPR_CREATE;
693 
694                 --oe_delayed_requests_pvt.g_delayed_requests.delete(I);
695 
696         QP_PRICE_LIST_GRP.Process_Price_List
697 (   p_api_version_number            => 1
698 ,   p_init_msg_list                 => FND_API.G_FALSE
699 ,   p_return_values                 => FND_API.G_FALSE
700 ,   p_commit                        => FND_API.G_FALSE
701 ,   x_return_status                 => x_return_status
702 ,   x_msg_count                     => gpr_msg_count
703 ,   x_msg_data                      => gpr_msg_data
704 ,   p_PRICE_LIST_rec                => gpr_price_list_rec
705 ,   p_PRICE_LIST_LINE_tbl           => gpr_price_list_line_tbl
706 ,   p_PRICING_ATTR_tbl              => gpr_pricing_attr_tbl
707 ,   x_PRICE_LIST_rec                => ppr_price_list_rec
708 ,   x_PRICE_LIST_val_rec            => ppr_price_list_val_rec
709 ,   x_PRICE_LIST_LINE_tbl           => ppr_price_list_line_tbl
710 ,   x_PRICE_LIST_LINE_val_tbl       => ppr_price_list_line_val_tbl
711 ,   x_QUALIFIERS_tbl                => ppr_qualifiers_tbl
712 ,   x_QUALIFIERS_val_tbl            => ppr_qualifiers_val_tbl
713 ,   x_PRICING_ATTR_tbl              => ppr_pricing_attr_tbl
714 ,   x_PRICING_ATTR_val_tbl          => ppr_pricing_attr_val_tbl
715 );
716 
717 
718   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
719 
720       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
721 
722   END IF;
723 
724 
725   IF OE_Code_Control.Code_Release_Level >= '110510' THEN
726 
727      gpr_pricing_attr_tbl.delete;
728      K := ppr_price_list_line_tbl.first;
729      WHILE K is not null LOOP
730         gpr_pricing_attr_tbl(K).list_line_id :=
731                  ppr_price_list_line_tbl(K).list_line_id;
732         gpr_pricing_attr_tbl(K).operation := QP_GLOBALS.G_OPR_CREATE;
733         gpr_pricing_attr_tbl(K).pricing_attribute_context := 'QP_INTERNAL';
734         gpr_pricing_attr_tbl(K).pricing_attribute := 'PRICING_ATTRIBUTE1';
735         gpr_pricing_attr_tbl(K).pricing_attr_value_from :=
736                  ppr_price_list_line_tbl(K).list_line_id;
737         gpr_pricing_attr_tbl(K).comparison_operator_code := '=';
738         if l_debug_level > 0 then
739            oe_debug_pub.add('pricing attr id :'||
740                                gpr_pricing_attr_tbl(K).pricing_attribute_id);
741            oe_debug_pub.add('list line id :'||
742                                gpr_pricing_attr_tbl(K).pricing_attr_value_from);
743         end if;
744 	K := ppr_price_list_line_tbl.next(K);
745      END LOOP;
746 
747      QP_PRICE_LIST_GRP.Process_Price_List
748            ( p_api_version_number            => 1
749            ,   p_init_msg_list                 => FND_API.G_FALSE
750            ,   p_return_values                 => FND_API.G_FALSE
751            ,   p_commit                        => FND_API.G_FALSE
752            ,   x_return_status                 => x_return_status
753            ,   x_msg_count                     => gpr_msg_count
754            ,   x_msg_data                      => gpr_msg_data
755            ,   p_PRICING_ATTR_tbl              => gpr_pricing_attr_tbl
756            ,   x_PRICE_LIST_rec                => xpr_price_list_rec
757            ,   x_PRICE_LIST_val_rec            => xpr_price_list_val_rec
758            ,   x_PRICE_LIST_LINE_tbl           => xpr_price_list_line_tbl
759            ,   x_PRICE_LIST_LINE_val_tbl       => xpr_price_list_line_val_tbl
760            ,   x_QUALIFIERS_tbl                => xpr_qualifiers_tbl
761            ,   x_QUALIFIERS_val_tbl            => xpr_qualifiers_val_tbl
762            ,   x_PRICING_ATTR_tbl              => xpr_pricing_attr_tbl
763            ,   x_PRICING_ATTR_val_tbl          => xpr_pricing_attr_val_tbl
764            );
765 
766       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
767          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
768       END IF;
769 
770   END IF; -- end if code release level check to create pricing attributes
771 
772         Update oe_blanket_lines
773         set
774             price_list_id = ppr_price_list_line_tbl(1).list_header_id,
775                 lock_control = lock_control + 1
776         WHERE
777         line_id =
778 	 oe_delayed_requests_pvt.g_delayed_requests(I).entity_id ;
779 
780         Update oe_blanket_lines_ext
781         set qp_list_line_id = ppr_price_list_line_tbl(1).list_line_id
782         WHERE
783         line_id =
784 	 oe_delayed_requests_pvt.g_delayed_requests(I).entity_id ;
785 
786 << SKIP_LINE1 >>
787             g_new_price_list := false;
788 EXCEPTION
789 
790     WHEN FND_API.G_EXC_ERROR THEN
791 
792         x_return_status := FND_API.G_RET_STS_ERROR;
793 
794         --  Get message count and data
795 
796 
797     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
798 
799         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
800 
801 
802     WHEN OTHERS THEN
803 
804         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
805 
806 NULL;
807 END Add_price_list_line;
808 
809 
810 --for bug 3309427
811 --To clear the List Line ID if the user swaps from inline Pricelist to standard Pricelist
812 PROCEDURE Clear_Price_List_Line
813 (p_req_ind           IN NUMBER
814 ,x_return_status     OUT NOCOPY varchar2)
815 IS
816 --
817  gpr_return_status varchar2(1)	:= NULL;
818  gpr_msg_count number 		:= 0;
819  gpr_msg_data varchar2(2000);
820  gpr_price_list_rec		QP_PRICE_LIST_PUB.Price_List_Rec_Type;
821  gpr_price_list_line_tbl 	QP_PRICE_LIST_PUB.Price_List_Line_Tbl_Type;
822  gpr_pricing_attr_tbl 		QP_PRICE_LIST_PUB.Pricing_Attr_Tbl_Type;
823  gpr_pricing_attr_val_tbl 	QP_PRICE_LIST_PUB.Pricing_Attr_Val_Tbl_Type;
824  ppr_price_list_rec 		QP_PRICE_LIST_PUB.Price_List_Rec_Type;
825  ppr_price_list_val_rec 	QP_PRICE_LIST_PUB.Price_List_Val_Rec_Type;
826  ppr_price_list_line_tbl	QP_PRICE_LIST_PUB.Price_List_Line_Tbl_Type;
827  ppr_price_list_line_val_tbl 	QP_PRICE_LIST_PUB.Price_List_Line_Val_Tbl_Type;
828  ppr_qualifiers_tbl 		QP_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
829  ppr_qualifiers_val_tbl 	QP_Qualifier_Rules_Pub.Qualifiers_Val_Tbl_Type;
830  ppr_pricing_attr_tbl 		QP_PRICE_LIST_PUB.Pricing_Attr_Tbl_Type;
831  ppr_pricing_attr_val_tbl 	QP_PRICE_LIST_PUB.Pricing_Attr_Val_Tbl_Type;
832  k number			:= 1;
833  l_debug_level CONSTANT NUMBER 	:= oe_debug_pub.g_debug_level;
834 --
835 BEGIN
836   x_return_status:= FND_API.G_RET_STS_SUCCESS;
837   gpr_price_list_line_tbl(K).list_line_id := oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).Param1 ;
838   gpr_price_list_line_tbl(K).operation 	  := QP_GLOBALS.G_OPR_UPDATE;
839   gpr_price_list_line_tbl(K).list_header_id :=
840 		oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).param2;
841   gpr_price_list_line_tbl(K).end_date_active :=sysdate;
842 
843   IF((NOT IS_BLANKET_PRICE_LIST(p_price_list_id => oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).Param3
844                                 ,p_blanket_header_id =>oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).Param4 ))
845   AND (gpr_price_list_line_tbl(K).list_line_id is not null))
846   THEN
847      QP_PRICE_LIST_GRP.Process_Price_List
848 	(   p_api_version_number            => 1
849 	,   p_init_msg_list                 => FND_API.G_FALSE
850 	,   p_return_values                 => FND_API.G_FALSE
851 	,   p_commit                        => FND_API.G_FALSE
852 	,   x_return_status                 => x_return_status
853 	,   x_msg_count                     => gpr_msg_count
854 	,   x_msg_data                      => gpr_msg_data
855 	,   p_PRICE_LIST_rec                => gpr_price_list_rec
856 	,   p_PRICE_LIST_LINE_tbl           => gpr_price_list_line_tbl
857 	,   p_PRICING_ATTR_tbl              => gpr_pricing_attr_tbl
858 	,   x_PRICE_LIST_rec                => ppr_price_list_rec
859 	,   x_PRICE_LIST_val_rec            => ppr_price_list_val_rec
860 	,   x_PRICE_LIST_LINE_tbl           => ppr_price_list_line_tbl
861 	,   x_PRICE_LIST_LINE_val_tbl       => ppr_price_list_line_val_tbl
862 	,   x_QUALIFIERS_tbl                => ppr_qualifiers_tbl
863 	,   x_QUALIFIERS_val_tbl            => ppr_qualifiers_val_tbl
864 	,   x_PRICING_ATTR_tbl              => ppr_pricing_attr_tbl
865 	,   x_PRICING_ATTR_val_tbl          => ppr_pricing_attr_val_tbl
866 	);
867 
868 
869      IF  x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
870             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
871      ELSIF  x_return_status = FND_API.G_RET_STS_ERROR THEN
872            RAISE FND_API.G_EXC_ERROR;
873      END IF;
874 
875      Update oe_blanket_lines_ext
876      set    qp_list_line_id = Null
877      WHERE  line_id = oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).entity_id ;
878   END IF;
879 
880 
881 EXCEPTION
882 
883     WHEN FND_API.G_EXC_ERROR THEN
884 
885         IF l_debug_level > 0 THEN
886             OE_DEBUG_PUB.Add('Expected Error in Clear_Blanket_List_line...',4);
887         END IF;
888         x_return_status := FND_API.G_RET_STS_ERROR;
889 
890 
891     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
892 
893         IF l_debug_level > 0 THEN
894             OE_DEBUG_PUB.Add('UnExpected Error in Clear_Blanket_list_line...'||sqlerrm,4);
895         END IF;
896         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
897 
898 
899     WHEN OTHERS THEN
900 
901         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
902 
903         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
904         THEN
905            OE_MSG_PUB.Add_Exc_Msg
906              (   G_PKG_NAME
907              ,'Validate Attributes'
908              );
909         END IF;
910 END Clear_price_list_line;
911 
912 PROCEDURE Validate_Attributes
913 (  p_x_header_rec        IN OUT NOCOPY OE_Blanket_PUB.Header_rec_type
914 ,  p_old_header_rec      IN OE_Blanket_PUB.Header_rec_type
915 ,  p_validation_level     IN   NUMBER := FND_API.G_VALID_LEVEL_FULL
916 ,  x_return_status       OUT NOCOPY VARCHAR2
917 ) IS
918 l_dummy VARCHAR2(10);
919 --
920 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
921 --
922 BEGIN
923 
924     if l_debug_level > 0 then
925        oe_debug_pub.add('Entering OE_BLANKET_UTIL.VALIDATE_ATTRIBUTES',1);
926     end if;
927     x_return_status := FND_API.G_RET_STS_SUCCESS;
928 
929     --  Validate header attributes
930 
931     IF  p_x_header_rec.accounting_rule_id IS NOT NULL AND
932         (   p_x_header_rec.accounting_rule_id <>
933             p_old_header_rec.accounting_rule_id OR
934             p_old_header_rec.accounting_rule_id IS NULL )
935     THEN
936 
937       IF NOT OE_Validate.Accounting_Rule(p_x_header_rec.accounting_rule_id)
938       THEN
939          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
940             p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
941 	   p_x_header_rec.accounting_rule_id := NULL;
942 	 ELSE
943            x_return_status := FND_API.G_RET_STS_ERROR;
944          END IF;
945       END IF;
946 
947     END IF;
948 
949     IF  p_x_header_rec.freight_terms_code IS NOT NULL AND
950         (   p_x_header_rec.freight_terms_code <>
951             p_old_header_rec.freight_terms_code OR
952             p_old_header_rec.freight_terms_code IS NULL )
953     THEN
954 
955       IF NOT OE_Validate.Freight_Terms(p_x_header_rec.freight_terms_code)
956       THEN
957          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
958             p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
959 	   p_x_header_rec.freight_terms_code := NULL;
960 	 ELSE
961            x_return_status := FND_API.G_RET_STS_ERROR;
962          END IF;
963        END IF;
964 
965     END IF;
966 
967        IF  p_x_header_rec.invoicing_rule_id IS NOT NULL AND
968         (   p_x_header_rec.invoicing_rule_id <>
969             p_old_header_rec.invoicing_rule_id OR
970             p_old_header_rec.invoicing_rule_id IS NULL )
971     THEN
972 
973       IF NOT OE_Validate.Invoicing_Rule(p_x_header_rec.invoicing_rule_id)
974       THEN
975          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
976             p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
977 	   p_x_header_rec.invoicing_rule_id := NULL;
978 	 ELSE
979            x_return_status := FND_API.G_RET_STS_ERROR;
980          END IF;
981        END IF;
982 
983     END IF;
984 
985      IF  p_x_header_rec.order_type_id IS NOT NULL AND
986         (   p_x_header_rec.order_type_id <>
987             p_old_header_rec.order_type_id OR
988             p_old_header_rec.order_type_id IS NULL )
989     THEN
990        BEGIN
991 
992        SELECT 'VALID' into l_dummy
993        FROM 	oe_transaction_types_vl
994        WHERE 	SALES_DOCUMENT_TYPE_CODE = 'B'
995        AND      transaction_type_id = p_x_header_rec.order_type_id
996        AND	trunc(sysdate) between start_date_Active and
997         nvl(end_date_active,trunc(sysdate));
998 
999        EXCEPTION
1000          WHEN OTHERS THEN
1001            x_return_status := FND_API.G_RET_STS_ERROR;
1002        END;
1003     END IF;
1004 
1005     IF  p_x_header_rec.payment_term_id IS NOT NULL AND
1006         (   p_x_header_rec.payment_term_id <>
1007             p_old_header_rec.payment_term_id OR
1008             p_old_header_rec.payment_term_id IS NULL )
1009     THEN
1010       IF NOT OE_Validate.Payment_Term(p_x_header_rec.payment_term_id)
1011       THEN
1012          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1013             p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1014 	   p_x_header_rec.payment_term_id := NULL;
1015 	 ELSE
1016            x_return_status := FND_API.G_RET_STS_ERROR;
1017          END IF;
1018       END IF;
1019 
1020     END IF;
1021 
1022     IF  p_x_header_rec.price_list_id IS NOT NULL AND
1023         (   p_x_header_rec.price_list_id <>
1024             p_old_header_rec.price_list_id OR
1025             p_old_header_rec.price_list_id IS NULL )
1026     THEN
1027       IF NOT OE_Validate.Price_List(p_x_header_rec.price_list_id)
1028       THEN
1029          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1030             p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1031 	   p_x_header_rec.price_list_id := NULL;
1032 	 ELSE
1033           x_return_status := FND_API.G_RET_STS_ERROR;
1034          END IF;
1035       END IF;
1036 
1037     END IF;
1038 
1039     IF  p_x_header_rec.shipping_method_code IS NOT NULL AND
1040         (   p_x_header_rec.shipping_method_code <>
1041             p_old_header_rec.shipping_method_code OR
1042             p_old_header_rec.shipping_method_code IS NULL )
1043     THEN
1044 
1045       IF NOT OE_Validate.Shipping_Method(p_x_header_rec.shipping_method_code)
1046       THEN
1047          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1048             p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1049 	   p_x_header_rec.shipping_method_code := NULL;
1050 	 ELSE
1051            x_return_status := FND_API.G_RET_STS_ERROR;
1052          END IF;
1053       END IF;
1054 
1055     END IF;
1056 
1057     IF  p_x_header_rec.ship_from_org_id IS NOT NULL AND
1058         (   p_x_header_rec.ship_from_org_id <>
1059             p_old_header_rec.ship_from_org_id OR
1060             p_old_header_rec.ship_from_org_id IS NULL )
1061     THEN
1062 
1063       IF NOT OE_Validate.Ship_From_Org(p_x_header_rec.ship_from_org_id)
1064       THEN
1065          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1066             p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1067 	   p_x_header_rec.ship_from_org_id := NULL;
1068 	 ELSE
1069            x_return_status := FND_API.G_RET_STS_ERROR;
1070          END IF;
1071       END IF;
1072 
1073     END IF;
1074 
1075     IF  p_x_header_rec.sold_to_org_id IS NOT NULL AND
1076         (   p_x_header_rec.sold_to_org_id <>
1077             p_old_header_rec.sold_to_org_id OR
1078             p_old_header_rec.sold_to_org_id IS NULL )
1079     THEN
1080 
1081       IF NOT OE_Validate.Sold_To_Org(p_x_header_rec.sold_to_org_id)
1082       THEN
1083            x_return_status := FND_API.G_RET_STS_ERROR;
1084 
1085       END IF;
1086 
1087     END IF;
1088 
1089 -- hashraf start of pack J
1090     IF  p_x_header_rec.sold_to_site_use_id IS NOT NULL AND
1091         (   p_x_header_rec.sold_to_site_use_id <>
1092             p_old_header_rec.sold_to_site_use_id OR
1093             p_old_header_rec.sold_to_site_use_id IS NULL )
1094     THEN
1095 
1096       IF NOT OE_Validate.Customer_Location(p_x_header_rec.sold_to_site_use_id)
1097       THEN
1098            x_return_status := FND_API.G_RET_STS_ERROR;
1099 
1100       END IF;
1101 
1102     END IF;
1103 
1104 -- hashraf end of pack J
1105 
1106     IF  p_x_header_rec.invoice_to_org_id IS NOT NULL AND
1107         (   p_x_header_rec.invoice_to_org_id <>
1108             p_old_header_rec.invoice_to_org_id OR
1109             p_old_header_rec.invoice_to_org_id IS NULL )
1110     THEN
1111 
1112       IF NOT OE_Validate.Invoice_To_Org(p_x_header_rec.invoice_to_org_id)
1113       THEN
1114          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1115             p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1116 	   p_x_header_rec.invoice_to_org_id := NULL;
1117 	 ELSE
1118            x_return_status := FND_API.G_RET_STS_ERROR;
1119          END IF;
1120       END IF;
1121 
1122     END IF;
1123 
1124     IF  p_x_header_rec.ship_to_org_id IS NOT NULL AND
1125         (   p_x_header_rec.ship_to_org_id <>
1126             p_old_header_rec.ship_to_org_id OR
1127             p_old_header_rec.ship_to_org_id IS NULL )
1128     THEN
1129 
1130       IF NOT OE_Validate.Ship_To_Org(p_x_header_rec.ship_to_org_id)
1131       THEN
1132          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1133             p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1134 	   p_x_header_rec.ship_to_org_id := NULL;
1135 	 ELSE
1136            x_return_status := FND_API.G_RET_STS_ERROR;
1137          END IF;
1138       END IF;
1139 
1140     END IF;
1141 
1142     IF  p_x_header_rec.transactional_curr_code IS NOT NULL AND
1143         (   p_x_header_rec.transactional_curr_code <>
1144             p_old_header_rec.transactional_curr_code OR
1145             p_old_header_rec.transactional_curr_code IS NULL )
1146     THEN
1147 
1148       IF NOT OE_Validate.Transactional_Curr
1149                          (p_x_header_rec.transactional_curr_code)
1150       THEN
1151            x_return_status := FND_API.G_RET_STS_ERROR;
1152        END IF;
1153 
1154     END IF;
1155 
1156     -- Salesrep_id
1157     IF  p_x_header_rec.salesrep_id IS NOT NULL AND
1158         (   p_x_header_rec.salesrep_id <>
1159             p_old_header_rec.salesrep_id OR
1160             p_old_header_rec.salesrep_id IS NULL )
1161     THEN
1162 
1163       IF NOT OE_Validate.salesrep(p_x_header_rec.salesrep_id)
1164       THEN
1165          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1166             p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1167 	   p_x_header_rec.salesrep_id := NULL;
1168 	 ELSE
1169            x_return_status := FND_API.G_RET_STS_ERROR;
1170          END IF;
1171       END IF;
1172 
1173     END IF;
1174 
1175     -- Validate descriptive flex
1176 
1177     IF p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE OR
1178 
1179     (  p_x_header_rec.operation = OE_GLOBALS.G_OPR_UPDATE AND
1180          (p_x_header_rec.attribute1 IS NOT NULL AND
1181         (   p_x_header_rec.attribute1 <>
1182             p_old_header_rec.attribute1 OR
1183             p_old_header_rec.attribute1 IS NULL ))
1184     OR  (p_x_header_rec.attribute10 IS NOT NULL AND
1185         (   p_x_header_rec.attribute10 <>
1186             p_old_header_rec.attribute10 OR
1187             p_old_header_rec.attribute10 IS NULL ))
1188     OR  (p_x_header_rec.attribute11 IS NOT NULL AND
1189         (   p_x_header_rec.attribute11 <>
1190             p_old_header_rec.attribute11 OR
1191             p_old_header_rec.attribute11 IS NULL ))
1192     OR  (p_x_header_rec.attribute12 IS NOT NULL AND
1193         (   p_x_header_rec.attribute12 <>
1194             p_old_header_rec.attribute12 OR
1195             p_old_header_rec.attribute12 IS NULL ))
1196     OR  (p_x_header_rec.attribute13 IS NOT NULL AND
1197         (   p_x_header_rec.attribute13 <>
1198             p_old_header_rec.attribute13 OR
1199             p_old_header_rec.attribute13 IS NULL ))
1200     OR  (p_x_header_rec.attribute14 IS NOT NULL AND
1201         (   p_x_header_rec.attribute14 <>
1202             p_old_header_rec.attribute14 OR
1203             p_old_header_rec.attribute14 IS NULL ))
1204     OR  (p_x_header_rec.attribute15 IS NOT NULL AND
1205         (   p_x_header_rec.attribute15 <>
1206             p_old_header_rec.attribute15 OR
1207             p_old_header_rec.attribute15 IS NULL ))
1208     OR  (p_x_header_rec.attribute16 IS NOT NULL AND --For bug 2184255
1209         (   p_x_header_rec.attribute16 <>
1210             p_old_header_rec.attribute16 OR
1211             p_old_header_rec.attribute16 IS NULL ))
1212     OR  (p_x_header_rec.attribute17 IS NOT NULL AND
1213         (   p_x_header_rec.attribute17 <>
1214             p_old_header_rec.attribute17 OR
1215             p_old_header_rec.attribute17 IS NULL ))
1216     OR  (p_x_header_rec.attribute18 IS NOT NULL AND
1217         (   p_x_header_rec.attribute18 <>
1218             p_old_header_rec.attribute18 OR
1219             p_old_header_rec.attribute18 IS NULL ))
1220     OR  (p_x_header_rec.attribute19 IS NOT NULL AND
1221         (   p_x_header_rec.attribute19 <>
1222             p_old_header_rec.attribute19 OR
1223             p_old_header_rec.attribute19 IS NULL ))
1224     OR  (p_x_header_rec.attribute2 IS NOT NULL AND
1225         (   p_x_header_rec.attribute2 <>
1226             p_old_header_rec.attribute2 OR
1227             p_old_header_rec.attribute2 IS NULL ))
1228     OR  (p_x_header_rec.attribute20 IS NOT NULL AND  -- for bug 2184255
1229         (   p_x_header_rec.attribute20 <>
1230             p_old_header_rec.attribute20 OR
1231             p_old_header_rec.attribute20 IS NULL ))
1232     OR  (p_x_header_rec.attribute3 IS NOT NULL AND
1233         (   p_x_header_rec.attribute3 <>
1234             p_old_header_rec.attribute3 OR
1235             p_old_header_rec.attribute3 IS NULL ))
1236     OR  (p_x_header_rec.attribute4 IS NOT NULL AND
1237         (   p_x_header_rec.attribute4 <>
1238             p_old_header_rec.attribute4 OR
1239             p_old_header_rec.attribute4 IS NULL ))
1240     OR  (p_x_header_rec.attribute5 IS NOT NULL AND
1241         (   p_x_header_rec.attribute5 <>
1242             p_old_header_rec.attribute5 OR
1243             p_old_header_rec.attribute5 IS NULL ))
1244     OR  (p_x_header_rec.attribute6 IS NOT NULL AND
1245         (   p_x_header_rec.attribute6 <>
1246             p_old_header_rec.attribute6 OR
1247             p_old_header_rec.attribute6 IS NULL ))
1248     OR  (p_x_header_rec.attribute7 IS NOT NULL AND
1249         (   p_x_header_rec.attribute7 <>
1250             p_old_header_rec.attribute7 OR
1251             p_old_header_rec.attribute7 IS NULL ))
1252     OR  (p_x_header_rec.attribute8 IS NOT NULL AND
1253         (   p_x_header_rec.attribute8 <>
1254             p_old_header_rec.attribute8 OR
1255             p_old_header_rec.attribute8 IS NULL ))
1256     OR  (p_x_header_rec.attribute9 IS NOT NULL AND
1257         (   p_x_header_rec.attribute9 <>
1258             p_old_header_rec.attribute9 OR
1259             p_old_header_rec.attribute9 IS NULL ))
1260     OR  (p_x_header_rec.context IS NOT NULL AND
1261         (   p_x_header_rec.context <>
1262             p_old_header_rec.context OR
1263             p_old_header_rec.context IS NULL )))
1264     THEN
1265 
1266 
1267          oe_debug_pub.add('Before calling header_desc_flex',2);
1268 	IF OE_ORDER_CACHE.IS_FLEX_ENABLED('OE_BLKT_HEADER_ATTRIBUTES') = 'Y' THEN
1269 
1270          IF NOT OE_VALIDATE.Header_Desc_Flex
1271           (p_context            => p_x_header_rec.context
1272           ,p_attribute1         => p_x_header_rec.attribute1
1273           ,p_attribute2         => p_x_header_rec.attribute2
1274           ,p_attribute3         => p_x_header_rec.attribute3
1275           ,p_attribute4         => p_x_header_rec.attribute4
1276           ,p_attribute5         => p_x_header_rec.attribute5
1277           ,p_attribute6         => p_x_header_rec.attribute6
1278           ,p_attribute7         => p_x_header_rec.attribute7
1279           ,p_attribute8         => p_x_header_rec.attribute8
1280           ,p_attribute9         => p_x_header_rec.attribute9
1281           ,p_attribute10        => p_x_header_rec.attribute10
1282           ,p_attribute11        => p_x_header_rec.attribute11
1283           ,p_attribute12        => p_x_header_rec.attribute12
1284           ,p_attribute13        => p_x_header_rec.attribute13
1285           ,p_attribute14        => p_x_header_rec.attribute14
1286           ,p_attribute15        => p_x_header_rec.attribute15
1287           ,p_attribute16        => p_x_header_rec.attribute16  -- for bug 2184255
1288           ,p_attribute17        => p_x_header_rec.attribute17
1289           ,p_attribute18        => p_x_header_rec.attribute18
1290           ,p_attribute19        => p_x_header_rec.attribute19
1291           ,p_attribute20        => p_x_header_rec.attribute20
1292           ,p_document_type      => 'BLANKET')
1293           THEN
1294 
1295             IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1296                p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE
1297             THEN
1298                 p_x_header_rec.context    := null;
1299                 p_x_header_rec.attribute1 := null;
1300                 p_x_header_rec.attribute2 := null;
1301                 p_x_header_rec.attribute3 := null;
1302                 p_x_header_rec.attribute4 := null;
1303                 p_x_header_rec.attribute5 := null;
1304                 p_x_header_rec.attribute6 := null;
1305                 p_x_header_rec.attribute7 := null;
1306                 p_x_header_rec.attribute8 := null;
1307                 p_x_header_rec.attribute9 := null;
1308                 p_x_header_rec.attribute10 := null;
1309                 p_x_header_rec.attribute11 := null;
1310                 p_x_header_rec.attribute12 := null;
1311                 p_x_header_rec.attribute13 := null;
1312                 p_x_header_rec.attribute14 := null;
1313                 p_x_header_rec.attribute15 := null;
1314                 p_x_header_rec.attribute16 := null;  -- for bug 2184255
1315                 p_x_header_rec.attribute17 := null;
1316                 p_x_header_rec.attribute18 := null;
1317                 p_x_header_rec.attribute19 := null;
1318                 p_x_header_rec.attribute20 := null;
1319 
1320 
1321             ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF AND
1322                   p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE
1323             THEN
1324                 p_x_header_rec.context    := FND_API.G_MISS_CHAR;
1325                 p_x_header_rec.attribute1 := FND_API.G_MISS_CHAR;
1326                 p_x_header_rec.attribute2 := FND_API.G_MISS_CHAR;
1327                 p_x_header_rec.attribute3 := FND_API.G_MISS_CHAR;
1328                 p_x_header_rec.attribute4 := FND_API.G_MISS_CHAR;
1329                 p_x_header_rec.attribute5 := FND_API.G_MISS_CHAR;
1330                 p_x_header_rec.attribute6 := FND_API.G_MISS_CHAR;
1331                 p_x_header_rec.attribute7 := FND_API.G_MISS_CHAR;
1332                 p_x_header_rec.attribute8 := FND_API.G_MISS_CHAR;
1333                 p_x_header_rec.attribute9 := FND_API.G_MISS_CHAR;
1334                 p_x_header_rec.attribute10 := FND_API.G_MISS_CHAR;
1335                 p_x_header_rec.attribute11 := FND_API.G_MISS_CHAR;
1336                 p_x_header_rec.attribute12 := FND_API.G_MISS_CHAR;
1337                 p_x_header_rec.attribute13 := FND_API.G_MISS_CHAR;
1338                 p_x_header_rec.attribute14 := FND_API.G_MISS_CHAR;
1339                 p_x_header_rec.attribute15 := FND_API.G_MISS_CHAR;
1340                 p_x_header_rec.attribute16 := FND_API.G_MISS_CHAR;  -- for bug 2184255
1341                 p_x_header_rec.attribute17 := FND_API.G_MISS_CHAR;
1342                 p_x_header_rec.attribute18 := FND_API.G_MISS_CHAR;
1343                 p_x_header_rec.attribute19 := FND_API.G_MISS_CHAR;
1344                 p_x_header_rec.attribute20 := FND_API.G_MISS_CHAR;
1345 
1346 
1347             ELSE
1348                 x_return_status := FND_API.G_RET_STS_ERROR;
1349             END IF;
1350 	  ELSE -- if the flex validation is successfull
1351 	    -- For bug 2511313
1352 	    IF p_x_header_rec.context IS NULL
1353 	      OR p_x_header_rec.context = FND_API.G_MISS_CHAR THEN
1354 	       p_x_header_rec.context    := oe_validate.g_context;
1355 	    END IF;
1356 
1357 	    IF p_x_header_rec.attribute1 IS NULL
1358 	      OR p_x_header_rec.attribute1 = FND_API.G_MISS_CHAR THEN
1359 	       p_x_header_rec.attribute1 := oe_validate.g_attribute1;
1360 	    END IF;
1361 
1362 	    IF p_x_header_rec.attribute2 IS NULL
1363 	      OR p_x_header_rec.attribute2 = FND_API.G_MISS_CHAR THEN
1364 	       p_x_header_rec.attribute2 := oe_validate.g_attribute2;
1365 	    END IF;
1366 
1367 	    IF p_x_header_rec.attribute3 IS NULL
1368 	      OR p_x_header_rec.attribute3 = FND_API.G_MISS_CHAR THEN
1369 	       p_x_header_rec.attribute3 := oe_validate.g_attribute3;
1370 	    END IF;
1371 
1372 	    IF p_x_header_rec.attribute4 IS NULL
1373 	      OR p_x_header_rec.attribute4 = FND_API.G_MISS_CHAR THEN
1374 	       p_x_header_rec.attribute4 := oe_validate.g_attribute4;
1375 	    END IF;
1376 
1377 	    IF p_x_header_rec.attribute5 IS NULL
1378 	      OR p_x_header_rec.attribute5 = FND_API.G_MISS_CHAR THEN
1379 	       p_x_header_rec.attribute5 := oe_validate.g_attribute5;
1380 	    END IF;
1381 
1382 	    IF p_x_header_rec.attribute6 IS NULL
1383 	      OR p_x_header_rec.attribute6 = FND_API.G_MISS_CHAR THEN
1384 	       p_x_header_rec.attribute6 := oe_validate.g_attribute6;
1385 	    END IF;
1386 
1387 	    IF p_x_header_rec.attribute7 IS NULL
1388 	      OR p_x_header_rec.attribute7 = FND_API.G_MISS_CHAR THEN
1389 	       p_x_header_rec.attribute7 := oe_validate.g_attribute7;
1390 	    END IF;
1391 
1392 	    IF p_x_header_rec.attribute8 IS NULL
1393 	      OR p_x_header_rec.attribute8 = FND_API.G_MISS_CHAR THEN
1394 	       p_x_header_rec.attribute8 := oe_validate.g_attribute8;
1395 	    END IF;
1396 
1397 	    IF p_x_header_rec.attribute9 IS NULL
1398 	      OR p_x_header_rec.attribute9 = FND_API.G_MISS_CHAR THEN
1399 	       p_x_header_rec.attribute9 := oe_validate.g_attribute9;
1400 	    END IF;
1401 
1402 	    IF p_x_header_rec.attribute10 IS NULL
1403 	      OR p_x_header_rec.attribute10 = FND_API.G_MISS_CHAR THEN
1404 	       p_x_header_rec.attribute10 := Oe_validate.G_attribute10;
1405 	    End IF;
1406 
1407 	    IF p_x_header_rec.attribute11 IS NULL
1408 	      OR p_x_header_rec.attribute11 = FND_API.G_MISS_CHAR THEN
1409 	       p_x_header_rec.attribute11 := oe_validate.g_attribute11;
1410 	    END IF;
1411 
1412 	    IF p_x_header_rec.attribute12 IS NULL
1413 	      OR p_x_header_rec.attribute12 = FND_API.G_MISS_CHAR THEN
1414 	       p_x_header_rec.attribute12 := oe_validate.g_attribute12;
1415 	    END IF;
1416 
1417 	    IF p_x_header_rec.attribute13 IS NULL
1418 	      OR p_x_header_rec.attribute13 = FND_API.G_MISS_CHAR THEN
1419 	       p_x_header_rec.attribute13 := oe_validate.g_attribute13;
1420 	    END IF;
1421 
1422 	    IF p_x_header_rec.attribute14 IS NULL
1423 	      OR p_x_header_rec.attribute14 = FND_API.G_MISS_CHAR THEN
1424 	       p_x_header_rec.attribute14 := oe_validate.g_attribute14;
1425 	    END IF;
1426 
1427 	    IF p_x_header_rec.attribute15 IS NULL
1428 	      OR p_x_header_rec.attribute15 = FND_API.G_MISS_CHAR THEN
1429 	       p_x_header_rec.attribute15 := oe_validate.g_attribute15;
1430 	    END IF;
1431 
1432 	    IF p_x_header_rec.attribute16 IS NULL  -- for bug 2184255
1433 	      OR p_x_header_rec.attribute16 = FND_API.G_MISS_CHAR THEN
1434 	       p_x_header_rec.attribute16 := oe_validate.g_attribute16;
1435 	    END IF;
1436 
1437 	    IF p_x_header_rec.attribute17 IS NULL
1438 	      OR p_x_header_rec.attribute17 = FND_API.G_MISS_CHAR THEN
1439 	       p_x_header_rec.attribute17 := oe_validate.g_attribute17;
1440 	    END IF;
1441 
1442 	    IF p_x_header_rec.attribute18 IS NULL
1443 	      OR p_x_header_rec.attribute18 = FND_API.G_MISS_CHAR THEN
1444 	       p_x_header_rec.attribute18 := oe_validate.g_attribute18;
1445 	    END IF;
1446 
1447 	    IF p_x_header_rec.attribute19 IS NULL
1448 	      OR p_x_header_rec.attribute19 = FND_API.G_MISS_CHAR THEN
1449 	       p_x_header_rec.attribute19 := oe_validate.g_attribute19;
1450 	    END IF;
1451 
1452 	    IF p_x_header_rec.attribute20 IS NULL
1453 	      OR p_x_header_rec.attribute20 = FND_API.G_MISS_CHAR THEN
1454 	       p_x_header_rec.attribute20 := oe_validate.g_attribute20;
1455 	    END IF;
1456 
1457 	    -- end of assignments, bug 2511313
1458 	 END IF;
1459 	END IF ; -- If flex enabled
1460     END IF;
1461 
1462     if l_debug_level > 0 then
1463       oe_debug_pub.add('After blanket header_desc_flex  ' || x_return_status,2);
1464       oe_debug_pub.add('Exiting OE_BLANKET_UTIL.VALIDATE_ATTRIBUTES',1);
1465     end if;
1466 EXCEPTION
1467 
1468     WHEN FND_API.G_EXC_ERROR THEN
1469       x_return_status := FND_API.G_RET_STS_ERROR;
1470 
1471     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1472       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1473 
1474     WHEN OTHERS THEN
1475       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1476 
1477       IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1478       THEN
1479         OE_MSG_PUB.Add_Exc_Msg
1480         (   G_PKG_NAME
1481            ,'Validate Attributes'
1482          );
1483       END IF;
1484 
1485 END Validate_Attributes;
1486 
1487 PROCEDURE Validate_Attributes
1488 ( p_x_line_rec         IN OUT NOCOPY OE_Blanket_PUB.line_rec_type
1489 , p_old_line_rec       IN OE_Blanket_PUB.line_rec_type
1490 ,  p_validation_level     IN   NUMBER := FND_API.G_VALID_LEVEL_FULL
1491 , x_return_status      OUT NOCOPY VARCHAR2
1492 ) IS
1493 --{ Bug # 5562785
1494 
1495 l_context_required_flag fnd_descriptive_flexs_vl.context_required_flag%TYPE;
1496 l_default_context_field_name fnd_descriptive_flexs_vl.default_context_field_name%TYPE;
1497 l_validate_line VARCHAR2(1) := 'Y';
1498 
1499 CURSOR c_check_context(l_flex_name fnd_descriptive_flexs_vl.descriptive_flexfield_name%TYPE) IS
1500   SELECT context_required_flag, default_context_field_name
1501   FROM FND_DESCRIPTIVE_FLEXS_VL
1502   WHERE (application_id = 660)
1503   AND (descriptive_flexfield_name = l_flex_name);
1504   -- Bug # 5562785}
1505 --
1506 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1507 --
1508 BEGIN
1509 
1510     if l_debug_level > 0 then
1511        oe_debug_pub.add('Enter procedure OE_blanket_util.validate line Attributes',1);
1512     end if;
1513 
1514     x_return_status := FND_API.G_RET_STS_SUCCESS;
1515  -- Compare line attributes with header record if the header record is
1516     -- created in the same call to process_order. If they match
1517     -- then no need to re-validate line attributes.
1518 
1519 
1520 --  Validate line attributes
1521 
1522     IF  p_x_line_rec.accounting_rule_id IS NOT NULL AND
1523         (   p_x_line_rec.accounting_rule_id <>
1524             p_old_line_rec.accounting_rule_id OR
1525             p_old_line_rec.accounting_rule_id IS NULL )
1526     THEN
1527       if l_debug_level > 0 then
1528         oe_debug_pub.add('Calling OE_VALIDATE for accounting_rule',1);
1529       end if;
1530         IF NOT OE_Validate.Accounting_Rule(p_x_line_rec.accounting_rule_id) THEN
1531          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1532             p_x_line_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1533 	   p_x_line_rec.accounting_rule_id := NULL;
1534 	 ELSE
1535               x_return_status := FND_API.G_RET_STS_ERROR;
1536          END IF;
1537         END IF;
1538     END IF;
1539 
1540     IF  p_x_line_rec.freight_terms_code IS NOT NULL AND
1541         (   p_x_line_rec.freight_terms_code <>
1542             p_old_line_rec.freight_terms_code OR
1543             p_old_line_rec.freight_terms_code IS NULL )
1544     THEN
1545 
1546         IF NOT OE_Validate.Freight_Terms(p_x_line_rec.freight_terms_code) THEN
1547          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1548             p_x_line_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1549 	   p_x_line_rec.freight_terms_code := NULL;
1550 	 ELSE
1551             x_return_status := FND_API.G_RET_STS_ERROR;
1552          END IF;
1553 	END IF;
1554     END IF;
1555 
1556     IF  p_x_line_rec.invoicing_rule_id IS NOT NULL AND
1557         (   p_x_line_rec.invoicing_rule_id <>
1558             p_old_line_rec.invoicing_rule_id OR
1559             p_old_line_rec.invoicing_rule_id IS NULL )
1560     THEN
1561         IF NOT OE_Validate.Invoicing_Rule(p_x_line_rec.invoicing_rule_id) THEN
1562          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1563             p_x_line_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1564 	   p_x_line_rec.invoicing_rule_id := NULL;
1565 	 ELSE
1566             x_return_status := FND_API.G_RET_STS_ERROR;
1567          END IF;
1568         END IF;
1569     END IF;
1570 
1571     IF  p_x_line_rec.item_type_code IS NOT NULL AND
1572         (   p_x_line_rec.item_type_code <>
1573             p_old_line_rec.item_type_code OR
1574             p_old_line_rec.item_type_code IS NULL )
1575     THEN
1576         IF NOT OE_Validate.Item_Type(p_x_line_rec.item_type_code) THEN
1577             x_return_status := FND_API.G_RET_STS_ERROR;
1578         END IF;
1579     END IF;
1580 
1581 
1582     IF  p_x_line_rec.payment_term_id IS NOT NULL AND
1583         (   p_x_line_rec.payment_term_id <>
1584             p_old_line_rec.payment_term_id OR
1585             p_old_line_rec.payment_term_id IS NULL )
1586     THEN
1587         IF NOT OE_Validate.Payment_Term(p_x_line_rec.payment_term_id) THEN
1588          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1589             p_x_line_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1590 	   p_x_line_rec.payment_term_id := NULL;
1591 	 ELSE
1592              x_return_status := FND_API.G_RET_STS_ERROR;
1593          END IF;
1594         END IF;
1595     END IF;
1596 
1597     IF  p_x_line_rec.price_list_id IS NOT NULL AND
1598         (   p_x_line_rec.price_list_id <>
1599             p_old_line_rec.price_list_id OR
1600             p_old_line_rec.price_list_id IS NULL )
1601     THEN
1602         IF NOT OE_Validate.Price_List(p_x_line_rec.price_list_id) THEN
1603              x_return_status := FND_API.G_RET_STS_ERROR;
1604         END IF;
1605     END IF;
1606 
1607     IF  p_x_line_rec.shipping_method_code IS NOT NULL AND
1608         (   p_x_line_rec.shipping_method_code <>
1609             p_old_line_rec.shipping_method_code OR
1610             p_old_line_rec.shipping_method_code IS NULL )
1611     THEN
1612         IF NOT OE_Validate.Shipping_Method(p_x_line_rec.shipping_method_code) THEN
1613          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1614             p_x_line_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1615 	   p_x_line_rec.shipping_method_code := NULL;
1616 	 ELSE
1617             x_return_status := FND_API.G_RET_STS_ERROR;
1618          END IF;
1619         END IF;
1620     END IF;
1621 
1622     IF  p_x_line_rec.ship_from_org_id IS NOT NULL AND
1623         (   p_x_line_rec.ship_from_org_id <>
1624             p_old_line_rec.ship_from_org_id OR
1625             p_old_line_rec.ship_from_org_id IS NULL )
1626     THEN
1627         IF NOT OE_Validate.Ship_From_Org(p_x_line_rec.ship_from_org_id) THEN
1628           IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1629             p_x_line_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1630 	   p_x_line_rec.ship_from_org_id := NULL;
1631 	  ELSE
1632             x_return_status := FND_API.G_RET_STS_ERROR;
1633           END IF;
1634         END IF;
1635     END IF;
1636 
1637     IF  p_x_line_rec.salesrep_id IS NOT NULL AND
1638         (   p_x_line_rec.salesrep_id <>
1639             p_old_line_rec.salesrep_id OR
1640             p_old_line_rec.salesrep_id IS NULL )
1641     THEN
1642         IF NOT OE_Validate.salesrep(p_x_line_rec.salesrep_id) THEN
1643          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1644             p_x_line_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1645 	   p_x_line_rec.salesrep_id := NULL;
1646 	 ELSE
1647              x_return_status := FND_API.G_RET_STS_ERROR;
1648          END IF;
1649         END IF;
1650     END IF;
1651 
1652     --{ Bug # 5562785
1653 
1654 OPEN c_check_context('OE_BLKT_LINE_ATTRIBUTES');
1655 FETCH c_check_context INTO l_context_required_flag,l_default_context_field_name;
1656 CLOSE c_check_context;
1657 
1658 oe_debug_pub.add('Maitrayee: Entering the code change in Validate_Attributes');
1659 -- Skip the Validation if not changes are made in the DFF from the UI.
1660 
1661 IF l_context_required_flag = 'Y' AND ( p_x_line_rec.context IS NULL OR p_x_line_rec.context = FND_API.G_MISS_CHAR ) AND (OE_GLOBALS.G_UI_FLAG) THEN
1662 
1663   l_validate_line := 'N';
1664   IF l_debug_level > 0 then
1665     oe_debug_pub.add('Skipping Validation');
1666   END IF;
1667 
1668 ELSIF l_context_required_flag = 'Y' AND ( p_x_line_rec.context IS NULL OR p_x_line_rec.context = FND_API.G_MISS_CHAR ) AND NOT (OE_GLOBALS.G_UI_FLAG) THEN
1669 
1670 -- Show Error message if appropriate context value is not passed
1671 -- from the Process Order Call and if the Context field is required.
1672 
1673 	FND_MESSAGE.SET_NAME('FND', 'ONT_BLKT_CONTEXT_NOT_FOUND');
1674 
1675         OE_MSG_PUB.ADD;
1676 	IF l_debug_level  > 0 THEN
1677             oe_debug_pub.add(  'Context not set for OE_BLKT_LINE_ATTRIBUTES DFF ' ) ;
1678         END IF;
1679 	RAISE FND_API.G_EXC_ERROR;
1680  ELSE
1681 
1682  -- Validate the DFF in all other cases.
1683 
1684   l_validate_line := 'Y';
1685 
1686   IF l_debug_level > 0 then
1687      oe_debug_pub.add('Validating the Flex Field');
1688   END IF;
1689 
1690 END IF;
1691 
1692 -- Bug # 5562785)
1693 
1694   IF(l_validate_line = 'Y') THEN   -- Bug # 5562785
1695 
1696     IF p_x_line_rec.operation = oe_globals.g_opr_create OR
1697 	(p_x_line_rec.operation = oe_globals.g_opr_update  AND
1698           (p_x_line_rec.attribute1 IS NOT NULL AND
1699         (   p_x_line_rec.attribute1 <>
1700             p_old_line_rec.attribute1 OR
1701             p_old_line_rec.attribute1 IS NULL ))
1702     OR  (p_x_line_rec.attribute10 IS NOT NULL AND
1703         (   p_x_line_rec.attribute10 <>
1704             p_old_line_rec.attribute10 OR
1705             p_old_line_rec.attribute10 IS NULL ))
1706     OR  (p_x_line_rec.attribute11 IS NOT NULL AND
1707         (   p_x_line_rec.attribute11 <>
1708             p_old_line_rec.attribute11 OR
1709             p_old_line_rec.attribute11 IS NULL ))
1710     OR  (p_x_line_rec.attribute12 IS NOT NULL AND
1711         (   p_x_line_rec.attribute12 <>
1712             p_old_line_rec.attribute12 OR
1713             p_old_line_rec.attribute12 IS NULL ))
1714     OR  (p_x_line_rec.attribute13 IS NOT NULL AND
1715         (   p_x_line_rec.attribute13 <>
1716             p_old_line_rec.attribute13 OR
1717             p_old_line_rec.attribute13 IS NULL ))
1718     OR  (p_x_line_rec.attribute14 IS NOT NULL AND
1719         (   p_x_line_rec.attribute14 <>
1720             p_old_line_rec.attribute14 OR
1721             p_old_line_rec.attribute14 IS NULL ))
1722     OR  (p_x_line_rec.attribute15 IS NOT NULL AND
1723         (   p_x_line_rec.attribute15 <>
1724             p_old_line_rec.attribute15 OR
1725             p_old_line_rec.attribute15 IS NULL ))
1726     OR  (p_x_line_rec.attribute16 IS NOT NULL AND -- For bug 2184255
1727         (   p_x_line_rec.attribute16 <>
1728             p_old_line_rec.attribute16 OR
1729             p_old_line_rec.attribute16 IS NULL ))
1730     OR  (p_x_line_rec.attribute17 IS NOT NULL AND
1731         (   p_x_line_rec.attribute17 <>
1732             p_old_line_rec.attribute17 OR
1733             p_old_line_rec.attribute17 IS NULL ))
1734     OR  (p_x_line_rec.attribute18 IS NOT NULL AND
1735         (   p_x_line_rec.attribute18 <>
1736             p_old_line_rec.attribute18 OR
1737             p_old_line_rec.attribute18 IS NULL ))
1738     OR  (p_x_line_rec.attribute19 IS NOT NULL AND
1739         (   p_x_line_rec.attribute19 <>
1740             p_old_line_rec.attribute19 OR
1741             p_old_line_rec.attribute19 IS NULL ))
1742     OR  (p_x_line_rec.attribute2 IS NOT NULL AND
1743         (   p_x_line_rec.attribute2 <>
1744             p_old_line_rec.attribute2 OR
1745             p_old_line_rec.attribute2 IS NULL ))
1746     OR  (p_x_line_rec.attribute20 IS NOT NULL AND
1747         (   p_x_line_rec.attribute20 <>
1748             p_old_line_rec.attribute20 OR
1749             p_old_line_rec.attribute20 IS NULL ))
1750     OR  (p_x_line_rec.attribute3 IS NOT NULL AND
1751         (   p_x_line_rec.attribute3 <>
1752             p_old_line_rec.attribute3 OR
1753             p_old_line_rec.attribute3 IS NULL ))
1754     OR  (p_x_line_rec.attribute4 IS NOT NULL AND
1755         (   p_x_line_rec.attribute4 <>
1756             p_old_line_rec.attribute4 OR
1757             p_old_line_rec.attribute4 IS NULL ))
1758     OR  (p_x_line_rec.attribute5 IS NOT NULL AND
1759         (   p_x_line_rec.attribute5 <>
1760             p_old_line_rec.attribute5 OR
1761             p_old_line_rec.attribute5 IS NULL ))
1762     OR  (p_x_line_rec.attribute6 IS NOT NULL AND
1763         (   p_x_line_rec.attribute6 <>
1764             p_old_line_rec.attribute6 OR
1765             p_old_line_rec.attribute6 IS NULL ))
1766     OR  (p_x_line_rec.attribute7 IS NOT NULL AND
1767         (   p_x_line_rec.attribute7 <>
1768             p_old_line_rec.attribute7 OR
1769             p_old_line_rec.attribute7 IS NULL ))
1770     OR  (p_x_line_rec.attribute8 IS NOT NULL AND
1771         (   p_x_line_rec.attribute8 <>
1772             p_old_line_rec.attribute8 OR
1773             p_old_line_rec.attribute8 IS NULL ))
1774     OR  (p_x_line_rec.attribute9 IS NOT NULL AND
1775         (   p_x_line_rec.attribute9 <>
1776             p_old_line_rec.attribute9 OR
1777             p_old_line_rec.attribute9 IS NULL ))
1778     OR  (p_x_line_rec.context IS NOT NULL AND
1779         (   p_x_line_rec.context <>
1780             p_old_line_rec.context OR
1781             p_old_line_rec.context IS NULL )))
1782     THEN
1783 
1784        oe_debug_pub.add('Before calling line_desc_flex',2);
1785        IF Oe_Order_Cache.IS_FLEX_ENABLED('OE_BLKT_LINE_ATTRIBUTES') = 'Y'  THEN
1786 
1787 	  IF NOT OE_VALIDATE.Line_Desc_Flex
1788 	    (p_context            => p_x_line_rec.context
1789 	     ,p_attribute1         => p_x_line_rec.attribute1
1790 	     ,p_attribute2         => p_x_line_rec.attribute2
1791 	     ,p_attribute3         => p_x_line_rec.attribute3
1792 	     ,p_attribute4         => p_x_line_rec.attribute4
1793 	     ,p_attribute5         => p_x_line_rec.attribute5
1794 	     ,p_attribute6         => p_x_line_rec.attribute6
1795 	     ,p_attribute7         => p_x_line_rec.attribute7
1796 	     ,p_attribute8         => p_x_line_rec.attribute8
1797 	     ,p_attribute9         => p_x_line_rec.attribute9
1798 	     ,p_attribute10        => p_x_line_rec.attribute10
1799 	     ,p_attribute11        => p_x_line_rec.attribute11
1800 	     ,p_attribute12        => p_x_line_rec.attribute12
1801 	     ,p_attribute13        => p_x_line_rec.attribute13
1802 	     ,p_attribute14        => p_x_line_rec.attribute14
1803 	     ,p_attribute15        => p_x_line_rec.attribute15
1804 	     ,p_attribute16        => p_x_line_rec.attribute16  -- for bug 2184255
1805 	     ,p_attribute17        => p_x_line_rec.attribute17
1806 	     ,p_attribute18        => p_x_line_rec.attribute18
1807 	     ,p_attribute19        => p_x_line_rec.attribute19
1808 	     ,p_attribute20        => p_x_line_rec.attribute20
1809 	     ,p_document_type      => 'BLANKET'              ) THEN	-- Bug # 5562785
1810 
1811 	     IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1812 	       p_x_line_rec.operation = OE_GLOBALS.G_OPR_CREATE   THEN
1813 
1814                 p_x_line_rec.context    := null;
1815                 p_x_line_rec.attribute1 := null;
1816                 p_x_line_rec.attribute2 := null;
1817                 p_x_line_rec.attribute3 := null;
1818                 p_x_line_rec.attribute4 := null;
1819                 p_x_line_rec.attribute5 := null;
1820                 p_x_line_rec.attribute6 := null;
1821                 p_x_line_rec.attribute7 := null;
1822                 p_x_line_rec.attribute8 := null;
1823                 p_x_line_rec.attribute9 := null;
1824                 p_x_line_rec.attribute10 := null;
1825                 p_x_line_rec.attribute11 := null;
1826                 p_x_line_rec.attribute12 := null;
1827                 p_x_line_rec.attribute13 := null;
1828                 p_x_line_rec.attribute14 := null;
1829                 p_x_line_rec.attribute15 := null;
1830                 p_x_line_rec.attribute16 := null;  -- for bug 2184255
1831                 p_x_line_rec.attribute17 := null;
1832                 p_x_line_rec.attribute18 := null;
1833                 p_x_line_rec.attribute19 := null;
1834                 p_x_line_rec.attribute20 := null;
1835 
1836 	   ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF AND
1837 	     p_x_line_rec.operation =OE_GLOBALS.G_OPR_CREATE THEN
1838 
1839                 p_x_line_rec.context    := FND_API.G_MISS_CHAR;
1840                 p_x_line_rec.attribute1 := FND_API.G_MISS_CHAR;
1841                 p_x_line_rec.attribute2 := FND_API.G_MISS_CHAR;
1842                 p_x_line_rec.attribute3 := FND_API.G_MISS_CHAR;
1843                 p_x_line_rec.attribute4 := FND_API.G_MISS_CHAR;
1844                 p_x_line_rec.attribute5 := FND_API.G_MISS_CHAR;
1845                 p_x_line_rec.attribute6 := FND_API.G_MISS_CHAR;
1846                 p_x_line_rec.attribute7 := FND_API.G_MISS_CHAR;
1847                 p_x_line_rec.attribute8 := FND_API.G_MISS_CHAR;
1848                 p_x_line_rec.attribute9 := FND_API.G_MISS_CHAR;
1849                 p_x_line_rec.attribute10 := FND_API.G_MISS_CHAR;
1850                 p_x_line_rec.attribute11 := FND_API.G_MISS_CHAR;
1851                 p_x_line_rec.attribute12 := FND_API.G_MISS_CHAR;
1852                 p_x_line_rec.attribute13 := FND_API.G_MISS_CHAR;
1853                 p_x_line_rec.attribute14 := FND_API.G_MISS_CHAR;
1854                 p_x_line_rec.attribute15 := FND_API.G_MISS_CHAR;
1855                 p_x_line_rec.attribute16 := FND_API.G_MISS_CHAR;  -- for bug 2184255
1856                 p_x_line_rec.attribute17 := FND_API.G_MISS_CHAR;
1857                 p_x_line_rec.attribute18 := FND_API.G_MISS_CHAR;
1858                 p_x_line_rec.attribute19 := FND_API.G_MISS_CHAR;
1859                 p_x_line_rec.attribute20 := FND_API.G_MISS_CHAR;
1860 
1861 	   ELSIF p_validation_level = FND_API.G_VALID_LEVEL_NONE THEN
1862   	        NULL;
1863 
1864           ELSE
1865 	     x_return_status := FND_API.G_RET_STS_ERROR;
1866           END IF;
1867 
1868 	ELSE -- if the flex validation is successfull
1869 	    -- For bug 2511313
1870 	    IF p_x_line_rec.context IS NULL
1871 	      OR p_x_line_rec.context = FND_API.G_MISS_CHAR THEN
1872 	       p_x_line_rec.context    := oe_validate.g_context;
1873 	    END IF;
1874 
1875 	    IF p_x_line_rec.attribute1 IS NULL
1876 	      OR p_x_line_rec.attribute1 = FND_API.G_MISS_CHAR THEN
1877 	       p_x_line_rec.attribute1 := oe_validate.g_attribute1;
1878 	    END IF;
1879 
1880 	    IF p_x_line_rec.attribute2 IS NULL
1881 	      OR p_x_line_rec.attribute2 = FND_API.G_MISS_CHAR THEN
1882 	       p_x_line_rec.attribute2 := oe_validate.g_attribute2;
1883 	    END IF;
1884 
1885 	    IF p_x_line_rec.attribute3 IS NULL
1886 	      OR p_x_line_rec.attribute3 = FND_API.G_MISS_CHAR THEN
1887 	       p_x_line_rec.attribute3 := oe_validate.g_attribute3;
1888 	    END IF;
1889 
1890 	    IF p_x_line_rec.attribute4 IS NULL
1891 	      OR p_x_line_rec.attribute4 = FND_API.G_MISS_CHAR THEN
1892 	       p_x_line_rec.attribute4 := oe_validate.g_attribute4;
1893 	    END IF;
1894 
1895 	    IF p_x_line_rec.attribute5 IS NULL
1896 	      OR p_x_line_rec.attribute5 = FND_API.G_MISS_CHAR THEN
1897 	       p_x_line_rec.attribute5 := oe_validate.g_attribute5;
1898 	    END IF;
1899 
1900 	    IF p_x_line_rec.attribute6 IS NULL
1901 	      OR p_x_line_rec.attribute6 = FND_API.G_MISS_CHAR THEN
1902 	       p_x_line_rec.attribute6 := oe_validate.g_attribute6;
1903 	    END IF;
1904 
1905 	    IF p_x_line_rec.attribute7 IS NULL
1906 	      OR p_x_line_rec.attribute7 = FND_API.G_MISS_CHAR THEN
1907 	       p_x_line_rec.attribute7 := oe_validate.g_attribute7;
1908 	    END IF;
1909 
1910 	    IF p_x_line_rec.attribute8 IS NULL
1911 	      OR p_x_line_rec.attribute8 = FND_API.G_MISS_CHAR THEN
1912 	       p_x_line_rec.attribute8 := oe_validate.g_attribute8;
1913 	    END IF;
1914 
1915 	    IF p_x_line_rec.attribute9 IS NULL
1916 	      OR p_x_line_rec.attribute9 = FND_API.G_MISS_CHAR THEN
1917 	       p_x_line_rec.attribute9 := oe_validate.g_attribute9;
1918 	    END IF;
1919 
1920 	    IF p_x_line_rec.attribute10 IS NULL
1921 	      OR p_x_line_rec.attribute10 = FND_API.G_MISS_CHAR THEN
1922 	       p_x_line_rec.attribute10 := Oe_validate.G_attribute10;
1923 	    End IF;
1924 
1925 	    IF p_x_line_rec.attribute11 IS NULL
1926 	      OR p_x_line_rec.attribute11 = FND_API.G_MISS_CHAR THEN
1927 	       p_x_line_rec.attribute11 := oe_validate.g_attribute11;
1928 	    END IF;
1929 
1930 	    IF p_x_line_rec.attribute12 IS NULL
1931 	      OR p_x_line_rec.attribute12 = FND_API.G_MISS_CHAR THEN
1932 	       p_x_line_rec.attribute12 := oe_validate.g_attribute12;
1933 	    END IF;
1934 
1935 	    IF p_x_line_rec.attribute13 IS NULL
1936 	      OR p_x_line_rec.attribute13 = FND_API.G_MISS_CHAR THEN
1937 	       p_x_line_rec.attribute13 := oe_validate.g_attribute13;
1938 	    END IF;
1939 
1940 	    IF p_x_line_rec.attribute14 IS NULL
1941 	      OR p_x_line_rec.attribute14 = FND_API.G_MISS_CHAR THEN
1942 	       p_x_line_rec.attribute14 := oe_validate.g_attribute14;
1943 	    END IF;
1944 
1945 	    IF p_x_line_rec.attribute15 IS NULL
1946 	      OR p_x_line_rec.attribute15 = FND_API.G_MISS_CHAR THEN
1947 	       p_x_line_rec.attribute15 := oe_validate.g_attribute15;
1948 	    END IF;
1949 	    IF p_x_line_rec.attribute16 IS NULL  -- for bug 2184255
1950 	      OR p_x_line_rec.attribute16 = FND_API.G_MISS_CHAR THEN
1951 	       p_x_line_rec.attribute16 := oe_validate.g_attribute16;
1952 	    END IF;
1953 
1954 	    IF p_x_line_rec.attribute17 IS NULL
1955 	      OR p_x_line_rec.attribute17 = FND_API.G_MISS_CHAR THEN
1956 	       p_x_line_rec.attribute17 := oe_validate.g_attribute17;
1957 	    END IF;
1958 
1959 	    IF p_x_line_rec.attribute18 IS NULL
1960 	      OR p_x_line_rec.attribute18 = FND_API.G_MISS_CHAR THEN
1961 	       p_x_line_rec.attribute18 := oe_validate.g_attribute18;
1962 	    END IF;
1963 
1964 	    IF p_x_line_rec.attribute19 IS NULL
1965 	      OR p_x_line_rec.attribute19 = FND_API.G_MISS_CHAR THEN
1966 	       p_x_line_rec.attribute19 := oe_validate.g_attribute19;
1967 	    END IF;
1968 
1969 	    IF p_x_line_rec.attribute20 IS NULL  -- for bug 2184255
1970 	      OR p_x_line_rec.attribute20 = FND_API.G_MISS_CHAR THEN
1971 	       p_x_line_rec.attribute20 := oe_validate.g_attribute20;
1972 	    END IF;
1973 
1974 	    -- end of assignments, bug 2511313
1975          END IF; -- Flex Validation successfull
1976 	END IF; -- Is flex enabled
1977 
1978          oe_debug_pub.add('After line_desc_flex  ' || x_return_status,2);
1979 
1980     END IF;  -- For Additional Line Information
1981 
1982   END IF; -- 5562785
1983 
1984     if l_debug_level > 0 then
1985         oe_debug_pub.add('Exiting procedure OE_BLANKET_UTIL.Validate Line Attributes',1);
1986     end if;
1987 
1988 EXCEPTION
1989 
1990     WHEN FND_API.G_EXC_ERROR THEN
1991 
1992         x_return_status := FND_API.G_RET_STS_ERROR;
1993 
1994     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1995 
1996         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1997 
1998     WHEN OTHERS THEN
1999 
2000         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2001 
2002         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2003         THEN
2004             OE_MSG_PUB.Add_Exc_Msg
2005             (   G_PKG_NAME
2006             ,   'Validate Attributes'
2007             );
2008         END IF;
2009 
2010 END Validate_Attributes;
2011 
2012 FUNCTION Validate_Item_Fields(
2013  p_item_identifier_type IN VARCHAR2,
2014  p_inventory_item_id IN NUMBER,
2015  p_sold_to_org_id IN NUMBER,
2016  p_ordered_item_id IN NUMBER,
2017  p_ordered_item IN VARCHAR2
2018 )
2019 RETURN BOOLEAN
2020 IS
2021 l_dummy VARCHAR2(240);
2022 
2023 --code taken from OE_validate_line.validate_item_fields
2024 /* added for 2219230 */
2025 l_org_flag   NUMBER := 2;
2026 item_val_org NUMBER := to_number(OE_Sys_Parameters.VALUE('MASTER_ORGANIZATION_ID'));
2027 
2028 CURSOR xref IS
2029         SELECT DECODE(items.org_independent_flag, 'Y', 1,
2030                  DECODE(items.organization_id, item_val_org, 1, 2))
2031         FROM  mtl_cross_reference_types types
2032             , mtl_cross_references items
2033             , mtl_system_items_vl sitems
2034         WHERE types.cross_reference_type = items.cross_reference_type
2035            AND items.inventory_item_id = sitems.inventory_item_id
2036            AND sitems.organization_id = item_val_org
2037            AND sitems.inventory_item_id = p_inventory_item_id
2038            AND items.cross_reference_type = p_item_identifier_type
2039            AND items.cross_reference = p_ordered_item
2040 	   ORDER BY 1;
2041 /* end of code added for 2219230 */
2042 
2043 --
2044 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2045 --
2046 BEGIN
2047     if l_debug_level > 0 then
2048      oe_debug_pub.add('In validate Item Fields', 1);
2049 
2050      oe_debug_pub.add('item identifier type :'||p_item_identifier_type);
2051      oe_debug_pub.add('inventory item id :'||p_inventory_item_id);
2052      oe_debug_pub.add('ordered item id :'||p_ordered_item_id);
2053      oe_debug_pub.add('ordered item :'||p_ordered_item);
2054      oe_debug_pub.add('sold to org id :'||p_sold_to_org_id);
2055     end if;
2056      --perform validation of inventory_item_id based on context
2057       IF p_item_identifier_type = 'INT' THEN --validate inventory_item_id
2058        if l_debug_level > 0 then
2059 	  oe_debug_pub.add('Blanket In validate INT');
2060        end if;
2061       	   	SELECT 'valid'
2062       	   	INTO  l_dummy
2063       	   	FROM  mtl_system_items_b
2064       	  	WHERE inventory_item_id = p_inventory_item_id
2065       	   	AND organization_id = OE_Sys_Parameters.VALUE_WNPS('MASTER_ORGANIZATION_ID')
2066                 AND customer_order_enabled_flag = 'Y';
2067 
2068       ELSIF p_item_identifier_type = 'CUST' THEN
2069        if l_debug_level > 0 then
2070 	oe_debug_pub.add('Blanket In validate CUST',1);
2071        end if;
2072 	      	SELECT 'valid'
2073       		INTO  l_dummy
2074       		FROM   mtl_customer_items citems
2075         	        ,mtl_customer_item_xrefs cxref
2076         	    	,mtl_system_items_vl sitems
2077       		WHERE citems.customer_item_id = cxref.customer_item_id
2078         		AND cxref.inventory_item_id = sitems.inventory_item_id
2079         		AND sitems.inventory_item_id = p_inventory_item_id
2080         		AND sitems.organization_id =
2081 		   	OE_Sys_Parameters.VALUE_WNPS('MASTER_ORGANIZATION_ID')
2082         		AND citems.customer_item_id = p_ordered_item_id
2083         		AND citems.customer_id = p_sold_to_org_id
2084          		AND citems.inactive_flag = 'N'
2085         		AND cxref.inactive_flag = 'N';
2086 
2087       ELSIF  p_item_identifier_type = 'CAT' THEN
2088        if l_debug_level > 0 then
2089 	oe_debug_pub.add('Blanket In validate CAT');
2090        end if;
2091              SELECT  'VALID'
2092             INTO    l_dummy
2093             FROM    MTL_CATEGORIES_VL
2094             WHERE   CATEGORY_ID = p_inventory_item_id
2095             AND     ENABLED_FLAG = 'Y';
2096 
2097       ELSE
2098        if l_debug_level > 0 then
2099 	oe_debug_pub.add('Blanket In validate generic');
2100        end if;
2101         	--code taken from OE_validate_line.validate_item_fields
2102         	/* SELECT replaced for with the following for 2219230 */
2103               if l_debug_level > 0 then
2104         	oe_debug_pub.add('Validating generic item, item_val_org:'||to_char(item_val_org),5);
2105               end if;
2106         	OPEN xref;
2107         	FETCH xref INTO l_org_flag;
2108         	IF xref%NOTFOUND OR l_org_flag <> 1 THEN
2109                  if l_debug_level > 0 then
2110         	  oe_debug_pub.add('Blanket Invalid Generic Item', 1);
2111                  end if;
2112         	  CLOSE xref;
2113         	END IF;
2114         	CLOSE xref;
2115 
2116       END IF;
2117 
2118       RETURN TRUE;
2119 
2120     EXCEPTION
2121 	   WHEN NO_DATA_FOUND THEN
2122             if l_debug_level > 0 then
2123              oe_debug_pub.add('Validate Item based on context: No data found',1);
2124             end if;
2125 	     RETURN FALSE;
2126            WHEN OTHERS THEN
2127             if l_debug_level > 0 then
2128              oe_debug_pub.add('Validate_Item_Fields: When Others',1);
2129             end if;
2130 	     RETURN FALSE;
2131 END Validate_Item_Fields;
2132 
2133 --PP Revenue Recognition
2134 --bug 4893057
2135 FUNCTION Validate_Accounting_Rule(
2136 p_inventory_item_id IN NUMBER,
2137 p_accounting_rule_id IN NUMBER
2138 )
2139 RETURN BOOLEAN
2140 IS
2141 l_rule_type VARCHAR2(10);
2142 l_item_org NUMBER := to_number(OE_Sys_Parameters.VALUE('MASTER_ORGANIZATION_ID'));
2143 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2144 l_service_item_flag VARCHAR2(1);
2145 l_bom_item_type NUMBER;
2146 l_dummy VARCHAR2(25);
2147 
2148 BEGIN
2149     if l_debug_level > 0 then
2150 	     oe_debug_pub.add('In validate accounting rule', 1);
2151 	     oe_debug_pub.add('inventory item id :'||p_inventory_item_id);
2152 	     oe_debug_pub.add('l_item_org :'||l_item_org);
2153     end if;
2154     --Bug 5169363
2155     --bug5220335 moved the query under BEGIN-EXCEPTION-END
2156     BEGIN
2157        SELECT  'VALID'
2158        INTO    l_dummy
2159        FROM    MTL_CATEGORIES_VL
2160        WHERE   CATEGORY_ID = p_inventory_item_id
2161        AND     ENABLED_FLAG = 'Y';
2162     EXCEPTION
2163        WHEN OTHERS THEN
2164 	  l_dummy := null;
2165     END;
2166 
2167     IF OE_GLOBALS.Equal(l_dummy,'VALID') THEN
2168 	RETURN TRUE;
2169     ELSE
2170 	    IF p_inventory_item_id IS NOT NULL THEN
2171 		select service_item_flag,bom_item_type
2172 		into l_service_item_flag, l_bom_item_type
2173 		from MTL_SYSTEM_ITEMS
2174 		where inventory_item_id = p_inventory_item_id
2175 		AND    organization_id =  l_item_org;
2176 	    END IF;
2177 
2178 	    IF NOT (l_bom_item_type = 4 and l_service_item_flag = 'Y') THEN -- not service
2179 		IF p_accounting_rule_id <> FND_API.G_MISS_NUM AND
2180 		     p_accounting_rule_id IS NOT NULL THEN
2181 			IF l_debug_level > 0 THEN
2182 				oe_debug_pub.add('Getting accounting rule type');
2183 			END IF;
2184 			SELECT type
2185 			INTO l_rule_type
2186 			FROM ra_rules
2187 			WHERE rule_id = p_accounting_rule_id;
2188 			IF l_debug_level > 0 THEN
2189 				oe_debug_pub.add('Rule Type is :'||l_rule_type);
2190 			END IF;
2191 			IF l_rule_type = 'PP_DR_ALL' or l_rule_type = 'PP_DR_PP' THEN
2192 			     RETURN FALSE;
2193 			END IF; --End of rule type
2194 		END IF;--End of accounting type id is not null
2195 	      END IF; --End of item type not Service
2196 
2197 	      RETURN TRUE;
2198     END IF;
2199     --Bug 5169363
2200 
2201 EXCEPTION
2202    WHEN OTHERS THEN
2203 	    if l_debug_level > 0 then
2204 		oe_debug_pub.add('Validate_Accounting Rule: When Others',1);
2205 		oe_debug_pub.add('Error message...'||sqlerrm);
2206 	    end if;
2207     RETURN FALSE;
2208 END Validate_Accounting_Rule;
2209 --bug 4893057
2210 
2211 
2212 PROCEDURE Validate_Entity
2213 ( p_line_rec           IN OUT NOCOPY  OE_Blanket_PUB.line_rec_type
2214 , p_old_line_rec       IN OE_Blanket_PUB.Line_rec_type := OE_Blanket_PUB.G_MISS_BLANKET_LINE_REC
2215 , x_return_status      OUT NOCOPY VARCHAR2
2216 )IS
2217 
2218 l_dummy varchar2(30);
2219 l_valid_line_number varchar2(1);
2220 l_old_line_rec OE_Blanket_PUB.Line_rec_type  := p_old_line_rec;
2221 l_site_use_code   VARCHAR2(30);
2222 l_return_status varchar2(1);
2223 
2224 --
2225 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2226 --
2227 l_list_line_exists            VARCHAR2(1) := 'N';
2228 BEGIN
2229 
2230     x_return_status := FND_API.G_RET_STS_SUCCESS;
2231 
2232     if l_debug_level > 0 then
2233        oe_debug_pub.add('Enter OE_BLANKET_UTIL.Validate ENTITY - Line',1);
2234        oe_debug_pub.add('Operation : '||p_line_rec.operation);
2235        oe_debug_pub.add('Price List ID : '||p_line_rec.price_list_id);
2236        oe_debug_pub.add('Unit List Price : '||p_line_rec.unit_list_price);
2237        oe_debug_pub.add('Line end date : '||p_line_rec.end_date_active);
2238        oe_debug_pub.add('Header end date : '||g_header_rec.end_date_active);
2239     end if;
2240 
2241     -- Load old line rec if not passed
2242     IF p_line_rec.operation = oe_globals.g_opr_update THEN
2243        IF l_old_line_rec.line_id is null THEN
2244    	  l_old_line_rec := Query_Row(p_line_id => p_line_rec.line_id);
2245        END IF;
2246     END IF;
2247 
2248   -- Validate Last Updated By values.
2249     -- Added for bug #6270818.
2250     IF p_line_rec.operation = oe_globals.g_opr_update
2251     THEN
2252        If p_line_rec.last_updated_by <> FND_GLOBAL.USER_ID or
2253            l_old_line_rec.last_updated_by <> FND_GLOBAL.USER_ID
2254        THEN
2255           p_line_rec.last_updated_by := FND_GLOBAL.USER_ID;
2256           l_old_line_rec.last_updated_by := FND_GLOBAL.USER_ID;
2257       END IF;
2258           p_line_rec.last_update_date := sysdate;
2259           l_old_line_rec.last_update_date := sysdate;
2260      END IF;
2261 
2262 
2263     -- Load header
2264     Load_Header(p_header_id => p_line_rec.header_id,
2265                 x_return_status => l_return_status);
2266     IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2267        x_return_status := l_return_status;
2268     END IF;
2269 
2270     -- Versioning/Reasons changes (moved to beginning for bug 3775937
2271     if OE_CODE_CONTROL.Code_Release_Level >= '110510' AND
2272        OE_GLOBALS.G_CAPTURED_REASON = 'V' THEN
2273         OE_GLOBALS.G_REASON_CODE := p_line_rec.revision_change_reason_code;
2274         OE_GLOBALS.G_REASON_COMMENTS := p_line_rec.revision_change_comments;
2275         OE_GLOBALS.G_CAPTURED_REASON := 'Y';
2276     end if;
2277 
2278    -- added for bug 3443777 need to call validate entity for reasons capture
2279    IF (p_line_rec.operation <> OE_GLOBALS.g_opr_delete) THEN
2280 
2281     -----------------------------------------------------------
2282     --  Check required attributes.
2283     -----------------------------------------------------------
2284 
2285      if l_debug_level > 0 then
2286 	oe_debug_pub.add('Blanket In validate entity 1');
2287         oe_debug_pub.add('1 '||x_return_status, 1);
2288      end if;
2289 
2290     IF  p_line_rec.line_id IS NULL
2291     THEN
2292 
2293         x_return_status := FND_API.G_RET_STS_ERROR;
2294 
2295         fnd_message.set_name('ONT','OE_ATTRIBUTE_REQUIRED');
2296         FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2297 			OE_Order_UTIL.Get_Attribute_Name('line_id'));
2298         OE_MSG_PUB.Add;
2299 
2300     END IF;
2301 
2302     IF p_line_rec.item_identifier_type IS NULL
2303     THEN
2304 
2305         x_return_status := FND_API.G_RET_STS_ERROR;
2306 
2307         fnd_message.set_name('ONT','OE_ATTRIBUTE_REQUIRED');
2308         FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2309              OE_Order_UTIL.Get_Attribute_Name('ITEM_IDENTIFIER_TYPE'));
2310         OE_MSG_PUB.Add;
2311 
2312     ELSIF p_line_rec.item_identifier_type <> 'ALL'
2313         AND p_line_rec.inventory_item_id IS NULL
2314     THEN
2315 
2316         x_return_status := FND_API.G_RET_STS_ERROR;
2317 
2318         fnd_message.set_name('ONT','OE_ATTRIBUTE_REQUIRED');
2319         FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2320              OE_Order_UTIL.Get_Attribute_Name('INVENTORY_ITEM_ID'));
2321         OE_MSG_PUB.Add;
2322 
2323     END IF;
2324 
2325     IF  p_line_rec.start_date_active IS NULL
2326     THEN
2327 
2328         x_return_status := FND_API.G_RET_STS_ERROR;
2329 
2330         fnd_message.set_name('ONT','OE_ATTRIBUTE_REQUIRED');
2331         FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Activation Date');
2332         OE_MSG_PUB.Add;
2333 
2334     END IF;
2335 
2336     --  Return Error if a required attribute is missing.
2337 
2338     IF x_return_status = FND_API.G_RET_STS_ERROR THEN
2339 
2340         RAISE FND_API.G_EXC_ERROR;
2341 
2342     END IF;
2343 
2344     if l_debug_level > 0 then
2345 	oe_debug_pub.add('Blanket In validate entity 2');
2346     end if;
2347 
2348     -- Customer Item Validation
2349     IF (p_line_rec.operation = oe_globals.g_opr_update or p_line_rec.operation = oe_globals.g_opr_create) AND
2350         p_line_rec.ITEM_IDENTIFIER_TYPE = 'CUST' then
2351        oe_blanket_util.Get_Inventory_Item(p_x_line_rec => p_line_rec,
2352                                        x_return_status => l_return_status);
2353     END if;
2354     IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2355        oe_debug_pub.add('Raise and Error in Customer ITem Validation oe_blanket_util.Get_Inventory_Item');
2356        RAISE FND_API.G_EXC_ERROR;
2357     END IF;
2358     --PP Revenue Recognition
2359     --bug 4893057
2360     IF NOT Validate_Accounting_Rule
2361 	(p_line_rec.inventory_item_id,
2362 	p_line_rec.accounting_rule_id)
2363     THEN
2364 	x_return_status := FND_API.G_RET_STS_ERROR;
2365 	FND_MESSAGE.Set_Name('ONT','OE_INVALID_ATTRIBUTE');
2366 	FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2367         OE_Order_Util.Get_Attribute_Name('ACCOUNTING_RULE_ID'));
2368 	OE_MSG_PUB.ADD;
2369     END IF;
2370 
2371 
2372     ---------------------------------------------------------------------
2373     --  Validate attribute dependencies here.
2374     ---------------------------------------------------------------------
2375 
2376     -- Log request to validate line number if line number changed
2377 
2378     IF NOT OE_GLOBALS.Equal
2379        (p_line_rec.line_number,l_old_line_rec.line_number)
2380     THEN
2381        --some fields not allowed to update if release exists against line
2382        IF (p_line_rec.released_amount > 0) THEN
2383 	   fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_LINE_ATTRIBUTE');
2384            fnd_message.set_token('ATTRIBUTE',
2385            OE_Order_UTIL.Get_Attribute_Name('LINE_NUMBER'));
2386            OE_MSG_PUB.Add;
2387        ELSE
2388            oe_delayed_requests_pvt.Log_request(p_Entity_Code =>
2389 		 OE_BLANKET_pub.G_ENTITY_BLANKET_LINE,
2390 		    p_Entity_Id => p_line_rec.line_id,
2391 	            p_requesting_entity_code    =>
2392 		 OE_BLANKET_pub.G_ENTITY_BLANKET_LINE,
2393 		p_requesting_entity_id      => p_line_rec.line_id,
2394 		    p_request_type => 'VALIDATE_BLANKET_LINE_NUMBER',
2395 		    p_param1    => p_line_rec.header_id,
2396 		    p_param2   => p_line_rec.line_number,
2397 		    x_return_status => l_return_status);
2398                 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2399                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2400                 END IF;
2401        END IF;
2402     END IF;
2403 
2404 
2405     -- Inventory Item Validations
2406 
2407     IF NOT OE_GLOBALS.Equal
2408         (p_line_rec.item_identifier_type,l_old_line_rec.item_identifier_type)
2409        OR NOT OE_GLOBALS.Equal
2410         (p_line_rec.inventory_item_id,l_old_line_rec.inventory_item_id)
2411        OR NOT OE_GLOBALS.Equal
2412         (p_line_rec.end_date_active,l_old_line_rec.end_date_active)
2413        OR NOT OE_GLOBALS.Equal
2414         (p_line_rec.start_date_active,l_old_line_rec.start_date_active)
2415     THEN
2416       --fields not allowed to update if releases exist against this line
2417      IF (p_line_rec.released_amount > 0) AND
2418        (NOT OE_GLOBALS.Equal
2419         (p_line_rec.inventory_item_id,l_old_line_rec.inventory_item_id)) THEN
2420 
2421             fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_LINE_ATTRIBUTE');
2422             fnd_message.set_token('ATTRIBUTE',
2423                OE_Order_UTIL.Get_Attribute_Name('INVENTORY_ITEM_ID'));
2424             OE_MSG_PUB.add;
2425             x_return_status := FND_API.G_RET_STS_ERROR;
2426 
2427      ELSIF (p_line_rec.released_amount > 0) AND
2428       (NOT OE_GLOBALS.Equal
2429        (p_line_rec.item_identifier_type,l_old_line_rec.item_identifier_type)) THEN
2430             fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_LINE_ATTRIBUTE');
2431             fnd_message.set_token('ATTRIBUTE',
2432                OE_Order_UTIL.Get_Attribute_Name('ITEM_IDENTIFIER_TYPE'));
2433             OE_MSG_PUB.add;
2434             x_return_status := FND_API.G_RET_STS_ERROR;
2435 
2436      ELSE
2437 
2438       -- Inventory Item ID should be null for 'ALL Item' Context
2439       IF p_line_rec.item_identifier_type = 'ALL' THEN
2440 
2441         IF p_line_rec.inventory_item_id IS NOT NULL THEN
2442             x_return_status := FND_API.G_RET_STS_ERROR;
2443             fnd_message.set_name('ONT', 'OE_ITEM_VALIDATION_FAILED');
2444             OE_MSG_PUB.add;
2445         END IF;
2446 
2447       -- For all other context values, validate item id
2448       ELSE
2449 
2450 	IF NOT Validate_Item_Fields
2451 			( p_line_rec.item_identifier_type,
2452 			p_line_rec.inventory_item_id,
2453                         p_line_rec.sold_to_org_id,
2454 			p_line_rec.ordered_item_id,
2455 			p_line_rec.ordered_item
2456 			) THEN
2457             x_return_status := FND_API.G_RET_STS_ERROR;
2458             fnd_message.set_name('ONT', 'OE_ITEM_VALIDATION_FAILED');
2459             OE_MSG_PUB.add;
2460         END IF;
2461 
2462       END IF;
2463 
2464       if l_debug_level > 0 then
2465 	oe_debug_pub.add('before logging request for item uniqueness');
2466       end if;
2467 
2468       --validate item uniqueness
2469       OE_Delayed_Requests_Pvt.Log_Request(p_Entity_Code =>
2470 	         OE_BLANKET_pub.G_ENTITY_BLANKET_LINE ,
2471                p_Entity_Id => p_line_rec.line_id,
2472                p_requesting_entity_code    =>
2473                  OE_BLANKET_pub.G_ENTITY_BLANKET_LINE,
2474                p_requesting_entity_id      => p_line_rec.line_id,
2475                p_request_type => 'VALIDATE_BLANKET_INV_ITEM',
2476                p_param1    => p_line_rec.inventory_item_id,
2477                p_param2    => p_line_rec.header_id,
2478                p_param3    => p_line_rec.item_identifier_type,
2479 	       p_param4    => p_line_rec.ordered_item_id, --bug6826787
2480 	       p_param5    => p_line_rec.ordered_item,    --bug6826787
2481                p_date_param1    => p_line_rec.start_date_active,
2482                p_date_param2    => p_line_rec.end_date_active,
2483                x_return_status => l_return_status);
2484       IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2485          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2486       END IF;
2487 
2488      END IF; --if released amount
2489 
2490     END IF; --if item changing
2491 
2492 
2493     -- Validate Ship to
2494 
2495     IF p_line_rec.ship_to_org_id IS NOT NULL AND
2496              ( NOT OE_GLOBALS.EQUAL(p_line_rec.ship_to_org_id ,l_old_line_rec.ship_to_org_id) OR
2497                NOT OE_GLOBALS.EQUAL(p_line_rec.sold_to_org_id ,l_old_line_rec.sold_to_org_id)) THEN
2498              -- ER 5743580
2499               IF ( NOT Validate_Ship_To_Org(p_line_rec.ship_to_org_id,
2500                                             p_line_rec.sold_to_org_id )) THEN
2501                   if l_debug_level > 0 then
2502                    oe_debug_pub.add ('Blanket In: No data found',2);
2503                   end if;
2504                    x_return_status := FND_API.G_RET_STS_ERROR;
2505                    fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
2506                    FND_MESSAGE.SET_TOKEN('ATTRIBUTE'
2507                       , OE_Order_Util.Get_Attribute_Name('ship_to_org_id'));
2508                    OE_MSG_PUB.Add;
2509                END IF;
2510     END IF; -- Ship to
2511 
2512     --  Deliver to Org id depends on sold to org.
2513        if l_debug_level > 0 then
2514              oe_debug_pub.add('Validating deliver_to_org_id :'|| to_char(p_line_rec.deliver_to_org_id),2);
2515              oe_debug_pub.add(' Customer Relations :'|| g_customer_relations, 1);
2516        end if;
2517     IF p_line_rec.deliver_to_org_id IS NOT NULL AND
2518          ( NOT OE_GLOBALS.EQUAL(p_line_rec.deliver_to_org_id,l_old_line_rec.deliver_to_org_id) OR
2519            NOT OE_GLOBALS.EQUAL(p_line_rec.sold_to_org_id ,l_old_line_rec.sold_to_org_id)) THEN
2520                 -- ER 5743580
2521              IF NOT (Validate_Deliver_To_Org(p_line_rec.deliver_to_org_id,
2522                                             p_line_rec.sold_to_org_id )) THEN
2523 
2524                   x_return_status := FND_API.G_RET_STS_ERROR;
2525                   fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
2526                   FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2527                   OE_Order_Util.Get_Attribute_Name('deliver_to_org_id'));
2528                   OE_MSG_PUB.Add;
2529               END IF;
2530 
2531     END IF; -- Deliver to
2532 
2533     --  Invoice to Org id depends on sold to org.
2534 
2535     IF p_line_rec.invoice_to_org_id IS NOT NULL AND
2536           ( NOT OE_GLOBALS.EQUAL(p_line_rec.invoice_to_org_id ,l_old_line_rec.invoice_to_org_id) OR
2537             NOT OE_GLOBALS.EQUAL(p_line_rec.sold_to_org_id ,l_old_line_rec.sold_to_org_id)) THEN
2538                 -- ER 5743580
2539                 IF NOT ( Validate_Invoice_To_Org ( p_line_rec.invoice_to_org_id,
2540                                                    p_line_rec.sold_to_org_id )) THEN
2541                   x_return_status := FND_API.G_RET_STS_ERROR;
2542                   fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
2543                   FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2544                   OE_Order_Util.Get_Attribute_Name('invoice_to_org_id'));
2545                   OE_MSG_PUB.Add;
2546                 END IF;
2547     END IF; -- Invoice to org
2548 
2549     if l_debug_level > 0 then
2550 	oe_debug_pub.add('Blanket In validate entity 3');
2551     end if;
2552 
2553   -- Date Validations
2554   --Changes made for Bug No 5528599 start
2555   if (p_line_rec.end_date_active is not NULL and
2556        (p_line_rec.start_date_active)
2557 	  > (p_line_rec.end_date_active)) THEN
2558              if ( nvl(p_line_rec.source_document_type_id,0) = 2 --bug#5528507
2559                AND p_line_rec.operation = OE_GLOBALS.G_OPR_CREATE)
2560              then
2561               FND_MESSAGE.SET_NAME('ONT','OE_BLKT_INVALID_DATE_RANGE');
2562 	      OE_MSG_PUB.ADD;
2563               oe_debug_pub.add('1: Not Setting Error',1);
2564 
2565             else
2566               FND_MESSAGE.SET_NAME('ONT','OE_BLKT_INVALID_DATE_RANGE');
2567               OE_MSG_PUB.ADD;
2568               oe_debug_pub.add('1: Setting Error',1);
2569               x_return_status := FND_API.G_RET_STS_ERROR;
2570            end if;
2571   --Changes made for Bug No 5528599
2572   end if;
2573 
2574   --line start date must be after header date range
2575   if (p_line_rec.start_date_active < g_header_rec.start_date_active)
2576   then
2577         FND_MESSAGE.SET_NAME('ONT','OE_BLKT_END_DATE_CONFLICT');
2578 	OE_MSG_PUB.ADD;
2579 	x_return_status := FND_API.G_RET_STS_ERROR;
2580   end if;
2581 
2582   -- if header end date exists, line end date cannot be null
2583   -- and it cannot be greater than header end date
2584   if g_header_rec.end_date_active is not NULL then
2585    if p_line_rec.end_date_active is NULL
2586       or (p_line_rec.end_date_active
2587             > g_header_rec.end_date_active)
2588    then
2589         FND_MESSAGE.SET_NAME('ONT','OE_BLKT_END_DATE_CONFLICT');
2590 	OE_MSG_PUB.ADD;
2591 	x_return_status := FND_API.G_RET_STS_ERROR;
2592    end if;
2593   end if;
2594 
2595   if l_debug_level > 0 then
2596      oe_debug_pub.add('Blanket In validate entity 4, status :'||
2597                                       x_return_status);
2598   end if;
2599 
2600   -- pricing uom is required if it is a blanket price list
2601   -- and ordered UOM is null
2602   IF p_line_rec.order_quantity_uom IS NULL THEN
2603     IF (g_new_price_list AND (p_line_rec.pricing_uom IS NULL)) THEN
2604         fnd_message.set_name('ONT','OE_ATTRIBUTE_REQUIRED');
2605         FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2606             OE_Order_Util.Get_Attribute_Name('PRICING_QUANTITY_UOM'));
2607         OE_MSG_PUB.Add;
2608     ELSIF p_line_rec.price_list_id IS NOT NULL THEN
2609       IF IS_BLANKET_PRICE_LIST(p_price_list_id => p_line_rec.price_list_id)
2610       AND p_line_rec.pricing_uom IS NULL THEN
2611         fnd_message.set_name('ONT','OE_ATTRIBUTE_REQUIRED');
2612         FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2613             OE_Order_Util.Get_Attribute_Name('PRICING_QUANTITY_UOM'));
2614         OE_MSG_PUB.Add;
2615       END IF;
2616     END IF;
2617   END IF;
2618 
2619 IF NOT g_new_price_list AND
2620    p_line_rec.price_list_id IS NULL AND
2621    (p_line_rec.enforce_price_list_flag = 'Y') THEN
2622         fnd_message.set_name('ONT','OE_ATTRIBUTE_REQUIRED');
2623         FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2624 			OE_Order_UTIL.Get_Attribute_Name('PRICE_LIST_ID'));
2625 	  OE_MSG_PUB.ADD;
2626 	  x_return_status := FND_API.G_RET_STS_ERROR;
2627 END IF;
2628 
2629 -- UOM is required if any of the quantities are given on the blanket line
2630 IF     p_line_rec.order_quantity_uom IS NULL AND
2631       (p_line_rec.Blanket_Min_Quantity IS NOT NULL
2632     OR p_line_rec.Blanket_Max_Quantity IS NOT NULL
2633     OR p_line_rec.Min_Release_Quantity IS NOT NULL
2634     OR p_line_rec.Max_Release_Quantity IS NOT NULL) THEN
2635           FND_MESSAGE.SET_NAME('ONT','OE_BLKT_QUANTITY_UOM');
2636 	  OE_MSG_PUB.ADD;
2637 	  x_return_status := FND_API.G_RET_STS_ERROR;
2638 
2639 END IF;
2640 
2641 -- Validate min/max limits
2642   Validate_Min_Max_Range(p_line_rec.Blanket_Min_Quantity,
2643        p_line_rec.blanket_max_quantity,
2644        'BLANKET_LINE_QUANTITY', x_return_status);
2645   Validate_Min_Max_Range(p_line_rec.Min_release_quantity,
2646        p_line_rec.Max_release_quantity,
2647        'BLANKET_LINE_RELEASE_QUANTITY', x_return_status);
2648   Validate_Min_Max_Range(p_line_rec.Min_release_amount,
2649        p_line_rec.Max_release_amount,
2650        'BLANKET_LINE_RELEASE_AMOUNT', x_return_status);
2651   Validate_Min_Max_Range(p_line_rec.blanket_min_amount,
2652        p_line_rec.blanket_max_amount,
2653        'BLANKET_LINE_AMOUNT', x_return_status);
2654 /*
2655     IF p_line_rec.blanket_max_amount > g_header_rec.blanket_max_amount THEN
2656          FND_MESSAGE.SET_NAME('ONT','OE_BLKT_LINE_MIN_MAX_VALUES');
2657          OE_MSG_PUB.ADD;
2658          x_return_status := FND_API.G_RET_STS_ERROR;
2659     END IF;
2660 */
2661     IF p_line_rec.min_release_amount > p_line_rec.blanket_max_amount OR
2662        p_line_rec.max_release_amount > p_line_rec.blanket_max_amount THEN
2663          FND_MESSAGE.SET_NAME('ONT','OE_BLKT_LINE_MAX_AMOUNT');
2664          OE_MSG_PUB.ADD;
2665          x_return_status := FND_API.G_RET_STS_ERROR;
2666 
2667     END IF;
2668 
2669     IF p_line_rec.min_release_quantity > p_line_rec.blanket_max_quantity OR
2670        p_line_rec.max_release_quantity > p_line_rec.blanket_max_quantity THEN
2671          FND_MESSAGE.SET_NAME('ONT','OE_BLKT_LINE_MAX_QUANTITY');
2672          OE_MSG_PUB.ADD;
2673          x_return_status := FND_API.G_RET_STS_ERROR;
2674 
2675     END IF;
2676 
2677    IF p_line_rec.operation = oe_globals.g_opr_update THEN
2678 
2679     if l_debug_level > 0 then
2680 	oe_debug_pub.add('Blanket In validate entity 4: update');
2681     end if;
2682 
2683       --not allowed to change any attributes on a previously closed blanket
2684     IF p_line_rec.end_date_active < trunc(sysdate) and
2685        l_old_line_rec.end_date_active < trunc(sysdate) THEN
2686                  x_return_status := FND_API.G_RET_STS_ERROR;
2687                  fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_ATTR_CLOSED');
2688                  OE_MSG_PUB.Add;
2689     END IF;
2690     --Srini
2691     --oe_blanket_util.Get_Inventory_Item(p_x_line_rec => p_line_rec,
2692     --                                   x_return_status => l_return_status);
2693     --End srini
2694       --display warning if we haven't fulfilled minimum requirements
2695     IF NOT OE_GLOBALS.Equal(p_line_rec.end_date_active, l_old_line_rec.end_date_active) AND
2696        p_line_rec.end_date_active <= trunc(sysdate) AND
2697        p_line_rec.override_blanket_controls_flag = 'N' THEN
2698           IF nvl(p_line_rec.released_amount,0) < p_line_rec.blanket_min_amount THEN
2699               FND_MESSAGE.SET_NAME('ONT','OE_BLKT_CLOSE_MIN_VALUES');
2700               OE_MSG_PUB.ADD;
2701               if l_debug_level > 0 then
2702                oe_debug_pub.add('Blanket line close min amount ');
2703               end if;
2704 
2705           ELSIF nvl(p_line_rec.released_quantity,0) < p_line_rec.blanket_min_quantity THEN
2706               FND_MESSAGE.SET_NAME('ONT','OE_BLKT_CLOSE_MIN_VALUES');
2707               OE_MSG_PUB.ADD;
2708               if l_debug_level > 0 then
2709                  oe_debug_pub.add('Blanket line close min quantity ');
2710               end if;
2711           END IF;
2712     END IF;
2713 
2714        --some fields are not allowed to update if release exists against line
2715        IF (p_line_rec.released_amount > 0) THEN
2716 	         IF NOT OE_GLOBALS.Equal (p_line_rec.order_quantity_uom,
2717 	               l_old_line_rec.order_quantity_uom) THEN
2718                         x_return_status := FND_API.G_RET_STS_ERROR;
2719 	                fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_LINE_ATTRIBUTE');
2720 			fnd_message.set_token('ATTRIBUTE',
2721                                    OE_Order_UTIL.Get_Attribute_Name('ORDER_QUANTITY_UOM'));
2722 			OE_MSG_PUB.Add;
2723                  END IF;
2724        END IF;
2725 
2726               IF NOT OE_GLOBALS.EQUAL (p_line_rec.end_date_active, l_old_line_rec.end_date_active) THEN
2727                 --validate item uniqueness
2728 		OE_Delayed_Requests_Pvt.Log_Request(p_Entity_Code =>
2729 			OE_BLANKET_pub.G_ENTITY_BLANKET_LINE ,
2730 		    p_Entity_Id => p_line_rec.line_id,
2731                     p_requesting_entity_code    =>
2732                  OE_BLANKET_pub.G_ENTITY_BLANKET_LINE,
2733                 p_requesting_entity_id      => p_line_rec.line_id,
2734 		   p_request_type => 'VALIDATE_BLANKET_INV_ITEM',
2735 		    p_param1    => p_line_rec.inventory_item_id,
2736 		    p_param2    => p_line_rec.header_id,
2737 		    p_param3    => p_line_rec.item_identifier_type,
2738 		    p_param4    => p_line_rec.ordered_item_id, --bug6826787
2739 		    p_param5    => p_line_rec.ordered_item,    --bug6826787
2740 		    p_date_param1    => p_line_rec.start_date_active,
2741 		    p_date_param2    => p_line_rec.end_date_active,
2742 		    x_return_status => l_return_status);
2743 
2744                  IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2745                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2746                  END IF;
2747 
2748               END IF;
2749 
2750                IF p_line_rec.end_date_active IS NOT NULL THEN
2751                     BEGIN
2752                        SELECT 'ERROR'
2753                          INTO l_dummy
2754                          FROM OE_ORDER_LINES
2755                         WHERE trunc(request_date) > trunc(p_line_rec.end_date_active)
2756                         AND BLANKET_NUMBER = p_line_rec.order_number
2757                         AND BLANKET_LINE_NUMBER = p_line_rec.line_number
2758                         AND ROWNUM = 1;
2759 
2760                         IF l_dummy = 'ERROR' THEN
2761                                 x_return_status := FND_API.G_RET_STS_ERROR;
2762                                 fnd_message.set_name('ONT', 'OE_BLKT_LINE_RELEASE_END_DATE');
2763                                 OE_MSG_PUB.Add;
2764                         END IF;
2765 
2766                     EXCEPTION
2767                           WHEN NO_DATA_FOUND THEN
2768                              NULL;  --no rows with conflicting end dates
2769                     END;
2770                END IF;
2771 
2772 /*
2773        -- Bug 2792852 => pricing uom is not stored on the blanket line, it
2774        -- is derived from the list_line_id in the forms post-query.
2775        -- So it will always be null on the old rec thus this check will
2776        -- always post error even if user was updating some other field
2777        -- on the blanket line.
2778        -- Therefore commenting out NOCOPY {file.sql.39 change}  the check, logging of price list
2779        -- line creation is anyway restricted to line CREATE operation.
2780        oe_debug_pub.add('old pricing uom :'||l_old_line_rec.pricing_uom);
2781        oe_debug_pub.add('new pricing uom :'||p_line_rec.pricing_uom);
2782        --pricing uom not allowed to change if blanket price list
2783        if NOT OE_GLOBALS.EQUAL(p_line_rec.pricing_uom,
2784                            l_old_line_rec.pricing_uom) THEN
2785           if (g_new_price_list) THEN
2786              FND_MESSAGE.SET_NAME('ONT','OE_BLKT_UPDATE_LINE_ATTRIBUTE');
2787              FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2788                OE_Order_UTIL.Get_Attribute_Name('PRICING_QUANTITY_UOM'));
2789 	     OE_MSG_PUB.ADD;
2790 	     x_return_status := FND_API.G_RET_STS_ERROR;
2791           elsif p_line_rec.price_list_id IS NOT NULL THEN
2792            if IS_BLANKET_PRICE_LIST(p_price_list_id => p_line_rec.price_list_id) THEN
2793 	     x_return_status := FND_API.G_RET_STS_ERROR;
2794              FND_MESSAGE.SET_NAME('ONT','OE_BLKT_UPDATE_LINE_ATTRIBUTE');
2795              FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2796                OE_Order_UTIL.Get_Attribute_Name('PRICING_QUANTITY_UOM'));
2797 	     OE_MSG_PUB.ADD;
2798     	     x_return_status := FND_API.G_RET_STS_ERROR;
2799            end if;
2800           end if;
2801        end if;
2802 */
2803 
2804       if l_debug_level > 0 then
2805 	oe_debug_pub.add('Blanket In validate entity update 1');
2806       end if;
2807        if NOT OE_GLOBALS.EQUAL(p_line_rec.released_amount,
2808                            l_old_line_rec.released_amount) THEN
2809           FND_MESSAGE.SET_NAME('ONT','OE_BLKT_UPDATE_LINE_ATTRIBUTE');
2810           FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Released Amount');
2811 	  OE_MSG_PUB.ADD;
2812 	  x_return_status := FND_API.G_RET_STS_ERROR;
2813        end if;
2814 
2815        if NOT OE_GLOBALS.EQUAL(p_line_rec.returned_amount,
2816                            l_old_line_rec.returned_amount) THEN
2817           FND_MESSAGE.SET_NAME('ONT','OE_BLKT_UPDATE_LINE_ATTRIBUTE');
2818           FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Returned Amount');
2819 	  OE_MSG_PUB.ADD;
2820 	  x_return_status := FND_API.G_RET_STS_ERROR;
2821        end if;
2822 
2823        if NOT OE_GLOBALS.EQUAL(p_line_rec.released_quantity,
2824                            l_old_line_rec.released_quantity) THEN
2825           FND_MESSAGE.SET_NAME('ONT','OE_BLKT_UPDATE_LINE_ATTRIBUTE');
2826           FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Released Quantity');
2827 	  OE_MSG_PUB.ADD;
2828 	  x_return_status := FND_API.G_RET_STS_ERROR;
2829        end if;
2830 
2831        if NOT OE_GLOBALS.EQUAL(p_line_rec.fulfilled_quantity,
2832                            l_old_line_rec.fulfilled_quantity) THEN
2833           FND_MESSAGE.SET_NAME('ONT','OE_BLKT_UPDATE_LINE_ATTRIBUTE');
2834           FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Fulfilled Quantity');
2835 	  OE_MSG_PUB.ADD;
2836 	  x_return_status := FND_API.G_RET_STS_ERROR;
2837        end if;
2838 
2839        if NOT OE_GLOBALS.EQUAL(p_line_rec.fulfilled_amount,
2840                            l_old_line_rec.fulfilled_amount) THEN
2841           FND_MESSAGE.SET_NAME('ONT','OE_BLKT_UPDATE_LINE_ATTRIBUTE');
2842           FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Fulfilled Amount');
2843 	  OE_MSG_PUB.ADD;
2844 	  x_return_status := FND_API.G_RET_STS_ERROR;
2845        end if;
2846 
2847        if NOT OE_GLOBALS.EQUAL(p_line_rec.returned_quantity,
2848                            l_old_line_rec.returned_quantity) THEN
2849           FND_MESSAGE.SET_NAME('ONT','OE_BLKT_UPDATE_LINE_ATTRIBUTE');
2850           FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Returned Quantity');
2851 	  OE_MSG_PUB.ADD;
2852 	  x_return_status := FND_API.G_RET_STS_ERROR;
2853        end if;
2854        if l_debug_level > 0 then
2855 	oe_debug_pub.add('Blanket In validate entity update 2');
2856        end if;
2857 
2858     END IF; --if g_opr_update
2859 
2860 
2861     ---------------------------------------------------------------------
2862     -- Bug 3193220
2863     -- Expiration Date cannot be less than sysdate
2864     ---------------------------------------------------------------------
2865 --Changes made for Bug No 5528599
2866     if (NOT OE_GLOBALS.EQUAL(trunc(p_line_rec.end_date_active),
2867                            trunc(l_old_line_rec.end_date_active))
2868        AND trunc(p_line_rec.end_date_active) < trunc(sysdate))
2869        THEN
2870              oe_debug_pub.add('2:source_document_type_id :'|| p_line_rec.source_document_type_id,1);
2871              oe_debug_pub.add('2:source_document_line_id :'|| p_line_rec.source_document_line_id,1);
2872 
2873              if ( nvl(p_line_rec.source_document_type_id,0) = 2 --bug#5528507
2874                AND p_line_rec.operation = OE_GLOBALS.G_OPR_CREATE)
2875              then
2876               FND_MESSAGE.SET_NAME('ONT','OE_BLKT_INVALID_DATE_RANGE');
2877               OE_MSG_PUB.ADD;
2878               oe_debug_pub.add('2: Not Setting Error',1);
2879 
2880             else
2881               FND_MESSAGE.SET_NAME('ONT','OE_BLKT_INVALID_DATE_RANGE');
2882               OE_MSG_PUB.ADD;
2883               x_return_status := FND_API.G_RET_STS_ERROR;
2884               oe_debug_pub.add('2:  Setting Error',1);
2885            end if;
2886     end if;
2887 --Changes made for Bug No 5528599
2888     -- End Expiration Date < sysdate check
2889 
2890 
2891 
2892     -- Bug 2792852
2893     -- Price list lines can only be created for new blanket lines.
2894     -- Comment out NOCOPY /* file.sql.39 change */ this if check
2895     -- 11i10 - also support creation of new price list lines when
2896     -- blanket line is updated with list price information i.e. list
2897     -- price was originally null on the line.
2898     -- Note that it's not supported if list price existed before
2899     -- and user tries to update list price itself.
2900     --IF p_line_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
2901 
2902       --only add line information if new price list
2903     -- This if is for the scenario where price list is also being
2904     -- created i.e. blanket header with new price list is being
2905     -- created.
2906     IF (g_new_price_list AND p_line_rec.price_list_id IS NULL)
2907     THEN
2908 
2909       if l_debug_level > 0 then
2910          oe_debug_pub.add('log CREATE_BLANKET_PRICE_LIST');
2911       end if;
2912 
2913      --for bug 3229225.Commented out NOCOPY /* file.sql.39 change */ the If condition and added modified condition
2914      --     IF p_line_rec.unit_list_price IS NOT NULL
2915      IF NOT OE_GLOBALS.EQUAL(p_line_rec.unit_list_price,p_old_line_rec.unit_list_price)
2916      THEN
2917          oe_delayed_requests_pvt.Log_request(p_Entity_Code =>
2918                 OE_BLANKET_pub.G_ENTITY_BLANKET_LINE,
2919 		p_Entity_Id => p_line_rec.line_id,
2920                 p_requesting_entity_code    =>
2921                  OE_BLANKET_pub.G_ENTITY_BLANKET_LINE,
2922                 p_requesting_entity_id  => p_line_rec.line_id,
2923 		p_request_type => 'CREATE_BLANKET_PRICE_LIST',
2924 		p_param1=> p_line_rec.unit_list_price,
2925 		p_param2 => nvl(p_line_rec.pricing_uom,
2926 		p_line_rec.order_quantity_uom),
2927 		p_param3 => p_line_rec.inventory_item_id,
2928 		p_param4 => p_line_rec.item_identifier_type,
2929                 -- 11i10 Pricing Changes
2930                 -- Add header_id, sold_to_org and ordered_item parameters
2931                 p_param6 => p_line_rec.header_id,
2932                 p_param7 => p_line_rec.sold_to_org_id,
2933                 p_param8 => p_line_rec.ordered_item_id,
2934 		x_return_status => l_return_status );
2935             IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2936                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2937             END IF;
2938       END IF;
2939 
2940     -- This if is for the scenario where either new blanket lines
2941     -- with price information are being added OR existing blanket
2942     -- lines with null price are being updated with list price.
2943     -- 11i10 Pricing Changes
2944     ELSIF IS_BLANKET_PRICE_LIST(p_price_list_id => p_line_rec.price_list_id
2945                                 ,p_blanket_header_id => p_line_rec.header_id)
2946           OR (p_line_rec.price_list_id IS NULL
2947               AND g_header_rec.new_price_list_id IS NOT NULL)
2948     THEN
2949       -- Only for release before 11i10 check if header and line price list
2950       -- are same.
2951       IF (OE_Code_Control.Get_Code_Release_Level < '110510'
2952           AND OE_GLOBALS.Equal(p_line_rec.price_list_id, g_header_rec.price_list_id))
2953          OR OE_Code_Control.Get_Code_Release_Level >= '110510'
2954       THEN
2955 
2956       if l_debug_level > 0 then
2957          oe_debug_pub.add('qp list line id :'||p_line_rec.qp_list_line_id);
2958       end if;
2959 
2960 
2961       --for bug 3229225.Commented out NOCOPY /* file.sql.39 change */ the If condition and added modified condition
2962       --      IF p_line_rec.unit_list_price IS NOT NULL
2963       --       AND p_line_rec.qp_list_line_id IS NULL THEN
2964 
2965       IF (NOT OE_GLOBALS.EQUAL(p_line_rec.unit_list_price,p_old_line_rec.unit_list_price))
2966            OR (p_line_rec.operation = OE_GLOBALS.G_OPR_CREATE AND
2967                      p_line_rec.unit_list_price IS NOT NULL) --Bug#4694968
2968       THEN
2969 
2970         -- Bug 3380740
2971         -- Log the add price list line if price changes and list
2972         -- line does not exist
2973         if p_line_rec.qp_list_line_id IS NOT NULL then
2974 
2975             BEGIN
2976 
2977             SELECT 'Y'
2978              INTO l_list_line_exists
2979              FROM QP_LIST_LINES
2980             WHERE LIST_LINE_ID = p_line_rec.qp_list_line_id;
2981 
2982             EXCEPTION
2983               WHEN NO_DATA_FOUND THEN
2984                 l_list_line_exists := 'N';
2985             END;
2986 
2987         end if;
2988 
2989         if l_list_line_exists = 'N' THEN
2990 
2991         if l_debug_level > 0 then
2992          oe_debug_pub.add('log ADD_BLANKET_PRICE_LIST_LINE');
2993         end if;
2994 
2995 	oe_delayed_requests_pvt.Log_request(p_Entity_Code =>
2996 				 OE_BLANKET_pub.G_ENTITY_BLANKET_LINE,
2997 		p_Entity_Id => p_line_rec.line_id,
2998                 p_requesting_entity_code    =>
2999                  OE_BLANKET_pub.G_ENTITY_BLANKET_LINE,
3000                 p_requesting_entity_id  => p_line_rec.line_id,
3001 		p_request_type => 'ADD_BLANKET_PRICE_LIST_LINE',
3002 		p_param1=> p_line_rec.unit_list_price,
3003 		p_param2 => nvl(p_line_rec.pricing_uom,
3004 		p_line_rec.order_quantity_uom),
3005 		p_param3 => p_line_rec.inventory_item_id,
3006 		p_param4 => p_line_rec.item_identifier_type,
3007                 -- 11i10 Pricing Changes
3008                 -- Send header new price list if line price list is null
3009                 -- Add header_id, sold_to_org and ordered_item parameters
3010 		p_param5 => nvl(p_line_rec.price_list_id,
3011                                 g_header_rec.new_price_list_id),
3012                 p_param6 => p_line_rec.header_id,
3013                 p_param7 => p_line_rec.sold_to_org_id,
3014                 p_param8 => p_line_rec.ordered_item_id,
3015 		x_return_status => x_return_status );
3016 
3017         end if; -- if list line does not exist
3018 
3019       END IF; -- if list price changes
3020 
3021       ELSIF p_line_rec.price_list_id IS NOT NULL THEN
3022          x_return_status := FND_API.G_RET_STS_ERROR;
3023          FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
3024          FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
3025              OE_Order_UTIL.Get_Attribute_Name('UNIT_LIST_PRICE'));
3026          OE_MSG_PUB.ADD;
3027       END IF;
3028 
3029     END IF; --if g_new_price_list
3030 
3031     --END IF; -- if operation is CREATE
3032 
3033    --for bug 3309427
3034    --Log request to clear out NOCOPY /* file.sql.39 change */ unit price if the Price list field is updated to a non blanket pricelist.
3035    IF((NOT IS_BLANKET_PRICE_LIST(p_price_list_id => p_line_rec.price_list_id
3036                                 ,p_blanket_header_id => p_line_rec.header_id))
3037    AND (p_line_rec.qp_list_line_id is not null))
3038    THEN
3039       if l_debug_level > 0 then
3040          oe_debug_pub.add('qp list line id :'||p_line_rec.qp_list_line_id);
3041          oe_debug_pub.add('Log delayed request: CLEAR_BLANKET_PRICE_LIST_LINE');
3042       end if;
3043 
3044       oe_delayed_requests_pvt.Log_request(p_Entity_Code =>
3045 				 OE_BLANKET_pub.G_ENTITY_BLANKET_LINE,
3046 		p_Entity_Id => p_line_rec.line_id,
3047                 p_requesting_entity_code    =>
3048                  OE_BLANKET_pub.G_ENTITY_BLANKET_LINE,
3049                 p_requesting_entity_id  => p_line_rec.line_id,
3050 		p_request_type => OE_GLOBALS.G_CLEAR_BLKT_PRICE_LIST_LINE,
3051                 p_param1=> p_line_rec.qp_list_line_id,
3052 	        p_param2 => g_header_rec.new_price_list_id,
3053                 p_param3 =>  p_line_rec.price_list_id,
3054                 p_param4 => p_line_rec.header_id,
3055          	x_return_status => x_return_status );
3056     END IF;
3057 
3058     -- 11i10 Pricing Changes Start
3059     -- Log request to create new discount line
3060     IF NOT OE_GLOBALS.EQUAL(p_line_rec.discount_percent,
3061                             p_old_line_rec.discount_percent)
3062        OR NOT OE_GLOBALS.EQUAL(p_line_rec.discount_amount,
3063                             p_old_line_rec.discount_amount)
3064           OR (p_line_rec.operation = OE_GLOBALS.G_OPR_CREATE AND --bug#4691643
3065                 (p_line_rec.discount_amount IS NOT NULL OR
3066                   p_line_rec.discount_percent IS NOT NULL))
3067     THEN
3068 
3069         IF p_line_rec.modifier_list_line_id IS NOT NULL
3070         THEN
3071            oe_debug_pub.add('modifier list line id is not null');
3072            fnd_message.set_name('ONT','OE_BLKT_CANNOT_UPDATE_DIS');
3073            oe_msg_pub.add;
3074            x_return_status := FND_API.G_RET_STS_ERROR;
3075         ELSIF g_header_rec.new_modifier_list_name IS NULL
3076               AND g_header_rec.new_modifier_list_id IS NULL
3077         THEN
3078            fnd_message.set_name('ONT','OE_BLKT_CANNOT_ENTER_DIS');
3079            oe_msg_pub.add;
3080            x_return_status := FND_API.G_RET_STS_ERROR;
3081         ELSIF p_line_rec.discount_percent IS NOT NULL
3082               AND p_line_rec.discount_amount IS NOT NULL
3083         THEN
3084            fnd_message.set_name('ONT','OE_BLKT_DISCOUNT_CONFLICT');
3085            oe_msg_pub.add;
3086            x_return_status := FND_API.G_RET_STS_ERROR;
3087         ELSE
3088            -- Log delayed request to create new modifier list line
3089 	   oe_delayed_requests_pvt.Log_request
3090 	       (p_entity_code => OE_BLANKET_pub.G_ENTITY_BLANKET_LINE,
3091 		p_Entity_Id => p_line_rec.line_id,
3092                 p_requesting_entity_code    =>
3093                  OE_BLANKET_pub.G_ENTITY_BLANKET_LINE,
3094                 p_requesting_entity_id  => p_line_rec.line_id,
3095 		p_request_type => 'ADD_MODIFIER_LIST_LINE',
3096 		p_param1 => p_line_rec.discount_percent,
3097 		p_param2 => p_line_rec.discount_amount,
3098 		p_param3 => p_line_rec.inventory_item_id,
3099 		p_param4 => p_line_rec.item_identifier_type,
3100 		p_param5 => nvl(p_line_rec.pricing_uom,
3101 		                p_line_rec.order_quantity_uom),
3102 		p_param6 => p_line_rec.header_id,
3103 		x_return_status => x_return_status );
3104         END IF;
3105 
3106     END IF;
3107     -- 11i10 Pricing Changes End
3108 
3109 
3110    END IF; --bug 3443777, need to call validate entity for reasons capture
3111 
3112     if l_debug_level > 0 then
3113     --  Done validating entity
3114       oe_debug_pub.add('Exit OE_BLANKET_UTIL.Validate ENTITY- Line',1);
3115     end if;
3116 
3117 EXCEPTION
3118 
3119     WHEN FND_API.G_EXC_ERROR THEN
3120 
3121         x_return_status := FND_API.G_RET_STS_ERROR;
3122 
3123     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3124 
3125         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3126 
3127     WHEN OTHERS THEN
3128 
3129         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3130 
3131         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3132         THEN
3133             OE_MSG_PUB.Add_Exc_Msg
3134             (   G_PKG_NAME
3135             ,   'Validate Entity'
3136             );
3137         END IF;
3138 
3139 END Validate_Entity;
3140 
3141 PROCEDURE Validate_Entity
3142 (   p_header_rec           IN OUT NOCOPY OE_Blanket_PUB.Header_rec_type
3143 ,   p_old_header_rec       IN OE_Blanket_PUB.Header_rec_type := OE_Blanket_PUB.g_miss_header_rec
3144 ,   x_return_status        OUT NOCOPY VARCHAR2
3145 )IS
3146     l_return_status varchar2(1);
3147     l_dummy varchar2(30);
3148     l_old_header_rec OE_Blanket_PUB.Header_rec_type := p_old_header_rec;
3149     l_db_version_number    NUMBER;
3150     -- 11i10 Pricing Changes
3151     l_list_header_id       NUMBER;
3152     l_new_pl_name          VARCHAR2(240);
3153     l_site_use_code        VARCHAR2(30);
3154 --
3155 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
3156 --
3157 BEGIN
3158     x_return_status := FND_API.G_RET_STS_SUCCESS;
3159 
3160     if l_debug_level > 0 then
3161       oe_debug_pub.add('Enter OE_BLANKET_UTIL.Validate_ENTITY- Header',1);
3162       oe_debug_pub.add('Operation :'||p_header_rec.operation);
3163       oe_debug_pub.add('new end date :'||p_header_rec.end_date_active);
3164       oe_debug_pub.add('old end date :'||l_old_header_rec.end_date_active);
3165     end if;
3166 
3167     IF p_header_rec.operation = oe_globals.g_opr_update THEN
3168          if l_old_header_rec.header_id is null THEN
3169               Query_Header(
3170                           p_header_id => p_header_rec.header_id,
3171                           x_header_rec => l_old_header_Rec,
3172                           x_return_status => l_return_status);
3173               IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3174                  x_return_status := l_return_status;
3175               END IF;
3176          end if;
3177     END IF;
3178 
3179 -- Validate Last Updated By valued issue
3180     -- Added for a bug #6270818.
3181     IF p_header_rec.operation = oe_globals.g_opr_update
3182     THEN
3183        If p_header_rec.last_updated_by <> FND_GLOBAL.USER_ID or
3184            l_old_header_rec.last_updated_by <> FND_GLOBAL.USER_ID
3185        THEN
3186           p_header_rec.last_updated_by := FND_GLOBAL.USER_ID;
3187           l_old_header_rec.last_updated_by := FND_GLOBAL.USER_ID;
3188        END IF;
3189           p_header_rec.last_update_date := sysdate;
3190           l_old_header_rec.last_update_date := sysdate;
3191      END IF;
3192 
3193     g_header_rec := p_header_rec;
3194 
3195 
3196     -- Validate Transaction Phase
3197     -- Added for Pack -j Srini.
3198     IF p_header_rec.operation = oe_globals.g_opr_create and
3199        oe_code_control.get_code_release_level >= '110510'
3200     THEN
3201        If p_header_rec.TRANSACTION_PHASE_CODE is null and
3202            l_old_header_rec.TRANSACTION_PHASE_CODE is null
3203        THEN
3204           p_header_rec.TRANSACTION_PHASE_CODE := 'F';
3205           l_old_header_rec.TRANSACTION_PHASE_CODE := 'F';
3206        END IF;
3207     END IF;
3208 
3209     g_header_rec := p_header_rec;
3210 
3211     -- Get Blanket Number
3212     IF NOT OE_GLOBALS.EQUAL(p_header_rec.order_type_id,
3213             l_old_header_rec.order_type_id) THEN
3214        IF p_header_rec.order_number is null or
3215           p_header_rec.order_number = FND_API.G_MISS_NUM
3216        Then
3217           get_order_number(   p_x_header_rec => p_header_rec,
3218                                x_return_status => l_return_status);
3219               IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3220                  x_return_status := l_return_status;
3221               END IF;
3222        End if;
3223     END IF;
3224 
3225     -- Get Blanket Agreement Name For Null values
3226     -- Added for Pack -j Srini.
3227     IF oe_code_control.get_code_release_level >= '110510'
3228     THEN
3229        If p_header_rec.sales_document_name is null and
3230            l_old_header_rec.sales_document_name is null
3231        THEN
3232           p_header_rec.sales_document_name := p_header_rec.order_number;
3233           l_old_header_rec.sales_document_name := p_header_rec.order_number;
3234        END IF;
3235     END IF;
3236 
3237     g_header_rec := p_header_rec;
3238 
3239     -- Versioning/Reasons changes (moved to beginning for bug 3775937
3240     if OE_CODE_CONTROL.Code_Release_Level >= '110510' AND
3241        OE_GLOBALS.G_CAPTURED_REASON = 'V' THEN
3242         OE_GLOBALS.G_REASON_CODE := p_header_rec.revision_change_reason_code;
3243         OE_GLOBALS.G_REASON_COMMENTS := p_header_rec.revision_change_comments;
3244         OE_GLOBALS.G_CAPTURED_REASON := 'Y';
3245     end if;
3246 
3247     -- Check Required attributes
3248     IF  p_header_rec.header_id IS NULL THEN
3249         x_return_status := FND_API.G_RET_STS_ERROR;
3250         fnd_message.set_name('ONT','OE_ATTRIBUTE_REQUIRED');
3251         FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
3252         OE_Order_UTIL.Get_Attribute_Name('header_id'));
3253         OE_MSG_PUB.Add;
3254     END IF;
3255 
3256     IF  p_header_rec.order_number IS NULL THEN
3257         x_return_status := FND_API.G_RET_STS_ERROR;
3258         fnd_message.set_name('ONT','OE_ATTRIBUTE_REQUIRED');
3259         FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
3260            OE_Order_UTIL.Get_Attribute_Name('BLANKET_NUMBER'));
3261         OE_MSG_PUB.Add;
3262     END IF;
3263     --Enabling Pricing Agreements for pack J
3264     IF OE_CODE_CONTROL.Get_Code_Release_Level < '110510' THEN
3265        IF  p_header_rec.sold_to_org_id IS NULL THEN
3266            x_return_status := FND_API.G_RET_STS_ERROR;
3267            fnd_message.set_name('ONT','OE_ATTRIBUTE_REQUIRED');
3268            FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
3269            OE_Order_UTIL.Get_Attribute_Name('SOLD_TO_ORG_ID'));
3270            OE_MSG_PUB.Add;
3271        END IF;
3272     END IF;
3273 
3274     IF  p_header_rec.transactional_curr_code IS NULL THEN
3275          x_return_status := FND_API.G_RET_STS_ERROR;
3276          fnd_message.set_name('ONT','OE_ATTRIBUTE_REQUIRED');
3277          FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
3278          OE_Order_UTIL.Get_Attribute_Name('TRANSACTIONAL_CURR_CODE'));
3279          OE_MSG_PUB.Add;
3280     END IF;
3281 
3282     IF  p_header_rec.start_date_active IS NULL THEN
3283          x_return_status := FND_API.G_RET_STS_ERROR;
3284          fnd_message.set_name('ONT','OE_ATTRIBUTE_REQUIRED');
3285          FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Activation Date');
3286          OE_MSG_PUB.Add;
3287     END IF;
3288 
3289     ---------------------------------------------------------------------
3290     -- Bug 3193220
3291     -- Expiration Date cannot be less than sysdate
3292     ---------------------------------------------------------------------
3293 --Changes made for Bug No 5528599 start
3294     if (NOT OE_GLOBALS.EQUAL(trunc(p_header_rec.end_date_active),
3295                            trunc(l_old_header_rec.end_date_active))
3296        AND trunc(p_header_rec.end_date_active) < trunc(sysdate))
3297     then
3298 
3299           if ( nvl(p_header_rec.source_document_type_id,0) = 2) --bug#5528507
3300                AND p_header_rec.operation = OE_GLOBALS.G_OPR_CREATE
3301              then
3302               FND_MESSAGE.SET_NAME('ONT','OE_BLKT_INVALID_DATE_RANGE');
3303               OE_MSG_PUB.ADD;
3304               oe_debug_pub.add('3: Not Setting Error',1);
3305 
3306             else
3307               FND_MESSAGE.SET_NAME('ONT','OE_BLKT_INVALID_DATE_RANGE');
3308               OE_MSG_PUB.ADD;
3309               x_return_status := FND_API.G_RET_STS_ERROR;
3310               oe_debug_pub.add('3: Setting Error',1);
3311            end if;
3312     end if;
3313 --Changes made for Bug No 5528599 start
3314     -- End Expiration Date < sysdate check
3315 
3316     -- Validate Ship to
3317     IF p_header_rec.ship_to_org_id IS NOT NULL AND
3318              ( NOT OE_GLOBALS.EQUAL(p_header_rec.ship_to_org_id ,l_old_header_rec.ship_to_org_id) OR
3319                NOT OE_GLOBALS.EQUAL(p_header_rec.sold_to_org_id ,l_old_header_rec.sold_to_org_id)) THEN
3320                -- ER 5743580
3321               IF ( NOT Validate_Ship_To_Org(p_header_rec.ship_to_org_id,
3322                                             p_header_rec.sold_to_org_id )) THEN
3323                   if l_debug_level > 0 then
3324                    oe_debug_pub.add ('Blanket In: No data found',2);
3325                   end if;
3326                    x_return_status := FND_API.G_RET_STS_ERROR;
3327                    fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
3328                    FND_MESSAGE.SET_TOKEN('ATTRIBUTE'
3329                       , OE_Order_Util.Get_Attribute_Name('ship_to_org_id'));
3330                    OE_MSG_PUB.Add;
3331                END IF;
3332 
3333     END IF; -- Ship to
3334 
3335 
3336 -- hashraf start of pack J
3337 
3338     --  Customer Location depends on Sold To Org
3339 
3340     IF p_header_rec.sold_to_site_use_id IS NOT NULL AND
3341       ( NOT OE_GLOBALS.EQUAL(p_header_rec.sold_to_site_use_id
3342                             ,p_old_header_rec.sold_to_site_use_id) OR
3343         NOT OE_GLOBALS.EQUAL(p_header_rec.sold_to_org_id
3344                             ,p_old_header_rec.sold_to_org_id))
3345     THEN
3346 
3347       BEGIN
3348 
3349         SELECT  'VALID'
3350         INTO    l_dummy
3351         FROM
3352              HZ_CUST_SITE_USES   SITE,
3353              HZ_CUST_ACCT_SITES  ACCT_SITE
3354         WHERE
3355              SITE.SITE_USE_ID = p_header_rec.sold_to_site_use_id
3356              AND  SITE.SITE_USE_CODE = 'SOLD_TO'
3357              AND  SITE.CUST_ACCT_SITE_ID = ACCT_SITE.CUST_ACCT_SITE_ID
3358              AND  ACCT_SITE.CUST_ACCOUNT_ID = p_header_rec.sold_to_org_id
3359              AND  SITE.STATUS = 'A'
3360              AND  ACCT_SITE.STATUS='A';
3361 
3362         --  Valid Customer Location
3363 
3364       EXCEPTION
3365 
3366         WHEN NO_DATA_FOUND THEN
3367           l_return_status := FND_API.G_RET_STS_ERROR;
3368           fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
3369           FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
3370           OE_Order_Util.Get_Attribute_Name('SOLD_TO_SITE_USE_ID'));
3371           OE_MSG_PUB.Add;
3372 
3373         WHEN OTHERS THEN
3374 
3375          IF OE_MSG_PUB.Check_Msg_Level
3376          (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3377          THEN
3378 
3379            OE_MSG_PUB.Add_Exc_Msg
3380            (  G_PKG_NAME ,
3381              'Record - Customer Location'
3382            );
3383          END IF;
3384 
3385          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3386 
3387       END;
3388 
3389     END IF;
3390 
3391 -- hashraf end of pack J
3392 
3393       if l_debug_level > 0 then
3394              oe_debug_pub.add('Validating deliver_to_org_id :'|| to_char(p_header_rec.deliver_to_org_id),2);
3395              oe_debug_pub.add(' Customer Relations :'|| g_customer_relations, 1);
3396             end if;
3397     IF p_header_rec.deliver_to_org_id IS NOT NULL AND
3398          ( NOT OE_GLOBALS.EQUAL(p_header_rec.deliver_to_org_id,l_old_header_rec.deliver_to_org_id) OR
3399            NOT OE_GLOBALS.EQUAL(p_header_rec.sold_to_org_id ,l_old_header_rec.sold_to_org_id)) THEN
3400           -- ER 5743580
3401        IF NOT (Validate_Deliver_To_Org(p_header_rec.deliver_to_org_id,
3402                                             p_header_rec.sold_to_org_id )) THEN
3403 
3404                   x_return_status := FND_API.G_RET_STS_ERROR;
3405                   fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
3406                   FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
3407                   OE_Order_Util.Get_Attribute_Name('deliver_to_org_id'));
3408                   OE_MSG_PUB.Add;
3409         END IF;
3410 
3411     END if; -- Deliver to
3412 
3413     --  Invoice to Org id depends on sold to org.
3414     IF p_header_rec.invoice_to_org_id IS NOT NULL AND
3415           ( NOT OE_GLOBALS.EQUAL(p_header_rec.invoice_to_org_id ,l_old_header_rec.invoice_to_org_id) OR
3416             NOT OE_GLOBALS.EQUAL(p_header_rec.sold_to_org_id ,l_old_header_rec.sold_to_org_id)) THEN
3417                -- ER 5743580
3418             IF NOT ( Validate_Invoice_To_Org ( p_header_rec.invoice_to_org_id,
3419                                                p_header_rec.sold_to_org_id )) THEN
3420                   x_return_status := FND_API.G_RET_STS_ERROR;
3421                   fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
3422                   FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
3423                   OE_Order_Util.Get_Attribute_Name('invoice_to_org_id'));
3424                   OE_MSG_PUB.Add;
3425                 END IF;
3426 
3427     END IF; -- Invoice to org
3428 
3429     --  Sold to contact depends on Sold To Org
3430     IF p_header_rec.sold_to_contact_id IS NOT NULL AND
3431       ( NOT OE_GLOBALS.EQUAL(p_header_rec.sold_to_contact_id ,l_old_header_rec.sold_to_contact_id) OR
3432         NOT OE_GLOBALS.EQUAL(p_header_rec.sold_to_org_id ,l_old_header_rec.sold_to_org_id)) THEN
3433          BEGIN
3434 
3435              SELECT 'VALID'
3436              INTO   l_dummy
3437              FROM   HZ_CUST_ACCOUNT_ROLES ACCT_ROLE
3438              WHERE  ACCT_ROLE.CUST_ACCOUNT_ROLE_ID = p_header_rec.sold_to_contact_id
3439              AND    ACCT_ROLE.CUST_ACCOUNT_ID = p_header_rec.sold_to_org_id
3440              AND    ACCT_ROLE.ROLE_TYPE = 'CONTACT'
3441              AND  ROWNUM = 1;
3442 
3443          --  Valid Sold To Contact
3444          EXCEPTION
3445                WHEN NO_DATA_FOUND THEN
3446                     x_return_status := FND_API.G_RET_STS_ERROR;
3447                     fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
3448                     FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
3449                     OE_Order_Util.Get_Attribute_Name('SOLD_TO_CONTACT_ID'));
3450                     OE_MSG_PUB.Add;
3451                WHEN OTHERS THEN
3452                     IF OE_MSG_PUB.Check_Msg_Level ( OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
3453                          OE_MSG_PUB.Add_Exc_Msg (  G_PKG_NAME , 'Record - Sold To Contact');
3454                     END IF;
3455                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3456          END; -- BEGIN
3457     END IF; -- Sold to contact needed validation.
3458 
3459     if p_header_rec.start_date_active is not NULL and
3460        p_header_rec.end_date_active is not NULL and
3461        p_header_rec.start_date_active  > p_header_rec.end_date_active then
3462          FND_MESSAGE.SET_NAME('ONT','OE_BLKT_INVALID_DATE_RANGE');
3463          OE_MSG_PUB.ADD;
3464          x_return_status := FND_API.G_RET_STS_ERROR;
3465     end if;
3466 
3467     -- 11i10 Pricing Changes Start
3468     -- In prior releases, existing price list ID would store either
3469     -- the standard price list or new price list
3470     IF OE_CODE_CONTROL.Get_Code_Release_Level < '110510' THEN
3471 
3472     IF p_header_rec.price_list_id IS NULL AND
3473        p_header_rec.price_list_name IS NOT NULL THEN
3474       BEGIN
3475        if l_debug_level > 0 then
3476         oe_debug_pub.add('Derive price_list_id',1);
3477        end if;
3478        -- <R12.MOAC> START Need to check why we need to pass ORG_ID?
3479         SELECT list_header_id
3480         INTO   p_header_rec.price_list_id
3481         FROM   qp_list_headers_vl
3482         WHERE  list_type_code in ('PRL' ,'AGR')
3483         AND    p_header_rec.price_list_name = name
3484         AND    (((nvl(global_flag,'Y') = 'Y'
3485            OR     orig_org_id = mo_global.get_current_org_id)
3486            AND    qp_security.security_on = 'Y') or  qp_security.security_on = 'N');
3487         -- <R12.MOAC> END
3488       EXCEPTION
3489         WHEN NO_DATA_FOUND THEN
3490          if l_debug_level > 0 then
3491           oe_debug_pub.add('New price list needs to be created',1);
3492          end if;
3493           g_new_price_list := true;
3494       END;
3495     END IF;
3496 
3497     ELSE
3498 
3499     -- In 11i10, new price list field will store the new blanket specific
3500     -- price list and existing price list ID will store the standard price
3501     -- list.
3502 
3503     if l_debug_level > 0 then
3504        oe_debug_pub.add('pl name :'||p_header_rec.new_price_list_name);
3505        oe_debug_pub.add('old pl name :'||p_old_header_rec.new_price_list_name);
3506        oe_debug_pub.add('pl id :'||p_header_rec.new_price_list_id);
3507        oe_debug_pub.add('old pl id :'||p_old_header_rec.new_price_list_id);
3508        oe_debug_pub.add('ml name :'||p_header_rec.new_modifier_list_name);
3509        oe_debug_pub.add('old ml name :'||p_old_header_rec.new_modifier_list_name);
3510        oe_debug_pub.add('ml id :'||p_header_rec.new_modifier_list_id);
3511        oe_debug_pub.add('old ml id :'||p_old_header_rec.new_modifier_list_id);
3512     end if;
3513 
3514        IF NOT OE_GLOBALS.EQUAL(p_header_rec.new_price_list_id,
3515                               p_old_header_rec.new_price_list_id)
3516        THEN
3517 
3518           -- Cannot enter ID for a new price list, only name
3519           fnd_message.set_name('ONT','OE_BLKT_CANT_ENTER_NEW_PL_ID');
3520           oe_msg_pub.add;
3521           x_return_status := FND_API.G_RET_STS_ERROR;
3522 
3523        ELSIF p_header_rec.new_price_list_name IS NOT NULL
3524          -- Bug 3213174
3525          -- Changes from null to not null will be allowed
3526          AND p_old_header_rec.new_price_list_name IS NULL
3527          AND NOT OE_GLOBALS.EQUAL(p_header_rec.new_price_list_name
3528                                   ,p_old_header_rec.new_price_list_name
3529                                  )
3530        THEN
3531 
3532           BEGIN
3533 
3534           -- Check if name already exists
3535           SELECT list_header_id
3536             INTO l_list_header_id
3537             FROM qp_list_headers_vl
3538            WHERE name = p_header_rec.new_price_list_name
3539              AND rownum = 1;
3540 
3541           fnd_message.set_name('ONT','OE_BLKT_PRICE_LIST_EXISTS');
3542           oe_msg_pub.add;
3543           x_return_status := FND_API.G_RET_STS_ERROR;
3544 
3545           EXCEPTION
3546           WHEN NO_DATA_FOUND THEN
3547             g_new_price_list := true;
3548           END;
3549 
3550        END IF;
3551 
3552        IF NOT OE_GLOBALS.EQUAL(p_header_rec.new_modifier_list_id,
3553                               p_old_header_rec.new_modifier_list_id)
3554        THEN
3555 
3556           -- Cannot enter ID for a new modifier list, only name
3557           fnd_message.set_name('ONT','OE_BLKT_CANT_ENTER_MOD_LIST_ID');
3558           oe_msg_pub.add;
3559           x_return_status := FND_API.G_RET_STS_ERROR;
3560 
3561        ELSIF p_header_rec.new_modifier_list_name IS NOT NULL
3562          -- Bug 3213174
3563          -- Changes from null to not null will be allowed
3564          AND p_old_header_rec.new_modifier_list_name IS NULL
3565          AND NOT OE_GLOBALS.EQUAL(p_header_rec.new_modifier_list_name
3566                                   ,p_old_header_rec.new_modifier_list_name
3567                                  )
3568        THEN
3569 
3570          oe_debug_pub.add('check if ml exists');
3571 
3572           BEGIN
3573 
3574           -- Check if name already exists
3575           SELECT list_header_id
3576             INTO l_list_header_id
3577             FROM qp_list_headers_vl
3578            WHERE name = p_header_rec.new_modifier_list_name
3579              AND rownum = 1;
3580 
3581           fnd_message.set_name('ONT','OE_BLKT_MOD_LIST_EXISTS');
3582           oe_msg_pub.add;
3583           x_return_status := FND_API.G_RET_STS_ERROR;
3584 
3585           EXCEPTION
3586           WHEN NO_DATA_FOUND THEN
3587             g_new_modifier_list := true;
3588           END;
3589 
3590        END IF;
3591 
3592     END IF; -- End of code release level check
3593     -- 11i10 Pricing Changes End
3594 
3595 
3596     -- Apending Time component to End Date Active for Create or Update Operation.
3597     -- Pack J
3598     IF (p_header_rec.operation = oe_globals.g_opr_create) OR
3599        (p_header_rec.operation = oe_globals.g_opr_update)
3600       THEN
3601                IF NOT OE_GLOBALS.EQUAL(p_header_rec.end_date_active
3602                            ,l_old_header_rec.end_date_active)
3603         THEN
3604            p_header_rec.end_date_active :=
3605                 trunc(p_header_rec.end_date_active,'DD') +
3606                                           ((24*60*60)-1)/(24*60*60);
3607         END IF;
3608 
3609 
3610     END IF; -- End of WF time component changes
3611 
3612 
3613     Validate_Min_Max_Range(p_min_value => p_header_rec.Blanket_Min_amount,
3614         p_max_value => p_header_rec.Blanket_Max_amount,
3615         p_attribute => 'BLANKET_HEADER_AMOUNT', x_return_status => x_return_status);
3616 
3617     IF p_header_rec.operation = oe_globals.g_opr_update THEN
3618        --validate for updates
3619 
3620 
3621       --commented because waiting for message
3622       --not allowed to change any attributes on a previously closed blanket
3623     IF p_header_rec.end_date_active < trunc(sysdate) and
3624        l_old_header_rec.end_date_active < trunc(sysdate) THEN
3625                  x_return_status := FND_API.G_RET_STS_ERROR;
3626                  fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_ATTR_CLOSED');
3627                  OE_MSG_PUB.Add;
3628     END IF;
3629 
3630 
3631       --display warning if we haven't fulfilled minimum requirements
3632     IF NOT OE_GLOBALS.Equal(p_header_rec.end_date_active, l_old_header_rec.end_date_active) AND
3633        p_header_rec.end_date_active <= trunc(sysdate) AND
3634        nvl(p_header_rec.released_amount,0) < p_header_rec.blanket_min_amount THEN
3635          if l_debug_level > 0 then
3636            oe_debug_pub.add('Blanket header close min amount ');
3637          end if;
3638          FND_MESSAGE.SET_NAME('ONT','OE_BLKT_CLOSE_MIN_VALUES');
3639          OE_MSG_PUB.ADD;
3640     END IF;
3641 
3642 
3643                IF NOT OE_GLOBALS.Equal (p_header_rec.header_id,
3644                                 l_old_header_rec.header_id) THEN
3645                  x_return_status := FND_API.G_RET_STS_ERROR;
3646                  fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_HDR_ATTRIBUTE');
3647                  fnd_message.set_token('ATTRIBUTE',
3648                      OE_Order_UTIL.Get_Attribute_Name('HEADER_ID'));
3649                  OE_MSG_PUB.Add;
3650                END IF;
3651 
3652                IF NOT OE_GLOBALS.Equal (p_header_rec.order_number,
3653                                 l_old_header_rec.order_number) THEN
3654                  x_return_status := FND_API.G_RET_STS_ERROR;
3655                  fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_HDR_ATTRIBUTE');
3656                  fnd_message.set_token('ATTRIBUTE',
3657                      OE_Order_UTIL.Get_Attribute_Name('BLANKET_NUMBER'));
3658                  OE_MSG_PUB.Add;
3659                END IF;
3660 
3661                IF NOT OE_GLOBALS.Equal (p_header_rec.order_category_code,
3662                                 l_old_header_rec.order_category_code) THEN
3663                  x_return_status := FND_API.G_RET_STS_ERROR;
3664                  fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_HDR_ATTRIBUTE');
3665                  fnd_message.set_token('ATTRIBUTE',
3666                      OE_Order_UTIL.Get_Attribute_Name('ORDER_CATEGORY_CODE'));
3667                  OE_MSG_PUB.Add;
3668                END IF;
3669 
3670                IF NOT OE_GLOBALS.Equal (p_header_rec.org_id,
3671                                 l_old_header_rec.org_id) THEN
3672                  x_return_status := FND_API.G_RET_STS_ERROR;
3673                  fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_HDR_ATTRIBUTE');
3674                  fnd_message.set_token('ATTRIBUTE',
3675                      OE_Order_UTIL.Get_Attribute_Name('ORG_ID'));
3676                  OE_MSG_PUB.Add;
3677                END IF;
3678 
3679              --restricted from changing if releases exist
3680              IF p_header_rec.released_amount > 0 THEN
3681                IF NOT OE_GLOBALS.Equal (p_header_rec.sold_to_org_id,
3682                                 l_old_header_rec.sold_to_org_id) THEN
3683                  x_return_status := FND_API.G_RET_STS_ERROR;
3684                  fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_HDR_ATTRIBUTE');
3685                  fnd_message.set_token('ATTRIBUTE',
3686                      OE_Order_UTIL.Get_Attribute_Name('SOLD_TO_ORG_ID'));
3687                  OE_MSG_PUB.Add;
3688                END IF;
3689 
3690                IF NOT OE_GLOBALS.Equal (p_header_rec.transactional_curr_code,
3691                                 l_old_header_rec.transactional_curr_code) THEN
3692                  x_return_status := FND_API.G_RET_STS_ERROR;
3693                  fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_HDR_ATTRIBUTE');
3694                  fnd_message.set_token('ATTRIBUTE',
3695                    OE_Order_UTIL.Get_Attribute_Name('TRANSACTIONAL_CURR_CODE'));
3696                  OE_MSG_PUB.Add;
3697                END IF;
3698 
3699                IF NOT OE_GLOBALS.Equal (p_header_rec.start_date_active,
3700                                 l_old_header_rec.start_date_active) THEN
3701                  x_return_status := FND_API.G_RET_STS_ERROR;
3702                  fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_HDR_ATTRIBUTE');
3703                  fnd_message.set_token('ATTRIBUTE','Activation Date');
3704                  OE_MSG_PUB.Add;
3705                END IF;
3706              END IF; --if releases exist
3707 
3708                IF NOT OE_GLOBALS.Equal (p_header_rec.released_amount,
3709                                 l_old_header_rec.released_amount) THEN
3710                  x_return_status := FND_API.G_RET_STS_ERROR;
3711                  fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_HDR_ATTRIBUTE');
3712                  fnd_message.set_token('ATTRIBUTE','Released Amount');
3713                  OE_MSG_PUB.Add;
3714                END IF;
3715 
3716                IF NOT OE_GLOBALS.Equal (p_header_rec.returned_amount,
3717                                 l_old_header_rec.returned_amount) THEN
3718                  x_return_status := FND_API.G_RET_STS_ERROR;
3719                  fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_HDR_ATTRIBUTE');
3720                  fnd_message.set_token('ATTRIBUTE', 'Returned Amount');
3721                  fnd_message.set_token('new amount', p_header_rec.returned_amount);
3722                  fnd_message.set_token('old amount', l_old_header_rec.returned_amount);
3723                  OE_MSG_PUB.Add;
3724                END IF;
3725 
3726                IF NOT OE_GLOBALS.Equal (p_header_rec.fulfilled_amount,
3727                                 l_old_header_rec.fulfilled_amount) THEN
3728                  x_return_status := FND_API.G_RET_STS_ERROR;
3729                  fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_HDR_ATTRIBUTE');
3730                  fnd_message.set_token('ATTRIBUTE','Fulfilled Amount');
3731                  fnd_message.set_token('new amount', p_header_rec.fulfilled_amount);
3732                  fnd_message.set_token('old amount', l_old_header_rec.fulfilled_amount);
3733                  OE_MSG_PUB.Add;
3734                END IF;
3735 
3736 
3737       -- Date Validations
3738 
3739                IF p_header_rec.end_date_active IS NOT NULL
3740                   AND NOT OE_GLOBALS.EQUAL(p_header_rec.end_date_active
3741                                        ,l_old_header_rec.end_date_active)
3742                THEN
3743 
3744                   IF (l_old_header_rec.end_date_active IS NOT NULL
3745                       AND p_header_rec.end_date_active <
3746                              l_old_header_rec.end_date_active)
3747                       OR l_old_header_rec.end_date_active IS NULL
3748                   THEN
3749 
3750                   -- check for conflicting end dates on blanket lines
3751                      BEGIN
3752 
3753                      SELECT 'ERROR'
3754                      INTO l_dummy
3755                      FROM OE_BLANKET_LINES_EXT
3756                      WHERE ORDER_NUMBER = p_header_rec.order_number
3757                        AND END_DATE_ACTIVE > p_header_rec.end_date_active
3758                        AND ROWNUM = 1;
3759 
3760                      IF l_dummy = 'ERROR' THEN
3761                        x_return_status := FND_API.G_RET_STS_ERROR;
3762                        fnd_message.set_name('ONT', 'OE_BLKT_END_DATE_CONFLICT');
3763                        OE_MSG_PUB.Add;
3764                      END IF;
3765 
3766                      EXCEPTION
3767                        WHEN NO_DATA_FOUND THEN
3768                             NULL;
3769                      END;
3770 
3771                   -- check for existing releases that are not within these
3772                   -- effectivity dates
3773                      BEGIN
3774 
3775                      SELECT /* MOAC_SQL_NO_CHANGE */ 'ERROR'
3776                        INTO l_dummy
3777                        FROM OE_ORDER_LINES
3778                       WHERE trunc(request_date) > trunc(p_header_rec.end_date_active)
3779                         AND BLANKET_NUMBER = p_header_rec.order_number
3780                         AND ROWNUM = 1;
3781                       IF l_dummy = 'ERROR' THEN
3782                          x_return_status := FND_API.G_RET_STS_ERROR;
3783                          fnd_message.set_name('ONT', 'OE_BLKT_RELEASE_END_DATE');
3784                          OE_MSG_PUB.Add;
3785                       END IF;
3786 
3787                      EXCEPTION
3788                        WHEN NO_DATA_FOUND THEN
3789                             NULL;
3790                      END;
3791 
3792                   END IF;
3793 
3794                --check to see if we are cascading end dates to lines
3795                   IF l_old_header_rec.end_date_active IS NULL
3796                      AND x_return_status = FND_API.G_RET_STS_SUCCESS
3797                   THEN
3798                     BEGIN
3799                        SELECT 'CASCADE'
3800                        INTO l_dummy
3801                        FROM OE_BLANKET_LINES_EXT
3802                        WHERE ORDER_NUMBER = p_header_rec.order_number
3803                        AND END_DATE_ACTIVE IS NULL
3804                        AND ROWNUM = 1;
3805 
3806                        IF l_dummy = 'CASCADE' THEN
3807                          OE_GLOBALS.G_CASCADING_REQUEST_LOGGED := TRUE;
3808 
3809                          --if cascading, check to see if minimum values are satisfied
3810                          IF (p_header_rec.end_date_active <= trunc(sysdate)) THEN
3811                            SELECT 'WARNING'
3812                            INTO   l_dummy
3813                            FROM   OE_BLANKET_LINES_EXT OLX, OE_BLANKET_LINES OL
3814                            WHERE  OLX.LINE_ID = OL.LINE_ID
3815                            AND    OLX.ORDER_NUMBER = p_header_rec.order_number
3816                            AND    END_DATE_ACTIVE IS NULL
3817                            AND    OVERRIDE_BLANKET_CONTROLS_FLAG = 'N'
3818                            AND   (BLANKET_LINE_MIN_AMOUNT < RELEASED_AMOUNT
3819                            OR     BLANKET_MIN_QUANTITY < RELEASED_QUANTITY)
3820                            AND    ROWNUM = 1;
3821 
3822                            IF l_dummy = 'WARNING' THEN
3823                              fnd_message.set_name('ONT', 'OE_BLKT_CLOSE_MIN_VALUES');
3824                              OE_MSG_PUB.Add;
3825                            END IF;
3826                          END IF;
3827                        END IF;
3828 
3829                     EXCEPTION
3830                        WHEN OTHERS THEN
3831                           NULL;
3832                     END;
3833                   END IF;
3834                END IF;
3835 
3836 
3837        --verify max limits
3838 
3839                IF NOT OE_GLOBALS.Equal (p_header_rec.blanket_max_amount,
3840                     l_old_header_rec.blanket_max_amount)
3841                   AND p_header_rec.blanket_max_amount < p_header_rec.released_amount
3842                   AND nvl(p_header_rec.override_amount_flag, 'N') = 'N' THEN
3843                      x_return_status := FND_API.G_RET_STS_ERROR;
3844                      fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_MAX_LIMIT');
3845                      OE_MSG_PUB.Add;
3846                END IF;
3847 
3848       -- Version Change
3849       -- Validations and Record History
3850 
3851       IF NOT OE_GLOBALS.EQUAL(p_header_rec.version_number,
3852                             l_old_header_rec.version_number)
3853          AND OE_CODE_CONTROL.CODE_RELEASE_LEVEL < '110510'
3854       THEN
3855 
3856        SELECT  /* MOAC_SQL_CHANGE */ version_number
3857          INTO l_db_version_number
3858          FROM OE_BLANKET_HEADERS_ALL
3859         WHERE HEADER_ID = p_header_rec.header_id;
3860 
3861        if l_debug_level > 0 then
3862           oe_debug_pub.add('new version :'||p_header_rec.version_number);
3863           oe_debug_pub.add('old version :'||l_old_header_rec.version_number);
3864           oe_debug_pub.add('DB version :'||l_db_version_number);
3865        end if;
3866 
3867         IF p_header_rec.version_number
3868                   <= l_old_header_rec.version_number
3869         THEN
3870 
3871           x_return_status := FND_API.G_RET_STS_ERROR;
3872           FND_MESSAGE.SET_NAME('ONT','OE_BLKT_INVALID_REVISION_NUM');
3873           OE_MSG_PUB.ADD;
3874 
3875         ELSIF p_header_rec.revision_change_reason_code IS NULL THEN
3876 
3877           x_return_status := FND_API.G_RET_STS_ERROR;
3878           FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
3879           FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Revision Reason');
3880           OE_MSG_PUB.ADD;
3881 
3882         ELSE
3883 
3884        --validate reason code
3885       /*
3886           BEGIN
3887            SELECT 'VALID'
3888              INTO l_dummy
3889              FROM OE_LOOKUPS
3890              WHERE LOOKUP_TYPE = 'REVISION_REASON'
3891              AND LOOKUP_CODE = p_header_rec.revision_change_reason_code;
3892 
3893           EXCEPTION
3894              WHEN NO_DATA_FOUND THEN
3895                FND_MESSAGE.SET_NAME('ONT','OE_INVALID_REASON_CODE');
3896                FND_MESSAGE.SET_TOKEN('REASON_CODE', p_header_rec.revision_change_reason_code);
3897                OE_MSG_PUB.ADD;
3898                x_return_status := FND_API.G_RET_STS_ERROR;
3899           END;
3900 
3901       */
3902 
3903           query_blanket(p_header_id => p_header_rec.header_id
3904                        ,p_x_header_rec => g_old_header_hist_Rec
3905                        ,p_x_line_tbl => g_old_line_hist_tbl
3906                        ,x_return_status => l_return_status
3907                       );
3908            IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3909                x_return_status := l_return_status;
3910            END IF;
3911 
3912            IF NOT OE_GLOBALS.Equal(x_return_status, FND_API.G_RET_STS_ERROR) THEN
3913              OE_Delayed_Requests_PVT.Log_Request
3914                   (p_entity_code  => OE_BLANKET_pub.G_ENTITY_BLANKET_HEADER
3915                   ,p_Entity_Id => p_header_rec.header_id
3916 	          ,p_requesting_entity_code    =>
3917                            OE_BLANKET_pub.G_ENTITY_BLANKET_HEADER
3918                   ,p_requesting_entity_id  => p_header_rec.header_id
3919                   ,p_request_type => 'RECORD_BLANKET_HISTORY'
3920                   ,p_param1=> p_header_rec.revision_change_reason_code
3921                   ,p_long_param1  => p_header_rec.revision_change_comments
3922                   ,x_return_status => l_return_status);
3923              IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3924                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3925              END IF;
3926 
3927              IF p_header_rec.revision_change_date IS NULL THEN
3928                p_header_rec.revision_change_date := sysdate;
3929              END IF;
3930 
3931            END IF; --if no errors then log request
3932 
3933         END IF; --if version number less than old
3934 
3935       END IF; -- if version number is not equal
3936 
3937      -- Validate WF STATUS for Start and End Date for a BSA. For Pack J
3938     IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510'
3939     THEN
3940        if (NOT OE_GLOBALS.Equal(p_header_rec.start_date_active,l_old_header_rec.start_date_active) OR
3941            NOT OE_GLOBALS.Equal(p_header_rec.end_date_active,l_old_header_rec.end_date_active))
3942        THEN
3943              OE_Delayed_Requests_PVT.Log_Request
3944                   (p_entity_code  => OE_BLANKET_pub.G_ENTITY_BLANKET_HEADER
3945                   ,p_Entity_Id => p_header_rec.header_id
3946                   ,p_requesting_entity_code    =>
3947                            OE_BLANKET_pub.G_ENTITY_BLANKET_HEADER
3948                   ,p_requesting_entity_id  => p_header_rec.header_id
3949                   ,p_request_type => 'BLANKET_DATE_CHANGE'
3950                   ,x_return_status => l_return_status);
3951              IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3952                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3953              END IF;
3954        end if;
3955     END IF; -- Validate WF STATUS for  Start and End date for a BSA
3956 
3957 
3958     END IF; -- if update operation
3959 
3960     -- For bug #4447494
3961     IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510'
3962     THEN
3963        if (NOT OE_GLOBALS.Equal(p_header_rec.sold_to_org_id,l_old_header_rec.sold_to_org_id) and
3964                p_header_rec.operation = oe_globals.g_opr_update) THEN
3965            OE_Delayed_Requests_PVT.Log_Request
3966                   (p_entity_code  => OE_BLANKET_pub.G_ENTITY_BLANKET_HEADER
3967                   ,p_Entity_Id => p_header_rec.header_id
3968                   ,p_param1 => p_header_rec.sold_to_org_id
3969                   ,p_requesting_entity_code    =>
3970                            OE_BLANKET_pub.G_ENTITY_BLANKET_HEADER
3971                   ,p_requesting_entity_id  => p_header_rec.header_id
3972                   ,p_request_type => 'VALIDATE_BLANKET_SOLD_TO'
3973                   ,x_return_status => l_return_status);
3974            IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3975               RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3976            END IF;
3977        end if;
3978     END IF; -- For bug #4447494
3979 
3980      IF g_new_price_list THEN
3981         if l_debug_level > 0 then
3982           oe_debug_pub.add('logging request to create blanket price list',1);
3983         end if;
3984         if oe_code_control.get_code_release_level >= '110510' then
3985            l_new_pl_name := p_header_rec.new_price_list_name;
3986         else
3987            l_new_pl_name := p_header_rec.price_list_name;
3988         end if;
3989         oe_delayed_requests_pvt.Log_request(p_Entity_Code =>
3990 			 OE_BLANKET_pub.G_ENTITY_BLANKET_HEADER,
3991                      p_Entity_Id => p_header_rec.header_id,
3992                      p_requesting_entity_code    =>
3993                  OE_BLANKET_pub.G_ENTITY_BLANKET_HEADER,
3994                 p_requesting_entity_id      => p_header_rec.header_id,
3995                      p_request_type => 'CREATE_BLANKET_PRICE_LIST',
3996                      -- 11i10 Pricing Changes
3997                      p_param1 => l_new_pl_name,
3998                      p_param2 => nvl(p_header_rec.price_list_currency_code,
3999                      p_header_rec.transactional_curr_code),
4000                      p_long_param1  => p_header_rec.price_list_description,
4001                      -- 11i10 Pricing Changes
4002                      -- Add header_id and sold_to_org parameters
4003                      p_param6 => p_header_rec.header_id,
4004                      p_param7 => p_header_rec.sold_to_org_id,
4005 		     x_return_status => l_return_status);
4006          IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4007             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4008          END IF;
4009 
4010       END IF;
4011 
4012     -- 11i10 Pricing Changes
4013     -- Log request to create new modifier
4014     IF g_new_modifier_list THEN
4015 	oe_delayed_requests_pvt.Log_request
4016 	       (p_entity_code => oe_blanket_pub.g_entity_blanket_header,
4017 		p_Entity_Id => p_header_rec.header_id,
4018                 p_requesting_entity_code    =>
4019                   oe_blanket_pub.g_entity_blanket_header,
4020                 p_requesting_entity_id  => p_header_rec.header_id,
4021 		p_request_type => 'CREATE_MODIFIER_LIST',
4022 		p_param1 => p_header_rec.new_modifier_list_name,
4023                 p_param2 => p_header_rec.transactional_curr_code,
4024 		x_return_status => x_return_status );
4025     END IF;
4026 
4027     g_header_rec := p_header_rec;
4028 
4029    if l_debug_level > 0 then
4030     oe_debug_pub.add('Exit OE_BLANKET_UTIL.Validate_ENTITY- Header',1);
4031    end if;
4032 
4033 EXCEPTION
4034     WHEN FND_API.G_EXC_ERROR THEN
4035          x_return_status := FND_API.G_RET_STS_ERROR;
4036     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4037          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4038     WHEN OTHERS THEN
4039          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4040          IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4041               OE_MSG_PUB.Add_Exc_Msg (   G_PKG_NAME ,   'Validate_Entity');
4042          END IF;
4043 END Validate_Entity;
4044 
4045 PROCEDURE Insert_Row
4046 (p_header_rec        IN  OE_Blanket_PUB.Header_rec_type
4047 ,x_return_status     OUT NOCOPY VARCHAR2)
4048 IS
4049 	l_org_id	NUMBER;
4050 	l_upgraded_flag varchar2(1) ;
4051         l_lock_control  NUMBER := 1;
4052 --
4053 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4054 --
4055 BEGIN
4056 
4057     x_return_status := FND_API.G_RET_STS_SUCCESS;
4058 
4059     if l_debug_level > 0 then
4060      oe_debug_pub.add('Entering OE_BLANKET_UTIL.INSERT_ROW - Header ID :'||
4061                        p_header_rec.header_id);
4062     end if;
4063     --bug 7139169
4064     OE_GLOBALS.Set_Context;
4065     l_org_id := OE_GLOBALS.G_ORG_ID;
4066 
4067     --l_org_id := to_number(FND_PROFILE.VALUE('ORG_ID'));
4068     -- for bug 3342548. Added column CONTEXT
4069     INSERT  INTO OE_BLANKET_HEADERS
4070     (       ACCOUNTING_RULE_ID
4071     ,       AGREEMENT_ID
4072     , 	    CONTEXT
4073     ,       ATTRIBUTE1
4074     ,       ATTRIBUTE10
4075     ,       ATTRIBUTE11
4076     ,       ATTRIBUTE12
4077     ,       ATTRIBUTE13
4078     ,       ATTRIBUTE14
4079     ,       ATTRIBUTE15
4080     ,       ATTRIBUTE16
4081     ,       ATTRIBUTE17
4082     ,       ATTRIBUTE18
4083     ,       ATTRIBUTE19
4084     ,       ATTRIBUTE20
4085     ,       ATTRIBUTE2
4086     ,       ATTRIBUTE3
4087     ,       ATTRIBUTE4
4088     ,       ATTRIBUTE5
4089     ,       ATTRIBUTE6
4090     ,       ATTRIBUTE7
4091     ,       ATTRIBUTE8
4092     ,       ATTRIBUTE9
4093     ,       CREATED_BY
4094     ,       CREATION_DATE
4095     ,       CUST_PO_NUMBER
4096     ,       DELIVER_TO_ORG_ID
4097     ,       FREIGHT_TERMS_CODE
4098     ,       header_id
4099     ,       INVOICE_TO_ORG_ID
4100     ,       INVOICING_RULE_ID
4101     ,       LAST_UPDATED_BY
4102     ,       LAST_UPDATE_DATE
4103     ,       LAST_UPDATE_LOGIN
4104     ,       ORDER_NUMBER
4105     ,       ORDER_TYPE_ID
4106     ,       PAYMENT_TERM_ID
4107     ,       PRICE_LIST_ID
4108     ,       PROGRAM_APPLICATION_ID
4109     ,       PROGRAM_ID
4110     ,       PROGRAM_UPDATE_DATE
4111     ,       REQUEST_ID
4112     ,       SALESREP_ID
4113     ,       SHIPPING_METHOD_CODE
4114     ,       ship_from_org_id
4115     ,       SHIP_TO_ORG_ID
4116     ,       SOLD_TO_CONTACT_ID
4117     ,       SOLD_TO_ORG_ID
4118     ,       TRANSACTIONAL_CURR_CODE
4119     ,       conversion_type_code
4120     ,       lock_control
4121     ,       open_flag
4122     ,       booked_flag
4123     ,       VERSION_NUMBER
4124     ,       SHIPPING_INSTRUCTIONS
4125     ,       PACKING_INSTRUCTIONS
4126     ,       ORG_ID
4127     ,       SALES_DOCUMENT_TYPE_CODE
4128     ,       ORDER_CATEGORY_CODE
4129     ,       SOURCE_DOCUMENT_TYPE_ID
4130     ,       SOURCE_DOCUMENT_ID
4131 -- hashraf start of Pack J
4132     ,	    SALES_DOCUMENT_NAME
4133     ,	    TRANSACTION_PHASE_CODE
4134     ,	    USER_STATUS_CODE
4135     ,	    flow_status_code
4136     ,	    SUPPLIER_SIGNATURE
4137     ,	    SUPPLIER_SIGNATURE_DATE
4138     ,	    CUSTOMER_SIGNATURE
4139     ,	    CUSTOMER_SIGNATURE_DATE
4140     ,	    SOLD_TO_SITE_USE_ID
4141     ,	    DRAFT_SUBMITTED_FLAG
4142     ,	    SOURCE_DOCUMENT_VERSION_NUMBER
4143     )  -- end of Pack J
4144     VALUES
4145     (       p_header_rec.accounting_rule_id
4146     ,       p_header_rec.agreement_id
4147     ,	    p_header_rec.context
4148     ,       p_header_rec.attribute1
4149     ,       p_header_rec.attribute10
4150     ,       p_header_rec.attribute11
4151     ,       p_header_rec.attribute12
4152     ,       p_header_rec.attribute13
4153     ,       p_header_rec.attribute14
4154     ,       p_header_rec.attribute15
4155     ,       p_header_rec.attribute16
4156     ,       p_header_rec.attribute17
4157     ,       p_header_rec.attribute18
4158     ,       p_header_rec.attribute19
4159     ,       p_header_rec.attribute20
4160     ,       p_header_rec.attribute2
4161     ,       p_header_rec.attribute3
4162     ,       p_header_rec.attribute4
4163     ,       p_header_rec.attribute5
4164     ,       p_header_rec.attribute6
4165     ,       p_header_rec.attribute7
4166     ,       p_header_rec.attribute8
4167     ,       p_header_rec.attribute9
4168     ,       p_header_rec.created_by
4169     ,       p_header_rec.creation_date
4170     ,       p_header_rec.cust_po_number
4171     ,       p_header_rec.deliver_to_org_id
4172     ,       p_header_rec.freight_terms_code
4173     ,       p_header_rec.header_id
4174     ,       p_header_rec.invoice_to_org_id
4175     ,       p_header_rec.invoicing_rule_id
4176     ,       p_header_rec.last_updated_by
4177     ,       p_header_rec.last_update_date
4178     ,       p_header_rec.last_update_login
4179     ,       p_header_rec.order_number
4180     ,       p_header_rec.order_type_id
4181     ,       p_header_rec.payment_term_id
4182     ,       p_header_rec.price_list_id
4183     ,       p_header_rec.program_application_id
4184     ,       p_header_rec.program_id
4185     ,       p_header_rec.program_update_date
4186     ,       p_header_rec.request_id
4187     ,       p_header_rec.salesrep_id
4188     ,       p_header_rec.shipping_method_code
4189     ,       p_header_rec.ship_from_org_id
4190     ,       p_header_rec.ship_to_org_id
4191     ,       p_header_rec.sold_to_contact_id
4192     ,       p_header_rec.sold_to_org_id
4193     ,       p_header_rec.transactional_curr_code
4194     ,       p_header_rec.conversion_type_code
4195     ,       l_lock_control
4196     ,       'Y'
4197     ,       'N'
4198     ,       p_header_rec.version_number
4199     ,	    p_header_rec.shipping_instructions
4200     ,	    p_header_rec.packing_instructions
4201     ,       mo_global.get_current_org_id
4202     ,       'B'
4203     ,       'ORDER'
4204     ,       p_header_rec.source_document_type_id
4205     ,       p_header_rec.source_document_id
4206     ,       p_header_rec.SALES_DOCUMENT_NAME -- hashraf ... start of pack J
4207     ,       p_header_rec.TRANSACTION_PHASE_CODE
4208     ,       p_header_rec.USER_STATUS_CODE
4209     ,       p_header_rec.FLOW_STATUS_CODE
4210     ,       p_header_rec.SUPPLIER_SIGNATURE
4211     ,       p_header_rec.SUPPLIER_SIGNATURE_DATE
4212     ,       p_header_rec.CUSTOMER_SIGNATURE
4213     ,       p_header_rec.CUSTOMER_SIGNATURE_DATE
4214     ,       p_header_rec.sold_to_site_use_id
4215     ,       p_header_rec.draft_submitted_flag
4216     ,       p_header_rec.source_document_version_number
4217     );
4218 -- hashraf ... end of pack J
4219 
4220     INSERT  INTO OE_BLANKET_HEADERS_EXT
4221     (       ORDER_NUMBER
4222     ,       START_DATE_ACTIVE
4223     ,       END_DATE_ACTIVE
4224     ,       on_hold_flag
4225     ,       ENFORCE_PRICE_LIST_FLAG
4226     ,   enforce_ship_to_flag
4227     ,   enforce_invoice_to_flag
4228     ,   enforce_freight_term_flag
4229     ,   enforce_shipping_method_flag
4230     ,   enforce_payment_term_flag
4231     ,   enforce_accounting_rule_flag
4232     ,   enforce_invoicing_rule_flag
4233     ,       OVERRIDE_AMOUNT_FLAG
4234     ,       BLANKET_MAX_AMOUNT
4235     ,       BLANKET_MIN_AMOUNT
4236     ,       RELEASED_AMOUNT
4237     ,       FULFILLED_AMOUNT
4238     ,       REVISION_CHANGE_REASON_CODE
4239     ,       REVISION_CHANGE_COMMENTS
4240     ,       REVISION_CHANGE_DATE
4241     -- 11i10 Pricing Changes
4242     ,       NEW_PRICE_LIST_ID
4243     ,       NEW_MODIFIER_LIST_ID
4244     ,       DEFAULT_DISCOUNT_PERCENT
4245     ,       DEFAULT_DISCOUNT_AMOUNT
4246 )
4247 VALUES
4248     (       p_header_rec.order_number
4249     ,       p_header_rec.START_DATE_ACTIVE
4250     ,       p_header_rec.END_DATE_ACTIVE
4251     ,       p_header_rec.on_hold_flag
4252     ,       p_header_rec.ENFORCE_PRICE_LIST_FLAG
4253     ,       p_header_rec.enforce_ship_to_flag
4254     ,       p_header_rec.enforce_invoice_to_flag
4255     ,       p_header_rec.enforce_freight_term_flag
4256     ,       p_header_rec.enforce_shipping_method_flag
4257     ,       p_header_rec.enforce_payment_term_flag
4258     ,       p_header_rec.enforce_accounting_rule_flag
4259     ,       p_header_rec.enforce_invoicing_rule_flag
4260     ,       p_header_rec.OVERRIDE_AMOUNT_FLAG
4261     ,       p_header_rec.Blanket_Max_Amount
4262     ,       p_header_rec.Blanket_Min_Amount
4263     ,       p_header_rec.RELEASED_AMOUNT
4264     ,       p_header_rec.FULFILLED_AMOUNT
4265     ,       p_header_rec.REVISION_CHANGE_REASON_CODE
4266     ,       p_header_rec.REVISION_CHANGE_COMMENTS
4267     ,       p_header_rec.REVISION_CHANGE_DATE
4268     -- 11i10 Pricing Changes
4269     ,       p_header_rec.NEW_PRICE_LIST_ID
4270     ,       p_header_rec.NEW_MODIFIER_LIST_ID
4271     ,       p_header_rec.default_DISCOUNT_PERCENT
4272     ,       p_header_rec.default_DISCOUNT_AMOUNT
4273 );
4274 
4275    OE_Blanket_Header_Security.g_check_all_cols_constraint := 'Y'; /* Bug # 5516348 */
4276    if l_debug_level > 0 then
4277     oe_debug_pub.add('Exiting OE_BLANKET_UTIL.INSERT_ROW- Header', 1);
4278    end if;
4279 
4280 EXCEPTION
4281 
4282     WHEN OTHERS THEN
4283         OE_Blanket_Header_Security.g_check_all_cols_constraint := 'Y'; /* Bug # 5516348 */
4284         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4285         THEN
4286             OE_MSG_PUB.Add_Exc_Msg
4287             (   G_PKG_NAME
4288             ,   'Insert_Row'
4289             );
4290         END IF;
4291 
4292         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4293         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4294 
4295 End Insert_Row;
4296 
4297 PROCEDURE Update_Row
4298 (   p_header_rec       IN   OE_Blanket_PUB.Header_rec_type
4299 ,   x_return_status    OUT  NOCOPY VARCHAR2
4300 )
4301 IS
4302 l_return_status VARCHAR2(1);
4303 --
4304 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4305 --
4306 BEGIN
4307 
4308     x_return_status := FND_API.G_RET_STS_SUCCESS;
4309 
4310     --Versioning changes
4311     IF OE_CODE_CONTROL.Code_Release_Level >= '110510' AND
4312        NOT g_old_version_captured THEN
4313           query_blanket(p_header_id => p_header_rec.header_id
4314                        ,p_x_header_rec => g_old_header_hist_Rec
4315                        ,p_x_line_tbl => g_old_line_hist_tbl
4316                        ,x_return_status => l_return_status
4317                       );
4318            IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4319                x_return_status := l_return_status;
4320            END IF;
4321            g_old_version_captured := TRUE;
4322     END IF;
4323     -- for bug 3342548. Added column CONTEXT
4324     UPDATE  OE_BLANKET_HEADERS
4325     SET     ACCOUNTING_RULE_ID             = p_header_rec.accounting_rule_id
4326     ,       AGREEMENT_ID                   = p_header_rec.agreement_id
4327     , 	    CONTEXT			   = p_header_rec.context
4328     ,       ATTRIBUTE1                     = p_header_rec.attribute1
4329     ,       ATTRIBUTE10                    = p_header_rec.attribute10
4330     ,       ATTRIBUTE11                    = p_header_rec.attribute11
4331     ,       ATTRIBUTE12                    = p_header_rec.attribute12
4332     ,       ATTRIBUTE13                    = p_header_rec.attribute13
4333     ,       ATTRIBUTE14                    = p_header_rec.attribute14
4334     ,       ATTRIBUTE15                    = p_header_rec.attribute15
4335     ,       ATTRIBUTE16                    = p_header_rec.attribute16
4336     ,       ATTRIBUTE17                    = p_header_rec.attribute17
4337     ,       ATTRIBUTE18                    = p_header_rec.attribute18
4338     ,       ATTRIBUTE19                    = p_header_rec.attribute19
4339     ,       ATTRIBUTE20                    = p_header_rec.attribute20
4340     ,       ATTRIBUTE2                     = p_header_rec.attribute2
4341     ,       ATTRIBUTE3                     = p_header_rec.attribute3
4342     ,       ATTRIBUTE4                     = p_header_rec.attribute4
4343     ,       ATTRIBUTE5                     = p_header_rec.attribute5
4344     ,       ATTRIBUTE6                     = p_header_rec.attribute6
4345     ,       ATTRIBUTE7                     = p_header_rec.attribute7
4346     ,       ATTRIBUTE8                     = p_header_rec.attribute8
4347     ,       ATTRIBUTE9                     = p_header_rec.attribute9
4348   --  ,       CREATED_BY                     = p_header_rec.created_by
4349   --  ,       CREATION_DATE                  = p_header_rec.creation_date
4350     ,       CUST_PO_NUMBER                 = p_header_rec.cust_po_number
4351     ,       DELIVER_TO_ORG_ID              = p_header_rec.deliver_to_org_id
4352     ,       FREIGHT_TERMS_CODE             = p_header_rec.freight_terms_code
4353     ,       INVOICE_TO_ORG_ID              = p_header_rec.invoice_to_org_id
4354     ,       INVOICING_RULE_ID              = p_header_rec.invoicing_rule_id
4355     ,       LAST_UPDATED_BY                = nvl(p_header_rec.last_updated_by, FND_GLOBAL.USER_ID)
4356     ,       LAST_UPDATE_DATE               = nvl(p_header_rec.last_update_date, sysdate)
4357     ,       LAST_UPDATE_LOGIN              = p_header_rec.last_update_login
4358     ,       ORDER_TYPE_ID                  = p_header_rec.order_type_id
4359     ,       PAYMENT_TERM_ID                = p_header_rec.payment_term_id
4360     ,       PRICE_LIST_ID                  = p_header_rec.price_list_id
4361     ,       PROGRAM_APPLICATION_ID         = p_header_rec.program_application_id
4362     ,       PROGRAM_ID                     = p_header_rec.program_id
4363     ,       PROGRAM_UPDATE_DATE            = p_header_rec.program_update_date
4364 
4365 
4366     ,       REQUEST_ID                     = p_header_rec.request_id
4367     ,       salesrep_id                    = p_header_rec.salesrep_id
4368     ,       SHIPPING_METHOD_CODE           = p_header_rec.shipping_method_code
4369     ,       ship_from_org_id               =    p_header_rec.ship_from_org_id
4370     ,       SHIP_TO_ORG_ID                 = p_header_rec.ship_to_org_id
4371     ,       SOLD_TO_CONTACT_ID             = p_header_rec.sold_to_contact_id
4372     ,       SOLD_TO_ORG_ID                 = p_header_rec.sold_to_org_id
4373     ,       TRANSACTIONAL_CURR_CODE        = p_header_rec.transactional_curr_code
4374     ,       CONVERSION_TYPE_CODE        = p_header_rec.CONVERSION_TYPE_CODE
4375     ,       LOCK_CONTROL        = LOCK_CONTROL + 1
4376     ,       VERSION_NUMBER                 = p_header_rec.version_number
4377     ,       SHIPPING_INSTRUCTIONS       = p_header_rec.shipping_instructions
4378     ,       PACKING_INSTRUCTIONS        = p_header_rec.packing_instructions
4379     ,       SOURCE_DOCUMENT_TYPE_ID = p_header_rec.source_document_type_id
4380     ,       SOURCE_DOCUMENT_ID     = p_header_rec.source_document_id
4381 -- hashraf ... start of pack J
4382     ,       SALES_DOCUMENT_NAME		= p_header_rec.SALES_DOCUMENT_NAME
4383     ,       TRANSACTION_PHASE_CODE      = p_header_rec.TRANSACTION_PHASE_CODE
4384     ,       USER_STATUS_CODE		= p_header_rec.USER_STATUS_CODE
4385     ,       FLOW_STATUS_CODE		= p_header_rec.FLOW_STATUS_CODE
4386     ,       SUPPLIER_SIGNATURE 		= p_header_rec.SUPPLIER_SIGNATURE
4387     ,       SUPPLIER_SIGNATURE_DATE	= p_header_rec.SUPPLIER_SIGNATURE_DATE
4388     ,       CUSTOMER_SIGNATURE		= p_header_rec.CUSTOMER_SIGNATURE
4389     ,       CUSTOMER_SIGNATURE_DATE	= p_header_rec.CUSTOMER_SIGNATURE_DATE
4390     ,       sold_to_site_use_id         = p_header_rec.sold_to_site_use_id
4391     ,       draft_submitted_flag	= p_header_rec.draft_submitted_flag
4392     ,       source_document_version_number      = p_header_rec.source_document_version_number
4393 -- hashraf ... end of pack J
4394 
4395     WHERE   header_id = p_header_rec.header_id;
4396 
4397     UPDATE  OE_BLANKET_HEADERS_EXT
4398     SET
4399             START_DATE_ACTIVE = p_header_rec.START_DATE_ACTIVE
4400     ,       END_DATE_ACTIVE = p_header_rec.END_DATE_ACTIVE
4401     ,       on_hold_flag = p_header_rec.on_hold_flag
4402     ,       ENFORCE_PRICE_LIST_FLAG = p_header_rec.ENFORCE_PRICE_LIST_FLAG
4403     ,   enforce_ship_to_flag = p_header_rec.enforce_ship_to_flag
4404     ,   enforce_invoice_to_flag = p_header_rec.enforce_invoice_to_flag
4405     ,   enforce_freight_term_flag = p_header_rec.enforce_freight_term_flag
4406     ,   enforce_shipping_method_flag = p_header_rec.enforce_shipping_method_flag
4407     ,   enforce_payment_term_flag = p_header_rec.enforce_payment_term_flag
4408     ,   enforce_accounting_rule_flag = p_header_rec.enforce_accounting_rule_flag
4409     ,   enforce_invoicing_rule_flag = p_header_rec.enforce_invoicing_rule_flag
4410     ,       OVERRIDE_AMOUNT_FLAG = p_header_rec.OVERRIDE_AMOUNT_FLAG
4411     ,       blanket_max_amount = p_header_rec.Blanket_Max_Amount
4412     ,       blanket_min_amount = p_header_rec.Blanket_Min_Amount
4413 --    ,       released_amount = p_header_rec.released_amount
4414 --    ,       fulfilled_amount = p_header_rec.fulfilled_amount
4415 --    ,       returned_amount = p_header_rec.returned_amount
4416     ,       REVISION_CHANGE_REASON_CODE     = p_header_rec.revision_change_reason_code
4417     ,       REVISION_CHANGE_COMMENTS        = p_header_rec.revision_change_comments
4418     ,       REVISION_CHANGE_DATE                   = p_header_rec.revision_change_date
4419     -- 11i10 Pricing Changes
4420     ,       new_price_list_id = p_header_rec.new_price_list_id
4421     ,       new_modifier_list_id = p_header_rec.new_modifier_list_id
4422     ,       default_discount_percent = p_header_rec.default_discount_percent
4423     ,       default_discount_amount = p_header_rec.default_discount_amount
4424     WHERE   order_number = p_header_rec.order_number;
4425 
4426     UPDATE OE_BLANKET_LINES_EXT
4427     SET
4428             END_DATE_ACTIVE = p_header_rec.end_date_active
4429     WHERE   order_number = p_header_rec.order_number
4430     AND     END_DATE_ACTIVE IS NULL;
4431 
4432    OE_Blanket_Header_Security.g_check_all_cols_constraint := 'Y'; /* Bug # 5516348 */
4433    if l_debug_level > 0 then
4434     oe_debug_pub.add('Exiting OE_BLANKET_UTIL.UPDATE_ROW', 1);
4435    end if;
4436 
4437 EXCEPTION
4438 
4439     WHEN OTHERS THEN
4440 
4441         OE_Blanket_Header_Security.g_check_all_cols_constraint := 'Y'; /* Bug # 5516348 */
4442         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4443         THEN
4444             OE_MSG_PUB.Add_Exc_Msg
4445             (   G_PKG_NAME
4446             ,   'Update_Row'
4447             );
4448         END IF;
4449 
4450         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4451         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4452 End Update_Row;
4453 
4454 PROCEDURE Delete_Row
4455 (   p_header_id      IN   NUMBER
4456 , x_return_status OUT NOCOPY VARCHAR2)
4457 
4458 IS
4459 --
4460 l_transaction_phase_code VARCHAR2(30);
4461 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4462 l_return_status          VARCHAR2(1);
4463 -- added for delete articles
4464 l_msg_count NUMBER;
4465 l_msg_data VARCHAR2(2000);
4466 --
4467 --for bug 3348870
4468 l_order_number		Number;
4469 l_line_id		Number;
4470 Cursor c_line_id is
4471        SELECT	line_id
4472        FROM 	OE_BLANKET_LINES
4473        WHERE 	header_id=p_header_id;
4474 --
4475 
4476 BEGIN
4477 -- hashraf ... start of pack J
4478     x_return_status := FND_API.G_RET_STS_SUCCESS;
4479 
4480    if l_debug_level > 0 then
4481      oe_debug_pub.add('Entering OE_BLANKET_UTIL.DELETE_ROW - HEADER ID :'||
4482                        p_header_id);
4483    end if;
4484 
4485   BEGIN
4486 
4487    SELECT   /* MOAC_SQL_CHANGE */ transaction_phase_code
4488    INTO l_transaction_phase_code
4489    FROM oe_blanket_headers_all
4490    WHERE header_id = p_header_id;
4491 
4492   --for bug 3348870
4493   SELECT order_number
4494   INTO l_order_number
4495   FROM OE_BLANKET_HEADERS_ALL
4496   WHERE header_id=p_header_id;
4497 
4498   EXCEPTION
4499          WHEN OTHERS THEN
4500 	 null;
4501   END;
4502 
4503 
4504   IF l_transaction_phase_code IS NOT NULL THEN
4505 
4506     IF l_transaction_phase_code = 'N' THEN
4507      oe_debug_pub.add('OE_BLANKET_UTIL.Delete_Row WF negotiate');
4508      OE_Order_WF_Util.delete_row(p_type=>'NEGOTIATE', p_id => p_header_id);
4509     ELSE
4510      oe_debug_pub.add('OE_BLANKET_UTIL.Delete_Row WF blanket');
4511      OE_Order_WF_Util.delete_row(p_type=>'BLANKET', p_id => p_header_id);
4512     END IF;
4513 
4514   END IF;
4515      oe_debug_pub.add('OE_BLANKET_UTIL.Delete_Row after WF delete');
4516 
4517    -- 11i10 Pricing Changes
4518    OE_Blanket_Pricing_Util.Deactivate_Pricing
4519                      (p_blanket_header_id => p_header_id
4520                      ,x_return_status => l_return_status
4521                      );
4522    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4523       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4524    END IF;
4525 
4526 -- added for delete attachments
4527     OE_Atchmt_Util.Delete_Attachments
4528                ( p_entity_code	=> OE_GLOBALS.G_ENTITY_HEADER
4529                , p_entity_id      	=> p_header_id
4530                , x_return_status   => l_return_status
4531                );
4532     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4533           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4534     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
4535           RAISE FND_API.G_EXC_ERROR;
4536     END IF;
4537 
4538 	 OE_CONTRACTS_UTIL.delete_articles
4539         (
4540         p_api_version    =>1,
4541         p_doc_type       => OE_CONTRACTS_UTIL.G_BSA_DOC_TYPE,
4542         p_doc_id         =>p_header_id,
4543         x_return_status  =>l_return_status,
4544         x_msg_count      =>l_msg_count,
4545         x_msg_data       =>l_msg_data);
4546 
4547    --for bug 3348870
4548    For r_line_id in c_line_id
4549    Loop
4550         OE_Blanket_Util.Delete_Row(p_line_id => r_line_id.line_id
4551 				,x_return_status => X_RETURN_STATUS);
4552    End Loop;
4553 
4554    --End bug
4555 
4556    DELETE FROM OE_BLANKET_HEADERS
4557    WHERE header_id = p_header_id;
4558 
4559    DELETE FROM OE_BLANKET_HEADERS_HIST
4560    WHERE header_id = p_header_id;
4561 
4562    --for bug 3348870
4563    DELETE FROM OE_BLANKET_HEADERS_EXT
4564    WHERE order_number=l_order_number;
4565 
4566   if l_debug_level > 0 then
4567     oe_debug_pub.add('Exiting OE_BLANKET_UTIL.DELETE_ROW', 1);
4568    end if;
4569 
4570 EXCEPTION
4571     WHEN FND_API.G_EXC_ERROR THEN
4572     --added for delete articles
4573     OE_MSG_PUB.Count_And_Get
4574      (
4575        p_count       => l_msg_count,
4576        p_data        => l_msg_data
4577       );
4578 		RAISE FND_API.G_EXC_ERROR;
4579     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4580     --added for delete articles
4581     OE_MSG_PUB.Count_And_Get
4582      (
4583        p_count       => l_msg_count,
4584        p_data        => l_msg_data
4585      );
4586 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4587     WHEN OTHERS THEN
4588 
4589         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4590         THEN
4591             OE_MSG_PUB.Add_Exc_Msg
4592             (   G_PKG_NAME
4593             ,   'Delete_Row'
4594             );
4595         END IF;
4596 
4597         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4598         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4599 
4600 End Delete_Row;
4601 
4602 PROCEDURE Insert_Row
4603 ( p_line_rec IN OE_Blanket_PUB.Line_rec_type
4604 , x_return_status OUT NOCOPY VARCHAR2)
4605 IS
4606 l_org_id 	NUMBER ;
4607 l_sold_from_org NUMBER;
4608 l_upgraded_flag varchar2(1);
4609 l_lock_control  NUMBER:= 1;
4610 l_index         NUMBER;
4611 l_return_status varchar2(1);
4612 --
4613 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4614 --
4615 BEGIN
4616 
4617     x_return_status := FND_API.G_RET_STS_SUCCESS;
4618 
4619    if l_debug_level > 0 then
4620      oe_debug_pub.add('Entering OE_BLANKET_UTIL.INSERT_ROW - Line ID :'||
4621                        p_line_rec.line_id);
4622    end if;
4623 
4624     --Versioning changes
4625     IF OE_CODE_CONTROL.Code_Release_Level >= '110510' AND
4626        NOT g_old_version_captured THEN
4627           query_blanket(p_header_id => p_line_rec.header_id
4628                        ,p_x_header_rec => g_old_header_hist_Rec
4629                        ,p_x_line_tbl => g_old_line_hist_tbl
4630                        ,x_return_status => l_return_status
4631                       );
4632            IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4633                x_return_status := l_return_status;
4634            END IF;
4635            g_old_version_captured := TRUE;
4636     END IF;
4637 
4638     INSERT  INTO OE_BLANKET_LINES
4639     (       ACCOUNTING_RULE_ID
4640     ,       AGREEMENT_ID
4641     ,       ATTRIBUTE1
4642     ,       ATTRIBUTE10
4643     ,       ATTRIBUTE11
4644     ,       ATTRIBUTE12
4645     ,       ATTRIBUTE13
4646     ,       ATTRIBUTE14
4647     ,       ATTRIBUTE15
4648     ,       ATTRIBUTE16
4649     ,       ATTRIBUTE17
4650     ,       ATTRIBUTE18
4651     ,       ATTRIBUTE19
4652     ,       ATTRIBUTE20
4653     ,       ATTRIBUTE2
4654     ,       ATTRIBUTE3
4655     ,       ATTRIBUTE4
4656     ,       ATTRIBUTE5
4657     ,       ATTRIBUTE6
4658     ,       ATTRIBUTE7
4659     ,       ATTRIBUTE8
4660     ,       ATTRIBUTE9
4661     ,       CONTEXT
4662     ,       CREATED_BY
4663     ,       CREATION_DATE
4664     ,       CUST_PO_NUMBER
4665     ,       DELIVER_TO_ORG_ID
4666     ,       FREIGHT_TERMS_CODE
4667     ,       header_id
4668     ,       inventory_item_id
4669     ,       SOLD_TO_ORG_ID
4670     ,       INVOICE_TO_ORG_ID
4671     ,       INVOICING_RULE_ID
4672     ,       ORDERED_ITEM_ID
4673     ,       item_identifier_type
4674     ,       lock_control
4675     ,       open_flag
4676     ,       ORDERED_ITEM
4677     ,       ITEM_TYPE_CODE
4678     ,       LAST_UPDATED_BY
4679     ,       LAST_UPDATE_DATE
4680     ,       LAST_UPDATE_LOGIN
4681     ,       line_id
4682     ,       line_type_id
4683     ,       line_number
4684     ,       ORG_ID
4685     ,       PAYMENT_TERM_ID
4686     ,       PREFERRED_GRADE             --OPM Added 02/JUN/00
4687     ,       PRICE_LIST_ID
4688     ,       PROGRAM_APPLICATION_ID
4689     ,       PROGRAM_ID
4690     ,       PROGRAM_UPDATE_DATE
4691     ,       REQUEST_ID
4692     ,       SALESREP_ID
4693     ,       SHIPPING_METHOD_CODE
4694     ,       ship_from_org_id
4695     ,       ship_to_org_id
4696     ,       SHIPPING_INSTRUCTIONS
4697     ,       PACKING_INSTRUCTIONS
4698     ,       ORDER_QUANTITY_UOM
4699     ,       SALES_DOCUMENT_TYPE_CODE
4700     ,       SHIPMENT_NUMBER
4701     ,       LINE_CATEGORY_CODE
4702     ,       BOOKED_FLAG
4703     ,       SOURCE_DOCUMENT_TYPE_ID
4704     ,       SOURCE_DOCUMENT_ID
4705     ,       SOURCE_DOCUMENT_LINE_ID
4706     ,       transaction_phase_code -- hashraf pack J
4707     ,       source_document_version_number
4708     )
4709     VALUES
4710     (       p_line_rec.accounting_rule_id
4711     ,       p_line_rec.agreement_id
4712     ,       p_line_rec.attribute1
4713     ,       p_line_rec.attribute10
4714     ,       p_line_rec.attribute11
4715     ,       p_line_rec.attribute12
4716     ,       p_line_rec.attribute13
4717     ,       p_line_rec.attribute14
4718     ,       p_line_rec.attribute15
4719     ,       p_line_rec.attribute16
4720     ,       p_line_rec.attribute17
4721     ,       p_line_rec.attribute18
4722     ,       p_line_rec.attribute19
4723     ,       p_line_rec.attribute20
4724     ,       p_line_rec.attribute2
4725     ,       p_line_rec.attribute3
4726     ,       p_line_rec.attribute4
4727     ,       p_line_rec.attribute5
4728     ,       p_line_rec.attribute6
4729     ,       p_line_rec.attribute7
4730     ,       p_line_rec.attribute8
4731     ,       p_line_rec.attribute9
4732     ,       p_line_rec.context
4733     ,       p_line_rec.created_by
4734     ,       p_line_rec.creation_date
4735     ,       p_line_rec.cust_po_number
4736     ,       p_line_rec.deliver_to_org_id
4737     ,       p_line_rec.freight_terms_code
4738     ,       p_line_rec.header_id
4739     ,       p_line_rec.inventory_item_id
4740     ,       p_line_rec.sold_to_org_id
4741     ,       p_line_rec.invoice_to_org_id
4742     ,       p_line_rec.invoicing_rule_id
4743     ,       p_line_rec.ordered_item_id
4744     ,       p_line_rec.item_identifier_type
4745     ,       l_lock_control
4746     ,       'Y'
4747     ,       p_line_rec.ordered_item
4748     ,       p_line_rec.item_type_code
4749     ,       p_line_rec.last_updated_by
4750     ,       p_line_rec.last_update_date
4751     ,       p_line_rec.last_update_login
4752     ,       p_line_rec.line_id
4753     ,       p_line_rec.line_type_id
4754     ,       p_line_rec.line_number
4755     ,       MO_GLOBAL.GET_CURRENT_ORG_ID
4756     ,       p_line_rec.payment_term_id
4757     ,       p_line_rec.preferred_grade            --OPM 02/JUN/00
4758     ,       p_line_rec.price_list_id
4759     ,       p_line_rec.program_application_id
4760     ,       p_line_rec.program_id
4761     ,       p_line_rec.program_update_date
4762     ,       p_line_rec.request_id
4763     ,       p_line_rec.salesrep_id
4764     ,       p_line_rec.shipping_method_code
4765     ,       p_line_rec.ship_from_org_id
4766     ,       p_line_rec.ship_to_org_id
4767     ,       p_line_rec.shipping_instructions
4768     ,       p_line_rec.packing_instructions
4769     ,       p_line_rec.ORDER_QUANTITY_UOM
4770     ,       'B'
4771     ,       1
4772     ,       'ORDER'
4773     ,       'N'
4774     ,       p_line_rec.source_document_type_id
4775     ,       p_line_rec.source_document_id
4776     ,       p_line_rec.source_document_line_id
4777     ,       p_line_rec.transaction_phase_code -- hashraf pack J
4778     ,       p_line_rec.source_document_version_number
4779     );
4780 
4781     INSERT  INTO OE_BLANKET_LINES_EXT
4782     (       START_DATE_ACTIVE
4783     ,       END_DATE_ACTIVE
4784     ,       MAX_RELEASE_AMOUNT
4785     ,       MIN_RELEASE_AMOUNT
4786     ,       min_release_quantity
4787     ,       max_release_quantity
4788     ,       BLANKET_LINE_MAX_AMOUNT
4789     ,       BLANKET_LINE_MIN_AMOUNT
4790     ,       BLANKET_MAX_QUANTITY
4791     ,       BLANKET_MIN_QUANTITY
4792     ,       OVERRIDE_BLANKET_CONTROLS_FLAG
4793     ,       OVERRIDE_RELEASE_CONTROLS_FLAG
4794     ,       ENFORCE_PRICE_LIST_FLAG
4795     ,   enforce_ship_to_flag
4796     ,   enforce_invoice_to_flag
4797     ,   enforce_freight_term_flag
4798     ,   enforce_shipping_method_flag
4799     ,   enforce_payment_term_flag
4800     ,   enforce_accounting_rule_flag
4801     ,   enforce_invoicing_rule_flag
4802     ,       RELEASED_QUANTITY
4803     ,       FULFILLED_QUANTITY
4804     ,       RETURNED_QUANTITY
4805     ,       ORDER_NUMBER
4806     ,       RELEASED_AMOUNT
4807     ,       FULFILLED_AMOUNT
4808     ,       line_id
4809     ,       line_number
4810 )
4811 VALUES
4812 (           p_line_rec.START_DATE_ACTIVE
4813     ,       p_line_rec.END_DATE_ACTIVE
4814     ,       p_line_rec.MAX_RELEASE_AMOUNT
4815     ,       p_line_rec.MIN_RELEASE_AMOUNT
4816     ,       p_line_rec.min_release_quantity
4817     ,       p_line_rec.max_release_quantity
4818     ,       p_line_rec.BLANKET_MAX_AMOUNT
4819     ,       p_line_rec.BLANKET_MIN_AMOUNT
4820     ,       p_line_rec.BLANKET_MAX_QUANTITY
4821     ,       p_line_rec.BLANKET_MIN_QUANTITY
4822     ,       p_line_rec.OVERRIDE_BLANKET_CONTROLS_FLAG
4823     ,       p_line_rec.OVERRIDE_RELEASE_CONTROLS_FLAG
4824     ,       p_line_rec.ENFORCE_PRICE_LIST_FLAG
4825     ,       p_line_rec.enforce_ship_to_flag
4826     ,       p_line_rec.enforce_invoice_to_flag
4827     ,       p_line_rec.enforce_freight_term_flag
4828     ,       p_line_rec.enforce_shipping_method_flag
4829     ,       p_line_rec.enforce_payment_term_flag
4830     ,       p_line_rec.enforce_accounting_rule_flag
4831     ,       p_line_rec.enforce_invoicing_rule_flag
4832     ,       p_line_rec.RELEASED_QUANTITY
4833     ,       p_line_rec.FULFILLED_QUANTITY
4834     ,       p_line_rec.RETURNED_QUANTITY
4835     ,       p_line_rec.ORDER_NUMBER
4836     ,       p_line_rec.RELEASED_AMOUNT
4837     ,       p_line_rec.FULFILLED_AMOUNT
4838     ,       p_line_rec.line_id
4839     ,       p_line_rec.line_number
4840     );
4841 
4842    OE_Blanket_Line_Security.g_check_all_cols_constraint := 'Y'; /* Bug # 5516348 */
4843    if l_debug_level > 0 then
4844     oe_debug_pub.add('Exiting OE_blanket_UTIL.INSERT_ROW', 1);
4845    end if;
4846 
4847 EXCEPTION
4848 
4849     WHEN OTHERS THEN
4850 
4851         OE_Blanket_Line_Security.g_check_all_cols_constraint := 'Y'; /* Bug # 5516348 */
4852         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4853         THEN
4854             OE_MSG_PUB.Add_Exc_Msg
4855             (   G_PKG_NAME
4856             ,   'Insert_Row'
4857             );
4858         END IF;
4859 
4860         x_return_status          := FND_API.G_RET_STS_UNEXP_ERROR;
4861         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4862 
4863 End Insert_Row;
4864 
4865 PROCEDURE Update_Row
4866 (   p_line_rec       IN   OE_Blanket_PUB.Line_rec_type
4867 ,   x_return_status  OUT NOCOPY VARCHAR2)
4868 IS
4869 l_return_status VARCHAR2(1);
4870 --
4871 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4872 --
4873 BEGIN
4874    if l_debug_level > 0 then
4875     oe_debug_pub.add('Entering OE_Blanket_UTIL.UPDATE_ROW - LINE', 1);
4876    end if;
4877     x_return_status          := FND_API.G_RET_STS_SUCCESS;
4878 
4879     --Versioning changes
4880     IF OE_CODE_CONTROL.Code_Release_Level >= '110510' AND
4881        NOT g_old_version_captured THEN
4882           query_blanket(p_header_id => p_line_rec.header_id
4883                        ,p_x_header_rec => g_old_header_hist_Rec
4884                        ,p_x_line_tbl => g_old_line_hist_tbl
4885                        ,x_return_status => l_return_status
4886                       );
4887            IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4888                x_return_status := l_return_status;
4889            END IF;
4890            g_old_version_captured := TRUE;
4891     END IF;
4892 
4893     UPDATE  OE_BLANKET_LINES
4894     SET     ACCOUNTING_RULE_ID             = p_line_rec.accounting_rule_id
4895     ,       AGREEMENT_ID                   = p_line_rec.agreement_id
4896     ,       ATTRIBUTE1                     = p_line_rec.attribute1
4897     ,       ATTRIBUTE10                    = p_line_rec.attribute10
4898     ,       ATTRIBUTE11                    = p_line_rec.attribute11
4899     ,       ATTRIBUTE12                    = p_line_rec.attribute12
4900     ,       ATTRIBUTE13                    = p_line_rec.attribute13
4901     ,       ATTRIBUTE14                    = p_line_rec.attribute14
4902     ,       ATTRIBUTE15                    = p_line_rec.attribute15
4903     ,       ATTRIBUTE16                    = p_line_rec.attribute16
4904     ,       ATTRIBUTE17                    = p_line_rec.attribute17
4905     ,       ATTRIBUTE18                    = p_line_rec.attribute18
4906     ,       ATTRIBUTE19                    = p_line_rec.attribute19
4907     ,       ATTRIBUTE20                    = p_line_rec.attribute20
4908     ,       ATTRIBUTE2                     = p_line_rec.attribute2
4909     ,       ATTRIBUTE3                     = p_line_rec.attribute3
4910     ,       ATTRIBUTE4                     = p_line_rec.attribute4
4911     ,       ATTRIBUTE5                     = p_line_rec.attribute5
4912     ,       ATTRIBUTE6                     = p_line_rec.attribute6
4913     ,       ATTRIBUTE7                     = p_line_rec.attribute7
4914     ,       ATTRIBUTE8                     = p_line_rec.attribute8
4915     ,       ATTRIBUTE9                     = p_line_rec.attribute9
4916     ,       CONTEXT                        = p_line_rec.context
4917  --   ,       CREATED_BY                     = p_line_rec.created_by
4918  --   ,       CREATION_DATE                  = p_line_rec.creation_date
4919     ,       CUST_PO_NUMBER                 = p_line_rec.cust_po_number
4920     ,       DELIVER_TO_ORG_ID              = p_line_rec.deliver_to_org_id
4921     ,       FREIGHT_TERMS_CODE             = p_line_rec.freight_terms_code
4922     ,       header_id              = p_line_rec.header_id
4923     ,       inventory_item_id              = p_line_rec.inventory_item_id
4924     ,       INVOICE_TO_ORG_ID              = p_line_rec.invoice_to_org_id
4925     ,       INVOICING_RULE_ID              = p_line_rec.invoicing_rule_id
4926     ,       ORDERED_ITEM_ID                        = p_line_rec.ordered_item_id
4927     ,       item_identifier_type           = p_line_rec.item_identifier_type
4928     ,       lock_control           = lock_control + 1
4929 
4930     ,       ORDERED_ITEM                     = p_line_rec.ordered_item
4931     ,       ITEM_TYPE_CODE                 = p_line_rec.item_type_code
4932     ,       LAST_UPDATED_BY                = nvl(p_line_rec.last_updated_by, FND_GLOBAL.USER_ID)
4933     ,       LAST_UPDATE_DATE               = nvl(p_line_rec.last_update_date, sysdate)
4934     ,       LAST_UPDATE_LOGIN              = p_line_rec.last_update_login
4935     ,       line_number            = p_line_rec.line_number
4936     ,       PAYMENT_TERM_ID                = p_line_rec.payment_term_id
4937     ,       PREFERRED_GRADE                = p_line_rec.preferred_grade
4938     ,       PRICE_LIST_ID                  = p_line_rec.price_list_id
4939     ,       PROGRAM_APPLICATION_ID         = p_line_rec.program_application_id
4940     ,       PROGRAM_ID                     = p_line_rec.program_id
4941     ,       PROGRAM_UPDATE_DATE            = p_line_rec.program_update_date
4942     ,       REQUEST_ID                     = p_line_rec.request_id
4943     ,       SALESREP_ID                    = p_line_rec.salesrep_id
4944     ,       SHIPPING_METHOD_CODE           = p_line_rec.shipping_method_code
4945     ,       ship_from_org_id               = p_line_rec.ship_from_org_id
4946     ,       SHIP_TO_ORG_ID                 = p_line_rec.ship_to_org_id
4947     ,       SHIPPING_INSTRUCTIONS          = p_line_rec.shipping_instructions
4948     ,       PACKING_INSTRUCTIONS           = p_line_rec.packing_instructions
4949     ,       ORDER_QUANTITY_UOM = p_line_rec.ORDER_QUANTITY_UOM
4950 -- hashraf ... start of pack J
4951     ,       transaction_phase_code         = p_line_rec.transaction_phase_code
4952     ,       source_document_version_number         = p_line_rec.source_document_version_number
4953 -- hashraf ... end of pack J
4954     WHERE   line_id		  = p_line_rec.line_id
4955       AND   header_id	  = p_line_rec.header_id ;
4956 
4957 	IF SQL%NOTFOUND THEN
4958         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4959         END IF;
4960 
4961     UPDATE OE_BLANKET_LINES_EXT
4962     SET
4963            min_release_quantity              = p_line_rec.min_release_quantity
4964     ,       max_release_quantity              = p_line_rec.max_release_quantity
4965     ,       START_DATE_ACTIVE = p_line_rec.START_DATE_ACTIVE
4966     ,       END_DATE_ACTIVE = p_line_rec.END_DATE_ACTIVE
4967     ,       MAX_RELEASE_AMOUNT = p_line_rec.MAX_RELEASE_AMOUNT
4968     ,       MIN_RELEASE_AMOUNT = p_line_rec.MIN_RELEASE_AMOUNT
4969 
4970     ,       BLANKET_LINE_MAX_AMOUNT = p_line_rec.BLANKET_MAX_AMOUNT
4971     ,       BLANKET_LINE_MIN_AMOUNT = p_line_rec.BLANKET_MIN_AMOUNT
4972     ,       BLANKET_MAX_QUANTITY = p_line_rec.BLANKET_MAX_QUANTITY
4973     ,       BLANKET_MIN_QUANTITY = p_line_rec.BLANKET_MIN_QUANTITY
4974     ,       OVERRIDE_BLANKET_CONTROLS_FLAG = p_line_rec.OVERRIDE_BLANKET_CONTROLS_FLAG
4975     ,       OVERRIDE_RELEASE_CONTROLS_FLAG = p_line_rec.OVERRIDE_RELEASE_CONTROLS_FLAG
4976     ,       ENFORCE_PRICE_LIST_FLAG = p_line_rec.ENFORCE_PRICE_LIST_FLAG
4977     ,       enforce_ship_to_flag = p_line_rec.enforce_ship_to_flag
4978     ,       enforce_invoice_to_flag = p_line_rec.enforce_invoice_to_flag
4979     ,       enforce_freight_term_flag = p_line_rec.enforce_freight_term_flag
4980     ,       enforce_shipping_method_flag = p_line_rec.enforce_shipping_method_flag
4981     ,       enforce_payment_term_flag = p_line_rec.enforce_payment_term_flag
4982     ,       enforce_accounting_rule_flag = p_line_rec.enforce_accounting_rule_flag
4983     ,       enforce_invoicing_rule_flag = p_line_rec.enforce_invoicing_rule_flag
4984 --    ,       RELEASED_QUANTITY = p_line_rec.RELEASED_QUANTITY
4985 --    ,       FULFILLED_QUANTITY = p_line_rec.FULFILLED_QUANTITY
4986 --    ,       RETURNED_QUANTITY = p_line_rec.RETURNED_QUANTITY
4987 --    ,       released_amount = p_line_rec.released_amount
4988 --    ,       fulfilled_amount = p_line_rec.fulfilled_amount
4989 --    ,       returned_amount = p_line_rec.returned_amount
4990       ,       line_number = p_line_rec.line_number  --bug5894169
4991     WHERE   line_id = p_line_rec.line_id;
4992 
4993    OE_Blanket_Line_Security.g_check_all_cols_constraint := 'Y'; /* Bug # 5516348 */
4994    if l_debug_level > 0 then
4995     oe_debug_pub.add('Exiting OE_Blanket_UTIL.UPDATE_ROW - LINE', 1);
4996    end if;
4997 
4998 EXCEPTION
4999 
5000 
5001     WHEN OTHERS THEN
5002         OE_Blanket_Line_Security.g_check_all_cols_constraint := 'Y'; /* Bug # 5516348 */
5003         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
5004         THEN
5005             OE_MSG_PUB.Add_Exc_Msg
5006             (   G_PKG_NAME
5007             ,   'Update_Row'
5008             );
5009         END IF;
5010 
5011         x_return_status          := FND_API.G_RET_STS_ERROR;
5012         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5013 End Update_Row;
5014 
5015 PROCEDURE Delete_Row
5016 (   p_line_id      IN   NUMBER
5017 , x_return_status OUT NOCOPY VARCHAR2
5018 )
5019 IS
5020 l_header_id   NUMBER := g_header_rec.header_id;
5021 l_return_status varchar2(1);
5022 --
5023 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
5024 --
5025 BEGIN
5026 -- hashraf ... start of pack J
5027     x_return_status := FND_API.G_RET_STS_SUCCESS;
5028 
5029    if l_debug_level > 0 then
5030      oe_debug_pub.add('Entering OE_BLANKET_UTIL.DELETE_ROW - LINE ID :'||
5031                        p_line_id);
5032    end if;
5033 
5034    IF l_header_id IS NULL or
5035       l_header_id = FND_API.G_MISS_NUM THEN
5036     SELECT  /* MOAC_SQL_CHANGE */ header_id into l_header_id
5037     FROM OE_BLANKET_LINES_all
5038     WHERE line_id = p_line_id;
5039    END IF;
5040 
5041     --Versioning changes
5042     IF OE_CODE_CONTROL.Code_Release_Level >= '110510' AND
5043        NOT g_old_version_captured THEN
5044           query_blanket(p_header_id => l_header_id
5045                        ,p_x_header_rec => g_old_header_hist_Rec
5046                        ,p_x_line_tbl => g_old_line_hist_tbl
5047                        ,x_return_status => l_return_status
5048                       );
5049            IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5050                x_return_status := l_return_status;
5051            END IF;
5052            g_old_version_captured := TRUE;
5053     END IF;
5054 
5055    --for bug 3348870
5056    OE_Blanket_Pricing_Util.Deactivate_Pricing
5057                      (p_blanket_header_id => l_header_id
5058    		     ,p_blanket_line_id => p_line_id
5059                      ,x_return_status => l_return_status
5060                      );
5061    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5062       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5063    END IF;
5064 
5065    OE_Atchmt_Util.Delete_Attachments
5066                ( p_entity_code	=> OE_GLOBALS.G_ENTITY_LINE
5067                , p_entity_id      	=> p_line_id
5068                , x_return_status   => l_return_status
5069                );
5070     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5071           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5072     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
5073           RAISE FND_API.G_EXC_ERROR;
5074     END IF;
5075     -- End bug
5076 
5077    DELETE FROM OE_BLANKET_LINES
5078    WHERE line_id = p_line_id;
5079 
5080    --for bug 3348870
5081 
5082    DELETE FROM OE_BLANKET_LINES_EXT
5083    WHERE line_id = p_line_id;
5084 
5085    DELETE FROM OE_BLANKET_LINES_HIST
5086    WHERE line_id = p_line_id;
5087 
5088   if l_debug_level > 0 then
5089     oe_debug_pub.add('Exiting OE_BLANKET_UTIL.DELETE_ROW', 1);
5090    end if;
5091 
5092 EXCEPTION
5093     WHEN FND_API.G_EXC_ERROR THEN
5094     	RAISE FND_API.G_EXC_ERROR;
5095     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5096     	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5097     WHEN OTHERS THEN
5098 
5099         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
5100         THEN
5101             OE_MSG_PUB.Add_Exc_Msg
5102             (   G_PKG_NAME
5103             ,   'Delete_Row'
5104             );
5105         END IF;
5106 
5107         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5108         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5109 
5110 End Delete_Row;
5111 
5112 
5113 PROCEDURE Query_Header
5114 ( p_header_id          IN   NUMBER
5115 , p_version_number     IN   NUMBER := NULL
5116 , p_phase_change_flag  IN VARCHAR2 := NULL
5117 , x_header_rec         IN OUT NOCOPY OE_Blanket_PUB.Header_rec_type
5118 , x_return_status      OUT NOCOPY VARCHAR2
5119 )IS
5120 
5121 CURSOR l_hdr_csr IS
5122     SELECT  ACCOUNTING_RULE_ID
5123     ,       AGREEMENT_ID
5124     ,       ATTRIBUTE1
5125     ,       ATTRIBUTE10
5126     ,       ATTRIBUTE11
5127     ,       ATTRIBUTE12
5128     ,       ATTRIBUTE13
5129     ,       ATTRIBUTE14
5130     ,       ATTRIBUTE15
5131     ,       ATTRIBUTE16
5132     ,       ATTRIBUTE17
5133     ,       ATTRIBUTE18
5134     ,       ATTRIBUTE19
5135     ,       ATTRIBUTE20
5136     ,       ATTRIBUTE2
5137     ,       ATTRIBUTE3
5138     ,       ATTRIBUTE4
5139     ,       ATTRIBUTE5
5140     ,       ATTRIBUTE6
5141     ,       ATTRIBUTE7
5142     ,       ATTRIBUTE8
5143     ,       ATTRIBUTE9
5144     ,       CONTEXT
5145     ,       CREATED_BY
5146     ,       CREATION_DATE
5147     ,       CUST_PO_NUMBER
5148     ,       DELIVER_TO_ORG_ID
5149     ,       FREIGHT_TERMS_CODE
5150     ,       header_id
5151     ,       INVOICE_TO_ORG_ID
5152     ,       INVOICING_RULE_ID
5153     ,       LAST_UPDATED_BY
5154     ,       LAST_UPDATE_DATE
5155     ,       LAST_UPDATE_LOGIN
5156     ,       bh.ORDER_NUMBER
5157     ,       ORDER_TYPE_ID
5158     ,       ORG_ID
5159     ,       PAYMENT_TERM_ID
5160     ,       PRICE_LIST_ID
5161     ,       PROGRAM_APPLICATION_ID
5162     ,       PROGRAM_ID
5163     ,       PROGRAM_UPDATE_DATE
5164     ,       REQUEST_ID
5165     ,       SALESREP_ID
5166     ,       SHIPPING_METHOD_CODE
5167     ,       ship_from_org_id
5168     ,       SHIP_TO_ORG_ID
5169     ,       SOLD_TO_CONTACT_ID
5170     ,       SOLD_TO_ORG_ID
5171     ,       TRANSACTIONAL_CURR_CODE
5172     ,       conversion_type_code
5173     ,       LOCK_CONTROL
5174     ,       VERSION_NUMBER
5175     ,       SHIPPING_INSTRUCTIONS
5176     ,       PACKING_INSTRUCTIONS
5177     ,       START_DATE_ACTIVE
5178     ,       END_DATE_ACTIVE
5179     ,       on_hold_flag
5180     ,       ENFORCE_PRICE_LIST_FLAG
5181     ,       enforce_ship_to_flag
5182     ,       enforce_invoice_to_flag
5183     ,       enforce_freight_term_flag
5184     ,       enforce_shipping_method_flag
5185     ,       enforce_payment_term_flag
5186     ,       enforce_accounting_rule_flag
5187     ,       enforce_invoicing_rule_flag
5188     ,       OVERRIDE_AMOUNT_FLAG
5189     ,       BLANKET_MAX_AMOUNT
5190     ,       BLANKET_MIN_AMOUNT
5191     ,       RELEASED_AMOUNT
5192     ,       FULFILLED_AMOUNT
5193     ,       RETURNED_AMOUNT
5194     ,       source_document_id
5195     ,       source_document_type_id
5196     ,       SALES_DOCUMENT_NAME -- hashraf ... start of pack J
5197     ,       TRANSACTION_PHASE_CODE
5198     ,       USER_STATUS_CODE
5199     ,       FLOW_STATUS_CODE
5200     ,	    SUPPLIER_SIGNATURE
5201     ,	    SUPPLIER_SIGNATURE_DATE
5202     ,	    CUSTOMER_SIGNATURE
5203     ,	    CUSTOMER_SIGNATURE_DATE
5204     ,       sold_to_site_use_id
5205     ,       draft_submitted_flag
5206     ,       source_document_version_number -- hashraf ... end of pack J
5207     -- 11i10 Pricing Changes
5208     ,       new_price_list_id
5209     ,       new_modifier_list_id
5210     ,       default_discount_percent
5211     ,       default_discount_amount
5212     FROM    OE_BLANKET_HEADERS bh, OE_BLANKET_HEADERS_EXT bhx
5213     WHERE   bh.order_number = bhx.order_number
5214       AND   bh.header_id = p_header_id
5215       AND   bh.sales_document_type_code = 'B';
5216 
5217 CURSOR l_hdr_hist_csr IS
5218     SELECT  ACCOUNTING_RULE_ID
5219     ,       AGREEMENT_ID
5220     ,       ATTRIBUTE1
5221     ,       ATTRIBUTE10
5222     ,       ATTRIBUTE11
5223     ,       ATTRIBUTE12
5224     ,       ATTRIBUTE13
5225     ,       ATTRIBUTE14
5226     ,       ATTRIBUTE15
5227     ,       ATTRIBUTE16
5228     ,       ATTRIBUTE17
5229     ,       ATTRIBUTE18
5230     ,       ATTRIBUTE19
5231     ,       ATTRIBUTE20
5232     ,       ATTRIBUTE2
5233     ,       ATTRIBUTE3
5234     ,       ATTRIBUTE4
5235     ,       ATTRIBUTE5
5236     ,       ATTRIBUTE6
5237     ,       ATTRIBUTE7
5238     ,       ATTRIBUTE8
5239     ,       ATTRIBUTE9
5240     ,       CONTEXT
5241     ,       CREATED_BY
5242     ,       CREATION_DATE
5243     ,       CUST_PO_NUMBER
5244     ,       DELIVER_TO_ORG_ID
5245     ,       FREIGHT_TERMS_CODE
5246     ,       header_id
5247     ,       INVOICE_TO_ORG_ID
5248     ,       INVOICING_RULE_ID
5249     ,       LAST_UPDATED_BY
5250     ,       LAST_UPDATE_DATE
5251     ,       LAST_UPDATE_LOGIN
5252     ,       bh.ORDER_NUMBER
5253     ,       ORDER_TYPE_ID
5254     ,       ORG_ID
5255     ,       PAYMENT_TERM_ID
5256     ,       PRICE_LIST_ID
5257     ,       PROGRAM_APPLICATION_ID
5258     ,       PROGRAM_ID
5259     ,       PROGRAM_UPDATE_DATE
5260     ,       REQUEST_ID
5261     ,       SALESREP_ID
5262     ,       SHIPPING_METHOD_CODE
5263     ,       ship_from_org_id
5264     ,       SHIP_TO_ORG_ID
5265     ,       SOLD_TO_CONTACT_ID
5266     ,       SOLD_TO_ORG_ID
5267     ,       TRANSACTIONAL_CURR_CODE
5268     ,       conversion_type_code
5269     ,       NULL                         --    ,       LOCK_CONTROL
5270     ,       VERSION_NUMBER
5271     ,       SHIPPING_INSTRUCTIONS
5272     ,       PACKING_INSTRUCTIONS
5273     ,       START_DATE_ACTIVE
5274     ,       END_DATE_ACTIVE
5275     ,       on_hold_flag
5276     ,       ENFORCE_PRICE_LIST_FLAG
5277     ,       enforce_ship_to_flag
5278     ,       enforce_invoice_to_flag
5279     ,       enforce_freight_term_flag
5280     ,       enforce_shipping_method_flag
5281     ,       enforce_payment_term_flag
5282     ,       enforce_accounting_rule_flag
5283     ,       enforce_invoicing_rule_flag
5284     ,       OVERRIDE_AMOUNT_FLAG
5285     ,       BLANKET_MAX_AMOUNT
5286     ,       BLANKET_MIN_AMOUNT
5287     ,       RELEASED_AMOUNT
5288     ,       FULFILLED_AMOUNT
5289     ,       RETURNED_AMOUNT
5290     ,       source_document_id
5291     ,       source_document_type_id
5292     ,       SALES_DOCUMENT_NAME -- hashraf ... start of pack J
5293     ,       TRANSACTION_PHASE_CODE
5294     ,       USER_STATUS_CODE
5295     ,       FLOW_STATUS_CODE
5296     ,	    SUPPLIER_SIGNATURE
5297     ,	    SUPPLIER_SIGNATURE_DATE
5298     ,	    CUSTOMER_SIGNATURE
5299     ,	    CUSTOMER_SIGNATURE_DATE
5300     ,       sold_to_site_use_id
5301     ,       draft_submitted_flag
5302     ,       source_document_version_number -- hashraf ... end of pack J
5303     -- 11i10 Pricing Changes
5304     ,       new_price_list_id
5305     ,       new_modifier_list_id
5306     ,       default_discount_percent
5307     ,       default_discount_amount
5308     FROM    OE_BLANKET_HEADERS_HIST bh
5309     WHERE   bh.header_id = p_header_id
5310       AND   bh.sales_document_type_code = 'B'
5311       AND   bh.version_number = p_version_number
5312      AND    (PHASE_CHANGE_FLAG = p_phase_change_flag
5313      OR     (nvl(p_phase_change_flag, 'NULL') <> 'Y'));
5314 
5315 l_org_id		      NUMBER;
5316 l_current_version_number      NUMBER := NULL;
5317 
5318 --
5319 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
5320 --
5321 BEGIN
5322 
5323    x_return_status := FND_API.G_RET_STS_SUCCESS;
5324 
5325    if l_debug_level > 0 then
5326     oe_debug_pub.add('Entering OE_BLANKET_UTIL.QUERY_ROW', 1);
5327    end if;
5328 
5329    IF p_version_number IS NOT NULL THEN
5330     SELECT  /* MOAC_SQL_CHANGE */ version_number INTO l_current_version_number FROM OE_BLANKET_HEADERS_ALL WHERE header_id = p_header_id;
5331    END IF;
5332 
5333    IF p_version_number IS NULL OR
5334       p_version_number = l_current_version_number THEN
5335 
5336       --Fetch from blanket tables
5337       OPEN l_hdr_csr;
5338       FETCH l_hdr_csr
5339     INTO    x_header_rec.accounting_rule_id
5340     ,       x_header_rec.agreement_id
5341     ,       x_header_rec.attribute1
5342     ,       x_header_rec.attribute10
5343     ,       x_header_rec.attribute11
5344     ,       x_header_rec.attribute12
5345     ,       x_header_rec.attribute13
5346     ,       x_header_rec.attribute14
5347     ,       x_header_rec.attribute15
5348     ,       x_header_rec.attribute16
5349     ,       x_header_rec.attribute17
5350     ,       x_header_rec.attribute18
5351     ,       x_header_rec.attribute19
5352     ,       x_header_rec.attribute20
5353     ,       x_header_rec.attribute2
5354     ,       x_header_rec.attribute3
5355     ,       x_header_rec.attribute4
5356     ,       x_header_rec.attribute5
5357     ,       x_header_rec.attribute6
5358     ,       x_header_rec.attribute7
5359     ,       x_header_rec.attribute8
5360     ,       x_header_rec.attribute9
5361     ,       x_header_rec.context
5362     ,       x_header_rec.created_by
5363     ,       x_header_rec.creation_date
5364     ,       x_header_rec.cust_po_number
5365     ,       x_header_rec.deliver_to_org_id
5366     ,       x_header_rec.freight_terms_code
5367     ,       x_header_rec.header_id
5368     ,       x_header_rec.invoice_to_org_id
5369     ,       x_header_rec.invoicing_rule_id
5370     ,       x_header_rec.last_updated_by
5371     ,       x_header_rec.last_update_date
5372     ,       x_header_rec.last_update_login
5373     ,       x_header_rec.order_number
5374     ,       x_header_rec.order_type_id
5375     ,       x_header_rec.org_id
5376     ,       x_header_rec.payment_term_id
5377     ,       x_header_rec.price_list_id
5378     ,       x_header_rec.program_application_id
5379     ,       x_header_rec.program_id
5380     ,       x_header_rec.program_update_date
5381     ,       x_header_rec.request_id
5382     ,       x_header_rec.salesrep_id
5383     ,       x_header_rec.shipping_method_code
5384     ,       x_header_rec.ship_from_org_id
5385     ,       x_header_rec.ship_to_org_id
5386     ,       x_header_rec.sold_to_contact_id
5387     ,       x_header_rec.sold_to_org_id
5388     ,       x_header_rec.transactional_curr_code
5389     ,       x_header_rec.conversion_type_code
5390     ,       x_header_rec.LOCK_CONTROL
5391     ,       x_header_rec.version_number
5392     ,       x_header_rec.shipping_instructions
5393     ,       x_header_rec.packing_instructions
5394     ,       x_header_rec.START_DATE_ACTIVE
5395     ,       x_header_rec.END_DATE_ACTIVE
5396     ,       x_header_rec.on_hold_flag
5397     ,       x_header_rec.ENFORCE_PRICE_LIST_FLAG
5398     ,       x_header_rec.enforce_ship_to_flag
5399     ,       x_header_rec.enforce_invoice_to_flag
5400     ,       x_header_rec.enforce_freight_term_flag
5401     ,       x_header_rec.enforce_shipping_method_flag
5402     ,       x_header_rec.enforce_payment_term_flag
5403     ,       x_header_rec.enforce_accounting_rule_flag
5404     ,       x_header_rec.enforce_invoicing_rule_flag
5405     ,       x_header_rec.OVERRIDE_AMOUNT_FLAG
5406     ,       x_header_rec.Blanket_Max_Amount
5407     ,       x_header_rec.Blanket_Min_Amount
5408     ,       x_header_rec.RELEASED_AMOUNT
5409     ,       x_header_rec.FULFILLED_AMOUNT
5410     ,       x_header_rec.RETURNED_AMOUNT
5411     ,       x_header_rec.source_document_id
5412     ,       x_header_rec.source_document_type_id
5413     ,       x_header_rec.SALES_DOCUMENT_NAME -- hashraf ... start of pack J
5414     ,       x_header_rec.TRANSACTION_PHASE_CODE
5415     ,       x_header_rec.USER_STATUS_CODE
5416     ,       x_header_rec.FLOW_STATUS_CODE
5417     ,       x_header_rec.SUPPLIER_SIGNATURE
5418     ,       x_header_rec.SUPPLIER_SIGNATURE_DATE
5419     ,       x_header_rec.CUSTOMER_SIGNATURE
5420     ,       x_header_rec.CUSTOMER_SIGNATURE_DATE
5421     ,       x_header_rec.sold_to_site_use_id
5422     ,       x_header_rec.draft_submitted_flag
5423     ,       x_header_rec.source_document_version_number -- hashraf ... end of pack J
5424     -- 11i10 Pricing Changes
5425     ,       x_header_rec.new_price_list_id
5426     ,       x_header_rec.new_modifier_list_id
5427     ,       x_header_rec.default_discount_percent
5428     ,       x_header_rec.default_discount_amount
5429     ;
5430       IF x_header_rec.new_price_list_id IS NOT NULL THEN
5431          SELECT name
5432            INTO x_header_rec.new_price_list_name
5433            FROM qp_list_headers_vl
5434           WHERE list_header_id = x_header_rec.new_price_list_id;
5435       END IF;
5436       IF x_header_rec.new_modifier_list_id IS NOT NULL THEN
5437          SELECT name
5438            INTO x_header_rec.new_modifier_list_name
5439            FROM qp_list_headers_vl
5440           WHERE list_header_id = x_header_rec.new_modifier_list_id;
5441       END IF;
5442       CLOSE l_hdr_csr;
5443    ELSE
5444      --Fetch from history table
5445       OPEN l_hdr_hist_csr;
5446       FETCH l_hdr_hist_csr
5447     INTO    x_header_rec.accounting_rule_id
5448     ,       x_header_rec.agreement_id
5449     ,       x_header_rec.attribute1
5450     ,       x_header_rec.attribute10
5451     ,       x_header_rec.attribute11
5452     ,       x_header_rec.attribute12
5453     ,       x_header_rec.attribute13
5454     ,       x_header_rec.attribute14
5455     ,       x_header_rec.attribute15
5456     ,       x_header_rec.attribute16
5457     ,       x_header_rec.attribute17
5458     ,       x_header_rec.attribute18
5459     ,       x_header_rec.attribute19
5460     ,       x_header_rec.attribute20
5461     ,       x_header_rec.attribute2
5462     ,       x_header_rec.attribute3
5463     ,       x_header_rec.attribute4
5464     ,       x_header_rec.attribute5
5465     ,       x_header_rec.attribute6
5466     ,       x_header_rec.attribute7
5467     ,       x_header_rec.attribute8
5468     ,       x_header_rec.attribute9
5469     ,       x_header_rec.context
5470     ,       x_header_rec.created_by
5471     ,       x_header_rec.creation_date
5472     ,       x_header_rec.cust_po_number
5473     ,       x_header_rec.deliver_to_org_id
5474     ,       x_header_rec.freight_terms_code
5475     ,       x_header_rec.header_id
5476     ,       x_header_rec.invoice_to_org_id
5477     ,       x_header_rec.invoicing_rule_id
5478     ,       x_header_rec.last_updated_by
5479     ,       x_header_rec.last_update_date
5480     ,       x_header_rec.last_update_login
5481     ,       x_header_rec.order_number
5482     ,       x_header_rec.order_type_id
5483     ,       x_header_rec.org_id
5484     ,       x_header_rec.payment_term_id
5485     ,       x_header_rec.price_list_id
5486     ,       x_header_rec.program_application_id
5487     ,       x_header_rec.program_id
5488     ,       x_header_rec.program_update_date
5489     ,       x_header_rec.request_id
5490     ,       x_header_rec.salesrep_id
5491     ,       x_header_rec.shipping_method_code
5492     ,       x_header_rec.ship_from_org_id
5493     ,       x_header_rec.ship_to_org_id
5494     ,       x_header_rec.sold_to_contact_id
5495     ,       x_header_rec.sold_to_org_id
5496     ,       x_header_rec.transactional_curr_code
5497     ,       x_header_rec.conversion_type_code
5498     ,       x_header_rec.LOCK_CONTROL
5499     ,       x_header_rec.version_number
5500     ,       x_header_rec.shipping_instructions
5501     ,       x_header_rec.packing_instructions
5502     ,       x_header_rec.START_DATE_ACTIVE
5503     ,       x_header_rec.END_DATE_ACTIVE
5504     ,       x_header_rec.on_hold_flag
5505     ,       x_header_rec.ENFORCE_PRICE_LIST_FLAG
5506     ,       x_header_rec.enforce_ship_to_flag
5507     ,       x_header_rec.enforce_invoice_to_flag
5508     ,       x_header_rec.enforce_freight_term_flag
5509     ,       x_header_rec.enforce_shipping_method_flag
5510     ,       x_header_rec.enforce_payment_term_flag
5511     ,       x_header_rec.enforce_accounting_rule_flag
5512     ,       x_header_rec.enforce_invoicing_rule_flag
5513     ,       x_header_rec.OVERRIDE_AMOUNT_FLAG
5514     ,       x_header_rec.Blanket_Max_Amount
5515     ,       x_header_rec.Blanket_Min_Amount
5516     ,       x_header_rec.RELEASED_AMOUNT
5517     ,       x_header_rec.FULFILLED_AMOUNT
5518     ,       x_header_rec.RETURNED_AMOUNT
5519     ,       x_header_rec.source_document_id
5520     ,       x_header_rec.source_document_type_id
5521     ,       x_header_rec.SALES_DOCUMENT_NAME -- hashraf ... start of pack J
5522     ,       x_header_rec.TRANSACTION_PHASE_CODE
5523     ,       x_header_rec.USER_STATUS_CODE
5524     ,       x_header_rec.FLOW_STATUS_CODE
5525     ,       x_header_rec.SUPPLIER_SIGNATURE
5526     ,       x_header_rec.SUPPLIER_SIGNATURE_DATE
5527     ,       x_header_rec.CUSTOMER_SIGNATURE
5528     ,       x_header_rec.CUSTOMER_SIGNATURE_DATE
5529     ,       x_header_rec.sold_to_site_use_id
5530     ,       x_header_rec.draft_submitted_flag
5531     ,       x_header_rec.source_document_version_number -- hashraf ... end of pack J
5532     -- 11i10 Pricing Changes
5533     ,       x_header_rec.new_price_list_id
5534     ,       x_header_rec.new_modifier_list_id
5535     ,       x_header_rec.default_discount_percent
5536     ,       x_header_rec.default_discount_amount
5537     ;
5538       IF x_header_rec.new_price_list_id IS NOT NULL THEN
5539          SELECT name
5540            INTO x_header_rec.new_price_list_name
5541            FROM qp_list_headers_vl
5542           WHERE list_header_id = x_header_rec.new_price_list_id;
5543       END IF;
5544       IF x_header_rec.new_modifier_list_id IS NOT NULL THEN
5545          SELECT name
5546            INTO x_header_rec.new_modifier_list_name
5547            FROM qp_list_headers_vl
5548           WHERE list_header_id = x_header_rec.new_modifier_list_id;
5549       END IF;
5550      CLOSE l_hdr_hist_csr;
5551    END IF;
5552 
5553    if l_debug_level > 0 then
5554     oe_debug_pub.add('Exiting OE_BLANKET_UTIL.QUERY_ROW -Header', 1);
5555    end if;
5556 
5557 EXCEPTION
5558 
5559     WHEN NO_DATA_FOUND THEN
5560 
5561     x_return_status := FND_API.G_RET_STS_ERROR;
5562 	   RAISE NO_DATA_FOUND;
5563 
5564     WHEN OTHERS THEN
5565 
5566         x_return_status                := FND_API.G_RET_STS_UNEXP_ERROR;
5567 
5568         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
5569         THEN
5570             OE_MSG_PUB.Add_Exc_Msg
5571             (   G_PKG_NAME
5572             ,   'Query_Header'
5573             );
5574         END IF;
5575 
5576         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5577 END Query_Header;
5578 
5579 PROCEDURE Query_Lines
5580 (p_line_id              IN NUMBER := NULL
5581 ,p_header_id            IN NUMBER := NULL
5582 ,p_version_number       IN NUMBER := NULL
5583 ,p_phase_change_flag    IN VARCHAR2 := NULL
5584 ,x_line_tbl             IN OUT NOCOPY OE_Blanket_PUB.line_tbl_type
5585 ,x_return_status        OUT NOCOPY VARCHAR2
5586 )IS
5587 
5588 l_org_id 		      	NUMBER;
5589 l_count				NUMBER;
5590 l_entity				VARCHAR2(1);
5591 l_current_version_number        NUMBER;
5592 
5593 CURSOR l_line_csr IS
5594     SELECT  ACCOUNTING_RULE_ID
5595     ,       AGREEMENT_ID
5596     ,       ATTRIBUTE1
5597     ,       ATTRIBUTE10
5598     ,       ATTRIBUTE11
5599     ,       ATTRIBUTE12
5600     ,       ATTRIBUTE13
5601     ,       ATTRIBUTE14
5602     ,       ATTRIBUTE15
5603     ,       ATTRIBUTE16
5604     ,       ATTRIBUTE17
5605     ,       ATTRIBUTE18
5606     ,       ATTRIBUTE19
5607     ,       ATTRIBUTE20
5608     ,       ATTRIBUTE2
5609     ,       ATTRIBUTE3
5610     ,       ATTRIBUTE4
5611     ,       ATTRIBUTE5
5612     ,       ATTRIBUTE6
5613     ,       ATTRIBUTE7
5614     ,       ATTRIBUTE8
5615     ,       ATTRIBUTE9
5616     ,       CONTEXT
5617     ,       CREATED_BY
5618     ,       CREATION_DATE
5619     ,       CUST_PO_NUMBER
5620     ,       DELIVER_TO_ORG_ID
5621     ,       FREIGHT_TERMS_CODE
5622     ,       header_id
5623     ,       min_release_quantity
5624     ,       max_release_quantity
5625     ,       inventory_item_id
5626     ,       INVOICE_TO_ORG_ID
5627     ,       INVOICING_RULE_ID
5628     ,       ORDERED_ITEM_ID
5629     ,       item_identifier_type
5630     ,       lock_control
5631     ,       ORDERED_ITEM
5632     ,       ITEM_TYPE_CODE
5633     ,       LAST_UPDATED_BY
5634     ,       LAST_UPDATE_DATE
5635     ,       LAST_UPDATE_LOGIN
5636     ,       bl.line_id
5637     ,       bl.line_number
5638     ,       PAYMENT_TERM_ID
5639     ,       PREFERRED_GRADE                --OPM 02/JUN/00
5640     ,       PRICE_LIST_ID
5641     ,       PROGRAM_APPLICATION_ID
5642     ,       PROGRAM_ID
5643     ,       PROGRAM_UPDATE_DATE
5644     ,       REQUEST_ID
5645     ,       SALESREP_ID
5646     ,       SHIPPING_METHOD_CODE
5647     ,       ship_from_org_id
5648     ,       SHIP_TO_ORG_ID
5649     ,       SHIPPING_INSTRUCTIONS
5650     ,       PACKING_INSTRUCTIONS
5651     ,       START_DATE_ACTIVE
5652     ,       END_DATE_ACTIVE
5653     ,       MAX_RELEASE_AMOUNT
5654     ,       MIN_RELEASE_AMOUNT
5655     ,       BLANKET_LINE_MAX_AMOUNT
5656     ,       BLANKET_LINE_MIN_AMOUNT
5657     ,       BLANKET_MAX_QUANTITY
5658     ,       BLANKET_MIN_QUANTITY
5659     ,       OVERRIDE_BLANKET_CONTROLS_FLAG
5660     ,       OVERRIDE_RELEASE_CONTROLS_FLAG
5661     ,       ENFORCE_PRICE_LIST_FLAG
5662     ,       enforce_ship_to_flag
5663     ,       enforce_invoice_to_flag
5664     ,       enforce_freight_term_flag
5665     ,       enforce_shipping_method_flag
5666     ,       enforce_payment_term_flag
5667     ,       enforce_accounting_rule_flag
5668     ,       enforce_invoicing_rule_flag
5669     ,       ORDER_QUANTITY_UOM
5670     ,       RELEASED_QUANTITY
5671     ,       blx.FULFILLED_QUANTITY
5672     ,       RETURNED_QUANTITY
5673     ,       ORDER_NUMBER
5674     ,       RELEASED_AMOUNT
5675     ,       FULFILLED_AMOUNT
5676     ,       RETURNED_AMOUNT
5677     ,       TRANSACTION_PHASE_CODE -- hashraf ... start of pack J
5678     ,       source_document_version_number
5679     -- 11i10 Pricing Changes
5680     ,       modifier_list_line_id
5681     ,       blx.qp_list_line_id
5682     FROM    OE_BLANKET_LINES bl, OE_BLANKET_LINES_EXT blx
5683     WHERE   bl.line_id = blx.line_id
5684       AND   bl.sales_document_type_code = 'B'
5685       AND  ( bl.line_id = p_line_id OR
5686 	    header_id = p_header_id) ;
5687 
5688 CURSOR l_line_hist_csr IS
5689     SELECT  ACCOUNTING_RULE_ID
5690     ,       AGREEMENT_ID
5691     ,       ATTRIBUTE1
5692     ,       ATTRIBUTE10
5693     ,       ATTRIBUTE11
5694     ,       ATTRIBUTE12
5695     ,       ATTRIBUTE13
5696     ,       ATTRIBUTE14
5697     ,       ATTRIBUTE15
5698     ,       ATTRIBUTE16
5699     ,       ATTRIBUTE17
5700     ,       ATTRIBUTE18
5701     ,       ATTRIBUTE19
5702     ,       ATTRIBUTE20
5703     ,       ATTRIBUTE2
5704     ,       ATTRIBUTE3
5705     ,       ATTRIBUTE4
5706     ,       ATTRIBUTE5
5707     ,       ATTRIBUTE6
5708     ,       ATTRIBUTE7
5709     ,       ATTRIBUTE8
5710     ,       ATTRIBUTE9
5711     ,       CONTEXT
5712     ,       CREATED_BY
5713     ,       CREATION_DATE
5714     ,       CUST_PO_NUMBER
5715     ,       DELIVER_TO_ORG_ID
5716     ,       FREIGHT_TERMS_CODE
5717     ,       header_id
5718     ,       min_release_quantity
5719     ,       max_release_quantity
5720     ,       inventory_item_id
5721     ,       INVOICE_TO_ORG_ID
5722     ,       INVOICING_RULE_ID
5723     ,       ORDERED_ITEM_ID
5724     ,       item_identifier_type
5725     ,       NULL                           --    ,       lock_control
5726     ,       ORDERED_ITEM
5727     ,       ITEM_TYPE_CODE
5728     ,       LAST_UPDATED_BY
5729     ,       LAST_UPDATE_DATE
5730     ,       LAST_UPDATE_LOGIN
5731     ,       bl.line_id
5732     ,       bl.line_number
5733     ,       PAYMENT_TERM_ID
5734     ,       PREFERRED_GRADE                --OPM 02/JUN/00
5735     ,       PRICE_LIST_ID
5736     ,       PROGRAM_APPLICATION_ID
5737     ,       PROGRAM_ID
5738     ,       PROGRAM_UPDATE_DATE
5739     ,       REQUEST_ID
5740     ,       SALESREP_ID
5741     ,       SHIPPING_METHOD_CODE
5742     ,       ship_from_org_id
5743     ,       SHIP_TO_ORG_ID
5744     ,       SHIPPING_INSTRUCTIONS
5745     ,       PACKING_INSTRUCTIONS
5746     ,       START_DATE_ACTIVE
5747     ,       END_DATE_ACTIVE
5748     ,       MAX_RELEASE_AMOUNT
5749     ,       MIN_RELEASE_AMOUNT
5750     ,       BLANKET_LINE_MAX_AMOUNT
5751     ,       BLANKET_LINE_MIN_AMOUNT
5752     ,       BLANKET_MAX_QUANTITY
5753     ,       BLANKET_MIN_QUANTITY
5754     ,       OVERRIDE_BLANKET_CONTROLS_FLAG
5755     ,       OVERRIDE_RELEASE_CONTROLS_FLAG
5756     ,       ENFORCE_PRICE_LIST_FLAG
5757     ,       enforce_ship_to_flag
5758     ,       enforce_invoice_to_flag
5759     ,       enforce_freight_term_flag
5760     ,       enforce_shipping_method_flag
5761     ,       enforce_payment_term_flag
5762     ,       enforce_accounting_rule_flag
5763     ,       enforce_invoicing_rule_flag
5764     ,       ORDER_QUANTITY_UOM
5765     ,       RELEASED_QUANTITY
5766     ,       FULFILLED_QUANTITY
5767     ,       RETURNED_QUANTITY
5768     ,       ORDER_NUMBER
5769     ,       RELEASED_AMOUNT
5770     ,       FULFILLED_AMOUNT
5771     ,       RETURNED_AMOUNT
5772     ,       TRANSACTION_PHASE_CODE -- hashraf ... start of pack J
5773     ,       source_document_version_number
5774     -- 11i10 Pricing Changes
5775     ,       modifier_list_line_id
5776     ,       qp_list_line_id
5777     FROM    OE_BLANKET_LINES_HIST bl
5778     WHERE   bl.sales_document_type_code = 'B'
5779       AND  ( bl.line_id = p_line_id OR
5780 	    header_id = p_header_id)
5781       AND   version_number = p_version_number
5782      AND    (PHASE_CHANGE_FLAG = p_phase_change_flag
5783      OR     (nvl(p_phase_change_flag, 'NULL') <> 'Y'));
5784 
5785 --
5786 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
5787 --
5788 BEGIN
5789 
5790     x_return_status := FND_API.G_RET_STS_SUCCESS;
5791 
5792     IF
5793     (p_line_id IS NOT NULL
5794      AND
5795     p_header_id IS NOT NULL)
5796     THEN
5797             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
5798             THEN
5799                 OE_MSG_PUB.Add_Exc_Msg
5800                 (   G_PKG_NAME
5801                 ,   'Query Rows'
5802                 ,   'Keys are mutually exclusive: line_id = '|| p_line_id || ',
5803 header_id = '|| p_header_id
5804                 );
5805             END IF;
5806 
5807         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5808 
5809     END IF;
5810 
5811    IF p_version_number IS NOT NULL THEN
5812     SELECT  /* MOAC_SQL_CHANGE */ version_number INTO l_current_version_number FROM OE_BLANKET_HEADERS_ALL WHERE (header_id = p_header_id OR header_id = (select header_id from oe_blanket_lines_ALL where line_id = p_line_id));
5813    END IF;
5814 
5815 
5816  IF p_version_number IS NULL OR
5817     p_version_number = l_current_version_number THEN
5818 
5819     --  Loop over fetched records
5820 
5821     l_count := 1;
5822 
5823     FOR l_rec IN l_line_csr LOOP
5824 
5825         x_line_tbl(l_count).accounting_rule_id  := l_rec.ACCOUNTING_RULE_ID;
5826         x_line_tbl(l_count).agreement_id        := l_rec.AGREEMENT_ID;
5827         x_line_tbl(l_count).attribute1          := l_rec.ATTRIBUTE1;
5828         x_line_tbl(l_count).attribute10         := l_rec.ATTRIBUTE10;
5829         x_line_tbl(l_count).attribute11         := l_rec.ATTRIBUTE11;
5830         x_line_tbl(l_count).attribute12         := l_rec.ATTRIBUTE12;
5831         x_line_tbl(l_count).attribute13         := l_rec.ATTRIBUTE13;
5832         x_line_tbl(l_count).attribute14         := l_rec.ATTRIBUTE14;
5833         x_line_tbl(l_count).attribute15         := l_rec.ATTRIBUTE15;
5834         x_line_tbl(l_count).attribute16         := l_rec.ATTRIBUTE16;
5835         x_line_tbl(l_count).attribute17         := l_rec.ATTRIBUTE17;
5836         x_line_tbl(l_count).attribute18         := l_rec.ATTRIBUTE18;
5837         x_line_tbl(l_count).attribute19         := l_rec.ATTRIBUTE19;
5838         x_line_tbl(l_count).attribute20         := l_rec.ATTRIBUTE20;
5839         x_line_tbl(l_count).attribute2          := l_rec.ATTRIBUTE2;
5840         x_line_tbl(l_count).attribute3          := l_rec.ATTRIBUTE3;
5841         x_line_tbl(l_count).attribute4          := l_rec.ATTRIBUTE4;
5842         x_line_tbl(l_count).attribute5          := l_rec.ATTRIBUTE5;
5843         x_line_tbl(l_count).attribute6          := l_rec.ATTRIBUTE6;
5844         x_line_tbl(l_count).attribute7          := l_rec.ATTRIBUTE7;
5845         x_line_tbl(l_count).attribute8          := l_rec.ATTRIBUTE8;
5846         x_line_tbl(l_count).attribute9          := l_rec.ATTRIBUTE9;
5847         x_line_tbl(l_count).context             := l_rec.CONTEXT;
5848 
5849         x_line_tbl(l_count).created_by          := l_rec.CREATED_BY;
5850         x_line_tbl(l_count).creation_date       := l_rec.CREATION_DATE;
5851         x_line_tbl(l_count).cust_po_number      := l_rec.CUST_PO_NUMBER;
5852         x_line_tbl(l_count).deliver_to_org_id   := l_rec.DELIVER_TO_ORG_ID;
5853         x_line_tbl(l_count).freight_terms_code  := l_rec.FREIGHT_TERMS_CODE;
5854         x_line_tbl(l_count).header_id  := l_rec.header_id;
5855         x_line_tbl(l_count).min_release_quantity  := l_rec.min_release_quantity;
5856         x_line_tbl(l_count).max_release_quantity  := l_rec.max_release_quantity;
5857         x_line_tbl(l_count).inventory_item_id   := l_rec.INVENTORY_ITEM_ID;
5858         x_line_tbl(l_count).invoice_to_org_id   := l_rec.INVOICE_TO_ORG_ID;
5859         x_line_tbl(l_count).invoicing_rule_id   := l_rec.INVOICING_RULE_ID;
5860         x_line_tbl(l_count).ordered_item_id             := l_rec.ORDERED_ITEM_ID;
5861         x_line_tbl(l_count).item_identifier_type := l_rec.item_identifier_type;
5862         x_line_tbl(l_count).lock_control := l_rec.lock_control;
5863 
5864         x_line_tbl(l_count).ordered_item          := l_rec.ORDERED_ITEM;
5865         x_line_tbl(l_count).item_type_code      := l_rec.ITEM_TYPE_CODE;
5866         x_line_tbl(l_count).last_updated_by     := l_rec.LAST_UPDATED_BY;
5867         x_line_tbl(l_count).last_update_date    := l_rec.LAST_UPDATE_DATE;
5868         x_line_tbl(l_count).last_update_login   := l_rec.LAST_UPDATE_LOGIN;
5869         x_line_tbl(l_count).line_id := l_rec.line_id;
5870         x_line_tbl(l_count).line_number  := l_rec.line_number;
5871         x_line_tbl(l_count).payment_term_id     := l_rec.PAYMENT_TERM_ID;
5872         x_line_tbl(l_count).preferred_grade     := l_rec.PREFERRED_GRADE;  -- OPM
5873         x_line_tbl(l_count).price_list_id       := l_rec.PRICE_LIST_ID;
5874         x_line_tbl(l_count).program_application_id := l_rec.PROGRAM_APPLICATION_ID;
5875         x_line_tbl(l_count).program_id          := l_rec.PROGRAM_ID;
5876         x_line_tbl(l_count).program_update_date := l_rec.PROGRAM_UPDATE_DATE;
5877         x_line_tbl(l_count).request_id          := l_rec.REQUEST_ID;
5878          x_line_tbl(l_count).salesrep_id      := l_rec.SALESREP_ID;
5879          x_line_tbl(l_count).released_amount  := l_rec.released_amount;
5880         x_line_tbl(l_count).shipping_method_code := l_rec.SHIPPING_METHOD_CODE;
5881         x_line_tbl(l_count).ship_from_org_id    := l_rec.ship_from_org_id;
5882         x_line_tbl(l_count).ship_to_org_id      := l_rec.SHIP_TO_ORG_ID;
5883         x_line_tbl(l_count).shipping_instructions := l_rec.shipping_instructions;
5884         x_line_tbl(l_count).packing_instructions := l_rec.packing_instructions;
5885     x_line_tbl(l_count).start_Date_active :=   l_rec.START_DATE_ACTIVE;
5886     x_line_tbl(l_count).END_DATE_ACTIVE :=   l_rec.END_DATE_ACTIVE;
5887     x_line_tbl(l_count).MAX_RELEASE_AMOUNT :=
5888                l_rec.MAX_RELEASE_AMOUNT;
5889     x_line_tbl(l_count).MIN_RELEASE_AMOUNT :=
5890                  l_rec.MIN_RELEASE_AMOUNT;
5891 
5892     x_line_tbl(l_count).BLANKET_MAX_AMOUNT :=
5893           l_rec.Blanket_Line_Max_Amount;
5894     x_line_tbl(l_count).BLANKET_MIN_AMOUNT :=
5895                  l_rec.Blanket_Line_Min_Amount;
5896     x_line_tbl(l_count).Blanket_Max_Quantity :=
5897                        l_rec.Blanket_Max_Quantity;
5898     x_line_tbl(l_count).Blanket_Min_Quantity :=
5899                       l_rec.Blanket_Min_Quantity;
5900     x_line_tbl(l_count).OVERRIDE_BLANKET_CONTROLS_FLAG :=
5901           l_rec.OVERRIDE_BLANKET_CONTROLS_FLAG;
5902     x_line_tbl(l_count).OVERRIDE_RELEASE_CONTROLS_FLAG :=
5903           l_rec.OVERRIDE_RELEASE_CONTROLS_FLAG;
5904     x_line_tbl(l_count).ENFORCE_PRICE_LIST_FLAG :=
5905                       l_rec.ENFORCE_PRICE_LIST_FLAG;
5906     x_line_tbl(l_count).enforce_ship_to_flag :=
5907                       l_rec.enforce_ship_to_flag;
5908     x_line_tbl(l_count).enforce_invoice_to_flag :=
5909                       l_rec.enforce_invoice_to_flag;
5910     x_line_tbl(l_count).enforce_freight_term_flag :=
5911                       l_rec.enforce_freight_term_flag;
5912     x_line_tbl(l_count).enforce_shipping_method_flag :=
5913                       l_rec.enforce_shipping_method_flag;
5914     x_line_tbl(l_count).enforce_payment_term_flag :=
5915                       l_rec.enforce_payment_term_flag;
5916     x_line_tbl(l_count).enforce_accounting_rule_flag :=
5917                       l_rec.enforce_accounting_rule_flag;
5918     x_line_tbl(l_count).enforce_invoicing_rule_flag :=
5919                       l_rec.enforce_invoicing_rule_flag;
5920     x_line_tbl(l_count).ORDER_QUANTITY_UOM :=   l_rec.ORDER_QUANTITY_UOM;
5921     x_line_tbl(l_count).RELEASED_QUANTITY :=  l_rec.RELEASED_QUANTITY;
5922     x_line_tbl(l_count).FULFILLED_QUANTITY  :=  l_rec.FULFILLED_QUANTITY;
5923     x_line_tbl(l_count).RETURNED_QUANTITY :=  l_rec.RETURNED_QUANTITY;
5924     x_line_tbl(l_count).order_number :=  l_rec.order_number;
5925     x_line_tbl(l_count).fulfilled_amount :=  l_rec.fulfilled_amount;
5926     x_line_tbl(l_count).returned_amount := l_rec.returned_amount;
5927 -- hashraf ... start of pack J
5928     x_line_tbl(l_count).transaction_phase_code := l_rec.transaction_phase_code;
5929     x_line_tbl(l_count).source_document_version_number := l_rec.source_document_version_number;
5930 -- hashraf ... end of pack J
5931     x_line_tbl(l_count).qp_list_line_id :=  l_rec.qp_list_line_id;
5932     -- 11i10 Pricing Changes Start
5933     x_line_tbl(l_count).modifier_list_line_id :=  l_rec.modifier_list_line_id;
5934     IF x_line_tbl(l_count).modifier_list_line_id IS NOT NULL THEN
5935 
5936         --For bug 3553063.Catching No_Data_Found for the query
5937         BEGIN
5938            select decode(arithmetic_operator,'%',operand,null)
5939                 ,decode(arithmetic_operator,'AMT',operand,null)
5940            into x_line_tbl(l_count).discount_percent
5941                ,x_line_tbl(l_count).discount_amount
5942            from qp_list_lines
5943            where list_line_id = x_line_tbl(l_count).modifier_list_line_id;
5944         EXCEPTION
5945               WHEN NO_DATA_FOUND THEN
5946                  Null;
5947         END;
5948     END IF;
5949     -- 11i10 Pricing Changes End
5950 	   x_line_tbl(l_count).db_flag 		:= FND_API.G_TRUE;
5951 	   l_count := l_count + 1;
5952 
5953     END LOOP;
5954 
5955   ELSE
5956 
5957     --  Loop over fetched records
5958 
5959     l_count := 1;
5960 
5961     FOR l_rec IN l_line_hist_csr LOOP
5962 
5963         x_line_tbl(l_count).accounting_rule_id  := l_rec.ACCOUNTING_RULE_ID;
5964         x_line_tbl(l_count).agreement_id        := l_rec.AGREEMENT_ID;
5965         x_line_tbl(l_count).attribute1          := l_rec.ATTRIBUTE1;
5966         x_line_tbl(l_count).attribute10         := l_rec.ATTRIBUTE10;
5967         x_line_tbl(l_count).attribute11         := l_rec.ATTRIBUTE11;
5968         x_line_tbl(l_count).attribute12         := l_rec.ATTRIBUTE12;
5969         x_line_tbl(l_count).attribute13         := l_rec.ATTRIBUTE13;
5970         x_line_tbl(l_count).attribute14         := l_rec.ATTRIBUTE14;
5971         x_line_tbl(l_count).attribute15         := l_rec.ATTRIBUTE15;
5972         x_line_tbl(l_count).attribute16         := l_rec.ATTRIBUTE16;
5973         x_line_tbl(l_count).attribute17         := l_rec.ATTRIBUTE17;
5974         x_line_tbl(l_count).attribute18         := l_rec.ATTRIBUTE18;
5975         x_line_tbl(l_count).attribute19         := l_rec.ATTRIBUTE19;
5976         x_line_tbl(l_count).attribute20         := l_rec.ATTRIBUTE20;
5977         x_line_tbl(l_count).attribute2          := l_rec.ATTRIBUTE2;
5978         x_line_tbl(l_count).attribute3          := l_rec.ATTRIBUTE3;
5979         x_line_tbl(l_count).attribute4          := l_rec.ATTRIBUTE4;
5980         x_line_tbl(l_count).attribute5          := l_rec.ATTRIBUTE5;
5981         x_line_tbl(l_count).attribute6          := l_rec.ATTRIBUTE6;
5982         x_line_tbl(l_count).attribute7          := l_rec.ATTRIBUTE7;
5983         x_line_tbl(l_count).attribute8          := l_rec.ATTRIBUTE8;
5984         x_line_tbl(l_count).attribute9          := l_rec.ATTRIBUTE9;
5985         x_line_tbl(l_count).context             := l_rec.CONTEXT;
5986 
5987         x_line_tbl(l_count).created_by          := l_rec.CREATED_BY;
5988         x_line_tbl(l_count).creation_date       := l_rec.CREATION_DATE;
5989         x_line_tbl(l_count).cust_po_number      := l_rec.CUST_PO_NUMBER;
5990         x_line_tbl(l_count).deliver_to_org_id   := l_rec.DELIVER_TO_ORG_ID;
5991         x_line_tbl(l_count).freight_terms_code  := l_rec.FREIGHT_TERMS_CODE;
5992         x_line_tbl(l_count).header_id  := l_rec.header_id;
5993         x_line_tbl(l_count).min_release_quantity  := l_rec.min_release_quantity;
5994         x_line_tbl(l_count).max_release_quantity  := l_rec.max_release_quantity;
5995         x_line_tbl(l_count).inventory_item_id   := l_rec.INVENTORY_ITEM_ID;
5996         x_line_tbl(l_count).invoice_to_org_id   := l_rec.INVOICE_TO_ORG_ID;
5997         x_line_tbl(l_count).invoicing_rule_id   := l_rec.INVOICING_RULE_ID;
5998         x_line_tbl(l_count).ordered_item_id             := l_rec.ORDERED_ITEM_ID;
5999         x_line_tbl(l_count).item_identifier_type := l_rec.item_identifier_type;
6000         x_line_tbl(l_count).lock_control := NULL; --l_rec.lock_control;
6001 
6002         x_line_tbl(l_count).ordered_item          := l_rec.ORDERED_ITEM;
6003         x_line_tbl(l_count).item_type_code      := l_rec.ITEM_TYPE_CODE;
6004         x_line_tbl(l_count).last_updated_by     := l_rec.LAST_UPDATED_BY;
6005         x_line_tbl(l_count).last_update_date    := l_rec.LAST_UPDATE_DATE;
6006         x_line_tbl(l_count).last_update_login   := l_rec.LAST_UPDATE_LOGIN;
6007         x_line_tbl(l_count).line_id := l_rec.line_id;
6008         x_line_tbl(l_count).line_number  := l_rec.line_number;
6009         x_line_tbl(l_count).payment_term_id     := l_rec.PAYMENT_TERM_ID;
6010         x_line_tbl(l_count).preferred_grade     := l_rec.PREFERRED_GRADE;  -- OPM
6011         x_line_tbl(l_count).price_list_id       := l_rec.PRICE_LIST_ID;
6012         x_line_tbl(l_count).program_application_id := l_rec.PROGRAM_APPLICATION_ID;
6013         x_line_tbl(l_count).program_id          := l_rec.PROGRAM_ID;
6014         x_line_tbl(l_count).program_update_date := l_rec.PROGRAM_UPDATE_DATE;
6015         x_line_tbl(l_count).request_id          := l_rec.REQUEST_ID;
6016          x_line_tbl(l_count).salesrep_id      := l_rec.SALESREP_ID;
6017          x_line_tbl(l_count).released_amount  := l_rec.released_amount;
6018         x_line_tbl(l_count).shipping_method_code := l_rec.SHIPPING_METHOD_CODE;
6019         x_line_tbl(l_count).ship_from_org_id    := l_rec.ship_from_org_id;
6020         x_line_tbl(l_count).ship_to_org_id      := l_rec.SHIP_TO_ORG_ID;
6021         x_line_tbl(l_count).shipping_instructions := l_rec.shipping_instructions;
6022         x_line_tbl(l_count).packing_instructions := l_rec.packing_instructions;
6023     x_line_tbl(l_count).start_Date_active :=   l_rec.START_DATE_ACTIVE;
6024     x_line_tbl(l_count).END_DATE_ACTIVE :=   l_rec.END_DATE_ACTIVE;
6025     x_line_tbl(l_count).MAX_RELEASE_AMOUNT :=
6026                l_rec.MAX_RELEASE_AMOUNT;
6027     x_line_tbl(l_count).MIN_RELEASE_AMOUNT :=
6028                  l_rec.MIN_RELEASE_AMOUNT;
6029 
6030     x_line_tbl(l_count).BLANKET_MAX_AMOUNT :=
6031           l_rec.Blanket_Line_Max_Amount;
6032     x_line_tbl(l_count).BLANKET_MIN_AMOUNT :=
6033                  l_rec.Blanket_Line_Min_Amount;
6034     x_line_tbl(l_count).Blanket_Max_Quantity :=
6035                        l_rec.Blanket_Max_Quantity;
6036     x_line_tbl(l_count).Blanket_Min_Quantity :=
6037                       l_rec.Blanket_Min_Quantity;
6038     x_line_tbl(l_count).OVERRIDE_BLANKET_CONTROLS_FLAG :=
6039           l_rec.OVERRIDE_BLANKET_CONTROLS_FLAG;
6040     x_line_tbl(l_count).OVERRIDE_RELEASE_CONTROLS_FLAG :=
6041           l_rec.OVERRIDE_RELEASE_CONTROLS_FLAG;
6042     x_line_tbl(l_count).ENFORCE_PRICE_LIST_FLAG :=
6043                       l_rec.ENFORCE_PRICE_LIST_FLAG;
6044     x_line_tbl(l_count).enforce_ship_to_flag :=
6045                       l_rec.enforce_ship_to_flag;
6046     x_line_tbl(l_count).enforce_invoice_to_flag :=
6047                       l_rec.enforce_invoice_to_flag;
6048     x_line_tbl(l_count).enforce_freight_term_flag :=
6049                       l_rec.enforce_freight_term_flag;
6050     x_line_tbl(l_count).enforce_shipping_method_flag :=
6051                       l_rec.enforce_shipping_method_flag;
6052     x_line_tbl(l_count).enforce_payment_term_flag :=
6053                       l_rec.enforce_payment_term_flag;
6054     x_line_tbl(l_count).enforce_accounting_rule_flag :=
6055                       l_rec.enforce_accounting_rule_flag;
6056     x_line_tbl(l_count).enforce_invoicing_rule_flag :=
6057                       l_rec.enforce_invoicing_rule_flag;
6058     x_line_tbl(l_count).ORDER_QUANTITY_UOM :=   l_rec.ORDER_QUANTITY_UOM;
6059     x_line_tbl(l_count).RELEASED_QUANTITY :=  l_rec.RELEASED_QUANTITY;
6060     x_line_tbl(l_count).FULFILLED_QUANTITY  :=  l_rec.FULFILLED_QUANTITY;
6061     x_line_tbl(l_count).RETURNED_QUANTITY :=  l_rec.RETURNED_QUANTITY;
6062     x_line_tbl(l_count).order_number :=  l_rec.order_number;
6063     x_line_tbl(l_count).fulfilled_amount :=  l_rec.fulfilled_amount;
6064     x_line_tbl(l_count).returned_amount := l_rec.returned_amount;
6065 -- hashraf ... start of pack J
6066     x_line_tbl(l_count).transaction_phase_code := l_rec.transaction_phase_code;
6067     x_line_tbl(l_count).source_document_version_number := l_rec.source_document_version_number;
6068 -- hashraf ... end of pack J
6069     x_line_tbl(l_count).qp_list_line_id :=  l_rec.qp_list_line_id;
6070     -- 11i10 Pricing Changes Start
6071     x_line_tbl(l_count).modifier_list_line_id :=  l_rec.modifier_list_line_id;
6072     IF x_line_tbl(l_count).modifier_list_line_id IS NOT NULL THEN
6073 
6074        --For bug 3553063.Catching No_Data_Found for the query
6075        BEGIN
6076           select decode(arithmetic_operator,'%',operand,null)
6077                 ,decode(arithmetic_operator,'AMT',operand,null)
6078           into x_line_tbl(l_count).discount_percent
6079                ,x_line_tbl(l_count).discount_amount
6080           from qp_list_lines
6081           where list_line_id = x_line_tbl(l_count).modifier_list_line_id;
6082        EXCEPTION
6083               WHEN NO_DATA_FOUND THEN
6084                  Null;
6085        END;
6086     END IF;
6087     -- 11i10 Pricing Changes End
6088 	   x_line_tbl(l_count).db_flag 		:= FND_API.G_TRUE;
6089 	   l_count := l_count + 1;
6090 
6091     END LOOP;
6092 
6093   END IF;
6094 
6095     --  PK sent and no rows found
6096 
6097     IF
6098     p_line_id IS NOT NULL
6099     AND
6100     x_line_tbl.COUNT = 0
6101     THEN
6102         RAISE NO_DATA_FOUND;
6103     END IF;
6104 
6105 
6106     --  Return fetched table
6107    if l_debug_level > 0 then
6108     oe_debug_pub.add('Exiting OE_LINE_UTIL.QUERY_ROWS', 1);
6109    end if;
6110 
6111 EXCEPTION
6112 
6113     WHEN NO_DATA_FOUND THEN
6114 
6115     x_return_status := FND_API.G_RET_STS_ERROR;
6116 	   RAISE NO_DATA_FOUND;
6117 
6118     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6119 
6120     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6121         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6122 
6123     WHEN OTHERS THEN
6124 
6125     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6126         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6127         THEN
6128             OE_MSG_PUB.Add_Exc_Msg
6129             (   G_PKG_NAME
6130             ,   'Query_Lines'
6131             );
6132         END IF;
6133 
6134         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6135 END Query_Lines;
6136 
6137 PROCEDURE Query_blanket
6138 (p_header_id           IN NUMBER
6139 ,p_version_number      IN NUMBER := NULL
6140 ,p_phase_change_flag   IN VARCHAR2 := NULL
6141 ,p_x_header_rec        IN OUT NOCOPY OE_Blanket_PUB.Header_rec_type
6142 ,p_x_line_tbl          IN OUT NOCOPY OE_Blanket_PUB.line_tbl_type
6143 ,x_return_status       OUT NOCOPY VARCHAR2
6144 )IS
6145 l_return_status varchar2(1);
6146 l_version_number NUMBER := p_version_number;
6147 l_current_version_number NUMBER;
6148 --
6149 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
6150 --
6151 BEGIN
6152 
6153    x_return_status := FND_API.G_RET_STS_SUCCESS;
6154 
6155    IF p_version_number IS NOT NULL THEN
6156     SELECT  /* MOAC_SQL_CHANGE */ version_number INTO l_current_version_number FROM OE_BLANKET_HEADERS_ALL WHERE header_id = p_header_id;
6157 
6158     IF l_version_number >= l_current_version_number THEN
6159       l_version_number := NULL;
6160     END IF;
6161    END IF;
6162 
6163    Query_Header(P_header_id => p_header_id ,
6164                 p_version_number => l_version_number,
6165                 p_phase_change_flag => p_phase_change_flag,
6166 		x_header_rec => p_x_header_rec,
6167                 x_return_status => l_return_status);
6168    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6169       x_return_status := l_return_status;
6170    END IF;
6171 
6172    Query_Lines(P_header_id => p_header_id ,
6173                p_version_number => l_version_number,
6174                p_phase_change_flag => p_phase_change_flag,
6175 	       x_line_tbl => p_x_line_tbl ,
6176                x_return_status => l_return_status);
6177    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6178       x_return_status := l_return_status;
6179    END IF;
6180 
6181 EXCEPTION
6182    WHEN OTHERS THEN
6183         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6184         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6185         THEN
6186             OE_MSG_PUB.Add_Exc_Msg
6187             (   G_PKG_NAME
6188             ,   'Query_Blanket'
6189             );
6190         END IF;
6191         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6192 END Query_Blanket;
6193 
6194 FUNCTION Query_Row
6195 (   p_line_id                       NUMBER
6196    ,p_version_number                NUMBER := NULL
6197    ,p_phase_change_flag             VARCHAR2 := NULL
6198 ) RETURN OE_Blanket_PUB.Line_Rec_Type
6199 IS
6200 l_return_status varchar2(1);
6201 l_line_tbl               OE_Blanket_PUB.Line_Tbl_Type;
6202 --
6203 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
6204 --
6205 BEGIN
6206 
6207     Query_Lines
6208         (   p_line_id                     => p_line_id
6209            ,   p_version_number             => p_version_number
6210            ,   p_phase_change_flag          => p_phase_change_flag
6211            ,   x_line_tbl                    => l_line_tbl
6212            ,   x_return_status              => l_return_status
6213         );
6214 
6215     IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
6216       RETURN l_line_tbl(1);
6217     END IF;
6218 END Query_Row;
6219 
6220 --Currently lock row will lock blanket values by blanket only
6221 PROCEDURE Lock_Row
6222 (   x_return_status             OUT NOCOPY VARCHAR2
6223 ,   p_blanket_id                IN NUMBER
6224 ,   p_blanket_line_id           IN NUMBER
6225 ,   p_x_lock_control            IN OUT NOCOPY NUMBER
6226 ,   x_msg_count                 OUT NOCOPY NUMBER
6227 ,   x_msg_data                  OUT NOCOPY VARCHAR2
6228 )
6229 IS
6230 l_return_status               VARCHAR2(1);
6231 --
6232 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
6233 --
6234 BEGIN
6235 
6236    if l_debug_level > 0 then
6237     oe_debug_pub.add('Entering OE_BLANKET_UTIL.LOCK_ROW', 1);
6238    end if;
6239 
6240     OE_MSG_PUB.initialize;
6241 
6242     Lock_Blanket
6243     (   x_return_status      => l_return_status
6244     ,   p_blanket_id         => p_blanket_id
6245     ,   p_blanket_line_id    => p_blanket_line_id
6246     ,   p_x_lock_control     => p_x_lock_control
6247     );
6248 
6249     --  Set return status.
6250 
6251     x_return_status := l_return_status;
6252     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
6253         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6254     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
6255         RAISE FND_API.G_EXC_ERROR;
6256     END IF;
6257 
6258     --  Get message count and data
6259 
6260     OE_MSG_PUB.Count_And_Get
6261     (   p_count                       => x_msg_count
6262     ,   p_data                        => x_msg_data
6263     );
6264 
6265    if l_debug_level > 0 then
6266     oe_debug_pub.add('Exiting OE_BLANKET_UTIL.LOCK_ROW', 1);
6267    end if;
6268 
6269 EXCEPTION
6270      WHEN FND_API.G_EXC_ERROR THEN
6271 
6272            OE_GLOBALS.G_UI_FLAG := FALSE;
6273 
6274         x_return_status := FND_API.G_RET_STS_ERROR;
6275 
6276         --  Get message count and data
6277 
6278         oe_msg_pub.count_and_get
6279         (   p_count                       => x_msg_count
6280         ,   p_data                        => x_msg_data
6281         );
6282 
6283     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6284 
6285            OE_GLOBALS.G_UI_FLAG := FALSE;
6286 
6287         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6288 
6289         --  Get message count and data
6290 
6291         oe_msg_pub.count_and_get
6292         (   p_count                       => x_msg_count
6293         ,   p_data                        => x_msg_data
6294          );
6295     WHEN OTHERS THEN
6296 
6297         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6298         THEN
6299             OE_MSG_PUB.Add_Exc_Msg
6300             (   G_PKG_NAME
6301             ,   'Lock_Row'
6302             );
6303         END IF;
6304 
6305         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6306 
6307         --  Get message count and data
6308 
6309         OE_MSG_PUB.Count_And_Get
6310         (   p_count                       => x_msg_count
6311         ,   p_data                        => x_msg_data
6312         );
6313 
6314 END Lock_Row;
6315 
6316 
6317 
6318 --Currently lock blanket will lock blanket values by blanket only
6319 PROCEDURE Lock_Blanket
6320 (   x_return_status             OUT NOCOPY VARCHAR2
6321 ,   p_blanket_id                IN NUMBER
6322 ,   p_blanket_line_id           IN NUMBER
6323 ,   p_x_lock_control            IN OUT NOCOPY NUMBER
6324 )
6325 IS
6326      l_blanket_id		      NUMBER;
6327      l_blanket_line_id                NUMBER;
6328      l_is_line_lock_control           BOOLEAN;
6329      l_lock_control                   NUMBER;
6330      l_db_lock_control                NUMBER;
6331      l_temp_lock_control              NUMBER;
6332 
6333 CURSOR c_blanket_header IS
6334   SELECT  /* MOAC_SQL_CHANGE */ bh.lock_control
6335     FROM OE_BLANKET_HEADERS_ALL BH, OE_BLANKET_HEADERS_EXT BHX
6336    WHERE BH.ORDER_NUMBER = BHX.ORDER_NUMBER
6337      AND BH.ORDER_NUMBER = p_blanket_id
6338      AND ORG_ID = MO_GLOBAL.get_current_org_id
6339      AND BH.SALES_DOCUMENT_TYPE_CODE = 'B'
6340      FOR UPDATE NOWAIT;
6341 
6342 CURSOR c_blanket_lines IS
6343   SELECT   /* MOAC_SQL_CHANGE */ bl.line_id, bl.lock_control
6344     FROM OE_BLANKET_LINES_ALL BL, OE_BLANKET_LINES_EXT BLX
6345    WHERE BL.LINE_ID = BLX.LINE_ID
6346      AND BLX.ORDER_NUMBER = l_blanket_id
6347      AND BL.ORG_ID = MO_GLOBAL.GET_CURRENT_ORG_ID
6348      AND BL.SALES_DOCUMENT_TYPE_CODE = 'B'
6349      FOR UPDATE NOWAIT;
6350 
6351 --
6352 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
6353 --
6354 BEGIN
6355 
6356 
6357    if l_debug_level > 0 then
6358     oe_debug_pub.add('Entering OE_BLANKET_UTIL.LOCK_BLANKET', 1);
6359    end if;
6360 
6361     OE_MSG_PUB.initialize;
6362 
6363     SAVEPOINT Lock_Blanket;
6364 
6365     -- Retrieve the primary key.
6366     IF 	p_blanket_id <> FND_API.G_MISS_NUM THEN
6367 		l_blanket_id := p_blanket_id;
6368                 l_is_line_lock_control := FALSE;
6369     ELSE
6370         SELECT ORDER_NUMBER
6371         INTO   l_blanket_id
6372         FROM   OE_BLANKET_LINES_EXT
6373         WHERE  LINE_ID = p_blanket_line_id;
6374 
6375         l_is_line_lock_control := TRUE;
6376     END IF;
6377 
6378         l_lock_control := p_x_lock_control;
6379 
6380     -- Lock blanket header
6381     OPEN c_blanket_header;
6382     FETCH c_blanket_header INTO l_temp_lock_control;
6383     CLOSE c_blanket_header;
6384 
6385     IF l_is_line_lock_control = FALSE THEN
6386        l_db_lock_control := l_temp_lock_control;
6387     END IF;
6388 
6389     -- Lock blanket lines
6390     OPEN c_blanket_lines;
6391     LOOP
6392     FETCH c_blanket_lines INTO l_blanket_line_id, l_temp_lock_control;
6393 
6394     IF l_is_line_lock_control AND
6395        p_blanket_line_id = l_blanket_line_id THEN
6396        l_db_lock_control := l_temp_lock_control;
6397     END IF;
6398     EXIT WHEN (C_BLANKET_LINES%NOTFOUND);
6399     END LOOP;
6400     CLOSE c_blanket_lines;
6401 
6402 --    p_x_lock_control := l_db_lock_control;
6403 
6404    if l_debug_level > 0 then
6405     oe_debug_pub.add('p_x_lock_control'||p_x_lock_control, 3);
6406 --    oe_debug_pub.add('is line lock control'||l_is_line_lock_control, 3);
6407     oe_debug_pub.add('l_db_lock_control'||l_db_lock_control, 3);
6408    end if;
6409 
6410    if l_debug_level > 0 then
6411     oe_debug_pub.add('selected for update, now compare', 3);
6412    end if;
6413 
6414 
6415     -- If lock_control is not passed(is null or missing), then return the locked record.
6416 
6417     IF l_lock_control is null OR
6418        l_lock_control = FND_API.G_MISS_NUM
6419     THEN
6420 
6421         --  Set out NOCOPY /* file.sql.39 change */ parameter, out NOCOPY /* file.sql.39 change */ rec is already set by query row.
6422 
6423         --  Set return status
6424         x_return_status                := FND_API.G_RET_STS_SUCCESS;
6425 
6426 	RETURN;
6427 
6428     END IF;
6429 
6430     --  Row locked. If the whole record is passed, then
6431     --  Compare the value of lock_control column to DB value.
6432 
6433 -- following constants are used to debug lock_order,
6434 -- please do not use them for any other purpose.
6435 -- set G_LOCK_TEST := 'Y', for debugging.
6436 
6437 --    OE_GLOBALS.G_LOCK_CONST  := 0;
6438     --OE_GLOBALS.G_LOCK_TEST := 'Y';
6439 --    OE_GLOBALS.G_LOCK_TEST   := 'N';
6440 
6441     IF OE_GLOBALS.Equal(p_x_lock_control,
6442                         l_db_lock_control)
6443       THEN
6444 
6445    if l_debug_level > 0 then
6446         oe_debug_pub.add('done comparison, success', 1);
6447    end if;
6448         --  Row has not changed. Set out NOCOPY /* file.sql.39 change */ parameter.
6449 
6450         --  Set return status
6451 
6452         x_return_status                  := FND_API.G_RET_STS_SUCCESS;
6453 
6454     ELSE
6455 
6456    if l_debug_level > 0 then
6457         oe_debug_pub.add('row changed by other user', 1);
6458    end if;
6459 
6460         --  Row has changed by another user.
6461 
6462         x_return_status                  := FND_API.G_RET_STS_ERROR;
6463 
6464 	    -- Release the lock
6465 
6466             fnd_message.set_name('ONT','OE_LOCK_ROW_CHANGED');
6467             OE_MSG_PUB.Add;
6468 
6469     END IF;
6470 
6471    if l_debug_level > 0 then
6472     oe_debug_pub.add('Exiting OE_BLANKET_UTIL.LOCK_BLANKET', 1);
6473    end if;
6474 
6475     OE_GLOBALS.G_LOCK_TEST := 'N';
6476 
6477 
6478 EXCEPTION
6479 
6480     WHEN NO_DATA_FOUND THEN
6481 
6482         x_return_status                := FND_API.G_RET_STS_ERROR;
6483 
6484    if l_debug_level > 0 then
6485         oe_debug_pub.add('no data found in blanket lock_blanket', 1);
6486    end if;
6487 
6488             fnd_message.set_name('ONT','OE_LOCK_ROW_DELETED');
6489             OE_MSG_PUB.Add;
6490 
6491         OE_GLOBALS.G_LOCK_TEST := 'N';
6492 
6493     WHEN APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION THEN
6494 
6495         x_return_status                := FND_API.G_RET_STS_ERROR;
6496 
6497    if l_debug_level > 0 then
6498         oe_debug_pub.add('record_lock in blanket lock_blanket', 1);
6499    end if;
6500 
6501             fnd_message.set_name('ONT','OE_LOCK_ROW_ALREADY_LOCKED');
6502             OE_MSG_PUB.Add;
6503 
6504         OE_GLOBALS.G_LOCK_TEST := 'N';
6505 
6506     WHEN OTHERS THEN
6507 
6508    if l_debug_level > 0 then
6509         oe_debug_pub.add('others in blanket lock_blanket', 1);
6510    end if;
6511         x_return_status                := FND_API.G_RET_STS_UNEXP_ERROR;
6512 
6513             OE_MSG_PUB.Add_Exc_Msg
6514             (   G_PKG_NAME
6515             ,   'Lock_Blanket'
6516             );
6517         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6518         OE_GLOBALS.G_LOCK_TEST := 'N';
6519 
6520 END Lock_Blanket;
6521 
6522 
6523 PROCEDURE Default_Attributes
6524 (p_x_header_rec        IN OUT NOCOPY OE_Blanket_PUB.Header_rec_type
6525 ,x_return_status       OUT NOCOPY VARCHAR2
6526 ) IS
6527 --
6528 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
6529 --
6530 
6531 CURSOR c_contract_template_exist (cp_trans_type_id NUMBER) IS
6532        SELECT contract_template_id
6533        FROM   oe_transaction_types_all
6534        WHERE  transaction_type_id = cp_trans_type_id;
6535 
6536    l_order_type_id                 NUMBER := NULL;
6537    l_deflt_contract_template_id    NUMBER := NULL;
6538 
6539 BEGIN
6540      x_return_status                := FND_API.G_RET_STS_SUCCESS;
6541 
6542      if l_debug_level > 0 then
6543         oe_debug_pub.add('Enter Default_Attributes - Header');
6544         oe_debug_pub.add('operation is : '||p_x_header_rec.operation);
6545      end if;
6546 
6547      -- Default Blanket Header ID
6548      IF p_x_header_rec.header_id IS NULL THEN
6549         SELECT  OE_ORDER_HEADERS_S.NEXTVAL
6550         INTO    p_x_header_rec.header_id
6551         FROM    DUAL;
6552      END IF;
6553 
6554      -- Default Start Date Active
6555      IF p_x_header_rec.start_Date_active IS NULL THEN
6556         p_x_header_rec.start_Date_active := trunc(sysdate);
6557      END IF;
6558 
6559      -- Default Who Columns
6560      IF p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
6561         p_x_header_rec.creation_Date := sysdate;
6562         p_x_header_rec.created_by := FND_GLOBAL.USER_ID;
6563      END IF;
6564 
6565      p_x_header_rec.last_update_date := sysdate;
6566      p_x_header_rec.last_updated_by := FND_GLOBAL.USER_ID;
6567 
6568      -- Default Currency Code
6569      IF p_x_header_rec.transactional_curr_code IS NULL THEN
6570      BEGIN
6571           SELECT CURRENCY_CODE
6572           INTO    p_x_header_rec.transactional_curr_code
6573           FROM    OE_GL_SETS_OF_BOOKS_V
6574           WHERE SET_OF_BOOKS_ID = OE_Sys_Parameters.VALUE('SET_OF_BOOKS_ID');
6575      EXCEPTION
6576           WHEN OTHERS THEN
6577               NULL;
6578      END;
6579      END IF;
6580 
6581      -- Default Flags
6582      IF p_x_header_rec.on_hold_flag IS NULL OR
6583         p_x_header_rec.on_hold_flag NOT IN ('Y','N') THEN
6584         p_x_header_rec.on_hold_flag := 'N';
6585      END IF;
6586      IF p_x_header_rec.enforce_price_list_flag IS NULL OR
6587         p_x_header_rec.enforce_price_list_flag NOT IN ('Y','N') THEN
6588         p_x_header_rec.enforce_price_list_flag := 'N';
6589      END IF;
6590      IF p_x_header_rec.enforce_ship_to_flag IS NULL OR
6591         p_x_header_rec.enforce_ship_to_flag NOT IN ('Y','N') THEN
6592         p_x_header_rec.enforce_ship_to_flag := 'N';
6593      END IF;
6594      IF p_x_header_rec.enforce_invoice_to_flag IS NULL OR
6595         p_x_header_rec.enforce_invoice_to_flag NOT IN ('Y','N') THEN
6596         p_x_header_rec.enforce_invoice_to_flag := 'N';
6597      END IF;
6598      IF p_x_header_rec.enforce_freight_term_flag IS NULL OR
6599         p_x_header_rec.enforce_freight_term_flag NOT IN ('Y','N') THEN
6600         p_x_header_rec.enforce_freight_term_flag := 'N';
6601      END IF;
6602      IF p_x_header_rec.enforce_shipping_method_flag IS NULL OR
6603         p_x_header_rec.enforce_shipping_method_flag NOT IN ('Y','N') THEN
6604         p_x_header_rec.enforce_shipping_method_flag := 'N';
6605      END IF;
6606      IF p_x_header_rec.enforce_payment_term_flag IS NULL OR
6607         p_x_header_rec.enforce_payment_term_flag NOT IN ('Y','N') THEN
6608         p_x_header_rec.enforce_payment_term_flag := 'N';
6609      END IF;
6610      IF p_x_header_rec.enforce_accounting_rule_flag IS NULL OR
6611         p_x_header_rec.enforce_accounting_rule_flag NOT IN ('Y','N') THEN
6612         p_x_header_rec.enforce_accounting_rule_flag := 'N';
6613      END IF;
6614      IF p_x_header_rec.enforce_invoicing_rule_flag IS NULL OR
6615         p_x_header_rec.enforce_invoicing_rule_flag NOT IN ('Y','N') THEN
6616         p_x_header_rec.enforce_invoicing_rule_flag := 'N';
6617      END IF;
6618 
6619      IF p_x_header_rec.override_amount_flag IS NULL OR
6620         p_x_header_rec.override_amount_flag NOT IN ('Y','N') THEN
6621         p_x_header_rec.override_amount_flag := 'N';
6622      END IF;
6623 
6624      IF p_x_header_rec.order_type_id IS NULL THEN
6625         p_x_header_rec.order_type_id := FND_PROFILE.VALUE('OE_DEFAULT_BLANKET_ORDER_TYPE');
6626      END IF;
6627 
6628      IF p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
6629         -- Revision Number
6630         p_x_header_rec.version_number := 0.0;
6631         -- Operating unit
6632         -- <R12.MOAC> START
6633         --p_x_header_rec.org_id := to_number(FND_PROFILE.VALUE('ORG_ID'));
6634         -- <R12.MOAC> END
6635 
6636         -- Default of Transaction Phase.
6637         IF oe_code_control.get_code_release_level >= '110510' THEN
6638 
6639            IF p_x_header_rec.transaction_phase_code IS NULL THEN
6640               p_x_header_rec.transaction_phase_code :=
6641                       fnd_profile.value('ONT_DEF_BSA_TRANSACTION_PHASE');
6642               IF p_x_header_rec.transaction_phase_code IS NULL  AND
6643                  p_x_header_rec.order_type_id IS NOT NULL THEN
6644                  -- Get The Transaciton Phase from the Order Type if any.
6645                  Begin
6646                     Select  /* MOAC_SQL_CHANGE */ DEF_TRANSACTION_PHASE_CODE
6647                     INTO   p_x_header_rec.transaction_phase_code
6648                     from  oe_transaction_types_all
6649                     where TRANSACTION_TYPE_ID = p_x_header_rec.order_type_id;
6650                  Exception
6651                     when no_data_found then
6652                        null;
6653                     when OTHERS then
6654                        null;
6655                  End;
6656               END IF;
6657            END IF; -- End of Default Transaction Phase
6658 
6659            p_x_header_rec.draft_submitted_flag := 'N';
6660 
6661         END IF;  -- End of Code Level Check
6662 
6663 
6664         --ABH
6665         --default the contract template id
6666          IF OE_CODE_CONTROL.Get_Code_Release_Level >= '110510' THEN
6667             NULL;
6668             -- << place logic here  >>
6669             -- << p_x_header_rec.contract_template_id := <defaulted contract_template_id >        >>
6670             l_order_type_id := p_x_header_rec.order_type_id;
6671 
6672             IF c_contract_template_exist%ISOPEN THEN
6673                CLOSE c_contract_template_exist;
6674             END IF;
6675             OPEN c_contract_template_exist (l_order_type_id);
6676             FETCH c_contract_template_exist INTO l_deflt_contract_template_id;
6677             CLOSE c_contract_template_exist;
6678 
6679             p_x_header_rec.contract_template_id := l_deflt_contract_template_id;
6680 
6681 
6682          END IF;
6683         --ABH
6684 
6685      END IF; -- End if operation = CREATE
6686 
6687 EXCEPTION
6688      WHEN OTHERS THEN
6689      x_return_status                := FND_API.G_RET_STS_UNEXP_ERROR;
6690         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6691         THEN
6692             OE_MSG_PUB.Add_Exc_Msg
6693             (   G_PKG_NAME
6694             ,   'Default_Attributes - Header'
6695             );
6696         END IF;
6697         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6698 END Default_Attributes;
6699 
6700 PROCEDURE Default_Attributes
6701 (p_x_line_rec               IN OUT NOCOPY OE_Blanket_PUB.line_rec_type
6702 ,p_default_from_header      IN BOOLEAN
6703 ,x_return_status            OUT NOCOPY VARCHAR2
6704 ) IS
6705 l_return_status varchar2(1);
6706 --
6707 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
6708 --
6709 BEGIN
6710      x_return_status                := FND_API.G_RET_STS_SUCCESS;
6711 
6712      -- Load Header
6713      Load_Header(p_header_id => p_x_line_rec.header_id
6714                  ,x_return_status => l_return_status);
6715      IF l_return_status = FND_API.G_RET_STS_ERROR THEN
6716         RAISE FND_API.G_EXC_ERROR;
6717      ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
6718         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6719      END IF;
6720 
6721      -- Get Blanket Line
6722      IF p_x_line_rec.line_id IS NULL THEN
6723        SELECT  OE_ORDER_LINES_S.NEXTVAL
6724        INTO    p_x_line_rec.line_id
6725        FROM    DUAL;
6726      END IF;
6727 
6728      -- Get Blanket Line Number
6729      IF p_x_line_rec.line_number IS NULL THEN
6730           SELECT  NVL(MAX(line_number)+1,1)
6731           INTO    p_x_line_rec.line_number
6732           FROM    OE_BLANKET_LINES
6733           WHERE   header_id = p_x_line_rec.header_id;
6734      END IF;
6735 
6736      -- Constant Defaults
6737      IF p_x_line_rec.override_blanket_controls_flag IS NULL OR
6738         p_x_line_rec.override_blanket_controls_flag NOT IN ('Y','N') THEN
6739         p_x_line_rec.override_blanket_controls_flag := 'N';
6740      END IF;
6741 
6742      IF p_x_line_rec.override_release_controls_flag IS NULL OR
6743         p_x_line_rec.override_release_controls_flag NOT IN ('Y','N') THEN
6744         p_x_line_rec.override_release_controls_flag := 'N';
6745      END IF;
6746 
6747      IF p_x_line_rec.item_identifier_type is  NULL THEN
6748         p_x_line_rec.item_identifier_type := 'INT';
6749      END IF;
6750 
6751      IF p_x_line_rec.order_quantity_uom is NULL AND
6752         p_x_line_rec.item_identifier_type NOT IN ('ALL', 'CAT') THEN
6753           BEGIN
6754             SELECT PRIMARY_UOM_CODE
6755             INTO   p_x_line_rec.order_quantity_uom
6756             FROM   MTL_SYSTEM_ITEMS_B
6757             WHERE  INVENTORY_ITEM_ID = p_x_line_rec.inventory_item_id
6758             AND    ORGANIZATION_ID = g_header_rec.org_id;
6759           EXCEPTION
6760             WHEN NO_DATA_FOUND THEN
6761              if l_debug_level > 0 then
6762               oe_debug_pub.add('no inventory item exists for this organization');
6763              end if;
6764           END;
6765      END IF;
6766 
6767      IF p_x_line_rec.pricing_uom is NULL AND
6768         p_x_line_rec.order_quantity_uom is NOT NULL THEN
6769         p_x_line_rec.pricing_uom := p_x_line_rec.order_quantity_uom;
6770      END IF;
6771 
6772      IF p_x_line_rec.item_identifier_type = 'ALL' THEN
6773         p_x_line_rec.inventory_item_id := NULL;
6774      END IF;
6775 
6776      --Always default order_number
6777      IF p_x_line_rec.order_number IS NULL THEN
6778         p_x_line_rec.order_number:= g_header_rec.order_number;
6779      END IF;
6780 
6781   IF p_default_from_header THEN
6782 
6783      -- Default from header
6784      IF p_x_line_rec.cust_po_number IS NULL THEN
6785         p_x_line_rec.cust_po_number := g_header_rec.cust_po_number;
6786      END IF;
6787      IF p_x_line_rec.price_list_id IS NULL THEN
6788         p_x_line_rec.price_list_id := g_header_rec.price_list_id;
6789      END IF;
6790 
6791      IF p_x_line_rec.enforce_price_list_flag IS NULL OR
6792         p_x_line_rec.enforce_price_list_flag NOT IN ('Y','N') THEN
6793         p_x_line_rec.enforce_price_list_flag :=
6794                             g_header_rec.enforce_price_list_flag;
6795      END IF;
6796      IF p_x_line_rec.enforce_ship_to_flag IS NULL OR
6797         p_x_line_rec.enforce_ship_to_flag NOT IN ('Y','N') THEN
6798         p_x_line_rec.enforce_ship_to_flag :=
6799                             g_header_rec.enforce_ship_to_flag;
6800      END IF;
6801      IF p_x_line_rec.enforce_invoice_to_flag IS NULL OR
6802         p_x_line_rec.enforce_invoice_to_flag NOT IN ('Y','N') THEN
6803         p_x_line_rec.enforce_invoice_to_flag :=
6804                             g_header_rec.enforce_invoice_to_flag;
6805      END IF;
6806      IF p_x_line_rec.enforce_freight_term_flag IS NULL OR
6807         p_x_line_rec.enforce_freight_term_flag NOT IN ('Y','N') THEN
6808         p_x_line_rec.enforce_freight_term_flag :=
6809                             g_header_rec.enforce_freight_term_flag;
6810      END IF;
6811      IF p_x_line_rec.enforce_shipping_method_flag IS NULL OR
6812         p_x_line_rec.enforce_shipping_method_flag NOT IN ('Y','N') THEN
6813         p_x_line_rec.enforce_shipping_method_flag :=
6814                             g_header_rec.enforce_shipping_method_flag;
6815      END IF;
6816      IF p_x_line_rec.enforce_payment_term_flag IS NULL OR
6817         p_x_line_rec.enforce_payment_term_flag NOT IN ('Y','N') THEN
6818         p_x_line_rec.enforce_payment_term_flag :=
6819                             g_header_rec.enforce_payment_term_flag;
6820      END IF;
6821      IF p_x_line_rec.enforce_accounting_rule_flag IS NULL OR
6822         p_x_line_rec.enforce_accounting_rule_flag NOT IN ('Y','N') THEN
6823         p_x_line_rec.enforce_accounting_rule_flag :=
6824                             g_header_rec.enforce_accounting_rule_flag;
6825      END IF;
6826      IF p_x_line_rec.enforce_invoicing_rule_flag IS NULL OR
6827         p_x_line_rec.enforce_invoicing_rule_flag NOT IN ('Y','N') THEN
6828         p_x_line_rec.enforce_invoicing_rule_flag :=
6829                             g_header_rec.enforce_invoicing_rule_flag;
6830      END IF;
6831      IF p_x_line_rec.ship_from_org_id IS NULL THEN
6832         p_x_line_rec.ship_from_org_id := g_header_rec.ship_from_org_id;
6833      END IF;
6834      --sold to org is defaulted for org validations (ship to, deliver to, bill to)
6835      IF p_x_line_rec.sold_to_org_id IS NULL THEN
6836         p_x_line_rec.sold_to_org_id := g_header_rec.sold_to_org_id;
6837      END IF;
6838      IF p_x_line_rec.ship_to_org_id IS NULL THEN
6839         p_x_line_rec.ship_to_org_id := g_header_rec.ship_to_org_id;
6840      END IF;
6841      IF p_x_line_rec.invoice_to_org_id IS NULL THEN
6842         p_x_line_rec.invoice_to_org_id := g_header_rec.invoice_to_org_id;
6843      END IF;
6844      IF p_x_line_rec.deliver_to_org_id IS NULL THEN
6845         p_x_line_rec.deliver_to_org_id := g_header_rec.deliver_to_org_id;
6846      END IF;
6847      IF p_x_line_rec.payment_term_id IS NULL THEN
6848         p_x_line_rec.payment_term_id := g_header_rec.payment_term_id;
6849      END IF;
6850      IF p_x_line_rec.invoicing_rule_id IS NULL THEN
6851         p_x_line_rec.invoicing_rule_id := g_header_rec.invoicing_rule_id;
6852      END IF;
6853      IF p_x_line_rec.shipping_method_code IS NULL THEN
6854         p_x_line_rec.shipping_method_code := g_header_rec.shipping_method_code;
6855      END IF;
6856      IF p_x_line_rec.accounting_rule_id IS NULL THEN
6857         p_x_line_rec.accounting_rule_id := g_header_rec.accounting_rule_id;
6858      END IF;
6859      IF p_x_line_rec.shipping_instructions IS NULL THEN
6860         p_x_line_rec.shipping_instructions :=
6861                      g_header_rec.shipping_instructions;
6862      END IF;
6863      IF p_x_line_rec.packing_instructions IS NULL THEN
6864         p_x_line_rec.packing_instructions := g_header_rec.packing_instructions;
6865      END IF;
6866      IF p_x_line_rec.freight_terms_code IS NULL THEN
6867         p_x_line_rec.freight_terms_code := g_header_rec.freight_terms_code;
6868      END IF;
6869      IF p_x_line_rec.salesrep_id IS NULL THEN
6870         p_x_line_rec.salesrep_id := g_header_rec.salesrep_id;
6871      END IF;
6872      IF p_x_line_rec.start_date_active IS NULL THEN
6873         p_x_line_rec.start_date_active := g_header_rec.start_date_active;
6874      END IF;
6875      IF p_x_line_rec.end_date_active IS NULL THEN
6876         p_x_line_rec.end_date_active := g_header_rec.end_date_active;
6877      END IF;
6878      -- Start of Transaction Phase changes for 11i10.
6879      IF p_x_line_rec.Transaction_Phase_code IS NULL THEN
6880         p_x_line_rec.Transaction_Phase_code := g_header_rec.Transaction_Phase_code;
6881      END IF;
6882      -- End of Transaction Phase changes.
6883      -- 11i10 Pricing Changes Start
6884      IF p_x_line_rec.discount_percent IS NULL THEN
6885         p_x_line_rec.discount_percent := g_header_rec.default_discount_percent;
6886      END IF;
6887      IF p_x_line_rec.discount_amount IS NULL THEN
6888         p_x_line_rec.discount_amount := g_header_rec.default_discount_amount;
6889      END IF;
6890      -- 11i10 Pricing Changes End
6891    END IF; --if default from header
6892 
6893      -- WHO columns
6894      IF p_x_line_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
6895         p_x_line_rec.creation_Date := sysdate;
6896         p_x_line_rec.created_by := FND_GLOBAL.USER_ID;
6897      END IF;
6898      p_x_line_rec.last_update_date := sysdate;
6899      p_x_line_rec.last_updated_by := FND_GLOBAL.USER_ID;
6900 
6901 EXCEPTION
6902      WHEN FND_API.G_EXC_ERROR THEN
6903         x_return_status := FND_API.G_RET_STS_ERROR;
6904      WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6905         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6906      WHEN OTHERS THEN
6907         x_return_status                := FND_API.G_RET_STS_UNEXP_ERROR;
6908         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6909         THEN
6910             OE_MSG_PUB.Add_Exc_Msg
6911             (   G_PKG_NAME
6912             ,   'Default_Attributes - Line'
6913             );
6914         END IF;
6915         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6916 END Default_Attributes;
6917 
6918 PROCEDURE Load_Header(p_header_id IN NUMBER
6919 , x_return_status OUT NOCOPY VARCHAR2)
6920 IS
6921 l_return_status varchar2(1);
6922 --
6923 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
6924 --
6925 BEGIN
6926 	IF g_header_rec.header_id is NULL
6927            OR g_header_rec.header_id <> p_header_id
6928         THEN
6929 		Query_Header(p_header_id => p_header_id,
6930 			     x_header_rec => g_header_rec,
6931                              x_return_status => l_return_status);
6932               IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6933                  x_return_status := l_return_status;
6934               END IF;
6935 
6936         END IF;
6937 EXCEPTION
6938      WHEN OTHERS THEN
6939         x_return_status                := FND_API.G_RET_STS_UNEXP_ERROR;
6940 
6941         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6942         THEN
6943             OE_MSG_PUB.Add_Exc_Msg
6944             (   G_PKG_NAME
6945             ,   'Load Header'
6946             );
6947         END IF;
6948         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6949 END Load_Header;
6950 
6951 PROCEDURE GET_ORDER_NUMBER(
6952           p_x_header_rec     IN OUT NOCOPY OE_Blanket_PUB.Header_rec_type,
6953 	  x_return_status    OUT NOCOPY varchar2)
6954 IS
6955 
6956 	l_order_number    		VARCHAR2(30):= NULL;
6957 	x_doc_sequence_value     	NUMBER;
6958 	x_doc_category_code      	VARCHAR(30);
6959 	X_doc_sequence_id       	NUMBER;
6960 	X_db_sequence_name      	VARCHAR2(50);
6961 	x_doc_sequence_type 		CHAR(1);
6962 	X_doc_sequence_name 		VARCHAR2(240);
6963 	X_Prd_Tbl_Name			VARCHAR2(240) ;
6964 	X_Aud_Tbl_Name 			VARCHAR2(240);
6965 	X_Msg_Flag 			VARCHAR2(240);
6966 	X_set_Of_Books_id       	NUMBER;
6967 	seqassid                	INTEGER;
6968 	l_ord_num_src_id    		NUMBER	:= NULL;
6969 	l_order_number_csr  		INTEGER;
6970 	l_result	  		INTEGER;
6971 	l_select_stmt	   	 	VARCHAR2(240);
6972 	l_column_name	    		VARCHAR2(80);
6973 	t 		   		VARCHAR2(240);
6974 	l_return_status	    		VARCHAR2(30);
6975 	X_trx_date         		DATE;
6976 	lcount 				NUMBER;
6977 	x_result 			NUMBER;
6978 
6979 --
6980 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
6981 --
6982 BEGIN
6983    if l_debug_level > 0 then
6984 	oe_debug_pub.add('Entering OR_BLANKET_UTIL.Get_Order_Number',1);
6985    end if;
6986 
6987 	--x_header_rec := p_header_rec;
6988 	 x_return_status     := FND_API.G_RET_STS_SUCCESS;
6989 
6990 	x_Set_Of_Books_Id := OE_Sys_Parameters.VALUE('SET_OF_BOOKS_ID');
6991 
6992     	IF p_x_header_rec.order_type_id IS NOT NULL THEN
6993 		x_doc_category_code := p_x_header_rec.order_type_id;
6994 
6995    if l_debug_level > 0 then
6996     	oe_debug_pub.ADD('before calling get_seq_info ', 2);
6997  	oe_debug_pub.ADD('Category Code'||x_doc_category_code, 3);
6998     	oe_debug_pub.ADD('Set of Books'||x_set_of_books_id, 3);
6999    end if;
7000         x_result :=   fnd_seqnum.get_seq_info(
7001                                              660,
7002                                              x_doc_category_code,
7003                                              x_set_of_books_id,
7004                                              null,
7005                                              sysdate,
7006                                              X_doc_sequence_id,
7007 					     x_doc_sequence_type,
7008 					     x_doc_sequence_name,
7009                                              X_db_sequence_name,
7010         				     seqassid,
7011 					     X_Prd_Tbl_Name,
7012 					     X_Aud_Tbl_Name,
7013 					     X_Msg_Flag
7014 					 );
7015 
7016    if l_debug_level > 0 then
7017     	oe_debug_pub.ADD('after calling get_seq_info ', 2);
7018    end if;
7019 
7020    		IF x_result <>  FND_SEQNUM.SEQSUCC   THEN
7021     		IF x_result = FND_SEQNUM.NOTUSED THEN
7022     			fnd_message.set_name('ONT','OE_MISS_DOC_SEQ');
7023     			OE_MSG_PUB.Add;
7024     			RAISE FND_API.G_EXC_ERROR;
7025     		END IF;
7026 
7027    		END IF;
7028 		t := x_doc_sequence_type;
7029 
7030     	  IF ( t = 'A')  THEN --automatic numbering
7031 
7032 
7033              X_result := fnd_seqnum.get_seq_val(
7034                                                 660,
7035                                                 x_doc_category_code,
7036                                                 x_set_of_books_id,
7037                                                 null,
7038                                                 sysdate,
7039                                                 x_doc_sequence_value,
7040                                                 X_doc_sequence_id,
7041 					        'Y',
7042 					        'Y');
7043    			IF x_result <>  0   THEN
7044     			RAISE FND_API.G_EXC_ERROR;
7045    			END IF;
7046 
7047    if l_debug_level > 0 then
7048     		oe_debug_pub.ADD('fndseqresult'||to_char(x_result), 2);
7049     		oe_debug_pub.ADD('fndseqtype'||x_doc_sequence_value, 2);
7050    end if;
7051     		p_x_header_rec.order_number :=  x_doc_sequence_value;
7052    		--ELSIF (t = 'M') THEN
7053 	  ELSE
7054                 SELECT meaning
7055                 INTO l_column_name
7056                 FROM fnd_lookups
7057                 WHERE lookup_type = 'SEQUENCE_METHOD'
7058                 AND lookup_code = t;
7059 	 		fnd_message.set_name('ONT','OE_BLKT_INVALID_DOC_SEQ');
7060                         fnd_message.set_token('Document Sequence', l_column_name);
7061           	  	OE_MSG_PUB.Add;
7062 
7063 	 		RAISE FND_API.G_EXC_ERROR;
7064 	--	x_doc_sequence_value := p_x_header_rec.order_number;
7065 	--   	     	NULL;
7066    	  END IF;
7067 
7068 		Select Count(header_id) into
7069 		lcount  From
7070 		OE_BLANKET_HEADERS_ALL
7071 		WHERE order_number =  X_doc_sequence_value;
7072 
7073 		IF  lcount > 0 THEN
7074 	 		fnd_message.set_name('ONT','OE_BLKT_NUM_EXISTS');
7075        	  	OE_MSG_PUB.Add;
7076 	 		RAISE FND_API.G_EXC_ERROR;
7077 		END IF;
7078 	END IF; -- Blanket category code not null
7079 
7080    if l_debug_level > 0 then
7081 	oe_debug_pub.add('Exiting OR_BLANKET_UTIL.Get_Order_Number',1);
7082    end if;
7083 
7084 EXCEPTION
7085     WHEN FND_API.G_EXC_ERROR THEN
7086 	 x_return_status     := FND_API.G_RET_STS_ERROR;
7087    if l_debug_level > 0 then
7088     oe_debug_pub.ADD('Get blanket Number-Exp exception ', 1);
7089    end if;
7090      RAISE FND_API.G_EXC_ERROR;
7091 
7092 
7093     WHEN OTHERS THEN
7094    if l_debug_level > 0 then
7095     oe_debug_pub.ADD('Get blanket Number-exception ', 1);
7096    end if;
7097 
7098 	 x_return_status     := FND_API.G_RET_STS_UNEXP_ERROR;
7099 
7100     	IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7101 	THEN
7102     	    OE_MSG_PUB.Add_Exc_Msg
7103     	    (	G_PKG_NAME  	    ,
7104     	        'Get_Order_Number'
7105 	    );
7106     	END IF;
7107 
7108 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7109 
7110 END Get_Order_Number;
7111 
7112 PROCEDURE Process_Object(x_return_status OUT NOCOPY VARCHAR2) IS
7113 l_valid varchar2(1);
7114 lcount number ;
7115 I number;
7116 l_return_status varchar2(1);
7117 --
7118 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
7119 --
7120 
7121 lx_return_status         VARCHAR2(1)           := FND_API.G_RET_STS_SUCCESS;
7122 lx_msg_count             NUMBER                := 0;
7123 lx_msg_data              VARCHAR2(2000);
7124 
7125 
7126 BEGIN
7127 
7128    x_return_status := FND_API.G_RET_STS_SUCCESS;
7129 
7130 -- Process Header requests
7131 
7132        OE_DELAYED_REQUESTS_PVT.Process_Request_for_Entity
7133           (p_entity_code   => OE_BLANKET_PUB.G_ENTITY_BLANKET_HEADER
7134           ,p_delete        => FND_API.G_TRUE
7135           ,x_return_status => l_return_status
7136           );
7137        IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7138                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7139        ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
7140                  RAISE FND_API.G_EXC_ERROR;
7141        END IF;
7142 
7143 -- Process Line Level Request
7144 
7145        OE_DELAYED_REQUESTS_PVT.Process_Request_for_Entity
7146           (p_entity_code   => OE_BLANKET_PUB.G_ENTITY_BLANKET_LINE
7147           ,p_delete        => FND_API.G_TRUE
7148           ,x_return_status => l_return_status
7149           );
7150        IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7151                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7152        ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
7153                  RAISE FND_API.G_EXC_ERROR;
7154        END IF;
7155 
7156 
7157      IF oe_code_control.get_code_release_level >= '110510' and
7158           G_Header_Rec.operation = OE_GLOBALS.G_OPR_CREATE  THEN
7159                    oe_debug_pub.ADD('Create and Start Flow srini : '||G_Header_Rec.operation) ;
7160                         oe_blanket_wf_util.create_and_start_flow(
7161                                             p_header_id => G_header_rec.header_id,
7162                                             p_transaction_phase_code => G_header_rec.transaction_phase_code,
7163                                             p_blanket_number => G_header_rec.order_number,
7164                                             x_return_status => l_return_status,
7165                                             x_msg_count     => lx_msg_count,
7166                                             x_msg_data      => lx_msg_Data);
7167              IF lx_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7168                  if l_debug_level > 0 then
7169                    oe_debug_pub.ADD('OE_Blanket_Util.Process_Object unexp error in  Create and Start flow ', 1);
7170                  end if;
7171                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7172              ELSIF lx_return_status = FND_API.G_RET_STS_ERROR THEN
7173                  if l_debug_level > 0 then
7174                    oe_debug_pub.ADD('OE_Blanket_Util.Process_Object exc error in Create and Start Flow ', 1);
7175                  end if;
7176                  RAISE FND_API.G_EXC_ERROR;
7177              END IF;
7178 
7179      end if;
7180 
7181 -- moved instantiate call after create_and_start_flow procedure for bug 3691452
7182 
7183 -- Instantiate the contract template id against the BSA if new record      --ABH
7184      IF G_Header_Rec.operation = OE_GLOBALS.G_OPR_CREATE AND
7185         OE_CODE_CONTROL.Get_Code_Release_Level >= '110510'
7186         -- Do not instantiate for copied orders
7187         AND nvl(g_header_rec.source_document_type_id,-1) <> 2
7188      THEN
7189 
7190         OE_CONTRACTS_UTIL.instantiate_doc_terms (
7191              p_api_version         =>  1.0,
7192              p_commit              => FND_API.G_TRUE,
7193 
7194              p_template_id         => G_Header_Rec.contract_template_id,
7195              p_doc_type            => 'B',
7196              p_doc_id              => G_Header_Rec.header_id,
7197              p_doc_start_date      => G_Header_Rec.start_date_active,
7198              p_doc_number          => G_Header_Rec.order_number,
7199 
7200              x_return_status       => lx_return_status,
7201              x_msg_count           => lx_msg_count,
7202              x_msg_data            => lx_msg_data
7203         );
7204 
7205        IF lx_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7206                  if l_debug_level > 0 then
7207                    oe_debug_pub.ADD('OE_Blanket_Util.Process_Object unexp error in inst. doc terms ', 1);
7208                  end if;
7209                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7210        ELSIF lx_return_status = FND_API.G_RET_STS_ERROR THEN
7211                  if l_debug_level > 0 then
7212                    oe_debug_pub.ADD('OE_Blanket_Util.Process_Object exc error in inst. doc terms ', 1);
7213                  end if;
7214                  RAISE FND_API.G_EXC_ERROR;
7215        END IF;
7216 
7217      END IF;
7218 
7219      IF OE_CODE_CONTROL.Code_Release_Level >= '110510' AND
7220         OE_GLOBALS.G_ROLL_VERSION <> 'N' AND
7221         Not OE_GLOBALS.Equal(G_Header_Rec.operation, OE_GLOBALS.G_OPR_CREATE) THEN
7222            OE_Versioning_Util.Perform_Versioning(p_header_id => g_header_rec.header_id,
7223                                    p_document_type => 'BLANKETS',
7224                                    x_msg_count => lx_msg_count,
7225                                    x_msg_data => lx_msg_data,
7226                                    x_return_status => l_return_status);
7227 
7228        IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7229                  if l_debug_level > 0 then
7230                    oe_debug_pub.ADD('OE_Blanket_Util.Process_Object unexp error in perform versioning ', 1);
7231                  end if;
7232                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7233        ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
7234                  if l_debug_level > 0 then
7235                    oe_debug_pub.ADD('OE_Blanket_Util.Process_Object exc error in perform versioning ', 1);
7236                  end if;
7237                  RAISE FND_API.G_EXC_ERROR;
7238        END IF;
7239 
7240              OE_Contracts_Util.Version_Articles(p_api_version => 1.0,
7241                           p_doc_type => OE_Contracts_Util.G_BSA_DOC_TYPE,
7242                           p_doc_id => g_old_header_hist_rec.header_id,
7243                           p_version_number => g_old_header_hist_rec.version_number,
7244                           x_return_status => lx_return_status,
7245                           x_msg_data => lx_msg_data,
7246                           x_msg_count => lx_msg_count);
7247 
7248 
7249        IF lx_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7250                  if l_debug_level > 0 then
7251                    oe_debug_pub.ADD('OE_Blanket_Util.Process_Object unexp error in perform versioning ', 1);
7252                  end if;
7253                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7254        ELSIF lx_return_status = FND_API.G_RET_STS_ERROR THEN
7255                  if l_debug_level > 0 then
7256                    oe_debug_pub.ADD('OE_Blanket_Util.Process_Object exc error in perform versioning ', 1);
7257                  end if;
7258                  RAISE FND_API.G_EXC_ERROR;
7259        END IF;
7260 
7261      END IF;
7262 
7263      g_old_version_captured := FALSE;
7264      G_Header_Rec.operation := OE_GLOBALS.G_OPR_NONE;
7265 
7266 EXCEPTION
7267 
7268     WHEN FND_API.G_EXC_ERROR THEN
7269      OE_Delayed_Requests_PVT.Clear_Request(lx_return_status); --bug 4691643
7270       x_return_status := FND_API.G_RET_STS_ERROR;
7271 
7272     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7273     OE_Delayed_Requests_PVT.Clear_Request(lx_return_status); --bug 4691643
7274       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7275 
7276     WHEN OTHERS THEN
7277     OE_Delayed_Requests_PVT.Clear_Request(lx_return_status); --bug 4691643
7278       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7279 
7280       IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7281       THEN
7282         OE_MSG_PUB.Add_Exc_Msg
7283         (   G_PKG_NAME
7284            ,'Process Object'
7285          );
7286       END IF;
7287 
7288 END Process_Object;
7289 
7290 PROCEDURE VALIDATE_LINE_NUMBER
7291 (p_req_ind                IN NUMBER
7292 ,x_return_status          OUT NOCOPY VARCHAR2
7293 )
7294 IS
7295 l_valid varchar2(1);
7296 --
7297 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
7298 --
7299 BEGIN
7300       x_return_status := FND_API.G_RET_STS_SUCCESS;
7301 
7302   IF oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).param2 < 1 THEN
7303       l_valid := 'N';
7304   ELSE
7305 	BEGIN
7306            SELECT 'N'
7307            INTO   l_valid
7308            FROM   oe_blanket_lines L
7309            WHERE  L.line_number =
7310 		oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).param2
7311            AND    L.header_id =
7312 		 oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).param1
7313            AND    L.line_id <>
7314 	 oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).entity_id;
7315 
7316           EXCEPTION
7317                 WHEN no_data_found THEN
7318                    l_valid := 'Y';
7319                 WHEN too_many_rows THEN
7320                    l_valid := 'N';
7321 	END;
7322 
7323   END IF;
7324 	  IF l_valid = 'N' THEN
7325                 FND_MESSAGE.SET_NAME('ONT','OE_BLKT_LINE_NUMBER_EXISTS');
7326                 OE_MSG_PUB.ADD;
7327                 RAISE FND_API.G_EXC_ERROR;
7328           END IF;
7329 
7330 EXCEPTION
7331 
7332     WHEN FND_API.G_EXC_ERROR THEN
7333    if l_debug_level > 0 then
7334     oe_debug_pub.ADD('Validate line Number-Exp exception ', 1);
7335    end if;
7336       x_return_status := FND_API.G_RET_STS_ERROR;
7337      RAISE FND_API.G_EXC_ERROR;
7338 
7339 
7340     WHEN OTHERS THEN
7341    if l_debug_level > 0 then
7342     oe_debug_pub.ADD('Validate line Number-exception ', 1);
7343    end if;
7344 
7345       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7346         IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7347         THEN
7348             OE_MSG_PUB.Add_Exc_Msg
7349             (   G_PKG_NAME          ,
7350                 'Validate Line NUmber'
7351             );
7352         END IF;
7353 
7354         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7355 
7356 END VALIDATE_LINE_NUMBER;
7357 
7358 PROCEDURE VALIDATE_ITEM_UNIQUENESS
7359 (p_req_ind             IN NUMBER
7360 ,x_return_status       OUT NOCOPY VARCHAR2
7361 )
7362 IS
7363 l_valid varchar2(1);
7364 lcount number;
7365 
7366   l_line_id               NUMBER;
7367   l_header_id             NUMBER;
7368   l_item_id               NUMBER;
7369   l_item_identifier_type  VARCHAR2(30);
7370   l_start_date_active     DATE;
7371   l_end_date_active       DATE;
7372   l_ordered_item_id       NUMBER; --bug6826787
7373   l_ordered_item          VARCHAR2(2000);--bug6826787
7374 
7375 
7376 --
7377 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
7378 --
7379 BEGIN
7380 
7381    x_return_status := FND_API.G_RET_STS_SUCCESS;
7382 
7383    l_line_id :=
7384      oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).entity_id;
7385    l_item_id :=
7386      oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).param1;
7387    l_header_id :=
7388      oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).param2;
7389    l_item_identifier_type :=
7390      oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).param3;
7391 
7392    l_ordered_item_id :=
7393      oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).param4;
7394 
7395    l_ordered_item :=
7396     oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).param5;
7397 
7398 
7399 
7400    l_start_date_active :=
7401      oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).date_param1;
7402    l_end_date_active :=
7403      oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).date_param2;
7404 
7405    if l_debug_level > 0 then
7406      oe_debug_pub.add('In validate Item Uniqueness');
7407      oe_debug_pub.add('item identifier type :'|| l_item_identifier_type);
7408      oe_debug_pub.add('inventory item id :'|| l_item_id);
7409      oe_debug_pub.add('header id :'|| l_header_id);
7410      oe_debug_pub.add('line id :'|| l_line_id);
7411      oe_debug_pub.add('start date :'|| l_start_date_active);
7412      oe_debug_pub.add('end date :'|| l_end_date_active);
7413     end if;
7414 
7415      --modified the following sql to check for uiqueness of
7416    -- (inventory_item_id,item_idenitfier_type,ordered_item_id) for bug6826787
7417 
7418     select count(1) into lcount
7419     from OE_BLANKET_LINES L, OE_BLANKET_LINES_EXT LX
7420     where L.line_id = LX.line_id
7421       AND L.header_id = l_header_id
7422       AND L.line_id <> l_line_id
7423       AND ( ( l_item_identifier_type NOT IN ('ALL','CAT')
7424               AND L.item_identifier_type NOT IN ('ALL','CAT')
7425              )
7426            OR (L.item_identifier_type = l_item_identifier_type)
7427           )
7428       AND nvl(L.inventory_item_id,-1) = nvl(l_item_id,-1)
7429       AND L.item_identifier_type = l_item_identifier_type
7430       AND  NVL( to_char(L.ordered_item_id),
7431                 decode (L.item_identifier_type,'INT', to_char(NVL(L.inventory_item_id,-1)),
7432 		                               'ALL', to_char(NVL(L.inventory_item_id,-1)),
7433 					       'CAT', to_char(NVL(L.inventory_item_id,-1)),
7434 					       'CUST', to_char(NVL(L.ordered_item_id, NVL(L.inventory_item_id,-1) )),
7435 					        NVL(L.Ordered_item,'XXXX') ) ) = decode ( l_item_identifier_type , 'INT', to_char(nvl(l_item_id,-1))
7436 														 , 'ALL',  to_char(nvl(l_item_id,-1))
7437 														 , 'CAT' , to_char(nvl(l_item_id,-1))
7438 														 , 'CUST', to_char(nvl(l_ordered_item_id,-1))
7439 														 ,  to_char(nvl(l_ordered_item,'XXXX') ))
7440       AND (  (l_end_date_active IS NULL
7441               -- Duplicate blanket line date cannot be effective
7442               -- beyond the start date of this blanket line
7443               AND l_start_date_active <=
7444                     nvl(LX.end_date_active,l_start_date_active)
7445              )
7446           OR (l_end_date_active IS NOT NULL
7447               -- Dates for this line cannot be between effectivity dates
7448               -- for duplicate blanket line
7449               AND (l_end_date_active BETWEEN
7450                     LX.start_date_active AND
7451                     nvl(LX.end_date_active,l_end_date_active + 1)
7452                   OR l_start_date_active BETWEEN
7453                     LX.start_date_active AND
7454                     nvl(LX.end_date_active,l_end_date_active + 1)
7455                   )
7456              )
7457           );
7458 
7459       if (lcount > 0) then
7460           -- ERROR: date overlap problem.  Show error and
7461           FND_MESSAGE.SET_NAME('ONT','OE_BLKT_UNIQUE_ITEM_VIOLATION');
7462           OE_MSG_PUB.ADD;
7463           RAISE FND_API.G_EXC_ERROR;
7464       end if;
7465 
7466 EXCEPTION
7467    WHEN FND_API.G_EXC_ERROR THEN
7468    if l_debug_level > 0 then
7469     oe_debug_pub.ADD('Validate item uniqr-Exp exception ', 1);
7470    end if;
7471       x_return_status := FND_API.G_RET_STS_ERROR;
7472       RAISE FND_API.G_EXC_ERROR;
7473    WHEN OTHERS THEN
7474    if l_debug_level > 0 then
7475     oe_debug_pub.ADD('Validate item uniqueness-exception ', 1);
7476    end if;
7477       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7478       IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7479       THEN
7480             OE_MSG_PUB.Add_Exc_Msg
7481             (   G_PKG_NAME          ,
7482                 'Validate item uniqueness'
7483             );
7484       END IF;
7485 END VALIDATE_ITEM_UNIQUENESS;
7486 
7487 
7488 FUNCTION IS_BLANKET_PRICE_LIST(p_price_list_id NUMBER
7489                                -- 11i10 Pricing Change
7490                                ,p_blanket_header_id NUMBER DEFAULT NULL)
7491 RETURN BOOLEAN IS
7492 l_dummy VARCHAR2(30);
7493 l_result   BOOLEAN;
7494 --
7495 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
7496 --
7497 BEGIN
7498 
7499      -- 11i10 pricing change - source code is BSO in 11i10.
7500      -- Select from qp tables with source as blanket
7501      -- if exist then return true otherwise false
7502 
7503      IF OE_Code_Control.Get_Code_Release_Level < '110510' THEN
7504 
7505         SELECT 'VALID'
7506         INTO l_dummy
7507         FROM QP_LIST_HEADERS
7508         WHERE LIST_HEADER_ID = p_price_list_id
7509         AND LIST_SOURCE_CODE = 'BLKT';
7510 
7511      ELSE
7512 
7513         l_result := OE_Blanket_Pricing_Util.Is_Blanket_Price_List
7514                 (p_price_list_id            => p_price_list_id
7515                 ,p_blanket_header_id        => p_blanket_header_id
7516                 );
7517 
7518         RETURN l_result;
7519 
7520 /*
7521         SELECT 'VALID'
7522         INTO l_dummy
7523         FROM QP_LIST_HEADERS
7524         WHERE LIST_HEADER_ID = p_price_list_id
7525         AND LIST_SOURCE_CODE = 'BSO'
7526         AND orig_system_header_ref = p_blanket_header_id
7527         ;
7528 */
7529 
7530      END IF;
7531 
7532         RETURN TRUE;
7533 
7534 EXCEPTION
7535 WHEN NO_DATA_FOUND THEN
7536    if l_debug_level > 0 then
7537      oe_debug_pub.ADD('Not a blanket price list', 1);
7538    end if;
7539      RETURN FALSE;
7540 
7541 END IS_BLANKET_PRICE_LIST;
7542 
7543 PROCEDURE RECORD_BLANKET_HISTORY
7544           (p_version_flag in varchar2 := null,
7545            p_phase_change_flag in varchar2 := null,
7546            x_return_status        OUT NOCOPY VARCHAR2
7547           )
7548 IS
7549    l_return_status            VARCHAR2(1);
7550    l_new_version_number       NUMBER;
7551 --
7552 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
7553 --
7554 BEGIN
7555    if l_debug_level > 0 then
7556      oe_debug_pub.ADD('Entering Record_Blanket_History from delayed req', 1);
7557    end if;
7558 
7559       x_return_status := FND_API.G_RET_STS_SUCCESS;
7560 
7561   SELECT  /* MOAC_SQL_CHANGE */ version_number
7562     INTO l_new_version_number
7563     FROM oe_blanket_headers_all
7564    WHERE header_id = g_old_header_hist_rec.header_id;
7565 
7566   if l_debug_level > 0 then
7567      oe_debug_pub.ADD('old versn :'||g_old_header_hist_rec.version_number);
7568      oe_debug_pub.ADD('new versn :'||l_new_version_number);
7569   end if;
7570 
7571   -- This check is needed as user could change version number multiple times
7572   -- but in the end, latest version number could be same as the old version
7573   -- number. If that occurs, we need not record history.
7574 
7575   -- For 11i10, version update occurs after history is inserted
7576   IF OE_CODE_CONTROL.Code_Release_Level < '110510' AND
7577      l_new_version_number <= g_old_header_hist_rec.version_number THEN
7578      RETURN;
7579   END IF;
7580 
7581   Insert_History_Records
7582       (p_header_rec             => g_old_header_hist_rec
7583       ,p_line_tbl               => g_old_line_hist_tbl
7584       ,p_version_flag             => p_version_flag
7585       ,p_phase_change_flag        => p_phase_change_flag
7586       ,x_return_status          => l_return_status);
7587 
7588   IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7589     x_return_status := l_return_status;
7590   END IF;
7591 
7592 EXCEPTION
7593     WHEN OTHERS THEN
7594    if l_debug_level > 0 then
7595     oe_debug_pub.ADD('Record Blanket History Exception ', 1);
7596    end if;
7597 
7598       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7599 
7600         IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7601         THEN
7602             OE_MSG_PUB.Add_Exc_Msg
7603             (   G_PKG_NAME          ,
7604                 'Record Blanket History'
7605             );
7606 	END IF;
7607         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7608 
7609 END RECORD_BLANKET_HISTORY;
7610 
7611 PROCEDURE Copy_Blanket (p_header_id IN NUMBER,
7612                         p_version_number IN NUMBER,
7613                         x_header_id OUT NOCOPY NUMBER,
7614                         x_return_status OUT NOCOPY VARCHAR2,
7615                         x_msg_count OUT NOCOPY NUMBER,
7616                         x_msg_data  OUT NOCOPY VARCHAR2)
7617 IS
7618 
7619 l_header_rec  OE_Blanket_Pub.header_rec_type;
7620 l_line_tbl    OE_Blanket_Pub.line_tbl_type;
7621 l_control_rec OE_Blanket_Pub.control_rec_type;
7622 x_header_rec  OE_Blanket_Pub.header_rec_type;
7623 x_line_tbl    OE_Blanket_Pub.line_tbl_type;
7624 l_return_status VARCHAR2(1);
7625 l_header_id   NUMBER;
7626 l_count       NUMBER;
7627 --
7628 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
7629 --
7630 BEGIN
7631 
7632    if l_debug_level > 0 then
7633     oe_debug_pub.ADD('Entering Copy_blanket ', 1);
7634    end if;
7635 
7636     OE_MSG_PUB.initialize;
7637 
7638   SAVEPOINT Copy_Blanket;
7639 
7640     OE_MSG_PUB.set_msg_context(
7641 	 p_entity_code			=> 'BLANKET_HEADER'
7642   	,p_entity_id         		=> p_header_id
7643     	,p_header_id         		=> p_header_id
7644     	,p_line_id           		=> null
7645     	,p_orig_sys_document_ref	=> null
7646     	,p_orig_sys_document_line_ref	=> null
7647         ,p_change_sequence              => null
7648     	,p_source_document_id		=> null
7649     	,p_source_document_line_id	=> null
7650 	,p_order_source_id            => null
7651 	,p_source_document_type_id    => null);
7652 
7653   x_return_status := FND_API.G_RET_STS_SUCCESS;
7654 
7655   -- Set message context
7656 
7657   -- Step One: Populate header record and line table with desired
7658   -- attributes. Refer Blankets HLD for specific attributes to be copied.
7659 
7660   Query_Blanket(p_header_id => p_header_id
7661                , p_version_number => p_version_number
7662                ,p_x_header_rec        => l_header_rec
7663                ,p_x_line_tbl          => l_line_tbl
7664                ,x_return_status       => x_return_status);
7665 
7666   -- Prepare control record
7667   l_control_rec.UI_CALL := FALSE;
7668   l_control_rec.validate_attributes := TRUE;
7669   l_control_rec.validate_entity := TRUE;
7670   l_control_rec.check_security := TRUE;
7671 
7672   -- Prepare attributes for new blanket
7673   l_header_rec.source_document_type_id := 2; --Copy source
7674   l_header_rec.source_document_id := l_header_rec.header_id;
7675   l_header_rec.source_document_version_number := l_header_rec.version_number;
7676 
7677     -- Pre-default header_id for proper message display
7678     SELECT OE_ORDER_HEADERS_S.NEXTVAL
7679     INTO l_header_rec.header_id
7680     FROM DUAL;
7681 
7682   l_header_rec.order_number := NULL;
7683   l_header_rec.version_number := 0;
7684   l_header_rec.operation := oe_globals.g_opr_create;
7685   --l_header_rec.start_date_active := trunc(SYSDATE);
7686   --l_header_rec.end_date_active := NULL;
7687   l_header_rec.revision_change_date := NULL;
7688   l_header_rec.revision_change_reason_code := NULL;
7689   l_header_rec.revision_change_comments := NULL;
7690   l_header_rec.released_amount := NULL;
7691   l_header_rec.returned_amount := NULL;
7692   l_header_rec.fulfilled_amount := NULL;
7693 
7694   l_header_rec.sales_document_name := null;
7695   --clear out NOCOPY /* file.sql.39 change */ signature columns here
7696   l_header_rec.customer_signature := null;
7697   l_header_rec.customer_signature_date := null;
7698   l_header_rec.supplier_signature := null;
7699   l_header_rec.supplier_signature_date := null;
7700   l_header_rec.transaction_phase_code := null;
7701   l_header_rec.user_status_code := null;
7702   l_header_rec.flow_status_code := null;
7703   l_header_rec.draft_submitted_flag := null;
7704 
7705   --Null out NOCOPY /* file.sql.39 change */ price list if it's a blanket price list, repeat for header and each line:
7706   -- 11i10 Pricing changes, pass header id to is_blanket_price_list
7707   If Is_Blanket_Price_List(p_price_list_id => l_header_rec.price_list_id
7708                            ,p_blanket_header_id => p_header_id) Then
7709       l_header_rec.price_list_id := NULL;
7710       l_header_rec.enforce_price_list_flag := NULL;
7711   End If;
7712   -- 11i10 Pricing Changes
7713   -- Always null out NOCOPY /* file.sql.39 change */ new price list/modifier/discount fields when copying
7714   l_header_rec.new_price_list_id := NULL;
7715   l_header_rec.new_modifier_list_id := NULL;
7716   l_header_rec.default_discount_percent := NULL;
7717   l_header_rec.default_discount_amount := NULL;
7718   l_header_rec.new_price_list_name := NULL;
7719   l_header_rec.new_modifier_list_name := NULL;
7720 
7721   FOR l_count in 1..l_line_tbl.COUNT LOOP
7722     l_line_tbl(l_count).source_document_type_id := 2; --Copy source
7723     l_line_tbl(l_count).source_document_id := l_header_rec.source_document_id;
7724     l_line_tbl(l_count).source_document_version_number := l_header_rec.source_document_version_number;
7725     l_line_tbl(l_count).source_document_line_id := l_line_tbl(l_count).line_id;
7726     l_line_tbl(l_count).header_id := l_header_rec.header_id;
7727     l_line_tbl(l_count).order_number := NULL;
7728 
7729     -- Pre-default header_id for proper message display
7730     SELECT OE_ORDER_LINES_S.NEXTVAL
7731     INTO l_line_tbl(l_count).line_id
7732     FROM DUAL;
7733 
7734     l_line_tbl(l_count).operation := oe_globals.g_opr_create;
7735     l_line_tbl(l_count).order_number := NULL;
7736     l_line_tbl(l_count).line_number := NULL;
7737     --l_line_tbl(l_count).start_date_active := NULL;
7738     --l_line_tbl(l_count).end_date_active := NULL;
7739     l_line_tbl(l_count).released_amount := NULL;
7740     l_line_tbl(l_count).released_quantity := NULL;
7741     l_line_tbl(l_count).returned_amount := NULL;
7742     l_line_tbl(l_count).returned_quantity := NULL;
7743     l_line_tbl(l_count).fulfilled_amount := NULL;
7744     l_line_tbl(l_count).fulfilled_quantity := NULL;
7745     l_line_tbl(l_count).transaction_phase_code := null;
7746 
7747     -- 11i10 Pricing changes, pass header id to is_blanket_price_list
7748     If Is_Blanket_Price_List(p_price_list_id => l_line_tbl(l_count).price_list_id,
7749                              p_blanket_header_id => p_header_id) Then
7750       l_line_tbl(l_count).price_list_id := NULL;
7751       l_line_tbl(l_count).qp_list_line_id := NULL;
7752       l_line_tbl(l_count).enforce_price_list_flag := NULL;
7753     End If;
7754     -- 11i10 Pricing Changes
7755     -- Always null out NOCOPY /* file.sql.39 change */ new modifier/discount fields when copying
7756     l_line_tbl(l_count).modifier_list_line_id := NULL;
7757     l_line_tbl(l_count).discount_percent := NULL;
7758     l_line_tbl(l_count).discount_amount := NULL;
7759   END LOOP;
7760 
7761   OE_BLANKET_PVT.Process_Blanket
7762   (   p_api_version_number            => 1.0
7763   ,   p_validation_level              => OE_GLOBALS.G_VALID_LEVEL_PARTIAL
7764   ,   x_return_status                 => x_return_status
7765   ,   x_msg_count                     => x_msg_count
7766   ,   x_msg_data                      => x_msg_data
7767   ,   p_header_rec            => l_header_rec
7768   ,   p_line_tbl              => l_line_tbl
7769   ,   p_control_rec        =>  l_control_rec
7770   ,   x_header_rec           => x_header_rec
7771   ,   x_line_tbl             => x_line_tbl
7772   );
7773 
7774   IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7775         fnd_message.set_name('ONT','OE_CPY_COPY_FAILED');
7776         OE_MSG_PUB.Add;
7777         ROLLBACK TO SAVEPOINT Copy_Blanket;
7778         RAISE FND_API.G_EXC_ERROR;
7779   END IF;
7780 
7781   -- copy articles
7782   OE_Contracts_Util.copy_articles(p_api_version => 1.0,
7783                       p_doc_type => 'B',
7784                       p_copy_from_doc_id => p_header_id,
7785                       p_version_number => p_version_number,
7786                       p_copy_to_doc_id => x_header_rec.header_id,
7787                       p_copy_to_doc_number => x_header_rec.order_number,
7788                       x_return_status => l_return_status,
7789                       x_msg_count => x_msg_count,
7790                       x_msg_data => x_msg_data
7791                       );
7792 
7793 
7794   IF NOT OE_GLOBALS.EQUAL(l_return_status, FND_API.G_RET_STS_SUCCESS) THEN
7795       x_return_status := nvl(l_return_status, x_return_status);
7796   END IF;
7797 
7798   IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7799         fnd_message.set_name('ONT','OE_CPY_COPY_FAILED');
7800         OE_MSG_PUB.Add;
7801         ROLLBACK TO SAVEPOINT Copy_Blanket;
7802         RAISE FND_API.G_EXC_ERROR;
7803   ELSE
7804     	fnd_message.set_name('ONT','OE_BL_COPY_SUCCESS');
7805         -- Bug 3337297
7806         -- Set blanket number token
7807         fnd_message.set_token('BLANKET_NUMBER',x_header_rec.order_number);
7808     	OE_MSG_PUB.Add;
7809         x_header_id := x_header_rec.header_id;
7810   END IF;
7811 
7812 
7813   --  Get message count and data
7814 
7815         OE_MSG_PUB.Count_And_Get
7816         (   p_count                       => x_msg_count
7817         ,   p_data                        => x_msg_data
7818         );
7819 
7820 EXCEPTION
7821     WHEN FND_API.G_EXC_ERROR THEN
7822          x_return_status := FND_API.G_RET_STS_ERROR;
7823 
7824     OE_MSG_PUB.Count_And_Get
7825     (   p_count                       => x_msg_count
7826     ,   p_data                        => x_msg_data
7827     );
7828 
7829     WHEN OTHERS THEN
7830    if l_debug_level > 0 then
7831     oe_debug_pub.ADD('Copy Blanket Exception ', 1);
7832    end if;
7833 
7834       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7835 
7836     OE_MSG_PUB.Count_And_Get
7837     (   p_count                       => x_msg_count
7838     ,   p_data                        => x_msg_data
7839     );
7840 
7841         IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7842         THEN
7843             OE_MSG_PUB.Add_Exc_Msg
7844             (   G_PKG_NAME          ,
7845                 'Copy Blanket'
7846             );
7847 	END IF;
7848         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7849 
7850 END Copy_Blanket;
7851 
7852 Procedure Validate_Min_Max_Range (
7853 p_min_value IN NUMBER,
7854 p_max_value IN NUMBER,
7855 p_attribute IN VARCHAR2,
7856 x_return_status IN OUT NOCOPY VARCHAR2
7857 )
7858 IS
7859 --
7860 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
7861 --
7862 BEGIN
7863 
7864 
7865   IF (p_min_value IS NOT NULL)
7866     AND (p_max_value IS NOT NULL)
7867     AND (p_min_value > p_max_value) THEN
7868        if l_debug_level > 0 then
7869           oe_debug_pub.add('Invalid min/max for attribute :'||p_attribute);
7870        end if;
7871        FND_MESSAGE.SET_NAME('ONT','OE_BLKT_INVALID_MIN_MAX_RANGE');
7872        FND_MESSAGE.SET_TOKEN('MIN', p_min_value);
7873        FND_MESSAGE.SET_TOKEN('MAX', p_max_value);
7874        OE_MSG_PUB.ADD;
7875        x_return_status := FND_API.G_RET_STS_ERROR;
7876   END IF;
7877 
7878 EXCEPTION
7879 
7880     WHEN OTHERS THEN
7881    if l_debug_level > 0 then
7882     oe_debug_pub.ADD('Validate min max range - U exeception  ', 1);
7883    end if;
7884 
7885         IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7886         THEN
7887             OE_MSG_PUB.Add_Exc_Msg
7888             (   G_PKG_NAME          ,
7889                 'Validate min max range'
7890             );
7891 	END IF;
7892         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7893 
7894 END Validate_Min_Max_Range;
7895 
7896 
7897 PROCEDURE Insert_History_Records
7898           (p_header_rec           IN OUT NOCOPY OE_Blanket_PUB.Header_Rec_Type
7899           ,p_line_tbl             IN OUT NOCOPY OE_Blanket_PUB.Line_Tbl_Type
7900           ,p_version_flag in varchar2 := null
7901           ,p_phase_change_flag in varchar2 := null
7902           ,x_return_status        IN OUT NOCOPY VARCHAR2
7903 )
7904 IS
7905     l_org_id                 NUMBER;
7906 --
7907 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
7908 --
7909 BEGIN
7910     -- <R12.MOAC> START
7911     --l_org_id := to_number(FND_PROFILE.VALUE('ORG_ID'));
7912     -- <R12.MOAC> END
7913 
7914    if l_debug_level > 0 then
7915     oe_debug_pub.ADD('Before inserting blanket history header_id  ' || p_header_rec.header_id, 5);
7916    end if;
7917 
7918     INSERT  INTO OE_BLANKET_HEADERS_HIST
7919     (       ACCOUNTING_RULE_ID
7920     ,       AGREEMENT_ID
7921     ,       ATTRIBUTE1
7922     ,       ATTRIBUTE10
7923     ,       ATTRIBUTE11
7924     ,       ATTRIBUTE12
7925     ,       ATTRIBUTE13
7926     ,       ATTRIBUTE14
7927     ,       ATTRIBUTE15
7928     ,       ATTRIBUTE16
7929     ,       ATTRIBUTE17
7930     ,       ATTRIBUTE18
7931     ,       ATTRIBUTE19
7932     ,       ATTRIBUTE20
7933     ,       ATTRIBUTE2
7934     ,       ATTRIBUTE3
7935     ,       ATTRIBUTE4
7936     ,       ATTRIBUTE5
7937     ,       ATTRIBUTE6
7938     ,       ATTRIBUTE7
7939     ,       ATTRIBUTE8
7940     ,       ATTRIBUTE9
7941 --adding context  since it was missing
7942     ,       CONTEXT
7943     ,       CREATED_BY
7944     ,       CREATION_DATE
7945     ,       CUST_PO_NUMBER
7946     ,       DELIVER_TO_ORG_ID
7947     ,       FREIGHT_TERMS_CODE
7948     ,       header_id
7949     ,       INVOICE_TO_ORG_ID
7950     ,       INVOICING_RULE_ID
7951     ,       LAST_UPDATED_BY
7952     ,       LAST_UPDATE_DATE
7953     ,       LAST_UPDATE_LOGIN
7954     ,       ORDER_NUMBER
7955     ,       ORDER_TYPE_ID
7956     ,       PAYMENT_TERM_ID
7957     ,       PRICE_LIST_ID
7958     ,       PROGRAM_APPLICATION_ID
7959     ,       PROGRAM_ID
7960     ,       PROGRAM_UPDATE_DATE
7961     ,       REQUEST_ID
7962     ,       SALESREP_ID
7963     ,       SHIPPING_METHOD_CODE
7964     ,       ship_from_org_id
7965     ,       SHIP_TO_ORG_ID
7966     ,       SOLD_TO_CONTACT_ID
7967     ,       SOLD_TO_ORG_ID
7968     ,       TRANSACTIONAL_CURR_CODE
7969     ,       conversion_type_code
7970     ,       VERSION_NUMBER
7971     ,       SHIPPING_INSTRUCTIONS
7972     ,       PACKING_INSTRUCTIONS
7973     ,       START_DATE_ACTIVE
7974     ,       END_DATE_ACTIVE
7975     ,       on_hold_flag
7976     ,       ENFORCE_PRICE_LIST_FLAG
7977     ,       enforce_ship_to_flag
7978     ,       enforce_invoice_to_flag
7979     ,       enforce_freight_term_flag
7980     ,       enforce_shipping_method_flag
7981     ,       enforce_payment_term_flag
7982     ,       enforce_accounting_rule_flag
7983     ,       enforce_invoicing_rule_flag
7984     ,       OVERRIDE_AMOUNT_FLAG
7985     ,       BLANKET_MAX_AMOUNT
7986     ,       BLANKET_MIN_AMOUNT
7987     ,       RELEASED_AMOUNT
7988     ,       FULFILLED_AMOUNT
7989     ,       RETURNED_AMOUNT
7990     ,       ORG_ID
7991     ,       REVISION_CHANGE_REASON_CODE
7992     ,       REVISION_CHANGE_COMMENTS
7993     ,       REVISION_CHANGE_DATE
7994     ,       RESPONSIBILITY_ID
7995     ,       HIST_TYPE_CODE
7996     ,       HIST_CREATION_DATE
7997     ,       HIST_CREATED_BY
7998     ,       SALES_DOCUMENT_TYPE_CODE
7999     ,       source_document_id
8000     ,       source_document_type_id
8001     ,       SALES_DOCUMENT_NAME -- hashraf ... start of pack J
8002     ,       TRANSACTION_PHASE_CODE
8003     ,       USER_STATUS_CODE
8004     ,       FLOW_STATUS_CODE
8005     ,	    SUPPLIER_SIGNATURE
8006     ,	    SUPPLIER_SIGNATURE_DATE
8007     ,	    CUSTOMER_SIGNATURE
8008     ,	    CUSTOMER_SIGNATURE_DATE
8009     ,       sold_to_site_use_id
8010     ,       draft_submitted_flag
8011     ,       source_document_version_number -- hashraf ... end of pack J
8012     ,       version_flag
8013     ,       phase_change_flag
8014     ,       new_modifier_list_id
8015     ,       new_price_list_id
8016     ,       default_discount_amount
8017     ,       default_discount_percent
8018     )
8019     VALUES
8020     (       p_header_rec.accounting_rule_id
8021     ,       p_header_rec.agreement_id
8022     ,       p_header_rec.attribute1
8023     ,       p_header_rec.attribute10
8024     ,       p_header_rec.attribute11
8025     ,       p_header_rec.attribute12
8026     ,       p_header_rec.attribute13
8027     ,       p_header_rec.attribute14
8028     ,       p_header_rec.attribute15
8029     ,       p_header_rec.attribute16
8030     ,       p_header_rec.attribute17
8031     ,       p_header_rec.attribute18
8032     ,       p_header_rec.attribute19
8033     ,       p_header_rec.attribute20
8034     ,       p_header_rec.attribute2
8035     ,       p_header_rec.attribute3
8036     ,       p_header_rec.attribute4
8037     ,       p_header_rec.attribute5
8038     ,       p_header_rec.attribute6
8039     ,       p_header_rec.attribute7
8040     ,       p_header_rec.attribute8
8041     ,       p_header_rec.attribute9
8042 --added context ,since it was missing
8043     ,       p_header_rec.context
8044     ,       p_header_rec.created_by
8045     ,       p_header_rec.creation_date
8046     ,       p_header_rec.cust_po_number
8047     ,       p_header_rec.deliver_to_org_id
8048     ,       p_header_rec.freight_terms_code
8049     ,       p_header_rec.header_id
8050     ,       p_header_rec.invoice_to_org_id
8051     ,       p_header_rec.invoicing_rule_id
8052     ,       p_header_rec.last_updated_by
8053     ,       p_header_rec.last_update_date
8054     ,       p_header_rec.last_update_login
8055     ,       p_header_rec.order_number
8056     ,       p_header_rec.order_type_id
8057     ,       p_header_rec.payment_term_id
8058     ,       p_header_rec.price_list_id
8059     ,       p_header_rec.program_application_id
8060     ,       p_header_rec.program_id
8061     ,       p_header_rec.program_update_date
8062     ,       p_header_rec.request_id
8063     ,       p_header_rec.salesrep_id
8064     ,       p_header_rec.shipping_method_code
8065     ,       p_header_rec.ship_from_org_id
8066     ,       p_header_rec.ship_to_org_id
8067     ,       p_header_rec.sold_to_contact_id
8068     ,       p_header_rec.sold_to_org_id
8069     ,       p_header_rec.transactional_curr_code
8070     ,       p_header_rec.conversion_type_code
8071     ,       p_header_rec.version_number
8072     ,	    p_header_rec.shipping_instructions
8073     ,	    p_header_rec.packing_instructions
8074     ,       p_header_rec.START_DATE_ACTIVE
8075     ,       p_header_rec.END_DATE_ACTIVE
8076     ,       p_header_rec.on_hold_flag
8077     ,       p_header_rec.ENFORCE_PRICE_LIST_FLAG
8078     ,       p_header_rec.enforce_ship_to_flag
8079     ,       p_header_rec.enforce_invoice_to_flag
8080     ,       p_header_rec.enforce_freight_term_flag
8081     ,       p_header_rec.enforce_shipping_method_flag
8082     ,       p_header_rec.enforce_payment_term_flag
8083     ,       p_header_rec.enforce_accounting_rule_flag
8084     ,       p_header_rec.enforce_invoicing_rule_flag
8085     ,       p_header_rec.OVERRIDE_AMOUNT_FLAG
8086     ,       p_header_rec.Blanket_Max_Amount
8087     ,       p_header_rec.Blanket_Min_Amount
8088     ,       p_header_rec.RELEASED_AMOUNT
8089     ,       p_header_rec.FULFILLED_AMOUNT
8090     ,       p_header_rec.RETURNED_AMOUNT
8091     ,       p_header_rec.ORG_ID
8092     ,       p_header_rec.REVISION_CHANGE_REASON_CODE
8093     ,       p_header_rec.REVISION_CHANGE_COMMENTS
8094     ,       p_header_rec.REVISION_CHANGE_DATE
8095     ,       nvl(FND_GLOBAL.RESP_ID,-1)
8096     ,       'UPDATE'
8097     ,       sysdate
8098     ,       nvl(FND_GLOBAL.USER_ID, -1)
8099     ,       'B'
8100     ,       p_header_rec.source_document_id
8101     ,       p_header_rec.source_document_type_id
8102     ,       p_header_rec.SALES_DOCUMENT_NAME -- hashraf ... start of pack J
8103     ,       p_header_rec.TRANSACTION_PHASE_CODE
8104     ,       p_header_rec.USER_STATUS_CODE
8105     ,       p_header_rec.FLOW_STATUS_CODE
8106     ,       p_header_rec.SUPPLIER_SIGNATURE
8107     ,       p_header_rec.SUPPLIER_SIGNATURE_DATE
8108     ,       p_header_rec.CUSTOMER_SIGNATURE
8109     ,       p_header_rec.CUSTOMER_SIGNATURE_DATE
8110     ,       p_header_rec.sold_to_site_use_id
8111     ,       p_header_rec.draft_submitted_flag
8112     ,       p_header_rec.source_document_version_number -- hashraf ... end of pack J
8113     ,       p_version_flag
8114     ,       p_phase_change_flag
8115     ,       p_header_rec.new_modifier_list_id
8116     ,       p_header_rec.new_price_list_id
8117     ,       p_header_rec.default_discount_amount
8118     ,       p_header_rec.default_discount_percent
8119     );
8120 
8121 
8122     FOR I IN 1..p_line_tbl.COUNT LOOP
8123 
8124    if l_debug_level > 0 then
8125     oe_debug_pub.ADD('Before inserting blanket line history line_id  ' || p_line_tbl(I).line_id, 5);
8126    end if;
8127 
8128         INSERT  INTO OE_BLANKET_LINES_HIST
8129         (       ACCOUNTING_RULE_ID
8130         ,       AGREEMENT_ID
8131         ,       ATTRIBUTE1
8132         ,       ATTRIBUTE10
8133         ,       ATTRIBUTE11
8134         ,       ATTRIBUTE12
8135         ,       ATTRIBUTE13
8136         ,       ATTRIBUTE14
8137         ,       ATTRIBUTE15
8138         ,       ATTRIBUTE16
8139         ,       ATTRIBUTE17
8140         ,       ATTRIBUTE18
8141         ,       ATTRIBUTE19
8142         ,       ATTRIBUTE20
8143         ,       ATTRIBUTE2
8144         ,       ATTRIBUTE3
8145         ,       ATTRIBUTE4
8146         ,       ATTRIBUTE5
8147         ,       ATTRIBUTE6
8148         ,       ATTRIBUTE7
8149         ,       ATTRIBUTE8
8150         ,       ATTRIBUTE9
8151         ,       CONTEXT
8152         ,       CREATED_BY
8153         ,       CREATION_DATE
8154         ,       CUST_PO_NUMBER
8155         ,       DELIVER_TO_ORG_ID
8156         ,       FREIGHT_TERMS_CODE
8157         ,       header_id --header_id
8158         ,       min_release_quantity
8159         ,       max_release_quantity
8160         ,       inventory_item_id
8161         ,       INVOICE_TO_ORG_ID
8162         ,       INVOICING_RULE_ID
8163         ,       ORDERED_ITEM_ID
8164         ,       item_identifier_type
8165         ,       ORDERED_ITEM
8166         ,       ITEM_TYPE_CODE
8167         ,       LAST_UPDATED_BY
8168         ,       LAST_UPDATE_DATE
8169         ,       LAST_UPDATE_LOGIN
8170         ,       line_id --line_id
8171         ,       line_number --blanket_line_number
8172         ,       PAYMENT_TERM_ID
8173         ,       PREFERRED_GRADE             --OPM Added 02/JUN/00
8174         ,       PRICE_LIST_ID
8175         ,       PROGRAM_APPLICATION_ID
8176         ,       PROGRAM_ID
8177         ,       PROGRAM_UPDATE_DATE
8178         ,       REQUEST_ID
8179         ,       SALESREP_ID
8180         ,       SHIPPING_METHOD_CODE
8181         ,       ship_from_org_id
8182         ,       ship_to_org_id
8183         ,       SHIPPING_INSTRUCTIONS
8184         ,       PACKING_INSTRUCTIONS
8185         ,       START_DATE_ACTIVE
8186         ,       END_DATE_ACTIVE
8187         ,       MAX_RELEASE_AMOUNT
8188         ,       MIN_RELEASE_AMOUNT
8189         ,       BLANKET_LINE_MAX_AMOUNT
8190         ,       BLANKET_LINE_MIN_AMOUNT
8191         ,       BLANKET_MAX_QUANTITY
8192         ,       BLANKET_MIN_QUANTITY
8193         ,       OVERRIDE_BLANKET_CONTROLS_FLAG
8194         ,       OVERRIDE_RELEASE_CONTROLS_FLAG
8195         ,       ENFORCE_PRICE_LIST_FLAG
8196         ,   enforce_ship_to_flag
8197         ,   enforce_invoice_to_flag
8198         ,   enforce_freight_term_flag
8199         ,   enforce_shipping_method_flag
8200         ,   enforce_payment_term_flag
8201         ,   enforce_accounting_rule_flag
8202         ,   enforce_invoicing_rule_flag
8203         ,       ORDER_QUANTITY_UOM
8204         ,       RELEASED_QUANTITY
8205         ,       FULFILLED_QUANTITY
8206         ,       RETURNED_QUANTITY
8207         ,       ORDER_NUMBER
8208         ,       RELEASED_AMOUNT
8209         ,       FULFILLED_AMOUNT
8210         ,       RETURNED_AMOUNT
8211         ,       RESPONSIBILITY_ID
8212         ,       HIST_TYPE_CODE
8213         ,       HIST_CREATION_DATE
8214         ,       HIST_CREATED_BY
8215         ,       VERSION_NUMBER
8216         ,       SALES_DOCUMENT_TYPE_CODE
8217     	,       TRANSACTION_PHASE_CODE -- hashraf ... start of pack J
8218         ,       source_document_version_number
8219         ,       version_flag
8220         ,       phase_change_flag
8221         ,       modifier_list_line_id
8222         )
8223         VALUES
8224         (       p_line_tbl(I).accounting_rule_id
8225         ,       p_line_tbl(I).agreement_id
8226         ,       p_line_tbl(I).attribute1
8227         ,       p_line_tbl(I).attribute10
8228         ,       p_line_tbl(I).attribute11
8229         ,       p_line_tbl(I).attribute12
8230         ,       p_line_tbl(I).attribute13
8231         ,       p_line_tbl(I).attribute14
8232         ,       p_line_tbl(I).attribute15
8233         ,       p_line_tbl(I).attribute16
8234         ,       p_line_tbl(I).attribute17
8235         ,       p_line_tbl(I).attribute18
8236         ,       p_line_tbl(I).attribute19
8237         ,       p_line_tbl(I).attribute20
8238         ,       p_line_tbl(I).attribute2
8239         ,       p_line_tbl(I).attribute3
8240         ,       p_line_tbl(I).attribute4
8241         ,       p_line_tbl(I).attribute5
8242         ,       p_line_tbl(I).attribute6
8243         ,       p_line_tbl(I).attribute7
8244         ,       p_line_tbl(I).attribute8
8245         ,       p_line_tbl(I).attribute9
8246         ,       p_line_tbl(I).context
8247         ,       p_line_tbl(I).created_by
8248         ,       p_line_tbl(I).creation_date
8249         ,       p_line_tbl(I).cust_po_number
8250         ,       p_line_tbl(I).deliver_to_org_id
8251         ,       p_line_tbl(I).freight_terms_code
8252         ,       p_line_tbl(I).header_id
8253         ,       p_line_tbl(I).min_release_quantity
8254         ,       p_line_tbl(I).max_release_quantity
8255         ,       p_line_tbl(I).inventory_item_id
8256         ,       p_line_tbl(I).invoice_to_org_id
8257         ,       p_line_tbl(I).invoicing_rule_id
8258         ,       p_line_tbl(I).ordered_item_id
8259         ,       p_line_tbl(I).item_identifier_type
8260 
8261         ,       p_line_tbl(I).ordered_item
8262         ,       p_line_tbl(I).item_type_code
8263         ,       p_line_tbl(I).last_updated_by
8264         ,       p_line_tbl(I).last_update_date
8265         ,       p_line_tbl(I).last_update_login
8266         ,       p_line_tbl(I).line_id
8267         ,       p_line_tbl(I).line_number
8268         ,       p_line_tbl(I).payment_term_id
8269         ,       p_line_tbl(I).preferred_grade            --OPM 02/JUN/00
8270         ,       p_line_tbl(I).price_list_id
8271         ,       p_line_tbl(I).program_application_id
8272         ,       p_line_tbl(I).program_id
8273         ,       p_line_tbl(I).program_update_date
8274         ,       p_line_tbl(I).request_id
8275         ,       p_line_tbl(I).salesrep_id
8276         ,       p_line_tbl(I).shipping_method_code
8277         ,       p_line_tbl(I).ship_from_org_id
8278         ,       p_line_tbl(I).ship_to_org_id
8279         ,       p_line_tbl(I).shipping_instructions
8280         ,       p_line_tbl(I).packing_instructions
8281         ,       p_line_tbl(I).START_DATE_ACTIVE
8282         ,       p_line_tbl(I).END_DATE_ACTIVE
8283         ,       p_line_tbl(I).MAX_RELEASE_AMOUNT
8284         ,       p_line_tbl(I).MIN_RELEASE_AMOUNT
8285         ,       p_line_tbl(I).BLANKET_MAX_AMOUNT
8286         ,       p_line_tbl(I).BLANKET_MIN_AMOUNT
8287         ,       p_line_tbl(I).BLANKET_MAX_QUANTITY
8288         ,       p_line_tbl(I).BLANKET_MIN_QUANTITY
8289         ,       p_line_tbl(I).OVERRIDE_BLANKET_CONTROLS_FLAG
8290         ,       p_line_tbl(I).OVERRIDE_RELEASE_CONTROLS_FLAG
8291         ,       p_line_tbl(I).ENFORCE_PRICE_LIST_FLAG
8292         ,       p_line_tbl(I).enforce_ship_to_flag
8293         ,       p_line_tbl(I).enforce_invoice_to_flag
8294         ,       p_line_tbl(I).enforce_freight_term_flag
8295         ,       p_line_tbl(I).enforce_shipping_method_flag
8296         ,       p_line_tbl(I).enforce_payment_term_flag
8297         ,       p_line_tbl(I).enforce_accounting_rule_flag
8298         ,       p_line_tbl(I).enforce_invoicing_rule_flag
8299         ,       p_line_tbl(I).ORDER_QUANTITY_UOM
8300         ,       p_line_tbl(I).RELEASED_QUANTITY
8301         ,       p_line_tbl(I).FULFILLED_QUANTITY
8302         ,       p_line_tbl(I).RETURNED_QUANTITY
8303         ,       p_line_tbl(I).ORDER_NUMBER
8304         ,       p_line_tbl(I).RELEASED_AMOUNT
8305         ,       p_line_tbl(I).FULFILLED_AMOUNT
8306         ,       p_line_tbl(I).RETURNED_AMOUNT
8307         ,       nvl(FND_GLOBAL.RESP_ID,-1)
8308         ,       'UPDATE'
8309         ,       sysdate
8310         ,       nvl(FND_GLOBAL.USER_ID, -1)
8311         ,       p_header_rec.version_number
8312         ,       'B'
8313     	,       p_line_tbl(I).TRANSACTION_PHASE_CODE -- hashraf ... start of pack J
8314     	,       p_line_tbl(I).source_document_version_number
8315         ,       p_version_flag
8316         ,       p_phase_change_flag
8317         ,       p_line_tbl(I).modifier_list_line_id
8318         );
8319 
8320     END LOOP;
8321 
8322    if l_debug_level > 0 then
8323     oe_debug_pub.ADD('After inserting blanket history', 1);
8324    end if;
8325 
8326 END Insert_History_Records;
8327 
8328 Procedure Return_Lines_Exist( p_application_id IN NUMBER,
8329 					p_entity_short_name in VARCHAR2,
8330 					p_validation_entity_short_name in VARCHAR2,
8331 					p_validation_tmplt_short_name in VARCHAR2,
8332 					p_record_set_tmplt_short_name in VARCHAR2,
8333 					p_scope in VARCHAR2,
8334 					p_result OUT NOCOPY NUMBER ) IS
8335 
8336 l_blanket_number number;
8337 l_blanket_line_number number;
8338 --
8339 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
8340 --
8341 BEGIN
8342     if l_debug_level > 0 then
8343 	oe_debug_pub.add('Enter OE_Blanket_Util.Returns_Exist');
8344     end if;
8345 
8346   If p_validation_entity_short_name = 'BLANKET_LINE' Then
8347      l_blanket_number := oe_blanket_line_security.g_record.order_number;
8348      l_blanket_line_number := oe_blanket_line_security.g_record.line_number;
8349 
8350     BEGIN
8351        Select 1 into p_result
8352        from oe_order_lines
8353        where blanket_number = l_blanket_number
8354        and blanket_line_number = l_blanket_line_number
8355        and line_category_code = 'RETURN'
8356        and rownum = 1;
8357     EXCEPTION
8358       WHEN NO_DATA_FOUND THEN
8359         p_result := 0;
8360     END;
8361 
8362   Else
8363      l_blanket_number := oe_blanket_header_security.g_record.order_number;
8364 
8365     BEGIN
8366        Select 1 into p_result
8367        from oe_order_lines
8368        where blanket_number = l_blanket_number
8369        and line_category_code = 'RETURN'
8370        and rownum = 1;
8371     EXCEPTION
8372       WHEN NO_DATA_FOUND THEN
8373         p_result := 0;
8374     END;
8375 
8376   End If;
8377 
8378 END Return_Lines_Exist;
8379 
8380 Procedure Release_Lines_Exist( p_application_id IN NUMBER,
8381 					p_entity_short_name in VARCHAR2,
8382 					p_validation_entity_short_name in VARCHAR2,
8383 					p_validation_tmplt_short_name in VARCHAR2,
8384 					p_record_set_tmplt_short_name in VARCHAR2,
8385 					p_scope in VARCHAR2,
8386 					p_result OUT NOCOPY NUMBER ) IS
8387 
8388 l_blanket_number number;
8389 l_blanket_line_number number;
8390 --
8391 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
8392 --
8393 BEGIN
8394     if l_debug_level > 0 then
8395 	oe_debug_pub.add('Enter OE_Blanket_Util.Release_Lines_Exist');
8396     end if;
8397 
8398   If p_validation_entity_short_name = 'BLANKET_LINE' Then
8399      l_blanket_number := oe_blanket_line_security.g_record.order_number;
8400      l_blanket_line_number := oe_blanket_line_security.g_record.line_number;
8401 
8402     BEGIN
8403        Select 1 into p_result
8404        from oe_order_lines
8405        where blanket_number = l_blanket_number
8406        and blanket_line_number = l_blanket_line_number
8407        and rownum = 1;
8408     EXCEPTION
8409       WHEN NO_DATA_FOUND THEN
8410         p_result := 0;
8411     END;
8412 
8413   Else
8414      l_blanket_number := oe_blanket_header_security.g_record.order_number;
8415 
8416     BEGIN
8417        Select 1 into p_result
8418        from oe_order_lines
8419        where blanket_number = l_blanket_number
8420        and rownum = 1;
8421     EXCEPTION
8422       WHEN NO_DATA_FOUND THEN
8423         p_result := 0;
8424     END;
8425 
8426   End If;
8427 
8428 END Release_Lines_Exist;
8429 
8430 Procedure Release_Headers_Exist( p_application_id IN NUMBER,
8431 					p_entity_short_name in VARCHAR2,
8432 					p_validation_entity_short_name in VARCHAR2,
8433 					p_validation_tmplt_short_name in VARCHAR2,
8434 					p_record_set_tmplt_short_name in VARCHAR2,
8435 					p_scope in VARCHAR2,
8436 					p_result OUT NOCOPY NUMBER ) IS
8437 
8438 l_blanket_number number;
8439 l_blanket_line_number number;
8440 --
8441 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
8442 --
8443 BEGIN
8444     if l_debug_level > 0 then
8445 	oe_debug_pub.add('Enter OE_Blanket_Util.Release_Lines_Exist');
8446     end if;
8447 
8448   If p_validation_entity_short_name = 'BLANKET_LINE' Then
8449      l_blanket_number := oe_blanket_line_security.g_record.order_number;
8450 
8451     BEGIN
8452        Select 1 into p_result
8453        from oe_order_headers_all
8454        where blanket_number = l_blanket_number
8455        and rownum = 1;
8456     EXCEPTION
8457       WHEN NO_DATA_FOUND THEN
8458         p_result := 0;
8459     END;
8460 
8461   Else
8462      l_blanket_number := oe_blanket_header_security.g_record.order_number;
8463 
8464     BEGIN
8465        Select 1 into p_result
8466        from oe_order_headers_all
8467        where blanket_number = l_blanket_number
8468        and rownum = 1;
8469     EXCEPTION
8470       WHEN NO_DATA_FOUND THEN
8471         p_result := 0;
8472     END;
8473 
8474   End If;
8475 
8476 END Release_Headers_Exist;
8477 
8478 Procedure Open_Release_Lines_Exist( p_application_id IN NUMBER,
8479 					p_entity_short_name in VARCHAR2,
8480 					p_validation_entity_short_name in VARCHAR2,
8481 					p_validation_tmplt_short_name in VARCHAR2,
8482 					p_record_set_tmplt_short_name in VARCHAR2,
8483 					p_scope in VARCHAR2,
8484 					p_result OUT NOCOPY NUMBER ) IS
8485 
8486 l_blanket_number number;
8487 l_blanket_line_number number;
8488 --
8489 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
8490 --
8491 BEGIN
8492     if l_debug_level > 0 then
8493 	oe_debug_pub.add('Enter OE_Blanket_Util.Open_Release_Lines_Exist');
8494     end if;
8495 
8496   If p_validation_entity_short_name = 'BLANKET_LINE' Then
8497      l_blanket_number := oe_blanket_line_security.g_record.order_number;
8498      l_blanket_line_number := oe_blanket_line_security.g_record.line_number;
8499 
8500     BEGIN
8501        Select 1 into p_result
8502        from oe_order_lines
8503        where blanket_number = l_blanket_number
8504        and blanket_line_number = l_blanket_line_number
8505        and open_flag = 'Y'
8506        and rownum = 1;
8507     EXCEPTION
8508       WHEN NO_DATA_FOUND THEN
8509         p_result := 0;
8510     END;
8511 
8512   Else
8513      l_blanket_number := oe_blanket_header_security.g_record.order_number;
8514 
8515     BEGIN
8516        Select 1 into p_result
8517        from oe_order_lines
8518        where blanket_number = l_blanket_number
8519        and open_flag = 'Y'
8520        and rownum = 1;
8521     EXCEPTION
8522       WHEN NO_DATA_FOUND THEN
8523         p_result := 0;
8524     END;
8525 
8526   End If;
8527 
8528 END Open_Release_Lines_Exist;
8529 
8530 Procedure Open_Release_Headers_Exist( p_application_id IN NUMBER,
8531 					p_entity_short_name in VARCHAR2,
8532 					p_validation_entity_short_name in VARCHAR2,
8533 					p_validation_tmplt_short_name in VARCHAR2,
8534 					p_record_set_tmplt_short_name in VARCHAR2,
8535 					p_scope in VARCHAR2,
8536 					p_result OUT NOCOPY NUMBER ) IS
8537 
8538 l_blanket_number number;
8539 l_blanket_line_number number;
8540 --
8541 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
8542 --
8543 BEGIN
8544     if l_debug_level > 0 then
8545 	oe_debug_pub.add('Enter OE_Blanket_Util.Open_Release_Lines_Exist');
8546     end if;
8547 
8548   If p_validation_entity_short_name = 'BLANKET_LINE' Then
8549      l_blanket_number := oe_blanket_line_security.g_record.order_number;
8550 
8551     BEGIN
8552        Select 1 into p_result
8553        from oe_order_headers_all
8554        where blanket_number = l_blanket_number
8555        and open_flag = 'Y'
8556        and rownum = 1;
8557     EXCEPTION
8558       WHEN NO_DATA_FOUND THEN
8559         p_result := 0;
8560     END;
8561 
8562   Else
8563      l_blanket_number := oe_blanket_header_security.g_record.order_number;
8564 
8565     BEGIN
8566        Select 1 into p_result
8567        from oe_order_headers_all
8568        where blanket_number = l_blanket_number
8569        and open_flag = 'Y'
8570        and rownum = 1;
8571     EXCEPTION
8572       WHEN NO_DATA_FOUND THEN
8573         p_result := 0;
8574     END;
8575 
8576   End If;
8577 
8578 END Open_Release_Headers_Exist;
8579 
8580 Procedure Is_Expired( p_application_id IN NUMBER,
8581 					p_entity_short_name in VARCHAR2,
8582 					p_validation_entity_short_name in VARCHAR2,
8583 					p_validation_tmplt_short_name in VARCHAR2,
8584 					p_record_set_tmplt_short_name in VARCHAR2,
8585 					p_scope in VARCHAR2,
8586 					p_result OUT NOCOPY NUMBER ) IS
8587 
8588 --
8589 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
8590 --
8591 BEGIN
8592     if l_debug_level > 0 then
8593 	oe_debug_pub.add('Enter OE_Blanket_Util.Is_Expired');
8594     end if;
8595 
8596   If p_validation_entity_short_name = 'BLANKET_LINE' Then
8597     If (trunc(sysdate) >= OE_Blanket_Line_Security.g_record.start_date_active
8598        AND trunc(sysdate) <= trunc(nvl(OE_Blanket_Line_Security.g_record.end_date_active, sysdate)))
8599     Then
8600        p_result := 0;
8601     Else
8602        p_result := 1;
8603     End If;
8604   Else
8605     If (trunc(sysdate) >= OE_Blanket_Header_Security.g_record.start_date_active
8606        AND trunc(sysdate) <= trunc(nvl(OE_Blanket_Header_Security.g_record.end_date_active, sysdate)))
8607     Then
8608        p_result := 0;
8609     Else
8610        p_result := 1;
8611     End If;
8612 
8613   End If;
8614 
8615 END Is_Expired;
8616 
8617 FUNCTION G_MISS_OE_AK_BLKT_HEADER_REC
8618 RETURN OE_AK_BLANKET_HEADERS_V%ROWTYPE IS
8619 	l_rowtype_rec					OE_AK_BLANKET_HEADERS_V%ROWTYPE;
8620 BEGIN
8621 
8622 	l_rowtype_rec.ACCOUNTING_RULE_ID			:= FND_API.G_MISS_NUM;
8623 	l_rowtype_rec.CONVERSION_TYPE_CODE			:= FND_API.G_MISS_CHAR;
8624 	l_rowtype_rec.CUST_PO_NUMBER				:= FND_API.G_MISS_CHAR;
8625 	l_rowtype_rec.DELIVER_TO_ORG_ID				:= FND_API.G_MISS_NUM;
8626 	l_rowtype_rec.END_DATE_ACTIVE				:= FND_API.G_MISS_DATE;
8627 	l_rowtype_rec.FREIGHT_TERMS_CODE			:= FND_API.G_MISS_CHAR;
8628 	l_rowtype_rec.HEADER_ID					:= FND_API.G_MISS_NUM;
8629 	l_rowtype_rec.INVOICE_TO_ORG_ID				:= FND_API.G_MISS_NUM;
8630 	l_rowtype_rec.INVOICING_RULE_ID				:= FND_API.G_MISS_NUM;
8631 	l_rowtype_rec.LAST_UPDATED_BY				:= FND_API.G_MISS_NUM;
8632 	l_rowtype_rec.LAST_UPDATE_DATE				:= FND_API.G_MISS_DATE;
8633 	l_rowtype_rec.LAST_UPDATE_LOGIN				:= FND_API.G_MISS_NUM;
8634 	l_rowtype_rec.ORDER_NUMBER					:= FND_API.G_MISS_NUM;
8635 	l_rowtype_rec.ORDER_TYPE_ID					:= FND_API.G_MISS_NUM;
8636 	l_rowtype_rec.ORG_ID						:= FND_API.G_MISS_NUM;
8637 	l_rowtype_rec.PACKING_INSTRUCTIONS			:= FND_API.G_MISS_CHAR;
8638 	l_rowtype_rec.PAYMENT_TERM_ID				:= FND_API.G_MISS_NUM;
8639 	l_rowtype_rec.PRICE_LIST_ID					:= FND_API.G_MISS_NUM;
8640 	l_rowtype_rec.PROGRAM_APPLICATION_ID		:= FND_API.G_MISS_NUM;
8641 	l_rowtype_rec.PROGRAM_ID					:= FND_API.G_MISS_NUM;
8642 	l_rowtype_rec.PROGRAM_UPDATE_DATE			:= FND_API.G_MISS_DATE;
8643 	l_rowtype_rec.SALESREP_ID					:= FND_API.G_MISS_NUM;
8644 	l_rowtype_rec.SHIPPING_INSTRUCTIONS			:= FND_API.G_MISS_CHAR;
8645 	l_rowtype_rec.SHIPPING_METHOD_CODE			:= FND_API.G_MISS_CHAR;
8646 	l_rowtype_rec.SHIP_FROM_ORG_ID				:= FND_API.G_MISS_NUM;
8647 	l_rowtype_rec.SHIP_TO_ORG_ID				:= FND_API.G_MISS_NUM;
8648 	l_rowtype_rec.SOLD_TO_CONTACT_ID			:= FND_API.G_MISS_NUM;
8649 	l_rowtype_rec.SOLD_TO_ORG_ID				:= FND_API.G_MISS_NUM;
8650 	l_rowtype_rec.START_DATE_ACTIVE				:= FND_API.G_MISS_DATE;
8651 	l_rowtype_rec.TRANSACTIONAL_CURR_CODE		:= FND_API.G_MISS_CHAR;
8652 	l_rowtype_rec.VERSION_NUMBER				:= FND_API.G_MISS_NUM;
8653 
8654 	l_rowtype_rec.CREATED_BY           := FND_API.G_MISS_NUM;
8655 	l_rowtype_rec.CREATION_DATE           := FND_API.G_MISS_DATE;
8656 	l_rowtype_rec.REVISION_CHANGE_DATE           := FND_API.G_MISS_DATE;
8657 	l_rowtype_rec.REVISION_CHANGE_REASON_CODE           := FND_API.G_MISS_CHAR;
8658 	l_rowtype_rec.REVISION_CHANGE_COMMENTS           := FND_API.G_MISS_CHAR;
8659 	l_rowtype_rec.ENFORCE_SHIP_TO_FLAG           := FND_API.G_MISS_CHAR;
8660 	l_rowtype_rec.ENFORCE_FREIGHT_TERM_FLAG           := FND_API.G_MISS_CHAR;
8661 	l_rowtype_rec.ENFORCE_SHIPPING_METHOD_FLAG           := FND_API.G_MISS_CHAR;
8662 	l_rowtype_rec.ENFORCE_PRICE_LIST_FLAG           := FND_API.G_MISS_CHAR;
8663 	l_rowtype_rec.ENFORCE_PAYMENT_TERM_FLAG           := FND_API.G_MISS_CHAR;
8664 	l_rowtype_rec.ENFORCE_INVOICE_TO_FLAG           := FND_API.G_MISS_CHAR;
8665 	l_rowtype_rec.ENFORCE_INVOICING_RULE_FLAG           := FND_API.G_MISS_CHAR;
8666 	l_rowtype_rec.ENFORCE_ACCOUNTING_RULE_FLAG           := FND_API.G_MISS_CHAR;
8667 	l_rowtype_rec.BLANKET_MIN_AMOUNT           := FND_API.G_MISS_NUM;
8668 	l_rowtype_rec.BLANKET_MAX_AMOUNT           := FND_API.G_MISS_NUM;
8669 	l_rowtype_rec.OVERRIDE_AMOUNT_FLAG           := FND_API.G_MISS_CHAR;
8670 	l_rowtype_rec.ON_HOLD_FLAG           := FND_API.G_MISS_CHAR;
8671 	l_rowtype_rec.SUPPLIER_SIGNATURE            := FND_API.G_MISS_CHAR;
8672 	l_rowtype_rec.SUPPLIER_SIGNATURE_DATE            := FND_API.G_MISS_DATE;
8673 	l_rowtype_rec.CUSTOMER_SIGNATURE            := FND_API.G_MISS_CHAR;
8674 	l_rowtype_rec.CUSTOMER_SIGNATURE_DATE            := FND_API.G_MISS_DATE;
8675 	l_rowtype_rec.FLOW_STATUS_CODE            := FND_API.G_MISS_CHAR;
8676 	l_rowtype_rec.SOURCE_DOCUMENT_TYPE_ID            := FND_API.G_MISS_NUM;
8677 	l_rowtype_rec.NEW_MODIFIER_LIST_ID            := FND_API.G_MISS_NUM;
8678 	l_rowtype_rec.NEW_PRICE_LIST_ID            := FND_API.G_MISS_NUM;
8679 	l_rowtype_rec.DEFAULT_DISCOUNT_PERCENT            := FND_API.G_MISS_NUM;
8680 	l_rowtype_rec.DEFAULT_DISCOUNT_AMOUNT            := FND_API.G_MISS_NUM;
8681 	l_rowtype_rec.CONTRACT_TERMS            := FND_API.G_MISS_CHAR;
8682 	l_rowtype_rec.OPEN_FLAG            := FND_API.G_MISS_CHAR;
8683 
8684     --QUOTING changes
8685 	l_rowtype_rec.TRANSACTION_PHASE_CODE       		:= FND_API.G_MISS_CHAR;
8686 	l_rowtype_rec.USER_STATUS_CODE       			:= FND_API.G_MISS_CHAR;
8687 --	l_rowtype_rec.QUOTE_NUMBER       			:= FND_API.G_MISS_NUM;
8688 --	l_rowtype_rec.QUOTE_DATE     				:= FND_API.G_MISS_DATE;
8689 	l_rowtype_rec.SALES_DOCUMENT_NAME       		:= FND_API.G_MISS_CHAR;
8690 	l_rowtype_rec.SOLD_TO_SITE_USE_ID       		:= FND_API.G_MISS_NUM;
8691 	l_rowtype_rec.SOURCE_DOCUMENT_VERSION_NUMBER   		:= FND_API.G_MISS_NUM;
8692 	l_rowtype_rec.DRAFT_SUBMITTED_FLAG       		:= FND_API.G_MISS_CHAR;
8693         -- QUOTING changes END
8694 
8695 	RETURN l_rowtype_rec;
8696 
8697 EXCEPTION
8698 
8699 	WHEN OTHERS THEN
8700 		IF 	OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
8701 		THEN
8702 			OE_MSG_PUB.Add_Exc_Msg
8703 			(   G_PKG_NAME
8704 			,   'G_MISS_OE_AK_HEADER_REC'
8705 			);
8706 		END IF;
8707 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8708 
8709 END G_MISS_OE_AK_BLKT_HEADER_REC;
8710 
8711 PROCEDURE API_Rec_To_Rowtype_Rec
8712 (   p_HEADER_rec                    IN  OE_Blanket_PUB.HEADER_Rec_Type
8713 ,   x_rowtype_rec                   IN OUT NOCOPY OE_AK_BLANKET_HEADERS_V%ROWTYPE
8714 ) IS
8715 BEGIN
8716 
8717 	x_rowtype_rec.ACCOUNTING_RULE_ID       := p_header_rec.ACCOUNTING_RULE_ID;
8718 	x_rowtype_rec.CONVERSION_TYPE_CODE     := p_header_rec.CONVERSION_TYPE_CODE;
8719 	x_rowtype_rec.CUST_PO_NUMBER           := p_header_rec.CUST_PO_NUMBER;
8720 	x_rowtype_rec.DELIVER_TO_ORG_ID        := p_header_rec.DELIVER_TO_ORG_ID;
8721 	x_rowtype_rec.END_DATE_ACTIVE          := p_header_rec.END_DATE_ACTIVE;
8722 	x_rowtype_rec.FREIGHT_TERMS_CODE       := p_header_rec.FREIGHT_TERMS_CODE;
8723 	x_rowtype_rec.HEADER_ID       := p_header_rec.HEADER_ID;
8724 	x_rowtype_rec.INVOICE_TO_ORG_ID        := p_header_rec.INVOICE_TO_ORG_ID;
8725 	x_rowtype_rec.INVOICING_RULE_ID        := p_header_rec.INVOICING_RULE_ID;
8726 	x_rowtype_rec.LAST_UPDATED_BY          := p_header_rec.LAST_UPDATED_BY;
8727 	x_rowtype_rec.LAST_UPDATE_DATE         := p_header_rec.LAST_UPDATE_DATE;
8728 	x_rowtype_rec.LAST_UPDATE_LOGIN        := p_header_rec.LAST_UPDATE_LOGIN;
8729 	x_rowtype_rec.ORDER_NUMBER             := p_header_rec.ORDER_NUMBER;
8730 	x_rowtype_rec.ORDER_TYPE_ID            := p_header_rec.ORDER_TYPE_ID;
8731 	x_rowtype_rec.ORG_ID                   := p_header_rec.ORG_ID;
8732 	x_rowtype_rec.PACKING_INSTRUCTIONS     := p_header_rec.PACKING_INSTRUCTIONS;
8733 	x_rowtype_rec.PAYMENT_TERM_ID          := p_header_rec.PAYMENT_TERM_ID;
8734 	x_rowtype_rec.PRICE_LIST_ID            := p_header_rec.PRICE_LIST_ID;
8735 	x_rowtype_rec.PROGRAM_APPLICATION_ID   := p_header_rec.PROGRAM_APPLICATION_ID;
8736 	x_rowtype_rec.PROGRAM_ID               := p_header_rec.PROGRAM_ID;
8737 	x_rowtype_rec.PROGRAM_UPDATE_DATE      := p_header_rec.PROGRAM_UPDATE_DATE;
8738 	x_rowtype_rec.SALESREP_ID              := p_header_rec.SALESREP_ID;
8739 	x_rowtype_rec.SHIPPING_INSTRUCTIONS    := p_header_rec.SHIPPING_INSTRUCTIONS;
8740 	x_rowtype_rec.SHIPPING_METHOD_CODE     := p_header_rec.SHIPPING_METHOD_CODE;
8741 	x_rowtype_rec.SHIP_FROM_ORG_ID         := p_header_rec.SHIP_FROM_ORG_ID;
8742 	x_rowtype_rec.SHIP_TO_ORG_ID           := p_header_rec.SHIP_TO_ORG_ID;
8743 	x_rowtype_rec.SOLD_TO_CONTACT_ID       := p_header_rec.SOLD_TO_CONTACT_ID;
8744 	x_rowtype_rec.SOLD_TO_ORG_ID           := p_header_rec.SOLD_TO_ORG_ID;
8745 	x_rowtype_rec.START_DATE_ACTIVE        := p_header_rec.START_DATE_ACTIVE;
8746 	x_rowtype_rec.TRANSACTIONAL_CURR_CODE  := p_header_rec.TRANSACTIONAL_CURR_CODE;
8747 	x_rowtype_rec.VERSION_NUMBER           := p_header_rec.VERSION_NUMBER;
8748 
8749 	x_rowtype_rec.CREATED_BY           := p_header_rec.CREATED_BY;
8750 	x_rowtype_rec.CREATION_DATE           := p_header_rec.CREATION_DATE;
8751 	x_rowtype_rec.REVISION_CHANGE_DATE           := p_header_rec.REVISION_CHANGE_DATE;
8752 	x_rowtype_rec.REVISION_CHANGE_REASON_CODE           := p_header_rec.REVISION_CHANGE_REASON_CODE;
8753 	x_rowtype_rec.REVISION_CHANGE_COMMENTS           := p_header_rec.REVISION_CHANGE_COMMENTS;
8754 	x_rowtype_rec.ENFORCE_SHIP_TO_FLAG           := p_header_rec.ENFORCE_SHIP_TO_FLAG;
8755 	x_rowtype_rec.ENFORCE_FREIGHT_TERM_FLAG           := p_header_rec.ENFORCE_FREIGHT_TERM_FLAG;
8756 	x_rowtype_rec.ENFORCE_SHIPPING_METHOD_FLAG           := p_header_rec.ENFORCE_SHIPPING_METHOD_FLAG;
8757 	x_rowtype_rec.ENFORCE_PRICE_LIST_FLAG           := p_header_rec.ENFORCE_PRICE_LIST_FLAG;
8758 	x_rowtype_rec.ENFORCE_PAYMENT_TERM_FLAG           := p_header_rec.ENFORCE_PAYMENT_TERM_FLAG;
8759 	x_rowtype_rec.ENFORCE_INVOICE_TO_FLAG           := p_header_rec.ENFORCE_INVOICE_TO_FLAG;
8760 	x_rowtype_rec.ENFORCE_INVOICING_RULE_FLAG           := p_header_rec.ENFORCE_INVOICING_RULE_FLAG;
8761 	x_rowtype_rec.ENFORCE_ACCOUNTING_RULE_FLAG           := p_header_rec.ENFORCE_ACCOUNTING_RULE_FLAG;
8762 	x_rowtype_rec.BLANKET_MIN_AMOUNT           := p_header_rec.BLANKET_MIN_AMOUNT;
8763 	x_rowtype_rec.BLANKET_MAX_AMOUNT           := p_header_rec.BLANKET_MAX_AMOUNT;
8764 	x_rowtype_rec.OVERRIDE_AMOUNT_FLAG           := p_header_rec.OVERRIDE_AMOUNT_FLAG;
8765 	x_rowtype_rec.ON_HOLD_FLAG           := p_header_rec.ON_HOLD_FLAG;
8766 	x_rowtype_rec.SUPPLIER_SIGNATURE            := p_header_rec.SUPPLIER_SIGNATURE;
8767 	x_rowtype_rec.SUPPLIER_SIGNATURE_DATE            := p_header_rec.SUPPLIER_SIGNATURE_DATE;
8768 	x_rowtype_rec.CUSTOMER_SIGNATURE            := p_header_rec.CUSTOMER_SIGNATURE;
8769 	x_rowtype_rec.CUSTOMER_SIGNATURE_DATE            := p_header_rec.CUSTOMER_SIGNATURE_DATE;
8770 --	x_rowtype_rec.QUOTE_NUMBER            := p_header_rec.QUOTE_NUMBER;
8771 --	x_rowtype_rec.QUOTE_DATE            := p_header_rec.QUOTE_DATE;
8772 	x_rowtype_rec.FLOW_STATUS_CODE            := p_header_rec.FLOW_STATUS_CODE;
8773 	x_rowtype_rec.SOURCE_DOCUMENT_TYPE_ID            := p_header_rec.SOURCE_DOCUMENT_TYPE_ID;
8774 	x_rowtype_rec.NEW_MODIFIER_LIST_ID            := p_header_rec.NEW_MODIFIER_LIST_ID;
8775 	x_rowtype_rec.NEW_PRICE_LIST_ID            := p_header_rec.NEW_PRICE_LIST_ID;
8776 	x_rowtype_rec.DEFAULT_DISCOUNT_PERCENT            := p_header_rec.DEFAULT_DISCOUNT_PERCENT;
8777 	x_rowtype_rec.DEFAULT_DISCOUNT_AMOUNT            := p_header_rec.DEFAULT_DISCOUNT_AMOUNT;
8778 	x_rowtype_rec.CONTRACT_TERMS            := p_header_rec.CONTRACT_TEMPLATE_ID;
8779 	x_rowtype_rec.OPEN_FLAG            := p_header_rec.OPEN_FLAG;
8780            --bug 6531947
8781            x_rowtype_rec.CONTEXT               := p_header_rec.CONTEXT;
8782 	   x_rowtype_rec.ATTRIBUTE1            := p_header_rec.ATTRIBUTE1;
8783 	   x_rowtype_rec.ATTRIBUTE2            := p_header_rec.ATTRIBUTE2;
8784 	   x_rowtype_rec.ATTRIBUTE3            := p_header_rec.ATTRIBUTE3;
8785 	   x_rowtype_rec.ATTRIBUTE4            := p_header_rec.ATTRIBUTE4;
8786 	   x_rowtype_rec.ATTRIBUTE5            := p_header_rec.ATTRIBUTE5;
8787 	   x_rowtype_rec.ATTRIBUTE6            := p_header_rec.ATTRIBUTE6;
8788 	   x_rowtype_rec.ATTRIBUTE7            := p_header_rec.ATTRIBUTE7;
8789 	   x_rowtype_rec.ATTRIBUTE8            := p_header_rec.ATTRIBUTE8;
8790 	   x_rowtype_rec.ATTRIBUTE9            := p_header_rec.ATTRIBUTE9;
8791 	   x_rowtype_rec.ATTRIBUTE10            := p_header_rec.ATTRIBUTE10;
8792 	   x_rowtype_rec.ATTRIBUTE11            := p_header_rec.ATTRIBUTE11;
8793 	   x_rowtype_rec.ATTRIBUTE12            := p_header_rec.ATTRIBUTE12;
8794 	   x_rowtype_rec.ATTRIBUTE13            := p_header_rec.ATTRIBUTE13;
8795 	   x_rowtype_rec.ATTRIBUTE14            := p_header_rec.ATTRIBUTE14;
8796 	   x_rowtype_rec.ATTRIBUTE15            := p_header_rec.ATTRIBUTE15;
8797 	   x_rowtype_rec.ATTRIBUTE16            := p_header_rec.ATTRIBUTE16;
8798 	   x_rowtype_rec.ATTRIBUTE17            := p_header_rec.ATTRIBUTE17;
8799 	   x_rowtype_rec.ATTRIBUTE18            := p_header_rec.ATTRIBUTE18;
8800 	   x_rowtype_rec.ATTRIBUTE19            := p_header_rec.ATTRIBUTE19;
8801 	   x_rowtype_rec.ATTRIBUTE20            := p_header_rec.ATTRIBUTE20;
8802 
8803      -- QUOTING changes
8804         x_rowtype_rec.sales_document_name      := p_header_rec.sales_document_name;
8805         x_rowtype_rec.transaction_phase_code   := p_header_rec.transaction_phase_code;
8806         x_rowtype_rec.user_status_code         := p_header_rec.user_status_code;
8807         x_rowtype_rec.draft_submitted_flag     := p_header_rec.draft_submitted_flag;
8808         x_rowtype_rec.source_document_version_number := p_header_rec.source_document_version_number;
8809         x_rowtype_rec.sold_to_site_use_id      := p_header_rec.sold_to_site_use_id;
8810         -- QUOTING changes END
8811 
8812 
8813 EXCEPTION
8814 
8815 	WHEN OTHERS THEN
8816  		IF 	OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
8817 		THEN
8818    			OE_MSG_PUB.Add_Exc_Msg
8819          	(   G_PKG_NAME
8820          	,   'API_Rec_To_RowType_Rec'
8821          	);
8822      	END IF;
8823 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8824 END API_Rec_To_RowType_Rec;
8825 
8826 PROCEDURE Rowtype_Rec_To_API_Rec
8827 (   p_record                        IN  OE_AK_BLANKET_HEADERS_V%ROWTYPE
8828 ,   x_api_rec                       IN OUT NOCOPY OE_Blanket_PUB.HEADER_Rec_Type
8829 ) IS
8830 BEGIN
8831 
8832 	x_api_rec.ACCOUNTING_RULE_ID       := p_record.ACCOUNTING_RULE_ID;
8833 	x_api_rec.CONVERSION_TYPE_CODE     := p_record.CONVERSION_TYPE_CODE;
8834 	x_api_rec.CUST_PO_NUMBER           := p_record.CUST_PO_NUMBER;
8835 	x_api_rec.DELIVER_TO_ORG_ID        := p_record.DELIVER_TO_ORG_ID;
8836         x_api_rec.END_DATE_ACTIVE          := p_record.END_DATE_ACTIVE;
8837 	x_api_rec.FREIGHT_TERMS_CODE       := p_record.FREIGHT_TERMS_CODE;
8838 	x_api_rec.HEADER_ID       := p_record.HEADER_ID;
8839 	x_api_rec.INVOICE_TO_ORG_ID        := p_record.INVOICE_TO_ORG_ID;
8840 	x_api_rec.INVOICING_RULE_ID        := p_record.INVOICING_RULE_ID;
8841 	x_api_rec.ORDER_NUMBER             := p_record.ORDER_NUMBER;
8842 	x_api_rec.ORDER_TYPE_ID            := p_record.ORDER_TYPE_ID;
8843 	x_api_rec.PACKING_INSTRUCTIONS     := p_record.PACKING_INSTRUCTIONS;
8844 	x_api_rec.PAYMENT_TERM_ID          := p_record.PAYMENT_TERM_ID;
8845 	x_api_rec.PRICE_LIST_ID            := p_record.PRICE_LIST_ID;
8846 	x_api_rec.SALESREP_ID              := p_record.SALESREP_ID;
8847 	x_api_rec.SHIPPING_INSTRUCTIONS    := p_record.SHIPPING_INSTRUCTIONS;
8848 	x_api_rec.SHIPPING_METHOD_CODE     := p_record.SHIPPING_METHOD_CODE;
8849 	x_api_rec.SHIP_FROM_ORG_ID         := p_record.SHIP_FROM_ORG_ID;
8850 	x_api_rec.SHIP_TO_ORG_ID           := p_record.SHIP_TO_ORG_ID;
8851 	x_api_rec.SOLD_TO_CONTACT_ID       := p_record.SOLD_TO_CONTACT_ID;
8852 	x_api_rec.SOLD_TO_ORG_ID           := p_record.SOLD_TO_ORG_ID;
8853         x_api_rec.START_DATE_ACTIVE        := p_record.START_DATE_ACTIVE;
8854 	x_api_rec.TRANSACTIONAL_CURR_CODE  := p_record.TRANSACTIONAL_CURR_CODE;
8855 	x_api_rec.VERSION_NUMBER           := p_record.VERSION_NUMBER;
8856 
8857 	x_api_rec.CREATED_BY           := p_record.CREATED_BY;
8858 	x_api_rec.CREATION_DATE           := p_record.CREATION_DATE;
8859 	x_api_rec.REVISION_CHANGE_DATE           := p_record.REVISION_CHANGE_DATE;
8860 	x_api_rec.REVISION_CHANGE_REASON_CODE           := p_record.REVISION_CHANGE_REASON_CODE;
8861 	x_api_rec.REVISION_CHANGE_COMMENTS           := p_record.REVISION_CHANGE_COMMENTS;
8862 	x_api_rec.ENFORCE_SHIP_TO_FLAG           := p_record.ENFORCE_SHIP_TO_FLAG;
8863 	x_api_rec.ENFORCE_FREIGHT_TERM_FLAG           := p_record.ENFORCE_FREIGHT_TERM_FLAG;
8864 	x_api_rec.ENFORCE_SHIPPING_METHOD_FLAG           := p_record.ENFORCE_SHIPPING_METHOD_FLAG;
8865 	x_api_rec.ENFORCE_PRICE_LIST_FLAG           := p_record.ENFORCE_PRICE_LIST_FLAG;
8866 	x_api_rec.ENFORCE_PAYMENT_TERM_FLAG           := p_record.ENFORCE_PAYMENT_TERM_FLAG;
8867 	x_api_rec.ENFORCE_INVOICE_TO_FLAG           := p_record.ENFORCE_INVOICE_TO_FLAG;
8868 	x_api_rec.ENFORCE_INVOICING_RULE_FLAG           := p_record.ENFORCE_INVOICING_RULE_FLAG;
8869 	x_api_rec.ENFORCE_ACCOUNTING_RULE_FLAG           := p_record.ENFORCE_ACCOUNTING_RULE_FLAG;
8870 	x_api_rec.BLANKET_MIN_AMOUNT           := p_record.BLANKET_MIN_AMOUNT;
8871 	x_api_rec.BLANKET_MAX_AMOUNT           := p_record.BLANKET_MAX_AMOUNT;
8872 	x_api_rec.OVERRIDE_AMOUNT_FLAG           := p_record.OVERRIDE_AMOUNT_FLAG;
8873 	x_api_rec.ON_HOLD_FLAG           := p_record.ON_HOLD_FLAG;
8874 	x_api_rec.SUPPLIER_SIGNATURE            := p_record.SUPPLIER_SIGNATURE;
8875 	x_api_rec.SUPPLIER_SIGNATURE_DATE            := p_record.SUPPLIER_SIGNATURE_DATE;
8876 	x_api_rec.CUSTOMER_SIGNATURE            := p_record.CUSTOMER_SIGNATURE;
8877 	x_api_rec.CUSTOMER_SIGNATURE_DATE            := p_record.CUSTOMER_SIGNATURE_DATE;
8878 --	x_api_rec.QUOTE_NUMBER            := p_record.QUOTE_NUMBER;
8879 --	x_api_rec.QUOTE_DATE            := p_record.QUOTE_DATE;
8880 	x_api_rec.FLOW_STATUS_CODE            := p_record.FLOW_STATUS_CODE;
8881 	x_api_rec.SOURCE_DOCUMENT_TYPE_ID            := p_record.SOURCE_DOCUMENT_TYPE_ID;
8882 	x_api_rec.NEW_MODIFIER_LIST_ID            := p_record.NEW_MODIFIER_LIST_ID;
8883 	x_api_rec.NEW_PRICE_LIST_ID            := p_record.NEW_PRICE_LIST_ID;
8884 	x_api_rec.DEFAULT_DISCOUNT_PERCENT            := p_record.DEFAULT_DISCOUNT_PERCENT;
8885 	x_api_rec.DEFAULT_DISCOUNT_AMOUNT            := p_record.DEFAULT_DISCOUNT_AMOUNT;
8886 	x_api_rec.CONTRACT_TEMPLATE_ID            := p_record.CONTRACT_TERMS;
8887 	x_api_rec.OPEN_FLAG            := p_record.OPEN_FLAG;
8888         --bug 6531947
8889 
8890           x_api_rec.CONTEXT               := p_record.CONTEXT;
8891 	  x_api_rec.ATTRIBUTE1            := p_record.ATTRIBUTE1;
8892 	  x_api_rec.ATTRIBUTE2            := p_record.ATTRIBUTE2;
8893 	  x_api_rec.ATTRIBUTE3            := p_record.ATTRIBUTE3;
8894 	  x_api_rec.ATTRIBUTE4            := p_record.ATTRIBUTE4;
8895 	  x_api_rec.ATTRIBUTE5            := p_record.ATTRIBUTE5;
8896 	  x_api_rec.ATTRIBUTE6            := p_record.ATTRIBUTE6;
8897 	  x_api_rec.ATTRIBUTE7            := p_record.ATTRIBUTE7;
8898 	  x_api_rec.ATTRIBUTE8            := p_record.ATTRIBUTE8;
8899 	  x_api_rec.ATTRIBUTE9            := p_record.ATTRIBUTE9;
8900 	  x_api_rec.ATTRIBUTE10            := p_record.ATTRIBUTE10;
8901 	  x_api_rec.ATTRIBUTE11            := p_record.ATTRIBUTE11;
8902 	  x_api_rec.ATTRIBUTE12            := p_record.ATTRIBUTE12;
8903 	  x_api_rec.ATTRIBUTE13            := p_record.ATTRIBUTE13;
8904 	  x_api_rec.ATTRIBUTE14            := p_record.ATTRIBUTE14;
8905 	  x_api_rec.ATTRIBUTE15            := p_record.ATTRIBUTE15;
8906 	  x_api_rec.ATTRIBUTE16            := p_record.ATTRIBUTE16;
8907 	  x_api_rec.ATTRIBUTE17            := p_record.ATTRIBUTE17;
8908 	  x_api_rec.ATTRIBUTE18            := p_record.ATTRIBUTE18;
8909 	  x_api_rec.ATTRIBUTE19            := p_record.ATTRIBUTE19;
8910 	  x_api_rec.ATTRIBUTE20            := p_record.ATTRIBUTE20;
8911 
8912         -- QUOTING changes
8913 	x_api_rec.sales_document_name      := p_record.sales_document_name;
8914 	x_api_rec.transaction_phase_code   := p_record.transaction_phase_code;
8915 	x_api_rec.user_status_code         := p_record.user_status_code;
8916 	x_api_rec.draft_submitted_flag     := p_record.draft_submitted_flag;
8917 	x_api_rec.source_document_version_number := p_record.source_document_version_number;
8918 	x_api_rec.sold_to_site_use_id      := p_record.sold_to_site_use_id;
8919         -- QUOTING changes END
8920 
8921 EXCEPTION
8922 
8923 	WHEN OTHERS THEN
8924 	IF	OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
8925 	THEN
8926 		OE_MSG_PUB.Add_Exc_Msg
8927          	(   G_PKG_NAME
8928          	,   'Rowtype_Rec_To_API_Rec'
8929          	);
8930 	END IF;
8931 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8932 END Rowtype_Rec_To_API_Rec;
8933 
8934 FUNCTION G_MISS_OE_AK_BLKT_LINE_REC
8935 RETURN OE_AK_BLANKET_LINES_V%ROWTYPE IS
8936 	l_rowtype_rec					OE_AK_BLANKET_LINES_V%ROWTYPE;
8937 BEGIN
8938 
8939 	l_rowtype_rec.ACCOUNTING_RULE_ID			:= FND_API.G_MISS_NUM;
8940 	l_rowtype_rec.CUST_PO_NUMBER				:= FND_API.G_MISS_CHAR;
8941 	l_rowtype_rec.DELIVER_TO_ORG_ID				:= FND_API.G_MISS_NUM;
8942 	l_rowtype_rec.END_DATE_ACTIVE				:= FND_API.G_MISS_DATE;
8943 	l_rowtype_rec.FREIGHT_TERMS_CODE			:= FND_API.G_MISS_CHAR;
8944 	l_rowtype_rec.INVOICE_TO_ORG_ID				:= FND_API.G_MISS_NUM;
8945 	l_rowtype_rec.INVOICING_RULE_ID				:= FND_API.G_MISS_NUM;
8946 	l_rowtype_rec.LINE_ID					:= FND_API.G_MISS_NUM;
8947 	l_rowtype_rec.ORDER_NUMBER					:= FND_API.G_MISS_NUM;
8948 	l_rowtype_rec.PACKING_INSTRUCTIONS			:= FND_API.G_MISS_CHAR;
8949 	l_rowtype_rec.PAYMENT_TERM_ID				:= FND_API.G_MISS_NUM;
8950 	l_rowtype_rec.PRICE_LIST_ID					:= FND_API.G_MISS_NUM;
8951 	l_rowtype_rec.SALESREP_ID					:= FND_API.G_MISS_NUM;
8952 	l_rowtype_rec.SHIPPING_INSTRUCTIONS			:= FND_API.G_MISS_CHAR;
8953 	l_rowtype_rec.SHIPPING_METHOD_CODE			:= FND_API.G_MISS_CHAR;
8954 	l_rowtype_rec.SHIP_FROM_ORG_ID				:= FND_API.G_MISS_NUM;
8955 	l_rowtype_rec.SHIP_TO_ORG_ID				:= FND_API.G_MISS_NUM;
8956 	l_rowtype_rec.START_DATE_ACTIVE				:= FND_API.G_MISS_DATE;
8957 
8958 	l_rowtype_rec.LINE_NUMBER					:= FND_API.G_MISS_NUM;
8959 	l_rowtype_rec.PREFERRED_GRADE					:= FND_API.G_MISS_NUM;
8960 	l_rowtype_rec.ITEM_IDENTIFIER_TYPE              := FND_API.G_MISS_CHAR;
8961 	l_rowtype_rec.INVENTORY_ITEM_ID              := FND_API.G_MISS_NUM;
8962 	l_rowtype_rec.ORDER_QUANTITY_UOM              := FND_API.G_MISS_CHAR;
8963 	l_rowtype_rec.ENFORCE_SHIP_TO_FLAG           := FND_API.G_MISS_CHAR;
8964 	l_rowtype_rec.ENFORCE_FREIGHT_TERM_FLAG           := FND_API.G_MISS_CHAR;
8965 	l_rowtype_rec.ENFORCE_SHIPPING_METHOD_FLAG           := FND_API.G_MISS_CHAR;
8966 	l_rowtype_rec.ENFORCE_PRICE_LIST_FLAG           := FND_API.G_MISS_CHAR;
8967 	l_rowtype_rec.ENFORCE_PAYMENT_TERM_FLAG           := FND_API.G_MISS_CHAR;
8968 	l_rowtype_rec.ENFORCE_INVOICE_TO_FLAG           := FND_API.G_MISS_CHAR;
8969 	l_rowtype_rec.ENFORCE_INVOICING_RULE_FLAG           := FND_API.G_MISS_CHAR;
8970 	l_rowtype_rec.ENFORCE_ACCOUNTING_RULE_FLAG           := FND_API.G_MISS_CHAR;
8971 	l_rowtype_rec.BLANKET_LINE_MIN_AMOUNT           := FND_API.G_MISS_NUM;
8972 	l_rowtype_rec.BLANKET_LINE_MAX_AMOUNT           := FND_API.G_MISS_NUM;
8973 
8974 	l_rowtype_rec.BLANKET_MIN_QUANTITY              := FND_API.G_MISS_NUM;
8975 	l_rowtype_rec.BLANKET_MAX_QUANTITY              := FND_API.G_MISS_NUM;
8976 	l_rowtype_rec.MIN_RELEASE_AMOUNT              := FND_API.G_MISS_NUM;
8977 	l_rowtype_rec.MAX_RELEASE_AMOUNT              := FND_API.G_MISS_NUM;
8978 	l_rowtype_rec.MIN_RELEASE_QUANTITY              := FND_API.G_MISS_NUM;
8979 	l_rowtype_rec.MAX_RELEASE_QUANTITY              := FND_API.G_MISS_NUM;
8980 	l_rowtype_rec.OVERRIDE_BLANKET_CONTROLS_FLAG              := FND_API.G_MISS_CHAR;
8981 	l_rowtype_rec.OVERRIDE_RELEASE_CONTROLS_FLAG              := FND_API.G_MISS_CHAR;
8982 	l_rowtype_rec.SOURCE_DOCUMENT_TYPE_ID              := FND_API.G_MISS_NUM;
8983 	l_rowtype_rec.MODIFIER_LIST_LINE_ID              := FND_API.G_MISS_NUM;
8984 
8985     -- QUOTING changes
8986     l_rowtype_rec.TRANSACTION_PHASE_CODE          := FND_API.G_MISS_CHAR;
8987     l_rowtype_rec.SOURCE_DOCUMENT_VERSION_NUMBER  := FND_API.G_MISS_NUM;
8988 
8989         l_rowtype_rec.unit_list_price := fnd_api.g_miss_num;
8990         l_rowtype_rec.pricing_quantity_uom := fnd_api.g_miss_char;
8991         l_rowtype_rec.discount_percent := fnd_api.g_miss_num;
8992         l_rowtype_rec.discount_amount := fnd_api.g_miss_num;
8993 
8994 	RETURN l_rowtype_rec;
8995 
8996 EXCEPTION
8997 
8998 	WHEN OTHERS THEN
8999 		IF 	OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
9000 		THEN
9001 			OE_MSG_PUB.Add_Exc_Msg
9002 			(   G_PKG_NAME
9003 			,   'G_MISS_OE_AK_LINE_REC'
9004 			);
9005 		END IF;
9006 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9007 
9008 END G_MISS_OE_AK_BLKT_LINE_REC;
9009 
9010 PROCEDURE Line_API_Rec_To_Rowtype_Rec
9011 (   p_LINE_rec                    IN  OE_Blanket_PUB.LINE_Rec_Type
9012 ,   x_rowtype_rec                   IN OUT NOCOPY OE_AK_BLANKET_LINES_V%ROWTYPE
9013 ) IS
9014 BEGIN
9015 
9016 	x_rowtype_rec.ACCOUNTING_RULE_ID       := p_line_rec.ACCOUNTING_RULE_ID;
9017 	x_rowtype_rec.CUST_PO_NUMBER           := p_line_rec.CUST_PO_NUMBER;
9018 	x_rowtype_rec.DELIVER_TO_ORG_ID        := p_line_rec.DELIVER_TO_ORG_ID;
9019 	x_rowtype_rec.END_DATE_ACTIVE          := p_line_rec.END_DATE_ACTIVE;
9020 	x_rowtype_rec.FREIGHT_TERMS_CODE       := p_line_rec.FREIGHT_TERMS_CODE;
9021 	x_rowtype_rec.INVOICE_TO_ORG_ID        := p_line_rec.INVOICE_TO_ORG_ID;
9022 	x_rowtype_rec.INVOICING_RULE_ID        := p_line_rec.INVOICING_RULE_ID;
9023 	x_rowtype_rec.LINE_ID             := p_line_rec.LINE_ID;
9024 	x_rowtype_rec.ORDER_NUMBER             := p_line_rec.ORDER_NUMBER;
9025 	x_rowtype_rec.PACKING_INSTRUCTIONS     := p_line_rec.PACKING_INSTRUCTIONS;
9026 	x_rowtype_rec.PAYMENT_TERM_ID          := p_line_rec.PAYMENT_TERM_ID;
9027 	x_rowtype_rec.PRICE_LIST_ID            := p_line_rec.PRICE_LIST_ID;
9028 	x_rowtype_rec.SALESREP_ID              := p_line_rec.SALESREP_ID;
9029 	x_rowtype_rec.SHIPPING_INSTRUCTIONS    := p_line_rec.SHIPPING_INSTRUCTIONS;
9030 	x_rowtype_rec.SHIPPING_METHOD_CODE     := p_line_rec.SHIPPING_METHOD_CODE;
9031 	x_rowtype_rec.SHIP_FROM_ORG_ID         := p_line_rec.SHIP_FROM_ORG_ID;
9032 	x_rowtype_rec.SHIP_TO_ORG_ID           := p_line_rec.SHIP_TO_ORG_ID;
9033 	x_rowtype_rec.START_DATE_ACTIVE          := p_line_rec.START_DATE_ACTIVE;
9034 
9035 	x_rowtype_rec.LINE_NUMBER             := p_line_rec.LINE_NUMBER;
9036 	x_rowtype_rec.PREFERRED_GRADE              := p_line_rec.PREFERRED_GRADE;
9037 	x_rowtype_rec.ITEM_IDENTIFIER_TYPE              := p_line_rec.ITEM_IDENTIFIER_TYPE;
9038 	x_rowtype_rec.INVENTORY_ITEM_ID              := p_line_rec.INVENTORY_ITEM_ID;
9039 	x_rowtype_rec.ORDER_QUANTITY_UOM              := p_line_rec.ORDER_QUANTITY_UOM;
9040 	x_rowtype_rec.ENFORCE_SHIP_TO_FLAG           := p_line_rec.ENFORCE_SHIP_TO_FLAG;
9041 	x_rowtype_rec.ENFORCE_FREIGHT_TERM_FLAG           := p_line_rec.ENFORCE_FREIGHT_TERM_FLAG;
9042 	x_rowtype_rec.ENFORCE_SHIPPING_METHOD_FLAG           := p_line_rec.ENFORCE_SHIPPING_METHOD_FLAG;
9043 	x_rowtype_rec.ENFORCE_PRICE_LIST_FLAG           := p_line_rec.ENFORCE_PRICE_LIST_FLAG;
9044 	x_rowtype_rec.ENFORCE_PAYMENT_TERM_FLAG           := p_line_rec.ENFORCE_PAYMENT_TERM_FLAG;
9045 	x_rowtype_rec.ENFORCE_INVOICE_TO_FLAG           := p_line_rec.ENFORCE_INVOICE_TO_FLAG;
9046 	x_rowtype_rec.ENFORCE_INVOICING_RULE_FLAG           := p_line_rec.ENFORCE_INVOICING_RULE_FLAG;
9047 	x_rowtype_rec.ENFORCE_ACCOUNTING_RULE_FLAG           := p_line_rec.ENFORCE_ACCOUNTING_RULE_FLAG;
9048 	x_rowtype_rec.BLANKET_LINE_MIN_AMOUNT           := p_line_rec.BLANKET_MIN_AMOUNT;
9049 	x_rowtype_rec.BLANKET_LINE_MAX_AMOUNT           := p_line_rec.BLANKET_MAX_AMOUNT;
9050 
9051 	x_rowtype_rec.BLANKET_MIN_QUANTITY              := p_line_rec.BLANKET_MIN_QUANTITY;
9052 	x_rowtype_rec.BLANKET_MAX_QUANTITY              := p_line_rec.BLANKET_MAX_QUANTITY;
9053 	x_rowtype_rec.MIN_RELEASE_AMOUNT              := p_line_rec.MIN_RELEASE_AMOUNT;
9054 	x_rowtype_rec.MAX_RELEASE_AMOUNT              := p_line_rec.MAX_RELEASE_AMOUNT;
9055 	x_rowtype_rec.MIN_RELEASE_QUANTITY              := p_line_rec.MIN_RELEASE_QUANTITY;
9056 	x_rowtype_rec.MAX_RELEASE_QUANTITY              := p_line_rec.MAX_RELEASE_QUANTITY;
9057 	x_rowtype_rec.OVERRIDE_BLANKET_CONTROLS_FLAG              := p_line_rec.OVERRIDE_BLANKET_CONTROLS_FLAG;
9058 	x_rowtype_rec.OVERRIDE_RELEASE_CONTROLS_FLAG              := p_line_rec.OVERRIDE_RELEASE_CONTROLS_FLAG;
9059 	x_rowtype_rec.SOURCE_DOCUMENT_TYPE_ID              := p_line_rec.SOURCE_DOCUMENT_TYPE_ID;
9060 	x_rowtype_rec.MODIFIER_LIST_LINE_ID              := p_line_rec.MODIFIER_LIST_LINE_ID;
9061         --bug6531947
9062            x_rowtype_rec.CONTEXT               := p_line_rec.CONTEXT;
9063 	   x_rowtype_rec.ATTRIBUTE1            := p_line_rec.ATTRIBUTE1;
9064 	   x_rowtype_rec.ATTRIBUTE2            := p_line_rec.ATTRIBUTE2;
9065 	   x_rowtype_rec.ATTRIBUTE3            := p_line_rec.ATTRIBUTE3;
9066 	   x_rowtype_rec.ATTRIBUTE4            := p_line_rec.ATTRIBUTE4;
9067 	   x_rowtype_rec.ATTRIBUTE5            := p_line_rec.ATTRIBUTE5;
9068 	   x_rowtype_rec.ATTRIBUTE6            := p_line_rec.ATTRIBUTE6;
9069 	   x_rowtype_rec.ATTRIBUTE7            := p_line_rec.ATTRIBUTE7;
9070 	   x_rowtype_rec.ATTRIBUTE8            := p_line_rec.ATTRIBUTE8;
9071 	   x_rowtype_rec.ATTRIBUTE9            := p_line_rec.ATTRIBUTE9;
9072 	   x_rowtype_rec.ATTRIBUTE10            := p_line_rec.ATTRIBUTE10;
9073 	   x_rowtype_rec.ATTRIBUTE11            := p_line_rec.ATTRIBUTE11;
9074 	   x_rowtype_rec.ATTRIBUTE12            := p_line_rec.ATTRIBUTE12;
9075 	   x_rowtype_rec.ATTRIBUTE13            := p_line_rec.ATTRIBUTE13;
9076 	   x_rowtype_rec.ATTRIBUTE14            := p_line_rec.ATTRIBUTE14;
9077 	   x_rowtype_rec.ATTRIBUTE15            := p_line_rec.ATTRIBUTE15;
9078 	   x_rowtype_rec.ATTRIBUTE16            := p_line_rec.ATTRIBUTE16;
9079 	   x_rowtype_rec.ATTRIBUTE17            := p_line_rec.ATTRIBUTE17;
9080 	   x_rowtype_rec.ATTRIBUTE18            := p_line_rec.ATTRIBUTE18;
9081 	   x_rowtype_rec.ATTRIBUTE19            := p_line_rec.ATTRIBUTE19;
9082 	   x_rowtype_rec.ATTRIBUTE20            := p_line_rec.ATTRIBUTE20;
9083 
9084     -- QUOTING changes
9085     x_rowtype_rec.transaction_phase_code := p_line_rec.transaction_phase_code;
9086     x_rowtype_rec.source_document_version_number :=
9087                                 p_line_rec.source_document_version_number;
9088     x_rowtype_rec.unit_list_price := p_line_rec.unit_list_price;
9089     x_rowtype_rec.pricing_quantity_uom := p_line_rec.pricing_uom;
9090     x_rowtype_rec.discount_percent := p_line_rec.discount_percent;
9091     x_rowtype_rec.discount_amount := p_line_rec.discount_amount;
9092 
9093 EXCEPTION
9094 
9095 	WHEN OTHERS THEN
9096  		IF 	OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
9097 		THEN
9098    			OE_MSG_PUB.Add_Exc_Msg
9099          	(   G_PKG_NAME
9100          	,   'API_Rec_To_RowType_Rec'
9101          	);
9102      	END IF;
9103 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9104 END Line_API_Rec_To_RowType_Rec;
9105 
9106 PROCEDURE Line_Rowtype_Rec_To_API_Rec
9107 (   p_record                        IN  OE_AK_BLANKET_LINES_V%ROWTYPE
9108 ,   x_api_rec                       IN OUT NOCOPY OE_Blanket_PUB.LINE_Rec_Type
9109 ) IS
9110 BEGIN
9111 
9112 	x_api_rec.ACCOUNTING_RULE_ID       := p_record.ACCOUNTING_RULE_ID;
9113 	x_api_rec.CUST_PO_NUMBER           := p_record.CUST_PO_NUMBER;
9114 	x_api_rec.DELIVER_TO_ORG_ID        := p_record.DELIVER_TO_ORG_ID;
9115 	x_api_rec.END_DATE_ACTIVE          := p_record.END_DATE_ACTIVE;
9116 	x_api_rec.FREIGHT_TERMS_CODE       := p_record.FREIGHT_TERMS_CODE;
9117 	x_api_rec.INVOICE_TO_ORG_ID        := p_record.INVOICE_TO_ORG_ID;
9118 	x_api_rec.INVOICING_RULE_ID        := p_record.INVOICING_RULE_ID;
9119 	x_api_rec.LINE_ID        := p_record.LINE_ID;
9120 	x_api_rec.ORDER_NUMBER             := p_record.ORDER_NUMBER;
9121 	x_api_rec.PACKING_INSTRUCTIONS     := p_record.PACKING_INSTRUCTIONS;
9122 	x_api_rec.PAYMENT_TERM_ID          := p_record.PAYMENT_TERM_ID;
9123 	x_api_rec.PRICE_LIST_ID            := p_record.PRICE_LIST_ID;
9124 	x_api_rec.SALESREP_ID              := p_record.SALESREP_ID;
9125 	x_api_rec.SHIPPING_INSTRUCTIONS    := p_record.SHIPPING_INSTRUCTIONS;
9126 	x_api_rec.SHIPPING_METHOD_CODE     := p_record.SHIPPING_METHOD_CODE;
9127 	x_api_rec.SHIP_FROM_ORG_ID         := p_record.SHIP_FROM_ORG_ID;
9128 	x_api_rec.SHIP_TO_ORG_ID           := p_record.SHIP_TO_ORG_ID;
9129 	x_api_rec.START_DATE_ACTIVE          := p_record.START_DATE_ACTIVE;
9130 
9131 	x_api_rec.LINE_NUMBER             := p_record.LINE_NUMBER;
9132 	x_api_rec.PREFERRED_GRADE              := p_record.PREFERRED_GRADE;
9133 	x_api_rec.ITEM_IDENTIFIER_TYPE              := p_record.ITEM_IDENTIFIER_TYPE;
9134 	x_api_rec.INVENTORY_ITEM_ID              := p_record.INVENTORY_ITEM_ID;
9135 	x_api_rec.ORDER_QUANTITY_UOM              := p_record.ORDER_QUANTITY_UOM;
9136 	x_api_rec.ENFORCE_SHIP_TO_FLAG           := p_record.ENFORCE_SHIP_TO_FLAG;
9137 	x_api_rec.ENFORCE_FREIGHT_TERM_FLAG           := p_record.ENFORCE_FREIGHT_TERM_FLAG;
9138 	x_api_rec.ENFORCE_SHIPPING_METHOD_FLAG           := p_record.ENFORCE_SHIPPING_METHOD_FLAG;
9139 	x_api_rec.ENFORCE_PRICE_LIST_FLAG           := p_record.ENFORCE_PRICE_LIST_FLAG;
9140 	x_api_rec.ENFORCE_PAYMENT_TERM_FLAG           := p_record.ENFORCE_PAYMENT_TERM_FLAG;
9141 	x_api_rec.ENFORCE_INVOICE_TO_FLAG           := p_record.ENFORCE_INVOICE_TO_FLAG;
9142 	x_api_rec.ENFORCE_INVOICING_RULE_FLAG           := p_record.ENFORCE_INVOICING_RULE_FLAG;
9143 	x_api_rec.ENFORCE_ACCOUNTING_RULE_FLAG           := p_record.ENFORCE_ACCOUNTING_RULE_FLAG;
9144 	x_api_rec.BLANKET_MIN_AMOUNT           := p_record.BLANKET_LINE_MIN_AMOUNT;
9145 	x_api_rec.BLANKET_MAX_AMOUNT           := p_record.BLANKET_LINE_MAX_AMOUNT;
9146 
9147 	x_api_rec.BLANKET_MIN_QUANTITY              := p_record.BLANKET_MIN_QUANTITY;
9148 	x_api_rec.BLANKET_MAX_QUANTITY              := p_record.BLANKET_MAX_QUANTITY;
9149 	x_api_rec.MIN_RELEASE_AMOUNT              := p_record.MIN_RELEASE_AMOUNT;
9150 	x_api_rec.MAX_RELEASE_AMOUNT              := p_record.MAX_RELEASE_AMOUNT;
9151 	x_api_rec.MIN_RELEASE_QUANTITY              := p_record.MIN_RELEASE_QUANTITY;
9152 	x_api_rec.MAX_RELEASE_QUANTITY              := p_record.MAX_RELEASE_QUANTITY;
9153 	x_api_rec.OVERRIDE_BLANKET_CONTROLS_FLAG              := p_record.OVERRIDE_BLANKET_CONTROLS_FLAG;
9154 	x_api_rec.OVERRIDE_RELEASE_CONTROLS_FLAG              := p_record.OVERRIDE_RELEASE_CONTROLS_FLAG;
9155 	x_api_rec.SOURCE_DOCUMENT_TYPE_ID              := p_record.SOURCE_DOCUMENT_TYPE_ID;
9156 	x_api_rec.MODIFIER_LIST_LINE_ID              := p_record.MODIFIER_LIST_LINE_ID;
9157         --bug6531947
9158           x_api_rec.CONTEXT               := p_record.CONTEXT;
9159 	  x_api_rec.ATTRIBUTE1            := p_record.ATTRIBUTE1;
9160 	  x_api_rec.ATTRIBUTE2            := p_record.ATTRIBUTE2;
9161 	  x_api_rec.ATTRIBUTE3            := p_record.ATTRIBUTE3;
9162 	  x_api_rec.ATTRIBUTE4            := p_record.ATTRIBUTE4;
9163 	  x_api_rec.ATTRIBUTE5            := p_record.ATTRIBUTE5;
9164 	  x_api_rec.ATTRIBUTE6            := p_record.ATTRIBUTE6;
9165 	  x_api_rec.ATTRIBUTE7            := p_record.ATTRIBUTE7;
9166 	  x_api_rec.ATTRIBUTE8            := p_record.ATTRIBUTE8;
9167 	  x_api_rec.ATTRIBUTE9            := p_record.ATTRIBUTE9;
9168 	  x_api_rec.ATTRIBUTE10            := p_record.ATTRIBUTE10;
9169 	  x_api_rec.ATTRIBUTE11            := p_record.ATTRIBUTE11;
9170 	  x_api_rec.ATTRIBUTE12            := p_record.ATTRIBUTE12;
9171 	  x_api_rec.ATTRIBUTE13            := p_record.ATTRIBUTE13;
9172 	  x_api_rec.ATTRIBUTE14            := p_record.ATTRIBUTE14;
9173 	  x_api_rec.ATTRIBUTE15            := p_record.ATTRIBUTE15;
9174 	  x_api_rec.ATTRIBUTE16            := p_record.ATTRIBUTE16;
9175 	  x_api_rec.ATTRIBUTE17            := p_record.ATTRIBUTE17;
9176 	  x_api_rec.ATTRIBUTE18            := p_record.ATTRIBUTE18;
9177 	  x_api_rec.ATTRIBUTE19            := p_record.ATTRIBUTE19;
9178 	  x_api_rec.ATTRIBUTE20            := p_record.ATTRIBUTE20;
9179 
9180     -- QUOTING changes
9181     x_api_rec.transaction_phase_code := p_record.transaction_phase_code;
9182     x_api_rec.source_document_version_number :=
9183                                 p_record.source_document_version_number;
9184 
9185     x_api_rec.unit_list_price := p_record.unit_list_price;
9186     x_api_rec.pricing_uom := p_record.pricing_quantity_uom;
9187     x_api_rec.discount_percent := p_record.discount_percent;
9188     x_api_rec.discount_amount := p_record.discount_amount;
9189 
9190 EXCEPTION
9191 
9192 	WHEN OTHERS THEN
9193 	IF	OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
9194 	THEN
9195 		OE_MSG_PUB.Add_Exc_Msg
9196          	(   G_PKG_NAME
9197          	,   'Rowtype_Rec_To_API_Rec'
9198          	);
9199 	END IF;
9200 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9201 END Line_Rowtype_Rec_To_API_Rec;
9202 
9203 PROCEDURE Get_Inventory_Item
9204 (p_x_line_rec       IN OUT NOCOPY    OE_Blanket_Pub.Line_Rec_Type
9205 ,x_return_status    OUT NOCOPY /* file.sql.39 change */  VARCHAR2
9206 )
9207 IS
9208 l_attribute_value             VARCHAR2(2000);
9209 l_address_id                  VARCHAR2(2000):= NULL;
9210 l_cust_id                     NUMBER:= NULL;
9211 l_update_inventory_item       VARCHAR2(1) := FND_API.G_FALSE;
9212 l_inventory_item_id           NUMBER;
9213 l_error_code                  VARCHAR2(2000);
9214 l_error_flag                  VARCHAR2(2000);
9215 l_error_message               VARCHAR2(2000);
9216 BEGIN
9217  /*
9218          1.call  INV_CUSTOMER_ITEM_GRP.CI_Attribute_Value
9219            to get the inventory_item_id
9220            given the customer_item_id, and the new ship_from_org_id.
9221 
9222          2.check the value of the inventory_item_id returned:
9223            if internal item number return is not null, then
9224            assign the inventory_item_id to the out NOCOPY  {file.sql.39 change } parameter
9225            otherwise
9226            post  message OE_INVALIDATES_CUSTOMER_ITEM
9227            set return status to error.
9228           */
9229     x_return_status := FND_API.G_RET_STS_SUCCESS;
9230     oe_debug_pub.add('Entering Oe_blanket_util Get_Inventory_Item', 1);
9231     IF (p_x_line_rec.ship_to_org_id IS NOT NULL AND
9232         p_x_line_rec.ship_to_org_id <> FND_API.G_MISS_NUM) THEN
9233 
9234         SELECT  u.cust_acct_site_id,s.cust_account_id
9235         INTO  l_address_id,
9236               l_cust_id
9237         FROM  HZ_CUST_SITE_USES u,HZ_CUST_ACCT_SITES s
9238         WHERE  u.cust_acct_site_id = s.cust_acct_site_id
9239            AND u.site_use_id = p_x_line_rec.ship_to_org_id
9240            AND u.site_use_code = 'SHIP_TO';
9241         oe_debug_pub.add('ship to address:' || l_address_id||' - Customer:'||to_char(l_cust_id));
9242 
9243         IF l_cust_id <> p_x_line_rec.sold_to_org_id  THEN
9244           oe_debug_pub.add('Sold-To Customer:'||to_char(p_x_line_rec.sold_to_org_id));
9245           l_address_id := NULL;
9246         END IF;
9247 
9248     END IF;
9249 
9250     oe_debug_pub.add('INVENTORY_ITEM_ID Before calling CI_Attribute_Value '
9251 	||to_char(p_x_line_rec.inventory_item_id), 1);
9252     INV_CUSTOMER_ITEM_GRP.CI_Attribute_Value(
9253                      Z_Customer_Item_Id => p_x_line_rec.ordered_item_id
9254                    , Z_Customer_Id => p_x_line_rec.sold_to_org_id
9255                    , Z_Address_Id => l_address_id
9256                    , Z_Organization_Id => nvl(p_x_line_rec.ship_from_org_id, OE_Sys_Parameters.value('MASTER_ORGANIZATION_ID'))
9257                    , Z_Inventory_Item_Id => p_x_line_rec.inventory_item_id
9258                    , Attribute_Name => 'INVENTORY_ITEM_ID'
9259                    , Error_Code => l_error_code
9260                    , Error_Flag => l_error_flag
9261                    , Error_Message => l_error_message
9262                    , Attribute_Value => l_attribute_value
9263                      );
9264 
9265     oe_debug_pub.add('INVENTORY_ITEM_ID After call is '||l_attribute_value, 1);
9266     IF (l_attribute_value IS NOT NULL AND
9267        to_number(l_attribute_value) <> p_x_line_rec.inventory_item_id) THEN
9268        oe_debug_pub.add('Assigning new inventory_item_id', 1);
9269        l_update_inventory_item := FND_API.G_TRUE;
9270        l_inventory_item_id := TO_NUMBER(l_attribute_value);
9271     ELSIF to_number(l_attribute_value) = p_x_line_rec.inventory_item_id THEN
9272        NULL;
9273     ELSE
9274        oe_debug_pub.add('Issue error message', 1);
9275        fnd_message.set_name('ONT','OE_INVALIDATES_CUSTOMER_ITEM');
9276        OE_MSG_PUB.Add;
9277        x_return_status := FND_API.G_RET_STS_ERROR;
9278     END IF;
9279 END Get_Inventory_Item;
9280 
9281 -- for bug 4447494
9282 PROCEDURE validate_sold_to(p_header_id      IN NUMBER,
9283                            p_sold_to_org_id IN NUMBER,
9284                            x_return_status  OUT NOCOPY VARCHAR2)
9285 IS
9286 --
9287 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
9288 L_DUMMY VARCHAR2(30) := 'VALID';
9289 l_invoice_to_org_id number;
9290 l_deliver_to_org_id number;
9291 l_ship_To_org_id    number;
9292 L_LINE_ID           number;
9293 --
9294 cursor c1 is
9295 select sold_to_org_id,
9296        line_id,
9297        ship_to_org_id,
9298        deliver_to_org_id,
9299        invoice_to_org_id
9300 from
9301     oe_blanket_lines_all where header_id = p_header_id;
9302  mc1x c1%ROWTYPE;
9303 
9304 BEGIN
9305     OE_MSG_PUB.initialize;
9306     x_return_status := FND_API.G_RET_STS_SUCCESS;
9307     IF l_debug_level  > 0 THEN
9308        oe_debug_pub.add('ENTERING OE_Blanket_util.validate_sold_to:');
9309        oe_debug_pub.add('DB Line ID : '|| TO_CHAR (mc1x.line_id) ,1);
9310        oe_debug_pub.add('DB Sold To Org ID : '|| TO_CHAR (mc1x.sold_to_org_id) ,1);
9311        oe_debug_pub.add('actual Hdr Sold To Org ID : '|| TO_CHAR (p_sold_to_org_id) ,1);
9312     END IF;
9313 
9314     -- Open the cursor
9315     OPEN c1;
9316     loop
9317       FETCH c1 into mc1x;
9318       exit when c1%NOTFOUND;
9319        oe_debug_pub.add('DB Line To : '|| TO_CHAR (mc1x.Line_id) ,1);
9320        oe_debug_pub.add('DB Ship To : '|| TO_CHAR (mc1x.ship_to_org_id) ,1);
9321        oe_debug_pub.add('DB Del ID  : '|| TO_CHAR (mc1x.deliver_to_org_id) ,1);
9322        oe_debug_pub.add('DB Invo ID : '|| TO_CHAR (mc1x.invoice_to_org_id) ,1);
9323        if mc1x.ship_to_org_id is not null then
9324          --Ship to
9325          BEGIN
9326              SELECT 'VALID' INTO   l_dummy
9327              FROM   oe_ship_to_orgs_v
9328              WHERE  customer_id = p_sold_to_org_id
9329              AND    site_use_id = mc1x.ship_to_org_id
9330              AND    status = 'A'
9331              and    address_status='A';
9332          EXCEPTION
9333              WHEN NO_DATA_FOUND THEN
9334                   if l_debug_level > 0 then
9335                    oe_debug_pub.add ('OE_blanket_util.validate_sold_to Blanket In ship to No data found',2);
9336                   end if;
9337                   l_dummy := 'INVALID';
9338                    x_return_status := FND_API.G_RET_STS_ERROR;
9339                    fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
9340                    FND_MESSAGE.SET_TOKEN('ATTRIBUTE'
9341                       , OE_Order_Util.Get_Attribute_Name('ship_to_org_id'));
9342                    OE_MSG_PUB.Add;
9343              WHEN OTHERS THEN
9344                   if l_debug_level > 0 then
9345                    oe_debug_pub.add ('OE_blanket_util.validate_sold_to WOE Blanket In Ship No data found',2);
9346                   end if;
9347                  l_dummy := 'INVALID';
9348                  x_return_status := FND_API.G_RET_STS_ERROR;
9349                  IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
9350                       OE_MSG_PUB.Add_Exc_Msg (  G_PKG_NAME , 'Record - Ship To');
9351                  END IF;
9352                  --RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9353          END ;
9354        end if;
9355        if mc1x.deliver_to_org_id is not null then
9356          -- Deliver to
9357          BEGIN
9358              SELECT 'VALID' INTO   l_dummy
9359              FROM   oe_deliver_to_orgs_v
9360              WHERE  customer_id = p_sold_to_org_id
9361              AND    site_use_id = mc1x.deliver_to_org_id
9362              AND     status = 'A'
9363              and    address_status='A'; --2752321
9364 
9365          EXCEPTION
9366              WHEN NO_DATA_FOUND THEN
9367                   if l_debug_level > 0 then
9368                    oe_debug_pub.add ('OE_blanket_util.validate_sold_to Blanket In deliver No data found',2);
9369                   end if;
9370                  l_dummy := 'INVALID';
9371                  x_return_status := FND_API.G_RET_STS_ERROR;
9372                  fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
9373                  FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
9374                  OE_Order_Util.Get_Attribute_Name('deliver_to_org_id'));
9375                  OE_MSG_PUB.Add;
9376              WHEN OTHERS THEN
9377                  if l_debug_level > 0 then
9378                    oe_debug_pub.add ('OE_blanket_util.validate_sold_to WOE Blanket In Deliver No data found',2);
9379                  end if;
9380                  l_dummy := 'INVALID';
9381                  x_return_status := FND_API.G_RET_STS_ERROR;
9382                  IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
9383                       OE_MSG_PUB.Add_Exc_Msg (  G_PKG_NAME , 'Record - Deliver To');
9384                  END IF;
9385                  --RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9386          END;
9387        end if;
9388        if mc1x.invoice_to_org_id is not null then
9389          -- Invoice To
9390          BEGIN
9391              Select 'VALID' Into   l_dummy
9392              from   oe_invoice_to_orgs_v
9393              Where  customer_id = p_sold_to_org_id
9394              AND    site_use_id = mc1x.invoice_to_org_id;
9395          EXCEPTION
9396              WHEN NO_DATA_FOUND THEN
9397                   if l_debug_level > 0 then
9398                    oe_debug_pub.add ('OE_blanket_util.validate_sold_to Blanket In invoice  No data found',2);
9399                   end if;
9400                   l_dummy := 'INVALID';
9401                   x_return_status := FND_API.G_RET_STS_ERROR;
9402                   fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
9403                   FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
9404                   OE_Order_Util.Get_Attribute_Name('invoice_to_org_id'));
9405                   OE_MSG_PUB.Add;
9406             WHEN OTHERS THEN
9407                   if l_debug_level > 0 then
9408                    oe_debug_pub.add ('OE_blanket_util.validate_sold_to WOE Blanket In Invoice  No data found',2);
9409                   end if;
9410                   l_dummy := 'INVALID';
9411                   x_return_status := FND_API.G_RET_STS_ERROR;
9412                   IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
9413                          OE_MSG_PUB.Add_Exc_Msg (  G_PKG_NAME , 'Record - Invoice To');
9414                   END IF;
9415                   --RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9416          END;
9417        end if;
9418     END LOOP;
9419     CLOSE C1;
9420     if l_debug_level > 0 then
9421        oe_debug_pub.add ('OE_blanket_util.validate_sold_to After Close  In Invoice '||x_return_status,2);
9422     end if;
9423 
9424     if x_return_status = FND_API.G_RET_STS_ERROR then
9425        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9426     elsif l_dummy = 'VALID' then
9427        update oe_blanket_lines_all set sold_to_org_id = p_sold_to_org_id
9428        where header_id = p_header_id;
9429     end if;
9430     IF l_debug_level  > 0 THEN
9431        oe_debug_pub.add('EXISTING OE_Blanket_util.validate_sold_to: '|| TO_CHAR (p_header_id) ,1);
9432     END IF;
9433 END  validate_sold_to;
9434 
9435 -- New procedure added for 5528599 start
9436 PROCEDURE  valid_blanket_dates
9437 ( p_header_id                 IN NUMBER,
9438   x_return_status             OUT NOCOPY VARCHAR2,
9439   x_msg_count                 OUT NOCOPY NUMBER,
9440   x_msg_data                  OUT NOCOPY VARCHAR2)
9441 
9442 IS
9443 
9444 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
9445 l_header_rec  OE_Blanket_Pub.header_rec_type;
9446 l_line_tbl    OE_Blanket_Pub.line_tbl_type;
9447 K             NUMBER :=1;
9448 BEGIN
9449  --bug#5528507
9450     x_return_status := FND_API.G_RET_STS_SUCCESS;
9451     oe_debug_pub.add('In the valid_blanket_dates',1);
9452 
9453     Query_Blanket(p_header_id           => p_header_id
9454                  ,p_x_header_rec        => l_header_rec
9455                  ,p_x_line_tbl          => l_line_tbl
9456                  ,x_return_status       => x_return_status);
9457 
9458 
9459      if ( x_return_status = 'S')
9460        then
9461             oe_debug_pub.add('End Date :'||trunc(l_header_rec.end_date_active),1);
9462             oe_debug_pub.add('Sysdate :'||trunc(sysdate),1);
9463 
9464        OE_MSG_PUB.set_msg_context(
9465             p_entity_code                  => 'BLANKET_HEADER'
9466            ,p_entity_id                    => l_header_rec.header_id
9467            ,p_header_id                    => l_header_rec.header_id
9468            ,p_line_id                      => null
9469            ,p_orig_sys_document_ref        => null
9470            ,p_orig_sys_document_line_ref   => null
9471            ,p_change_sequence              => null
9472            ,p_source_document_id           => null
9473            ,p_source_document_line_id      => null
9474            ,p_order_source_id            => null
9475            ,p_source_document_type_id    => null);
9476 
9477           if (trunc(l_header_rec.end_date_active) < trunc(sysdate))
9478              then
9479               FND_MESSAGE.SET_NAME('ONT','OE_BLKT_INVALID_DATE_RANGE');
9480               OE_MSG_PUB.ADD;
9481               x_return_status := FND_API.G_RET_STS_ERROR;
9482            end if;
9483 
9484 
9485    K := l_line_tbl.FIRST;
9486              oe_debug_pub.add('validating Lines ',1);
9487   WHILE K IS NOT NULL
9488    LOOP
9489 
9490     OE_MSG_PUB.set_msg_context(
9491          p_entity_code                  => 'BLANKET_LINE'
9492         ,p_entity_id                    => l_line_tbl(K).line_id
9493         ,p_header_id                    => l_line_tbl(K).header_id
9494         ,p_line_id                      => l_line_tbl(K).line_id
9495         ,p_orig_sys_document_ref        => null
9496         ,p_orig_sys_document_line_ref   => null
9497         ,p_change_sequence              => null
9498         ,p_source_document_id           => null
9499         ,p_source_document_line_id      => null
9500         ,p_order_source_id            => null
9501         ,p_source_document_type_id    => null);
9502 
9503           oe_debug_pub.add('start date active:'|| l_line_tbl(K).start_date_active,1);
9504           oe_debug_pub.add('end_date_active :'|| l_line_tbl(K).end_date_active,1);
9505           oe_debug_pub.add('SYSDATE :'|| trunc(sysdate),1);
9506 
9507        if (l_line_tbl(K).end_date_active is not NULL and
9508           (l_line_tbl(K).start_date_active)
9509               > (l_line_tbl(K).end_date_active)) THEN
9510               FND_MESSAGE.SET_NAME('ONT','OE_BLKT_INVALID_DATE_RANGE');
9511               OE_MSG_PUB.ADD;
9512               x_return_status := FND_API.G_RET_STS_ERROR;
9513        end if;
9514 
9515        if( trunc(l_line_tbl(K).end_date_active) < trunc(sysdate))
9516          then
9517               FND_MESSAGE.SET_NAME('ONT','OE_BLKT_INVALID_DATE_RANGE');
9518               OE_MSG_PUB.ADD;
9519               x_return_status := FND_API.G_RET_STS_ERROR;
9520         end if;
9521 
9522      K:= l_line_tbl.next(K);
9523    END LOOP;
9524 
9525         OE_MSG_PUB.Count_And_Get
9526         (   p_count                       => x_msg_count
9527         ,   p_data                        => x_msg_data
9528         );
9529 
9530  END IF;
9531 
9532   EXCEPTION
9533     when others then
9534     null;
9535 
9536 END valid_blanket_dates;
9537 -- New procedure added for 5528599 end
9538 Procedure IS_Batch_Call( p_application_id IN NUMBER,
9539                                         p_entity_short_name in VARCHAR2,
9540                                         p_validation_entity_short_name in VARCHAR2,
9541                                         p_validation_tmplt_short_name in VARCHAR2,
9542                                         p_record_set_tmplt_short_name in VARCHAR2,
9543                                         p_scope in VARCHAR2,
9544                                         p_result OUT NOCOPY NUMBER ) IS
9545 
9546 --
9547 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
9548 --
9549 BEGIN
9550     if l_debug_level > 0 then
9551         oe_debug_pub.add('Enter OE_Blanket_Util.Batch_Call');
9552     end if;
9553 
9554   if OE_GLOBALS.G_UI_FLAG THEN
9555      oe_debug_pub.add(' UI Call ');
9556    ELSE
9557      oe_debug_pub.add(' Batch call' );
9558   end if;
9559      IF NOT (OE_GLOBALS.G_UI_FLAG ) THEN
9560      p_result :=1;
9561     ELSE
9562     p_result :=0;
9563    END IF;
9564 --END IF;
9565 END Is_Batch_Call;
9566 
9567 END OE_Blanket_UTIL;