[Home] [Help]
PACKAGE BODY: APPS.DPP_TRANSACTION_PVT
Source
1 PACKAGE BODY DPP_TRANSACTION_PVT AS
2 /* $Header: dppvtxnb.pls 120.103.12020000.2 2012/07/16 09:12:29 rvkondur ship $ */
3 -- Package name : DPP_TRANSACTION_PVT
4 -- Purpose : For Validation and Creation of Price Protection Transaction
5 -- History :
6 --27-Aug-07 sanagar Creation
7 --29-Jan-08 sanagar Bug 6773981
8 --06-Feb-08 sanagar Negative Change Value Handled
9 -- suppliername,Supplier site and Ref Doc Number identifies transaction
10 -- Update_claimsApproval claim id included in query.
11 --08-Feb-08 sanagar Included event and subscription test(wf_event.test)
12 -- Rounded change value to 2 decimal
13 --08-Feb-08 sanagar BUG 6806974
14 --24-Feb-08 sanagar BUG 6816594
15 --03-Mar-08 sanagar BUG 6856618
16 --22-Apr-08 sanagar BUG 6988008, 6988312
17 --12-May-08 sanagar Changed ozf_sys_parameters_all to hr_operating_units
18 --14-May-08 sanagar Boundary Conditions for Change Value based on change type
19 --04-Jul-08 sanagar Change value & change type checks only for inbound
20 --08-Oct-08 rvkondur Added code for DPP Price Increase Enhancement
21 --19-May-09 anbbalas prior_price column in the interface table is not being used
22 -- while importing the price protection transaction.
23 --22-May-09 rvkondur Fix for Bug# 7630178
24 --25-May-09 anbbalas Adjustment flow and Parallel Approval - 12.1.2 Project
25 --01-Jun-09 anbbalas Bug no.8563518 - Validation for negative Prior Price and
26 -- negative Change Value when the change type is Amount Decrease
27
28 -- NOTE :
29 dpp_debug_high_on constant boolean := fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_debug_high);
30 dpp_debug_low_on constant boolean := fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_debug_low);
31 dpp_debug_medium_on constant boolean := fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_debug_medium);
32
33 g_pkg_name constant VARCHAR2(30) := 'DPP_TRANSACTION_PVT';
34 g_debug boolean := fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_debug_high);
35 g_file_name constant VARCHAR2(14) := 'dppvtxnb.pls';
36
37 PROCEDURE Update_InterfaceErrSts(
38 p_txn_header_rec_type IN OUT nocopy txn_header_rec,
39 x_return_status OUT nocopy VARCHAR2
40 )
41 AS
42
43 l_api_name constant VARCHAR2(30) := 'Update_InterfaceErrSts';
44 l_user_id NUMBER :=FND_PROFILE.VALUE('USER_ID');
45 BEGIN
46 -- Initialize API return status to sucess
47 x_return_status := fnd_api.g_ret_sts_success;
48 IF DPP_DEBUG_HIGH_ON THEN
49 FND_FILE.PUT_LINE(FND_FILE.LOG,' Begin Update InterfaceErrSts');
50 END IF;
51
52 --Update Interface Header table with error status
53 UPDATE DPP_TXN_HEADERS_INT_ALL dtha
54 SET
55 dtha.last_update_date = SYSDATE,
56 dtha.last_updated_by = nvl(l_user_id,0),
57 dtha.last_update_login = nvl(l_user_id,0),
58 dtha.interface_status = 'E',
59 dtha.error_code = decode(dtha.error_code,NULL,nvl(p_txn_header_rec_type.error_code,'SQL_PLSQL_ERROR'),'MULTIPLE_ERRORS')
60 WHERE transaction_int_header_id = p_txn_header_rec_type.transaction_int_header_id;
61 COMMIT;
62
63 IF DPP_DEBUG_HIGH_ON THEN
64 FND_FILE.PUT_LINE(FND_FILE.LOG,' End Update InterfaceErrSts');
65 END IF;
66 EXCEPTION
67 WHEN Fnd_Api.G_EXC_ERROR THEN
68 x_return_status := Fnd_Api.g_ret_sts_error ;
69 WHEN Fnd_Api.G_EXC_UNEXPECTED_ERROR THEN
70 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
71 WHEN OTHERS THEN
72 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
73 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
74 fnd_message.set_name('FND', 'SQL_PLSQL_ERROR');
75 fnd_message.set_token('ROUTINE', 'DPP_TRANSACTION_PVT');
76 fnd_message.set_token('ERRNO', SQLCODE);
77 fnd_message.set_token('REASON', sqlerrm);
78 END IF;
79 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||sqlerrm);
80 END Update_InterfaceErrSts;
81
82 PROCEDURE Validate_OperatingUnit(
83 p_txn_header_rec_type IN OUT nocopy txn_header_rec
84 ,x_msg_count OUT nocopy NUMBER
85 ,x_msg_data OUT nocopy VARCHAR2
86 ,x_return_status OUT nocopy VARCHAR2)
87 AS
88 l_api_name constant VARCHAR2(30) := 'Validate_OperatingUnit';
89 l_full_name constant VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
90 l_value NUMBER;
91
92
93 BEGIN
94 IF DPP_DEBUG_HIGH_ON THEN
95 FND_FILE.PUT_LINE(FND_FILE.LOG,' Begin Validate Operating Unit');
96 END IF;
97 -- Initialize API return status to sucess
98 x_return_status := fnd_api.g_ret_sts_success;
99 --BUG 6806974
100 IF p_txn_header_rec_type.operating_unit_name IS NULL
101 AND p_txn_header_rec_type.org_id IS NULL THEN
102 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
103 fnd_message.set_name( 'DPP', 'DPP_TXN_OPERATING_UNIT_NULL');
104 x_msg_data := fnd_message.get();
105 END IF;
106 x_return_status := fnd_api.g_ret_sts_error;
107 p_txn_header_rec_type.error_code := 'DPP_TXN_OPERATING_UNIT_NULL';
108 RAISE Fnd_Api.G_EXC_ERROR;
109 END IF;
110
111 SELECT fnd_profile.value('XLA_MO_SECURITY_PROFILE_LEVEL') into l_value from dual;
112
113 mo_global.set_org_access( null,l_value,'M');
114
115
116 SELECT hr.organization_id
117 ,hr.name
118 INTO p_txn_header_rec_type.org_id
119 ,p_txn_header_rec_type.operating_unit_name
120 FROM hr_operating_units hr
121 WHERE hr.name = nvl(p_txn_header_rec_type.operating_unit_name,hr.name) AND
122 hr.organization_id =nvl(to_number(p_txn_header_rec_type.org_id),hr.organization_id)
123 AND mo_global.check_access(hr.organization_id) = 'Y' ;
124 --MOAC
125 MO_GLOBAL.set_policy_context('S', p_txn_header_rec_type.org_id);
126 IF DPP_DEBUG_HIGH_ON THEN
127 FND_FILE.PUT_LINE(FND_FILE.LOG,' End Validate Operating Unit');
128 END IF;
129
130 EXCEPTION
131 WHEN NO_DATA_FOUND THEN
132 x_return_status := fnd_api.g_ret_sts_error;
133 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
134 fnd_message.set_name( 'DPP', 'DPP_TXN_OPERATING_UNIT_ERR');
135 fnd_message.set_token('OPERATING_UNIT', p_txn_header_rec_type.operating_unit_name);
136 fnd_message.set_token('ORG_ID', p_txn_header_rec_type.org_id);
137 x_msg_data := fnd_message.get();
138 END IF;
139 p_txn_header_rec_type.error_code := 'DPP_TXN_OPERATING_UNIT_ERR';
140 WHEN Fnd_Api.G_EXC_ERROR THEN
141 x_return_status := Fnd_Api.g_ret_sts_error ;
142 WHEN OTHERS THEN
143 x_return_status := fnd_api.g_ret_sts_unexp_error;
144 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
145 fnd_message.set_name('FND', 'SQL_PLSQL_ERROR');
146 fnd_message.set_token('ROUTINE', l_full_name);
147 fnd_message.set_token('ERRNO', SQLCODE);
148 fnd_message.set_token('REASON', sqlerrm);
149 END IF;
150 x_msg_data := fnd_message.get();
151 END Validate_OperatingUnit;
152
153
154 FUNCTION has_docnum_chars (
155 p_docnum IN VARCHAR2
156 , p_docnum_chars IN VARCHAR2 DEFAULT 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_ '
157 )
158 RETURN VARCHAR2
159 IS
160 l_is_valid VARCHAR2(1);
161 BEGIN
162 IF (TRANSLATE (UPPER(p_docnum)
163 , fnd_global.local_chr(1) || p_docnum_chars
164 , fnd_global.local_chr(1)) IS NULL) THEN
165 l_is_valid := 'Y';
166 ELSE
167 l_is_valid := 'N';
168 END IF;
169 RETURN (l_is_valid);
170 END has_docnum_chars;
171
172
173 PROCEDURE Validate_RefDocNumber(
174 p_txn_header_rec_type IN OUT nocopy txn_header_rec
175 ,x_msg_count OUT nocopy NUMBER
176 ,x_msg_data OUT nocopy VARCHAR2
177 ,x_return_status OUT nocopy VARCHAR2)
178 AS
179 l_api_name constant VARCHAR2(30) := 'Validate_RefDocNumber';
180 l_full_name constant VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
181 l_valid_doc VARCHAR2(1);
182 BEGIN
183 IF DPP_DEBUG_HIGH_ON THEN
184 FND_FILE.PUT_LINE(FND_FILE.LOG,' Begin Validate Document Reference Number');
185 END IF;
186 -- Initialize API return status to sucess
187 x_return_status := fnd_api.g_ret_sts_success;
188 IF p_txn_header_rec_type.ref_document_number IS NULL THEN
189 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
190 fnd_message.set_name('DPP', 'DPP_DOC_REF_NUM_NULL');
191 END IF;
192 x_msg_data := fnd_message.get();
193 p_txn_header_rec_type.error_code := 'DPP_DOC_REF_NUM_NULL';
194 RAISE Fnd_Api.G_EXC_ERROR;
195 END IF;
196 --Call function to validate the document ref number for special characters other than _ and -.
197 l_valid_doc := dpp_transaction_pvt.has_docnum_chars(
198 p_docnum => p_txn_header_rec_type.ref_document_number
199 );
200
201 IF l_valid_doc = 'N' OR length(p_txn_header_rec_type.ref_document_number) > 40 THEN
202 x_return_status := fnd_api.g_ret_sts_error;
203 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
204 fnd_message.set_name('DPP', 'DPP_DOC_REF_NUM_ERR');
205 fnd_message.set_token('DOC_REF_NO', p_txn_header_rec_type.ref_document_number);
206 END IF;
207 x_msg_data := fnd_message.get();
208 p_txn_header_rec_type.error_code := 'DPP_DOC_REF_NUM_ERR';
209 END IF;
210 IF DPP_DEBUG_HIGH_ON THEN
211 FND_FILE.PUT_LINE(FND_FILE.LOG,' End Validate Document Reference Number');
212 END IF;
213 EXCEPTION
214 WHEN Fnd_Api.G_EXC_ERROR THEN
215 x_return_status := Fnd_Api.g_ret_sts_error ;
216 WHEN OTHERS THEN
217 x_return_status := fnd_api.g_ret_sts_unexp_error;
218 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
219 fnd_message.set_name('FND', 'SQL_PLSQL_ERROR');
220 fnd_message.set_token('ROUTINE', l_full_name);
221 fnd_message.set_token('ERRNO', SQLCODE);
222 fnd_message.set_token('REASON', sqlerrm);
223 x_msg_data := fnd_message.get();
224 END IF;
225 END Validate_RefDocNumber;
226
227 PROCEDURE Validate_SupplierDetails(
228 p_txn_header_rec_type IN OUT nocopy txn_header_rec
229 ,x_msg_count OUT nocopy NUMBER
230 ,x_msg_data OUT nocopy VARCHAR2
231 ,x_return_status OUT nocopy VARCHAR2)
232 AS
233 l_api_name constant VARCHAR2(30) := 'Validate_SupplierDetails';
234 l_full_name constant VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
235 l_trunc_sysdate DATE := TRUNC(SYSDATE);
236
237 BEGIN
238 IF DPP_DEBUG_HIGH_ON THEN
239 FND_FILE.PUT_LINE(FND_FILE.LOG,' Begin Validate Supplier Details');
240 END IF;
241 -- Initialize API return status to sucess
242 x_return_status := fnd_api.g_ret_sts_success;
243 --BUG 6806974
244 IF (p_txn_header_rec_type.vendor_name IS NULL
245 AND p_txn_header_rec_type.vendor_id IS NULL) THEN
246 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
247 fnd_message.set_name('DPP', 'DPP_TXN_SUPP_INFO_NULL');
248 x_msg_data :=fnd_message.get();
249 END IF;
250 p_txn_header_rec_type.error_code := 'DPP_TXN_SUPP_INFO_NULL';
251 RAISE Fnd_Api.G_EXC_ERROR;
252 END IF;
253 --Validate Supplier Name
254 BEGIN
255 SELECT ap.vendor_id
256 ,ap.vendor_name
257 INTO p_txn_header_rec_type.vendor_id
258 ,p_txn_header_rec_type.vendor_name
259 FROM ap_suppliers ap
260 WHERE (ap.vendor_name = NVL(p_txn_header_rec_type.vendor_name,ap.vendor_name) AND
261 ap.vendor_id = NVL(to_number(p_txn_header_rec_type.vendor_id),ap.vendor_id))
262 AND ap.enabled_flag = 'Y'
263 AND ap.hold_flag = 'N'
264 AND TRUNC(sysdate) >= nvl(TRUNC(start_date_active), TRUNC(sysdate))
265 AND TRUNC(sysdate) < nvl(TRUNC(end_date_active), TRUNC(sysdate) + 1);
266 EXCEPTION
267 WHEN NO_DATA_FOUND THEN
268 x_return_status := fnd_api.g_ret_sts_error;
269 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
270 fnd_message.set_name('DPP', 'DPP_TXN_SUPP_INFO_ERR');
271 fnd_message.set_token('SUPPLIER_NAME', p_txn_header_rec_type.vendor_name);
272 fnd_message.set_token('SUPPLIER_ID', p_txn_header_rec_type.vendor_id);
273 x_msg_data :=fnd_message.get();
274 END IF;
275 p_txn_header_rec_type.error_code := 'DPP_TXN_SUPP_INFO_ERR';
276 RAISE Fnd_Api.G_EXC_ERROR;
277 END;
278 --Validate Supplier Site
279 IF (p_txn_header_rec_type.vendor_site_code IS NULL
280 AND p_txn_header_rec_type.vendor_site_id IS NULL) THEN
281 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
282 fnd_message.set_name('DPP', 'DPP_TXN_SUPP_SITE_NULL');
283 x_msg_data :=fnd_message.get();
284 END IF;
285 p_txn_header_rec_type.error_code := 'DPP_TXN_SUPP_SITE_NULL';
286 RAISE Fnd_Api.G_EXC_ERROR;
287 END IF;
288 BEGIN
289 SELECT apssa.vendor_site_id
290 ,apssa.vendor_site_code
291 INTO p_txn_header_rec_type.vendor_site_id
292 ,p_txn_header_rec_type.vendor_site_code
293 FROM ap_supplier_sites_all apssa,
294 ozf_supp_trd_prfls_all ostp
295 WHERE apssa.vendor_id = to_number(p_txn_header_rec_type.vendor_id)
296 AND ostp.supplier_id = apssa.vendor_id
297 AND ostp.supplier_site_id = apssa.vendor_site_id
298 AND ostp.org_id = apssa.org_id
299 AND nvl(apssa.rfq_only_site_flag, 'N') = 'N'
300 AND nvl(apssa.inactive_date, l_trunc_sysdate + 1) > l_trunc_sysdate
301 AND (apssa.vendor_site_code = nvl(p_txn_header_rec_type.vendor_site_code,apssa.vendor_site_code)
302 AND apssa.vendor_site_id = nvl(to_number(p_txn_header_rec_type.vendor_site_id), apssa.vendor_site_id))
303 AND apssa.org_id = to_number(p_txn_header_rec_type.org_id);
304 EXCEPTION
305 WHEN NO_DATA_FOUND THEN
306 x_return_status := fnd_api.g_ret_sts_error;
307 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
308 fnd_message.set_name('DPP', 'DPP_TXN_SUPP_SITE_ERR');
309 fnd_message.set_token('SUPPLIER_SITE', p_txn_header_rec_type.vendor_site_code);
310 fnd_message.set_token('SITE_ID', p_txn_header_rec_type.vendor_site_id);
311 x_msg_data :=fnd_message.get();
312 END IF;
313 p_txn_header_rec_type.error_code := 'DPP_TXN_SUPP_SITE_ERR';
314 RAISE Fnd_Api.G_EXC_ERROR;
315 END;
316 IF DPP_DEBUG_HIGH_ON THEN
317 FND_FILE.PUT_LINE(FND_FILE.LOG,' End Validate Supplier Details Vendor Id: '||p_txn_header_rec_type.vendor_id);
318 END IF;
319 EXCEPTION
320 WHEN Fnd_Api.G_EXC_ERROR THEN
321 x_return_status := Fnd_Api.g_ret_sts_error ;
322 WHEN others THEN
323 x_return_status := fnd_api.g_ret_sts_unexp_error;
324 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
325 fnd_message.set_name('FND', 'SQL_PLSQL_ERROR');
326 fnd_message.set_token('ROUTINE', l_full_name);
327 fnd_message.set_token('ERRNO', SQLCODE);
328 fnd_message.set_token('REASON', sqlerrm);
329 x_msg_data :=fnd_message.get();
330 END IF;
331 END Validate_SupplierDetails;
332
333 --ANBBALAS for 12_1_2
334 PROCEDURE Validate_SupplierTrdPrfl(
335 p_txn_header_rec_type IN OUT nocopy txn_header_rec
336 ,x_supp_trade_profile_id OUT nocopy NUMBER
337 ,x_msg_count OUT nocopy NUMBER
338 ,x_msg_data OUT nocopy VARCHAR2
339 ,x_return_status OUT nocopy VARCHAR2)
340 AS
341 l_api_name constant VARCHAR2(30) := 'Validate_SupplierTrdPrfl';
342 l_full_name constant VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
343 l_supp_trade_profile_id NUMBER;
344
345 --Cursor to retrieve the supplier trade profile id
346 CURSOR get_supp_trd_prfl_csr (p_vendor_id NUMBER, p_vendor_site_id NUMBER, p_org_id NUMBER)
347 IS
348 SELECT supp_trade_profile_id
349 FROM ozf_supp_trd_prfls_all
350 WHERE supplier_id = p_vendor_id
351 AND supplier_site_id = p_vendor_site_id
352 AND org_id = p_org_id;
353
354 BEGIN
355 IF DPP_DEBUG_HIGH_ON THEN
356 FND_FILE.PUT_LINE(FND_FILE.LOG,' Begin Validate Supplier Trade Profile');
357 END IF;
358 -- Initialize API return status to sucess
359 x_return_status := fnd_api.g_ret_sts_success;
360
361 BEGIN
362 OPEN get_supp_trd_prfl_csr(p_txn_header_rec_type.vendor_id, p_txn_header_rec_type.vendor_site_id, p_txn_header_rec_type.org_id);
363 FETCH get_supp_trd_prfl_csr INTO l_supp_trade_profile_id;
364 CLOSE get_supp_trd_prfl_csr;
365 EXCEPTION
366 WHEN NO_DATA_FOUND THEN
367 x_return_status := fnd_api.g_ret_sts_error;
368 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
369 fnd_message.set_name('DPP','DPP_SUPP_TRDPRFLS_MISSING_ERR');
370 x_msg_data :=fnd_message.get();
371 END IF;
372 p_txn_header_rec_type.error_code := 'DPP_SUPP_TRDPRFLS_MISSING_ERR';
373 FND_FILE.PUT_LINE(FND_FILE.LOG,'Supplier trade profile setup not available');
374 FND_FILE.NEW_LINE(FND_FILE.LOG);
375 RAISE FND_API.G_EXC_ERROR;
376 WHEN OTHERS THEN
377 FND_FILE.PUT_LINE(FND_FILE.LOG,'Exception while fetching supp_trade_profile_id: ' || SQLERRM);
378 FND_FILE.NEW_LINE(FND_FILE.LOG);
379 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
380 END;
381
382 x_supp_trade_profile_id := l_supp_trade_profile_id;
383
384 IF DPP_DEBUG_HIGH_ON THEN
385 FND_FILE.PUT_LINE(FND_FILE.LOG,' End Validate Supplier Trade Profile for Vendor Id: ' || p_txn_header_rec_type.vendor_id);
386 END IF;
387 EXCEPTION
388 WHEN Fnd_Api.G_EXC_ERROR THEN
389 x_return_status := Fnd_Api.g_ret_sts_error ;
390 WHEN others THEN
391 x_return_status := fnd_api.g_ret_sts_unexp_error;
392 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
393 fnd_message.set_name('FND', 'SQL_PLSQL_ERROR');
394 fnd_message.set_token('ROUTINE', l_full_name);
395 fnd_message.set_token('ERRNO', SQLCODE);
396 fnd_message.set_token('REASON', sqlerrm);
397 x_msg_data :=fnd_message.get();
398 END IF;
399 END Validate_SupplierTrdPrfl;
400
401 --ANBBALAS for 12_1_2
402 PROCEDURE Validate_ExecProcessSetup(
403 p_txn_header_rec_type IN OUT nocopy txn_header_rec
404 ,p_supp_trade_profile_id IN OUT nocopy NUMBER
405 ,x_msg_count OUT nocopy NUMBER
406 ,x_msg_data OUT nocopy VARCHAR2
407 ,x_return_status OUT nocopy VARCHAR2)
408 AS
409 l_api_name constant VARCHAR2(30) := 'Validate_ExecProcessSetup';
410 l_full_name constant VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
411
412 l_count NUMBER := 0;
413
414 CURSOR get_process_setup_cnt_csr (p_supp_trade_profile_id NUMBER, p_org_id NUMBER)
415 IS
416 SELECT COUNT(1)
417 FROM OZF_PROCESS_SETUP_ALL
418 WHERE nvl(supp_trade_profile_id,0) = nvl(p_supp_trade_profile_id,0)
419 AND enabled_flag = 'Y'
420 AND org_id = p_org_id;
421
422 BEGIN
423 IF DPP_DEBUG_HIGH_ON THEN
424 FND_FILE.PUT_LINE(FND_FILE.LOG,' Begin Validate Execution Process Setup');
425 END IF;
426 -- Initialize API return status to sucess
427 x_return_status := fnd_api.g_ret_sts_success;
428
429 --Check if the Process Setup is done for the Supplier, Supplier site and Operating Unit
430 BEGIN
431 OPEN get_process_setup_cnt_csr(p_supp_trade_profile_id, p_txn_header_rec_type.org_id);
432 FETCH get_process_setup_cnt_csr INTO l_count;
433 CLOSE get_process_setup_cnt_csr;
434
435 IF l_count = 0 THEN --Process Setup does not exist for the Supplier Trade Profile
436 p_supp_trade_profile_id := null;
437 OPEN get_process_setup_cnt_csr(p_supp_trade_profile_id, p_txn_header_rec_type.org_id);
438 FETCH get_process_setup_cnt_csr INTO l_count;
439 CLOSE get_process_setup_cnt_csr;
440 END IF;
441 EXCEPTION
442 WHEN OTHERS THEN
443 FND_FILE.PUT_LINE(FND_FILE.LOG,'Exception while fetching from OZF_PROCESS_SETUP_ALL: '||SQLERRM);
444 FND_FILE.NEW_LINE(FND_FILE.LOG);
445 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
446 END;
447
448 IF l_count = 0 THEN --Process Setup does not exist
449 x_return_status := fnd_api.g_ret_sts_error;
450 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
451 fnd_message.set_name( 'DPP','DPP_PROCESS_SETUP_MISSING_ERR');
452 x_msg_data :=fnd_message.get();
453 END IF;
454 p_txn_header_rec_type.error_code := 'DPP_PROCESS_SETUP_MISSING_ERR';
455 FND_FILE.PUT_LINE(FND_FILE.LOG,'No Execution processes setup available for this transaction.');
456 FND_FILE.NEW_LINE(FND_FILE.LOG);
457 RAISE Fnd_Api.G_EXC_ERROR;
458 END IF;
459
460 IF DPP_DEBUG_HIGH_ON THEN
461 FND_FILE.PUT_LINE(FND_FILE.LOG,' End Validate Execution Process Setup for Vendor Id: ' || p_txn_header_rec_type.vendor_id);
462 END IF;
463 EXCEPTION
464 WHEN Fnd_Api.G_EXC_ERROR THEN
465 x_return_status := Fnd_Api.g_ret_sts_error ;
466 WHEN others THEN
467 x_return_status := fnd_api.g_ret_sts_unexp_error;
468 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
469 fnd_message.set_name('FND', 'SQL_PLSQL_ERROR');
470 fnd_message.set_token('ROUTINE', l_full_name);
471 fnd_message.set_token('ERRNO', SQLCODE);
472 fnd_message.set_token('REASON', sqlerrm);
473 x_msg_data :=fnd_message.get();
474 END IF;
475 END Validate_ExecProcessSetup;
476
477 PROCEDURE Validate_lines(
478 p_txn_header_rec_type IN OUT nocopy txn_header_rec
479 ,x_msg_count OUT nocopy NUMBER
480 ,x_msg_data OUT nocopy VARCHAR2
481 ,x_return_status OUT nocopy VARCHAR2)
482 AS
483 l_api_name constant VARCHAR2(30) := 'Validate_lines';
484 l_full_name constant VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
485 l_trunc_sysdate DATE := TRUNC(SYSDATE);
486 l_duplicate_lines NUMBER;
487 l_error_message VARCHAR2(4000) := NULL;
488 l_lines NUMBER;
489
490 BEGIN
491 IF DPP_DEBUG_HIGH_ON THEN
492 FND_FILE.PUT_LINE(FND_FILE.LOG,' Begin Validate Lines Details');
493 END IF;
494 -- Initialize API return status to sucess
495 x_return_status := fnd_api.g_ret_sts_success;
496
497
498 --Check for Duplicate Lines in Interface Table
499 BEGIN
500 BEGIN
501 SELECT COUNT(dtlia.supplier_part_num)
502 INTO l_duplicate_lines
503 FROM dpp_txn_headers_int_all dthia,
504 dpp_txn_lines_int_all dtlia
505 WHERE dthia.transaction_int_header_id = dtlia.transaction_int_header_id
506 AND dthia.transaction_int_header_id = p_txn_header_rec_type.transaction_int_header_id
507 GROUP BY dtlia.supplier_part_num
508 HAVING COUNT(dtlia.supplier_part_num) > 1;
509 EXCEPTION
510 WHEN NO_DATA_FOUND THEN
511 l_duplicate_lines := NULL;
512 WHEN TOO_MANY_ROWS THEN
513 --This exception raises when the transaction has more than one row with distinct supplier part numbers
514 NULL;
515 END;
516
517 IF l_duplicate_lines < 2 OR l_duplicate_lines IS NULL THEN
518 BEGIN
519 SELECT COUNT(dtlia.item_number)
520 INTO l_duplicate_lines
521 FROM dpp_txn_headers_int_all dthia,
522 dpp_txn_lines_int_all dtlia
523 WHERE dthia.transaction_int_header_id = dtlia.transaction_int_header_id
524 AND dthia.transaction_int_header_id = p_txn_header_rec_type.transaction_int_header_id
525 GROUP BY dtlia.item_number
526 HAVING COUNT(dtlia.item_number) > 1;
527 EXCEPTION
528 WHEN NO_DATA_FOUND THEN
529 l_duplicate_lines := NULL;
530 WHEN TOO_MANY_ROWS THEN
531 --This exception raises when the transaction has more than one row with distinct supplier part numbers
532 NULL;
533 END;
534 END IF;
535 IF l_duplicate_lines < 2 OR l_duplicate_lines IS NULL THEN
536 BEGIN
537 SELECT COUNT(dtlia.inventory_item_id)
538 INTO l_duplicate_lines
539 FROM dpp_txn_headers_int_all dthia,
540 dpp_txn_lines_int_all dtlia
541 WHERE dthia.transaction_int_header_id = dtlia.transaction_int_header_id
542 AND dthia.transaction_int_header_id = p_txn_header_rec_type.transaction_int_header_id
543 GROUP BY dtlia.inventory_item_id
544 HAVING COUNT(dtlia.inventory_item_id) > 1;
545 EXCEPTION
546 WHEN NO_DATA_FOUND THEN
547 l_duplicate_lines := NULL;
548 WHEN TOO_MANY_ROWS THEN
549 --This exception raises when the transaction has more than one row with distinct supplier part numbers
550 NULL;
551 END;
552 END IF;
553 IF l_duplicate_lines > 1 THEN
554 fnd_message.set_name('DPP', 'DPP_DUPLICATE_TXN_LINES');
555 x_msg_data := fnd_message.get();
556 p_txn_header_rec_type.error_code := 'DPP_DUPLICATE_TXN_LINES';
557 x_return_status := Fnd_Api.g_ret_sts_error ;
558 --RAISE Fnd_Api.G_EXC_ERROR;
559 l_error_message := l_error_message ||x_msg_data;
560 END IF;
561 END;
562
563 BEGIN
564 --get inventory organization id
565 SELECT inventory_organization_id
566 INTO p_txn_header_rec_type.inventory_organization_id
567 FROM financials_system_params_all
568 WHERE org_id = to_number(p_txn_header_rec_type.org_id);
569
570 SELECT gs.currency_code
571 INTO p_txn_header_rec_type.functional_currency
572 FROM gl_sets_of_books gs
573 , hr_operating_units hr
574 WHERE hr.set_of_books_id = gs.set_of_books_id
575 AND hr.organization_id = p_txn_header_rec_type.org_id;
576 EXCEPTION WHEN OTHERS THEN
577 fnd_message.set_name('DPP', 'DPP_TXN_FUNC_CURR_ERR');
578 x_msg_data := fnd_message.get();
579 p_txn_header_rec_type.error_code := 'DPP_TXN_FUNC_CURR_ERR';
580 x_return_status := Fnd_Api.g_ret_sts_error ;
581 --RAISE Fnd_Api.G_EXC_ERROR;
582 l_error_message := l_error_message ||x_msg_data;
583 Update_InterfaceErrSts(
584 p_txn_header_rec_type => p_txn_header_rec_type
585 ,x_return_status =>x_return_status
586 );
587 END;
588 BEGIN
589 SELECT 1 INTO l_lines FROM
590 dpp_txn_lines_int_all dtla WHERE
591 dtla.transaction_int_header_id = p_txn_header_rec_type.transaction_int_header_id;
592 EXCEPTION
593 WHEN NO_DATA_FOUND THEN
594 fnd_message.set_name('DPP', 'DPP_TXN_NO_LINES');
595 x_msg_data :=fnd_message.get();
596 p_txn_header_rec_type.error_code := 'DPP_TXN_NO_LINES';
597 l_error_message := l_error_message ||x_msg_data;
598 x_return_status := Fnd_Api.g_ret_sts_error ;
599 WHEN TOO_MANY_ROWS THEN
600 null;
601 END;
602 EXCEPTION
603 WHEN Fnd_Api.G_EXC_ERROR THEN
604 x_return_status := Fnd_Api.g_ret_sts_error ;
605 WHEN others THEN
606 x_return_status := fnd_api.g_ret_sts_unexp_error;
607 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
608 fnd_message.set_name('FND', 'SQL_PLSQL_ERROR');
609 fnd_message.set_token('ROUTINE', l_full_name);
610 fnd_message.set_token('ERRNO', SQLCODE);
611 fnd_message.set_token('REASON', sqlerrm);
612 x_msg_data :=fnd_message.get();
613 END IF;
614 END Validate_lines;
615
616 PROCEDURE Get_DaysCovered(
617 p_txn_header_rec_type IN OUT nocopy txn_header_rec
618 ,x_msg_count OUT nocopy NUMBER
619 ,x_msg_data OUT nocopy VARCHAR2
620 ,x_return_status OUT nocopy VARCHAR2)
621 AS
622 BEGIN
623
624 IF DPP_DEBUG_HIGH_ON THEN
625 FND_FILE.PUT_LINE(FND_FILE.LOG,' Begin Get Days Covered');
626 END IF;
627 -- Initialize API return status to sucess
628 x_return_status := fnd_api.g_ret_sts_success;
629 SELECT default_days_covered
630 INTO p_txn_header_rec_type.days_covered
631 FROM ozf_supp_trd_prfls_all ostpa
632 WHERE ostpa.supplier_id =to_number(p_txn_header_rec_type.vendor_id)
633 AND ostpa.supplier_site_id =to_number(p_txn_header_rec_type.vendor_site_id);
634
635 IF DPP_DEBUG_HIGH_ON THEN
636 FND_FILE.PUT_LINE(FND_FILE.LOG,' End Get Days Covered');
637 END IF;
638 EXCEPTION
639 WHEN NO_DATA_FOUND THEN
640 x_return_status := fnd_api.g_ret_sts_error;
641 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
642 fnd_message.set_name('DPP', 'DPP_DAYS_COVRD_ERR');
643 fnd_message.set_token('SUPPLIER_NAME', p_txn_header_rec_type.vendor_name);
644 x_msg_data :=fnd_message.get();
645 END IF;
646 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
647 p_txn_header_rec_type.error_code := 'DPP_DAYS_COVRD_ERR';
648 WHEN others THEN
649 x_return_status := fnd_api.g_ret_sts_unexp_error;
650 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
651 fnd_message.set_name('FND', 'SQL_PLSQL_ERROR');
652 fnd_message.set_token('ROUTINE', 'DPP_TRANSACTION_PVT');
653 fnd_message.set_token('ERRNO', SQLCODE);
654 fnd_message.set_token('REASON', sqlerrm);
655 END IF;
656 END Get_DaysCovered;
657
658 PROCEDURE Validate_Currency(
659 p_txn_header_rec_type IN OUT nocopy txn_header_rec
660 ,x_msg_count OUT nocopy NUMBER
661 ,x_msg_data OUT nocopy VARCHAR2
662 ,x_return_status OUT nocopy VARCHAR2)
663 AS
664 l_api_name constant VARCHAR2(30) := 'Validate_Currency';
665 l_full_name constant VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
666 l_error_message VARCHAR2(4000) := NULL;
667 l_transaction_number VARCHAR2(55);
668
669 --ANBBALAS for 12_1_2
670 l_trunc_eff_start_date DATE := NULL;
671 l_trunc_sys_date DATE := NULL;
672 l_txn_status_lookup_code VARCHAR2(30) := NULL;
673
674 --Cursor to get the truncated effective start date and system date
675 CURSOR get_trunc_dates(effective_start_date DATE)
676 IS
677 SELECT trunc(effective_start_date), TRUNC(SYSDATE)
678 FROM DUAL;
679
680 BEGIN
681 -- Initialize API return status to sucess
682 x_return_status := fnd_api.g_ret_sts_success;
683 IF DPP_DEBUG_HIGH_ON THEN
684 FND_FILE.PUT_LINE(FND_FILE.LOG,' Begin Validate Currency');
685 END IF;
686 IF p_txn_header_rec_type.trx_currency IS NULL THEN
687 fnd_message.set_name('DPP', 'DPP_TXN_CURR_NULL');
688 x_msg_data :=fnd_message.get();
689 p_txn_header_rec_type.error_code := 'DPP_TXN_CURR_NULL';
690 l_error_message := l_error_message || x_msg_data;
691 --RAISE Fnd_Api.G_EXC_ERROR ;
692 END IF;
693 BEGIN
694 SELECT currency_code
695 INTO p_txn_header_rec_type.trx_currency
696 FROM fnd_currencies
697 WHERE currency_flag = 'Y'
698 AND enabled_flag = 'Y'
699 AND currency_code =p_txn_header_rec_type.trx_currency;
700 IF DPP_DEBUG_HIGH_ON THEN
701 FND_FILE.PUT_LINE(FND_FILE.LOG,' End Validate Currency');
702 END IF;
703 EXCEPTION WHEN no_data_found THEN
704 x_return_status := fnd_api.g_ret_sts_error;
705 fnd_message.set_name('DPP', 'DPP_TXN_CURR_ERR');
706 fnd_message.set_token('CURRENCY_CODE', p_txn_header_rec_type.trx_currency);
707 x_msg_data :=fnd_message.get();
708 l_error_message := l_error_message || x_msg_data;
709 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
710 p_txn_header_rec_type.error_code := 'DPP_TXN_CURR_ERR';
711 END;
712 --for only inbound
713 IF p_txn_header_rec_type.supplier_approved_by is NULL THEN
714 --Validation part in Create Header
715 BEGIN
716 SELECT dpp_transaction_hdr_id_seq.nextval
717 INTO p_txn_header_rec_type.transaction_header_id
718 FROM dual;
719 EXCEPTION
720 WHEN no_data_found THEN
721 x_return_status := fnd_api.g_ret_sts_error;
722 fnd_message.set_name('DPP', 'DPP_TXN_SEQ_NO_ERR');
723 fnd_message.set_token('SEQ_NUM', 'Transaction Header Id');
724 x_msg_data := fnd_message.get();
725 l_error_message := l_error_message || x_msg_data;
726 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
727 l_error_message :=l_error_message|| x_msg_data;
728 p_txn_header_rec_type.error_code := 'DPP_TXN_SEQ_NO_ERR';
729 --RAISE Fnd_Api.G_EXC_ERROR;
730 END;
731
732 LOOP
733 --Get transaction Number from sequence
734 BEGIN
735 SELECT dpp_transaction_number_seq.nextval
736 INTO p_txn_header_rec_type.transaction_number
737 FROM dual;
738
739 EXCEPTION
740 WHEN no_data_found THEN
741 x_return_status := fnd_api.g_ret_sts_error;
742 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
743 fnd_message.set_name('DPP', 'DPP_TXN_SEQ_NO_ERR');
744 fnd_message.set_token('SEQ_NUM', 'Transaction Number');
745 END IF;
746 x_msg_data := fnd_message.get();
747 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
748 p_txn_header_rec_type.error_code := 'DPP_TXN_SEQ_NO_ERR';
749 l_error_message :=l_error_message|| x_msg_data;
750 --RAISE Fnd_Api.G_EXC_ERROR;
751 END;
752 --Check the transaction number generated is present in the table
753 BEGIN
754 --Check Transaction Number
755 SELECT transaction_number
756 INTO l_transaction_number
757 FROM dpp_transaction_headers_all dtha
758 WHERE dtha.transaction_number = p_txn_header_rec_type.transaction_number;
759 EXCEPTION
760 WHEN no_data_found THEN
761 l_transaction_number := NULL;
762 END;
763 --If present get next sequence number else proceed
764 EXIT WHEN l_transaction_number IS NULL;
765 END LOOP;
766
767 --ANBBALAS for 12_1_2 - Start
768 BEGIN
769 OPEN get_trunc_dates(p_txn_header_rec_type.effective_start_date);
770 FETCH get_trunc_dates INTO l_trunc_eff_start_date, l_trunc_sys_date;
771 CLOSE get_trunc_dates;
772 EXCEPTION
773 WHEN OTHERS THEN
774 x_return_status := fnd_api.g_ret_sts_error;
775 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
776 fnd_message.set_name('DPP', 'DPP_TXN_STS_ERR');
777 END IF;
778 x_msg_data := fnd_message.get();
779 FND_FILE.PUT_LINE(FND_FILE.LOG,'Error while getting the truncated date' || x_msg_data);
780 p_txn_header_rec_type.error_code := 'DPP_TXN_STS_ERR';
781 l_error_message := l_error_message || x_msg_data;
782 END;
783
784 IF l_trunc_eff_start_date <= l_trunc_sys_date THEN
785 l_txn_status_lookup_code := 'PENDING_ADJUSTMENT';
786 ELSE
787 l_txn_status_lookup_code := 'ACTIVE';
788 END IF;
789 --ANBBALAS for 12_1_2 - End
790
791 --Get Transaction Status from Lookup
792 BEGIN
793 SELECT lookup_code
794 INTO p_txn_header_rec_type.transaction_status
795 FROM fnd_lookups
796 WHERE lookup_type = 'DPP_TRANSACTION_STATUSES'
797 AND lookup_code = l_txn_status_lookup_code; --ANBBALAS for 12_1_2
798 EXCEPTION
799 WHEN no_data_found THEN
800 x_return_status := fnd_api.g_ret_sts_error;
801 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
802 fnd_message.set_name('DPP', 'DPP_TXN_STS_ERR');
803 END IF;
804 x_msg_data := fnd_message.get();
805 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
806 p_txn_header_rec_type.error_code := 'DPP_TXN_STS_ERR';
807 l_error_message :=l_error_message|| x_msg_data;
808 --RAISE Fnd_Api.G_EXC_ERROR;
809 END;
810
811
812 --Get days covered if it is null
813 IF p_txn_header_rec_type.days_covered IS NULL THEN
814 Get_DaysCovered(p_txn_header_rec_type => p_txn_header_rec_type
815 ,x_msg_count => x_msg_count
816 ,x_msg_data => x_msg_data
817 ,x_return_status => x_return_status
818 );
819 END IF;
820 IF x_return_status = Fnd_Api.g_ret_sts_error OR x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
821 l_error_message :=l_error_message|| x_msg_data;
822 END IF;
823 IF DPP_DEBUG_HIGH_ON THEN
824 FND_FILE.PUT_LINE(FND_FILE.LOG,'Validating Days Covered');
825 END IF;
826 --Validate the given days covered should be between 0 and 9999
827 IF p_txn_header_rec_type.days_covered <= 0
828 OR p_txn_header_rec_type.days_covered > 9999
829 OR p_txn_header_rec_type.days_covered <> ROUND(p_txn_header_rec_type.days_covered)
830 THEN
831 x_return_status := fnd_api.g_ret_sts_error;
832 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
833 fnd_message.set_name('DPP', 'DPP_TXN_DAYS_COV_ERR');
834 END IF;
835 x_msg_data := fnd_message.get();
836 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
837 p_txn_header_rec_type.error_code := 'DPP_TXN_DAYS_COV_ERR';
838 l_error_message :=l_error_message|| x_msg_data;
839 --RAISE Fnd_Api.g_exc_error;
840 END IF;
841 IF p_txn_header_rec_type.effective_start_date IS NULL THEN
842 x_return_status := fnd_api.g_ret_sts_error;
843 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
844 fnd_message.set_name('DPP', 'DPP_EFF_START_DATE_ERR');
845 END IF;
846 x_msg_data := fnd_message.get();
847 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
848 p_txn_header_rec_type.error_code := 'DPP_EFF_START_DATE_ERR';
849 l_error_message :=l_error_message|| x_msg_data;
850 --RAISE Fnd_Api.g_exc_error;
851 END IF;
852 END IF; -- end if only for inbound
853 IF l_error_message IS NOT NULL THEN
854 x_msg_data := l_error_message;
855 RAISE Fnd_Api.g_exc_error;
856 END IF;
857 EXCEPTION
858 WHEN Fnd_Api.G_EXC_ERROR THEN
859 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
860 x_return_status := Fnd_Api.g_ret_sts_error ;
861 WHEN others THEN
862 x_return_status := fnd_api.g_ret_sts_unexp_error;
863 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
864 fnd_message.set_name('FND', 'SQL_PLSQL_ERROR');
865 fnd_message.set_token('ROUTINE', l_full_name);
866 fnd_message.set_token('ERRNO', SQLCODE);
867 fnd_message.set_token('REASON', sqlerrm);
868 END IF;
869 x_msg_data :=fnd_message.get();
870 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
871 END Validate_Currency;
872
873
874
875 PROCEDURE Create_Header(
876 p_txn_header_rec_type IN OUT nocopy txn_header_rec
877 ,x_msg_count OUT nocopy NUMBER
878 ,x_msg_data OUT nocopy VARCHAR2
879 ,x_return_status OUT nocopy VARCHAR2)
880 AS
881 l_api_name constant VARCHAR2(30) := 'Create_Header';
882 l_full_name constant VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
883 l_user_id NUMBER :=FND_PROFILE.VALUE('USER_ID');
884 l_transaction_number VARCHAR2(55);
885 l_error_message VARCHAR2(4000) := NULL;
886 BEGIN
887 IF DPP_DEBUG_HIGH_ON THEN
888 FND_FILE.PUT_LINE(FND_FILE.LOG,' Begin Create Header');
889 END IF;
890 -- Initialize API return status to sucess
891 x_return_status := fnd_api.g_ret_sts_success;
892 --Get Transaction Header Id from sequence
893
894 IF DPP_DEBUG_HIGH_ON THEN
895 FND_FILE.PUT_LINE(FND_FILE.LOG,' Inserting Transaction Header');
896 END IF;
897 INSERT INTO DPP_TRANSACTION_HEADERS_ALL(
898 object_version_number
899 ,transaction_header_id
900 ,transaction_number
901 ,ref_document_number
902 ,vendor_id
903 ,vendor_contact_id
904 ,vendor_contact_name
905 ,contact_email_address
906 ,contact_phone
907 ,vendor_site_id
908 ,transaction_source
909 ,effective_start_date
910 ,days_covered
911 ,transaction_status
912 ,org_id
913 ,orig_sys_document_ref
914 ,creation_date
915 ,last_refreshed_by
916 ,last_refreshed_date
917 ,created_by
918 ,last_update_date
919 ,last_updated_by
920 ,last_update_login
921 ,request_id
922 ,program_application_id
923 ,program_id
924 ,program_update_date
925 ,attribute_category
926 ,attribute1
927 ,attribute2
928 ,attribute3
929 ,attribute4
930 ,attribute5
931 ,attribute6
932 ,attribute7
933 ,attribute8
934 ,attribute9
935 ,attribute10
936 ,attribute11
937 ,attribute12
938 ,attribute13
939 ,attribute14
940 ,attribute15
941 ,attribute16
942 ,attribute17
943 ,attribute18
944 ,attribute19
945 ,attribute20
946 ,attribute21
947 ,attribute22
948 ,attribute23
949 ,attribute24
950 ,attribute25
951 ,attribute26
952 ,attribute27
953 ,attribute28
954 ,attribute29
955 ,attribute30
956 ,trx_currency)
957 VALUES(
958 1.0
959 ,p_txn_header_rec_type.transaction_header_id
960 ,p_txn_header_rec_type.transaction_number
961 ,p_txn_header_rec_type.ref_document_number
962 ,p_txn_header_rec_type.vendor_id
963 ,p_txn_header_rec_type.vendor_contact_id
964 ,p_txn_header_rec_type.vendor_contact_name
965 ,p_txn_header_rec_type.contact_email_address
966 ,p_txn_header_rec_type.contact_phone
967 ,p_txn_header_rec_type.vendor_site_id
968 ,p_txn_header_rec_type.transaction_source
969 ,TRUNC(p_txn_header_rec_type.effective_start_date)
970 ,p_txn_header_rec_type.days_covered
971 ,p_txn_header_rec_type.transaction_status
972 ,p_txn_header_rec_type.org_id
973 ,p_txn_header_rec_type.orig_sys_document_ref
974 ,sysdate--creation_date
975 ,null--last_refreshed_by
976 ,NULL--last_refreshed_date
977 ,NVL(l_user_id,0)
978 ,SYSDATE
979 ,NVL(l_user_id,0)
980 ,NVL(l_user_id,0)
981 ,p_txn_header_rec_type.REQUEST_ID
982 ,p_txn_header_rec_type.PROGRAM_APPLICATION_ID
983 ,p_txn_header_rec_type.PROGRAM_ID
984 ,p_txn_header_rec_type.PROGRAM_UPDATE_DATE
985 ,p_txn_header_rec_type.ATTRIBUTE_CATEGORY
986 ,p_txn_header_rec_type.ATTRIBUTE1
987 ,p_txn_header_rec_type.ATTRIBUTE2
988 ,p_txn_header_rec_type.ATTRIBUTE3
989 ,p_txn_header_rec_type.ATTRIBUTE4
990 ,p_txn_header_rec_type.ATTRIBUTE5
991 ,p_txn_header_rec_type.ATTRIBUTE6
992 ,p_txn_header_rec_type.ATTRIBUTE7
993 ,p_txn_header_rec_type.ATTRIBUTE8
994 ,p_txn_header_rec_type.ATTRIBUTE9
995 ,p_txn_header_rec_type.ATTRIBUTE10
996 ,p_txn_header_rec_type.ATTRIBUTE11
997 ,p_txn_header_rec_type.ATTRIBUTE12
998 ,p_txn_header_rec_type.ATTRIBUTE13
999 ,p_txn_header_rec_type.ATTRIBUTE14
1000 ,p_txn_header_rec_type.ATTRIBUTE15
1001 ,p_txn_header_rec_type.ATTRIBUTE16
1002 ,p_txn_header_rec_type.ATTRIBUTE17
1003 ,p_txn_header_rec_type.ATTRIBUTE18
1004 ,p_txn_header_rec_type.ATTRIBUTE19
1005 ,p_txn_header_rec_type.ATTRIBUTE20
1006 ,p_txn_header_rec_type.ATTRIBUTE21
1007 ,p_txn_header_rec_type.ATTRIBUTE22
1008 ,p_txn_header_rec_type.ATTRIBUTE23
1009 ,p_txn_header_rec_type.ATTRIBUTE24
1010 ,p_txn_header_rec_type.ATTRIBUTE25
1011 ,p_txn_header_rec_type.ATTRIBUTE26
1012 ,p_txn_header_rec_type.ATTRIBUTE27
1013 ,p_txn_header_rec_type.ATTRIBUTE28
1014 ,p_txn_header_rec_type.ATTRIBUTE29
1015 ,p_txn_header_rec_type.ATTRIBUTE30
1016 ,p_txn_header_rec_type.trx_currency);
1017
1018 IF DPP_DEBUG_HIGH_ON THEN
1019 FND_FILE.PUT_LINE(FND_FILE.LOG,' End Create Header');
1020 END IF;
1021 EXCEPTION
1022 WHEN Fnd_Api.G_EXC_ERROR THEN
1023 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
1024 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, 'Create Header G_EXC_ERROR '||x_msg_data);
1025 x_return_status := Fnd_Api.g_ret_sts_error ;
1026 WHEN Fnd_Api.G_EXC_UNEXPECTED_ERROR THEN
1027 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
1028 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, 'Create Header G_EXC_UNEXPECTED_ERROR' ||x_msg_data||sqlerrm);
1029 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
1030 WHEN OTHERS THEN
1031 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, 'Create Header OTHERS'||sqlerrm);
1032 x_return_status := Fnd_Api.g_ret_sts_unexp_erroR ;
1033 IF Fnd_Msg_Pub.Check_Msg_Level ( Fnd_Msg_Pub.G_MSG_LVL_UNEXP_ERROR )
1034 THEN
1035 fnd_message.set_name('FND', 'SQL_PLSQL_ERROR');
1036 fnd_message.set_token('ROUTINE', 'DPP_TRANSACTION_PVT');
1037 fnd_message.set_token('ERRNO', SQLCODE);
1038 fnd_message.set_token('REASON', sqlerrm);
1039 END IF;
1040 x_msg_data := fnd_message.get;
1041 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
1042 END Create_Header;
1043 PROCEDURE Validate_SupplierPartNum(
1044 p_txn_header_rec_type IN OUT nocopy txn_header_rec
1045 ,p_txn_lines_tbl_type IN OUT nocopy txn_lines_tbl
1046 ,x_msg_count OUT nocopy NUMBER
1047 ,x_msg_data OUT nocopy VARCHAR2
1048 ,x_return_status OUT nocopy VARCHAR2)
1049 AS
1050 l_api_name constant VARCHAR2(30) := 'Validate_SupplierPartNum';
1051 l_api_version constant NUMBER := 1.0;
1052 l_full_name constant VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
1053
1054 l_return_status VARCHAR2(10);
1055 l_supplier_part_num_not_exists BOOLEAN;
1056 l_exchange_rate NUMBER;
1057 l_error_message VARCHAR2(4000) :=NULL;
1058 l_msg_exceeded VARCHAR2(10) := 'N';
1059
1060 BEGIN
1061 -- Initialize API return status to sucess
1062 x_return_status := fnd_api.g_ret_sts_success;
1063 IF DPP_DEBUG_HIGH_ON THEN
1064 FND_FILE.PUT_LINE(FND_FILE.LOG,' Begin Validate Supplier Part Number');
1065 END IF;
1066 FOR i in p_txn_lines_tbl_type.FIRST..p_txn_lines_tbl_type.LAST
1067 LOOP
1068 --Get transaction line id from sequence
1069 BEGIN
1070 SELECT dpp_transaction_line_id_seq.nextval
1071 INTO p_txn_lines_tbl_type(i).transaction_line_id
1072 FROM dual;
1073
1074 EXCEPTION
1075 WHEN no_data_found THEN
1076 x_return_status := fnd_api.g_ret_sts_error;
1077 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
1078 fnd_message.set_name('DPP', 'DPP_TXN_SEQ_NO_ERR');
1079 fnd_message.set_token('SEQ_NUM', 'Transaction Line Id');
1080 END IF;
1081 x_msg_data := fnd_message.get();
1082 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
1083 p_txn_lines_tbl_type(i).error_code := 'DPP_TXN_SEQ_NO_ERR';
1084 IF p_txn_header_rec_type.error_code IS NULL THEN
1085 p_txn_header_rec_type.error_code := 'DPP_TXN_SEQ_NO_ERR';
1086 ELSE
1087 p_txn_header_rec_type.error_code := 'MULTIPLE_ERRORS';
1088 END IF;
1089 l_error_message :=l_error_message|| x_msg_data;
1090
1091 END;
1092 --Get line status from lookup
1093 BEGIN
1094 SELECT lookup_code
1095 INTO p_txn_lines_tbl_type(i).line_status
1096 FROM fnd_lookups
1097 WHERE lookup_code = 'ACTIVE'
1098 AND lookup_type = 'DPP_TRANSACTION_STATUSES';
1099 EXCEPTION
1100 WHEN no_data_found THEN
1101 x_return_status := fnd_api.g_ret_sts_error;
1102 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
1103 fnd_message.set_name('DPP', 'DPP_TXN_STS_ERR');
1104 END IF;
1105 x_msg_data := fnd_message.get();
1106 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
1107 p_txn_lines_tbl_type(i).error_code := 'DPP_TXN_STS_ERR';
1108 IF p_txn_header_rec_type.error_code IS NULL THEN
1109 p_txn_header_rec_type.error_code := 'DPP_TXN_STS_ERR';
1110 ELSE
1111 p_txn_header_rec_type.error_code := 'MULTIPLE_ERRORS';
1112 END IF;
1113 l_error_message :=l_error_message|| x_msg_data;
1114 --RAISE Fnd_Api.G_EXC_ERROR;
1115 END;
1116 --BUG 6806974
1117 IF (p_txn_lines_tbl_type(i).supplier_part_num IS NULL AND p_txn_lines_tbl_type(i).item_number IS NULL
1118 AND p_txn_lines_tbl_type(i).inventory_item_id IS NULL) THEN
1119 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
1120 fnd_message.set_name('DPP', 'DPP_TXN_SUP_PART_NO_NULL');
1121 END IF;
1122 x_msg_data := fnd_message.get();
1123 l_error_message :=l_error_message|| x_msg_data;
1124 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
1125 p_txn_lines_tbl_type(i).error_code := 'DPP_TXN_SUP_PART_NO_NULL';
1126
1127 RAISE Fnd_Api.g_exc_error;
1128 END IF;
1129
1130
1131 /*If both the supplier part number and item number is not null then both the values
1132 and the combination should be valid*/
1133 IF p_txn_lines_tbl_type(i).item_number IS NOT NULL
1134 OR p_txn_lines_tbl_type(i).inventory_item_id IS NOT NULL THEN
1135 BEGIN
1136 IF p_txn_lines_tbl_type(i).item_number IS NOT NULL
1137 AND p_txn_lines_tbl_type(i).inventory_item_id IS NOT NULL THEN
1138 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Validate Supplier Part Number Case I');
1139 SELECT msi.inventory_item_id,
1140 msi.concatenated_segments,
1141 msi.primary_uom_code
1142 INTO p_txn_lines_tbl_type(i).inventory_item_id
1143 ,p_txn_lines_tbl_type(i).item_number
1144 ,p_txn_lines_tbl_type(i).uom
1145 FROM mtl_system_items_kfv msi
1146 WHERE msi.purchasing_item_flag = 'Y'
1147 AND msi.shippable_item_flag = 'Y'
1148 AND msi.enabled_flag = 'Y'
1149 AND NVL(msi.consigned_flag,2) = 2 -- 2=unconsigned
1150 AND msi.mtl_transactions_enabled_flag = 'Y'
1151 AND msi.organization_id = p_txn_header_rec_type.inventory_organization_id
1152 AND msi.concatenated_segments = p_txn_lines_tbl_type(i).item_number
1153 AND msi.inventory_item_id = to_number(p_txn_lines_tbl_type(i).inventory_item_id)
1154 AND msi.primary_uom_code = nvl(p_txn_lines_tbl_type(i).uom,msi.primary_uom_code);
1155 ELSIF p_txn_lines_tbl_type(i).item_number IS NULL THEN
1156 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Validate Supplier Part Number Case II');
1157 SELECT msi.inventory_item_id,
1158 msi.concatenated_segments,
1159 msi.primary_uom_code
1160 INTO p_txn_lines_tbl_type(i).inventory_item_id
1161 ,p_txn_lines_tbl_type(i).item_number
1162 ,p_txn_lines_tbl_type(i).uom
1163 FROM mtl_system_items_kfv msi
1164 WHERE msi.purchasing_item_flag = 'Y'
1165 AND msi.shippable_item_flag = 'Y'
1166 AND msi.enabled_flag = 'Y'
1167 AND NVL(msi.consigned_flag,2) = 2 -- 2=unconsigned
1168 AND msi.mtl_transactions_enabled_flag = 'Y'
1169 AND msi.organization_id = p_txn_header_rec_type.inventory_organization_id
1170 AND msi.inventory_item_id = to_number(p_txn_lines_tbl_type(i).inventory_item_id)
1171 AND msi.primary_uom_code = nvl(p_txn_lines_tbl_type(i).uom,msi.primary_uom_code);
1172 ELSIF p_txn_lines_tbl_type(i).inventory_item_id IS NULL THEN
1173 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Validate Supplier Part Number Case III');
1174 SELECT msi.inventory_item_id,
1175 msi.concatenated_segments,
1176 msi.primary_uom_code
1177 INTO p_txn_lines_tbl_type(i).inventory_item_id
1178 ,p_txn_lines_tbl_type(i).item_number
1179 ,p_txn_lines_tbl_type(i).uom
1180 FROM mtl_system_items_kfv msi
1181 WHERE msi.purchasing_item_flag = 'Y'
1182 AND msi.shippable_item_flag = 'Y'
1183 AND msi.enabled_flag = 'Y'
1184 AND NVL(msi.consigned_flag,2) = 2 -- 2=unconsigned
1185 AND msi.mtl_transactions_enabled_flag = 'Y'
1186 AND msi.organization_id = p_txn_header_rec_type.inventory_organization_id
1187 AND msi.concatenated_segments = p_txn_lines_tbl_type(i).item_number
1188 AND msi.primary_uom_code = nvl(p_txn_lines_tbl_type(i).uom,msi.primary_uom_code);
1189 END IF;
1190 EXCEPTION
1191 WHEN no_data_found THEN
1192 x_return_status := fnd_api.g_ret_sts_error;
1193 fnd_message.set_name('DPP', 'DPP_TXN_SUP_PART_NO_ERR');
1194 fnd_message.set_token('SUPPLIER_PART_NUM', p_txn_lines_tbl_type(i).supplier_part_num);
1195 fnd_message.set_token('ITEM_NUMBER', p_txn_lines_tbl_type(i).item_number);
1196 fnd_message.set_token('INVENTORY_ITEM_ID', p_txn_lines_tbl_type(i).inventory_item_id);
1197 fnd_message.set_token('UOM_CODE', p_txn_lines_tbl_type(i).uom);
1198 x_msg_data := fnd_message.get();
1199 p_txn_lines_tbl_type(i).error_code := 'DPP_TXN_SUP_PART_NO_ERR';
1200 IF p_txn_header_rec_type.error_code IS NULL THEN
1201 p_txn_header_rec_type.error_code := 'DPP_TXN_SUP_PART_NO_ERR';
1202 ELSE
1203 p_txn_header_rec_type.error_code := 'MULTIPLE_ERRORS';
1204 END IF;
1205 IF (l_error_message is null or length(l_error_message) < 2000) and l_msg_exceeded = 'N' THEN
1206 l_error_message :=l_error_message|| x_msg_data;
1207 ELSE
1208 l_msg_exceeded := 'Y';
1209 fnd_message.set_name('DPP', 'DPP_ERROR_MSG_STD');
1210 x_msg_data := fnd_message.get();
1211 l_error_message := x_msg_data;
1212 END IF;
1213 END;
1214
1215 BEGIN --to get supplier part number for the item number or inventory item id
1216 IF p_txn_lines_tbl_type(i).supplier_part_num IS NOT NULL THEN
1217 BEGIN
1218 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Validate Supplier Part Number Case IV');
1219 SELECT occ.external_code
1220 INTO p_txn_lines_tbl_type(i).supplier_part_num
1221 FROM ozf_supp_trd_prfls_all ostpa,
1222 ozf_supp_code_conversions_all occ
1223 WHERE occ.internal_code = p_txn_lines_tbl_type(i).inventory_item_id
1224 AND occ.code_conversion_type = 'OZF_PRODUCT_CODES'
1225 AND occ.org_id = to_number(p_txn_header_rec_type.org_id)
1226 AND occ.supp_trade_profile_id = ostpa.supp_trade_profile_id
1227 AND ostpa.supplier_id = to_number(p_txn_header_rec_type.vendor_id)
1228 AND ostpa.supplier_site_id = to_number(p_txn_header_rec_type.vendor_site_id)
1229 AND (trunc(sysdate) between occ.start_date_active and occ.end_date_active OR occ.end_date_active is null)
1230 AND occ.external_code =p_txn_lines_tbl_type(i).supplier_part_num;
1231 EXCEPTION
1232 WHEN no_data_found THEN
1233 x_return_status := fnd_api.g_ret_sts_error;
1234 fnd_message.set_name('DPP', 'DPP_TXN_SUP_PART_NO_ERR');
1235 fnd_message.set_token('SUPPLIER_PART_NUM', p_txn_lines_tbl_type(i).supplier_part_num);
1236 fnd_message.set_token('ITEM_NUMBER', p_txn_lines_tbl_type(i).item_number);
1237 fnd_message.set_token('INVENTORY_ITEM_ID', p_txn_lines_tbl_type(i).inventory_item_id);
1238 fnd_message.set_token('UOM_CODE', p_txn_lines_tbl_type(i).uom);
1239 x_msg_data := fnd_message.get();
1240 p_txn_lines_tbl_type(i).error_code := 'DPP_TXN_SUP_PART_NO_ERR';
1241 IF p_txn_header_rec_type.error_code IS NULL THEN
1242 p_txn_header_rec_type.error_code := 'DPP_TXN_SUP_PART_NO_ERR';
1243 ELSE
1244 p_txn_header_rec_type.error_code := 'MULTIPLE_ERRORS';
1245 END IF;
1246
1247 IF (l_error_message is null or length(l_error_message) < 2000) and l_msg_exceeded = 'N' THEN
1248 l_error_message :=l_error_message|| x_msg_data;
1249 ELSE
1250 l_msg_exceeded := 'Y';
1251 fnd_message.set_name('DPP', 'DPP_ERROR_MSG_STD');
1252 x_msg_data := fnd_message.get();
1253 l_error_message := x_msg_data;
1254 END IF;
1255
1256 WHEN TOO_MANY_ROWS THEN
1257 fnd_message.set_name('DPP', 'DPP_TXN_DUP_SUP_PART_NUM_ERR');
1258 fnd_message.set_token('ITEM_NUMBER', p_txn_lines_tbl_type(i).item_number);
1259 fnd_message.set_token('INVENTORY_ITEM_ID', p_txn_lines_tbl_type(i).inventory_item_id);
1260 x_msg_data := fnd_message.get();
1261 p_txn_header_rec_type.error_code := 'DPP_TXN_DUP_SUP_PART_NUM_ERR';
1262 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
1263 IF (l_error_message is null or length(l_error_message) < 2000) and l_msg_exceeded = 'N' THEN
1264 l_error_message :=l_error_message|| x_msg_data;
1265 ELSE
1266 l_msg_exceeded := 'Y';
1267 fnd_message.set_name('DPP', 'DPP_ERROR_MSG_STD');
1268 x_msg_data := fnd_message.get();
1269 l_error_message := x_msg_data;
1270 END IF;
1271
1272 END;
1273 ELSE
1274 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Validate Supplier Part Number Case V');
1275 SELECT occ.external_code
1276 INTO p_txn_lines_tbl_type(i).supplier_part_num
1277 FROM ozf_supp_trd_prfls_all ostpa,
1278 ozf_supp_code_conversions_all occ
1279 WHERE occ.internal_code = p_txn_lines_tbl_type(i).inventory_item_id
1280 AND occ.code_conversion_type = 'OZF_PRODUCT_CODES'
1281 AND occ.org_id = to_number(p_txn_header_rec_type.org_id)
1282 AND occ.supp_trade_profile_id = ostpa.supp_trade_profile_id
1283 AND ostpa.supplier_id = to_number(p_txn_header_rec_type.vendor_id)
1284 AND ostpa.supplier_site_id = to_number(p_txn_header_rec_type.vendor_site_id)
1285 AND (trunc(sysdate) between occ.start_date_active and occ.end_date_active OR occ.end_date_active is null);
1286 END IF;
1287 EXCEPTION WHEN NO_DATA_FOUND THEN
1288 IF DPP_DEBUG_HIGH_ON THEN
1289 FND_FILE.PUT_LINE(FND_FILE.LOG,' Supplier Part Number does not exist for Item Number '|| p_txn_lines_tbl_type(i).item_number ||
1290 '( Inventory Item ID '|| p_txn_lines_tbl_type(i).inventory_item_id );
1291 END IF;
1292 WHEN TOO_MANY_ROWS THEN
1293 fnd_message.set_name('DPP', 'DPP_TXN_DUP_SUP_PART_NUM_ERR');
1294 fnd_message.set_token('ITEM_NUMBER', p_txn_lines_tbl_type(i).item_number);
1295 fnd_message.set_token('INVENTORY_ITEM_ID', p_txn_lines_tbl_type(i).inventory_item_id);
1296 x_msg_data := fnd_message.get();
1297 p_txn_lines_tbl_type(i).error_code := 'DPP_TXN_DUP_SUP_PART_NUM_ERR';
1298 IF p_txn_header_rec_type.error_code IS NULL THEN
1299 p_txn_header_rec_type.error_code := 'DPP_TXN_DUP_SUP_PART_NUM_ERR';
1300 ELSE
1301 p_txn_header_rec_type.error_code := 'MULTIPLE_ERRORS';
1302 END IF;
1303 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
1304 IF (l_error_message is null or length(l_error_message) < 2000) and l_msg_exceeded = 'N' THEN
1305 l_error_message :=l_error_message|| x_msg_data;
1306 ELSE
1307 l_msg_exceeded := 'Y';
1308 fnd_message.set_name('DPP', 'DPP_ERROR_MSG_STD');
1309 x_msg_data := fnd_message.get();
1310 l_error_message := x_msg_data;
1311 END IF;
1312
1313 END;
1314 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Validate Supplier Part Number Case V line number '|| i );
1315 ELSE
1316 BEGIN
1317 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Validate Supplier Part Number Case VI');
1318 SELECT occ.external_code
1319 ,occ.internal_code
1320 INTO p_txn_lines_tbl_type(i).supplier_part_num
1321 ,p_txn_lines_tbl_type(i).inventory_item_id
1322 FROM ozf_supp_trd_prfls_all ostpa,
1323 ozf_supp_code_conversions_all occ
1324 WHERE occ.code_conversion_type = 'OZF_PRODUCT_CODES'
1325 AND occ.org_id = to_number(p_txn_header_rec_type.org_id)
1326 AND occ.supp_trade_profile_id = ostpa.supp_trade_profile_id
1327 AND ostpa.supplier_id = to_number(p_txn_header_rec_type.vendor_id)
1328 AND ostpa.supplier_site_id = to_number(p_txn_header_rec_type.vendor_site_id)
1329 AND (trunc(sysdate) between occ.start_date_active and occ.end_date_active OR occ.end_date_active is null)
1330 AND occ.external_code =p_txn_lines_tbl_type(i).supplier_part_num;
1331 EXCEPTION WHEN NO_DATA_FOUND THEN
1332 x_return_status := fnd_api.g_ret_sts_error;
1333 fnd_message.set_name('DPP', 'DPP_TXN_SUP_PART_NO_ERR');
1334 fnd_message.set_token('SUPPLIER_PART_NUM', p_txn_lines_tbl_type(i).supplier_part_num);
1335 fnd_message.set_token('ITEM_NUMBER', p_txn_lines_tbl_type(i).item_number);
1336 fnd_message.set_token('INVENTORY_ITEM_ID', p_txn_lines_tbl_type(i).inventory_item_id);
1337 fnd_message.set_token('UOM_CODE', p_txn_lines_tbl_type(i).uom);
1338 x_msg_data := fnd_message.get();
1339 p_txn_lines_tbl_type(i).error_code := 'DPP_TXN_SUP_PART_NO_ERR';
1340 IF p_txn_header_rec_type.error_code IS NULL THEN
1341 p_txn_header_rec_type.error_code := 'DPP_TXN_SUP_PART_NO_ERR';
1342 ELSE
1343 p_txn_header_rec_type.error_code := 'MULTIPLE_ERRORS';
1344 END IF;
1345 IF (l_error_message is null or length(l_error_message) < 2000) and l_msg_exceeded = 'N' THEN
1346 l_error_message :=l_error_message|| x_msg_data;
1347 ELSE
1348 l_msg_exceeded := 'Y';
1349 fnd_message.set_name('DPP', 'DPP_ERROR_MSG_STD');
1350 x_msg_data := fnd_message.get();
1351
1352 l_error_message := x_msg_data;
1353 END IF;
1354
1355 WHEN TOO_MANY_ROWS THEN
1356 fnd_message.set_name('DPP', 'DPP_TXN_DUP_SUP_PART_NUM_ERR');
1357 fnd_message.set_token('ITEM_NUMBER', p_txn_lines_tbl_type(i).item_number);
1358 fnd_message.set_token('INVENTORY_ITEM_ID', p_txn_lines_tbl_type(i).inventory_item_id);
1359 x_msg_data := fnd_message.get();
1360 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
1361 p_txn_lines_tbl_type(i).error_code := 'DPP_TXN_DUP_SUP_PART_NUM_ERR';
1362 IF p_txn_header_rec_type.error_code IS NULL THEN
1363 p_txn_header_rec_type.error_code := 'DPP_TXN_DUP_SUP_PART_NUM_ERR';
1364 ELSE
1365 p_txn_header_rec_type.error_code := 'MULTIPLE_ERRORS';
1366 END IF;
1367 IF (l_error_message is null or length(l_error_message) < 2000) and l_msg_exceeded = 'N' THEN
1368 l_error_message :=l_error_message|| x_msg_data;
1369 ELSE
1370 l_msg_exceeded := 'Y';
1371 fnd_message.set_name('DPP', 'DPP_ERROR_MSG_STD');
1372 x_msg_data := fnd_message.get();
1373 l_error_message := x_msg_data;
1374 END IF;
1375
1376
1377
1378 END;
1379 END IF;
1380 --only for inbound
1381 IF p_txn_header_rec_type.supplier_approved_by is NULL THEN
1382 --Get List Price in Transaction Currency
1383 BEGIN
1384 IF l_error_message IS NULL THEN
1385 IF p_txn_lines_tbl_type(i).prior_price IS NULL THEN
1386 --get list price for the selected inventory organization id
1387 SELECT msi.LIST_PRICE_PER_UNIT list_price
1388 INTO p_txn_lines_tbl_type(i).list_price
1389 FROM mtl_system_items msi
1390 WHERE msi.inventory_item_id = to_number(p_txn_lines_tbl_type(i).inventory_item_id) and
1391 msi.organization_id = p_txn_header_rec_type.inventory_organization_id;
1392
1393 p_txn_lines_tbl_type(i).prior_price := p_txn_lines_tbl_type(i).list_price;
1394
1395
1396
1397
1398 IF p_txn_header_rec_type.functional_currency <> p_txn_header_rec_type.trx_currency THEN
1399 --call procedure to get prior price in transaction currency
1400 DPP_UTILITY_PVT.convert_currency(
1401 p_from_currency => p_txn_header_rec_type.functional_currency
1402 ,p_to_currency => p_txn_header_rec_type.trx_currency
1403 ,p_conv_type => FND_API.G_MISS_CHAR
1404 ,p_conv_rate => FND_API.G_MISS_NUM
1405 ,p_conv_date => SYSDATE
1406 ,p_from_amount => p_txn_lines_tbl_type(i).list_price
1407 ,x_return_status => x_return_status
1408 ,x_to_amount => p_txn_lines_tbl_type(i).prior_price
1409 ,x_rate => l_exchange_rate);
1410
1411 IF x_return_status <>fnd_api.g_ret_sts_success THEN
1412 fnd_message.set_name('DPP', 'DPP_TXN_CONV_PRICE_ER');
1413 fnd_message.set_token('ITEM_NUMBER', p_txn_lines_tbl_type(i).item_number);
1414 x_msg_data := fnd_message.get();
1415 p_txn_lines_tbl_type(i).error_code := 'DPP_TXN_CONV_PRICE_ER';
1416 IF p_txn_header_rec_type.error_code IS NULL THEN
1417 p_txn_header_rec_type.error_code := 'DPP_TXN_CONV_PRICE_ER';
1418 ELSE
1419 p_txn_header_rec_type.error_code := 'MULTIPLE_ERRORS';
1420 END IF;
1421 x_return_status := fnd_api.g_ret_sts_error;
1422 l_error_message :=l_error_message|| x_msg_data;
1423 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
1424 END IF;
1425 END IF;
1426 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Prior Price:'||p_txn_lines_tbl_type(i).prior_price);
1427 IF p_txn_lines_tbl_type(i).prior_price IS NULL THEN
1428 fnd_message.set_name('DPP', 'DPP_TXN_SUP_PART_LIST_PRICE_ER');
1429 fnd_message.set_token('ITEM_NUMBER', p_txn_lines_tbl_type(i).item_number);
1430 x_msg_data := fnd_message.get();
1431 p_txn_lines_tbl_type(i).error_code := 'DPP_TXN_SUP_PART_LIST_PRICE_ER';
1432 IF p_txn_header_rec_type.error_code IS NULL THEN
1433 p_txn_header_rec_type.error_code := 'DPP_TXN_SUP_PART_LIST_PRICE_ER';
1434 ELSE
1435 p_txn_header_rec_type.error_code := 'MULTIPLE_ERRORS';
1436 END IF;
1437 x_return_status := fnd_api.g_ret_sts_error;
1438 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
1439 IF (l_error_message is null or length(l_error_message) < 2000) and l_msg_exceeded = 'N' THEN
1440 l_error_message :=l_error_message|| x_msg_data;
1441 ELSE
1442 l_msg_exceeded := 'Y';
1443 fnd_message.set_name('DPP', 'DPP_ERROR_MSG_STD');
1444 x_msg_data := fnd_message.get();
1445 l_error_message := x_msg_data;
1446 END IF;
1447 END IF;
1448 END IF;
1449 END IF;
1450 EXCEPTION
1451 WHEN no_data_found THEN
1452 fnd_message.set_name('DPP', 'DPP_TXN_SUP_PART_LIST_PRICE_ER');
1453 fnd_message.set_token('ITEM_NUMBER', p_txn_lines_tbl_type(i).item_number);
1454 x_msg_data := fnd_message.get();
1455 p_txn_lines_tbl_type(i).error_code := 'DPP_TXN_SUP_PART_LIST_PRICE_ER';
1456 IF p_txn_header_rec_type.error_code IS NULL THEN
1457 p_txn_header_rec_type.error_code := 'DPP_TXN_SUP_PART_LIST_PRICE_ER';
1458 ELSE
1459 p_txn_header_rec_type.error_code := 'MULTIPLE_ERRORS';
1460 END IF;
1461 x_return_status := fnd_api.g_ret_sts_error;
1462 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
1463 IF (l_error_message is null or length(l_error_message) < 2000) and l_msg_exceeded = 'N' THEN
1464 l_error_message :=l_error_message|| x_msg_data;
1465 ELSE
1466 l_msg_exceeded := 'Y';
1467 fnd_message.set_name('DPP', 'DPP_ERROR_MSG_STD');
1468 x_msg_data := fnd_message.get();
1469 l_error_message := x_msg_data;
1470 END IF;
1471 END;
1472
1473 --Validation for Prior Price --ANBBALAS
1474 IF p_txn_lines_tbl_type(i).prior_price <= 0 THEN
1475 FND_FILE.PUT_LINE(FND_FILE.LOG,' Prior Price is either zero or negative');
1476 fnd_message.set_name('DPP', 'DPP_PRIOR_PRICE_ERR');
1477 x_msg_data := fnd_message.get();
1478 p_txn_lines_tbl_type(i).error_code := 'DPP_PRIOR_PRICE_ERR';
1479 IF p_txn_header_rec_type.error_code IS NULL THEN
1480 p_txn_header_rec_type.error_code := 'DPP_PRIOR_PRICE_ERR';
1481 ELSE
1482 p_txn_header_rec_type.error_code := 'MULTIPLE_ERRORS';
1483 END IF;
1484 IF (l_error_message is null or length(l_error_message) < 2000) and l_msg_exceeded = 'N' THEN
1485 l_error_message :=l_error_message|| x_msg_data;
1486 ELSE
1487 l_msg_exceeded := 'Y';
1488 fnd_message.set_name('DPP', 'DPP_ERROR_MSG_STD');
1489 x_msg_data := fnd_message.get();
1490 l_error_message := x_msg_data;
1491 END IF;
1492 END IF;
1493
1494 --Validation for Change Value
1495 IF p_txn_lines_tbl_type(i).change_value IS NULL THEN
1496 FND_FILE.PUT_LINE(FND_FILE.LOG,' Change Value is null');
1497 fnd_message.set_name('DPP', 'DPP_CHANGE_VALUE_NULL');
1498 x_msg_data := fnd_message.get();
1499 p_txn_lines_tbl_type(i).error_code := 'DPP_CHANGE_VALUE_NULL';
1500 IF p_txn_header_rec_type.error_code IS NULL THEN
1501 p_txn_header_rec_type.error_code := 'DPP_CHANGE_VALUE_NULL';
1502 ELSE
1503 p_txn_header_rec_type.error_code := 'MULTIPLE_ERRORS';
1504 END IF;
1505 IF (l_error_message is null or length(l_error_message) < 2000) and l_msg_exceeded = 'N' THEN
1506 l_error_message :=l_error_message|| x_msg_data;
1507 ELSE
1508 l_msg_exceeded := 'Y';
1509 fnd_message.set_name('DPP', 'DPP_ERROR_MSG_STD');
1510 x_msg_data := fnd_message.get();
1511 l_error_message := x_msg_data;
1512 END IF;
1513 END IF;
1514
1515 IF p_txn_lines_tbl_type(i).change_type IS NULL THEN
1516 FND_FILE.PUT_LINE(FND_FILE.LOG,' Change type is null');
1517 fnd_message.set_name('DPP', 'DPP_CHANGE_TYPE_NULL');
1518 x_msg_data := fnd_message.get();
1519 p_txn_lines_tbl_type(i).error_code := 'DPP_CHANGE_TYPE_NULL';
1520 IF p_txn_header_rec_type.error_code IS NULL THEN
1521 p_txn_header_rec_type.error_code := 'DPP_CHANGE_TYPE_NULL';
1522 ELSE
1523 p_txn_header_rec_type.error_code := 'MULTIPLE_ERRORS';
1524 END IF;
1525 IF (l_error_message is null or length(l_error_message) < 2000) and l_msg_exceeded = 'N' THEN
1526 l_error_message :=l_error_message|| x_msg_data;
1527 ELSE
1528 l_msg_exceeded := 'Y';
1529 fnd_message.set_name('DPP', 'DPP_ERROR_MSG_STD');
1530 x_msg_data := fnd_message.get();
1531 l_error_message := x_msg_data;
1532 END IF;
1533 END IF;
1534
1535
1536
1537 --Calculate Supplier New Price and Price change columns
1538
1539 IF p_txn_lines_tbl_type(i).change_type = 'NEW_PRICE' THEN
1540 IF p_txn_lines_tbl_type(i).change_value <= 0 THEN
1541 FND_FILE.PUT_LINE(FND_FILE.LOG,' Negative Price Change Value:' || p_txn_lines_tbl_type(i).change_value ||'. Please enter a valid Change value.');
1542 fnd_message.set_name('DPP', 'DPP_TXN_CHANGE_VALUE_ERR');
1543 fnd_message.set_token('CHANGE_VALUE', p_txn_lines_tbl_type(i).change_value );
1544 x_msg_data := fnd_message.get();
1545 p_txn_lines_tbl_type(i).error_code := 'DPP_TXN_CHANGE_VALUE_ERR';
1546 IF p_txn_header_rec_type.error_code IS NULL THEN
1547 p_txn_header_rec_type.error_code := 'DPP_TXN_CHANGE_VALUE_ERR';
1548 ELSE
1549 p_txn_header_rec_type.error_code := 'MULTIPLE_ERRORS';
1550 END IF;
1551 IF (l_error_message is null or length(l_error_message) < 2000) and l_msg_exceeded = 'N' THEN
1552 l_error_message :=l_error_message|| x_msg_data;
1553 ELSE
1554 l_msg_exceeded := 'Y';
1555 fnd_message.set_name('DPP', 'DPP_ERROR_MSG_STD');
1556 x_msg_data := fnd_message.get();
1557 l_error_message := x_msg_data;
1558 END IF;
1559 ELSE
1560 p_txn_lines_tbl_type(i).supplier_new_price := p_txn_lines_tbl_type(i).change_value;
1561 END IF;
1562 ELSIF p_txn_lines_tbl_type(i).change_type = 'PERCENT_DECREASE' THEN
1563 IF p_txn_lines_tbl_type(i).change_value <= 0 OR p_txn_lines_tbl_type(i).change_value >= 100 THEN
1564 FND_FILE.PUT_LINE(FND_FILE.LOG,' Invalid Price Change Value:' || p_txn_lines_tbl_type(i).change_value || 'for the change type Percent Decrease. Please enter a valid Change value.');
1565 fnd_message.set_name('DPP', 'DPP_TXN_CHANGE_VALUE_ERR');
1566 fnd_message.set_token('CHANGE_VALUE', p_txn_lines_tbl_type(i).change_value );
1567 x_msg_data := fnd_message.get();
1568 p_txn_lines_tbl_type(i).error_code := 'DPP_TXN_CHANGE_VALUE_ERR';
1569 IF p_txn_header_rec_type.error_code IS NULL THEN
1570 p_txn_header_rec_type.error_code := 'DPP_TXN_CHANGE_VALUE_ERR';
1571 ELSE
1572 p_txn_header_rec_type.error_code := 'MULTIPLE_ERRORS';
1573 END IF;
1574 IF (l_error_message is null or length(l_error_message) < 2000) and l_msg_exceeded = 'N' THEN
1575 l_error_message :=l_error_message|| x_msg_data;
1576 ELSE
1577 l_msg_exceeded := 'Y';
1578 fnd_message.set_name('DPP', 'DPP_ERROR_MSG_STD');
1579 x_msg_data := fnd_message.get();
1580 l_error_message := x_msg_data;
1581 END IF;
1582 ELSE
1583 p_txn_lines_tbl_type(i).supplier_new_price := (p_txn_lines_tbl_type(i).prior_price-(p_txn_lines_tbl_type(i).prior_price*( p_txn_lines_tbl_type(i).change_value) / 100));
1584 END IF;
1585
1586 ELSIF p_txn_lines_tbl_type(i).change_type = 'PERCENT_INCREASE' THEN
1587 IF p_txn_lines_tbl_type(i).change_value <= 0 THEN
1588 FND_FILE.PUT_LINE(FND_FILE.LOG,' Invalid Price Change Value:' || p_txn_lines_tbl_type(i).change_value || 'for the change type Percent Increase. Please enter a valid Change value.');
1589 fnd_message.set_name('DPP', 'DPP_TXN_CHANGE_VALUE_ERR');
1590 fnd_message.set_token('CHANGE_VALUE', p_txn_lines_tbl_type(i).change_value );
1591 x_msg_data := fnd_message.get();
1592 p_txn_lines_tbl_type(i).error_code := 'DPP_TXN_CHANGE_VALUE_ERR';
1593 IF p_txn_header_rec_type.error_code IS NULL THEN
1594 p_txn_header_rec_type.error_code := 'DPP_TXN_CHANGE_VALUE_ERR';
1595 ELSE
1596 p_txn_header_rec_type.error_code := 'MULTIPLE_ERRORS';
1597 END IF;
1598 IF (l_error_message is null or length(l_error_message) < 2000) and l_msg_exceeded = 'N' THEN
1599 l_error_message :=l_error_message|| x_msg_data;
1600 ELSE
1601 l_msg_exceeded := 'Y';
1602 fnd_message.set_name('DPP', 'DPP_ERROR_MSG_STD');
1603 x_msg_data := fnd_message.get();
1604 l_error_message := x_msg_data;
1605 END IF;
1606 ELSE
1607 p_txn_lines_tbl_type(i).supplier_new_price := (p_txn_lines_tbl_type(i).prior_price+(p_txn_lines_tbl_type(i).prior_price*( p_txn_lines_tbl_type(i).change_value) / 100));
1608 END IF;
1609 ELSIF p_txn_lines_tbl_type(i).change_type = 'AMOUNT_INCREASE' THEN
1610 IF p_txn_lines_tbl_type(i).change_value <= 0 THEN
1611 FND_FILE.PUT_LINE(FND_FILE.LOG,' Invalid Price Change Value:' || p_txn_lines_tbl_type(i).change_value || 'for the change type Amount Increase. Please enter a valid Change value.');
1612 fnd_message.set_name('DPP', 'DPP_TXN_CHANGE_VALUE_ERR');
1613 fnd_message.set_token('CHANGE_VALUE', p_txn_lines_tbl_type(i).change_value );
1614 x_msg_data := fnd_message.get();
1615 p_txn_lines_tbl_type(i).error_code := 'DPP_TXN_CHANGE_VALUE_ERR';
1616 IF p_txn_header_rec_type.error_code IS NULL THEN
1617 p_txn_header_rec_type.error_code := 'DPP_TXN_CHANGE_VALUE_ERR';
1618 ELSE
1619 p_txn_header_rec_type.error_code := 'MULTIPLE_ERRORS';
1620 END IF;
1621 IF (l_error_message is null or length(l_error_message) < 2000) and l_msg_exceeded = 'N' THEN
1622 l_error_message :=l_error_message|| x_msg_data;
1623 ELSE
1624 l_msg_exceeded := 'Y';
1625 fnd_message.set_name('DPP', 'DPP_ERROR_MSG_STD');
1626 x_msg_data := fnd_message.get();
1627 l_error_message := x_msg_data;
1628 END IF;
1629 ELSE
1630 p_txn_lines_tbl_type(i).supplier_new_price := p_txn_lines_tbl_type(i).prior_price + p_txn_lines_tbl_type(i).change_value;
1631 END IF;
1632 ELSIF p_txn_lines_tbl_type(i).change_type = 'AMOUNT_DECREASE' THEN
1633 IF (p_txn_lines_tbl_type(i).change_value <= 0 OR
1634 (p_txn_lines_tbl_type(i).prior_price > 0 AND p_txn_lines_tbl_type(i).change_value >= p_txn_lines_tbl_type(i).prior_price) ) THEN
1635 FND_FILE.PUT_LINE(FND_FILE.LOG,' Invalid Price Change Value:' || p_txn_lines_tbl_type(i).change_value || 'for the change type Amount Decrease. Please enter a valid Change value.');
1636 fnd_message.set_name('DPP', 'DPP_TXN_CHANGE_VALUE_ERR');
1637 fnd_message.set_token('CHANGE_VALUE', p_txn_lines_tbl_type(i).change_value );
1638 x_msg_data := fnd_message.get();
1639 p_txn_lines_tbl_type(i).error_code := 'DPP_TXN_CHANGE_VALUE_ERR';
1640 IF p_txn_header_rec_type.error_code IS NULL THEN
1641 p_txn_header_rec_type.error_code := 'DPP_TXN_CHANGE_VALUE_ERR';
1642 ELSE
1643 p_txn_header_rec_type.error_code := 'MULTIPLE_ERRORS';
1644 END IF;
1645 IF (l_error_message is null or length(l_error_message) < 2000) and l_msg_exceeded = 'N' THEN
1646 l_error_message :=l_error_message|| x_msg_data;
1647 ELSE
1648 l_msg_exceeded := 'Y';
1649 fnd_message.set_name('DPP', 'DPP_ERROR_MSG_STD');
1650 x_msg_data := fnd_message.get();
1651 l_error_message := x_msg_data;
1652 END IF;
1653 ELSE
1654 p_txn_lines_tbl_type(i).supplier_new_price := p_txn_lines_tbl_type(i).prior_price - p_txn_lines_tbl_type(i).change_value;
1655 END IF;
1656
1657 ELSE
1658 FND_FILE.PUT_LINE(FND_FILE.LOG,' Invalid Price Change type:' || p_txn_lines_tbl_type(i).change_type ||'. Please enter a valid Change type.');
1659 fnd_message.set_name('DPP', 'DPP_TXN_CHANGE_TYPE_ERR');
1660 fnd_message.set_token('CHANGE_TYPE', p_txn_lines_tbl_type(i).change_type );
1661 x_msg_data := fnd_message.get();
1662 p_txn_lines_tbl_type(i).error_code := 'DPP_TXN_CHANGE_TYPE_ERR';
1663 IF p_txn_header_rec_type.error_code IS NULL THEN
1664 p_txn_header_rec_type.error_code := 'DPP_TXN_CHANGE_TYPE_ERR';
1665 ELSE
1666 p_txn_header_rec_type.error_code := 'MULTIPLE_ERRORS';
1667 END IF;
1668 IF (l_error_message is null or length(l_error_message) < 2000) and l_msg_exceeded = 'N' THEN
1669 l_error_message :=l_error_message|| x_msg_data;
1670 ELSE
1671 l_msg_exceeded := 'Y';
1672 fnd_message.set_name('DPP', 'DPP_ERROR_MSG_STD');
1673 x_msg_data := fnd_message.get();
1674 l_error_message := x_msg_data;
1675 END IF;
1676 --RAISE Fnd_Api.G_EXC_ERROR;
1677 END IF;
1678
1679 --Price change field
1680 p_txn_lines_tbl_type(i).price_change := p_txn_lines_tbl_type(i).prior_price - p_txn_lines_tbl_type(i).supplier_new_price;
1681 --end if;
1682 END IF;
1683
1684 IF DPP_DEBUG_HIGH_ON THEN
1685 FND_FILE.PUT_LINE(FND_FILE.LOG,' Price Change: '||p_txn_lines_tbl_type(i).price_change);
1686 END IF;
1687 END LOOP;
1688 IF l_error_message IS NOT NULL THEN
1689 x_msg_data := substr(l_error_message,1,2000);
1690 RAISE Fnd_Api.G_EXC_ERROR;
1691 END IF;
1692
1693 IF DPP_DEBUG_HIGH_ON THEN
1694 FND_FILE.PUT_LINE(FND_FILE.LOG,' End Validate Supplier Part Number');
1695 END IF;
1696 EXCEPTION
1697 WHEN Fnd_Api.G_EXC_ERROR THEN
1698 x_return_status := Fnd_Api.g_ret_sts_error ;
1699 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, 'Validate Supplier part number Error: ' || sqlerrm);
1700 WHEN Fnd_Api.G_EXC_UNEXPECTED_ERROR THEN
1701 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
1702 WHEN OTHERS THEN
1703 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
1704 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
1705 fnd_message.set_name('FND', 'SQL_PLSQL_ERROR');
1706 fnd_message.set_token('ROUTINE', 'DPP_TRANSACTION_PVT VALIDATE SUPPLIER PART NUMBER');
1707 fnd_message.set_token('ERRNO', SQLCODE);
1708 fnd_message.set_token('REASON', sqlerrm);
1709 END IF;
1710 x_msg_data := fnd_message.get();
1711 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
1712 END Validate_SupplierPartNum;
1713
1714
1715 PROCEDURE Create_lines(
1716 p_txn_header_rec_type IN OUT nocopy txn_header_rec
1717 ,p_txn_lines_tbl_type IN OUT nocopy txn_lines_tbl
1718 ,x_msg_count OUT nocopy NUMBER
1719 ,x_msg_data OUT nocopy VARCHAR2
1720 ,x_return_status OUT nocopy VARCHAR2)
1721 AS
1722 l_api_name constant VARCHAR2(30) := 'Create_lines';
1723 l_full_name constant VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
1724 l_transaction_line_id NUMBER;
1725 l_user_id NUMBER :=FND_PROFILE.VALUE('USER_ID');
1726 l_error_message VARCHAR2(4000);
1727 l_rounding NUMBER;
1728 BEGIN
1729 -- Initialize API return status to sucess
1730 x_return_status := fnd_api.g_ret_sts_success;
1731 IF DPP_DEBUG_HIGH_ON THEN
1732 FND_FILE.PUT_LINE(FND_FILE.LOG,' Begin Create Lines');
1733 END IF;
1734
1735
1736 SELECT fnd_profile.VALUE('DPP_NEW_PRICE_DECIMAL_PRECISION')
1737 INTO l_rounding
1738 FROM dual;
1739
1740 IF l_rounding IS NULL THEN
1741 l_rounding := 4;
1742 END IF;
1743
1744
1745 FOR i in p_txn_lines_tbl_type.FIRST..p_txn_lines_tbl_type.LAST
1746 LOOP
1747 IF DPP_DEBUG_HIGH_ON THEN
1748 FND_FILE.PUT_LINE(FND_FILE.LOG,' Line');
1749 FND_FILE.PUT_LINE(FND_FILE.LOG,' Transaction Header Id'||p_txn_lines_tbl_type(i).transaction_header_id);
1750 FND_FILE.PUT_LINE(FND_FILE.LOG,' Supplier Part Num'||p_txn_lines_tbl_type(i).supplier_part_num);
1751 FND_FILE.PUT_LINE(FND_FILE.LOG,' Inventory Item ID'||p_txn_lines_tbl_type(i).inventory_item_id);
1752 END IF;
1753 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Prior Price Create Lines:'||p_txn_lines_tbl_type(i).prior_price);
1754 -- Insert lines into dpp_transaction_lines_all table
1755 INSERT INTO dpp_transaction_lines_all(
1756 object_version_number
1757 , transaction_header_id
1758 , transaction_line_id
1759 , supplier_part_num
1760 , line_number
1761 , prior_price
1762 , change_type
1763 , change_value
1764 , price_change
1765 , covered_inventory
1766 , approved_inventory
1767 , uom
1768 , org_id
1769 , orig_sys_document_line_ref
1770 , creation_date
1771 , created_by
1772 , last_update_date
1773 , last_updated_by
1774 , last_update_login
1775 , request_id
1776 , program_application_id
1777 , program_id
1778 , program_update_date
1779 , attribute_category
1780 , attribute1
1781 , attribute2
1782 , attribute3
1783 , attribute4
1784 , attribute5
1785 , attribute6
1786 , attribute7
1787 , attribute8
1788 , attribute9
1789 , attribute10
1790 , attribute11
1791 , attribute12
1792 , attribute13
1793 , attribute14
1794 , attribute15
1795 , attribute16
1796 , attribute17
1797 , attribute18
1798 , attribute19
1799 , attribute20
1800 , attribute21
1801 , attribute22
1802 , attribute23
1803 , attribute24
1804 , attribute25
1805 , attribute26
1806 , attribute27
1807 , attribute28
1808 , attribute29
1809 , attribute30
1810 , inventory_item_id
1811 , supplier_new_price
1812 , last_calculated_by
1813 , last_calculated_date
1814 , claim_amount
1815 , supp_dist_claim_id
1816 , update_purchasing_docs
1817 , notify_purchasing_docs
1818 , update_inventory_costing
1819 , update_item_list_price
1820 , supp_dist_claim_status
1821 , onhand_inventory
1822 , manually_adjusted
1823 , notify_inbound_pricelist
1824 , notify_outbound_pricelist
1825 ,notify_promotions_pricelist)
1826 VALUES(
1827 1.0
1828 , p_txn_lines_tbl_type(i).transaction_header_id
1829 , p_txn_lines_tbl_type(i).transaction_line_id
1830 , p_txn_lines_tbl_type(i).supplier_part_num
1831 , p_txn_lines_tbl_type(i).line_number
1832 , ROUND(nvl(p_txn_lines_tbl_type(i).prior_price,0),l_rounding)
1833 , p_txn_lines_tbl_type(i).change_type
1834 , ROUND(p_txn_lines_tbl_type(i).change_value,l_rounding)
1835 , ROUND(p_txn_lines_tbl_type(i).price_change,l_rounding)
1836 , p_txn_lines_tbl_type(i).covered_inventory
1837 , p_txn_lines_tbl_type(i).approved_inventory
1838 , p_txn_lines_tbl_type(i).uom
1839 , p_txn_lines_tbl_type(i).org_id
1840 , p_txn_lines_tbl_type(i).orig_sys_document_line_ref
1841 , sysdate --
1842 , NVL(l_user_id,0) --created_by
1843 , sysdate --last_update_date
1844 , NVL(l_user_id,0)--p_txn_lines_tbl_type(i).last_updated_by
1845 , NVL(l_user_id,0)--p_txn_lines_tbl_type(i).last_update_login
1846 , p_txn_lines_tbl_type(i).request_id --request_id
1847 , p_txn_lines_tbl_type(i).program_application_id --program_application_id
1848 , p_txn_lines_tbl_type(i).program_id --program_id
1849 , p_txn_lines_tbl_type(i).program_update_date --program_update_date
1850 , p_txn_lines_tbl_type(i).attribute_category --attribute_category
1851 , p_txn_lines_tbl_type(i).attribute1 --attribute1
1852 , p_txn_lines_tbl_type(i).attribute2 --attribute2
1853 , p_txn_lines_tbl_type(i).attribute3 --attribute3
1854 , p_txn_lines_tbl_type(i).attribute4 --attribute4
1855 , p_txn_lines_tbl_type(i).attribute5 --attribute5
1856 , p_txn_lines_tbl_type(i).attribute6 --attribute6
1857 , p_txn_lines_tbl_type(i).attribute7 --attribute7
1858 , p_txn_lines_tbl_type(i).attribute8 --attribute8
1859 , p_txn_lines_tbl_type(i).attribute9 --attribute9
1860 , p_txn_lines_tbl_type(i).attribute10 --attribute10
1861 , p_txn_lines_tbl_type(i).attribute11 --attribute11
1862 , p_txn_lines_tbl_type(i).attribute12 --attribute12
1863 , p_txn_lines_tbl_type(i).attribute13 --attribute13
1864 , p_txn_lines_tbl_type(i).attribute14 --attribute14
1865 , p_txn_lines_tbl_type(i).attribute15 --attribute15
1866 , p_txn_lines_tbl_type(i).attribute16 --attribute16
1867 , p_txn_lines_tbl_type(i).attribute17 --attribute17
1868 , p_txn_lines_tbl_type(i).attribute18 --attribute18
1869 , p_txn_lines_tbl_type(i).attribute19 --attribute19
1870 , p_txn_lines_tbl_type(i).attribute20 --attribute20
1871 , p_txn_lines_tbl_type(i).attribute21 --attribute21
1872 , p_txn_lines_tbl_type(i).attribute22 --attribute22
1873 , p_txn_lines_tbl_type(i).attribute23 --attribute23
1874 , p_txn_lines_tbl_type(i).attribute24 --attribute24
1875 , p_txn_lines_tbl_type(i).attribute25 --attribute25
1876 , p_txn_lines_tbl_type(i).attribute26 --attribute26
1877 , p_txn_lines_tbl_type(i).attribute27 --attribute27
1878 , p_txn_lines_tbl_type(i).attribute28 --attribute28
1879 , p_txn_lines_tbl_type(i).attribute29 --attribute29
1880 , p_txn_lines_tbl_type(i).attribute30 --attribute30
1881 , p_txn_lines_tbl_type(i).inventory_item_id
1882 , p_txn_lines_tbl_type(i).supplier_new_price
1883 , null --p_txn_lines_tbl_type(i).last_calculated_by
1884 , null --p_txn_lines_tbl_type(i).last_calculated_date
1885 , null --p_txn_lines_tbl_type(i).claim_amount
1886 , null --p_txn_lines_tbl_type(i).supp_dist_claim_id
1887 , 'N' --p_txn_lines_tbl_type(i).update_purchasing_docs
1888 , 'N' --p_txn_lines_tbl_type(i).notify_purchasing_docs
1889 , 'N' --p_txn_lines_tbl_type(i).update_inventory_costing
1890 , 'N' --p_txn_lines_tbl_type(i).update_item_list_price
1891 , 'N' --p_txn_lines_tbl_type(i).supp_dist_claim_status
1892 , null--p_txn_lines_tbl_type(i).onhand_inventory
1893 , 'N'--p_txn_lines_tbl_type(i).notify_purchasing_docs
1894 , 'N' --p_txn_lines_tbl_type(i).notify_inbound_pricelist
1895 , 'N'--p_txn_lines_tbl_type(i).notify_outbound_pricelist
1896 , 'N'--p_txn_lines_tbl_type(i).notify_promotions_pricelist
1897 );
1898 END LOOP; --FOR i in p_txn_lines_tbl_type.FIRST..p_txn_lines_tbl_type.LAST
1899 IF DPP_DEBUG_HIGH_ON THEN
1900 FND_FILE.PUT_LINE(FND_FILE.LOG,' End Create Lines');
1901 END IF;
1902 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'End Create Lines'|| sqlerrm);
1903 EXCEPTION
1904 WHEN Fnd_Api.G_EXC_ERROR THEN
1905 x_return_status := Fnd_Api.g_ret_sts_error ;
1906 WHEN Fnd_Api.G_EXC_UNEXPECTED_ERROR THEN
1907 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
1908 WHEN OTHERS THEN
1909 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, 'Exception Create Lines'||sqlerrm);
1910 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
1911 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
1912 fnd_message.set_name('FND', 'SQL_PLSQL_ERROR');
1913 fnd_message.set_token('ROUTINE', l_full_name);
1914 fnd_message.set_token('ERRNO', SQLCODE);
1915 fnd_message.set_token('REASON', sqlerrm);
1916 END IF;
1917 x_msg_data := fnd_message.get();
1918 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
1919 END Create_lines;
1920
1921
1922 PROCEDURE Update_CoveredInv(
1923 p_txn_header_rec_type IN OUT nocopy txn_header_rec
1924 ,p_txn_lines_tbl_type IN OUT nocopy txn_lines_tbl
1925 ,x_msg_count OUT nocopy NUMBER
1926 ,x_msg_data OUT nocopy VARCHAR2
1927 ,x_return_status OUT nocopy VARCHAR2)
1928 AS
1929 l_api_name constant VARCHAR2(30) := 'Update_CoveredInv';
1930 l_api_version constant NUMBER := 1.0;
1931 l_full_name constant VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
1932 l_init_msg_list VARCHAR2(30) := FND_API.G_TRUE;
1933 l_commit VARCHAR2(30) := FND_API.G_FALSE;
1934 l_validation_level NUMBER := FND_API.G_VALID_LEVEL_FULL;
1935 --Declaration for Covered Inventory Calculation
1936 l_header_rec_type dpp_coveredinventory_pvt.dpp_inv_hdr_rec_type;
1937 l_line_tbl_type dpp_coveredinventory_pvt.dpp_inv_cov_tbl_type;
1938 l_inv_cov_wh_tbl_type dpp_coveredinventory_pvt.dpp_inv_cov_wh_tbl_type;
1939 l_user_id NUMBER :=FND_PROFILE.VALUE('USER_ID');
1940
1941 l_price_change_flag VARCHAR2(20);
1942
1943 BEGIN
1944 SAVEPOINT DPP_Update_CoveredInv;
1945
1946 -- Initialize API return status to sucess
1947 x_return_status := fnd_api.g_ret_sts_success;
1948 IF DPP_DEBUG_HIGH_ON THEN
1949 FND_FILE.PUT_LINE(FND_FILE.LOG,' Begin Update Covered Inventory');
1950 END IF;
1951 --Form Header rec to call covered inventory procedure
1952 l_header_rec_type.transaction_header_id :=p_txn_header_rec_type.transaction_header_id;
1953 l_header_rec_type.org_id := p_txn_header_rec_type.org_id;
1954 --BUG 6806974
1955 IF p_txn_header_rec_type.days_covered IS NULL THEN
1956 l_header_rec_type.effective_start_date := TO_DATE('01/01/1900','DD/MM/YYYY');
1957 ELSE
1958 l_header_rec_type.effective_start_date := p_txn_header_rec_type.effective_start_date - p_txn_header_rec_type.days_covered ;
1959 END IF;
1960 l_header_rec_type.effective_end_date :=(p_txn_header_rec_type.effective_start_date);
1961 l_header_rec_type.last_updated_by :=p_txn_header_rec_type.last_updated_by;
1962 IF DPP_DEBUG_HIGH_ON THEN
1963 FND_FILE.PUT_LINE(FND_FILE.LOG,' Update_CoveredInv Rec type Transaction Header Id: '||l_header_rec_type.transaction_header_id);
1964 FND_FILE.PUT_LINE(FND_FILE.LOG,' Update_CoveredInv Rec type Org_ID'||l_header_rec_type.org_id);
1965 FND_FILE.PUT_LINE(FND_FILE.LOG,' Update_CoveredInv Rec type Effective Start Date'|| l_header_rec_type.effective_start_date);
1966 FND_FILE.PUT_LINE(FND_FILE.LOG,' Update_CoveredInv Rec type Effective End Date'||l_header_rec_type.effective_end_date);
1967 END IF;
1968 --Form Line table to to get covered Inventory Details DPP_UTILITY_PVT.Get_CoveredInventory
1969 FOR i in p_txn_lines_tbl_type.FIRST..p_txn_lines_tbl_type.LAST
1970 LOOP
1971
1972 l_line_tbl_type(i).transaction_line_id := p_txn_lines_tbl_type(i).transaction_line_id;
1973 l_line_tbl_type(i).inventory_item_id := to_number(p_txn_lines_tbl_type(i).inventory_item_id);
1974 l_line_tbl_type(i).uom_code := p_txn_lines_tbl_type(i).uom;
1975 l_line_tbl_type(i).wh_line_tbl := l_inv_cov_wh_tbl_type;
1976
1977 IF DPP_DEBUG_HIGH_ON THEN
1978 FND_FILE.PUT_LINE(FND_FILE.LOG,' Update_CoveredInv TBL type Transaction Line Id'||l_line_tbl_type(i).transaction_line_id);
1979 FND_FILE.PUT_LINE(FND_FILE.LOG,' Update_CoveredInv TBL type Inventory Item ID'||l_line_tbl_type(i).inventory_item_id);
1980 FND_FILE.PUT_LINE(FND_FILE.LOG,' Update_CoveredInv TBL type UOM Code'||l_line_tbl_type(i).uom_code);
1981 END IF;
1982 END LOOP; -- FOR i in p_txn_lines_tbl_type.FIRST..p_txn_lines_tbl_type.LAST
1983 --Update Covered Inventory Value
1984 DPP_COVEREDINVENTORY_PVT.Select_CoveredInventory(
1985 p_api_version => l_api_version
1986 ,p_init_msg_list => l_init_msg_list
1987 ,p_commit => l_commit
1988 ,p_validation_level => l_validation_level
1989 ,x_return_status => x_return_status
1990 ,x_msg_count => x_msg_count
1991 ,x_msg_data => x_msg_data
1992 ,p_inv_hdr_rec => l_header_rec_type
1993 ,p_covered_inv_tbl => l_line_tbl_type
1994 );
1995
1996 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Status '||x_return_status|| ' Message '||x_msg_data);
1997
1998 IF x_return_status = Fnd_Api.g_ret_sts_error THEN
1999 RAISE Fnd_Api.g_exc_error;
2000 ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
2001 RAISE Fnd_Api.g_exc_unexpected_error;
2002 END IF;
2003 --Call Populate Covered Inventory
2004 dpp_coveredinventory_pvt.Update_CoveredInventory(
2005 p_api_version => l_api_version
2006 ,p_init_msg_list => l_init_msg_list
2007 ,p_commit => l_commit
2008 ,p_validation_level => l_validation_level
2009 ,x_return_status => x_return_status
2010 ,x_msg_count => x_msg_count
2011 ,x_msg_data => x_msg_data
2012 ,p_inv_hdr_rec => l_header_rec_type
2013 ,p_covered_inv_tbl => l_line_tbl_type
2014 );
2015
2016 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Status '||x_return_status|| ' Message '||x_msg_data);
2017
2018 IF x_return_status = Fnd_Api.g_ret_sts_error THEN
2019 RAISE Fnd_Api.g_exc_error;
2020 ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
2021 RAISE Fnd_Api.g_exc_unexpected_error;
2022 END IF;
2023 IF DPP_DEBUG_HIGH_ON THEN
2024 FND_FILE.PUT_LINE(FND_FILE.LOG,' End Update Covered Inventory');
2025 END IF;
2026 FOR i in l_line_tbl_type.FIRST..l_line_tbl_type.LAST
2027 LOOP
2028 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'l_line_tbl_type(i).transaction_line_id:'||l_line_tbl_type(i).transaction_line_id);
2029 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'l_line_tbl_type(i).inventory_item_id:'||l_line_tbl_type(i).inventory_item_id);
2030 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'l_line_tbl_type(i).onhand_quantity:'||l_line_tbl_type(i).onhand_quantity);
2031 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'l_line_tbl_type(i).covered_quantity:'||l_line_tbl_type(i).covered_quantity);
2032 IF DPP_DEBUG_HIGH_ON THEN
2033 FND_FILE.PUT_LINE(FND_FILE.LOG,'After get covered Inventory');
2034 FND_FILE.PUT_LINE(FND_FILE.LOG,'l_line_tbl_type(i).transaction_line_id:'||l_line_tbl_type(i).transaction_line_id);
2035 FND_FILE.PUT_LINE(FND_FILE.LOG,'l_line_tbl_type(i).inventory_item_id:'||l_line_tbl_type(i).inventory_item_id);
2036 FND_FILE.PUT_LINE(FND_FILE.LOG,'l_line_tbl_type(i).uom_code:'||l_line_tbl_type(i).uom_code);
2037 FND_FILE.PUT_LINE(FND_FILE.LOG,'l_line_tbl_type(i).onhand_quantity:'||l_line_tbl_type(i).onhand_quantity);
2038 FND_FILE.PUT_LINE(FND_FILE.LOG,'l_line_tbl_type(i).covered_quantity:'||l_line_tbl_type(i).covered_quantity);
2039 END IF;
2040 --BUG 6806974
2041 UPDATE dpp_transaction_lines_all dtla
2042 SET dtla.approved_inventory = dtla.covered_inventory,
2043 dtla.object_version_number = dtla.object_version_number +1,
2044 dtla.last_updated_by = nvl(l_user_id,0),
2045 dtla.last_update_login = nvl(l_user_id,0),
2046 dtla.last_update_date = sysdate
2047 WHERE dtla.transaction_header_id = p_txn_header_rec_type.transaction_header_id
2048 AND dtla.transaction_line_id = l_line_tbl_type(i).transaction_line_id;
2049
2050 --Added code for DPP Price Increase Enhancement
2051 --Get the supplier trade profile value to include price increase value for claim or not
2052 BEGIN
2053 SELECT nvl(create_claim_price_increase,'N')
2054 INTO l_price_change_flag
2055 FROM ozf_supp_trd_prfls_all ostp,
2056 dpp_transaction_headers_all dtha
2057 WHERE ostp.supplier_id = to_number(dtha.vendor_id)
2058 AND ostp.supplier_site_id = to_number(dtha.vendor_site_id)
2059 AND ostp.org_id = to_number(dtha.org_id)
2060 AND dtha.transaction_header_id = p_txn_header_rec_type.transaction_header_id;
2061 EXCEPTION
2062 WHEN NO_DATA_FOUND THEN
2063 fnd_message.set_name('FND', 'SQL_PLSQL_ERROR');
2064 fnd_message.set_token('ROUTINE', 'DPP_BUSINESSEVENTS_PVT');
2065 fnd_message.set_token('ERRNO', sqlcode);
2066 fnd_message.set_token('REASON', 'SUPPLIER TRADE PROFILE IS NOT FOUND'); --To be modified
2067 FND_MSG_PUB.add;
2068 IF FND_MSG_PUB.check_msg_level (FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
2069 FND_MSG_PUB.add_exc_msg (g_pkg_name, l_api_name);
2070 END IF;
2071 RAISE FND_API.g_exc_error;
2072 WHEN OTHERS THEN
2073 fnd_message.set_name('FND', 'SQL_PLSQL_ERROR');
2074 fnd_message.set_token('ROUTINE', 'DPP_BUSINESSEVENTS_PVT');
2075 fnd_message.set_token('ERRNO', sqlcode);
2076 fnd_message.set_token('REASON', sqlerrm);
2077 IF FND_MSG_PUB.check_msg_level (FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
2078 FND_MESSAGE.set_name('DPP', 'DPP_BUSEVT_INVALID_EXE_DET_ID'); --To be modified
2079 fnd_message.set_token('SEQ_NAME', 'DPP_EXECUTION_DETAIL_ID_SEQ'); --To be modified
2080 FND_MSG_PUB.add;
2081 FND_MSG_PUB.add_exc_msg (g_pkg_name, l_api_name);
2082 END IF;
2083 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2084 END;
2085
2086 IF (l_price_change_flag = 'N') THEN -- Only Price Decrease
2087 UPDATE dpp_transaction_lines_all dtla
2088 SET dtla.claim_amount = dtla.approved_inventory * price_change,
2089 dtla.object_version_number = dtla.object_version_number +1,
2090 dtla.last_updated_by = nvl(l_user_id,0),
2091 dtla.last_update_login = nvl(l_user_id,0),
2092 dtla.last_update_date = sysdate
2093 WHERE dtla.transaction_header_id = p_txn_header_rec_type.transaction_header_id
2094 AND dtla.transaction_line_id = l_line_tbl_type(i).transaction_line_id
2095 AND dtla.price_change > 0;
2096 ELSE -- Both Price Increase and Price Decrease
2097 UPDATE dpp_transaction_lines_all dtla
2098 SET dtla.claim_amount = dtla.approved_inventory * price_change,
2099 dtla.object_version_number = dtla.object_version_number +1,
2100 dtla.last_updated_by = nvl(l_user_id,0),
2101 dtla.last_update_login = nvl(l_user_id,0),
2102 dtla.last_update_date = sysdate
2103 WHERE dtla.transaction_header_id = p_txn_header_rec_type.transaction_header_id
2104 AND dtla.transaction_line_id = l_line_tbl_type(i).transaction_line_id
2105 AND dtla.price_change <> 0;
2106 END IF;
2107
2108 END LOOP;
2109 IF x_return_status = Fnd_Api.g_ret_sts_error THEN
2110 RAISE Fnd_Api.g_exc_error;
2111 ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
2112 RAISE Fnd_Api.g_exc_unexpected_error;
2113 END IF;
2114 EXCEPTION
2115 WHEN Fnd_Api.G_EXC_ERROR THEN
2116 x_return_status := Fnd_Api.g_ret_sts_error ;
2117 p_txn_header_rec_type.error_code := 'DPP_UPDATE_COVEREDINV';
2118 ROLLBACK TO DPP_Update_CoveredInv;
2119 WHEN Fnd_Api.G_EXC_UNEXPECTED_ERROR THEN
2120 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
2121 p_txn_header_rec_type.error_code := 'DPP_UPDATE_COVEREDINV';
2122 ROLLBACK TO DPP_Update_CoveredInv;
2123 WHEN OTHERS THEN
2124 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
2125 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
2126 fnd_message.set_name('FND', 'SQL_PLSQL_ERROR');
2127 fnd_message.set_token('ROUTINE', l_full_name);
2128 fnd_message.set_token('ERRNO', SQLCODE);
2129 fnd_message.set_token('REASON', sqlerrm);
2130 END IF;
2131 x_msg_data := fnd_message.get();
2132 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
2133 ROLLBACK TO DPP_Update_CoveredInv;
2134 END Update_CoveredInv;
2135
2136
2137 PROCEDURE Update_Approval(
2138 p_txn_header_rec_type IN OUT nocopy txn_header_rec
2139 ,p_txn_lines_tbl_type IN OUT nocopy txn_lines_tbl
2140 ,x_msg_count OUT nocopy NUMBER
2141 ,x_msg_data OUT nocopy VARCHAR2
2142 ,x_return_status OUT nocopy VARCHAR2)
2143 AS
2144 l_api_name constant VARCHAR2(30) := 'Update_Approval';
2145 l_full_name constant VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
2146 l_approved_by VARCHAR2(55);
2147 l_user_id NUMBER :=FND_PROFILE.VALUE('USER_ID');
2148 l_claim_id VARCHAR2(240);
2149 l_error_message VARCHAR2(4000) := NULL;
2150 BEGIN
2151 -- Initialize API return status to sucess
2152 x_return_status := fnd_api.g_ret_sts_success;
2153 IF DPP_DEBUG_HIGH_ON THEN
2154 FND_FILE.PUT_LINE(FND_FILE.LOG,' Begin Update Approval');
2155 FND_FILE.PUT_LINE(FND_FILE.LOG,' Values Transaction header id '
2156 ||p_txn_header_rec_type.transaction_header_id
2157 ||'Claim Number'||p_txn_header_rec_type.supp_dist_claim_number);
2158 END IF;
2159 --Check whether the claim lines belong to the transaction
2160 IF (p_txn_header_rec_type.supp_dist_claim_number IS NULL AND
2161 p_txn_header_rec_type.supp_dist_claim_id IS NULL ) THEN
2162 x_return_status := fnd_api.g_ret_sts_error;
2163 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
2164 fnd_message.set_name('DPP', 'DPP_CLAIM_NUMBER_NULL');
2165 x_msg_data := fnd_message.get();
2166 p_txn_header_rec_type.error_code := 'DPP_CLAIM_NUMBER_NULL';
2167 l_error_message := l_error_message || x_msg_data;
2168 IF DPP_DEBUG_HIGH_ON THEN
2169 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
2170 END IF;
2171 END IF;
2172 x_return_status := fnd_api.g_ret_sts_error;
2173 --RAISE Fnd_Api.G_EXC_ERROR;
2174 END IF;
2175
2176 FOR i in p_txn_lines_tbl_type.FIRST..p_txn_lines_tbl_type.LAST
2177 LOOP
2178 BEGIN
2179 --BUG 6806974
2180 IF p_txn_lines_tbl_type(i).inventory_item_id IS NOT NULL THEN
2181 SELECT dtla.supp_dist_claim_id
2182 INTO p_txn_lines_tbl_type(i).supp_dist_claim_id
2183 FROM dpp_transaction_lines_all dtla,
2184 ozf_claims_all oca
2185 WHERE dtla.transaction_header_id = p_txn_header_rec_type.transaction_header_id
2186 AND to_number(dtla.supp_dist_claim_id) = oca.claim_id
2187 AND (oca.claim_number = nvl(p_txn_header_rec_type.supp_dist_claim_number,oca.claim_number)
2188 AND oca.claim_id = nvl(to_number(p_txn_header_rec_type.supp_dist_claim_id),oca.claim_id))
2189 AND dtla.inventory_item_id = p_txn_lines_tbl_type(i).inventory_item_id
2190 AND dtla.supplier_approved_by IS NULL;
2191 END IF;
2192 EXCEPTION
2193 WHEN no_data_found THEN
2194 x_return_status := fnd_api.g_ret_sts_error;
2195 fnd_message.set_name('DPP', 'DPP_APPROVED_CLAIM_LINES_ERR');
2196 fnd_message.set_token('CLAIM_NUMBER', p_txn_header_rec_type.supp_dist_claim_number);
2197 fnd_message.set_token('CLAIM_ID', p_txn_header_rec_type.supp_dist_claim_id);
2198 x_msg_data := fnd_message.get();
2199 p_txn_lines_tbl_type(i).error_code := 'DPP_APPROVED_CLAIM_LINES_ERR';
2200 IF p_txn_header_rec_type.error_code IS NULL THEN
2201 p_txn_header_rec_type.error_code := 'DPP_APPROVED_CLAIM_LINES_ERR';
2202 ELSE
2203 p_txn_header_rec_type.error_code := 'MULTIPLE_ERRORS';
2204 END IF;
2205 l_error_message := l_error_message || x_msg_data;
2206 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
2207 RAISE Fnd_Api.G_EXC_ERROR;
2208
2209 END;
2210
2211 UPDATE dpp_transaction_headers_all dtha
2212 SET dtha.last_updated_by = nvl(l_user_id,0),
2213 dtha.last_update_login = nvl(l_user_id,0),
2214 dtha.last_update_date = sysdate,
2215 dtha.object_version_number = dtha.object_version_number +1
2216 WHERE dtha.ref_document_number = p_txn_header_rec_type.ref_document_number
2217 AND dtha.vendor_id = p_txn_header_rec_type.vendor_id;
2218 -- Check the transaction status if Approved, the lines are not updated.
2219 BEGIN
2220 SELECT dtla.supplier_approved_by
2221 INTO l_approved_by
2222 FROM dpp_transaction_lines_all dtla
2223 WHERE dtla.transaction_header_id = p_txn_lines_tbl_type(i).transaction_header_id
2224 AND dtla.inventory_item_id = p_txn_lines_tbl_type(i).inventory_item_id;
2225 EXCEPTION WHEN NO_DATA_FOUND THEN
2226 --l_approved_by := NULL;
2227 p_txn_lines_tbl_type(i).interface_status := 'E';
2228 END;
2229 IF l_approved_by IS NOT NULL OR p_txn_lines_tbl_type(i).approved_inventory < 0 THEN
2230 p_txn_lines_tbl_type(i).interface_status := 'E';
2231 p_txn_lines_tbl_type(i).error_code := 'DPP_TXN_APPROVED';
2232 IF DPP_DEBUG_HIGH_ON THEN
2233 FND_FILE.PUT_LINE(FND_FILE.LOG,' The line (Inventory Item ID '
2234 || p_txn_lines_tbl_type(i).inventory_item_id ||'is already approved by '||
2235 l_approved_by);
2236 END IF;
2237 ELSE
2238 UPDATE dpp_transaction_lines_all dtla
2239 SET dtla.supplier_approved_by =p_txn_lines_tbl_type(i).supplier_approved_by,
2240 dtla.supplier_approval_date =TRUNC(p_txn_lines_tbl_type(i).supplier_approval_date),
2241 dtla.approved_inventory = p_txn_lines_tbl_type(i).approved_inventory,
2242 dtla.claim_amount= p_txn_lines_tbl_type(i).approved_inventory*price_change,
2243 dtla.last_updated_by = nvl(l_user_id,0),
2244 dtla.last_update_login = nvl(l_user_id,0),
2245 dtla.last_update_date = sysdate,
2246 dtla.object_version_number = dtla.object_version_number +1
2247 WHERE dtla.transaction_header_id = p_txn_lines_tbl_type(i).transaction_header_id
2248 AND dtla.inventory_item_id =p_txn_lines_tbl_type(i).inventory_item_id;
2249 END IF;
2250 END LOOP;--FOR i in p_txn_lines_tbl_type.FIRST..p_txn_lines_tbl_type.LAST
2251 IF DPP_DEBUG_HIGH_ON THEN
2252 FND_FILE.PUT_LINE(FND_FILE.LOG,' End Update Approval');
2253 END IF;
2254 EXCEPTION
2255 WHEN Fnd_Api.G_EXC_ERROR THEN
2256 x_return_status := Fnd_Api.g_ret_sts_error ;
2257 WHEN others THEN
2258 x_return_status := fnd_api.g_ret_sts_unexp_error;
2259 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
2260 fnd_message.set_name('FND', 'SQL_PLSQL_ERROR');
2261 fnd_message.set_token('ROUTINE', 'DPP_TRANSACTION_PVT');
2262 fnd_message.set_token('ERRNO', SQLCODE);
2263 fnd_message.set_token('REASON', sqlerrm);
2264 END IF;
2265 x_msg_data := fnd_message.get();
2266 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
2267 END Update_Approval;
2268
2269 PROCEDURE Update_ClaimsApproval(
2270 p_txn_header_rec_type IN OUT nocopy txn_header_rec
2271 ,p_txn_lines_tbl_type IN OUT nocopy txn_lines_tbl
2272 ,x_msg_count OUT nocopy NUMBER
2273 ,x_msg_data OUT nocopy VARCHAR2
2274 ,x_return_status OUT nocopy VARCHAR2)
2275 AS
2276 l_api_name constant VARCHAR2(30) := 'Update_ClaimsApproval';
2277 l_api_version constant NUMBER := 1.0;
2278 l_full_name constant VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
2279 l_init_msg_list VARCHAR2(30) := FND_API.G_TRUE;
2280 l_commit VARCHAR2(30) := FND_API.G_FALSE;
2281 l_validation_level NUMBER := FND_API.G_VALID_LEVEL_FULL;
2282 l_user_id NUMBER :=FND_PROFILE.VALUE('USER_ID');
2283 l_count_lines NUMBER;
2284 l_count_approved_lines NUMBER;
2285 l_claim_txn_hdr_rec_type dpp_businessevents_pvt.dpp_txn_hdr_rec_type;
2286 l_claim_txn_line_tbl_type dpp_businessevents_pvt.dpp_txn_line_tbl_type;
2287
2288 BEGIN
2289 -- Initialize API return status to sucess
2290 x_return_status := fnd_api.g_ret_sts_success;
2291
2292 IF DPP_DEBUG_HIGH_ON THEN
2293 FND_FILE.PUT_LINE(FND_FILE.LOG,' Begin Update Claims Approval');
2294 END IF;
2295 --Get the Process code for Update Claim and set in the hdr rec type
2296 BEGIN
2297 SELECT fl.lookup_code
2298 INTO l_claim_txn_hdr_rec_type.Process_code
2299 FROM fnd_lookups fl
2300 WHERE fl.lookup_type = 'DPP_EXECUTION_PROCESSES'
2301 AND fl.lookup_code = 'UPDCLM';
2302 EXCEPTION
2303 WHEN no_data_found THEN
2304 x_return_status := fnd_api.g_ret_sts_error;
2305 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
2306 fnd_message.set_name('FND', 'SQL_PLSQL_ERROR');
2307 fnd_message.set_token('ROUTINE', l_full_name);
2308 fnd_message.set_token('ERRNO', SQLCODE);
2309 fnd_message.set_token('REASON', sqlerrm);
2310 END IF;
2311 x_msg_data := fnd_message.get();
2312 END;
2313
2314 FOR i in p_txn_lines_tbl_type.FIRST..p_txn_lines_tbl_type.LAST
2315 LOOP
2316 --Get the number of approved lines for the transaction
2317 SELECT count(dtla.supplier_approved_by)
2318 INTO l_count_approved_lines
2319 FROM dpp_transaction_lines_all dtla
2320 WHERE dtla.transaction_header_id = p_txn_header_rec_type.transaction_header_id
2321 AND dtla.supp_dist_claim_id = p_txn_lines_tbl_type(i).supp_dist_claim_id
2322 AND dtla.supplier_approved_by IS NOT NULL;
2323
2324 IF DPP_DEBUG_HIGH_ON THEN
2325 FND_FILE.PUT_LINE(FND_FILE.LOG,' Begin Update Claims Approval l_count_approved_lines:'
2326 ||l_count_approved_lines);
2327 END IF;
2328 --Get the number of lines for the claim
2329 SELECT count(transaction_line_id)
2330 INTO l_count_lines
2331 FROM dpp_transaction_lines_all dtla
2332 WHERE transaction_header_id = p_txn_header_rec_type.transaction_header_id
2333 AND dtla.supp_dist_claim_id = p_txn_lines_tbl_type(i).supp_dist_claim_id;
2334
2335 IF DPP_DEBUG_HIGH_ON THEN
2336 FND_FILE.PUT_LINE(FND_FILE.LOG,' Begin Update Claims Approval l_count_lines:'
2337 ||l_count_lines);
2338 END IF;
2339
2340 IF l_count_approved_lines = l_count_lines THEN
2341 UPDATE dpp_transaction_claims_all dtca
2342 SET dtca.approved_by_supplier = 'Y',
2343 dtca.last_updated_by = nvl(l_user_id,0),
2344 dtca.last_update_date =sysdate,
2345 dtca.last_update_login = nvl(l_user_id,0),
2346 dtca.object_version_number = dtca.object_version_number +1
2347 WHERE dtca.transaction_header_id = p_txn_header_rec_type.transaction_header_id
2348 AND dtca.claim_id = p_txn_lines_tbl_type(i).supp_dist_claim_id;
2349
2350
2351 --Form Record type to call procedure
2352 l_claim_txn_hdr_rec_type.Transaction_Header_ID := p_txn_header_rec_type.transaction_header_id;
2353 l_claim_txn_hdr_rec_type.Transaction_number := p_txn_header_rec_type.Transaction_number;
2354 l_claim_txn_hdr_rec_type.claim_id := p_txn_lines_tbl_type(i).supp_dist_claim_id;
2355
2356 IF DPP_DEBUG_HIGH_ON THEN
2357 FND_FILE.PUT_LINE(FND_FILE.LOG,' Raises Business Event to Update claims:'
2358 ||l_count_lines);
2359 END IF;
2360 dpp_businessevents_pvt.Raise_Business_Event(
2361 p_api_version => l_api_version
2362 ,p_init_msg_list => l_init_msg_list
2363 ,p_commit => l_commit
2364 ,p_validation_level =>l_validation_level
2365 ,x_return_status => x_return_status
2366 ,x_msg_count => x_msg_count
2367 ,x_msg_data => x_msg_data
2368 ,p_txn_hdr_rec => l_claim_txn_hdr_rec_type
2369 ,p_txn_line_id => l_claim_txn_line_tbl_type
2370 );
2371 IF x_return_status = Fnd_Api.g_ret_sts_error THEN
2372 RAISE Fnd_Api.g_exc_error;
2373 ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
2374 RAISE Fnd_Api.g_exc_unexpected_error;
2375 END IF;
2376 IF DPP_DEBUG_HIGH_ON THEN
2377 FND_FILE.PUT_LINE(FND_FILE.LOG,' Procedure called to raise business event to'
2378 ||' update the claim status.');
2379 END IF;
2380 END IF;
2381 END LOOP;
2382 IF DPP_DEBUG_HIGH_ON THEN
2383 FND_FILE.PUT_LINE(FND_FILE.LOG,' End Update Claims Approval');
2384 END IF;
2385 EXCEPTION
2386 WHEN Fnd_Api.G_EXC_ERROR THEN
2387 x_return_status := Fnd_Api.g_ret_sts_error ;
2388 WHEN Fnd_Api.G_EXC_UNEXPECTED_ERROR THEN
2389 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
2390 WHEN OTHERS THEN
2391 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
2392 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
2393 fnd_message.set_name('FND', 'SQL_PLSQL_ERROR');
2394 fnd_message.set_token('ROUTINE', l_full_name);
2395 fnd_message.set_token('ERRNO', SQLCODE);
2396 fnd_message.set_token('REASON', sqlerrm);
2397 END IF;
2398 x_msg_data := fnd_message.get();
2399 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
2400 END Update_ClaimsApproval;
2401
2402 PROCEDURE form_line_tbl(
2403 p_txn_header_rec_type IN OUT nocopy txn_header_rec
2404 ,p_txn_lines_tbl_type OUT nocopy txn_lines_tbl
2405 ,x_msg_count OUT nocopy NUMBER
2406 ,x_msg_data OUT nocopy VARCHAR2
2407 ,x_return_status OUT nocopy VARCHAR2)
2408 AS
2409 l_api_name constant VARCHAR2(30) := 'form_line_tbl';
2410 l_full_name constant VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
2411 l_user_id NUMBER :=FND_PROFILE.VALUE('USER_ID');
2412 l_txn_lines_rec_type txn_lines_rec;
2413
2414 l_line_number NUMBER;
2415 l_duplicate_lines NUMBER;
2416 l_error_message VARCHAR2(4000) := NULL;
2417
2418
2419
2420 --Cursor to fetch line information from interface table
2421 CURSOR fetch_lines_cur(p_transaction_id NUMBER) IS
2422 SELECT *
2423 FROM dpp_txn_lines_int_all
2424 WHERE transaction_int_header_id = p_transaction_id
2425 order by transaction_int_line_id;
2426
2427 BEGIN
2428 -- Initialize API return status to sucess
2429 x_return_status := fnd_api.g_ret_sts_success;
2430 IF DPP_DEBUG_HIGH_ON THEN
2431 FND_FILE.PUT_LINE(FND_FILE.LOG,' Begin form line tbl');
2432 END IF;
2433
2434
2435 l_line_number := 0;
2436 --fetch records from dpp_txn_lines_int_all table for the selected header.
2437 FOR fetch_lines_rec IN fetch_lines_cur(p_txn_header_rec_type.transaction_int_header_id)
2438 LOOP
2439 IF p_txn_header_rec_type.org_id <> nvl(fetch_lines_rec.org_id,p_txn_header_rec_type.org_id) THEN
2440 x_return_status := fnd_api.g_ret_sts_error;
2441 fnd_message.set_name('DPP', 'DPP_TXN_ORG_MISMATCH');
2442 fnd_message.set_token('HEADER_ORG_ID', p_txn_header_rec_type.org_id);
2443 fnd_message.set_token('LINE_ORG_ID', fetch_lines_rec.org_id);
2444 x_msg_data :=fnd_message.get();
2445 --RAISE Fnd_Api.G_EXC_ERROR;
2446 l_txn_lines_rec_type.error_code := 'DPP_TXN_ORG_MISMATCH';
2447 x_return_status := Fnd_Api.g_ret_sts_error ;
2448 l_error_message := l_error_message || x_msg_data;
2449 END IF;
2450 l_txn_lines_rec_type.line_number := l_line_number + 1;
2451 l_txn_lines_rec_type.transaction_header_id := p_txn_header_rec_type.transaction_header_id;
2452 l_txn_lines_rec_type.supplier_part_num := fetch_lines_rec.supplier_part_num;
2453 l_txn_lines_rec_type.inventory_item_id := fetch_lines_rec.inventory_item_id;
2454 l_txn_lines_rec_type.item_number := fetch_lines_rec.item_number;
2455 l_txn_lines_rec_type.prior_price := fetch_lines_rec.prior_price; --ANBBALAS
2456 l_txn_lines_rec_type.change_type := fetch_lines_rec.change_type;
2457 l_txn_lines_rec_type.change_value := fetch_lines_rec.change_value ;
2458 l_txn_lines_rec_type.covered_inventory := fetch_lines_rec.covered_inventory;
2459 l_txn_lines_rec_type.approved_inventory := fetch_lines_rec.approved_inventory;
2460 l_txn_lines_rec_type.uom := fetch_lines_rec.uom;
2461 l_txn_lines_rec_type.org_id := p_txn_header_rec_type.org_id;
2462 l_txn_lines_rec_type.orig_sys_document_line_ref:=fetch_lines_rec.transaction_int_line_id;
2463 l_txn_lines_rec_type.transaction_int_line_id :=fetch_lines_rec.transaction_int_line_id;
2464 l_txn_lines_rec_type.creation_date :=sysdate;
2465 l_txn_lines_rec_type.created_by := nvl(l_user_id,0);
2466 l_txn_lines_rec_type.last_update_date := sysdate;
2467 l_txn_lines_rec_type.last_updated_by := nvl(l_user_id,0);
2468 l_txn_lines_rec_type.last_update_login := nvl(l_user_id,0);
2469 l_txn_lines_rec_type.attribute_category := fetch_lines_rec.attribute_category;
2470 l_txn_lines_rec_type.attribute1 := fetch_lines_rec.attribute1;
2471 l_txn_lines_rec_type.attribute2 := fetch_lines_rec.attribute2;
2472 l_txn_lines_rec_type.attribute3 := fetch_lines_rec.attribute3;
2473 l_txn_lines_rec_type.attribute4 := fetch_lines_rec.attribute4;
2474 l_txn_lines_rec_type.attribute5 := fetch_lines_rec.attribute5;
2475 l_txn_lines_rec_type.attribute6 := fetch_lines_rec.attribute6;
2476 l_txn_lines_rec_type.attribute7 := fetch_lines_rec.attribute7;
2477 l_txn_lines_rec_type.attribute8 := fetch_lines_rec.attribute8;
2478 l_txn_lines_rec_type.attribute9 := fetch_lines_rec.attribute9;
2479 l_txn_lines_rec_type.attribute10 := fetch_lines_rec.attribute10;
2480 l_txn_lines_rec_type.attribute11 := fetch_lines_rec.attribute11;
2481 l_txn_lines_rec_type.attribute12 := fetch_lines_rec.attribute12;
2482 l_txn_lines_rec_type.attribute13 := fetch_lines_rec.attribute13;
2483 l_txn_lines_rec_type.attribute14 := fetch_lines_rec.attribute14;
2484 l_txn_lines_rec_type.attribute15 := fetch_lines_rec.attribute15;
2485 l_txn_lines_rec_type.attribute16 := fetch_lines_rec.attribute16;
2486 l_txn_lines_rec_type.attribute17 := fetch_lines_rec.attribute17;
2487 l_txn_lines_rec_type.attribute18 := fetch_lines_rec.attribute18;
2488 l_txn_lines_rec_type.attribute19 := fetch_lines_rec.attribute19;
2489 l_txn_lines_rec_type.attribute20 := fetch_lines_rec.attribute20;
2490 l_txn_lines_rec_type.attribute21 := fetch_lines_rec.attribute21;
2491 l_txn_lines_rec_type.attribute22 := fetch_lines_rec.attribute22;
2492 l_txn_lines_rec_type.attribute23 := fetch_lines_rec.attribute23;
2493 l_txn_lines_rec_type.attribute24 := fetch_lines_rec.attribute24;
2494 l_txn_lines_rec_type.attribute25 := fetch_lines_rec.attribute25;
2495 l_txn_lines_rec_type.attribute26 := fetch_lines_rec.attribute26;
2496 l_txn_lines_rec_type.attribute27 := fetch_lines_rec.attribute27;
2497 l_txn_lines_rec_type.attribute28 := fetch_lines_rec.attribute28;
2498 l_txn_lines_rec_type.attribute29 := fetch_lines_rec.attribute29;
2499 l_txn_lines_rec_type.attribute30 := fetch_lines_rec.attribute30;
2500 l_txn_lines_rec_type.request_id := fetch_lines_rec.request_id;
2501 l_txn_lines_rec_type.program_application_id := fetch_lines_rec.program_application_id;
2502 l_txn_lines_rec_type.program_id := fetch_lines_rec.program_id ;
2503 l_txn_lines_rec_type.program_update_date := fetch_lines_rec.program_update_date;
2504 l_txn_lines_rec_type.claim_amount := fetch_lines_rec.claim_amount;
2505 l_txn_lines_rec_type.supplier_approved_by := p_txn_header_rec_type.supplier_approved_by;
2506 l_txn_lines_rec_type.supplier_approval_date := p_txn_header_rec_type.supplier_approval_date;
2507 l_txn_lines_rec_type.interface_status := 'P';
2508
2509 p_txn_lines_tbl_type(l_line_number) :=l_txn_lines_rec_type;
2510 l_txn_lines_rec_type :=null;
2511 l_line_number := l_line_number +1;
2512 END LOOP; --FOR fetch_lines_rec IN fetch_lines_cur(p_txn_header_rec_type.transaction_int_header_id)
2513 --CLOSE fetch_lines_cur;
2514 IF l_error_message IS NOT NULL THEN
2515 x_msg_data := l_error_message;
2516 RAISE Fnd_Api.G_EXC_ERROR;
2517 END IF;
2518 IF DPP_DEBUG_HIGH_ON THEN
2519 FND_FILE.PUT_LINE(FND_FILE.LOG,' End form line tbl');
2520 END IF;
2521 EXCEPTION
2522 WHEN Fnd_Api.G_EXC_ERROR THEN
2523 x_return_status := Fnd_Api.g_ret_sts_error ;
2524 WHEN Fnd_Api.G_EXC_UNEXPECTED_ERROR THEN
2525 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
2526 WHEN OTHERS THEN
2527 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
2528 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
2529 fnd_message.set_name('FND', 'SQL_PLSQL_ERROR');
2530 fnd_message.set_token('ROUTINE', 'DPP_TRANSACTION_PVT');
2531 fnd_message.set_token('ERRNO', SQLCODE);
2532 fnd_message.set_token('REASON', sqlerrm);
2533 END IF;
2534 x_msg_data := fnd_message.get();
2535 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
2536 END form_line_tbl;
2537
2538 PROCEDURE Update_HeaderLog(
2539 p_txn_header_rec_type IN OUT nocopy txn_header_rec
2540 ,x_msg_count OUT nocopy NUMBER
2541 ,x_msg_data OUT nocopy VARCHAR2
2542 ,x_return_status OUT nocopy VARCHAR2)
2543 AS
2544 l_api_name constant VARCHAR2(30) := 'Update_HeaderLog';
2545 l_api_version constant NUMBER := 1.0;
2546 l_full_name constant VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
2547 l_return_status VARCHAR2(30);
2548 l_init_msg_list VARCHAR2(30) := FND_API.G_FALSE;
2549 l_commit VARCHAR2(30) := FND_API.G_FALSE;
2550 l_validation_level NUMBER := FND_API.G_VALID_LEVEL_FULL;
2551 l_user_id NUMBER :=FND_PROFILE.VALUE('USER_ID');
2552
2553 l_txn_hdr_hist_rec dpp_log_pvt.dpp_cst_hdr_rec_type;
2554 l_txn_hdr_rec dpp_log_pvt.dpp_cst_hdr_rec_type;
2555 BEGIN
2556 -- Initialize API return status to sucess
2557 x_return_status := fnd_api.g_ret_sts_success;
2558
2559 IF DPP_DEBUG_HIGH_ON THEN
2560 FND_FILE.PUT_LINE(FND_FILE.LOG,' Begin Update HeaderLog');
2561 END IF;
2562
2563 IF p_txn_header_rec_type.supplier_approved_by IS NULL THEN
2564 l_txn_hdr_hist_rec.log_mode := 'I';
2565 ELSE
2566 l_txn_hdr_hist_rec.log_mode := 'U';
2567 END IF;
2568 l_txn_hdr_hist_rec.transaction_header_id := p_txn_header_rec_type.transaction_header_id;
2569 l_txn_hdr_hist_rec.ref_document_number := p_txn_header_rec_type.ref_document_number;
2570 l_txn_hdr_hist_rec.contact_email_address := p_txn_header_rec_type.contact_email_address;
2571 l_txn_hdr_hist_rec.contact_phone := p_txn_header_rec_type.contact_phone ;
2572 l_txn_hdr_hist_rec.transaction_source := p_txn_header_rec_type.transaction_source;
2573 l_txn_hdr_hist_rec.transaction_creation_date := p_txn_header_rec_type.transaction_creation_date;
2574 l_txn_hdr_hist_rec.effective_start_date := p_txn_header_rec_type.effective_start_date;
2575 l_txn_hdr_hist_rec.days_covered := p_txn_header_rec_type.days_covered;
2576 l_txn_hdr_hist_rec.transaction_status := p_txn_header_rec_type.transaction_status;
2577 l_txn_hdr_hist_rec.org_id := p_txn_header_rec_type.org_id;
2578 l_txn_hdr_hist_rec.orig_sys_document_ref := p_txn_header_rec_type.orig_sys_document_ref;
2579 l_txn_hdr_hist_rec.creation_date := p_txn_header_rec_type.creation_date;
2580 l_txn_hdr_hist_rec.created_by := p_txn_header_rec_type.created_by;
2581 l_txn_hdr_hist_rec.last_update_date := p_txn_header_rec_type.last_update_date;
2582 l_txn_hdr_hist_rec.last_updated_by := p_txn_header_rec_type.last_updated_by;
2583 l_txn_hdr_hist_rec.last_update_login := p_txn_header_rec_type.last_update_login;
2584 l_txn_hdr_hist_rec.attribute_category := p_txn_header_rec_type.attribute_category;
2585 l_txn_hdr_hist_rec.attribute1 := p_txn_header_rec_type.attribute1;
2586 l_txn_hdr_hist_rec.attribute2 := p_txn_header_rec_type.attribute2;
2587 l_txn_hdr_hist_rec.attribute3 := p_txn_header_rec_type.attribute3;
2588 l_txn_hdr_hist_rec.attribute4 := p_txn_header_rec_type.attribute4;
2589 l_txn_hdr_hist_rec.attribute5 := p_txn_header_rec_type.attribute5;
2590 l_txn_hdr_hist_rec.attribute6 := p_txn_header_rec_type.attribute6;
2591 l_txn_hdr_hist_rec.attribute7 := p_txn_header_rec_type.attribute7;
2592 l_txn_hdr_hist_rec.attribute8 := p_txn_header_rec_type.attribute8;
2593 l_txn_hdr_hist_rec.attribute9 := p_txn_header_rec_type.attribute9;
2594 l_txn_hdr_hist_rec.attribute10 := p_txn_header_rec_type.attribute10;
2595 l_txn_hdr_hist_rec.attribute11 := p_txn_header_rec_type.attribute11;
2596 l_txn_hdr_hist_rec.attribute12 := p_txn_header_rec_type.attribute12;
2597 l_txn_hdr_hist_rec.attribute13 := p_txn_header_rec_type.attribute13;
2598 l_txn_hdr_hist_rec.attribute14 := p_txn_header_rec_type.attribute14;
2599 l_txn_hdr_hist_rec.attribute15 := p_txn_header_rec_type.attribute15;
2600 l_txn_hdr_hist_rec.attribute16 := p_txn_header_rec_type.attribute16;
2601 l_txn_hdr_hist_rec.attribute17 := p_txn_header_rec_type.attribute17;
2602 l_txn_hdr_hist_rec.attribute18 := p_txn_header_rec_type.attribute18;
2603 l_txn_hdr_hist_rec.attribute19 := p_txn_header_rec_type.attribute19;
2604 l_txn_hdr_hist_rec.attribute20 := p_txn_header_rec_type.attribute20;
2605 l_txn_hdr_hist_rec.attribute21 := p_txn_header_rec_type.attribute21;
2606 l_txn_hdr_hist_rec.attribute22 := p_txn_header_rec_type.attribute22;
2607 l_txn_hdr_hist_rec.attribute23 := p_txn_header_rec_type.attribute23;
2608 l_txn_hdr_hist_rec.attribute24 := p_txn_header_rec_type.attribute24;
2609 l_txn_hdr_hist_rec.attribute25 := p_txn_header_rec_type.attribute25;
2610 l_txn_hdr_hist_rec.attribute26 := p_txn_header_rec_type.attribute26;
2611 l_txn_hdr_hist_rec.attribute27 := p_txn_header_rec_type.attribute27;
2612 l_txn_hdr_hist_rec.attribute28 := p_txn_header_rec_type.attribute28;
2613 l_txn_hdr_hist_rec.attribute29 := p_txn_header_rec_type.attribute29;
2614 l_txn_hdr_hist_rec.attribute30 := p_txn_header_rec_type.attribute30;
2615 l_txn_hdr_hist_rec.trx_currency := p_txn_header_rec_type.trx_currency;
2616 l_txn_hdr_rec :=l_txn_hdr_hist_rec;
2617 -- Log has Agreement Status, Headers has Transaction Status
2618 dpp_log_pvt.insert_headerlog(
2619 p_api_version => l_api_version
2620 ,p_init_msg_list => l_init_msg_list
2621 ,p_commit => l_commit
2622 ,p_validation_level => l_validation_level
2623 ,x_return_status => l_return_status
2624 ,x_msg_count => x_msg_count
2625 ,x_msg_data => x_msg_data
2626 ,p_txn_hdr_rec => l_txn_hdr_hist_rec
2627 );
2628 IF DPP_DEBUG_HIGH_ON THEN
2629 FND_FILE.PUT_LINE(FND_FILE.LOG,' End Update HeaderLog');
2630 END IF;
2631 IF l_return_status = Fnd_Api.g_ret_sts_error THEN
2632 RAISE Fnd_Api.g_exc_error;
2633 ELSIF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
2634 RAISE Fnd_Api.g_exc_unexpected_error;
2635 END IF;
2636 EXCEPTION
2637 WHEN Fnd_Api.G_EXC_ERROR THEN
2638 x_return_status := Fnd_Api.g_ret_sts_error ;
2639 WHEN Fnd_Api.G_EXC_UNEXPECTED_ERROR THEN
2640 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
2641 WHEN OTHERS THEN
2642 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
2643 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
2644 fnd_message.set_name('FND', 'SQL_PLSQL_ERROR');
2645 fnd_message.set_token('ROUTINE', l_full_name);
2646 fnd_message.set_token('ERRNO', SQLCODE);
2647 fnd_message.set_token('REASON', sqlerrm);
2648 END IF;
2649 x_msg_data := fnd_message.get();
2650 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
2651 END Update_HeaderLog;
2652
2653 PROCEDURE Update_LinesLog(
2654 p_txn_lines_tbl_type IN OUT nocopy txn_lines_tbl
2655 ,x_msg_count OUT nocopy NUMBER
2656 ,x_msg_data OUT nocopy VARCHAR2
2657 ,x_return_status OUT nocopy VARCHAR2)
2658 AS
2659
2660 l_api_name constant VARCHAR2(30) := 'Update_LinesLog';
2661 l_api_version constant NUMBER := 1.0;
2662 l_full_name constant VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
2663 l_init_msg_list VARCHAR2(30) := FND_API.G_FALSE;
2664 l_commit VARCHAR2(30) := FND_API.G_FALSE;
2665 l_validation_level NUMBER := FND_API.G_VALID_LEVEL_FULL;
2666
2667 l_txn_line_hist_tbl dpp_log_pvt.dpp_txn_line_tbl_type;
2668 BEGIN
2669 --SAVEPOINT DPP_Update_LinesLog;
2670 -- Initialize API return status to sucess
2671 x_return_status := fnd_api.g_ret_sts_success;
2672 IF DPP_DEBUG_HIGH_ON THEN
2673 FND_FILE.PUT_LINE(FND_FILE.LOG,' Begin Update LinesLog');
2674 END IF;
2675 FOR i in p_txn_lines_tbl_type.FIRST..p_txn_lines_tbl_type.LAST
2676 LOOP
2677 IF p_txn_lines_tbl_type(i).approved_inventory IS NULL THEN
2678 l_txn_line_hist_tbl(i).log_mode := 'I';
2679 ELSE
2680 l_txn_line_hist_tbl(i).log_mode := 'U';
2681 END IF;
2682 l_txn_line_hist_tbl(i).transaction_header_id := p_txn_lines_tbl_type(i).transaction_header_id;
2683 l_txn_line_hist_tbl(i).transaction_line_id := p_txn_lines_tbl_type(i).transaction_line_id;
2684 l_txn_line_hist_tbl(i).supplier_part_num := p_txn_lines_tbl_type(i).supplier_part_num;
2685 l_txn_line_hist_tbl(i).line_number := p_txn_lines_tbl_type(i).line_number;
2686 l_txn_line_hist_tbl(i).prior_price := p_txn_lines_tbl_type(i).prior_price ;
2687 l_txn_line_hist_tbl(i).change_type := p_txn_lines_tbl_type(i).change_type;
2688 l_txn_line_hist_tbl(i).change_value := p_txn_lines_tbl_type(i).change_value ;
2689 l_txn_line_hist_tbl(i).price_change := p_txn_lines_tbl_type(i).price_change ;
2690 l_txn_line_hist_tbl(i).covered_inventory := p_txn_lines_tbl_type(i).covered_inventory;
2691 l_txn_line_hist_tbl(i).approved_inventory := p_txn_lines_tbl_type(i).approved_inventory;
2692 l_txn_line_hist_tbl(i).org_id := p_txn_lines_tbl_type(i).org_id;
2693 l_txn_line_hist_tbl(i).creation_date := p_txn_lines_tbl_type(i).creation_date;
2694 l_txn_line_hist_tbl(i).created_by := p_txn_lines_tbl_type(i).created_by;
2695 l_txn_line_hist_tbl(i).last_update_date := p_txn_lines_tbl_type(i).last_update_date;
2696 l_txn_line_hist_tbl(i).last_updated_by := p_txn_lines_tbl_type(i).last_updated_by;
2697 l_txn_line_hist_tbl(i).last_update_login := p_txn_lines_tbl_type(i).last_update_login;
2698 l_txn_line_hist_tbl(i).attribute_category := p_txn_lines_tbl_type(i).attribute_category;
2699 l_txn_line_hist_tbl(i).attribute1 := p_txn_lines_tbl_type(i).attribute1;
2700 l_txn_line_hist_tbl(i).attribute2 := p_txn_lines_tbl_type(i).attribute2;
2701 l_txn_line_hist_tbl(i).attribute3 := p_txn_lines_tbl_type(i).attribute3;
2702 l_txn_line_hist_tbl(i).attribute4 := p_txn_lines_tbl_type(i).attribute4;
2703 l_txn_line_hist_tbl(i).attribute5 := p_txn_lines_tbl_type(i).attribute5;
2704 l_txn_line_hist_tbl(i).attribute6 := p_txn_lines_tbl_type(i).attribute6;
2705 l_txn_line_hist_tbl(i).attribute7 := p_txn_lines_tbl_type(i).attribute7;
2706 l_txn_line_hist_tbl(i).attribute8 := p_txn_lines_tbl_type(i).attribute8;
2707 l_txn_line_hist_tbl(i).attribute9 := p_txn_lines_tbl_type(i).attribute9;
2708 l_txn_line_hist_tbl(i).attribute10 := p_txn_lines_tbl_type(i).attribute10;
2709 l_txn_line_hist_tbl(i).attribute11 := p_txn_lines_tbl_type(i).attribute11;
2710 l_txn_line_hist_tbl(i).attribute12 := p_txn_lines_tbl_type(i).attribute12;
2711 l_txn_line_hist_tbl(i).attribute13 := p_txn_lines_tbl_type(i).attribute13;
2712 l_txn_line_hist_tbl(i).attribute14 := p_txn_lines_tbl_type(i).attribute14;
2713 l_txn_line_hist_tbl(i).attribute15 := p_txn_lines_tbl_type(i).attribute15;
2714 l_txn_line_hist_tbl(i).attribute16 := p_txn_lines_tbl_type(i).attribute16;
2715 l_txn_line_hist_tbl(i).attribute17 := p_txn_lines_tbl_type(i).attribute17;
2716 l_txn_line_hist_tbl(i).attribute18 := p_txn_lines_tbl_type(i).attribute18;
2717 l_txn_line_hist_tbl(i).attribute19 := p_txn_lines_tbl_type(i).attribute19;
2718 l_txn_line_hist_tbl(i).attribute20 := p_txn_lines_tbl_type(i).attribute20;
2719 l_txn_line_hist_tbl(i).attribute21 := p_txn_lines_tbl_type(i).attribute21;
2720 l_txn_line_hist_tbl(i).attribute22 := p_txn_lines_tbl_type(i).attribute22;
2721 l_txn_line_hist_tbl(i).attribute23 := p_txn_lines_tbl_type(i).attribute23;
2722 l_txn_line_hist_tbl(i).attribute24 := p_txn_lines_tbl_type(i).attribute24;
2723 l_txn_line_hist_tbl(i).attribute25 := p_txn_lines_tbl_type(i).attribute25;
2724 l_txn_line_hist_tbl(i).attribute26 := p_txn_lines_tbl_type(i).attribute26;
2725 l_txn_line_hist_tbl(i).attribute27 := p_txn_lines_tbl_type(i).attribute27;
2726 l_txn_line_hist_tbl(i).attribute28 := p_txn_lines_tbl_type(i).attribute28;
2727 l_txn_line_hist_tbl(i).attribute29 := p_txn_lines_tbl_type(i).attribute29;
2728 l_txn_line_hist_tbl(i).attribute30 := p_txn_lines_tbl_type(i).attribute30;
2729 l_txn_line_hist_tbl(i).inventory_item_id := p_txn_lines_tbl_type(i).inventory_item_id ;
2730 l_txn_line_hist_tbl(i).supplier_new_price := p_txn_lines_tbl_type(i).supplier_new_price ;
2731 l_txn_line_hist_tbl(i).last_calculated_by := p_txn_lines_tbl_type(i).last_calculated_by ;
2732 l_txn_line_hist_tbl(i).last_calculated_date := p_txn_lines_tbl_type(i).last_calculated_date ;
2733 l_txn_line_hist_tbl(i).claim_amount := p_txn_lines_tbl_type(i).claim_amount ;
2734 l_txn_line_hist_tbl(i).supp_dist_claim_id := p_txn_lines_tbl_type(i).supp_dist_claim_id;
2735 l_txn_line_hist_tbl(i).update_purchasing_docs := p_txn_lines_tbl_type(i).update_purchasing_docs;
2736 l_txn_line_hist_tbl(i).notify_purchasing_docs := p_txn_lines_tbl_type(i).notify_purchasing_docs ;
2737 l_txn_line_hist_tbl(i).update_inventory_costing := p_txn_lines_tbl_type(i).update_inventory_costing ;
2738 l_txn_line_hist_tbl(i).update_item_list_price := p_txn_lines_tbl_type(i).update_item_list_price;
2739 l_txn_line_hist_tbl(i).supp_dist_claim_status := p_txn_lines_tbl_type(i).supp_dist_claim_status ;
2740 l_txn_line_hist_tbl(i).onhand_inventory := p_txn_lines_tbl_type(i).onhand_inventory ;
2741 l_txn_line_hist_tbl(i).manually_adjusted := p_txn_lines_tbl_type(i).manually_adjusted ;
2742 l_txn_line_hist_tbl(i).notify_inbound_pricelist := p_txn_lines_tbl_type(i).notify_inbound_pricelist ;
2743 l_txn_line_hist_tbl(i).notify_outbound_pricelist:= p_txn_lines_tbl_type(i).notify_outbound_pricelist ;
2744 l_txn_line_hist_tbl(i).supplier_approved_by := p_txn_lines_tbl_type(i).supplier_approved_by ;
2745 l_txn_line_hist_tbl(i).supplier_approval_date := p_txn_lines_tbl_type(i).supplier_approval_date ;
2746 l_txn_line_hist_tbl(i).create_on_hand_claim := null;
2747 l_txn_line_hist_tbl(i).create_vend_cust_claim := null;
2748
2749 END LOOP;--FOR i in p_txn_lines_tbl_type.FIRST..p_txn_lines_tbl_type.LAST
2750
2751
2752 dpp_log_pvt.Insert_LinesLog(
2753 p_api_version => l_api_version
2754 ,p_init_msg_list => l_init_msg_list
2755 ,p_commit => l_commit
2756 ,p_validation_level => l_validation_level
2757 ,x_return_status => x_return_status
2758 ,x_msg_count => x_msg_count
2759 ,x_msg_data => x_msg_data
2760 ,p_txn_lines_tbl => l_txn_line_hist_tbl
2761 );
2762
2763 IF DPP_DEBUG_HIGH_ON THEN
2764 FND_FILE.PUT_LINE(FND_FILE.LOG,' End Update LinesLog');
2765 END IF;
2766 IF x_return_status = Fnd_Api.g_ret_sts_error THEN
2767 RAISE Fnd_Api.g_exc_error;
2768 ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
2769 RAISE Fnd_Api.g_exc_unexpected_error;
2770 END IF;
2771 EXCEPTION
2772 WHEN Fnd_Api.G_EXC_ERROR THEN
2773 x_return_status := Fnd_Api.g_ret_sts_error ;
2774 WHEN Fnd_Api.G_EXC_UNEXPECTED_ERROR THEN
2775 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
2776 WHEN OTHERS THEN
2777 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
2778 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
2779 fnd_message.set_name('FND', 'SQL_PLSQL_ERROR');
2780 fnd_message.set_token('ROUTINE', l_full_name);
2781 fnd_message.set_token('ERRNO', SQLCODE);
2782 fnd_message.set_token('REASON', sqlerrm);
2783 END IF;
2784 x_msg_data := fnd_message.get();
2785 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
2786 END Update_LinesLog;
2787
2788 PROCEDURE Update_InterfaceTbl(
2789 p_txn_header_rec_type IN OUT nocopy txn_header_rec
2790 , p_txn_lines_tbl_type IN OUT nocopy txn_lines_tbl
2791 , x_msg_count OUT nocopy NUMBER
2792 , x_msg_data OUT nocopy VARCHAR2
2793 , x_return_status OUT nocopy VARCHAR2)
2794 AS
2795 l_date DATE;
2796 l_api_name constant VARCHAR2(30) := 'Update_InterfaceTbl';
2797 l_user_id NUMBER :=FND_PROFILE.VALUE('USER_ID');
2798 BEGIN
2799 -- Initialize API return status to sucess
2800 x_return_status := fnd_api.g_ret_sts_success;
2801
2802 IF DPP_DEBUG_HIGH_ON THEN
2803 FND_FILE.PUT_LINE(FND_FILE.LOG,' Begin Update InterfaceTbl');
2804 END IF;
2805 --Update Interface Header table
2806 UPDATE DPP_TXN_HEADERS_INT_ALL dtha
2807 SET
2808 dtha.org_id = p_txn_header_rec_type.org_id,
2809 dtha.vendor_id = p_txn_header_rec_type.vendor_id,
2810 dtha.vendor_site_id = p_txn_header_rec_type.vendor_site_id,
2811 dtha.last_update_date = SYSDATE,
2812 dtha.last_updated_by = nvl(l_user_id,0),
2813 dtha.last_update_login = nvl(l_user_id,0),
2814 dtha.interface_status = 'P',
2815 dtha.currency =p_txn_header_rec_type.trx_currency
2816 WHERE TRANSACTION_INT_HEADER_ID = p_txn_header_rec_type.transaction_int_header_id;
2817
2818 --Update interface lines table
2819 FOR i in p_txn_lines_tbl_type.FIRST..p_txn_lines_tbl_type.LAST
2820 LOOP
2821 UPDATE DPP_TXN_LINES_INT_ALL dtla
2822 SET
2823 dtla.supplier_part_num = p_txn_lines_tbl_type(i).supplier_part_num,
2824 dtla.inventory_item_id = p_txn_lines_tbl_type(i).inventory_item_id,
2825 dtla.item_number = p_txn_lines_tbl_type(i).item_number,
2826 dtla.interface_status = 'P',--p_txn_lines_tbl_type(i).interface_status,
2827 dtla.org_id = p_txn_lines_tbl_type(i).org_id,
2828 dtla.last_update_date = SYSDATE,
2829 dtla.last_updated_by = nvl(l_user_id,0),
2830 dtla.last_update_login = nvl(l_user_id,0)
2831 WHERE dtla.transaction_int_line_id = p_txn_lines_tbl_type(i).transaction_int_line_id;
2832 END LOOP;--FOR i in p_txn_lines_tbl_type.FIRST..p_txn_lines_tbl_type.LAST
2833 IF DPP_DEBUG_HIGH_ON THEN
2834 FND_FILE.PUT_LINE(FND_FILE.LOG,' End Update InterfaceTbl');
2835 END IF;
2836 EXCEPTION
2837 WHEN Fnd_Api.G_EXC_ERROR THEN
2838 x_return_status := Fnd_Api.g_ret_sts_error ;
2839 WHEN Fnd_Api.G_EXC_UNEXPECTED_ERROR THEN
2840 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
2841
2842 WHEN OTHERS THEN
2843 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
2844 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
2845 fnd_message.set_name('FND', 'SQL_PLSQL_ERROR');
2846 fnd_message.set_token('ROUTINE', 'DPP_TRANSACTION_PVT');
2847 fnd_message.set_token('ERRNO', SQLCODE);
2848 fnd_message.set_token('REASON', sqlerrm);
2849 END IF;
2850 x_msg_data := fnd_message.get();
2851 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||x_msg_data);
2852 END Update_InterfaceTbl;
2853
2854
2855
2856 PROCEDURE Update_InterfaceLineErrSts(
2857 p_txn_header_rec_type IN OUT nocopy txn_header_rec,
2858 p_txn_lines_tbl_type IN OUT NOCOPY txn_lines_tbl,
2859 x_return_status OUT nocopy VARCHAR2
2860 )
2861 AS
2862
2863 l_api_name constant VARCHAR2(30) := 'Update_InterfaceErrSts';
2864 l_user_id NUMBER :=FND_PROFILE.VALUE('USER_ID');
2865 BEGIN
2866 -- Initialize API return status to sucess
2867 x_return_status := fnd_api.g_ret_sts_success;
2868 IF DPP_DEBUG_HIGH_ON THEN
2869 FND_FILE.PUT_LINE(FND_FILE.LOG,' Begin Update InterfaceErrSts');
2870 END IF;
2871
2872 --Update Interface Header table with error status
2873 UPDATE DPP_TXN_HEADERS_INT_ALL dtha
2874 SET
2875 dtha.last_update_date = SYSDATE,
2876 dtha.last_updated_by = nvl(l_user_id,0),
2877 dtha.last_update_login = nvl(l_user_id,0),
2878 dtha.interface_status = 'E',
2879 dtha.error_code = decode(dtha.error_code,NULL,nvl(p_txn_header_rec_type.error_code,'SQL_PLSQL_ERROR'),'MULTIPLE_ERRORS')
2880 WHERE transaction_int_header_id = p_txn_header_rec_type.transaction_int_header_id;
2881
2882 --Update interface lines table with error status for all the lines of the error header.
2883 FOR i in p_txn_lines_tbl_type.FIRST..p_txn_lines_tbl_type.LAST
2884 LOOP
2885 UPDATE DPP_TXN_LINES_INT_ALL dtla
2886 SET
2887 dtla.last_update_date = SYSDATE,
2888 dtla.last_updated_by = nvl(l_user_id,0),
2889 dtla.last_update_login = nvl(l_user_id,0),
2890 dtla.interface_status = 'E',
2891 dtla.error_code = p_txn_lines_tbl_type(i).error_code
2892 WHERE dtla.transaction_int_header_id = p_txn_header_rec_type.transaction_int_header_id
2893 AND dtla.transaction_int_line_id = p_txn_lines_tbl_type(i).transaction_int_line_id;
2894 END LOOP;
2895 COMMIT;
2896
2897 IF DPP_DEBUG_HIGH_ON THEN
2898 FND_FILE.PUT_LINE(FND_FILE.LOG,' End Update InterfaceErrSts');
2899 END IF;
2900 EXCEPTION
2901 WHEN Fnd_Api.G_EXC_ERROR THEN
2902 x_return_status := Fnd_Api.g_ret_sts_error ;
2903 WHEN Fnd_Api.G_EXC_UNEXPECTED_ERROR THEN
2904 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
2905 WHEN OTHERS THEN
2906 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
2907 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
2908 fnd_message.set_name('FND', 'SQL_PLSQL_ERROR');
2909 fnd_message.set_token('ROUTINE', 'DPP_TRANSACTION_PVT');
2910 fnd_message.set_token('ERRNO', SQLCODE);
2911 fnd_message.set_token('REASON', sqlerrm);
2912 END IF;
2913 FND_FILE.PUT_LINE(FND_FILE.LOG,' '||sqlerrm);
2914 END Update_InterfaceLineErrSts;
2915
2916 ---------------------------------------------------------------------
2917 -- PROCEDURE
2918 -- insert_transaction
2919 --
2920 -- PURPOSE
2921 -- Inserts Price protection transaction details to dpp transaction headers and lines all
2922 --
2923 -- PARAMETERS
2924 --
2925 -- NOTES
2926 -- 1. Transaction_int_header id
2927 ----------------------------------------------------------------------
2928 PROCEDURE Insert_Transaction(p_api_version IN NUMBER
2929 , p_init_msg_list IN VARCHAR2 := fnd_api.g_false
2930 , p_commit IN VARCHAR2 := fnd_api.g_false
2931 , p_validation_level IN NUMBER := fnd_api.g_valid_level_full
2932 , p_transaction_int_header_id IN NUMBER
2933 , p_operating_unit IN VARCHAR2 DEFAULT NULL
2934 , x_return_status OUT nocopy VARCHAR2
2935 , x_msg_count OUT nocopy NUMBER
2936 , x_msg_data OUT nocopy VARCHAR2
2937 )
2938 IS
2939 l_api_name constant VARCHAR2(30) := 'insert_transaction';
2940 l_api_version constant NUMBER := 1.0;
2941 l_full_name constant VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
2942
2943 l_return_status VARCHAR2(30);
2944 l_user_id NUMBER :=FND_PROFILE.VALUE('USER_ID');
2945 l_transaction_status VARCHAR2(55);
2946 l_status_cancelled VARCHAR2(55);
2947 l_transaction_type VARCHAR2(100);
2948 l_log_enabled VARCHAR2(20);
2949
2950 l_txn_header_rec_type txn_header_rec;
2951 l_txn_lines_rec_type txn_lines_rec;
2952
2953 l_txn_lines_tbl_type txn_lines_tbl;
2954 l_ins_txn_line_tbl txn_lines_tbl;
2955 l_upd_txn_line_tbl txn_lines_tbl;
2956 l_txn_hdr_hist_rec dpp_log_pvt.dpp_cst_hdr_rec_type;
2957 l_txn_line_hist_tbl dpp_log_pvt.dpp_txn_line_tbl_type;
2958 l_supp_trade_profile_id NUMBER := NULL; --ANBBALAS for 12_1_2
2959 l_concatenated_error_message VARCHAR2(4000);
2960 l_msg_data VARCHAR2(200);
2961
2962 --Cursor to fetch header information from interface table
2963 CURSOR fetch_header_cur IS
2964 SELECT *
2965 FROM dpp_txn_headers_int_all dthia
2966 WHERE dthia.transaction_int_header_id = p_transaction_int_header_id;
2967
2968 BEGIN
2969 -- Standard begin of API savepoint
2970 SAVEPOINT DPP_Insert_Transaction;
2971 IF Fnd_Api.to_boolean(p_init_msg_list) THEN
2972 Fnd_Msg_Pub.initialize;
2973 END IF;
2974 IF NOT Fnd_Api.compatible_api_call
2975 (
2976 l_api_version,
2977 p_api_version,
2978 l_api_name,
2979 g_pkg_name
2980 )
2981 THEN
2982 RAISE Fnd_Api.g_exc_unexpected_error;
2983 END IF;
2984
2985 -- Initialize API return status to sucess
2986 x_return_status := fnd_api.g_ret_sts_success;
2987
2988
2989 IF DPP_DEBUG_HIGH_ON THEN
2990 fnd_file.put_line(fnd_file.log, 'Begin Insert Transaction ' );
2991 END IF;
2992
2993 SELECT fnd_profile.VALUE('DPP_AUDIT_ENABLED')
2994 INTO l_log_enabled
2995 FROM dual;
2996
2997 IF DPP_DEBUG_HIGH_ON THEN
2998 fnd_file.put_line(fnd_file.log, 'Audit Enabled '||l_log_enabled );
2999 END IF;
3000
3001 --fetch records from dpp_txn_headers_int_all table
3002 FOR fetch_header_rec IN fetch_header_cur
3003 LOOP
3004 --check whether it is an inbound transaction or pre approval transaction by checking Approved by column
3005 IF fetch_header_rec.supplier_approved_by IS NULL THEN
3006 l_transaction_type := 'INB';
3007 ELSE
3008 l_transaction_type := 'APP';
3009 END IF;
3010
3011 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Insert Transaction:'||l_transaction_type);
3012
3013 --Form header record type to populate header table
3014 l_txn_header_rec_type.transaction_int_header_id :=fetch_header_rec.transaction_int_header_id;
3015 l_txn_header_rec_type.ref_document_number := fetch_header_rec.ref_document_number;
3016 l_txn_header_rec_type.contact_email_address := fetch_header_rec.contact_email_address;
3017 l_txn_header_rec_type.contact_phone := fetch_header_rec.contact_phone;
3018 l_txn_header_rec_type.transaction_source := fetch_header_rec.transaction_source;
3019 l_txn_header_rec_type.transaction_creation_date := sysdate;
3020 l_txn_header_rec_type.effective_start_date := TRUNC(fetch_header_rec.effective_start_date);
3021 l_txn_header_rec_type.days_covered := fetch_header_rec.days_covered;
3022 l_txn_header_rec_type.transaction_status := null;
3023 l_txn_header_rec_type.trx_currency := fetch_header_rec.currency;
3024 l_txn_header_rec_type.operating_unit_name := fetch_header_rec.operating_unit_name;
3025 l_txn_header_rec_type.org_id := fetch_header_rec.org_id;
3026 l_txn_header_rec_type.vendor_name := fetch_header_rec.vendor_name;
3027 l_txn_header_rec_type.vendor_id := fetch_header_rec.vendor_id;
3028 l_txn_header_rec_type.vendor_site_code := fetch_header_rec.vendor_site;
3029 l_txn_header_rec_type.vendor_site_id := fetch_header_rec.vendor_site_id;
3030 l_txn_header_rec_type.vendor_contact_name := fetch_header_rec.vendor_contact_name;
3031 l_txn_header_rec_type.vendor_contact_id := fetch_header_rec.vendor_contact_id;
3032 l_txn_header_rec_type.supplier_approved_by := fetch_header_rec.supplier_approved_by;
3033 l_txn_header_rec_type.supplier_approval_date := fetch_header_rec.supplier_approval_date;
3034 l_txn_header_rec_type.orig_sys_document_ref := nvl(fetch_header_rec.orig_sys_document_ref,fetch_header_rec.transaction_int_header_id);
3035 l_txn_header_rec_type.creation_date := sysdate;
3036 l_txn_header_rec_type.created_by := nvl(l_user_id,0);
3037 l_txn_header_rec_type.last_update_date := sysdate;
3038 l_txn_header_rec_type.last_updated_by := nvl(l_user_id,0);
3039 l_txn_header_rec_type.last_update_login := nvl(l_user_id,0);
3040 l_txn_header_rec_type.request_id := fetch_header_rec.request_id;
3041 l_txn_header_rec_type.program_application_id := fetch_header_rec.program_application_id;
3042 l_txn_header_rec_type.program_id := fetch_header_rec.program_id ;
3043 l_txn_header_rec_type.program_update_date := fetch_header_rec.program_update_date;
3044 l_txn_header_rec_type.attribute_category := fetch_header_rec.attribute_category;
3045 l_txn_header_rec_type.attribute1 := fetch_header_rec.attribute1;
3046 l_txn_header_rec_type.attribute2 := fetch_header_rec.attribute2;
3047 l_txn_header_rec_type.attribute3 := fetch_header_rec.attribute3;
3048 l_txn_header_rec_type.attribute4 := fetch_header_rec.attribute4;
3049 l_txn_header_rec_type.attribute5 := fetch_header_rec.attribute5;
3050 l_txn_header_rec_type.attribute6 := fetch_header_rec.attribute6;
3051 l_txn_header_rec_type.attribute7 := fetch_header_rec.attribute7;
3052 l_txn_header_rec_type.attribute8 := fetch_header_rec.attribute8;
3053 l_txn_header_rec_type.attribute9 := fetch_header_rec.attribute9;
3054 l_txn_header_rec_type.attribute10 := fetch_header_rec.attribute10;
3055 l_txn_header_rec_type.attribute11 := fetch_header_rec.attribute11;
3056 l_txn_header_rec_type.attribute12 := fetch_header_rec.attribute12;
3057 l_txn_header_rec_type.attribute13 := fetch_header_rec.attribute13;
3058 l_txn_header_rec_type.attribute14 := fetch_header_rec.attribute14;
3059 l_txn_header_rec_type.attribute15 := fetch_header_rec.attribute15;
3060 l_txn_header_rec_type.attribute16 := fetch_header_rec.attribute16;
3061 l_txn_header_rec_type.attribute17 := fetch_header_rec.attribute17;
3062 l_txn_header_rec_type.attribute18 := fetch_header_rec.attribute18;
3063 l_txn_header_rec_type.attribute19 := fetch_header_rec.attribute19;
3064 l_txn_header_rec_type.attribute20 := fetch_header_rec.attribute20;
3065 l_txn_header_rec_type.attribute21 := fetch_header_rec.attribute21;
3066 l_txn_header_rec_type.attribute22 := fetch_header_rec.attribute22;
3067 l_txn_header_rec_type.attribute23 := fetch_header_rec.attribute23;
3068 l_txn_header_rec_type.attribute24 := fetch_header_rec.attribute24;
3069 l_txn_header_rec_type.attribute25 := fetch_header_rec.attribute25;
3070 l_txn_header_rec_type.attribute26 := fetch_header_rec.attribute26;
3071 l_txn_header_rec_type.attribute27 := fetch_header_rec.attribute27;
3072 l_txn_header_rec_type.attribute28 := fetch_header_rec.attribute28;
3073 l_txn_header_rec_type.attribute29 := fetch_header_rec.attribute29;
3074 l_txn_header_rec_type.attribute30 := fetch_header_rec.attribute30;
3075 l_txn_header_rec_type.interface_status := 'P';
3076 l_txn_header_rec_type.supp_dist_claim_number := fetch_header_rec.supp_dist_claim_number;
3077 l_txn_header_rec_type.supp_dist_claim_id := fetch_header_rec.supp_dist_claim_id;
3078
3079 --Validate the Ref Document Number
3080 Validate_RefDocNumber(p_txn_header_rec_type => l_txn_header_rec_type
3081 ,x_msg_count => x_msg_count
3082 ,x_msg_data => x_msg_data
3083 ,x_return_status => l_return_status
3084 );
3085 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Ref Doc Num Status :'||l_return_status);
3086 IF DPP_DEBUG_HIGH_ON THEN
3087 fnd_file.put_line(fnd_file.log, 'Validate Ref Document Number Return Status: '||l_return_status ||'Error Msg: '||x_msg_data);
3088 END IF;
3089 IF l_return_status = Fnd_Api.g_ret_sts_error OR l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
3090 l_concatenated_error_message :=l_concatenated_error_message|| x_msg_data;
3091 Update_InterfaceErrSts(
3092 p_txn_header_rec_type => l_txn_header_rec_type
3093 ,x_return_status =>l_return_status
3094 );
3095 END IF;
3096 --End Validate the Ref Document Number
3097
3098 --Validate the Operating Unit
3099 Validate_OperatingUnit(p_txn_header_rec_type => l_txn_header_rec_type
3100 ,x_msg_count => x_msg_count
3101 ,x_msg_data => x_msg_data
3102 ,x_return_status => l_return_status
3103 );
3104 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Operating Unit Status :'||l_return_status);
3105 IF DPP_DEBUG_HIGH_ON THEN
3106 fnd_file.put_line(fnd_file.log, 'Validate Operating Unit Return Status: '||l_txn_header_rec_type.org_id ||l_return_status ||'Error Msg: '||x_msg_data);
3107 END IF;
3108
3109 IF l_return_status = Fnd_Api.g_ret_sts_error OR l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
3110 l_concatenated_error_message :=l_concatenated_error_message|| x_msg_data;
3111 ROLLBACK TO DPP_Insert_Transaction;
3112 Update_InterfaceErrSts(
3113 p_txn_header_rec_type => l_txn_header_rec_type
3114 ,x_return_status =>l_return_status
3115 );
3116 RAISE Fnd_Api.g_exc_error;
3117 END IF;
3118 --End Validate the Operating Unit
3119
3120 --Validate the vendor Details
3121 Validate_SupplierDetails(p_txn_header_rec_type => l_txn_header_rec_type
3122 ,x_msg_count => x_msg_count
3123 ,x_msg_data => x_msg_data
3124 ,x_return_status => l_return_status
3125 );
3126
3127 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Supplier Details Status :'||l_return_status);
3128
3129 IF DPP_DEBUG_HIGH_ON THEN
3130 fnd_file.put_line(fnd_file.log, 'Validate Supplier Details Return Status:'||l_return_status ||'Error Msg'||x_msg_data);
3131 END IF;
3132 IF l_return_status = Fnd_Api.g_ret_sts_error OR l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
3133 l_concatenated_error_message :=l_concatenated_error_message|| x_msg_data;
3134 ROLLBACK TO DPP_Insert_Transaction;
3135 Update_InterfaceErrSts(
3136 p_txn_header_rec_type => l_txn_header_rec_type
3137 ,x_return_status =>l_return_status
3138 );
3139 RAISE Fnd_Api.g_exc_error;
3140 END IF;
3141 --End Validate the vendor Details
3142
3143 --ANBBALAS for 12_1_2
3144 --Validate the Supplier Trade Profile setup
3145 Validate_SupplierTrdPrfl(p_txn_header_rec_type => l_txn_header_rec_type
3146 ,x_supp_trade_profile_id => l_supp_trade_profile_id
3147 ,x_msg_count => x_msg_count
3148 ,x_msg_data => x_msg_data
3149 ,x_return_status => l_return_status
3150 );
3151
3152 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Supplier Trade Profile Status :' || l_return_status);
3153 IF DPP_DEBUG_HIGH_ON THEN
3154 fnd_file.put_line(fnd_file.log, 'Validate Supplier Trade Profile Return Status:' || l_return_status || 'Error Msg ' || x_msg_data);
3155 END IF;
3156 IF l_return_status = Fnd_Api.g_ret_sts_error OR l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
3157 l_concatenated_error_message := l_concatenated_error_message || x_msg_data;
3158 ROLLBACK TO DPP_Insert_Transaction;
3159 Update_InterfaceErrSts(
3160 p_txn_header_rec_type => l_txn_header_rec_type
3161 ,x_return_status =>l_return_status
3162 );
3163 RAISE Fnd_Api.g_exc_error;
3164 END IF;
3165 --End Validate the Supplier Trade Profile setup
3166
3167 --Validate the Process Execution Setup at Supplier Trade Profile or System Parameters
3168 Validate_ExecProcessSetup(p_txn_header_rec_type => l_txn_header_rec_type
3169 ,p_supp_trade_profile_id => l_supp_trade_profile_id
3170 ,x_msg_count => x_msg_count
3171 ,x_msg_data => x_msg_data
3172 ,x_return_status => l_return_status
3173 );
3174
3175 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Execution Process Setup Status : ' || l_return_status);
3176
3177 IF DPP_DEBUG_HIGH_ON THEN
3178 fnd_file.put_line(fnd_file.log, 'Validate Execution Process Setup Status : ' || l_return_status || 'Error Msg ' || x_msg_data);
3179 END IF;
3180 IF l_return_status = Fnd_Api.g_ret_sts_error OR l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
3181 l_concatenated_error_message :=l_concatenated_error_message || x_msg_data;
3182 ROLLBACK TO DPP_Insert_Transaction;
3183 Update_InterfaceErrSts(
3184 p_txn_header_rec_type => l_txn_header_rec_type
3185 ,x_return_status =>l_return_status
3186 );
3187 RAISE Fnd_Api.g_exc_error;
3188 END IF;
3189 --End Validate the Process Execution Setup at Supplier Trade Profile or System Parameters
3190
3191 --Validate the transaction currency
3192 Validate_currency(p_txn_header_rec_type => l_txn_header_rec_type
3193 ,x_msg_count => x_msg_count
3194 ,x_msg_data => x_msg_data
3195 ,x_return_status => l_return_status
3196 );
3197
3198 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Currency Status :'||l_return_status);
3199
3200 IF DPP_DEBUG_HIGH_ON THEN
3201 fnd_file.put_line(fnd_file.log, 'Validate Currency Return Status:'||l_return_status ||'Error Msg'||x_msg_data);
3202 END IF;
3203 IF l_return_status = Fnd_Api.g_ret_sts_error OR l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
3204 l_concatenated_error_message :=l_concatenated_error_message|| x_msg_data;
3205 Update_InterfaceErrSts(
3206 p_txn_header_rec_type => l_txn_header_rec_type
3207 ,x_return_status =>l_return_status
3208 );
3209 END IF;
3210 --End Validate the transaction currency
3211
3212 Validate_lines(p_txn_header_rec_type => l_txn_header_rec_type
3213 ,x_msg_count => x_msg_count
3214 ,x_msg_data => x_msg_data
3215 ,x_return_status => l_return_status
3216 );
3217
3218 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Validate Lines Status :'||l_return_status);
3219 IF DPP_DEBUG_HIGH_ON THEN
3220 fnd_file.put_line(fnd_file.log, 'Validate Line Details Return Status:'||l_return_status ||'Error Msg'||x_msg_data);
3221 END IF;
3222 IF l_return_status = Fnd_Api.g_ret_sts_error OR l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
3223 ROLLBACK TO DPP_Insert_Transaction;
3224 l_concatenated_error_message :=l_concatenated_error_message|| x_msg_data;
3225 Update_InterfaceErrSts(
3226 p_txn_header_rec_type => l_txn_header_rec_type
3227 ,x_return_status =>l_return_status
3228 );
3229 END IF;
3230
3231 --Check transaction status and populate l_transaction_status
3232 BEGIN
3233 SELECT dtha.transaction_status,
3234 dtha.transaction_header_id
3235 INTO l_transaction_status
3236 ,l_txn_header_rec_type.transaction_header_id
3237 FROM dpp_transaction_headers_all dtha
3238 WHERE dtha.ref_document_number = l_txn_header_rec_type.ref_document_number
3239 AND dtha.vendor_id = l_txn_header_rec_type.vendor_id
3240 --Modification to include supplier site reference
3241 AND dtha.vendor_site_id = l_txn_header_rec_type.vendor_site_id
3242 AND transaction_status <> 'CANCELLED';
3243
3244 EXCEPTION
3245 WHEN NO_DATA_FOUND THEN
3246 l_transaction_status := NULL;
3247 WHEN TOO_MANY_ROWS THEN
3248 fnd_message.set_name('DPP', 'DPP_TRANSACTION_EXIST');
3249 fnd_message.set_token('SUPPLIER_NAME', l_txn_header_rec_type.vendor_name);
3250 fnd_message.set_token('SUPPLIER_SITE', l_txn_header_rec_type.vendor_site_code);
3251 fnd_message.set_token('DOC_REF_NO', l_txn_header_rec_type.ref_document_number);
3252 x_msg_data := fnd_message.get();
3253 l_txn_header_rec_type.error_code := 'DPP_TRANSACTION_EXIST';
3254 l_concatenated_error_message :=l_concatenated_error_message|| x_msg_data;
3255 Update_InterfaceErrSts(
3256 p_txn_header_rec_type => l_txn_header_rec_type
3257 ,x_return_status =>l_return_status
3258 );
3259
3260 END;
3261 --END Check transaction status and populate l_transaction_status
3262
3263 BEGIN
3264 SELECT lookup_code
3265 INTO l_status_cancelled
3266 FROM fnd_lookups
3267 WHERE lookup_type = 'DPP_TRANSACTION_STATUSES'
3268 AND lookup_code = 'CANCELLED';
3269 EXCEPTION
3270 WHEN no_data_found THEN
3271 x_return_status := fnd_api.g_ret_sts_error;
3272 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
3273 fnd_message.set_name('DPP', 'DPP_TXN_STS_ERR');
3274 END IF;
3275 x_msg_data := fnd_message.get();
3276 --RAISE Fnd_Api.G_EXC_ERROR;
3277 l_concatenated_error_message :=l_concatenated_error_message|| x_msg_data;
3278 Update_InterfaceErrSts(
3279 p_txn_header_rec_type => l_txn_header_rec_type
3280 ,x_return_status =>l_return_status
3281 );
3282 END;
3283 --Check transaction type
3284 IF l_transaction_type = 'INB' THEN
3285 IF l_transaction_status IS NULL OR l_transaction_status = l_status_cancelled THEN
3286 IF DPP_DEBUG_HIGH_ON THEN
3287 fnd_file.put_line(fnd_file.log, ' Inbound Price Protection Transaction ' );
3288 END IF;
3289 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'New Transaction');
3290 IF l_concatenated_error_message IS NOT NULL THEN
3291 RAISE Fnd_Api.g_exc_error;
3292 END IF;
3293 -- Create Header record in dpp_transaction_headers_all table
3294 Create_Header(p_txn_header_rec_type => l_txn_header_rec_type
3295 ,x_msg_count => x_msg_count
3296 ,x_msg_data => x_msg_data
3297 ,x_return_status => l_return_status
3298 );
3299
3300 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Create Header Status :'||l_return_status);
3301 IF DPP_DEBUG_HIGH_ON THEN
3302 fnd_file.put_line(fnd_file.log, 'Create Header Return Status:'||l_return_status ||'Error Msg'||x_msg_data);
3303 END IF;
3304 IF l_return_status = Fnd_Api.g_ret_sts_error OR l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
3305 ROLLBACK TO DPP_Insert_Transaction;
3306 Update_InterfaceErrSts(
3307 p_txn_header_rec_type => l_txn_header_rec_type
3308 ,x_return_status =>l_return_status
3309 );
3310 RAISE Fnd_Api.g_exc_error;
3311 END IF;
3312 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Create_Header');
3313 --Update Header history log
3314 IF l_log_enabled = 'Y' THEN
3315 Update_HeaderLog(p_txn_header_rec_type => l_txn_header_rec_type
3316 ,x_msg_count => x_msg_count
3317 ,x_msg_data => x_msg_data
3318 ,x_return_status => l_return_status
3319 );
3320 IF DPP_DEBUG_HIGH_ON THEN
3321 fnd_file.put_line(fnd_file.log, 'Update Header Log Return Status:'||l_return_status ||'Error Msg'||x_msg_data);
3322 END IF;
3323
3324 IF l_return_status = Fnd_Api.g_ret_sts_error OR l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
3325 l_concatenated_error_message :=l_concatenated_error_message|| x_msg_data;
3326 END IF;
3327 END IF;
3328 --Get the lines in a tbl type
3329 form_line_tbl(
3330 p_txn_header_rec_type => l_txn_header_rec_type
3331 ,p_txn_lines_tbl_type => l_txn_lines_tbl_type
3332 ,x_msg_count => x_msg_count
3333 ,x_msg_data => x_msg_data
3334 ,x_return_status => l_return_status
3335 );
3336
3337 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Form Line Tbl Status :'||l_return_status);
3338 IF DPP_DEBUG_HIGH_ON THEN
3339 fnd_file.put_line(fnd_file.log, 'Form Line Tbl Return Status:'||l_return_status ||'Error Msg'||x_msg_data);
3340 END IF;
3341 IF l_return_status = Fnd_Api.g_ret_sts_error OR l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
3342 l_concatenated_error_message :=l_concatenated_error_message|| x_msg_data;
3343 Update_InterfaceLineErrSts(
3344 p_txn_header_rec_type => l_txn_header_rec_type,
3345 p_txn_lines_tbl_type => l_txn_lines_tbl_type
3346 ,x_return_status =>l_return_status
3347 );
3348 END IF;
3349 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Form line tbl');
3350 --Validate the distributor Part Number
3351 Validate_SupplierPartNum(
3352 p_txn_header_rec_type =>l_txn_header_rec_type
3353 ,p_txn_lines_tbl_type => l_txn_lines_tbl_type
3354 ,x_msg_count => x_msg_count
3355 ,x_msg_data => x_msg_data
3356 ,x_return_status => l_return_status
3357 );
3358 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Supplier Part Num Status :'||l_return_status);
3359 IF G_DEBUG THEN
3360 fnd_file.put_line(fnd_file.log, 'Validate SupplierPartNum Return Status:'||l_return_status ||'Error Msg'||x_msg_data);
3361 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Validate SupplierPartNum Return Status:'||l_return_status ||'Error Msg'||substr(x_msg_data,1,1000));
3362 END IF;
3363
3364 IF l_return_status = Fnd_Api.g_ret_sts_error OR l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
3365 l_concatenated_error_message :=l_concatenated_error_message|| x_msg_data;
3366 ROLLBACK TO DPP_Insert_Transaction;
3367 Update_InterfaceLineErrSts(
3368 p_txn_header_rec_type => l_txn_header_rec_type,
3369 p_txn_lines_tbl_type => l_txn_lines_tbl_type
3370 ,x_return_status =>l_return_status
3371 );
3372 END IF;
3373 IF l_concatenated_error_message IS NOT NULL THEN
3374 x_msg_data:= l_concatenated_error_message;
3375 RAISE Fnd_Api.g_exc_error;
3376 END IF;
3377 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Validate Supplier Part Number');
3378 --Call Insert lines procedure
3379 Create_lines( p_txn_header_rec_type => l_txn_header_rec_type
3380 ,p_txn_lines_tbl_type => l_txn_lines_tbl_type
3381 ,x_msg_count => x_msg_count
3382 ,x_msg_data => x_msg_data
3383 ,x_return_status => l_return_status
3384 );
3385 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Create Lines Status :'||l_return_status);
3386 IF DPP_DEBUG_HIGH_ON THEN
3387 fnd_file.put_line(fnd_file.log, 'Create Lines Return Status:'||l_return_status ||'Error Msg'||x_msg_data);
3388 END IF;
3389 IF l_return_status = Fnd_Api.g_ret_sts_error OR l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
3390 l_concatenated_error_message :=l_concatenated_error_message|| x_msg_data;
3391 ROLLBACK TO DPP_Insert_Transaction;
3392 Update_InterfaceLineErrSts(
3393 p_txn_header_rec_type => l_txn_header_rec_type,
3394 p_txn_lines_tbl_type => l_txn_lines_tbl_type
3395 ,x_return_status =>l_return_status
3396 );
3397 RAISE Fnd_Api.g_exc_error;
3398 END IF;
3399 --Update lines log
3400 IF l_log_enabled = 'Y' THEN
3401 Update_LinesLog(
3402 p_txn_lines_tbl_type => l_txn_lines_tbl_type
3403 ,x_msg_count => x_msg_count
3404 ,x_msg_data => x_msg_data
3405 ,x_return_status => l_return_status
3406 );
3407 IF DPP_DEBUG_HIGH_ON THEN
3408 fnd_file.put_line(fnd_file.log, 'Update Lines Log Return Status:'||l_return_status ||'Error Msg'||x_msg_data);
3409 END IF;
3410 IF l_return_status = Fnd_Api.g_ret_sts_error OR l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
3411 l_concatenated_error_message :=l_concatenated_error_message|| x_msg_data;
3412 Update_InterfaceLineErrSts(
3413 p_txn_header_rec_type => l_txn_header_rec_type,
3414 p_txn_lines_tbl_type => l_txn_lines_tbl_type
3415 ,x_return_status =>l_return_status
3416 );
3417 END IF;
3418 END IF;
3419 IF l_concatenated_error_message IS NOT NULL THEN
3420 x_msg_data:= l_concatenated_error_message;
3421 RAISE Fnd_Api.g_exc_error;
3422 END IF;
3423 --Update Covered Inventory
3424 Update_CoveredInv(
3425 p_txn_header_rec_type => l_txn_header_rec_type
3426 ,p_txn_lines_tbl_type => l_txn_lines_tbl_type
3427 ,x_msg_count => x_msg_count
3428 ,x_msg_data =>x_msg_data
3429 ,x_return_status => l_return_status
3430 );
3431 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Update CoveredInv Status :'||l_return_status);
3432 IF DPP_DEBUG_HIGH_ON THEN
3433 fnd_file.put_line(fnd_file.log, 'Update Covered Inventory Return Status:'||l_return_status);
3434 END IF;
3435 IF l_return_status = Fnd_Api.g_ret_sts_error OR l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
3436 l_concatenated_error_message :=l_concatenated_error_message|| x_msg_data;
3437 ROLLBACK TO DPP_Insert_Transaction;
3438 Update_InterfaceLineErrSts(
3439 p_txn_header_rec_type => l_txn_header_rec_type,
3440 p_txn_lines_tbl_type => l_txn_lines_tbl_type
3441 ,x_return_status =>l_return_status
3442 );
3443 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Status '||l_return_status|| ' Message '||x_msg_data);
3444
3445 RAISE Fnd_Api.g_exc_error;
3446 END IF;
3447 ELSE
3448 --The transaction is in Active/.... Status
3449 fnd_message.set_name('DPP', 'DPP_TRANSACTION_EXIST');
3450 fnd_message.set_token('SUPPLIER_NAME', l_txn_header_rec_type.vendor_name);
3451 fnd_message.set_token('SUPPLIER_SITE', l_txn_header_rec_type.vendor_site_code);
3452 fnd_message.set_token('DOC_REF_NO', l_txn_header_rec_type.ref_document_number);
3453 x_msg_data := fnd_message.get();
3454 l_concatenated_error_message :=l_concatenated_error_message|| x_msg_data;
3455 l_txn_header_rec_type.error_code := 'DPP_TRANSACTION_EXIST';
3456 IF DPP_DEBUG_HIGH_ON THEN
3457 fnd_file.put_line(fnd_file.log, 'Error:' || x_msg_data);
3458 END IF;
3459 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Transaction Exist Status :'||l_return_status);
3460 Update_InterfaceErrSts(
3461 p_txn_header_rec_type => l_txn_header_rec_type
3462 ,x_return_status =>l_return_status
3463 );
3464 RAISE Fnd_Api.g_exc_error;
3465 END IF; --l_transaction_status is null
3466
3467 fnd_message.set_name('DPP', 'DPP_TRANSACTION_CREATED');
3468 fnd_message.set_token('SUPPLIER_NAME', l_txn_header_rec_type.vendor_name);
3469 fnd_message.set_token('SUPPLIER_SITE', l_txn_header_rec_type.vendor_site_code);
3470 fnd_message.set_token('DOC_REF_NO', l_txn_header_rec_type.ref_document_number);
3471 fnd_message.set_token('TRANSACTION_NUMBER', l_txn_header_rec_type.transaction_number);
3472 fnd_message.set_token('OPERATING_UNIT', l_txn_header_rec_type.operating_unit_name);
3473 x_msg_data := fnd_message.get();
3474 fnd_file.put_line(fnd_file.log, x_msg_data);
3475
3476 IF l_concatenated_error_message IS NOT NULL THEN
3477 x_msg_data := 'The Transaction for the supplier name '||l_txn_header_rec_type.vendor_name ||
3478 ',Supplier site '||l_txn_header_rec_type.vendor_site_code ||' and Operating Unit Name '||l_txn_header_rec_type.operating_unit_name || ' failed.' ||l_concatenated_error_message;
3479 RAISE Fnd_Api.g_exc_error;
3480 END IF;
3481 --ANBBALAS for 12_1_2
3482 --Populate Execution Processes based on Supplier Trade Profile or System Parameters
3483 DPP_EXECUTIONPROCESS_PVT.InsertExecProcesses(p_txn_hdr_id => l_txn_header_rec_type.transaction_header_id
3484 ,p_org_id => l_txn_header_rec_type.org_id
3485 ,p_supp_trd_prfl_id => l_supp_trade_profile_id
3486 ,x_msg_count => x_msg_count
3487 ,x_msg_data => x_msg_data
3488 ,x_return_status => l_return_status
3489 );
3490 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Insert Execution Processes Status : ' || l_return_status);
3491 IF DPP_DEBUG_HIGH_ON THEN
3492 fnd_file.put_line(fnd_file.log, 'Populate Execution Processes based on Supplier Trade Profile or System Parameters Status : ' || l_return_status || 'Error Msg ' || x_msg_data);
3493 END IF;
3494 IF l_return_status = Fnd_Api.g_ret_sts_error OR l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
3495 l_concatenated_error_message := l_concatenated_error_message || x_msg_data;
3496 ROLLBACK TO DPP_Insert_Transaction;
3497 Update_InterfaceErrSts(
3498 p_txn_header_rec_type => l_txn_header_rec_type
3499 ,x_return_status => l_return_status
3500 );
3501 RAISE Fnd_Api.g_exc_error;
3502 END IF;
3503 --End Populate Execution Processes based on Supplier Trade Profile or System Parameters
3504
3505 --The Transaction is an Approval response
3506 ELSE
3507 IF l_transaction_status IS NULL OR l_transaction_status <> 'APPROVED' THEN
3508 fnd_message.set_name('DPP', 'DPP_TXN_NOT_EXISTS');
3509 x_msg_data := fnd_message.get();
3510 l_txn_header_rec_type.error_code := 'DPP_TXN_NOT_EXISTS';
3511 l_concatenated_error_message :=l_concatenated_error_message|| x_msg_data;
3512 Update_InterfaceErrSts(
3513 p_txn_header_rec_type => l_txn_header_rec_type
3514 ,x_return_status =>l_return_status
3515 );
3516 --RAISE Fnd_Api.g_exc_error;
3517 END IF;
3518 --Validate Supplier approved date,claim Number
3519 IF l_txn_header_rec_type.supplier_approval_date IS NULL
3520 THEN
3521 fnd_message.set_name('DPP', 'DPP_APP_DETAILS_NOT_EXISTS');
3522 fnd_message.set_token('SUPPLIER_NAME', l_txn_header_rec_type.vendor_name);
3523 fnd_message.set_token('SUPPLIER_SITE', l_txn_header_rec_type.vendor_site_code);
3524 fnd_message.set_token('DOC_REF_NO', l_txn_header_rec_type.ref_document_number);
3525 x_msg_data := fnd_message.get();
3526 l_txn_header_rec_type.error_code := 'DPP_APP_DETAILS_NOT_EXISTS';
3527 l_concatenated_error_message :=l_concatenated_error_message|| x_msg_data;
3528 Update_InterfaceErrSts(
3529 p_txn_header_rec_type => l_txn_header_rec_type
3530 ,x_return_status =>l_return_status
3531 );
3532 -- RAISE Fnd_Api.g_exc_error;
3533 END IF;
3534 IF DPP_DEBUG_HIGH_ON THEN
3535 fnd_file.put_line(fnd_file.log, 'Inbound Approval Transaction');
3536 END IF;
3537 IF l_concatenated_error_message IS NOT NULL THEN
3538 x_msg_data:= l_concatenated_error_message;
3539 RAISE Fnd_Api.g_exc_error;
3540 END IF;
3541 --Get the lines in a tbl type
3542 form_line_tbl(
3543 p_txn_header_rec_type => l_txn_header_rec_type
3544 ,p_txn_lines_tbl_type => l_txn_lines_tbl_type
3545 ,x_msg_count => x_msg_count
3546 ,x_msg_data => x_msg_data
3547 ,x_return_status => l_return_status
3548 );
3549 IF DPP_DEBUG_HIGH_ON THEN
3550 fnd_file.put_line(fnd_file.log, 'Form Line Tbl Return Status:'||l_return_status ||'Error Msg'||x_msg_data);
3551 END IF;
3552 IF l_return_status = Fnd_Api.g_ret_sts_error OR l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
3553 l_concatenated_error_message :=l_concatenated_error_message|| x_msg_data;
3554 ROLLBACK TO DPP_Insert_Transaction;
3555 Update_InterfaceLineErrSts(
3556 p_txn_header_rec_type => l_txn_header_rec_type,
3557 p_txn_lines_tbl_type => l_txn_lines_tbl_type
3558 ,x_return_status =>l_return_status
3559 );
3560 --RAISE Fnd_Api.g_exc_error;
3561 END IF;
3562 Validate_SupplierPartNum(
3563 p_txn_header_rec_type =>l_txn_header_rec_type
3564 ,p_txn_lines_tbl_type => l_txn_lines_tbl_type
3565 ,x_msg_count => x_msg_count
3566 ,x_msg_data => x_msg_data
3567 ,x_return_status => l_return_status
3568 );
3569 IF DPP_DEBUG_HIGH_ON THEN
3570 fnd_file.put_line(fnd_file.log, 'Validate SupplierPartNum Return Status:'||l_return_status ||'Error Msg'||x_msg_data);
3571 END IF;
3572
3573 IF l_return_status = Fnd_Api.g_ret_sts_error OR l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
3574 IF DPP_DEBUG_HIGH_ON THEN
3575 fnd_file.put_line(fnd_file.log, 'Invalid Supplier part number/Item Number/Inventory Item Id.Status:'||l_return_status ||'Error Msg'||x_msg_data);
3576 END IF;
3577 l_concatenated_error_message :=l_concatenated_error_message|| x_msg_data;
3578 Update_InterfaceLineErrSts(
3579 p_txn_header_rec_type => l_txn_header_rec_type,
3580 p_txn_lines_tbl_type => l_txn_lines_tbl_type
3581 ,x_return_status =>l_return_status
3582 );
3583 RAISE Fnd_Api.g_exc_error;
3584 END IF;
3585
3586 --Call procedure to update approval details
3587 Update_Approval(
3588 p_txn_header_rec_type =>l_txn_header_rec_type
3589 ,p_txn_lines_tbl_type => l_txn_lines_tbl_type
3590 ,x_msg_count => x_msg_count
3591 ,x_msg_data => x_msg_data
3592 ,x_return_status => l_return_status
3593 );
3594 IF DPP_DEBUG_HIGH_ON THEN
3595 fnd_file.put_line(fnd_file.log, 'Update Approval Return Status:'||l_return_status ||'Error Msg'||x_msg_data);
3596 END IF;
3597 IF l_return_status = Fnd_Api.g_ret_sts_error OR l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
3598 l_concatenated_error_message :=l_concatenated_error_message|| x_msg_data;
3599 ROLLBACK TO DPP_Insert_Transaction;
3600 Update_InterfaceLineErrSts(
3601 p_txn_header_rec_type => l_txn_header_rec_type,
3602 p_txn_lines_tbl_type => l_txn_lines_tbl_type
3603 ,x_return_status =>l_return_status
3604 );
3605 --RAISE Fnd_Api.g_exc_error;
3606 END IF;
3607
3608 IF l_concatenated_error_message IS NOT NULL THEN
3609 Update_InterfaceErrSts(
3610 p_txn_header_rec_type => l_txn_header_rec_type
3611 ,x_return_status =>l_return_status
3612 );
3613 RAISE Fnd_Api.g_exc_error;
3614 END IF;
3615
3616 --call header history API for log
3617 IF l_log_enabled = 'Y' THEN
3618 Update_HeaderLog(p_txn_header_rec_type => l_txn_header_rec_type
3619 ,x_msg_count => x_msg_count
3620 ,x_msg_data => x_msg_data
3621 ,x_return_status => l_return_status
3622 );
3623 IF DPP_DEBUG_HIGH_ON THEN
3624 fnd_file.put_line(fnd_file.log, 'Update Header Log Return Status:'||l_return_status ||'Error Msg'||x_msg_data);
3625 END IF;
3626 IF l_return_status = Fnd_Api.g_ret_sts_error OR l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
3627 --RAISE Fnd_Api.g_exc_error;
3628 l_concatenated_error_message :=l_concatenated_error_message|| x_msg_data;
3629 END IF;
3630 --Call history log for lines
3631 Update_LinesLog(
3632 p_txn_lines_tbl_type => l_txn_lines_tbl_type
3633 ,x_msg_count => x_msg_count
3634 ,x_msg_data => x_msg_data
3635 ,x_return_status => l_return_status
3636 );
3637 IF DPP_DEBUG_HIGH_ON THEN
3638 fnd_file.put_line(fnd_file.log, 'Update Lines Log Return Status:'||l_return_status ||'Error Msg'||x_msg_data);
3639 END IF;
3640 IF l_return_status = Fnd_Api.g_ret_sts_error OR l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
3641 l_concatenated_error_message :=l_concatenated_error_message|| x_msg_data;
3642 --RAISE Fnd_Api.g_exc_error;
3643 END IF;
3644
3645 END IF;
3646 IF l_concatenated_error_message IS NOT NULL THEN
3647 Update_InterfaceErrSts(
3648 p_txn_header_rec_type => l_txn_header_rec_type
3649 ,x_return_status =>l_return_status
3650 );
3651 RAISE Fnd_Api.g_exc_error;
3652 END IF;
3653 --Call procedure to update the supplier approved by flag in claims table
3654
3655 Update_ClaimsApproval (
3656 p_txn_header_rec_type =>l_txn_header_rec_type
3657 ,p_txn_lines_tbl_type => l_txn_lines_tbl_type
3658 ,x_msg_count => x_msg_count
3659 ,x_msg_data => x_msg_data
3660 ,x_return_status => l_return_status
3661 );
3662 IF DPP_DEBUG_HIGH_ON THEN
3663 fnd_file.put_line(fnd_file.log, 'Update Claims Approval Return Status:'||l_return_status ||'Error Msg'||x_msg_data);
3664 END IF;
3665 IF l_return_status = Fnd_Api.g_ret_sts_error OR l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
3666 l_concatenated_error_message :=l_concatenated_error_message|| x_msg_data;
3667 ROLLBACK TO DPP_Insert_Transaction;
3668 Update_InterfaceErrSts(
3669 p_txn_header_rec_type => l_txn_header_rec_type
3670 ,x_return_status =>l_return_status
3671 );
3672 --RAISE Fnd_Api.g_exc_error;
3673 END IF;
3674 fnd_message.set_name('DPP', 'DPP_TRANSACTION_APPROVED');
3675 fnd_message.set_token('SUPPLIER_NAME', l_txn_header_rec_type.vendor_name);
3676 fnd_message.set_token('SUPPLIER_SITE', l_txn_header_rec_type.vendor_site_code);
3677 fnd_message.set_token('OPERATING_UNIT', l_txn_header_rec_type.operating_unit_name);
3678 fnd_message.set_token('DOC_REF_NO', l_txn_header_rec_type.ref_document_number);
3679 x_msg_data := fnd_message.get();
3680 fnd_file.put_line(fnd_file.log, x_msg_data);
3681 END IF; --l_transaction_type = 'INB'
3682 --Call procedure to update interface tables (header )
3683 Update_InterfaceTbl (
3684 p_txn_header_rec_type =>l_txn_header_rec_type
3685 ,p_txn_lines_tbl_type => l_txn_lines_tbl_type
3686 ,x_msg_count => x_msg_count
3687 ,x_msg_data =>x_msg_data
3688 ,x_return_status => l_return_status
3689 );
3690 IF DPP_DEBUG_HIGH_ON THEN
3691 fnd_file.put_line(fnd_file.log, 'Update Interface Table Return Status: '||l_return_status ||'Error Msg '||x_msg_data);
3692 END IF;
3693 IF l_return_status = Fnd_Api.g_ret_sts_error OR l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
3694 l_concatenated_error_message :=l_concatenated_error_message|| x_msg_data;
3695 ROLLBACK TO DPP_Insert_Transaction;
3696 Update_InterfaceErrSts(
3697 p_txn_header_rec_type => l_txn_header_rec_type
3698 ,x_return_status =>l_return_status
3699 );
3700 --RAISE Fnd_Api.g_exc_error;
3701 END IF;
3702 IF l_concatenated_error_message IS NOT NULL THEN
3703 Update_InterfaceErrSts(
3704 p_txn_header_rec_type => l_txn_header_rec_type
3705 ,x_return_status =>l_return_status
3706 );
3707 RAISE Fnd_Api.g_exc_error;
3708 END IF;
3709 END LOOP; --End of loop FOR fetch_header_rec IN fetch_header_cur
3710 EXCEPTION
3711 WHEN Fnd_Api.G_EXC_ERROR THEN
3712 x_return_status := Fnd_Api.g_ret_sts_error ;
3713 fnd_message.set_name('DPP', 'DPP_TRANSACTION_ERROR');
3714 fnd_message.set_token('SUPPLIER_NAME', l_txn_header_rec_type.vendor_name);
3715 fnd_message.set_token('SUPPLIER_ID', l_txn_header_rec_type.vendor_id);
3716 fnd_message.set_token('DOC_REF_NO', l_txn_header_rec_type.ref_document_number);
3717 l_msg_data := fnd_message.get();
3718 x_msg_data := l_msg_data || l_concatenated_error_message;
3719 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, 'DPP G_EXC_ERROR x_msg_data');
3720 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, 'Status '||x_return_status|| ' Message '||x_msg_data);
3721
3722
3723 WHEN Fnd_Api.G_EXC_UNEXPECTED_ERROR THEN
3724 fnd_message.set_name('DPP', 'DPP_TRANSACTION_ERROR');
3725 fnd_message.set_token('SUPPLIER_NAME', l_txn_header_rec_type.vendor_name);
3726 fnd_message.set_token('SUPPLIER_ID', l_txn_header_rec_type.vendor_id);
3727 fnd_message.set_token('DOC_REF_NO', l_txn_header_rec_type.ref_document_number);
3728 x_msg_data := fnd_message.get();
3729 x_msg_data:= x_msg_data ||l_concatenated_error_message;
3730 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
3731 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, 'DPP G_EXC_UNEXPECTED_ERROR Transaction Int header id '||l_txn_header_rec_type.transaction_int_header_id);
3732
3733 WHEN OTHERS THEN
3734 fnd_message.set_name('DPP', 'DPP_TRANSACTION_ERROR');
3735 fnd_message.set_token('SUPPLIER_NAME', l_txn_header_rec_type.vendor_name);
3736 fnd_message.set_token('SUPPLIER_ID', l_txn_header_rec_type.vendor_id);
3737 fnd_message.set_token('DOC_REF_NO', l_txn_header_rec_type.ref_document_number);
3738 x_msg_data := fnd_message.get();
3739 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, 'Error:' ||x_msg_data);
3740 x_msg_data := x_msg_data || l_concatenated_error_message;
3741 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
3742 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, 'Error after assignment:' ||x_msg_data);
3743 IF Fnd_Msg_Pub.Check_Msg_Level ( Fnd_Msg_Pub.G_MSG_LVL_UNEXP_ERROR )
3744 THEN
3745 Fnd_Msg_Pub.Add_Exc_Msg( G_PKG_NAME,l_api_name);
3746 END IF;
3747 END insert_transaction;
3748
3749 PROCEDURE Create_IntHeader(
3750 p_txn_header_rec_type IN OUT nocopy txn_header_rec,
3751 x_rec_count OUT nocopy NUMBER,
3752 x_return_status OUT nocopy VARCHAR2)
3753
3754 AS
3755 l_api_name constant VARCHAR2(30) := 'Create_IntHeader';
3756 l_api_version constant NUMBER := 1.0;
3757 l_full_name constant VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
3758
3759 l_return_status VARCHAR2(30);
3760 l_msg_count NUMBER;
3761 l_msg_data VARCHAR2(4000);
3762
3763 l_init_msg_list VARCHAR2(30) := fnd_api.g_false;
3764 l_commit VARCHAR2(30) := fnd_api.g_false;
3765 l_validation_level NUMBER := fnd_api.g_valid_level_full;
3766 l_transaction_int_header_id NUMBER;
3767
3768 BEGIN
3769 p_txn_header_rec_type.transaction_source := 'WEBADI';
3770 -- Checks for the doc reference number for same vendor id in header table*/
3771 BEGIN
3772 SELECT transaction_int_header_id
3773 INTO l_transaction_int_header_id
3774 FROM dpp_txn_headers_int_all dtha
3775 WHERE dtha.ref_document_number = p_txn_header_rec_type.ref_document_number
3776 AND dtha.vendor_name = p_txn_header_rec_type.vendor_name
3777 AND dtha.vendor_site = p_txn_header_rec_type.vendor_site_code
3778 AND dtha.interface_status = 'N';
3779
3780 EXCEPTION
3781 WHEN no_data_found THEN
3782 l_transaction_int_header_id := NULL;
3783 END;
3784
3785 IF l_transaction_int_header_id IS NULL THEN
3786 SELECT dpp_trans_int_hdr_id_seq.nextval
3787 INTO p_txn_header_rec_type.transaction_int_header_id
3788 FROM dual;
3789
3790 INSERT INTO dpp_txn_headers_int_all
3791 (transaction_int_header_id,
3792 ref_document_number,
3793 effective_start_date,
3794 days_covered,
3795 org_id,
3796 operating_unit_name,
3797 vendor_name,
3798 vendor_id,
3799 vendor_site,
3800 vendor_site_id,
3801 vendor_contact_name,
3802 contact_email_address,
3803 contact_phone,
3804 currency,
3805 supp_dist_claim_id,
3806 supp_dist_claim_number,
3807 supplier_approved_by,
3808 supplier_approval_date,
3809 transaction_source,
3810 interface_status,
3811 error_code,
3812 creation_date,
3813 created_by,
3814 last_update_date,
3815 last_updated_by,
3816 last_update_login,
3817 request_id,
3818 program_application_id,
3819 program_id,
3820 program_update_date,
3821 attribute_category,
3822 attribute1,
3823 attribute2,
3824 attribute3,
3825 attribute4,
3826 attribute5,
3827 attribute6,
3828 attribute7,
3829 attribute8,
3830 attribute9,
3831 attribute10,
3832 attribute11,
3833 attribute12,
3834 attribute13,
3835 attribute14,
3836 attribute15,
3837 attribute16,
3838 attribute17,
3839 attribute18,
3840 attribute19,
3841 attribute20,
3842 attribute21,
3843 attribute22,
3844 attribute23,
3845 attribute24,
3846 attribute25,
3847 attribute26,
3848 attribute27,
3849 attribute28,
3850 attribute29,
3851 attribute30)
3852 VALUES(
3853 p_txn_header_rec_type.transaction_int_header_id,
3854 p_txn_header_rec_type.ref_document_number,
3855 p_txn_header_rec_type.effective_start_date,
3856 p_txn_header_rec_type.days_covered,
3857 NULL,
3858 p_txn_header_rec_type.operating_unit_name,
3859 p_txn_header_rec_type.vendor_name,
3860 NULL,
3861 p_txn_header_rec_type.vendor_site_code,
3862 NULL,
3863 p_txn_header_rec_type.vendor_contact_name,
3864 p_txn_header_rec_type.contact_email_address,
3865 p_txn_header_rec_type.contact_phone,
3866 p_txn_header_rec_type.trx_currency,
3867 NULL,
3868 p_txn_header_rec_type.SUPP_DIST_CLAIM_NUMBER,
3869 p_txn_header_rec_type.supplier_approved_by,
3870 p_txn_header_rec_type.supplier_approval_date,
3871 p_txn_header_rec_type.transaction_source,
3872 'N',
3873 NULL,
3874 sysdate,
3875 FND_GLOBAL.User_Id ,
3876 sysdate,
3877 FND_GLOBAL.User_Id ,
3878 FND_GLOBAL.User_Id ,
3879 0,
3880 0,
3881 0,
3882 sysdate,
3883 p_txn_header_rec_type.attribute_category,
3884 p_txn_header_rec_type.attribute1,
3885 p_txn_header_rec_type.attribute2,
3886 p_txn_header_rec_type.attribute3,
3887 p_txn_header_rec_type.attribute4,
3888 p_txn_header_rec_type.attribute5,
3889 p_txn_header_rec_type.attribute6,
3890 p_txn_header_rec_type.attribute7,
3891 p_txn_header_rec_type.attribute8,
3892 p_txn_header_rec_type.attribute9,
3893 p_txn_header_rec_type.attribute10,
3894 p_txn_header_rec_type.attribute11,
3895 p_txn_header_rec_type.attribute12,
3896 p_txn_header_rec_type.attribute13,
3897 p_txn_header_rec_type.attribute14,
3898 p_txn_header_rec_type.attribute15,
3899 p_txn_header_rec_type.attribute16,
3900 p_txn_header_rec_type.attribute17,
3901 p_txn_header_rec_type.attribute18,
3902 p_txn_header_rec_type.attribute19,
3903 p_txn_header_rec_type.attribute20,
3904 p_txn_header_rec_type.attribute21,
3905 p_txn_header_rec_type.attribute22,
3906 p_txn_header_rec_type.attribute23,
3907 p_txn_header_rec_type.attribute24,
3908 p_txn_header_rec_type.attribute25,
3909 p_txn_header_rec_type.attribute26,
3910 p_txn_header_rec_type.attribute27,
3911 p_txn_header_rec_type.attribute28,
3912 p_txn_header_rec_type.attribute29,
3913 p_txn_header_rec_type.attribute30);
3914
3915 ELSE
3916
3917 UPDATE dpp_txn_headers_int_all
3918 SET
3919 ref_document_number = p_txn_header_rec_type.ref_document_number,
3920 effective_start_date = p_txn_header_rec_type.effective_start_date,
3921 days_covered = p_txn_header_rec_type.days_covered,
3922 vendor_name = p_txn_header_rec_type.vendor_name,
3923 vendor_site = p_txn_header_rec_type.vendor_site_code,
3924 VENDOR_CONTACT_NAME=p_txn_header_rec_type.VENDOR_CONTACT_NAME,
3925 contact_email_address = p_txn_header_rec_type.contact_email_address,
3926 contact_phone = p_txn_header_rec_type.contact_phone,
3927 attribute1 = p_txn_header_rec_type.attribute1,
3928 attribute2 = p_txn_header_rec_type.attribute2,
3929 attribute3 = p_txn_header_rec_type.attribute3,
3930 attribute4 = p_txn_header_rec_type.attribute4,
3931 attribute5 = p_txn_header_rec_type.attribute5,
3932 attribute6 = p_txn_header_rec_type.attribute6,
3933 attribute7 = p_txn_header_rec_type.attribute7,
3934 attribute8 = p_txn_header_rec_type.attribute8,
3935 attribute9 = p_txn_header_rec_type.attribute9,
3936 attribute10 = p_txn_header_rec_type.attribute10,
3937 attribute11 = p_txn_header_rec_type.attribute11,
3938 attribute12 = p_txn_header_rec_type.attribute12,
3939 attribute13 = p_txn_header_rec_type.attribute13,
3940 attribute14 = p_txn_header_rec_type.attribute14,
3941 attribute15 = p_txn_header_rec_type.attribute15,
3942 attribute16 = p_txn_header_rec_type.attribute16,
3943 attribute17 = p_txn_header_rec_type.attribute17,
3944 attribute18 = p_txn_header_rec_type.attribute18,
3945 attribute19 = p_txn_header_rec_type.attribute19,
3946 attribute20 = p_txn_header_rec_type.attribute20,
3947 attribute21 = p_txn_header_rec_type.attribute21,
3948 attribute22 = p_txn_header_rec_type.attribute22,
3949 attribute23 = p_txn_header_rec_type.attribute23,
3950 attribute24 = p_txn_header_rec_type.attribute24,
3951 attribute25 = p_txn_header_rec_type.attribute25,
3952 attribute26 = p_txn_header_rec_type.attribute26,
3953 attribute27 = p_txn_header_rec_type.attribute27,
3954 attribute28 = p_txn_header_rec_type.attribute28,
3955 attribute29 = p_txn_header_rec_type.attribute29,
3956 attribute30 = p_txn_header_rec_type.attribute30
3957 WHERE transaction_int_header_id = l_transaction_int_header_id;
3958
3959 --Assign transaction int header id value for updated header and for insert/update lines
3960 p_txn_header_rec_type.transaction_int_header_id := l_transaction_int_header_id;
3961 END IF;
3962
3963
3964
3965 EXCEPTION
3966 WHEN others THEN
3967 x_return_status := fnd_api.g_ret_sts_unexp_error;
3968 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
3969 fnd_message.set_name('FND', 'SQL_PLSQL_ERROR');
3970 fnd_message.set_token('ROUTINE', 'DPP_TRANSACTION_PVT');
3971 fnd_message.set_token('ERRNO', SQLCODE);
3972 fnd_message.set_token('REASON', sqlerrm);
3973 END IF;
3974
3975 END Create_IntHeader;
3976
3977 PROCEDURE Create_IntLines(
3978 p_transaction_lines_rec IN OUT nocopy txn_lines_rec,
3979 x_msg_count OUT nocopy NUMBER,
3980 x_return_status OUT nocopy VARCHAR2)
3981 AS
3982 l_api_name constant VARCHAR2(20) := 'Create_IntLines';
3983 l_full_name constant VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
3984
3985 l_user_id NUMBER :=FND_PROFILE.VALUE('USER_ID');
3986 create_IntLines_exception EXCEPTION;
3987 l_error_message VARCHAR2(4000);
3988 x_msg_data VARCHAR2(4000);
3989
3990 BEGIN
3991 SELECT dpp_trans_int_line_id_seq.nextval
3992 INTO p_transaction_lines_rec.transaction_int_line_id
3993 FROM dual;
3994
3995
3996 INSERT INTO dpp_txn_lines_int_all(
3997 transaction_int_header_id,
3998 transaction_int_line_id,
3999 supplier_part_num,
4000 inventory_item_id,
4001 item_number,
4002 change_type,
4003 change_value,
4004 covered_inventory,
4005 approved_inventory,
4006 uom,
4007 claim_amount,
4008 org_id,
4009 interface_status,
4010 error_code,
4011 creation_date,
4012 created_by,
4013 last_update_date,
4014 last_updated_by,
4015 last_update_login,
4016 request_id,
4017 program_application_id,
4018 program_id,
4019 program_update_date,
4020 attribute_category,
4021 attribute1,
4022 attribute2,
4023 attribute3,
4024 attribute4,
4025 attribute5,
4026 attribute6,
4027 attribute7,
4028 attribute8,
4029 attribute9,
4030 attribute10,
4031 attribute11,
4032 attribute12,
4033 attribute13,
4034 attribute14,
4035 attribute15,
4036 attribute16,
4037 attribute17,
4038 attribute18,
4039 attribute19,
4040 attribute20,
4041 attribute21,
4042 attribute22,
4043 attribute23,
4044 attribute24,
4045 attribute25,
4046 attribute26,
4047 attribute27,
4048 attribute28,
4049 attribute29,
4050 attribute30)
4051 VALUES(
4052 p_transaction_lines_rec.transaction_int_header_id,
4053 p_transaction_lines_rec.transaction_int_line_id,
4054 p_transaction_lines_rec.supplier_part_num,
4055 null,
4056 p_transaction_lines_rec.item_number,
4057 p_transaction_lines_rec.change_type,
4058 p_transaction_lines_rec.change_value,
4059 p_transaction_lines_rec.covered_inventory,
4060 p_transaction_lines_rec.approved_inventory,
4061 p_transaction_lines_rec.uom,
4062 NULL,
4063 NULL,
4064 'N',
4065 NULL,
4066 sysdate,
4067 FND_GLOBAL.User_Id ,
4068 sysdate,
4069 FND_GLOBAL.User_Id ,
4070 FND_GLOBAL.User_Id ,
4071 NULL,
4072 NULL,
4073 NULL,
4074 NULL,
4075 p_transaction_lines_rec.attribute_category,
4076 p_transaction_lines_rec.attribute1,
4077 p_transaction_lines_rec.attribute2,
4078 p_transaction_lines_rec.attribute3,
4079 p_transaction_lines_rec.attribute4,
4080 p_transaction_lines_rec.attribute5,
4081 p_transaction_lines_rec.attribute6,
4082 p_transaction_lines_rec.attribute7,
4083 p_transaction_lines_rec.attribute8,
4084 p_transaction_lines_rec.attribute9,
4085 p_transaction_lines_rec.attribute10,
4086 p_transaction_lines_rec.attribute11,
4087 p_transaction_lines_rec.attribute12,
4088 p_transaction_lines_rec.attribute13,
4089 p_transaction_lines_rec.attribute14,
4090 p_transaction_lines_rec.attribute15,
4091 p_transaction_lines_rec.attribute16,
4092 p_transaction_lines_rec.attribute17,
4093 p_transaction_lines_rec.attribute18,
4094 p_transaction_lines_rec.attribute19,
4095 p_transaction_lines_rec.attribute20,
4096 p_transaction_lines_rec.attribute21,
4097 p_transaction_lines_rec.attribute22,
4098 p_transaction_lines_rec.attribute23,
4099 p_transaction_lines_rec.attribute24,
4100 p_transaction_lines_rec.attribute25,
4101 p_transaction_lines_rec.attribute26,
4102 p_transaction_lines_rec.attribute27,
4103 p_transaction_lines_rec.attribute28,
4104 p_transaction_lines_rec.attribute29,
4105 p_transaction_lines_rec.attribute30);
4106
4107
4108 EXCEPTION
4109 WHEN create_IntLines_exception THEN
4110 x_return_status := fnd_api.g_ret_sts_error;
4111 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, 'Create IntLines l_error_message:'||l_error_message || 'sqlerrm'||sqlerrm);
4112 WHEN others THEN
4113 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, 'Create IntLines : SQLERRM:'||SQLERRM);
4114 x_return_status := fnd_api.g_ret_sts_unexp_error;
4115 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
4116 fnd_message.set_name('FND', 'SQL_PLSQL_ERROR');
4117 fnd_message.set_token('ROUTINE', 'DPP_TRANSACTION_PVT');
4118 fnd_message.set_token('ERRNO', SQLCODE);
4119 fnd_message.set_token('REASON', sqlerrm);
4120 END IF;
4121 x_msg_data := fnd_message.get();
4122 END Create_IntLines;
4123
4124
4125 PROCEDURE inbound_transaction(
4126 p_distributor_operating_unit IN VARCHAR2,
4127 p_document_reference IN VARCHAR2,
4128 p_supplier_name IN VARCHAR2,
4129 p_supplier_site IN VARCHAR2,
4130 p_supplier_contact IN VARCHAR2,
4131 p_supplier_contact_phone IN VARCHAR2,
4132 p_supplier_contact_email IN VARCHAR2,
4133 p_effective_date IN DATE,
4134 p_days_covered IN NUMBER,
4135 p_currency IN VARCHAR2,
4136 p_hdrattributecontext IN VARCHAR2,
4137 p_hdrattribute1 IN VARCHAR2,
4138 p_hdrattribute2 IN VARCHAR2,
4139 p_hdrattribute3 IN VARCHAR2,
4140 p_hdrattribute4 IN VARCHAR2,
4141 p_hdrattribute5 IN VARCHAR2,
4142 p_hdrattribute6 IN VARCHAR2,
4143 p_hdrattribute7 IN VARCHAR2,
4144 p_hdrattribute8 IN VARCHAR2,
4145 p_hdrattribute9 IN VARCHAR2,
4146 p_hdrattribute10 IN VARCHAR2,
4147 p_hdrattribute11 IN VARCHAR2,
4148 p_hdrattribute12 IN VARCHAR2,
4149 p_hdrattribute13 IN VARCHAR2,
4150 p_hdrattribute14 IN VARCHAR2,
4151 p_hdrattribute15 IN VARCHAR2,
4152 p_hdrattribute16 IN VARCHAR2,
4153 p_hdrattribute17 IN VARCHAR2,
4154 p_hdrattribute18 IN VARCHAR2,
4155 p_hdrattribute19 IN VARCHAR2,
4156 p_hdrattribute20 IN VARCHAR2,
4157 p_hdrattribute21 IN VARCHAR2,
4158 p_hdrattribute22 IN VARCHAR2,
4159 p_hdrattribute23 IN VARCHAR2,
4160 p_hdrattribute24 IN VARCHAR2,
4161 p_hdrattribute25 IN VARCHAR2,
4162 p_hdrattribute26 IN VARCHAR2,
4163 p_hdrattribute27 IN VARCHAR2,
4164 p_hdrattribute28 IN VARCHAR2,
4165 p_hdrattribute29 IN VARCHAR2,
4166 p_hdrattribute30 IN VARCHAR2,
4167 p_supplier_part_num IN VARCHAR2,
4168 p_item_number IN VARCHAR2,
4169 --p_prior_price IN NUMBER,
4170 p_change_type IN VARCHAR2,
4171 p_change_value IN NUMBER,
4172 p_uom IN VARCHAR2,
4173 p_dtlattributecontext IN VARCHAR2,
4174 p_dtlattribute1 IN VARCHAR2,
4175 p_dtlattribute2 IN VARCHAR2,
4176 p_dtlattribute3 IN VARCHAR2,
4177 p_dtlattribute4 IN VARCHAR2,
4178 p_dtlattribute5 IN VARCHAR2,
4179 p_dtlattribute6 IN VARCHAR2,
4180 p_dtlattribute7 IN VARCHAR2,
4181 p_dtlattribute8 IN VARCHAR2,
4182 p_dtlattribute9 IN VARCHAR2,
4183 p_dtlattribute10 IN VARCHAR2,
4184 p_dtlattribute11 IN VARCHAR2,
4185 p_dtlattribute12 IN VARCHAR2,
4186 p_dtlattribute13 IN VARCHAR2,
4187 p_dtlattribute14 IN VARCHAR2,
4188 p_dtlattribute15 IN VARCHAR2,
4189 p_dtlattribute16 IN VARCHAR2,
4190 p_dtlattribute17 IN VARCHAR2,
4191 p_dtlattribute18 IN VARCHAR2,
4192 p_dtlattribute19 IN VARCHAR2,
4193 p_dtlattribute20 IN VARCHAR2,
4194 p_dtlattribute21 IN VARCHAR2,
4195 p_dtlattribute22 IN VARCHAR2,
4196 p_dtlattribute23 IN VARCHAR2,
4197 p_dtlattribute24 IN VARCHAR2,
4198 p_dtlattribute25 IN VARCHAR2,
4199 p_dtlattribute26 IN VARCHAR2,
4200 p_dtlattribute27 IN VARCHAR2,
4201 p_dtlattribute28 IN VARCHAR2,
4202 p_dtlattribute29 IN VARCHAR2,
4203 p_dtlattribute30 IN VARCHAR2
4204 ) AS
4205
4206 l_api_name constant VARCHAR2(30) := 'DPP_TRANSACTION_PVT';
4207 l_api_version constant NUMBER := 1.0;
4208 l_full_name constant VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
4209
4210 --l_commit VARCHAR2(30) := fnd_api.g_true;
4211 l_return_status VARCHAR2(30);
4212 l_msg_count NUMBER;
4213 l_msg_data VARCHAR2(4000);
4214
4215 l_transaction_header_rec txn_header_rec;
4216 l_transaction_lines_rec txn_lines_rec;
4217 l_error_message VARCHAR2(4000);
4218 l_message VARCHAR2(4000) := NULL;
4219
4220 l_transaction_int_header_id NUMBER;
4221 l_transaction_int_line_id NUMBER;
4222 l_transaction_line_id NUMBER;
4223
4224 dpp_webadi_error EXCEPTION;
4225 l_source VARCHAR2(10) := 'WEBADI';
4226
4227 BEGIN
4228
4229 SAVEPOINT inbound_transaction;
4230
4231
4232 --l_return_status := fnd_api.g_ret_sts_success;
4233
4234
4235 IF p_distributor_operating_unit IS NULL THEN
4236 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'DPP Entered OU in webadi api');
4237 fnd_message.set_name('DPP', 'DPP_OPERATING_UNIT_NULL');
4238 l_error_message := fnd_message.get();
4239 l_message := l_message || l_error_message;
4240 --RAISE DPP_WEBADI_ERROR;
4241 --raise_application_error( -20000, l_error_message);
4242 END IF;
4243
4244 IF p_document_reference IS NULL THEN
4245 fnd_message.set_name('DPP', 'DPP_DOC_REF_NUM_NULL');
4246 l_error_message := fnd_message.get();
4247 l_message := l_message || l_error_message;
4248 --raise_application_error( -20000, l_error_message);
4249 --RAISE DPP_WEBADI_ERROR;
4250 END IF;
4251
4252 IF LENGTH(p_document_reference) > 40 THEN
4253 fnd_message.set_name('DPP', 'DPP_DOC_REF_NUM');
4254 l_error_message := fnd_message.get();
4255 l_message := l_message || l_error_message;
4256 --raise_application_error( -20000, l_error_message);
4257 --RAISE DPP_WEBADI_ERROR;
4258 END IF;
4259
4260
4261 IF p_supplier_name IS NULL THEN
4262 fnd_message.set_name ('DPP', 'DPP_SUPPLIER_NAME_NULL');
4263 l_error_message := fnd_message.get();
4264 l_message := l_message || l_error_message;
4265 --raise_application_error( -20000, l_error_message);
4266 -- RAISE DPP_WEBADI_ERROR;
4267 END IF;
4268
4269 IF p_supplier_site IS NULL THEN
4270 fnd_message.set_name('DPP', 'DPP_SUPPLIER_SITE_NULL');
4271 l_error_message := fnd_message.get();
4272 l_message := l_message || l_error_message;
4273 --raise_application_error( -20000, l_error_message);
4274 --RAISE DPP_WEBADI_ERROR;
4275 END IF;
4276
4277 IF p_effective_date IS NULL THEN
4278 fnd_message.set_name('DPP', 'DPP_EFFECTIVE_DATE_NULL');
4279 l_error_message := fnd_message.get();
4280 l_message := l_message || l_error_message;
4281 --raise_application_error( -20000, l_error_message);
4282 --RAISE DPP_WEBADI_ERROR;
4283 END IF;
4284
4285 IF p_currency IS NULL THEN
4286 fnd_message.set_name('DPP', 'DPP_CURRENCY_NULL');
4287 l_error_message := fnd_message.get();
4288 l_message := l_message || l_error_message;
4289 --raise_application_error( -20000, l_error_message);
4290 --RAISE DPP_WEBADI_ERROR;
4291 END IF;
4292 IF p_days_covered <0 OR p_days_covered > 9999 OR p_days_covered <> ROUND(p_days_covered) THEN
4293 l_error_message := 'Invalid days covered value.Please enter a valid value.';
4294 l_message := l_message || l_error_message;
4295 --raise_application_error( -20000, l_error_message);
4296 --RAISE DPP_WEBADI_ERROR;
4297 END IF;
4298 -- Line Level Mandatory Field Validation
4299
4300 IF (p_supplier_part_num IS NULL and p_item_number IS NULL) THEN
4301 -- TBD: change the DPP_VENDOR_PART_NUM_NULL attribute text to reflect the either or validation
4302 fnd_message.set_name('DPP', 'DPP_SUPPLIER_PART_NUM_NULL');
4303 l_error_message := fnd_message.get();
4304 l_message := l_message || l_error_message;
4305 --raise_application_error( -20000, l_error_message);
4306 --RAISE DPP_WEBADI_ERROR;
4307 END IF;
4308
4309 IF p_change_type IS NULL THEN
4310 fnd_message.set_name('DPP', 'DPP_CHANGE_TYPE_NULL');
4311 l_error_message := fnd_message.get();
4312 l_message := l_message || l_error_message;
4313 --raise_application_error( -20000, l_error_message);
4314 --RAISE DPP_WEBADI_ERROR;
4315 END IF;
4316
4317 IF p_change_value IS NULL OR p_change_value <= 0 THEN
4318 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'DPP Entered VALUE');
4319 fnd_message.set_name('DPP', 'DPP_CHANGE_VALUE_NULL');
4320 l_error_message := fnd_message.get();
4321 l_message := l_message || l_error_message;
4322 --raise_application_error( -20000, l_error_message);
4323 --RAISE DPP_WEBADI_ERROR;
4324 END IF;
4325
4326 IF l_message IS NOT NULL THEN
4327 RAISE DPP_WEBADI_ERROR;
4328 END IF;
4329
4330 --Assign to rec type l_transaction_header_rec
4331 l_transaction_header_rec.operating_unit_name := p_distributor_operating_unit;
4332 l_transaction_header_rec.ref_document_number := p_document_reference;
4333 l_transaction_header_rec.vendor_name := p_supplier_name;
4334 l_transaction_header_rec.vendor_site_code := p_supplier_site;
4335 l_transaction_header_rec.vendor_contact_name := p_supplier_contact;
4336 l_transaction_header_rec.contact_phone := p_supplier_contact_phone;
4337 l_transaction_header_rec.contact_email_address := p_supplier_contact_email;
4338 l_transaction_header_rec.effective_start_date := p_effective_date;
4339 l_transaction_header_rec.days_covered := p_days_covered;
4340 l_transaction_header_rec.trx_currency := p_currency;
4341 l_transaction_header_rec.transaction_source := l_source;
4342 l_transaction_header_rec.attribute_category := p_hdrattributecontext;
4343 l_transaction_header_rec.attribute1 := p_hdrattribute1;
4344 l_transaction_header_rec.attribute2 := p_hdrattribute2;
4345 l_transaction_header_rec.attribute3 := p_hdrattribute3;
4346 l_transaction_header_rec.attribute4 := p_hdrattribute4;
4347 l_transaction_header_rec.attribute5 := p_hdrattribute5;
4348 l_transaction_header_rec.attribute6 := p_hdrattribute6;
4349 l_transaction_header_rec.attribute7 := p_hdrattribute7;
4350 l_transaction_header_rec.attribute8 := p_hdrattribute8;
4351 l_transaction_header_rec.attribute9 := p_hdrattribute9;
4352 l_transaction_header_rec.attribute10 := p_hdrattribute10;
4353 l_transaction_header_rec.attribute11 := p_hdrattribute11;
4354 l_transaction_header_rec.attribute12 := p_hdrattribute12;
4355 l_transaction_header_rec.attribute13 := p_hdrattribute13;
4356 l_transaction_header_rec.attribute14 := p_hdrattribute14;
4357 l_transaction_header_rec.attribute15 := p_hdrattribute15;
4358 l_transaction_header_rec.attribute16 := p_hdrattribute16;
4359 l_transaction_header_rec.attribute17 := p_hdrattribute17;
4360 l_transaction_header_rec.attribute18 := p_hdrattribute18;
4361 l_transaction_header_rec.attribute19 := p_hdrattribute19;
4362 l_transaction_header_rec.attribute20 := p_hdrattribute20;
4363 l_transaction_header_rec.attribute21 := p_hdrattribute21;
4364 l_transaction_header_rec.attribute22 := p_hdrattribute22;
4365 l_transaction_header_rec.attribute23 := p_hdrattribute23;
4366 l_transaction_header_rec.attribute24 := p_hdrattribute24;
4367 l_transaction_header_rec.attribute25 := p_hdrattribute25;
4368 l_transaction_header_rec.attribute26 := p_hdrattribute26;
4369 l_transaction_header_rec.attribute27 := p_hdrattribute27;
4370 l_transaction_header_rec.attribute28 := p_hdrattribute28;
4371 l_transaction_header_rec.attribute29 := p_hdrattribute29;
4372 l_transaction_header_rec.attribute30 := p_hdrattribute30;
4373
4374 --Assign to rec type l_transaction_header_rec
4375 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'DPP Lines Assignment');
4376 l_transaction_lines_rec.SUPPLIER_PART_NUM := p_supplier_part_num;
4377 l_transaction_lines_rec.ITEM_NUMBER := P_ITEM_NUMBER;
4378 l_transaction_lines_rec.CHANGE_TYPE := P_CHANGE_TYPE;
4379 l_transaction_lines_rec.CHANGE_VALUE := P_CHANGE_VALUE;
4380 l_transaction_lines_rec.UOM := P_UOM;
4381 l_transaction_lines_rec.attribute_category := p_dtlattributecontext;
4382 l_transaction_lines_rec.attribute1 := p_dtlattribute1;
4383 l_transaction_lines_rec.attribute2 := p_dtlattribute2;
4384 l_transaction_lines_rec.attribute3 := p_dtlattribute3;
4385 l_transaction_lines_rec.attribute4 := p_dtlattribute4;
4386 l_transaction_lines_rec.attribute5 := p_dtlattribute5;
4387 l_transaction_lines_rec.attribute6 := p_dtlattribute6;
4388 l_transaction_lines_rec.attribute7 := p_dtlattribute7;
4389 l_transaction_lines_rec.attribute8 := p_dtlattribute8;
4390 l_transaction_lines_rec.attribute9 := p_dtlattribute9;
4391 l_transaction_lines_rec.attribute10 := p_dtlattribute10;
4392 l_transaction_lines_rec.attribute11 := p_dtlattribute11;
4393 l_transaction_lines_rec.attribute12 := p_dtlattribute12;
4394 l_transaction_lines_rec.attribute13 := p_dtlattribute13;
4395 l_transaction_lines_rec.attribute14 := p_dtlattribute14;
4396 l_transaction_lines_rec.attribute15 := p_dtlattribute15;
4397 l_transaction_lines_rec.attribute16 := p_dtlattribute16;
4398 l_transaction_lines_rec.attribute17 := p_dtlattribute17;
4399 l_transaction_lines_rec.attribute18 := p_dtlattribute18;
4400 l_transaction_lines_rec.attribute19 := p_dtlattribute19;
4401 l_transaction_lines_rec.attribute20 := p_dtlattribute20;
4402 l_transaction_lines_rec.attribute21 := p_dtlattribute21;
4403 l_transaction_lines_rec.attribute22 := p_dtlattribute22;
4404 l_transaction_lines_rec.attribute23 := p_dtlattribute23;
4405 l_transaction_lines_rec.attribute24 := p_dtlattribute24;
4406 l_transaction_lines_rec.attribute25 := p_dtlattribute25;
4407 l_transaction_lines_rec.attribute26 := p_dtlattribute26;
4408 l_transaction_lines_rec.attribute27 := p_dtlattribute27;
4409 l_transaction_lines_rec.attribute28 := p_dtlattribute28;
4410 l_transaction_lines_rec.attribute29 := p_dtlattribute29;
4411 l_transaction_lines_rec.attribute30 := p_dtlattribute30;
4412
4413 create_intheader(
4414 p_txn_header_rec_type => l_transaction_header_rec,
4415 x_rec_count => l_msg_count,
4416 x_return_status => l_return_status);
4417
4418 IF l_return_status = fnd_api.g_ret_sts_error THEN
4419 RAISE fnd_api.g_exc_error;
4420 ELSIF l_return_status = fnd_api.g_ret_sts_unexp_error THEN
4421 RAISE fnd_api.g_exc_unexpected_error;
4422 END IF;
4423
4424 --lines
4425 --Validate the vendor part number
4426 l_transaction_lines_rec.transaction_int_header_id :=l_transaction_header_rec.transaction_int_header_id;
4427 l_transaction_lines_rec.org_id :=l_transaction_header_rec.org_id;
4428 create_intlines(
4429 p_transaction_lines_rec => l_transaction_lines_rec,
4430 x_msg_count => l_msg_count,
4431 x_return_status => l_return_status);
4432
4433
4434 IF l_return_status = fnd_api.g_ret_sts_error THEN
4435 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'DPP SYSTEM ERROR');
4436 fnd_message.set_name('DPP', 'DPP_DUPLICATE_RECORDS');
4437 l_error_message := fnd_message.get();
4438 RAISE dpp_webadi_error;
4439 ELSIF l_return_status = fnd_api.g_ret_sts_unexp_error THEN
4440 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'DPP UNEXPECTED ERROR');
4441 RAISE fnd_api.g_exc_unexpected_error;
4442 END IF;
4443
4444 EXCEPTION
4445 WHEN dpp_webadi_error THEN
4446 ROLLBACK TO inbound_transaction;
4447 if l_message is NULL then
4448 l_message := fnd_message.get();
4449 end if;
4450 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, 'DPP in DPP_webadi_error:'||l_error_message);
4451 raise_application_error( -20000, l_message);
4452 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4453 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, 'DPP IN FND_API.G_EXC_UNEXPECTED_ERROR BLOCK');
4454 ROLLBACK TO inbound_transaction;
4455 IF length( SQLERRM) > 30 THEN
4456 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, substr(SQLERRM,12,30));
4457 fnd_message.set_name ('DPP', substr(SQLERRM,12,30));
4458 ELSE
4459 fnd_message.set_name ('DPP', SQLERRM);
4460 END IF;
4461 l_error_message := fnd_message.get();
4462 raise_application_error( -20000, l_error_message);
4463 WHEN OTHERS THEN
4464 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, 'DPP IN OTHERS BLOCK');
4465 ROLLBACK TO inbound_transaction;
4466 IF length( SQLERRM) > 30 THEN
4467 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, substr(SQLERRM,12,30));
4468 fnd_message.set_name ('DPP', substr(SQLERRM,12,30));
4469 ELSE
4470 fnd_message.set_name ('DPP', SQLERRM);
4471 END IF;
4472 l_error_message := fnd_message.get();
4473 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, 'DPP l_error_message:'||l_error_message);
4474 raise_application_error( -20000, l_error_message);
4475 END inbound_transaction;
4476
4477 PROCEDURE create_webadi_transaction(p_document_reference_number IN VARCHAR2
4478 , p_supplier_name IN VARCHAR2
4479 , p_supplier_site IN VARCHAR2
4480 , p_operating_unit IN VARCHAR2
4481 , x_return_status OUT NOCOPY VARCHAR2
4482 , x_msg_data OUT NOCOPY VARCHAR2
4483 )
4484 AS
4485 l_api_name constant VARCHAR2(30) := 'create_webadi_transaction';
4486 l_api_version constant NUMBER := 1.0;
4487 l_full_name constant VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
4488 l_return_status VARCHAR2(30);
4489 l_msg_count NUMBER;
4490 l_msg_data VARCHAR2(2000);
4491 l_user_name VARCHAR2(30);
4492 l_user_id NUMBER :=FND_PROFILE.VALUE('USER_ID');
4493 l_init_msg_list VARCHAR2(30) := fnd_api.g_false;
4494 l_commit VARCHAR2(30) := fnd_api.g_false;
4495 l_validation_level NUMBER := fnd_api.g_valid_level_full;
4496 l_transaction_int_header_id NUMBER;
4497 l_ref_document_number VARCHAR2(40);
4498 dpp_webadi_importer_error EXCEPTION;
4499 l_error_message VARCHAR2(4000);
4500
4501 CURSOR transaction_cur(cv_doc_ref_no VARCHAR2, cv_supplier_name VARCHAR2, cv_supplier_site VARCHAR2, cv_operating_unit VARCHAR2 )
4502 IS
4503 SELECT transaction_int_header_id
4504 FROM dpp_txn_headers_int_all dthia
4505 WHERE dthia.ref_document_number = cv_doc_ref_no
4506 AND dthia.vendor_name = cv_supplier_name
4507 AND dthia.vendor_site = cv_supplier_site
4508 AND dthia.interface_status = 'N'
4509 AND dthia.operating_unit_name = cv_operating_unit;
4510
4511 BEGIN
4512 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'DPP Start Time :'||sysdate || 'Time ' ||dbms_utility.get_time());
4513 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Start :'||l_api_name);
4514 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'DPP Start :'||l_api_name);
4515 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'DPP_INBOUND_PVT_BODY name:'||p_supplier_name);
4516 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'DPP_INBOUND_PVT_BODY site:'||p_supplier_site);
4517 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'DPP_INBOUND_PVT_BODY ref:'||p_document_reference_number);
4518 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'DPP_INBOUND_PVT_BODY unit: '||p_operating_unit);
4519 -- Initialize API return status to sucess
4520 x_return_status := fnd_api.g_ret_sts_success;
4521 --open cursor
4522 OPEN transaction_cur(p_document_reference_number,p_supplier_name,p_supplier_site,p_operating_unit);
4523 FETCH transaction_cur INTO l_transaction_int_header_id;
4524 CLOSE transaction_cur;
4525
4526 --call insert transaction procedure
4527
4528
4529 --dpp_inbound_pvt.Insert_Transaction(
4530 DPP_TRANSACTION_Pvt.Insert_Transaction(
4531 p_api_version =>l_api_version
4532 , p_init_msg_list =>l_init_msg_list
4533 , p_commit =>l_commit
4534 , p_validation_level =>l_validation_level
4535 , p_transaction_int_header_id =>l_transaction_int_header_id
4536 , p_operating_unit => p_operating_unit
4537 , x_return_status =>x_return_status
4538 , x_msg_count =>l_msg_count
4539 , x_msg_data =>x_msg_data
4540 ) ;
4541
4542
4543 IF x_return_status = Fnd_Api.g_ret_sts_error THEN
4544 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Create WebADI Transaction Fnd_Api.g_ret_sts_error');
4545 fnd_message.set_name('DPP', 'DPP_WEBADI_IMPORT_ERROR');
4546 fnd_message.set_token('MESSAGE', x_msg_data);
4547 RAISE FND_API.G_EXC_ERROR;
4548 ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
4549 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Create WebADI Transaction Fnd_Api.g_ret_sts_unexp_error');
4550 fnd_message.set_name('DPP', 'DPP_WEBADI_IMPORT_ERROR');
4551 fnd_message.set_token('MESSAGE', x_msg_data);
4552 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4553 END IF;
4554 EXCEPTION
4555 WHEN Fnd_Api.G_EXC_ERROR THEN
4556 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, 'DPP ***----*** EXCEPTION G_EXC_ERROR:');
4557 x_return_status := Fnd_Api.g_ret_sts_error;
4558 WHEN Fnd_Api.G_EXC_UNEXPECTED_ERROR THEN
4559 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, 'DPP ************EXCEPTION G_EXC_UNEXPECTED_ERROR'||x_msg_data);
4560 x_return_status := Fnd_Api.g_ret_sts_unexp_error;
4561 WHEN OTHERS THEN
4562 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, 'DPP EXCEPTION OTHERS'||SQLERRM);
4563 x_return_status := Fnd_Api.g_ret_sts_unexp_error;
4564 --ROLLBACK TO dpp_create_webadi_transaction;
4565 IF Fnd_Msg_Pub.Check_Msg_Level ( Fnd_Msg_Pub.G_MSG_LVL_UNEXP_ERROR )
4566 THEN
4567 Fnd_Msg_Pub.Add_Exc_Msg( G_PKG_NAME,l_api_name);
4568 END IF;
4569 END create_webadi_transaction;
4570
4571 PROCEDURE Raise_OutBoundEvent(
4572 p_api_version IN NUMBER
4573 ,p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
4574 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
4575 ,p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
4576 ,p_party_id IN VARCHAR2
4577 ,p_party_site_id IN VARCHAR2
4578 ,p_claim_id IN VARCHAR2
4579 ,p_party_type IN VARCHAR2
4580 ,x_return_status OUT NOCOPY VARCHAR2
4581 ,x_msg_count OUT NOCOPY NUMBER
4582 ,x_msg_data OUT NOCOPY VARCHAR2
4583 )
4584 AS
4585 /****************************************************************
4586 Hardcoded values from Outbound Transaction
4587 Map Code 'DPPAPPRO'
4588 Transaction Tyoe 'DPP'
4589 Transaction Sub Type 'APRO'
4590 Event Name 'oracle.apps.dpp.preapp.Outbound'
4591 ******************************************************************/
4592 l_api_name constant VARCHAR2(30) := 'Raise_OutBoundEvent';
4593 l_full_name constant VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
4594 l_map_code VARCHAR2(55) := 'DPP_APPROVAL_TXN_OUT';
4595 l_transaction_type VARCHAR2(55) := 'DPP';
4596 l_transaction_sub_type VARCHAR2(55) := 'APRO';
4597 l_event_name VARCHAR2(100) := 'oracle.apps.dpp.preapp.Outbound';
4598
4599 l_debug_mode NUMBER :=3;
4600 l_parameter_list wf_parameter_list_t := wf_parameter_list_t();
4601 l_event_test VARCHAR2(10);
4602 evtkey VARCHAR2(100);
4603 count_def NUMBER;
4604 BEGIN
4605 SAVEPOINT DPP_Raise_OutBoundEvent;
4606 -- Initialize API return status to sucess
4607 x_return_status := fnd_api.g_ret_sts_success;
4608 evtkey := dbms_utility.get_time();
4609 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Event Key = ' || evtkey);
4610 l_event_test := wf_event.test(l_event_name);
4611 IF l_event_test = 'NONE' THEN
4612 fnd_message.set_name('DPP', 'DPP_EVENT_SUBS_ERR');
4613 fnd_message.set_token('CLAIM_NUMBER', p_claim_id);
4614 x_msg_data := fnd_message.get();
4615 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'No enabled local subscriptions reference the event, or the event does not exist.');
4616 RAISE FND_API.g_exc_error;
4617 END IF;
4618 -- DEFINE IN WF ATTRIBUTES
4619 wf_event.addparametertolist(p_name => 'ECX_MAP_CODE', p_value => l_map_code, p_parameterlist => l_parameter_list);
4620 wf_event.addparametertolist(p_name => 'ECX_TRANSACTION_TYPE', p_value => l_transaction_type, p_parameterlist => l_parameter_list);
4621 wf_event.addparametertolist(p_name => 'ECX_PARTY_TYPE', p_value => p_party_type, p_parameterlist => l_parameter_list);
4622 wf_event.addparametertolist(p_name => 'ECX_TRANSACTION_SUBTYPE', p_value => l_transaction_sub_type, p_parameterlist => l_parameter_list);
4623 wf_event.addparametertolist(p_name => 'ECX_PARTY_ID', p_value => p_party_id, p_parameterlist => l_parameter_list);
4624 wf_event.addparametertolist(p_name => 'ECX_PARTY_SITE_ID', p_value => p_party_site_id, p_parameterlist => l_parameter_list);
4625 wf_event.addparametertolist(p_name => 'ECX_DOCUMENT_ID', p_value => p_claim_id, p_parameterlist => l_parameter_list);
4626 wf_event.addparametertolist(p_name => 'ECX_DEBUG_LEVEL', p_value => l_debug_mode, p_parameterlist => l_parameter_list);
4627 wf_event.RAISE(l_event_name, evtkey, NULL, l_parameter_list, sysdate);
4628
4629 COMMIT;
4630 EXCEPTION
4631 WHEN Fnd_Api.G_EXC_ERROR THEN
4632 x_return_status := Fnd_Api.g_ret_sts_error ;
4633 ROLLBACK TO DPP_Raise_OutBoundEvent;
4634 WHEN Fnd_Api.G_EXC_UNEXPECTED_ERROR THEN
4635 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
4636 ROLLBACK TO DPP_Raise_OutBoundEvent;
4637 Fnd_Msg_Pub.Count_AND_Get
4638 ( p_count => x_msg_count,
4639 p_data => x_msg_data,
4640 p_encoded => Fnd_Api.G_FALSE
4641 );
4642 WHEN OTHERS THEN
4643 x_return_status := Fnd_Api.g_ret_sts_unexp_error;
4644 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
4645 fnd_message.set_name('FND', 'SQL_PLSQL_ERROR');
4646 fnd_message.set_token('ROUTINE', l_full_name);
4647 fnd_message.set_token('ERRNO', SQLCODE);
4648 fnd_message.set_token('REASON', sqlerrm);
4649 END IF;
4650 ROLLBACK TO DPP_Raise_OutBoundEvent;
4651 IF Fnd_Msg_Pub.Check_Msg_Level ( Fnd_Msg_Pub.G_MSG_LVL_UNEXP_ERROR )
4652 THEN
4653 Fnd_Msg_Pub.Add_Exc_Msg( G_PKG_NAME,l_api_name);
4654 END IF;
4655 Fnd_Msg_Pub.Count_AND_Get
4656 ( p_count => x_msg_count,
4657 p_data => x_msg_data,
4658 p_encoded => Fnd_Api.G_FALSE
4659 );
4660 END Raise_OutBoundEvent;
4661
4662 PROCEDURE inbound_approval(
4663 p_distributor_operating_unit IN VARCHAR2,
4664 p_document_reference IN VARCHAR2,
4665 p_supplier_name IN VARCHAR2,
4666 p_supplier_site IN VARCHAR2,
4667 p_supplier_contact IN VARCHAR2,
4668 p_supplier_contact_phone IN VARCHAR2,
4669 p_supplier_contact_email IN VARCHAR2,
4670 p_effective_date IN DATE,
4671 p_days_covered IN NUMBER,
4672 p_currency IN VARCHAR2,
4673 p_supplier_approved_by IN VARCHAR2,
4674 p_supplier_approval_date IN DATE,
4675 p_supp_dist_claim_number IN VARCHAR2,
4676 p_hdrattributecontext IN VARCHAR2,
4677 p_hdrattribute1 IN VARCHAR2,
4678 p_hdrattribute2 IN VARCHAR2,
4679 p_hdrattribute3 IN VARCHAR2,
4680 p_hdrattribute4 IN VARCHAR2,
4681 p_hdrattribute5 IN VARCHAR2,
4682 p_hdrattribute6 IN VARCHAR2,
4683 p_hdrattribute7 IN VARCHAR2,
4684 p_hdrattribute8 IN VARCHAR2,
4685 p_hdrattribute9 IN VARCHAR2,
4686 p_hdrattribute10 IN VARCHAR2,
4687 p_hdrattribute11 IN VARCHAR2,
4688 p_hdrattribute12 IN VARCHAR2,
4689 p_hdrattribute13 IN VARCHAR2,
4690 p_hdrattribute14 IN VARCHAR2,
4691 p_hdrattribute15 IN VARCHAR2,
4692 p_hdrattribute16 IN VARCHAR2,
4693 p_hdrattribute17 IN VARCHAR2,
4694 p_hdrattribute18 IN VARCHAR2,
4695 p_hdrattribute19 IN VARCHAR2,
4696 p_hdrattribute20 IN VARCHAR2,
4697 p_hdrattribute21 IN VARCHAR2,
4698 p_hdrattribute22 IN VARCHAR2,
4699 p_hdrattribute23 IN VARCHAR2,
4700 p_hdrattribute24 IN VARCHAR2,
4701 p_hdrattribute25 IN VARCHAR2,
4702 p_hdrattribute26 IN VARCHAR2,
4703 p_hdrattribute27 IN VARCHAR2,
4704 p_hdrattribute28 IN VARCHAR2,
4705 p_hdrattribute29 IN VARCHAR2,
4706 p_hdrattribute30 IN VARCHAR2,
4707 p_supplier_part_num IN VARCHAR2,
4708 p_item_number IN VARCHAR2,
4709 p_change_type IN VARCHAR2,
4710 p_change_value IN NUMBER,
4711 p_uom IN VARCHAR2,
4712 p_approved_inventory IN NUMBER,
4713 p_dtlattributecontext IN VARCHAR2,
4714 p_dtlattribute1 IN VARCHAR2,
4715 p_dtlattribute2 IN VARCHAR2,
4716 p_dtlattribute3 IN VARCHAR2,
4717 p_dtlattribute4 IN VARCHAR2,
4718 p_dtlattribute5 IN VARCHAR2,
4719 p_dtlattribute6 IN VARCHAR2,
4720 p_dtlattribute7 IN VARCHAR2,
4721 p_dtlattribute8 IN VARCHAR2,
4722 p_dtlattribute9 IN VARCHAR2,
4723 p_dtlattribute10 IN VARCHAR2,
4724 p_dtlattribute11 IN VARCHAR2,
4725 p_dtlattribute12 IN VARCHAR2,
4726 p_dtlattribute13 IN VARCHAR2,
4727 p_dtlattribute14 IN VARCHAR2,
4728 p_dtlattribute15 IN VARCHAR2,
4729 p_dtlattribute16 IN VARCHAR2,
4730 p_dtlattribute17 IN VARCHAR2,
4731 p_dtlattribute18 IN VARCHAR2,
4732 p_dtlattribute19 IN VARCHAR2,
4733 p_dtlattribute20 IN VARCHAR2,
4734 p_dtlattribute21 IN VARCHAR2,
4735 p_dtlattribute22 IN VARCHAR2,
4736 p_dtlattribute23 IN VARCHAR2,
4737 p_dtlattribute24 IN VARCHAR2,
4738 p_dtlattribute25 IN VARCHAR2,
4739 p_dtlattribute26 IN VARCHAR2,
4740 p_dtlattribute27 IN VARCHAR2,
4741 p_dtlattribute28 IN VARCHAR2,
4742 p_dtlattribute29 IN VARCHAR2,
4743 p_dtlattribute30 IN VARCHAR2,
4744 x_return_status OUT NOCOPY VARCHAR2
4745 ) AS
4746 l_error_message VARCHAR2(4000);
4747 l_api_name constant VARCHAR2(30) := 'DPP_TRANSACTION_PVT';
4748 l_api_version constant NUMBER := 1.0;
4749 l_full_name constant VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
4750 l_return_status VARCHAR2(30);
4751 l_msg_count NUMBER;
4752 l_msg_data VARCHAR2(2000);
4753 l_transaction_header_rec txn_header_rec;
4754 l_transaction_lines_rec txn_lines_rec;
4755 l_transaction_int_header_id NUMBER;
4756 l_transaction_int_line_id NUMBER;
4757 l_transaction_line_id NUMBER;
4758 dpp_webadi_error EXCEPTION;
4759 l_source VARCHAR2(10) := 'WEBADI';
4760 l_message VARCHAR2(4000) := NULL;
4761
4762 BEGIN
4763 SAVEPOINT inbound_approval;
4764 x_return_status := fnd_api.g_ret_sts_success;
4765
4766 IF p_distributor_operating_unit IS NULL THEN
4767 fnd_message.set_name('DPP', 'DPP_OPERATING_UNIT_NULL');
4768 l_error_message := fnd_message.get();
4769 l_message := l_message || l_error_message;
4770
4771 END IF;
4772 IF p_document_reference IS NULL THEN
4773 fnd_message.set_name('DPP', 'DPP_DOC_REF_NUM_NULL');
4774 l_error_message := fnd_message.get();
4775 l_message := l_message || l_error_message;
4776 --raise_application_error( -20000, l_error_message);
4777 --RAISE DPP_WEBADI_ERROR;
4778 END IF;
4779
4780 IF LENGTH(p_document_reference) > 40 THEN
4781 fnd_message.set_name('DPP', 'DPP_DOC_REF_NUM');
4782 l_error_message := fnd_message.get();
4783 l_message := l_message || l_error_message;
4784 --raise_application_error( -20000, l_error_message);
4785 --RAISE DPP_WEBADI_ERROR;
4786 END IF;
4787
4788 IF p_supp_dist_claim_number IS NULL THEN
4789 fnd_message.set_name('DPP', 'DPP_CLAIM_NUM_NULL');
4790 l_error_message := fnd_message.get();
4791 l_message := l_message || l_error_message;
4792 --RAISE DPP_WEBADI_ERROR;
4793 END IF;
4794
4795 IF p_supplier_approved_by IS NULL THEN
4796 fnd_message.set_name('DPP', 'DPP_APPROVEDBY_NULL');
4797 l_error_message := fnd_message.get();
4798 l_message := l_message || l_error_message;
4799 --RAISE DPP_WEBADI_ERROR;
4800 END IF;
4801
4802 IF p_supplier_approval_date IS NULL THEN
4803 fnd_message.set_name('DPP', 'DPP_APPROVED_DATE_NULL');
4804 l_error_message := fnd_message.get();
4805 l_message := l_message || l_error_message;
4806 --RAISE DPP_WEBADI_ERROR;
4807 END IF;
4808
4809 IF p_supplier_name IS NULL THEN
4810 fnd_message.set_name ('DPP', 'DPP_SUPPLIER_NAME_NULL');
4811 l_error_message := fnd_message.get();
4812 --raise_application_error( -20000, l_error_message);
4813 l_message := l_message || l_error_message;
4814 --RAISE DPP_WEBADI_ERROR;
4815 END IF;
4816
4817
4818 IF p_supplier_site IS NULL THEN
4819 fnd_message.set_name('DPP', 'DPP_SUPPLIER_SITE_NULL');
4820 l_error_message := fnd_message.get();
4821 --raise_application_error( -20000, l_error_message);
4822 l_message := l_message || l_error_message;
4823 --RAISE DPP_WEBADI_ERROR;;
4824 END IF;
4825
4826 -- Line Level Mandatory Field Validation
4827
4828 IF (p_supplier_part_num IS NULL and p_item_number IS NULL) THEN
4829 fnd_message.set_name('DPP', 'DPP_SUPPLIER_PART_NUM_NULL');
4830 l_error_message := fnd_message.get();
4831 l_message := l_message || l_error_message;
4832 --RAISE DPP_WEBADI_ERROR;
4833 END IF;
4834
4835 IF p_approved_inventory IS NULL OR p_approved_inventory < 0 THEN
4836 fnd_message.set_name('DPP', 'DPP_APPROVED_QTY_NULL');
4837 l_error_message := fnd_message.get();
4838 l_message := l_message || l_error_message;
4839 --RAISE DPP_WEBADI_ERROR;
4840 END IF;
4841 IF l_message IS NOT NULL THEN
4842 RAISE DPP_WEBADI_ERROR;
4843 END IF;
4844 l_transaction_header_rec.operating_unit_name := p_distributor_operating_unit;
4845 l_transaction_header_rec.ref_document_number := p_document_reference;
4846 l_transaction_header_rec.SUPPLIER_APPROVED_BY:= p_supplier_approved_by;
4847 l_transaction_header_rec.SUPPLIER_APPROVAL_DATE:=p_supplier_approval_date;
4848 l_transaction_header_rec.SUPP_DIST_CLAIM_NUMBER:= p_supp_dist_claim_number;
4849 l_transaction_header_rec.vendor_name := p_supplier_name;
4850 l_transaction_header_rec.vendor_site_code := p_supplier_site;
4851 l_transaction_header_rec.vendor_contact_name := p_supplier_contact;
4852 l_transaction_header_rec.contact_phone := p_supplier_contact_phone;
4853 l_transaction_header_rec.contact_email_address := p_supplier_contact_email;
4854 l_transaction_header_rec.effective_start_date := p_effective_date;
4855 l_transaction_header_rec.days_covered := p_days_covered;
4856 l_transaction_header_rec.trx_currency := p_currency;
4857 l_transaction_header_rec.transaction_source := l_source;
4858 l_transaction_header_rec.attribute_category := p_hdrattributecontext;
4859 l_transaction_header_rec.attribute1 := p_hdrattribute1;
4860 l_transaction_header_rec.attribute2 := p_hdrattribute2;
4861 l_transaction_header_rec.attribute3 := p_hdrattribute3;
4862 l_transaction_header_rec.attribute4 := p_hdrattribute4;
4863 l_transaction_header_rec.attribute5 := p_hdrattribute5;
4864 l_transaction_header_rec.attribute6 := p_hdrattribute6;
4865 l_transaction_header_rec.attribute7 := p_hdrattribute7;
4866 l_transaction_header_rec.attribute8 := p_hdrattribute8;
4867 l_transaction_header_rec.attribute9 := p_hdrattribute9;
4868 l_transaction_header_rec.attribute10 := p_hdrattribute10;
4869 l_transaction_header_rec.attribute11 := p_hdrattribute11;
4870 l_transaction_header_rec.attribute12 := p_hdrattribute12;
4871 l_transaction_header_rec.attribute13 := p_hdrattribute13;
4872 l_transaction_header_rec.attribute14 := p_hdrattribute14;
4873 l_transaction_header_rec.attribute15 := p_hdrattribute15;
4874 l_transaction_header_rec.attribute16 := p_hdrattribute16;
4875 l_transaction_header_rec.attribute17 := p_hdrattribute17;
4876 l_transaction_header_rec.attribute18 := p_hdrattribute18;
4877 l_transaction_header_rec.attribute19 := p_hdrattribute19;
4878 l_transaction_header_rec.attribute20 := p_hdrattribute20;
4879 l_transaction_header_rec.attribute21 := p_hdrattribute21;
4880 l_transaction_header_rec.attribute22 := p_hdrattribute22;
4881 l_transaction_header_rec.attribute23 := p_hdrattribute23;
4882 l_transaction_header_rec.attribute24 := p_hdrattribute24;
4883 l_transaction_header_rec.attribute25 := p_hdrattribute25;
4884 l_transaction_header_rec.attribute26 := p_hdrattribute26;
4885 l_transaction_header_rec.attribute27 := p_hdrattribute27;
4886 l_transaction_header_rec.attribute28 := p_hdrattribute28;
4887 l_transaction_header_rec.attribute29 := p_hdrattribute29;
4888 l_transaction_header_rec.attribute30 := p_hdrattribute30;
4889
4890 --Assign to rec type l_transaction_header_rec
4891
4892
4893 l_transaction_lines_rec.SUPPLIER_PART_NUM := p_supplier_part_num;
4894 l_transaction_lines_rec.ITEM_NUMBER := P_ITEM_NUMBER;
4895 l_transaction_lines_rec.CHANGE_TYPE := P_CHANGE_TYPE;
4896 l_transaction_lines_rec.CHANGE_VALUE := P_CHANGE_VALUE;
4897 l_transaction_lines_rec.UOM := P_UOM;
4898 l_transaction_lines_rec.APPROVED_INVENTORY :=P_APPROVED_INVENTORY;
4899 l_transaction_lines_rec.attribute_category := p_dtlattributecontext;
4900 l_transaction_lines_rec.attribute1 := p_dtlattribute1;
4901 l_transaction_lines_rec.attribute2 := p_dtlattribute2;
4902 l_transaction_lines_rec.attribute3 := p_dtlattribute3;
4903 l_transaction_lines_rec.attribute4 := p_dtlattribute4;
4904 l_transaction_lines_rec.attribute5 := p_dtlattribute5;
4905 l_transaction_lines_rec.attribute6 := p_dtlattribute6;
4906 l_transaction_lines_rec.attribute7 := p_dtlattribute7;
4907 l_transaction_lines_rec.attribute8 := p_dtlattribute8;
4908 l_transaction_lines_rec.attribute9 := p_dtlattribute9;
4909 l_transaction_lines_rec.attribute10 := p_dtlattribute10;
4910 l_transaction_lines_rec.attribute11 := p_dtlattribute11;
4911 l_transaction_lines_rec.attribute12 := p_dtlattribute12;
4912 l_transaction_lines_rec.attribute13 := p_dtlattribute13;
4913 l_transaction_lines_rec.attribute14 := p_dtlattribute14;
4914 l_transaction_lines_rec.attribute15 := p_dtlattribute15;
4915 l_transaction_lines_rec.attribute16 := p_dtlattribute16;
4916 l_transaction_lines_rec.attribute17 := p_dtlattribute17;
4917 l_transaction_lines_rec.attribute18 := p_dtlattribute18;
4918 l_transaction_lines_rec.attribute19 := p_dtlattribute19;
4919 l_transaction_lines_rec.attribute20 := p_dtlattribute20;
4920 l_transaction_lines_rec.attribute21 := p_dtlattribute21;
4921 l_transaction_lines_rec.attribute22 := p_dtlattribute22;
4922 l_transaction_lines_rec.attribute23 := p_dtlattribute23;
4923 l_transaction_lines_rec.attribute24 := p_dtlattribute24;
4924 l_transaction_lines_rec.attribute25 := p_dtlattribute25;
4925 l_transaction_lines_rec.attribute26 := p_dtlattribute26;
4926 l_transaction_lines_rec.attribute27 := p_dtlattribute27;
4927 l_transaction_lines_rec.attribute28 := p_dtlattribute28;
4928 l_transaction_lines_rec.attribute29 := p_dtlattribute29;
4929 l_transaction_lines_rec.attribute30 := p_dtlattribute30;
4930
4931
4932 Create_Intheader(
4933 p_txn_header_rec_type => l_transaction_header_rec,
4934 x_rec_count => l_msg_count,
4935 x_return_status => l_return_status);
4936
4937 IF l_return_status = fnd_api.g_ret_sts_error THEN
4938 RAISE fnd_api.g_exc_error;
4939 ELSIF l_return_status = fnd_api.g_ret_sts_unexp_error THEN
4940 RAISE fnd_api.g_exc_unexpected_error;
4941 END IF;
4942 l_transaction_lines_rec.transaction_int_header_id :=l_transaction_header_rec.transaction_int_header_id;
4943 l_transaction_lines_rec.org_id :=l_transaction_header_rec.org_id;
4944
4945 Create_Intlines(
4946 p_transaction_lines_rec => l_transaction_lines_rec,
4947 x_msg_count => l_msg_count,
4948 x_return_status => l_return_status);
4949
4950
4951 IF l_return_status = fnd_api.g_ret_sts_error THEN
4952 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Create_Intlines fnd_api.g_ret_sts_error'||sqlerrm);
4953 fnd_message.set_name('DPP', 'DPP_DUPLICATE_RECORDS');
4954 l_error_message := fnd_message.get();
4955 RAISE dpp_webadi_error;
4956 ELSIF l_return_status = fnd_api.g_ret_sts_unexp_error THEN
4957 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Create_Intlines fnd_api.g_ret_sts_error');
4958 RAISE fnd_api.g_exc_unexpected_error;
4959 END IF;
4960
4961 EXCEPTION
4962
4963 WHEN dpp_webadi_error THEN
4964 --x_return_status := FND_API.G_RET_STS_ERROR;
4965 ROLLBACK TO inbound_approval;
4966 if l_error_message is NULL then
4967 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, 'DPP in DPP_webadi_error l_error_message is null');
4968 l_error_message := fnd_message.get();
4969 end if;
4970 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, 'DPP in DPP_webadi_error:'||l_error_message);
4971 raise_application_error( -20000, l_error_message);
4972 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4973 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, 'DPP IN FND_API.G_EXC_UNEXPECTED_ERROR BLOCK');
4974 ROLLBACK TO inbound_approval;
4975 IF length( SQLERRM) > 30 THEN
4976 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, substr(SQLERRM,12,30));
4977 fnd_message.set_name ('DPP', substr(SQLERRM,12,30));
4978 ELSE
4979 fnd_message.set_name ('DPP', SQLERRM);
4980 END IF;
4981 l_error_message := fnd_message.get();
4982 raise_application_error( -20000, l_error_message);
4983 WHEN OTHERS THEN
4984 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, 'DPP IN OTHERS BLOCK');
4985 ROLLBACK TO inbound_approval;
4986 IF length( SQLERRM) > 30 THEN
4987 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, substr(SQLERRM,12,30));
4988 fnd_message.set_name ('DPP', substr(SQLERRM,12,30));
4989 ELSE
4990 fnd_message.set_name ('DPP', SQLERRM);
4991 END IF;
4992 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4993 l_error_message := fnd_message.get();
4994 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, 'DPP l_error_message:'||l_error_message);
4995 raise_application_error( -20000, l_error_message);
4996 END inbound_approval;
4997
4998 PROCEDURE Create_Transaction(
4999 errbuf OUT nocopy VARCHAR2
5000 , retcode OUT nocopy VARCHAR2
5001 , p_operating_unit IN VARCHAR2 DEFAULT NULL
5002 , p_supplier_name IN VARCHAR2
5003 , p_supplier_site IN VARCHAR2 DEFAULT NULL
5004 , p_document_reference_number IN VARCHAR2 DEFAULT NULL
5005 )
5006 AS
5007 l_api_name constant VARCHAR2(30) := 'Create_Transaction';
5008 l_api_version constant NUMBER := 1.0;
5009 l_full_name constant VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
5010
5011 l_return_status VARCHAR2(30);
5012 l_msg_count NUMBER;
5013 l_msg_data VARCHAR2(4000);
5014 l_user_id NUMBER :=FND_PROFILE.VALUE('USER_ID');
5015
5016 l_request_id NUMBER :=FND_GLOBAL.conc_request_id;
5017 l_program_id NUMBER :=FND_GLOBAL.conc_program_id;
5018 l_prog_app_id NUMBER :=FND_GLOBAL.prog_appl_id;
5019
5020 l_init_msg_list VARCHAR2(30) := fnd_api.g_false;
5021 l_commit VARCHAR2(30) := fnd_api.g_false;
5022 l_validation_level NUMBER := fnd_api.g_valid_level_full;
5023
5024 l_transaction_int_header_id NUMBER;
5025 l_line_count NUMBER := 0;
5026 l_message VARCHAR2(250);
5027 l_row_count NUMBER := 0;
5028 l_supplier_id VARCHAR2(150);
5029 l_supplier_site_id VARCHAR2(150);
5030 l_org_id VARCHAR2(150);
5031 l_value NUMBER;
5032
5033 CURSOR transaction_cur(cv_doc_ref_no VARCHAR2, cv_supplier_name VARCHAR2,cv_supplier_id VARCHAR2,
5034 cv_supplier_site VARCHAR2,cv_supplier_site_id VARCHAR2,cv_operating_unit VARCHAR2,cv_org_id VARCHAR2 )
5035 IS
5036 SELECT transaction_int_header_id
5037 FROM dpp_txn_headers_int_all dtha ,
5038 hr_operating_units hr
5039 WHERE dtha.interface_status = 'N'
5040 AND nvl(dtha.ref_document_number, -1) = nvl(cv_doc_ref_no,nvl(dtha.ref_document_number,-1))
5041 AND (dtha.vendor_name = cv_supplier_name OR
5042 dtha.vendor_id = cv_supplier_id)
5043 AND (nvl(dtha.vendor_site,-1) = nvl(cv_supplier_site, nvl(dtha.vendor_site,-1)) OR
5044 nvl(dtha.vendor_site_id,-1) = nvl(cv_supplier_site_id, nvl(dtha.vendor_site_id,-1)))
5045 AND (nvl(dtha.operating_unit_name,-1) = nvl(cv_operating_unit, nvl(dtha.operating_unit_name,-1))
5046 OR nvl(dtha.org_id,-1) = nvl(cv_org_id, nvl( dtha.org_id,-1)))
5047 AND hr.name = nvl(dtha.operating_unit_name,hr.name)
5048 AND hr.organization_id =nvl(to_number(dtha.org_id),hr.organization_id)
5049 AND mo_global.check_access(hr.organization_id) = 'Y'
5050 ORDER BY transaction_int_header_id;
5051
5052 BEGIN
5053 -- Standard begin of API savepoint
5054 SAVEPOINT dpp_create_txn;
5055 -- Initialize API return status to sucess
5056 retcode := 0;
5057 ------------------------------------------
5058 -- Initialization
5059 ------------------------------------------
5060 fnd_file.put_line(fnd_file.log,('=================================='));
5061 fnd_file.put_line(fnd_file.log,('INITIALIZATION'));
5062 fnd_file.put_line(fnd_file.log,('USER : ' || ' (' || l_user_id || ')'));
5063 fnd_file.put_line(fnd_file.log,('ORG : ' || SUBSTR(userenv('CLIENT_INFO'), 1, 10)));
5064 fnd_file.put_line(fnd_file.log,('=================================='));
5065
5066 IF DPP_DEBUG_HIGH_ON THEN
5067 fnd_file.put_line(fnd_file.log, 'Begin Create Transaction');
5068 fnd_file.put_line(fnd_file.log, '************************');
5069 fnd_file.put_line(fnd_file.log, ' Supplier Name:' || p_supplier_name
5070 ||' Supplier Site:' || p_supplier_site
5071 ||' Ref Document Number:' || p_document_reference_number
5072 ||' Operating Unit: ' || p_operating_unit);
5073 END IF;
5074 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'DPP_INBOUND_PVT_BODY name:'||p_supplier_name
5075 ||'DPP_INBOUND_PVT_BODY site:'||p_supplier_site
5076 ||'DPP_INBOUND_PVT_BODY ref:'||p_document_reference_number
5077 ||'DPP_INBOUND_PVT_BODY unit: '||p_operating_unit);
5078 --BUG 6806974
5079
5080
5081 SELECT fnd_profile.value('XLA_MO_SECURITY_PROFILE_LEVEL') into l_value from dual;
5082
5083 mo_global.set_org_access( null,l_value,'M');
5084
5085
5086 BEGIN
5087 SELECT vendor_id
5088 INTO l_supplier_id
5089 FROM ap_suppliers
5090 WHERE vendor_name = p_supplier_name;
5091
5092
5093 IF p_supplier_site IS NOT NULL THEN
5094 SELECT vendor_site_id
5095 INTO l_supplier_site_id
5096 FROM ap_supplier_sites
5097 WHERE vendor_id = to_number(l_supplier_id)
5098 AND vendor_site_code =p_supplier_site;
5099 END IF;
5100
5101 IF p_operating_unit IS NOT NULL THEN
5102 SELECT organization_id
5103 INTO l_org_id
5104 FROM hr_operating_units
5105 WHERE name = p_operating_unit;
5106 END IF;
5107 IF DPP_DEBUG_HIGH_ON THEN
5108 fnd_file.put_line(fnd_file.log, 'Vendor Id '||l_supplier_id
5109 ||' Supplier Site ID '||l_supplier_site_id
5110 || ' Org ID '||l_org_id);
5111 END IF;
5112
5113 EXCEPTION WHEN NO_DATA_FOUND THEN
5114 fnd_file.put_line(fnd_file.log, 'Error in deriving ID for the parameters');
5115 RAISE Fnd_Api.G_EXC_ERROR;
5116 END;
5117
5118 FOR transaction_rec IN transaction_cur(p_document_reference_number,p_supplier_name,l_supplier_id,
5119 p_supplier_site,l_supplier_site_id,p_operating_unit,l_org_id)
5120 LOOP
5121 IF DPP_DEBUG_HIGH_ON THEN
5122 fnd_file.put_line(fnd_file.log, 'Call Insert Transaction p_transaction_int_header_id:'||transaction_rec.transaction_int_header_id);
5123 END IF;
5124 BEGIN
5125 UPDATE dpp_txn_headers_int_all dtha
5126 SET dtha.program_id = l_program_id,
5127 dtha.program_application_id = l_prog_app_id,
5128 dtha.request_id = l_request_id,
5129 dtha.program_update_date = sysdate
5130 WHERE dtha.transaction_int_header_id = transaction_rec.transaction_int_header_id;
5131
5132 UPDATE dpp_txn_lines_int_all dtla
5133 SET dtla.program_id = l_program_id,
5134 dtla.program_application_id = l_prog_app_id,
5135 dtla.request_id = l_request_id,
5136 dtla.program_update_date = sysdate
5137 WHERE dtla.transaction_int_header_id = transaction_rec.transaction_int_header_id;
5138 EXCEPTION WHEN OTHERS THEN
5139 fnd_file.put_line(fnd_file.log, 'Error in updating request id into the table.');
5140 RAISE Fnd_Api.G_EXC_ERROR;
5141 END;
5142 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'Call Insert Transaction p_transaction_int_header_id:'||transaction_rec.transaction_int_header_id);
5143 DPP_TRANSACTION_PVT.Insert_Transaction(
5144 p_api_version =>l_api_version
5145 , p_init_msg_list =>l_init_msg_list
5146 , p_commit =>l_commit
5147 , p_validation_level =>l_validation_level
5148 , p_transaction_int_header_id =>transaction_rec.transaction_int_header_id
5149 , p_operating_unit => p_operating_unit
5150 , x_return_status =>l_return_status
5151 , x_msg_count =>l_msg_count
5152 , x_msg_data =>l_msg_data
5153 ) ;
5154
5155 IF l_return_status IN ('E','U') THEN
5156 fnd_file.put_line(fnd_file.log,l_msg_data);
5157 l_line_count := l_line_count + 1;
5158 /*IF DPP_DEBUG_HIGH_ON THEN
5159 fnd_file.put_line(fnd_file.log, '************************');
5160 fnd_file.put_line(fnd_file.log, ' Message: '||l_msg_data);
5161 fnd_file.put_line(fnd_file.log, '************************');
5162 END IF;*/
5163 END IF;
5164 l_row_count := l_row_count +1;
5165 END LOOP;
5166 fnd_file.put_line(fnd_file.log, ' No of Records Processed : '||l_row_count);
5167 fnd_file.put_line(fnd_file.log, ' No of Error Records : '||l_line_count);
5168 fnd_file.put_line(fnd_file.log, ' No of Success Records : '||(l_row_count-l_line_count));
5169
5170 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, ' No of Records Processed : '||l_row_count
5171 ||' No of Error Records : '||l_line_count
5172 ||' No of Success Records : '||(l_row_count-l_line_count));
5173
5174 IF l_row_count = 0 THEN
5175 FND_FILE.PUT_LINE(FND_FILE.LOG,'No Records selected for Processing');
5176 END IF;
5177 IF l_line_count = 0 OR l_row_count = 0 THEN
5178 retcode := 0;
5179 errbuf :='Normal';
5180 ELSIF l_line_count = l_row_count THEN
5181 retcode := 2;
5182 errbuf :='Error';
5183 ELSE
5184 retcode := 1;
5185 errbuf :='Warning';
5186 END IF;
5187 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_STATEMENT, 'dpp.plsql.' || L_FULL_NAME, 'DPP EXCEPTION l_msg_data:' ||l_msg_data);
5188
5189 IF DPP_DEBUG_HIGH_ON THEN
5190 FND_FILE.PUT_LINE(FND_FILE.LOG,'End Create Transaction');
5191 END IF;
5192
5193 EXCEPTION
5194 WHEN Fnd_Api.G_EXC_ERROR THEN
5195 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, 'DPP EXCEPTION G_EXC_ERROR');
5196 ROLLBACK TO dpp_create_txn;
5197 Fnd_Msg_Pub.Count_AND_Get
5198 ( p_count => l_msg_count,
5199 p_data => l_msg_data,
5200 p_encoded => Fnd_Api.G_FALSE
5201 );
5202 WHEN Fnd_Api.G_EXC_UNEXPECTED_ERROR THEN
5203 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, 'DPP EXCEPTION G_EXC_UNEXPECTED_ERROR');
5204 ROLLBACK TO dpp_create_txn;
5205 Fnd_Msg_Pub.Count_AND_Get
5206 ( p_count => l_msg_count,
5207 p_data => l_msg_data,
5208 p_encoded => Fnd_Api.G_FALSE
5209 );
5210 WHEN OTHERS THEN
5211 DPP_UTILITY_PVT.DEBUG_MESSAGE( FND_LOG.LEVEL_EXCEPTION, 'dpp.plsql.' || L_FULL_NAME, 'DPP EXCEPTION OTHERS'||SQLERRM);
5212 ROLLBACK TO dpp_create_txn;
5213 IF Fnd_Msg_Pub.Check_Msg_Level ( Fnd_Msg_Pub.G_MSG_LVL_UNEXP_ERROR )
5214 THEN
5215 Fnd_Msg_Pub.Add_Exc_Msg( G_PKG_NAME,l_api_name);
5216 END IF;
5217 Fnd_Msg_Pub.Count_AND_Get
5218 ( p_count => l_msg_count,
5219 p_data => l_msg_data,
5220 p_encoded => Fnd_Api.G_FALSE
5221 );
5222
5223 END Create_Transaction;
5224 END DPP_TRANSACTION_PVT;