DBA Data[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;