DBA Data[Home] [Help]
Skip to content

PACKAGE BODY: APPS.HZ_CUST_ACCT_BO_PVT

Source


1 PACKAGE BODY hz_cust_acct_bo_pvt AS
2 /*$Header: ARHBCAVB.pls 120.12 2008/02/07 14:15:45 vsegu 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;
320     px_cust_profile_amt_rec.global_attribute16 := p_cust_profile_amt_obj.global_attribute16;
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;
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;
408     px_cust_profile_rec.autocash_hierarchy_id :=p_cust_profile_obj.autocash_hierarchy_id;
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;
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;
466     px_cust_profile_rec.global_attribute19 :=p_cust_profile_obj.global_attribute19;
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;
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;
552 
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;
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,
672     WHEN fnd_api.g_exc_unexpected_error THEN
669                                p_msg_level=>fnd_log.level_procedure);
670       END IF;
671 
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);
794     -- and/or site use id
791     END IF;
792 
793     -- check if user pass in cust profile id but with different cust account 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);
912       ROLLBACK TO update_cp_pvt;
909       END IF;
910 
911     WHEN OTHERS THEN
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;
1035                                p_msg_level=>fnd_log.level_procedure);
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,
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,
1155     l_debug_prefix            VARCHAR2(30) := '';
1152     x_msg_count               OUT NOCOPY    NUMBER,
1153     x_msg_data                OUT NOCOPY    VARCHAR2
1154   )IS
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.
1271                                p_msg_type=>'ERROR',
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,
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
1392       l_rca_osr := p_car_objs(i).related_cust_acct_osr;
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;
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,
1502     WHEN OTHERS THEN
1499                                p_msg_level=>fnd_log.level_procedure);
1500       END IF;
1501 
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           x_object_version_number => l_ovn
1617         );
1618 
1619         IF(l_ovn IS NULL) THEN
1620           HZ_CUST_ACCOUNT_V2PUB.create_cust_acct_relate(
1621             p_cust_acct_relate_rec      => l_car_rec,
1622             x_return_status             => x_return_status,
1626         ELSE
1623             x_msg_count                 => x_msg_count,
1624             x_msg_data                  => x_msg_data
1625           );
1627           -- clean up created_by_module for update
1628           l_car_rec.created_by_module := NULL;
1629           HZ_CUST_ACCOUNT_V2PUB.update_cust_acct_relate(
1630             p_cust_acct_relate_rec      => l_car_rec,
1631             p_object_version_number     => l_ovn,
1632             x_return_status             => x_return_status,
1633             x_msg_count                 => x_msg_count,
1634             x_msg_data                  => x_msg_data
1635           );
1636         END IF;
1637 
1638         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1639           IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1640             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,
1641                                    p_prefix=>l_debug_prefix,
1642                                    p_msg_level=>fnd_log.level_procedure);
1643           END IF;
1644           RAISE FND_API.G_EXC_ERROR;
1645         END IF;
1646       ELSE
1647         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1648           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,
1649                                  p_prefix=>l_debug_prefix,
1650                                  p_msg_level=>fnd_log.level_procedure);
1651         END IF;
1652         RAISE FND_API.G_EXC_ERROR;
1653       END IF;
1654     END LOOP;
1655 
1656     -- Debug info.
1657     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1658          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1659                                p_msg_data=>x_msg_data,
1660                                p_msg_type=>'WARNING',
1661                                p_msg_level=>fnd_log.level_exception);
1662     END IF;
1663     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1664         hz_utility_v2pub.debug(p_message=>'save_cust_acct_relates(-)',
1665                                p_prefix=>l_debug_prefix,
1666                                p_msg_level=>fnd_log.level_procedure);
1667     END IF;
1668   EXCEPTION
1669     WHEN fnd_api.g_exc_error THEN
1670       ROLLBACK TO save_car_pvt;
1671       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
1672       FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_CUST_ACCT_RELATE_ALL');
1673       FND_MSG_PUB.ADD;
1674 
1675       x_return_status := fnd_api.g_ret_sts_error;
1676 
1677       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1678                                 p_count => x_msg_count,
1679                                 p_data  => x_msg_data);
1680 
1681       -- Debug info.
1682       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1683         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1684                                p_msg_data=>x_msg_data,
1685                                p_msg_type=>'ERROR',
1686                                p_msg_level=>fnd_log.level_error);
1687       END IF;
1688       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1689         hz_utility_v2pub.debug(p_message=>'save_cust_acct_relates(-)',
1690                                p_prefix=>l_debug_prefix,
1691                                p_msg_level=>fnd_log.level_procedure);
1692       END IF;
1693 
1694     WHEN fnd_api.g_exc_unexpected_error THEN
1695       ROLLBACK TO save_car_pvt;
1696       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
1697       FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_CUST_ACCT_RELATE_ALL');
1698       FND_MSG_PUB.ADD;
1699 
1700       x_return_status := fnd_api.g_ret_sts_unexp_error;
1701 
1702       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1703                                 p_count => x_msg_count,
1704                                 p_data  => x_msg_data);
1705 
1706       -- Debug info.
1707       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1708         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1709                                p_msg_data=>x_msg_data,
1710                                p_msg_type=>'UNEXPECTED ERROR',
1711                                p_msg_level=>fnd_log.level_error);
1712       END IF;
1713       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1714         hz_utility_v2pub.debug(p_message=>'save_cust_acct_relates(-)',
1715                                p_prefix=>l_debug_prefix,
1716                                p_msg_level=>fnd_log.level_procedure);
1717       END IF;
1718 
1719     WHEN OTHERS THEN
1720       ROLLBACK TO save_car_pvt;
1721       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
1722       FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_CUST_ACCT_RELATE_ALL');
1723       FND_MSG_PUB.ADD;
1724 
1725       x_return_status := fnd_api.g_ret_sts_unexp_error;
1726 
1727       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1728       fnd_message.set_token('ERROR' ,SQLERRM);
1729       fnd_msg_pub.add;
1730 
1731       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1732                                 p_count => x_msg_count,
1733                                 p_data  => x_msg_data);
1734 
1735       -- Debug info.
1736       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1740                                p_msg_level=>fnd_log.level_error);
1737         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1738                                p_msg_data=>x_msg_data,
1739                                p_msg_type=>'SQL ERROR',
1741       END IF;
1742       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1743         hz_utility_v2pub.debug(p_message=>'save_cust_acct_relates(-)',
1744                                p_prefix=>l_debug_prefix,
1745                                p_msg_level=>fnd_log.level_procedure);
1746       END IF;
1747   END save_cust_acct_relates;
1748 
1749   -- PROCEDURE save_bank_acct_uses
1750   --
1751   -- DESCRIPTION
1752   --     Create or update bank account assignments.
1753   --
1754   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1755   --
1756   -- ARGUMENTS
1757   --   IN:
1758   --     p_bank_acct_use_objs List of bank account assignment objects.
1759   --     p_party_id           Party Id.
1760   --     p_ca_id              Customer account Id.
1761   --     p_casu_id            Customer account site use Id.
1762   --   OUT:
1763   --     x_return_status      Return status after the call. The status can
1764   --                          be fnd_api.g_ret_sts_success (success),
1765   --                          fnd_api.g_ret_sts_error (error),
1766   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
1767   --     x_msg_count          Number of messages in message stack.
1768   --     x_msg_data           Message text if x_msg_count is 1.
1769   --
1770   -- NOTES
1771   --
1772   -- MODIFICATION HISTORY
1773   --
1774   --   14-DEC-2004    Arnold Ng          Created.
1775 
1776   PROCEDURE save_bank_acct_uses(
1777     p_bank_acct_use_objs      IN OUT NOCOPY HZ_BANK_ACCT_USE_OBJ_TBL,
1778     p_party_id                IN            NUMBER,
1779     p_ca_id                   IN            NUMBER,
1780     p_casu_id                 IN            NUMBER,
1781     x_return_status           OUT NOCOPY    VARCHAR2,
1782     x_msg_count               OUT NOCOPY    NUMBER,
1783     x_msg_data                OUT NOCOPY    VARCHAR2
1784   ) IS
1785     l_debug_prefix             VARCHAR2(30) := '';
1786     l_payer_context_rec        IBY_FNDCPT_COMMON_PUB.PayerContext_Rec_Type;
1787     l_pmtinstrument_rec        IBY_FNDCPT_SETUP_PUB.PmtInstrAssignment_Rec_Type;
1788     l_assign_id                NUMBER;
1789     l_response                 IBY_FNDCPT_COMMON_PUB.Result_Rec_Type;
1790   BEGIN
1791     -- Standard start of API savepoint
1792     SAVEPOINT save_bau_pvt;
1793 
1794     -- initialize API return status to success.
1795     x_return_status := FND_API.G_RET_STS_SUCCESS;
1796 
1797     -- Debug info.
1798     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1799         hz_utility_v2pub.debug(p_message=>'save_bank_acct_uses(+)',
1800                                p_prefix=>l_debug_prefix,
1801                                p_msg_level=>fnd_log.level_procedure);
1802     END IF;
1803 
1804     FOR i IN 1..p_bank_acct_use_objs.COUNT LOOP
1805       assign_bank_acct_use_rec(
1806         p_bank_acct_use_obj          => p_bank_acct_use_objs(i),
1807         p_party_id                   => p_party_id,
1808         p_cust_acct_id               => p_ca_id,
1809         p_site_use_id                => p_casu_id,
1810         px_payer_context_rec         => l_payer_context_rec,
1811         px_pmtinstrument_rec         => l_pmtinstrument_rec
1812       );
1813 
1814       IBY_FNDCPT_SETUP_PUB.Set_Payer_Instr_Assignment(
1815         p_api_version                => 1.0,
1816         p_commit                     => FND_API.G_FALSE,
1817         x_return_status              => x_return_status,
1818         x_msg_count                  => x_msg_count,
1819         x_msg_data                   => x_msg_data,
1820         p_payer                      => l_payer_context_rec,
1821         p_assignment_attribs         => l_pmtinstrument_rec,
1822         x_assign_id                  => l_assign_id,
1823         x_response                   => l_response
1824       );
1825 
1826       -- assign bank_acct_use_id
1827       p_bank_acct_use_objs(i).bank_acct_use_id := l_assign_id;
1828 
1829       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1830         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1831           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,
1832                                  p_prefix=>l_debug_prefix,
1833                                  p_msg_level=>fnd_log.level_procedure);
1834         END IF;
1835         RAISE FND_API.G_EXC_ERROR;
1836       END IF;
1837     END LOOP;
1838 
1839     -- Debug info.
1840     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1841          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1842                                p_msg_data=>x_msg_data,
1843                                p_msg_type=>'WARNING',
1844                                p_msg_level=>fnd_log.level_exception);
1845     END IF;
1846     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1847         hz_utility_v2pub.debug(p_message=>'save_bank_acct_uses(-)',
1848                                p_prefix=>l_debug_prefix,
1849                                p_msg_level=>fnd_log.level_procedure);
1850     END IF;
1851   EXCEPTION
1852     WHEN fnd_api.g_exc_error THEN
1853       ROLLBACK TO save_bau_pvt;
1857 
1854       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
1855       FND_MESSAGE.SET_TOKEN('ENTITY', 'IBY_FNDCPT_PAYER_ASSGN_INSTR_V');
1856       FND_MSG_PUB.ADD;
1858       x_return_status := fnd_api.g_ret_sts_error;
1859 
1860       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1861                                 p_count => x_msg_count,
1862                                 p_data  => x_msg_data);
1863 
1864       -- Debug info.
1865       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1866         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1867                                p_msg_data=>x_msg_data,
1868                                p_msg_type=>'ERROR',
1869                                p_msg_level=>fnd_log.level_error);
1870       END IF;
1871       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1872         hz_utility_v2pub.debug(p_message=>'save_bank_acct_uses(-)',
1873                                p_prefix=>l_debug_prefix,
1874                                p_msg_level=>fnd_log.level_procedure);
1875       END IF;
1876 
1877     WHEN fnd_api.g_exc_unexpected_error THEN
1878       ROLLBACK TO save_bau_pvt;
1879       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
1880       FND_MESSAGE.SET_TOKEN('ENTITY', 'IBY_FNDCPT_PAYER_ASSGN_INSTR_V');
1881       FND_MSG_PUB.ADD;
1882 
1883       x_return_status := fnd_api.g_ret_sts_unexp_error;
1884 
1885       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1886                                 p_count => x_msg_count,
1887                                 p_data  => x_msg_data);
1888 
1889       -- Debug info.
1890       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1891         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1892                                p_msg_data=>x_msg_data,
1893                                p_msg_type=>'UNEXPECTED ERROR',
1894                                p_msg_level=>fnd_log.level_error);
1895       END IF;
1896       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1897         hz_utility_v2pub.debug(p_message=>'save_bank_acct_uses(-)',
1898                                p_prefix=>l_debug_prefix,
1899                                p_msg_level=>fnd_log.level_procedure);
1900       END IF;
1901 
1902     WHEN OTHERS THEN
1903       ROLLBACK TO save_bau_pvt;
1904       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
1905       FND_MESSAGE.SET_TOKEN('ENTITY', 'IBY_FNDCPT_PAYER_ASSGN_INSTR_V');
1906       FND_MSG_PUB.ADD;
1907 
1908       x_return_status := fnd_api.g_ret_sts_unexp_error;
1909 
1910       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1911       fnd_message.set_token('ERROR' ,SQLERRM);
1912       fnd_msg_pub.add;
1913 
1914       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1915                                 p_count => x_msg_count,
1916                                 p_data  => x_msg_data);
1917 
1918       -- Debug info.
1919       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1920         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1921                                p_msg_data=>x_msg_data,
1922                                p_msg_type=>'SQL ERROR',
1923                                p_msg_level=>fnd_log.level_error);
1924       END IF;
1925       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1926         hz_utility_v2pub.debug(p_message=>'save_bank_acct_uses(-)',
1927                                p_prefix=>l_debug_prefix,
1928                                p_msg_level=>fnd_log.level_procedure);
1929       END IF;
1930   END save_bank_acct_uses;
1931 
1932   -- PROCEDURE create_payment_method
1933   --
1934   -- DESCRIPTION
1935   --     Create payment method.
1936   --
1937   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1938   --
1939   -- ARGUMENTS
1940   --   IN:
1941   --     p_payment_method_obj Payment method object.
1942   --     p_ca_id              Customer account Id.
1943   --     p_casu_id            Customer account site use Id.
1944   --   OUT:
1945   --     x_return_status      Return status after the call. The status can
1946   --                          be fnd_api.g_ret_sts_success (success),
1947   --                          fnd_api.g_ret_sts_error (error),
1948   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
1949   --     x_msg_count          Number of messages in message stack.
1950   --     x_msg_data           Message text if x_msg_count is 1.
1951   --
1952   -- NOTES
1953   --
1954   -- MODIFICATION HISTORY
1955   --
1956   --   14-DEC-2004    Arnold Ng          Created.
1957 
1958   PROCEDURE create_payment_method(
1959     p_payment_method_obj      IN OUT NOCOPY HZ_PAYMENT_METHOD_OBJ,
1960     p_ca_id                   IN            NUMBER,
1961     p_casu_id                 IN            NUMBER,
1962     x_return_status           OUT NOCOPY    VARCHAR2,
1963     x_msg_count               OUT NOCOPY    NUMBER,
1964     x_msg_data                OUT NOCOPY    VARCHAR2
1965   ) IS
1966     l_debug_prefix                 VARCHAR2(30) := '';
1967     l_payment_method_rec           HZ_PAYMENT_METHOD_PUB.PAYMENT_METHOD_REC_TYPE;
1968     l_pm_id                        NUMBER;
1969   BEGIN
1970     -- Standard start of API savepoint
1971     SAVEPOINT create_pm_pvt;
1972 
1973     -- initialize API return status to success.
1974     x_return_status := FND_API.G_RET_STS_SUCCESS;
1975 
1979                                p_prefix=>l_debug_prefix,
1976     -- Debug info.
1977     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1978         hz_utility_v2pub.debug(p_message=>'create_payment_method(+)',
1980                                p_msg_level=>fnd_log.level_procedure);
1981     END IF;
1982 
1983     assign_payment_method_rec(
1984       p_payment_method_obj         => p_payment_method_obj,
1985       p_cust_acct_id               => p_ca_id,
1986       p_site_use_id                => p_casu_id,
1987       px_payment_method_rec        => l_payment_method_rec
1988     );
1989 
1990     HZ_PAYMENT_METHOD_PUB.create_payment_method(
1991       p_payment_method_rec         => l_payment_method_rec,
1992       x_cust_receipt_method_id     => l_pm_id,
1993       x_return_status              => x_return_status,
1994       x_msg_count                  => x_msg_count,
1995       x_msg_data                   => x_msg_data
1996     );
1997 
1998     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1999       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2000         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,
2001                                p_prefix=>l_debug_prefix,
2002                                p_msg_level=>fnd_log.level_procedure);
2003       END IF;
2004       RAISE FND_API.G_EXC_ERROR;
2005     END IF;
2006 
2007     -- assign payment_method_id
2008      p_payment_method_obj.payment_method_id := l_pm_id;
2009 
2010     -- Debug info.
2011     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
2012          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2013                                p_msg_data=>x_msg_data,
2014                                p_msg_type=>'WARNING',
2015                                p_msg_level=>fnd_log.level_exception);
2016     END IF;
2017     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2018         hz_utility_v2pub.debug(p_message=>'create_payment_method(-)',
2019                                p_prefix=>l_debug_prefix,
2020                                p_msg_level=>fnd_log.level_procedure);
2021     END IF;
2022   EXCEPTION
2023     WHEN fnd_api.g_exc_error THEN
2024       ROLLBACK TO create_pm_pvt;
2025       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2026       FND_MESSAGE.SET_TOKEN('ENTITY', 'RA_CUST_RECEIPT_METHODS');
2027       FND_MSG_PUB.ADD;
2028 
2029       x_return_status := fnd_api.g_ret_sts_error;
2030 
2031       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2032                                 p_count => x_msg_count,
2033                                 p_data  => x_msg_data);
2034 
2035       -- Debug info.
2036       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2037         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2038                                p_msg_data=>x_msg_data,
2039                                p_msg_type=>'ERROR',
2040                                p_msg_level=>fnd_log.level_error);
2041       END IF;
2042       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2043         hz_utility_v2pub.debug(p_message=>'create_payment_method(-)',
2044                                p_prefix=>l_debug_prefix,
2045                                p_msg_level=>fnd_log.level_procedure);
2046       END IF;
2047 
2048     WHEN fnd_api.g_exc_unexpected_error THEN
2049       ROLLBACK TO create_pm_pvt;
2050       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2051       FND_MESSAGE.SET_TOKEN('ENTITY', 'RA_CUST_RECEIPT_METHODS');
2052       FND_MSG_PUB.ADD;
2053 
2054       x_return_status := fnd_api.g_ret_sts_unexp_error;
2055 
2056       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2057                                 p_count => x_msg_count,
2058                                 p_data  => x_msg_data);
2059 
2060       -- Debug info.
2061       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2062         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2063                                p_msg_data=>x_msg_data,
2064                                p_msg_type=>'UNEXPECTED ERROR',
2065                                p_msg_level=>fnd_log.level_error);
2066       END IF;
2067       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2068         hz_utility_v2pub.debug(p_message=>'create_payment_method(-)',
2069                                p_prefix=>l_debug_prefix,
2070                                p_msg_level=>fnd_log.level_procedure);
2071       END IF;
2072 
2073     WHEN OTHERS THEN
2074       ROLLBACK TO create_pm_pvt;
2075       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2076       FND_MESSAGE.SET_TOKEN('ENTITY', 'RA_CUST_RECEIPT_METHODS');
2077       FND_MSG_PUB.ADD;
2078 
2079       x_return_status := fnd_api.g_ret_sts_unexp_error;
2080 
2081       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
2082       fnd_message.set_token('ERROR' ,SQLERRM);
2083       fnd_msg_pub.add;
2084 
2085       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2086                                 p_count => x_msg_count,
2087                                 p_data  => x_msg_data);
2088 
2089       -- Debug info.
2090       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2091         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2095       END IF;
2092                                p_msg_data=>x_msg_data,
2093                                p_msg_type=>'SQL ERROR',
2094                                p_msg_level=>fnd_log.level_error);
2096       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2097         hz_utility_v2pub.debug(p_message=>'create_payment_method(-)',
2098                                p_prefix=>l_debug_prefix,
2099                                p_msg_level=>fnd_log.level_procedure);
2100       END IF;
2101   END create_payment_method;
2102 
2103   -- PROCEDURE save_payment_method
2104   --
2105   -- DESCRIPTION
2106   --     Create or update payment method.
2107   --
2108   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2109   --
2110   -- ARGUMENTS
2111   --   IN:
2112   --     p_payment_method_obj Payment method object.
2113   --     p_ca_id              Customer account Id.
2114   --     p_casu_id            Customer account site use Id.
2115   --   OUT:
2116   --     x_return_status      Return status after the call. The status can
2117   --                          be fnd_api.g_ret_sts_success (success),
2118   --                          fnd_api.g_ret_sts_error (error),
2119   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
2120   --     x_msg_count          Number of messages in message stack.
2121   --     x_msg_data           Message text if x_msg_count is 1.
2122   --
2123   -- NOTES
2124   --
2125   -- MODIFICATION HISTORY
2126   --
2127   --   14-DEC-2004    Arnold Ng          Created.
2128 
2129   PROCEDURE save_payment_method(
2130     p_payment_method_obj      IN OUT NOCOPY HZ_PAYMENT_METHOD_OBJ,
2131     p_ca_id                   IN            NUMBER,
2132     p_casu_id                 IN            NUMBER,
2133     x_return_status           OUT NOCOPY    VARCHAR2,
2134     x_msg_count               OUT NOCOPY    NUMBER,
2135     x_msg_data                OUT NOCOPY    VARCHAR2
2136   ) IS
2137     l_debug_prefix                 VARCHAR2(30) := '';
2138     l_payment_method_rec           HZ_PAYMENT_METHOD_PUB.PAYMENT_METHOD_REC_TYPE;
2139     l_lud                          DATE;
2140     l_pm_id                        NUMBER;
2141   BEGIN
2142     -- Standard start of API savepoint
2143     SAVEPOINT save_pm_pvt;
2144 
2145     -- initialize API return status to success.
2146     x_return_status := FND_API.G_RET_STS_SUCCESS;
2147 
2148     -- Debug info.
2149     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2150         hz_utility_v2pub.debug(p_message=>'save_payment_method(+)',
2151                                p_prefix=>l_debug_prefix,
2152                                p_msg_level=>fnd_log.level_procedure);
2153     END IF;
2154 
2155     assign_payment_method_rec(
2156       p_payment_method_obj         => p_payment_method_obj,
2157       p_cust_acct_id               => p_ca_id,
2158       p_site_use_id                => p_casu_id,
2159       px_payment_method_rec        => l_payment_method_rec
2160     );
2161 
2162     hz_registry_validate_bo_pvt.check_payment_method_op(
2163       p_cust_receipt_method_id     => l_payment_method_rec.cust_receipt_method_id,
2164       x_last_update_date           => l_lud
2165     );
2166 
2167     IF(l_lud IS NULL) THEN
2168       HZ_PAYMENT_METHOD_PUB.create_payment_method(
2169         p_payment_method_rec         => l_payment_method_rec,
2170         x_cust_receipt_method_id     => l_pm_id,
2171         x_return_status              => x_return_status,
2172         x_msg_count                  => x_msg_count,
2173         x_msg_data                   => x_msg_data
2174       );
2175 
2176       -- assign payment_method_id
2177       p_payment_method_obj.payment_method_id := l_pm_id;
2178     ELSE
2179       HZ_PAYMENT_METHOD_PUB.update_payment_method(
2180         p_payment_method_rec         => l_payment_method_rec,
2181         px_last_update_date          => l_lud,
2182         x_return_status              => x_return_status,
2183         x_msg_count                  => x_msg_count,
2184         x_msg_data                   => x_msg_data
2185       );
2186 
2187       -- assign payment_method_id
2188       p_payment_method_obj.payment_method_id := l_payment_method_rec.cust_receipt_method_id;
2189     END IF;
2190 
2191     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2192       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2193         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,
2194                                p_prefix=>l_debug_prefix,
2195                                p_msg_level=>fnd_log.level_procedure);
2196       END IF;
2197       RAISE FND_API.G_EXC_ERROR;
2198     END IF;
2199 
2200     -- Debug info.
2201     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
2202          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2203                                p_msg_data=>x_msg_data,
2204                                p_msg_type=>'WARNING',
2205                                p_msg_level=>fnd_log.level_exception);
2206     END IF;
2207     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2208         hz_utility_v2pub.debug(p_message=>'save_payment_method(-)',
2209                                p_prefix=>l_debug_prefix,
2210                                p_msg_level=>fnd_log.level_procedure);
2211     END IF;
2212   EXCEPTION
2213     WHEN fnd_api.g_exc_error THEN
2217       FND_MSG_PUB.ADD;
2214       ROLLBACK TO save_pm_pvt;
2215       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2216       FND_MESSAGE.SET_TOKEN('ENTITY', 'RA_CUST_RECEIPT_METHODS');
2218 
2219       x_return_status := fnd_api.g_ret_sts_error;
2220 
2221       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2222                                 p_count => x_msg_count,
2223                                 p_data  => x_msg_data);
2224 
2225       -- Debug info.
2226       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2227         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2228                                p_msg_data=>x_msg_data,
2229                                p_msg_type=>'ERROR',
2230                                p_msg_level=>fnd_log.level_error);
2231       END IF;
2232       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2233         hz_utility_v2pub.debug(p_message=>'save_payment_method(-)',
2234                                p_prefix=>l_debug_prefix,
2235                                p_msg_level=>fnd_log.level_procedure);
2236       END IF;
2237 
2238     WHEN fnd_api.g_exc_unexpected_error THEN
2239       ROLLBACK TO save_pm_pvt;
2240       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2241       FND_MESSAGE.SET_TOKEN('ENTITY', 'RA_CUST_RECEIPT_METHODS');
2242       FND_MSG_PUB.ADD;
2243 
2244       x_return_status := fnd_api.g_ret_sts_unexp_error;
2245 
2246       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2247                                 p_count => x_msg_count,
2248                                 p_data  => x_msg_data);
2249 
2250       -- Debug info.
2251       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2252         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2253                                p_msg_data=>x_msg_data,
2254                                p_msg_type=>'UNEXPECTED ERROR',
2255                                p_msg_level=>fnd_log.level_error);
2256       END IF;
2257       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2258         hz_utility_v2pub.debug(p_message=>'save_payment_method(-)',
2259                                p_prefix=>l_debug_prefix,
2260                                p_msg_level=>fnd_log.level_procedure);
2261       END IF;
2262 
2263     WHEN OTHERS THEN
2264       ROLLBACK TO save_pm_pvt;
2265       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2266       FND_MESSAGE.SET_TOKEN('ENTITY', 'RA_CUST_RECEIPT_METHODS');
2267       FND_MSG_PUB.ADD;
2268 
2269       x_return_status := fnd_api.g_ret_sts_unexp_error;
2270 
2271       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
2272       fnd_message.set_token('ERROR' ,SQLERRM);
2273       fnd_msg_pub.add;
2274 
2275       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2276                                 p_count => x_msg_count,
2277                                 p_data  => x_msg_data);
2278 
2279       -- Debug info.
2280       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2281         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2282                                p_msg_data=>x_msg_data,
2283                                p_msg_type=>'SQL ERROR',
2284                                p_msg_level=>fnd_log.level_error);
2285       END IF;
2286       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2287         hz_utility_v2pub.debug(p_message=>'save_payment_method(-)',
2288                                p_prefix=>l_debug_prefix,
2289                                p_msg_level=>fnd_log.level_procedure);
2290       END IF;
2291   END save_payment_method;
2292 
2293   -- PROCEDURE save_cust_accts
2294   --
2295   -- DESCRIPTION
2296   --     Create or update customer accounts.
2297   --
2298   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2299   --
2300   -- ARGUMENTS
2301   --   IN:
2302   --     p_ca_objs            List of customer account objects.
2303   --     p_create_update_flag Create or update flag.
2304   --     p_parent_id          Parent Id.
2305   --     p_parent_os          Parent original system.
2306   --     p_parent_osr         Parent original system reference.
2307   --     p_parent_obj_type    Parent object type.
2308   --   OUT:
2309   --     x_return_status      Return status after the call. The status can
2310   --                          be fnd_api.g_ret_sts_success (success),
2311   --                          fnd_api.g_ret_sts_error (error),
2312   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
2313   --     x_msg_count          Number of messages in message stack.
2314   --     x_msg_data           Message text if x_msg_count is 1.
2315   --
2316   -- NOTES
2317   --
2318   -- MODIFICATION HISTORY
2319   --
2320   --   14-DEC-2004    Arnold Ng          Created.
2321 
2322   PROCEDURE save_cust_accts(
2323     p_ca_objs                 IN OUT NOCOPY HZ_CUST_ACCT_BO_TBL,
2324     p_create_update_flag      IN            VARCHAR2,
2325     p_obj_source              IN            VARCHAR2 := null,
2326     x_return_status           OUT NOCOPY    VARCHAR2,
2327     x_msg_count               OUT NOCOPY    NUMBER,
2328     x_msg_data                OUT NOCOPY    VARCHAR2,
2329     p_parent_id               IN            NUMBER,
2330     p_parent_os               IN            VARCHAR2,
2331     p_parent_osr              IN            VARCHAR2,
2332     p_parent_obj_type         IN            VARCHAR2
2333   ) IS
2334     l_debug_prefix            VARCHAR2(30) := '';
2335     l_ca_id                   NUMBER;
2339     l_parent_os               VARCHAR2(30);
2336     l_ca_os                   VARCHAR2(30);
2337     l_ca_osr                  VARCHAR2(255);
2338     l_parent_id               NUMBER;
2340     l_parent_osr              VARCHAR2(255);
2341     l_parent_obj_type         VARCHAR2(30);
2342     l_cbm                     VARCHAR2(30);
2343   BEGIN
2344     -- initialize API return status to success
2345     x_return_status := FND_API.G_RET_STS_SUCCESS;
2346 
2347     -- Debug info.
2348     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2349         hz_utility_v2pub.debug(p_message=>'save_cust_accts(+)',
2350                                p_prefix=>l_debug_prefix,
2351                                p_msg_level=>fnd_log.level_procedure);
2352     END IF;
2353 
2354     l_parent_id := p_parent_id;
2355     l_parent_os := p_parent_os;
2356     l_parent_osr := p_parent_osr;
2357     l_parent_obj_type := p_parent_obj_type;
2358 
2359     l_cbm := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
2360 
2361     IF(p_create_update_flag = 'C') THEN
2362       -- Create cust accounts
2363       FOR i IN 1..p_ca_objs.COUNT LOOP
2364         HZ_CUST_ACCT_BO_PUB.do_create_cust_acct_bo(
2365           p_validate_bo_flag        => fnd_api.g_false,
2366           p_cust_acct_obj           => p_ca_objs(i),
2367           p_created_by_module       => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
2368           p_obj_source              => p_obj_source,
2369           x_return_status           => x_return_status,
2370           x_msg_count               => x_msg_count,
2371           x_msg_data                => x_msg_data,
2372           x_cust_acct_id            => l_ca_id,
2373           x_cust_acct_os            => l_ca_os,
2374           x_cust_acct_osr           => l_ca_osr,
2375           px_parent_id              => l_parent_id,
2376           px_parent_os              => l_parent_os,
2377           px_parent_osr             => l_parent_osr,
2378           px_parent_obj_type        => l_parent_obj_type
2379         );
2380 
2381         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2382           IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2383             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,
2384                                    p_prefix=>l_debug_prefix,
2385                                    p_msg_level=>fnd_log.level_procedure);
2386           END IF;
2387           RAISE FND_API.G_EXC_ERROR;
2388         END IF;
2389 
2390         HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
2391       END LOOP;
2392     ELSE
2393       -- Create/update cust accounts
2394       FOR i IN 1..p_ca_objs.COUNT LOOP
2395         HZ_CUST_ACCT_BO_PUB.do_save_cust_acct_bo(
2396           p_validate_bo_flag        => fnd_api.g_false,
2397           p_cust_acct_obj           => p_ca_objs(i),
2398           p_created_by_module       => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
2399           p_obj_source              => p_obj_source,
2400           x_return_status           => x_return_status,
2401           x_msg_count               => x_msg_count,
2402           x_msg_data                => x_msg_data,
2403           x_cust_acct_id            => l_ca_id,
2404           x_cust_acct_os            => l_ca_os,
2405           x_cust_acct_osr           => l_ca_osr,
2406           px_parent_id              => l_parent_id,
2407           px_parent_os              => l_parent_os,
2408           px_parent_osr             => l_parent_osr,
2409           px_parent_obj_type        => l_parent_obj_type
2410         );
2411 
2412         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2413           IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2414             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,
2415                                    p_prefix=>l_debug_prefix,
2416                                    p_msg_level=>fnd_log.level_procedure);
2417           END IF;
2418           RAISE FND_API.G_EXC_ERROR;
2419         END IF;
2420 
2421         HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
2422       END LOOP;
2423     END IF;
2424 
2425     -- Debug info.
2426     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
2427          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2428                                p_msg_data=>x_msg_data,
2429                                p_msg_type=>'WARNING',
2430                                p_msg_level=>fnd_log.level_exception);
2431     END IF;
2432     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2433         hz_utility_v2pub.debug(p_message=>'save_cust_accts(-)',
2434                                p_prefix=>l_debug_prefix,
2435                                p_msg_level=>fnd_log.level_procedure);
2436     END IF;
2437   EXCEPTION
2438     WHEN fnd_api.g_exc_error THEN
2439       x_return_status := fnd_api.g_ret_sts_error;
2440 
2441       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2442                                 p_count => x_msg_count,
2443                                 p_data  => x_msg_data);
2444 
2445       -- Debug info.
2446       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2447         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2448                                p_msg_data=>x_msg_data,
2449                                p_msg_type=>'ERROR',
2450                                p_msg_level=>fnd_log.level_error);
2451       END IF;
2455                                p_msg_level=>fnd_log.level_procedure);
2452       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2453         hz_utility_v2pub.debug(p_message=>'save_cust_accts(-)',
2454                                p_prefix=>l_debug_prefix,
2456       END IF;
2457     WHEN fnd_api.g_exc_unexpected_error THEN
2458       x_return_status := fnd_api.g_ret_sts_unexp_error;
2459 
2460       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2461                                 p_count => x_msg_count,
2462                                 p_data  => x_msg_data);
2463 
2464       -- Debug info.
2465       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2466         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2467                                p_msg_data=>x_msg_data,
2468                                p_msg_type=>'UNEXPECTED ERROR',
2469                                p_msg_level=>fnd_log.level_error);
2470       END IF;
2471       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2472         hz_utility_v2pub.debug(p_message=>'save_cust_accts(-)',
2473                                p_prefix=>l_debug_prefix,
2474                                p_msg_level=>fnd_log.level_procedure);
2475       END IF;
2476     WHEN OTHERS THEN
2477       x_return_status := fnd_api.g_ret_sts_unexp_error;
2478 
2479       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
2480       fnd_message.set_token('ERROR' ,SQLERRM);
2481       fnd_msg_pub.add;
2482 
2483       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2484                                 p_count => x_msg_count,
2485                                 p_data  => x_msg_data);
2486 
2487       -- Debug info.
2488       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2489         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2490                                p_msg_data=>x_msg_data,
2491                                p_msg_type=>'SQL ERROR',
2492                                p_msg_level=>fnd_log.level_error);
2493       END IF;
2494       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2495         hz_utility_v2pub.debug(p_message=>'save_cust_accts(-)',
2496                                p_prefix=>l_debug_prefix,
2497                                p_msg_level=>fnd_log.level_procedure);
2498       END IF;
2499   END save_cust_accts;
2500 
2501   -- PROCEDURE create_payment_methods
2502   --
2503   -- DESCRIPTION
2504   --     Create payment methods.
2505   --
2506   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2507   --
2508   -- ARGUMENTS
2509   --   IN:
2510   --     p_payment_method_objs Payment method objects.
2511   --     p_ca_id              Customer account Id.
2512   --     p_casu_id            Customer account site use Id.
2513   --   OUT:
2514   --     x_return_status      Return status after the call. The status can
2515   --                          be fnd_api.g_ret_sts_success (success),
2516   --                          fnd_api.g_ret_sts_error (error),
2517   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
2518   --     x_msg_count          Number of messages in message stack.
2519   --     x_msg_data           Message text if x_msg_count is 1.
2520   --
2521   -- NOTES
2522   --
2523   -- MODIFICATION HISTORY
2524   --
2525   --   1-FEB-2008    vsegu          Created.
2526 
2527   PROCEDURE create_payment_methods(
2528     p_payment_method_objs      IN OUT NOCOPY HZ_PAYMENT_METHOD_OBJ_TBL,
2529     p_ca_id                   IN            NUMBER,
2530     p_casu_id                 IN            NUMBER,
2531     x_return_status           OUT NOCOPY    VARCHAR2,
2532     x_msg_count               OUT NOCOPY    NUMBER,
2533     x_msg_data                OUT NOCOPY    VARCHAR2
2534   ) IS
2535    l_debug_prefix                 VARCHAR2(30) := '';
2536   BEGIN
2537     -- Standard start of API savepoint
2538     SAVEPOINT create_pms_v2_pvt;
2539 
2540     -- initialize API return status to success.
2541     x_return_status := FND_API.G_RET_STS_SUCCESS;
2542 
2543     -- Debug info.
2544     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2545         hz_utility_v2pub.debug(p_message=>'create_payment_method(+)',
2546                                p_prefix=>l_debug_prefix,
2547                                p_msg_level=>fnd_log.level_procedure);
2548     END IF;
2549 
2550     FOR i IN 1..p_payment_method_objs.COUNT LOOP
2551 
2552         HZ_CUST_ACCT_BO_PVT.create_payment_method(
2553         p_payment_method_obj => p_payment_method_objs(i),
2554         p_ca_id              => p_ca_id,
2555         p_casu_id            => p_casu_id,
2556         x_return_status      => x_return_status,
2557         x_msg_count          => x_msg_count,
2558         x_msg_data           => x_msg_data
2559       );
2560 
2561       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2562         RAISE FND_API.G_EXC_ERROR;
2563       END IF;
2564     END LOOP;
2565 
2566 
2567   EXCEPTION
2568     WHEN fnd_api.g_exc_error THEN
2569       ROLLBACK TO create_pms_v2_pvt;
2570 
2571       x_return_status := fnd_api.g_ret_sts_error;
2572 
2573       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2574                                 p_count => x_msg_count,
2575                                 p_data  => x_msg_data);
2576 
2577       -- Debug info.
2578       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2579         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2583       END IF;
2580                                p_msg_data=>x_msg_data,
2581                                p_msg_type=>'ERROR',
2582                                p_msg_level=>fnd_log.level_error);
2584       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2585         hz_utility_v2pub.debug(p_message=>'create_payment_methods(-)',
2586                                p_prefix=>l_debug_prefix,
2587                                p_msg_level=>fnd_log.level_procedure);
2588       END IF;
2589 
2590     WHEN fnd_api.g_exc_unexpected_error THEN
2591       ROLLBACK TO create_pms_v2_pvt;
2592 
2593       x_return_status := fnd_api.g_ret_sts_unexp_error;
2594 
2595       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2596                                 p_count => x_msg_count,
2597                                 p_data  => x_msg_data);
2598 
2599       -- Debug info.
2600       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2601         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2602                                p_msg_data=>x_msg_data,
2603                                p_msg_type=>'UNEXPECTED ERROR',
2604                                p_msg_level=>fnd_log.level_error);
2605       END IF;
2606       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2607         hz_utility_v2pub.debug(p_message=>'create_payment_methods(-)',
2608                                p_prefix=>l_debug_prefix,
2609                                p_msg_level=>fnd_log.level_procedure);
2610       END IF;
2611 
2612     WHEN OTHERS THEN
2613       ROLLBACK TO create_pms_v2_pvt;
2614 
2615       x_return_status := fnd_api.g_ret_sts_unexp_error;
2616 
2617       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
2618       fnd_message.set_token('ERROR' ,SQLERRM);
2619       fnd_msg_pub.add;
2620 
2621       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2622                                 p_count => x_msg_count,
2623                                 p_data  => x_msg_data);
2624 
2625       -- Debug info.
2626       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2627         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2628                                p_msg_data=>x_msg_data,
2629                                p_msg_type=>'SQL ERROR',
2630                                p_msg_level=>fnd_log.level_error);
2631       END IF;
2632       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2633         hz_utility_v2pub.debug(p_message=>'create_payment_methods(-)',
2634                                p_prefix=>l_debug_prefix,
2635                                p_msg_level=>fnd_log.level_procedure);
2636       END IF;
2637   END create_payment_methods;
2638 
2639 -- PROCEDURE save_payment_methods
2640   --
2641   -- DESCRIPTION
2642   --     Create or update payment methods.
2643   --
2644   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2645   --
2646   -- ARGUMENTS
2647   --   IN:
2648   --     p_payment_method_objs Payment method object.
2649   --     p_ca_id              Customer account Id.
2650   --     p_casu_id            Customer account site use Id.
2651   --   OUT:
2652   --     x_return_status      Return status after the call. The status can
2653   --                          be fnd_api.g_ret_sts_success (success),
2654   --                          fnd_api.g_ret_sts_error (error),
2655   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
2656   --     x_msg_count          Number of messages in message stack.
2657   --     x_msg_data           Message text if x_msg_count is 1.
2658   --
2659   -- NOTES
2660   --
2661   -- MODIFICATION HISTORY
2662   --
2663   --   1-FEB-2008    vsegu          Created.
2664 
2665   PROCEDURE save_payment_methods(
2666     p_payment_method_objs      IN OUT NOCOPY HZ_PAYMENT_METHOD_OBJ_TBL,
2667     p_ca_id                   IN            NUMBER,
2668     p_casu_id                 IN            NUMBER,
2669     x_return_status           OUT NOCOPY    VARCHAR2,
2670     x_msg_count               OUT NOCOPY    NUMBER,
2671     x_msg_data                OUT NOCOPY    VARCHAR2
2672   ) IS
2673     l_debug_prefix                 VARCHAR2(30) := '';
2674   BEGIN
2675     -- Standard start of API savepoint
2676     SAVEPOINT save_pm_v2_pvt;
2677 
2678 	 -- initialize API return status to success.
2679     x_return_status := FND_API.G_RET_STS_SUCCESS;
2680 
2681     -- Debug info.
2682     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2683         hz_utility_v2pub.debug(p_message=>'create_payment_method(+)',
2684                                p_prefix=>l_debug_prefix,
2685                                p_msg_level=>fnd_log.level_procedure);
2686     END IF;
2687 
2688     FOR i IN 1..p_payment_method_objs.COUNT LOOP
2689 
2690         HZ_CUST_ACCT_BO_PVT.save_payment_method(
2691         p_payment_method_obj => p_payment_method_objs(i),
2692         p_ca_id              => p_ca_id,
2693         p_casu_id            => p_casu_id,
2694         x_return_status      => x_return_status,
2695         x_msg_count          => x_msg_count,
2696         x_msg_data           => x_msg_data
2697       );
2698 
2699       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2700         RAISE FND_API.G_EXC_ERROR;
2701       END IF;
2702     END LOOP;
2703 
2704 
2705   EXCEPTION
2706     WHEN fnd_api.g_exc_error THEN
2707       ROLLBACK TO save_pm_v2_pvt;
2708       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2709       FND_MESSAGE.SET_TOKEN('ENTITY', 'RA_CUST_RECEIPT_METHODS');
2713 
2710       FND_MSG_PUB.ADD;
2711 
2712       x_return_status := fnd_api.g_ret_sts_error;
2714       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2715                                 p_count => x_msg_count,
2716                                 p_data  => x_msg_data);
2717 
2718       -- Debug info.
2719       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2720         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2721                                p_msg_data=>x_msg_data,
2722                                p_msg_type=>'ERROR',
2723                                p_msg_level=>fnd_log.level_error);
2724       END IF;
2725       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2726         hz_utility_v2pub.debug(p_message=>'save_payment_methods(-)',
2727                                p_prefix=>l_debug_prefix,
2728                                p_msg_level=>fnd_log.level_procedure);
2729       END IF;
2730 
2731     WHEN fnd_api.g_exc_unexpected_error THEN
2732       ROLLBACK TO save_pm_v2_pvt;
2733       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2734       FND_MESSAGE.SET_TOKEN('ENTITY', 'RA_CUST_RECEIPT_METHODS');
2735       FND_MSG_PUB.ADD;
2736 
2737       x_return_status := fnd_api.g_ret_sts_unexp_error;
2738 
2739       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2740                                 p_count => x_msg_count,
2741                                 p_data  => x_msg_data);
2742 
2743       -- Debug info.
2744       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2745         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2746                                p_msg_data=>x_msg_data,
2747                                p_msg_type=>'UNEXPECTED ERROR',
2748                                p_msg_level=>fnd_log.level_error);
2749       END IF;
2750       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2751         hz_utility_v2pub.debug(p_message=>'save_payment_methods(-)',
2752                                p_prefix=>l_debug_prefix,
2753                                p_msg_level=>fnd_log.level_procedure);
2754       END IF;
2755 
2756     WHEN OTHERS THEN
2757       ROLLBACK TO save_pm_v2_pvt;
2758       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2759       FND_MESSAGE.SET_TOKEN('ENTITY', 'RA_CUST_RECEIPT_METHODS');
2760       FND_MSG_PUB.ADD;
2761 
2762       x_return_status := fnd_api.g_ret_sts_unexp_error;
2763 
2764       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
2765       fnd_message.set_token('ERROR' ,SQLERRM);
2766       fnd_msg_pub.add;
2767 
2768       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2769                                 p_count => x_msg_count,
2770                                 p_data  => x_msg_data);
2771 
2772       -- Debug info.
2773       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2774         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2775                                p_msg_data=>x_msg_data,
2776                                p_msg_type=>'SQL ERROR',
2777                                p_msg_level=>fnd_log.level_error);
2778       END IF;
2779       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2780         hz_utility_v2pub.debug(p_message=>'save_payment_methods(-)',
2781                                p_prefix=>l_debug_prefix,
2782                                p_msg_level=>fnd_log.level_procedure);
2783       END IF;
2784   END save_payment_methods;
2785 
2786 -- PROCEDURE save_cust_accts
2787   --
2788   -- DESCRIPTION
2789   --     Create or update customer accounts.
2790   --
2791   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2792   --
2793   -- ARGUMENTS
2794   --   IN:
2795   --     p_ca_v2_objs         List of customer account objects.
2796   --     p_create_update_flag Create or update flag.
2797   --     p_parent_id          Parent Id.
2798   --     p_parent_os          Parent original system.
2799   --     p_parent_osr         Parent original system reference.
2800   --     p_parent_obj_type    Parent object type.
2801   --   OUT:
2802   --     x_return_status      Return status after the call. The status can
2803   --                          be fnd_api.g_ret_sts_success (success),
2804   --                          fnd_api.g_ret_sts_error (error),
2805   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
2806   --     x_msg_count          Number of messages in message stack.
2807   --     x_msg_data           Message text if x_msg_count is 1.
2808   --
2809   -- NOTES
2810   --
2811   -- MODIFICATION HISTORY
2812   --
2813   --   1-FEB-2008   vsegu          Created.
2814 
2815   PROCEDURE save_cust_accts(
2816     p_ca_v2_objs                 IN OUT NOCOPY HZ_CUST_ACCT_V2_BO_TBL,
2817     p_create_update_flag      IN            VARCHAR2,
2818     p_obj_source              IN            VARCHAR2 := null,
2819     x_return_status           OUT NOCOPY    VARCHAR2,
2820     x_msg_count               OUT NOCOPY    NUMBER,
2821     x_msg_data                OUT NOCOPY    VARCHAR2,
2822     p_parent_id               IN            NUMBER,
2823     p_parent_os               IN            VARCHAR2,
2824     p_parent_osr              IN            VARCHAR2,
2825     p_parent_obj_type         IN            VARCHAR2
2826   ) IS
2827     l_debug_prefix            VARCHAR2(30) := '';
2828     l_ca_id                   NUMBER;
2829     l_ca_os                   VARCHAR2(30);
2833     l_parent_osr              VARCHAR2(255);
2830     l_ca_osr                  VARCHAR2(255);
2831     l_parent_id               NUMBER;
2832     l_parent_os               VARCHAR2(30);
2834     l_parent_obj_type         VARCHAR2(30);
2835     l_cbm                     VARCHAR2(30);
2836   BEGIN
2837     -- initialize API return status to success
2838     x_return_status := FND_API.G_RET_STS_SUCCESS;
2839 
2840     -- Debug info.
2841     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2842         hz_utility_v2pub.debug(p_message=>'save_cust_accts(+)',
2843                                p_prefix=>l_debug_prefix,
2844                                p_msg_level=>fnd_log.level_procedure);
2845     END IF;
2846 
2847     l_parent_id := p_parent_id;
2848     l_parent_os := p_parent_os;
2849     l_parent_osr := p_parent_osr;
2850     l_parent_obj_type := p_parent_obj_type;
2851 
2852     l_cbm := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
2853 
2854     IF(p_create_update_flag = 'C') THEN
2855       -- Create cust accounts
2856       FOR i IN 1..p_ca_v2_objs.COUNT LOOP
2857         HZ_CUST_ACCT_BO_PUB.do_create_cust_acct_v2_bo(
2858           p_validate_bo_flag        => fnd_api.g_false,
2859           p_cust_acct_v2_obj           => p_ca_v2_objs(i),
2860           p_created_by_module       => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
2861           p_obj_source              => p_obj_source,
2862           x_return_status           => x_return_status,
2863           x_msg_count               => x_msg_count,
2864           x_msg_data                => x_msg_data,
2865           x_cust_acct_id            => l_ca_id,
2866           x_cust_acct_os            => l_ca_os,
2867           x_cust_acct_osr           => l_ca_osr,
2868           px_parent_id              => l_parent_id,
2869           px_parent_os              => l_parent_os,
2870           px_parent_osr             => l_parent_osr,
2871           px_parent_obj_type        => l_parent_obj_type
2872         );
2873 
2874         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2875           IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2876             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,
2877                                    p_prefix=>l_debug_prefix,
2878                                    p_msg_level=>fnd_log.level_procedure);
2879           END IF;
2880           RAISE FND_API.G_EXC_ERROR;
2881         END IF;
2882 
2883         HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
2884       END LOOP;
2885     ELSE
2886       -- Create/update cust accounts
2887       FOR i IN 1..p_ca_v2_objs.COUNT LOOP
2888         HZ_CUST_ACCT_BO_PUB.do_save_cust_acct_v2_bo(
2889           p_validate_bo_flag        => fnd_api.g_false,
2890           p_cust_acct_v2_obj           => p_ca_v2_objs(i),
2891           p_created_by_module       => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
2892           p_obj_source              => p_obj_source,
2893           x_return_status           => x_return_status,
2894           x_msg_count               => x_msg_count,
2895           x_msg_data                => x_msg_data,
2896           x_cust_acct_id            => l_ca_id,
2897           x_cust_acct_os            => l_ca_os,
2898           x_cust_acct_osr           => l_ca_osr,
2899           px_parent_id              => l_parent_id,
2900           px_parent_os              => l_parent_os,
2901           px_parent_osr             => l_parent_osr,
2902           px_parent_obj_type        => l_parent_obj_type
2903         );
2904 
2905         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2906           IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2907             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,
2908                                    p_prefix=>l_debug_prefix,
2912         END IF;
2909                                    p_msg_level=>fnd_log.level_procedure);
2910           END IF;
2911           RAISE FND_API.G_EXC_ERROR;
2913 
2914         HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
2915       END LOOP;
2916     END IF;
2917 
2918     -- Debug info.
2919     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
2920          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2921                                p_msg_data=>x_msg_data,
2922                                p_msg_type=>'WARNING',
2923                                p_msg_level=>fnd_log.level_exception);
2924     END IF;
2925     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2926         hz_utility_v2pub.debug(p_message=>'save_cust_accts(-)',
2927                                p_prefix=>l_debug_prefix,
2928                                p_msg_level=>fnd_log.level_procedure);
2929     END IF;
2930   EXCEPTION
2931     WHEN fnd_api.g_exc_error THEN
2932       x_return_status := fnd_api.g_ret_sts_error;
2933 
2934       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2935                                 p_count => x_msg_count,
2936                                 p_data  => x_msg_data);
2937 
2938       -- Debug info.
2939       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2940         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2941                                p_msg_data=>x_msg_data,
2942                                p_msg_type=>'ERROR',
2943                                p_msg_level=>fnd_log.level_error);
2944       END IF;
2945       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2946         hz_utility_v2pub.debug(p_message=>'save_cust_accts(-)',
2947                                p_prefix=>l_debug_prefix,
2948                                p_msg_level=>fnd_log.level_procedure);
2949       END IF;
2950     WHEN fnd_api.g_exc_unexpected_error THEN
2951       x_return_status := fnd_api.g_ret_sts_unexp_error;
2952 
2953       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2954                                 p_count => x_msg_count,
2955                                 p_data  => x_msg_data);
2956 
2957       -- Debug info.
2958       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2959         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2960                                p_msg_data=>x_msg_data,
2961                                p_msg_type=>'UNEXPECTED ERROR',
2962                                p_msg_level=>fnd_log.level_error);
2963       END IF;
2964       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2965         hz_utility_v2pub.debug(p_message=>'save_cust_accts(-)',
2966                                p_prefix=>l_debug_prefix,
2967                                p_msg_level=>fnd_log.level_procedure);
2968       END IF;
2969     WHEN OTHERS THEN
2970       x_return_status := fnd_api.g_ret_sts_unexp_error;
2971 
2972       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
2973       fnd_message.set_token('ERROR' ,SQLERRM);
2974       fnd_msg_pub.add;
2975 
2976       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2977                                 p_count => x_msg_count,
2978                                 p_data  => x_msg_data);
2979 
2980       -- Debug info.
2981       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2982         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2983                                p_msg_data=>x_msg_data,
2984                                p_msg_type=>'SQL ERROR',
2985                                p_msg_level=>fnd_log.level_error);
2986       END IF;
2987       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2988         hz_utility_v2pub.debug(p_message=>'save_cust_accts(-)',
2989                                p_prefix=>l_debug_prefix,
2990                                p_msg_level=>fnd_log.level_procedure);
2991       END IF;
2992   END save_cust_accts;
2993 
2994 
2995 END hz_cust_acct_bo_pvt;