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