DBA Data[Home] [Help]

PACKAGE BODY: APPS.OZF_TRADE_PROFILE_PVT

Source


1 PACKAGE BODY OZF_Trade_Profile_PVT as
2 /* $Header: ozfvctpb.pls 120.5.12010000.3 2010/04/26 07:13:17 kpatro ship $ */
3 -- ===============================================================
4 -- Start of Comments
5 -- Package name
6 --          OZF_Trade_Profile_PVT
7 -- Purpose
8 --
9 -- History
10 --
11 -- NOTE
12 --
13 -- End of Comments
14 --   4/5/2010     nepanda    Bug 9539273 - 12.1.3 multi currency - trade profile / autopay issues
15 --   4/25/2010    kpatro     ER#9453443 - RBS PAD/ CLAIM OFFER CODE CREATE/ UPDATE FLOW CHANGES
16 -- ===============================================================
17 G_PKG_NAME CONSTANT VARCHAR2(30):= 'OZF_Trade_Profile_PVT';
18 G_FILE_NAME CONSTANT VARCHAR2(12) := 'ozfvctpb.pls';
19 
20 G_DEBUG BOOLEAN := FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_debug_high);
21 
22 CURSOR g_functional_currency_code_csr IS
23 SELECT gs.currency_code
24 FROM   gl_sets_of_books gs,
25        ozf_sys_parameters osp
26 WHERE  gs.set_of_books_id = osp.set_of_books_id
27 AND    osp.org_id = MO_GLOBAL.get_current_org_id();
28 
29 -------------------------------------------------------------------------------
30 PROCEDURE Complete_trade_profile_Rec
31 (
32    p_trade_profile_rec     IN    trade_profile_rec_type,
33    x_complete_rec        OUT NOCOPY    trade_profile_rec_type
34 )
35 IS
36 
37 CURSOR c_trade IS
38    SELECT *
39      FROM ozf_cust_trd_prfls_all
40      WHERE trade_profile_id = p_trade_profile_rec.trade_profile_id;
41 l_trade_profile_rec         c_trade%rowtype;
42 
43 BEGIN
44    x_complete_rec := p_trade_profile_rec;
45    OPEN c_trade;
46       FETCH c_trade INTO l_trade_profile_rec;
47       IF c_trade%NOTFOUND THEN
48          CLOSE c_trade;
49          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
50             FND_MESSAGE.set_name('OZF', 'OZF_TRADE_PROFILE_MISSING');
51             FND_MSG_PUB.add;
52          END IF;
53          RAISE FND_API.g_exc_error;
54       END IF;
55    CLOSE c_trade;
56 
57    -- This procedure should complete the record by going through all the items in the incoming record.
58 
59 --   IF p_trade_profile_rec.last_update_date = FND_API.g_miss_date THEN
60 --      x_complete_rec.last_update_date := l_trade_profile_rec.last_update_date;
61 --   END IF;
62 
63 --   IF p_trade_profile_rec.object_version_number = FND_API.g_miss_num THEN
64 --      x_complete_rec.object_version_number := l_trade_profile_rec.object_version_number;
65 --   END IF;
66 
67 --   IF p_trade_profile_rec.last_updated_by = FND_API.g_miss_num THEN
68 --      x_complete_rec.last_updated_by := l_trade_profile_rec.last_updated_by;
69 --   END IF;
70 
71 --   IF p_trade_profile_rec.creation_date = FND_API.g_miss_date THEN
72 --      x_complete_rec.creation_date := l_trade_profile_rec.creation_date;
73 --   END IF;
74 
75 --   IF p_trade_profile_rec.last_update_login = FND_API.g_miss_num THEN
76 --      x_complete_rec.last_update_login := l_trade_profile_rec.last_update_login;
77 --   END IF;
78 
79    IF p_trade_profile_rec.request_id = FND_API.g_miss_num THEN
80       x_complete_rec.request_id := null;
81    END IF;
82    IF p_trade_profile_rec.request_id is null THEN
83       x_complete_rec.request_id := l_trade_profile_rec.request_id;
84    END IF;
85 
86 
87    IF p_trade_profile_rec.program_application_id = FND_API.g_miss_num THEN
88       x_complete_rec.program_application_id := null;
89    END IF;
90    IF p_trade_profile_rec.program_application_id is null THEN
91       x_complete_rec.program_application_id := l_trade_profile_rec.program_application_id;
92    END IF;
93 
94 
95    IF p_trade_profile_rec.program_update_date = FND_API.g_miss_date THEN
96       x_complete_rec.program_update_date := null;
97    END IF;
98    IF p_trade_profile_rec.program_update_date is null THEN
99       x_complete_rec.program_update_date := l_trade_profile_rec.program_update_date;
100    END IF;
101 
102 
103    IF p_trade_profile_rec.program_id = FND_API.g_miss_num THEN
104       x_complete_rec.program_id := null;
105    END IF;
106    IF p_trade_profile_rec.program_id is null THEN
107       x_complete_rec.program_id := l_trade_profile_rec.program_id;
108    END IF;
109 
110 
111    IF p_trade_profile_rec.created_from = FND_API.g_miss_char THEN
112       x_complete_rec.created_from := null;
113    END IF;
114    IF p_trade_profile_rec.created_from is null THEN
115       x_complete_rec.created_from := l_trade_profile_rec.created_from;
116    END IF;
117 
118 
119    IF p_trade_profile_rec.party_id = FND_API.g_miss_num THEN
120       x_complete_rec.party_id := null;
121    END IF;
122    IF p_trade_profile_rec.party_id is null THEN
123       x_complete_rec.party_id := l_trade_profile_rec.party_id;
124    END IF;
125 
126    IF p_trade_profile_rec.site_use_id = FND_API.g_miss_num THEN
127       x_complete_rec.site_use_id := null;
128    END IF;
129    IF p_trade_profile_rec.site_use_id is null THEN
130       x_complete_rec.site_use_id := l_trade_profile_rec.site_use_id;
131    END IF;
132 
133    IF p_trade_profile_rec.autopay_flag = FND_API.g_miss_char THEN
134       x_complete_rec.autopay_flag := null;
135    END IF;
136    IF p_trade_profile_rec.autopay_flag is null THEN
137       x_complete_rec.autopay_flag := l_trade_profile_rec.autopay_flag;
138    END IF;
139 
140 
141    IF p_trade_profile_rec.claim_currency = FND_API.g_miss_char THEN
142       x_complete_rec.claim_currency := null;
143    END IF;
144    IF p_trade_profile_rec.claim_currency is null THEN
145       x_complete_rec.claim_currency := l_trade_profile_rec.claim_currency;
146    END IF;
147 
148    IF p_trade_profile_rec.print_flag = FND_API.g_miss_char THEN
149       x_complete_rec.print_flag := null;
150    END IF;
151    IF p_trade_profile_rec.print_flag is null THEN
152       x_complete_rec.print_flag := l_trade_profile_rec.print_flag;
153    END IF;
154 
155    IF p_trade_profile_rec.internet_deal_view_flag = FND_API.g_miss_char THEN
156       x_complete_rec.internet_deal_view_flag := null;
157    END IF;
158    IF p_trade_profile_rec.internet_deal_view_flag is null THEN
159       x_complete_rec.internet_deal_view_flag := l_trade_profile_rec.internet_deal_view_flag;
160    END IF;
161 
162 
163    IF p_trade_profile_rec.internet_claims_flag = FND_API.g_miss_char THEN
164       x_complete_rec.internet_claims_flag := null;
165    END IF;
166    IF p_trade_profile_rec.internet_claims_flag is null THEN
167       x_complete_rec.internet_claims_flag := l_trade_profile_rec.internet_claims_flag;
168    END IF;
169 
170    IF p_trade_profile_rec.payment_method = FND_API.g_miss_char THEN
171       x_complete_rec.payment_method := null;
172    END IF;
173    IF p_trade_profile_rec.payment_method is null THEN
174       x_complete_rec.payment_method := l_trade_profile_rec.payment_method;
175    END IF;
176 
177    IF p_trade_profile_rec.discount_type = FND_API.g_miss_char THEN
178       x_complete_rec.discount_type := null;
179    END IF;
180    IF p_trade_profile_rec.discount_type is null THEN
181       x_complete_rec.discount_type := l_trade_profile_rec.discount_type;
182    END IF;
183 
184    IF p_trade_profile_rec.cust_account_id = FND_API.g_miss_num THEN
185       x_complete_rec.cust_account_id := null;
186    END IF;
187    IF p_trade_profile_rec.cust_account_id is null THEN
188       x_complete_rec.cust_account_id := l_trade_profile_rec.cust_account_id;
189    END IF;
190 
191    IF p_trade_profile_rec.internet_deal_view_flag = FND_API.g_miss_char THEN
192       x_complete_rec.internet_deal_view_flag := null;
193    END IF;
194    IF p_trade_profile_rec.internet_deal_view_flag is null THEN
195       x_complete_rec.internet_deal_view_flag := l_trade_profile_rec.internet_deal_view_flag;
196    END IF;
197 
198    IF p_trade_profile_rec.cust_acct_site_id = FND_API.g_miss_num THEN
199       x_complete_rec.cust_acct_site_id := null;
200    END IF;
201    IF p_trade_profile_rec.cust_acct_site_id is null THEN
202       x_complete_rec.cust_acct_site_id := l_trade_profile_rec.cust_acct_site_id;
203    END IF;
204 
205    IF p_trade_profile_rec.vendor_id = FND_API.g_miss_num THEN
206       x_complete_rec.vendor_id := null;
207    END IF;
208    IF p_trade_profile_rec.vendor_id is null THEN
209       x_complete_rec.vendor_id := l_trade_profile_rec.vendor_id;
210    END IF;
211 
212    IF p_trade_profile_rec.vendor_site_id = FND_API.g_miss_num THEN
213       x_complete_rec.vendor_site_id := null;
214    END IF;
215    IF p_trade_profile_rec.vendor_site_id is null THEN
216       x_complete_rec.vendor_site_id := l_trade_profile_rec.vendor_site_id;
217    END IF;
218 
219    IF p_trade_profile_rec.vendor_site_code = FND_API.g_miss_char THEN
220       x_complete_rec.vendor_site_code := null;
221    END IF;
222    IF p_trade_profile_rec.vendor_site_code is null THEN
223       x_complete_rec.vendor_site_code := l_trade_profile_rec.vendor_site_code;
224    END IF;
225 
226   IF p_trade_profile_rec.attribute_category = FND_API.g_miss_char THEN
227       x_complete_rec.attribute_category := null;
228    END IF;
229   IF p_trade_profile_rec.attribute_category is null THEN
230       x_complete_rec.attribute_category := l_trade_profile_rec.attribute_category;
231    END IF;
232 
233    IF p_trade_profile_rec.context = FND_API.g_miss_char THEN
234       x_complete_rec.context := null;
235    END IF;
236    IF p_trade_profile_rec.context is null THEN
237       x_complete_rec.context := l_trade_profile_rec.context;
238    END IF;
239 
240    IF p_trade_profile_rec.org_id = FND_API.g_miss_num THEN
241       x_complete_rec.org_id := null;
242    END IF;
243    IF p_trade_profile_rec.org_id is null THEN
244       x_complete_rec.org_id := l_trade_profile_rec.org_id;
245    END IF;
246 
247 
248    IF p_trade_profile_rec.days_due = FND_API.g_miss_num THEN
249       x_complete_rec.days_due := null;
250    END IF;
251    IF p_trade_profile_rec.days_due is null THEN
252       x_complete_rec.days_due := l_trade_profile_rec.days_due;
253    END IF;
254 
255    IF p_trade_profile_rec.autopay_periodicity = FND_API.g_miss_num THEN
256       x_complete_rec.autopay_periodicity := null;
257    END IF;
258    IF p_trade_profile_rec.autopay_periodicity is null THEN
259       x_complete_rec.autopay_periodicity := l_trade_profile_rec.autopay_periodicity;
260    END IF;
261 
262 
263    IF p_trade_profile_rec.claim_threshold = FND_API.g_miss_num THEN
264       x_complete_rec.claim_threshold := null;
265    END IF;
266    IF p_trade_profile_rec.claim_threshold is null THEN
267       x_complete_rec.claim_threshold := l_trade_profile_rec.claim_threshold;
268    END IF;
269 
270 
271    IF p_trade_profile_rec.pos_write_off_threshold = FND_API.g_miss_num THEN
272       x_complete_rec.pos_write_off_threshold := null;
273    END IF;
274    IF p_trade_profile_rec.pos_write_off_threshold is null THEN
275       x_complete_rec.pos_write_off_threshold := l_trade_profile_rec.pos_write_off_threshold;
276    END IF;
277 
278    IF p_trade_profile_rec.neg_write_off_threshold = FND_API.g_miss_num THEN
279       x_complete_rec.neg_write_off_threshold := null;
280    END IF;
281    IF p_trade_profile_rec.neg_write_off_threshold is null THEN
282       x_complete_rec.neg_write_off_threshold := l_trade_profile_rec.neg_write_off_threshold;
283    END IF;
284 
285    IF p_trade_profile_rec.un_earned_pay_allow_to = FND_API.g_miss_char THEN
286       x_complete_rec.un_earned_pay_allow_to := null;
287    END IF;
288    IF p_trade_profile_rec.un_earned_pay_allow_to is null THEN
289       x_complete_rec.un_earned_pay_allow_to := l_trade_profile_rec.un_earned_pay_allow_to;
290    END IF;
291 
292    IF p_trade_profile_rec.un_earned_pay_thold_type = FND_API.g_miss_char THEN
293       x_complete_rec.un_earned_pay_thold_type := null;
294    END IF;
295    IF p_trade_profile_rec.un_earned_pay_thold_type is null THEN
296       x_complete_rec.un_earned_pay_thold_type := l_trade_profile_rec.un_earned_pay_thold_type;
297    END IF;
298 
299    IF p_trade_profile_rec.un_earned_pay_threshold = FND_API.g_miss_num THEN
300       x_complete_rec.un_earned_pay_threshold := null;
301    END IF;
302    IF p_trade_profile_rec.un_earned_pay_threshold is null THEN
303       x_complete_rec.un_earned_pay_threshold := l_trade_profile_rec.un_earned_pay_thold_amount;
304    END IF;
305 
306    IF p_trade_profile_rec.un_earned_pay_thold_flag = FND_API.g_miss_char THEN
307       x_complete_rec.un_earned_pay_thold_flag := null;
308    END IF;
309    IF p_trade_profile_rec.un_earned_pay_thold_flag is null THEN
310       x_complete_rec.un_earned_pay_thold_flag := l_trade_profile_rec.un_earned_pay_thold_flag;
311    END IF;
312 
313    IF p_trade_profile_rec.header_tolerance_calc_code = FND_API.g_miss_char THEN
314       x_complete_rec.header_tolerance_calc_code := null;
315    END IF;
316    IF p_trade_profile_rec.header_tolerance_calc_code is null THEN
317       x_complete_rec.header_tolerance_calc_code := l_trade_profile_rec.header_tolerance_calc_code;
318    END IF;
319 
320    IF p_trade_profile_rec.header_tolerance_operand = FND_API.g_miss_num THEN
321       x_complete_rec.header_tolerance_operand := null;
322    END IF;
323    IF p_trade_profile_rec.header_tolerance_operand is null THEN
324       x_complete_rec.header_tolerance_operand := l_trade_profile_rec.header_tolerance_operand;
325    END IF;
326 
327    IF p_trade_profile_rec.line_tolerance_calc_code = FND_API.g_miss_char THEN
328       x_complete_rec.line_tolerance_calc_code := null;
329    END IF;
330    IF p_trade_profile_rec.line_tolerance_calc_code is null THEN
331       x_complete_rec.line_tolerance_calc_code := l_trade_profile_rec.line_tolerance_calc_code;
332    END IF;
333 
334    IF p_trade_profile_rec.line_tolerance_operand = FND_API.g_miss_num THEN
335       x_complete_rec.line_tolerance_operand := null;
336    END IF;
337    IF p_trade_profile_rec.line_tolerance_operand is null THEN
338       x_complete_rec.line_tolerance_operand := l_trade_profile_rec.line_tolerance_operand;
339    END IF;
340 
341 
342 END Complete_trade_profile_Rec;
343 -------------------------------------------------------------------------------
344 PROCEDURE populate_defaults(
345    p_trade_profile_rec         IN   trade_profile_rec_type,
346    x_trade_profile_rec         OUT NOCOPY  trade_profile_rec_type,
347    x_return_status             OUT NOCOPY  VARCHAR2
348 )
349 IS
350 l_cust_acct_site_id                 NUMBER;
351 l_vendor_site_code        VARCHAR2(80);
352 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Populate_Defaults';
353 
354    CURSOR c_cust_acct_site_id (a_id IN NUMBER) IS
355       SELECT cust_acct_site_id
356       from   HZ_CUST_SITE_USES
357       WHERE  site_use_id = a_id;
358 
359    CURSOR vendor_site_code_csr (a_id IN NUMBER) IS
360       SELECT vendor_site_code
361       from   PO_VENDOR_SITES
362       WHERE  vendor_site_id = a_id;
363 
364 BEGIN
365    x_trade_profile_rec := p_trade_profile_rec;
366 
367    -- defaulting flags not shown on screen and mandatory in db
368    x_trade_profile_rec.internet_deal_view_flag :='F';
369    x_trade_profile_rec.print_flag :='F';
370 
371    -- set autopay flag to F if null
372    IF x_trade_profile_rec.autopay_flag = FND_API.g_miss_char OR
373       x_trade_profile_rec.autopay_flag IS NULL
374    THEN
375       x_trade_profile_rec.autopay_flag :='F';
376    END IF;
377 
378    -- default cust_acct_site_id if site use is is found
379    IF x_trade_profile_rec.cust_account_id <> FND_API.g_miss_num OR
380       x_trade_profile_rec.cust_account_id IS NOT NULL
381    THEN
382       IF x_trade_profile_rec.site_use_id <> FND_API.g_miss_num OR
383          x_trade_profile_rec.site_use_id IS NOT NULL
384       THEN
385          OPEN c_cust_acct_site_id(x_trade_profile_rec.site_use_id);
386             FETCH c_cust_acct_site_id INTO l_cust_acct_site_id;
387          CLOSE c_cust_acct_site_id;
388       END IF;
389       x_trade_profile_rec.cust_acct_site_id :=l_cust_acct_site_id;
390    END IF;
391 
392    -- store vendor_code if not passed
393    IF x_trade_profile_rec.vendor_site_id <> FND_API.g_miss_num OR
394       x_trade_profile_rec.vendor_site_id IS NOT NULL
395    THEN
396       IF x_trade_profile_rec.vendor_id <> FND_API.g_miss_num OR
397          x_trade_profile_rec.vendor_id IS NOT NULL
398       THEN
399          OPEN vendor_site_code_csr(x_trade_profile_rec.vendor_site_id);
400             FETCH vendor_site_code_csr INTO l_vendor_site_code;
401          CLOSE vendor_site_code_csr;
402       END IF;
403       x_trade_profile_rec.vendor_site_code :=l_vendor_site_code;
404    END IF;
405 
406 EXCEPTION
407    WHEN OTHERS THEN
408       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
409       IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
410       THEN
411          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
412       END IF;
413 END populate_defaults;
414 --------------------------------------------------------------------------------
415 PROCEDURE Create_Trade_Profile(
416    p_api_version_number         IN   NUMBER,
417    p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
418    p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
419    p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
420    x_return_status              OUT NOCOPY  VARCHAR2,
421    x_msg_count                  OUT NOCOPY  NUMBER,
422    x_msg_data                   OUT NOCOPY  VARCHAR2,
423    p_trade_profile_rec         IN   trade_profile_rec_type,
424    x_trade_profile_id      OUT NOCOPY  NUMBER
425    )
426 IS
427    L_API_NAME                  CONSTANT VARCHAR2(30) := 'Create_Trade_Profile';
428    L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
429    l_return_status_full        VARCHAR2(1);
430    l_object_version_number     NUMBER := 1;
431    l_org_id                    NUMBER ;
432    l_TRADE_PROFILE_ID                  NUMBER;
433    l_CUST_ACCOUNT_ID                   NUMBER;
434    l_cust_acct_site_id                 NUMBER;
435    l_dummy       NUMBER;
436    l_cust_dummy  NUMBER;
437    l_party_dummy NUMBER;
438    l_party_dummy1 NUMBER;
439    l_party_id    NUMBER;
440 
441    l_trade_profile_rec         trade_profile_rec_type;
442    l_x_trade_profile_rec       trade_profile_rec_type;
443    l_null  VARCHAR2(10) := 'NULL';
444 
445    CURSOR c_id IS
446       SELECT ozf_cust_trd_prfls_all_s.NEXTVAL
447       FROM dual;
448 
449    CURSOR c_id_exists (l_id IN NUMBER) IS
450       SELECT count(trade_profile_id)
451       FROM   ozf_cust_trd_prfls_all
452       WHERE  TRADE_PROFILE_ID = l_id;
453 
454    CURSOR c_customer_id (p_id IN NUMBER) IS
455       SELECT cust_account_id
456       from   HZ_CUST_ACCOUNTS
457       WHERE  party_id = p_id
458       AND    status = 'A';
459 
460    CURSOR c_party_id (c_id IN NUMBER) IS
461       SELECT party_id
462       from   HZ_CUST_ACCOUNTS
463       WHERE  cust_account_id = c_id;
464 
465 BEGIN
466 
467    -- Standard Start of API savepoint
468    SAVEPOINT CREATE_Trade_Profile_PVT;
469    IF g_debug THEN
470       OZF_UTILITY_PVT.debug_message('Private API: Create trade profile');
471    END IF;
472    -- Standard call to check for call compatibility.
473    IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
474                                            p_api_version_number,
475                                            l_api_name,
476                                            G_PKG_NAME)
477    THEN
478        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
479    END IF;
480 
481    -- Initialize message list if p_init_msg_list is set to TRUE.
482    IF FND_API.to_Boolean( p_init_msg_list )
483    THEN
484       FND_MSG_PUB.initialize;
485    END IF;
486    -- Initialize API return status to SUCCESS
487    x_return_status := FND_API.G_RET_STS_SUCCESS;
488    -- Local variable initialization
489    IF p_trade_profile_rec.TRADE_PROFILE_ID IS NULL OR
490       p_trade_profile_rec.TRADE_PROFILE_ID = FND_API.g_miss_num
491    THEN
492       LOOP
493          l_dummy := NULL;
494          OPEN c_id;
495          FETCH c_id INTO l_TRADE_PROFILE_ID;
496          CLOSE c_id;
497 
498          OPEN c_id_exists(l_TRADE_PROFILE_ID);
499          FETCH c_id_exists INTO l_dummy;
500          CLOSE c_id_exists;
501          EXIT WHEN l_dummy=0;
502       END LOOP;
503    END IF;
504 
505    -- =========================================================================
506    -- Validate Environment
507    -- =========================================================================
508    IF FND_GLOBAL.User_Id IS NULL
509    THEN
510       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
511          FND_MESSAGE.set_name('OZF', 'OZF_USER_PROFILE_MISSING');
512          FND_MSG_PUB.add;
513       END IF;
514       RAISE FND_API.G_EXC_ERROR;
515    END IF;
516 
517    -- Assign the record to a local variable
518    l_trade_profile_rec := p_trade_profile_rec;
519 
520    -- checking party and defaulting it if cust_account_id is passed
521    IF p_trade_profile_rec.party_id = FND_API.g_miss_num OR
522       p_trade_profile_rec.party_id IS NULL
523    THEN
524       IF g_debug THEN
525          OZF_UTILITY_PVT.debug_message('Party Id is null');
526       END IF;
527       IF l_trade_profile_rec.cust_account_id = FND_API.g_miss_num OR
528          l_trade_profile_rec.cust_account_id IS NULL
529       THEN
530          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
531             FND_MESSAGE.set_name('OZF', 'OZF_TRADE_CUST_MISSING');
532             FND_MSG_PUB.add;
533          END IF;
534          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
535       ELSE
536          OPEN c_party_id(l_trade_profile_rec.cust_account_id);
537             FETCH c_party_id INTO l_party_id;
538          CLOSE c_party_id;
539          l_trade_profile_rec.party_id := l_party_id;
540       END IF;
541    END IF;
542 
543 	IF l_trade_profile_rec.claim_currency is null OR
544 	   l_trade_profile_rec.claim_currency = FND_API.g_miss_char THEN
545 
546       OPEN  g_functional_currency_code_csr;
547       FETCH g_functional_currency_code_csr INTO l_trade_profile_rec.claim_currency;
548       CLOSE g_functional_currency_code_csr;
549 	END IF;
550 
551    -- populate defaults
552    populate_defaults (p_trade_profile_rec => l_trade_profile_rec,
553                       x_trade_profile_rec => l_x_trade_profile_rec,
554                       x_return_status => x_return_status);
555 
556    IF x_return_status = FND_API.g_ret_sts_error THEN
557       RAISE FND_API.G_EXC_ERROR;
558    ELSIF x_return_status = FND_API.g_ret_sts_unexp_error THEN
559       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
560    END IF;
561    l_trade_profile_rec := l_x_trade_profile_rec;
562 
563    IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
564    THEN
565       -- Invoke validation procedures
566       Validate_trade_profile(
567          p_api_version_number     => 1.0,
568          p_init_msg_list    => FND_API.G_FALSE,
569          p_validation_level => p_validation_level,
570          p_trade_profile_rec  =>l_trade_profile_rec,
571          x_return_status    => x_return_status,
572          x_msg_count        => x_msg_count,
573          x_msg_data         => x_msg_data
574          );
575    END IF;
576 
577    IF x_return_status = FND_API.g_ret_sts_error THEN
578       RAISE FND_API.G_EXC_ERROR;
579    ELSIF x_return_status = FND_API.g_ret_sts_unexp_error THEN
580       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
581    END IF;
582 
583    -- Debug Message
584    -- Invoke table handler(OZF_cust_trd_prfls_PKG.Insert_Row)
585    BEGIN
586       OZF_cust_trd_prfls_PKG.Insert_Row(
587          px_trade_profile_id  => l_trade_profile_id,
588          px_object_version_number  => l_object_version_number,
589          p_last_update_date  => SYSDATE,
590          p_last_updated_by  => FND_GLOBAL.USER_ID,
591          p_creation_date  => SYSDATE,
592          p_created_by  => FND_GLOBAL.USER_ID,
593          p_last_update_login  => FND_GLOBAL.CONC_LOGIN_ID,
594          p_request_id  => l_trade_profile_rec.request_id,
595          p_program_application_id  => l_trade_profile_rec.program_application_id,
596          p_program_update_date  => l_trade_profile_rec.program_update_date,
597          p_program_id  => l_trade_profile_rec.program_id,
598          p_created_from  => l_trade_profile_rec.created_from,
599          p_party_id  => l_trade_profile_rec.party_id,
600          p_site_use_id  => l_trade_profile_rec.site_use_id,
601          p_autopay_flag  => l_trade_profile_rec.autopay_flag,
602          p_claim_threshold  => l_trade_profile_rec.claim_threshold,
603          p_claim_currency  => l_trade_profile_rec.claim_currency,
604          p_print_flag  => l_trade_profile_rec.print_flag,
605          p_internet_deal_view_flag  => l_trade_profile_rec.internet_deal_view_flag,
606          p_internet_claims_flag  => l_trade_profile_rec.internet_claims_flag,
607          p_autopay_periodicity  => l_trade_profile_rec.autopay_periodicity,
608          p_autopay_periodicity_type  => l_trade_profile_rec.autopay_periodicity_type,
609          p_payment_method  => l_trade_profile_rec.payment_method,
610          p_discount_type  => l_trade_profile_rec.discount_type,
611          p_cust_account_id  => l_trade_profile_rec.cust_account_id,
612          p_cust_acct_site_id  => l_trade_profile_rec.cust_acct_site_id,
613          p_vendor_id  => l_trade_profile_rec.vendor_id,
614          p_vendor_site_id  => l_trade_profile_rec.vendor_site_id,
615          p_vendor_site_code  => l_trade_profile_rec.vendor_site_code,
616          p_context  => l_trade_profile_rec.context,
617          p_attribute_category  => l_trade_profile_rec.attribute_category,
618          p_attribute1  => l_trade_profile_rec.attribute1,
619          p_attribute2  => l_trade_profile_rec.attribute2,
620          p_attribute3  => l_trade_profile_rec.attribute3,
621          p_attribute4  => l_trade_profile_rec.attribute4,
622          p_attribute5  => l_trade_profile_rec.attribute5,
623          p_attribute6  => l_trade_profile_rec.attribute6,
624          p_attribute7  => l_trade_profile_rec.attribute7,
625          p_attribute8  => l_trade_profile_rec.attribute8,
626          p_attribute9  => l_trade_profile_rec.attribute9,
627          p_attribute10  => l_trade_profile_rec.attribute10,
628          p_attribute11  => l_trade_profile_rec.attribute11,
629          p_attribute12  => l_trade_profile_rec.attribute12,
630          p_attribute13  => l_trade_profile_rec.attribute13,
631          p_attribute14  => l_trade_profile_rec.attribute14,
632          p_attribute15  => l_trade_profile_rec.attribute15,
633          px_org_id  => l_trade_profile_rec.org_id,
634          p_days_due  => l_trade_profile_rec.days_due,
635 	 p_pos_write_off_threshold	=>	l_trade_profile_rec.pos_write_off_threshold,
636 	 p_neg_write_off_threshold	=>	l_trade_profile_rec.neg_write_off_threshold,
637 	 p_un_earned_pay_allow_to	=>	l_trade_profile_rec.un_earned_pay_allow_to,
638 	 p_un_earned_pay_thold_type	=>	l_trade_profile_rec.un_earned_pay_thold_type,
639 	 p_un_earned_pay_threshold	=>	l_trade_profile_rec.un_earned_pay_threshold,
640 	 p_un_earned_pay_thold_flag	=>	l_trade_profile_rec.un_earned_pay_thold_flag,
641    	 p_header_tolerance_calc_code	=>	l_trade_profile_rec.header_tolerance_calc_code,
642 	 p_header_tolerance_operand	=>	l_trade_profile_rec.header_tolerance_operand,
643 	 p_line_tolerance_calc_code	=>	l_trade_profile_rec.line_tolerance_calc_code,
644 	 p_line_tolerance_operand	=>	l_trade_profile_rec.line_tolerance_operand
645          );
646 
647    EXCEPTION
648       WHEN OTHERS THEN
649           IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
650              FND_MESSAGE.set_name('OZF', 'OZF_TABLE_HANDLER_ERROR');
651              FND_MSG_PUB.add;
652           END IF;
653 
654          RAISE FND_API.G_EXC_ERROR;
655    END;
656    --
657    -- End of API body
658    --
659 
660    -- Standard check for p_commit
661    IF FND_API.to_Boolean( p_commit )
662    THEN
663       COMMIT WORK;
664    END IF;
665 
666    -- Debug Message
667    IF g_debug THEN
668       OZF_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
669    END IF;
670 
671    -- Standard call to get message count and if count is 1, get message info.
672    FND_MSG_PUB.Count_And_Get
673    (p_count          =>   x_msg_count,
674     p_data           =>   x_msg_data
675    );
676 
677 EXCEPTION
678   WHEN OZF_Utility_PVT.resource_locked THEN
679      x_return_status := FND_API.g_ret_sts_error;
680      IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
681             FND_MESSAGE.set_name('OZF', 'OZF_API_RESOURCES_LOCKED');
682             FND_MSG_PUB.add;
683      END IF;
684   WHEN FND_API.G_EXC_ERROR THEN
685      ROLLBACK TO CREATE_Trade_Profile_PVT;
686      x_return_status := FND_API.G_RET_STS_ERROR;
687      -- Standard call to get message count and if count=1, get the message
688      FND_MSG_PUB.Count_And_Get (
689             p_encoded => FND_API.G_FALSE,
690             p_count   => x_msg_count,
691             p_data    => x_msg_data
692      );
693   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
694      ROLLBACK TO CREATE_Trade_Profile_PVT;
695      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
696      -- Standard call to get message count and if count=1, get the message
697      FND_MSG_PUB.Count_And_Get (
698             p_encoded => FND_API.G_FALSE,
699             p_count => x_msg_count,
700             p_data  => x_msg_data
701      );
702   WHEN OTHERS THEN
703      ROLLBACK TO CREATE_Trade_Profile_PVT;
704      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
705      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
706      THEN
707         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
708      END IF;
709      -- Standard call to get message count and if count=1, get the message
710      FND_MSG_PUB.Count_And_Get (
711             p_encoded => FND_API.G_FALSE,
712             p_count => x_msg_count,
713             p_data  => x_msg_data
714      );
715 End Create_Trade_Profile;
716 -------------------------------------------------------------------------------
717 PROCEDURE Update_Trade_Profile(
718    p_api_version_number         IN   NUMBER,
719    p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
720    p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
721    p_validation_level           IN  NUMBER       := FND_API.G_VALID_LEVEL_FULL,
722    x_return_status              OUT NOCOPY  VARCHAR2,
723    x_msg_count                  OUT NOCOPY  NUMBER,
724    x_msg_data                   OUT NOCOPY  VARCHAR2,
725    p_trade_profile_rec               IN    trade_profile_rec_type,
726    x_object_version_number      OUT NOCOPY  NUMBER
727                                )
728 IS
729    L_API_NAME                  CONSTANT VARCHAR2(30) := 'Update_Trade_Profile';
730    L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
731    -- Local Variables
732    l_object_version_number     NUMBER;
733    l_TRADE_PROFILE_ID          NUMBER;
734    --l_cust_account_id         NUMBER;
735    l_site_use_id               NUMBER;
736    l_cust_acct_site_id         NUMBER;
737    l_org_id                    NUMBER;
738 
739    CURSOR c_trade IS
740    SELECT *
741      FROM ozf_cust_trd_prfls_all
742      WHERE trade_profile_id = p_trade_profile_rec.trade_profile_id;
743 
744    CURSOR c_get_trade_profile(v_trade_profile_id in NUMBER) IS
745      SELECT *
746      FROM  ozf_cust_trd_prfls_all
747      WHERE trade_profile_id = v_trade_profile_id;
748 
749    CURSOR c_cust_acct_site_id (a_id IN NUMBER) IS
750       SELECT cust_acct_site_id
751       from HZ_CUST_SITE_USES
752       WHERE site_use_id = a_id;
753 
754    --l_ref_trade_profile_rec  c_get_Trade_Profile%ROWTYPE;
755    l_ref_trade_profile_rec  c_trade%ROWTYPE;
756    l_tar_trade_profile_rec  trade_profile_rec_type := p_trade_profile_rec;
757    l_rowid  ROWID;
758    l_trade_profile_rec      trade_profile_rec_type;
759    l_x_trade_profile_rec    trade_profile_rec_type;
760 
761    /*CURSOR check_acct_profile (p_id in number) IS
762    SELECT  cust_account_id
763    FROM    ozf_cust_trd_prfls_all   -- R12 Enhancements
764    WHERE   trade_profile_id = p_id;*/
765 
766    CURSOR check_site_profile (p_id in number) IS
767    SELECT  site_use_id
768    FROM    ozf_cust_trd_prfls_all   --For R12.1 Enhancements
769    WHERE   trade_profile_id = p_id;
770 
771 
772 BEGIN
773    -- Standard Start of API savepoint
774    SAVEPOINT UPDATE_Trade_Profile_PVT;
775    -- Standard call to check for call compatibility
776    IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
777                                            p_api_version_number,
778                                            l_api_name,
779                                            G_PKG_NAME
780                                       )
781    THEN
782       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
783    END IF;
784    -- Initialize message list if p_init_msg_list is set to TRUE.
785    IF FND_API.to_Boolean( p_init_msg_list )
786    THEN
787       FND_MSG_PUB.initialize;
788    END IF;
789    -- Debug Message
790    --OZF_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
791    -- Initialize API return status to SUCCESS
792    x_return_status := FND_API.G_RET_STS_SUCCESS;
793    l_org_id := l_tar_trade_profile_rec.org_id;  -- R12 Enhancements
794 
795    -- Debug Message
796    IF g_debug THEN
797       OZF_UTILITY_PVT.debug_message('Private API: - Open Cursor to Select');
798    END IF;
799    OPEN c_trade;
800      FETCH c_trade INTO l_ref_trade_profile_rec;
801      IF ( c_trade%NOTFOUND) THEN
802         IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
803            FND_MESSAGE.set_name('OZF', 'OZF_API_RECORD_NOT_FOUND');
804            FND_MSG_PUB.add;
805         END IF;
806         RAISE FND_API.G_EXC_ERROR;
807      END IF;
808    CLOSE  c_trade;
809    -- Debug Message
810    IF g_debug THEN
811       OZF_UTILITY_PVT.debug_message('Private API: - Close Cursor');
812    END IF;
813 
814    IF (l_tar_trade_profile_rec.object_version_number is NULL or
815       l_tar_trade_profile_rec.object_version_number = FND_API.G_MISS_NUM ) THEN
816       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
817          FND_MESSAGE.set_name('OZF', 'OZF_API_NO_OBJ_VER_NUM');
818          FND_MSG_PUB.add;
819    END IF;
820       raise FND_API.G_EXC_ERROR;
821    End if;
822 
823    -- check if site use id exists and is different than the one in db for trade profile
824    -- For R12.1 Enhancements
825    OPEN check_site_profile(p_trade_profile_rec.trade_profile_id);
826       FETCH check_site_profile INTO l_site_use_id;
827    CLOSE check_site_profile;
828    -- set to miss num if value is null
829    IF l_site_use_id is null THEN
830       l_site_use_id := FND_API.G_MISS_NUM;
831    END IF;
832 
833    -- if cust account id in db is not the same as the account from user create a trade profile
834      IF g_debug THEN
835         OZF_UTILITY_PVT.debug_message('before create in update!!');
836      END IF;
837    IF l_site_use_id <> p_trade_profile_rec.site_use_id THEN
838          IF g_debug THEN
839             OZF_UTILITY_PVT.debug_message('into create');
840          END IF;
841       Create_Trade_Profile (
842          p_api_version_number         =>   1.0,
843          p_init_msg_list              =>   FND_API.G_FALSE,
844          p_commit                     =>   FND_API.G_FALSE,
845          p_validation_level           =>   p_validation_level,
846          x_return_status              =>   x_return_status,
847          x_msg_count                  =>   x_msg_count,
848          x_msg_data                   =>   x_msg_data,
849          p_trade_profile_rec          =>   p_trade_profile_rec,
850          x_trade_profile_id           =>   l_trade_profile_id
851          );
852       IF x_return_status = FND_API.g_ret_sts_error THEN
853          RAISE FND_API.G_EXC_ERROR;
854       ELSIF x_return_status = FND_API.g_ret_sts_unexp_error THEN
855          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
856       END IF;
857       x_object_version_number := 1;
858    ELSE -- update for existing trade profiles at party or account levels
859       -- complete the record (get missing values filled from db)
860       Complete_trade_profile_Rec(
861          p_trade_profile_rec   => p_trade_profile_rec,
862          x_complete_rec        => l_trade_profile_rec
863       );
864         IF g_debug THEN
865            OZF_UTILITY_PVT.debug_message('into update part');
866         END IF;
867      -- populate defaults
868       populate_defaults (p_trade_profile_rec => l_trade_profile_rec,
869                       x_trade_profile_rec => l_x_trade_profile_rec,
870                       x_return_status => x_return_status);
871 
872       IF x_return_status = FND_API.g_ret_sts_error THEN
873          RAISE FND_API.G_EXC_ERROR;
874       ELSIF x_return_status = FND_API.g_ret_sts_unexp_error THEN
875          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
876       END IF;
877       l_trade_profile_rec := l_x_trade_profile_rec;
878 
879       IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
880          Check_trade_profile_Items(
881                                  p_trade_profile_rec => l_trade_profile_rec,
882                                  p_validation_mode   => JTF_PLSQL_API.g_update,
883                                  x_return_status     => x_return_status
884                                   );
885          IF x_return_status = FND_API.G_RET_STS_ERROR THEN
886             RAISE FND_API.G_EXC_ERROR;
887          ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
888             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
889          END IF;
890       END IF;
891 
892       IF p_validation_level >= JTF_PLSQL_API.g_valid_level_record THEN
893          Validate_trade_profile_Rec(
894            p_api_version_number     => 1.0,
895            p_init_msg_list          => FND_API.G_FALSE,
896            x_return_status          => x_return_status,
897            x_msg_count              => x_msg_count,
898            x_msg_data               => x_msg_data,
899            p_trade_profile_rec      => l_trade_profile_rec
900                                    );
901          IF x_return_status = FND_API.G_RET_STS_ERROR THEN
902             RAISE FND_API.G_EXC_ERROR;
903          ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
904             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
905          END IF;
906       END IF;
907       IF g_debug THEN
908          OZF_UTILITY_PVT.debug_message('cust_account_id'||l_trade_profile_rec.cust_account_id);
909       END IF;
910 
911       -- Debug Message
912       OZF_cust_trd_prfls_PKG.Update_Row(
913              p_trade_profile_id  => l_trade_profile_rec.trade_profile_id,
914              p_object_version_number  => l_trade_profile_rec.object_version_number,
915              p_last_update_date  => SYSDATE,
916              p_last_updated_by  => FND_GLOBAL.USER_ID,
917              p_last_update_login  => FND_GLOBAL.CONC_LOGIN_ID,
918              p_request_id  => l_trade_profile_rec.request_id,
919              p_program_application_id  => l_trade_profile_rec.program_application_id,
920              p_program_update_date  => l_trade_profile_rec.program_update_date,
921              p_program_id  => l_trade_profile_rec.program_id,
922              p_created_from  => l_trade_profile_rec.created_from,
923              p_party_id  => l_trade_profile_rec.party_id,
924              p_site_use_id  => l_trade_profile_rec.site_use_id,
925              p_autopay_flag  => l_trade_profile_rec.autopay_flag,
926              p_claim_threshold  => l_trade_profile_rec.claim_threshold,
927              p_claim_currency  => l_trade_profile_rec.claim_currency,
928              p_print_flag  => l_trade_profile_rec.print_flag,
929              p_internet_deal_view_flag  => l_trade_profile_rec.internet_deal_view_flag,
930              p_internet_claims_flag  => l_trade_profile_rec.internet_claims_flag,
931              p_autopay_periodicity  => l_trade_profile_rec.autopay_periodicity,
932              p_autopay_periodicity_type  => l_trade_profile_rec.autopay_periodicity_type,
933              p_payment_method  => p_trade_profile_rec.payment_method,
934              p_discount_type  => l_trade_profile_rec.discount_type,
935              p_cust_account_id  => l_trade_profile_rec.cust_account_id,
936              p_cust_acct_site_id  => l_trade_profile_rec.cust_acct_site_id,
937              p_vendor_id  => l_trade_profile_rec.vendor_id,
938              p_vendor_site_id  => l_trade_profile_rec.vendor_site_id,
939              p_vendor_site_code  => l_trade_profile_rec.vendor_site_code,
940              p_context  => l_trade_profile_rec.context,
941              p_attribute_category  => l_trade_profile_rec.attribute_category,
942              p_attribute1  => l_trade_profile_rec.attribute1,
943              p_attribute2  => l_trade_profile_rec.attribute2,
944              p_attribute3  => l_trade_profile_rec.attribute3,
945              p_attribute4  => l_trade_profile_rec.attribute4,
946              p_attribute5  => l_trade_profile_rec.attribute5,
947              p_attribute6  => p_trade_profile_rec.attribute6,
948              p_attribute7  => l_trade_profile_rec.attribute7,
949              p_attribute8  => l_trade_profile_rec.attribute8,
950              p_attribute9  => l_trade_profile_rec.attribute9,
951              p_attribute10  => l_trade_profile_rec.attribute10,
952              p_attribute11  => l_trade_profile_rec.attribute11,
953              p_attribute12  => l_trade_profile_rec.attribute12,
954              p_attribute13  => l_trade_profile_rec.attribute13,
955              p_attribute14  => l_trade_profile_rec.attribute14,
956              p_attribute15  => l_trade_profile_rec.attribute15,
957              p_org_id  => l_org_id,
958              p_days_due  => l_trade_profile_rec.days_due,
959     	     p_pos_write_off_threshold	=>	l_trade_profile_rec.pos_write_off_threshold,
960 	     p_neg_write_off_threshold	=>	l_trade_profile_rec.neg_write_off_threshold,
961 	     p_un_earned_pay_allow_to	=>	l_trade_profile_rec.un_earned_pay_allow_to,
962     	     p_un_earned_pay_thold_type	=>	l_trade_profile_rec.un_earned_pay_thold_type,
963 	     p_un_earned_pay_threshold	=>	l_trade_profile_rec.un_earned_pay_threshold,
964 	     p_un_earned_pay_thold_flag	=>	l_trade_profile_rec.un_earned_pay_thold_flag,
965     	     p_header_tolerance_calc_code	=>	l_trade_profile_rec.header_tolerance_calc_code,
966 	     p_header_tolerance_operand	=>	l_trade_profile_rec.header_tolerance_operand,
967 	     p_line_tolerance_calc_code	=>	l_trade_profile_rec.line_tolerance_calc_code,
968     	     p_line_tolerance_operand	=>	l_trade_profile_rec.line_tolerance_operand
969  );
970          -- set the return object version number
971          x_object_version_number := l_trade_profile_rec.object_version_number;
972       END IF; -- end of check for create or update of trade profile
973    -- End of API body.
974    -- Standard check for p_commit
975    IF FND_API.to_Boolean( p_commit )
976    THEN
977       COMMIT WORK;
978    END IF;
979    -- Debug Message
980    IF g_debug THEN
981       OZF_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
982    END IF;
983    -- Standard call to get message count and if count is 1, get message info.
984    FND_MSG_PUB.Count_And_Get
985      (p_count          =>   x_msg_count,
986       p_data           =>   x_msg_data
987   );
988 EXCEPTION
989    WHEN OZF_Utility_PVT.resource_locked THEN
990       x_return_status := FND_API.g_ret_sts_error;
991       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
992          FND_MESSAGE.set_name('OZF', 'OZF_API_RESOURCE_LOCKED');
993          FND_MSG_PUB.add;
994       END IF;
995    WHEN FND_API.G_EXC_ERROR THEN
996      ROLLBACK TO UPDATE_Trade_Profile_PVT;
997      x_return_status := FND_API.G_RET_STS_ERROR;
998      -- Standard call to get message count and if count=1, get the message
999      FND_MSG_PUB.Count_And_Get (
1000          p_encoded => FND_API.G_FALSE,
1001          p_count   => x_msg_count,
1002          p_data    => x_msg_data
1003                                );
1004    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1005       ROLLBACK TO UPDATE_Trade_Profile_PVT;
1006       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1007       -- Standard call to get message count and if count=1, get the message
1008       FND_MSG_PUB.Count_And_Get (
1009           p_encoded => FND_API.G_FALSE,
1010           p_count => x_msg_count,
1011           p_data  => x_msg_data
1012                                  );
1013    WHEN OTHERS THEN
1014       ROLLBACK TO UPDATE_Trade_Profile_PVT;
1015       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1016       IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1017       THEN
1018          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1019       END IF;
1020       -- Standard call to get message count and if count=1, get the message
1021       FND_MSG_PUB.Count_And_Get (
1022             p_encoded => FND_API.G_FALSE,
1023             p_count => x_msg_count,
1024             p_data  => x_msg_data
1025       );
1026 End Update_Trade_Profile;
1027 -------------------------------------------------------------------------------
1028 PROCEDURE Delete_Trade_Profile(
1029    p_api_version_number         IN   NUMBER,
1030    p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
1031    p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
1032    p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
1033    x_return_status              OUT NOCOPY  VARCHAR2,
1034    x_msg_count                  OUT NOCOPY  NUMBER,
1035    x_msg_data                   OUT NOCOPY  VARCHAR2,
1036    p_trade_profile_id                   IN  NUMBER,
1037    p_object_version_number      IN   NUMBER
1038                               )
1039 
1040 IS
1041 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Delete_Trade_Profile';
1042 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
1043 l_object_version_number     NUMBER;
1044 
1045 BEGIN
1046    -- Standard Start of API savepoint
1047    SAVEPOINT DELETE_Trade_Profile_PVT;
1048    -- Standard call to check for call compatibility.
1049    IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1050                                            p_api_version_number,
1051                                            l_api_name,
1052                                            G_PKG_NAME)
1053    THEN
1054       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1055    END IF;
1056    -- Initialize message list if p_init_msg_list is set to TRUE.
1057    IF FND_API.to_Boolean( p_init_msg_list )
1058    THEN
1059      FND_MSG_PUB.initialize;
1060       END IF;
1061    -- Debug Message
1062    IF g_debug THEN
1063       OZF_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
1064    END IF;
1065    -- Initialize API return status to SUCCESS
1066    x_return_status := FND_API.G_RET_STS_SUCCESS;
1067    -- Api body
1068    --
1069    -- Debug Message
1070    IF g_debug THEN
1071       OZF_UTILITY_PVT.debug_message( 'Private API: Calling delete table handler');
1072    END IF;
1073    -- Invoke table handler(OZF_cust_trd_prfls_PKG.Delete_Row)
1074    OZF_cust_trd_prfls_PKG.Delete_Row(
1075           p_TRADE_PROFILE_ID  => p_TRADE_PROFILE_ID);
1076    -- End of API body
1077    -- Standard check for p_commit
1078    IF FND_API.to_Boolean( p_commit )
1079    THEN
1080       COMMIT WORK;
1081    END IF;
1082    -- Debug Message
1083    IF g_debug THEN
1084       OZF_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
1085    END IF;
1086    -- Standard call to get message count and if count is 1, get message info.
1087    FND_MSG_PUB.Count_And_Get
1088       (p_count          =>   x_msg_count,
1089        p_data           =>   x_msg_data
1090        );
1091 EXCEPTION
1092    WHEN OZF_Utility_PVT.resource_locked THEN
1093      x_return_status := FND_API.g_ret_sts_error;
1094      IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1095         FND_MESSAGE.set_name('OZF', 'OZF_API_RESOURCES_LOCKED');
1096         FND_MSG_PUB.add;
1097      END IF;
1098    WHEN FND_API.G_EXC_ERROR THEN
1099      ROLLBACK TO DELETE_Trade_Profile_PVT;
1100      x_return_status := FND_API.G_RET_STS_ERROR;
1101      -- Standard call to get message count and if count=1, get the message
1102      FND_MSG_PUB.Count_And_Get (
1103             p_encoded => FND_API.G_FALSE,
1104             p_count   => x_msg_count,
1105             p_data    => x_msg_data
1106                                );
1107 
1108    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1109       ROLLBACK TO DELETE_Trade_Profile_PVT;
1110       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1111       -- Standard call to get message count and if count=1, get the message
1112       FND_MSG_PUB.Count_And_Get (
1113             p_encoded => FND_API.G_FALSE,
1114             p_count => x_msg_count,
1115             p_data  => x_msg_data
1116                                 );
1117    WHEN OTHERS THEN
1118       ROLLBACK TO DELETE_Trade_Profile_PVT;
1119       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1120       IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1121       THEN
1122          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1123       END IF;
1124       -- Standard call to get message count and if count=1, get the message
1125       FND_MSG_PUB.Count_And_Get (
1126             p_encoded => FND_API.G_FALSE,
1127             p_count => x_msg_count,
1128             p_data  => x_msg_data
1129                                 );
1130 End Delete_Trade_Profile;
1131 -------------------------------------------------------------------------------
1132 PROCEDURE Lock_Trade_Profile(
1133    p_api_version_number         IN   NUMBER,
1134    p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
1135    x_return_status              OUT NOCOPY  VARCHAR2,
1136    x_msg_count                  OUT NOCOPY  NUMBER,
1137    x_msg_data                   OUT NOCOPY  VARCHAR2,
1138    p_trade_profile_id                   IN  NUMBER,
1139    p_object_version             IN  NUMBER
1140 )
1141  IS
1142 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Lock_Trade_Profile';
1143 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
1144 L_FULL_NAME                 CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
1145 l_TRADE_PROFILE_ID                  NUMBER;
1146 
1147 CURSOR c_Trade_Profile IS
1148    SELECT TRADE_PROFILE_ID
1149    FROM ozf_cust_trd_prfls_all
1150    WHERE TRADE_PROFILE_ID = p_TRADE_PROFILE_ID
1151    AND object_version_number = p_object_version
1152    FOR UPDATE NOWAIT;
1153 BEGIN
1154    -- Debug Message
1155    IF g_debug THEN
1156       OZF_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
1157    END IF;
1158 
1159    -- Initialize message list if p_init_msg_list is set to TRUE.
1160       IF FND_API.to_Boolean( p_init_msg_list )
1161       THEN
1162          FND_MSG_PUB.initialize;
1163       END IF;
1164 
1165       -- Standard call to check for call compatibility.
1166       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1167                                            p_api_version_number,
1168                                            l_api_name,
1169                                            G_PKG_NAME)
1170       THEN
1171           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1172       END IF;
1173       -- Initialize API return status to SUCCESS
1174       x_return_status := FND_API.G_RET_STS_SUCCESS;
1175 ------------------------ lock -------------------------
1176    IF g_debug THEN
1177       OZF_Utility_PVT.debug_message(l_full_name||': start');
1178    END IF;
1179    OPEN c_Trade_Profile;
1180    FETCH c_Trade_Profile INTO l_TRADE_PROFILE_ID;
1181    IF (c_Trade_Profile%NOTFOUND) THEN
1182      CLOSE c_Trade_Profile;
1183      IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1184        FND_MESSAGE.set_name('OZF', 'OZF_API_RECORD_NOT_FOUND');
1185        FND_MSG_PUB.add;
1186      END IF;
1187      RAISE FND_API.g_exc_error;
1188    END IF;
1189    CLOSE c_Trade_Profile;
1190  -------------------- finish --------------------------
1191    FND_MSG_PUB.count_and_get(
1192      p_encoded => FND_API.g_false,
1193      p_count   => x_msg_count,
1194      p_data    => x_msg_data);
1195    IF g_debug THEN
1196       OZF_Utility_PVT.debug_message(l_full_name ||': end');
1197    END IF;
1198 EXCEPTION
1199    WHEN OZF_Utility_PVT.resource_locked THEN
1200       x_return_status := FND_API.g_ret_sts_error;
1201       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1202          FND_MESSAGE.set_name('OZF', 'OZF_API_RESOURCES LOCKED');
1203          FND_MSG_PUB.add;
1204       END IF;
1205      WHEN FND_API.G_EXC_ERROR THEN
1206      ROLLBACK TO LOCK_Trade_Profile_PVT;
1207      x_return_status := FND_API.G_RET_STS_ERROR;
1208      -- Standard call to get message count and if count=1, get the message
1209      FND_MSG_PUB.Count_And_Get (
1210             p_encoded => FND_API.G_FALSE,
1211             p_count   => x_msg_count,
1212             p_data    => x_msg_data
1213      );
1214    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1215      ROLLBACK TO LOCK_Trade_Profile_PVT;
1216      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1217      -- Standard call to get message count and if count=1, get the message
1218      FND_MSG_PUB.Count_And_Get (
1219        p_encoded => FND_API.G_FALSE,
1220        p_count => x_msg_count,
1221        p_data  => x_msg_data
1222      );
1223    WHEN OTHERS THEN
1224      ROLLBACK TO LOCK_Trade_Profile_PVT;
1225      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1226      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1227      THEN
1228         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1229      END IF;
1230      -- Standard call to get message count and if count=1, get the message
1231      FND_MSG_PUB.Count_And_Get (
1232        p_encoded => FND_API.G_FALSE,
1233        p_count => x_msg_count,
1234        p_data  => x_msg_data
1235      );
1236 End Lock_Trade_Profile;
1237 -------------------------------------------------------------------------------
1238 PROCEDURE check_trade_profile_uk_items(
1239    p_trade_profile_rec          IN   trade_profile_rec_type,
1240    p_validation_mode            IN  VARCHAR2 := JTF_PLSQL_API.g_create,
1241    x_return_status              OUT NOCOPY VARCHAR2)
1242 IS
1243 l_valid_flag  VARCHAR2(1);
1244 l_CUST_ACCOUNT_ID  NUMBER;
1245 l_site_use_ID  NUMBER;
1246 l_party_id      NUMBER;
1247 
1248 --l_cust_dummy    NUMBER;
1249 l_site_dummy    NUMBER;
1250 l_party_dummy   NUMBER;
1251 
1252 --For R12.1 Enhancements
1253 -- one trade profile per cust account
1254 /*CURSOR c_cust_id_exists (l_id IN NUMBER) IS
1255 SELECT count(cust_account_id)
1256 FROM ozf_cust_trd_prfls
1257 WHERE CUST_ACCOUNT_ID = l_id;*/
1258 
1259 
1260 
1261 -- one trade profile per party (without cust account)
1262 CURSOR c_party_id_exists(l_id in NUMBER) IS
1263 SELECT count(party_id)
1264 FROM ozf_cust_trd_prfls
1265 WHERE CUST_ACCOUNT_ID is NULL
1266 AND   PARTY_ID = l_id;
1267 
1268 --For R12.1 Enhancements
1269 -- one trade profile per cust bill_to site
1270 CURSOR c_cust_site_use_exists (l_id IN NUMBER) IS
1271 SELECT count(site_use_id)
1272 FROM ozf_cust_trd_prfls
1273 WHERE site_use_id = l_id;
1274 
1275 BEGIN
1276    x_return_status := FND_API.g_ret_sts_success;
1277    IF p_validation_mode = JTF_PLSQL_API.g_create THEN
1278       -- check if customer account id is unique
1279       IF p_trade_profile_rec.site_use_id = FND_API.g_miss_num OR
1280          p_trade_profile_rec.site_use_id is null
1281       THEN
1282          -- check if party without cust account id is unique
1283          IF p_trade_profile_rec.party_id = FND_API.g_miss_num OR
1284             p_trade_profile_rec.party_id is null
1285          THEN
1286             -- raise error
1287             l_valid_flag := FND_API.g_false;
1288          ELSE
1289             l_party_dummy := NULL;
1290             l_party_id := p_trade_profile_rec.party_id;
1291             OPEN c_party_id_exists(l_party_id);
1292                FETCH c_party_id_exists INTO l_party_dummy;
1293             CLOSE c_party_id_exists;
1294             IF l_party_dummy <> 0 THEN
1295 	  IF g_debug THEN
1296 	     OZF_UTILITY_PVT.debug_message('no cust or party 2'|| l_party_dummy ||l_valid_flag);
1297 	  END IF;
1298               -- l_valid_flag := FND_API.g_false;
1299 	    END IF;
1300          END IF;
1301       ELSE
1302         --For R12.1 Enhancements
1303          /*l_cust_dummy := NULL;
1304          l_CUST_ACCOUNT_ID := p_trade_profile_rec.cust_account_id;*/
1305 
1306          l_site_dummy := NULL;
1307          l_site_use_id := p_trade_profile_rec.site_use_id;
1308 
1309          OPEN c_cust_site_use_exists(l_CUST_ACCOUNT_ID);
1310             FETCH c_cust_site_use_exists INTO l_site_dummy;
1311          CLOSE c_cust_site_use_exists;
1312 	OZF_UTILITY_PVT.debug_message('no l_site_dummy '|| l_site_dummy );
1313          IF l_site_dummy <> 0 THEN
1314             l_valid_flag := FND_API.g_false;
1315          END IF;
1316       END IF;
1317    ELSE
1318       l_valid_flag :=  FND_API.g_true;
1319    END IF;
1320 
1321    IF l_valid_flag = FND_API.g_false THEN
1322       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1323          FND_MESSAGE.set_name('OZF', 'OZF_TRADE_CUST_DUPLICATE');
1324          FND_MSG_PUB.add;
1325       END IF;
1326       x_return_status := FND_API.G_RET_STS_ERROR;
1327    END IF;
1328 END check_trade_profile_uk_items;
1329 -------------------------------------------------------------------------------
1330 PROCEDURE check_trade_profile_req_items(
1331    p_trade_profile_rec          IN  trade_profile_rec_type,
1332    p_validation_mode            IN VARCHAR2 := JTF_PLSQL_API.g_create,
1333    x_return_status              OUT NOCOPY VARCHAR2
1334                                        )
1335 IS
1336 l_check1                      NUMBER;
1337 l_check2                      NUMBER;
1338 l_party_id                    NUMBER;
1339 l_trade_profile_rec           trade_profile_rec_type;
1340 
1341 CURSOR c_party_id (c_id IN NUMBER) IS
1342 SELECT party_id
1343 from   HZ_CUST_ACCOUNTS
1344 WHERE  cust_account_id = c_id;
1345 
1346 BEGIN
1347    x_return_status := FND_API.g_ret_sts_success;
1348    -- checking if party id exists
1349    OPEN c_party_id(p_trade_profile_rec.cust_account_id);
1350       FETCH c_party_id INTO l_party_id;
1351    CLOSE c_party_id;
1352 
1353    IF p_trade_profile_rec.party_id = FND_API.g_miss_num OR
1354       p_trade_profile_rec.party_id IS NULL THEN
1355       IF p_trade_profile_rec.site_use_id = FND_API.g_miss_num OR --For R12.1 Enhancements
1356          p_trade_profile_rec.site_use_id IS NULL
1357       THEN
1358          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1359             FND_MESSAGE.set_name('OZF', 'OZF_TRADE_PARTY_MISSING');
1360             FND_MSG_PUB.add;
1361          END IF;
1362          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1363       END IF;
1364    END IF;
1365    OZF_UTILITY_PVT.debug_message('p_trade_profile_rec.payment_method : ' || p_trade_profile_rec.payment_method);
1366    -- Fix for ER#9453443
1367    IF p_trade_profile_rec.payment_method IN ('CHECK','EFT','WIRE','AP_DEBIT','AP_DEFAULT') THEN
1368    IF p_trade_profile_rec.vendor_id = FND_API.g_miss_num OR
1369       p_trade_profile_rec.vendor_id IS NULL THEN
1370       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1371          FND_MESSAGE.set_name('OZF', 'OZF_TRADE_VENDOR_MISSING');
1372          FND_MSG_PUB.add;
1373      END IF;
1374      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1375    END IF;
1376    IF p_trade_profile_rec.vendor_site_id = FND_API.g_miss_num OR
1377       p_trade_profile_rec.vendor_site_id IS NULL
1378    THEN
1379       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1380          FND_MESSAGE.set_name('OZF', 'OZF_TRADE_VENSITE_MISSING');
1381          FND_MSG_PUB.add;
1382       END IF;
1383       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1384    END IF;
1385    END IF;
1386    IF p_trade_profile_rec.autopay_flag = FND_API.g_miss_char OR
1387       p_trade_profile_rec.autopay_flag IS NULL
1388    THEN
1389        IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1390           FND_MESSAGE.set_name('OZF', 'OZF_TRADE_AUTO_MISSING ');
1391           FND_MSG_PUB.add;
1392        END IF;
1393        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1394    END IF;
1395 
1396    -- defaulted to F in the create api
1397    IF p_trade_profile_rec.autopay_flag = FND_API.g_miss_char OR
1398       p_trade_profile_rec.internet_deal_view_flag IS NULL
1399    THEN
1400       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1401          FND_MESSAGE.set_name('OZF', 'OZF_TRADE_INTERNET_MISSING');
1402          FND_MSG_PUB.add;
1403       END IF;
1404       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1405    END IF;
1406    IF p_trade_profile_rec.autopay_flag = FND_API.g_miss_char OR
1407       p_trade_profile_rec.print_flag IS NULL
1408    THEN
1409       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1410          FND_MESSAGE.set_name('OZF', 'OZF_TRADE_PRINT_MISSING');
1411          FND_MSG_PUB.add;
1412       END IF;
1413       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1414    END IF;
1415 
1416    -- bill to site requitred for credit memos
1417    --nepanda : fix for bug # 9539273 - issue #2
1418 /*   IF p_trade_profile_rec.payment_method = 'CREDIT_MEMO' THEN
1419       IF p_trade_profile_rec.site_use_id IS NULL OR
1420          p_trade_profile_rec.site_use_id = FND_API.G_MISS_NUM
1421       THEN
1422          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1423             FND_MESSAGE.set_name('OZF', 'OZF_TRADE_SITE_MISSING');
1424             FND_MSG_PUB.add;
1425          END IF;
1426          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1427       END IF;
1428    END IF;*/
1429 
1430    /*
1431    IF p_trade_profile_rec.autopay_periodicity IS NULL AND
1432       p_trade_profile_rec.autopay_periodicity_type IS NULL
1433    THEN
1434       IF p_trade_profile_rec.claim_currency IS NULL AND
1435          p_trade_profile_rec.claim_threshold IS NULL
1436       THEN
1437          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1438             FND_MESSAGE.set_name('OZF', 'ERROR1');
1439             FND_MSG_PUB.add;
1440          END IF;
1441          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1442       END IF;
1443    ELSE
1444         IF p_trade_profile_rec.autopay_periodicity IS NULL OR
1445            p_trade_profile_rec.autopay_periodicity_type IS NULL
1446 	THEN
1447 	     IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1448                  FND_MESSAGE.set_name('OZF', 'ERROR1');
1449                  FND_MSG_PUB.add;
1450               END IF;
1451 	      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1452         END IF;
1453    END IF;
1454 
1455    IF p_trade_profile_rec.claim_currency IS NULL AND
1456       p_trade_profile_rec.claim_threshold IS NULL
1457    THEN
1458       IF p_trade_profile_rec.autopay_periodicity IS NULL AND
1459          p_trade_profile_rec.autopay_periodicity_type IS NULL
1460       THEN
1461          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1462             FND_MESSAGE.set_name('OZF', 'ERROR3');
1463             FND_MSG_PUB.add;
1464          END IF;
1465          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1466       END IF;
1467    ELSE
1468         IF p_trade_profile_rec.claim_currency IS NULL OR
1469            p_trade_profile_rec.claim_threshold IS NULL
1470         THEN
1471            IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1472                  FND_MESSAGE.set_name('OZF', 'ERROR4');
1473                  FND_MSG_PUB.add;
1474            END IF;
1475            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1476         END IF;
1477    END IF;
1478    */
1479 END check_trade_profile_req_items;
1480 -------------------------------------------------------------------------------
1481 PROCEDURE check_trade_profile_FK_items(
1482    p_trade_profile_rec IN trade_profile_rec_type,
1483    x_return_status OUT NOCOPY VARCHAR2)
1484 IS
1485 BEGIN
1486    x_return_status := FND_API.g_ret_sts_success;
1487 END check_trade_profile_FK_items;
1488 
1489 PROCEDURE check_trade_profile_Lk_items(
1490    p_trade_profile_rec IN trade_profile_rec_type,
1491    x_return_status OUT NOCOPY VARCHAR2
1492 )
1493 IS
1494 BEGIN
1495    x_return_status := FND_API.g_ret_sts_success;
1496 END check_trade_profile_Lk_items;
1497 
1498 
1499 
1500 -- PROCEDURE
1501 --    Check_Batch_Tolerances
1502 --
1503 -- HISTORY
1504 --    05/18/2004  upoluri  Create.
1505 ---------------------------------------------------------------------
1506 PROCEDURE Check_Batch_Tolerances(
1507    p_trade_profile_rec IN  trade_profile_rec_type
1508   ,x_return_status     OUT NOCOPY VARCHAR2
1509 )
1510 IS
1511 
1512 BEGIN
1513    x_return_status := FND_API.g_ret_sts_success;
1514 
1515    IF (p_trade_profile_rec.header_tolerance_calc_code is null
1516          AND p_trade_profile_rec.header_tolerance_operand is not null)
1517          THEN
1518                IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1519                THEN
1520                   FND_MESSAGE.set_name('OZF', 'OZF_CLAIM_BATCH_TOL_TYPE_REQ');
1521                   FND_MSG_PUB.add;
1522               END IF;
1523               x_return_status := FND_API.g_ret_sts_error;
1524               RETURN;
1525       ELSIF (p_trade_profile_rec.header_tolerance_calc_code is not null
1526          AND p_trade_profile_rec.header_tolerance_operand is null)
1527          THEN
1528                IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1529                THEN
1530                   FND_MESSAGE.set_name('OZF', 'OZF_CLAIM_BATCH_TOL_VAL_REQ');
1531                   FND_MSG_PUB.add;
1532               END IF;
1533               x_return_status := FND_API.g_ret_sts_error;
1534               RETURN;
1535       END IF;
1536 
1537 
1538 
1539       IF (p_trade_profile_rec.line_tolerance_calc_code is null
1540          AND p_trade_profile_rec.line_tolerance_operand is not null )
1541          THEN
1542                IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1543                THEN
1544                   FND_MESSAGE.set_name('OZF', 'OZF_CLAIM_LINE_TOL_TYPE_REQ');
1545                   FND_MSG_PUB.add;
1546               END IF;
1547               x_return_status := FND_API.g_ret_sts_error;
1548               RETURN;
1549       ELSIF (p_trade_profile_rec.line_tolerance_calc_code is not null
1550          AND p_trade_profile_rec.line_tolerance_operand is null)
1551          THEN
1552                IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1553                THEN
1554                   FND_MESSAGE.set_name('OZF', 'OZF_CLAIM_LINE_TOL_VAL_REQ');
1555                   FND_MSG_PUB.add;
1556               END IF;
1557               x_return_status := FND_API.g_ret_sts_error;
1558               RETURN;
1559       END IF;
1560 
1561 END Check_Batch_Tolerances;
1562 
1563 
1564 
1565 
1566 -------------------------------------------------------------------------------
1567 PROCEDURE Check_trade_profile_Items (
1568    p_trade_profile_rec     IN    trade_profile_rec_type,
1569    p_validation_mode  IN    VARCHAR2,
1570    x_return_status    OUT NOCOPY   VARCHAR2
1571    )
1572 IS
1573 BEGIN
1574    -- Check Items Uniqueness API calls
1575    check_trade_profile_uk_items(
1576       p_trade_profile_rec => p_trade_profile_rec,
1577       p_validation_mode => p_validation_mode,
1578       x_return_status => x_return_status);
1579    IF x_return_status <> FND_API.g_ret_sts_success THEN
1580       RETURN;
1581    END IF;
1582    -- Check Items Required/NOT NULL API calls
1583    check_trade_profile_req_items(
1584       p_trade_profile_rec => p_trade_profile_rec,
1585       p_validation_mode => p_validation_mode,
1586       x_return_status => x_return_status);
1587    IF x_return_status <> FND_API.g_ret_sts_success THEN
1588       RETURN;
1589    END IF;
1590    -- Check Items Foreign Keys API calls
1591    check_trade_profile_FK_items(
1592       p_trade_profile_rec => p_trade_profile_rec,
1593       x_return_status => x_return_status);
1594    IF x_return_status <> FND_API.g_ret_sts_success THEN
1595       RETURN;
1596    END IF;
1597    -- Check Items Lookups
1598    check_trade_profile_Lk_items(
1599       p_trade_profile_rec => p_trade_profile_rec,
1600       x_return_status => x_return_status);
1601    IF x_return_status <> FND_API.g_ret_sts_success THEN
1602       RETURN;
1603    END IF;
1604 
1605 
1606    --Check the tolerances.
1607    Check_Batch_Tolerances(
1608       p_trade_profile_rec =>  p_trade_profile_rec,
1609       x_return_status      =>  x_return_status
1610     );
1611    IF x_return_status <> FND_API.g_ret_sts_success THEN
1612       RETURN;
1613    END IF;
1614 END Check_trade_profile_Items;
1615 -------------------------------------------------------------------------------
1616 PROCEDURE Validate_trade_profile(
1617    p_api_version_number         IN   NUMBER,
1618    p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
1619    p_validation_level           IN   NUMBER := FND_API.G_VALID_LEVEL_FULL,
1620    p_trade_profile_rec          IN   trade_profile_rec_type,
1621    x_return_status              OUT NOCOPY  VARCHAR2,
1622    x_msg_count                  OUT NOCOPY  NUMBER,
1623    x_msg_data                   OUT NOCOPY  VARCHAR2
1624    )
1625 IS
1626 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Validate_Trade_Profile';
1627 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
1628 l_object_version_number     NUMBER;
1629 l_trade_profile_rec  OZF_Trade_Profile_PVT.trade_profile_rec_type;
1630 
1631 BEGIN
1632       -- Standard Start of API savepoint
1633       SAVEPOINT VALIDATE_Trade_Profile_PVT;
1634       -- Standard call to check for call compatibility.
1635       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1636                                            p_api_version_number,
1637                                            l_api_name,
1638                                            G_PKG_NAME)
1639       THEN
1640          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1641       END IF;
1642       -- Initialize message list if p_init_msg_list is set to TRUE.
1643       IF FND_API.to_Boolean( p_init_msg_list )
1644       THEN
1645          FND_MSG_PUB.initialize;
1646       END IF;
1647       IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1648          Check_trade_profile_Items(
1649                          p_trade_profile_rec        => p_trade_profile_rec,
1650                          p_validation_mode   => JTF_PLSQL_API.g_create,
1651                          x_return_status     => x_return_status
1652                          );
1653          IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1654             RAISE FND_API.G_EXC_ERROR;
1655          ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1656             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1657          END IF;
1658       END IF;
1659 
1660       IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1661          Validate_trade_profile_Rec(
1662            p_api_version_number     => 1.0,
1663            p_init_msg_list          => FND_API.G_FALSE,
1664            x_return_status          => x_return_status,
1665            x_msg_count              => x_msg_count,
1666            x_msg_data               => x_msg_data,
1667            p_trade_profile_rec      => p_trade_profile_rec);
1668          IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1669             RAISE FND_API.G_EXC_ERROR;
1670          ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1671             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1672          END IF;
1673       END IF;
1674 
1675       -- Initialize API return status to SUCCESS
1676       x_return_status := FND_API.G_RET_STS_SUCCESS;
1677       -- Standard call to get message count and if count is 1, get message info.
1678       FND_MSG_PUB.Count_And_Get
1679         (p_count          =>   x_msg_count,
1680          p_data           =>   x_msg_data
1681         );
1682 EXCEPTION
1683    WHEN OZF_Utility_PVT.resource_locked THEN
1684       x_return_status := FND_API.g_ret_sts_error;
1685       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1686             FND_MESSAGE.set_name('OZF', 'OZF_API_RESOURCE_LOCKED ');
1687             FND_MSG_PUB.add;
1688       END IF;
1689    WHEN FND_API.G_EXC_ERROR THEN
1690       ROLLBACK TO VALIDATE_Trade_Profile_PVT;
1691       x_return_status := FND_API.G_RET_STS_ERROR;
1692       -- Standard call to get message count and if count=1, get the message
1693       FND_MSG_PUB.Count_And_Get (
1694             p_encoded => FND_API.G_FALSE,
1695             p_count   => x_msg_count,
1696             p_data    => x_msg_data
1697       );
1698    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1699      ROLLBACK TO VALIDATE_Trade_Profile_PVT;
1700      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1701      -- Standard call to get message count and if count=1, get the message
1702      FND_MSG_PUB.Count_And_Get (
1703             p_encoded => FND_API.G_FALSE,
1704             p_count => x_msg_count,
1705             p_data  => x_msg_data
1706      );
1707    WHEN OTHERS THEN
1708      ROLLBACK TO VALIDATE_Trade_Profile_PVT;
1709      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1710      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1711      THEN
1712         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1713      END IF;
1714      -- Standard call to get message count and if count=1, get the message
1715      FND_MSG_PUB.Count_And_Get (
1716             p_encoded => FND_API.G_FALSE,
1717             p_count => x_msg_count,
1718             p_data  => x_msg_data
1719      );
1720 End Validate_Trade_Profile;
1721 -------------------------------------------------------------------------------
1722 PROCEDURE Validate_trade_profile_rec(
1723    p_api_version_number         IN   NUMBER,
1724    p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
1725    x_return_status              OUT NOCOPY  VARCHAR2,
1726    x_msg_count                  OUT NOCOPY  NUMBER,
1727    x_msg_data                   OUT NOCOPY  VARCHAR2,
1728    p_trade_profile_rec               IN    trade_profile_rec_type
1729                                      )
1730 IS
1731 BEGIN
1732    -- Initialize message list if p_init_msg_list is set to TRUE.
1733    IF FND_API.to_Boolean( p_init_msg_list )
1734    THEN
1735       FND_MSG_PUB.initialize;
1736    END IF;
1737 
1738    -- Initialize API return status to SUCCESS
1739    x_return_status := FND_API.G_RET_STS_SUCCESS;
1740 
1741    -- Hint: Validate data
1742    -- If data not valid
1743    -- THEN
1744    -- x_return_status := FND_API.G_RET_STS_ERROR;
1745    -- Debug Message
1746    IF g_debug THEN
1747       OZF_UTILITY_PVT.debug_message('Private API: Validate_dm_model_rec');
1748    END IF;
1749    -- Standard call to get message count and if count is 1, get message info.
1750    FND_MSG_PUB.Count_And_Get
1751       (p_count          =>   x_msg_count,
1752        p_data           =>   x_msg_data
1753       );
1754 END Validate_trade_profile_Rec;
1755 -------------------------------------------------------------------------------
1756 END OZF_Trade_Profile_PVT;