DBA Data[Home] [Help]

PACKAGE BODY: APPS.HZ_CUST_ACCT_BO_PVT

Source


1 PACKAGE BODY hz_cust_acct_bo_pvt AS
2 /*$Header: ARHBCAVB.pls 120.12.12010000.2 2009/06/25 22:14:05 awu ship $ */
3 
4   -- PRIVATE PROCEDURE assign_bank_acct_use_rec
5   --
6   -- DESCRIPTION
7   --     Assign attribute value from bank account use object to plsql record.
8   --
9   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
10   --
11   -- ARGUMENTS
12   --   IN:
13   --     p_bank_acct_use_obj  Bank account use object.
14   --     p_party_id           Party Id.
15   --     p_cust_acct_id       Customer account Id.
16   --     p_site_use_id        Customer account site use Id.
17   --   IN/OUT:
18   --     px_payer_context_rec Payer context plsql record.
19   --     px_pmtinstrument_rec Payment instrument plsql record.
20   --
21   -- NOTES
22   --
23   -- MODIFICATION HISTORY
24   --
25   --   14-DEC-2004    Arnold Ng          Created.
26 
27   PROCEDURE assign_bank_acct_use_rec(
28     p_bank_acct_use_obj          IN            HZ_BANK_ACCT_USE_OBJ,
29     p_party_id                   IN            NUMBER,
30     p_cust_acct_id               IN            NUMBER,
31     p_site_use_id                IN            NUMBER,
32     px_payer_context_rec         IN OUT NOCOPY IBY_FNDCPT_COMMON_PUB.PayerContext_Rec_Type,
33     px_pmtinstrument_rec         IN OUT NOCOPY IBY_FNDCPT_SETUP_PUB.PmtInstrAssignment_Rec_Type
34   );
35 
36   -- PRIVATE PROCEDURE assign_payment_method_rec
37   --
38   -- DESCRIPTION
39   --     Assign attribute value from payment method object to plsql record.
40   --
41   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
42   --
43   -- ARGUMENTS
44   --   IN:
45   --     p_payment_method_obj Payment method object.
46   --     p_cust_acct_id       Customer account Id.
47   --     p_site_use_id        Customer account site use Id.
48   --   IN/OUT:
49   --     px_payment_method_rec Payment method plsql record.
50   --
51   -- NOTES
52   --
53   -- MODIFICATION HISTORY
54   --
55   --   14-DEC-2004    Arnold Ng          Created.
56 
57   PROCEDURE assign_payment_method_rec(
58     p_payment_method_obj         IN            HZ_PAYMENT_METHOD_OBJ,
59     p_cust_acct_id               IN            NUMBER,
60     p_site_use_id                IN            NUMBER,
61     px_payment_method_rec        IN OUT NOCOPY HZ_PAYMENT_METHOD_PUB.PAYMENT_METHOD_REC_TYPE
62   );
63 
64   -- PRIVATE PROCEDURE assign_cust_profile_amt_rec
65   --
66   -- DESCRIPTION
67   --     Assign attribute value from customer profile amount object to plsql record.
68   --
69   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
70   --
71   -- ARGUMENTS
72   --   IN:
73   --     p_cust_profile_amt_obj Customer profile amount object.
74   --     p_cust_profile_id    Customer profile Id.
75   --     p_cust_acct_id       Customer account Id.
76   --     p_site_use_id        Customer account site use Id.
77   --   IN/OUT:
78   --     px_cust_profile_amt_rec  Customer profile amount plsql record.
79   --
80   -- NOTES
81   --
82   -- MODIFICATION HISTORY
83   --
84   --   14-DEC-2004    Arnold Ng          Created.
85 
86   PROCEDURE assign_cust_profile_amt_rec(
87     p_cust_profile_amt_obj       IN            HZ_CUST_PROFILE_AMT_OBJ,
88     p_cust_profile_id            IN            NUMBER,
89     p_cust_acct_id               IN            NUMBER,
90     p_site_use_id                IN            NUMBER,
91     px_cust_profile_amt_rec      IN OUT NOCOPY HZ_CUSTOMER_PROFILE_V2PUB.CUST_PROFILE_AMT_REC_TYPE
92   );
93 
94   -- PRIVATE PROCEDURE assign_cust_acct_relate_rec
95   --
96   -- DESCRIPTION
97   --     Assign attribute value from customer account relationship object to plsql record.
98   --
99   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
100   --
101   -- ARGUMENTS
102   --   IN:
103   --     p_cust_acct_relate_obj   Customer account relationship object.
104   --     p_cust_acct_id           Customer account Id.
105   --     p_related_cust_acct_id   Related customer account Id.
106   --   IN/OUT:
107   --     px_cust_acct_relate_rec  Customer account relationship plsql record.
108   --
109   -- NOTES
110   --
111   -- MODIFICATION HISTORY
112   --
113   --   14-DEC-2004    Arnold Ng          Created.
114 
115   PROCEDURE assign_cust_acct_relate_rec(
116     p_cust_acct_relate_obj       IN            HZ_CUST_ACCT_RELATE_OBJ,
117     p_cust_acct_id               IN            NUMBER,
118     p_related_cust_acct_id       IN            NUMBER,
119     px_cust_acct_relate_rec      IN OUT NOCOPY HZ_CUST_ACCOUNT_V2PUB.CUST_ACCT_RELATE_REC_TYPE
120   );
121 
122   -- PRIVATE PROCEDURE assign_bank_acct_use_rec
123   --
124   -- DESCRIPTION
125   --     Assign attribute value from bank account use object to plsql record.
126   --
127   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
128   --
129   -- ARGUMENTS
130   --   IN:
131   --     p_bank_acct_use_obj  Bank account use object.
132   --     p_party_id           Party Id.
133   --     p_cust_acct_id       Customer account Id.
134   --     p_site_use_id        Customer account site use Id.
135   --   IN/OUT:
136   --     px_payer_context_rec Payer context plsql record.
137   --     px_pmtinstrument_rec Payment instrument plsql record.
138   --
139   -- NOTES
140   --
141   -- MODIFICATION HISTORY
142   --
143   --   14-DEC-2004    Arnold Ng          Created.
144 
145   PROCEDURE assign_bank_acct_use_rec(
146     p_bank_acct_use_obj          IN            HZ_BANK_ACCT_USE_OBJ,
147     p_party_id                   IN            NUMBER,
148     p_cust_acct_id               IN            NUMBER,
149     p_site_use_id                IN            NUMBER,
150     px_payer_context_rec         IN OUT NOCOPY IBY_FNDCPT_COMMON_PUB.PayerContext_Rec_Type,
151     px_pmtinstrument_rec         IN OUT NOCOPY IBY_FNDCPT_SETUP_PUB.PmtInstrAssignment_Rec_Type
152   ) IS
153   BEGIN
154     px_pmtinstrument_rec.assignment_id := p_bank_acct_use_obj.bank_acct_use_id;
155     px_payer_context_rec.payment_function := p_bank_acct_use_obj.payment_function;
156     IF(p_site_use_id IS NOT NULL) THEN
157       px_payer_context_rec.org_type := p_bank_acct_use_obj.org_type;
158       px_payer_context_rec.org_id := p_bank_acct_use_obj.org_id;
159     ELSE
160       px_payer_context_rec.org_type := NULL;
161       px_payer_context_rec.org_id := NULL;
162     END IF;
163     px_payer_context_rec.party_id := p_party_id;
164     px_payer_context_rec.cust_account_id := p_cust_acct_id;
165     px_payer_context_rec.account_site_id := p_site_use_id;
166     px_pmtinstrument_rec.instrument.instrument_id := p_bank_acct_use_obj.instrument_id;
167     px_pmtinstrument_rec.instrument.instrument_type := p_bank_acct_use_obj.instrument_type;
168     px_pmtinstrument_rec.priority := p_bank_acct_use_obj.priority;
169     px_pmtinstrument_rec.start_date := p_bank_acct_use_obj.start_date;
170     px_pmtinstrument_rec.end_date := p_bank_acct_use_obj.end_date;
171   END assign_bank_acct_use_rec;
172 
173   -- PRIVATE PROCEDURE assign_payment_method_rec
174   --
175   -- DESCRIPTION
176   --     Assign attribute value from payment method object to plsql record.
177   --
178   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
179   --
180   -- ARGUMENTS
181   --   IN:
182   --     p_payment_method_obj Payment method object.
183   --     p_cust_acct_id       Customer account Id.
184   --     p_site_use_id        Customer account site use Id.
185   --   IN/OUT:
186   --     px_payment_method_rec Payment method plsql record.
187   --
188   -- NOTES
189   --
190   -- MODIFICATION HISTORY
191   --
192   --   14-DEC-2004    Arnold Ng          Created.
193 
194   PROCEDURE assign_payment_method_rec(
195     p_payment_method_obj         IN            HZ_PAYMENT_METHOD_OBJ,
196     p_cust_acct_id               IN            NUMBER,
197     p_site_use_id                IN            NUMBER,
198     px_payment_method_rec        IN OUT NOCOPY HZ_PAYMENT_METHOD_PUB.PAYMENT_METHOD_REC_TYPE
199   ) IS
200   BEGIN
201     px_payment_method_rec.cust_receipt_method_id := p_payment_method_obj.payment_method_id;
202     px_payment_method_rec.cust_account_id := p_cust_acct_id;
203     px_payment_method_rec.receipt_method_id := p_payment_method_obj.receipt_method_id;
204     px_payment_method_rec.primary_flag := p_payment_method_obj.primary_flag;
205     px_payment_method_rec.site_use_id := p_site_use_id;
206     px_payment_method_rec.start_date := p_payment_method_obj.start_date;
207     px_payment_method_rec.end_date := p_payment_method_obj.end_date;
208     px_payment_method_rec.attribute_category := p_payment_method_obj.attribute_category;
209     px_payment_method_rec.attribute1 := p_payment_method_obj.attribute1;
210     px_payment_method_rec.attribute2 := p_payment_method_obj.attribute2;
211     px_payment_method_rec.attribute3 := p_payment_method_obj.attribute3;
212     px_payment_method_rec.attribute4 := p_payment_method_obj.attribute4;
213     px_payment_method_rec.attribute5 := p_payment_method_obj.attribute5;
214     px_payment_method_rec.attribute6 := p_payment_method_obj.attribute6;
215     px_payment_method_rec.attribute7 := p_payment_method_obj.attribute7;
216     px_payment_method_rec.attribute8 := p_payment_method_obj.attribute8;
217     px_payment_method_rec.attribute9 := p_payment_method_obj.attribute9;
218     px_payment_method_rec.attribute10 := p_payment_method_obj.attribute10;
219     px_payment_method_rec.attribute11 := p_payment_method_obj.attribute11;
220     px_payment_method_rec.attribute12 := p_payment_method_obj.attribute12;
221     px_payment_method_rec.attribute13 := p_payment_method_obj.attribute13;
222     px_payment_method_rec.attribute14 := p_payment_method_obj.attribute14;
223     px_payment_method_rec.attribute15 := p_payment_method_obj.attribute15;
224   END assign_payment_method_rec;
225 
226   -- PRIVATE PROCEDURE assign_cust_profile_amt_rec
227   --
228   -- DESCRIPTION
229   --     Assign attribute value from customer profile amount object to plsql record.
230   --
231   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
232   --
233   -- ARGUMENTS
234   --   IN:
235   --     p_cust_profile_amt_obj Customer profile amount object.
236   --     p_cust_profile_id    Customer profile Id.
237   --     p_cust_acct_id       Customer account Id.
238   --     p_site_use_id        Customer account site use Id.
239   --   IN/OUT:
240   --     px_cust_profile_amt_rec  Customer profile amount plsql record.
241   --
242   -- NOTES
243   --
244   -- MODIFICATION HISTORY
245   --
246   --   14-DEC-2004    Arnold Ng          Created.
247 
248   PROCEDURE assign_cust_profile_amt_rec(
249     p_cust_profile_amt_obj       IN            HZ_CUST_PROFILE_AMT_OBJ,
250     p_cust_profile_id            IN            NUMBER,
251     p_cust_acct_id               IN            NUMBER,
252     p_site_use_id                IN            NUMBER,
253     px_cust_profile_amt_rec      IN OUT NOCOPY HZ_CUSTOMER_PROFILE_V2PUB.CUST_PROFILE_AMT_REC_TYPE
254   ) IS
255   BEGIN
256     px_cust_profile_amt_rec.cust_acct_profile_amt_id := p_cust_profile_amt_obj.cust_acct_profile_amt_id;
257     px_cust_profile_amt_rec.cust_account_profile_id  := p_cust_profile_id;
258     px_cust_profile_amt_rec.cust_account_id       := p_cust_acct_id;
259     px_cust_profile_amt_rec.currency_code         := p_cust_profile_amt_obj.currency_code;
260     px_cust_profile_amt_rec.trx_credit_limit := p_cust_profile_amt_obj.trx_credit_limit;
261     px_cust_profile_amt_rec.overall_credit_limit  := p_cust_profile_amt_obj.overall_credit_limit;
262     px_cust_profile_amt_rec.min_dunning_amount    := p_cust_profile_amt_obj.min_dunning_amount;
263     px_cust_profile_amt_rec.min_dunning_invoice_amount  := p_cust_profile_amt_obj.min_dunning_invoice_amount;
264     px_cust_profile_amt_rec.max_interest_charge   := p_cust_profile_amt_obj.max_interest_charge;
265     px_cust_profile_amt_rec.min_statement_amount  := p_cust_profile_amt_obj.min_statement_amount;
266     px_cust_profile_amt_rec.auto_rec_min_receipt_amount := p_cust_profile_amt_obj.auto_rec_min_receipt_amount;
267     px_cust_profile_amt_rec.interest_rate  := p_cust_profile_amt_obj.interest_rate;
268     px_cust_profile_amt_rec.min_fc_balance_amount := p_cust_profile_amt_obj.min_fc_balance_amount;
269     px_cust_profile_amt_rec.min_fc_invoice_amount := p_cust_profile_amt_obj.min_fc_invoice_amount;
270     px_cust_profile_amt_rec.site_use_id           := p_site_use_id;
271     px_cust_profile_amt_rec.expiration_date       := p_cust_profile_amt_obj.expiration_date;
272     px_cust_profile_amt_rec.attribute_category    := p_cust_profile_amt_obj.attribute_category;
273     px_cust_profile_amt_rec.attribute1            := p_cust_profile_amt_obj.attribute1;
274     px_cust_profile_amt_rec.attribute2            := p_cust_profile_amt_obj.attribute2;
275     px_cust_profile_amt_rec.attribute3            := p_cust_profile_amt_obj.attribute3;
276     px_cust_profile_amt_rec.attribute4            := p_cust_profile_amt_obj.attribute4;
277     px_cust_profile_amt_rec.attribute5            := p_cust_profile_amt_obj.attribute5;
278     px_cust_profile_amt_rec.attribute6            := p_cust_profile_amt_obj.attribute6;
279     px_cust_profile_amt_rec.attribute7            := p_cust_profile_amt_obj.attribute7;
280     px_cust_profile_amt_rec.attribute8            := p_cust_profile_amt_obj.attribute8;
281     px_cust_profile_amt_rec.attribute9            := p_cust_profile_amt_obj.attribute9;
282     px_cust_profile_amt_rec.attribute10           := p_cust_profile_amt_obj.attribute10;
283     px_cust_profile_amt_rec.attribute11           := p_cust_profile_amt_obj.attribute11;
284     px_cust_profile_amt_rec.attribute12           := p_cust_profile_amt_obj.attribute12;
285     px_cust_profile_amt_rec.attribute13           := p_cust_profile_amt_obj.attribute13;
286     px_cust_profile_amt_rec.attribute14           := p_cust_profile_amt_obj.attribute14;
287     px_cust_profile_amt_rec.attribute15           := p_cust_profile_amt_obj.attribute15;
288     px_cust_profile_amt_rec.jgzz_attribute_category    := p_cust_profile_amt_obj.jgzz_attribute_category;
289     px_cust_profile_amt_rec.jgzz_attribute1    := p_cust_profile_amt_obj.jgzz_attribute1;
290     px_cust_profile_amt_rec.jgzz_attribute2    := p_cust_profile_amt_obj.jgzz_attribute2;
291     px_cust_profile_amt_rec.jgzz_attribute3    := p_cust_profile_amt_obj.jgzz_attribute3;
292     px_cust_profile_amt_rec.jgzz_attribute4    := p_cust_profile_amt_obj.jgzz_attribute4;
293     px_cust_profile_amt_rec.jgzz_attribute5    := p_cust_profile_amt_obj.jgzz_attribute5;
294     px_cust_profile_amt_rec.jgzz_attribute6    := p_cust_profile_amt_obj.jgzz_attribute6;
295     px_cust_profile_amt_rec.jgzz_attribute7    := p_cust_profile_amt_obj.jgzz_attribute7;
296     px_cust_profile_amt_rec.jgzz_attribute8    := p_cust_profile_amt_obj.jgzz_attribute8;
297     px_cust_profile_amt_rec.jgzz_attribute9    := p_cust_profile_amt_obj.jgzz_attribute9;
298     px_cust_profile_amt_rec.jgzz_attribute10   := p_cust_profile_amt_obj.jgzz_attribute10;
299     px_cust_profile_amt_rec.jgzz_attribute11   := p_cust_profile_amt_obj.jgzz_attribute11;
300     px_cust_profile_amt_rec.jgzz_attribute12   := p_cust_profile_amt_obj.jgzz_attribute12;
301     px_cust_profile_amt_rec.jgzz_attribute13   := p_cust_profile_amt_obj.jgzz_attribute13;
302     px_cust_profile_amt_rec.jgzz_attribute14   := p_cust_profile_amt_obj.jgzz_attribute14;
303     px_cust_profile_amt_rec.jgzz_attribute15   := p_cust_profile_amt_obj.jgzz_attribute15;
304     px_cust_profile_amt_rec.global_attribute_category    := p_cust_profile_amt_obj.global_attribute_category;
305     px_cust_profile_amt_rec.global_attribute1  := p_cust_profile_amt_obj.global_attribute1;
306     px_cust_profile_amt_rec.global_attribute2  := p_cust_profile_amt_obj.global_attribute2;
307     px_cust_profile_amt_rec.global_attribute3  := p_cust_profile_amt_obj.global_attribute3;
308     px_cust_profile_amt_rec.global_attribute4  := p_cust_profile_amt_obj.global_attribute4;
309     px_cust_profile_amt_rec.global_attribute5  := p_cust_profile_amt_obj.global_attribute5;
310     px_cust_profile_amt_rec.global_attribute6  := p_cust_profile_amt_obj.global_attribute6;
311     px_cust_profile_amt_rec.global_attribute7  := p_cust_profile_amt_obj.global_attribute7;
312     px_cust_profile_amt_rec.global_attribute8  := p_cust_profile_amt_obj.global_attribute8;
313     px_cust_profile_amt_rec.global_attribute9  := p_cust_profile_amt_obj.global_attribute9;
314     px_cust_profile_amt_rec.global_attribute10 := p_cust_profile_amt_obj.global_attribute10;
315     px_cust_profile_amt_rec.global_attribute11 := p_cust_profile_amt_obj.global_attribute11;
316     px_cust_profile_amt_rec.global_attribute12 := p_cust_profile_amt_obj.global_attribute12;
317     px_cust_profile_amt_rec.global_attribute13 := p_cust_profile_amt_obj.global_attribute13;
318     px_cust_profile_amt_rec.global_attribute14 := p_cust_profile_amt_obj.global_attribute14;
319     px_cust_profile_amt_rec.global_attribute15 := p_cust_profile_amt_obj.global_attribute15;
320     px_cust_profile_amt_rec.global_attribute16 := p_cust_profile_amt_obj.global_attribute16;
321     px_cust_profile_amt_rec.global_attribute17 := p_cust_profile_amt_obj.global_attribute17;
322     px_cust_profile_amt_rec.global_attribute18 := p_cust_profile_amt_obj.global_attribute18;
323     px_cust_profile_amt_rec.global_attribute19 := p_cust_profile_amt_obj.global_attribute19;
324     px_cust_profile_amt_rec.global_attribute20 := p_cust_profile_amt_obj.global_attribute20;
325     px_cust_profile_amt_rec.created_by_module  := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
326     px_cust_profile_amt_rec.exchange_rate_type          := p_cust_profile_amt_obj.exchange_rate_type;
327     px_cust_profile_amt_rec.min_fc_invoice_overdue_type := p_cust_profile_amt_obj.min_fc_invoice_overdue_type;
328     px_cust_profile_amt_rec.min_fc_invoice_percent      := p_cust_profile_amt_obj.min_fc_invoice_percent;
329     px_cust_profile_amt_rec.min_fc_balance_overdue_type := p_cust_profile_amt_obj.min_fc_balance_overdue_type;
330     px_cust_profile_amt_rec.min_fc_balance_percent      := p_cust_profile_amt_obj.min_fc_balance_percent;
331     px_cust_profile_amt_rec.interest_type               := p_cust_profile_amt_obj.interest_type;
332     px_cust_profile_amt_rec.interest_fixed_amount       := p_cust_profile_amt_obj.interest_fixed_amount;
333     px_cust_profile_amt_rec.interest_schedule_id        := p_cust_profile_amt_obj.interest_schedule_id;
334     px_cust_profile_amt_rec.penalty_type                := p_cust_profile_amt_obj.penalty_type;
335     px_cust_profile_amt_rec.penalty_rate                := p_cust_profile_amt_obj.penalty_rate;
336     px_cust_profile_amt_rec.min_interest_charge         := p_cust_profile_amt_obj.min_interest_charge;
337     px_cust_profile_amt_rec.penalty_fixed_amount        := p_cust_profile_amt_obj.penalty_fixed_amount;
338     px_cust_profile_amt_rec.penalty_schedule_id         := p_cust_profile_amt_obj.penalty_schedule_id;
339   END assign_cust_profile_amt_rec;
340 
341   -- PROCEDURE assign_cust_profile_rec
342   --
343   -- DESCRIPTION
344   --     Assign attribute value from customer profile object to plsql record.
345   --
346   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
347   --
348   -- ARGUMENTS
349   --   IN:
350   --     p_cust_profile_obj   Customer profile object.
351   --     p_cust_acct_id       Customer account Id.
352   --     p_site_use_id        Customer account site use Id.
353   --   IN/OUT:
354   --     px_cust_profile_rec  Customer profile plsql record.
355   --
356   -- NOTES
357   --
358   -- MODIFICATION HISTORY
359   --
360   --   14-DEC-2004    Arnold Ng          Created.
361 
362   PROCEDURE assign_cust_profile_rec(
363     p_cust_profile_obj           IN            HZ_CUSTOMER_PROFILE_BO,
364     p_cust_acct_id               IN            NUMBER,
365     p_site_use_id                IN            NUMBER,
366     px_cust_profile_rec          IN OUT NOCOPY HZ_CUSTOMER_PROFILE_V2PUB.CUSTOMER_PROFILE_REC_TYPE
367   ) IS
368   BEGIN
369     px_cust_profile_rec.cust_account_profile_id :=p_cust_profile_obj.cust_acct_profile_id;
370     px_cust_profile_rec.cust_account_id :=p_cust_acct_id;
371     IF(p_cust_profile_obj.status in ('A','I')) THEN
372       px_cust_profile_rec.status :=p_cust_profile_obj.status;
373     END IF;
374     px_cust_profile_rec.collector_id :=p_cust_profile_obj.collector_id;
375     px_cust_profile_rec.credit_analyst_id :=p_cust_profile_obj.credit_analyst_id;
376     px_cust_profile_rec.credit_checking :=p_cust_profile_obj.credit_checking;
377     px_cust_profile_rec.next_credit_review_date :=p_cust_profile_obj.next_credit_review_date;
378     px_cust_profile_rec.tolerance :=p_cust_profile_obj.tolerance;
379     IF(p_cust_profile_obj.discount_terms in ('Y','N')) THEN
380       px_cust_profile_rec.discount_terms :=p_cust_profile_obj.discount_terms;
381     END IF;
382     px_cust_profile_rec.dunning_letters :=p_cust_profile_obj.dunning_letters;
383     IF(p_cust_profile_obj.interest_charges in ('Y','N')) THEN
384       px_cust_profile_rec.interest_charges :=p_cust_profile_obj.interest_charges;
385     END IF;
386     IF(p_cust_profile_obj.send_statements in ('Y','N')) THEN
387       px_cust_profile_rec.send_statements :=p_cust_profile_obj.send_statements;
388     END IF;
389     IF(p_cust_profile_obj.credit_balance_statements in ('Y','N')) THEN
390       px_cust_profile_rec.credit_balance_statements :=p_cust_profile_obj.credit_balance_statements;
391     END IF;
392     IF(p_cust_profile_obj.credit_hold in ('Y','N')) THEN
393       px_cust_profile_rec.credit_hold :=p_cust_profile_obj.credit_hold;
394     END IF;
395     px_cust_profile_rec.profile_class_id :=p_cust_profile_obj.profile_class_id;
396     px_cust_profile_rec.site_use_id :=p_site_use_id;
397     px_cust_profile_rec.credit_rating :=p_cust_profile_obj.credit_rating;
398     px_cust_profile_rec.risk_code :=p_cust_profile_obj.risk_code;
399     px_cust_profile_rec.standard_terms :=p_cust_profile_obj.standard_terms;
400     px_cust_profile_rec.override_terms :=p_cust_profile_obj.override_terms;
401     px_cust_profile_rec.dunning_letter_set_id :=p_cust_profile_obj.dunning_letter_set_id;
402     px_cust_profile_rec.interest_period_days :=p_cust_profile_obj.interest_period_days;
403     px_cust_profile_rec.payment_grace_days :=p_cust_profile_obj.payment_grace_days;
404     px_cust_profile_rec.discount_grace_days :=p_cust_profile_obj.discount_grace_days;
405     px_cust_profile_rec.statement_cycle_id :=p_cust_profile_obj.statement_cycle_id;
406     px_cust_profile_rec.account_status :=p_cust_profile_obj.account_status;
407     px_cust_profile_rec.percent_collectable :=p_cust_profile_obj.percent_collectable;
408     px_cust_profile_rec.autocash_hierarchy_id :=p_cust_profile_obj.autocash_hierarchy_id;
409     px_cust_profile_rec.attribute_category :=p_cust_profile_obj.attribute_category;
410     px_cust_profile_rec.attribute1 :=p_cust_profile_obj.attribute1;
411     px_cust_profile_rec.attribute2 :=p_cust_profile_obj.attribute2;
412     px_cust_profile_rec.attribute3 :=p_cust_profile_obj.attribute3;
413     px_cust_profile_rec.attribute4 :=p_cust_profile_obj.attribute4;
414     px_cust_profile_rec.attribute5 :=p_cust_profile_obj.attribute5;
415     px_cust_profile_rec.attribute6 :=p_cust_profile_obj.attribute6;
416     px_cust_profile_rec.attribute7 :=p_cust_profile_obj.attribute7;
417     px_cust_profile_rec.attribute8 :=p_cust_profile_obj.attribute8;
418     px_cust_profile_rec.attribute9 :=p_cust_profile_obj.attribute9;
419     px_cust_profile_rec.attribute10 :=p_cust_profile_obj.attribute10;
420     px_cust_profile_rec.attribute11 :=p_cust_profile_obj.attribute11;
421     px_cust_profile_rec.attribute12 :=p_cust_profile_obj.attribute12;
422     px_cust_profile_rec.attribute13 :=p_cust_profile_obj.attribute13;
423     px_cust_profile_rec.attribute14 :=p_cust_profile_obj.attribute14;
424     px_cust_profile_rec.attribute15 :=p_cust_profile_obj.attribute15;
425     px_cust_profile_rec.auto_rec_incl_disputed_flag :=p_cust_profile_obj.auto_rec_incl_disputed_flag;
426     px_cust_profile_rec.tax_printing_option :=p_cust_profile_obj.tax_printing_option;
427     IF(p_cust_profile_obj.charge_on_fin_charge_flag in ('Y','N')) THEN
428       px_cust_profile_rec.charge_on_finance_charge_flag :=p_cust_profile_obj.charge_on_fin_charge_flag;
429     END IF;
430     px_cust_profile_rec.grouping_rule_id :=p_cust_profile_obj.grouping_rule_id;
431     px_cust_profile_rec.clearing_days :=p_cust_profile_obj.clearing_days;
432     px_cust_profile_rec.jgzz_attribute_category :=p_cust_profile_obj.jgzz_attribute_category;
433     px_cust_profile_rec.jgzz_attribute1 :=p_cust_profile_obj.jgzz_attribute1;
434     px_cust_profile_rec.jgzz_attribute2 :=p_cust_profile_obj.jgzz_attribute2;
435     px_cust_profile_rec.jgzz_attribute3 :=p_cust_profile_obj.jgzz_attribute3;
436     px_cust_profile_rec.jgzz_attribute4 :=p_cust_profile_obj.jgzz_attribute4;
437     px_cust_profile_rec.jgzz_attribute5 :=p_cust_profile_obj.jgzz_attribute5;
438     px_cust_profile_rec.jgzz_attribute6 :=p_cust_profile_obj.jgzz_attribute6;
439     px_cust_profile_rec.jgzz_attribute7 :=p_cust_profile_obj.jgzz_attribute7;
440     px_cust_profile_rec.jgzz_attribute8 :=p_cust_profile_obj.jgzz_attribute8;
441     px_cust_profile_rec.jgzz_attribute9 :=p_cust_profile_obj.jgzz_attribute9;
442     px_cust_profile_rec.jgzz_attribute10 :=p_cust_profile_obj.jgzz_attribute10;
443     px_cust_profile_rec.jgzz_attribute11 :=p_cust_profile_obj.jgzz_attribute11;
444     px_cust_profile_rec.jgzz_attribute12 :=p_cust_profile_obj.jgzz_attribute12;
445     px_cust_profile_rec.jgzz_attribute13 :=p_cust_profile_obj.jgzz_attribute13;
446     px_cust_profile_rec.jgzz_attribute14 :=p_cust_profile_obj.jgzz_attribute14;
447     px_cust_profile_rec.jgzz_attribute15 :=p_cust_profile_obj.jgzz_attribute15;
448     px_cust_profile_rec.global_attribute1 :=p_cust_profile_obj.global_attribute1;
449     px_cust_profile_rec.global_attribute2 :=p_cust_profile_obj.global_attribute2;
450     px_cust_profile_rec.global_attribute3 :=p_cust_profile_obj.global_attribute3;
451     px_cust_profile_rec.global_attribute4 :=p_cust_profile_obj.global_attribute4;
452     px_cust_profile_rec.global_attribute5 :=p_cust_profile_obj.global_attribute5;
453     px_cust_profile_rec.global_attribute6 :=p_cust_profile_obj.global_attribute6;
454     px_cust_profile_rec.global_attribute7 :=p_cust_profile_obj.global_attribute7;
455     px_cust_profile_rec.global_attribute8 :=p_cust_profile_obj.global_attribute8;
456     px_cust_profile_rec.global_attribute9 :=p_cust_profile_obj.global_attribute9;
457     px_cust_profile_rec.global_attribute10 :=p_cust_profile_obj.global_attribute10;
458     px_cust_profile_rec.global_attribute11 :=p_cust_profile_obj.global_attribute11;
459     px_cust_profile_rec.global_attribute12 :=p_cust_profile_obj.global_attribute12;
460     px_cust_profile_rec.global_attribute13 :=p_cust_profile_obj.global_attribute13;
461     px_cust_profile_rec.global_attribute14 :=p_cust_profile_obj.global_attribute14;
462     px_cust_profile_rec.global_attribute15 :=p_cust_profile_obj.global_attribute15;
463     px_cust_profile_rec.global_attribute16 :=p_cust_profile_obj.global_attribute16;
464     px_cust_profile_rec.global_attribute17 :=p_cust_profile_obj.global_attribute17;
465     px_cust_profile_rec.global_attribute18 :=p_cust_profile_obj.global_attribute18;
466     px_cust_profile_rec.global_attribute19 :=p_cust_profile_obj.global_attribute19;
467     px_cust_profile_rec.global_attribute20 :=p_cust_profile_obj.global_attribute20;
468     px_cust_profile_rec.global_attribute_category :=p_cust_profile_obj.global_attribute_category;
469     IF(p_cust_profile_obj.cons_inv_flag in ('Y','N')) THEN
470       px_cust_profile_rec.cons_inv_flag :=p_cust_profile_obj.cons_inv_flag;
471     END IF;
472     px_cust_profile_rec.cons_inv_type :=p_cust_profile_obj.cons_inv_type;
473     px_cust_profile_rec.autocash_hierarchy_id_for_adr :=p_cust_profile_obj.autocash_hier_id_for_adr;
474     px_cust_profile_rec.lockbox_matching_option :=p_cust_profile_obj.lockbox_matching_option;
475     px_cust_profile_rec.created_by_module :=HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
476     px_cust_profile_rec.review_cycle :=p_cust_profile_obj.review_cycle;
477     px_cust_profile_rec.last_credit_review_date :=p_cust_profile_obj.last_credit_review_date;
478     --px_cust_profile_rec.party_id :=p_cust_profile_obj.party_id;
479     px_cust_profile_rec.credit_classification :=p_cust_profile_obj.credit_classification;
480     px_cust_profile_rec.cons_bill_level :=p_cust_profile_obj.cons_bill_level;
481     px_cust_profile_rec.late_charge_calculation_trx := p_cust_profile_obj.late_charge_calculation_trx;
482     px_cust_profile_rec.credit_items_flag := p_cust_profile_obj.credit_items_flag;
483     px_cust_profile_rec.disputed_transactions_flag := p_cust_profile_obj.disputed_transactions_flag;
484     px_cust_profile_rec.late_charge_type := p_cust_profile_obj.late_charge_type;
485     px_cust_profile_rec.late_charge_term_id := p_cust_profile_obj.late_charge_term_id;
486     px_cust_profile_rec.interest_calculation_period := p_cust_profile_obj.interest_calculation_period;
487     px_cust_profile_rec.hold_charged_invoices_flag := p_cust_profile_obj.hold_charged_invoices_flag;
488     px_cust_profile_rec.message_text_id := p_cust_profile_obj.message_text_id;
489     px_cust_profile_rec.multiple_interest_rates_flag := p_cust_profile_obj.multiple_interest_rates_flag;
490     px_cust_profile_rec.charge_begin_date := p_cust_profile_obj.charge_begin_date;
491   END assign_cust_profile_rec;
492 
493   -- PRIVATE PROCEDURE assign_cust_acct_relate_rec
494   --
495   -- DESCRIPTION
496   --     Assign attribute value from customer account relationship object to plsql record.
497   --
498   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
499   --
500   -- ARGUMENTS
501   --   IN:
502   --     p_cust_acct_relate_obj   Customer account relationship object.
503   --     p_cust_acct_id           Customer account Id.
504   --     p_related_cust_acct_id   Related customer account Id.
505   --   IN/OUT:
506   --     px_cust_acct_relate_rec  Customer account relationship plsql record.
507   --
508   -- NOTES
509   --
510   -- MODIFICATION HISTORY
511   --
512   --   14-DEC-2004    Arnold Ng          Created.
513 
514   PROCEDURE assign_cust_acct_relate_rec(
515     p_cust_acct_relate_obj       IN            HZ_CUST_ACCT_RELATE_OBJ,
516     p_cust_acct_id               IN            NUMBER,
517     p_related_cust_acct_id       IN            NUMBER,
518     px_cust_acct_relate_rec      IN OUT NOCOPY HZ_CUST_ACCOUNT_V2PUB.CUST_ACCT_RELATE_REC_TYPE
519   ) IS
520   BEGIN
521     px_cust_acct_relate_rec.cust_account_id := p_cust_acct_id;
522     px_cust_acct_relate_rec.related_cust_account_id := p_related_cust_acct_id;
523     px_cust_acct_relate_rec.relationship_type := p_cust_acct_relate_obj.relationship_type;
524     px_cust_acct_relate_rec.comments := p_cust_acct_relate_obj.comments;
525     IF(p_cust_acct_relate_obj.customer_reciprocal_flag in ('Y','N')) THEN
526       px_cust_acct_relate_rec.customer_reciprocal_flag := p_cust_acct_relate_obj.customer_reciprocal_flag;
527     END IF;
528     px_cust_acct_relate_rec.attribute_category := p_cust_acct_relate_obj.attribute_category;
529     px_cust_acct_relate_rec.attribute1 := p_cust_acct_relate_obj.attribute1;
530     px_cust_acct_relate_rec.attribute2 := p_cust_acct_relate_obj.attribute2;
531     px_cust_acct_relate_rec.attribute3 := p_cust_acct_relate_obj.attribute3;
532     px_cust_acct_relate_rec.attribute4 := p_cust_acct_relate_obj.attribute4;
533     px_cust_acct_relate_rec.attribute5 := p_cust_acct_relate_obj.attribute5;
534     px_cust_acct_relate_rec.attribute6 := p_cust_acct_relate_obj.attribute6;
535     px_cust_acct_relate_rec.attribute7 := p_cust_acct_relate_obj.attribute7;
536     px_cust_acct_relate_rec.attribute8 := p_cust_acct_relate_obj.attribute8;
537     px_cust_acct_relate_rec.attribute9 := p_cust_acct_relate_obj.attribute9;
538     px_cust_acct_relate_rec.attribute10 := p_cust_acct_relate_obj.attribute10;
539     px_cust_acct_relate_rec.attribute11 := p_cust_acct_relate_obj.attribute11;
540     px_cust_acct_relate_rec.attribute12 := p_cust_acct_relate_obj.attribute12;
541     px_cust_acct_relate_rec.attribute13 := p_cust_acct_relate_obj.attribute13;
542     px_cust_acct_relate_rec.attribute14 := p_cust_acct_relate_obj.attribute14;
543     px_cust_acct_relate_rec.attribute15 := p_cust_acct_relate_obj.attribute15;
544     IF(p_cust_acct_relate_obj.status in ('A','I')) THEN
545       px_cust_acct_relate_rec.status := p_cust_acct_relate_obj.status;
546     END IF;
547     px_cust_acct_relate_rec.bill_to_flag := p_cust_acct_relate_obj.bill_to_flag;
548     px_cust_acct_relate_rec.ship_to_flag := p_cust_acct_relate_obj.ship_to_flag;
549     px_cust_acct_relate_rec.created_by_module := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
550     px_cust_acct_relate_rec.org_id := p_cust_acct_relate_obj.org_id;
551   END assign_cust_acct_relate_rec;
552 
553   -- PROCEDURE create_cust_profile
554   --
555   -- DESCRIPTION
556   --     Create customer profile.
557   --
558   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
559   --
560   -- ARGUMENTS
561   --   IN:
562   --     p_cp_obj             Customer profile object.
563   --     p_ca_id              Customer account Id.
564   --     p_casu_id            Customer account site use Id.
565   --   OUT:
566   --     x_cp_id              Customer profile Id.
567   --     x_return_status      Return status after the call. The status can
568   --                          be fnd_api.g_ret_sts_success (success),
569   --                          fnd_api.g_ret_sts_error (error),
570   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
571   --     x_msg_count          Number of messages in message stack.
572   --     x_msg_data           Message text if x_msg_count is 1.
573   --
574   -- NOTES
575   --
576   -- MODIFICATION HISTORY
577   --
578   --   14-DEC-2004    Arnold Ng          Created.
579 
580   PROCEDURE create_cust_profile(
581     p_cp_obj                  IN OUT NOCOPY HZ_CUSTOMER_PROFILE_BO,
582     p_ca_id                   IN            NUMBER,
583     p_casu_id                 IN            NUMBER,
584     x_cp_id                   OUT NOCOPY    NUMBER,
585     x_return_status           OUT NOCOPY    VARCHAR2,
586     x_msg_count               OUT NOCOPY    NUMBER,
587     x_msg_data                OUT NOCOPY    VARCHAR2
588   ) IS
589     l_debug_prefix            VARCHAR2(30) := '';
590     l_cp_rec                  HZ_CUSTOMER_PROFILE_V2PUB.CUSTOMER_PROFILE_REC_TYPE;
591   BEGIN
592     -- Standard start of API savepoint
593     SAVEPOINT create_cp_pvt;
594 
595     -- initialize API return status to success.
596     x_return_status := FND_API.G_RET_STS_SUCCESS;
597 
598     -- Debug info.
599     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
600         hz_utility_v2pub.debug(p_message=>'create_cust_profile(+)',
601                                p_prefix=>l_debug_prefix,
602                                p_msg_level=>fnd_log.level_procedure);
603     END IF;
604 
605     -- Create cust profile
606     assign_cust_profile_rec(
607       p_cust_profile_obj            => p_cp_obj,
608       p_cust_acct_id                => p_ca_id,
609       p_site_use_id                 => p_casu_id,
610       px_cust_profile_rec           => l_cp_rec
611     );
612 
613     HZ_CUSTOMER_PROFILE_V2PUB.create_customer_profile (
614       p_customer_profile_rec        => l_cp_rec,
615       p_create_profile_amt          => FND_API.G_FALSE,
616       x_cust_account_profile_id     => x_cp_id,
617       x_return_status               => x_return_status,
618       x_msg_count                   => x_msg_count,
619       x_msg_data                    => x_msg_data
620     );
621 
622     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
623       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
624         hz_utility_v2pub.debug(p_message=>'Error occurred at hz_cust_acct_bo_pvt.create_cust_profile, cust account id: '||p_ca_id||' cust site use id: '||p_casu_id,
625                                p_prefix=>l_debug_prefix,
626                                p_msg_level=>fnd_log.level_procedure);
627       END IF;
628       RAISE fnd_api.g_exc_error;
629     END IF;
630 
631     -- assign profile_id
632     p_cp_obj.cust_acct_profile_id := x_cp_id;
633 
634     -- Debug info.
635     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
636          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
637                                p_msg_data=>x_msg_data,
638                                p_msg_type=>'WARNING',
639                                p_msg_level=>fnd_log.level_exception);
640     END IF;
641     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
642         hz_utility_v2pub.debug(p_message=>'create_cust_profile(-)',
643                                p_prefix=>l_debug_prefix,
644                                p_msg_level=>fnd_log.level_procedure);
645     END IF;
646   EXCEPTION
647     WHEN fnd_api.g_exc_error THEN
648       ROLLBACK TO create_cp_pvt;
649       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_STRUCT_ERROR');
650       FND_MESSAGE.SET_TOKEN('STRUCTURE', 'HZ_CUSTOMER_PROFILES');
651       FND_MSG_PUB.ADD;
652 
653       x_return_status := fnd_api.g_ret_sts_error;
654 
655       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
656                                 p_count => x_msg_count,
657                                 p_data  => x_msg_data);
658 
659       -- Debug info.
660       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
661         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
662                                p_msg_data=>x_msg_data,
663                                p_msg_type=>'ERROR',
664                                p_msg_level=>fnd_log.level_error);
665       END IF;
666       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
667         hz_utility_v2pub.debug(p_message=>'create_cust_profile(-)',
668                                p_prefix=>l_debug_prefix,
669                                p_msg_level=>fnd_log.level_procedure);
670       END IF;
671 
672     WHEN fnd_api.g_exc_unexpected_error THEN
673       ROLLBACK TO create_cp_pvt;
674       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_STRUCT_ERROR');
675       FND_MESSAGE.SET_TOKEN('STRUCTURE', 'HZ_CUSTOMER_PROFILES');
676       FND_MSG_PUB.ADD;
677 
678       x_return_status := fnd_api.g_ret_sts_unexp_error;
679 
680       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
681                                 p_count => x_msg_count,
682                                 p_data  => x_msg_data);
683 
684       -- Debug info.
685       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
686         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
687                                p_msg_data=>x_msg_data,
688                                p_msg_type=>'UNEXPECTED ERROR',
689                                p_msg_level=>fnd_log.level_error);
690       END IF;
691       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
692         hz_utility_v2pub.debug(p_message=>'create_cust_profile(-)',
693                                p_prefix=>l_debug_prefix,
694                                p_msg_level=>fnd_log.level_procedure);
695       END IF;
696 
697     WHEN OTHERS THEN
698       ROLLBACK TO create_cp_pvt;
699       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_STRUCT_ERROR');
700       FND_MESSAGE.SET_TOKEN('STRUCTURE', 'HZ_CUSTOMER_PROFILES');
701       FND_MSG_PUB.ADD;
702 
703       x_return_status := fnd_api.g_ret_sts_unexp_error;
704 
705       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
706       fnd_message.set_token('ERROR' ,SQLERRM);
707       fnd_msg_pub.add;
708 
709       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
710                                 p_count => x_msg_count,
711                                 p_data  => x_msg_data);
712 
713       -- Debug info.
714       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
715         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
716                                p_msg_data=>x_msg_data,
717                                p_msg_type=>'SQL ERROR',
718                                p_msg_level=>fnd_log.level_error);
719       END IF;
720       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
721         hz_utility_v2pub.debug(p_message=>'create_cust_profile(-)',
722                                p_prefix=>l_debug_prefix,
723                                p_msg_level=>fnd_log.level_procedure);
724       END IF;
725   END create_cust_profile;
726 
727   -- PROCEDURE update_cust_profile
728   --
729   -- DESCRIPTION
730   --     Update customer profile.
731   --
732   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
733   --
734   -- ARGUMENTS
735   --   IN:
736   --     p_cp_obj             Customer profile object.
737   --     p_ca_id              Customer account Id.
738   --     p_casu_id            Customer account site use Id.
739   --   OUT:
740   --     x_cp_id              Customer profile Id.
741   --     x_return_status      Return status after the call. The status can
742   --                          be fnd_api.g_ret_sts_success (success),
743   --                          fnd_api.g_ret_sts_error (error),
744   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
745   --     x_msg_count          Number of messages in message stack.
746   --     x_msg_data           Message text if x_msg_count is 1.
747   --
748   -- NOTES
749   --
750   -- MODIFICATION HISTORY
751   --
752   --   14-DEC-2004    Arnold Ng          Created.
753 
754   PROCEDURE update_cust_profile(
755     p_cp_obj                  IN OUT NOCOPY HZ_CUSTOMER_PROFILE_BO,
756     p_ca_id                   IN            NUMBER,
757     p_casu_id                 IN            NUMBER,
758     x_cp_id                   OUT NOCOPY    NUMBER,
759     x_return_status           OUT NOCOPY    VARCHAR2,
760     x_msg_count               OUT NOCOPY    NUMBER,
761     x_msg_data                OUT NOCOPY    VARCHAR2
762   ) IS
763     l_debug_prefix            VARCHAR2(30) := '';
764     l_cp_rec                  HZ_CUSTOMER_PROFILE_V2PUB.CUSTOMER_PROFILE_REC_TYPE;
765     l_cp_ovn                  NUMBER;
766     l_ca_id                   NUMBER;
767     l_casu_id                 NUMBER;
768 
769     CURSOR get_ovn(l_ca_id NUMBER, l_casu_id NUMBER) IS
770     SELECT cp.cust_account_profile_id, cp.object_version_number
771     FROM HZ_CUSTOMER_PROFILES cp
772     WHERE cp.cust_account_id = l_ca_id
773     AND nvl(cp.site_use_id, -99) = nvl(l_casu_id, -99);
774 
775     CURSOR get_ovn_by_cpid(l_cp_id NUMBER) IS
776     SELECT cp.cust_account_profile_id, cp.object_version_number, cp.cust_account_id, cp.site_use_id
777     FROM HZ_CUSTOMER_PROFILES cp
778     WHERE cp.cust_account_profile_id = l_cp_id;
779   BEGIN
780     -- Standard start of API savepoint
781     SAVEPOINT update_cp_pvt;
782 
783     -- initialize API return status to success.
784     x_return_status := FND_API.G_RET_STS_SUCCESS;
785 
786     -- Debug info.
787     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
788         hz_utility_v2pub.debug(p_message=>'update_cust_profile(+)',
789                                p_prefix=>l_debug_prefix,
790                                p_msg_level=>fnd_log.level_procedure);
791     END IF;
792 
793     -- check if user pass in cust profile id but with different cust account id
794     -- and/or site use id
795     IF(p_cp_obj.cust_acct_profile_id IS NOT NULL) THEN
796       OPEN get_ovn_by_cpid(p_cp_obj.cust_acct_profile_id);
797       FETCH get_ovn_by_cpid INTO x_cp_id, l_cp_ovn, l_ca_id, l_casu_id;
798       CLOSE get_ovn_by_cpid;
799       IF(nvl(l_ca_id, -99) <> nvl(p_ca_id, -99)) THEN
800         FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_NONUPDATEABLE_COLUMN' );
801         FND_MESSAGE.SET_TOKEN( 'COLUMN', 'cust_account_id');
802         FND_MSG_PUB.ADD();
803         RAISE fnd_api.g_exc_error;
804       END IF;
805       IF(nvl(l_casu_id, -99) <> nvl(p_casu_id, -99)) THEN
806         FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_NONUPDATEABLE_COLUMN' );
807         FND_MESSAGE.SET_TOKEN( 'COLUMN', 'site_use_id');
808         FND_MSG_PUB.ADD();
809         RAISE fnd_api.g_exc_error;
810       END IF;
811     ELSE
812       OPEN get_ovn(p_ca_id, p_casu_id);
813       FETCH get_ovn INTO x_cp_id, l_cp_ovn;
814       CLOSE get_ovn;
815     END IF;
816 
817     -- Create cust profile
818     assign_cust_profile_rec(
819       p_cust_profile_obj            => p_cp_obj,
820       p_cust_acct_id                => p_ca_id,
821       p_site_use_id                 => p_casu_id,
822       px_cust_profile_rec           => l_cp_rec
823     );
824 
825     l_cp_rec.cust_account_profile_id := x_cp_id;
826     l_cp_rec.created_by_module := NULL;
827 
828     HZ_CUSTOMER_PROFILE_V2PUB.update_customer_profile (
829       p_customer_profile_rec        => l_cp_rec,
830       p_object_version_number       => l_cp_ovn,
831       x_return_status               => x_return_status,
832       x_msg_count                   => x_msg_count,
833       x_msg_data                    => x_msg_data
834     );
835 
836     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
837       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
838         hz_utility_v2pub.debug(p_message=>'Error occurred at hz_cust_acct_bo_pvt.update_cust_profile, cust account id: '||p_ca_id||' cust site use id: '||p_casu_id,
839                                p_prefix=>l_debug_prefix,
840                                p_msg_level=>fnd_log.level_procedure);
841       END IF;
842       RAISE fnd_api.g_exc_error;
843     END IF;
844 
845     -- assign profile_id
846     p_cp_obj.cust_acct_profile_id := x_cp_id;
847 
848     -- Debug info.
849     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
850          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
851                                p_msg_data=>x_msg_data,
852                                p_msg_type=>'WARNING',
853                                p_msg_level=>fnd_log.level_exception);
854     END IF;
855     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
856         hz_utility_v2pub.debug(p_message=>'update_cust_profile(-)',
857                                p_prefix=>l_debug_prefix,
858                                p_msg_level=>fnd_log.level_procedure);
859     END IF;
860   EXCEPTION
861     WHEN fnd_api.g_exc_error THEN
862       ROLLBACK TO update_cp_pvt;
863       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_STRUCT_ERROR');
864       FND_MESSAGE.SET_TOKEN('STRUCTURE', 'HZ_CUSTOMER_PROFILES');
865       FND_MSG_PUB.ADD;
866 
867       x_return_status := fnd_api.g_ret_sts_error;
868 
869       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
870                                 p_count => x_msg_count,
871                                 p_data  => x_msg_data);
872 
873       -- Debug info.
874       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
875         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
876                                p_msg_data=>x_msg_data,
877                                p_msg_type=>'ERROR',
878                                p_msg_level=>fnd_log.level_error);
879       END IF;
880       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
881         hz_utility_v2pub.debug(p_message=>'update_cust_profile(-)',
882                                p_prefix=>l_debug_prefix,
883                                p_msg_level=>fnd_log.level_procedure);
884       END IF;
885 
886     WHEN fnd_api.g_exc_unexpected_error THEN
887       ROLLBACK TO update_cp_pvt;
888       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_STRUCT_ERROR');
889       FND_MESSAGE.SET_TOKEN('STRUCTURE', 'HZ_CUSTOMER_PROFILES');
890       FND_MSG_PUB.ADD;
891 
892       x_return_status := fnd_api.g_ret_sts_unexp_error;
893 
894       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
895                                 p_count => x_msg_count,
896                                 p_data  => x_msg_data);
897 
898       -- Debug info.
899       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
900         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
901                                p_msg_data=>x_msg_data,
902                                p_msg_type=>'UNEXPECTED ERROR',
903                                p_msg_level=>fnd_log.level_error);
904       END IF;
905       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
906         hz_utility_v2pub.debug(p_message=>'update_cust_profile(-)',
907                                p_prefix=>l_debug_prefix,
908                                p_msg_level=>fnd_log.level_procedure);
909       END IF;
910 
911     WHEN OTHERS THEN
912       ROLLBACK TO update_cp_pvt;
913       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_STRUCT_ERROR');
914       FND_MESSAGE.SET_TOKEN('STRUCTURE', 'HZ_CUSTOMER_PROFILES');
915       FND_MSG_PUB.ADD;
916 
917       x_return_status := fnd_api.g_ret_sts_unexp_error;
918 
919       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
920       fnd_message.set_token('ERROR' ,SQLERRM);
921       fnd_msg_pub.add;
922 
923       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
924                                 p_count => x_msg_count,
925                                 p_data  => x_msg_data);
926 
927       -- Debug info.
928       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
929         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
930                                p_msg_data=>x_msg_data,
931                                p_msg_type=>'SQL ERROR',
932                                p_msg_level=>fnd_log.level_error);
933       END IF;
934       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
935         hz_utility_v2pub.debug(p_message=>'update_cust_profile(-)',
936                                p_prefix=>l_debug_prefix,
937                                p_msg_level=>fnd_log.level_procedure);
938       END IF;
939   END update_cust_profile;
940 
941   -- PROCEDURE create_cust_profile_amts
942   --
943   -- DESCRIPTION
944   --     Create customer profile amounts.
945   --
946   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
947   --
948   -- ARGUMENTS
949   --   IN:
950   --     p_cpa_objs           List of customer profile amount objects.
951   --     p_cp_id              Customer profile Id.
952   --     p_ca_id              Customer account Id.
953   --     p_casu_id            Customer account site use Id.
954   --   OUT:
955   --     x_return_status      Return status after the call. The status can
956   --                          be fnd_api.g_ret_sts_success (success),
957   --                          fnd_api.g_ret_sts_error (error),
958   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
959   --     x_msg_count          Number of messages in message stack.
960   --     x_msg_data           Message text if x_msg_count is 1.
961   --
962   -- NOTES
963   --
964   -- MODIFICATION HISTORY
965   --
966   --   14-DEC-2004    Arnold Ng          Created.
967 
968   PROCEDURE create_cust_profile_amts(
969     p_cpa_objs                IN OUT NOCOPY HZ_CUST_PROFILE_AMT_OBJ_TBL,
970     p_cp_id                   IN            NUMBER,
971     p_ca_id                   IN            NUMBER,
972     p_casu_id                 IN            NUMBER,
973     x_return_status           OUT NOCOPY    VARCHAR2,
974     x_msg_count               OUT NOCOPY    NUMBER,
975     x_msg_data                OUT NOCOPY    VARCHAR2
976   ) IS
977     l_debug_prefix            VARCHAR2(30) := '';
978     l_cpa_rec                 HZ_CUSTOMER_PROFILE_V2PUB.CUST_PROFILE_AMT_REC_TYPE;
979     l_cpa_id                  NUMBER;
980   BEGIN
981     -- Standard start of API savepoint
982     SAVEPOINT create_cpa_pvt;
983 
984     -- initialize API return status to success.
985     x_return_status := FND_API.G_RET_STS_SUCCESS;
986 
987     -- Debug info.
988     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
989         hz_utility_v2pub.debug(p_message=>'create_cust_profile_amts(+)',
990                                p_prefix=>l_debug_prefix,
991                                p_msg_level=>fnd_log.level_procedure);
992     END IF;
993 
994     FOR i IN 1..p_cpa_objs.COUNT LOOP
995       assign_cust_profile_amt_rec(
996         p_cust_profile_amt_obj      => p_cpa_objs(i),
997         p_cust_profile_id           => p_cp_id,
998         p_cust_acct_id              => p_ca_id,
999         p_site_use_id               => p_casu_id,
1000         px_cust_profile_amt_rec     => l_cpa_rec
1001       );
1002 
1003       HZ_CUSTOMER_PROFILE_V2PUB.create_cust_profile_amt (
1004         p_check_foreign_key         => FND_API.G_FALSE,
1005         p_cust_profile_amt_rec      => l_cpa_rec,
1006         x_cust_acct_profile_amt_id  => l_cpa_id,
1007         x_return_status             => x_return_status,
1008         x_msg_count                 => x_msg_count,
1009         x_msg_data                  => x_msg_data
1010       );
1011 
1012       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1013         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1014           hz_utility_v2pub.debug(p_message=>'Error occurred at hz_cust_acct_bo_pvt.create_cust_profile_amts, cust acct profile id: '||p_cp_id||' cust acct id: '||p_ca_id,
1015                                  p_prefix=>l_debug_prefix,
1016                                  p_msg_level=>fnd_log.level_procedure);
1017         END IF;
1018         RAISE FND_API.G_EXC_ERROR;
1019       END IF;
1020 
1021       -- assign profile amount id
1022       p_cpa_objs(i).cust_acct_profile_amt_id := l_cpa_id;
1023     END LOOP;
1024 
1025     -- Debug info.
1026     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1027          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1028                                p_msg_data=>x_msg_data,
1029                                p_msg_type=>'WARNING',
1030                                p_msg_level=>fnd_log.level_exception);
1031     END IF;
1032     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1033         hz_utility_v2pub.debug(p_message=>'create_cust_profile_amts(-)',
1034                                p_prefix=>l_debug_prefix,
1035                                p_msg_level=>fnd_log.level_procedure);
1036     END IF;
1037 
1038   EXCEPTION
1039     WHEN fnd_api.g_exc_error THEN
1040       ROLLBACK TO create_cpa_pvt;
1041       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
1042       FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_CUST_PROFILE_AMTS');
1043       FND_MSG_PUB.ADD;
1044 
1045       x_return_status := fnd_api.g_ret_sts_error;
1046 
1047       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1048                                 p_count => x_msg_count,
1049                                 p_data  => x_msg_data);
1050 
1051       -- Debug info.
1052       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1053         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1054                                p_msg_data=>x_msg_data,
1055                                p_msg_type=>'ERROR',
1056                                p_msg_level=>fnd_log.level_error);
1057       END IF;
1058       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1059         hz_utility_v2pub.debug(p_message=>'create_cust_profile_amts(-)',
1060                                p_prefix=>l_debug_prefix,
1061                                p_msg_level=>fnd_log.level_procedure);
1062       END IF;
1063 
1064     WHEN fnd_api.g_exc_unexpected_error THEN
1065       ROLLBACK TO create_cpa_pvt;
1066       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
1067       FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_CUST_PROFILE_AMTS');
1068       FND_MSG_PUB.ADD;
1069 
1070       x_return_status := fnd_api.g_ret_sts_unexp_error;
1071 
1072       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1073                                 p_count => x_msg_count,
1074                                 p_data  => x_msg_data);
1075 
1076       -- Debug info.
1077       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1078         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1079                                p_msg_data=>x_msg_data,
1080                                p_msg_type=>'UNEXPECTED ERROR',
1081                                p_msg_level=>fnd_log.level_error);
1082       END IF;
1083       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1084         hz_utility_v2pub.debug(p_message=>'create_cust_profile_amts(-)',
1085                                p_prefix=>l_debug_prefix,
1086                                p_msg_level=>fnd_log.level_procedure);
1087       END IF;
1088 
1089     WHEN OTHERS THEN
1090       ROLLBACK TO create_cpa_pvt;
1091       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
1092       FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_CUST_PROFILE_AMTS');
1093       FND_MSG_PUB.ADD;
1094 
1095       x_return_status := fnd_api.g_ret_sts_unexp_error;
1096 
1097       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1098       fnd_message.set_token('ERROR' ,SQLERRM);
1099       fnd_msg_pub.add;
1100 
1101       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1102                                 p_count => x_msg_count,
1103                                 p_data  => x_msg_data);
1104 
1105       -- Debug info.
1106       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1107         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1108                                p_msg_data=>x_msg_data,
1109                                p_msg_type=>'SQL ERROR',
1110                                p_msg_level=>fnd_log.level_error);
1111       END IF;
1112       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1113         hz_utility_v2pub.debug(p_message=>'create_cust_profile_amts(-)',
1114                                p_prefix=>l_debug_prefix,
1115                                p_msg_level=>fnd_log.level_procedure);
1116       END IF;
1117   END create_cust_profile_amts;
1118 
1119   -- PROCEDURE save_cust_profile_amts
1120   --
1121   -- DESCRIPTION
1122   --     Create or update customer profile amounts.
1123   --
1124   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1125   --
1126   -- ARGUMENTS
1127   --   IN:
1128   --     p_cpa_objs           List of customer profile amount objects.
1129   --     p_cp_id              Customer profile Id.
1130   --     p_ca_id              Customer account Id.
1131   --     p_casu_id            Customer account site use Id.
1132   --   OUT:
1133   --     x_return_status      Return status after the call. The status can
1134   --                          be fnd_api.g_ret_sts_success (success),
1135   --                          fnd_api.g_ret_sts_error (error),
1136   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
1137   --     x_msg_count          Number of messages in message stack.
1138   --     x_msg_data           Message text if x_msg_count is 1.
1139   --
1140   -- NOTES
1141   --
1142   -- MODIFICATION HISTORY
1143   --
1144   --   14-DEC-2004    Arnold Ng          Created.
1145 
1146   PROCEDURE save_cust_profile_amts(
1147     p_cpa_objs                IN OUT NOCOPY HZ_CUST_PROFILE_AMT_OBJ_TBL,
1148     p_cp_id                   IN            NUMBER,
1149     p_ca_id                   IN            NUMBER,
1150     p_casu_id                 IN            NUMBER,
1151     x_return_status           OUT NOCOPY    VARCHAR2,
1152     x_msg_count               OUT NOCOPY    NUMBER,
1153     x_msg_data                OUT NOCOPY    VARCHAR2
1154   )IS
1155     l_debug_prefix            VARCHAR2(30) := '';
1156     l_cpa_rec                 HZ_CUSTOMER_PROFILE_V2PUB.CUST_PROFILE_AMT_REC_TYPE;
1157     l_cpa_id                  NUMBER;
1158     l_cpa_ovn                 NUMBER;
1159   BEGIN
1160     -- Standard start of API savepoint
1161     SAVEPOINT save_cpa_pvt;
1162 
1163     -- initialize API return status to success.
1164     x_return_status := FND_API.G_RET_STS_SUCCESS;
1165 
1166     -- Debug info.
1167     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1168         hz_utility_v2pub.debug(p_message=>'save_cust_profile_amts(+)',
1169                                p_prefix=>l_debug_prefix,
1170                                p_msg_level=>fnd_log.level_procedure);
1171     END IF;
1172 
1173     FOR i IN 1..p_cpa_objs.COUNT LOOP
1174     -- Update cust profile amount
1175       assign_cust_profile_amt_rec(
1176         p_cust_profile_amt_obj        => p_cpa_objs(i),
1177         p_cust_profile_id             => p_cp_id,
1178         p_cust_acct_id                => p_ca_id,
1179         p_site_use_id                 => p_casu_id,
1180         px_cust_profile_amt_rec       => l_cpa_rec
1181       );
1182 
1183       -- check if the role resp record is create or update
1184       hz_registry_validate_bo_pvt.check_cust_profile_amt_op(
1185         p_cust_profile_id          => p_cp_id,
1186         px_cust_acct_prof_amt_id   => l_cpa_rec.cust_acct_profile_amt_id,
1187         p_currency_code            => l_cpa_rec.currency_code,
1188         x_object_version_number => l_cpa_ovn
1189       );
1190 
1191       IF(l_cpa_ovn = -1) THEN
1192         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1193           hz_utility_v2pub.debug(p_message=>'Error occurred at hz_cust_acct_bo_pvt.check_cust_profile_amt_op, cust acct profile id: '||p_cp_id||' cust acct id: '||p_ca_id,
1194                                  p_prefix=>l_debug_prefix,
1195                                  p_msg_level=>fnd_log.level_procedure);
1196         END IF;
1197         FND_MESSAGE.SET_NAME('AR', 'HZ_API_INVALID_ID');
1198         FND_MSG_PUB.ADD;
1199         FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
1200         FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_CUST_PROFILE_AMTS');
1201         FND_MSG_PUB.ADD;
1202         RAISE FND_API.G_EXC_ERROR;
1203       END IF;
1204 
1205       IF(l_cpa_ovn IS NULL) THEN
1206         HZ_CUSTOMER_PROFILE_V2PUB.create_cust_profile_amt(
1207           p_check_foreign_key         => FND_API.G_FALSE,
1208           p_cust_profile_amt_rec      => l_cpa_rec,
1209           x_cust_acct_profile_amt_id  => l_cpa_id,
1210           x_return_status             => x_return_status,
1211           x_msg_count                 => x_msg_count,
1212           x_msg_data                  => x_msg_data
1213         );
1214 
1215         -- assign profile amount id
1216         p_cpa_objs(i).cust_acct_profile_amt_id := l_cpa_id;
1217       ELSE
1218         -- clean up created_by_module for update
1219         l_cpa_rec.created_by_module := NULL;
1220         HZ_CUSTOMER_PROFILE_V2PUB.update_cust_profile_amt(
1221           p_cust_profile_amt_rec      => l_cpa_rec,
1222           p_object_version_number     => l_cpa_ovn,
1223           x_return_status             => x_return_status,
1224           x_msg_count                 => x_msg_count,
1225           x_msg_data                  => x_msg_data
1226         );
1227 
1228         -- assign profile amount id
1229         p_cpa_objs(i).cust_acct_profile_amt_id := l_cpa_rec.cust_acct_profile_amt_id;
1230       END IF;
1231 
1232       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1233         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1234           hz_utility_v2pub.debug(p_message=>'Error occurred at hz_cust_acct_bo_pvt.save_cust_profile_amts, cust acct profile id: '||p_cp_id||' cust acct id: '||p_ca_id,
1235                                  p_prefix=>l_debug_prefix,
1236                                  p_msg_level=>fnd_log.level_procedure);
1237         END IF;
1238         RAISE FND_API.G_EXC_ERROR;
1239       END IF;
1240     END LOOP;
1241 
1242     -- Debug info.
1243     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1244          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1245                                p_msg_data=>x_msg_data,
1246                                p_msg_type=>'WARNING',
1247                                p_msg_level=>fnd_log.level_exception);
1248     END IF;
1249     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1250         hz_utility_v2pub.debug(p_message=>'save_cust_profile_amts(-)',
1251                                p_prefix=>l_debug_prefix,
1252                                p_msg_level=>fnd_log.level_procedure);
1253     END IF;
1254   EXCEPTION
1255     WHEN fnd_api.g_exc_error THEN
1256       ROLLBACK TO save_cpa_pvt;
1257       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
1258       FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_CUST_PROFILE_AMTS');
1259       FND_MSG_PUB.ADD;
1260 
1261       x_return_status := fnd_api.g_ret_sts_error;
1262 
1263       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1264                                 p_count => x_msg_count,
1265                                 p_data  => x_msg_data);
1266 
1267       -- Debug info.
1268       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1269         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1270                                p_msg_data=>x_msg_data,
1271                                p_msg_type=>'ERROR',
1272                                p_msg_level=>fnd_log.level_error);
1273       END IF;
1274       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1275         hz_utility_v2pub.debug(p_message=>'save_cust_profile_amts(-)',
1276                                p_prefix=>l_debug_prefix,
1277                                p_msg_level=>fnd_log.level_procedure);
1278       END IF;
1279 
1280     WHEN fnd_api.g_exc_unexpected_error THEN
1281       ROLLBACK TO save_cpa_pvt;
1282       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
1283       FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_CUST_PROFILE_AMTS');
1284       FND_MSG_PUB.ADD;
1285 
1286       x_return_status := fnd_api.g_ret_sts_unexp_error;
1287 
1288       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1289                                 p_count => x_msg_count,
1290                                 p_data  => x_msg_data);
1291 
1292       -- Debug info.
1293       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1294         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1295                                p_msg_data=>x_msg_data,
1296                                p_msg_type=>'UNEXPECTED ERROR',
1297                                p_msg_level=>fnd_log.level_error);
1298       END IF;
1299       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1300         hz_utility_v2pub.debug(p_message=>'save_cust_profile_amts(-)',
1301                                p_prefix=>l_debug_prefix,
1302                                p_msg_level=>fnd_log.level_procedure);
1303       END IF;
1304 
1305     WHEN OTHERS THEN
1306       ROLLBACK TO save_cpa_pvt;
1307       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
1308       FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_CUST_PROFILE_AMTS');
1309       FND_MSG_PUB.ADD;
1310 
1311       x_return_status := fnd_api.g_ret_sts_unexp_error;
1312 
1313       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1314       fnd_message.set_token('ERROR' ,SQLERRM);
1315       fnd_msg_pub.add;
1316 
1317       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1318                                 p_count => x_msg_count,
1319                                 p_data  => x_msg_data);
1320 
1321       -- Debug info.
1322       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1323         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1324                                p_msg_data=>x_msg_data,
1325                                p_msg_type=>'SQL ERROR',
1326                                p_msg_level=>fnd_log.level_error);
1327       END IF;
1328       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1329         hz_utility_v2pub.debug(p_message=>'save_cust_profile_amts(-)',
1330                                p_prefix=>l_debug_prefix,
1331                                p_msg_level=>fnd_log.level_procedure);
1332       END IF;
1333   END save_cust_profile_amts;
1334 
1335   -- PROCEDURE create_cust_acct_relates
1336   --
1337   -- DESCRIPTION
1338   --     Create customer account relationships.
1339   --
1340   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1341   --
1342   -- ARGUMENTS
1343   --   IN:
1344   --     p_car_objs           List of customer account relationship objects.
1345   --     p_ca_id              Customer account Id.
1346   --   OUT:
1347   --     x_return_status      Return status after the call. The status can
1348   --                          be fnd_api.g_ret_sts_success (success),
1349   --                          fnd_api.g_ret_sts_error (error),
1350   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
1351   --     x_msg_count          Number of messages in message stack.
1352   --     x_msg_data           Message text if x_msg_count is 1.
1353   --
1354   -- NOTES
1355   --
1356   -- MODIFICATION HISTORY
1357   --
1358   --   14-DEC-2004    Arnold Ng          Created.
1359 
1360   PROCEDURE create_cust_acct_relates(
1361     p_car_objs                IN OUT NOCOPY HZ_CUST_ACCT_RELATE_OBJ_TBL,
1362     p_ca_id                   IN            NUMBER,
1363     x_return_status           OUT NOCOPY    VARCHAR2,
1364     x_msg_count               OUT NOCOPY    NUMBER,
1365     x_msg_data                OUT NOCOPY    VARCHAR2
1366   ) IS
1367     l_debug_prefix            VARCHAR2(30) := '';
1368     l_car_rec                 HZ_CUST_ACCOUNT_V2PUB.CUST_ACCT_RELATE_REC_TYPE;
1369     l_rca_id                  NUMBER;
1370     l_rca_os                  VARCHAR2(30);
1371     l_rca_osr                 VARCHAR2(255);
1372   BEGIN
1373     -- Standard start of API savepoint
1374     SAVEPOINT create_car_pvt;
1375 
1376     -- initialize API return status to success.
1377     x_return_status := FND_API.G_RET_STS_SUCCESS;
1378 
1379     -- Debug info.
1380     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1381         hz_utility_v2pub.debug(p_message=>'create_cust_acct_relates(+)',
1382                                p_prefix=>l_debug_prefix,
1383                                p_msg_level=>fnd_log.level_procedure);
1384     END IF;
1385 
1386     -- Create cust account relates
1387     FOR i IN 1..p_car_objs.COUNT LOOP
1388       -- get related cust account id
1389       -- check if related cust account os and osr is valid
1390       l_rca_id := p_car_objs(i).related_cust_acct_id;
1391       l_rca_os := p_car_objs(i).related_cust_acct_os;
1392       l_rca_osr := p_car_objs(i).related_cust_acct_osr;
1393 
1394       -- check cust_account_id and os+osr
1395       hz_registry_validate_bo_pvt.validate_ssm_id(
1396         px_id              => l_rca_id,
1397         px_os              => l_rca_os,
1398         px_osr             => l_rca_osr,
1399         p_obj_type         => 'HZ_CUST_ACCOUNTS',
1400         p_create_or_update => 'U',
1401         x_return_status    => x_return_status,
1402         x_msg_count        => x_msg_count,
1403         x_msg_data         => x_msg_data);
1404 
1405       -- proceed if cust_account_id and os+osr are valid
1406       IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
1407         assign_cust_acct_relate_rec(
1408           p_cust_acct_relate_obj      => p_car_objs(i),
1409           p_cust_acct_id              => p_ca_id,
1410           p_related_cust_acct_id      => l_rca_id,
1411           px_cust_acct_relate_rec     => l_car_rec
1412         );
1413 
1414         HZ_CUST_ACCOUNT_V2PUB.create_cust_acct_relate(
1415           p_cust_acct_relate_rec      => l_car_rec,
1416           x_return_status             => x_return_status,
1417           x_msg_count                 => x_msg_count,
1418           x_msg_data                  => x_msg_data
1419         );
1420 
1421         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1422           IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1423             hz_utility_v2pub.debug(p_message=>'Error occurred at hz_cust_acct_bo_pvt.create_cust_acct_relates, cust acct id: '||p_ca_id||' related cust acct id: '||l_rca_id,
1424                                    p_prefix=>l_debug_prefix,
1425                                    p_msg_level=>fnd_log.level_procedure);
1426           END IF;
1427           RAISE FND_API.G_EXC_ERROR;
1428         END IF;
1429       ELSE
1430         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1431           hz_utility_v2pub.debug(p_message=>'Error occurred at hz_cust_acct_bo_pvt.create_cust_acct_relates, cust acct id: '||p_ca_id||' related cust acct id: '||l_rca_id,
1432                                  p_prefix=>l_debug_prefix,
1433                                  p_msg_level=>fnd_log.level_procedure);
1434         END IF;
1435         RAISE FND_API.G_EXC_ERROR;
1436       END IF;
1437     END LOOP;
1438 
1439     -- Debug info.
1440     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1441          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1442                                p_msg_data=>x_msg_data,
1443                                p_msg_type=>'WARNING',
1444                                p_msg_level=>fnd_log.level_exception);
1445     END IF;
1446     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1447         hz_utility_v2pub.debug(p_message=>'create_cust_acct_relates(-)',
1448                                p_prefix=>l_debug_prefix,
1449                                p_msg_level=>fnd_log.level_procedure);
1450     END IF;
1451   EXCEPTION
1452     WHEN fnd_api.g_exc_error THEN
1453       ROLLBACK TO create_car_pvt;
1454       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
1455       FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_CUST_ACCT_RELATE_ALL');
1456       FND_MSG_PUB.ADD;
1457 
1458       x_return_status := fnd_api.g_ret_sts_error;
1459 
1460       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1461                                 p_count => x_msg_count,
1462                                 p_data  => x_msg_data);
1463 
1464       -- Debug info.
1465       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1466         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1467                                p_msg_data=>x_msg_data,
1468                                p_msg_type=>'ERROR',
1469                                p_msg_level=>fnd_log.level_error);
1470       END IF;
1471       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1472         hz_utility_v2pub.debug(p_message=>'create_cust_acct_relates(-)',
1473                                p_prefix=>l_debug_prefix,
1474                                p_msg_level=>fnd_log.level_procedure);
1475       END IF;
1476 
1477     WHEN fnd_api.g_exc_unexpected_error THEN
1478       ROLLBACK TO create_car_pvt;
1479       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
1480       FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_CUST_ACCT_RELATE_ALL');
1481       FND_MSG_PUB.ADD;
1482 
1483       x_return_status := fnd_api.g_ret_sts_unexp_error;
1484 
1485       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1486                                 p_count => x_msg_count,
1487                                 p_data  => x_msg_data);
1488 
1489       -- Debug info.
1490       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1491         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1492                                p_msg_data=>x_msg_data,
1493                                p_msg_type=>'UNEXPECTED ERROR',
1494                                p_msg_level=>fnd_log.level_error);
1495       END IF;
1496       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1497         hz_utility_v2pub.debug(p_message=>'create_cust_acct_relates(-)',
1498                                p_prefix=>l_debug_prefix,
1499                                p_msg_level=>fnd_log.level_procedure);
1500       END IF;
1501 
1502     WHEN OTHERS THEN
1503       ROLLBACK TO create_car_pvt;
1504       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
1505       FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_CUST_ACCT_RELATE_ALL');
1506       FND_MSG_PUB.ADD;
1507 
1508       x_return_status := fnd_api.g_ret_sts_unexp_error;
1509 
1510       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1511       fnd_message.set_token('ERROR' ,SQLERRM);
1512       fnd_msg_pub.add;
1513 
1514       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1515                                 p_count => x_msg_count,
1516                                 p_data  => x_msg_data);
1517 
1518       -- Debug info.
1519       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1520         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1521                                p_msg_data=>x_msg_data,
1522                                p_msg_type=>'SQL ERROR',
1523                                p_msg_level=>fnd_log.level_error);
1524       END IF;
1525       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1526         hz_utility_v2pub.debug(p_message=>'create_cust_acct_relates(-)',
1527                                p_prefix=>l_debug_prefix,
1528                                p_msg_level=>fnd_log.level_procedure);
1529       END IF;
1530   END create_cust_acct_relates;
1531 
1532   -- PROCEDURE save_cust_acct_relates
1533   --
1534   -- DESCRIPTION
1535   --     Create or update customer account relationships.
1536   --
1537   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1538   --
1539   -- ARGUMENTS
1540   --   IN:
1541   --     p_car_objs           List of customer account relationship objects.
1542   --     p_ca_id              Customer account Id.
1543   --   OUT:
1544   --     x_return_status      Return status after the call. The status can
1545   --                          be fnd_api.g_ret_sts_success (success),
1546   --                          fnd_api.g_ret_sts_error (error),
1547   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
1548   --     x_msg_count          Number of messages in message stack.
1549   --     x_msg_data           Message text if x_msg_count is 1.
1550   --
1551   -- NOTES
1552   --
1553   -- MODIFICATION HISTORY
1554   --
1555   --   14-DEC-2004    Arnold Ng          Created.
1556 
1557   PROCEDURE save_cust_acct_relates(
1558     p_car_objs                IN OUT NOCOPY HZ_CUST_ACCT_RELATE_OBJ_TBL,
1559     p_ca_id                   IN            NUMBER,
1560     x_return_status           OUT NOCOPY    VARCHAR2,
1561     x_msg_count               OUT NOCOPY    NUMBER,
1562     x_msg_data                OUT NOCOPY    VARCHAR2
1563   ) IS
1564     l_debug_prefix             VARCHAR2(30) := '';
1565     l_car_rec                  HZ_CUST_ACCOUNT_V2PUB.CUST_ACCT_RELATE_REC_TYPE;
1566     l_rca_id                   NUMBER;
1567     l_rca_os                   VARCHAR2(30);
1568     l_rca_osr                  VARCHAR2(255);
1569     l_ovn                      NUMBER;
1570   BEGIN
1571     -- Standard start of API savepoint
1572     SAVEPOINT save_car_pvt;
1573 
1574     -- initialize API return status to success.
1575     x_return_status := FND_API.G_RET_STS_SUCCESS;
1576 
1577     -- Debug info.
1578     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1579         hz_utility_v2pub.debug(p_message=>'save_cust_acct_relates(+)',
1580                                p_prefix=>l_debug_prefix,
1581                                p_msg_level=>fnd_log.level_procedure);
1582     END IF;
1583 
1584     -- Create/Update cust account relate
1585     FOR i IN 1..p_car_objs.COUNT LOOP
1586       -- get related cust account id
1587       -- check if related cust account os and osr is valid
1588       l_rca_id := p_car_objs(i).related_cust_acct_id;
1589       l_rca_os := p_car_objs(i).related_cust_acct_os;
1590       l_rca_osr := p_car_objs(i).related_cust_acct_osr;
1591 
1592       -- check related cust_account_id and os+osr
1593       hz_registry_validate_bo_pvt.validate_ssm_id(
1594         px_id              => l_rca_id,
1595         px_os              => l_rca_os,
1596         px_osr             => l_rca_osr,
1597         p_obj_type         => 'HZ_CUST_ACCOUNTS',
1598         p_create_or_update => 'U',
1599         x_return_status    => x_return_status,
1600         x_msg_count        => x_msg_count,
1601         x_msg_data         => x_msg_data);
1602 
1603       -- proceed if cust_account_id and os+osr are valid
1604       IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
1605         assign_cust_acct_relate_rec(
1606           p_cust_acct_relate_obj        => p_car_objs(i),
1607           p_cust_acct_id                => p_ca_id,
1608           p_related_cust_acct_id        => l_rca_id,
1609           px_cust_acct_relate_rec       => l_car_rec
1610         );
1611 
1612         -- check if the role resp record is create or update
1613         hz_registry_validate_bo_pvt.check_cust_acct_relate_op(
1614           p_cust_acct_id             => p_ca_id,
1615           p_related_cust_acct_id     => l_rca_id,
1616  	  p_org_id                   => l_car_rec.org_id,
1617           x_object_version_number => l_ovn
1618         );
1619 
1620         IF(l_ovn IS NULL) THEN
1621           HZ_CUST_ACCOUNT_V2PUB.create_cust_acct_relate(
1622             p_cust_acct_relate_rec      => l_car_rec,
1623             x_return_status             => x_return_status,
1624             x_msg_count                 => x_msg_count,
1625             x_msg_data                  => x_msg_data
1626           );
1627         ELSE
1628           -- clean up created_by_module for update
1629           l_car_rec.created_by_module := NULL;
1630           HZ_CUST_ACCOUNT_V2PUB.update_cust_acct_relate(
1631             p_cust_acct_relate_rec      => l_car_rec,
1632             p_object_version_number     => l_ovn,
1633             x_return_status             => x_return_status,
1634             x_msg_count                 => x_msg_count,
1635             x_msg_data                  => x_msg_data
1636           );
1637         END IF;
1638 
1639         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1640           IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1641             hz_utility_v2pub.debug(p_message=>'Error occurred at hz_cust_acct_bo_pvt.save_cust_acct_relates, cust acct id: '||p_ca_id||' related cust acct id: '||l_rca_id,
1642                                    p_prefix=>l_debug_prefix,
1643                                    p_msg_level=>fnd_log.level_procedure);
1644           END IF;
1645           RAISE FND_API.G_EXC_ERROR;
1646         END IF;
1647       ELSE
1648         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1649           hz_utility_v2pub.debug(p_message=>'Error occurred at hz_cust_acct_bo_pvt.save_cust_acct_relates, cust acct id: '||p_ca_id||' related cust acct id: '||l_rca_id,
1650                                  p_prefix=>l_debug_prefix,
1651                                  p_msg_level=>fnd_log.level_procedure);
1652         END IF;
1653         RAISE FND_API.G_EXC_ERROR;
1654       END IF;
1655     END LOOP;
1656 
1657     -- Debug info.
1658     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1659          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1660                                p_msg_data=>x_msg_data,
1661                                p_msg_type=>'WARNING',
1662                                p_msg_level=>fnd_log.level_exception);
1663     END IF;
1664     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1665         hz_utility_v2pub.debug(p_message=>'save_cust_acct_relates(-)',
1666                                p_prefix=>l_debug_prefix,
1667                                p_msg_level=>fnd_log.level_procedure);
1668     END IF;
1669   EXCEPTION
1670     WHEN fnd_api.g_exc_error THEN
1671       ROLLBACK TO save_car_pvt;
1672       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
1673       FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_CUST_ACCT_RELATE_ALL');
1674       FND_MSG_PUB.ADD;
1675 
1676       x_return_status := fnd_api.g_ret_sts_error;
1677 
1678       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1679                                 p_count => x_msg_count,
1680                                 p_data  => x_msg_data);
1681 
1682       -- Debug info.
1683       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1684         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1685                                p_msg_data=>x_msg_data,
1686                                p_msg_type=>'ERROR',
1687                                p_msg_level=>fnd_log.level_error);
1688       END IF;
1689       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1690         hz_utility_v2pub.debug(p_message=>'save_cust_acct_relates(-)',
1691                                p_prefix=>l_debug_prefix,
1692                                p_msg_level=>fnd_log.level_procedure);
1693       END IF;
1694 
1695     WHEN fnd_api.g_exc_unexpected_error THEN
1696       ROLLBACK TO save_car_pvt;
1697       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
1698       FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_CUST_ACCT_RELATE_ALL');
1699       FND_MSG_PUB.ADD;
1700 
1701       x_return_status := fnd_api.g_ret_sts_unexp_error;
1702 
1703       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1704                                 p_count => x_msg_count,
1705                                 p_data  => x_msg_data);
1706 
1707       -- Debug info.
1708       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1709         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1710                                p_msg_data=>x_msg_data,
1711                                p_msg_type=>'UNEXPECTED ERROR',
1712                                p_msg_level=>fnd_log.level_error);
1713       END IF;
1714       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1715         hz_utility_v2pub.debug(p_message=>'save_cust_acct_relates(-)',
1716                                p_prefix=>l_debug_prefix,
1717                                p_msg_level=>fnd_log.level_procedure);
1718       END IF;
1719 
1720     WHEN OTHERS THEN
1721       ROLLBACK TO save_car_pvt;
1722       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
1723       FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_CUST_ACCT_RELATE_ALL');
1724       FND_MSG_PUB.ADD;
1725 
1726       x_return_status := fnd_api.g_ret_sts_unexp_error;
1727 
1728       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1729       fnd_message.set_token('ERROR' ,SQLERRM);
1730       fnd_msg_pub.add;
1731 
1732       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1733                                 p_count => x_msg_count,
1734                                 p_data  => x_msg_data);
1735 
1736       -- Debug info.
1737       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1738         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1739                                p_msg_data=>x_msg_data,
1740                                p_msg_type=>'SQL ERROR',
1741                                p_msg_level=>fnd_log.level_error);
1742       END IF;
1743       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1744         hz_utility_v2pub.debug(p_message=>'save_cust_acct_relates(-)',
1745                                p_prefix=>l_debug_prefix,
1746                                p_msg_level=>fnd_log.level_procedure);
1747       END IF;
1748   END save_cust_acct_relates;
1749 
1750   -- PROCEDURE save_bank_acct_uses
1751   --
1752   -- DESCRIPTION
1753   --     Create or update bank account assignments.
1754   --
1755   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1756   --
1757   -- ARGUMENTS
1758   --   IN:
1759   --     p_bank_acct_use_objs List of bank account assignment objects.
1760   --     p_party_id           Party Id.
1761   --     p_ca_id              Customer account Id.
1762   --     p_casu_id            Customer account site use Id.
1763   --   OUT:
1764   --     x_return_status      Return status after the call. The status can
1765   --                          be fnd_api.g_ret_sts_success (success),
1766   --                          fnd_api.g_ret_sts_error (error),
1767   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
1768   --     x_msg_count          Number of messages in message stack.
1769   --     x_msg_data           Message text if x_msg_count is 1.
1770   --
1771   -- NOTES
1772   --
1773   -- MODIFICATION HISTORY
1774   --
1775   --   14-DEC-2004    Arnold Ng          Created.
1776 
1777   PROCEDURE save_bank_acct_uses(
1778     p_bank_acct_use_objs      IN OUT NOCOPY HZ_BANK_ACCT_USE_OBJ_TBL,
1779     p_party_id                IN            NUMBER,
1780     p_ca_id                   IN            NUMBER,
1781     p_casu_id                 IN            NUMBER,
1782     x_return_status           OUT NOCOPY    VARCHAR2,
1783     x_msg_count               OUT NOCOPY    NUMBER,
1784     x_msg_data                OUT NOCOPY    VARCHAR2
1785   ) IS
1786     l_debug_prefix             VARCHAR2(30) := '';
1787     l_payer_context_rec        IBY_FNDCPT_COMMON_PUB.PayerContext_Rec_Type;
1788     l_pmtinstrument_rec        IBY_FNDCPT_SETUP_PUB.PmtInstrAssignment_Rec_Type;
1789     l_assign_id                NUMBER;
1790     l_response                 IBY_FNDCPT_COMMON_PUB.Result_Rec_Type;
1791   BEGIN
1792     -- Standard start of API savepoint
1793     SAVEPOINT save_bau_pvt;
1794 
1795     -- initialize API return status to success.
1796     x_return_status := FND_API.G_RET_STS_SUCCESS;
1797 
1798     -- Debug info.
1799     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1800         hz_utility_v2pub.debug(p_message=>'save_bank_acct_uses(+)',
1801                                p_prefix=>l_debug_prefix,
1802                                p_msg_level=>fnd_log.level_procedure);
1803     END IF;
1804 
1805     FOR i IN 1..p_bank_acct_use_objs.COUNT LOOP
1806       assign_bank_acct_use_rec(
1807         p_bank_acct_use_obj          => p_bank_acct_use_objs(i),
1808         p_party_id                   => p_party_id,
1809         p_cust_acct_id               => p_ca_id,
1810         p_site_use_id                => p_casu_id,
1811         px_payer_context_rec         => l_payer_context_rec,
1812         px_pmtinstrument_rec         => l_pmtinstrument_rec
1813       );
1814 
1815       IBY_FNDCPT_SETUP_PUB.Set_Payer_Instr_Assignment(
1816         p_api_version                => 1.0,
1817         p_commit                     => FND_API.G_FALSE,
1818         x_return_status              => x_return_status,
1819         x_msg_count                  => x_msg_count,
1820         x_msg_data                   => x_msg_data,
1821         p_payer                      => l_payer_context_rec,
1822         p_assignment_attribs         => l_pmtinstrument_rec,
1823         x_assign_id                  => l_assign_id,
1824         x_response                   => l_response
1825       );
1826 
1827       -- assign bank_acct_use_id
1828       p_bank_acct_use_objs(i).bank_acct_use_id := l_assign_id;
1829 
1830       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1831         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1832           hz_utility_v2pub.debug(p_message=>'Error occurred at hz_cust_acct_bo_pvt.save_bank_acct_uses, cust acct id: '||p_ca_id||' cust site use id: '||p_casu_id,
1833                                  p_prefix=>l_debug_prefix,
1834                                  p_msg_level=>fnd_log.level_procedure);
1835         END IF;
1836         RAISE FND_API.G_EXC_ERROR;
1837       END IF;
1838     END LOOP;
1839 
1840     -- Debug info.
1841     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1842          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1843                                p_msg_data=>x_msg_data,
1844                                p_msg_type=>'WARNING',
1845                                p_msg_level=>fnd_log.level_exception);
1846     END IF;
1847     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1848         hz_utility_v2pub.debug(p_message=>'save_bank_acct_uses(-)',
1849                                p_prefix=>l_debug_prefix,
1850                                p_msg_level=>fnd_log.level_procedure);
1851     END IF;
1852   EXCEPTION
1853     WHEN fnd_api.g_exc_error THEN
1854       ROLLBACK TO save_bau_pvt;
1855       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
1856       FND_MESSAGE.SET_TOKEN('ENTITY', 'IBY_FNDCPT_PAYER_ASSGN_INSTR_V');
1857       FND_MSG_PUB.ADD;
1858 
1859       x_return_status := fnd_api.g_ret_sts_error;
1860 
1861       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1862                                 p_count => x_msg_count,
1863                                 p_data  => x_msg_data);
1864 
1865       -- Debug info.
1866       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1867         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1868                                p_msg_data=>x_msg_data,
1869                                p_msg_type=>'ERROR',
1870                                p_msg_level=>fnd_log.level_error);
1871       END IF;
1872       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1873         hz_utility_v2pub.debug(p_message=>'save_bank_acct_uses(-)',
1874                                p_prefix=>l_debug_prefix,
1875                                p_msg_level=>fnd_log.level_procedure);
1876       END IF;
1877 
1878     WHEN fnd_api.g_exc_unexpected_error THEN
1879       ROLLBACK TO save_bau_pvt;
1880       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
1881       FND_MESSAGE.SET_TOKEN('ENTITY', 'IBY_FNDCPT_PAYER_ASSGN_INSTR_V');
1882       FND_MSG_PUB.ADD;
1883 
1884       x_return_status := fnd_api.g_ret_sts_unexp_error;
1885 
1886       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1887                                 p_count => x_msg_count,
1888                                 p_data  => x_msg_data);
1889 
1890       -- Debug info.
1891       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1892         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1893                                p_msg_data=>x_msg_data,
1894                                p_msg_type=>'UNEXPECTED ERROR',
1895                                p_msg_level=>fnd_log.level_error);
1896       END IF;
1897       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1898         hz_utility_v2pub.debug(p_message=>'save_bank_acct_uses(-)',
1899                                p_prefix=>l_debug_prefix,
1900                                p_msg_level=>fnd_log.level_procedure);
1901       END IF;
1902 
1903     WHEN OTHERS THEN
1904       ROLLBACK TO save_bau_pvt;
1905       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
1906       FND_MESSAGE.SET_TOKEN('ENTITY', 'IBY_FNDCPT_PAYER_ASSGN_INSTR_V');
1907       FND_MSG_PUB.ADD;
1908 
1909       x_return_status := fnd_api.g_ret_sts_unexp_error;
1910 
1911       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1912       fnd_message.set_token('ERROR' ,SQLERRM);
1913       fnd_msg_pub.add;
1914 
1915       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1916                                 p_count => x_msg_count,
1917                                 p_data  => x_msg_data);
1918 
1919       -- Debug info.
1920       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1921         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1922                                p_msg_data=>x_msg_data,
1923                                p_msg_type=>'SQL ERROR',
1924                                p_msg_level=>fnd_log.level_error);
1925       END IF;
1926       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1927         hz_utility_v2pub.debug(p_message=>'save_bank_acct_uses(-)',
1928                                p_prefix=>l_debug_prefix,
1929                                p_msg_level=>fnd_log.level_procedure);
1930       END IF;
1931   END save_bank_acct_uses;
1932 
1933   -- PROCEDURE create_payment_method
1934   --
1935   -- DESCRIPTION
1936   --     Create payment method.
1937   --
1938   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1939   --
1940   -- ARGUMENTS
1941   --   IN:
1942   --     p_payment_method_obj Payment method object.
1943   --     p_ca_id              Customer account Id.
1944   --     p_casu_id            Customer account site use Id.
1945   --   OUT:
1946   --     x_return_status      Return status after the call. The status can
1947   --                          be fnd_api.g_ret_sts_success (success),
1948   --                          fnd_api.g_ret_sts_error (error),
1949   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
1950   --     x_msg_count          Number of messages in message stack.
1951   --     x_msg_data           Message text if x_msg_count is 1.
1952   --
1953   -- NOTES
1954   --
1955   -- MODIFICATION HISTORY
1956   --
1957   --   14-DEC-2004    Arnold Ng          Created.
1958 
1959   PROCEDURE create_payment_method(
1960     p_payment_method_obj      IN OUT NOCOPY HZ_PAYMENT_METHOD_OBJ,
1961     p_ca_id                   IN            NUMBER,
1962     p_casu_id                 IN            NUMBER,
1963     x_return_status           OUT NOCOPY    VARCHAR2,
1964     x_msg_count               OUT NOCOPY    NUMBER,
1965     x_msg_data                OUT NOCOPY    VARCHAR2
1966   ) IS
1967     l_debug_prefix                 VARCHAR2(30) := '';
1968     l_payment_method_rec           HZ_PAYMENT_METHOD_PUB.PAYMENT_METHOD_REC_TYPE;
1969     l_pm_id                        NUMBER;
1970   BEGIN
1971     -- Standard start of API savepoint
1972     SAVEPOINT create_pm_pvt;
1973 
1974     -- initialize API return status to success.
1975     x_return_status := FND_API.G_RET_STS_SUCCESS;
1976 
1977     -- Debug info.
1978     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1979         hz_utility_v2pub.debug(p_message=>'create_payment_method(+)',
1980                                p_prefix=>l_debug_prefix,
1981                                p_msg_level=>fnd_log.level_procedure);
1982     END IF;
1983 
1984     assign_payment_method_rec(
1985       p_payment_method_obj         => p_payment_method_obj,
1986       p_cust_acct_id               => p_ca_id,
1987       p_site_use_id                => p_casu_id,
1988       px_payment_method_rec        => l_payment_method_rec
1989     );
1990 
1991     HZ_PAYMENT_METHOD_PUB.create_payment_method(
1992       p_payment_method_rec         => l_payment_method_rec,
1993       x_cust_receipt_method_id     => l_pm_id,
1994       x_return_status              => x_return_status,
1995       x_msg_count                  => x_msg_count,
1996       x_msg_data                   => x_msg_data
1997     );
1998 
1999     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2000       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2001         hz_utility_v2pub.debug(p_message=>'Error occurred at hz_cust_acct_bo_pvt.create_payment_method, cust acct id: '||p_ca_id||' cust site use id: '||p_casu_id,
2002                                p_prefix=>l_debug_prefix,
2003                                p_msg_level=>fnd_log.level_procedure);
2004       END IF;
2005       RAISE FND_API.G_EXC_ERROR;
2006     END IF;
2007 
2008     -- assign payment_method_id
2009      p_payment_method_obj.payment_method_id := l_pm_id;
2010 
2011     -- Debug info.
2012     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
2013          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2014                                p_msg_data=>x_msg_data,
2015                                p_msg_type=>'WARNING',
2016                                p_msg_level=>fnd_log.level_exception);
2017     END IF;
2018     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2019         hz_utility_v2pub.debug(p_message=>'create_payment_method(-)',
2020                                p_prefix=>l_debug_prefix,
2021                                p_msg_level=>fnd_log.level_procedure);
2022     END IF;
2023   EXCEPTION
2024     WHEN fnd_api.g_exc_error THEN
2025       ROLLBACK TO create_pm_pvt;
2026       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2027       FND_MESSAGE.SET_TOKEN('ENTITY', 'RA_CUST_RECEIPT_METHODS');
2028       FND_MSG_PUB.ADD;
2029 
2030       x_return_status := fnd_api.g_ret_sts_error;
2031 
2032       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2033                                 p_count => x_msg_count,
2034                                 p_data  => x_msg_data);
2035 
2036       -- Debug info.
2037       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2038         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2039                                p_msg_data=>x_msg_data,
2040                                p_msg_type=>'ERROR',
2041                                p_msg_level=>fnd_log.level_error);
2042       END IF;
2043       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2044         hz_utility_v2pub.debug(p_message=>'create_payment_method(-)',
2045                                p_prefix=>l_debug_prefix,
2046                                p_msg_level=>fnd_log.level_procedure);
2047       END IF;
2048 
2049     WHEN fnd_api.g_exc_unexpected_error THEN
2050       ROLLBACK TO create_pm_pvt;
2051       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2052       FND_MESSAGE.SET_TOKEN('ENTITY', 'RA_CUST_RECEIPT_METHODS');
2053       FND_MSG_PUB.ADD;
2054 
2055       x_return_status := fnd_api.g_ret_sts_unexp_error;
2056 
2057       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2058                                 p_count => x_msg_count,
2059                                 p_data  => x_msg_data);
2060 
2061       -- Debug info.
2062       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2063         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2064                                p_msg_data=>x_msg_data,
2065                                p_msg_type=>'UNEXPECTED ERROR',
2066                                p_msg_level=>fnd_log.level_error);
2067       END IF;
2068       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2069         hz_utility_v2pub.debug(p_message=>'create_payment_method(-)',
2070                                p_prefix=>l_debug_prefix,
2071                                p_msg_level=>fnd_log.level_procedure);
2072       END IF;
2073 
2074     WHEN OTHERS THEN
2075       ROLLBACK TO create_pm_pvt;
2076       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2077       FND_MESSAGE.SET_TOKEN('ENTITY', 'RA_CUST_RECEIPT_METHODS');
2078       FND_MSG_PUB.ADD;
2079 
2080       x_return_status := fnd_api.g_ret_sts_unexp_error;
2081 
2082       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
2083       fnd_message.set_token('ERROR' ,SQLERRM);
2084       fnd_msg_pub.add;
2085 
2086       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2087                                 p_count => x_msg_count,
2088                                 p_data  => x_msg_data);
2089 
2090       -- Debug info.
2091       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2092         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2093                                p_msg_data=>x_msg_data,
2094                                p_msg_type=>'SQL ERROR',
2095                                p_msg_level=>fnd_log.level_error);
2096       END IF;
2097       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2098         hz_utility_v2pub.debug(p_message=>'create_payment_method(-)',
2099                                p_prefix=>l_debug_prefix,
2100                                p_msg_level=>fnd_log.level_procedure);
2101       END IF;
2102   END create_payment_method;
2103 
2104   -- PROCEDURE save_payment_method
2105   --
2106   -- DESCRIPTION
2107   --     Create or update payment method.
2108   --
2109   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2110   --
2111   -- ARGUMENTS
2112   --   IN:
2113   --     p_payment_method_obj Payment method object.
2114   --     p_ca_id              Customer account Id.
2115   --     p_casu_id            Customer account site use Id.
2116   --   OUT:
2117   --     x_return_status      Return status after the call. The status can
2118   --                          be fnd_api.g_ret_sts_success (success),
2119   --                          fnd_api.g_ret_sts_error (error),
2120   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
2121   --     x_msg_count          Number of messages in message stack.
2122   --     x_msg_data           Message text if x_msg_count is 1.
2123   --
2124   -- NOTES
2125   --
2126   -- MODIFICATION HISTORY
2127   --
2128   --   14-DEC-2004    Arnold Ng          Created.
2129 
2130   PROCEDURE save_payment_method(
2131     p_payment_method_obj      IN OUT NOCOPY HZ_PAYMENT_METHOD_OBJ,
2132     p_ca_id                   IN            NUMBER,
2133     p_casu_id                 IN            NUMBER,
2134     x_return_status           OUT NOCOPY    VARCHAR2,
2135     x_msg_count               OUT NOCOPY    NUMBER,
2136     x_msg_data                OUT NOCOPY    VARCHAR2
2137   ) IS
2138     l_debug_prefix                 VARCHAR2(30) := '';
2139     l_payment_method_rec           HZ_PAYMENT_METHOD_PUB.PAYMENT_METHOD_REC_TYPE;
2140     l_lud                          DATE;
2141     l_pm_id                        NUMBER;
2142   BEGIN
2143     -- Standard start of API savepoint
2144     SAVEPOINT save_pm_pvt;
2145 
2146     -- initialize API return status to success.
2147     x_return_status := FND_API.G_RET_STS_SUCCESS;
2148 
2149     -- Debug info.
2150     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2151         hz_utility_v2pub.debug(p_message=>'save_payment_method(+)',
2152                                p_prefix=>l_debug_prefix,
2153                                p_msg_level=>fnd_log.level_procedure);
2154     END IF;
2155 
2156     assign_payment_method_rec(
2157       p_payment_method_obj         => p_payment_method_obj,
2158       p_cust_acct_id               => p_ca_id,
2159       p_site_use_id                => p_casu_id,
2160       px_payment_method_rec        => l_payment_method_rec
2161     );
2162 
2163     hz_registry_validate_bo_pvt.check_payment_method_op(
2164       p_cust_receipt_method_id     => l_payment_method_rec.cust_receipt_method_id,
2165       x_last_update_date           => l_lud
2166     );
2167 
2168     IF(l_lud IS NULL) THEN
2169       HZ_PAYMENT_METHOD_PUB.create_payment_method(
2170         p_payment_method_rec         => l_payment_method_rec,
2171         x_cust_receipt_method_id     => l_pm_id,
2172         x_return_status              => x_return_status,
2173         x_msg_count                  => x_msg_count,
2174         x_msg_data                   => x_msg_data
2175       );
2176 
2177       -- assign payment_method_id
2178       p_payment_method_obj.payment_method_id := l_pm_id;
2179     ELSE
2180       HZ_PAYMENT_METHOD_PUB.update_payment_method(
2181         p_payment_method_rec         => l_payment_method_rec,
2182         px_last_update_date          => l_lud,
2183         x_return_status              => x_return_status,
2184         x_msg_count                  => x_msg_count,
2185         x_msg_data                   => x_msg_data
2186       );
2187 
2188       -- assign payment_method_id
2189       p_payment_method_obj.payment_method_id := l_payment_method_rec.cust_receipt_method_id;
2190     END IF;
2191 
2192     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2193       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2194         hz_utility_v2pub.debug(p_message=>'Error occurred at hz_cust_acct_bo_pvt.save_payment_method, cust acct id: '||p_ca_id||' cust site use id: '||p_casu_id,
2195                                p_prefix=>l_debug_prefix,
2196                                p_msg_level=>fnd_log.level_procedure);
2197       END IF;
2198       RAISE FND_API.G_EXC_ERROR;
2199     END IF;
2200 
2201     -- Debug info.
2202     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
2203          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2204                                p_msg_data=>x_msg_data,
2205                                p_msg_type=>'WARNING',
2206                                p_msg_level=>fnd_log.level_exception);
2207     END IF;
2208     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2209         hz_utility_v2pub.debug(p_message=>'save_payment_method(-)',
2210                                p_prefix=>l_debug_prefix,
2211                                p_msg_level=>fnd_log.level_procedure);
2212     END IF;
2213   EXCEPTION
2214     WHEN fnd_api.g_exc_error THEN
2215       ROLLBACK TO save_pm_pvt;
2216       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2217       FND_MESSAGE.SET_TOKEN('ENTITY', 'RA_CUST_RECEIPT_METHODS');
2218       FND_MSG_PUB.ADD;
2219 
2220       x_return_status := fnd_api.g_ret_sts_error;
2221 
2222       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2223                                 p_count => x_msg_count,
2224                                 p_data  => x_msg_data);
2225 
2226       -- Debug info.
2227       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2228         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2229                                p_msg_data=>x_msg_data,
2230                                p_msg_type=>'ERROR',
2231                                p_msg_level=>fnd_log.level_error);
2232       END IF;
2233       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2234         hz_utility_v2pub.debug(p_message=>'save_payment_method(-)',
2235                                p_prefix=>l_debug_prefix,
2236                                p_msg_level=>fnd_log.level_procedure);
2237       END IF;
2238 
2239     WHEN fnd_api.g_exc_unexpected_error THEN
2240       ROLLBACK TO save_pm_pvt;
2241       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2242       FND_MESSAGE.SET_TOKEN('ENTITY', 'RA_CUST_RECEIPT_METHODS');
2243       FND_MSG_PUB.ADD;
2244 
2245       x_return_status := fnd_api.g_ret_sts_unexp_error;
2246 
2247       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2248                                 p_count => x_msg_count,
2249                                 p_data  => x_msg_data);
2250 
2251       -- Debug info.
2252       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2253         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2254                                p_msg_data=>x_msg_data,
2255                                p_msg_type=>'UNEXPECTED ERROR',
2256                                p_msg_level=>fnd_log.level_error);
2257       END IF;
2258       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2259         hz_utility_v2pub.debug(p_message=>'save_payment_method(-)',
2260                                p_prefix=>l_debug_prefix,
2261                                p_msg_level=>fnd_log.level_procedure);
2262       END IF;
2263 
2264     WHEN OTHERS THEN
2265       ROLLBACK TO save_pm_pvt;
2266       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2267       FND_MESSAGE.SET_TOKEN('ENTITY', 'RA_CUST_RECEIPT_METHODS');
2268       FND_MSG_PUB.ADD;
2269 
2270       x_return_status := fnd_api.g_ret_sts_unexp_error;
2271 
2272       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
2273       fnd_message.set_token('ERROR' ,SQLERRM);
2274       fnd_msg_pub.add;
2275 
2276       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2277                                 p_count => x_msg_count,
2278                                 p_data  => x_msg_data);
2279 
2280       -- Debug info.
2281       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2282         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2283                                p_msg_data=>x_msg_data,
2284                                p_msg_type=>'SQL ERROR',
2285                                p_msg_level=>fnd_log.level_error);
2286       END IF;
2287       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2288         hz_utility_v2pub.debug(p_message=>'save_payment_method(-)',
2289                                p_prefix=>l_debug_prefix,
2290                                p_msg_level=>fnd_log.level_procedure);
2291       END IF;
2292   END save_payment_method;
2293 
2294   -- PROCEDURE save_cust_accts
2295   --
2296   -- DESCRIPTION
2297   --     Create or update customer accounts.
2298   --
2299   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2300   --
2301   -- ARGUMENTS
2302   --   IN:
2303   --     p_ca_objs            List of customer account objects.
2304   --     p_create_update_flag Create or update flag.
2305   --     p_parent_id          Parent Id.
2306   --     p_parent_os          Parent original system.
2307   --     p_parent_osr         Parent original system reference.
2308   --     p_parent_obj_type    Parent object type.
2309   --   OUT:
2310   --     x_return_status      Return status after the call. The status can
2311   --                          be fnd_api.g_ret_sts_success (success),
2312   --                          fnd_api.g_ret_sts_error (error),
2313   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
2314   --     x_msg_count          Number of messages in message stack.
2315   --     x_msg_data           Message text if x_msg_count is 1.
2316   --
2317   -- NOTES
2318   --
2319   -- MODIFICATION HISTORY
2320   --
2321   --   14-DEC-2004    Arnold Ng          Created.
2322 
2323   PROCEDURE save_cust_accts(
2324     p_ca_objs                 IN OUT NOCOPY HZ_CUST_ACCT_BO_TBL,
2325     p_create_update_flag      IN            VARCHAR2,
2326     p_obj_source              IN            VARCHAR2 := null,
2327     x_return_status           OUT NOCOPY    VARCHAR2,
2328     x_msg_count               OUT NOCOPY    NUMBER,
2329     x_msg_data                OUT NOCOPY    VARCHAR2,
2330     p_parent_id               IN            NUMBER,
2331     p_parent_os               IN            VARCHAR2,
2332     p_parent_osr              IN            VARCHAR2,
2333     p_parent_obj_type         IN            VARCHAR2
2334   ) IS
2335     l_debug_prefix            VARCHAR2(30) := '';
2336     l_ca_id                   NUMBER;
2337     l_ca_os                   VARCHAR2(30);
2338     l_ca_osr                  VARCHAR2(255);
2339     l_parent_id               NUMBER;
2340     l_parent_os               VARCHAR2(30);
2341     l_parent_osr              VARCHAR2(255);
2342     l_parent_obj_type         VARCHAR2(30);
2343     l_cbm                     VARCHAR2(30);
2344   BEGIN
2345     -- initialize API return status to success
2346     x_return_status := FND_API.G_RET_STS_SUCCESS;
2347 
2348     -- Debug info.
2349     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2350         hz_utility_v2pub.debug(p_message=>'save_cust_accts(+)',
2351                                p_prefix=>l_debug_prefix,
2352                                p_msg_level=>fnd_log.level_procedure);
2353     END IF;
2354 
2355     l_parent_id := p_parent_id;
2356     l_parent_os := p_parent_os;
2357     l_parent_osr := p_parent_osr;
2358     l_parent_obj_type := p_parent_obj_type;
2359 
2360     l_cbm := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
2361 
2362     IF(p_create_update_flag = 'C') THEN
2363       -- Create cust accounts
2364       FOR i IN 1..p_ca_objs.COUNT LOOP
2365         HZ_CUST_ACCT_BO_PUB.do_create_cust_acct_bo(
2366           p_validate_bo_flag        => fnd_api.g_false,
2367           p_cust_acct_obj           => p_ca_objs(i),
2368           p_created_by_module       => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
2369           p_obj_source              => p_obj_source,
2370           x_return_status           => x_return_status,
2371           x_msg_count               => x_msg_count,
2372           x_msg_data                => x_msg_data,
2373           x_cust_acct_id            => l_ca_id,
2374           x_cust_acct_os            => l_ca_os,
2375           x_cust_acct_osr           => l_ca_osr,
2376           px_parent_id              => l_parent_id,
2377           px_parent_os              => l_parent_os,
2378           px_parent_osr             => l_parent_osr,
2379           px_parent_obj_type        => l_parent_obj_type
2380         );
2381 
2382         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2383           IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2384             hz_utility_v2pub.debug(p_message=>'Create error occurred at hz_cust_acct_bo_pvt.save_cust_accts, parent id: '||l_parent_id||' '||l_parent_os||'-'||l_parent_osr,
2385                                    p_prefix=>l_debug_prefix,
2386                                    p_msg_level=>fnd_log.level_procedure);
2387           END IF;
2388           RAISE FND_API.G_EXC_ERROR;
2389         END IF;
2390 
2391         HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
2392       END LOOP;
2393     ELSE
2394       -- Create/update cust accounts
2395       FOR i IN 1..p_ca_objs.COUNT LOOP
2396         HZ_CUST_ACCT_BO_PUB.do_save_cust_acct_bo(
2397           p_validate_bo_flag        => fnd_api.g_false,
2398           p_cust_acct_obj           => p_ca_objs(i),
2399           p_created_by_module       => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
2400           p_obj_source              => p_obj_source,
2401           x_return_status           => x_return_status,
2402           x_msg_count               => x_msg_count,
2403           x_msg_data                => x_msg_data,
2404           x_cust_acct_id            => l_ca_id,
2405           x_cust_acct_os            => l_ca_os,
2406           x_cust_acct_osr           => l_ca_osr,
2407           px_parent_id              => l_parent_id,
2408           px_parent_os              => l_parent_os,
2409           px_parent_osr             => l_parent_osr,
2410           px_parent_obj_type        => l_parent_obj_type
2411         );
2412 
2413         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2414           IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2415             hz_utility_v2pub.debug(p_message=>'Save error occurred at hz_cust_acct_bo_pvt.save_cust_accts, parent id: '||l_parent_id||' '||l_parent_os||'-'||l_parent_osr,
2416                                    p_prefix=>l_debug_prefix,
2417                                    p_msg_level=>fnd_log.level_procedure);
2418           END IF;
2419           RAISE FND_API.G_EXC_ERROR;
2420         END IF;
2421 
2422         HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
2423       END LOOP;
2424     END IF;
2425 
2426     -- Debug info.
2427     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
2428          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2429                                p_msg_data=>x_msg_data,
2430                                p_msg_type=>'WARNING',
2431                                p_msg_level=>fnd_log.level_exception);
2432     END IF;
2433     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2434         hz_utility_v2pub.debug(p_message=>'save_cust_accts(-)',
2435                                p_prefix=>l_debug_prefix,
2436                                p_msg_level=>fnd_log.level_procedure);
2437     END IF;
2438   EXCEPTION
2439     WHEN fnd_api.g_exc_error THEN
2440       x_return_status := fnd_api.g_ret_sts_error;
2441 
2442       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2443                                 p_count => x_msg_count,
2444                                 p_data  => x_msg_data);
2445 
2446       -- Debug info.
2447       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2448         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2449                                p_msg_data=>x_msg_data,
2450                                p_msg_type=>'ERROR',
2451                                p_msg_level=>fnd_log.level_error);
2452       END IF;
2453       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2454         hz_utility_v2pub.debug(p_message=>'save_cust_accts(-)',
2455                                p_prefix=>l_debug_prefix,
2456                                p_msg_level=>fnd_log.level_procedure);
2457       END IF;
2458     WHEN fnd_api.g_exc_unexpected_error THEN
2459       x_return_status := fnd_api.g_ret_sts_unexp_error;
2460 
2461       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2462                                 p_count => x_msg_count,
2463                                 p_data  => x_msg_data);
2464 
2465       -- Debug info.
2466       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2467         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2468                                p_msg_data=>x_msg_data,
2469                                p_msg_type=>'UNEXPECTED ERROR',
2470                                p_msg_level=>fnd_log.level_error);
2471       END IF;
2472       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2473         hz_utility_v2pub.debug(p_message=>'save_cust_accts(-)',
2474                                p_prefix=>l_debug_prefix,
2475                                p_msg_level=>fnd_log.level_procedure);
2476       END IF;
2477     WHEN OTHERS THEN
2478       x_return_status := fnd_api.g_ret_sts_unexp_error;
2479 
2480       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
2481       fnd_message.set_token('ERROR' ,SQLERRM);
2482       fnd_msg_pub.add;
2483 
2484       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2485                                 p_count => x_msg_count,
2486                                 p_data  => x_msg_data);
2487 
2488       -- Debug info.
2489       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2490         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2491                                p_msg_data=>x_msg_data,
2492                                p_msg_type=>'SQL ERROR',
2493                                p_msg_level=>fnd_log.level_error);
2494       END IF;
2495       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2496         hz_utility_v2pub.debug(p_message=>'save_cust_accts(-)',
2497                                p_prefix=>l_debug_prefix,
2498                                p_msg_level=>fnd_log.level_procedure);
2499       END IF;
2500   END save_cust_accts;
2501 
2502   -- PROCEDURE create_payment_methods
2503   --
2504   -- DESCRIPTION
2505   --     Create payment methods.
2506   --
2507   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2508   --
2509   -- ARGUMENTS
2510   --   IN:
2511   --     p_payment_method_objs Payment method objects.
2512   --     p_ca_id              Customer account Id.
2513   --     p_casu_id            Customer account site use Id.
2514   --   OUT:
2515   --     x_return_status      Return status after the call. The status can
2516   --                          be fnd_api.g_ret_sts_success (success),
2517   --                          fnd_api.g_ret_sts_error (error),
2518   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
2519   --     x_msg_count          Number of messages in message stack.
2520   --     x_msg_data           Message text if x_msg_count is 1.
2521   --
2522   -- NOTES
2523   --
2524   -- MODIFICATION HISTORY
2525   --
2526   --   1-FEB-2008    vsegu          Created.
2527 
2528   PROCEDURE create_payment_methods(
2529     p_payment_method_objs      IN OUT NOCOPY HZ_PAYMENT_METHOD_OBJ_TBL,
2530     p_ca_id                   IN            NUMBER,
2531     p_casu_id                 IN            NUMBER,
2532     x_return_status           OUT NOCOPY    VARCHAR2,
2533     x_msg_count               OUT NOCOPY    NUMBER,
2534     x_msg_data                OUT NOCOPY    VARCHAR2
2535   ) IS
2536    l_debug_prefix                 VARCHAR2(30) := '';
2537   BEGIN
2538     -- Standard start of API savepoint
2539     SAVEPOINT create_pms_v2_pvt;
2540 
2541     -- initialize API return status to success.
2542     x_return_status := FND_API.G_RET_STS_SUCCESS;
2543 
2544     -- Debug info.
2545     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2546         hz_utility_v2pub.debug(p_message=>'create_payment_method(+)',
2547                                p_prefix=>l_debug_prefix,
2548                                p_msg_level=>fnd_log.level_procedure);
2549     END IF;
2550 
2551     FOR i IN 1..p_payment_method_objs.COUNT LOOP
2552 
2553         HZ_CUST_ACCT_BO_PVT.create_payment_method(
2554         p_payment_method_obj => p_payment_method_objs(i),
2555         p_ca_id              => p_ca_id,
2556         p_casu_id            => p_casu_id,
2557         x_return_status      => x_return_status,
2558         x_msg_count          => x_msg_count,
2559         x_msg_data           => x_msg_data
2560       );
2561 
2562       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2563         RAISE FND_API.G_EXC_ERROR;
2564       END IF;
2565     END LOOP;
2566 
2567 
2568   EXCEPTION
2569     WHEN fnd_api.g_exc_error THEN
2570       ROLLBACK TO create_pms_v2_pvt;
2571 
2572       x_return_status := fnd_api.g_ret_sts_error;
2573 
2574       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2575                                 p_count => x_msg_count,
2576                                 p_data  => x_msg_data);
2577 
2578       -- Debug info.
2579       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2580         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2581                                p_msg_data=>x_msg_data,
2582                                p_msg_type=>'ERROR',
2583                                p_msg_level=>fnd_log.level_error);
2584       END IF;
2585       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2586         hz_utility_v2pub.debug(p_message=>'create_payment_methods(-)',
2587                                p_prefix=>l_debug_prefix,
2588                                p_msg_level=>fnd_log.level_procedure);
2589       END IF;
2590 
2591     WHEN fnd_api.g_exc_unexpected_error THEN
2592       ROLLBACK TO create_pms_v2_pvt;
2593 
2594       x_return_status := fnd_api.g_ret_sts_unexp_error;
2595 
2596       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2597                                 p_count => x_msg_count,
2598                                 p_data  => x_msg_data);
2599 
2600       -- Debug info.
2601       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2602         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2603                                p_msg_data=>x_msg_data,
2604                                p_msg_type=>'UNEXPECTED ERROR',
2605                                p_msg_level=>fnd_log.level_error);
2606       END IF;
2607       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2608         hz_utility_v2pub.debug(p_message=>'create_payment_methods(-)',
2609                                p_prefix=>l_debug_prefix,
2610                                p_msg_level=>fnd_log.level_procedure);
2611       END IF;
2612 
2613     WHEN OTHERS THEN
2614       ROLLBACK TO create_pms_v2_pvt;
2615 
2616       x_return_status := fnd_api.g_ret_sts_unexp_error;
2617 
2618       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
2619       fnd_message.set_token('ERROR' ,SQLERRM);
2620       fnd_msg_pub.add;
2621 
2622       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2623                                 p_count => x_msg_count,
2624                                 p_data  => x_msg_data);
2625 
2626       -- Debug info.
2627       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2628         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2629                                p_msg_data=>x_msg_data,
2630                                p_msg_type=>'SQL ERROR',
2631                                p_msg_level=>fnd_log.level_error);
2632       END IF;
2633       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2634         hz_utility_v2pub.debug(p_message=>'create_payment_methods(-)',
2635                                p_prefix=>l_debug_prefix,
2636                                p_msg_level=>fnd_log.level_procedure);
2637       END IF;
2638   END create_payment_methods;
2639 
2640 -- PROCEDURE save_payment_methods
2641   --
2642   -- DESCRIPTION
2643   --     Create or update payment methods.
2644   --
2645   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2646   --
2647   -- ARGUMENTS
2648   --   IN:
2649   --     p_payment_method_objs Payment method object.
2650   --     p_ca_id              Customer account Id.
2651   --     p_casu_id            Customer account site use Id.
2652   --   OUT:
2653   --     x_return_status      Return status after the call. The status can
2654   --                          be fnd_api.g_ret_sts_success (success),
2655   --                          fnd_api.g_ret_sts_error (error),
2656   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
2657   --     x_msg_count          Number of messages in message stack.
2658   --     x_msg_data           Message text if x_msg_count is 1.
2659   --
2660   -- NOTES
2661   --
2662   -- MODIFICATION HISTORY
2663   --
2664   --   1-FEB-2008    vsegu          Created.
2665 
2666   PROCEDURE save_payment_methods(
2667     p_payment_method_objs      IN OUT NOCOPY HZ_PAYMENT_METHOD_OBJ_TBL,
2668     p_ca_id                   IN            NUMBER,
2669     p_casu_id                 IN            NUMBER,
2670     x_return_status           OUT NOCOPY    VARCHAR2,
2671     x_msg_count               OUT NOCOPY    NUMBER,
2672     x_msg_data                OUT NOCOPY    VARCHAR2
2673   ) IS
2674     l_debug_prefix                 VARCHAR2(30) := '';
2675   BEGIN
2676     -- Standard start of API savepoint
2677     SAVEPOINT save_pm_v2_pvt;
2678 
2679 	 -- initialize API return status to success.
2680     x_return_status := FND_API.G_RET_STS_SUCCESS;
2681 
2682     -- Debug info.
2683     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2684         hz_utility_v2pub.debug(p_message=>'create_payment_method(+)',
2685                                p_prefix=>l_debug_prefix,
2686                                p_msg_level=>fnd_log.level_procedure);
2687     END IF;
2688 
2689     FOR i IN 1..p_payment_method_objs.COUNT LOOP
2690 
2691         HZ_CUST_ACCT_BO_PVT.save_payment_method(
2692         p_payment_method_obj => p_payment_method_objs(i),
2693         p_ca_id              => p_ca_id,
2694         p_casu_id            => p_casu_id,
2695         x_return_status      => x_return_status,
2696         x_msg_count          => x_msg_count,
2697         x_msg_data           => x_msg_data
2698       );
2699 
2700       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2701         RAISE FND_API.G_EXC_ERROR;
2702       END IF;
2703     END LOOP;
2704 
2705 
2706   EXCEPTION
2707     WHEN fnd_api.g_exc_error THEN
2708       ROLLBACK TO save_pm_v2_pvt;
2709       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2710       FND_MESSAGE.SET_TOKEN('ENTITY', 'RA_CUST_RECEIPT_METHODS');
2711       FND_MSG_PUB.ADD;
2712 
2713       x_return_status := fnd_api.g_ret_sts_error;
2714 
2715       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2716                                 p_count => x_msg_count,
2717                                 p_data  => x_msg_data);
2718 
2719       -- Debug info.
2720       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2721         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2722                                p_msg_data=>x_msg_data,
2723                                p_msg_type=>'ERROR',
2724                                p_msg_level=>fnd_log.level_error);
2725       END IF;
2726       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2727         hz_utility_v2pub.debug(p_message=>'save_payment_methods(-)',
2728                                p_prefix=>l_debug_prefix,
2729                                p_msg_level=>fnd_log.level_procedure);
2730       END IF;
2731 
2732     WHEN fnd_api.g_exc_unexpected_error THEN
2733       ROLLBACK TO save_pm_v2_pvt;
2734       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2735       FND_MESSAGE.SET_TOKEN('ENTITY', 'RA_CUST_RECEIPT_METHODS');
2736       FND_MSG_PUB.ADD;
2737 
2738       x_return_status := fnd_api.g_ret_sts_unexp_error;
2739 
2740       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2741                                 p_count => x_msg_count,
2742                                 p_data  => x_msg_data);
2743 
2744       -- Debug info.
2745       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2746         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2747                                p_msg_data=>x_msg_data,
2748                                p_msg_type=>'UNEXPECTED ERROR',
2749                                p_msg_level=>fnd_log.level_error);
2750       END IF;
2751       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2752         hz_utility_v2pub.debug(p_message=>'save_payment_methods(-)',
2753                                p_prefix=>l_debug_prefix,
2754                                p_msg_level=>fnd_log.level_procedure);
2755       END IF;
2756 
2757     WHEN OTHERS THEN
2758       ROLLBACK TO save_pm_v2_pvt;
2759       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2760       FND_MESSAGE.SET_TOKEN('ENTITY', 'RA_CUST_RECEIPT_METHODS');
2761       FND_MSG_PUB.ADD;
2762 
2763       x_return_status := fnd_api.g_ret_sts_unexp_error;
2764 
2765       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
2766       fnd_message.set_token('ERROR' ,SQLERRM);
2767       fnd_msg_pub.add;
2768 
2769       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2770                                 p_count => x_msg_count,
2771                                 p_data  => x_msg_data);
2772 
2773       -- Debug info.
2774       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2775         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2776                                p_msg_data=>x_msg_data,
2777                                p_msg_type=>'SQL ERROR',
2778                                p_msg_level=>fnd_log.level_error);
2779       END IF;
2780       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2781         hz_utility_v2pub.debug(p_message=>'save_payment_methods(-)',
2782                                p_prefix=>l_debug_prefix,
2783                                p_msg_level=>fnd_log.level_procedure);
2784       END IF;
2785   END save_payment_methods;
2786 
2787 -- PROCEDURE save_cust_accts
2788   --
2789   -- DESCRIPTION
2790   --     Create or update customer accounts.
2791   --
2792   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2793   --
2794   -- ARGUMENTS
2795   --   IN:
2796   --     p_ca_v2_objs         List of customer account objects.
2797   --     p_create_update_flag Create or update flag.
2798   --     p_parent_id          Parent Id.
2799   --     p_parent_os          Parent original system.
2800   --     p_parent_osr         Parent original system reference.
2801   --     p_parent_obj_type    Parent object type.
2802   --   OUT:
2803   --     x_return_status      Return status after the call. The status can
2804   --                          be fnd_api.g_ret_sts_success (success),
2805   --                          fnd_api.g_ret_sts_error (error),
2806   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
2807   --     x_msg_count          Number of messages in message stack.
2808   --     x_msg_data           Message text if x_msg_count is 1.
2809   --
2810   -- NOTES
2811   --
2812   -- MODIFICATION HISTORY
2813   --
2814   --   1-FEB-2008   vsegu          Created.
2815 
2816   PROCEDURE save_cust_accts(
2817     p_ca_v2_objs                 IN OUT NOCOPY HZ_CUST_ACCT_V2_BO_TBL,
2818     p_create_update_flag      IN            VARCHAR2,
2819     p_obj_source              IN            VARCHAR2 := null,
2820     x_return_status           OUT NOCOPY    VARCHAR2,
2821     x_msg_count               OUT NOCOPY    NUMBER,
2822     x_msg_data                OUT NOCOPY    VARCHAR2,
2823     p_parent_id               IN            NUMBER,
2824     p_parent_os               IN            VARCHAR2,
2825     p_parent_osr              IN            VARCHAR2,
2826     p_parent_obj_type         IN            VARCHAR2
2827   ) IS
2828     l_debug_prefix            VARCHAR2(30) := '';
2829     l_ca_id                   NUMBER;
2830     l_ca_os                   VARCHAR2(30);
2831     l_ca_osr                  VARCHAR2(255);
2832     l_parent_id               NUMBER;
2833     l_parent_os               VARCHAR2(30);
2834     l_parent_osr              VARCHAR2(255);
2835     l_parent_obj_type         VARCHAR2(30);
2836     l_cbm                     VARCHAR2(30);
2837   BEGIN
2838     -- initialize API return status to success
2839     x_return_status := FND_API.G_RET_STS_SUCCESS;
2840 
2841     -- Debug info.
2842     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2843         hz_utility_v2pub.debug(p_message=>'save_cust_accts(+)',
2844                                p_prefix=>l_debug_prefix,
2845                                p_msg_level=>fnd_log.level_procedure);
2846     END IF;
2847 
2848     l_parent_id := p_parent_id;
2849     l_parent_os := p_parent_os;
2850     l_parent_osr := p_parent_osr;
2851     l_parent_obj_type := p_parent_obj_type;
2852 
2853     l_cbm := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
2854 
2855     IF(p_create_update_flag = 'C') THEN
2856       -- Create cust accounts
2857       FOR i IN 1..p_ca_v2_objs.COUNT LOOP
2858         HZ_CUST_ACCT_BO_PUB.do_create_cust_acct_v2_bo(
2859           p_validate_bo_flag        => fnd_api.g_false,
2860           p_cust_acct_v2_obj           => p_ca_v2_objs(i),
2861           p_created_by_module       => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
2862           p_obj_source              => p_obj_source,
2863           x_return_status           => x_return_status,
2864           x_msg_count               => x_msg_count,
2865           x_msg_data                => x_msg_data,
2866           x_cust_acct_id            => l_ca_id,
2867           x_cust_acct_os            => l_ca_os,
2868           x_cust_acct_osr           => l_ca_osr,
2869           px_parent_id              => l_parent_id,
2870           px_parent_os              => l_parent_os,
2871           px_parent_osr             => l_parent_osr,
2872           px_parent_obj_type        => l_parent_obj_type
2873         );
2874 
2875         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2876           IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2877             hz_utility_v2pub.debug(p_message=>'Create error occurred at hz_cust_acct_bo_pvt.save_cust_accts, parent id: '||l_parent_id||' '||l_parent_os||'-'||l_parent_osr,
2878                                    p_prefix=>l_debug_prefix,
2879                                    p_msg_level=>fnd_log.level_procedure);
2880           END IF;
2881           RAISE FND_API.G_EXC_ERROR;
2882         END IF;
2883 
2884         HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
2885       END LOOP;
2886     ELSE
2887       -- Create/update cust accounts
2888       FOR i IN 1..p_ca_v2_objs.COUNT LOOP
2889         HZ_CUST_ACCT_BO_PUB.do_save_cust_acct_v2_bo(
2890           p_validate_bo_flag        => fnd_api.g_false,
2891           p_cust_acct_v2_obj           => p_ca_v2_objs(i),
2892           p_created_by_module       => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
2893           p_obj_source              => p_obj_source,
2894           x_return_status           => x_return_status,
2895           x_msg_count               => x_msg_count,
2896           x_msg_data                => x_msg_data,
2897           x_cust_acct_id            => l_ca_id,
2898           x_cust_acct_os            => l_ca_os,
2899           x_cust_acct_osr           => l_ca_osr,
2900           px_parent_id              => l_parent_id,
2901           px_parent_os              => l_parent_os,
2902           px_parent_osr             => l_parent_osr,
2903           px_parent_obj_type        => l_parent_obj_type
2904         );
2905 
2906         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2907           IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2908             hz_utility_v2pub.debug(p_message=>'Save error occurred at hz_cust_acct_bo_pvt.save_cust_accts, parent id: '||l_parent_id||' '||l_parent_os||'-'||l_parent_osr,
2909                                    p_prefix=>l_debug_prefix,
2910                                    p_msg_level=>fnd_log.level_procedure);
2911           END IF;
2912           RAISE FND_API.G_EXC_ERROR;
2913         END IF;
2914 
2915         HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
2916       END LOOP;
2917     END IF;
2918 
2919     -- Debug info.
2920     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
2921          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2922                                p_msg_data=>x_msg_data,
2923                                p_msg_type=>'WARNING',
2924                                p_msg_level=>fnd_log.level_exception);
2925     END IF;
2926     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2927         hz_utility_v2pub.debug(p_message=>'save_cust_accts(-)',
2928                                p_prefix=>l_debug_prefix,
2929                                p_msg_level=>fnd_log.level_procedure);
2930     END IF;
2931   EXCEPTION
2932     WHEN fnd_api.g_exc_error THEN
2933       x_return_status := fnd_api.g_ret_sts_error;
2934 
2935       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2936                                 p_count => x_msg_count,
2937                                 p_data  => x_msg_data);
2938 
2939       -- Debug info.
2940       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2941         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2942                                p_msg_data=>x_msg_data,
2943                                p_msg_type=>'ERROR',
2944                                p_msg_level=>fnd_log.level_error);
2945       END IF;
2946       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2947         hz_utility_v2pub.debug(p_message=>'save_cust_accts(-)',
2948                                p_prefix=>l_debug_prefix,
2949                                p_msg_level=>fnd_log.level_procedure);
2950       END IF;
2951     WHEN fnd_api.g_exc_unexpected_error THEN
2952       x_return_status := fnd_api.g_ret_sts_unexp_error;
2953 
2954       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2955                                 p_count => x_msg_count,
2956                                 p_data  => x_msg_data);
2957 
2958       -- Debug info.
2959       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2960         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2961                                p_msg_data=>x_msg_data,
2962                                p_msg_type=>'UNEXPECTED ERROR',
2963                                p_msg_level=>fnd_log.level_error);
2964       END IF;
2965       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2966         hz_utility_v2pub.debug(p_message=>'save_cust_accts(-)',
2967                                p_prefix=>l_debug_prefix,
2968                                p_msg_level=>fnd_log.level_procedure);
2969       END IF;
2970     WHEN OTHERS THEN
2971       x_return_status := fnd_api.g_ret_sts_unexp_error;
2972 
2973       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
2974       fnd_message.set_token('ERROR' ,SQLERRM);
2975       fnd_msg_pub.add;
2976 
2977       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2978                                 p_count => x_msg_count,
2979                                 p_data  => x_msg_data);
2980 
2981       -- Debug info.
2982       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2983         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2984                                p_msg_data=>x_msg_data,
2985                                p_msg_type=>'SQL ERROR',
2986                                p_msg_level=>fnd_log.level_error);
2987       END IF;
2988       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2989         hz_utility_v2pub.debug(p_message=>'save_cust_accts(-)',
2990                                p_prefix=>l_debug_prefix,
2991                                p_msg_level=>fnd_log.level_procedure);
2992       END IF;
2993   END save_cust_accts;
2994 
2995 
2996 END hz_cust_acct_bo_pvt;