DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_ORDER_GRP

Source


1 PACKAGE BODY OE_Order_GRP AS
2 /* $Header: OEXGORDB.pls 120.19.12020000.2 2013/01/17 15:52:00 sujithku ship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'OE_Order_GRP';
7 
8 -- Local procedure: Control_Rec_For_Service_Level
9 PROCEDURE Control_Rec_For_Service_Level
10 ( p_api_service_level		IN VARCHAR2
11 , p_control_rec			IN OE_GLOBALS.Control_Rec_Type
12 , p_validation_level		IN VARCHAR2
13 , x_control_rec			OUT NOCOPY /* file.sql.39 change */ OE_GLOBALS.Control_Rec_Type
14 , x_validation_level		OUT NOCOPY /* file.sql.39 change */ VARCHAR2
15 )
16 IS
17 BEGIN
18 
19 	IF  p_control_rec.controlled_operation THEN
20 		x_control_rec.process_partial 	:= p_control_rec.process_partial;
21 	END IF;
22 
23 	IF p_api_service_level = OE_GLOBALS.G_CHECK_SECURITY_ONLY THEN
24 
25 		x_control_rec.controlled_operation	:= TRUE;
26 		x_control_rec.check_security		:= TRUE;
27                 -- Bug 2988993 => clear_dependents should also be FALSE
28                 -- if default attributes should be FALSE
29 		x_control_rec.clear_dependents          := FALSE;
30 		x_control_rec.default_attributes	:= FALSE;
31 		x_control_rec.change_attributes		:= FALSE;
32 		x_control_rec.validate_entity		:= FALSE;
33 		x_control_rec.write_to_db		:= FALSE;
34 		x_control_rec.process			:= FALSE;
35 
36 		x_validation_level			:= FND_API.G_VALID_LEVEL_NONE;
37 
38 	ELSIF p_api_service_level = OE_GLOBALS.G_VALIDATION_ONLY THEN
39 
40 		x_control_rec.controlled_operation	:= TRUE;
41 		x_control_rec.check_security		:= TRUE;
42 		x_control_rec.default_attributes	:= TRUE;
43 		x_control_rec.change_attributes		:= TRUE;
44 		x_control_rec.validate_entity		:= TRUE;
45 		x_control_rec.write_to_db		:= TRUE;
46 		x_control_rec.process			:= FALSE;
47 
48         -- No check for branch scheduling is needed. Therefore, removing the
49         -- check for profile value.
50         OE_SCHEDULE_UTIL.OESCH_PERFORM_SCHEDULING   := 'N';
51 
52 
53 		x_validation_level			:= FND_API.G_VALID_LEVEL_FULL;
54 
55 
56 	ELSE
57 
58 		x_control_rec.controlled_operation	:= p_control_rec.controlled_operation;
59 		x_control_rec.private_call		:= FALSE;
60 
61 		x_validation_level			:= p_validation_level;
62 
63 	END IF;
64 
65         x_control_rec.require_reason := p_control_rec.require_reason;
66 
67 END Control_Rec_For_Service_Level;
68 
69 --For bug 3390458
70 Procedure RTrim_data
71 (  p_x_header_rec IN OUT NOCOPY OE_Order_Pub.Header_Rec_Type
72  , p_x_line_tbl  IN OUT NOCOPY OE_Order_Pub.Line_Tbl_Type
73  , x_return_status OUT NOCOPY /* file.sql.39 change */ Varchar2)
74 IS
75 BEGIN
76 
77 p_x_header_rec.transactional_curr_code:=RTRIM(p_x_header_rec.transactional_curr_code,' ');
78 p_x_header_rec.packing_instructions:=RTRIM(p_x_header_rec.packing_instructions,' ');
79 p_x_header_rec.shipping_instructions:=RTRIM(p_x_header_rec.shipping_instructions,' ');
80 p_x_header_rec.cust_po_number:=RTRIM(p_x_header_rec.cust_po_number,' ');
81 p_x_header_rec.tp_context:=RTRIM(p_x_header_rec.tp_context,' ');
82 p_x_header_rec.tp_attribute1:=RTRIM(p_x_header_rec.tp_attribute1,' ');
83 p_x_header_rec.tp_attribute2:=RTRIM(p_x_header_rec.tp_attribute2,' ');
84 p_x_header_rec.tp_attribute3:=RTRIM(p_x_header_rec.tp_attribute3,' ');
85 p_x_header_rec.tp_attribute4:=RTRIM(p_x_header_rec.tp_attribute4,' ');
86 p_x_header_rec.tp_attribute5:=RTRIM(p_x_header_rec.tp_attribute5,' ');
87 p_x_header_rec.tp_attribute6:=RTRIM(p_x_header_rec.tp_attribute6,' ');
88 p_x_header_rec.tp_attribute7:=RTRIM(p_x_header_rec.tp_attribute7,' ');
89 p_x_header_rec.tp_attribute8:=RTRIM(p_x_header_rec.tp_attribute8,' ');
90 p_x_header_rec.tp_attribute9:=RTRIM(p_x_header_rec.tp_attribute9,' ');
91 p_x_header_rec.tp_attribute10:=RTRIM(p_x_header_rec.tp_attribute10,' ');
92 p_x_header_rec.tp_attribute11:=RTRIM(p_x_header_rec.tp_attribute11,' ');
93 p_x_header_rec.tp_attribute12:=RTRIM(p_x_header_rec.tp_attribute12,' ');
94 p_x_header_rec.tp_attribute13:=RTRIM(p_x_header_rec.tp_attribute13,' ');
95 p_x_header_rec.tp_attribute14:=RTRIM(p_x_header_rec.tp_attribute14,' ');
96 p_x_header_rec.tp_attribute15:=RTRIM(p_x_header_rec.tp_attribute15,' ');
97 
98   FOR I IN 1..p_x_line_tbl.COUNT
99   LOOP
100      p_x_line_tbl(I).customer_dock_code:=RTRIM(p_x_line_tbl(I).customer_dock_code,' ');
101      p_x_line_tbl(I).customer_job:=RTRIM(p_x_line_tbl(I).customer_job,' ');
102      p_x_line_tbl(I).cust_production_seq_num:=RTRIM(p_x_line_tbl(I).cust_production_seq_num,' ');
103      p_x_line_tbl(I).customer_production_line:=RTRIM(p_x_line_tbl(I).customer_production_line,' ');
104      p_x_line_tbl(I).end_item_unit_number:=RTRIM(p_x_line_tbl(I).end_item_unit_number,' ');
105      p_x_line_tbl(I).user_item_description:=RTRIM(p_x_line_tbl(I).user_item_description,' ');
106      p_x_line_tbl(I).packing_instructions:=RTRIM(p_x_line_tbl(I).packing_instructions,' ');
107      p_x_line_tbl(I).shipping_instructions:=RTRIM(p_x_line_tbl(I).shipping_instructions,' ');
108      p_x_line_tbl(I).cust_po_number:=RTRIM(p_x_line_tbl(I).cust_po_number,' ');
109      p_x_line_tbl(I).cust_model_serial_number:=RTRIM(p_x_line_tbl(I).cust_model_serial_number,' ');
110      p_x_line_tbl(I).tp_context:=RTRIM(p_x_line_tbl(I).tp_context,' ');
111      p_x_line_tbl(I).tp_attribute1:=RTRIM(p_x_line_tbl(I).tp_attribute1,' ');
112      p_x_line_tbl(I).tp_attribute2:=RTRIM(p_x_line_tbl(I).tp_attribute2,' ');
113      p_x_line_tbl(I).tp_attribute3:=RTRIM(p_x_line_tbl(I).tp_attribute3,' ');
114      p_x_line_tbl(I).tp_attribute4:=RTRIM(p_x_line_tbl(I).tp_attribute4,' ');
115      p_x_line_tbl(I).tp_attribute5:=RTRIM(p_x_line_tbl(I).tp_attribute5,' ');
116      p_x_line_tbl(I).tp_attribute6:=RTRIM(p_x_line_tbl(I).tp_attribute6,' ');
117      p_x_line_tbl(I).tp_attribute7:=RTRIM(p_x_line_tbl(I).tp_attribute7,' ');
118      p_x_line_tbl(I).tp_attribute8:=RTRIM(p_x_line_tbl(I).tp_attribute8,' ');
119      p_x_line_tbl(I).tp_attribute9:=RTRIM(p_x_line_tbl(I).tp_attribute9,' ');
120      p_x_line_tbl(I).tp_attribute10:=RTRIM(p_x_line_tbl(I).tp_attribute10,' ');
121      p_x_line_tbl(I).tp_attribute11:=RTRIM(p_x_line_tbl(I).tp_attribute11,' ');
122      p_x_line_tbl(I).tp_attribute12:=RTRIM(p_x_line_tbl(I).tp_attribute12,' ');
123      p_x_line_tbl(I).tp_attribute13:=RTRIM(p_x_line_tbl(I).tp_attribute13,' ');
124      p_x_line_tbl(I).tp_attribute14:=RTRIM(p_x_line_tbl(I).tp_attribute14,' ');
125      p_x_line_tbl(I).tp_attribute15:=RTRIM(p_x_line_tbl(I).tp_attribute15,' ');
126 
127   END LOOP;
128 
129 END RTrim_data;
130 
131 
132 --  Start of Comments
133 --  API name    Process_Order
134 --  Type        Group
135 --  Function    OverLoaded
136 --
137 --  Pre-reqs
138 --
139 --  Parameters
140 --
141 --  Version     Current version = 1.0
142 --              Initial version = 1.0
143 --
144 --  Notes
145 --
146 --  End of Comments
147 
148 PROCEDURE Process_Order
149 (   p_api_version_number            IN  NUMBER
150 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
151 ,   p_return_values                 IN  VARCHAR2 := FND_API.G_FALSE
152 ,   p_commit                        IN  VARCHAR2 := FND_API.G_FALSE
153 ,   p_validation_level              IN  NUMBER := FND_API.G_VALID_LEVEL_FULL
154 ,   p_control_rec		    IN  OE_GLOBALS.Control_Rec_Type :=
155 					OE_GLOBALS.G_MISS_CONTROL_REC
156 ,   p_api_service_level		    IN  VARCHAR2 := OE_GLOBALS.G_ALL_SERVICE
157 ,   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
158 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
159 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
160 ,   p_header_rec                    IN  OE_Order_Pub.Header_Rec_Type :=
161                                         OE_Order_PUB.G_MISS_HEADER_REC
162 ,   p_old_header_rec                IN  OE_Order_PUB.Header_Rec_Type :=
163                                         OE_Order_PUB.G_MISS_HEADER_REC
164 ,   p_header_val_rec                IN  OE_Order_PUB.Header_Val_Rec_Type :=
165                                         OE_Order_PUB.G_MISS_HEADER_VAL_REC
166 ,   p_old_header_val_rec            IN  OE_Order_PUB.Header_Val_Rec_Type :=
167                                         OE_Order_PUB.G_MISS_HEADER_VAL_REC
168 ,   p_Header_Adj_tbl                IN  OE_Order_PUB.Header_Adj_Tbl_Type :=
169                                         OE_Order_PUB.G_MISS_HEADER_ADJ_TBL
170 ,   p_old_Header_Adj_tbl            IN  OE_Order_PUB.Header_Adj_Tbl_Type :=
171                                         OE_Order_PUB.G_MISS_HEADER_ADJ_TBL
172 ,   p_Header_Adj_val_tbl            IN  OE_Order_PUB.Header_Adj_Val_Tbl_Type :=
173                                         OE_Order_PUB.G_MISS_HEADER_ADJ_VAL_TBL
174 ,   p_old_Header_Adj_val_tbl        IN  OE_Order_PUB.Header_Adj_Val_Tbl_Type :=
175                                         OE_Order_PUB.G_MISS_HEADER_ADJ_VAL_TBL
176 ,   p_Header_price_Att_tbl          IN  OE_Order_PUB.Header_Price_Att_Tbl_Type :=
177                                         OE_Order_PUB.G_MISS_HEADER_PRICE_ATT_TBL
178 ,   p_old_Header_Price_Att_tbl      IN  OE_Order_PUB.Header_Price_Att_Tbl_Type :=
179                                         OE_Order_PUB.G_MISS_HEADER_PRICE_ATT_TBL
180 ,   p_Header_Adj_Att_tbl            IN  OE_Order_PUB.Header_Adj_Att_Tbl_Type :=
181                                         OE_Order_PUB.G_MISS_HEADER_ADJ_ATT_TBL
182 ,   p_old_Header_Adj_Att_tbl        IN  OE_Order_PUB.Header_Adj_Att_Tbl_Type :=
183     OE_Order_PUB.G_MISS_HEADER_ADJ_ATT_TBL
184 ,   p_Header_Adj_Assoc_tbl          IN  OE_Order_PUB.Header_Adj_Assoc_Tbl_Type :=
185                                         OE_Order_PUB.G_MISS_HEADER_ADJ_ASSOC_TBL
186 ,   p_old_Header_Adj_Assoc_tbl      IN  OE_Order_PUB.Header_Adj_Assoc_Tbl_Type :=
187     OE_Order_PUB.G_MISS_HEADER_ADJ_ASSOC_TBL
188 ,   p_Header_Scredit_tbl            IN  OE_Order_PUB.Header_Scredit_Tbl_Type :=
189                                         OE_Order_PUB.G_MISS_HEADER_SCREDIT_TBL
190 ,   p_old_Header_Scredit_tbl        IN  OE_Order_PUB.Header_Scredit_Tbl_Type :=
191                                         OE_Order_PUB.G_MISS_HEADER_SCREDIT_TBL
192 ,   p_Header_Scredit_val_tbl        IN  OE_Order_PUB.Header_Scredit_Val_Tbl_Type :=
193                                         OE_Order_PUB.G_MISS_HEADER_SCREDIT_VAL_TBL
194 ,   p_old_Header_Scredit_val_tbl    IN  OE_Order_PUB.Header_Scredit_Val_Tbl_Type :=
195                                         OE_Order_PUB.G_MISS_HEADER_SCREDIT_VAL_TBL
196 ,   p_header_Payment_tbl            IN  OE_Order_PUB.Header_Payment_Tbl_Type :=
197                                         OE_Order_PUB.G_MISS_HEADER_PAYMENT_TBL
198 ,   p_old_header_Payment_tbl        IN  OE_Order_PUB.Header_Payment_Tbl_Type :=
199                                         OE_Order_PUB.G_MISS_HEADER_PAYMENT_TBL
200 ,   p_Header_Payment_val_tbl        IN  OE_Order_PUB.Header_Payment_Val_Tbl_Type :=
201                                         OE_Order_PUB.G_MISS_HEADER_PAYMENT_VAL_TBL
202 ,   p_old_Header_Payment_val_tbl    IN  OE_Order_PUB.Header_Payment_Val_Tbl_Type:=
203                                         OE_Order_PUB.G_MISS_HEADER_PAYMENT_VAL_TBL
204 ,   p_line_tbl                      IN  OE_Order_PUB.Line_Tbl_Type :=
205                                         OE_Order_PUB.G_MISS_LINE_TBL
206 ,   p_old_line_tbl                  IN  OE_Order_PUB.Line_Tbl_Type :=
207                                         OE_Order_PUB.G_MISS_LINE_TBL
208 ,   p_line_val_tbl                  IN  OE_Order_PUB.Line_Val_Tbl_Type :=
209                                         OE_Order_PUB.G_MISS_LINE_VAL_TBL
210 ,   p_old_line_val_tbl              IN  OE_Order_PUB.Line_Val_Tbl_Type :=
211                                         OE_Order_PUB.G_MISS_LINE_VAL_TBL
212 ,   p_Line_Adj_tbl                  IN  OE_Order_PUB.Line_Adj_Tbl_Type :=
213                                         OE_Order_PUB.G_MISS_LINE_ADJ_TBL
214 ,   p_old_Line_Adj_tbl              IN  OE_Order_PUB.Line_Adj_Tbl_Type :=
215                                         OE_Order_PUB.G_MISS_LINE_ADJ_TBL
216 ,   p_Line_Adj_val_tbl              IN  OE_Order_PUB.Line_Adj_Val_Tbl_Type :=
217                                         OE_Order_PUB.G_MISS_LINE_ADJ_VAL_TBL
218 ,   p_old_Line_Adj_val_tbl          IN  OE_Order_PUB.Line_Adj_Val_Tbl_Type :=
219                                         OE_Order_PUB.G_MISS_LINE_ADJ_VAL_TBL
220 ,   p_Line_price_Att_tbl            IN  OE_Order_PUB.Line_Price_Att_Tbl_Type :=
221                                         OE_Order_PUB.G_MISS_LINE_PRICE_ATT_TBL
222 ,   p_old_Line_Price_Att_tbl        IN  OE_Order_PUB.Line_Price_Att_Tbl_Type :=
223                                         OE_Order_PUB.G_MISS_LINE_PRICE_ATT_TBL
224 ,   p_Line_Adj_Att_tbl              IN  OE_Order_PUB.Line_Adj_Att_Tbl_Type :=
225                                         OE_Order_PUB.G_MISS_LINE_ADJ_ATT_TBL
226 ,   p_old_Line_Adj_Att_tbl          IN  OE_Order_PUB.Line_Adj_Att_Tbl_Type :=
227     OE_Order_PUB.G_MISS_LINE_ADJ_ATT_TBL
228 ,   p_Line_Adj_Assoc_tbl            IN  OE_Order_PUB.Line_Adj_Assoc_Tbl_Type :=
229                                         OE_Order_PUB.G_MISS_LINE_ADJ_ASSOC_TBL
230 ,   p_old_Line_Adj_Assoc_tbl        IN  OE_Order_PUB.Line_Adj_Assoc_Tbl_Type :=
231     OE_Order_PUB.G_MISS_LINE_ADJ_ASSOC_TBL
232 ,   p_Line_Scredit_tbl              IN  OE_Order_PUB.Line_Scredit_Tbl_Type :=
233                                         OE_Order_PUB.G_MISS_LINE_SCREDIT_TBL
234 ,   p_old_Line_Scredit_tbl          IN  OE_Order_PUB.Line_Scredit_Tbl_Type :=
235                                         OE_Order_PUB.G_MISS_LINE_SCREDIT_TBL
236 ,   p_Line_Scredit_val_tbl          IN  OE_Order_PUB.Line_Scredit_Val_Tbl_Type :=
237                                         OE_Order_PUB.G_MISS_LINE_SCREDIT_VAL_TBL
238 ,   p_old_Line_Scredit_val_tbl      IN  OE_Order_PUB.Line_Scredit_Val_Tbl_Type :=
239                                         OE_Order_PUB.G_MISS_LINE_SCREDIT_VAL_TBL
240 ,   p_Line_Payment_tbl              IN  OE_Order_PUB.Line_Payment_Tbl_Type :=
241                                         OE_Order_PUB.G_MISS_LINE_PAYMENT_TBL
242 ,   p_old_Line_Payment_tbl          IN  OE_Order_PUB.Line_Payment_Tbl_Type :=
243                                         OE_Order_PUB.G_MISS_LINE_PAYMENT_TBL
244 ,   p_Line_Payment_val_tbl          IN  OE_Order_PUB.Line_Payment_Val_Tbl_Type :=
245                                         OE_Order_PUB.G_MISS_LINE_PAYMENT_VAL_TBL
246 ,   p_old_Line_Payment_val_tbl      IN  OE_Order_PUB.Line_Payment_Val_Tbl_Type :=
247                                         OE_Order_PUB.G_MISS_LINE_PAYMENT_VAL_TBL
248 ,   p_Lot_Serial_tbl                IN  OE_Order_PUB.Lot_Serial_Tbl_Type :=
249                                         OE_Order_PUB.G_MISS_LOT_SERIAL_TBL
250 ,   p_old_Lot_Serial_tbl            IN  OE_Order_PUB.Lot_Serial_Tbl_Type :=
251                                         OE_Order_PUB.G_MISS_LOT_SERIAL_TBL
252 ,   p_Lot_Serial_val_tbl            IN  OE_Order_PUB.Lot_Serial_Val_Tbl_Type :=
253                                         OE_Order_PUB.G_MISS_LOT_SERIAL_VAL_TBL
254 ,   p_old_Lot_Serial_val_tbl        IN  OE_Order_PUB.Lot_Serial_Val_Tbl_Type :=
255                                         OE_Order_PUB.G_MISS_LOT_SERIAL_VAL_TBL
256 ,   p_Action_Request_tbl            IN  OE_Order_PUB.Request_Tbl_Type :=
257                                         OE_Order_PUB.G_MISS_REQUEST_TBL
258 ,   x_header_rec                    OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Rec_Type
259 ,   x_header_val_rec                OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Val_Rec_Type
260 ,   x_Header_Adj_tbl                OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Tbl_Type
261 ,   x_Header_Adj_val_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Val_Tbl_Type
262 ,   x_Header_price_Att_tbl          OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Price_Att_Tbl_Type
263 ,   x_Header_Adj_Att_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Att_Tbl_Type
264 ,   x_Header_Adj_Assoc_tbl          OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Assoc_Tbl_Type
265 ,   x_Header_Scredit_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Scredit_Tbl_Type
266 ,   x_Header_Scredit_val_tbl        OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Scredit_Val_Tbl_Type
267 ,   x_Header_Payment_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Payment_Tbl_Type
268 ,   x_Header_Payment_val_tbl        OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Payment_Val_Tbl_Type
269 ,   x_line_tbl                      OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Tbl_Type
270 ,   x_line_val_tbl                  OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Val_Tbl_Type
271 ,   x_Line_Adj_tbl                  OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Tbl_Type
272 ,   x_Line_Adj_val_tbl              OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Val_Tbl_Type
273 ,   x_Line_price_Att_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Price_Att_Tbl_Type
274 ,   x_Line_Adj_Att_tbl              OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Att_Tbl_Type
275 ,   x_Line_Adj_Assoc_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Assoc_Tbl_Type
276 ,   x_Line_Scredit_tbl              OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Scredit_Tbl_Type
277 ,   x_Line_Scredit_val_tbl          OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Scredit_Val_Tbl_Type
278 ,   x_Line_Payment_tbl              OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Payment_Tbl_Type
279 ,   x_Line_Payment_val_tbl          OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Payment_Val_Tbl_Type
280 ,   x_Lot_Serial_tbl                OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Lot_Serial_Tbl_Type
281 ,   x_Lot_Serial_val_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Lot_Serial_Val_Tbl_Type
282 ,   x_action_request_tbl	    OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Request_Tbl_Type
283 --For bug 3390458
284 ,   p_rtrim_data                    IN  Varchar2 :='N'
285 ,   p_validate_desc_flex            in varchar2 default 'Y' -- bug4343612
286 --ER7675548
287 ,   p_header_customer_info_tbl      IN OE_ORDER_PUB.CUSTOMER_INFO_TABLE_TYPE :=
288                                        OE_ORDER_PUB.G_MISS_CUSTOMER_INFO_TBL
289 ,   p_line_customer_info_tbl        IN OE_ORDER_PUB.CUSTOMER_INFO_TABLE_TYPE :=
290                                        OE_ORDER_PUB.G_MISS_CUSTOMER_INFO_TBL
291 )
292 IS
293 l_org_id                      NUMBER;  -- MOAC
294 l_api_version_number          CONSTANT NUMBER := 1.0;
295 l_api_name                    CONSTANT VARCHAR2(30):= 'Process_Order';
296 l_control_rec                 OE_GLOBALS.Control_Rec_Type;
297 l_validation_level	VARCHAR2(30);
298 l_return_status               VARCHAR2(1);
299 l_old_header_rec              OE_Order_PUB.Header_Rec_Type;
300 l_old_Header_Adj_tbl          OE_Order_PUB.Header_Adj_Tbl_Type;
301 l_old_Header_price_Att_tbl    OE_Order_PUB.Header_Price_Att_Tbl_Type ;
302 l_old_Header_Adj_Att_tbl      OE_Order_PUB.Header_Adj_Att_Tbl_Type ;
303 l_old_Header_Adj_Assoc_tbl    OE_Order_PUB.Header_Adj_Assoc_Tbl_Type ;
304 l_old_Header_Scredit_tbl      OE_Order_PUB.Header_Scredit_Tbl_Type;
305 l_old_line_tbl                OE_Order_PUB.Line_Tbl_Type;
306 l_old_Line_Adj_tbl            OE_Order_PUB.Line_Adj_Tbl_Type;
307 l_old_Line_price_Att_tbl      OE_Order_PUB.Line_Price_Att_Tbl_Type ;
308 l_old_Line_Adj_Att_tbl        OE_Order_PUB.Line_Adj_Att_Tbl_Type ;
309 l_old_Line_Adj_Assoc_tbl      OE_Order_PUB.Line_Adj_Assoc_Tbl_Type ;
310 l_old_Line_Scredit_tbl        OE_Order_PUB.Line_Scredit_Tbl_Type;
311 l_old_Lot_Serial_tbl          OE_Order_PUB.Lot_Serial_Tbl_Type;
312 l_old_Header_Payment_tbl      OE_Order_PUB.Header_Payment_Tbl_Type;
313 l_old_Line_Payment_tbl        OE_Order_PUB.Line_Payment_Tbl_Type;
314 
315 l_aac_header_rec              OE_Order_PUB.Header_Rec_Type;
316 l_aac_line_tbl                OE_Order_PUB.Line_Tbl_Type;
317 
318 l_header_rec OE_Order_PUB.Header_Rec_Type;
319 l_cust_info_tbl OE_ORDER_PUB.CUSTOMER_INFO_TABLE_TYPE;
320 l_line_tbl  OE_ORDER_PUB.LINE_TBL_TYPE;
321 
322 I			      NUMBER;
323 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
324 BEGIN
325 
326     IF l_debug_level  > 0 THEN  /* added for 3677092 */
327            oe_debug_pub.add(  'ENTERING OE_ORDER_GRP.PROCESS_ORDER', 0.5) ;
328     END IF;
329 
330     l_return_status := FND_API.G_RET_STS_SUCCESS; --Nocopy changes
331 
332   -- MOAC change
333   -- Check if org context has been set before doing any process
334   -- If there is no org context set, we stop calling group process order API
335   -- and raise an error though we don't do any validation for the org_id.
336   l_org_id := MO_GLOBAL.get_current_org_id;
337   IF (l_org_id IS NULL OR l_org_id = FND_API.G_MISS_NUM) THEN
338        FND_MESSAGE.set_name('FND','MO_ORG_REQUIRED');
339        OE_MSG_PUB.Add;
340        RAISE FND_API.G_EXC_ERROR;
341   END IF;
342 
343   -- Bug 4129234/ orig bug 3823649 ReSet the Audit Trail Global variables
344         OE_GLOBALS.G_AUDIT_HISTORY_RQD_FLAG := 'N';
345         OE_GLOBALS.G_AUDIT_REASON_RQD_FLAG  := 'N';
346 
347 
348   -- Bug 3013210 => set a savepoint so that rollbacks can be done for
349   -- validation only service level call
350 
351   SAVEPOINT Group_Process_Order;
352 
353 
354 --Added to fix #1566362 as these tables were not getting passed to the PVT API.
355 
356 l_old_Header_price_Att_tbl := p_old_Header_Price_Att_tbl;
357 l_old_Header_Adj_Att_tbl   := p_old_Header_Adj_Att_tbl;
358 l_old_Header_Adj_Assoc_tbl := p_old_Header_Adj_Assoc_tbl;
359 l_old_Line_price_Att_tbl   := p_old_Line_Price_Att_tbl;
360 l_old_Line_Adj_Att_tbl     := p_old_Line_Adj_Att_tbl;
361 l_old_Line_Adj_Assoc_tbl   := p_old_Line_Adj_Assoc_tbl;
362 x_Header_price_Att_tbl     := p_Header_price_Att_tbl;
363 x_Header_Adj_Assoc_tbl     := p_Header_Adj_Assoc_tbl;
364 x_Header_Adj_Att_tbl       := p_Header_Adj_Att_tbl;
365 x_Line_price_Att_tbl       := p_Line_price_Att_tbl;
366 x_Line_Adj_Assoc_tbl       := p_Line_Adj_Assoc_tbl;
367 x_Line_Adj_Att_tbl         := p_Line_Adj_Att_tbl;
368 
369     --  Standard call to check for call compatibility
370 
371     IF NOT FND_API.Compatible_API_Call
372            (   l_api_version_number
373            ,   p_api_version_number
374            ,   l_api_name
375            ,   G_PKG_NAME
376            )
377     THEN
378         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
379     END IF;
380 
381     -- determine if we should default reason for versioning, for bug 3636884
382     IF p_control_rec.require_reason THEN
383        -- We are calling from Order Import, don't do anything.
384        NULL;
385     ELSE
386        OE_GLOBALS.G_DEFAULT_REASON := TRUE;
387     END IF;
388 
389 
390     -- Initialize the control record based on the api_service_level
391 
392     Control_Rec_For_Service_Level
393 		(p_api_service_level 	=> p_api_service_level
394 		,p_control_rec			=> p_control_rec
395 		,p_validation_level		=> p_validation_level
396 		,x_control_rec			=> l_control_rec
397 		,x_validation_level		=> l_validation_level
398 		);
399 
400 
401 
402 --ER7675548
403 savepoint ADD_CUSTOMER_INFO;
404 
405 l_cust_info_tbl := p_header_customer_info_tbl;
406 l_header_rec    := p_header_rec;
407 
408  OE_HEADER_UTIL.Get_customer_info_ids
409 (
410  p_header_customer_info_tbl => l_cust_info_tbl,
411  p_x_header_rec => l_header_rec,
412  x_return_status => x_return_status,
413  x_msg_count  => x_msg_count,
414  x_msg_data   => x_msg_data
415 );
416 
417 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
418 	ROLLBACK TO SAVEPOINT ADD_CUSTOMER_INFO;
419 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
420 ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
421 	ROLLBACK TO SAVEPOINT ADD_CUSTOMER_INFO;
422         RAISE FND_API.G_EXC_ERROR;
423 END IF;
424 
425 
426 l_line_tbl := p_line_tbl;
427 l_cust_info_tbl := p_line_customer_info_tbl;
428 
429 OE_LINE_UTIL.Get_customer_info_ids
430 (
431  p_line_customer_info_tbl => l_cust_info_tbl,
432  p_x_line_tbl => l_line_tbl,
433  x_return_status => x_return_status,
434  x_msg_count  => x_msg_count,
435  x_msg_data   => x_msg_data
436 );
437 
438 
439 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
440 	ROLLBACK TO SAVEPOINT ADD_CUSTOMER_INFO;
441 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
442 ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
443 	ROLLBACK TO SAVEPOINT ADD_CUSTOMER_INFO;
444         RAISE FND_API.G_EXC_ERROR;
445 END IF;
446 
447 --ER7675548
448 
449     --  Bug 5555080 Call Value_to_Id before AAC so that if Ids are passed we don't create Account
450 
451     --  Perform Value to Id conversion
452 
453     Value_To_Id
454     (   x_return_status               => l_return_status
455     ,   p_header_rec                  => l_header_rec
456     ,   p_header_val_rec              => p_header_val_rec
457     ,   p_Header_Adj_tbl              => p_Header_Adj_tbl
458     ,   p_Header_Adj_val_tbl          => p_Header_Adj_val_tbl
459     ,   p_Header_Scredit_tbl          => p_Header_Scredit_tbl
460     ,   p_Header_Scredit_val_tbl      => p_Header_Scredit_val_tbl
461     ,   p_Header_Payment_tbl          => p_Header_Payment_tbl
462     ,   p_Header_Payment_val_tbl      => p_Header_Payment_val_tbl
463     ,   p_line_tbl                    => l_line_tbl
464     ,   p_line_val_tbl                => p_line_val_tbl
465     ,   p_Line_Adj_tbl                => p_Line_Adj_tbl
466     ,   p_Line_Adj_val_tbl            => p_Line_Adj_val_tbl
467     ,   p_Line_Scredit_tbl            => p_Line_Scredit_tbl
468     ,   p_Line_Scredit_val_tbl        => p_Line_Scredit_val_tbl
469     ,   p_Line_Payment_tbl            => p_Line_Payment_tbl
470     ,   p_Line_Payment_val_tbl        => p_Line_Payment_val_tbl
471     ,   p_Lot_Serial_tbl              => p_Lot_Serial_tbl
472     ,   p_Lot_Serial_val_tbl          => p_Lot_Serial_val_tbl
473     ,   x_header_rec                  => x_header_rec
474     ,   x_Header_Adj_tbl              => x_Header_Adj_tbl
475     ,   x_Header_Scredit_tbl          => x_Header_Scredit_tbl
476     ,   x_Header_Payment_tbl          => x_Header_Payment_tbl
477     ,   x_line_tbl                    => x_line_tbl
478     ,   x_Line_Adj_tbl                => x_Line_Adj_tbl
479     ,   x_Line_Scredit_tbl            => x_Line_Scredit_tbl
480     ,   x_Line_Payment_tbl            => x_Line_Payment_tbl
481     ,   x_Lot_Serial_tbl              => x_Lot_Serial_tbl
482     );
483 
484     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
485         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
486     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
487         RAISE FND_API.G_EXC_ERROR;
488     END IF;
489 
490 
491     --  Perform Value to Id conversion (for old)
492 
493     Value_To_Id
494     (   x_return_status               => l_return_status
495     ,   p_header_rec                  => p_old_header_rec
496     ,   p_header_val_rec              => p_old_header_val_rec
497     ,   p_Header_Adj_tbl              => p_old_Header_Adj_tbl
498     ,   p_Header_Adj_val_tbl          => p_old_Header_Adj_val_tbl
499     ,   p_Header_Scredit_tbl          => p_old_Header_Scredit_tbl
500     ,   p_Header_Scredit_val_tbl      => p_old_Header_Scredit_val_tbl
501     ,   p_Header_Payment_tbl          => p_Header_Payment_tbl
502     ,   p_Header_Payment_val_tbl      => p_Header_Payment_val_tbl
503     ,   p_line_tbl                    => p_old_line_tbl
504     ,   p_line_val_tbl                => p_old_line_val_tbl
505     ,   p_Line_Adj_tbl                => p_old_Line_Adj_tbl
506     ,   p_Line_Adj_val_tbl            => p_old_Line_Adj_val_tbl
507     ,   p_Line_Scredit_tbl            => p_old_Line_Scredit_tbl
508     ,   p_Line_Scredit_val_tbl        => p_old_Line_Scredit_val_tbl
509     ,   p_Line_Payment_tbl            => p_Line_Payment_tbl
510     ,   p_Line_Payment_val_tbl        => p_Line_Payment_val_tbl
511     ,   p_Lot_Serial_tbl              => p_Lot_Serial_tbl
512     ,   p_Lot_Serial_val_tbl          => p_Lot_Serial_val_tbl
513     ,   x_header_rec                  => l_old_header_rec
514     ,   x_Header_Adj_tbl              => l_old_Header_Adj_tbl
515     ,   x_Header_Scredit_tbl          => l_old_Header_Scredit_tbl
516     ,   x_Header_Payment_tbl          => x_Header_Payment_tbl
517     ,   x_line_tbl                    => l_old_line_tbl
518     ,   x_Line_Adj_tbl                => l_old_Line_Adj_tbl
519     ,   x_Line_Scredit_tbl            => l_old_Line_Scredit_tbl
520     ,   x_Line_Payment_tbl            => x_Line_Payment_tbl
521     ,   x_Lot_Serial_tbl              => l_old_Lot_Serial_tbl
522     );
523 
524     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
525         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
526     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
527         RAISE FND_API.G_EXC_ERROR;
528     END IF;
529 
530     -- Copy action request tbl to OUT variable
531 
532     x_action_request_tbl := p_action_request_tbl;
533 
534     -- automatic account creation
535 
536     IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510'
537     THEN
538 
539        automatic_account_creation(p_header_rec     => x_header_rec,
540 				  p_header_val_rec => p_header_val_rec,
541 				  p_line_tbl       => x_line_tbl,
542 				  p_line_val_tbl   => p_line_val_tbl,
543 				  x_header_rec     => x_header_rec,
544 				  x_line_tbl       => x_line_tbl,
545 				  x_return_status  => x_return_status,
546 				  x_msg_count      => x_msg_count,
547 				  x_msg_data       => x_msg_data);
548     end if;
549 
550 
551 
552    -- added for notification framework
553    IF  OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110508' THEN
554       OE_ORDER_UTIL.Clear_Global_Picture(l_return_status);
555    END IF;
556 
557    --added for bug 3390458
558    IF p_rtrim_data ='Y'
559    THEN
560       RTrim_data
561           (  p_x_header_rec => x_header_rec
562            , p_x_line_tbl => x_line_tbl
563            , x_return_status =>x_return_status);
564 
565    END IF;
566 
567    -- added for bug 5001819
568    -- need to supress defaulting of credit card when trxn_extension_id is passed
569    I := x_Header_Payment_tbl.FIRST;
570 
571    WHILE I IS NOT NULL LOOP
572      IF x_Header_Payment_tbl(I).payment_type_code = 'CREDIT_CARD'
573        AND x_Header_Payment_tbl(I).trxn_extension_id IS NOT NULL
574        AND NOT OE_GLOBALS.Equal(x_Header_Payment_tbl(I).trxn_extension_id,FND_API.G_MISS_NUM) THEN --bug 5020737
575        x_header_rec.credit_card_number := null;
576        x_header_rec.credit_card_code := null;
577        x_header_rec.credit_card_holder_name := null;
578        x_header_rec.credit_card_expiration_date := null;
579 
580        exit;   -- exit the loop
581      END IF;
582 
583      I := x_Header_Payment_tbl.NEXT(I);
584    END LOOP;
585 
586    OE_GLOBALS.g_validate_desc_flex := p_validate_desc_flex ;--bug4343612
587 
588   -- sol_ord_er #16014165 start
589 	 /* System Parameter "OM: Subscription Item Line Behavior" needs to be honored only from UI */
590 	 If x_line_tbl.count > 0 THEN
591 	   For i in x_line_tbl.first .. x_line_tbl.last
592 		LOOP
593 			If (x_line_tbl(i).operation = OE_GLOBALS.G_OPR_CREATE
594 			   or x_line_tbl(i).operation = OE_GLOBALS.G_OPR_INSERT)
595 			   AND NVL(x_line_tbl(i).subscription_enable_flag,FND_API.G_MISS_CHAR) = FND_API.G_MISS_CHAR THEN
596 					x_line_tbl(i).subscription_enable_flag := 'N';
597 			End If;
598 		End LOOP;
599 	 End If;
600 	 -- sol_ord_er #16014165 end
601 
602     --  Call OE_Order_PVT.Process_Order
603     OE_Order_PVT.Process_Order
604     (   p_api_version_number          => 1.0
605     ,   p_init_msg_list               => p_init_msg_list
606     ,   p_validation_level            => l_validation_level
607 --    ,   p_commit                      => p_commit
608     ,   x_return_status               => x_return_status
609     ,   x_msg_count                   => x_msg_count
610     ,   x_msg_data                    => x_msg_data
611     ,   p_control_rec                 => l_control_rec
612     ,   p_x_header_rec                => x_header_rec
613     ,   p_old_header_rec              => l_old_header_rec
614     ,   p_x_Header_Adj_tbl            => x_Header_Adj_tbl
615     ,   p_old_Header_Adj_tbl          => l_old_Header_Adj_tbl
616     ,   p_x_Header_Price_Att_tbl      => x_Header_Price_Att_tbl
617     ,   p_old_Header_Price_Att_tbl    => l_old_Header_Price_Att_tbl
618     ,   p_x_Header_Adj_Att_tbl	      => x_Header_Adj_Att_tbl
619     ,   p_old_Header_Adj_Att_tbl      => l_old_Header_Adj_Att_tbl
620     ,   p_x_Header_Adj_Assoc_tbl      => x_Header_Adj_Assoc_tbl
621     ,   p_old_Header_Adj_Assoc_tbl    => l_old_Header_Adj_Assoc_tbl
622     ,   p_x_Header_Scredit_tbl        => x_Header_Scredit_tbl
623     ,   p_old_Header_Scredit_tbl      => l_old_Header_Scredit_tbl
624     ,   p_x_Header_Payment_tbl        => x_Header_Payment_tbl
625     ,   p_old_Header_Payment_tbl      => l_old_Header_Payment_tbl
626     ,   p_x_line_tbl                  => x_line_tbl
627     ,   p_old_line_tbl                => l_old_line_tbl
628     ,   p_x_Line_Adj_tbl              => x_Line_Adj_tbl
629     ,   p_old_Line_Adj_tbl            => l_old_Line_Adj_tbl
630     ,   p_x_Line_Price_Att_tbl	      => x_Line_Price_Att_tbl
631     ,   p_old_Line_Price_Att_tbl      => l_old_Line_Price_Att_tbl
632     ,   p_x_Line_Adj_Att_tbl	      => x_Line_Adj_Att_tbl
633     ,   p_old_Line_Adj_Att_tbl	      => l_old_Line_Adj_Att_tbl
634     ,   p_x_Line_Adj_Assoc_tbl	      => x_Line_Adj_Assoc_tbl
635     ,   p_old_Line_Adj_Assoc_tbl      => l_old_Line_Adj_Assoc_tbl
636     ,   p_x_Line_Scredit_tbl          => x_Line_Scredit_tbl
637     ,   p_old_Line_Scredit_tbl        => l_old_Line_Scredit_tbl
638     ,   p_x_Line_Payment_tbl          => x_Line_Payment_tbl
639     ,   p_old_Line_Payment_tbl        => l_old_Line_Payment_tbl
640     ,   p_x_Lot_Serial_tbl            => x_Lot_Serial_tbl
641     ,   p_old_Lot_Serial_tbl          => l_old_Lot_Serial_tbl
642     ,   p_x_Action_Request_tbl        => x_Action_Request_tbl
643     );
644 
645    --Added for bug 4697870 start
646    if x_return_status =FND_API.G_RET_STS_UNEXP_ERROR or x_return_status = FND_API.G_RET_STS_ERROR then
647      ROLLBACK TO SAVEPOINT Group_Process_Order;
648      OE_Delayed_Requests_PVT.Clear_Request(l_return_status);
649      if x_return_status =FND_API.G_RET_STS_UNEXP_ERROR then
650          raise FND_API.G_EXC_UNEXPECTED_ERROR;
651      elsif x_return_status =FND_API.G_RET_STS_ERROR then
652          raise FND_API.G_EXC_ERROR ;
653      end if;
654    end if;
655    --Added for bug 4697870 end
656     --  If p_return_values is TRUE then convert Ids to Values.
657 
658     IF FND_API.to_Boolean(p_return_values) THEN
659 
660         Id_To_Value
661         (   p_header_rec                  => x_header_rec
662         ,   p_Header_Adj_tbl              => x_Header_Adj_tbl
663         ,   p_Header_Scredit_tbl          => x_Header_Scredit_tbl
664         ,   p_Header_Payment_tbl          => x_Header_Payment_tbl
665         ,   p_line_tbl                    => x_line_tbl
666         ,   p_Line_Adj_tbl                => x_Line_Adj_tbl
667         ,   p_Line_Scredit_tbl            => x_Line_Scredit_tbl
668         ,   p_Line_Payment_tbl            => x_Line_Payment_tbl
669         ,   p_Lot_Serial_tbl              => x_Lot_Serial_tbl
670         ,   x_header_val_rec              => x_header_val_rec
671         ,   x_Header_Adj_val_tbl          => x_Header_Adj_val_tbl
672         ,   x_Header_Scredit_val_tbl      => x_Header_Scredit_val_tbl
673         ,   x_Header_Payment_val_tbl      => x_Header_Payment_val_tbl
674         ,   x_line_val_tbl                => x_line_val_tbl
675         ,   x_Line_Adj_val_tbl            => x_Line_Adj_val_tbl
676         ,   x_Line_Scredit_val_tbl        => x_Line_Scredit_val_tbl
677         ,   x_Line_Payment_val_tbl        => x_Line_Payment_val_tbl
678         ,   x_Lot_Serial_val_tbl          => x_Lot_Serial_val_tbl
679         );
680 
681     END IF;
682 
683 	   -- This is set for validation only mode hence resetting
684 
685         -- No check for branch scheduling is needed. Therefore, removing the
686         -- check for profile value.
687 
688         OE_SCHEDULE_UTIL.OESCH_PERFORM_SCHEDULING   := 'Y';
689 
690 
691     -- Bug 3013210 => if service level is validation only, rollback any
692     -- DB writes and also clear delayed requests
693 
694     IF p_api_service_level = OE_GLOBALS.G_VALIDATION_ONLY THEN
695 
696        ROLLBACK TO SAVEPOINT Group_Process_Order;
697 
698        OE_Delayed_Requests_PVT.Clear_Request(l_return_status);
699        IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
700           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
701        ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
702           RAISE FND_API.G_EXC_ERROR;
703        END IF;
704 
705     END IF; -- End if service level is validation only
706 
707     IF l_debug_level  > 0 THEN  /* added for 13435459 */
708            oe_debug_pub.add(  'EXITING OE_ORDER_GRP.PROCESS_ORDER', 0.5) ;
709     END IF;
710 
711 EXCEPTION
712 
713     WHEN FND_API.G_EXC_ERROR THEN
714 
715         IF l_debug_level  > 0 THEN  /* added for 13435459 */
716            oe_debug_pub.add(  'ERROR IN OE_ORDER_GRP.PROCESS_ORDER', 0.5) ;
717         END IF;
718 
719         x_return_status := FND_API.G_RET_STS_ERROR;
720 
721         --  Get message count and data
722 
723         OE_MSG_PUB.Count_And_Get
724         (   p_count                       => x_msg_count
725         ,   p_data                        => x_msg_data
726         );
727 
728     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
729 
730         IF l_debug_level  > 0 THEN  /* added for 13435459 */
731            oe_debug_pub.add(  'UNEXP. ERROR IN OE_ORDER_GRP.PROCESS_ORDER', 0.5) ;
732         END IF;
733 
734         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
735 
736         --  Get message count and data
737 
738         OE_MSG_PUB.Count_And_Get
739         (   p_count                       => x_msg_count
740         ,   p_data                        => x_msg_data
741         );
742 
743     WHEN OTHERS THEN
744 
745         IF l_debug_level  > 0 THEN  /* added for 13435459 */
746            oe_debug_pub.add(  'OTHERS EXCEPTION IN OE_ORDER_GRP.PROCESS_ORDER', 0.5) ;
747         END IF;
748 
749         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
750 
751         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
752         THEN
753             OE_MSG_PUB.Add_Exc_Msg
754             (   G_PKG_NAME
755             ,   'Process_Order'
756             );
757         END IF;
758 
759         --  Get message count and data
760 
761         OE_MSG_PUB.Count_And_Get
762         (   p_count                       => x_msg_count
763         ,   p_data                        => x_msg_data
764         );
765 
766 END Process_Order;
767 
768 
769 
770 --  Start of Comments
771 --  API name    Lock_Order
772 --  Type        Group
773 --  Function   Overloaded
774 --
775 --  Pre-reqs
776 --
777 --  Parameters
778 --
779 --  Version     Current version = 1.0
780 --              Initial version = 1.0
781 --
782 --  Notes
783 --
784 --  End of Comments
785 
786 PROCEDURE Lock_Order
787 (   p_api_version_number            IN  NUMBER
788 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
789 ,   p_return_values                 IN  VARCHAR2 := FND_API.G_FALSE
790 ,   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
791 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
792 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
793 ,   p_header_rec                    IN  OE_Order_PUB.Header_Rec_Type :=
794                                         OE_Order_PUB.G_MISS_HEADER_REC
795 ,   p_header_val_rec                IN  OE_Order_PUB.Header_Val_Rec_Type :=
796                                         OE_Order_PUB.G_MISS_HEADER_VAL_REC
797 ,   p_Header_Adj_tbl                IN  OE_Order_PUB.Header_Adj_Tbl_Type :=
798                                         OE_Order_PUB.G_MISS_HEADER_ADJ_TBL
799 ,   p_Header_Adj_val_tbl            IN  OE_Order_PUB.Header_Adj_Val_Tbl_Type :=
800                                         OE_Order_PUB.G_MISS_HEADER_ADJ_VAL_TBL
801 ,   p_Header_price_Att_tbl          IN  OE_Order_PUB.Header_Price_Att_Tbl_Type :=
802                                         OE_Order_PUB.G_MISS_HEADER_PRICE_ATT_TBL
803 ,   p_Header_Adj_Att_tbl            IN  OE_Order_PUB.Header_Adj_Att_Tbl_Type :=
804                                         OE_Order_PUB.G_MISS_HEADER_ADJ_ATT_TBL
805 ,   p_Header_Adj_Assoc_tbl          IN  OE_Order_PUB.Header_Adj_Assoc_Tbl_Type :=
806                                         OE_Order_PUB.G_MISS_HEADER_ADJ_ASSOC_TBL
807 ,   p_Header_Scredit_tbl            IN  OE_Order_PUB.Header_Scredit_Tbl_Type :=
808                                         OE_Order_PUB.G_MISS_HEADER_SCREDIT_TBL
809 ,   p_Header_Scredit_val_tbl        IN  OE_Order_PUB.Header_Scredit_Val_Tbl_Type :=
810                                         OE_Order_PUB.G_MISS_HEADER_SCREDIT_VAL_TBL
811 ,   p_Header_Payment_tbl            IN  OE_Order_PUB.Header_Payment_Tbl_Type :=
812                                         OE_Order_PUB.G_MISS_HEADER_PAYMENT_TBL
813 ,   p_Header_Payment_val_tbl        IN  OE_Order_PUB.Header_Payment_Val_Tbl_Type :=
814                                         OE_Order_PUB.G_MISS_HEADER_PAYMENT_VAL_TBL
815 ,   p_line_tbl                      IN  OE_Order_PUB.Line_Tbl_Type :=
816                                         OE_Order_PUB.G_MISS_LINE_TBL
817 ,   p_line_val_tbl                  IN  OE_Order_PUB.Line_Val_Tbl_Type :=
818                                         OE_Order_PUB.G_MISS_LINE_VAL_TBL
819 ,   p_Line_Adj_tbl                  IN  OE_Order_PUB.Line_Adj_Tbl_Type :=
820                                         OE_Order_PUB.G_MISS_LINE_ADJ_TBL
821 ,   p_Line_Adj_val_tbl              IN  OE_Order_PUB.Line_Adj_Val_Tbl_Type :=
822                                         OE_Order_PUB.G_MISS_LINE_ADJ_VAL_TBL
823 ,   p_Line_price_Att_tbl            IN  OE_Order_PUB.Line_Price_Att_Tbl_Type :=
824                                         OE_Order_PUB.G_MISS_LINE_PRICE_ATT_TBL
825 ,   p_Line_Adj_Att_tbl              IN  OE_Order_PUB.Line_Adj_Att_Tbl_Type :=
826                                         OE_Order_PUB.G_MISS_LINE_ADJ_ATT_TBL
827 ,   p_Line_Adj_Assoc_tbl            IN  OE_Order_PUB.Line_Adj_Assoc_Tbl_Type :=
828                                         OE_Order_PUB.G_MISS_LINE_ADJ_ASSOC_TBL
829 ,   p_Line_Scredit_tbl              IN  OE_Order_PUB.Line_Scredit_Tbl_Type :=
830                                         OE_Order_PUB.G_MISS_LINE_SCREDIT_TBL
831 ,   p_Line_Scredit_val_tbl          IN  OE_Order_PUB.Line_Scredit_Val_Tbl_Type :=
832                                         OE_Order_PUB.G_MISS_LINE_SCREDIT_VAL_TBL
833 ,   p_Line_Payment_tbl              IN  OE_Order_PUB.Line_Payment_Tbl_Type :=
834                                         OE_Order_PUB.G_MISS_LINE_PAYMENT_TBL
835 ,   p_Line_Payment_val_tbl          IN  OE_Order_PUB.Line_Payment_Val_Tbl_Type :=
836                                         OE_Order_PUB.G_MISS_LINE_PAYMENT_VAL_TBL
837 ,   p_Lot_Serial_tbl                IN  OE_Order_PUB.Lot_Serial_Tbl_Type :=
838                                         OE_Order_PUB.G_MISS_LOT_SERIAL_TBL
839 ,   p_Lot_Serial_val_tbl            IN  OE_Order_PUB.Lot_Serial_Val_Tbl_Type :=
840                                         OE_Order_PUB.G_MISS_LOT_SERIAL_VAL_TBL
841 ,   x_header_rec                    OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Rec_Type
842 ,   x_header_val_rec                OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Val_Rec_Type
843 ,   x_Header_Adj_tbl                OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Tbl_Type
844 ,   x_Header_Adj_val_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Val_Tbl_Type
845 ,   x_Header_price_Att_tbl          OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Price_Att_Tbl_Type
846 ,   x_Header_Adj_Att_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Att_Tbl_Type
847 ,   x_Header_Adj_Assoc_tbl          OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Assoc_Tbl_Type
848 ,   x_Header_Scredit_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Scredit_Tbl_Type
849 ,   x_Header_Scredit_val_tbl        OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Scredit_Val_Tbl_Type
850 ,   x_Header_Payment_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Payment_Tbl_Type
851 ,   x_Header_Payment_val_tbl        OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Payment_Val_Tbl_Type
852 ,   x_line_tbl                      OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Tbl_Type
853 ,   x_line_val_tbl                  OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Val_Tbl_Type
854 ,   x_Line_Adj_tbl                  OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Tbl_Type
855 ,   x_Line_Adj_val_tbl              OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Val_Tbl_Type
856 ,   x_Line_price_Att_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Price_Att_Tbl_Type
857 ,   x_Line_Adj_Att_tbl              OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Att_Tbl_Type
858 ,   x_Line_Adj_Assoc_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Assoc_Tbl_Type
859 ,   x_Line_Scredit_tbl              OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Scredit_Tbl_Type
860 ,   x_Line_Scredit_val_tbl          OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Scredit_Val_Tbl_Type
861 ,   x_Line_Payment_tbl              OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Payment_Tbl_Type
862 ,   x_Line_Payment_val_tbl          OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Payment_Val_Tbl_Type
863 ,   x_Lot_Serial_tbl                OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Lot_Serial_Tbl_Type
864 ,   x_Lot_Serial_val_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Lot_Serial_Val_Tbl_Type
865 )
866 IS
867 l_api_version_number          CONSTANT NUMBER := 1.0;
868 l_api_name                    CONSTANT VARCHAR2(30):= 'Lock_Order';
869 l_return_status               VARCHAR2(1);
870 BEGIN
871 
872     --  Standard call to check for call compatibility
873 
874     IF NOT FND_API.Compatible_API_Call
875            (   l_api_version_number
876            ,   p_api_version_number
877            ,   l_api_name
878            ,   G_PKG_NAME
879            )
880     THEN
881         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
882     END IF;
883 
884     --  Perform Value to Id conversion
885 
886     Value_To_Id
887     (   x_return_status               => l_return_status
888     ,   p_header_rec                  => p_header_rec
889     ,   p_header_val_rec              => p_header_val_rec
890     ,   p_Header_Adj_tbl              => p_Header_Adj_tbl
891     ,   p_Header_Adj_val_tbl          => p_Header_Adj_val_tbl
892     ,   p_Header_Scredit_tbl          => p_Header_Scredit_tbl
893     ,   p_Header_Scredit_val_tbl      => p_Header_Scredit_val_tbl
894     ,   p_Header_Payment_tbl          => p_Header_Payment_tbl
895     ,   p_Header_Payment_val_tbl      => p_Header_Payment_val_tbl
896     ,   p_line_tbl                    => p_line_tbl
897     ,   p_line_val_tbl                => p_line_val_tbl
898     ,   p_Line_Adj_tbl                => p_Line_Adj_tbl
899     ,   p_Line_Adj_val_tbl            => p_Line_Adj_val_tbl
900     ,   p_Line_Scredit_tbl            => p_Line_Scredit_tbl
901     ,   p_Line_Scredit_val_tbl        => p_Line_Scredit_val_tbl
902     ,   p_Line_Payment_tbl            => p_Line_Payment_tbl
903     ,   p_Line_Payment_val_tbl        => p_Line_Payment_val_tbl
904     ,   p_Lot_Serial_tbl              => p_Lot_Serial_tbl
905     ,   p_Lot_Serial_val_tbl          => p_Lot_Serial_val_tbl
906     ,   x_header_rec                  => x_header_rec
907     ,   x_Header_Adj_tbl              => x_Header_Adj_tbl
908     ,   x_Header_Scredit_tbl          => x_Header_Scredit_tbl
909     ,   x_Header_Payment_tbl          => x_Header_Payment_tbl
910     ,   x_line_tbl                    => x_line_tbl
911     ,   x_Line_Adj_tbl                => x_Line_Adj_tbl
912     ,   x_Line_Scredit_tbl            => x_Line_Scredit_tbl
913     ,   x_Line_Payment_tbl            => x_Line_Payment_tbl
914     ,   x_Lot_Serial_tbl              => x_Lot_Serial_tbl
915     );
916 
917     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
918         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
919     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
920         RAISE FND_API.G_EXC_ERROR;
921     END IF;
922 
923 
924     --  Call OE_Order_PVT.Lock_Order
925 
926     OE_Order_PVT.Lock_Order
927     (   p_api_version_number          => 1.0
928     ,   p_init_msg_list               => p_init_msg_list
929     ,   x_return_status               => x_return_status
930     ,   x_msg_count                   => x_msg_count
931     ,   x_msg_data                    => x_msg_data
932     ,   p_x_header_rec                => x_header_rec
933     ,   p_x_Header_Adj_tbl            => x_Header_Adj_tbl
934     ,   p_x_Header_Price_Att_tbl      => x_Header_Price_Att_tbl
935     ,   p_x_Header_Adj_Att_tbl	      => x_Header_Adj_Att_tbl
936     ,   p_x_Header_Adj_Assoc_tbl      => x_Header_Adj_Assoc_tbl
937     ,   p_x_Header_Scredit_tbl        => x_Header_Scredit_tbl
938     ,   p_x_Header_Payment_tbl        => x_Header_Payment_tbl
939     ,   p_x_line_tbl                  => x_line_tbl
940     ,   p_x_Line_Adj_tbl              => x_Line_Adj_tbl
941     ,   p_x_Line_Price_Att_tbl	      => x_Line_Price_Att_tbl
942     ,   p_x_Line_Adj_Att_tbl	      => x_Line_Adj_Att_tbl
943     ,   p_x_Line_Adj_Assoc_tbl	      => x_Line_Adj_Assoc_tbl
944     ,   p_x_Line_Scredit_tbl          => x_Line_Scredit_tbl
945     ,   p_x_Line_Payment_tbl          => x_Line_Payment_tbl
946     ,   p_x_Lot_Serial_tbl            => x_Lot_Serial_tbl
947     );
948 
949     --  If p_return_values is TRUE then convert Ids to Values.
950 
951     IF FND_API.to_Boolean(p_return_values) THEN
952 
953         Id_To_Value
954         (   p_header_rec                  => x_header_rec
955         ,   p_Header_Adj_tbl              => x_Header_Adj_tbl
956         ,   p_Header_Scredit_tbl          => x_Header_Scredit_tbl
957         ,   p_Header_Payment_tbl          => x_Header_Payment_tbl
958         ,   p_line_tbl                    => x_line_tbl
959         ,   p_Line_Adj_tbl                => x_Line_Adj_tbl
960         ,   p_Line_Scredit_tbl            => x_Line_Scredit_tbl
961         ,   p_Line_Payment_tbl            => x_Line_Payment_tbl
962         ,   p_Lot_Serial_tbl              => x_Lot_Serial_tbl
963         ,   x_header_val_rec              => x_header_val_rec
964         ,   x_Header_Adj_val_tbl          => x_Header_Adj_val_tbl
965         ,   x_Header_Scredit_val_tbl      => x_Header_Scredit_val_tbl
966         ,   x_Header_Payment_val_tbl      => x_Header_Payment_val_tbl
967         ,   x_line_val_tbl                => x_line_val_tbl
968         ,   x_Line_Adj_val_tbl            => x_Line_Adj_val_tbl
969         ,   x_Line_Scredit_val_tbl        => x_Line_Scredit_val_tbl
970         ,   x_Line_Payment_val_tbl        => x_Line_Payment_val_tbl
971         ,   x_Lot_Serial_val_tbl          => x_Lot_Serial_val_tbl
972         );
973 
974     END IF;
975 
976 EXCEPTION
977 
978     WHEN FND_API.G_EXC_ERROR THEN
979 
980         x_return_status := FND_API.G_RET_STS_ERROR;
981 
982         --  Get message count and data
983 
984         OE_MSG_PUB.Count_And_Get
985         (   p_count                       => x_msg_count
986         ,   p_data                        => x_msg_data
987         );
988 
989     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
990 
991         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
992 
993         --  Get message count and data
994 
995         OE_MSG_PUB.Count_And_Get
996         (   p_count                       => x_msg_count
997         ,   p_data                        => x_msg_data
998         );
999 
1000     WHEN OTHERS THEN
1001 
1002         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1003 
1004         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1005         THEN
1006             OE_MSG_PUB.Add_Exc_Msg
1007             (   G_PKG_NAME
1008             ,   'Lock_Order'
1009             );
1010         END IF;
1011 
1012         --  Get message count and data
1013 
1014         OE_MSG_PUB.Count_And_Get
1015         (   p_count                       => x_msg_count
1016         ,   p_data                        => x_msg_data
1017         );
1018 
1019 END Lock_Order;
1020 
1021 
1022 --  Start of Comments
1023 --  API name    Get_Order
1024 --  Type        Public
1025 --  Function    Overloaded
1026 --
1027 --  Pre-reqs
1028 --
1029 --  Parameters
1030 --
1031 --  Version     Current version = 1.0
1032 --              Initial version = 1.0
1033 --
1034 --  Notes
1035 --
1036 --  End of Comments
1037 
1038 PROCEDURE Get_Order
1039 (   p_api_version_number            IN  NUMBER
1040 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
1041 ,   p_return_values                 IN  VARCHAR2 := FND_API.G_FALSE
1042 ,   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1043 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1044 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1045 ,   p_header_id                     IN  NUMBER :=
1046                                         FND_API.G_MISS_NUM
1047 ,   p_header                        IN  VARCHAR2 :=
1048                                         FND_API.G_MISS_CHAR
1049 ,   x_header_rec                    OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Rec_Type
1050 ,   x_header_val_rec                OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Val_Rec_Type
1051 ,   x_Header_Adj_tbl                OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Tbl_Type
1052 ,   x_Header_Adj_val_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Val_Tbl_Type
1053 ,   x_Header_price_Att_tbl          OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Price_Att_Tbl_Type
1054 ,   x_Header_Adj_Att_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Att_Tbl_Type
1055 ,   x_Header_Adj_Assoc_tbl          OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Assoc_Tbl_Type
1056 ,   x_Header_Scredit_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Scredit_Tbl_Type
1057 ,   x_Header_Scredit_val_tbl        OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Scredit_Val_Tbl_Type
1058 ,   x_Header_Payment_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Payment_Tbl_Type
1059 ,   x_Header_Payment_val_tbl        OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Payment_Val_Tbl_Type
1060 ,   x_line_tbl                      OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Tbl_Type
1061 ,   x_line_val_tbl                  OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Val_Tbl_Type
1062 ,   x_Line_Adj_tbl                  OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Tbl_Type
1063 ,   x_Line_Adj_val_tbl              OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Val_Tbl_Type
1064 ,   x_Line_price_Att_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Price_Att_Tbl_Type
1065 ,   x_Line_Adj_Att_tbl              OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Att_Tbl_Type
1066 ,   x_Line_Adj_Assoc_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Assoc_Tbl_Type
1067 ,   x_Line_Scredit_tbl              OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Scredit_Tbl_Type
1068 ,   x_Line_Scredit_val_tbl          OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Scredit_Val_Tbl_Type
1069 ,   x_Line_Payment_tbl              OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Payment_Tbl_Type
1070 ,   x_Line_Payment_val_tbl          OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Payment_Val_Tbl_Type
1071 ,   x_Lot_Serial_tbl                OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Lot_Serial_Tbl_Type
1072 ,   x_Lot_Serial_val_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Lot_Serial_Val_Tbl_Type
1073 )
1074 IS
1075 l_api_version_number          CONSTANT NUMBER := 1.0;
1076 l_api_name                    CONSTANT VARCHAR2(30):= 'Get_Order';
1077 l_header_id                   NUMBER := p_header_id;
1078 BEGIN
1079 
1080     --  Standard call to check for call compatibility
1081 
1082     IF NOT FND_API.Compatible_API_Call
1083            (   l_api_version_number
1084            ,   p_api_version_number
1085            ,   l_api_name
1086            ,   G_PKG_NAME
1087            )
1088     THEN
1089         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1090     END IF;
1091 
1092     --  Standard check for Val/ID conversion
1093 
1094     IF  p_header = FND_API.G_MISS_CHAR
1095     THEN
1096 
1097         l_header_id := p_header_id;
1098 
1099     ELSIF p_header_id <> FND_API.G_MISS_NUM THEN
1100 
1101         l_header_id := p_header_id;
1102 
1103         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_SUCCESS)
1104         THEN
1105 
1106             fnd_message.set_name('ONT','OE_BOTH_VAL_AND_ID_EXIST');
1107             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','header');
1108             OE_MSG_PUB.Add;
1109 
1110         END IF;
1111 
1112     ELSE
1113 
1114         --  Convert Value to Id
1115 
1116         /*l_header_id := OE_Value_To_Id.header
1117         (   p_header                      => p_header
1118         );*/
1119 
1120         IF l_header_id = FND_API.G_MISS_NUM THEN
1121             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
1122             THEN
1123 
1124                 fnd_message.set_name('ONT','Invalid Business Object Value');
1125                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','header');
1126                 OE_MSG_PUB.Add;
1127 
1128             END IF;
1129         END IF;
1130 
1131         RAISE FND_API.G_EXC_ERROR;
1132 
1133     END IF;
1134 
1135 
1136     --  Call OE_Order_PVT.Get_Order
1137 
1138     OE_Order_PVT.Get_Order
1139     (   p_api_version_number          => 1.0
1140     ,   p_init_msg_list               => p_init_msg_list
1141     ,   x_return_status               => x_return_status
1142     ,   x_msg_count                   => x_msg_count
1143     ,   x_msg_data                    => x_msg_data
1144     ,   p_header_id                   => l_header_id
1145     ,   x_header_rec                  => x_header_rec
1146     ,   x_Header_Adj_tbl              => x_Header_Adj_tbl
1147     ,   x_Header_Price_Att_tbl	      => x_Header_Price_Att_tbl
1148     ,   x_Header_Adj_Att_tbl	      => x_Header_Adj_Att_tbl
1149     ,   x_Header_Adj_Assoc_tbl	      => x_Header_Adj_Assoc_tbl
1150     ,   x_Header_Scredit_tbl          => x_Header_Scredit_tbl
1151     ,   x_Header_Payment_tbl          => x_Header_Payment_tbl
1152     ,   x_line_tbl                    => x_line_tbl
1153     ,   x_Line_Adj_tbl                => x_Line_Adj_tbl
1154     ,   x_Line_Price_Att_tbl	      => x_Line_Price_Att_tbl
1155     ,   x_Line_Adj_Att_tbl	      => x_Line_Adj_Att_tbl
1156     ,   x_Line_Adj_Assoc_tbl	      => x_Line_Adj_Assoc_tbl
1157     ,   x_Line_Scredit_tbl            => x_Line_Scredit_tbl
1158     ,   x_Line_Payment_tbl            => x_Line_Payment_tbl
1159     ,   x_Lot_Serial_tbl              => x_Lot_Serial_tbl
1160     );
1161 
1162 
1163     --  If p_return_values is TRUE then convert Ids to Values.
1164 
1165     IF FND_API.TO_BOOLEAN(p_return_values) THEN
1166 
1167         Id_To_Value
1168         (   p_header_rec                  => x_header_rec
1169         ,   p_Header_Adj_tbl              => x_Header_Adj_tbl
1170         ,   p_Header_Scredit_tbl          => x_Header_Scredit_tbl
1171         ,   p_Header_Payment_tbl          => x_Header_PAyment_tbl
1172         ,   p_line_tbl                    => x_line_tbl
1173         ,   p_Line_Adj_tbl                => x_Line_Adj_tbl
1174         ,   p_Line_Scredit_tbl            => x_Line_Scredit_tbl
1175         ,   p_Line_Payment_tbl            => x_Line_Payment_tbl
1176         ,   p_Lot_Serial_tbl              => x_Lot_Serial_tbl
1177         ,   x_header_val_rec              => x_header_val_rec
1178         ,   x_Header_Adj_val_tbl          => x_Header_Adj_val_tbl
1179         ,   x_Header_Scredit_val_tbl      => x_Header_Scredit_val_tbl
1180         ,   x_Header_Payment_val_tbl      => x_Header_Payment_val_tbl
1181         ,   x_line_val_tbl                => x_line_val_tbl
1182         ,   x_Line_Adj_val_tbl            => x_Line_Adj_val_tbl
1183         ,   x_Line_Scredit_val_tbl        => x_Line_Scredit_val_tbl
1184         ,   x_Line_Payment_val_tbl        => x_Line_Payment_val_tbl
1185         ,   x_Lot_Serial_val_tbl          => x_Lot_Serial_val_tbl
1186         );
1187 
1188     END IF;
1189 
1190     --  Set return status
1191 
1192     x_return_status := FND_API.G_RET_STS_SUCCESS;
1193 
1194     --  Get message count and data
1195 
1196     OE_MSG_PUB.Count_And_Get
1197     (   p_count                       => x_msg_count
1198     ,   p_data                        => x_msg_data
1199     );
1200 
1201 
1202 EXCEPTION
1203 
1204     WHEN FND_API.G_EXC_ERROR THEN
1205 
1206         x_return_status := FND_API.G_RET_STS_ERROR;
1207 
1208         --  Get message count and data
1209 
1210         OE_MSG_PUB.Count_And_Get
1211         (   p_count                       => x_msg_count
1212         ,   p_data                        => x_msg_data
1213         );
1214 
1215     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1216 
1217         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1218 
1219         --  Get message count and data
1220 
1221         OE_MSG_PUB.Count_And_Get
1222         (   p_count                       => x_msg_count
1223         ,   p_data                        => x_msg_data
1224         );
1225 
1226     WHEN OTHERS THEN
1227 
1228         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1229 
1230         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1231         THEN
1232             OE_MSG_PUB.Add_Exc_Msg
1233             (   G_PKG_NAME
1234             ,   'Get_Order'
1235             );
1236         END IF;
1237 
1238         --  Get message count and data
1239 
1240         OE_MSG_PUB.Count_And_Get
1241         (   p_count                       => x_msg_count
1242         ,   p_data                        => x_msg_data
1243         );
1244 
1245 END Get_Order;
1246 
1247 
1248 --  Procedure Id_To_Value
1249 
1250 PROCEDURE Id_To_Value
1251 (   p_header_rec                    IN  OE_Order_PUB.Header_Rec_Type
1252 ,   p_Header_Adj_tbl                IN  OE_Order_PUB.Header_Adj_Tbl_Type
1253 ,   p_Header_Scredit_tbl            IN  OE_Order_PUB.Header_Scredit_Tbl_Type
1254 ,   p_Header_Payment_tbl            IN  OE_Order_PUB.Header_Payment_Tbl_Type
1255 ,   p_line_tbl                      IN  OE_Order_PUB.Line_Tbl_Type
1256 ,   p_Line_Adj_tbl                  IN  OE_Order_PUB.Line_Adj_Tbl_Type
1257 ,   p_Line_Scredit_tbl              IN  OE_Order_PUB.Line_Scredit_Tbl_Type
1258 ,   p_Line_Payment_tbl              IN  OE_Order_PUB.Line_Payment_Tbl_Type
1259 ,   p_Lot_Serial_tbl                IN  OE_Order_PUB.Lot_Serial_Tbl_Type
1260 ,   x_header_val_rec                OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Val_Rec_Type
1261 ,   x_Header_Adj_val_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Val_Tbl_Type
1262 ,   x_Header_Scredit_val_tbl        OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Scredit_Val_Tbl_Type
1263 ,   x_Header_Payment_val_tbl        OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Payment_Val_Tbl_Type
1264 ,   x_line_val_tbl                  OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Val_Tbl_Type
1265 ,   x_Line_Adj_val_tbl              OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Val_Tbl_Type
1266 ,   x_Line_Scredit_val_tbl          OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Scredit_Val_Tbl_Type
1267 ,   x_Line_Payment_val_tbl          OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Payment_Val_Tbl_Type
1268 ,   x_Lot_Serial_val_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Lot_Serial_Val_Tbl_Type
1269 )
1270 IS
1271 BEGIN
1272 
1273     --  Convert header
1274 
1275     x_header_val_rec := OE_Header_Util.Get_Values(p_header_rec);
1276 
1277     --  Convert Header_Adj
1278 
1279     FOR I IN 1..p_Header_Adj_tbl.COUNT LOOP
1280         x_Header_Adj_val_tbl(I) :=
1281             OE_Header_Adj_Util.Get_Values(p_Header_Adj_tbl(I));
1282     END LOOP;
1283 
1284     --  Convert Header_Scredit
1285 
1286     FOR I IN 1..p_Header_Scredit_tbl.COUNT LOOP
1287         x_Header_Scredit_val_tbl(I) :=
1288             OE_Header_Scredit_Util.Get_Values(p_Header_Scredit_tbl(I));
1289     END LOOP;
1290 
1291     --  Convert Header_Payment
1292 
1293     FOR I IN 1..p_Header_Payment_tbl.COUNT LOOP
1294         x_Header_Payment_val_tbl(I) :=
1295             OE_Header_Payment_Util.Get_Values(p_Header_Payment_tbl(I));
1296     END LOOP;
1297 
1298 
1299     --  Convert line
1300 
1301     FOR I IN 1..p_line_tbl.COUNT LOOP
1302         x_line_val_tbl(I) :=
1303             OE_Line_Util.Get_Values(p_line_tbl(I));
1304     END LOOP;
1305 
1306     --  Convert Line_Adj
1307 
1308     FOR I IN 1..p_Line_Adj_tbl.COUNT LOOP
1309         x_Line_Adj_val_tbl(I) :=
1310             OE_Line_Adj_Util.Get_Values(p_Line_Adj_tbl(I));
1311     END LOOP;
1312 
1313     --  Convert Line_Scredit
1314 
1315     FOR I IN 1..p_Line_Scredit_tbl.COUNT LOOP
1316         x_Line_Scredit_val_tbl(I) :=
1317             OE_Line_Scredit_Util.Get_Values(p_Line_Scredit_tbl(I));
1318     END LOOP;
1319 
1320     --  Convert Line_Payment
1321 
1322     FOR I IN 1..p_Line_Payment_tbl.COUNT LOOP
1323         x_Line_Payment_val_tbl(I) :=
1324 	     OE_Line_Payment_Util.Get_Values(p_Line_Payment_tbl(I));
1325     END LOOP;
1326 
1327     --  Convert Lot_Serial
1328 
1329     FOR I IN 1..p_Lot_Serial_tbl.COUNT LOOP
1330         x_Lot_Serial_val_tbl(I) :=
1331             OE_Lot_Serial_Util.Get_Values(p_Lot_Serial_tbl(I));
1332     END LOOP;
1333 
1334 EXCEPTION
1335 
1336     WHEN OTHERS THEN
1337 
1338         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1339         THEN
1340             OE_MSG_PUB.Add_Exc_Msg
1341             (   G_PKG_NAME
1342             ,   'Id_To_Value'
1343             );
1344         END IF;
1345 
1346         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1347 
1348 END Id_To_Value;
1349 
1350 --  Procedure Value_To_Id
1351 
1352 PROCEDURE Value_To_Id
1353 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1354 ,   p_header_rec                    IN  OE_Order_PUB.Header_Rec_Type
1355 ,   p_header_val_rec                IN  OE_Order_PUB.Header_Val_Rec_Type
1356 ,   p_Header_Adj_tbl                IN  OE_Order_PUB.Header_Adj_Tbl_Type
1357 ,   p_Header_Adj_val_tbl            IN  OE_Order_PUB.Header_Adj_Val_Tbl_Type
1358 ,   p_Header_Scredit_tbl            IN  OE_Order_PUB.Header_Scredit_Tbl_Type
1359 ,   p_Header_Scredit_val_tbl        IN  OE_Order_PUB.Header_Scredit_Val_Tbl_Type
1360 ,   p_Header_Payment_tbl            IN  OE_Order_PUB.Header_Payment_Tbl_Type
1361 ,   p_Header_Payment_val_tbl        IN  OE_Order_PUB.Header_Payment_Val_Tbl_Type
1362 ,   p_line_tbl                      IN  OE_Order_PUB.Line_Tbl_Type
1363 ,   p_line_val_tbl                  IN  OE_Order_PUB.Line_Val_Tbl_Type
1364 ,   p_Line_Adj_tbl                  IN  OE_Order_PUB.Line_Adj_Tbl_Type
1365 ,   p_Line_Adj_val_tbl              IN  OE_Order_PUB.Line_Adj_Val_Tbl_Type
1366 ,   p_Line_Scredit_tbl              IN  OE_Order_PUB.Line_Scredit_Tbl_Type
1367 ,   p_Line_Scredit_val_tbl          IN  OE_Order_PUB.Line_Scredit_Val_Tbl_Type
1368 ,   p_Line_Payment_tbl              IN  OE_Order_PUB.Line_Payment_Tbl_Type
1369 ,   p_Line_Payment_val_tbl          IN  OE_Order_PUB.Line_Payment_Val_Tbl_Type
1370 ,   p_Lot_Serial_tbl                IN  OE_Order_PUB.Lot_Serial_Tbl_Type
1371 ,   p_Lot_Serial_val_tbl            IN  OE_Order_PUB.Lot_Serial_Val_Tbl_Type
1372 ,   x_header_rec                    OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Rec_Type
1373 ,   x_Header_Adj_tbl                OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Tbl_Type
1374 ,   x_Header_Scredit_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Scredit_Tbl_Type
1375 ,   x_Header_Payment_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Payment_Tbl_Type
1376 ,   x_line_tbl                      OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Tbl_Type
1377 ,   x_Line_Adj_tbl                  OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Tbl_Type
1378 ,   x_Line_Scredit_tbl              OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Scredit_Tbl_Type
1379 ,   x_Line_Payment_tbl              OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Payment_Tbl_Type
1380 ,   x_Lot_Serial_tbl                OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Lot_Serial_Tbl_Type
1381 )
1382 IS
1383 l_order_source_id           NUMBER := p_header_rec.order_source_id;
1384 l_orig_sys_document_ref     VARCHAR2(50) :=  p_header_rec.orig_sys_document_ref;
1385 l_orig_sys_line_ref     VARCHAR2(50);
1386 l_orig_sys_shipment_ref     VARCHAR2(50);
1387 l_change_sequence           VARCHAR2(50) := p_header_rec.change_sequence;
1388 l_source_document_type_id   NUMBER := p_header_rec.source_document_type_id;
1389 l_source_document_id        NUMBER := p_header_rec.source_document_id;
1390 l_source_document_line_id        NUMBER;
1391 
1392 l_header_rec                  OE_Order_PUB.Header_Rec_Type;
1393 l_Header_Adj_rec              OE_Order_PUB.Header_Adj_Rec_Type;
1394 l_Header_Scredit_rec          OE_Order_PUB.Header_Scredit_Rec_Type;
1395 l_line_rec                    OE_Order_PUB.Line_Rec_Type;
1396 l_Line_Adj_rec                OE_Order_PUB.Line_Adj_Rec_Type;
1397 l_Line_Scredit_rec            OE_Order_PUB.Line_Scredit_Rec_Type;
1398 l_Lot_Serial_rec              OE_Order_PUB.Lot_Serial_Rec_Type;
1399 l_Header_Payment_rec          OE_Order_PUB.Header_Payment_Rec_Type;
1400 l_Line_Payment_rec            OE_Order_PUB.Line_Payment_Rec_Type;
1401 
1402 l_index                       BINARY_INTEGER;
1403 BEGIN
1404 
1405     --  Init x_return_status.
1406 
1407     x_return_status := FND_API.G_RET_STS_SUCCESS;
1408 
1409     --  Convert header
1410 
1411     x_header_rec	:= p_header_rec;
1412 
1413         --Setting message context for bug 2829206
1414         IF p_header_rec.header_Id IS NOT NULL AND
1415            p_header_rec.header_Id <> FND_API.G_MISS_NUM THEN
1416            BEGIN
1417                SELECT order_source_id, orig_sys_document_ref, change_sequence,
1418                source_document_type_id, source_document_id
1419                INTO l_order_source_id, l_orig_sys_document_ref, l_change_sequence,
1420                l_source_document_type_id, l_source_document_id
1421                FROM   OE_ORDER_HEADERS_ALL
1422                WHERE  header_id = p_header_rec.header_Id;
1423             EXCEPTION
1424                WHEN NO_DATA_FOUND THEN
1425                    l_order_source_id := null;
1426                    l_orig_sys_document_ref := null;
1427                    l_change_sequence := null;
1428                    l_source_document_type_id := null;
1429                    l_source_document_id := null;
1430                WHEN OTHERS THEN
1431                    l_order_source_id := null;
1432                    l_orig_sys_document_ref := null;
1433                    l_change_sequence := null;
1434                    l_source_document_type_id := null;
1435                    l_source_document_id := null;
1436             END;
1437         END IF;
1438 
1439     OE_MSG_PUB.set_msg_context(
1440 	 p_entity_code			=> 'HEADER'
1441   	,p_entity_id         		=> p_header_rec.header_id
1442     	,p_header_id         		=> p_header_rec.header_id
1443     	,p_line_id           		=> null
1444     	,p_orig_sys_document_ref	=> l_orig_sys_document_ref
1445     	,p_orig_sys_document_line_ref	=> null
1446         ,p_change_sequence              => l_change_sequence
1447     	,p_source_document_id		=> l_source_document_id
1448     	,p_source_document_line_id	=> null
1449 	,p_order_source_id            => l_order_source_id
1450 	,p_source_document_type_id    => l_source_document_type_id);
1451 
1452     OE_Header_Util.Get_Ids
1453     (   p_x_header_rec                => x_header_rec
1454     ,   p_header_val_rec              => p_header_val_rec
1455     );
1456 
1457     IF x_header_rec.return_status = FND_API.G_RET_STS_ERROR THEN
1458         x_return_status := FND_API.G_RET_STS_ERROR;
1459     END IF;
1460 
1461     OE_MSG_PUB.reset_msg_context('HEADER');
1462 
1463     --  Convert Header_Adj
1464 
1465     x_Header_Adj_tbl := p_Header_Adj_tbl;
1466 
1467     l_index := p_Header_Adj_val_tbl.FIRST;
1468 
1469     WHILE l_index IS NOT NULL LOOP
1470 
1471         --Setting message context for bug 2829206
1472         IF x_header_Adj_tbl(l_index).header_Id IS NOT NULL AND
1473            x_header_Adj_tbl(l_index).header_Id <> FND_API.G_MISS_NUM THEN
1474            BEGIN
1475                SELECT order_source_id, orig_sys_document_ref, change_sequence,
1476                source_document_type_id, source_document_id
1477                INTO l_order_source_id, l_orig_sys_document_ref, l_change_sequence,
1478                l_source_document_type_id, l_source_document_id
1479                FROM   OE_ORDER_HEADERS_ALL
1480                WHERE  header_id = x_header_Adj_tbl(l_index).header_Id;
1481             EXCEPTION
1482                WHEN NO_DATA_FOUND THEN
1483                    l_order_source_id := null;
1484                    l_orig_sys_document_ref := null;
1485                    l_change_sequence := null;
1486                    l_source_document_type_id := null;
1487                    l_source_document_id := null;
1488                WHEN OTHERS THEN
1489                    l_order_source_id := null;
1490                    l_orig_sys_document_ref := null;
1491                    l_change_sequence := null;
1492                    l_source_document_type_id := null;
1493                    l_source_document_id := null;
1494             END;
1495         END IF;
1496 
1497         OE_MSG_PUB.set_msg_context(
1498 		 p_entity_code			=> 'HEADER_ADJ'
1499   		,p_entity_id         		=> x_header_Adj_tbl(l_index).price_adjustment_id
1500     		,p_header_id         		=> x_header_Adj_tbl(l_index).header_Id
1501         	,p_line_id                      => null
1502         	,p_order_source_id              => l_order_source_id
1503         	,p_orig_sys_document_ref        => l_orig_sys_document_ref
1504         	,p_orig_sys_document_line_ref   => null
1505         	,p_change_sequence              => l_change_sequence
1506         	,p_source_document_type_id      => l_source_document_type_id
1507         	,p_source_document_id           => l_source_document_id
1508         	,p_source_document_line_id      => null );
1509 
1510         OE_Header_Adj_Util.Get_Ids
1511         (   p_x_Header_Adj_rec            => x_Header_Adj_tbl(l_index)
1512         ,   p_Header_Adj_val_rec          => p_Header_Adj_val_tbl(l_index)
1513         );
1514 
1515         IF x_Header_Adj_tbl(l_index).return_status = FND_API.G_RET_STS_ERROR THEN
1516             x_return_status := FND_API.G_RET_STS_ERROR;
1517         END IF;
1518 
1519         l_index := p_Header_Adj_val_tbl.NEXT(l_index);
1520 
1521         OE_MSG_PUB.reset_msg_context('HEADER_ADJ');
1522 
1523     END LOOP;
1524 
1525     --  Convert Header_Scredit
1526 
1527     x_Header_Scredit_tbl := p_Header_Scredit_tbl;
1528 
1529     l_index := p_Header_Scredit_val_tbl.FIRST;
1530 
1531     WHILE l_index IS NOT NULL LOOP
1532 
1533          --Setting message context for bug 2829206
1534          IF x_header_Scredit_tbl(l_index).header_id IS NOT NULL AND
1535             x_header_Scredit_tbl(l_index).header_id <> FND_API.G_MISS_NUM THEN
1536             BEGIN
1537                SELECT order_source_id, orig_sys_document_ref, change_sequence,
1538                source_document_type_id, source_document_id
1539                INTO l_order_source_id, l_orig_sys_document_ref, l_change_sequence,
1540                l_source_document_type_id, l_source_document_id
1541                FROM   OE_ORDER_HEADERS_ALL
1542                WHERE  header_id = x_header_Scredit_tbl(l_index).header_id;
1543             EXCEPTION
1544                WHEN NO_DATA_FOUND THEN
1545                    l_order_source_id := null;
1546                    l_orig_sys_document_ref := null;
1547                    l_change_sequence := null;
1548                    l_source_document_type_id := null;
1549                    l_source_document_id := null;
1550                WHEN OTHERS THEN
1551                    l_order_source_id := null;
1552                    l_orig_sys_document_ref := null;
1553                    l_change_sequence := null;
1554                    l_source_document_type_id := null;
1555                    l_source_document_id := null;
1556             END;
1557          END IF;
1558 
1559         OE_MSG_PUB.set_msg_context(
1560 	 	p_entity_code			=> 'HEADER_SCREDIT'
1561   		,p_entity_id         		=> x_header_Scredit_tbl(l_index).sales_credit_id
1562     		,p_header_id         		=> x_header_Scredit_tbl(l_index).header_Id
1563     		,p_line_id           		=> null
1564                 ,p_order_source_id              => l_order_source_id
1565     		,p_orig_sys_document_ref	=> l_orig_sys_document_ref
1566     		,p_orig_sys_document_line_ref	=> null
1567                 ,p_change_sequence              => l_change_sequence
1568                 ,p_source_document_type_id      => l_source_document_type_id
1569     		,p_source_document_id		=> l_source_document_id
1570     		,p_source_document_line_id	=> null );
1571 
1572         OE_Header_Scredit_Util.Get_Ids
1573         (   p_x_Header_Scredit_rec        => x_Header_Scredit_tbl(l_index)
1574         ,   p_Header_Scredit_val_rec      => p_Header_Scredit_val_tbl(l_index)
1575         );
1576 
1577         IF x_Header_Scredit_tbl(l_index).return_status = FND_API.G_RET_STS_ERROR THEN
1578             x_return_status := FND_API.G_RET_STS_ERROR;
1579         END IF;
1580 
1581         l_index := p_Header_Scredit_val_tbl.NEXT(l_index);
1582 
1583         OE_MSG_PUB.reset_msg_context('HEADER_SCREDIT');
1584 
1585     END LOOP;
1586 
1587     --  Convert Header_Payment
1588 
1589     x_Header_Payment_tbl := p_Header_Payment_tbl;
1590 
1591     l_index := p_Header_Payment_val_tbl.FIRST;
1592 
1593     WHILE l_index IS NOT NULL LOOP
1594 
1595          --Setting message context for bug 2829206
1596          IF x_header_Payment_tbl(l_index).header_id IS NOT NULL AND
1597             x_header_Payment_tbl(l_index).header_id <> FND_API.G_MISS_NUM THEN
1598             BEGIN
1599                SELECT order_source_id, orig_sys_document_ref, change_sequence,
1600                source_document_type_id, source_document_id
1601                INTO l_order_source_id, l_orig_sys_document_ref, l_change_sequence,
1602                l_source_document_type_id, l_source_document_id
1603                FROM   OE_ORDER_HEADERS_ALL
1604                WHERE  header_id = x_header_Payment_tbl(l_index).header_id;
1605             EXCEPTION
1606                WHEN NO_DATA_FOUND THEN
1607                    l_order_source_id := null;
1608                    l_orig_sys_document_ref := null;
1609                    l_change_sequence := null;
1610                    l_source_document_type_id := null;
1611                    l_source_document_id := null;
1612                WHEN OTHERS THEN
1613                    l_order_source_id := null;
1614                    l_orig_sys_document_ref := null;
1615                    l_change_sequence := null;
1616                    l_source_document_type_id := null;
1617                    l_source_document_id := null;
1618             END;
1619          END IF;
1620 
1621         OE_MSG_PUB.set_msg_context(
1622                 p_entity_code                   => 'HEADER_PAYMENT'
1623                 ,p_entity_id                    => x_header_Payment_tbl(l_index).payment_number
1624                 ,p_header_id                    => x_header_Payment_tbl(l_index).header_Id
1625                 ,p_line_id                      => null
1626                 ,p_order_source_id              => l_order_source_id
1627                 ,p_orig_sys_document_ref        => l_orig_sys_document_ref
1628                 ,p_orig_sys_document_line_ref   => null
1629                 ,p_change_sequence              => l_change_sequence
1630                 ,p_source_document_type_id      => l_source_document_type_id
1631                 ,p_source_document_id           => l_source_document_id
1632                 ,p_source_document_line_id      => null );
1633 
1634         OE_Header_Payment_Util.Get_Ids
1635         (   p_x_Header_Payment_rec        => x_Header_Payment_tbl(l_index)
1636         ,   p_Header_Payment_val_rec      => p_Header_Payment_val_tbl(l_index)
1637         );
1638 
1639         IF x_Header_Payment_tbl(l_index).return_status = FND_API.G_RET_STS_ERROR THEN
1640             x_return_status := FND_API.G_RET_STS_ERROR;
1641         END IF;
1642 
1643         l_index := p_Header_Payment_val_tbl.NEXT(l_index);
1644 
1645         OE_MSG_PUB.reset_msg_context('HEADER_PAYMENT');
1646 
1647     END LOOP;
1648 
1649     --  Convert line
1650 
1651     x_line_tbl := p_line_tbl;
1652 
1653     l_index := p_line_val_tbl.FIRST;
1654 
1655     WHILE l_index IS NOT NULL LOOP
1656         OE_MSG_PUB.set_msg_context
1657         ( p_entity_code                 => 'LINE'
1658          ,p_entity_id                   => x_line_tbl(l_index).line_id
1659          ,p_header_id                   => x_line_tbl(l_index).header_id
1660          ,p_line_id                     => x_line_tbl(l_index).line_id
1661          ,p_orig_sys_document_ref       => x_line_tbl(l_index).orig_sys_document_ref
1662          ,p_orig_sys_document_line_ref  => x_line_tbl(l_index).orig_sys_line_ref
1663          ,p_orig_sys_shipment_ref       => x_line_tbl(l_index).orig_sys_shipment_ref
1664          ,p_change_sequence             => x_line_tbl(l_index).change_sequence
1665          ,p_source_document_id          => x_line_tbl(l_index).source_document_id
1666          ,p_source_document_line_id     => x_line_tbl(l_index).source_document_line_id
1667          ,p_order_source_id             => x_line_tbl(l_index).order_source_id
1668          ,p_source_document_type_id     => x_line_tbl(l_index).source_document_type_id);
1669 
1670 	   -- Fix bug 1351061: populate the sold_to_org_id on the
1671 	   -- line record from the header record. This is needed as
1672 	   -- the customer related value fields (ship_to_org, bill_to_org
1673 	   -- etc.) are converted to ID fields only if the sold_to_org_id
1674 	   -- is provided.
1675 	   IF nvl(x_line_tbl(l_index).sold_to_org_id,FND_API.G_MISS_NUM)
1676 			 = FND_API.G_MISS_NUM
1677 		 AND nvl(p_line_val_tbl(l_index).sold_to_org,FND_API.G_MISS_CHAR)
1678 			 = FND_API.G_MISS_CHAR
1679 		 AND x_header_rec.sold_to_org_id <> FND_API.G_MISS_NUM
1680         THEN
1681 		 x_line_tbl(l_index).sold_to_org_id := x_header_rec.sold_to_org_id;
1682         END IF;
1683 
1684         OE_Line_Util.Get_Ids
1685         (   p_x_line_rec                  => x_line_tbl(l_index)
1686         ,   p_line_val_rec                => p_line_val_tbl(l_index)
1687         );
1688 
1689         IF x_line_tbl(l_index).return_status = FND_API.G_RET_STS_ERROR THEN
1690             x_return_status := FND_API.G_RET_STS_ERROR;
1691         END IF;
1692 
1693         l_index := p_line_val_tbl.NEXT(l_index);
1694 
1695         OE_MSG_PUB.reset_msg_context('LINE');
1696 
1697     END LOOP;
1698 
1699     --  Convert Line_Adj
1700 
1701     x_Line_Adj_tbl := p_Line_Adj_tbl;
1702 
1703     l_index := p_Line_Adj_val_tbl.FIRST;
1704 
1705     WHILE l_index IS NOT NULL LOOP
1706            IF x_Line_Adj_tbl(l_index).line_id IS NOT NULL AND
1707               x_Line_Adj_tbl(l_index).line_id <> FND_API.G_MISS_NUM THEN
1708               BEGIN
1709                SELECT order_source_id, orig_sys_document_ref, change_sequence,
1710                source_document_type_id, source_document_id, orig_sys_line_ref,
1711                source_document_line_id, orig_sys_shipment_ref
1712                INTO l_order_source_id, l_orig_sys_document_ref, l_change_sequence,
1713                l_source_document_type_id, l_source_document_id, l_orig_sys_line_ref,
1714                l_source_document_line_id, l_orig_sys_shipment_ref
1715                FROM   OE_ORDER_LINES_ALL
1716                WHERE  line_id = x_Line_Adj_tbl(l_index).line_id;
1717               EXCEPTION
1718                WHEN NO_DATA_FOUND THEN
1719                    l_order_source_id := null;
1720                    l_orig_sys_document_ref := null;
1721                    l_change_sequence := null;
1722                    l_source_document_type_id := null;
1723                    l_source_document_id := null;
1724                    l_orig_sys_line_ref := null;
1725                    l_source_document_line_id := null;
1726                    l_orig_sys_shipment_ref := null;
1727                WHEN OTHERS THEN
1728                    l_order_source_id := null;
1729                    l_orig_sys_document_ref := null;
1730                    l_change_sequence := null;
1731                    l_source_document_type_id := null;
1732                    l_source_document_id := null;
1733                    l_orig_sys_line_ref := null;
1734                    l_source_document_line_id := null;
1735                    l_orig_sys_shipment_ref := null;
1736               END;
1737            END IF;
1738 
1739            OE_MSG_PUB.set_msg_context(
1740 		 p_entity_code			=> 'LINE_ADJ'
1741   		,p_entity_id         		=> x_Line_Adj_tbl(l_index).price_adjustment_id
1742     		,p_header_id         		=> x_Line_Adj_tbl(l_index).header_id
1743     		,p_line_id           		=> x_Line_Adj_tbl(l_index).line_id
1744                 ,p_order_source_id              => l_order_source_id
1745                 ,p_orig_sys_document_ref        => l_orig_sys_document_ref
1746                 ,p_orig_sys_document_line_ref   => l_orig_sys_line_ref
1747                 ,p_orig_sys_shipment_ref        => l_orig_sys_shipment_ref
1748                 ,p_change_sequence              => l_change_sequence
1749                 ,p_source_document_type_id      => l_source_document_type_id
1750                 ,p_source_document_id           => l_source_document_id
1751                 ,p_source_document_line_id      => l_source_document_line_id );
1752 
1753         OE_Line_Adj_Util.Get_Ids
1754         (   p_x_Line_Adj_rec              => x_Line_Adj_tbl(l_index)
1755         ,   p_Line_Adj_val_rec            => p_Line_Adj_val_tbl(l_index)
1756         );
1757 
1758         IF x_Line_Adj_tbl(l_index).return_status = FND_API.G_RET_STS_ERROR THEN
1759             x_return_status := FND_API.G_RET_STS_ERROR;
1760         END IF;
1761 
1762         l_index := p_Line_Adj_val_tbl.NEXT(l_index);
1763 
1764         OE_MSG_PUB.reset_msg_context('LINE_ADJ');
1765 
1766     END LOOP;
1767 
1768     --  Convert Line_Scredit
1769 
1770     x_Line_Scredit_tbl := p_Line_Scredit_tbl;
1771 
1772     l_index := p_Line_Scredit_val_tbl.FIRST;
1773 
1774     WHILE l_index IS NOT NULL LOOP
1775 
1776         IF x_Line_Scredit_tbl(l_index).line_id IS NOT NULL AND
1777            x_Line_Scredit_tbl(l_index).line_id <> FND_API.G_MISS_NUM THEN
1778               BEGIN
1779                SELECT order_source_id, orig_sys_document_ref, change_sequence,
1780                source_document_type_id, source_document_id, orig_sys_line_ref,
1781                source_document_line_id, orig_sys_shipment_ref
1782                INTO l_order_source_id, l_orig_sys_document_ref, l_change_sequence,
1783                l_source_document_type_id, l_source_document_id, l_orig_sys_line_ref,
1784                l_source_document_line_id, l_orig_sys_shipment_ref
1785                FROM   OE_ORDER_LINES_ALL
1786                WHERE  line_id = x_Line_Scredit_tbl(l_index).line_id;
1787               EXCEPTION
1788                WHEN NO_DATA_FOUND THEN
1789                    l_order_source_id := null;
1790                    l_orig_sys_document_ref := null;
1791                    l_change_sequence := null;
1792                    l_source_document_type_id := null;
1793                    l_source_document_id := null;
1794                    l_orig_sys_line_ref := null;
1795                    l_source_document_line_id := null;
1796                    l_orig_sys_shipment_ref := null;
1797                WHEN OTHERS THEN
1798                    l_order_source_id := null;
1799                    l_orig_sys_document_ref := null;
1800                    l_change_sequence := null;
1801                    l_source_document_type_id := null;
1802                    l_source_document_id := null;
1803                    l_orig_sys_line_ref := null;
1804                    l_source_document_line_id := null;
1805                    l_orig_sys_shipment_ref := null;
1806               END;
1807            END IF;
1808 
1809         OE_MSG_PUB.set_msg_context(
1810 		 p_entity_code			=> 'LINE_SCREDIT'
1811   		,p_entity_id         		=> x_Line_Scredit_tbl(l_index).sales_credit_id
1812     		,p_header_id         		=> x_Line_Scredit_tbl(l_index).header_id
1813     		,p_line_id           		=> x_Line_Scredit_tbl(l_index).line_id
1814                 ,p_order_source_id              => l_order_source_id
1815     		,p_orig_sys_document_ref	=> l_orig_sys_document_ref
1816     		,p_orig_sys_document_line_ref	=> l_orig_sys_line_ref
1817                 ,p_orig_sys_shipment_ref        => l_orig_sys_shipment_ref
1818                 ,p_change_sequence              => l_change_sequence
1819                 ,p_source_document_type_id      => l_source_document_type_id
1820     		,p_source_document_id		=> l_source_document_id
1821     		,p_source_document_line_id	=> l_source_document_line_id );
1822 
1823         OE_Line_Scredit_Util.Get_Ids
1824         (   p_x_Line_Scredit_rec          => x_Line_Scredit_tbl(l_index)
1825         ,   p_Line_Scredit_val_rec        => p_Line_Scredit_val_tbl(l_index)
1826         );
1827 
1828         IF x_Line_Scredit_tbl(l_index).return_status = FND_API.G_RET_STS_ERROR THEN
1829             x_return_status := FND_API.G_RET_STS_ERROR;
1830         END IF;
1831 
1832         l_index := p_Line_Scredit_val_tbl.NEXT(l_index);
1833 
1834         OE_MSG_PUB.reset_msg_context('LINE_SCREDIT');
1835 
1836     END LOOP;
1837 
1838     --  Convert Line_Payment
1839 
1840     x_Line_Payment_tbl := p_Line_Payment_tbl;
1841 
1842     l_index := p_Line_Payment_val_tbl.FIRST;
1843 
1844     WHILE l_index IS NOT NULL LOOP
1845 
1846         IF x_Line_Payment_tbl(l_index).line_id IS NOT NULL AND
1847            x_Line_Payment_tbl(l_index).line_id <> FND_API.G_MISS_NUM THEN
1848               BEGIN
1849                SELECT order_source_id, orig_sys_document_ref, change_sequence,
1850                source_document_type_id, source_document_id, orig_sys_line_ref,
1851                source_document_line_id, orig_sys_shipment_ref
1852                INTO l_order_source_id, l_orig_sys_document_ref, l_change_sequence,
1853                l_source_document_type_id, l_source_document_id, l_orig_sys_line_ref,
1854                l_source_document_line_id, l_orig_sys_shipment_ref
1855                FROM   OE_ORDER_LINES_ALL
1856                WHERE  line_id = x_Line_Payment_tbl(l_index).line_id;
1857               EXCEPTION
1858                WHEN NO_DATA_FOUND THEN
1859                    l_order_source_id := null;
1860                    l_orig_sys_document_ref := null;
1861                    l_change_sequence := null;
1862                    l_source_document_type_id := null;
1863                    l_source_document_id := null;
1864                    l_orig_sys_line_ref := null;
1865                    l_source_document_line_id := null;
1866                    l_orig_sys_shipment_ref := null;
1867                WHEN OTHERS THEN
1868                    l_order_source_id := null;
1869                    l_orig_sys_document_ref := null;
1870                    l_change_sequence := null;
1871                    l_source_document_type_id := null;
1872                    l_source_document_id := null;
1873                    l_orig_sys_line_ref := null;
1874                    l_source_document_line_id := null;
1875                    l_orig_sys_shipment_ref := null;
1876               END;
1877            END IF;
1878 
1879         OE_MSG_PUB.set_msg_context(
1880                  p_entity_code                  => 'LINE_PAYMENT'
1881                 ,p_entity_id                    => x_Line_Payment_tbl(l_index).payment_number
1882                 ,p_header_id                    => x_Line_Payment_tbl(l_index).header_id
1883                 ,p_line_id                      => x_Line_Payment_tbl(l_index).line_id
1884                 ,p_order_source_id              => l_order_source_id
1885                 ,p_orig_sys_document_ref        => l_orig_sys_document_ref
1886                 ,p_orig_sys_document_line_ref   => l_orig_sys_line_ref
1887                 ,p_orig_sys_shipment_ref        => l_orig_sys_shipment_ref
1888                 ,p_change_sequence              => l_change_sequence
1889                 ,p_source_document_type_id      => l_source_document_type_id
1890                 ,p_source_document_id           => l_source_document_id
1891                 ,p_source_document_line_id      => l_source_document_line_id );
1892 
1893         OE_Line_Payment_Util.Get_Ids
1894         (   p_x_Line_Payment_rec          => x_Line_Payment_tbl(l_index)
1895         ,   p_Line_Payment_val_rec        => p_Line_Payment_val_tbl(l_index)
1896         );
1897 
1898         IF x_Line_Payment_tbl(l_index).return_status = FND_API.G_RET_STS_ERROR THEN
1899             x_return_status := FND_API.G_RET_STS_ERROR;
1900         END IF;
1901 
1902         l_index := p_Line_Payment_val_tbl.NEXT(l_index);
1903 
1904         OE_MSG_PUB.reset_msg_context('LINE_PAYMENT');
1905 
1906     END LOOP;
1907 
1908     --  Convert Lot_Serial
1909 
1910     x_Lot_Serial_tbl := p_Lot_Serial_tbl;
1911 
1912     l_index := p_Lot_Serial_val_tbl.FIRST;
1913 
1914     WHILE l_index IS NOT NULL LOOP
1915 
1916         IF x_Lot_Serial_tbl(l_index).line_id IS NOT NULL AND
1917            x_Lot_Serial_tbl(l_index).line_id <> FND_API.G_MISS_NUM THEN
1918               BEGIN
1919                SELECT order_source_id, orig_sys_document_ref, change_sequence,
1920                source_document_type_id, source_document_id, orig_sys_line_ref,
1921                source_document_line_id, orig_sys_shipment_ref
1922                INTO l_order_source_id, l_orig_sys_document_ref, l_change_sequence,
1923                l_source_document_type_id, l_source_document_id, l_orig_sys_line_ref,
1924                l_source_document_line_id, l_orig_sys_shipment_ref
1925                FROM   OE_ORDER_LINES_ALL
1926                WHERE  line_id = x_Lot_Serial_tbl(l_index).line_id;
1927               EXCEPTION
1928                WHEN NO_DATA_FOUND THEN
1929                    l_order_source_id := null;
1930                    l_orig_sys_document_ref := null;
1931                    l_change_sequence := null;
1932                    l_source_document_type_id := null;
1933                    l_source_document_id := null;
1934                    l_orig_sys_line_ref := null;
1935                    l_source_document_line_id := null;
1936                    l_orig_sys_shipment_ref := null;
1937                WHEN OTHERS THEN
1938                    l_order_source_id := null;
1939                    l_orig_sys_document_ref := null;
1940                    l_change_sequence := null;
1941                    l_source_document_type_id := null;
1942                    l_source_document_id := null;
1943                    l_orig_sys_line_ref := null;
1944                    l_source_document_line_id := null;
1945                    l_orig_sys_shipment_ref := null;
1946               END;
1947            END IF;
1948 
1949         OE_MSG_PUB.set_msg_context(
1950 		 p_entity_code			=> 'LOT_SERIAL'
1951   		,p_entity_id         		=> null
1952     		,p_header_id         		=> p_header_rec.header_id
1953     		,p_line_id           		=> x_Lot_Serial_tbl(l_index).line_id
1954                 ,p_order_source_id              => l_order_source_id
1955     		,p_orig_sys_document_ref	=> l_orig_sys_document_ref
1956     		,p_orig_sys_document_line_ref	=> l_orig_sys_line_ref
1957                 ,p_orig_sys_shipment_ref        => l_orig_sys_shipment_ref
1958                 ,p_change_sequence              => l_change_sequence
1959                 ,p_source_document_type_id      => l_source_document_type_id
1960     		,p_source_document_id		=> l_source_document_id
1961     		,p_source_document_line_id	=> l_source_document_line_id );
1962 
1963         OE_Lot_Serial_Util.Get_Ids
1964         (   p_x_Lot_Serial_rec            => x_Lot_Serial_tbl(l_index)
1965         ,   p_Lot_Serial_val_rec          => p_Lot_Serial_val_tbl(l_index)
1966         );
1967 
1968         IF x_Lot_Serial_tbl(l_index).return_status = FND_API.G_RET_STS_ERROR THEN
1969             x_return_status := FND_API.G_RET_STS_ERROR;
1970         END IF;
1971 
1972         l_index := p_Lot_Serial_val_tbl.NEXT(l_index);
1973 
1974         OE_MSG_PUB.reset_msg_context('LOT_SERIAL_ID');
1975 
1976     END LOOP;
1977 
1978 EXCEPTION
1979 
1980     WHEN OTHERS THEN
1981 
1982         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1983         THEN
1984             OE_MSG_PUB.Add_Exc_Msg
1985             (   G_PKG_NAME
1986             ,   'Value_To_Id'
1987             );
1988         END IF;
1989 
1990         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1991 
1992 END Value_To_Id;
1993 
1994 -- API Name:    Get_Option_Lines
1995 -- Type    :    Group
1996 -- Function
1997 --
1998 -- Pre-reqs
1999 --
2000 -- Parameters
2001 --
2002 -- Version      Current version = 1.0
2003 --              Initial version = 1.0
2004 --
2005 -- Notes
2006 --
2007 -- End of Comments
2008 
2009 
2010 
2011 Procedure Get_Option_Lines
2012 (   p_api_version_number        IN  NUMBER
2013 ,   p_init_msg_list             IN  VARCHAR2 := FND_API.G_FALSE
2014 ,   p_top_model_line_id         IN  NUMBER
2015 ,   x_line_tbl                  OUT NOCOPY /* file.sql.39 change */ OE_Order_Pub.Line_Tbl_Type
2016 ,   x_return_status             OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2017 ,   x_msg_count                 OUT NOCOPY /* file.sql.39 change */ NUMBER
2018 ,   x_msg_data                  OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2019 )
2020 
2021 IS
2022 l_api_version_number       CONSTANT NUMBER := 1.0;
2023 l_api_name                 CONSTANT VARCHAR2(30) := 'Get_Option_Lines';
2024 l_return_status            VARCHAR2(1);
2025 l_top_model_line_id        NUMBER;
2026 l_line_tbl                 OE_Order_PUB.Line_Tbl_Type;
2027 
2028 BEGIN
2029 
2030      -- Standard  call to check for API compatibility
2031 
2032 		   IF NOT FND_API.Compatible_API_Call
2033 				(   l_api_version_number
2034 			    	,   p_api_version_number
2035 			     ,   l_api_name
2036 			     ,   G_PKG_NAME
2037 			     )
2038 		  THEN
2039                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2040             END IF;
2041 
2042 		  -- Standard check for Val/ID conversion
2043 
2044          IF  p_top_model_line_id <> FND_API.G_MISS_NUM THEN
2045 
2046 		   l_top_model_line_id := p_top_model_line_id;
2047 
2048 		   IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_SUCCESS)
2049 		   THEN
2050 			  fnd_message.set_name('ONT','OE_BOTH_VAL_AND_ID_EXIST');
2051 			  FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Top Model Line');
2052 			  OE_MSG_PUB.Add;
2053              END IF;
2054 
2055       ELSE
2056 	   IF l_top_model_line_id = FND_API.G_MISS_NUM THEN
2057 	     IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
2058 	       THEN
2059 			 fnd_message.set_name('ONT','Invalid Business Object Value');
2060 			 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Top Model Line');
2061 			 OE_MSG_PUB.Add;
2062             END IF;
2063        END IF;
2064 
2065 	   RAISE FND_API.G_EXC_ERROR;
2066      END IF;
2067 
2068 	-- Make a call to OE_Config_Util.Query_OPtions
2069    	OE_Config_Util.Query_Options
2070 	   	(p_top_model_line_id   => l_top_model_line_id
2071 		,x_line_tbl		=> l_line_tbl
2072 		);
2073 
2074      -- Load the OUT parameters
2075 
2076 	x_line_tbl   := l_line_tbl;
2077 
2078 	-- Set the return status
2079 
2080 	x_return_status := FND_API.G_RET_STS_SUCCESS;
2081 
2082 	-- Get message count and data
2083 
2084 	OE_MSG_PUB.Count_And_Get
2085 	(  p_count       =>x_msg_count
2086 	,  p_data        =>x_msg_data
2087 	);
2088 
2089 EXCEPTION
2090 
2091 	WHEN FND_API.G_EXC_ERROR THEN
2092 	    x_return_status := FND_API.G_RET_STS_ERROR;
2093 
2094       -- Get message count and data
2095 
2096 	  OE_MSG_PUB.Count_And_Get
2097 	  (  p_count     => x_msg_count
2098 	  ,  p_data      => x_msg_data
2099 	  );
2100 
2101 	   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2102 
2103 		 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2104 
2105 		  --  Get message count and data
2106 		   OE_MSG_PUB.Count_And_Get
2107 		   (  p_count      =>  x_msg_count
2108 		   ,  p_data       =>  x_msg_data
2109 		   );
2110 
2111         WHEN OTHERS THEN
2112 
2113 		 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2114 		 THEN
2115                 OE_MSG_PUB.Add_Exc_Msg
2116 			 (   G_PKG_NAME
2117 			 ,   'Get_Option_Lines'
2118 			 );
2119           END IF;
2120 
2121 		-- Get message count and data
2122 		 OE_MSG_PUB.Count_And_Get
2123 		 (  p_count    => x_msg_count
2124 		 ,  p_data     => x_msg_data
2125 		 );
2126 
2127 END Get_Option_Lines;
2128 
2129  -- Existing APIs Calling the New APIs with Payments
2130 
2131 PROCEDURE Process_Order
2132 (   p_api_version_number            IN  NUMBER
2133 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
2134 ,   p_return_values                 IN  VARCHAR2 := FND_API.G_FALSE
2135 ,   p_commit                        IN  VARCHAR2 := FND_API.G_FALSE
2136 ,   p_validation_level              IN  NUMBER := FND_API.G_VALID_LEVEL_FULL
2137 ,   p_control_rec		    IN  OE_GLOBALS.Control_Rec_Type :=
2138 					OE_GLOBALS.G_MISS_CONTROL_REC
2139 ,   p_api_service_level		    IN  VARCHAR2 := OE_GLOBALS.G_ALL_SERVICE
2140 ,   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2141 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
2142 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2143 ,   p_header_rec                    IN  OE_Order_Pub.Header_Rec_Type :=
2144                                         OE_Order_PUB.G_MISS_HEADER_REC
2145 ,   p_old_header_rec                IN  OE_Order_PUB.Header_Rec_Type :=
2146                                         OE_Order_PUB.G_MISS_HEADER_REC
2147 ,   p_header_val_rec                IN  OE_Order_PUB.Header_Val_Rec_Type :=
2148                                         OE_Order_PUB.G_MISS_HEADER_VAL_REC
2149 ,   p_old_header_val_rec            IN  OE_Order_PUB.Header_Val_Rec_Type :=
2150                                         OE_Order_PUB.G_MISS_HEADER_VAL_REC
2151 ,   p_Header_Adj_tbl                IN  OE_Order_PUB.Header_Adj_Tbl_Type :=
2152                                         OE_Order_PUB.G_MISS_HEADER_ADJ_TBL
2153 ,   p_old_Header_Adj_tbl            IN  OE_Order_PUB.Header_Adj_Tbl_Type :=
2154                                         OE_Order_PUB.G_MISS_HEADER_ADJ_TBL
2155 ,   p_Header_Adj_val_tbl            IN  OE_Order_PUB.Header_Adj_Val_Tbl_Type :=
2156                                         OE_Order_PUB.G_MISS_HEADER_ADJ_VAL_TBL
2157 ,   p_old_Header_Adj_val_tbl        IN  OE_Order_PUB.Header_Adj_Val_Tbl_Type :=
2158                                         OE_Order_PUB.G_MISS_HEADER_ADJ_VAL_TBL
2159 ,   p_Header_price_Att_tbl          IN  OE_Order_PUB.Header_Price_Att_Tbl_Type :=
2160                                         OE_Order_PUB.G_MISS_HEADER_PRICE_ATT_TBL
2161 ,   p_old_Header_Price_Att_tbl      IN  OE_Order_PUB.Header_Price_Att_Tbl_Type :=
2162                                         OE_Order_PUB.G_MISS_HEADER_PRICE_ATT_TBL
2163 ,   p_Header_Adj_Att_tbl            IN  OE_Order_PUB.Header_Adj_Att_Tbl_Type :=
2164                                         OE_Order_PUB.G_MISS_HEADER_ADJ_ATT_TBL
2165 ,   p_old_Header_Adj_Att_tbl        IN  OE_Order_PUB.Header_Adj_Att_Tbl_Type :=
2166     OE_Order_PUB.G_MISS_HEADER_ADJ_ATT_TBL
2167 ,   p_Header_Adj_Assoc_tbl          IN  OE_Order_PUB.Header_Adj_Assoc_Tbl_Type :=
2168                                         OE_Order_PUB.G_MISS_HEADER_ADJ_ASSOC_TBL
2169 ,   p_old_Header_Adj_Assoc_tbl      IN  OE_Order_PUB.Header_Adj_Assoc_Tbl_Type :=
2170     OE_Order_PUB.G_MISS_HEADER_ADJ_ASSOC_TBL
2171 ,   p_Header_Scredit_tbl            IN  OE_Order_PUB.Header_Scredit_Tbl_Type :=
2172                                         OE_Order_PUB.G_MISS_HEADER_SCREDIT_TBL
2173 ,   p_old_Header_Scredit_tbl        IN  OE_Order_PUB.Header_Scredit_Tbl_Type :=
2174                                         OE_Order_PUB.G_MISS_HEADER_SCREDIT_TBL
2175 ,   p_Header_Scredit_val_tbl        IN  OE_Order_PUB.Header_Scredit_Val_Tbl_Type :=
2176                                         OE_Order_PUB.G_MISS_HEADER_SCREDIT_VAL_TBL
2177 ,   p_old_Header_Scredit_val_tbl    IN  OE_Order_PUB.Header_Scredit_Val_Tbl_Type :=
2178                                         OE_Order_PUB.G_MISS_HEADER_SCREDIT_VAL_TBL
2179 ,   p_line_tbl                      IN  OE_Order_PUB.Line_Tbl_Type :=
2180                                         OE_Order_PUB.G_MISS_LINE_TBL
2181 ,   p_old_line_tbl                  IN  OE_Order_PUB.Line_Tbl_Type :=
2182                                         OE_Order_PUB.G_MISS_LINE_TBL
2183 ,   p_line_val_tbl                  IN  OE_Order_PUB.Line_Val_Tbl_Type :=
2184                                         OE_Order_PUB.G_MISS_LINE_VAL_TBL
2185 ,   p_old_line_val_tbl              IN  OE_Order_PUB.Line_Val_Tbl_Type :=
2186                                         OE_Order_PUB.G_MISS_LINE_VAL_TBL
2187 ,   p_Line_Adj_tbl                  IN  OE_Order_PUB.Line_Adj_Tbl_Type :=
2188                                         OE_Order_PUB.G_MISS_LINE_ADJ_TBL
2189 ,   p_old_Line_Adj_tbl              IN  OE_Order_PUB.Line_Adj_Tbl_Type :=
2190                                         OE_Order_PUB.G_MISS_LINE_ADJ_TBL
2191 ,   p_Line_Adj_val_tbl              IN  OE_Order_PUB.Line_Adj_Val_Tbl_Type :=
2192                                         OE_Order_PUB.G_MISS_LINE_ADJ_VAL_TBL
2193 ,   p_old_Line_Adj_val_tbl          IN  OE_Order_PUB.Line_Adj_Val_Tbl_Type :=
2194                                         OE_Order_PUB.G_MISS_LINE_ADJ_VAL_TBL
2195 ,   p_Line_price_Att_tbl            IN  OE_Order_PUB.Line_Price_Att_Tbl_Type :=
2196                                         OE_Order_PUB.G_MISS_LINE_PRICE_ATT_TBL
2197 ,   p_old_Line_Price_Att_tbl        IN  OE_Order_PUB.Line_Price_Att_Tbl_Type :=
2198                                         OE_Order_PUB.G_MISS_LINE_PRICE_ATT_TBL
2199 ,   p_Line_Adj_Att_tbl              IN  OE_Order_PUB.Line_Adj_Att_Tbl_Type :=
2200                                         OE_Order_PUB.G_MISS_LINE_ADJ_ATT_TBL
2201 ,   p_old_Line_Adj_Att_tbl          IN  OE_Order_PUB.Line_Adj_Att_Tbl_Type :=
2202     OE_Order_PUB.G_MISS_LINE_ADJ_ATT_TBL
2203 ,   p_Line_Adj_Assoc_tbl            IN  OE_Order_PUB.Line_Adj_Assoc_Tbl_Type :=
2204                                         OE_Order_PUB.G_MISS_LINE_ADJ_ASSOC_TBL
2205 ,   p_old_Line_Adj_Assoc_tbl        IN  OE_Order_PUB.Line_Adj_Assoc_Tbl_Type :=
2206     OE_Order_PUB.G_MISS_LINE_ADJ_ASSOC_TBL
2207 ,   p_Line_Scredit_tbl              IN  OE_Order_PUB.Line_Scredit_Tbl_Type :=
2208                                         OE_Order_PUB.G_MISS_LINE_SCREDIT_TBL
2209 ,   p_old_Line_Scredit_tbl          IN  OE_Order_PUB.Line_Scredit_Tbl_Type :=
2210                                         OE_Order_PUB.G_MISS_LINE_SCREDIT_TBL
2211 ,   p_Line_Scredit_val_tbl          IN  OE_Order_PUB.Line_Scredit_Val_Tbl_Type :=
2212                                         OE_Order_PUB.G_MISS_LINE_SCREDIT_VAL_TBL
2213 ,   p_old_Line_Scredit_val_tbl      IN  OE_Order_PUB.Line_Scredit_Val_Tbl_Type :=
2214                                         OE_Order_PUB.G_MISS_LINE_SCREDIT_VAL_TBL
2215 ,   p_Lot_Serial_tbl                IN  OE_Order_PUB.Lot_Serial_Tbl_Type :=
2216                                        OE_Order_PUB.G_MISS_LOT_SERIAL_TBL
2217 ,   p_old_Lot_Serial_tbl            IN  OE_Order_PUB.Lot_Serial_Tbl_Type :=
2218                                         OE_Order_PUB.G_MISS_LOT_SERIAL_TBL
2219 ,   p_Lot_Serial_val_tbl            IN  OE_Order_PUB.Lot_Serial_Val_Tbl_Type :=
2220                                         OE_Order_PUB.G_MISS_LOT_SERIAL_VAL_TBL
2221 ,   p_old_Lot_Serial_val_tbl        IN  OE_Order_PUB.Lot_Serial_Val_Tbl_Type :=
2222                                         OE_Order_PUB.G_MISS_LOT_SERIAL_VAL_TBL
2223 ,   p_Action_Request_tbl            IN  OE_Order_PUB.Request_Tbl_Type :=
2224                                         OE_Order_PUB.G_MISS_REQUEST_TBL
2225 ,   x_header_rec                    OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Rec_Type
2226 ,   x_header_val_rec                OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Val_Rec_Type
2227 ,   x_Header_Adj_tbl                OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Tbl_Type
2228 ,   x_Header_Adj_val_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Val_Tbl_Type
2229 ,   x_Header_price_Att_tbl          OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Price_Att_Tbl_Type
2230 ,   x_Header_Adj_Att_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Att_Tbl_Type
2231 ,   x_Header_Adj_Assoc_tbl          OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Assoc_Tbl_Type
2232 ,   x_Header_Scredit_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Scredit_Tbl_Type
2233 ,   x_Header_Scredit_val_tbl        OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Scredit_Val_Tbl_Type
2234 ,   x_line_tbl                      OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Tbl_Type
2235 ,   x_line_val_tbl                  OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Val_Tbl_Type
2236 ,   x_Line_Adj_tbl                  OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Tbl_Type
2237 ,   x_Line_Adj_val_tbl              OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Val_Tbl_Type
2238 ,   x_Line_price_Att_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Price_Att_Tbl_Type
2239 ,   x_Line_Adj_Att_tbl              OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Att_Tbl_Type
2240 ,   x_Line_Adj_Assoc_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Assoc_Tbl_Type
2241 ,   x_Line_Scredit_tbl              OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Scredit_Tbl_Type
2242 ,   x_Line_Scredit_val_tbl          OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Scredit_Val_Tbl_Type
2243 ,   x_Lot_Serial_tbl                OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Lot_Serial_Tbl_Type
2244 ,   x_Lot_Serial_val_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Lot_Serial_Val_Tbl_Type
2245 ,   x_action_request_tbl	    OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Request_Tbl_Type
2246 --For bug 3390458
2247 ,   p_rtrim_data                    IN  Varchar2 :='N'
2248 ,   p_validate_desc_flex            in varchar2 default 'Y' -- bug4343612
2249 --ER7675548
2250 ,   p_header_customer_info_tbl      IN OE_ORDER_PUB.CUSTOMER_INFO_TABLE_TYPE :=
2251                                        OE_ORDER_PUB.G_MISS_CUSTOMER_INFO_TBL
2252 ,   p_line_customer_info_tbl        IN OE_ORDER_PUB.CUSTOMER_INFO_TABLE_TYPE :=
2253                                        OE_ORDER_PUB.G_MISS_CUSTOMER_INFO_TBL
2254 )
2255 IS
2256 l_api_version_number          CONSTANT NUMBER := 1.0;
2257 l_api_name                    CONSTANT VARCHAR2(30):= 'Process_Order';
2258 l_control_rec                 OE_GLOBALS.Control_Rec_Type;
2259 l_validation_level	VARCHAR2(30);
2260 l_return_status               VARCHAR2(1);
2261 l_old_header_rec              OE_Order_PUB.Header_Rec_Type;
2262 l_old_Header_Adj_tbl          OE_Order_PUB.Header_Adj_Tbl_Type;
2263 l_old_Header_price_Att_tbl    OE_Order_PUB.Header_Price_Att_Tbl_Type ;
2264 l_old_Header_Adj_Att_tbl      OE_Order_PUB.Header_Adj_Att_Tbl_Type ;
2265 l_old_Header_Adj_Assoc_tbl    OE_Order_PUB.Header_Adj_Assoc_Tbl_Type ;
2266 l_old_Header_Scredit_tbl      OE_Order_PUB.Header_Scredit_Tbl_Type;
2267 l_old_line_tbl                OE_Order_PUB.Line_Tbl_Type;
2268 l_old_Line_Adj_tbl            OE_Order_PUB.Line_Adj_Tbl_Type;
2269 l_old_Line_price_Att_tbl      OE_Order_PUB.Line_Price_Att_Tbl_Type ;
2270 l_old_Line_Adj_Att_tbl        OE_Order_PUB.Line_Adj_Att_Tbl_Type ;
2271 l_old_Line_Adj_Assoc_tbl      OE_Order_PUB.Line_Adj_Assoc_Tbl_Type ;
2272 l_old_Line_Scredit_tbl        OE_Order_PUB.Line_Scredit_Tbl_Type;
2273 l_old_Lot_Serial_tbl          OE_Order_PUB.Lot_Serial_Tbl_Type;
2274 x_Header_Payment_tbl          OE_Order_PUB.Header_Payment_Tbl_Type;
2275 x_Header_Payment_val_tbl      OE_Order_PUB.Header_Payment_Val_Tbl_Type;
2276 x_Line_Payment_tbl            OE_Order_PUB.Line_Payment_Tbl_Type;
2277 x_Line_Payment_val_tbl        OE_Order_PUB.Line_Payment_Val_Tbl_Type;
2278 I			      NUMBER;
2279 
2280 BEGIN
2281 
2282      l_return_status := FND_API.G_RET_STS_SUCCESS;  --Nocopy changes
2283 
2284 Process_Order
2285 (   p_api_version_number            => p_api_version_number
2286 ,   p_init_msg_list                 => p_init_msg_list
2287 ,   p_return_values                 =>  p_return_values
2288 ,   p_commit                        => p_commit
2289 ,   p_validation_level              => p_validation_level
2290 ,   p_control_rec                   => p_control_rec
2291 ,   p_api_service_level             => p_api_service_level
2292 ,   x_return_status                 =>  x_return_status
2293 ,   x_msg_count                     =>  x_msg_count
2294 ,   x_msg_data                      => x_msg_data
2295 ,   p_header_rec                    =>  p_header_rec
2296 ,   p_old_header_rec                => p_old_header_rec
2297 ,   p_header_val_rec                => p_header_val_rec
2298 ,   p_old_header_val_rec            =>  p_old_header_val_rec
2299 ,   p_Header_Adj_tbl                => p_Header_Adj_tbl
2300 ,   p_old_Header_Adj_tbl            =>  p_old_Header_Adj_tbl
2301 ,   p_Header_Adj_val_tbl            => p_Header_Adj_val_tbl
2302 ,   p_old_Header_Adj_val_tbl        =>  p_old_Header_Adj_val_tbl
2303 ,   p_Header_price_Att_tbl          =>  p_Header_price_Att_tbl
2304 ,   p_old_Header_Price_Att_tbl      =>   p_old_Header_Price_Att_tbl
2305 ,   p_Header_Adj_Att_tbl            =>  p_Header_Adj_Att_tbl
2306 ,   p_old_Header_Adj_Att_tbl        => p_old_Header_Adj_Att_tbl
2307 ,   p_Header_Adj_Assoc_tbl          => p_Header_Adj_Assoc_tbl
2308 ,   p_old_Header_Adj_Assoc_tbl      => p_old_Header_Adj_Assoc_tbl
2309 ,   p_Header_Scredit_tbl            => p_Header_Scredit_tbl
2310 ,   p_old_Header_Scredit_tbl        => p_old_Header_Scredit_tbl
2311 ,   p_Header_Scredit_val_tbl        => p_Header_Scredit_val_tbl
2312 ,   p_old_Header_Scredit_val_tbl    => p_old_Header_Scredit_val_tbl
2313 ,   p_Header_Payment_tbl            => OE_Order_PUB.G_MISS_HEADER_PAYMENT_TBL
2314 ,   p_old_Header_Payment_tbl        => OE_Order_PUB.G_MISS_HEADER_PAYMENT_TBL
2315 ,   p_Header_Payment_val_tbl        => OE_Order_PUB.G_MISS_HEADER_PAYMENT_VAL_TBL
2316 ,   p_old_Header_Payment_val_tbl    => OE_Order_PUB.G_MISS_HEADER_PAYMENT_VAL_TBL
2317 ,   p_line_tbl                      => p_line_tbl
2318 ,   p_old_line_tbl                  => p_old_line_tbl
2319 ,   p_line_val_tbl               => p_line_val_tbl
2320 ,   p_old_line_val_tbl       => p_old_line_val_tbl
2321 ,   p_Line_Adj_tbl             => p_Line_Adj_tbl
2322 ,   p_old_Line_Adj_tbl      => p_old_Line_Adj_tbl
2323 ,   p_Line_Adj_val_tbl       => p_Line_Adj_val_tbl
2324 ,   p_old_Line_Adj_val_tbl    => p_old_Line_Adj_val_tbl
2325 ,   p_Line_price_Att_tbl          => p_Line_price_Att_tbl
2326 ,   p_old_Line_Price_Att_tbl   => p_old_Line_Price_Att_tbl
2327 ,   p_Line_Adj_Att_tbl            => p_Line_Adj_Att_tbl
2328 ,   p_old_Line_Adj_Att_tbl    => p_old_Line_Adj_Att_tbl
2329 ,   p_Line_Adj_Assoc_tbl       => p_Line_Adj_Assoc_tbl
2330 ,   p_old_Line_Adj_Assoc_tbl    => p_old_Line_Adj_Assoc_tbl
2331 ,   p_Line_Scredit_tbl              => p_Line_Scredit_tbl
2332 ,   p_old_Line_Scredit_tbl      => p_old_Line_Scredit_tbl
2333 ,   p_Line_Scredit_val_tbl       => p_Line_Scredit_val_tbl
2334 ,   p_old_Line_Scredit_val_tbl   => p_old_Line_Scredit_val_tbl
2335 ,   p_Line_Payment_tbl      =>  OE_Order_PUB.G_MISS_LINE_PAYMENT_TBL
2336 ,   p_old_Line_Payment_tbl  => OE_Order_PUB.G_MISS_LINE_PAYMENT_TBL
2337 ,   p_Line_Payment_val_tbl  => OE_Order_PUB.G_MISS_LINE_PAYMENT_VAL_TBL
2338 ,   p_old_Line_Payment_val_tbl  => OE_Order_PUB.G_MISS_LINE_PAYMENT_VAL_TBL
2339 ,   p_Lot_Serial_tbl                => p_Lot_Serial_tbl
2340 ,   p_old_Lot_Serial_tbl            => p_old_Lot_Serial_tbl
2341 ,   p_Lot_Serial_val_tbl            => p_Lot_Serial_val_tbl
2342 ,   p_old_Lot_Serial_val_tbl     => p_old_Lot_Serial_val_tbl
2343 ,   p_action_request_tbl            => p_action_request_tbl
2344 ,   p_rtrim_data                   =>p_rtrim_data
2345 ,   x_header_rec                    => x_header_rec
2346 ,   x_header_val_rec            => x_header_val_rec
2347 ,   x_Header_Adj_tbl          => x_Header_Adj_tbl
2348 ,   x_Header_Adj_val_tbl    => x_Header_Adj_val_tbl
2349 ,   x_Header_price_Att_tbl   => x_Header_price_Att_tbl
2350 ,   x_Header_Adj_Att_tbl     => x_Header_Adj_Att_tbl
2351 ,   x_Header_Adj_Assoc_tbl    => x_Header_Adj_Assoc_tbl
2352 ,   x_Header_Scredit_tbl          => x_Header_Scredit_tbl
2353 ,   x_Header_Scredit_val_tbl  => x_Header_Scredit_val_tbl
2354 ,   x_Header_Payment_tbl     => x_Header_Payment_tbl
2355 ,   x_Header_Payment_val_tbl  => x_Header_Payment_val_tbl
2356 ,   x_line_tbl                      => x_line_tbl
2357 ,   x_line_val_tbl                => x_line_val_tbl
2358 ,   x_Line_Adj_tbl              => x_Line_Adj_tbl
2359 ,   x_Line_Adj_val_tbl       => x_Line_Adj_val_tbl
2360 ,   x_Line_price_Att_tbl    => x_Line_price_Att_tbl
2361 ,   x_Line_Adj_Att_tbl      => x_Line_Adj_Att_tbl
2362 ,   x_Line_Adj_Assoc_tbl   => x_Line_Adj_Assoc_tbl
2363 ,   x_Line_Scredit_tbl         => x_Line_Scredit_tbl
2364 ,   x_Line_Scredit_val_tbl   => x_Line_Scredit_val_tbl
2365 ,   x_Line_Payment_tbl              => x_Line_Payment_tbl
2366 ,   x_Line_Payment_val_tbl      => x_Line_Payment_val_tbl
2367 ,   x_Lot_Serial_tbl               => x_Lot_Serial_tbl
2368 ,   x_Lot_Serial_val_tbl       => x_Lot_Serial_val_tbl
2369 ,   x_action_request_tbl      => x_action_request_tbl
2370 ,   p_validate_desc_flex     =>  p_validate_desc_flex   --bug4343612
2371 --ER7675548
2372 ,   p_header_customer_info_tbl      =>p_header_customer_info_tbl
2373 ,   p_line_customer_info_tbl        =>p_line_customer_info_tbl
2374 );
2375 
2376 END Process_Order;
2377 
2378 PROCEDURE Lock_Order
2379 (   p_api_version_number            IN  NUMBER
2380 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
2381 ,   p_return_values                 IN  VARCHAR2 := FND_API.G_FALSE
2382 ,   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2383 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
2384 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2385 ,   p_header_rec                    IN  OE_Order_PUB.Header_Rec_Type :=
2386                                         OE_Order_PUB.G_MISS_HEADER_REC
2387 ,   p_header_val_rec                IN  OE_Order_PUB.Header_Val_Rec_Type :=
2388                                         OE_Order_PUB.G_MISS_HEADER_VAL_REC
2389 ,   p_Header_Adj_tbl                IN  OE_Order_PUB.Header_Adj_Tbl_Type :=
2390                                         OE_Order_PUB.G_MISS_HEADER_ADJ_TBL
2391 ,   p_Header_Adj_val_tbl            IN  OE_Order_PUB.Header_Adj_Val_Tbl_Type :=
2392                                         OE_Order_PUB.G_MISS_HEADER_ADJ_VAL_TBL
2393 ,   p_Header_price_Att_tbl          IN  OE_Order_PUB.Header_Price_Att_Tbl_Type :=
2394                                         OE_Order_PUB.G_MISS_HEADER_PRICE_ATT_TBL
2395 ,   p_Header_Adj_Att_tbl            IN  OE_Order_PUB.Header_Adj_Att_Tbl_Type :=
2396                                         OE_Order_PUB.G_MISS_HEADER_ADJ_ATT_TBL
2397 ,   p_Header_Adj_Assoc_tbl          IN  OE_Order_PUB.Header_Adj_Assoc_Tbl_Type :=
2398                                         OE_Order_PUB.G_MISS_HEADER_ADJ_ASSOC_TBL
2399 ,   p_Header_Scredit_tbl            IN  OE_Order_PUB.Header_Scredit_Tbl_Type :=
2400                                         OE_Order_PUB.G_MISS_HEADER_SCREDIT_TBL
2401 ,   p_Header_Scredit_val_tbl        IN  OE_Order_PUB.Header_Scredit_Val_Tbl_Type :=
2402                                         OE_Order_PUB.G_MISS_HEADER_SCREDIT_VAL_TBL
2403 ,   p_line_tbl                      IN  OE_Order_PUB.Line_Tbl_Type :=
2404                                         OE_Order_PUB.G_MISS_LINE_TBL
2405 ,   p_line_val_tbl                  IN  OE_Order_PUB.Line_Val_Tbl_Type :=
2406                                         OE_Order_PUB.G_MISS_LINE_VAL_TBL
2407 ,   p_Line_Adj_tbl                  IN  OE_Order_PUB.Line_Adj_Tbl_Type :=
2408                                         OE_Order_PUB.G_MISS_LINE_ADJ_TBL
2409 ,   p_Line_Adj_val_tbl              IN  OE_Order_PUB.Line_Adj_Val_Tbl_Type :=
2410                                         OE_Order_PUB.G_MISS_LINE_ADJ_VAL_TBL
2411 ,   p_Line_price_Att_tbl            IN  OE_Order_PUB.Line_Price_Att_Tbl_Type :=
2412                                         OE_Order_PUB.G_MISS_LINE_PRICE_ATT_TBL
2413 ,   p_Line_Adj_Att_tbl              IN  OE_Order_PUB.Line_Adj_Att_Tbl_Type :=
2414                                         OE_Order_PUB.G_MISS_LINE_ADJ_ATT_TBL
2415 ,   p_Line_Adj_Assoc_tbl            IN  OE_Order_PUB.Line_Adj_Assoc_Tbl_Type :=
2416                                         OE_Order_PUB.G_MISS_LINE_ADJ_ASSOC_TBL
2417 ,   p_Line_Scredit_tbl              IN  OE_Order_PUB.Line_Scredit_Tbl_Type :=
2418                                         OE_Order_PUB.G_MISS_LINE_SCREDIT_TBL
2419 ,   p_Line_Scredit_val_tbl          IN  OE_Order_PUB.Line_Scredit_Val_Tbl_Type :=
2420                                         OE_Order_PUB.G_MISS_LINE_SCREDIT_VAL_TBL
2421 ,   p_Lot_Serial_tbl                IN  OE_Order_PUB.Lot_Serial_Tbl_Type :=
2422                                         OE_Order_PUB.G_MISS_LOT_SERIAL_TBL
2423 ,   p_Lot_Serial_val_tbl            IN  OE_Order_PUB.Lot_Serial_Val_Tbl_Type :=
2424                                         OE_Order_PUB.G_MISS_LOT_SERIAL_VAL_TBL
2425 ,   x_header_rec                    OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Rec_Type
2426 ,   x_header_val_rec                OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Val_Rec_Type
2427 ,   x_Header_Adj_tbl                OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Tbl_Type
2428 ,   x_Header_Adj_val_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Val_Tbl_Type
2429 ,   x_Header_price_Att_tbl          OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Price_Att_Tbl_Type
2430 ,   x_Header_Adj_Att_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Att_Tbl_Type
2431 ,   x_Header_Adj_Assoc_tbl          OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Assoc_Tbl_Type
2432 ,   x_Header_Scredit_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Scredit_Tbl_Type
2433 ,   x_Header_Scredit_val_tbl        OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Scredit_Val_Tbl_Type
2434 ,   x_line_tbl                      OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Tbl_Type
2435 ,   x_line_val_tbl                  OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Val_Tbl_Type
2436 ,   x_Line_Adj_tbl                  OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Tbl_Type
2437 ,   x_Line_Adj_val_tbl              OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Val_Tbl_Type
2438 ,   x_Line_price_Att_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Price_Att_Tbl_Type
2439 ,   x_Line_Adj_Att_tbl              OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Att_Tbl_Type
2440 ,   x_Line_Adj_Assoc_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Assoc_Tbl_Type
2441 ,   x_Line_Scredit_tbl              OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Scredit_Tbl_Type
2442 ,   x_Line_Scredit_val_tbl          OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Scredit_Val_Tbl_Type
2443 ,   x_Lot_Serial_tbl                OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Lot_Serial_Tbl_Type
2444 ,   x_Lot_Serial_val_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Lot_Serial_Val_Tbl_Type
2445 )
2446 IS
2447 l_api_version_number          CONSTANT NUMBER := 1.0;
2448 l_api_name                    CONSTANT VARCHAR2(30):= 'Lock_Order';
2449 l_return_status               VARCHAR2(1);
2450 x_Header_Payment_tbl            OE_Order_PUB.Header_Payment_Tbl_Type;
2451 x_Header_Payment_val_tbl   OE_Order_PUB.Header_Payment_Val_Tbl_Type;
2452 x_Line_Payment_tbl             OE_Order_PUB.Line_Payment_Tbl_Type;
2453 x_Line_Payment_val_tbl      OE_Order_PUB.Line_Payment_Val_Tbl_Type;
2454 
2455 BEGIN
2456 
2457    Lock_Order
2458 (   p_api_version_number            => p_api_version_number
2459 ,   p_init_msg_list                 => p_init_msg_list
2460 ,   p_return_values               =>  p_return_values
2461 ,   x_return_status               =>  x_return_status
2462 ,   x_msg_count                   =>  x_msg_count
2463 ,   x_msg_data                     => x_msg_data
2464 ,   p_header_rec                  =>  p_header_rec
2465 ,   p_header_val_rec               => p_header_val_rec
2466 ,   p_Header_Adj_tbl               => p_Header_Adj_tbl
2467 ,   p_Header_Adj_val_tbl            => p_Header_Adj_val_tbl
2468 ,   p_Header_price_Att_tbl        =>  p_Header_price_Att_tbl
2469 ,   p_Header_Adj_Att_tbl          =>  p_Header_Adj_Att_tbl
2470 ,   p_Header_Adj_Assoc_tbl        => p_Header_Adj_Assoc_tbl
2471 ,   p_Header_Scredit_tbl           => p_Header_Scredit_tbl
2472 ,   p_Header_Scredit_val_tbl      => p_Header_Scredit_val_tbl
2473 ,   p_Header_Payment_tbl        => OE_Order_PUB.G_MISS_HEADER_PAYMENT_TBL
2474 ,   p_Header_Payment_val_tbl => OE_Order_PUB.G_MISS_HEADER_PAYMENT_VAL_TBL
2475 ,   p_line_tbl                      => p_line_tbl
2476 ,   p_line_val_tbl               => p_line_val_tbl
2477 ,   p_Line_Adj_tbl             => p_Line_Adj_tbl
2478 ,   p_Line_Adj_val_tbl       => p_Line_Adj_val_tbl
2479 ,   p_Line_price_Att_tbl          => p_Line_price_Att_tbl
2480 ,   p_Line_Adj_Att_tbl            => p_Line_Adj_Att_tbl
2481 ,   p_Line_Adj_Assoc_tbl       => p_Line_Adj_Assoc_tbl
2482 ,   p_Line_Scredit_tbl              => p_Line_Scredit_tbl
2483 ,   p_Line_Scredit_val_tbl       => p_Line_Scredit_val_tbl
2484 ,   p_Line_Payment_tbl      =>  OE_Order_PUB.G_MISS_LINE_PAYMENT_TBL
2485 ,   p_Line_Payment_val_tbl  => OE_Order_PUB.G_MISS_LINE_PAYMENT_VAL_TBL
2486 ,   p_Lot_Serial_tbl                => p_Lot_Serial_tbl
2487 ,   p_Lot_Serial_val_tbl            => p_Lot_Serial_val_tbl
2488 ,   x_header_rec                    => x_header_rec
2489 ,   x_header_val_rec            => x_header_val_rec
2490 ,   x_Header_Adj_tbl          => x_Header_Adj_tbl
2491 ,   x_Header_Adj_val_tbl    => x_Header_Adj_val_tbl
2492 ,   x_Header_price_Att_tbl   => x_Header_price_Att_tbl
2493 ,   x_Header_Adj_Att_tbl     => x_Header_Adj_Att_tbl
2494 ,   x_Header_Adj_Assoc_tbl    => x_Header_Adj_Assoc_tbl
2495 ,   x_Header_Scredit_tbl          => x_Header_Scredit_tbl
2496 ,   x_Header_Scredit_val_tbl  => x_Header_Scredit_val_tbl
2497 ,   x_Header_Payment_tbl     => x_Header_Payment_tbl
2498 ,   x_Header_Payment_val_tbl  => x_Header_Payment_val_tbl
2499 ,   x_line_tbl                      => x_line_tbl
2500 ,   x_line_val_tbl                => x_line_val_tbl
2501 ,   x_Line_Adj_tbl              => x_Line_Adj_tbl
2502 ,   x_Line_Adj_val_tbl       => x_Line_Adj_val_tbl
2503 ,   x_Line_price_Att_tbl    => x_Line_price_Att_tbl
2504 ,   x_Line_Adj_Att_tbl      => x_Line_Adj_Att_tbl
2505 ,   x_Line_Adj_Assoc_tbl   => x_Line_Adj_Assoc_tbl
2506 ,   x_Line_Scredit_tbl         => x_Line_Scredit_tbl
2507 ,   x_Line_Scredit_val_tbl   => x_Line_Scredit_val_tbl
2508 ,   x_Line_Payment_tbl              => x_Line_Payment_tbl
2509 ,   x_Line_Payment_val_tbl      => x_Line_Payment_val_tbl
2510 ,   x_Lot_Serial_tbl               => x_Lot_Serial_tbl
2511 ,   x_Lot_Serial_val_tbl       => x_Lot_Serial_val_tbl
2512 );
2513 
2514 END Lock_Order;
2515 
2516 PROCEDURE Get_Order
2517 (   p_api_version_number            IN  NUMBER
2518 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
2519 ,   p_return_values                 IN  VARCHAR2 := FND_API.G_FALSE
2520 ,   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2521 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
2522 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2523 ,   p_header_id                     IN  NUMBER :=
2524                                         FND_API.G_MISS_NUM
2525 ,   p_header                        IN  VARCHAR2 :=
2526                                         FND_API.G_MISS_CHAR
2527 ,   x_header_rec                    OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Rec_Type
2528 ,   x_header_val_rec                OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Val_Rec_Type
2529 ,   x_Header_Adj_tbl                OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Tbl_Type
2530 ,   x_Header_Adj_val_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Val_Tbl_Type
2531 ,   x_Header_price_Att_tbl          OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Price_Att_Tbl_Type
2532 ,   x_Header_Adj_Att_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Att_Tbl_Type
2533 ,   x_Header_Adj_Assoc_tbl          OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Assoc_Tbl_Type
2534 ,   x_Header_Scredit_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Scredit_Tbl_Type
2535 ,   x_Header_Scredit_val_tbl        OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Scredit_Val_Tbl_Type
2536 ,   x_line_tbl                      OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Tbl_Type
2537 ,   x_line_val_tbl                  OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Val_Tbl_Type
2538 ,   x_Line_Adj_tbl                  OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Tbl_Type
2539 ,   x_Line_Adj_val_tbl              OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Val_Tbl_Type
2540 ,   x_Line_price_Att_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Price_Att_Tbl_Type
2541 ,   x_Line_Adj_Att_tbl              OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Att_Tbl_Type
2542 ,   x_Line_Adj_Assoc_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Assoc_Tbl_Type
2543 ,   x_Line_Scredit_tbl              OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Scredit_Tbl_Type
2544 ,   x_Line_Scredit_val_tbl          OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Scredit_Val_Tbl_Type
2545 ,   x_Lot_Serial_tbl                OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Lot_Serial_Tbl_Type
2546 ,   x_Lot_Serial_val_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Lot_Serial_Val_Tbl_Type
2547 )
2548 IS
2549 l_api_version_number          CONSTANT NUMBER := 1.0;
2550 l_api_name                    CONSTANT VARCHAR2(30):= 'Get_Order';
2551 l_header_id                   NUMBER := p_header_id;
2552 x_Header_Payment_tbl            OE_Order_PUB.Header_Payment_Tbl_Type;
2553 x_Header_Payment_val_tbl   OE_Order_PUB.Header_Payment_Val_Tbl_Type;
2554 x_Line_Payment_tbl             OE_Order_PUB.Line_Payment_Tbl_Type;
2555 x_Line_Payment_val_tbl      OE_Order_PUB.Line_Payment_Val_Tbl_Type;
2556 
2557 BEGIN
2558 
2559    Get_Order
2560 (   p_api_version_number            => p_api_version_number
2561 ,   p_init_msg_list                 => p_init_msg_list
2562 ,   p_return_values               =>  p_return_values
2563 ,   x_return_status               =>  x_return_status
2564 ,   x_msg_count                   =>  x_msg_count
2565 ,   x_msg_data                     => x_msg_data
2566 ,   p_header_id                  =>  p_header_id
2567 ,   p_header                        => p_header
2568 ,   x_header_rec                    => x_header_rec
2569 ,   x_header_val_rec            => x_header_val_rec
2570 ,   x_Header_Adj_tbl          => x_Header_Adj_tbl
2571 ,   x_Header_Adj_val_tbl    => x_Header_Adj_val_tbl
2572 ,   x_Header_price_Att_tbl   => x_Header_price_Att_tbl
2573 ,   x_Header_Adj_Att_tbl     => x_Header_Adj_Att_tbl
2574 ,   x_Header_Adj_Assoc_tbl    => x_Header_Adj_Assoc_tbl
2575 ,   x_Header_Scredit_tbl          => x_Header_Scredit_tbl
2576 ,   x_Header_Scredit_val_tbl  => x_Header_Scredit_val_tbl
2577 ,   x_Header_Payment_tbl     => x_Header_Payment_tbl
2578 ,   x_Header_Payment_val_tbl  => x_Header_Payment_val_tbl
2579 ,   x_line_tbl                      => x_line_tbl
2580 ,   x_line_val_tbl                => x_line_val_tbl
2581 ,   x_Line_Adj_tbl              => x_Line_Adj_tbl
2582 ,   x_Line_Adj_val_tbl       => x_Line_Adj_val_tbl
2583 ,   x_Line_price_Att_tbl    => x_Line_price_Att_tbl
2584 ,   x_Line_Adj_Att_tbl      => x_Line_Adj_Att_tbl
2585 ,   x_Line_Adj_Assoc_tbl   => x_Line_Adj_Assoc_tbl
2586 ,   x_Line_Scredit_tbl         => x_Line_Scredit_tbl
2587 ,   x_Line_Scredit_val_tbl   => x_Line_Scredit_val_tbl
2588 ,   x_Line_Payment_tbl              => x_Line_Payment_tbl
2589 ,   x_Line_Payment_val_tbl      => x_Line_Payment_val_tbl
2590 ,   x_Lot_Serial_tbl               => x_Lot_Serial_tbl
2591 ,   x_Lot_Serial_val_tbl       => x_Lot_Serial_val_tbl
2592 );
2593 END Get_Order;
2594 
2595 PROCEDURE Id_To_Value
2596 (   p_header_rec                    IN  OE_Order_PUB.Header_Rec_Type
2597 ,   p_Header_Adj_tbl                IN  OE_Order_PUB.Header_Adj_Tbl_Type
2598 ,   p_Header_Scredit_tbl            IN  OE_Order_PUB.Header_Scredit_Tbl_Type
2599 ,   p_line_tbl                      IN  OE_Order_PUB.Line_Tbl_Type
2600 ,   p_Line_Adj_tbl                  IN  OE_Order_PUB.Line_Adj_Tbl_Type
2601 ,   p_Line_Scredit_tbl              IN  OE_Order_PUB.Line_Scredit_Tbl_Type
2602 ,   p_Lot_Serial_tbl                IN  OE_Order_PUB.Lot_Serial_Tbl_Type
2603 ,   x_header_val_rec                OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Val_Rec_Type
2604 ,   x_Header_Adj_val_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Val_Tbl_Type
2605 ,   x_Header_Scredit_val_tbl        OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Scredit_Val_Tbl_Type
2606 ,   x_line_val_tbl                  OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Val_Tbl_Type
2607 ,   x_Line_Adj_val_tbl              OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Val_Tbl_Type
2608 ,   x_Line_Scredit_val_tbl          OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Scredit_Val_Tbl_Type
2609 ,   x_Lot_Serial_val_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Lot_Serial_Val_Tbl_Type
2610 )
2611 IS
2612 x_Header_Payment_val_tbl   OE_Order_PUB.Header_Payment_Val_Tbl_Type;
2613 x_Line_Payment_val_tbl      OE_Order_PUB.Line_Payment_Val_Tbl_Type;
2614 
2615 BEGIN
2616 
2617 Id_To_value
2618 (   p_header_rec                  =>  p_header_rec
2619 ,   p_Header_Adj_tbl               => p_Header_Adj_tbl
2620 ,   p_Header_Scredit_tbl           => p_Header_Scredit_tbl
2621 ,   p_Header_Payment_tbl        => OE_Order_PUB.G_MISS_HEADER_PAYMENT_TBL
2622 ,   p_line_tbl                      => p_line_tbl
2623 ,   p_Line_Adj_tbl             => p_Line_Adj_tbl
2624 ,   p_Line_Scredit_tbl              => p_Line_Scredit_tbl
2625 ,   p_Line_Payment_tbl      =>  OE_Order_PUB.G_MISS_LINE_PAYMENT_TBL
2626 ,   p_Lot_Serial_tbl                => p_Lot_Serial_tbl
2627 ,   x_header_val_rec            => x_header_val_rec
2628 ,   x_Header_Adj_val_tbl    => x_Header_Adj_val_tbl
2629 ,   x_Header_Scredit_val_tbl  => x_Header_Scredit_val_tbl
2630 ,   x_Header_Payment_val_tbl  => x_Header_Payment_val_tbl
2631 ,   x_line_val_tbl                => x_line_val_tbl
2632 ,   x_Line_Adj_val_tbl       => x_Line_Adj_val_tbl
2633 ,   x_Line_Scredit_val_tbl   => x_Line_Scredit_val_tbl
2634 ,   x_Line_Payment_val_tbl      => x_Line_Payment_val_tbl
2635 ,   x_Lot_Serial_val_tbl       => x_Lot_Serial_val_tbl
2636 );
2637 
2638 End Id_To_Value;
2639 
2640 PROCEDURE Value_To_Id
2641 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2642 ,   p_header_rec                    IN  OE_Order_PUB.Header_Rec_Type
2643 ,   p_header_val_rec                IN  OE_Order_PUB.Header_Val_Rec_Type
2644 ,   p_Header_Adj_tbl                IN  OE_Order_PUB.Header_Adj_Tbl_Type
2645 ,   p_Header_Adj_val_tbl            IN  OE_Order_PUB.Header_Adj_Val_Tbl_Type
2646 ,   p_Header_Scredit_tbl            IN  OE_Order_PUB.Header_Scredit_Tbl_Type
2647 ,   p_Header_Scredit_val_tbl        IN  OE_Order_PUB.Header_Scredit_Val_Tbl_Type
2648 ,   p_line_tbl                      IN  OE_Order_PUB.Line_Tbl_Type
2649 ,   p_line_val_tbl                  IN  OE_Order_PUB.Line_Val_Tbl_Type
2650 ,   p_Line_Adj_tbl                  IN  OE_Order_PUB.Line_Adj_Tbl_Type
2651 ,   p_Line_Adj_val_tbl              IN  OE_Order_PUB.Line_Adj_Val_Tbl_Type
2652 ,   p_Line_Scredit_tbl              IN  OE_Order_PUB.Line_Scredit_Tbl_Type
2653 ,   p_Line_Scredit_val_tbl          IN  OE_Order_PUB.Line_Scredit_Val_Tbl_Type
2654 ,   p_Lot_Serial_tbl                IN  OE_Order_PUB.Lot_Serial_Tbl_Type
2655 ,   p_Lot_Serial_val_tbl            IN  OE_Order_PUB.Lot_Serial_Val_Tbl_Type
2656 ,   x_header_rec                    OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Rec_Type
2657 ,   x_Header_Adj_tbl                OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Adj_Tbl_Type
2658 ,   x_Header_Scredit_tbl            OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Header_Scredit_Tbl_Type
2659 ,   x_line_tbl                      OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Tbl_Type
2660 ,   x_Line_Adj_tbl                  OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Adj_Tbl_Type
2661 ,   x_Line_Scredit_tbl              OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Line_Scredit_Tbl_Type
2662 ,   x_Lot_Serial_tbl                OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.Lot_Serial_Tbl_Type
2663 )
2664 IS
2665 l_order_source_id           NUMBER := p_header_rec.order_source_id;
2666 l_orig_sys_document_ref     VARCHAR2(50) :=  p_header_rec.orig_sys_document_ref;
2667 l_orig_sys_line_ref     VARCHAR2(50);
2668 l_orig_sys_shipment_ref     VARCHAR2(50);
2669 l_change_sequence           VARCHAR2(50) := p_header_rec.change_sequence;
2670 l_source_document_type_id   NUMBER := p_header_rec.source_document_type_id;
2671 l_source_document_id        NUMBER := p_header_rec.source_document_id;
2672 l_source_document_line_id        NUMBER;
2673 
2674 l_header_rec                  OE_Order_PUB.Header_Rec_Type;
2675 l_Header_Adj_rec              OE_Order_PUB.Header_Adj_Rec_Type;
2676 l_Header_Scredit_rec          OE_Order_PUB.Header_Scredit_Rec_Type;
2677 l_line_rec                    OE_Order_PUB.Line_Rec_Type;
2678 l_Line_Adj_rec                OE_Order_PUB.Line_Adj_Rec_Type;
2679 l_Line_Scredit_rec            OE_Order_PUB.Line_Scredit_Rec_Type;
2680 l_Lot_Serial_rec              OE_Order_PUB.Lot_Serial_Rec_Type;
2681 x_Header_Payment_tbl            OE_Order_PUB.Header_Payment_Tbl_Type;
2682 x_Line_Payment_tbl              OE_Order_PUB.Line_Payment_Tbl_Type;
2683 l_index                       BINARY_INTEGER;
2684 BEGIN
2685 
2686 Value_To_Id
2687 (   x_return_status               =>  x_return_status
2688 ,   p_header_rec                  =>  p_header_rec
2689 ,   p_header_val_rec               => p_header_val_rec
2690 ,   p_Header_Adj_tbl               => p_Header_Adj_tbl
2691 ,   p_Header_Adj_val_tbl            => p_Header_Adj_val_tbl
2692 ,   p_Header_Scredit_tbl           => p_Header_Scredit_tbl
2693 ,   p_Header_Scredit_val_tbl      => p_Header_Scredit_val_tbl
2694 ,   p_Header_Payment_tbl        => OE_Order_PUB.G_MISS_HEADER_PAYMENT_TBL
2695 ,   p_Header_Payment_val_tbl => OE_Order_PUB.G_MISS_HEADER_PAYMENT_VAL_TBL
2696 ,   p_line_tbl                      => p_line_tbl
2697 ,   p_line_val_tbl               => p_line_val_tbl
2698 ,   p_Line_Adj_tbl             => p_Line_Adj_tbl
2699 ,   p_Line_Adj_val_tbl       => p_Line_Adj_val_tbl
2700 ,   p_Line_Scredit_tbl              => p_Line_Scredit_tbl
2701 ,   p_Line_Scredit_val_tbl       => p_Line_Scredit_val_tbl
2702 ,   p_Line_Payment_tbl      =>  OE_Order_PUB.G_MISS_LINE_PAYMENT_TBL
2703 ,   p_Line_Payment_val_tbl  => OE_Order_PUB.G_MISS_LINE_PAYMENT_VAL_TBL
2704 ,   p_Lot_Serial_tbl                => p_Lot_Serial_tbl
2705 ,   p_Lot_Serial_val_tbl            => p_Lot_Serial_val_tbl
2706 ,   x_header_rec                    => x_header_rec
2707 ,   x_Header_Adj_tbl          => x_Header_Adj_tbl
2708 ,   x_Header_Scredit_tbl          => x_Header_Scredit_tbl
2709 ,   x_Header_Payment_tbl     => x_Header_Payment_tbl
2710 ,   x_line_tbl                      => x_line_tbl
2711 ,   x_Line_Adj_tbl              => x_Line_Adj_tbl
2712 ,   x_Line_Scredit_tbl         => x_Line_Scredit_tbl
2713 ,   x_Line_Payment_tbl              => x_Line_Payment_tbl
2714 ,   x_Lot_Serial_tbl               => x_Lot_Serial_tbl
2715 );
2716 
2717 END Value_To_Id;
2718 
2719 PROCEDURE automatic_account_creation(
2720 				     p_header_rec	IN OE_Order_Pub.Header_Rec_Type,
2721 				     p_Header_Val_Rec   IN OE_Order_pub.Header_Val_Rec_type,
2722 				     p_line_tbl		IN OE_Order_Pub.Line_Tbl_Type,
2723 				     p_Line_Val_tbl     IN OE_Order_pub.Line_Val_tbl_Type,
2724 				     x_header_rec	IN OUT NOCOPY OE_Order_Pub.Header_Rec_Type, --bug6278382
2725 				     x_line_tbl		IN OUT NOCOPY OE_Order_Pub.Line_Tbl_Type,   --bug6278382
2726 				     x_return_status	OUT NOCOPY VARCHAR2,
2727 				     x_msg_count        OUT NOCOPY NUMBER,
2728 				     x_msg_data         OUT NOCOPY VARCHAR2
2729 				     ) IS
2730 
2731    p_control_rec oe_create_account_info.control_rec_type;
2732    p_account_tbl oe_create_account_info.account_tbl;
2733    p_contact_tbl oe_create_account_info.contact_tbl;
2734    p_site_tbl oe_create_account_info.site_tbl_type;
2735    p_line_site_tbl oe_create_account_info.site_tbl_type;
2736    p_party_customer_rec oe_create_account_info.party_customer_rec;
2737 
2738    l_cust_account_role_id number;
2739    l_multiple_sold_to varchar2(32000);
2740    l_sold_to_org_id VARCHAR2(80);
2741    l_sold_to VARCHAR2(360);
2742    l_customer_name varchar2(360);
2743    l_account_number varchar2(30);
2744    l_email_address varchar2(2000);
2745    l_contact_name varchar2(360);
2746    l_count number;
2747 
2748    l_message           varchar2(300);
2749    l_site_tbl_counter number := 1;
2750    l_create_account boolean  := FALSE;	--do we need to call AAC?
2751    l_create_hdr_account boolean  := FALSE;	--do we need to call AAC for the header?
2752 
2753    l_line_acct_matched number := 0;
2754    i number;
2755    j number;
2756 
2757    l_header_end_cust_exists varchar2(2) :='N';	-- added for bug 4240715
2758 
2759    TYPE line_acct IS RECORD (
2760 			     ship boolean      := FALSE
2761 			     ,ship_value boolean := FALSE
2762 			     ,deliver boolean  := FALSE
2763 			     ,deliver_value boolean := FALSE
2764 			     ,invoice boolean  := FALSE
2765 			     ,invoice_value boolean := FALSE
2766      			     ,end_customer boolean :=FALSE  -- End Customer Enhancement(bug 4240715)
2767 			     ,end_customer_value boolean :=FALSE
2768 			     );
2769 
2770    type line_acct_needed_tbl is table of line_acct index by binary_integer;
2771    l_line_acct_needed line_acct_needed_tbl;
2772 
2773    l_debug_level NUMBER := oe_debug_pub.g_debug_level;
2774 
2775 BEGIN
2776    --oe_create_account_info.set_debug_on();
2777 
2778    IF l_debug_level  > 0 THEN
2779    oe_debug_pub.add(' AAC:Inside Process Order: Automatic Account Creation');
2780    oe_debug_pub.add(' operation='||p_header_rec.operation);
2781    END IF;
2782 
2783    /* copy input records to output records */
2784    x_header_rec := p_header_rec;
2785    x_line_tbl   := p_line_tbl;
2786 
2787    -- Retrieve the sold_to_org_id if not passed on the header record. This
2788     -- will be needed by the value_to_id functions for related fields.
2789     -- For e.g. oe_value_to_id.ship_to_org_id requires sold_to_org_id
2790 
2791    IF p_header_rec.operation = OE_GLOBALS.G_OPR_UPDATE AND
2792       p_header_rec.sold_to_org_id = FND_API.G_MISS_NUM THEN
2793 
2794      IF l_debug_level  > 0 THEN
2795      oe_debug_pub.add('AAC: Selecting Customer Based on old sold_to_org_id');
2796      END IF;
2797      SELECT SOLD_TO_ORG_ID
2798        INTO l_sold_to_org_id
2799        FROM OE_ORDER_HEADERS
2800       WHERE HEADER_ID = p_header_rec.header_id;
2801      x_header_rec.sold_to_org_id := l_sold_to_org_id;
2802    END IF;
2803 
2804 
2805 
2806    IF l_debug_level  > 0 THEN
2807    oe_debug_pub.add('AAC: header_id:'||p_header_rec.header_id);
2808    oe_debug_pub.add('AAC: sold_to_party_id:'|| p_header_rec.sold_to_party_id);
2809    oe_debug_pub.add('AAC: sold_to_party_number:'|| p_header_rec.sold_to_party_number);
2810    oe_debug_pub.add('AAC: sold_to_org_id:'|| p_header_rec.sold_to_org_id);
2811    oe_debug_pub.add('AAC: l_sold_to_org_id:'|| l_sold_to_org_id);
2812    END IF;
2813 
2814    /* check to see if we need account creation at all, return ASAP if not{ */
2815    /* check header level party info */
2816    -- l_sold_to_org_id is not null for UPDATE case of an Order
2817    IF l_sold_to_org_id is null then
2818      IF ((nvl(p_header_rec.sold_to_org_id,FND_API.G_MISS_NUM)=FND_API.G_MISS_NUM
2819 	and ( (p_header_rec.sold_to_party_id is not null or p_header_rec.sold_to_party_number is not null)
2820 	     or nvl(p_header_val_rec.sold_to_org,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR))
2821        or
2822 	  ((nvl(p_header_rec.sold_to_contact_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM)
2823 	   and (nvl(p_header_val_Rec.sold_to_contact,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR
2824 		or nvl(p_header_Rec.sold_to_org_contact_id,FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM)))
2825      THEN
2826        IF l_debug_level  > 0 THEN
2827        oe_debug_pub.add('AAC: sold_to_org_id/sold_to_contact_id creation needed');
2828        oe_debug_pub.add('AAC: sold_to_party_id:'|| p_header_rec.sold_to_party_id);
2829        oe_debug_pub.add('AAC: sold_to_party_number:'|| p_header_rec.sold_to_party_number);
2830        END IF;
2831        l_create_account := TRUE;
2832        l_create_hdr_account := TRUE;
2833      END IF;
2834    END IF; -- if l_sold_to_org_id is not null
2835 
2836    l_header_end_cust_exists :='N';	--bug 4240715
2837 
2838    /* check header ship_to party info */
2839    IF ((nvl(p_header_rec.ship_to_org_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM and
2840    (p_header_rec.ship_to_party_id is not null or
2841     p_header_rec.ship_to_party_number is not null or
2842     p_header_rec.ship_to_party_site_id is not null or
2843     p_header_rec.ship_to_party_site_use_id is not null or
2844     p_header_rec.ship_to_org_contact_id is not null) or
2845     (nvl(p_header_val_Rec.ship_to_org,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2846     nvl(p_header_val_Rec.ship_to_customer_number_oi,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2847     nvl(p_header_val_Rec.ship_to_customer_name_oi,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2848     nvl(p_header_val_Rec.ship_to_contact,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2849     nvl(p_header_val_Rec.ship_to_address1,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2850     nvl(p_header_val_Rec.ship_to_address2,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2851     nvl(p_header_val_Rec.ship_to_address3,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2852     nvl(p_header_val_Rec.ship_to_address4,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2853     nvl(p_header_val_Rec.ship_to_state,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2854     nvl(p_header_val_Rec.ship_to_country,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2855     nvl(p_header_val_Rec.ship_to_city,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2856     nvl(p_header_val_Rec.ship_to_zip,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR)))
2857    THEN
2858       IF l_debug_level  > 0 THEN
2859       oe_debug_pub.add('AAC: ship_to sites creation needed');
2860       oe_debug_pub.add('AAC: ship_to_org_id           :'|| p_header_Rec.ship_to_org_id);
2861       oe_debug_pub.add('AAC: ship_to_party_id         :'|| p_header_rec.ship_to_party_id);
2862       oe_debug_pub.add('AAC: ship_to_party_number         :'|| p_header_rec.ship_to_party_number);
2863       oe_debug_pub.add('AAC: ship_to_party_site_id    :'|| p_header_rec.ship_to_party_site_id);
2864       oe_debug_pub.add('AAC: ship_to_party_site_use_id:'|| p_header_rec.ship_to_party_site_use_id);
2865       oe_debug_pub.add('AAC: ship_to_org_contact_id   :'|| p_header_rec.ship_to_org_contact_id);
2866       oe_debug_pub.add('AAC: ship_to_org              :'|| p_header_val_Rec.ship_to_org);
2867       oe_debug_pub.add('AAC: ship_to_customer_number  :'|| p_header_val_Rec.ship_to_customer_number_oi);
2868       oe_debug_pub.add('AAC: ship_to_customer_name  :'|| p_header_val_Rec.ship_to_customer_name_oi);
2869       oe_debug_pub.add('AAC: ship_to_contact          :'|| p_header_val_Rec.ship_to_contact);
2870       END IF;
2871 
2872       l_create_account := TRUE;
2873       l_create_hdr_account := TRUE;
2874 
2875       p_site_tbl(l_site_tbl_counter).p_party_id          := p_header_rec.ship_to_party_id;
2876       p_site_tbl(l_site_tbl_counter).p_party_site_id     := p_header_rec.ship_to_party_site_id;
2877       if(p_header_rec.ship_to_org_id = FND_API.G_MISS_NUM)
2878       then
2879 	 p_site_tbl(l_site_tbl_counter).p_site_use_id    := NULL;
2880       else
2881 	 p_site_tbl(l_site_tbl_counter).p_site_use_id    := p_header_rec.ship_to_org_id;
2882       end if;
2883 
2884       p_site_tbl(l_site_tbl_counter).p_cust_account_role_id := p_header_rec.ship_to_contact_id;
2885       p_site_tbl(l_site_tbl_counter).p_org_contact_id       := p_header_rec.ship_to_org_contact_id;
2886       p_site_tbl(l_site_tbl_counter).p_contact_name         := p_header_val_rec.ship_to_contact;
2887 
2888       p_site_tbl(l_site_tbl_counter).p_party_site_use_id := p_header_rec.ship_to_party_site_use_id;
2889       p_site_tbl(l_site_tbl_counter).p_site_use_code     := 'SHIP_TO';
2890 
2891       --p_site_tbl(l_site_tbl_counter).p_party_name        := p_header_val_Rec.ship_to_org;
2892       p_site_tbl(l_site_tbl_counter).p_party_name        := p_header_val_Rec.ship_to_customer_name_oi;
2893       p_site_tbl(l_site_tbl_counter).p_party_number      := p_header_rec.ship_to_party_number;
2894       p_site_tbl(l_site_tbl_counter).p_cust_account_number := p_header_val_Rec.ship_to_customer_number_oi;
2895 
2896       p_site_tbl(l_site_tbl_counter).p_site_address1       := p_header_val_rec.ship_to_address1 ;
2897       p_site_tbl(l_site_tbl_counter).p_site_address2 	   := p_header_val_rec.ship_to_address2 ;
2898       p_site_tbl(l_site_tbl_counter).p_site_address3 	   := p_header_val_rec.ship_to_address3 ;
2899       p_site_tbl(l_site_tbl_counter).p_site_address4 	   := p_header_val_rec.ship_to_address4 ;
2900       p_site_tbl(l_site_tbl_counter).p_site_state    	   := p_header_val_rec.ship_to_state    ;
2901       p_site_tbl(l_site_tbl_counter).p_site_country  	   := p_header_val_rec.ship_to_country  ;
2902       p_site_tbl(l_site_tbl_counter).p_site_city           := p_header_val_rec.ship_to_city     ;
2903       p_site_tbl(l_site_tbl_counter).p_site_postal_code    := p_header_val_rec.ship_to_zip      ;
2904 
2905       l_site_tbl_counter := l_site_tbl_counter + 1;
2906    END IF;
2907 
2908    /* check header deliver_to party info */
2909    IF ((nvl(p_header_rec.deliver_to_org_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM and
2910    (p_header_rec.deliver_to_party_id is not null or
2911     p_header_rec.deliver_to_party_number is not null or
2912     p_header_rec.deliver_to_party_site_id is not null or
2913     p_header_rec.deliver_to_party_site_use_id is not null or
2914     p_header_rec.deliver_to_org_contact_id is not null) or
2915     (nvl(p_header_val_Rec.deliver_to_org,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2916     nvl(p_header_val_Rec.deliver_to_customer_number_oi,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2917     nvl(p_header_val_Rec.deliver_to_customer_name_oi,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2918     nvl(p_header_val_Rec.deliver_to_contact,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2919     nvl(p_header_val_Rec.deliver_to_address1,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2920     nvl(p_header_val_Rec.deliver_to_address2,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2921     nvl(p_header_val_Rec.deliver_to_address3,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2922     nvl(p_header_val_Rec.deliver_to_address4,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2923     nvl(p_header_val_Rec.deliver_to_state,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2924     nvl(p_header_val_Rec.deliver_to_country,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2925     nvl(p_header_val_Rec.deliver_to_city,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2926     nvl(p_header_val_Rec.deliver_to_zip,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR)))
2927 
2928    THEN
2929       IF l_debug_level  > 0 THEN
2930       oe_debug_pub.add('AAC: deliver_to sites creation needed');
2931       oe_debug_pub.add('AAC: deliver_to_org_id           :'|| p_header_rec.deliver_to_org_id);
2932       oe_debug_pub.add('AAC: deliver_to_party_id         :'|| p_header_rec.deliver_to_party_id);
2933       oe_debug_pub.add('AAC: deliver_to_party_number         :'|| p_header_rec.deliver_to_party_number);
2934       oe_debug_pub.add('AAC: deliver_to_party_site_id    :'|| p_header_rec.deliver_to_party_site_id);
2935       oe_debug_pub.add('AAC: deliver_to_party_site_use_id:'|| p_header_rec.deliver_to_party_site_use_id);
2936       oe_debug_pub.add('AAC: deliver_to_org_contact_id   :'|| p_header_rec.deliver_to_org_contact_id);
2937       oe_debug_pub.add('AAC: deliver_to_org              :'|| p_header_val_Rec.deliver_to_org);
2938       oe_debug_pub.add('AAC: deliver_to_customer_number  :'|| p_header_val_Rec.deliver_to_customer_number_oi);
2939       oe_debug_pub.add('AAC: deliver_to_customer_name  :'|| p_header_val_Rec.deliver_to_customer_number_oi);
2940       oe_debug_pub.add('AAC: deliver_to_contact          :'|| p_header_val_Rec.deliver_to_contact);
2941       END IF;
2942 
2943       l_create_account := TRUE;
2944       l_create_hdr_account := TRUE;
2945 
2946       p_site_tbl(l_site_tbl_counter).p_party_id          := p_header_rec.deliver_to_party_id;
2947       p_site_tbl(l_site_tbl_counter).p_party_site_id     := p_header_rec.deliver_to_party_site_id;
2948 
2949       if(p_header_rec.deliver_to_org_id = FND_API.G_MISS_NUM)
2950       then
2951 	 p_site_tbl(l_site_tbl_counter).p_site_use_id     := NULL;
2952       else
2953 	 p_site_tbl(l_site_tbl_counter).p_site_use_id     := p_header_rec.deliver_to_org_id;
2954       end if;
2955 
2956       p_site_tbl(l_site_tbl_counter).p_cust_account_role_id := p_header_rec.deliver_to_contact_id;
2957       p_site_tbl(l_site_tbl_counter).p_org_contact_id       := p_header_rec.deliver_to_org_contact_id;
2958       p_site_tbl(l_site_tbl_counter).p_contact_name         := p_header_val_rec.deliver_to_contact;
2959 
2960       p_site_tbl(l_site_tbl_counter).p_party_site_use_id := p_header_rec.deliver_to_party_site_use_id;
2961       p_site_tbl(l_site_tbl_counter).p_site_use_code     := 'DELIVER_TO';
2962 
2963       p_site_tbl(l_site_tbl_counter).p_party_name        := p_header_val_Rec.deliver_to_customer_name_oi;
2964       p_site_tbl(l_site_tbl_counter).p_party_number      := p_header_rec.deliver_to_party_number;
2965       p_site_tbl(l_site_tbl_counter).p_cust_account_number := p_header_val_Rec.deliver_to_customer_number_oi;
2966 
2967       p_site_tbl(l_site_tbl_counter).p_site_address1       := p_header_val_rec.deliver_to_address1 ;
2968       p_site_tbl(l_site_tbl_counter).p_site_address2 	   := p_header_val_rec.deliver_to_address2 ;
2969       p_site_tbl(l_site_tbl_counter).p_site_address3 	   := p_header_val_rec.deliver_to_address3 ;
2970       p_site_tbl(l_site_tbl_counter).p_site_address4 	   := p_header_val_rec.deliver_to_address4 ;
2971       p_site_tbl(l_site_tbl_counter).p_site_state    	   := p_header_val_rec.deliver_to_state    ;
2972       p_site_tbl(l_site_tbl_counter).p_site_country  	   := p_header_val_rec.deliver_to_country  ;
2973       p_site_tbl(l_site_tbl_counter).p_site_city           := p_header_val_rec.deliver_to_city     ;
2974       p_site_tbl(l_site_tbl_counter).p_site_postal_code    := p_header_val_rec.deliver_to_zip      ;
2975 
2976       l_site_tbl_counter := l_site_tbl_counter + 1;
2977    END IF;
2978 
2979    /* check header invoice_to party info */
2980    IF (nvl(p_header_rec.invoice_to_org_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM and
2981    (p_header_rec.invoice_to_party_id is not null or
2982     p_header_rec.invoice_to_party_number is not null or
2983     p_header_rec.invoice_to_party_site_id is not null or
2984     p_header_rec.invoice_to_party_site_use_id is not null or
2985     p_header_rec.invoice_to_org_contact_id is not null) or
2986     (nvl(p_header_val_Rec.invoice_to_org,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2987     nvl(p_header_val_Rec.invoice_to_customer_number_oi,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2988     nvl(p_header_val_Rec.invoice_to_customer_name_oi,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2989     nvl(p_header_val_Rec.invoice_to_contact,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2990     nvl(p_header_val_Rec.invoice_to_address1,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2991     nvl(p_header_val_Rec.invoice_to_address2,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2992     nvl(p_header_val_Rec.invoice_to_address3,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2993     nvl(p_header_val_Rec.invoice_to_address4,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2994     nvl(p_header_val_Rec.invoice_to_state,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2995     nvl(p_header_val_Rec.invoice_to_country,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2996     nvl(p_header_val_Rec.invoice_to_city,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
2997     nvl(p_header_val_Rec.invoice_to_zip,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR))
2998 
2999    THEN
3000       IF l_debug_level  > 0 THEN
3001       oe_debug_pub.add('AAC: invoice_to sites creation needed');
3002       oe_debug_pub.add('AAC: invoice_to_party_id         :'|| p_header_rec.invoice_to_party_id);
3003       oe_debug_pub.add('AAC: invoice_to_party_number         :'|| p_header_rec.invoice_to_party_number);
3004       oe_debug_pub.add('AAC: invoice_to_party_site_id    :'|| p_header_rec.invoice_to_party_site_id);
3005       oe_debug_pub.add('AAC: invoice_to_party_site_use_id:'|| p_header_rec.invoice_to_party_site_use_id);
3006       oe_debug_pub.add('AAC: invoice_to_org_contact_id   :'|| p_header_rec.invoice_to_org_contact_id);
3007       oe_debug_pub.add('AAC: invoice_to_org              :'|| p_header_val_Rec.invoice_to_org);
3008       oe_debug_pub.add('AAC: invoice_to_customer_number  :'|| p_header_val_Rec.invoice_to_customer_number_oi);
3009       oe_debug_pub.add('AAC: invoice_to_customer_name  :'|| p_header_val_Rec.invoice_to_customer_name_oi);
3010       oe_debug_pub.add('AAC: invoice_to_contact          :'|| p_header_val_Rec.invoice_to_contact);
3011       END IF;
3012 
3013       l_create_account := TRUE;
3014       l_create_hdr_account := TRUE;
3015 
3016       p_site_tbl(l_site_tbl_counter).p_party_id          := p_header_rec.invoice_to_party_id;
3017       p_site_tbl(l_site_tbl_counter).p_party_site_id     := p_header_rec.invoice_to_party_site_id;
3018       if(p_header_rec.invoice_to_org_id = FND_API.G_MISS_NUM)
3019       then
3020 	 p_site_tbl(l_site_tbl_counter).p_site_use_id    := NULL;
3021       else
3022 	 p_site_tbl(l_site_tbl_counter).p_site_use_id    := p_header_rec.invoice_to_org_id;
3023       end if;
3024       p_site_tbl(l_site_tbl_counter).p_cust_account_role_id := p_header_rec.invoice_to_contact_id;
3025       p_site_tbl(l_site_tbl_counter).p_org_contact_id       := p_header_rec.invoice_to_org_contact_id;
3026       p_site_tbl(l_site_tbl_counter).p_contact_name         := p_header_val_rec.invoice_to_contact;
3027 
3028       p_site_tbl(l_site_tbl_counter).p_party_site_use_id := p_header_rec.invoice_to_party_site_use_id;
3029       p_site_tbl(l_site_tbl_counter).p_site_use_code     := 'BILL_TO';
3030 
3031       p_site_tbl(l_site_tbl_counter).p_party_name        := p_header_val_Rec.invoice_to_customer_name_oi;
3032       p_site_tbl(l_site_tbl_counter).p_party_number      := p_header_rec.invoice_to_party_number;
3033       p_site_tbl(l_site_tbl_counter).p_cust_account_number := p_header_val_Rec.invoice_to_customer_number_oi;
3034 
3035       p_site_tbl(l_site_tbl_counter).p_site_address1       := p_header_val_rec.invoice_to_address1 ;
3036       p_site_tbl(l_site_tbl_counter).p_site_address2 	   := p_header_val_rec.invoice_to_address2 ;
3037       p_site_tbl(l_site_tbl_counter).p_site_address3 	   := p_header_val_rec.invoice_to_address3 ;
3038       p_site_tbl(l_site_tbl_counter).p_site_address4 	   := p_header_val_rec.invoice_to_address4 ;
3039       p_site_tbl(l_site_tbl_counter).p_site_state    	   := p_header_val_rec.invoice_to_state    ;
3040       p_site_tbl(l_site_tbl_counter).p_site_country  	   := p_header_val_rec.invoice_to_country  ;
3041       p_site_tbl(l_site_tbl_counter).p_site_city           := p_header_val_rec.invoice_to_city     ;
3042       p_site_tbl(l_site_tbl_counter).p_site_postal_code    := p_header_val_rec.invoice_to_zip      ;
3043 
3044       l_site_tbl_counter := l_site_tbl_counter + 1;
3045    END IF;
3046 
3047    	-- added for bug 4240715
3048 	-- to check for end customer information
3049    IF (nvl(p_header_rec.end_customer_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM and
3050    (p_header_rec.end_customer_party_id is not null or
3051     p_header_rec.end_customer_party_number is not null or
3052     nvl(p_header_val_Rec.end_customer_name,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3053     nvl(p_header_val_Rec.end_customer_number,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR)) then
3054 
3055       l_create_account := TRUE;
3056       l_create_hdr_account := TRUE;
3057       l_header_end_cust_exists :='Y';
3058       p_site_tbl(l_site_tbl_counter).p_party_id          := p_header_rec.end_customer_party_id;
3059       p_site_tbl(l_site_tbl_counter).p_party_name        := p_header_val_Rec.end_customer_name;
3060       p_site_tbl(l_site_tbl_counter).p_party_number      := p_header_rec.end_customer_party_number;
3061       p_site_tbl(l_site_tbl_counter).p_cust_account_number := p_header_val_Rec.end_customer_number;
3062       p_site_tbl(l_site_tbl_counter).p_site_use_code     := 'END_CUST';
3063       IF l_debug_level  > 0 THEN
3064          oe_debug_pub.add('AAC: VALUE OF l_create_account: TRUE');		--remem
3065 	 oe_debug_pub.add('AAC: end customer account creation needed');
3066 	 oe_debug_pub.add('AAC: end_customer_party_id         :'|| p_header_rec.end_customer_party_id);
3067 	 oe_debug_pub.add('AAC: end_customer_party_number         :'|| p_header_rec.end_customer_party_number);
3068 	 oe_debug_pub.add('AAC: end_customer              :'|| p_header_val_Rec.end_customer_name);
3069 	 oe_debug_pub.add('AAC: end_customer_number  :'|| p_header_val_Rec.end_customer_number);
3070       END IF;
3071 
3072 
3073       IF  p_header_rec.end_customer_party_site_id is not null or
3074 	 p_header_rec.end_customer_party_site_use_id is not null or
3075 	    p_header_rec.end_customer_org_contact_id is not null or
3076 	       nvl(p_header_val_Rec.end_customer_contact,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3077 	       nvl(p_header_val_Rec.end_customer_site_address1,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3078 	       nvl(p_header_val_Rec.end_customer_site_address2,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3079 	       nvl(p_header_val_Rec.end_customer_site_address3,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3080 	       nvl(p_header_val_Rec.end_customer_site_address4,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3081 	       nvl(p_header_val_Rec.end_customer_site_state,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3082 	       nvl(p_header_val_Rec.end_customer_site_country,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3083 	       nvl(p_header_val_Rec.end_customer_site_city,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3084 	       nvl(p_header_val_Rec.end_customer_site_postal_code,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR then
3085 
3086 	 IF l_debug_level  > 0 THEN
3087 	    oe_debug_pub.add('AAC: end customer sites creation needed');
3088 	    oe_debug_pub.add('AAC: end_customer_party_site_id    :'|| p_header_rec.end_customer_party_site_id);
3089 	    oe_debug_pub.add('AAC: end_customer_party_site_use_id:'|| p_header_rec.end_customer_party_site_use_id);
3090 	    oe_debug_pub.add('AAC: end_customer_org_contact_id   :'|| p_header_rec.end_customer_org_contact_id);
3091 	    oe_debug_pub.add('AAC: end_customer_contact          :'|| p_header_val_Rec.end_customer_contact);
3092 	 END IF;
3093 
3094 
3095 	 if(p_header_rec.end_customer_site_use_id = FND_API.G_MISS_NUM)
3096 	 then
3097 	    p_site_tbl(l_site_tbl_counter).p_site_use_id    := NULL;
3098 	 else
3099 	    p_site_tbl(l_site_tbl_counter).p_site_use_id    := p_header_rec.end_customer_site_use_id;
3100 	 end if;
3101 	 p_site_tbl(l_site_tbl_counter).p_cust_account_role_id := p_header_rec.end_customer_contact_id;
3102 	 p_site_tbl(l_site_tbl_counter).p_org_contact_id       := p_header_rec.end_customer_org_contact_id;
3103 	 p_site_tbl(l_site_tbl_counter).p_contact_name         := p_header_val_rec.end_customer_contact;
3104 	 p_site_tbl(l_site_tbl_counter).p_party_site_id		:=p_header_rec.end_customer_party_site_id; --4240715(new)
3105 
3106 	 p_site_tbl(l_site_tbl_counter).p_party_site_use_id := p_header_rec.end_customer_party_site_use_id;
3107 --	 p_site_tbl(l_site_tbl_counter).p_site_use_code     := 'END_CUST';
3108 	 p_site_tbl(l_site_tbl_counter).p_site_address1       := p_header_val_rec.end_customer_site_address1 ;
3109 	 p_site_tbl(l_site_tbl_counter).p_site_address2 	   := p_header_val_rec.end_customer_site_address2 ;
3110 	 p_site_tbl(l_site_tbl_counter).p_site_address3 	   := p_header_val_rec.end_customer_site_address3 ;
3111 	 p_site_tbl(l_site_tbl_counter).p_site_address4 	   := p_header_val_rec.end_customer_site_address4 ;
3112 	 p_site_tbl(l_site_tbl_counter).p_site_state    	   := p_header_val_rec.end_customer_site_state    ;
3113 	 p_site_tbl(l_site_tbl_counter).p_site_country  	   := p_header_val_rec.end_customer_site_country  ;
3114 	 p_site_tbl(l_site_tbl_counter).p_site_city           := p_header_val_rec.end_customer_site_city     ;
3115 	 p_site_tbl(l_site_tbl_counter).p_site_postal_code    := p_header_val_rec.end_customer_site_postal_code      ;
3116 
3117       END IF; -- for end customer site creation
3118       l_site_tbl_counter := l_site_tbl_counter + 1;
3119    END IF; -- for end customer account creation (bug 4240715)
3120 
3121    /* done checking for header level account creation} */
3122 
3123    /* if no header level account creation needed, check all lines{ */
3124    IF (l_create_account = FALSE )
3125    THEN
3126       oe_debug_pub.add('AAC: no header level account creation needed, checking all lines');
3127       if x_line_tbl.COUNT > 0 then
3128 
3129          IF l_debug_level  > 0 THEN
3130 	 oe_debug_pub.add('X1');
3131          END IF;
3132       for i in x_line_tbl.FIRST..x_line_tbl.LAST loop
3133          IF l_debug_level  > 0 THEN
3134 	 oe_debug_pub.add('X2');
3135          END IF;
3136 	 /* l_create_account might change in this loop, so keep checking */
3137 	 IF ( l_create_Account = FALSE
3138 	     and
3139 		((nvl(x_line_tbl(i).ship_to_org_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM and
3140    (x_line_tbl(i).ship_to_party_id is not null or
3141     x_line_tbl(i).ship_to_party_number is not null or
3142     x_line_tbl(i).ship_to_party_site_id is not null or
3143     x_line_tbl(i).ship_to_party_site_use_id is not null))
3144 	      or
3145 		 (nvl(x_line_tbl(i).deliver_to_org_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM and
3146    (x_line_tbl(i).deliver_to_party_id is not null or
3147     x_line_tbl(i).deliver_to_party_number is not null or
3148     x_line_tbl(i).deliver_to_party_site_id is not null or
3149     x_line_tbl(i).deliver_to_party_site_use_id is not null))
3150 		 or
3151 		    (nvl(x_line_tbl(i).invoice_to_org_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM and
3152    (x_line_tbl(i).invoice_to_party_id is not null or
3153     x_line_tbl(i).invoice_to_party_number is not null or
3154     x_line_tbl(i).invoice_to_party_site_id is not null or
3155     x_line_tbl(i).invoice_to_party_site_use_id is not null))
3156 		or
3157 			(nvl(x_line_tbl(i).end_customer_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM and  /* added to check for end customer (bug 4240715)*/
3158    (x_line_tbl(i).end_customer_party_id is not null or
3159     x_line_tbl(i).end_customer_party_number is not null or
3160     x_line_tbl(i).end_customer_party_site_id is not null or
3161     x_line_tbl(i).end_customer_party_site_use_id is not null))
3162 	))
3163 	 THEN
3164             IF l_debug_level  > 0 THEN
3165 	    oe_debug_pub.add('AAC: line level account creation needed');
3166             END IF;
3167 	    l_create_account := TRUE;
3168 	 END IF; /* ok, we need account creation */
3169 
3170       END loop;
3171    END IF;
3172    END IF;
3173 
3174    IF p_line_val_tbl.COUNT > 0 then
3175        for i in p_line_val_tbl.FIRST..p_line_val_tbl.LAST loop
3176 
3177 	  IF (nvl(x_line_tbl(i).ship_to_org_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM
3178 	      and
3179 		 (nvl(p_line_val_tbl(i).ship_to_org,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3180 		 nvl(x_line_tbl(i).ship_to_party_id,FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM or
3181 		 nvl(x_line_tbl(i).ship_to_party_number,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3182                  nvl(p_line_val_tbl(i).ship_to_customer_number_oi,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3183                  nvl(p_line_val_tbl(i).ship_to_customer_name_oi,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3184 		 nvl(p_line_val_tbl(i).ship_to_contact,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR))
3185 	  then
3186              IF l_debug_level  > 0 THEN
3187 	     oe_debug_pub.add('ship to value present line#'||i);
3188              END IF;
3189 	     l_create_account := TRUE;
3190 	  end if;
3191 
3192 	  IF (x_line_tbl(i).ship_to_org_contact_id is not null or nvl(p_line_val_tbl(i).ship_to_contact,FND_API.G_MISS_CHAR) = FND_API.G_MISS_CHAR) then
3193 	    l_create_account := TRUE;
3194 	  END IF;
3195 
3196 	  IF (nvl(x_line_tbl(i).deliver_to_org_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM
3197 	      and
3198 		 (nvl(p_line_val_tbl(i).deliver_to_org,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3199 		 nvl(x_line_tbl(i).deliver_to_party_id,FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM or
3200 		 nvl(x_line_tbl(i).deliver_to_party_number,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3201                   nvl(p_line_val_tbl(i).deliver_to_customer_number_oi,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3202                    nvl(p_line_val_tbl(i).deliver_to_customer_name_oi,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3203 		  nvl(p_line_val_tbl(i).deliver_to_contact,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR))
3204 	  then
3205             IF l_debug_level  > 0 THEN
3206 	    oe_debug_pub.add('deliver to value present line#'||i);
3207             END IF;
3208 	    l_create_account := TRUE;
3209 	  end if;
3210 
3211 	  IF (x_line_tbl(i).deliver_to_org_contact_id is not null or
3212 	      nvl(p_line_val_tbl(i).deliver_to_contact,FND_API.G_MISS_CHAR) = FND_API.G_MISS_CHAR)
3213 	  then
3214 	    l_create_account := TRUE;
3215 	  END IF;
3216 
3217 	 IF (nvl(x_line_tbl(i).invoice_to_org_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM
3218 	      and
3219 		 (nvl(p_line_val_tbl(i).invoice_to_org,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3220 		 nvl(x_line_tbl(i).invoice_to_party_id,FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM or
3221 		 nvl(x_line_tbl(i).invoice_to_party_number,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3222                  nvl(p_line_val_tbl(i).invoice_to_customer_number_oi,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3223                  nvl(p_line_val_tbl(i).invoice_to_customer_name_oi,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3224 		  nvl(p_line_val_tbl(i).invoice_to_contact,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR))
3225 	  then
3226 	    l_create_account := TRUE;
3227 	  end if;
3228 
3229 	  IF (x_line_tbl(i).invoice_to_org_contact_id is not null or
3230 	      nvl(p_line_val_tbl(i).invoice_to_contact,FND_API.G_MISS_CHAR) = FND_API.G_MISS_CHAR)
3231 	  then
3232             IF l_debug_level  > 0 THEN
3233 	    oe_debug_pub.add('invoice to value present line#'||i);
3234             END IF;
3235 	    l_create_account := TRUE;
3236 	    End If;
3237 
3238 	    --{ added for 4240715
3239 	    IF nvl(x_line_tbl(i).end_customer_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM
3240 	     and
3241 		 (nvl(p_line_val_tbl(i).end_customer_name,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3242 		  nvl(x_line_tbl(i).end_customer_party_id,FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM or
3243 		  nvl(x_line_tbl(i).end_customer_party_number,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3244 		  nvl(p_line_val_tbl(i).end_customer_number,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3245 		  nvl(p_line_val_tbl(i).end_customer_contact,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR)
3246 	  then
3247 	    oe_debug_pub.add('once');
3248 	    l_create_account := TRUE;
3249 	 end if;
3250 
3251           oe_debug_pub.add('checking before org contactid');
3252 
3253 	 IF (x_line_tbl(i).end_customer_org_contact_id is not null or
3254 	      nvl(p_line_val_tbl(i).end_customer_contact,FND_API.G_MISS_CHAR) = FND_API.G_MISS_CHAR)
3255 	 then
3256             IF l_debug_level  > 0 THEN
3257 	    oe_debug_pub.add('end customer value present line#'||i);
3258 	 END IF;
3259 	    l_create_account := TRUE;
3260 	    --bug 4240715}
3261 	 END IF;
3262       end loop;
3263    end if;
3264 
3265 /* done checking lines} */
3266    oe_debug_pub.add('AAC: done checking...');
3267    IF (l_create_account = FALSE)
3268    THEN
3269       /* we don't actually need account creation. return */
3270       x_return_status := 'S';
3271       IF l_debug_level  > 0 THEN
3272       oe_debug_pub.add('AAC: no account creation needed. returning...');
3273       END IF;
3274       return;
3275    END IF;
3276 
3277    --  API Operation control flags.
3278    p_control_rec.p_allow_account_creation       := 'CHECK';
3279    p_control_rec.p_init_msg_list                := FALSE;
3280    p_control_rec.p_commit                       := FALSE;
3281    p_control_rec.p_multiple_account_is_error    := TRUE;
3282    p_control_rec.p_multiple_contact_is_error    := TRUE;
3283    p_control_rec.p_created_by_module            := 'ONT_PROCESS_ORDER_API';
3284    p_control_rec.p_continue_processing_on_error := FALSE;
3285    p_control_rec.p_return_if_only_party         := FALSE;
3286 
3287 
3288    -- Customer Information
3289    p_party_customer_rec.p_party_id              := p_header_rec.sold_to_party_id;
3290    p_party_customer_rec.p_party_number          := p_header_rec.sold_to_party_number;
3291    p_party_customer_rec.p_party_name            := p_header_val_rec.sold_to_org;
3292 
3293    IF nvl(p_header_rec.sold_to_org_id,FND_API.G_MISS_NUM)=FND_API.G_MISS_NUM AND
3294       l_sold_to_org_id is NULL then
3295       p_party_customer_rec.p_cust_account_id    := NULL;
3296    ELSE
3297      IF nvl(p_header_rec.sold_to_org_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM then
3298        p_party_customer_rec.p_cust_account_id    := l_sold_to_org_id;
3299      ELSE
3300        p_party_customer_rec.p_cust_account_id    := p_header_rec.sold_to_org_id;
3301      END IF;
3302    END IF;
3303 
3304    --p_party_customer_rec.p_cust_account_number   := p_header_val_rec.customer_number;
3305 
3306    -- Contact Information:
3307    if nvl(p_header_rec.sold_to_org_contact_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM then
3308       p_party_customer_rec.p_org_contact_id     := NULL;
3309    else
3310       p_party_customer_rec.p_org_contact_id        := p_header_rec.sold_to_org_contact_id;
3311    end if;
3312    if nvl(p_header_rec.sold_to_contact_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM then
3313       p_party_customer_rec.p_cust_account_role_id  := NULL;
3314    else
3315       p_party_customer_rec.p_cust_account_role_id  := p_header_rec.sold_to_contact_id;
3316    end if;
3317    if nvl(p_header_val_rec.sold_to_contact,FND_API.G_MISS_CHAR) = FND_API.G_MISS_CHAR then
3318       p_party_customer_rec.p_contact_name          := NULL;
3319    else
3320       p_party_customer_rec.p_contact_name          := p_header_val_rec.sold_to_contact;
3321    end if;
3322 
3323     /* header needs to have account creation */
3324    if (l_create_hdr_account = TRUE)
3325    then
3326 
3327       IF l_debug_level  > 0 THEN
3328       oe_debug_pub.add('AAC: before calling Create_Account_layer for header level site creation{ ');
3329       END IF;
3330 
3331       oe_create_account_info.Create_Account_Layer(
3332 						  p_control_rec  =>p_control_rec
3333 						  ,x_return_status =>x_return_status
3334 						  ,x_msg_count   =>x_msg_count
3335 						  ,x_msg_data  =>x_Msg_data
3336 						  ,p_party_customer_rec =>p_party_customer_rec
3337 						  ,p_site_tbl  =>p_site_tbl
3338 						  ,p_account_tbl  =>p_account_tbl
3339 						  ,p_contact_tbl  =>p_contact_tbl
3340 						  );
3341       IF l_debug_level  > 0 THEN
3342       oe_debug_pub.add('AAC: after calling Create_Account_layer for header level site creation} ');
3343       END IF;
3344 
3345       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3346 	 l_count :=oe_msg_pub.count_msg;
3347 
3348          IF l_debug_level  > 0 THEN
3349 	 oe_debug_pub.add('AAC: Main Status is not success'||
3350 			      ' msg='||x_msg_data||
3351 			      ' count='||x_msg_count
3352 			      );
3353          END IF;
3354 	 RAISE FND_API.G_EXC_ERROR;
3355 
3356       ELSE
3357 	 oe_debug_pub.add('AAC: Status is success');
3358 
3359 
3360 	 -- Error out IF only party and no site information
3361 	 IF p_account_tbl.COUNT = 0 AND p_party_customer_rec.p_party_id IS NOT NULL
3362 	    THEN
3363             IF l_debug_level  > 0 THEN
3364 	    oe_debug_pub.add('AAC: Only party, no site. error out'||
3365 				 ' msg='||x_msg_data||
3366 				 ' count='||x_msg_count);
3367             END IF;
3368 	    RAISE FND_API.G_EXC_ERROR;
3369 
3370 	 END IF;
3371 
3372       END IF;
3373 
3374       IF p_account_tbl.COUNT <> 1
3375       THEN
3376 	 --error
3377          IF l_debug_level  > 0 and l_header_end_cust_exists = 'N' THEN	--modified for bug 4240715
3378 	 oe_debug_pub.add(' More than one party site/account record'||
3379 			      ' msg='||x_msg_data||
3380 			      ' count='||x_msg_count
3381 			      );
3382          END IF;
3383 	 RAISE FND_API.G_EXC_ERROR;
3384       /*TODO: more exception handling? */
3385       END IF;
3386 
3387       if p_account_tbl.count >= 1 then -- added if condition for end customer(bug 4240715)
3388       x_header_rec.sold_to_org_id := p_account_tbl(1);
3389       end if;
3390       if p_contact_tbl.COUNT=1 then
3391 	 x_header_rec.sold_to_contact_id := p_contact_tbl(1);
3392       end if;
3393 
3394 
3395       IF l_debug_level  > 0 THEN
3396       oe_debug_pub.add('AAC: sold_to_org_id :'||x_header_rec.sold_to_org_id);
3397       oe_debug_pub.add('AAC: sold_to_contact_id :'||x_header_rec.sold_to_contact_id);
3398       oe_debug_pub.add('AAC: p_site_tbl has '||p_site_tbl.COUNT||' rows');
3399       END IF;
3400 
3401     /* get the relevant ship/deliver/invoice to fields */
3402       IF p_site_tbl.COUNT > 0 then
3403 
3404 	 FOR i in p_site_tbl.FIRST..p_site_tbl.LAST LOOP
3405 
3406 	    IF (p_site_tbl(i).p_site_use_code = 'SHIP_TO')
3407 	    THEN
3408 
3409                IF l_debug_level  > 0 THEN
3410 	       oe_debug_pub.add('AAC: header SHIP_TO org_id:'|| p_site_tbl(i).p_site_use_id);
3411 	       oe_debug_pub.add('AAC: header SHIP_TO cust_account_id:'|| p_site_tbl(i).p_cust_account_id);
3412                END IF;
3413 	       x_header_rec.ship_to_org_id := p_site_tbl(i).p_site_use_id;
3414 	       x_header_rec.ship_to_customer_id := p_site_tbl(i).p_cust_account_id;
3415 	       x_header_rec.ship_to_contact_id  := p_site_tbl(i).p_cust_account_role_id;
3416 
3417 	    ELSIF (p_site_tbl(i).p_site_use_code = 'DELIVER_TO')
3418 	    THEN
3419                IF l_debug_level  > 0 THEN
3420 	       oe_debug_pub.add('AAC: header DELIVER_TO org_id:'|| p_site_tbl(i).p_site_use_id);
3421 	       oe_debug_pub.add('AAC: header DELIVER_TO cust_account_id:'|| p_site_tbl(i).p_cust_account_id);
3422                END IF;
3423 	       x_header_rec.deliver_to_org_id := p_site_tbl(i).p_site_use_id;
3424 	       x_header_rec.deliver_to_customer_id := p_site_tbl(i).p_cust_account_id;
3425 	       x_header_rec.deliver_to_contact_id  := p_site_tbl(i).p_cust_account_role_id;
3426 
3427 	    ELSIF (p_site_tbl(i).p_site_use_code = 'BILL_TO')
3428 	    THEN
3429 
3430                IF l_debug_level  > 0 THEN
3431 	       oe_debug_pub.add('AAC: header INVOICE_TO org_id:'|| p_site_tbl(i).p_site_use_id);
3432 	       oe_debug_pub.add('AAC: header INVOICE_TO cust_account_id:'|| p_site_tbl(i).p_cust_account_id);
3433                END IF;
3434 	       x_header_rec.invoice_to_org_id := p_site_tbl(i).p_site_use_id;
3435 	       x_header_rec.invoice_to_customer_id := p_site_tbl(i).p_cust_account_id;
3436 	       x_header_rec.invoice_to_contact_id  := p_site_tbl(i).p_cust_account_role_id;
3437 	    ELSIF (p_site_tbl(i).p_site_use_code = 'END_CUST')  /* end customer changes -bug 4240715 */
3438 	      THEN
3439 
3440 		IF l_debug_level  > 0 THEN
3441 		     oe_debug_pub.add('AAC: header End Customer  :'|| p_site_tbl(i).p_site_use_id);
3442 		     oe_debug_pub.add('AAC: header End Customer cust_account_id:'|| p_site_tbl(i).p_cust_account_id);
3443 		END IF;
3444 		x_header_rec.end_customer_site_use_id := p_site_tbl(i).p_site_use_id;
3445 		x_header_rec.end_customer_id := p_site_tbl(i).p_cust_account_id;
3446 		x_header_rec.end_customer_contact_id  := p_site_tbl(i).p_cust_account_role_id;
3447 		oe_debug_pub.add('here the end custoemr id'||x_header_rec.end_customer_contact_id);
3448 	    END IF;
3449 
3450 	 END LOOP;
3451       end if;
3452    end if; --end header level account creation
3453 
3454    IF l_debug_level  > 0 THEN
3455    oe_debug_pub.add('AAC: cache: start header level cache lookup... ');
3456    END IF;
3457 
3458     /* loop through all the lines, looking for lines with party
3459        information similar to header level info, replace if
3460        found (thus implementing caching)
3461        Also pre-store the info if each line needs account creation in l_line_acct_needed,
3462        so we don't have to re-compute it later on.
3463        We want to call this even if no header accounts were created, since we
3464        pre-compute the info for each line.
3465     */
3466 
3467    IF x_line_tbl.COUNT > 0 then
3468       FOR i IN x_line_tbl.FIRST..x_line_tbl.LAST loop
3469       IF l_debug_level  > 0 THEN
3470       oe_debug_pub.add('AAC: checking if account creation needed for line.'||i);
3471       END IF;
3472       IF ((nvl(x_line_tbl(i).ship_to_org_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM
3473 	   and
3474 	      (x_line_tbl(i).ship_to_party_id is not null or
3475 	       x_line_tbl(i).ship_to_party_number is not null or
3476 	       x_line_tbl(i).ship_to_party_site_id is not null or
3477 	       x_line_tbl(i).ship_to_party_site_use_id is not null))
3478 	  OR
3479 	     (nvl(x_line_tbl(i).ship_to_contact_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM
3480 	      and x_line_tbl(i).ship_to_org_contact_id is not null ))
3481       then
3482          IF l_debug_level  > 0 THEN
3483 	 oe_debug_pub.add('AAC: ship party info not null line#'||i);
3484          END IF;
3485 
3486 	  /* look for similar ship_to_party_id s */
3487 	 IF (nvl(x_line_tbl(i).ship_to_party_id,FND_API.G_MISS_NUM)=nvl(p_header_rec.ship_to_party_id,FND_API.G_MISS_NUM) and
3488 	     nvl(x_line_tbl(i).ship_to_party_number,FND_API.G_MISS_CHAR)=nvl(p_header_rec.ship_to_party_number,FND_API.G_MISS_CHAR) and
3489 	     nvl(x_line_tbl(i).ship_to_party_site_id,FND_API.G_MISS_NUM)=nvl(p_header_rec.ship_to_party_site_id,FND_API.G_MISS_NUM) and
3490 	     nvl(x_line_tbl(i).ship_to_party_site_use_id,FND_API.G_MISS_NUM)=nvl(p_header_rec.ship_to_party_site_use_id,FND_API.G_MISS_NUM))
3491 	 THEN
3492             IF l_debug_level  > 0 THEN
3493 	    oe_debug_pub.add('AAC: cache: >> matching header ship_to_org_id:'||x_header_rec.ship_to_org_id||' found');
3494             END IF;
3495 	    x_line_tbl(i).ship_to_org_id    :=  x_header_rec.ship_to_org_id;
3496 	    x_line_tbl(i).ship_to_party_id := x_header_rec.ship_to_party_id;
3497 	 else
3498 
3499             IF l_debug_level  > 0 THEN
3500 	    oe_debug_pub.add('AAC: need ship account creation for line#'||i);
3501             END IF;
3502 	    l_line_acct_needed(i).ship := TRUE;
3503 	 END IF;
3504        end if;
3505 
3506        if ((nvl(x_line_tbl(i).deliver_to_org_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM
3507 	   and
3508 	      (x_line_tbl(i).deliver_to_party_id is not null or
3509 	       x_line_tbl(i).deliver_to_party_number is not null or
3510 	       x_line_tbl(i).deliver_to_party_site_id is not null or
3511 	       x_line_tbl(i).deliver_to_party_site_use_id is not null))
3512 	  OR
3513 	     (nvl(x_line_tbl(i).deliver_to_contact_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM
3514 	      and x_line_tbl(i).deliver_to_org_contact_id is not null))
3515        then
3516 
3517          IF l_debug_level  > 0 THEN
3518 	 oe_debug_pub.add('AAC: deliver party info not null line#'||i);
3519          END IF;
3520 
3521           /* look for similar deliver_to_party_id s */
3522 	  IF (nvl(x_line_tbl(i).deliver_to_party_id,FND_API.G_MISS_NUM)=nvl(p_header_rec.deliver_to_party_id,FND_API.G_MISS_NUM) and
3523 	       nvl(x_line_tbl(i).deliver_to_party_number,FND_API.G_MISS_CHAR)=nvl(p_header_rec.deliver_to_party_number,FND_API.G_MISS_CHAR) and
3524 	      nvl(x_line_tbl(i).deliver_to_party_site_id,FND_API.G_MISS_NUM)=nvl(p_header_rec.deliver_to_party_site_id,FND_API.G_MISS_NUM) and
3525 	      nvl(x_line_tbl(i).deliver_to_party_site_use_id,FND_API.G_MISS_NUM)=nvl(p_header_rec.deliver_to_party_site_use_id,FND_API.G_MISS_NUM))
3526 	  THEN
3527              IF l_debug_level  > 0 THEN
3528 	     oe_debug_pub.add('AAC: cache: >> matching header deliver_to_org_id:'||x_header_rec.deliver_to_org_id||' found');
3529              END IF;
3530 	     x_line_tbl(i).deliver_to_org_id :=  x_header_rec.deliver_to_org_id;
3531 	     x_line_tbl(i).deliver_to_party_id := x_header_rec.deliver_to_party_id;
3532 	  else
3533             IF l_debug_level  > 0 THEN
3534 	    oe_debug_pub.add('AAC: need deliver account creation for line#'||i);
3535             END IF;
3536 	    l_line_acct_needed(i).deliver := TRUE;
3537 	  END IF;
3538 
3539        end if;
3540 
3541 
3542        if ((nvl(x_line_tbl(i).invoice_to_org_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM
3543 	   and
3544 	      (x_line_tbl(i).invoice_to_party_id is not null or
3545 	       x_line_tbl(i).invoice_to_party_number is not null or
3546 	       x_line_tbl(i).invoice_to_party_site_id is not null or
3547 	       x_line_tbl(i).invoice_to_party_site_use_id is not null))
3548 	  OR
3549 	     (nvl(x_line_tbl(i).invoice_to_contact_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM
3550 	      and x_line_tbl(i).invoice_to_org_contact_id is not null))
3551        THEN
3552          IF l_debug_level  > 0 THEN
3553 	 oe_debug_pub.add('AAC: invoice party info not null line#'||i);
3554          END IF;
3555 	  /* look for similar invoice_to_party_id s */
3556 	  IF (nvl(x_line_tbl(i).invoice_to_party_id,FND_API.G_MISS_NUM)=nvl(p_header_rec.invoice_to_party_id,FND_API.G_MISS_NUM) and
3557 	       nvl(x_line_tbl(i).invoice_to_party_number,FND_API.G_MISS_CHAR)=nvl(p_header_rec.invoice_to_party_number,FND_API.G_MISS_CHAR) and
3558 	      nvl(x_line_tbl(i).invoice_to_party_site_id,FND_API.G_MISS_NUM)=nvl(p_header_rec.invoice_to_party_site_id,FND_API.G_MISS_NUM) and
3559 	      nvl(x_line_tbl(i).invoice_to_party_site_use_id,FND_API.G_MISS_NUM)=nvl(p_header_rec.invoice_to_party_site_use_id,FND_API.G_MISS_NUM))
3560 	  THEN
3561              IF l_debug_level  > 0 THEN
3562 	     oe_debug_pub.add('AAC: cache: >> matching header invoice_to_org_id:'||x_header_rec.invoice_to_org_id||' found');
3563              END IF;
3564 	     x_line_tbl(i).invoice_to_org_id :=  x_header_rec.invoice_to_org_id;
3565 	     x_line_tbl(i).invoice_to_party_id := x_header_rec.invoice_to_party_id;
3566 	  else
3567             IF l_debug_level  > 0 THEN
3568 	    oe_debug_pub.add('AAC: need invoice account creation for line#'||i);
3569             END IF;
3570 	     l_line_acct_needed(i).invoice := TRUE;
3571 	  END IF;
3572        end if;
3573 
3574               --added for bug 4240715 - end customer project
3575        if ((nvl(x_line_tbl(i).end_customer_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM
3576 	    and
3577 	      (x_line_tbl(i).end_customer_party_id is not null or
3578 	       x_line_tbl(i).end_customer_party_number is not null or
3579 	       x_line_tbl(i).end_customer_party_site_id is not null or
3580 	       x_line_tbl(i).end_customer_party_site_use_id is not null))
3581 	   OR
3582 	      (nvl(x_line_tbl(i).end_customer_contact_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM
3583 	       and x_line_tbl(i).end_customer_org_contact_id is not null))
3584        THEN
3585 	  IF l_debug_level  > 0 THEN
3586 	     oe_debug_pub.add('AAC: end customer party info not null line#'||i);
3587 	  END IF;
3588 	  IF (nvl(x_line_tbl(i).end_customer_party_id,FND_API.G_MISS_NUM)=nvl(p_header_rec.end_customer_party_id,FND_API.G_MISS_NUM) and
3589 	      nvl(x_line_tbl(i).end_customer_party_number,FND_API.G_MISS_CHAR)=nvl(p_header_rec.end_customer_party_number,FND_API.G_MISS_CHAR) and
3590 	      nvl(x_line_tbl(i).end_customer_party_site_id,FND_API.G_MISS_NUM)=nvl(p_header_rec.end_customer_party_site_id,FND_API.G_MISS_NUM) and
3591 	      nvl(x_line_tbl(i).end_customer_party_site_use_id,FND_API.G_MISS_NUM)=nvl(p_header_rec.invoice_to_party_site_use_id,FND_API.G_MISS_NUM))
3592 	  THEN
3593              IF l_debug_level  > 0 THEN
3594 		oe_debug_pub.add('AAC: cache: >> matching header end customer id:'||x_header_rec.end_customer_id||' found');
3595              END IF;
3596 	     x_line_tbl(i).end_customer_id :=  x_header_rec.end_customer_id;
3597 	     x_line_tbl(i).end_customer_party_id := x_header_rec.end_customer_party_id;
3598 	  else
3599 	     IF l_debug_level  > 0 THEN
3600 	    oe_debug_pub.add('AAC: need end customer account creation for line#'||i);
3601 	 END IF;
3602 	 l_line_acct_needed(i).end_customer := TRUE;
3603       END IF;
3604    end if;
3605    -- bug 4240715
3606 
3607     END loop;
3608     end if;
3609 
3610     IF l_debug_level  > 0 THEN
3611     oe_debug_pub.add('AAC: cache: done header level cache lookup ');
3612     END IF;
3613 
3614     IF p_line_val_tbl.COUNT > 0 then
3615        for i in p_line_val_tbl.FIRST..p_line_val_tbl.LAST loop
3616 
3617 	  IF (x_line_tbl.EXISTS(i) and nvl(x_line_tbl(i).ship_to_org_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM
3618 	      and
3619 		 (nvl(p_line_val_tbl(i).ship_to_org,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3620                   nvl(p_line_val_tbl(i).ship_to_customer_number_oi,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3621                   nvl(p_line_val_tbl(i).ship_to_customer_name_oi,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3622 		  nvl(p_line_val_tbl(i).ship_to_contact,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3623 		  nvl(p_line_val_tbl(i).ship_to_address1,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3624 		  nvl(p_line_val_tbl(i).ship_to_address2,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3625 		  nvl(p_line_val_tbl(i).ship_to_address3,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3626 		  nvl(p_line_val_tbl(i).ship_to_address4,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3627 		  nvl(p_line_val_tbl(i).ship_to_state,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3628 		  nvl(p_line_val_tbl(i).ship_to_country,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3629 		  nvl(p_line_val_tbl(i).ship_to_city,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3630 		  nvl(p_line_val_tbl(i).ship_to_city,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR) )
3631 	  then
3632              IF l_debug_level  > 0 THEN
3633 	     oe_debug_pub.add('ship to present:ship_to_org:'||p_line_val_tbl(i).ship_to_org|| 'ship_to_customer_number:'||p_line_val_tbl(i).ship_to_customer_number_oi||' ship_to_contact:'||p_line_val_tbl(i).ship_to_contact);
3634              END IF;
3635 	     l_line_acct_needed(i).ship := TRUE;
3636 	     l_line_acct_needed(i).ship_value := TRUE;
3637 	  end if;
3638 
3639 	  IF (x_line_tbl.EXISTS(i) and (nvl(x_line_tbl(i).ship_to_org_contact_id,FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM  or
3640 					nvl(p_line_val_tbl(i).ship_to_contact,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR)) then
3641 
3642              IF l_debug_level  > 0 THEN
3643 	     oe_debug_pub.add('ship to contact present');
3644              END IF;
3645 	     l_line_acct_needed(i).ship := TRUE;
3646 	     l_line_acct_needed(i).ship_value := TRUE;
3647 	  END IF;
3648 
3649 	  IF (x_line_tbl.EXISTS(i) and nvl(x_line_tbl(i).deliver_to_org_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM
3650 	      and
3651 		 (nvl(p_line_val_tbl(i).deliver_to_org,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3652                   nvl(p_line_val_tbl(i).deliver_to_customer_number_oi,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3653                   nvl(p_line_val_tbl(i).deliver_to_customer_name_oi,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3654 		  nvl(p_line_val_tbl(i).deliver_to_contact,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3655 		  nvl(p_line_val_tbl(i).deliver_to_address1,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3656 		  nvl(p_line_val_tbl(i).deliver_to_address2,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3657 		  nvl(p_line_val_tbl(i).deliver_to_address3,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3658 		  nvl(p_line_val_tbl(i).deliver_to_address4,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3659 		  nvl(p_line_val_tbl(i).deliver_to_state,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3660 		  nvl(p_line_val_tbl(i).deliver_to_country,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3661 		  nvl(p_line_val_tbl(i).deliver_to_city,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3662 		  nvl(p_line_val_tbl(i).deliver_to_city,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR))
3663 	  then
3664              IF l_debug_level  > 0 THEN
3665 	     oe_debug_pub.add('deliver to present:deliver_to_org:'||p_line_val_tbl(i).deliver_to_org|| 'deliver_to_customer_number:'||p_line_val_tbl(i).deliver_to_customer_number_oi||' deliver_to_contact:'||p_line_val_tbl(i).deliver_to_contact);
3666              END IF;
3667 	     l_line_acct_needed(i).deliver := TRUE;
3668 	     l_line_acct_needed(i).deliver_value := TRUE;
3669 	  end if;
3670 
3671 	  IF (x_line_tbl.EXISTS(i) and (nvl(x_line_tbl(i).deliver_to_org_contact_id,FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM or
3672 					nvl(p_line_val_tbl(i).deliver_to_contact,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR))
3673 	  then
3674              IF l_debug_level  > 0 THEN
3675 	     oe_debug_pub.add('deliver to contact present');
3676              END IF;
3677 	     l_line_acct_needed(i).deliver := TRUE;
3678 	     l_line_acct_needed(i).deliver_value := TRUE;
3679 	  END IF;
3680 
3681 	 IF (x_line_tbl.EXISTS(i) and nvl(x_line_tbl(i).invoice_to_org_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM
3682 	      and
3683 		 (nvl(p_line_val_tbl(i).invoice_to_org,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3684                   nvl(p_line_val_tbl(i).invoice_to_customer_number_oi,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3685                   nvl(p_line_val_tbl(i).invoice_to_customer_name_oi,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3686 		  nvl(p_line_val_tbl(i).invoice_to_contact,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3687 		  nvl(p_line_val_tbl(i).invoice_to_address1,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3688 		  nvl(p_line_val_tbl(i).invoice_to_address2,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3689 		  nvl(p_line_val_tbl(i).invoice_to_address3,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3690 		  nvl(p_line_val_tbl(i).invoice_to_address4,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3691 		  nvl(p_line_val_tbl(i).invoice_to_state,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3692 		  nvl(p_line_val_tbl(i).invoice_to_country,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3693 		  nvl(p_line_val_tbl(i).invoice_to_city,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3694 		  nvl(p_line_val_tbl(i).invoice_to_zip,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR))
3695 	  then
3696              IF l_debug_level  > 0 THEN
3697 	     oe_debug_pub.add('invoice to present:invoice_to_org:'||p_line_val_tbl(i).invoice_to_org|| 'invoice_to_customer_number:'||p_line_val_tbl(i).invoice_to_customer_number_oi||' invoice_to_contact:'||p_line_val_tbl(i).invoice_to_contact);
3698              END IF;
3699 	     l_line_acct_needed(i).invoice := TRUE;
3700 	     l_line_acct_needed(i).invoice_value := TRUE;
3701 	  end if;
3702 
3703 	  IF (x_line_tbl.EXISTS(i) and (nvl(x_line_tbl(i).invoice_to_org_contact_id,FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM  or
3704 					nvl(p_line_val_tbl(i).invoice_to_contact,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR))
3705 	  then
3706              IF l_debug_level  > 0 THEN
3707 	     oe_debug_pub.add('invoice to contact present');
3708              END IF;
3709 	    l_line_acct_needed(i).invoice := TRUE;
3710 	    l_line_acct_needed(i).invoice_value := TRUE;
3711 	 END IF;
3712 
3713 	 --added for bug 4240715
3714 	 -- end customer changes
3715 
3716 	 IF (x_line_tbl.EXISTS(i) and nvl(x_line_tbl(i).end_customer_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM
3717 	     and
3718 		(nvl(p_line_val_tbl(i).end_customer_name,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3719 		 nvl(p_line_val_tbl(i).end_customer_number,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3720 		 nvl(p_line_val_tbl(i).end_customer_contact,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3721 		 nvl(p_line_val_tbl(i).end_customer_site_address1,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3722 		 nvl(p_line_val_tbl(i).end_customer_site_address2,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3723 		 nvl(p_line_val_tbl(i).end_customer_site_address3,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3724 		 nvl(p_line_val_tbl(i).end_customer_site_address4,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3725 		 nvl(p_line_val_tbl(i).end_customer_site_state,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3726 		 nvl(p_line_val_tbl(i).end_customer_site_country,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3727 		 nvl(p_line_val_tbl(i).end_customer_site_city,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR or
3728 		 nvl(p_line_val_tbl(i).end_customer_site_postal_code,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR))
3729 	 then
3730 	    IF l_debug_level  > 0 THEN
3731 	       oe_debug_pub.add('end customer present:end customer name:'||p_line_val_tbl(i).end_customer_name|| 'end_customer_number:'||p_line_val_tbl(i).end_customer_number||' invoice_to_contact:'||p_line_val_tbl(i).end_customer_contact);
3732 	    END IF;
3733 	    l_line_acct_needed(i).end_customer := TRUE;
3734 	     l_line_acct_needed(i).end_customer_value := TRUE;
3735 	  end if;
3736 
3737 	  IF (x_line_tbl.EXISTS(i) and (nvl(x_line_tbl(i).end_customer_org_contact_id,FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM  or
3738 					nvl(p_line_val_tbl(i).end_customer_contact,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR))
3739 	  then
3740              IF l_debug_level  > 0 THEN
3741 		oe_debug_pub.add('end_customer contact present');
3742              END IF;
3743 	     l_line_acct_needed(i).end_customer := TRUE;
3744 	    l_line_acct_needed(i).end_customer_value := TRUE;
3745 	 END IF;
3746 	 -- bug 4240715
3747       end loop;
3748    end if;
3749 
3750    IF l_debug_level  > 0 THEN
3751    oe_debug_pub.add('AAC: cache: start line level account creation and cache lookups...');
3752    END IF;
3753 
3754     /* Loop through all the line records:
3755           1. decide if we want to create an account, (check in l_line_acct_needed(i) )
3756           2. if so, try to lookup similar account in previous lines
3757              and copy that (thus implementing caching)
3758           3. if no match found, call account creation
3759     */
3760 
3761    IF x_line_tbl.COUNT > 0 then
3762     for i in x_line_tbl.FIRST..x_line_tbl.LAST loop
3763 
3764        IF l_debug_level  > 0 THEN
3765        oe_debug_pub.add(' AAC: processing line_id:'||x_line_tbl(i).line_id);
3766        oe_debug_pub.add(' AAC: line#'||i);
3767        END IF;
3768 
3769       /* check if we need to create account for this line{ */
3770        IF (l_line_acct_needed.EXISTS(i)
3771 	   and
3772 	      (l_line_acct_needed(i).ship = TRUE
3773 	       or
3774 	       l_line_acct_needed(i).deliver = TRUE
3775 	       or
3776 	       l_line_acct_needed(i).invoice = TRUE
3777 	       or
3778 	       l_line_acct_needed(i).end_customer = TRUE	--bug 4240715
3779 	       ))
3780        THEN
3781    	  /* Ok, account needs to be created */
3782 
3783 	  /* keep track of how many accounts matched,
3784               reset to zero on each i iteration */
3785 	  l_line_acct_matched := 0;
3786 
3787 	  /* Look for similar account in previously visited lines = Caching */
3788 	  for j in x_line_tbl.FIRST..i LOOP
3789 	     if x_line_tbl.EXISTS(j) and i <> j then
3790 		IF (nvl(x_line_tbl(i).ship_to_party_id,FND_API.G_MISS_NUM) = nvl(x_line_tbl(j).ship_to_party_id,FND_API.G_MISS_NUM) and
3791 		    nvl(x_line_tbl(i).ship_to_party_number,FND_API.G_MISS_CHAR) = nvl(x_line_tbl(j).ship_to_party_number,FND_API.G_MISS_CHAR) and
3792 		    nvl(x_line_tbl(i).ship_to_party_site_id,FND_API.G_MISS_NUM) = nvl(x_line_tbl(j).ship_to_party_site_id,FND_API.G_MISS_NUM) and
3793 		    nvl(x_line_tbl(i).ship_to_party_site_use_id,FND_API.G_MISS_NUM) = nvl(x_line_tbl(j).ship_to_party_site_use_id,FND_API.G_MISS_NUM))
3794 		THEN
3795 	        /* this ship_to line matches, copy record */
3796                    IF l_debug_level  > 0 THEN
3797 		   oe_debug_pub.add('AAC: cache: >> matching line ship_to_org_id:'||x_line_tbl(j).ship_to_org_id||' found ');
3798                    END IF;
3799 		   x_line_tbl(i).ship_to_org_id     := x_line_tbl(j).ship_to_org_id;
3800 		   x_line_tbl(i).ship_to_customer_id:= x_line_tbl(j).ship_to_customer_id;
3801 		   l_line_acct_matched              := l_line_acct_matched+1;
3802 		END IF;
3803                 IF l_debug_level  > 0 THEN
3804 		oe_debug_pub.add(' AAC: X_ship#'||i||'.'||j);
3805                 END IF;
3806 		IF(nvl(x_line_tbl(i).deliver_to_party_id,FND_API.G_MISS_NUM) = nvl(x_line_tbl(j).deliver_to_party_id,FND_API.G_MISS_NUM) and
3807 		   nvl(x_line_tbl(i).deliver_to_party_number,FND_API.G_MISS_CHAR) = nvl(x_line_tbl(j).deliver_to_party_number,FND_API.G_MISS_CHAR) and
3808 		   nvl(x_line_tbl(i).deliver_to_party_site_id,FND_API.G_MISS_NUM) = nvl(x_line_tbl(j).deliver_to_party_site_id,FND_API.G_MISS_NUM) and
3809 		   nvl(x_line_tbl(i).deliver_to_party_site_use_id,FND_API.G_MISS_NUM) = nvl(x_line_tbl(j).deliver_to_party_site_use_id,FND_API.G_MISS_NUM))
3810 		THEN
3811 	        /* this deliver_to line matches, copy record */
3812                    IF l_debug_level  > 0 THEN
3813 		   oe_debug_pub.add('AAC: cache: >> matching line deliver_to_org_id:'||x_line_tbl(j).deliver_to_org_id||' found ');
3814                    END IF;
3815 		   x_line_tbl(i).deliver_to_org_id  := x_line_tbl(j).deliver_to_org_id;
3816 		   x_line_tbl(i).deliver_to_customer_id:= x_line_tbl(j).deliver_to_customer_id;
3817 		   l_line_acct_matched              := l_line_acct_matched+1;
3818 		END IF;
3819                 IF l_debug_level  > 0 THEN
3820 		oe_debug_pub.add(' AAC: X_deliver#'||i||'.'||j);
3821                 END IF;
3822 		IF(nvl(x_line_tbl(i).invoice_to_party_id,FND_API.G_MISS_NUM) = nvl(x_line_tbl(j).invoice_to_party_id,FND_API.G_MISS_NUM) and
3823 		   nvl(x_line_tbl(i).invoice_to_party_number,FND_API.G_MISS_CHAR) = nvl(x_line_tbl(j).invoice_to_party_number,FND_API.G_MISS_CHAR) and
3824 		   nvl(x_line_tbl(i).invoice_to_party_site_id,FND_API.G_MISS_NUM) = nvl(x_line_tbl(j).invoice_to_party_site_id,FND_API.G_MISS_NUM) and
3825 		   nvl(x_line_tbl(i).invoice_to_party_site_use_id,FND_API.G_MISS_NUM) = nvl(x_line_tbl(j).invoice_to_party_site_use_id,FND_API.G_MISS_NUM))
3826 		THEN
3827 	        /* this invoice_to line matches, copy record */
3828                    IF l_debug_level  > 0 THEN
3829 		   oe_debug_pub.add('AAC: cache: >> matching line invoice_to_org_id:'||x_line_tbl(j).invoice_to_org_id||' found ');
3830                    END IF;
3831 		   x_line_tbl(i).invoice_to_org_id  := x_line_tbl(j).invoice_to_org_id;
3832 		   x_line_tbl(i).invoice_to_customer_id:= x_line_tbl(j).invoice_to_customer_id;
3833 		   l_line_acct_matched              := l_line_acct_matched+1;
3834 		END IF;
3835                 IF l_debug_level  > 0 THEN
3836 		oe_debug_pub.add(' AAC: X_invoice#'||i||'.'||j);
3837                 END IF;
3838 
3839 		--{added for bug 4240715
3840 		IF (nvl(x_line_tbl(i).end_customer_party_id,FND_API.G_MISS_NUM) = nvl(x_line_tbl(j).end_customer_party_id,FND_API.G_MISS_NUM) and
3841 		    nvl(x_line_tbl(i).end_customer_party_number,FND_API.G_MISS_CHAR) = nvl(x_line_tbl(j).end_customer_party_number,FND_API.G_MISS_CHAR) and
3842 		    nvl(x_line_tbl(i).end_customer_party_site_id,FND_API.G_MISS_NUM) = nvl(x_line_tbl(j).end_customer_party_site_id,FND_API.G_MISS_NUM) and
3843 		    nvl(x_line_tbl(i).end_customer_party_site_use_id,FND_API.G_MISS_NUM) = nvl(x_line_tbl(j).end_customer_party_site_use_id,FND_API.G_MISS_NUM))
3844 		THEN
3845 	        /* this end_customer line matches, copy record */
3846                    IF l_debug_level  > 0 THEN
3847 		   oe_debug_pub.add('AAC: cache: >> matching line end customer:'||x_line_tbl(j).end_customer_id||' found ');
3848                    END IF;
3849 		   x_line_tbl(i).end_customer_site_use_id     := x_line_tbl(j).end_customer_site_use_id;
3850 		   x_line_tbl(i).end_customer_id:= x_line_tbl(j).end_customer_id;
3851 		   l_line_acct_matched              := l_line_acct_matched+1;
3852 		END IF;
3853 
3854                 IF l_debug_level  > 0 THEN
3855                 oe_debug_pub.add(' AAC: X_End Customer#'||i||'.'||j);
3856                 END IF;
3857 		--bug 4240715
3858 		oe_debug_pub.add('tested all four for line'||j);
3859 
3860 	     END IF;
3861 	     /* Done looking for similar accounts in prev lines */
3862 	  END loop;
3863 
3864           IF l_debug_level  > 0 THEN
3865 	  oe_debug_pub.add('AAC: Cache: done cache lookup for line: '||l_line_acct_matched||' matches found');
3866           END IF;
3867 
3868 	  /* conservative search */
3869 	  IF (l_line_acct_matched <> 3 ) THEN
3870 	      /* we have to create a new site{ */
3871              IF l_debug_level  > 0 THEN
3872 	     oe_debug_pub.add('AAC: line: creating new account sites for line');
3873              END IF;
3874 
3875 	     l_site_tbl_counter := 1;
3876 
3877 	     IF (l_line_acct_needed(i).ship = TRUE)
3878 	     then
3879                 IF l_debug_level  > 0 THEN
3880 		oe_debug_pub.add('AAC: line: creating new ship to account site for line');
3881                 END IF;
3882 		p_line_site_tbl(l_site_tbl_counter).p_party_site_id     := x_line_tbl(i).ship_to_party_site_id;
3883 		p_line_site_tbl(l_site_tbl_counter).p_party_site_use_id := x_line_tbl(i).ship_to_party_site_use_id;
3884 
3885 		if (nvl(x_line_tbl(i).ship_to_org_id,FND_API.G_MISS_NUM)=FND_API.G_MISS_NUM) then
3886 		   p_line_site_tbl(l_site_tbl_counter).p_site_use_id     := NULL;
3887 		else
3888 		   p_line_site_tbl(l_site_tbl_counter).p_site_use_id    := x_line_tbl(i).ship_to_org_id;
3889 		end if;
3890 
3891 		IF (l_line_acct_needed(i).ship_value = TRUE)
3892 		then
3893 		   p_line_site_tbl(l_site_tbl_counter).p_party_name             := p_line_val_tbl(i).ship_to_customer_name_oi;
3894 		   p_line_site_tbl(l_site_tbl_counter).p_party_number           := null;
3895 		   p_line_site_tbl(l_site_tbl_counter).p_cust_account_number    := p_line_val_tbl(i).ship_to_customer_number_oi;
3896 
3897 		   p_line_site_tbl(l_site_tbl_counter).p_contact_name           := p_line_val_tbl(i).ship_to_contact;
3898 
3899 		   p_line_site_tbl(l_site_tbl_counter).p_site_address1          := p_line_val_tbl(i).ship_to_address1 ;
3900 		   p_line_site_tbl(l_site_tbl_counter).p_site_address2 	   := p_line_val_tbl(i).ship_to_address2 ;
3901 		   p_line_site_tbl(l_site_tbl_counter).p_site_address3 	   := p_line_val_tbl(i).ship_to_address3 ;
3902 		   p_line_site_tbl(l_site_tbl_counter).p_site_address4 	   := p_line_val_tbl(i).ship_to_address4 ;
3903 		   p_line_site_tbl(l_site_tbl_counter).p_site_state    	   := p_line_val_tbl(i).ship_to_state    ;
3904 		   p_line_site_tbl(l_site_tbl_counter).p_site_country  	   := p_line_val_tbl(i).ship_to_country  ;
3905 		   p_line_site_tbl(l_site_tbl_counter).p_site_city              := p_line_val_tbl(i).ship_to_city     ;
3906 		   p_line_site_tbl(l_site_tbl_counter).p_site_postal_code       := p_line_val_tbl(i).ship_to_zip   ;
3907 		end if;
3908 
3909 		p_line_site_tbl(l_site_tbl_counter).p_party_id          := x_line_tbl(i).ship_to_party_id;
3910 		p_line_site_tbl(l_site_tbl_counter).p_party_number          := x_line_tbl(i).ship_to_party_number;
3911 		p_line_site_tbl(l_site_tbl_counter).p_site_use_code     := 'SHIP_TO';
3912                 p_line_site_tbl(l_site_tbl_counter).p_cust_account_id := x_line_tbl(i).ship_to_customer_id;
3913 		p_line_site_tbl(l_site_tbl_counter).p_cust_account_role_id := x_line_tbl(i).ship_to_contact_id;
3914 		p_line_site_tbl(l_site_tbl_counter).p_org_contact_id       := x_line_tbl(i).ship_to_org_contact_id;
3915 
3916 		l_site_tbl_counter := l_site_tbl_counter + 1;
3917 	      end if;
3918 
3919 	      IF (l_line_acct_needed(i).deliver = TRUE)
3920 	      then
3921                  IF l_debug_level  > 0 THEN
3922 		 oe_debug_pub.add('AAC: line: creating new deliver to account site for line');
3923                  END IF;
3924 		 p_line_site_tbl(l_site_tbl_counter).p_party_site_id     := x_line_tbl(i).deliver_to_party_site_id;
3925 		 p_line_site_tbl(l_site_tbl_counter).p_party_site_use_id := x_line_tbl(i).deliver_to_party_site_use_id;
3926 
3927 		 if (nvl(x_line_tbl(i).deliver_to_org_id,FND_API.G_MISS_NUM)=FND_API.G_MISS_NUM) then
3928 		    p_line_site_tbl(l_site_tbl_counter).p_site_use_id    := NULL;
3929 		 else
3930 		    p_line_site_tbl(l_site_tbl_counter).p_site_use_id    := x_line_tbl(i).deliver_to_org_id;
3931 		 end if;
3932 
3933 		 IF (l_line_acct_needed(i).deliver_value = TRUE)
3934 		 then
3935 		    p_line_site_tbl(l_site_tbl_counter).p_party_name          := p_line_val_tbl(i).deliver_to_customer_name_oi;
3936 		    p_line_site_tbl(l_site_tbl_counter).p_party_number        := null;
3937 		    p_line_site_tbl(l_site_tbl_counter).p_cust_account_number := p_line_val_tbl(i).deliver_to_customer_number_oi;
3938 
3939 		    p_line_site_tbl(l_site_tbl_counter).p_contact_name        := p_line_val_tbl(i).deliver_to_contact;
3940 
3941 		    p_line_site_tbl(l_site_tbl_counter).p_site_address1       := p_line_val_tbl(i).deliver_to_address1 ;
3942 		    p_line_site_tbl(l_site_tbl_counter).p_site_address2 	 := p_line_val_tbl(i).deliver_to_address2 ;
3943 		    p_line_site_tbl(l_site_tbl_counter).p_site_address3 	 := p_line_val_tbl(i).deliver_to_address3 ;
3944 		    p_line_site_tbl(l_site_tbl_counter).p_site_address4 	 := p_line_val_tbl(i).deliver_to_address4 ;
3945 		    p_line_site_tbl(l_site_tbl_counter).p_site_state    	 := p_line_val_tbl(i).deliver_to_state    ;
3946 		    p_line_site_tbl(l_site_tbl_counter).p_site_country  	 := p_line_val_tbl(i).deliver_to_country  ;
3947 		    p_line_site_tbl(l_site_tbl_counter).p_site_city           := p_line_val_tbl(i).deliver_to_city     ;
3948 		    p_line_site_tbl(l_site_tbl_counter).p_site_postal_code    := p_line_val_tbl(i).deliver_to_zip   ;
3949 		 end if;
3950 
3951 		 p_line_site_tbl(l_site_tbl_counter).p_party_id          := x_line_tbl(i).deliver_to_party_id;
3952 		 p_line_site_tbl(l_site_tbl_counter).p_party_number          := x_line_tbl(i).deliver_to_party_number;
3953 		 p_line_site_tbl(l_site_tbl_counter).p_site_use_code     := 'DELIVER_TO';
3954                  p_line_site_tbl(l_site_tbl_counter).p_cust_account_id := x_line_tbl(i).deliver_to_customer_id;
3955 		 p_line_site_tbl(l_site_tbl_counter).p_cust_account_role_id   := x_line_tbl(i).deliver_to_contact_id;
3956 		 p_line_site_tbl(l_site_tbl_counter).p_org_contact_id         := x_line_tbl(i).deliver_to_org_contact_id;
3957 
3958 		 l_site_tbl_counter := l_site_tbl_counter + 1;
3959 	      end if;
3960 
3961 	      IF (l_line_acct_needed(i).invoice = TRUE)
3962 	      then
3963                  IF l_debug_level  > 0 THEN
3964 		 oe_debug_pub.add('AAC: line: creating new invoice to account site for line');
3965                  END IF;
3966 		 p_line_site_tbl(l_site_tbl_counter).p_party_site_id     := x_line_tbl(i).invoice_to_party_site_id;
3967 		 p_line_site_tbl(l_site_tbl_counter).p_party_site_use_id := x_line_tbl(i).invoice_to_party_site_use_id;
3968 
3969 		 if (nvl(x_line_tbl(i).invoice_to_org_id,FND_API.G_MISS_NUM)=FND_API.G_MISS_NUM) then
3970 		    p_line_site_tbl(l_site_tbl_counter).p_site_use_id    := NULL;
3971 		 else
3972 		    p_line_site_tbl(l_site_tbl_counter).p_site_use_id    := x_line_tbl(i).invoice_to_org_id;
3973 		 end if;
3974 
3975 		 IF (l_line_acct_needed(i).invoice_value = TRUE)
3976 		 then
3977 		    p_line_site_tbl(l_site_tbl_counter).p_party_name             := p_line_val_tbl(i).invoice_to_customer_name_oi;
3978 		    p_line_site_tbl(l_site_tbl_counter).p_party_number           := null;
3979 		    p_line_site_tbl(l_site_tbl_counter).p_cust_account_number    := p_line_val_tbl(i).invoice_to_customer_number_oi;
3980 
3981 		    p_line_site_tbl(l_site_tbl_counter).p_contact_name           := p_line_val_tbl(i).invoice_to_contact;
3982 
3983 		    p_line_site_tbl(l_site_tbl_counter).p_site_address1          := p_line_val_tbl(i).invoice_to_address1 ;
3984 		    p_line_site_tbl(l_site_tbl_counter).p_site_address2 	 := p_line_val_tbl(i).invoice_to_address2 ;
3985 		    p_line_site_tbl(l_site_tbl_counter).p_site_address3 	 := p_line_val_tbl(i).invoice_to_address3 ;
3986 		    p_line_site_tbl(l_site_tbl_counter).p_site_address4 	 := p_line_val_tbl(i).invoice_to_address4 ;
3987 		    p_line_site_tbl(l_site_tbl_counter).p_site_state    	 := p_line_val_tbl(i).invoice_to_state    ;
3988 		    p_line_site_tbl(l_site_tbl_counter).p_site_country  	 := p_line_val_tbl(i).invoice_to_country  ;
3989 		    p_line_site_tbl(l_site_tbl_counter).p_site_city              := p_line_val_tbl(i).invoice_to_city     ;
3990 		    p_line_site_tbl(l_site_tbl_counter).p_site_postal_code       := p_line_val_tbl(i).invoice_to_zip   ;
3991 		 end if;
3992 
3993 		 p_line_site_tbl(l_site_tbl_counter).p_party_id          := x_line_tbl(i).invoice_to_party_id;
3994 		 p_line_site_tbl(l_site_tbl_counter).p_party_number          := x_line_tbl(i).invoice_to_party_number;
3995 		 p_line_site_tbl(l_site_tbl_counter).p_site_use_code     := 'BILL_TO';
3996                  p_line_site_tbl(l_site_tbl_counter).p_cust_account_id := x_line_tbl(i).invoice_to_customer_id;
3997 		 p_line_site_tbl(l_site_tbl_counter).p_cust_account_role_id   := x_line_tbl(i).invoice_to_contact_id;
3998 		 p_line_site_tbl(l_site_tbl_counter).p_org_contact_id         := x_line_tbl(i).invoice_to_org_contact_id;
3999 
4000 		 l_site_tbl_counter := l_site_tbl_counter + 1;
4001 	      end if;
4002 
4003 		-- { added for bug 4240715
4004 	       -- End customer changes
4005 
4006 	        IF (l_line_acct_needed(i).end_customer = TRUE)
4007 		then
4008 		   IF l_debug_level  > 0 THEN
4009 		      oe_debug_pub.add('AAC: line: creating new end customer account site for line');
4010 		   END IF;
4011 		   p_line_site_tbl(l_site_tbl_counter).p_party_site_id     := x_line_tbl(i).end_customer_party_site_id;
4012 		   p_line_site_tbl(l_site_tbl_counter).p_party_site_use_id := x_line_tbl(i).end_customer_party_site_use_id;
4013 
4014 		   if (nvl(x_line_tbl(i).end_customer_site_use_id,FND_API.G_MISS_NUM)=FND_API.G_MISS_NUM) then
4015 		      p_line_site_tbl(l_site_tbl_counter).p_site_use_id    := NULL;
4016 		   else
4017 		      p_line_site_tbl(l_site_tbl_counter).p_site_use_id    := x_line_tbl(i).end_customer_site_use_id;
4018 		   end if;
4019 
4020 		   IF (l_line_acct_needed(i).end_customer_value = TRUE)
4021 		   then
4022 		      p_line_site_tbl(l_site_tbl_counter).p_party_name             := p_line_val_tbl(i).end_customer_name;
4023 		      p_line_site_tbl(l_site_tbl_counter).p_party_number           := null;
4024 		      p_line_site_tbl(l_site_tbl_counter).p_cust_account_number    := p_line_val_tbl(i).end_customer_number;
4025 
4026 		      p_line_site_tbl(l_site_tbl_counter).p_contact_name           := p_line_val_tbl(i).end_customer_contact;
4027 
4028 		      p_line_site_tbl(l_site_tbl_counter).p_site_address1          := p_line_val_tbl(i).end_customer_site_address1 ;
4029 		      p_line_site_tbl(l_site_tbl_counter).p_site_address2 	 := p_line_val_tbl(i).end_customer_site_address2 ;
4030 		      p_line_site_tbl(l_site_tbl_counter).p_site_address3 	 := p_line_val_tbl(i).end_customer_site_address3 ;
4031 		      p_line_site_tbl(l_site_tbl_counter).p_site_address4 	 := p_line_val_tbl(i).end_customer_site_address4 ;
4032 		      p_line_site_tbl(l_site_tbl_counter).p_site_state    	 := p_line_val_tbl(i).end_customer_site_state    ;
4033 		      p_line_site_tbl(l_site_tbl_counter).p_site_country  	 := p_line_val_tbl(i).end_customer_site_country  ;
4034 		      p_line_site_tbl(l_site_tbl_counter).p_site_city              := p_line_val_tbl(i).end_customer_site_city     ;
4035 		      p_line_site_tbl(l_site_tbl_counter).p_site_postal_code       := p_line_val_tbl(i).end_customer_site_postal_code   ;
4036 		   end if;
4037 
4038 		   p_line_site_tbl(l_site_tbl_counter).p_party_id          := x_line_tbl(i).end_customer_party_id;
4039 		   p_line_site_tbl(l_site_tbl_counter).p_party_number          := x_line_tbl(i).end_customer_party_number;
4040 		   p_line_site_tbl(l_site_tbl_counter).p_site_use_code     := 'END_CUST';
4041 		   p_line_site_tbl(l_site_tbl_counter).p_cust_account_role_id   := x_line_tbl(i).end_customer_contact_id;
4042 		   p_line_site_tbl(l_site_tbl_counter).p_org_contact_id         := x_line_tbl(i).end_customer_org_contact_id;
4043 
4044 		 if (nvl(x_line_tbl(i).end_customer_id,FND_API.G_MISS_NUM)=FND_API.G_MISS_NUM) then
4045 		    p_line_site_tbl(l_site_tbl_counter).p_cust_account_id    := NULL;
4046 		 else
4047 		    p_line_site_tbl(l_site_tbl_counter).p_cust_account_id    := x_line_tbl(i).end_customer_id;
4048 		 end if;
4049 
4050 
4051                  oe_debug_pub.add('end customer party_id'||x_line_tbl(i).end_customer_party_id ||'p_custacc'||p_line_site_tbl(l_site_tbl_counter).p_cust_account_id||'counter is'||l_site_tbl_counter);
4052 
4053 		 l_site_tbl_counter := l_site_tbl_counter + 1;
4054 
4055 	      end if;
4056 	      -- bug 4240715}
4057 
4058               IF l_debug_level  > 0 THEN
4059 	      oe_debug_pub.add('AAC: line: calling Create_Account_Layer...');
4060               END IF;
4061 	      oe_create_account_info.Create_Account_Layer(
4062 							  p_control_rec  =>p_control_rec
4063 							  ,x_return_status =>x_return_status
4064 							  ,x_msg_count   =>x_msg_count
4065 							  ,x_msg_data  =>x_Msg_data
4066 							  ,p_party_customer_rec =>p_party_customer_rec
4067 							  ,p_site_tbl  =>p_line_site_tbl
4068 							  ,p_account_tbl  =>p_account_tbl
4069 							  ,p_contact_tbl  =>p_contact_tbl
4070 							  );
4071 
4072 
4073               IF l_debug_level  > 0 THEN
4074 	      oe_debug_pub.add('AAC: line: after calling create_account_layer');
4075               END IF;
4076 
4077 	      /* check for errors{ */
4078 	      IF x_return_status <> fnd_api.G_RET_STS_SUCCESS THEN
4079 		 l_count :=oe_msg_pub.count_msg;
4080 
4081                  IF l_debug_level  > 0 THEN
4082 		 oe_debug_pub.add('AAC: line: Main Status is not success'||
4083 				  ' msg='||x_msg_data||
4084 				  ' count='||x_msg_count
4085 				  );
4086                  END IF;
4087 		 RAISE FND_API.G_EXC_ERROR;
4088 	      ELSE
4089                  IF l_debug_level  > 0 THEN
4090 		 oe_debug_pub.add('AAC: line: Status is success');
4091                  END IF;
4092 
4093 	      END IF; /* END checking for errors} */
4094 
4095 	      IF p_line_site_tbl.COUNT > 0 then
4096 
4097 		 FOR j in p_line_site_tbl.FIRST..p_line_site_tbl.LAST LOOP
4098 
4099 		    IF (p_line_site_tbl(j).p_site_use_code = 'SHIP_TO')
4100 		    THEN
4101                        IF l_debug_level  > 0 THEN
4102 		       oe_debug_pub.add('AAC: line SHIP_TO org_id:'|| p_line_site_tbl(j).p_site_use_id);
4103 		       oe_debug_pub.add('AAC: line SHIP_TO cust_account_id:'|| p_line_site_tbl(j).p_cust_account_id);
4104                        END IF;
4105 
4106 		       x_line_tbl(i).ship_to_org_id := p_line_site_tbl(j).p_site_use_id;
4107 		       x_line_tbl(i).ship_to_customer_id := p_line_site_tbl(j).p_cust_account_id;
4108 		       x_line_tbl(i).ship_to_contact_id  := p_line_site_tbl(j).p_cust_account_role_id;
4109                        x_line_tbl(i).ship_to_party_id := p_line_site_tbl(j).p_party_id;
4110 		    ELSIF (p_line_site_tbl(j).p_site_use_code = 'DELIVER_TO')
4111 		    THEN
4112 
4113                        IF l_debug_level  > 0 THEN
4114 		       oe_debug_pub.add('AAC: line DELIVER_TO org_id:'|| p_line_site_tbl(j).p_site_use_id);
4115 		       oe_debug_pub.add('AAC: line DELIVER_TO cust_account_id:'|| p_line_site_tbl(j).p_cust_account_id);
4116                        END IF;
4117 		       x_line_tbl(i).deliver_to_org_id := p_line_site_tbl(j).p_site_use_id;
4118 		       x_line_tbl(i).deliver_to_customer_id := p_line_site_tbl(j).p_cust_account_id;
4119 		       x_line_tbl(i).deliver_to_contact_id  := p_line_site_tbl(j).p_cust_account_role_id;
4120                        x_line_tbl(i).deliver_to_party_id := p_line_site_tbl(j).p_party_id;
4121 		    ELSIF (p_line_site_tbl(j).p_site_use_code = 'BILL_TO')
4122 		    THEN
4123                        IF l_debug_level  > 0 THEN
4124 		       oe_debug_pub.add('AAC: line INVOICE_TO org_id:'|| p_line_site_tbl(j).p_site_use_id);
4125 		       oe_debug_pub.add('AAC: line INVOICE_TO cust_account_id:'|| p_line_site_tbl(j).p_cust_account_id);
4126                        END IF;
4127 		       x_line_tbl(i).invoice_to_org_id := p_line_site_tbl(j).p_site_use_id;
4128 		       x_line_tbl(i).invoice_to_customer_id := p_line_site_tbl(j).p_cust_account_id;
4129 		       x_line_tbl(i).invoice_to_contact_id  := p_line_site_tbl(j).p_cust_account_role_id;
4130                        x_line_tbl(i).invoice_to_party_id := p_line_site_tbl(j).p_party_id;
4131 
4132 		     --{ added for bug 4240715
4133 		    ELSIF (p_line_site_tbl(j).p_site_use_code = 'END_CUST') -- end customer changes
4134 		       THEN
4135                        IF l_debug_level  > 0 THEN
4136 		       oe_debug_pub.add('AAC: line End customer site use id:'|| p_line_site_tbl(j).p_site_use_id);
4137 		       oe_debug_pub.add('AAC: line End customer cust_account_id:'|| p_line_site_tbl(j).p_cust_account_id);
4138                        END IF;
4139 		       x_line_tbl(i).end_customer_site_use_id := p_line_site_tbl(j).p_site_use_id;
4140 		       x_line_tbl(i).end_customer_id := p_line_site_tbl(j).p_cust_account_id;
4141 		       x_line_tbl(i).end_customer_contact_id  := p_line_site_tbl(j).p_cust_account_role_id;
4142 		       x_line_tbl(i).end_customer_party_id := p_line_site_tbl(j).p_party_id;
4143 		       -- bug 4240715}
4144 
4145 		    END IF;
4146 
4147 		 END LOOP;
4148 	      end if;
4149 
4150 	   END IF; /* END creating a new site} */
4151 
4152 	END IF; /* END checking account creation for line} */
4153 
4154    END loop;
4155    end if;
4156 
4157    IF l_debug_level  > 0 THEN
4158    oe_debug_pub.add('AAC: Exiting Process Order Automatic Account Creation}');
4159    END IF;
4160 
4161 EXCEPTION
4162 
4163    WHEN OTHERS THEN
4164 
4165       IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4166       THEN
4167 	 OE_MSG_PUB.Add_Exc_Msg(G_PKG_NAME,'Automatic_Account_Creation');
4168       END IF;
4169 
4170       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4171 
4172 END AUTOMATIC_ACCOUNT_CREATION;
4173 
4174 
4175 /* Introduced this API for OKC workbench to chekc security on contract terms.
4176 the API will work for both sales orders and blanket sales agreements
4177 */
4178 
4179 PROCEDURE Check_Header_Security
4180 ( p_document_type IN VARCHAR2
4181 , p_column        IN VARCHAR2 := NULL
4182 , p_header_id     IN NUMBER
4183 , p_operation     IN VARCHAR2
4184 , x_msg_count     OUT NOCOPY NUMBER
4185 , x_msg_data      OUT NOCOPY VARCHAR2
4186 , x_return_status OUT NOCOPY VARCHAR2
4187 , x_result        OUT NOCOPY NUMBER
4188 )
4189 IS
4190 l_blanket_header_rec            OE_BLANKET_PUB.Header_Rec_Type;
4191 l_blanket_rowtype_rec           oe_ak_blanket_headers_v%rowtype;
4192 l_header_rec            OE_ORDER_PUB.Header_Rec_Type;
4193 l_header_rowtype_rec    oe_ak_order_headers_v%rowtype;
4194 l_action                NUMBER;
4195 
4196 BEGIN
4197 
4198 
4199 OE_MSG_PUB.initialize;
4200 x_return_status := FND_API.G_RET_STS_SUCCESS;
4201 
4202 IF(p_operation IS NULL or p_operation = '' ) THEN
4203    --raise an error for null operation
4204    FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
4205    FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Operation');
4206    OE_MSG_PUB.Add;
4207    RAISE FND_API.G_EXC_ERROR;
4208 END IF;
4209 
4210 IF(p_header_id IS NULL) THEN
4211    --raise an error for null header_id
4212    FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
4213    FND_MESSAGE.SET_TOKEN('ATTRIBUTE','header_id');
4214    OE_MSG_PUB.Add;
4215    RAISE FND_API.G_EXC_ERROR;
4216 ELSE
4217    -- (1)query header_rec by header_id
4218    -- (2) convert to RowType Rec
4219    -- (3) call Entity_Security.Is_OP_Constrained to see if
4220    -- there are entity level constrains and attribute level constrains
4221 
4222    IF(p_document_type IS NULL OR p_document_type ='') THEN
4223      -- raise an error for null document_type
4224      FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
4225      FND_MESSAGE.SET_TOKEN('ATTRIBUTE','document_type');
4226      OE_MSG_PUB.Add;
4227      RAISE FND_API.G_EXC_ERROR;
4228    ELSIF p_document_type= 'O' THEN
4229      -- the caller is from Sales Order
4230      OE_HEADER_UTIL.QUERY_ROW(p_header_id=>p_header_id
4231                              ,x_header_rec=>l_header_rec);
4232      OE_HEADER_UTIL.API_Rec_To_Rowtype_Rec(l_header_rec
4233                              ,l_header_rowtype_rec);
4234 
4235       x_result := OE_Header_Security.Is_OP_Constrained
4236                                (p_operation =>  p_operation
4237                                ,p_column_name => p_column
4238                                ,p_record => l_header_rowtype_rec
4239                                ,x_on_operation_action => l_action
4240                                );
4241 
4242 
4243    ELSIF p_document_type= 'B' THEN
4244      -- the caller is from Blanket Order
4245      OE_Blanket_Util.Query_Header
4246                    (p_header_id     => p_header_id,
4247                     x_header_rec    => l_blanket_header_rec,
4248                     x_return_status => x_return_status);
4249      OE_BLANKET_UTIL.API_Rec_To_Rowtype_Rec(l_blanket_header_rec
4250                                            ,l_blanket_rowtype_rec);
4251 
4252       x_result := OE_Blanket_Header_Security.Is_OP_Constrained
4253                                (p_operation =>  p_operation
4254                                ,p_column_name => p_column
4255                                ,p_record => l_blanket_rowtype_rec
4256                                ,x_on_operation_action => l_action
4257                                );
4258     END IF;
4259 END IF;
4260 
4261 EXCEPTION
4262 
4263     WHEN FND_API.G_EXC_ERROR THEN
4264 
4265         x_return_status := FND_API.G_RET_STS_ERROR;
4266 
4267         --  Get message count and data
4268 
4269         OE_MSG_PUB.Count_And_Get
4270         (   p_count                       => x_msg_count
4271         ,   p_data                        => x_msg_data
4272         );
4273 
4274     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4275 
4276         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4277 
4278         --  Get message count and data
4279 
4280         OE_MSG_PUB.Count_And_Get
4281         (   p_count                       => x_msg_count
4282         ,   p_data                        => x_msg_data
4283         );
4284 
4285     WHEN OTHERS THEN
4286         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4287 
4288         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4289         THEN
4290             OE_MSG_PUB.Add_Exc_Msg
4291             (   G_PKG_NAME
4292             ,   'Check_Header_Security'
4293             );
4294         END IF;
4295         --  Get message count and data
4296 
4297         OE_MSG_PUB.Count_And_Get
4298         (   p_count                       => x_msg_count
4299         ,   p_data                        => x_msg_data
4300         );
4301 
4302 
4303 END Check_Header_Security;
4304 
4305 
4306 END OE_Order_GRP;