DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_ORDER_GRP

Source


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