[Home] [Help]
PACKAGE BODY: APPS.HZ_CUST_ACCT_BO_PUB
Source
1 PACKAGE BODY hz_cust_acct_bo_pub AS
2 /*$Header: ARHBCABB.pls 120.17.12020000.2 2012/07/23 22:31:27 awu ship $ */
3
4 -- PRIVATE PROCEDURE assign_cust_acct_rec
5 --
6 -- DESCRIPTION
7 -- Assign attribute value from customer account object to plsql record.
8 --
9 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
10 --
11 -- ARGUMENTS
12 -- IN:
13 -- p_cust_acct_obj Customer account object.
14 -- p_cust_acct_id Customer account Id.
15 -- p_cust_acct_os Customer account original system.
16 -- p_cust_acct_osr Customer account original system reference.
17 -- p_create_or_update Create or update flag.
18 -- IN/OUT:
19 -- px_cust_acct_rec Customer Account plsql record.
20 --
21 -- NOTES
22 --
23 -- MODIFICATION HISTORY
24 --
25 -- 14-DEC-2004 Arnold Ng Created.
26
27 PROCEDURE assign_cust_acct_rec(
28 p_cust_acct_obj IN HZ_CUST_ACCT_BO,
29 p_cust_acct_id IN NUMBER,
30 p_cust_acct_os IN VARCHAR2,
31 p_cust_acct_osr IN VARCHAR2,
32 p_create_or_update IN VARCHAR2 := 'C',
33 px_cust_acct_rec IN OUT NOCOPY HZ_CUST_ACCOUNT_V2PUB.CUST_ACCOUNT_REC_TYPE
34 );
35
36 -- PRIVATE PROCEDURE assign_cust_acct_rec
37 --
38 -- DESCRIPTION
39 -- Assign attribute value from customer account object to plsql record.
40 --
41 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
42 --
43 -- ARGUMENTS
44 -- IN:
45 -- p_cust_acct_obj Customer account object.
46 -- p_cust_acct_id Customer account Id.
47 -- p_cust_acct_os Customer account original system.
48 -- p_cust_acct_osr Customer account original system reference.
49 -- p_create_or_update Create or update flag.
50 -- IN/OUT:
51 -- px_cust_acct_rec Customer Account plsql record.
52 --
53 -- NOTES
54 --
55 -- MODIFICATION HISTORY
56 --
57 -- 14-DEC-2004 Arnold Ng Created.
58
59 PROCEDURE assign_cust_acct_rec(
60 p_cust_acct_obj IN HZ_CUST_ACCT_BO,
61 p_cust_acct_id IN NUMBER,
62 p_cust_acct_os IN VARCHAR2,
63 p_cust_acct_osr IN VARCHAR2,
64 p_create_or_update IN VARCHAR2 := 'C',
65 px_cust_acct_rec IN OUT NOCOPY HZ_CUST_ACCOUNT_V2PUB.CUST_ACCOUNT_REC_TYPE
66 ) IS
67 BEGIN
68 px_cust_acct_rec.cust_account_id := p_cust_acct_id;
69 px_cust_acct_rec.account_number := p_cust_acct_obj.account_number;
70 IF(p_cust_acct_obj.status in ('A','I')) THEN
71 px_cust_acct_rec.status := p_cust_acct_obj.status;
72 END IF;
73 px_cust_acct_rec.customer_type := p_cust_acct_obj.customer_type;
74 px_cust_acct_rec.customer_class_code := p_cust_acct_obj.customer_class_code;
75 px_cust_acct_rec.primary_salesrep_id := p_cust_acct_obj.primary_salesrep_id;
76 px_cust_acct_rec.sales_channel_code := p_cust_acct_obj.sales_channel_code;
77 px_cust_acct_rec.order_type_id := p_cust_acct_obj.order_type_id;
78 px_cust_acct_rec.price_list_id := p_cust_acct_obj.price_list_id;
79 px_cust_acct_rec.tax_code := p_cust_acct_obj.tax_code;
80 px_cust_acct_rec.fob_point := p_cust_acct_obj.fob_point;
81 px_cust_acct_rec.freight_term := p_cust_acct_obj.freight_term;
82 px_cust_acct_rec.ship_partial := p_cust_acct_obj.ship_partial;
83 px_cust_acct_rec.ship_via := p_cust_acct_obj.ship_via;
84 px_cust_acct_rec.warehouse_id := p_cust_acct_obj.warehouse_id;
85 IF(p_cust_acct_obj.tax_header_level_flag in ('Y','N')) THEN
86 px_cust_acct_rec.tax_header_level_flag := p_cust_acct_obj.tax_header_level_flag;
87 END IF;
88 px_cust_acct_rec.tax_rounding_rule := p_cust_acct_obj.tax_rounding_rule;
89 px_cust_acct_rec.coterminate_day_month := p_cust_acct_obj.coterminate_day_month;
90 px_cust_acct_rec.primary_specialist_id := p_cust_acct_obj.primary_specialist_id;
91 px_cust_acct_rec.secondary_specialist_id := p_cust_acct_obj.secondary_specialist_id;
92 IF(p_cust_acct_obj.account_liable_flag in ('Y','N')) THEN
93 px_cust_acct_rec.account_liable_flag := p_cust_acct_obj.account_liable_flag;
94 END IF;
95 px_cust_acct_rec.current_balance := p_cust_acct_obj.current_balance;
96 px_cust_acct_rec.account_established_date := p_cust_acct_obj.account_established_date;
97 px_cust_acct_rec.account_termination_date := p_cust_acct_obj.account_termination_date;
98 px_cust_acct_rec.account_activation_date := p_cust_acct_obj.account_activation_date;
99 px_cust_acct_rec.department := p_cust_acct_obj.department;
100 px_cust_acct_rec.held_bill_expiration_date:= p_cust_acct_obj.held_bill_expiration_date;
101 IF(p_cust_acct_obj.hold_bill_flag in ('Y','N')) THEN
102 px_cust_acct_rec.hold_bill_flag := p_cust_acct_obj.hold_bill_flag;
103 END IF;
104 px_cust_acct_rec.realtime_rate_flag := p_cust_acct_obj.realtime_rate_flag;
105 px_cust_acct_rec.acct_life_cycle_status := p_cust_acct_obj.acct_life_cycle_status;
106 px_cust_acct_rec.account_name := p_cust_acct_obj.account_name;
107 px_cust_acct_rec.deposit_refund_method := p_cust_acct_obj.deposit_refund_method;
108 IF(p_cust_acct_obj.dormant_account_flag in ('Y','N')) THEN
109 px_cust_acct_rec.dormant_account_flag := p_cust_acct_obj.dormant_account_flag;
110 END IF;
111 px_cust_acct_rec.npa_number := p_cust_acct_obj.npa_number;
112 px_cust_acct_rec.suspension_date := p_cust_acct_obj.suspension_date;
113 px_cust_acct_rec.source_code := p_cust_acct_obj.source_code;
114 px_cust_acct_rec.comments := p_cust_acct_obj.comments;
115 px_cust_acct_rec.dates_negative_tolerance := p_cust_acct_obj.dates_negative_tolerance;
116 px_cust_acct_rec.dates_positive_tolerance := p_cust_acct_obj.dates_positive_tolerance;
117 px_cust_acct_rec.date_type_preference := p_cust_acct_obj.date_type_preference;
118 px_cust_acct_rec.over_shipment_tolerance := p_cust_acct_obj.over_shipment_tolerance;
119 px_cust_acct_rec.under_shipment_tolerance := p_cust_acct_obj.under_shipment_tolerance;
120 px_cust_acct_rec.over_return_tolerance := p_cust_acct_obj.over_return_tolerance;
121 px_cust_acct_rec.under_return_tolerance := p_cust_acct_obj.under_return_tolerance;
122 px_cust_acct_rec.item_cross_ref_pref := p_cust_acct_obj.item_cross_ref_pref;
123 IF(p_cust_acct_obj.ship_sets_include_lines_flag in ('Y','N')) THEN
124 px_cust_acct_rec.ship_sets_include_lines_flag := p_cust_acct_obj.ship_sets_include_lines_flag;
125 END IF;
126 IF(p_cust_acct_obj.arrivalsets_incl_lines_flag in ('Y','N')) THEN
127 px_cust_acct_rec.arrivalsets_include_lines_flag := p_cust_acct_obj.arrivalsets_incl_lines_flag;
128 END IF;
129 IF(p_cust_acct_obj.sched_date_push_flag in ('Y','N')) THEN
130 px_cust_acct_rec.sched_date_push_flag := p_cust_acct_obj.sched_date_push_flag;
131 END IF;
132 px_cust_acct_rec.invoice_quantity_rule := p_cust_acct_obj.invoice_quantity_rule;
133 px_cust_acct_rec.pricing_event := p_cust_acct_obj.pricing_event;
134 px_cust_acct_rec.status_update_date := p_cust_acct_obj.status_update_date;
135 IF(p_cust_acct_obj.autopay_flag in ('Y','N')) THEN
136 px_cust_acct_rec.autopay_flag := p_cust_acct_obj.autopay_flag;
137 END IF;
138 IF(p_cust_acct_obj.notify_flag in ('Y','N')) THEN
139 px_cust_acct_rec.notify_flag := p_cust_acct_obj.notify_flag;
140 END IF;
141 px_cust_acct_rec.last_batch_id := p_cust_acct_obj.last_batch_id;
142 px_cust_acct_rec.selling_party_id := p_cust_acct_obj.selling_party_id;
143 IF(p_create_or_update = 'C') THEN
144 px_cust_acct_rec.orig_system := p_cust_acct_os;
145 px_cust_acct_rec.orig_system_reference := p_cust_acct_osr;
146 px_cust_acct_rec.created_by_module := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
147 END IF;
148 px_cust_acct_rec.attribute_category := p_cust_acct_obj.attribute_category;
149 px_cust_acct_rec.attribute1 := p_cust_acct_obj.attribute1;
150 px_cust_acct_rec.attribute2 := p_cust_acct_obj.attribute2;
151 px_cust_acct_rec.attribute3 := p_cust_acct_obj.attribute3;
152 px_cust_acct_rec.attribute4 := p_cust_acct_obj.attribute4;
153 px_cust_acct_rec.attribute5 := p_cust_acct_obj.attribute5;
154 px_cust_acct_rec.attribute6 := p_cust_acct_obj.attribute6;
155 px_cust_acct_rec.attribute7 := p_cust_acct_obj.attribute7;
156 px_cust_acct_rec.attribute8 := p_cust_acct_obj.attribute8;
157 px_cust_acct_rec.attribute9 := p_cust_acct_obj.attribute9;
158 px_cust_acct_rec.attribute10 := p_cust_acct_obj.attribute10;
159 px_cust_acct_rec.attribute11 := p_cust_acct_obj.attribute11;
160 px_cust_acct_rec.attribute12 := p_cust_acct_obj.attribute12;
161 px_cust_acct_rec.attribute13 := p_cust_acct_obj.attribute13;
162 px_cust_acct_rec.attribute14 := p_cust_acct_obj.attribute14;
163 px_cust_acct_rec.attribute15 := p_cust_acct_obj.attribute15;
164 px_cust_acct_rec.attribute16 := p_cust_acct_obj.attribute16;
165 px_cust_acct_rec.attribute17 := p_cust_acct_obj.attribute17;
166 px_cust_acct_rec.attribute18 := p_cust_acct_obj.attribute18;
167 px_cust_acct_rec.attribute19 := p_cust_acct_obj.attribute19;
168 px_cust_acct_rec.attribute20 := p_cust_acct_obj.attribute20;
169 px_cust_acct_rec.global_attribute_category := p_cust_acct_obj.global_attribute_category;
170 px_cust_acct_rec.global_attribute1 := p_cust_acct_obj.global_attribute1;
171 px_cust_acct_rec.global_attribute2 := p_cust_acct_obj.global_attribute2;
172 px_cust_acct_rec.global_attribute3 := p_cust_acct_obj.global_attribute3;
173 px_cust_acct_rec.global_attribute4 := p_cust_acct_obj.global_attribute4;
174 px_cust_acct_rec.global_attribute5 := p_cust_acct_obj.global_attribute5;
175 px_cust_acct_rec.global_attribute6 := p_cust_acct_obj.global_attribute6;
176 px_cust_acct_rec.global_attribute7 := p_cust_acct_obj.global_attribute7;
177 px_cust_acct_rec.global_attribute8 := p_cust_acct_obj.global_attribute8;
178 px_cust_acct_rec.global_attribute9 := p_cust_acct_obj.global_attribute9;
179 px_cust_acct_rec.global_attribute10 := p_cust_acct_obj.global_attribute10;
180 px_cust_acct_rec.global_attribute11 := p_cust_acct_obj.global_attribute11;
181 px_cust_acct_rec.global_attribute12 := p_cust_acct_obj.global_attribute12;
182 px_cust_acct_rec.global_attribute13 := p_cust_acct_obj.global_attribute13;
183 px_cust_acct_rec.global_attribute14 := p_cust_acct_obj.global_attribute14;
184 px_cust_acct_rec.global_attribute15 := p_cust_acct_obj.global_attribute15;
185 px_cust_acct_rec.global_attribute16 := p_cust_acct_obj.global_attribute16;
186 px_cust_acct_rec.global_attribute17 := p_cust_acct_obj.global_attribute17;
187 px_cust_acct_rec.global_attribute18 := p_cust_acct_obj.global_attribute18;
188 px_cust_acct_rec.global_attribute19 := p_cust_acct_obj.global_attribute19;
189 px_cust_acct_rec.global_attribute20 := p_cust_acct_obj.global_attribute20;
190 END assign_cust_acct_rec;
191
192 PROCEDURE default_cust_profile_amts(x_cpa_objs OUT NOCOPY HZ_CUST_PROFILE_AMT_OBJ_TBL)
193 is
194 l_profile_class_amount_id NUMBER;
195 l_profile_class_id NUMBER;
196 l_default_profile_class_id NUMBER :=0;
197 i number := 0;
198 CURSOR c_profile_class_amts IS
199 SELECT PROFILE_CLASS_AMOUNT_ID
200 FROM HZ_CUST_PROF_CLASS_AMTS
201 WHERE PROFILE_CLASS_ID = l_default_profile_class_id;
202 l_cp_obj HZ_CUST_PROFILE_AMT_OBJ;
203
204 begin
205 x_cpa_objs := HZ_CUST_PROFILE_AMT_OBJ_TBL();
206 l_cp_obj := HZ_CUST_PROFILE_AMT_OBJ.create_object();
207 OPEN c_profile_class_amts;
208 LOOP
209 FETCH c_profile_class_amts INTO l_profile_class_amount_id;
210 EXIT WHEN c_profile_class_amts%NOTFOUND;
211 i:=i+1;
212 x_cpa_objs.EXTEND;
213 x_cpa_objs(i) := l_cp_obj;
214 HZ_CUST_PROF_CLASS_AMTS_PKG.Select_Row (
215 X_PROFILE_CLASS_AMOUNT_ID => l_profile_class_amount_id,
216 X_PROFILE_CLASS_ID => l_default_profile_class_id,
217 X_CURRENCY_CODE => x_cpa_objs(i).currency_code,
218 X_TRX_CREDIT_LIMIT => x_cpa_objs(i).trx_credit_limit,
219 X_OVERALL_CREDIT_LIMIT => x_cpa_objs(i).overall_credit_limit,
220 X_MIN_DUNNING_AMOUNT => x_cpa_objs(i).min_dunning_amount,
221 X_MAX_INTEREST_CHARGE => x_cpa_objs(i).max_interest_charge,
222 X_MIN_STATEMENT_AMOUNT => x_cpa_objs(i).min_statement_amount,
223 X_AUTO_REC_MIN_RECEIPT_AMOUNT => x_cpa_objs(i).auto_rec_min_receipt_amount,
224 X_ATTRIBUTE_CATEGORY => x_cpa_objs(i).attribute_category,
225 X_ATTRIBUTE1 => x_cpa_objs(i).attribute1,
226 X_ATTRIBUTE2 => x_cpa_objs(i).attribute2,
227 X_ATTRIBUTE3 => x_cpa_objs(i).attribute3,
228 X_ATTRIBUTE4 => x_cpa_objs(i).attribute4,
229 X_ATTRIBUTE5 => x_cpa_objs(i).attribute5,
230 X_ATTRIBUTE6 => x_cpa_objs(i).attribute6,
231 X_ATTRIBUTE7 => x_cpa_objs(i).attribute7,
232 X_ATTRIBUTE8 => x_cpa_objs(i).attribute8,
233 X_ATTRIBUTE9 => x_cpa_objs(i).attribute9,
234 X_ATTRIBUTE10 => x_cpa_objs(i).attribute10,
235 X_ATTRIBUTE11 => x_cpa_objs(i).attribute11,
236 X_ATTRIBUTE12 => x_cpa_objs(i).attribute12,
237 X_ATTRIBUTE13 => x_cpa_objs(i).attribute13,
238 X_ATTRIBUTE14 => x_cpa_objs(i).attribute14,
239 X_ATTRIBUTE15 => x_cpa_objs(i).attribute15,
240 X_INTEREST_RATE => x_cpa_objs(i).interest_rate,
241 X_MIN_FC_BALANCE_AMOUNT => x_cpa_objs(i).min_fc_balance_amount,
242 X_MIN_FC_INVOICE_AMOUNT => x_cpa_objs(i).min_fc_invoice_amount,
243 X_MIN_DUNNING_INVOICE_AMOUNT => x_cpa_objs(i).min_dunning_invoice_amount,
244 X_EXPIRATION_DATE => x_cpa_objs(i).expiration_date,
245 X_JGZZ_ATTRIBUTE_CATEGORY => x_cpa_objs(i).jgzz_attribute_category,
246 X_JGZZ_ATTRIBUTE1 => x_cpa_objs(i).jgzz_attribute1,
247 X_JGZZ_ATTRIBUTE2 => x_cpa_objs(i).jgzz_attribute2,
248 X_JGZZ_ATTRIBUTE3 => x_cpa_objs(i).jgzz_attribute3,
249 X_JGZZ_ATTRIBUTE4 => x_cpa_objs(i).jgzz_attribute4,
250 X_JGZZ_ATTRIBUTE5 => x_cpa_objs(i).jgzz_attribute5,
251 X_JGZZ_ATTRIBUTE6 => x_cpa_objs(i).jgzz_attribute6,
252 X_JGZZ_ATTRIBUTE7 => x_cpa_objs(i).jgzz_attribute7,
253 X_JGZZ_ATTRIBUTE8 => x_cpa_objs(i).jgzz_attribute8,
254 X_JGZZ_ATTRIBUTE9 => x_cpa_objs(i).jgzz_attribute9,
255 X_JGZZ_ATTRIBUTE10 => x_cpa_objs(i).jgzz_attribute10,
256 X_JGZZ_ATTRIBUTE11 => x_cpa_objs(i).jgzz_attribute11,
257 X_JGZZ_ATTRIBUTE12 => x_cpa_objs(i).jgzz_attribute12,
258 X_JGZZ_ATTRIBUTE13 => x_cpa_objs(i).jgzz_attribute13,
259 X_JGZZ_ATTRIBUTE14 => x_cpa_objs(i).jgzz_attribute14,
260 X_JGZZ_ATTRIBUTE15 => x_cpa_objs(i).jgzz_attribute15,
261 X_GLOBAL_ATTRIBUTE1 => x_cpa_objs(i).global_attribute1,
262 X_GLOBAL_ATTRIBUTE2 => x_cpa_objs(i).global_attribute2,
263 X_GLOBAL_ATTRIBUTE3 => x_cpa_objs(i).global_attribute3,
264 X_GLOBAL_ATTRIBUTE4 => x_cpa_objs(i).global_attribute4,
265 X_GLOBAL_ATTRIBUTE5 => x_cpa_objs(i).global_attribute5,
266 X_GLOBAL_ATTRIBUTE6 => x_cpa_objs(i).global_attribute6,
267 X_GLOBAL_ATTRIBUTE7 => x_cpa_objs(i).global_attribute7,
268 X_GLOBAL_ATTRIBUTE8 => x_cpa_objs(i).global_attribute8,
269 X_GLOBAL_ATTRIBUTE9 => x_cpa_objs(i).global_attribute9,
270 X_GLOBAL_ATTRIBUTE10 => x_cpa_objs(i).global_attribute10,
271 X_GLOBAL_ATTRIBUTE11 => x_cpa_objs(i).global_attribute11,
272 X_GLOBAL_ATTRIBUTE12 => x_cpa_objs(i).global_attribute12,
273 X_GLOBAL_ATTRIBUTE13 => x_cpa_objs(i).global_attribute13,
274 X_GLOBAL_ATTRIBUTE14 => x_cpa_objs(i).global_attribute14,
275 X_GLOBAL_ATTRIBUTE15 => x_cpa_objs(i).global_attribute15,
276 X_GLOBAL_ATTRIBUTE16 => x_cpa_objs(i).global_attribute16,
277 X_GLOBAL_ATTRIBUTE17 => x_cpa_objs(i).global_attribute17,
278 X_GLOBAL_ATTRIBUTE18 => x_cpa_objs(i).global_attribute18,
279 X_GLOBAL_ATTRIBUTE19 => x_cpa_objs(i).global_attribute19,
280 X_GLOBAL_ATTRIBUTE20 => x_cpa_objs(i).global_attribute20,
281 X_GLOBAL_ATTRIBUTE_CATEGORY => x_cpa_objs(i).global_attribute_category,
282 X_EXCHANGE_RATE_TYPE => x_cpa_objs(i).exchange_rate_type,
283 X_MIN_FC_INVOICE_OVERDUE_TYPE => x_cpa_objs(i).min_fc_invoice_overdue_type,
284 X_MIN_FC_INVOICE_PERCENT => x_cpa_objs(i).min_fc_invoice_percent,
285 X_MIN_FC_BALANCE_OVERDUE_TYPE => x_cpa_objs(i).min_fc_balance_overdue_type,
286 X_MIN_FC_BALANCE_PERCENT => x_cpa_objs(i).min_fc_balance_percent,
287 X_INTEREST_TYPE => x_cpa_objs(i).interest_type,
288 X_INTEREST_FIXED_AMOUNT => x_cpa_objs(i).interest_fixed_amount,
289 X_INTEREST_SCHEDULE_ID => x_cpa_objs(i).interest_schedule_id,
290 X_PENALTY_TYPE => x_cpa_objs(i).penalty_type,
291 X_PENALTY_RATE => x_cpa_objs(i).penalty_rate,
292 X_MIN_INTEREST_CHARGE => x_cpa_objs(i).min_interest_charge,
293 X_PENALTY_FIXED_AMOUNT => x_cpa_objs(i).penalty_fixed_amount,
294 X_PENALTY_SCHEDULE_ID => x_cpa_objs(i).penalty_schedule_id
295 );
296
297 END LOOP;
298 CLOSE c_profile_class_amts;
299
300 EXCEPTION
301 WHEN OTHERS THEN
302 IF c_profile_class_amts%ISOPEN THEN
303 CLOSE c_profile_class_amts;
304 END IF;
305
306 RAISE;
307
308 END default_cust_profile_amts;
309
310 -- PROCEDURE do_create_cust_acct_bo
311 --
312 -- DESCRIPTION
313 -- Create customer account business object.
314 PROCEDURE do_create_cust_acct_bo(
315 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
316 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
317 p_cust_acct_obj IN OUT NOCOPY HZ_CUST_ACCT_BO,
318 p_created_by_module IN VARCHAR2,
319 p_obj_source IN VARCHAR2 := null,
320 x_return_status OUT NOCOPY VARCHAR2,
321 x_msg_count OUT NOCOPY NUMBER,
322 x_msg_data OUT NOCOPY VARCHAR2,
323 x_cust_acct_id OUT NOCOPY NUMBER,
324 x_cust_acct_os OUT NOCOPY VARCHAR2,
325 x_cust_acct_osr OUT NOCOPY VARCHAR2,
326 px_parent_id IN OUT NOCOPY NUMBER,
327 px_parent_os IN OUT NOCOPY VARCHAR2,
328 px_parent_osr IN OUT NOCOPY VARCHAR2,
329 px_parent_obj_type IN OUT NOCOPY VARCHAR2
330 ) IS
331 l_debug_prefix VARCHAR2(30) := '';
332 l_cust_acct_rec HZ_CUST_ACCOUNT_V2PUB.CUST_ACCOUNT_REC_TYPE;
333 l_person_rec HZ_PARTY_V2PUB.PERSON_REC_TYPE;
334 l_organization_rec HZ_PARTY_V2PUB.ORGANIZATION_REC_TYPE;
335 l_profile_rec HZ_CUSTOMER_PROFILE_V2PUB.CUSTOMER_PROFILE_REC_TYPE;
336
337 l_party_id NUMBER;
338 l_party_number VARCHAR2(30);
339 l_profile_id NUMBER;
340 l_cust_acct_profile_id NUMBER;
341 l_account_number VARCHAR2(30);
342 l_valid_obj BOOLEAN;
343 l_bus_object HZ_REGISTRY_VALIDATE_BO_PVT.COMPLETENESS_REC_TYPE;
344 l_cbm VARCHAR2(30);
345
346 CURSOR get_cust_acct_profile_id(p_cust_acct_id NUMBER) IS
347 SELECT cust_account_profile_id
348 FROM HZ_CUSTOMER_PROFILES
349 WHERE cust_account_id = p_cust_acct_id;
350 BEGIN
351 -- Standard start of API savepoint
352 SAVEPOINT do_create_cust_acct_bo_pub;
353
354 -- initialize API return status to success.
355 x_return_status := FND_API.G_RET_STS_SUCCESS;
356
357 -- Initialize message list if p_init_msg_list is set to TRUE.
358 IF FND_API.to_Boolean(p_init_msg_list) THEN
359 FND_MSG_PUB.initialize;
360 END IF;
361
362 -- initialize Global variable
363 HZ_UTILITY_V2PUB.G_CALLING_API := 'BO_API';
364 IF(p_created_by_module IS NULL) THEN
365 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := 'BO_API';
366 ELSE
367 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := p_created_by_module;
368 END IF;
369
370 -- Debug info.
371 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
372 hz_utility_v2pub.debug(p_message=>'do_create_cust_acct_bo(+)',
373 p_prefix=>l_debug_prefix,
374 p_msg_level=>fnd_log.level_procedure);
375 END IF;
376
377 -- Base on p_validate_bo_flag, check the completeness of business objects
378 IF(p_validate_bo_flag = FND_API.G_TRUE) THEN
379 HZ_REGISTRY_VALIDATE_BO_PVT.get_bus_obj_struct(
380 p_bus_object_code => 'CUST_ACCT',
381 x_bus_object => l_bus_object
382 );
383 l_valid_obj := HZ_REGISTRY_VALIDATE_BO_PVT.is_ca_bo_comp(
384 p_ca_objs => HZ_CUST_ACCT_BO_TBL(p_cust_acct_obj),
385 p_bus_object => l_bus_object
386 );
387 IF NOT(l_valid_obj) THEN
388 RAISE fnd_api.g_exc_error;
389 END IF;
390 END IF;
391
392 -- check pass in parent_id and parent_os+osr
393 hz_registry_validate_bo_pvt.validate_parent_id(
394 px_parent_id => px_parent_id,
395 px_parent_os => px_parent_os,
396 px_parent_osr => px_parent_osr,
397 p_parent_obj_type => px_parent_obj_type,
398 x_return_status => x_return_status,
399 x_msg_count => x_msg_count,
400 x_msg_data => x_msg_data);
401
402 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
403 RAISE FND_API.G_EXC_ERROR;
404 END IF;
405
406 x_cust_acct_id := p_cust_acct_obj.cust_acct_id;
407 x_cust_acct_os := p_cust_acct_obj.orig_system;
408 x_cust_acct_osr := p_cust_acct_obj.orig_system_reference;
409
410 -- check if pass in cust_acct_id and os+osr
411 hz_registry_validate_bo_pvt.validate_ssm_id(
412 px_id => x_cust_acct_id,
413 px_os => x_cust_acct_os,
414 px_osr => x_cust_acct_osr,
415 p_obj_type => 'HZ_CUST_ACCOUNTS',
416 p_create_or_update => 'C',
417 x_return_status => x_return_status,
418 x_msg_count => x_msg_count,
419 x_msg_data => x_msg_data);
420
421 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
422 RAISE FND_API.G_EXC_ERROR;
423 END IF;
424
425 assign_cust_acct_rec(
426 p_cust_acct_obj => p_cust_acct_obj,
427 p_cust_acct_id => x_cust_acct_id,
428 p_cust_acct_os => x_cust_acct_os,
429 p_cust_acct_osr => x_cust_acct_osr,
430 px_cust_acct_rec => l_cust_acct_rec
431 );
432
433 IF(p_cust_acct_obj.cust_profile_obj IS NULL) THEN
434 fnd_message.set_name('AR', 'HZ_API_MISSING_MANDATORY_ENT');
435 fnd_message.set_token('ENTITY' ,'CUST_PROFILE');
436 fnd_msg_pub.add;
437 RAISE FND_API.G_EXC_ERROR;
438 END IF;
439
440 HZ_CUST_ACCT_BO_PVT.assign_cust_profile_rec(
441 p_cust_profile_obj => p_cust_acct_obj.cust_profile_obj,
442 p_cust_acct_id => x_cust_acct_id,
443 p_site_use_id => NULL,
444 px_cust_profile_rec => l_profile_rec
445 );
446
447 -- set party_id to party record
448 -- profile amount will be created after creating cust account
449 -- therefore set p_create_profile_amt to FND_API.G_FALSE
450 IF(px_parent_obj_type = 'ORG') THEN
451 l_organization_rec.party_rec.party_id := px_parent_id;
452 HZ_CUST_ACCOUNT_V2PUB.create_cust_account (
453 p_cust_account_rec => l_cust_acct_rec,
454 p_organization_rec => l_organization_rec,
455 p_customer_profile_rec => l_profile_rec,
456 p_create_profile_amt => FND_API.G_FALSE,
457 x_cust_account_id => x_cust_acct_id,
458 x_account_number => l_account_number,
459 x_party_id => l_party_id,
460 x_party_number => l_party_number,
461 x_profile_id => l_profile_id,
462 x_return_status => x_return_status,
463 x_msg_count => x_msg_count,
464 x_msg_data => x_msg_data
465 );
466 ELSE
467 l_person_rec.party_rec.party_id := px_parent_id;
468 HZ_CUST_ACCOUNT_V2PUB.create_cust_account (
469 p_cust_account_rec => l_cust_acct_rec,
470 p_person_rec => l_person_rec,
471 p_customer_profile_rec => l_profile_rec,
472 p_create_profile_amt => FND_API.G_FALSE,
473 x_cust_account_id => x_cust_acct_id,
474 x_account_number => l_account_number,
475 x_party_id => l_party_id,
476 x_party_number => l_party_number,
477 x_profile_id => l_profile_id,
478 x_return_status => x_return_status,
479 x_msg_count => x_msg_count,
480 x_msg_data => x_msg_data
481 );
482 END IF;
483
484 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
485 RAISE FND_API.G_EXC_ERROR;
486 END IF;
487
488 OPEN get_cust_acct_profile_id(x_cust_acct_id);
489 FETCH get_cust_acct_profile_id INTO l_cust_acct_profile_id;
490 CLOSE get_cust_acct_profile_id;
491
492 -- assign cust_acct_id
493 p_cust_acct_obj.cust_acct_id := x_cust_acct_id;
494 p_cust_acct_obj.cust_profile_obj.cust_acct_profile_id := l_cust_acct_profile_id;
495
496
497 IF (p_cust_acct_obj.cust_profile_obj.cust_profile_amt_objs IS NULL or p_cust_acct_obj.cust_profile_obj.cust_profile_amt_objs.count = 0 )
498 and (p_cust_acct_obj.cust_profile_obj.profile_class_id is null OR p_cust_acct_obj.cust_profile_obj.profile_class_id = 0)
499 then
500 default_cust_profile_amts(p_cust_acct_obj.cust_profile_obj.cust_profile_amt_objs);
501 end if;
502
503 p_cust_acct_obj.account_number := l_account_number;
504
505 -----------------------------
506 -- Create cust profile amount
507 -----------------------------
508 IF((p_cust_acct_obj.cust_profile_obj.cust_profile_amt_objs IS NOT NULL) AND
509 (p_cust_acct_obj.cust_profile_obj.cust_profile_amt_objs.COUNT > 0)) THEN
510 HZ_CUST_ACCT_BO_PVT.create_cust_profile_amts(
511 p_cpa_objs => p_cust_acct_obj.cust_profile_obj.cust_profile_amt_objs,
512 p_cp_id => l_cust_acct_profile_id,
513 p_ca_id => x_cust_acct_id,
514 p_casu_id => NULL,
515 x_return_status => x_return_status,
516 x_msg_count => x_msg_count,
517 x_msg_data => x_msg_data
518 );
519
520 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
521 RAISE FND_API.G_EXC_ERROR;
522 END IF;
523 END IF;
524
525 -------------------------------------
526 -- Create cust acct relate
527 -------------------------------------
528 IF((p_cust_acct_obj.acct_relate_objs IS NOT NULL) AND
529 (p_cust_acct_obj.acct_relate_objs.COUNT > 0)) THEN
530 HZ_CUST_ACCT_BO_PVT.create_cust_acct_relates(
531 p_car_objs => p_cust_acct_obj.acct_relate_objs,
532 p_ca_id => x_cust_acct_id,
533 x_return_status => x_return_status,
534 x_msg_count => x_msg_count,
535 x_msg_data => x_msg_data
536 );
537
538 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
539 RAISE FND_API.G_EXC_ERROR;
540 END IF;
541 END IF;
542
543 l_cbm := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
544
545 -------------------------------------
546 -- Call cust account contact
547 -------------------------------------
548 -- Parent of cust account contact is cust account site
549 -- so pass x_cust_acct_id, x_cust_acct_os and x_cust_acct_osr
550 IF((p_cust_acct_obj.cust_acct_contact_objs IS NOT NULL) AND
551 (p_cust_acct_obj.cust_acct_contact_objs.COUNT > 0)) THEN
552 HZ_CUST_ACCT_CONTACT_BO_PVT.save_cust_acct_contacts(
553 p_cac_objs => p_cust_acct_obj.cust_acct_contact_objs,
554 p_create_update_flag => 'C',
555 p_obj_source => p_obj_source,
556 x_return_status => x_return_status,
557 x_msg_count => x_msg_count,
558 x_msg_data => x_msg_data,
559 p_parent_id => x_cust_acct_id,
560 p_parent_os => x_cust_acct_os,
561 p_parent_osr => x_cust_acct_osr,
562 p_parent_obj_type => 'CUST_ACCT'
563 );
564
565 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
566 RAISE FND_API.G_EXC_ERROR;
567 END IF;
568 END IF;
569
570 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
571
572 -------------------------------------
573 -- Call cust account site
574 -------------------------------------
575 -- create cust account site uses will include cust acct site use plus site use profile
576 -- need to put customer account id and customer account site id
577 IF((p_cust_acct_obj.cust_acct_site_objs IS NOT NULL) AND
578 (p_cust_acct_obj.cust_acct_site_objs.COUNT > 0)) THEN
579 HZ_CUST_ACCT_SITE_BO_PVT.save_cust_acct_sites(
580 p_cas_objs => p_cust_acct_obj.cust_acct_site_objs,
581 p_create_update_flag => 'C',
582 p_obj_source => p_obj_source,
583 x_return_status => x_return_status,
584 x_msg_count => x_msg_count,
585 x_msg_data => x_msg_data,
586 p_parent_acct_id => x_cust_acct_id,
587 p_parent_acct_os => x_cust_acct_os,
588 p_parent_acct_osr => x_cust_acct_osr
589 );
590
591 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
592 RAISE FND_API.G_EXC_ERROR;
593 END IF;
594 END IF;
595
596 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
597
598 ------------------------
599 -- Call bank account use
600 ------------------------
601 IF((p_cust_acct_obj.bank_acct_use_objs IS NOT NULL) AND
602 (p_cust_acct_obj.bank_acct_use_objs.COUNT > 0)) THEN
603 HZ_CUST_ACCT_BO_PVT.save_bank_acct_uses(
604 p_bank_acct_use_objs => p_cust_acct_obj.bank_acct_use_objs,
605 p_party_id => l_party_id,
606 p_ca_id => x_cust_acct_id,
607 p_casu_id => NULL,
608 x_return_status => x_return_status,
609 x_msg_count => x_msg_count,
610 x_msg_data => x_msg_data
611 );
612
613 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
614 RAISE FND_API.G_EXC_ERROR;
615 END IF;
616 END IF;
617
618 ------------------------
619 -- Call payment method
620 ------------------------
621 IF(p_cust_acct_obj.payment_method_obj IS NOT NULL) THEN
622 HZ_CUST_ACCT_BO_PVT.create_payment_method(
623 p_payment_method_obj => p_cust_acct_obj.payment_method_obj,
624 p_ca_id => x_cust_acct_id,
625 p_casu_id => NULL,
626 x_return_status => x_return_status,
627 x_msg_count => x_msg_count,
628 x_msg_data => x_msg_data
629 );
630
631 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
632 RAISE FND_API.G_EXC_ERROR;
633 END IF;
634 END IF;
635
636 -- reset Global variable
637 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
638 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
639
640 -- Debug info.
641 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
642 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
643 p_msg_data=>x_msg_data,
644 p_msg_type=>'WARNING',
645 p_msg_level=>fnd_log.level_exception);
646 END IF;
647 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
648 hz_utility_v2pub.debug(p_message=>'do_create_cust_acct_bo(-)',
649 p_prefix=>l_debug_prefix,
650 p_msg_level=>fnd_log.level_procedure);
651 END IF;
652
653 EXCEPTION
654 WHEN fnd_api.g_exc_error THEN
655 ROLLBACK TO do_create_cust_acct_bo_pub;
656
657 -- reset Global variable
658 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
659 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
660
661 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
662 FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT');
663 FND_MSG_PUB.ADD;
664
665 x_return_status := fnd_api.g_ret_sts_error;
666
667 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
668 p_count => x_msg_count,
669 p_data => x_msg_data);
670
671 -- Debug info.
672 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
673 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
674 p_msg_data=>x_msg_data,
675 p_msg_type=>'ERROR',
676 p_msg_level=>fnd_log.level_error);
677 END IF;
678 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
679 hz_utility_v2pub.debug(p_message=>'do_create_cust_acct_bo(-)',
680 p_prefix=>l_debug_prefix,
681 p_msg_level=>fnd_log.level_procedure);
682 END IF;
683
684 WHEN fnd_api.g_exc_unexpected_error THEN
685 ROLLBACK TO do_create_cust_acct_bo_pub;
686
687 -- reset Global variable
688 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
689 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
690
691 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
692 FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT');
693 FND_MSG_PUB.ADD;
694
695 x_return_status := fnd_api.g_ret_sts_unexp_error;
696
697 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
698 p_count => x_msg_count,
699 p_data => x_msg_data);
700
701 -- Debug info.
702 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
703 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
704 p_msg_data=>x_msg_data,
705 p_msg_type=>'UNEXPECTED ERROR',
706 p_msg_level=>fnd_log.level_error);
707 END IF;
708 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
709 hz_utility_v2pub.debug(p_message=>'do_create_cust_acct_bo(-)',
710 p_prefix=>l_debug_prefix,
711 p_msg_level=>fnd_log.level_procedure);
712 END IF;
713
714 WHEN OTHERS THEN
715 ROLLBACK TO do_create_cust_acct_bo_pub;
716
717 -- reset Global variable
718 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
719 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
720
721 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
722 FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT');
723 FND_MSG_PUB.ADD;
724
725 x_return_status := fnd_api.g_ret_sts_unexp_error;
726
727 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
728 fnd_message.set_token('ERROR' ,SQLERRM);
729 fnd_msg_pub.add;
730
731 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
732 p_count => x_msg_count,
733 p_data => x_msg_data);
734
735 -- Debug info.
736 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
737 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
738 p_msg_data=>x_msg_data,
739 p_msg_type=>'SQL ERROR',
740 p_msg_level=>fnd_log.level_error);
741 END IF;
742 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
743 hz_utility_v2pub.debug(p_message=>'do_create_cust_acct_bo(-)',
744 p_prefix=>l_debug_prefix,
745 p_msg_level=>fnd_log.level_procedure);
746 END IF;
747 END do_create_cust_acct_bo;
748
749
750 PROCEDURE create_cust_acct_bo(
751 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
752 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
753 p_cust_acct_obj IN HZ_CUST_ACCT_BO,
754 p_created_by_module IN VARCHAR2,
755 x_return_status OUT NOCOPY VARCHAR2,
756 x_msg_count OUT NOCOPY NUMBER,
757 x_msg_data OUT NOCOPY VARCHAR2,
758 x_cust_acct_id OUT NOCOPY NUMBER,
759 x_cust_acct_os OUT NOCOPY VARCHAR2,
760 x_cust_acct_osr OUT NOCOPY VARCHAR2,
761 px_parent_id IN OUT NOCOPY NUMBER,
762 px_parent_os IN OUT NOCOPY VARCHAR2,
763 px_parent_osr IN OUT NOCOPY VARCHAR2,
764 px_parent_obj_type IN OUT NOCOPY VARCHAR2
765 ) IS
766 l_ca_obj HZ_CUST_ACCT_BO;
767 BEGIN
768 l_ca_obj := p_cust_acct_obj;
769 do_create_cust_acct_bo(
770 p_init_msg_list => p_init_msg_list,
771 p_validate_bo_flag => p_validate_bo_flag,
772 p_cust_acct_obj => l_ca_obj,
773 p_created_by_module => p_created_by_module,
774 p_obj_source => null,
775 x_return_status => x_return_status,
776 x_msg_count => x_msg_count,
777 x_msg_data => x_msg_data,
778 x_cust_acct_id => x_cust_acct_id,
779 x_cust_acct_os => x_cust_acct_os,
780 x_cust_acct_osr => x_cust_acct_osr,
781 px_parent_id => px_parent_id,
782 px_parent_os => px_parent_os,
783 px_parent_osr => px_parent_osr,
784 px_parent_obj_type => px_parent_obj_type
785 );
786 END create_cust_acct_bo;
787
788 PROCEDURE create_cust_acct_bo(
789 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
790 p_cust_acct_obj IN HZ_CUST_ACCT_BO,
791 p_created_by_module IN VARCHAR2,
792 p_obj_source IN VARCHAR2 := null,
793 p_return_obj_flag IN VARCHAR2 := fnd_api.g_true,
794 x_return_status OUT NOCOPY VARCHAR2,
795 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL,
796 x_return_obj OUT NOCOPY HZ_CUST_ACCT_BO,
797 x_cust_acct_id OUT NOCOPY NUMBER,
798 x_cust_acct_os OUT NOCOPY VARCHAR2,
799 x_cust_acct_osr OUT NOCOPY VARCHAR2,
800 px_parent_id IN OUT NOCOPY NUMBER,
801 px_parent_os IN OUT NOCOPY VARCHAR2,
802 px_parent_osr IN OUT NOCOPY VARCHAR2,
803 px_parent_obj_type IN OUT NOCOPY VARCHAR2
804 ) IS
805 l_msg_data VARCHAR2(2000);
806 l_msg_count NUMBER;
807 l_ca_obj HZ_CUST_ACCT_BO;
808 BEGIN
809 l_ca_obj := p_cust_acct_obj;
810 do_create_cust_acct_bo(
811 p_init_msg_list => fnd_api.g_true,
812 p_validate_bo_flag => p_validate_bo_flag,
813 p_cust_acct_obj => l_ca_obj,
814 p_created_by_module => p_created_by_module,
815 p_obj_source => p_obj_source,
816 x_return_status => x_return_status,
817 x_msg_count => l_msg_count,
818 x_msg_data => l_msg_data,
819 x_cust_acct_id => x_cust_acct_id,
820 x_cust_acct_os => x_cust_acct_os,
821 x_cust_acct_osr => x_cust_acct_osr,
822 px_parent_id => px_parent_id,
823 px_parent_os => px_parent_os,
824 px_parent_osr => px_parent_osr,
825 px_parent_obj_type => px_parent_obj_type
826 );
827 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
828 x_return_status => x_return_status,
829 x_msg_count => l_msg_count,
830 x_msg_data => l_msg_data);
831 IF FND_API.to_Boolean(p_return_obj_flag) THEN
832 x_return_obj := l_ca_obj;
833 END IF;
834 END create_cust_acct_bo;
835
836 PROCEDURE update_cust_acct_bo(
837 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
838 p_cust_acct_obj IN HZ_CUST_ACCT_BO,
839 p_created_by_module IN VARCHAR2,
840 x_return_status OUT NOCOPY VARCHAR2,
841 x_msg_count OUT NOCOPY NUMBER,
842 x_msg_data OUT NOCOPY VARCHAR2,
843 x_cust_acct_id OUT NOCOPY NUMBER,
844 x_cust_acct_os OUT NOCOPY VARCHAR2,
845 x_cust_acct_osr OUT NOCOPY VARCHAR2
846 )IS
847 l_ca_obj HZ_CUST_ACCT_BO;
848 BEGIN
849 l_ca_obj := p_cust_acct_obj;
850 do_update_cust_acct_bo(
851 p_init_msg_list => p_init_msg_list,
852 p_cust_acct_obj => l_ca_obj,
853 p_created_by_module => p_created_by_module,
854 p_obj_source => null,
855 x_return_status => x_return_status,
856 x_msg_count => x_msg_count,
857 x_msg_data => x_msg_data,
858 x_cust_acct_id => x_cust_acct_id,
859 x_cust_acct_os => x_cust_acct_os,
860 x_cust_acct_osr => x_cust_acct_osr,
861 p_parent_os => NULL
862 );
863 END update_cust_acct_bo;
864
865 PROCEDURE update_cust_acct_bo(
866 p_cust_acct_obj IN HZ_CUST_ACCT_BO,
867 p_created_by_module IN VARCHAR2,
868 p_obj_source IN VARCHAR2 := null,
869 p_return_obj_flag IN VARCHAR2 := fnd_api.g_true,
870 x_return_status OUT NOCOPY VARCHAR2,
871 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL,
872 x_return_obj OUT NOCOPY HZ_CUST_ACCT_BO,
873 x_cust_acct_id OUT NOCOPY NUMBER,
874 x_cust_acct_os OUT NOCOPY VARCHAR2,
875 x_cust_acct_osr OUT NOCOPY VARCHAR2
876 )IS
877 l_msg_data VARCHAR2(2000);
878 l_msg_count NUMBER;
879 l_ca_obj HZ_CUST_ACCT_BO;
880 BEGIN
881 l_ca_obj := p_cust_acct_obj;
882 do_update_cust_acct_bo(
883 p_init_msg_list => fnd_api.g_true,
884 p_cust_acct_obj => l_ca_obj,
885 p_created_by_module => p_created_by_module,
886 p_obj_source => p_obj_source,
887 x_return_status => x_return_status,
888 x_msg_count => l_msg_count,
889 x_msg_data => l_msg_data,
890 x_cust_acct_id => x_cust_acct_id,
891 x_cust_acct_os => x_cust_acct_os,
892 x_cust_acct_osr => x_cust_acct_osr,
893 p_parent_os => NULL
894 );
895 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
896 x_return_status => x_return_status,
897 x_msg_count => l_msg_count,
898 x_msg_data => l_msg_data);
899 IF FND_API.to_Boolean(p_return_obj_flag) THEN
900 x_return_obj := l_ca_obj;
901 END IF;
902 END update_cust_acct_bo;
903
904 -- PRIVATE PROCEDURE do_update_cust_acct_bo
905 --
906 -- DESCRIPTION
907 -- Update customer account business object.
908 PROCEDURE do_update_cust_acct_bo(
909 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
910 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
911 p_cust_acct_obj IN OUT NOCOPY HZ_CUST_ACCT_BO,
912 p_created_by_module IN VARCHAR2,
913 p_obj_source IN VARCHAR2 := null,
914 x_return_status OUT NOCOPY VARCHAR2,
915 x_msg_count OUT NOCOPY NUMBER,
916 x_msg_data OUT NOCOPY VARCHAR2,
917 x_cust_acct_id OUT NOCOPY NUMBER,
918 x_cust_acct_os OUT NOCOPY VARCHAR2,
919 x_cust_acct_osr OUT NOCOPY VARCHAR2,
920 p_parent_os IN VARCHAR2
921 )IS
922 l_debug_prefix VARCHAR2(30) := '';
923 l_cust_acct_rec HZ_CUST_ACCOUNT_V2PUB.CUST_ACCOUNT_REC_TYPE;
924 l_create_update_flag VARCHAR2(1);
925 l_org_contact_bo HZ_ORG_CONTACT_BO;
926 l_ovn NUMBER;
927 l_party_id NUMBER;
928 l_cust_acct_profile_id NUMBER;
929 l_cbm VARCHAR2(30);
930
931 CURSOR get_ovn(l_ca_id NUMBER) IS
932 SELECT a.object_version_number, a.party_id
933 FROM HZ_CUST_ACCOUNTS a
934 WHERE a.cust_account_id = l_ca_id;
935 BEGIN
936 -- Standard start of API savepoint
937 SAVEPOINT do_update_cust_acct_bo_pub;
938
939 -- initialize API return status to success.
940 x_return_status := FND_API.G_RET_STS_SUCCESS;
941
942 -- Initialize message list if p_init_msg_list is set to TRUE.
943 IF FND_API.to_Boolean(p_init_msg_list) THEN
944 FND_MSG_PUB.initialize;
945 END IF;
946
947 -- initialize Global variable
948 HZ_UTILITY_V2PUB.G_CALLING_API := 'BO_API';
949 IF(p_created_by_module IS NULL) THEN
950 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := 'BO_API';
951 ELSE
952 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := p_created_by_module;
953 END IF;
954
955 -- Debug info.
956 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
957 hz_utility_v2pub.debug(p_message=>'do_update_cust_acct_bo_pub(+)',
958 p_prefix=>l_debug_prefix,
959 p_msg_level=>fnd_log.level_procedure);
960 END IF;
961
962 -------------------------------
963 -- For Update cust accts
964 -------------------------------
965 x_cust_acct_id := p_cust_acct_obj.cust_acct_id;
966 x_cust_acct_os := p_cust_acct_obj.orig_system;
967 x_cust_acct_osr := p_cust_acct_obj.orig_system_reference;
968
969 -- validate ssm of cust account site
970 hz_registry_validate_bo_pvt.validate_ssm_id(
971 px_id => x_cust_acct_id,
972 px_os => x_cust_acct_os,
973 px_osr => x_cust_acct_osr,
974 p_obj_type => 'HZ_CUST_ACCOUNTS',
975 p_create_or_update => 'U',
976 x_return_status => x_return_status,
977 x_msg_count => x_msg_count,
978 x_msg_data => x_msg_data);
979
980 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
981 RAISE FND_API.G_EXC_ERROR;
982 END IF;
983
984 -- get object version number of customer acct
985 OPEN get_ovn(x_cust_acct_id);
986 FETCH get_ovn INTO l_ovn, l_party_id;
987 CLOSE get_ovn;
988
989 assign_cust_acct_rec(
990 p_cust_acct_obj => p_cust_acct_obj,
991 p_cust_acct_id => x_cust_acct_id,
992 p_cust_acct_os => x_cust_acct_os,
993 p_cust_acct_osr => x_cust_acct_osr,
994 p_create_or_update => 'U',
995 px_cust_acct_rec => l_cust_acct_rec
996 );
997
998 HZ_CUST_ACCOUNT_V2PUB.update_cust_account(
999 p_cust_account_rec => l_cust_acct_rec,
1000 p_object_version_number => l_ovn,
1001 x_return_status => x_return_status,
1002 x_msg_count => x_msg_count,
1003 x_msg_data => x_msg_data
1004 );
1005
1006 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1007 RAISE FND_API.G_EXC_ERROR;
1008 END IF;
1009
1010 -- assign cust_acct_id
1011 p_cust_acct_obj.cust_acct_id := x_cust_acct_id;
1012 -----------------------------
1013 -- For Update account profile
1014 -----------------------------
1015 IF(p_cust_acct_obj.cust_profile_obj IS NOT NULL) THEN
1016 HZ_CUST_ACCT_BO_PVT.update_cust_profile(
1017 p_cp_obj => p_cust_acct_obj.cust_profile_obj,
1018 p_ca_id => x_cust_acct_id,
1019 p_casu_id => NULL,
1020 x_cp_id => l_cust_acct_profile_id,
1021 x_return_status => x_return_status,
1022 x_msg_count => x_msg_count,
1023 x_msg_data => x_msg_data
1024 );
1025
1026 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1027 RAISE FND_API.G_EXC_ERROR;
1028 END IF;
1029
1030 -- assign cust_acct_profile_id
1031 p_cust_acct_obj.cust_profile_obj.cust_acct_profile_id := l_cust_acct_profile_id;
1032 ---------------------------------
1033 -- For Update account profile amt
1034 ---------------------------------
1035 IF((p_cust_acct_obj.cust_profile_obj.cust_profile_amt_objs IS NOT NULL) AND
1036 (p_cust_acct_obj.cust_profile_obj.cust_profile_amt_objs.COUNT > 0)) THEN
1037 HZ_CUST_ACCT_BO_PVT.save_cust_profile_amts(
1038 p_cpa_objs => p_cust_acct_obj.cust_profile_obj.cust_profile_amt_objs,
1039 p_cp_id => l_cust_acct_profile_id,
1040 p_ca_id => x_cust_acct_id,
1041 p_casu_id => NULL,
1042 x_return_status => x_return_status,
1043 x_msg_count => x_msg_count,
1044 x_msg_data => x_msg_data
1045 );
1046
1047 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1048 RAISE FND_API.G_EXC_ERROR;
1049 END IF;
1050 END IF;
1051 END IF;
1052
1053 l_cbm := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
1054
1055 -----------------------------------
1056 -- For cust account contact
1057 -----------------------------------
1058 IF((p_cust_acct_obj.cust_acct_contact_objs IS NOT NULL) AND
1059 (p_cust_acct_obj.cust_acct_contact_objs.COUNT > 0)) THEN
1060 HZ_CUST_ACCT_CONTACT_BO_PVT.save_cust_acct_contacts(
1061 p_cac_objs => p_cust_acct_obj.cust_acct_contact_objs,
1062 p_create_update_flag => 'U',
1063 p_obj_source => p_obj_source,
1064 x_return_status => x_return_status,
1065 x_msg_count => x_msg_count,
1066 x_msg_data => x_msg_data,
1067 p_parent_id => x_cust_acct_id,
1068 p_parent_os => x_cust_acct_os,
1069 p_parent_osr => x_cust_acct_osr,
1070 p_parent_obj_type => 'CUST_ACCT'
1071 );
1072
1073 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1074 RAISE FND_API.G_EXC_ERROR;
1075 END IF;
1076 END IF;
1077
1078 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
1079
1080 -------------------------------
1081 -- For Update account acct relate
1082 -------------------------------
1083 IF((p_cust_acct_obj.acct_relate_objs IS NOT NULL) AND
1084 (p_cust_acct_obj.acct_relate_objs.COUNT > 0)) THEN
1085 HZ_CUST_ACCT_BO_PVT.save_cust_acct_relates(
1086 p_car_objs => p_cust_acct_obj.acct_relate_objs,
1087 p_ca_id => x_cust_acct_id,
1088 x_return_status => x_return_status,
1089 x_msg_count => x_msg_count,
1090 x_msg_data => x_msg_data
1091 );
1092
1093 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1094 RAISE FND_API.G_EXC_ERROR;
1095 END IF;
1096 END IF;
1097
1098 -------------------------------------
1099 -- Call cust account site
1100 -------------------------------------
1101 -- create cust account site uses will include cust acct site use plus site use profile
1102 -- need to put customer account id and customer account site id
1103 IF((p_cust_acct_obj.cust_acct_site_objs IS NOT NULL) AND
1104 (p_cust_acct_obj.cust_acct_site_objs.COUNT > 0)) THEN
1105 HZ_CUST_ACCT_SITE_BO_PVT.save_cust_acct_sites(
1106 p_cas_objs => p_cust_acct_obj.cust_acct_site_objs,
1107 p_create_update_flag => 'U',
1108 p_obj_source => p_obj_source,
1109 x_return_status => x_return_status,
1110 x_msg_count => x_msg_count,
1111 x_msg_data => x_msg_data,
1112 p_parent_acct_id => x_cust_acct_id,
1113 p_parent_acct_os => x_cust_acct_os,
1114 p_parent_acct_osr => x_cust_acct_osr
1115 );
1116
1117 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1118 RAISE FND_API.G_EXC_ERROR;
1119 END IF;
1120 END IF;
1121
1122 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
1123
1124 ------------------------
1125 -- Call bank account use
1126 ------------------------
1127 IF((p_cust_acct_obj.bank_acct_use_objs IS NOT NULL) AND
1128 (p_cust_acct_obj.bank_acct_use_objs.COUNT > 0)) THEN
1129 HZ_CUST_ACCT_BO_PVT.save_bank_acct_uses(
1130 p_bank_acct_use_objs => p_cust_acct_obj.bank_acct_use_objs,
1131 p_party_id => l_party_id,
1132 p_ca_id => x_cust_acct_id,
1133 p_casu_id => NULL,
1134 x_return_status => x_return_status,
1135 x_msg_count => x_msg_count,
1136 x_msg_data => x_msg_data
1137 );
1138
1139 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1140 RAISE FND_API.G_EXC_ERROR;
1141 END IF;
1142 END IF;
1143
1144 ------------------------
1145 -- Call payment method
1146 ------------------------
1147 IF(p_cust_acct_obj.payment_method_obj IS NOT NULL) THEN
1148 HZ_CUST_ACCT_BO_PVT.save_payment_method(
1149 p_payment_method_obj => p_cust_acct_obj.payment_method_obj,
1150 p_ca_id => x_cust_acct_id,
1151 p_casu_id => NULL,
1152 x_return_status => x_return_status,
1153 x_msg_count => x_msg_count,
1154 x_msg_data => x_msg_data
1155 );
1156
1157 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1158 RAISE FND_API.G_EXC_ERROR;
1159 END IF;
1160 END IF;
1161
1162 -- reset Global variable
1163 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
1164 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
1165
1166 -- Debug info.
1167 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1168 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1169 p_msg_data=>x_msg_data,
1170 p_msg_type=>'WARNING',
1171 p_msg_level=>fnd_log.level_exception);
1172 END IF;
1173 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1174 hz_utility_v2pub.debug(p_message=>'do_update_cust_acct_bo(-)',
1175 p_prefix=>l_debug_prefix,
1176 p_msg_level=>fnd_log.level_procedure);
1177 END IF;
1178 EXCEPTION
1179 WHEN fnd_api.g_exc_error THEN
1180 ROLLBACK TO do_update_cust_acct_bo_pub;
1181
1182 -- reset Global variable
1183 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
1184 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
1185
1186 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
1187 FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT');
1188 FND_MSG_PUB.ADD;
1189
1190 x_return_status := fnd_api.g_ret_sts_error;
1191
1192 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1193 p_count => x_msg_count,
1194 p_data => x_msg_data);
1195
1196 -- Debug info.
1197 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1198 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1199 p_msg_data=>x_msg_data,
1200 p_msg_type=>'ERROR',
1201 p_msg_level=>fnd_log.level_error);
1202 END IF;
1203 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1204 hz_utility_v2pub.debug(p_message=>'do_update_cust_acct_bo(-)',
1205 p_prefix=>l_debug_prefix,
1206 p_msg_level=>fnd_log.level_procedure);
1207 END IF;
1208
1209 WHEN fnd_api.g_exc_unexpected_error THEN
1210 ROLLBACK TO do_update_cust_acct_bo_pub;
1211
1212 -- reset Global variable
1213 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
1214 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
1215
1216 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
1217 FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT');
1218 FND_MSG_PUB.ADD;
1219
1220 x_return_status := fnd_api.g_ret_sts_unexp_error;
1221
1222 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1223 p_count => x_msg_count,
1224 p_data => x_msg_data);
1225
1226 -- Debug info.
1227 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1228 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1229 p_msg_data=>x_msg_data,
1230 p_msg_type=>'UNEXPECTED ERROR',
1231 p_msg_level=>fnd_log.level_error);
1232 END IF;
1233 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1234 hz_utility_v2pub.debug(p_message=>'do_update_cust_acct_bo(-)',
1235 p_prefix=>l_debug_prefix,
1236 p_msg_level=>fnd_log.level_procedure);
1237 END IF;
1238
1239 WHEN OTHERS THEN
1240 ROLLBACK TO do_update_cust_acct_bo_pub;
1241
1242 -- reset Global variable
1243 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
1244 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
1245
1246 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
1247 FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT');
1248 FND_MSG_PUB.ADD;
1249
1250 x_return_status := fnd_api.g_ret_sts_unexp_error;
1251
1252 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1253 fnd_message.set_token('ERROR' ,SQLERRM);
1254 fnd_msg_pub.add;
1255
1256 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1257 p_count => x_msg_count,
1258 p_data => x_msg_data);
1259
1260 -- Debug info.
1261 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1262 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1263 p_msg_data=>x_msg_data,
1264 p_msg_type=>'SQL ERROR',
1265 p_msg_level=>fnd_log.level_error);
1266 END IF;
1267 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1268 hz_utility_v2pub.debug(p_message=>'do_update_cust_acct_bo(-)',
1269 p_prefix=>l_debug_prefix,
1270 p_msg_level=>fnd_log.level_procedure);
1271 END IF;
1272 END do_update_cust_acct_bo;
1273
1274 -- PROCEDURE do_save_cust_acct_bo
1275 --
1276 -- DESCRIPTION
1277 -- Create or update customer account business object.
1278 PROCEDURE do_save_cust_acct_bo(
1279 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
1280 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
1281 p_cust_acct_obj IN OUT NOCOPY HZ_CUST_ACCT_BO,
1282 p_created_by_module IN VARCHAR2,
1283 p_obj_source IN VARCHAR2 := null,
1284 x_return_status OUT NOCOPY VARCHAR2,
1285 x_msg_count OUT NOCOPY NUMBER,
1286 x_msg_data OUT NOCOPY VARCHAR2,
1287 x_cust_acct_id OUT NOCOPY NUMBER,
1288 x_cust_acct_os OUT NOCOPY VARCHAR2,
1289 x_cust_acct_osr OUT NOCOPY VARCHAR2,
1290 px_parent_id IN OUT NOCOPY NUMBER,
1291 px_parent_os IN OUT NOCOPY VARCHAR2,
1292 px_parent_osr IN OUT NOCOPY VARCHAR2,
1293 px_parent_obj_type IN OUT NOCOPY VARCHAR2
1294 ) IS
1295 l_return_status VARCHAR2(30);
1296 l_msg_count NUMBER;
1297 l_msg_data VARCHAR2(2000);
1298 l_create_update_flag VARCHAR2(1);
1299 l_debug_prefix VARCHAR2(30) := '';
1300 BEGIN
1301 -- initialize API return status to success.
1302 x_return_status := FND_API.G_RET_STS_SUCCESS;
1303
1304 -- Initialize message list if p_init_msg_list is set to TRUE.
1305 IF FND_API.to_Boolean(p_init_msg_list) THEN
1306 FND_MSG_PUB.initialize;
1307 END IF;
1308
1309 -- Debug info.
1310 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1311 hz_utility_v2pub.debug(p_message=>'do_save_cust_acct_bo(+)',
1312 p_prefix=>l_debug_prefix,
1313 p_msg_level=>fnd_log.level_procedure);
1314 END IF;
1315
1316 x_cust_acct_id := p_cust_acct_obj.cust_acct_id;
1317 x_cust_acct_os := p_cust_acct_obj.orig_system;
1318 x_cust_acct_osr := p_cust_acct_obj.orig_system_reference;
1319
1320 -- check root business object to determine that it should be
1321 -- create or update, call HZ_REGISTRY_VALIDATE_BO_PVT
1322 l_create_update_flag := HZ_REGISTRY_VALIDATE_BO_PVT.check_bo_op(
1323 p_entity_id => x_cust_acct_id,
1324 p_entity_os => x_cust_acct_os,
1325 p_entity_osr => x_cust_acct_osr,
1326 p_entity_type => 'HZ_CUST_ACCOUNTS',
1327 p_parent_id => px_parent_id,
1328 p_parent_obj_type => px_parent_obj_type
1329 );
1330
1331 IF(l_create_update_flag = 'E') THEN
1332 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
1333 FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT');
1334 FND_MSG_PUB.ADD;
1335 RAISE FND_API.G_EXC_ERROR;
1336 END IF;
1337
1338 IF(l_create_update_flag = 'C') THEN
1339 do_create_cust_acct_bo(
1340 p_validate_bo_flag => p_validate_bo_flag,
1341 p_cust_acct_obj => p_cust_acct_obj,
1342 p_created_by_module => p_created_by_module,
1343 p_obj_source => p_obj_source,
1344 x_return_status => x_return_status,
1345 x_msg_count => x_msg_count,
1346 x_msg_data => x_msg_data,
1347 x_cust_acct_id => x_cust_acct_id,
1348 x_cust_acct_os => x_cust_acct_os,
1349 x_cust_acct_osr => x_cust_acct_osr,
1350 px_parent_id => px_parent_id,
1351 px_parent_os => px_parent_os,
1352 px_parent_osr => px_parent_osr,
1353 px_parent_obj_type => px_parent_obj_type
1354 );
1355 ELSIF(l_create_update_flag = 'U') THEN
1356 do_update_cust_acct_bo(
1357 p_cust_acct_obj => p_cust_acct_obj,
1358 p_created_by_module => p_created_by_module,
1359 p_obj_source => p_obj_source,
1360 x_return_status => x_return_status,
1361 x_msg_count => x_msg_count,
1362 x_msg_data => x_msg_data,
1363 x_cust_acct_id => x_cust_acct_id,
1364 x_cust_acct_os => x_cust_acct_os,
1365 x_cust_acct_osr => x_cust_acct_osr,
1366 p_parent_os => px_parent_os
1367 );
1368 ELSE
1369 RAISE FND_API.G_EXC_ERROR;
1370 END IF;
1371
1372 -- Debug info.
1373 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1374 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1375 p_msg_data=>x_msg_data,
1376 p_msg_type=>'WARNING',
1377 p_msg_level=>fnd_log.level_exception);
1378 END IF;
1379 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1380 hz_utility_v2pub.debug(p_message=>'do_save_cust_acct_bo(-)',
1381 p_prefix=>l_debug_prefix,
1382 p_msg_level=>fnd_log.level_procedure);
1383 END IF;
1384
1385 EXCEPTION
1386 WHEN fnd_api.g_exc_error THEN
1387 x_return_status := fnd_api.g_ret_sts_error;
1388
1389 FND_MESSAGE.SET_NAME('AR', 'HZ_SAVE_API_ERROR');
1390 FND_MSG_PUB.ADD;
1391 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1392 p_count => x_msg_count,
1393 p_data => x_msg_data);
1394
1395 -- Debug info.
1396 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1397 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1398 p_msg_data=>x_msg_data,
1399 p_msg_type=>'ERROR',
1400 p_msg_level=>fnd_log.level_error);
1401 END IF;
1402 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1403 hz_utility_v2pub.debug(p_message=>'do_save_cust_acct_bo(-)',
1404 p_prefix=>l_debug_prefix,
1405 p_msg_level=>fnd_log.level_procedure);
1406 END IF;
1407 WHEN fnd_api.g_exc_unexpected_error THEN
1408 x_return_status := fnd_api.g_ret_sts_unexp_error;
1409
1410 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1411 p_count => x_msg_count,
1412 p_data => x_msg_data);
1413
1414 -- Debug info.
1415 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1416 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1417 p_msg_data=>x_msg_data,
1418 p_msg_type=>'UNEXPECTED ERROR',
1419 p_msg_level=>fnd_log.level_error);
1420 END IF;
1421 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1422 hz_utility_v2pub.debug(p_message=>'do_save_cust_acct_bo(-)',
1423 p_prefix=>l_debug_prefix,
1424 p_msg_level=>fnd_log.level_procedure);
1425 END IF;
1426 WHEN OTHERS THEN
1427 x_return_status := fnd_api.g_ret_sts_unexp_error;
1428
1429 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1430 fnd_message.set_token('ERROR' ,SQLERRM);
1431 fnd_msg_pub.add;
1432
1433 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1434 p_count => x_msg_count,
1435 p_data => x_msg_data);
1436
1437 -- Debug info.
1438 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1439 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1440 p_msg_data=>x_msg_data,
1441 p_msg_type=>'SQL ERROR',
1442 p_msg_level=>fnd_log.level_error);
1443 END IF;
1444 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1445 hz_utility_v2pub.debug(p_message=>'do_save_cust_acct_bo(-)',
1446 p_prefix=>l_debug_prefix,
1447 p_msg_level=>fnd_log.level_procedure);
1448 END IF;
1449 END do_save_cust_acct_bo;
1450
1451 PROCEDURE save_cust_acct_bo(
1452 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
1453 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
1454 p_cust_acct_obj IN HZ_CUST_ACCT_BO,
1455 p_created_by_module IN VARCHAR2,
1456 x_return_status OUT NOCOPY VARCHAR2,
1457 x_msg_count OUT NOCOPY NUMBER,
1458 x_msg_data OUT NOCOPY VARCHAR2,
1459 x_cust_acct_id OUT NOCOPY NUMBER,
1460 x_cust_acct_os OUT NOCOPY VARCHAR2,
1461 x_cust_acct_osr OUT NOCOPY VARCHAR2,
1462 px_parent_id IN OUT NOCOPY NUMBER,
1463 px_parent_os IN OUT NOCOPY VARCHAR2,
1464 px_parent_osr IN OUT NOCOPY VARCHAR2,
1465 px_parent_obj_type IN OUT NOCOPY VARCHAR2
1466 ) IS
1467 l_ca_obj HZ_CUST_ACCT_BO;
1468 BEGIN
1469 l_ca_obj := p_cust_acct_obj;
1470 do_save_cust_acct_bo(
1471 p_init_msg_list => p_init_msg_list,
1472 p_validate_bo_flag => p_validate_bo_flag,
1473 p_cust_acct_obj => l_ca_obj,
1474 p_created_by_module => p_created_by_module,
1475 x_return_status => x_return_status,
1476 x_msg_count => x_msg_count,
1477 x_msg_data => x_msg_data,
1478 x_cust_acct_id => x_cust_acct_id,
1479 x_cust_acct_os => x_cust_acct_os,
1480 x_cust_acct_osr => x_cust_acct_osr,
1481 px_parent_id => px_parent_id,
1482 px_parent_os => px_parent_os,
1483 px_parent_osr => px_parent_osr,
1484 px_parent_obj_type => px_parent_obj_type
1485 );
1486 END save_cust_acct_bo;
1487
1488 PROCEDURE save_cust_acct_bo(
1489 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
1490 p_cust_acct_obj IN HZ_CUST_ACCT_BO,
1491 p_created_by_module IN VARCHAR2,
1492 p_obj_source IN VARCHAR2 := null,
1493 p_return_obj_flag IN VARCHAR2 := fnd_api.g_true,
1494 x_return_status OUT NOCOPY VARCHAR2,
1495 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL,
1496 x_return_obj OUT NOCOPY HZ_CUST_ACCT_BO,
1497 x_cust_acct_id OUT NOCOPY NUMBER,
1498 x_cust_acct_os OUT NOCOPY VARCHAR2,
1499 x_cust_acct_osr OUT NOCOPY VARCHAR2,
1500 px_parent_id IN OUT NOCOPY NUMBER,
1501 px_parent_os IN OUT NOCOPY VARCHAR2,
1502 px_parent_osr IN OUT NOCOPY VARCHAR2,
1503 px_parent_obj_type IN OUT NOCOPY VARCHAR2
1504 ) IS
1505 l_msg_data VARCHAR2(2000);
1506 l_msg_count NUMBER;
1507 l_ca_obj HZ_CUST_ACCT_BO;
1508 BEGIN
1509 l_ca_obj := p_cust_acct_obj;
1510 do_save_cust_acct_bo(
1511 p_init_msg_list => fnd_api.g_true,
1512 p_validate_bo_flag => p_validate_bo_flag,
1513 p_cust_acct_obj => l_ca_obj,
1514 p_created_by_module => p_created_by_module,
1515 x_return_status => x_return_status,
1516 x_msg_count => l_msg_count,
1517 x_msg_data => l_msg_data,
1518 x_cust_acct_id => x_cust_acct_id,
1519 x_cust_acct_os => x_cust_acct_os,
1520 x_cust_acct_osr => x_cust_acct_osr,
1521 px_parent_id => px_parent_id,
1522 px_parent_os => px_parent_os,
1523 px_parent_osr => px_parent_osr,
1524 px_parent_obj_type => px_parent_obj_type
1525 );
1526 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
1527 x_return_status => x_return_status,
1528 x_msg_count => l_msg_count,
1529 x_msg_data => l_msg_data);
1530 IF FND_API.to_Boolean(p_return_obj_flag) THEN
1531 x_return_obj := l_ca_obj;
1532 END IF;
1533 END save_cust_acct_bo;
1534
1535 --------------------------------------
1536 --
1537 -- PROCEDURE get_cust_acct_bo
1538 --
1539 -- DESCRIPTION
1540 -- Get a logical customer account.
1541 --
1542 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1543 --
1544 -- ARGUMENTS
1545 -- IN:
1546 -- p_init_msg_list Initialize message stack if it is set to
1547 -- p_cust_acct_id customer account ID.
1548 -- p_parent_id Parent Id.
1549 -- FND_API.G_TRUE. Default is FND_API.G_FALSE.
1550 -- OUT:
1551 -- x_cust_acct_obj Logical customer account record.
1552 -- x_return_status Return status after the call. The status can
1553 -- be fnd_api.g_ret_sts_success (success),
1554 -- fnd_api.g_ret_sts_error (error),
1555 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
1556 -- x_msg_count Number of messages in message stack.
1557 -- x_msg_data Message text if x_msg_count is 1.
1558 --
1559 -- NOTES
1560 --
1561 -- MODIFICATION HISTORY
1562 --
1563 --
1564 -- 8-JUN-2005 AWU Created.
1565 --
1566
1567 /*
1568
1569 The Get customer account API Procedure is a retrieval service that returns full customer account business objects.
1570 The user identifies a particular Organization Contact business object using the TCA identifier and/or the object's
1571 Source System information. Upon proper validation of the object, the full Organization Contact business object is returned.
1572 The object consists of all data included within the Organization Contact business object, at all embedded levels.
1573 This includes the set of all data stored in the TCA tables for each embedded entity.
1574
1575
1576 Embedded BO Mandatory Multiple Logical API Procedure Comments
1577 Customer Account Site N Y get_cust_acct_site_bo
1578 Customer Account Contact N Y get_cust_acct_contact_bo
1579 Customer Profile Y N Business Structure. Included entities:
1580 HZ_CUSTOMER_PROFILES, HZ_CUST_PROFILE_AMTS
1581
1582 To retrieve the appropriate embedded entities within the 'Organization Contact' business object, the Get procedure returns all records for the particular contact from these TCA entity tables.
1583
1584 Embedded TCA Entity Mandatory Multiple TCA Table Entities
1585
1586 Customer Account Y N HZ_CUST_ACCOUNTS
1587 Account Relationship N Y HZ_CUST_ACCT_RELATE
1588 Bank Account Use N Y Owned by Payments team
1589 Payment Method N N Owned by AR team
1590
1591 */
1592
1593
1594 PROCEDURE get_cust_acct_bo(
1595 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
1596 p_cust_acct_id IN NUMBER,
1597 p_cust_acct_os IN VARCHAR2,
1598 p_cust_acct_osr IN VARCHAR2,
1599 x_cust_acct_obj OUT NOCOPY HZ_CUST_ACCT_BO,
1600 x_return_status OUT NOCOPY VARCHAR2,
1601 x_msg_count OUT NOCOPY NUMBER,
1602 x_msg_data OUT NOCOPY VARCHAR2
1603 ) is
1604 l_debug_prefix VARCHAR2(30) := '';
1605
1606 l_cust_acct_id number;
1607 l_cust_acct_os varchar2(30);
1608 l_cust_acct_osr varchar2(255);
1609 l_cust_acct_objs HZ_CUST_ACCT_BO_TBL;
1610 BEGIN
1611
1612 -- initialize API return status to success.
1613 x_return_status := FND_API.G_RET_STS_SUCCESS;
1614
1615 -- Initialize message list if p_init_msg_list is set to TRUE
1616 IF FND_API.to_Boolean(p_init_msg_list) THEN
1617 FND_MSG_PUB.initialize;
1618 END IF;
1619
1620
1621 -- Debug info.
1622 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1623 hz_utility_v2pub.debug(p_message=>'hz_cust_acct_bo_pub.get_cust_acct_bo(+)',
1624 p_prefix=>l_debug_prefix,
1625 p_msg_level=>fnd_log.level_procedure);
1626 END IF;
1627
1628 -- check if pass in contact_point_id and/or os+osr
1629 -- extraction validation logic is same as update
1630
1631 l_cust_acct_id := p_cust_acct_id;
1632 l_cust_acct_os := p_cust_acct_os;
1633 l_cust_acct_osr := p_cust_acct_osr;
1634
1635 HZ_EXTRACT_BO_UTIL_PVT.validate_ssm_id(
1636 px_id => l_cust_acct_id,
1637 px_os => l_cust_acct_os,
1638 px_osr => l_cust_acct_osr,
1639 p_obj_type => 'HZ_CUST_ACCOUNTS',
1640 x_return_status => x_return_status,
1641 x_msg_count => x_msg_count,
1642 x_msg_data => x_msg_data);
1643
1644 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1645 RAISE fnd_api.g_exc_error;
1646 END IF;
1647
1648 HZ_EXTRACT_CUST_ACCT_BO_PVT.get_cust_acct_bos
1649 (p_init_msg_list => fnd_api.g_false,
1650 p_parent_id => NULL,
1651 p_cust_acct_id => l_cust_acct_id,
1652 p_action_type => NULL,
1653 x_cust_acct_objs => l_cust_acct_objs,
1654 x_return_status => x_return_status,
1655 x_msg_count => x_msg_count,
1656 x_msg_data => x_msg_data);
1657
1658 x_cust_acct_obj := l_cust_acct_objs(1);
1659
1660 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1661 RAISE FND_API.G_EXC_ERROR;
1662 END IF;
1663
1664
1665 -- Debug info.
1666 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1667 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1668 p_msg_data=>x_msg_data,
1669 p_msg_type=>'WARNING',
1670 p_msg_level=>fnd_log.level_exception);
1671 END IF;
1672
1673 -- Debug info.
1674 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1675 hz_utility_v2pub.debug(p_message=>'hz_cust_acct_bo_pub.get_cust_acct_bo (-)',
1676 p_prefix=>l_debug_prefix,
1677 p_msg_level=>fnd_log.level_procedure);
1678 END IF;
1679
1680
1681 EXCEPTION
1682
1683 WHEN fnd_api.g_exc_error THEN
1684 x_return_status := fnd_api.g_ret_sts_error;
1685
1686 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1687 p_count => x_msg_count,
1688 p_data => x_msg_data);
1689
1690 -- Debug info.
1691 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1692 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1693 p_msg_data=>x_msg_data,
1694 p_msg_type=>'ERROR',
1695 p_msg_level=>fnd_log.level_error);
1696 END IF;
1697 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1698 hz_utility_v2pub.debug(p_message=>'hz_cust_acct_bo_pub.get_cust_acct_bo (-)',
1699 p_prefix=>l_debug_prefix,
1700 p_msg_level=>fnd_log.level_procedure);
1701 END IF;
1702 WHEN fnd_api.g_exc_unexpected_error THEN
1703 x_return_status := fnd_api.g_ret_sts_unexp_error;
1704
1705 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1706 p_count => x_msg_count,
1707 p_data => x_msg_data);
1708
1709 -- Debug info.
1710 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1711 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1712 p_msg_data=>x_msg_data,
1713 p_msg_type=>'UNEXPECTED ERROR',
1714 p_msg_level=>fnd_log.level_error);
1715 END IF;
1716 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1717 hz_utility_v2pub.debug(p_message=>'hz_cust_acct_bo_pub.get_cust_acct_bo (-)',
1718 p_prefix=>l_debug_prefix,
1719 p_msg_level=>fnd_log.level_procedure);
1720 END IF;
1721 WHEN OTHERS THEN
1722 x_return_status := fnd_api.g_ret_sts_unexp_error;
1723
1724 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1725 fnd_message.set_token('ERROR' ,SQLERRM);
1726 fnd_msg_pub.add;
1727
1728 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1729 p_count => x_msg_count,
1730 p_data => x_msg_data);
1731
1732 -- Debug info.
1733 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1734 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1735 p_msg_data=>x_msg_data,
1736 p_msg_type=>'SQL ERROR',
1737 p_msg_level=>fnd_log.level_error);
1738 END IF;
1739 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1740 hz_utility_v2pub.debug(p_message=>'hz_cust_acct_bo_pub.get_cust_acct_bo (-)',
1741 p_prefix=>l_debug_prefix,
1742 p_msg_level=>fnd_log.level_procedure);
1743 END IF;
1744
1745 end;
1746
1747 PROCEDURE get_cust_acct_bo(
1748 p_cust_acct_id IN NUMBER,
1749 p_cust_acct_os IN VARCHAR2,
1750 p_cust_acct_osr IN VARCHAR2,
1751 x_cust_acct_obj OUT NOCOPY HZ_CUST_ACCT_BO,
1752 x_return_status OUT NOCOPY VARCHAR2,
1753 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL
1754 ) IS
1755 l_msg_data VARCHAR2(2000);
1756 l_msg_count NUMBER;
1757 BEGIN
1758 get_cust_acct_bo(
1759 p_init_msg_list => fnd_api.g_true,
1760 p_cust_acct_id => p_cust_acct_id,
1761 p_cust_acct_os => p_cust_acct_os,
1762 p_cust_acct_osr => p_cust_acct_osr,
1763 x_cust_acct_obj => x_cust_acct_obj,
1764 x_return_status => x_return_status,
1765 x_msg_count => l_msg_count,
1766 x_msg_data => l_msg_data
1767 );
1768 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
1769 x_return_status => x_return_status,
1770 x_msg_count => l_msg_count,
1771 x_msg_data => l_msg_data);
1772 END get_cust_acct_bo;
1773
1774 -- PRIVATE PROCEDURE assign_cust_acct_v2_rec
1775 --
1776 -- DESCRIPTION
1777 -- Assign attribute value from customer account object to plsql record.
1778 --
1779 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1780 --
1781 -- ARGUMENTS
1782 -- IN:
1783 -- p_cust_acct_v2_obj Customer account object.
1784 -- p_cust_acct_id Customer account Id.
1785 -- p_cust_acct_os Customer account original system.
1786 -- p_cust_acct_osr Customer account original system reference.
1787 -- p_create_or_update Create or update flag.
1788 -- IN/OUT:
1789 -- px_cust_acct_rec Customer Account plsql record.
1790 --
1791 -- NOTES
1792 --
1793 -- MODIFICATION HISTORY
1794 --
1795 -- 1-FEB-2008 vsegu Created.
1796
1797 PROCEDURE assign_cust_acct_v2_rec(
1798 p_cust_acct_v2_obj IN HZ_CUST_ACCT_V2_BO,
1799 p_cust_acct_id IN NUMBER,
1800 p_cust_acct_os IN VARCHAR2,
1801 p_cust_acct_osr IN VARCHAR2,
1802 p_create_or_update IN VARCHAR2 := 'C',
1803 px_cust_acct_rec IN OUT NOCOPY HZ_CUST_ACCOUNT_V2PUB.CUST_ACCOUNT_REC_TYPE
1804 );
1805
1806 -- PRIVATE PROCEDURE assign_cust_acct_v2_rec
1807 --
1808 -- DESCRIPTION
1809 -- Assign attribute value from customer account object to plsql record.
1810 --
1811 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1812 --
1813 -- ARGUMENTS
1814 -- IN:
1815 -- p_cust_acct_v2_obj Customer account object.
1816 -- p_cust_acct_id Customer account Id.
1817 -- p_cust_acct_os Customer account original system.
1818 -- p_cust_acct_osr Customer account original system reference.
1819 -- p_create_or_update Create or update flag.
1820 -- IN/OUT:
1821 -- px_cust_acct_rec Customer Account plsql record.
1822 --
1823 -- NOTES
1824 --
1825 -- MODIFICATION HISTORY
1826 --
1827 -- 14-DEC-2004 Arnold Ng Created.
1828
1829 PROCEDURE assign_cust_acct_v2_rec(
1830 p_cust_acct_v2_obj IN HZ_CUST_ACCT_V2_BO,
1831 p_cust_acct_id IN NUMBER,
1832 p_cust_acct_os IN VARCHAR2,
1833 p_cust_acct_osr IN VARCHAR2,
1834 p_create_or_update IN VARCHAR2 := 'C',
1835 px_cust_acct_rec IN OUT NOCOPY HZ_CUST_ACCOUNT_V2PUB.CUST_ACCOUNT_REC_TYPE
1836 ) IS
1837 BEGIN
1838 px_cust_acct_rec.cust_account_id := p_cust_acct_id;
1839 px_cust_acct_rec.account_number := p_cust_acct_v2_obj.account_number;
1840 IF(p_cust_acct_v2_obj.status in ('A','I')) THEN
1841 px_cust_acct_rec.status := p_cust_acct_v2_obj.status;
1842 END IF;
1843 px_cust_acct_rec.customer_type := p_cust_acct_v2_obj.customer_type;
1844 px_cust_acct_rec.customer_class_code := p_cust_acct_v2_obj.customer_class_code;
1845 px_cust_acct_rec.primary_salesrep_id := p_cust_acct_v2_obj.primary_salesrep_id;
1846 px_cust_acct_rec.sales_channel_code := p_cust_acct_v2_obj.sales_channel_code;
1847 px_cust_acct_rec.order_type_id := p_cust_acct_v2_obj.order_type_id;
1848 px_cust_acct_rec.price_list_id := p_cust_acct_v2_obj.price_list_id;
1849 px_cust_acct_rec.tax_code := p_cust_acct_v2_obj.tax_code;
1850 px_cust_acct_rec.fob_point := p_cust_acct_v2_obj.fob_point;
1851 px_cust_acct_rec.freight_term := p_cust_acct_v2_obj.freight_term;
1852 px_cust_acct_rec.ship_partial := p_cust_acct_v2_obj.ship_partial;
1853 px_cust_acct_rec.ship_via := p_cust_acct_v2_obj.ship_via;
1854 px_cust_acct_rec.warehouse_id := p_cust_acct_v2_obj.warehouse_id;
1855 IF(p_cust_acct_v2_obj.tax_header_level_flag in ('Y','N')) THEN
1856 px_cust_acct_rec.tax_header_level_flag := p_cust_acct_v2_obj.tax_header_level_flag;
1857 END IF;
1858 px_cust_acct_rec.tax_rounding_rule := p_cust_acct_v2_obj.tax_rounding_rule;
1859 px_cust_acct_rec.coterminate_day_month := p_cust_acct_v2_obj.coterminate_day_month;
1860 px_cust_acct_rec.primary_specialist_id := p_cust_acct_v2_obj.primary_specialist_id;
1861 px_cust_acct_rec.secondary_specialist_id := p_cust_acct_v2_obj.secondary_specialist_id;
1862 IF(p_cust_acct_v2_obj.account_liable_flag in ('Y','N')) THEN
1863 px_cust_acct_rec.account_liable_flag := p_cust_acct_v2_obj.account_liable_flag;
1864 END IF;
1865 px_cust_acct_rec.current_balance := p_cust_acct_v2_obj.current_balance;
1866 px_cust_acct_rec.account_established_date := p_cust_acct_v2_obj.account_established_date;
1867 px_cust_acct_rec.account_termination_date := p_cust_acct_v2_obj.account_termination_date;
1868 px_cust_acct_rec.account_activation_date := p_cust_acct_v2_obj.account_activation_date;
1869 px_cust_acct_rec.department := p_cust_acct_v2_obj.department;
1870 px_cust_acct_rec.held_bill_expiration_date:= p_cust_acct_v2_obj.held_bill_expiration_date;
1871 IF(p_cust_acct_v2_obj.hold_bill_flag in ('Y','N')) THEN
1872 px_cust_acct_rec.hold_bill_flag := p_cust_acct_v2_obj.hold_bill_flag;
1873 END IF;
1874 px_cust_acct_rec.realtime_rate_flag := p_cust_acct_v2_obj.realtime_rate_flag;
1875 px_cust_acct_rec.acct_life_cycle_status := p_cust_acct_v2_obj.acct_life_cycle_status;
1876 px_cust_acct_rec.account_name := p_cust_acct_v2_obj.account_name;
1877 px_cust_acct_rec.deposit_refund_method := p_cust_acct_v2_obj.deposit_refund_method;
1878 IF(p_cust_acct_v2_obj.dormant_account_flag in ('Y','N')) THEN
1879 px_cust_acct_rec.dormant_account_flag := p_cust_acct_v2_obj.dormant_account_flag;
1880 END IF;
1881 px_cust_acct_rec.npa_number := p_cust_acct_v2_obj.npa_number;
1882 px_cust_acct_rec.suspension_date := p_cust_acct_v2_obj.suspension_date;
1883 px_cust_acct_rec.source_code := p_cust_acct_v2_obj.source_code;
1884 px_cust_acct_rec.comments := p_cust_acct_v2_obj.comments;
1885 px_cust_acct_rec.dates_negative_tolerance := p_cust_acct_v2_obj.dates_negative_tolerance;
1886 px_cust_acct_rec.dates_positive_tolerance := p_cust_acct_v2_obj.dates_positive_tolerance;
1887 px_cust_acct_rec.date_type_preference := p_cust_acct_v2_obj.date_type_preference;
1888 px_cust_acct_rec.over_shipment_tolerance := p_cust_acct_v2_obj.over_shipment_tolerance;
1889 px_cust_acct_rec.under_shipment_tolerance := p_cust_acct_v2_obj.under_shipment_tolerance;
1890 px_cust_acct_rec.over_return_tolerance := p_cust_acct_v2_obj.over_return_tolerance;
1891 px_cust_acct_rec.under_return_tolerance := p_cust_acct_v2_obj.under_return_tolerance;
1892 px_cust_acct_rec.item_cross_ref_pref := p_cust_acct_v2_obj.item_cross_ref_pref;
1893 IF(p_cust_acct_v2_obj.ship_sets_include_lines_flag in ('Y','N')) THEN
1894 px_cust_acct_rec.ship_sets_include_lines_flag := p_cust_acct_v2_obj.ship_sets_include_lines_flag;
1895 END IF;
1896 IF(p_cust_acct_v2_obj.arrivalsets_incl_lines_flag in ('Y','N')) THEN
1897 px_cust_acct_rec.arrivalsets_include_lines_flag := p_cust_acct_v2_obj.arrivalsets_incl_lines_flag;
1898 END IF;
1899 IF(p_cust_acct_v2_obj.sched_date_push_flag in ('Y','N')) THEN
1900 px_cust_acct_rec.sched_date_push_flag := p_cust_acct_v2_obj.sched_date_push_flag;
1901 END IF;
1902 px_cust_acct_rec.invoice_quantity_rule := p_cust_acct_v2_obj.invoice_quantity_rule;
1903 px_cust_acct_rec.pricing_event := p_cust_acct_v2_obj.pricing_event;
1904 px_cust_acct_rec.status_update_date := p_cust_acct_v2_obj.status_update_date;
1905 IF(p_cust_acct_v2_obj.autopay_flag in ('Y','N')) THEN
1906 px_cust_acct_rec.autopay_flag := p_cust_acct_v2_obj.autopay_flag;
1907 END IF;
1908 IF(p_cust_acct_v2_obj.notify_flag in ('Y','N')) THEN
1909 px_cust_acct_rec.notify_flag := p_cust_acct_v2_obj.notify_flag;
1910 END IF;
1911 px_cust_acct_rec.last_batch_id := p_cust_acct_v2_obj.last_batch_id;
1912 px_cust_acct_rec.selling_party_id := p_cust_acct_v2_obj.selling_party_id;
1913 IF(p_create_or_update = 'C') THEN
1914 px_cust_acct_rec.orig_system := p_cust_acct_os;
1915 px_cust_acct_rec.orig_system_reference := p_cust_acct_osr;
1916 px_cust_acct_rec.created_by_module := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
1917 END IF;
1918 px_cust_acct_rec.attribute_category := p_cust_acct_v2_obj.attribute_category;
1919 px_cust_acct_rec.attribute1 := p_cust_acct_v2_obj.attribute1;
1920 px_cust_acct_rec.attribute2 := p_cust_acct_v2_obj.attribute2;
1921 px_cust_acct_rec.attribute3 := p_cust_acct_v2_obj.attribute3;
1922 px_cust_acct_rec.attribute4 := p_cust_acct_v2_obj.attribute4;
1923 px_cust_acct_rec.attribute5 := p_cust_acct_v2_obj.attribute5;
1924 px_cust_acct_rec.attribute6 := p_cust_acct_v2_obj.attribute6;
1925 px_cust_acct_rec.attribute7 := p_cust_acct_v2_obj.attribute7;
1926 px_cust_acct_rec.attribute8 := p_cust_acct_v2_obj.attribute8;
1927 px_cust_acct_rec.attribute9 := p_cust_acct_v2_obj.attribute9;
1928 px_cust_acct_rec.attribute10 := p_cust_acct_v2_obj.attribute10;
1929 px_cust_acct_rec.attribute11 := p_cust_acct_v2_obj.attribute11;
1930 px_cust_acct_rec.attribute12 := p_cust_acct_v2_obj.attribute12;
1931 px_cust_acct_rec.attribute13 := p_cust_acct_v2_obj.attribute13;
1932 px_cust_acct_rec.attribute14 := p_cust_acct_v2_obj.attribute14;
1933 px_cust_acct_rec.attribute15 := p_cust_acct_v2_obj.attribute15;
1934 px_cust_acct_rec.attribute16 := p_cust_acct_v2_obj.attribute16;
1935 px_cust_acct_rec.attribute17 := p_cust_acct_v2_obj.attribute17;
1936 px_cust_acct_rec.attribute18 := p_cust_acct_v2_obj.attribute18;
1937 px_cust_acct_rec.attribute19 := p_cust_acct_v2_obj.attribute19;
1938 px_cust_acct_rec.attribute20 := p_cust_acct_v2_obj.attribute20;
1939 px_cust_acct_rec.global_attribute_category := p_cust_acct_v2_obj.global_attribute_category;
1940 px_cust_acct_rec.global_attribute1 := p_cust_acct_v2_obj.global_attribute1;
1941 px_cust_acct_rec.global_attribute2 := p_cust_acct_v2_obj.global_attribute2;
1942 px_cust_acct_rec.global_attribute3 := p_cust_acct_v2_obj.global_attribute3;
1943 px_cust_acct_rec.global_attribute4 := p_cust_acct_v2_obj.global_attribute4;
1944 px_cust_acct_rec.global_attribute5 := p_cust_acct_v2_obj.global_attribute5;
1945 px_cust_acct_rec.global_attribute6 := p_cust_acct_v2_obj.global_attribute6;
1946 px_cust_acct_rec.global_attribute7 := p_cust_acct_v2_obj.global_attribute7;
1947 px_cust_acct_rec.global_attribute8 := p_cust_acct_v2_obj.global_attribute8;
1948 px_cust_acct_rec.global_attribute9 := p_cust_acct_v2_obj.global_attribute9;
1949 px_cust_acct_rec.global_attribute10 := p_cust_acct_v2_obj.global_attribute10;
1950 px_cust_acct_rec.global_attribute11 := p_cust_acct_v2_obj.global_attribute11;
1951 px_cust_acct_rec.global_attribute12 := p_cust_acct_v2_obj.global_attribute12;
1952 px_cust_acct_rec.global_attribute13 := p_cust_acct_v2_obj.global_attribute13;
1953 px_cust_acct_rec.global_attribute14 := p_cust_acct_v2_obj.global_attribute14;
1954 px_cust_acct_rec.global_attribute15 := p_cust_acct_v2_obj.global_attribute15;
1955 px_cust_acct_rec.global_attribute16 := p_cust_acct_v2_obj.global_attribute16;
1956 px_cust_acct_rec.global_attribute17 := p_cust_acct_v2_obj.global_attribute17;
1957 px_cust_acct_rec.global_attribute18 := p_cust_acct_v2_obj.global_attribute18;
1958 px_cust_acct_rec.global_attribute19 := p_cust_acct_v2_obj.global_attribute19;
1959 px_cust_acct_rec.global_attribute20 := p_cust_acct_v2_obj.global_attribute20;
1960 END assign_cust_acct_v2_rec;
1961
1962
1963 -- PROCEDURE do_create_cust_acct_v2_bo
1964 --
1965 -- DESCRIPTION
1966 -- Create customer account business object.
1967 PROCEDURE do_create_cust_acct_v2_bo(
1968 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
1969 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
1970 p_cust_acct_v2_obj IN OUT NOCOPY HZ_CUST_ACCT_V2_BO,
1971 p_created_by_module IN VARCHAR2,
1972 p_obj_source IN VARCHAR2 := null,
1973 x_return_status OUT NOCOPY VARCHAR2,
1974 x_msg_count OUT NOCOPY NUMBER,
1975 x_msg_data OUT NOCOPY VARCHAR2,
1976 x_cust_acct_id OUT NOCOPY NUMBER,
1977 x_cust_acct_os OUT NOCOPY VARCHAR2,
1978 x_cust_acct_osr OUT NOCOPY VARCHAR2,
1979 px_parent_id IN OUT NOCOPY NUMBER,
1980 px_parent_os IN OUT NOCOPY VARCHAR2,
1981 px_parent_osr IN OUT NOCOPY VARCHAR2,
1982 px_parent_obj_type IN OUT NOCOPY VARCHAR2
1983 ) IS
1984 l_debug_prefix VARCHAR2(30) := '';
1985 l_cust_acct_rec HZ_CUST_ACCOUNT_V2PUB.CUST_ACCOUNT_REC_TYPE;
1986 l_person_rec HZ_PARTY_V2PUB.PERSON_REC_TYPE;
1987 l_organization_rec HZ_PARTY_V2PUB.ORGANIZATION_REC_TYPE;
1988 l_profile_rec HZ_CUSTOMER_PROFILE_V2PUB.CUSTOMER_PROFILE_REC_TYPE;
1989
1990 l_party_id NUMBER;
1991 l_party_number VARCHAR2(30);
1992 l_profile_id NUMBER;
1993 l_cust_acct_profile_id NUMBER;
1994 l_account_number VARCHAR2(30);
1995 l_valid_obj BOOLEAN;
1996 l_bus_object HZ_REGISTRY_VALIDATE_BO_PVT.COMPLETENESS_REC_TYPE;
1997 l_cbm VARCHAR2(30);
1998
1999 CURSOR get_cust_acct_profile_id(p_cust_acct_id NUMBER) IS
2000 SELECT cust_account_profile_id
2001 FROM HZ_CUSTOMER_PROFILES
2002 WHERE cust_account_id = p_cust_acct_id;
2003 BEGIN
2004 -- Standard start of API savepoint
2005 SAVEPOINT do_create_cust_acct_v2_bo_pub;
2006
2007 -- initialize API return status to success.
2008 x_return_status := FND_API.G_RET_STS_SUCCESS;
2009
2010 -- Initialize message list if p_init_msg_list is set to TRUE.
2011 IF FND_API.to_Boolean(p_init_msg_list) THEN
2012 FND_MSG_PUB.initialize;
2013 END IF;
2014
2015 -- initialize Global variable
2016 HZ_UTILITY_V2PUB.G_CALLING_API := 'BO_API';
2017 IF(p_created_by_module IS NULL) THEN
2018 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := 'BO_API';
2019 ELSE
2020 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := p_created_by_module;
2021 END IF;
2022
2023 -- Debug info.
2024 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2025 hz_utility_v2pub.debug(p_message=>'do_create_cust_acct_v2_bo(+)',
2026 p_prefix=>l_debug_prefix,
2027 p_msg_level=>fnd_log.level_procedure);
2028 END IF;
2029
2030 -- Base on p_validate_bo_flag, check the completeness of business objects
2031 IF(p_validate_bo_flag = FND_API.G_TRUE) THEN
2032 HZ_REGISTRY_VALIDATE_BO_PVT.get_bus_obj_struct(
2033 p_bus_object_code => 'CUST_ACCT',
2034 x_bus_object => l_bus_object
2035 );
2036 l_valid_obj := HZ_REGISTRY_VALIDATE_BO_PVT.is_ca_v2_bo_comp(
2037 p_ca_v2_objs => HZ_CUST_ACCT_V2_BO_TBL(p_cust_acct_v2_obj),
2038 p_bus_object => l_bus_object
2039 );
2040 IF NOT(l_valid_obj) THEN
2041 RAISE fnd_api.g_exc_error;
2042 END IF;
2043 END IF;
2044
2045 -- check pass in parent_id and parent_os+osr
2046 hz_registry_validate_bo_pvt.validate_parent_id(
2047 px_parent_id => px_parent_id,
2048 px_parent_os => px_parent_os,
2049 px_parent_osr => px_parent_osr,
2050 p_parent_obj_type => px_parent_obj_type,
2051 x_return_status => x_return_status,
2052 x_msg_count => x_msg_count,
2053 x_msg_data => x_msg_data);
2054
2055 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2056 RAISE FND_API.G_EXC_ERROR;
2057 END IF;
2058
2059 x_cust_acct_id := p_cust_acct_v2_obj.cust_acct_id;
2060 x_cust_acct_os := p_cust_acct_v2_obj.orig_system;
2061 x_cust_acct_osr := p_cust_acct_v2_obj.orig_system_reference;
2062
2063 -- check if pass in cust_acct_id and os+osr
2064 hz_registry_validate_bo_pvt.validate_ssm_id(
2065 px_id => x_cust_acct_id,
2066 px_os => x_cust_acct_os,
2067 px_osr => x_cust_acct_osr,
2068 p_obj_type => 'HZ_CUST_ACCOUNTS',
2069 p_create_or_update => 'C',
2070 x_return_status => x_return_status,
2071 x_msg_count => x_msg_count,
2072 x_msg_data => x_msg_data);
2073
2074 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2075 RAISE FND_API.G_EXC_ERROR;
2076 END IF;
2077
2078 assign_cust_acct_v2_rec(
2079 p_cust_acct_v2_obj => p_cust_acct_v2_obj,
2080 p_cust_acct_id => x_cust_acct_id,
2081 p_cust_acct_os => x_cust_acct_os,
2082 p_cust_acct_osr => x_cust_acct_osr,
2083 px_cust_acct_rec => l_cust_acct_rec
2084 );
2085
2086 IF(p_cust_acct_v2_obj.cust_profile_obj IS NULL) THEN
2087 fnd_message.set_name('AR', 'HZ_API_MISSING_MANDATORY_ENT');
2088 fnd_message.set_token('ENTITY' ,'CUST_PROFILE');
2089 fnd_msg_pub.add;
2090 RAISE FND_API.G_EXC_ERROR;
2091 END IF;
2092
2093 HZ_CUST_ACCT_BO_PVT.assign_cust_profile_rec(
2094 p_cust_profile_obj => p_cust_acct_v2_obj.cust_profile_obj,
2095 p_cust_acct_id => x_cust_acct_id,
2096 p_site_use_id => NULL,
2097 px_cust_profile_rec => l_profile_rec
2098 );
2099
2100 -- set party_id to party record
2101 -- profile amount will be created after creating cust account
2102 -- therefore set p_create_profile_amt to FND_API.G_FALSE
2103 IF(px_parent_obj_type = 'ORG') THEN
2104 l_organization_rec.party_rec.party_id := px_parent_id;
2105 HZ_CUST_ACCOUNT_V2PUB.create_cust_account (
2106 p_cust_account_rec => l_cust_acct_rec,
2107 p_organization_rec => l_organization_rec,
2108 p_customer_profile_rec => l_profile_rec,
2109 p_create_profile_amt => FND_API.G_FALSE,
2110 x_cust_account_id => x_cust_acct_id,
2111 x_account_number => l_account_number,
2112 x_party_id => l_party_id,
2113 x_party_number => l_party_number,
2114 x_profile_id => l_profile_id,
2115 x_return_status => x_return_status,
2116 x_msg_count => x_msg_count,
2117 x_msg_data => x_msg_data
2118 );
2119 ELSE
2120 l_person_rec.party_rec.party_id := px_parent_id;
2121 HZ_CUST_ACCOUNT_V2PUB.create_cust_account (
2122 p_cust_account_rec => l_cust_acct_rec,
2123 p_person_rec => l_person_rec,
2124 p_customer_profile_rec => l_profile_rec,
2125 p_create_profile_amt => FND_API.G_FALSE,
2126 x_cust_account_id => x_cust_acct_id,
2127 x_account_number => l_account_number,
2128 x_party_id => l_party_id,
2129 x_party_number => l_party_number,
2130 x_profile_id => l_profile_id,
2131 x_return_status => x_return_status,
2132 x_msg_count => x_msg_count,
2133 x_msg_data => x_msg_data
2134 );
2135 END IF;
2136
2137 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2138 RAISE FND_API.G_EXC_ERROR;
2139 END IF;
2140
2141 OPEN get_cust_acct_profile_id(x_cust_acct_id);
2142 FETCH get_cust_acct_profile_id INTO l_cust_acct_profile_id;
2143 CLOSE get_cust_acct_profile_id;
2144
2145 -- assign cust_acct_id
2146 p_cust_acct_v2_obj.cust_acct_id := x_cust_acct_id;
2147 p_cust_acct_v2_obj.cust_profile_obj.cust_acct_profile_id := l_cust_acct_profile_id;
2148
2149
2150 -----------------------------
2151 -- Create cust profile amount
2152 -----------------------------
2153 IF((p_cust_acct_v2_obj.cust_profile_obj.cust_profile_amt_objs IS NOT NULL) AND
2154 (p_cust_acct_v2_obj.cust_profile_obj.cust_profile_amt_objs.COUNT > 0)) THEN
2155 HZ_CUST_ACCT_BO_PVT.create_cust_profile_amts(
2156 p_cpa_objs => p_cust_acct_v2_obj.cust_profile_obj.cust_profile_amt_objs,
2157 p_cp_id => l_cust_acct_profile_id,
2158 p_ca_id => x_cust_acct_id,
2159 p_casu_id => NULL,
2160 x_return_status => x_return_status,
2161 x_msg_count => x_msg_count,
2162 x_msg_data => x_msg_data
2163 );
2164
2165 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2166 RAISE FND_API.G_EXC_ERROR;
2167 END IF;
2168 END IF;
2169
2170 -------------------------------------
2171 -- Create cust acct relate
2172 -------------------------------------
2173 IF((p_cust_acct_v2_obj.acct_relate_objs IS NOT NULL) AND
2174 (p_cust_acct_v2_obj.acct_relate_objs.COUNT > 0)) THEN
2175 HZ_CUST_ACCT_BO_PVT.create_cust_acct_relates(
2176 p_car_objs => p_cust_acct_v2_obj.acct_relate_objs,
2177 p_ca_id => x_cust_acct_id,
2178 x_return_status => x_return_status,
2179 x_msg_count => x_msg_count,
2180 x_msg_data => x_msg_data
2181 );
2182
2183 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2184 RAISE FND_API.G_EXC_ERROR;
2185 END IF;
2186 END IF;
2187
2188 l_cbm := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
2189
2190 -------------------------------------
2191 -- Call cust account contact
2192 -------------------------------------
2193 -- Parent of cust account contact is cust account site
2194 -- so pass x_cust_acct_id, x_cust_acct_os and x_cust_acct_osr
2195 IF((p_cust_acct_v2_obj.cust_acct_contact_objs IS NOT NULL) AND
2196 (p_cust_acct_v2_obj.cust_acct_contact_objs.COUNT > 0)) THEN
2197 HZ_CUST_ACCT_CONTACT_BO_PVT.save_cust_acct_contacts(
2198 p_cac_objs => p_cust_acct_v2_obj.cust_acct_contact_objs,
2199 p_create_update_flag => 'C',
2200 p_obj_source => p_obj_source,
2201 x_return_status => x_return_status,
2202 x_msg_count => x_msg_count,
2203 x_msg_data => x_msg_data,
2204 p_parent_id => x_cust_acct_id,
2205 p_parent_os => x_cust_acct_os,
2206 p_parent_osr => x_cust_acct_osr,
2207 p_parent_obj_type => 'CUST_ACCT'
2208 );
2209
2210 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2211 RAISE FND_API.G_EXC_ERROR;
2212 END IF;
2213 END IF;
2214
2215 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
2216
2217 -------------------------------------
2218 -- Call cust account site
2219 -------------------------------------
2220 -- create cust account site uses will include cust acct site use plus site use profile
2221 -- need to put customer account id and customer account site id
2222 IF((p_cust_acct_v2_obj.cust_acct_site_objs IS NOT NULL) AND
2223 (p_cust_acct_v2_obj.cust_acct_site_objs.COUNT > 0)) THEN
2224 HZ_CUST_ACCT_SITE_BO_PVT.save_cust_acct_v2_sites(
2225 p_cas_v2_objs => p_cust_acct_v2_obj.cust_acct_site_objs,
2226 p_create_update_flag => 'C',
2227 p_obj_source => p_obj_source,
2228 x_return_status => x_return_status,
2229 x_msg_count => x_msg_count,
2230 x_msg_data => x_msg_data,
2231 p_parent_acct_id => x_cust_acct_id,
2232 p_parent_acct_os => x_cust_acct_os,
2233 p_parent_acct_osr => x_cust_acct_osr
2234 );
2235
2236 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2237 RAISE FND_API.G_EXC_ERROR;
2238 END IF;
2239 END IF;
2240
2241 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
2242
2243 ------------------------
2244 -- Call bank account use
2245 ------------------------
2246 IF((p_cust_acct_v2_obj.bank_acct_use_objs IS NOT NULL) AND
2247 (p_cust_acct_v2_obj.bank_acct_use_objs.COUNT > 0)) THEN
2248 HZ_CUST_ACCT_BO_PVT.save_bank_acct_uses(
2249 p_bank_acct_use_objs => p_cust_acct_v2_obj.bank_acct_use_objs,
2250 p_party_id => l_party_id,
2251 p_ca_id => x_cust_acct_id,
2252 p_casu_id => NULL,
2253 x_return_status => x_return_status,
2254 x_msg_count => x_msg_count,
2255 x_msg_data => x_msg_data
2256 );
2257
2258 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2259 RAISE FND_API.G_EXC_ERROR;
2260 END IF;
2261 END IF;
2262
2263 ------------------------
2264 -- Call payment method
2265 ------------------------
2266 IF((p_cust_acct_v2_obj.payment_method_objs IS NOT NULL) AND
2267 (p_cust_acct_v2_obj.payment_method_objs.COUNT>0)) THEN
2268 HZ_CUST_ACCT_BO_PVT.create_payment_methods(
2269 p_payment_method_objs => p_cust_acct_v2_obj.payment_method_objs,
2270 p_ca_id => x_cust_acct_id,
2271 p_casu_id => NULL,
2272 x_return_status => x_return_status,
2273 x_msg_count => x_msg_count,
2274 x_msg_data => x_msg_data
2275 );
2276
2277 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2278 RAISE FND_API.G_EXC_ERROR;
2279 END IF;
2280 END IF;
2281
2282 -- reset Global variable
2283 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
2284 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
2285
2286 -- Debug info.
2287 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
2288 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2289 p_msg_data=>x_msg_data,
2290 p_msg_type=>'WARNING',
2291 p_msg_level=>fnd_log.level_exception);
2292 END IF;
2293 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2294 hz_utility_v2pub.debug(p_message=>'do_create_cust_acct_v2_bo(-)',
2295 p_prefix=>l_debug_prefix,
2296 p_msg_level=>fnd_log.level_procedure);
2297 END IF;
2298
2299 EXCEPTION
2300 WHEN fnd_api.g_exc_error THEN
2301 ROLLBACK TO do_create_cust_acct_v2_bo_pub;
2302
2303 -- reset Global variable
2304 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
2305 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
2306
2307 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
2308 FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT');
2309 FND_MSG_PUB.ADD;
2310
2311 x_return_status := fnd_api.g_ret_sts_error;
2312
2313 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2314 p_count => x_msg_count,
2315 p_data => x_msg_data);
2316
2317 -- Debug info.
2318 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2319 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2320 p_msg_data=>x_msg_data,
2321 p_msg_type=>'ERROR',
2322 p_msg_level=>fnd_log.level_error);
2323 END IF;
2324 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2325 hz_utility_v2pub.debug(p_message=>'do_create_cust_acct_v2_bo(-)',
2326 p_prefix=>l_debug_prefix,
2327 p_msg_level=>fnd_log.level_procedure);
2328 END IF;
2329
2330 WHEN fnd_api.g_exc_unexpected_error THEN
2331 ROLLBACK TO do_create_cust_acct_v2_bo_pub;
2332
2333 -- reset Global variable
2334 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
2335 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
2336
2337 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
2338 FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT');
2339 FND_MSG_PUB.ADD;
2340
2341 x_return_status := fnd_api.g_ret_sts_unexp_error;
2342
2343 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2344 p_count => x_msg_count,
2345 p_data => x_msg_data);
2346
2347 -- Debug info.
2348 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2349 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2350 p_msg_data=>x_msg_data,
2351 p_msg_type=>'UNEXPECTED ERROR',
2352 p_msg_level=>fnd_log.level_error);
2353 END IF;
2354 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2355 hz_utility_v2pub.debug(p_message=>'do_create_cust_acct_v2_bo(-)',
2356 p_prefix=>l_debug_prefix,
2357 p_msg_level=>fnd_log.level_procedure);
2358 END IF;
2359
2360 WHEN OTHERS THEN
2361 ROLLBACK TO do_create_cust_acct_v2_bo_pub;
2362
2363 -- reset Global variable
2364 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
2365 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
2366
2367 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
2368 FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT');
2369 FND_MSG_PUB.ADD;
2370
2371 x_return_status := fnd_api.g_ret_sts_unexp_error;
2372
2373 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
2374 fnd_message.set_token('ERROR' ,SQLERRM);
2375 fnd_msg_pub.add;
2376
2377 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2378 p_count => x_msg_count,
2379 p_data => x_msg_data);
2380
2381 -- Debug info.
2382 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2383 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2384 p_msg_data=>x_msg_data,
2385 p_msg_type=>'SQL ERROR',
2386 p_msg_level=>fnd_log.level_error);
2387 END IF;
2388 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2389 hz_utility_v2pub.debug(p_message=>'do_create_cust_acct_v2_bo(-)',
2390 p_prefix=>l_debug_prefix,
2391 p_msg_level=>fnd_log.level_procedure);
2392 END IF;
2393 END do_create_cust_acct_v2_bo;
2394
2395 PROCEDURE create_cust_acct_v2_bo(
2396 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
2397 p_cust_acct_v2_obj IN HZ_CUST_ACCT_V2_BO,
2398 p_created_by_module IN VARCHAR2,
2399 p_obj_source IN VARCHAR2 := null,
2400 p_return_obj_flag IN VARCHAR2 := fnd_api.g_true,
2401 x_return_status OUT NOCOPY VARCHAR2,
2402 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL,
2403 x_return_obj OUT NOCOPY HZ_CUST_ACCT_V2_BO,
2404 x_cust_acct_id OUT NOCOPY NUMBER,
2405 x_cust_acct_os OUT NOCOPY VARCHAR2,
2406 x_cust_acct_osr OUT NOCOPY VARCHAR2,
2407 px_parent_id IN OUT NOCOPY NUMBER,
2408 px_parent_os IN OUT NOCOPY VARCHAR2,
2409 px_parent_osr IN OUT NOCOPY VARCHAR2,
2410 px_parent_obj_type IN OUT NOCOPY VARCHAR2
2411 ) IS
2412 l_msg_data VARCHAR2(2000);
2413 l_msg_count NUMBER;
2414 l_ca_obj HZ_CUST_ACCT_V2_BO;
2415 BEGIN
2416 l_ca_obj := p_cust_acct_v2_obj;
2417 do_create_cust_acct_v2_bo(
2418 p_init_msg_list => fnd_api.g_true,
2419 p_validate_bo_flag => p_validate_bo_flag,
2420 p_cust_acct_v2_obj => l_ca_obj,
2421 p_created_by_module => p_created_by_module,
2422 p_obj_source => p_obj_source,
2423 x_return_status => x_return_status,
2424 x_msg_count => l_msg_count,
2425 x_msg_data => l_msg_data,
2426 x_cust_acct_id => x_cust_acct_id,
2427 x_cust_acct_os => x_cust_acct_os,
2428 x_cust_acct_osr => x_cust_acct_osr,
2429 px_parent_id => px_parent_id,
2430 px_parent_os => px_parent_os,
2431 px_parent_osr => px_parent_osr,
2432 px_parent_obj_type => px_parent_obj_type
2433 );
2434 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
2435 x_return_status => x_return_status,
2436 x_msg_count => l_msg_count,
2437 x_msg_data => l_msg_data);
2438 IF FND_API.to_Boolean(p_return_obj_flag) THEN
2439 x_return_obj := l_ca_obj;
2440 END IF;
2441 END create_cust_acct_v2_bo;
2442
2443 PROCEDURE update_cust_acct_v2_bo(
2444 p_cust_acct_v2_obj IN HZ_CUST_ACCT_V2_BO,
2445 p_created_by_module IN VARCHAR2,
2446 p_obj_source IN VARCHAR2 := null,
2447 p_return_obj_flag IN VARCHAR2 := fnd_api.g_true,
2448 x_return_status OUT NOCOPY VARCHAR2,
2449 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL,
2450 x_return_obj OUT NOCOPY HZ_CUST_ACCT_V2_BO,
2451 x_cust_acct_id OUT NOCOPY NUMBER,
2452 x_cust_acct_os OUT NOCOPY VARCHAR2,
2453 x_cust_acct_osr OUT NOCOPY VARCHAR2
2454 )IS
2455 l_msg_data VARCHAR2(2000);
2456 l_msg_count NUMBER;
2457 l_ca_obj HZ_CUST_ACCT_V2_BO;
2458 BEGIN
2459 l_ca_obj := p_cust_acct_v2_obj;
2460 do_update_cust_acct_v2_bo(
2461 p_init_msg_list => fnd_api.g_true,
2462 p_cust_acct_v2_obj => l_ca_obj,
2463 p_created_by_module => p_created_by_module,
2464 p_obj_source => p_obj_source,
2465 x_return_status => x_return_status,
2466 x_msg_count => l_msg_count,
2467 x_msg_data => l_msg_data,
2468 x_cust_acct_id => x_cust_acct_id,
2469 x_cust_acct_os => x_cust_acct_os,
2470 x_cust_acct_osr => x_cust_acct_osr,
2471 p_parent_os => NULL
2472 );
2473 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
2474 x_return_status => x_return_status,
2475 x_msg_count => l_msg_count,
2476 x_msg_data => l_msg_data);
2477 IF FND_API.to_Boolean(p_return_obj_flag) THEN
2478 x_return_obj := l_ca_obj;
2479 END IF;
2480 END update_cust_acct_v2_bo;
2481
2482 -- PRIVATE PROCEDURE do_update_cust_acct_v2_bo
2483 --
2484 -- DESCRIPTION
2485 -- Update customer account business object.
2486 PROCEDURE do_update_cust_acct_v2_bo(
2487 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
2488 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
2489 p_cust_acct_v2_obj IN OUT NOCOPY HZ_CUST_ACCT_V2_BO,
2490 p_created_by_module IN VARCHAR2,
2491 p_obj_source IN VARCHAR2 := null,
2492 x_return_status OUT NOCOPY VARCHAR2,
2493 x_msg_count OUT NOCOPY NUMBER,
2494 x_msg_data OUT NOCOPY VARCHAR2,
2495 x_cust_acct_id OUT NOCOPY NUMBER,
2496 x_cust_acct_os OUT NOCOPY VARCHAR2,
2497 x_cust_acct_osr OUT NOCOPY VARCHAR2,
2498 p_parent_os IN VARCHAR2
2499 )IS
2500 l_debug_prefix VARCHAR2(30) := '';
2501 l_cust_acct_rec HZ_CUST_ACCOUNT_V2PUB.CUST_ACCOUNT_REC_TYPE;
2502 l_create_update_flag VARCHAR2(1);
2503 l_org_contact_bo HZ_ORG_CONTACT_BO;
2504 l_ovn NUMBER;
2505 l_party_id NUMBER;
2506 l_cust_acct_profile_id NUMBER;
2507 l_cbm VARCHAR2(30);
2508
2509 CURSOR get_ovn(l_ca_id NUMBER) IS
2510 SELECT a.object_version_number, a.party_id
2511 FROM HZ_CUST_ACCOUNTS a
2512 WHERE a.cust_account_id = l_ca_id;
2513 BEGIN
2514 -- Standard start of API savepoint
2515 SAVEPOINT do_update_cust_acct_v2_bo_pub;
2516
2517 -- initialize API return status to success.
2518 x_return_status := FND_API.G_RET_STS_SUCCESS;
2519
2520 -- Initialize message list if p_init_msg_list is set to TRUE.
2521 IF FND_API.to_Boolean(p_init_msg_list) THEN
2522 FND_MSG_PUB.initialize;
2523 END IF;
2524
2525 -- initialize Global variable
2526 HZ_UTILITY_V2PUB.G_CALLING_API := 'BO_API';
2527 IF(p_created_by_module IS NULL) THEN
2528 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := 'BO_API';
2529 ELSE
2530 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := p_created_by_module;
2531 END IF;
2532
2533 -- Debug info.
2534 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2535 hz_utility_v2pub.debug(p_message=>'do_update_cust_acct_v2_bo_pub(+)',
2536 p_prefix=>l_debug_prefix,
2537 p_msg_level=>fnd_log.level_procedure);
2538 END IF;
2539
2540 -------------------------------
2541 -- For Update cust accts
2542 -------------------------------
2543 x_cust_acct_id := p_cust_acct_v2_obj.cust_acct_id;
2544 x_cust_acct_os := p_cust_acct_v2_obj.orig_system;
2545 x_cust_acct_osr := p_cust_acct_v2_obj.orig_system_reference;
2546
2547 -- validate ssm of cust account site
2548 hz_registry_validate_bo_pvt.validate_ssm_id(
2549 px_id => x_cust_acct_id,
2550 px_os => x_cust_acct_os,
2551 px_osr => x_cust_acct_osr,
2552 p_obj_type => 'HZ_CUST_ACCOUNTS',
2553 p_create_or_update => 'U',
2554 x_return_status => x_return_status,
2555 x_msg_count => x_msg_count,
2556 x_msg_data => x_msg_data);
2557
2558 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2559 RAISE FND_API.G_EXC_ERROR;
2560 END IF;
2561
2562 -- get object version number of customer acct
2563 OPEN get_ovn(x_cust_acct_id);
2564 FETCH get_ovn INTO l_ovn, l_party_id;
2565 CLOSE get_ovn;
2566
2567 assign_cust_acct_v2_rec(
2568 p_cust_acct_v2_obj => p_cust_acct_v2_obj,
2569 p_cust_acct_id => x_cust_acct_id,
2570 p_cust_acct_os => x_cust_acct_os,
2571 p_cust_acct_osr => x_cust_acct_osr,
2572 p_create_or_update => 'U',
2573 px_cust_acct_rec => l_cust_acct_rec
2574 );
2575
2576 HZ_CUST_ACCOUNT_V2PUB.update_cust_account(
2577 p_cust_account_rec => l_cust_acct_rec,
2578 p_object_version_number => l_ovn,
2579 x_return_status => x_return_status,
2580 x_msg_count => x_msg_count,
2581 x_msg_data => x_msg_data
2582 );
2583
2584 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2585 RAISE FND_API.G_EXC_ERROR;
2586 END IF;
2587
2588 -- assign cust_acct_id
2589 p_cust_acct_v2_obj.cust_acct_id := x_cust_acct_id;
2590 -----------------------------
2591 -- For Update account profile
2592 -----------------------------
2593 IF(p_cust_acct_v2_obj.cust_profile_obj IS NOT NULL) THEN
2594 HZ_CUST_ACCT_BO_PVT.update_cust_profile(
2595 p_cp_obj => p_cust_acct_v2_obj.cust_profile_obj,
2596 p_ca_id => x_cust_acct_id,
2597 p_casu_id => NULL,
2598 x_cp_id => l_cust_acct_profile_id,
2599 x_return_status => x_return_status,
2600 x_msg_count => x_msg_count,
2601 x_msg_data => x_msg_data
2602 );
2603
2604 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2605 RAISE FND_API.G_EXC_ERROR;
2606 END IF;
2607
2608 -- assign cust_acct_profile_id
2609 p_cust_acct_v2_obj.cust_profile_obj.cust_acct_profile_id := l_cust_acct_profile_id;
2610 ---------------------------------
2611 -- For Update account profile amt
2612 ---------------------------------
2613 IF((p_cust_acct_v2_obj.cust_profile_obj.cust_profile_amt_objs IS NOT NULL) AND
2614 (p_cust_acct_v2_obj.cust_profile_obj.cust_profile_amt_objs.COUNT > 0)) THEN
2615 HZ_CUST_ACCT_BO_PVT.save_cust_profile_amts(
2616 p_cpa_objs => p_cust_acct_v2_obj.cust_profile_obj.cust_profile_amt_objs,
2617 p_cp_id => l_cust_acct_profile_id,
2618 p_ca_id => x_cust_acct_id,
2619 p_casu_id => NULL,
2620 x_return_status => x_return_status,
2621 x_msg_count => x_msg_count,
2622 x_msg_data => x_msg_data
2623 );
2624
2625 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2626 RAISE FND_API.G_EXC_ERROR;
2627 END IF;
2628 END IF;
2629 END IF;
2630
2631 l_cbm := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
2632
2633 -----------------------------------
2634 -- For cust account contact
2635 -----------------------------------
2636 IF((p_cust_acct_v2_obj.cust_acct_contact_objs IS NOT NULL) AND
2637 (p_cust_acct_v2_obj.cust_acct_contact_objs.COUNT > 0)) THEN
2638 HZ_CUST_ACCT_CONTACT_BO_PVT.save_cust_acct_contacts(
2639 p_cac_objs => p_cust_acct_v2_obj.cust_acct_contact_objs,
2640 p_create_update_flag => 'U',
2641 p_obj_source => p_obj_source,
2642 x_return_status => x_return_status,
2643 x_msg_count => x_msg_count,
2644 x_msg_data => x_msg_data,
2645 p_parent_id => x_cust_acct_id,
2646 p_parent_os => x_cust_acct_os,
2647 p_parent_osr => x_cust_acct_osr,
2648 p_parent_obj_type => 'CUST_ACCT'
2649 );
2650
2651 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2652 RAISE FND_API.G_EXC_ERROR;
2653 END IF;
2654 END IF;
2655
2656 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
2657
2658 -------------------------------
2659 -- For Update account acct relate
2660 -------------------------------
2661 IF((p_cust_acct_v2_obj.acct_relate_objs IS NOT NULL) AND
2662 (p_cust_acct_v2_obj.acct_relate_objs.COUNT > 0)) THEN
2663 HZ_CUST_ACCT_BO_PVT.save_cust_acct_relates(
2664 p_car_objs => p_cust_acct_v2_obj.acct_relate_objs,
2665 p_ca_id => x_cust_acct_id,
2666 x_return_status => x_return_status,
2667 x_msg_count => x_msg_count,
2668 x_msg_data => x_msg_data
2669 );
2670
2671 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2672 RAISE FND_API.G_EXC_ERROR;
2673 END IF;
2674 END IF;
2675
2676 -------------------------------------
2677 -- Call cust account site
2678 -------------------------------------
2679 -- create cust account site uses will include cust acct site use plus site use profile
2680 -- need to put customer account id and customer account site id
2681 IF((p_cust_acct_v2_obj.cust_acct_site_objs IS NOT NULL) AND
2682 (p_cust_acct_v2_obj.cust_acct_site_objs.COUNT > 0)) THEN
2683 HZ_CUST_ACCT_SITE_BO_PVT.save_cust_acct_v2_sites(
2684 p_cas_v2_objs => p_cust_acct_v2_obj.cust_acct_site_objs,
2685 p_create_update_flag => 'U',
2686 p_obj_source => p_obj_source,
2687 x_return_status => x_return_status,
2688 x_msg_count => x_msg_count,
2689 x_msg_data => x_msg_data,
2690 p_parent_acct_id => x_cust_acct_id,
2691 p_parent_acct_os => x_cust_acct_os,
2692 p_parent_acct_osr => x_cust_acct_osr
2693 );
2694
2695 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2696 RAISE FND_API.G_EXC_ERROR;
2697 END IF;
2698 END IF;
2699
2700 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
2701
2702 ------------------------
2703 -- Call bank account use
2704 ------------------------
2705 IF((p_cust_acct_v2_obj.bank_acct_use_objs IS NOT NULL) AND
2706 (p_cust_acct_v2_obj.bank_acct_use_objs.COUNT > 0)) THEN
2707 HZ_CUST_ACCT_BO_PVT.save_bank_acct_uses(
2708 p_bank_acct_use_objs => p_cust_acct_v2_obj.bank_acct_use_objs,
2709 p_party_id => l_party_id,
2710 p_ca_id => x_cust_acct_id,
2711 p_casu_id => NULL,
2712 x_return_status => x_return_status,
2713 x_msg_count => x_msg_count,
2714 x_msg_data => x_msg_data
2715 );
2716
2717 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2718 RAISE FND_API.G_EXC_ERROR;
2719 END IF;
2720 END IF;
2721
2722 ------------------------
2723 -- Call payment method
2724 ------------------------
2725 IF((p_cust_acct_v2_obj.payment_method_objs IS NOT NULL) AND
2726 (p_cust_acct_v2_obj.payment_method_objs.COUNT > 0 )) THEN
2727 HZ_CUST_ACCT_BO_PVT.save_payment_methods(
2728 p_payment_method_objs => p_cust_acct_v2_obj.payment_method_objs,
2729 p_ca_id => x_cust_acct_id,
2730 p_casu_id => NULL,
2731 x_return_status => x_return_status,
2732 x_msg_count => x_msg_count,
2733 x_msg_data => x_msg_data
2734 );
2735
2736 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2737 RAISE FND_API.G_EXC_ERROR;
2738 END IF;
2739 END IF;
2740
2741 -- reset Global variable
2742 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
2743 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
2744
2745 -- Debug info.
2746 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
2747 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2748 p_msg_data=>x_msg_data,
2749 p_msg_type=>'WARNING',
2750 p_msg_level=>fnd_log.level_exception);
2751 END IF;
2752 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2753 hz_utility_v2pub.debug(p_message=>'do_update_cust_acct_v2_bo(-)',
2754 p_prefix=>l_debug_prefix,
2755 p_msg_level=>fnd_log.level_procedure);
2756 END IF;
2757 EXCEPTION
2758 WHEN fnd_api.g_exc_error THEN
2759 ROLLBACK TO do_update_cust_acct_v2_bo_pub;
2760
2761 -- reset Global variable
2762 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
2763 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
2764
2765 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
2766 FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT');
2767 FND_MSG_PUB.ADD;
2768
2769 x_return_status := fnd_api.g_ret_sts_error;
2770
2771 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2772 p_count => x_msg_count,
2773 p_data => x_msg_data);
2774
2775 -- Debug info.
2776 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2777 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2778 p_msg_data=>x_msg_data,
2779 p_msg_type=>'ERROR',
2780 p_msg_level=>fnd_log.level_error);
2781 END IF;
2782 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2783 hz_utility_v2pub.debug(p_message=>'do_update_cust_acct_v2_bo(-)',
2784 p_prefix=>l_debug_prefix,
2785 p_msg_level=>fnd_log.level_procedure);
2786 END IF;
2787
2788 WHEN fnd_api.g_exc_unexpected_error THEN
2789 ROLLBACK TO do_update_cust_acct_v2_bo_pub;
2790
2791 -- reset Global variable
2792 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
2793 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
2794
2795 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
2796 FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT');
2797 FND_MSG_PUB.ADD;
2798
2799 x_return_status := fnd_api.g_ret_sts_unexp_error;
2800
2801 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2802 p_count => x_msg_count,
2803 p_data => x_msg_data);
2804
2805 -- Debug info.
2806 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2807 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2808 p_msg_data=>x_msg_data,
2809 p_msg_type=>'UNEXPECTED ERROR',
2810 p_msg_level=>fnd_log.level_error);
2811 END IF;
2812 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2813 hz_utility_v2pub.debug(p_message=>'do_update_cust_acct_v2_bo(-)',
2814 p_prefix=>l_debug_prefix,
2815 p_msg_level=>fnd_log.level_procedure);
2816 END IF;
2817
2818 WHEN OTHERS THEN
2819 ROLLBACK TO do_update_cust_acct_v2_bo_pub;
2820
2821 -- reset Global variable
2822 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
2823 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
2824
2825 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
2826 FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT');
2827 FND_MSG_PUB.ADD;
2828
2829 x_return_status := fnd_api.g_ret_sts_unexp_error;
2830
2831 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
2832 fnd_message.set_token('ERROR' ,SQLERRM);
2833 fnd_msg_pub.add;
2834
2835 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2836 p_count => x_msg_count,
2837 p_data => x_msg_data);
2838
2839 -- Debug info.
2840 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2841 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2842 p_msg_data=>x_msg_data,
2843 p_msg_type=>'SQL ERROR',
2844 p_msg_level=>fnd_log.level_error);
2845 END IF;
2846 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2847 hz_utility_v2pub.debug(p_message=>'do_update_cust_acct_v2_bo(-)',
2848 p_prefix=>l_debug_prefix,
2849 p_msg_level=>fnd_log.level_procedure);
2850 END IF;
2851 END do_update_cust_acct_v2_bo;
2852
2853 -- PROCEDURE do_save_cust_acct_v2_bo
2854 --
2855 -- DESCRIPTION
2856 -- Create or update customer account business object.
2857 PROCEDURE do_save_cust_acct_v2_bo(
2858 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
2859 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
2860 p_cust_acct_v2_obj IN OUT NOCOPY HZ_CUST_ACCT_V2_BO,
2861 p_created_by_module IN VARCHAR2,
2862 p_obj_source IN VARCHAR2 := null,
2863 x_return_status OUT NOCOPY VARCHAR2,
2864 x_msg_count OUT NOCOPY NUMBER,
2865 x_msg_data OUT NOCOPY VARCHAR2,
2866 x_cust_acct_id OUT NOCOPY NUMBER,
2867 x_cust_acct_os OUT NOCOPY VARCHAR2,
2868 x_cust_acct_osr OUT NOCOPY VARCHAR2,
2869 px_parent_id IN OUT NOCOPY NUMBER,
2870 px_parent_os IN OUT NOCOPY VARCHAR2,
2871 px_parent_osr IN OUT NOCOPY VARCHAR2,
2872 px_parent_obj_type IN OUT NOCOPY VARCHAR2
2873 ) IS
2874 l_return_status VARCHAR2(30);
2875 l_msg_count NUMBER;
2876 l_msg_data VARCHAR2(2000);
2877 l_create_update_flag VARCHAR2(1);
2878 l_debug_prefix VARCHAR2(30) := '';
2879 BEGIN
2880 -- initialize API return status to success.
2881 x_return_status := FND_API.G_RET_STS_SUCCESS;
2882
2883 -- Initialize message list if p_init_msg_list is set to TRUE.
2884 IF FND_API.to_Boolean(p_init_msg_list) THEN
2885 FND_MSG_PUB.initialize;
2886 END IF;
2887
2888 -- Debug info.
2889 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2890 hz_utility_v2pub.debug(p_message=>'do_save_cust_acct_v2_bo(+)',
2891 p_prefix=>l_debug_prefix,
2892 p_msg_level=>fnd_log.level_procedure);
2893 END IF;
2894
2895 x_cust_acct_id := p_cust_acct_v2_obj.cust_acct_id;
2896 x_cust_acct_os := p_cust_acct_v2_obj.orig_system;
2897 x_cust_acct_osr := p_cust_acct_v2_obj.orig_system_reference;
2898
2899 -- check root business object to determine that it should be
2900 -- create or update, call HZ_REGISTRY_VALIDATE_BO_PVT
2901 l_create_update_flag := HZ_REGISTRY_VALIDATE_BO_PVT.check_bo_op(
2902 p_entity_id => x_cust_acct_id,
2903 p_entity_os => x_cust_acct_os,
2904 p_entity_osr => x_cust_acct_osr,
2905 p_entity_type => 'HZ_CUST_ACCOUNTS',
2906 p_parent_id => px_parent_id,
2907 p_parent_obj_type => px_parent_obj_type
2908 );
2909
2910 IF(l_create_update_flag = 'E') THEN
2911 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
2912 FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT');
2913 FND_MSG_PUB.ADD;
2914 RAISE FND_API.G_EXC_ERROR;
2915 END IF;
2916
2917 IF(l_create_update_flag = 'C') THEN
2918 do_create_cust_acct_v2_bo(
2919 p_validate_bo_flag => p_validate_bo_flag,
2920 p_cust_acct_v2_obj => p_cust_acct_v2_obj,
2921 p_created_by_module => p_created_by_module,
2922 p_obj_source => p_obj_source,
2923 x_return_status => x_return_status,
2924 x_msg_count => x_msg_count,
2925 x_msg_data => x_msg_data,
2926 x_cust_acct_id => x_cust_acct_id,
2927 x_cust_acct_os => x_cust_acct_os,
2928 x_cust_acct_osr => x_cust_acct_osr,
2929 px_parent_id => px_parent_id,
2930 px_parent_os => px_parent_os,
2931 px_parent_osr => px_parent_osr,
2932 px_parent_obj_type => px_parent_obj_type
2933 );
2934 ELSIF(l_create_update_flag = 'U') THEN
2935 do_update_cust_acct_v2_bo(
2936 p_cust_acct_v2_obj => p_cust_acct_v2_obj,
2937 p_created_by_module => p_created_by_module,
2938 p_obj_source => p_obj_source,
2939 x_return_status => x_return_status,
2940 x_msg_count => x_msg_count,
2941 x_msg_data => x_msg_data,
2942 x_cust_acct_id => x_cust_acct_id,
2943 x_cust_acct_os => x_cust_acct_os,
2944 x_cust_acct_osr => x_cust_acct_osr,
2945 p_parent_os => px_parent_os
2946 );
2947 ELSE
2948 RAISE FND_API.G_EXC_ERROR;
2949 END IF;
2950
2951 -- Debug info.
2952 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
2953 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2954 p_msg_data=>x_msg_data,
2955 p_msg_type=>'WARNING',
2956 p_msg_level=>fnd_log.level_exception);
2957 END IF;
2958 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2959 hz_utility_v2pub.debug(p_message=>'do_save_cust_acct_v2_bo(-)',
2960 p_prefix=>l_debug_prefix,
2961 p_msg_level=>fnd_log.level_procedure);
2962 END IF;
2963
2964 EXCEPTION
2965 WHEN fnd_api.g_exc_error THEN
2966 x_return_status := fnd_api.g_ret_sts_error;
2967
2968 FND_MESSAGE.SET_NAME('AR', 'HZ_SAVE_API_ERROR');
2969 FND_MSG_PUB.ADD;
2970 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2971 p_count => x_msg_count,
2972 p_data => x_msg_data);
2973
2974 -- Debug info.
2975 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2976 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2977 p_msg_data=>x_msg_data,
2978 p_msg_type=>'ERROR',
2979 p_msg_level=>fnd_log.level_error);
2980 END IF;
2981 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2982 hz_utility_v2pub.debug(p_message=>'do_save_cust_acct_v2_bo(-)',
2983 p_prefix=>l_debug_prefix,
2984 p_msg_level=>fnd_log.level_procedure);
2985 END IF;
2986 WHEN fnd_api.g_exc_unexpected_error THEN
2987 x_return_status := fnd_api.g_ret_sts_unexp_error;
2988
2989 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2990 p_count => x_msg_count,
2991 p_data => x_msg_data);
2992
2993 -- Debug info.
2994 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2995 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2996 p_msg_data=>x_msg_data,
2997 p_msg_type=>'UNEXPECTED ERROR',
2998 p_msg_level=>fnd_log.level_error);
2999 END IF;
3000 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3001 hz_utility_v2pub.debug(p_message=>'do_save_cust_acct_v2_bo(-)',
3002 p_prefix=>l_debug_prefix,
3003 p_msg_level=>fnd_log.level_procedure);
3004 END IF;
3005 WHEN OTHERS THEN
3006 x_return_status := fnd_api.g_ret_sts_unexp_error;
3007
3008 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
3009 fnd_message.set_token('ERROR' ,SQLERRM);
3010 fnd_msg_pub.add;
3011
3012 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3013 p_count => x_msg_count,
3014 p_data => x_msg_data);
3015
3016 -- Debug info.
3017 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3018 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3019 p_msg_data=>x_msg_data,
3020 p_msg_type=>'SQL ERROR',
3021 p_msg_level=>fnd_log.level_error);
3022 END IF;
3023 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3024 hz_utility_v2pub.debug(p_message=>'do_save_cust_acct_v2_bo(-)',
3025 p_prefix=>l_debug_prefix,
3026 p_msg_level=>fnd_log.level_procedure);
3027 END IF;
3028 END do_save_cust_acct_v2_bo;
3029
3030 PROCEDURE save_cust_acct_v2_bo(
3031 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
3032 p_cust_acct_v2_obj IN HZ_CUST_ACCT_V2_BO,
3033 p_created_by_module IN VARCHAR2,
3034 p_obj_source IN VARCHAR2 := null,
3035 p_return_obj_flag IN VARCHAR2 := fnd_api.g_true,
3036 x_return_status OUT NOCOPY VARCHAR2,
3037 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL,
3038 x_return_obj OUT NOCOPY HZ_CUST_ACCT_V2_BO,
3039 x_cust_acct_id OUT NOCOPY NUMBER,
3040 x_cust_acct_os OUT NOCOPY VARCHAR2,
3041 x_cust_acct_osr OUT NOCOPY VARCHAR2,
3042 px_parent_id IN OUT NOCOPY NUMBER,
3043 px_parent_os IN OUT NOCOPY VARCHAR2,
3044 px_parent_osr IN OUT NOCOPY VARCHAR2,
3045 px_parent_obj_type IN OUT NOCOPY VARCHAR2
3046 ) IS
3047 l_msg_data VARCHAR2(2000);
3048 l_msg_count NUMBER;
3049 l_ca_obj HZ_CUST_ACCT_V2_BO;
3050 BEGIN
3051 l_ca_obj := p_cust_acct_v2_obj;
3052 do_save_cust_acct_v2_bo(
3053 p_init_msg_list => fnd_api.g_true,
3054 p_validate_bo_flag => p_validate_bo_flag,
3055 p_cust_acct_v2_obj => l_ca_obj,
3056 p_created_by_module => p_created_by_module,
3057 x_return_status => x_return_status,
3058 x_msg_count => l_msg_count,
3059 x_msg_data => l_msg_data,
3060 x_cust_acct_id => x_cust_acct_id,
3061 x_cust_acct_os => x_cust_acct_os,
3062 x_cust_acct_osr => x_cust_acct_osr,
3063 px_parent_id => px_parent_id,
3064 px_parent_os => px_parent_os,
3065 px_parent_osr => px_parent_osr,
3066 px_parent_obj_type => px_parent_obj_type
3067 );
3068 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
3069 x_return_status => x_return_status,
3070 x_msg_count => l_msg_count,
3071 x_msg_data => l_msg_data);
3072 IF FND_API.to_Boolean(p_return_obj_flag) THEN
3073 x_return_obj := l_ca_obj;
3074 END IF;
3075 END save_cust_acct_v2_bo;
3076
3077 --------------------------------------
3078 --
3079 -- PROCEDURE get_cust_acct_v2_bo
3080 --
3081 -- DESCRIPTION
3082 -- Get a logical customer account.
3083 --
3084 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
3085 --
3086 -- ARGUMENTS
3087 -- IN:
3088 -- p_init_msg_list Initialize message stack if it is set to
3089 -- p_cust_acct_id customer account ID.
3090 -- p_parent_id Parent Id.
3091 -- FND_API.G_TRUE. Default is FND_API.G_FALSE.
3092 -- OUT:
3093 -- x_cust_acct_v2_obj Logical customer account record.
3094 -- x_return_status Return status after the call. The status can
3095 -- be fnd_api.g_ret_sts_success (success),
3096 -- fnd_api.g_ret_sts_error (error),
3097 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
3098 -- x_msg_count Number of messages in message stack.
3099 -- x_msg_data Message text if x_msg_count is 1.
3100 --
3101 -- NOTES
3102 --
3103 -- MODIFICATION HISTORY
3104 --
3105 --
3106 -- 1-FEB-2008 VSEGU Created.
3107 --
3108
3109 /*
3110
3111 The Get customer account API Procedure is a retrieval service that returns full customer account business objects.
3112 The user identifies a particular Organization Contact business object using the TCA identifier and/or the object's
3113 Source System information. Upon proper validation of the object, the full Organization Contact business object is returned.
3114 The object consists of all data included within the Organization Contact business object, at all embedded levels.
3115 This includes the set of all data stored in the TCA tables for each embedded entity.
3116
3117
3118 Embedded BO Mandatory Multiple Logical API Procedure Comments
3119 Customer Account Site N Y get_cust_acct_site_v2_bo
3120 Customer Account Contact N Y get_cust_acct_contact_bo
3121 Customer Profile Y N Business Structure. Included entities:
3122 HZ_CUSTOMER_PROFILES, HZ_CUST_PROFILE_AMTS
3123
3124 To retrieve the appropriate embedded entities within the 'Organization Contact' business object, the Get procedure returns all records for the particular contact from these TCA entity tables.
3125
3126 Embedded TCA Entity Mandatory Multiple TCA Table Entities
3127
3128 Customer Account Y N HZ_CUST_ACCOUNTS
3129 Account Relationship N Y HZ_CUST_ACCT_RELATE
3130 Bank Account Use N Y Owned by Payments team
3131 Payment Method N N Owned by AR team
3132
3133 */
3134
3135
3136 PROCEDURE get_cust_acct_v2_bo(
3137 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
3138 p_cust_acct_id IN NUMBER,
3139 p_cust_acct_os IN VARCHAR2,
3140 p_cust_acct_osr IN VARCHAR2,
3141 x_cust_acct_v2_obj OUT NOCOPY HZ_CUST_ACCT_V2_BO,
3142 x_return_status OUT NOCOPY VARCHAR2,
3143 x_msg_count OUT NOCOPY NUMBER,
3144 x_msg_data OUT NOCOPY VARCHAR2
3145 ) is
3146 l_debug_prefix VARCHAR2(30) := '';
3147
3148 l_cust_acct_id number;
3149 l_cust_acct_os varchar2(30);
3150 l_cust_acct_osr varchar2(255);
3151 l_cust_acct_v2_objs HZ_CUST_ACCT_V2_BO_TBL;
3152 BEGIN
3153
3154 -- initialize API return status to success.
3155 x_return_status := FND_API.G_RET_STS_SUCCESS;
3156
3157 -- Initialize message list if p_init_msg_list is set to TRUE
3158 IF FND_API.to_Boolean(p_init_msg_list) THEN
3159 FND_MSG_PUB.initialize;
3160 END IF;
3161
3162
3163 -- Debug info.
3164 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3165 hz_utility_v2pub.debug(p_message=>'hz_cust_acct_bo_pub.get_cust_acct_v2_bo(+)',
3166 p_prefix=>l_debug_prefix,
3167 p_msg_level=>fnd_log.level_procedure);
3168 END IF;
3169
3170 -- check if pass in contact_point_id and/or os+osr
3171 -- extraction validation logic is same as update
3172
3173 l_cust_acct_id := p_cust_acct_id;
3174 l_cust_acct_os := p_cust_acct_os;
3175 l_cust_acct_osr := p_cust_acct_osr;
3176
3177 HZ_EXTRACT_BO_UTIL_PVT.validate_ssm_id(
3178 px_id => l_cust_acct_id,
3179 px_os => l_cust_acct_os,
3180 px_osr => l_cust_acct_osr,
3181 p_obj_type => 'HZ_CUST_ACCOUNTS',
3182 x_return_status => x_return_status,
3183 x_msg_count => x_msg_count,
3184 x_msg_data => x_msg_data);
3185
3186 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3187 RAISE fnd_api.g_exc_error;
3188 END IF;
3189
3190 HZ_EXTRACT_CUST_ACCT_BO_PVT.get_cust_acct_v2_bos
3191 (p_init_msg_list => fnd_api.g_false,
3192 p_parent_id => NULL,
3193 p_cust_acct_id => l_cust_acct_id,
3194 p_action_type => NULL,
3195 x_cust_acct_v2_objs => l_cust_acct_v2_objs,
3196 x_return_status => x_return_status,
3197 x_msg_count => x_msg_count,
3198 x_msg_data => x_msg_data);
3199
3200 x_cust_acct_v2_obj := l_cust_acct_v2_objs(1);
3201
3202 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3203 RAISE FND_API.G_EXC_ERROR;
3204 END IF;
3205
3206
3207 -- Debug info.
3208 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
3209 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3210 p_msg_data=>x_msg_data,
3211 p_msg_type=>'WARNING',
3212 p_msg_level=>fnd_log.level_exception);
3213 END IF;
3214
3215 -- Debug info.
3216 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3217 hz_utility_v2pub.debug(p_message=>'hz_cust_acct_bo_pub.get_cust_acct_v2_bo (-)',
3218 p_prefix=>l_debug_prefix,
3219 p_msg_level=>fnd_log.level_procedure);
3220 END IF;
3221
3222
3223 EXCEPTION
3224
3225 WHEN fnd_api.g_exc_error THEN
3226 x_return_status := fnd_api.g_ret_sts_error;
3227
3228 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3229 p_count => x_msg_count,
3230 p_data => x_msg_data);
3231
3232 -- Debug info.
3233 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3234 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3235 p_msg_data=>x_msg_data,
3236 p_msg_type=>'ERROR',
3237 p_msg_level=>fnd_log.level_error);
3238 END IF;
3239 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3240 hz_utility_v2pub.debug(p_message=>'hz_cust_acct_bo_pub.get_cust_acct_v2_bo (-)',
3241 p_prefix=>l_debug_prefix,
3242 p_msg_level=>fnd_log.level_procedure);
3243 END IF;
3244 WHEN fnd_api.g_exc_unexpected_error THEN
3245 x_return_status := fnd_api.g_ret_sts_unexp_error;
3246
3247 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3248 p_count => x_msg_count,
3249 p_data => x_msg_data);
3250
3251 -- Debug info.
3252 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3253 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3254 p_msg_data=>x_msg_data,
3255 p_msg_type=>'UNEXPECTED ERROR',
3256 p_msg_level=>fnd_log.level_error);
3257 END IF;
3258 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3259 hz_utility_v2pub.debug(p_message=>'hz_cust_acct_bo_pub.get_cust_acct_v2_bo (-)',
3260 p_prefix=>l_debug_prefix,
3261 p_msg_level=>fnd_log.level_procedure);
3262 END IF;
3263 WHEN OTHERS THEN
3264 x_return_status := fnd_api.g_ret_sts_unexp_error;
3265
3266 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
3267 fnd_message.set_token('ERROR' ,SQLERRM);
3268 fnd_msg_pub.add;
3269
3270 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3271 p_count => x_msg_count,
3272 p_data => x_msg_data);
3273
3274 -- Debug info.
3275 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3276 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3277 p_msg_data=>x_msg_data,
3278 p_msg_type=>'SQL ERROR',
3279 p_msg_level=>fnd_log.level_error);
3280 END IF;
3281 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3282 hz_utility_v2pub.debug(p_message=>'hz_cust_acct_bo_pub.get_cust_acct_v2_bo (-)',
3283 p_prefix=>l_debug_prefix,
3284 p_msg_level=>fnd_log.level_procedure);
3285 END IF;
3286
3287 end;
3288
3289 PROCEDURE get_cust_acct_v2_bo(
3290 p_cust_acct_id IN NUMBER,
3291 p_cust_acct_os IN VARCHAR2,
3292 p_cust_acct_osr IN VARCHAR2,
3293 x_cust_acct_v2_obj OUT NOCOPY HZ_CUST_ACCT_V2_BO,
3294 x_return_status OUT NOCOPY VARCHAR2,
3295 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL
3296 ) IS
3297 l_msg_data VARCHAR2(2000);
3298 l_msg_count NUMBER;
3299 BEGIN
3300 get_cust_acct_v2_bo(
3301 p_init_msg_list => fnd_api.g_true,
3302 p_cust_acct_id => p_cust_acct_id,
3303 p_cust_acct_os => p_cust_acct_os,
3304 p_cust_acct_osr => p_cust_acct_osr,
3305 x_cust_acct_v2_obj => x_cust_acct_v2_obj,
3306 x_return_status => x_return_status,
3307 x_msg_count => l_msg_count,
3308 x_msg_data => l_msg_data
3309 );
3310 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
3311 x_return_status => x_return_status,
3312 x_msg_count => l_msg_count,
3313 x_msg_data => l_msg_data);
3314 END get_cust_acct_v2_bo;
3315
3316 END hz_cust_acct_bo_pub;