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