1 PACKAGE BODY OZF_TRACING_ORDER_PVT AS
2 /* $Header: ozfvotrb.pls 120.7 2006/06/29 00:36:51 mchang noship $ */
3
4 -- Package name : OZF_TRACING_ORDER_PVT
5 -- Purpose :
6 -- History :
7 -- NOTE :
8 -- END of Comments
9
10 G_PKG_NAME CONSTANT VARCHAR2(30) := 'OZF_TRACING_ORDER_PVT';
11 G_FILE_NAME CONSTANT VARCHAR2(30) := 'ozfvoctrb.pls';
12
13 OZF_DEBUG_HIGH_ON BOOLEAN := FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_debug_high);
14 OZF_DEBUG_LOW_ON BOOLEAN := FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_debug_low);
15
16 ---------------------------------------------------------------------
17 -- PROCEDURE
18 -- Initiate_payment
19 --
20 -- PURPOSE
21 -- Initiate payment for a batch.
22 --
23 -- PARAMETERS
24 --
25 -- NOTES
26 --
27 ---------------------------------------------------------------------
28 PROCEDURE Initiate_payment (
29 p_api_version IN NUMBER
30 ,p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
31 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
32 ,p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
33 ,p_resale_batch_id IN NUMBER
34 ,x_return_status OUT NOCOPY VARCHAR2
35 ,x_msg_data OUT NOCOPY VARCHAR2
36 ,x_msg_count OUT NOCOPY NUMBER
37 )
38 IS
39 l_api_name CONSTANT VARCHAR2(30) := 'Initiate_payment';
40 l_api_version CONSTANT NUMBER := 1.0;
41 l_full_name CONSTANT VARCHAR2(60) := G_PKG_NAME ||'.'|| l_api_name;
42 --
43 l_return_status VARCHAR2(30);
44 l_msg_data VARCHAR2(2000);
45 l_msg_count NUMBER;
46
47 CURSOR batch_info_csr (p_id in NUMBER) IS
48 SELECT status_code,
49 batch_type,
50 partner_cust_account_id,
51 partner_party_id,
52 report_start_date,
53 report_end_date,
54 batch_number,
55 last_updated_by
56 FROM ozf_resale_batches
57 WHERE resale_batch_id = p_id;
58 l_batch_status VARCHAR2(30);
59 l_batch_type VARCHAR2(30);
60 l_partner_cust_account_id NUMBER;
61 l_partner_party_id NUMBER;
62 l_report_start_date date;
63 l_report_end_date date;
64 l_batch_NUMBER VARCHAR2(240);
65 l_last_updated_by NUMBER(15);
66
67
68 CURSOR OPEN_line_count_csr (p_id in NUMBER) IS
69 SELECT count(1)
70 From ozf_resale_lines_int
71 WHERE resale_batch_id = p_id
72 AND status_code = OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_OPEN;
73 l_count NUMBER;
74
75 TYPE id_type IS RECORD (
76 id NUMBER
77 );
78
79 TYPE id_tbl_type is TABLE OF id_type INDEX BY binary_integer;
80
81 l_line_int_rec OZF_RESALE_COMMON_PVT.g_interface_rec_csr%rowtype;
82
83 CURSOR valid_line_id_csr(p_id in NUMBER,
84 p_order_number in VARCHAR2,
85 p_cust_id in NUMBER,
86 p_date in DATE)
87 IS
88 SELECT resale_line_int_id
89 FROM ozf_resale_lines_int
90 WHERE resale_batch_id = p_id
91 AND order_number = p_order_number
92 AND sold_from_cust_account_id = p_cust_id
93 AND date_ordered = p_date
94 AND status_code = 'PROCESSED';
95 --AND status_code in (OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_DUPLICATED, OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_PROCESSED);
96 --AND duplicated_adjustment_id <> -1;
97
98
99 l_valid_line_id_tbl id_tbl_type;
100
101 i NUMBER;
102
103 l_create_order_header boolean := false;
104
105 CURSOR dup_header_id_csr( p_id IN NUMBER
106 , p_order_number IN VARCHAR2
107 , p_cust_id IN NUMBER
108 , p_date IN DATE
109 ) IS
110 SELECT a.resale_header_id
111 FROM ozf_resale_headers a
112 , ozf_resale_lines_int b
113 , ozf_resale_lines c
114 WHERE b.resale_batch_id = p_id
115 AND b.order_number = p_order_number
116 AND b.sold_from_cust_account_id = p_cust_id
117 AND b.date_ordered = p_date
118 AND b.status_code IN ('DUPLICATED', 'PROCESSED')
119 AND b.duplicated_line_id = c.resale_line_id
120 AND c.resale_header_id = a.resale_header_id;
121
122 l_dup_header_id_tbl OZF_RESALE_COMMON_PVT.number_tbl_type;
123
124 l_header_id NUMBER;
125 l_line_id NUMBER;
126
127 CURSOR batch_order_num_csr(p_id in NUMBER)is
128 SELECT DISTINCT order_number,
129 sold_from_cust_account_id,
130 date_ordered
131 FROM ozf_resale_lines_int
132 WHERE resale_batch_id = p_id
133 AND status_code in(OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_DUPLICATED, OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_PROCESSED)
134 --AND duplicated_adjustment_id <> -1
135 ORDER BY date_ordered;
136
137 TYPE order_num_tbl_type is TABLE OF batch_order_num_csr%rowtype INDEX BY binary_integer;
138 l_order_num_tbl order_num_tbl_type;
139
140 l_inventory_tracking VARCHAR2(1);
141
142 l_sales_transaction_rec OZF_SALES_TRANSACTIONS_PVT.SALES_TRANSACTION_REC_TYPE;
143
144 l_inventory_level_valid boolean;
145 l_sales_transaction_id NUMBER;
146
147 CURSOR end_cust_relation_flag_csr IS
148 SELECT end_cust_relation_flag
149 -- BUG 4992408 (+)
150 -- FROM ozf_sys_parameters_all;
151 FROM ozf_sys_parameters;
152 -- BUG 4992408 (-)
153
154 l_end_cust_relation_flag varchar2(30);
155 l_new_party_rec OZF_RESALE_COMMON_PVT.party_rec_type;
156
157 CURSOR csr_orig_billto_cust(cv_resale_batch_id IN NUMBER) IS
158 SELECT DISTINCT bill_to_party_name
159 , bill_to_address
160 , bill_to_city
161 , bill_to_state
162 , bill_to_postal_code
163 , bill_to_country
164 FROM ozf_resale_lines_int_all
165 WHERE resale_batch_id = cv_resale_batch_id
166 AND status_code = 'PROCESSED'
167 AND ( duplicated_line_id IS NULL
168 OR ( duplicated_line_id IS NOT NULL AND duplicated_adjustment_id = -1))
169 AND bill_to_party_id IS NULL
170 AND bill_to_cust_account_id IS NULL
171 AND bill_to_party_name IS NOT NULL;
172
173 TYPE orig_billto_cust_tbl_type IS TABLE of csr_orig_billto_cust%ROWTYPE
174 INDEX BY BINARY_INTEGER;
175 l_orig_billto_cust_tbl orig_billto_cust_tbl_type;
176
177 CURSOR csr_orig_end_cust(cv_resale_batch_id IN NUMBER) IS
178 SELECT DISTINCT end_cust_party_name
179 , end_cust_address
180 , end_cust_city
181 , end_cust_state
182 , end_cust_postal_code
183 , end_cust_country
184 , end_cust_site_use_code
185 FROM ozf_resale_lines_int_all
186 WHERE resale_batch_id = cv_resale_batch_id
187 AND status_code = 'PROCESSED'
188 AND ( duplicated_line_id IS NULL
189 OR ( duplicated_line_id IS NOT NULL AND duplicated_adjustment_id = -1))
190 AND end_cust_party_id IS NULL
191 AND end_cust_party_name IS NOT NULL;
192
193 TYPE orig_end_cust_tbl_type IS TABLE of csr_orig_end_cust%ROWTYPE
194 INDEX BY BINARY_INTEGER;
195 l_orig_end_cust_tbl orig_end_cust_tbl_type;
196
197 BEGIN
198 -- Standard begin of API savepoint
199 SAVEPOINT TRAC_INITIATE_PAYMENT;
200 -- Standard call to check for call compatibility.
201 IF NOT FND_API.Compatible_API_Call (
202 l_api_version,
203 p_api_version,
204 l_api_name,
205 G_PKG_NAME)
206 THEN
207 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
208 END IF;
209
210 --Initialize message list if p_init_msg_list is TRUE.
211 IF FND_API.To_Boolean (p_init_msg_list) THEN
212 FND_MSG_PUB.initialize;
213 END IF;
214
215 -- Debug Message
216 IF OZF_DEBUG_HIGH_ON THEN
217 OZF_UTILITY_PVT.debug_message(p_message_text => l_full_name||': Start');
218 END IF;
219
220
221 -- Initialize API return status to sucess
222 x_return_status := FND_API.G_RET_STS_SUCCESS;
223
224 OPEN Batch_info_csr(p_resale_batch_id);
225 FETCH batch_info_csr INTO l_batch_status,
226 l_batch_type,
227 l_partner_cust_account_id,
228 l_partner_party_id,
229 l_report_start_date,
230 l_report_end_date,
231 l_batch_NUMBER,
232 l_last_updated_by;
233 CLOSE batch_info_csr;
234
235 IF l_batch_status = OZF_RESALE_COMMON_PVT.G_BATCH_PENDING_PAYMENT THEN
236
237 OPEN OPEN_line_count_csr(p_resale_batch_id);
238 FETCH OPEN_line_count_csr INTO l_count;
239 CLOSE OPEN_line_count_csr;
240
241 IF l_count <> 0 THEN
242 --Can not pay if there is an OPEN line
243 ozf_utility_pvt.error_message('OZF_RESALE_OPEN_LINE_EXIST');
244 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
245 ELSE
246 -- Check whether there is a need to do inventory_verification
247 OPEN OZF_RESALE_COMMON_PVT.g_inventory_tracking_csr;
248 FETCH OZF_RESALE_COMMON_PVT.g_inventory_tracking_csr INTO l_inventory_tracking;
249 CLOSE OZF_RESALE_COMMON_PVT.g_inventory_tracking_csr;
250
251 IF l_inventory_tracking = 'T' THEN
252 OZF_SALES_TRANSACTIONS_PVT.Initiate_Inventory_tmp (
253 p_api_version => 1.0
254 ,p_init_msg_list => FND_API.G_FALSE
255 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
256 ,p_resale_batch_id => p_resale_batch_id
257 ,p_start_date => l_report_start_date
258 ,p_end_date => l_report_end_date
259 ,x_return_status => l_return_status
260 ,x_msg_count => l_msg_count
261 ,x_msg_data => l_msg_data
262 );
263 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
264 OZF_UTILITY_PVT.error_message('OZF_RESALE_INIT_INV_TMP_ERR');
265 RAISE FND_API.G_EXC_ERROR;
266 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
267 OZF_UTILITY_PVT.error_message('OZF_RESALE_INIT_INV_TMP_ERR');
268 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
269 END IF;
270 END IF;
271
272 OPEN end_cust_relation_flag_csr;
273 FETCH end_cust_relation_flag_csr INTO l_end_cust_relation_flag;
274 CLOSE end_cust_relation_flag_csr;
275
276 IF l_end_cust_relation_flag = 'T' THEN
277 -- check bill_to customer
278 OPEN csr_orig_billto_cust(p_resale_batch_id);
279 FETCH csr_orig_billto_cust BULK COLLECT INTO l_orig_billto_cust_tbl;
280 CLOSE csr_orig_billto_cust;
281
282 IF l_orig_billto_cust_tbl.COUNT > 0 THEN
283 FOR i IN 1..l_orig_billto_cust_tbl.COUNT LOOP
284 l_new_party_rec := NULL;
285 -- Bug 4737415 (+)
286 l_new_party_rec.partner_party_id := l_partner_party_id;
287 -- Bug 4737415 (-)
288 l_new_party_rec.name := l_orig_billto_cust_tbl(i).bill_to_party_name;
289 l_new_party_rec.address := l_orig_billto_cust_tbl(i).bill_to_address;
290 l_new_party_rec.city := l_orig_billto_cust_tbl(i).bill_to_city;
291 l_new_party_rec.state := l_orig_billto_cust_tbl(i).bill_to_state;
292 l_new_party_rec.postal_Code := l_orig_billto_cust_tbl(i).bill_to_postal_code;
293 l_new_party_rec.country := l_orig_billto_cust_tbl(i).bill_to_country;
294 l_new_party_rec.site_Use_Code := 'BILL_TO';
295
296 OZF_RESALE_COMMON_PVT.Create_Party(
297 p_api_version => 1.0
298 ,p_init_msg_list => FND_API.G_FALSE
299 ,p_commit => FND_API.G_FALSE
300 ,p_validation_level=> FND_API.G_VALID_LEVEL_FULL
301 ,px_party_rec => l_new_party_rec
302 ,x_return_status => l_return_status
303 ,x_msg_data => l_msg_data
304 ,x_msg_count => l_msg_count
305 );
306 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
307 RAISE FND_API.G_EXC_ERROR;
308 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
309 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
310 END IF;
311
312 UPDATE ozf_resale_lines_int_all
313 SET bill_to_party_id = l_new_party_rec.party_id
314 , bill_to_party_site_id = l_new_party_rec.party_site_id
315 WHERE resale_batch_id = p_resale_batch_id
316 AND bill_to_party_id IS NULL
317 AND bill_to_cust_account_id IS NULL
318 AND bill_to_party_name = l_orig_billto_cust_tbl(i).bill_to_party_name
319 AND bill_to_address = l_orig_billto_cust_tbl(i).bill_to_address
320 AND bill_to_city = l_orig_billto_cust_tbl(i).bill_to_city
321 AND bill_to_state = l_orig_billto_cust_tbl(i).bill_to_state
322 AND bill_to_postal_code = l_orig_billto_cust_tbl(i).bill_to_postal_code
323 AND bill_to_country = l_orig_billto_cust_tbl(i).bill_to_country;
324
325 END LOOP;
326 END IF;
327
328 -- check end_customer
329 OPEN csr_orig_end_cust(p_resale_batch_id);
330 FETCH csr_orig_end_cust BULK COLLECT INTO l_orig_end_cust_tbl;
331 CLOSE csr_orig_end_cust;
332
333 IF l_orig_end_cust_tbl.COUNT > 0 THEN
334 FOR i IN 1..l_orig_end_cust_tbl.COUNT LOOP
335 l_new_party_rec := NULL;
336 -- Bug 4737415 (+)
337 l_new_party_rec.partner_party_id := l_partner_party_id;
338 -- Bug 4737415 (-)
339 -- reset values:
340 l_new_party_rec.party_id := NULL;
341 l_new_party_rec.party_site_id := NULL;
342 l_new_party_rec.party_site_use_id := NULL;
343 l_new_party_rec.name := l_orig_end_cust_tbl(i).end_cust_party_name;
344 l_new_party_rec.address := l_orig_end_cust_tbl(i).end_cust_address;
345 l_new_party_rec.city := l_orig_end_cust_tbl(i).end_cust_city;
346 l_new_party_rec.state := l_orig_end_cust_tbl(i).end_cust_state;
347 l_new_party_rec.postal_code := l_orig_end_cust_tbl(i).end_cust_postal_code;
348 l_new_party_rec.country := l_orig_end_cust_tbl(i).end_cust_country;
349 l_new_party_rec.site_use_code := l_orig_end_cust_tbl(i).end_cust_site_use_code;
350
351 OZF_RESALE_COMMON_PVT.Create_Party
352 ( p_api_version => 1.0
353 ,p_init_msg_list => FND_API.G_FALSE
354 ,p_commit => FND_API.G_FALSE
355 ,p_validation_level=> FND_API.G_VALID_LEVEL_FULL
356 ,px_party_rec => l_new_party_rec
357 ,x_return_status => l_return_status
358 ,x_msg_data => l_msg_data
359 ,x_msg_count => l_msg_count
360 );
361 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
362 RAISE FND_API.G_EXC_ERROR;
363 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
364 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
365 END IF;
366
367 UPDATE ozf_resale_lines_int_all
368 SET end_cust_party_id = l_new_party_rec.party_id
369 , end_cust_party_site_id = l_new_party_rec.party_site_id
370 WHERE resale_batch_id = p_resale_batch_id
371 AND end_cust_party_id IS NULL
372 AND end_cust_party_name = l_orig_end_cust_tbl(i).end_cust_party_name
373 AND end_cust_address = l_orig_end_cust_tbl(i).end_cust_address
374 AND end_cust_city = l_orig_end_cust_tbl(i).end_cust_city
375 AND end_cust_state = l_orig_end_cust_tbl(i).end_cust_state
376 AND end_cust_postal_code = l_orig_end_cust_tbl(i).end_cust_postal_code
377 AND end_cust_country = l_orig_end_cust_tbl(i).end_cust_country
378 AND end_cust_site_use_code = l_orig_end_cust_tbl(i).end_cust_site_use_code;
379 END LOOP;
380 END IF;
381 END IF;
382
383 --i:=1;
384 IF l_order_num_tbl.EXISTS(1) THEN
385 l_order_num_tbl.DELETE;
386 END IF;
387 OPEN batch_order_num_csr(p_resale_batch_id);
388 FETCH batch_order_num_csr BULK COLLECT INTO l_order_num_tbl;
389 --LOOP
390 -- EXIT WHEN batch_order_num_csr%NOTFOUND;
391 -- FETCH batch_order_num_csr INTO l_order_num_tbl(i);
392 -- i:= i+1;
393 --END LOOP;
394 CLOSE batch_order_num_csr;
395
396 IF l_order_num_tbl.EXISTS(1) THEN -- IF B
397 FOR k in 1..l_order_num_tbl.LAST LOOP -- FOR C
398
399 IF OZF_DEBUG_LOW_ON THEN
400 ozf_utility_PVT.debug_message('PROCESS ORDER: ');
401 ozf_utility_PVT.debug_message('ORDER NUMBER: '||l_order_num_tbl(k).order_number);
402 ozf_utility_PVT.debug_message('SOLD_FROM_ACCT: '||l_order_num_tbl(k).sold_from_cust_account_id);
403 ozf_utility_PVT.debug_message('DATE ORDERED: '||l_order_num_tbl(k).date_ordered);
404 END IF;
405
406 -- beginjxwu header_fix
407 -- Here, I assume if a line is the duplicate of another line, then they share
408 -- the same order header. Hence all order with this duplicated line share the
409 -- the same order with the oringinal lines.
410 IF l_dup_header_id_tbl.EXISTS(1) THEN
411 l_dup_header_id_tbl.DELETE;
412 END IF;
413 OPEN dup_header_id_csr(p_resale_batch_id,
414 l_order_num_tbl(k).order_number,
415 l_order_num_tbl(k).sold_from_cust_account_id,
416 l_order_num_tbl(k).date_ordered
417 );
418 FETCH dup_header_id_csr BULK COLLECT INTO l_dup_header_id_tbl;
419 CLOSE dup_header_id_csr;
420
421 IF l_dup_header_id_tbl.EXISTS(1) THEN
422 IF l_dup_header_id_tbl.EXISTS(2) THEN
423
424 -- There is something wrong with this order. dispute all the orders
425 -- and move to the next one.
426 -- JXWU move update to common pvt
427 UPDATE ozf_resale_lines_int_all
428 SET status_code = OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_DISPUTED,
429 dispute_code = 'OZF_RESALE_MULTI_HEADER',
430 followup_action_code = 'C',
431 response_type = 'CA',
432 response_code = 'N'
433 WHERE resale_batch_id = p_resale_batch_id
434 AND order_number = l_order_num_tbl(k).order_number
435 AND sold_from_cust_account_id = l_order_num_tbl(k).sold_from_cust_account_id
436 AND date_ordered = l_order_num_tbl(k).date_ordered
437 AND status_code in (OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_DUPLICATED, OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_PROCESSED);
438 --AND duplicated_adjustment_id <> -1;
439
440
441 GOTO END_ORDER_HEADER;
442 ELSE
443 l_create_order_header := false;
444 l_header_id := l_dup_header_id_tbl(1);
445 END IF;
446 ELSE
447 l_create_order_header := true;
448 END IF;
449
450 --End jxuw header_fix
451
452
453 -- Here only duplicated and processed lines are considered. DISPUTED lines will not
454 -- be moved to resale order table.
455 --i:=1;
456 IF l_valid_line_id_tbl.EXISTS(1) THEN
457 l_valid_line_id_tbl.DELETE;
458 END IF;
459 OPEN valid_line_id_csr(p_resale_batch_id,
460 l_order_num_tbl(k).order_number,
461 l_order_num_tbl(k).sold_from_cust_account_id,
462 l_order_num_tbl(k).date_ordered);
463 FETCH valid_line_id_csr BULK COLLECT INTO l_valid_line_id_tbl;
464 --LOOP
465 -- EXIT WHEN valid_line_id_csr%NOTFOUND;
466 -- FETCH valid_line_id_csr INTO l_valid_line_id_tbl(i);
467 -- i := i+1;
468 --END LOOP;
469 CLOSE valid_line_id_csr;
470
471 -- Again, we need to check whether if any line IS a duplicate or NOT.
472 IF l_valid_line_id_tbl.EXISTS(1) THEN -- IF D
473 -- I then try to create resale data.
474 FOR j in 1..l_valid_line_id_tbl.last -- FOR E
475 LOOP
476 IF OZF_DEBUG_LOW_ON THEN
477 OZF_UTILITY_PVT.debug_message('Current line_int_id:' || l_valid_line_id_tbl(j).id);
478 END IF;
479 OPEN OZF_RESALE_COMMON_PVT.g_interface_rec_csr(l_valid_line_id_tbl(j).id);
480 FETCH OZF_RESALE_COMMON_PVT.g_interface_rec_csr INTO l_line_int_rec;
481 CLOSE OZF_RESALE_COMMON_PVT.g_interface_rec_csr;
482
483 -- Need to check against inventory
484 IF l_line_int_rec.status_code = OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_PROCESSED AND
485 l_inventory_tracking = 'T'
486 THEN
487 -- Check inventory level first
488 OZF_SALES_TRANSACTIONS_PVT.Validate_Inventory_level (
489 p_api_version => 1.0
490 ,p_init_msg_list => FND_API.G_FALSE
491 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
492 ,p_line_int_rec => l_line_int_rec
493 ,x_valid => l_inventory_level_valid
494 ,x_return_status => l_return_status
495 ,x_msg_count => l_msg_count
496 ,x_msg_data => l_msg_data
497 );
498 IF NOT l_inventory_level_valid THEN
499 IF OZF_DEBUG_LOW_ON THEN
500 OZF_UTILITY_PVT.debug_message('Did NOT pass inventory checking');
501 END IF;
502 -- Here turn thIS line to DISPUTED AND create a dISput code FOR it.
503 UPDATE ozf_resale_lines_int
504 SET status_code = OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_DISPUTED,
505 dispute_code = 'OZF_LT_INVT',
506 followup_action_code = 'C',
507 response_type = 'CA',
508 response_code = 'N'
509 WHERE resale_line_int_id = l_line_int_rec.resale_line_int_id;
510
511 -- SET Batch as DISPUTED
512 UPDATE ozf_resale_batches
513 SET status_code = OZF_RESALE_COMMON_PVT.G_BATCH_DISPUTED
514 WHERE resale_batch_id = l_line_int_rec.resale_batch_id;
515
516 GOTO END_ORDER_LINE;
517 END IF;
518 -- Check WAC
519 END IF;
520
521 -- First, check whether there is need to create a header for this order
522 -- SLKRISHN Add logic to derive or insert header
523 -- see jxwu header_fix.
524 IF j = 1 THEN
525 -- Determin header id
526 IF l_create_order_header THEN
527 OZF_RESALE_COMMON_PVT.Insert_Resale_Header(
528 p_api_version => 1
529 ,p_init_msg_list => FND_API.G_FALSE
530 ,p_commit => FND_API.G_FALSE
531 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
532 ,p_line_int_rec => l_line_int_rec
533 ,x_header_id => l_header_id
534 ,x_return_status => l_return_status
535 ,x_msg_data => l_msg_data
536 ,x_msg_count => l_msg_count
537 );
538 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
539 RAISE FND_API.G_EXC_ERROR;
540 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
541 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
542 END IF;
543 --
544 ELSE
545 NULL;
546 -- We should have the l_header_id FROM at the order level
547 END IF;
548 END IF;
549
550 IF OZF_DEBUG_LOW_ON THEN
551 OZF_UTILITY_PVT.debug_message('header_id is '|| l_header_id);
552 END IF;
553
554 IF l_line_int_rec.status_code = OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_PROCESSED THEN
555 IF l_line_int_rec.duplicated_line_id IS NULL THEN
556
557 -- We need to create party id for bill_to and end customer if
558 -- users wants us to do it.
559
560 -- No problem so far. Insert INTO batch_lines TABLE
561 OZF_RESALE_COMMON_PVT.Insert_Resale_Line(
562 p_api_version => 1
563 ,p_init_msg_list => FND_API.G_FALSE
564 ,p_commit => FND_API.G_FALSE
565 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
566 ,p_line_int_rec => l_line_int_rec
567 ,p_header_id => l_header_id
568 ,x_line_id => l_line_id
569 ,x_return_status => l_return_status
570 ,x_msg_data => l_msg_data
571 ,x_msg_count => l_msg_count
572 );
573 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
574 RAISE FND_API.G_EXC_ERROR;
575 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
576 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
577 END IF;
578 --
579
580 -- FOR processed order line, I need to create a transaction FOR it.
581 OZF_RESALE_COMMON_PVT.Create_Sales_Transaction (
582 p_api_version => 1.0
583 ,p_init_msg_list => FND_API.G_FALSE
584 ,p_commit => FND_API.G_FALSE
585 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
586 ,p_line_int_rec => l_line_int_rec
587 ,p_header_id => l_header_id
588 ,p_line_id => l_line_id
589 ,x_sales_transaction_id => l_sales_transaction_id
590 ,x_return_status => l_return_status
591 ,x_msg_data => l_msg_data
592 ,x_msg_count => l_msg_count
593 );
594 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
595 RAISE FND_API.G_EXC_ERROR;
596 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
597 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
598 END IF;
599 --
600
601 IF l_inventory_tracking = 'T' THEN
602 OZF_SALES_TRANSACTIONS_PVT.Update_Inventory_Tmp (
603 p_api_version => 1.0
604 ,p_init_msg_list => FND_API.G_FALSE
605 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
606 ,p_sales_transaction_id => l_sales_transaction_id
607 ,x_return_status => l_return_status
608 ,x_msg_data => l_msg_data
609 ,x_msg_count => l_msg_count
610 );
611 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
612 RAISE FND_API.G_EXC_ERROR;
613 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
614 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
615 END IF;
616 --
617 END IF;
618 ELSE
619 l_line_id := l_line_int_rec.duplicated_line_id;
620 END IF;
621 ELSIF l_line_int_rec.status_code = OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_DUPLICATED THEN
622 l_line_id := l_line_int_rec.duplicated_line_id;
623 END IF;
624
625 IF OZF_DEBUG_LOW_ON THEN
626 OZF_UTILITY_PVT.debug_message('line_id is '|| l_line_id);
627 END IF;
628
629 IF l_line_int_rec.status_code = OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_PROCESSED OR
630 l_line_int_rec.status_code = OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_DUPLICATED
631 THEN
632 -- only create mapping FOR the lines that are processed or
633 -- duplicated, yet the adjustment IS new then
634 OZF_RESALE_COMMON_PVT.Insert_Resale_Line_Mapping(
635 p_api_version => 1
636 ,p_init_msg_list => FND_API.G_FALSE
637 ,p_commit => FND_API.G_FALSE
638 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
639 ,p_resale_batch_id => p_resale_batch_id
640 ,p_line_id => l_line_id
641 ,x_return_status => l_return_status
642 ,x_msg_data => l_msg_data
643 ,x_msg_count => l_msg_count
644 );
645 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
646 RAISE FND_API.G_EXC_ERROR;
647 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
648 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
649 END IF;
650 END IF;
651
652 << END_ORDER_LINE >>
653 NULL;
654 END LOOP; -- END LOOP FOR this order -- FOR E
655 END IF; -- if valid line id EXISTS -- IF D
656 << END_ORDER_HEADER>>
657 NULL;
658 END LOOP; -- END LOOP FOR the batch FOR C
659 END IF; -- END order_num EXISTS IF B
660
661
662 -- END IF; -- END if not rejected
663 END IF; -- END l_count = 0
664
665
666 -- UPDATE batch line status to CLOSEd for each OPEN and duplicated lines.
667
668 BEGIN
669 UPDATE ozf_resale_lines_int
670 SET status_code = OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_CLOSED
671 WHERE resale_batch_id = p_resale_batch_id
672 AND status_code in(OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_DUPLICATED, OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_PROCESSED);
673 --AND duplicated_adjustment_id <> -1;
674
675 -- UPDATE batch status to CLOSEd -- might change later.
676 UPDATE ozf_resale_batches
677 SET status_code = OZF_RESALE_COMMON_PVT.G_BATCH_CLOSED
678 WHERE resale_batch_id = p_resale_batch_id;
679 EXCEPTION
680 WHEN OTHERS THEN
681 ozf_utility_pvt.error_message('OZF_UPD_RESALE_WRG','TEXT',l_full_name||': END');
682 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
683 END;
684
685 ELSE
686 -- Only disputed and processed batch can be paid.
687 ozf_utility_pvt.error_message('OZF_RESALE_WRONG_STAUS_TO_PAY');
688 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
689 END IF;
690
691 -- Debug Message
692 IF OZF_DEBUG_HIGH_ON THEN
693 OZF_UTILITY_PVT.debug_message(p_message_text => l_full_name||': End');
694 END IF;
695 --Standard call to get message count and if count=1, get the message
696 FND_MSG_PUB.Count_And_Get (
697 p_encoded => FND_API.G_FALSE,
698 p_count => x_msg_count,
699 p_data => x_msg_data
700 );
701 x_return_status := l_return_status;
702 EXCEPTION
703 WHEN FND_API.G_EXC_ERROR THEN
704 x_return_status := FND_API.G_RET_STS_ERROR;
705 -- Standard call to get message count and if count=1, get the message
706 FND_MSG_PUB.Count_And_Get (
707 p_encoded => FND_API.G_FALSE,
708 p_count => x_msg_count,
709 p_data => x_msg_data
710 );
711 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
712 ROLLBACK TO TRAC_INITIATE_PAYMENT;
713 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
714
715 -- Standard call to get message count and if count=1, get the message
716 FND_MSG_PUB.Count_And_Get (
717 p_encoded => FND_API.G_FALSE,
718 p_count => x_msg_count,
719 p_data => x_msg_data
720 );
721 WHEN OTHERS THEN
722 ROLLBACK TO TRAC_INITIATE_PAYMENT;
723 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
724
725 -- Standard call to get message count and if count=1, get the message
726 FND_MSG_PUB.Count_And_Get (
727 p_encoded => FND_API.G_FALSE,
728 p_count => x_msg_count,
729 p_data => x_msg_data
730 );
731 END Initiate_payment;
732
733 ---------------------------------------------------------------------
734 -- PROCEDURE
735 -- Validate_Order_Record
736 --
737 -- PURPOSE
738 -- This procedure validates the order information
739 -- These are validation specific to chargeback process
740 --
741 -- PARAMETERS
742 --
743 --
744 -- NOTES
745 ---------------------------------------------------------------------
746 PROCEDURE Validate_Order_Record(
747 p_api_version IN NUMBER
748 ,p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
749 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
750 ,p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
751 ,p_resale_batch_id IN NUMBER
752 ,x_return_status OUT NOCOPY VARCHAR2
753 ,x_msg_data OUT NOCOPY VARCHAR2
754 ,x_msg_count OUT NOCOPY NUMBER
755 )IS
756 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Order_Record';
757 l_api_version CONSTANT NUMBER := 1.0;
758 l_full_name CONSTANT VARCHAR2(60) := G_PKG_NAME ||'.'|| l_api_name;
759 --
760 l_return_status VARCHAR2(30);
761 l_msg_data VARCHAR2(2000);
762 l_msg_count NUMBER;
763
764 CURSOR non_tracing_count_csr(p_id IN NUMBER) IS
765 SELECT COUNT(1)
766 FROM ozf_resale_lines_int
767 WHERE resale_batch_id = p_id
768 AND tracing_flag = 'F';
769
770 l_non_tracing_count NUMBER;
771
772 BEGIN
773 -- Standard begin of API savepoint
774 -- Standard call to check for call compatibility.
775 IF NOT FND_API.Compatible_API_Call (
776 l_api_version,
777 p_api_version,
778 l_api_name,
779 G_PKG_NAME)
780 THEN
781 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
782 END IF;
783
784 -- Debug Message
785 IF OZF_DEBUG_HIGH_ON THEN
786 OZF_UTILITY_PVT.debug_message(p_message_text => l_full_name||': Start');
787 END IF;
788
789 --Initialize message list if p_init_msg_list is TRUE.
790 IF FND_API.To_Boolean (p_init_msg_list) THEN
791 FND_MSG_PUB.initialize;
792 END IF;
793
794 -- Initialize API return status to sucess
795 x_return_status := FND_API.G_RET_STS_SUCCESS;
796
797 OPEN non_tracing_count_csr (p_resale_batch_id);
798 FETCH non_tracing_count_csr INTO l_non_tracing_count;
799 CLOSE non_tracing_count_csr;
800
801 IF l_non_tracing_count > 0 THEN
802 BEGIN
803 INSERT INTO ozf_resale_logs_all(
804 RESALE_LOG_ID,
805 RESALE_ID,
806 RESALE_ID_TYPE,
807 ERROR_CODE,
808 ERROR_MESSAGE,
809 COLUMN_NAME,
810 COLUMN_VALUE,
811 ORG_ID
812 ) SELECT
813 ozf_resale_logs_all_s.nextval,
814 resale_line_int_id,
815 'IFACE',
816 'OZF_RESALE_NON_TRC',
817 FND_MESSAGE.get_string('OZF','OZF_RESALE_NON_TRC'),
818 'TRACING_FLAG',
819 tracing_flag,
820 org_id
821 FROM ozf_resale_lines_int_all b
822 WHERE b.status_code = 'OPEN'
823 AND b.tracing_flag = 'F'
824 AND b.resale_batch_id = p_resale_batch_id
825 AND NOT EXISTS(SELECT 1
826 FROM ozf_resale_logs_all a
827 WHERE a.resale_id = b.resale_line_int_id
828 AND a.RESALE_ID_TYPE = 'IFACE'
829 AND a.error_code ='OZF_RESALE_NON_TRC'
830 );
831 EXCEPTION
832 WHEN OTHERS THEN
833 OZF_UTILITY_PVT.error_message(
834 p_message_name => 'OZF_INS_RESALE_LOG_WRG',
835 p_token_name => 'TEXT',
836 p_token_value => l_full_name||': END');
837 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
838 END;
839
840 UPDATE ozf_resale_lines_int_all
841 SET status_code = 'DISPUTED',
842 dispute_code = 'OZF_RESALE_NON_TRC',
843 followup_action_code = 'C',
844 response_type = 'CA',
845 response_code = 'N'
846 WHERE resale_batch_id = p_resale_batch_id
847 AND tracing_flag = 'F';
848 END IF;
849
850 -- Debug Message
851 IF OZF_DEBUG_HIGH_ON THEN
852 OZF_UTILITY_PVT.debug_message(p_message_text => l_full_name||': End');
853 END IF;
854 --Standard call to get message count and if count=1, get the message
855 FND_MSG_PUB.Count_And_Get (
856 p_encoded => FND_API.G_FALSE,
857 p_count => x_msg_count,
858 p_data => x_msg_data
859 );
860 EXCEPTION
861 WHEN FND_API.G_EXC_ERROR THEN
862 x_return_status := FND_API.G_RET_STS_ERROR;
863 -- Standard call to get message count and if count=1, get the message
864 FND_MSG_PUB.Count_And_Get (
865 p_encoded => FND_API.G_FALSE,
866 p_count => x_msg_count,
867 p_data => x_msg_data
868 );
869 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
870 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
871 -- Standard call to get message count and if count=1, get the message
872 FND_MSG_PUB.Count_And_Get (
873 p_encoded => FND_API.G_FALSE,
874 p_count => x_msg_count,
875 p_data => x_msg_data
876 );
877 WHEN OTHERS THEN
878 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
879
880 -- Standard call to get message count and if count=1, get the message
881 FND_MSG_PUB.Count_And_Get (
882 p_encoded => FND_API.G_FALSE,
883 p_count => x_msg_count,
884 p_data => x_msg_data
885 );
886 END Validate_Order_Record;
887
888
889 ---------------------------------------------------------------------
890 -- PROCEDURE
891 -- Process_Order
892 --
893 -- PURPOSE
894 -- Process order information for tracing data. No simulation is needed.
895 --
896 -- PARAMETERS
897 --
898 -- NOTES
899 --
900 ---------------------------------------------------------------------
901 PROCEDURE Process_Order
902 (
903 p_api_version IN NUMBER
904 ,p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
905 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
906 ,p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
907 ,p_resale_batch_id IN NUMBER
908 ,x_return_status OUT NOCOPY VARCHAR2
909 ,x_msg_data OUT NOCOPY VARCHAR2
910 ,x_msg_count OUT NOCOPY NUMBER
911 )IS
912 l_api_name CONSTANT VARCHAR2(30) := 'Process_Order';
913 l_api_version CONSTANT NUMBER := 1.0;
914 l_full_name CONSTANT VARCHAR2(60) := G_PKG_NAME ||'.'|| l_api_name;
915 --
916 l_return_status VARCHAR2(30);
917 l_msg_data VARCHAR2(2000);
918 l_msg_count NUMBER;
919
920 CURSOR order_num_csr IS
921 SELECT DISTINCT order_number,
922 sold_from_cust_account_id,
923 date_ordered
924 FROM ozf_resale_lines_int
925 WHERE status_code = 'OPEN'
926 -- status_code in(OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_OPEN, OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_DUPLICATED)
927 AND duplicated_adjustment_id IS NULL
928 AND resale_batch_id = p_resale_batch_id
929 ORDER BY date_ordered;
930
931 l_cust_account_id_tbl OZF_RESALE_COMMON_PVT.number_tbl_type;
932 l_order_num_tbl OZF_RESALE_COMMON_PVT.varchar_tbl_type;
933 l_order_date_tbl OZF_RESALE_COMMON_PVT.date_tbl_type;
934
935 CURSOR order_set_csr(p_order_NUMBER in VARCHAR2,
936 p_cust_account_id in NUMBER,
937 p_date in date) IS
938 SELECT *
939 FROM ozf_resale_lines_int
940 WHERE order_NUMBER = p_order_NUMBER
941 AND date_ordered = p_date
942 AND sold_from_cust_account_id = p_cust_account_id
943 AND status_code = 'OPEN'
944 --AND status_code in(OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_OPEN, OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_DUPLICATED)
945 AND duplicated_adjustment_id is NULL
946 AND resale_batch_id = p_resale_batch_id;
947
948 TYPE resale_lines_tbl_type IS TABLE OF order_set_csr%rowtype INDEX BY binary_integer;
949 l_order_set_tbl resale_lines_tbl_type;
950
951
952 k NUMBER;
953
954 l_log_id NUMBER;
955
956 l_lines_disputed NUMBER;
957
958 CURSOR invalid_line_count_csr (p_id NUMBER) IS
959 SELECT COUNT(1)
960 FROM ozf_resale_lines_int
961 WHERE status_code = OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_DISPUTED
962 AND dispute_code = OZF_RESALE_COMMON_PVT.G_INVALD_DISPUTE_CODE
963 AND resale_batch_id = p_id;
964 l_lines_invalid NUMBER;
965
966 l_status_code VARCHAR2(30);
967 l_inventory_level_valid boolean;
968 l_inventory_tracking VARCHAR2(3);
969
970 l_sales_transaction_id NUMBER;
971
972 CURSOR Batch_info_csr (p_id in NUMBER) IS
973 SELECT partner_party_id,
974 report_start_date,
975 report_end_date
976 FROM ozf_resale_batches
977 WHERE resale_batch_id = p_id;
978 l_partner_party_id NUMBER;
979 l_report_start_date date;
980 l_report_end_date date;
981
982 BEGIN
983 -- Standard begin of API savepoint
984 SAVEPOINT PROCESS_TRAC_ORDER;
985 -- Standard call to check for call compatibility.
986 IF NOT FND_API.Compatible_API_Call (
987 l_api_version,
988 p_api_version,
989 l_api_name,
990 G_PKG_NAME)
991 THEN
992 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
993 END IF;
994
995 -- Debug Message
996 IF OZF_DEBUG_HIGH_ON THEN
997 OZF_UTILITY_PVT.debug_message(p_message_text => l_full_name||': Start');
998 END IF;
999
1000 --Initialize message list if p_init_msg_list is TRUE.
1001 IF FND_API.To_Boolean (p_init_msg_list) THEN
1002 FND_MSG_PUB.initialize;
1003 END IF;
1004
1005 -- Initialize API return status to sucess
1006 x_return_status := FND_API.G_RET_STS_SUCCESS;
1007
1008
1009 /*
1010 OZF_RESALE_COMMON_PVT.Delete_Log(
1011 p_api_version => 1.0
1012 ,p_init_msg_list => FND_API.G_FALSE
1013 ,p_commit => FND_API.G_FALSE
1014 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
1015 ,p_resale_batch_id => p_resale_batch_id
1016 ,x_return_status => l_return_status
1017 ,x_msg_count => l_msg_count
1018 ,x_msg_data => l_msg_data
1019 );
1020 IF l_return_status = FND_API.g_ret_sts_error THEN
1021 RAISE FND_API.g_exc_error;
1022 ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1023 RAISE FND_API.g_exc_unexpected_error;
1024 END IF;
1025 */
1026
1027 -- fetch all orders into a cursor.
1028 IF l_order_num_tbl.EXISTS(1) THEN
1029 l_order_num_tbl.DELETE;
1030 l_cust_account_id_tbl.DELETE;
1031 l_order_date_tbl.DELETE;
1032 END IF;
1033 OPEN order_num_csr;
1034 FETCH order_num_csr BULK COLLECT INTO l_order_num_tbl,l_cust_account_id_tbl, l_order_date_tbl;
1035 CLOSE order_num_csr;
1036
1037 IF l_order_num_tbl.EXISTS(1) THEN
1038
1039 OPEN OZF_RESALE_COMMON_PVT.g_inventory_tracking_csr;
1040 FETCH OZF_RESALE_COMMON_PVT.g_inventory_tracking_csr INTO l_inventory_tracking;
1041 CLOSE OZF_RESALE_COMMON_PVT.g_inventory_tracking_csr;
1042
1043 IF l_inventory_tracking = 'T' THEN
1044 OPEN Batch_info_csr(p_resale_batch_id);
1045 FETCH batch_info_csr INTO l_partner_party_id,
1046 l_report_start_date,
1047 l_report_end_date;
1048 CLOSE batch_info_csr;
1049 -- Bug 4380203 Fixing (+)
1050 OZF_SALES_TRANSACTIONS_PVT.Initiate_Inventory_tmp (
1051 p_api_version => 1.0
1052 ,p_init_msg_list => FND_API.G_FALSE
1053 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
1054 ,p_resale_batch_id => p_resale_batch_id
1055 ,p_start_date => l_report_start_date
1056 ,p_end_date => l_report_end_date
1057 ,x_return_status => l_return_status
1058 ,x_msg_count => l_msg_count
1059 ,x_msg_data => l_msg_data
1060 );
1061 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1062 OZF_UTILITY_PVT.error_message('OZF_RESALE_INIT_INV_TMP_ERR');
1063 RAISE FND_API.G_EXC_ERROR;
1064 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1065 OZF_UTILITY_PVT.error_message('OZF_RESALE_INIT_INV_TMP_ERR');
1066 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1067 END IF;
1068
1069 /*
1070 OZF_SALES_TRANSACTIONS_PVT.Initiate_Inventory_tmp (
1071 p_api_version => 1.0
1072 ,p_init_msg_list => FND_API.G_FALSE
1073 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
1074 ,p_party_id => l_partner_party_id
1075 ,p_start_date => l_report_start_date
1076 ,x_return_status => l_return_status
1077 ,x_msg_count => l_msg_count
1078 ,x_msg_data => l_msg_data
1079 );
1080 */
1081 -- Bug 4380203 Fixing (-)
1082 END IF;
1083
1084 For i in 1..l_order_num_tbl.LAST
1085 LOOP
1086
1087 IF l_order_num_tbl(i) is not NULL AND
1088 l_cust_account_id_tbl(i) is not NULL AND
1089 l_order_date_tbl(i) is not NULL THEN
1090
1091 IF OZF_DEBUG_LOW_ON THEN
1092 ozf_utility_PVT.debug_message('/*--- Processing order for order NUMBER:'||l_order_num_tbl(i)||'---*/');
1093 END IF;
1094 -- Before start process, clean up the data structures if necessary.
1095
1096 --k:=1;
1097 IF l_order_set_tbl.EXISTS(1) THEN
1098 l_order_set_tbl.DELETE;
1099 END IF;
1100 OPEN order_set_csr(l_order_num_tbl(i),
1101 l_cust_account_id_tbl(i),
1102 l_order_date_tbl(i));
1103 FETCH order_set_csr BULK COLLECT INTO l_order_set_tbl;
1104 --LOOP
1105 -- FETCH order_set_csr INTO l_order_set_tbl(k);
1106 -- EXIT WHEN order_set_csr%notfound;
1107 -- k:=k+1;
1108 --END LOOP;
1109 CLOSE order_set_csr;
1110
1111 IF OZF_DEBUG_LOW_ON THEN
1112 ozf_utility_PVT.debug_message('after order set'||l_order_set_tbl.LAST);
1113 END IF;
1114
1115 For J in 1..l_order_set_tbl.LAST LOOP
1116 -- Purge the any error message that might be there.
1117 BEGIN
1118 DELETE FROM ozf_resale_logs
1119 WHERE resale_id = l_order_set_tbl(J).resale_line_int_id
1120 AND resale_id_type = OZF_RESALE_COMMON_PVT.G_ID_TYPE_IFACE;
1121 EXCEPTION
1122 WHEN OTHERS THEN
1123 ozf_utility_pvt.error_message('OZF_DEL_RESALE_LOG_WRG');
1124 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1125 END;
1126
1127 IF l_inventory_tracking = 'T' THEN
1128
1129 -- Only need to Check inventory level
1130 OZF_SALES_TRANSACTIONS_PVT.Validate_Inventory_level (
1131 p_api_version => 1.0
1132 ,p_init_msg_list => FND_API.G_FALSE
1133 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
1134 ,p_line_int_rec => l_order_set_tbl(J)
1135 ,x_valid => l_inventory_level_valid
1136 ,x_return_status => l_return_status
1137 ,x_msg_count => l_msg_count
1138 ,x_msg_data => l_msg_data
1139 );
1140
1141 IF NOT l_inventory_level_valid THEN
1142
1143 IF OZF_DEBUG_LOW_ON THEN
1144 ozf_utility_PVT.debug_message('Did not pass inventory checking');
1145 END IF;
1146 -- Here turn this line to disputed and create a disput code for it.
1147 UPDATE ozf_resale_lines_int
1148 SET status_code = OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_DISPUTED,
1149 dispute_code = 'OZF_LT_INVT',
1150 followup_action_code = 'C',
1151 response_type = 'CA',
1152 response_code = 'N'
1153 WHERE resale_line_int_id = l_order_set_tbl(J).resale_line_int_id;
1154
1155 -- SET Batch as DISPUTED
1156 UPDATE ozf_resale_batches
1157 SET status_code = OZF_RESALE_COMMON_PVT.G_BATCH_DISPUTED
1158 WHERE resale_batch_id = p_resale_batch_id;
1159
1160 GOTO END_ORDER_LINE;
1161 ELSE
1162 -- This is a valid tracing line
1163 UPDATE ozf_resale_lines_int
1164 SET status_code = OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_PROCESSED
1165 WHERE resale_line_int_id = l_order_set_tbl(J).resale_line_int_id;
1166 END IF;
1167 ELSE
1168 -- Set line status to Processed if not tracking inventory
1169 UPDATE ozf_resale_lines_int
1170 SET status_code = OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_PROCESSED
1171 WHERE resale_line_int_Id = l_order_set_tbl(j).resale_line_int_id;
1172 END IF;
1173 << END_ORDER_LINE >>
1174 NULL;
1175 END LOOP; -- END LOOP for l_order_set_tbl
1176 IF OZF_DEBUG_LOW_ON THEN
1177 ozf_utility_PVT.debug_message('/*--- Success: Processing order for order NUMBER:'||l_order_num_tbl(i)||'---*/');
1178 END IF;
1179 END IF; -- END if for order_NUMBER, date_ordered not NULL
1180 << END_LOOP >>
1181 NULL;
1182 END LOOP; -- END LOOP for l_order_num_tbl
1183 ELSE
1184 IF OZF_DEBUG_LOW_ON THEN
1185 ozf_utility_PVT.debug_message('/*--- No order to process ---*/');
1186 END IF;
1187 END IF;
1188
1189 -- get data regard this process
1190 OPEN OZF_RESALE_COMMON_PVT.g_disputed_line_count_csr (p_resale_batch_id);
1191 FETCH OZF_RESALE_COMMON_PVT.g_disputed_line_count_csr INTO l_lines_disputed;
1192 CLOSE OZF_RESALE_COMMON_PVT.g_disputed_line_count_csr;
1193
1194 OPEN invalid_line_count_csr(p_resale_batch_id);
1195 FETCH invalid_line_count_csr INTO l_lines_invalid;
1196 CLOSE invalid_line_count_csr;
1197
1198 IF l_lines_disputed = 0 THEN
1199 l_status_code := OZF_RESALE_COMMON_PVT.G_BATCH_PROCESSED;
1200 ELSE
1201 -- batch is in dispute
1202 l_status_code := OZF_RESALE_COMMON_PVT.G_BATCH_DISPUTED;
1203 END IF;
1204
1205 -- Lastly, I will UPDATE the batch
1206 BEGIN
1207 UPDATE ozf_resale_batches
1208 SET status_code = l_status_code,
1209 lines_disputed = l_lines_disputed,
1210 lines_invalid = l_lines_invalid
1211 WHERE resale_batch_id = p_resale_batch_id;
1212 EXCEPTION
1213 WHEN OTHERS THEN
1214 ozf_utility_pvt.error_message('OZF_UPD_RESALE_BATCH_WRG');
1215 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1216 END;
1217
1218
1219 -- Debug Message
1220 IF OZF_DEBUG_HIGH_ON THEN
1221 OZF_UTILITY_PVT.debug_message(p_message_text => l_full_name||': End');
1222 END IF;
1223 --Standard call to get message count and if count=1, get the message
1224 FND_MSG_PUB.Count_And_Get (
1225 p_encoded => FND_API.G_FALSE,
1226 p_count => x_msg_count,
1227 p_data => x_msg_data
1228 );
1229
1230 EXCEPTION
1231 WHEN FND_API.G_EXC_ERROR THEN
1232 ROLLBACK TO PROCESS_TRAC_ORDER;
1233 x_return_status := FND_API.G_RET_STS_ERROR;
1234 -- Standard call to get message count and if count=1, get the message
1235 FND_MSG_PUB.Count_And_Get (
1236 p_encoded => FND_API.G_FALSE,
1237 p_count => x_msg_count,
1238 p_data => x_msg_data
1239 );
1240 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1241 ROLLBACK TO PROCESS_TRAC_ORDER;
1242 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1243
1244 -- Standard call to get message count and if count=1, get the message
1245 FND_MSG_PUB.Count_And_Get (
1246 p_encoded => FND_API.G_FALSE,
1247 p_count => x_msg_count,
1248 p_data => x_msg_data
1249 );
1250 WHEN OTHERS THEN
1251 ROLLBACK TO PROCESS_TRAC_ORDER;
1252 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1253
1254 -- Standard call to get message count and if count=1, get the message
1255 FND_MSG_PUB.Count_And_Get (
1256 p_encoded => FND_API.G_FALSE,
1257 p_count => x_msg_count,
1258 p_data => x_msg_data
1259 );
1260 END Process_Order;
1261
1262 END OZF_TRACING_ORDER_PVT;