[Home] [Help]
PACKAGE BODY: APPS.HZ_CUST_ACCT_SITE_BO_PVT
Source
1 PACKAGE BODY hz_cust_acct_site_bo_pvt AS
2 /*$Header: ARHBCSVB.pls 120.11.12010000.2 2008/10/16 22:29:17 awu ship $ */
3
4 -- PRIVATE PROCEDURE assign_cust_site_use_rec
5 --
6 -- DESCRIPTION
7 -- Assign attribute value from customer account site use object to plsql record.
8 --
9 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
10 --
11 -- ARGUMENTS
12 -- IN:
13 -- p_cust_site_use_obj Customer account site use object.
14 -- p_cust_acct_site_id Customer account site Id.
15 -- p_cust_site_use_id Customer account site use Id.
16 -- p_cust_site_use_os Customer account site use original system.
17 -- p_cust_site_use_osr Customer account site use original system reference.
18 -- IN/OUT:
19 -- px_cust_site_use_rec Customer account site use plsql record.
20 --
21 -- NOTES
22 --
23 -- MODIFICATION HISTORY
24 --
25 -- 14-DEC-2004 Arnold Ng Created.
26
27 PROCEDURE assign_cust_site_use_rec(
28 p_cust_site_use_obj IN HZ_CUST_SITE_USE_BO,
29 p_cust_acct_site_id IN NUMBER,
30 p_cust_site_use_id IN NUMBER,
31 p_cust_site_use_os IN VARCHAR2,
32 p_cust_site_use_osr IN VARCHAR2,
33 px_cust_site_use_rec IN OUT NOCOPY HZ_CUST_ACCOUNT_SITE_V2PUB.CUST_SITE_USE_REC_TYPE
34 );
35
36 -- PRIVATE PROCEDURE assign_cust_site_use_rec
37 --
38 -- DESCRIPTION
39 -- Assign attribute value from customer account site use object to plsql record.
40 --
41 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
42 --
43 -- ARGUMENTS
44 -- IN:
45 -- p_cust_site_use_obj Customer account site use object.
46 -- p_cust_acct_site_id Customer account site Id.
47 -- p_cust_site_use_id Customer account site use Id.
48 -- p_cust_site_use_os Customer account site use original system.
49 -- p_cust_site_use_osr Customer account site use original system reference.
50 -- IN/OUT:
51 -- px_cust_site_use_rec Customer account site use plsql record.
52 --
53 -- NOTES
54 --
55 -- MODIFICATION HISTORY
56 --
57 -- 14-DEC-2004 Arnold Ng Created.
58
59 PROCEDURE assign_cust_site_use_rec(
60 p_cust_site_use_obj IN HZ_CUST_SITE_USE_BO,
61 p_cust_acct_site_id IN NUMBER,
62 p_cust_site_use_id IN NUMBER,
63 p_cust_site_use_os IN VARCHAR2,
64 p_cust_site_use_osr IN VARCHAR2,
65 px_cust_site_use_rec IN OUT NOCOPY HZ_CUST_ACCOUNT_SITE_V2PUB.CUST_SITE_USE_REC_TYPE
66 ) IS
67 BEGIN
68 px_cust_site_use_rec.site_use_id := p_cust_site_use_id;
69 px_cust_site_use_rec.cust_acct_site_id := p_cust_acct_site_id;
70 px_cust_site_use_rec.site_use_code := p_cust_site_use_obj.site_use_code;
71 IF(p_cust_site_use_obj.primary_flag in ('Y','N')) THEN
72 px_cust_site_use_rec.primary_flag := p_cust_site_use_obj.primary_flag;
73 END IF;
74 IF(p_cust_site_use_obj.status in ('A','I')) THEN
75 px_cust_site_use_rec.status := p_cust_site_use_obj.status;
76 END IF;
77 px_cust_site_use_rec.location := p_cust_site_use_obj.location;
78 px_cust_site_use_rec.bill_to_site_use_id := p_cust_site_use_obj.bill_to_site_use_id;
79 px_cust_site_use_rec.sic_code := p_cust_site_use_obj.sic_code;
80 px_cust_site_use_rec.payment_term_id := p_cust_site_use_obj.payment_term_id;
81 IF(p_cust_site_use_obj.gsa_indicator in ('Y','N')) THEN
82 px_cust_site_use_rec.gsa_indicator := p_cust_site_use_obj.gsa_indicator;
83 END IF;
84 px_cust_site_use_rec.ship_partial := p_cust_site_use_obj.ship_partial;
85 px_cust_site_use_rec.ship_via := p_cust_site_use_obj.ship_via;
86 px_cust_site_use_rec.fob_point := p_cust_site_use_obj.fob_point;
87 px_cust_site_use_rec.order_type_id := p_cust_site_use_obj.order_type_id;
88 px_cust_site_use_rec.price_list_id := p_cust_site_use_obj.price_list_id;
89 px_cust_site_use_rec.freight_term := p_cust_site_use_obj.freight_term;
90 px_cust_site_use_rec.warehouse_id := p_cust_site_use_obj.warehouse_id;
91 px_cust_site_use_rec.territory_id := p_cust_site_use_obj.territory_id;
92 px_cust_site_use_rec.attribute_category := p_cust_site_use_obj.attribute_category;
93 px_cust_site_use_rec.attribute1 := p_cust_site_use_obj.attribute1;
94 px_cust_site_use_rec.attribute2 := p_cust_site_use_obj.attribute2;
95 px_cust_site_use_rec.attribute3 := p_cust_site_use_obj.attribute3;
96 px_cust_site_use_rec.attribute4 := p_cust_site_use_obj.attribute4;
97 px_cust_site_use_rec.attribute5 := p_cust_site_use_obj.attribute5;
98 px_cust_site_use_rec.attribute6 := p_cust_site_use_obj.attribute6;
99 px_cust_site_use_rec.attribute7 := p_cust_site_use_obj.attribute7;
100 px_cust_site_use_rec.attribute8 := p_cust_site_use_obj.attribute8;
101 px_cust_site_use_rec.attribute9 := p_cust_site_use_obj.attribute9;
102 px_cust_site_use_rec.attribute10 := p_cust_site_use_obj.attribute10;
103 px_cust_site_use_rec.attribute11 := p_cust_site_use_obj.attribute11;
104 px_cust_site_use_rec.attribute12 := p_cust_site_use_obj.attribute12;
105 px_cust_site_use_rec.attribute13 := p_cust_site_use_obj.attribute13;
106 px_cust_site_use_rec.attribute14 := p_cust_site_use_obj.attribute14;
107 px_cust_site_use_rec.attribute15 := p_cust_site_use_obj.attribute15;
108 px_cust_site_use_rec.attribute16 := p_cust_site_use_obj.attribute16;
109 px_cust_site_use_rec.attribute17 := p_cust_site_use_obj.attribute17;
110 px_cust_site_use_rec.attribute18 := p_cust_site_use_obj.attribute18;
111 px_cust_site_use_rec.attribute19 := p_cust_site_use_obj.attribute19;
112 px_cust_site_use_rec.attribute20 := p_cust_site_use_obj.attribute20;
113 px_cust_site_use_rec.attribute21 := p_cust_site_use_obj.attribute21;
114 px_cust_site_use_rec.attribute22 := p_cust_site_use_obj.attribute22;
115 px_cust_site_use_rec.attribute23 := p_cust_site_use_obj.attribute23;
116 px_cust_site_use_rec.attribute24 := p_cust_site_use_obj.attribute24;
117 px_cust_site_use_rec.attribute25 := p_cust_site_use_obj.attribute25;
118 px_cust_site_use_rec.tax_reference := p_cust_site_use_obj.tax_reference;
119 px_cust_site_use_rec.sort_priority := p_cust_site_use_obj.sort_priority;
120 px_cust_site_use_rec.tax_code := p_cust_site_use_obj.tax_code;
121 px_cust_site_use_rec.demand_class_code := p_cust_site_use_obj.demand_class_code;
122 px_cust_site_use_rec.tax_header_level_flag := p_cust_site_use_obj.tax_header_level_flag;
123 px_cust_site_use_rec.tax_rounding_rule := p_cust_site_use_obj.tax_rounding_rule;
124 px_cust_site_use_rec.global_attribute_category := p_cust_site_use_obj.global_attribute_category;
125 px_cust_site_use_rec.global_attribute1 := p_cust_site_use_obj.global_attribute1;
126 px_cust_site_use_rec.global_attribute2 := p_cust_site_use_obj.global_attribute2;
127 px_cust_site_use_rec.global_attribute3 := p_cust_site_use_obj.global_attribute3;
128 px_cust_site_use_rec.global_attribute4 := p_cust_site_use_obj.global_attribute4;
129 px_cust_site_use_rec.global_attribute5 := p_cust_site_use_obj.global_attribute5;
130 px_cust_site_use_rec.global_attribute6 := p_cust_site_use_obj.global_attribute6;
131 px_cust_site_use_rec.global_attribute7 := p_cust_site_use_obj.global_attribute7;
132 px_cust_site_use_rec.global_attribute8 := p_cust_site_use_obj.global_attribute8;
133 px_cust_site_use_rec.global_attribute9 := p_cust_site_use_obj.global_attribute9;
134 px_cust_site_use_rec.global_attribute10 := p_cust_site_use_obj.global_attribute10;
135 px_cust_site_use_rec.global_attribute11 := p_cust_site_use_obj.global_attribute11;
136 px_cust_site_use_rec.global_attribute12 := p_cust_site_use_obj.global_attribute12;
137 px_cust_site_use_rec.global_attribute13 := p_cust_site_use_obj.global_attribute13;
138 px_cust_site_use_rec.global_attribute14 := p_cust_site_use_obj.global_attribute14;
139 px_cust_site_use_rec.global_attribute15 := p_cust_site_use_obj.global_attribute15;
140 px_cust_site_use_rec.global_attribute16 := p_cust_site_use_obj.global_attribute16;
141 px_cust_site_use_rec.global_attribute17 := p_cust_site_use_obj.global_attribute17;
142 px_cust_site_use_rec.global_attribute18 := p_cust_site_use_obj.global_attribute18;
143 px_cust_site_use_rec.global_attribute19 := p_cust_site_use_obj.global_attribute19;
144 px_cust_site_use_rec.global_attribute20 := p_cust_site_use_obj.global_attribute20;
145 px_cust_site_use_rec.primary_salesrep_id := p_cust_site_use_obj.primary_salesrep_id;
146 px_cust_site_use_rec.finchrg_receivables_trx_id := p_cust_site_use_obj.finchrg_receivables_trx_id;
147 px_cust_site_use_rec.dates_negative_tolerance := p_cust_site_use_obj.dates_negative_tolerance;
148 px_cust_site_use_rec.dates_positive_tolerance := p_cust_site_use_obj.dates_positive_tolerance;
149 px_cust_site_use_rec.date_type_preference := p_cust_site_use_obj.date_type_preference;
150 px_cust_site_use_rec.over_shipment_tolerance := p_cust_site_use_obj.over_shipment_tolerance;
151 px_cust_site_use_rec.under_shipment_tolerance := p_cust_site_use_obj.under_shipment_tolerance;
152 px_cust_site_use_rec.item_cross_ref_pref := p_cust_site_use_obj.item_cross_ref_pref;
153 px_cust_site_use_rec.over_return_tolerance := p_cust_site_use_obj.over_return_tolerance;
154 px_cust_site_use_rec.under_return_tolerance:= p_cust_site_use_obj.under_return_tolerance;
155 IF(p_cust_site_use_obj.ship_sets_include_lines_flag in ('Y','N')) THEN
156 px_cust_site_use_rec.ship_sets_include_lines_flag := p_cust_site_use_obj.ship_sets_include_lines_flag;
157 END IF;
158 IF(p_cust_site_use_obj.arrivalsets_incl_lines_flag in ('Y','N')) THEN
159 px_cust_site_use_rec.arrivalsets_include_lines_flag := p_cust_site_use_obj.arrivalsets_incl_lines_flag;
160 END IF;
161 IF(p_cust_site_use_obj.sched_date_push_flag in ('Y','N')) THEN
162 px_cust_site_use_rec.sched_date_push_flag := p_cust_site_use_obj.sched_date_push_flag;
163 END IF;
164 px_cust_site_use_rec.invoice_quantity_rule := p_cust_site_use_obj.invoice_quantity_rule;
165 px_cust_site_use_rec.pricing_event := p_cust_site_use_obj.pricing_event;
166 px_cust_site_use_rec.gl_id_rec := p_cust_site_use_obj.gl_id_rec;
167 px_cust_site_use_rec.gl_id_rev := p_cust_site_use_obj.gl_id_rev;
168 px_cust_site_use_rec.gl_id_tax := p_cust_site_use_obj.gl_id_tax;
169 px_cust_site_use_rec.gl_id_freight := p_cust_site_use_obj.gl_id_freight;
170 px_cust_site_use_rec.gl_id_clearing := p_cust_site_use_obj.gl_id_clearing;
171 px_cust_site_use_rec.gl_id_unbilled := p_cust_site_use_obj.gl_id_unbilled;
172 px_cust_site_use_rec.gl_id_unearned := p_cust_site_use_obj.gl_id_unearned;
173 px_cust_site_use_rec.gl_id_unpaid_rec := p_cust_site_use_obj.gl_id_unpaid_rec;
174 px_cust_site_use_rec.gl_id_remittance := p_cust_site_use_obj.gl_id_remittance;
175 px_cust_site_use_rec.gl_id_factor := p_cust_site_use_obj.gl_id_factor;
176 px_cust_site_use_rec.tax_classification := p_cust_site_use_obj.tax_classification;
177 px_cust_site_use_rec.orig_system := p_cust_site_use_os;
178 px_cust_site_use_rec.orig_system_reference := p_cust_site_use_osr;
179 px_cust_site_use_rec.created_by_module := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
180 px_cust_site_use_rec.org_id := p_cust_site_use_obj.org_id;
181 END assign_cust_site_use_rec;
182
183 -- PROCEDURE create_cust_site_uses
184 --
185 -- DESCRIPTION
186 -- Create customer account site uses.
187 --
188 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
189 --
190 -- ARGUMENTS
191 -- IN:
192 -- p_casu_objs List of customer account site use objects.
193 -- p_ca_id Customer account Id.
194 -- p_cas_id Customer account site Id.
195 -- p_parent_os Parent original system.
196 -- OUT:
197 -- x_return_status Return status after the call. The status can
198 -- be fnd_api.g_ret_sts_success (success),
199 -- fnd_api.g_ret_sts_error (error),
200 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
201 -- x_msg_count Number of messages in message stack.
202 -- x_msg_data Message text if x_msg_count is 1.
203 --
204 -- NOTES
205 --
206 -- MODIFICATION HISTORY
207 --
208 -- 14-DEC-2004 Arnold Ng Created.
209
210 PROCEDURE create_cust_site_uses(
211 p_casu_objs IN OUT NOCOPY HZ_CUST_SITE_USE_BO_TBL,
212 p_ca_id IN NUMBER,
213 p_cas_id IN NUMBER,
214 p_parent_os IN VARCHAR2,
215 x_return_status OUT NOCOPY VARCHAR2,
216 x_msg_count OUT NOCOPY NUMBER,
217 x_msg_data OUT NOCOPY VARCHAR2
218 ) IS
219 l_debug_prefix VARCHAR2(30) := '';
220 l_casu_id NUMBER;
221 l_casu_os VARCHAR2(30);
222 l_casu_osr VARCHAR2(255);
223 l_casu_rec HZ_CUST_ACCOUNT_SITE_V2PUB.CUST_SITE_USE_REC_TYPE;
224 l_cap_id NUMBER;
225 l_cap_os VARCHAR2(30);
226 l_cap_osr VARCHAR2(255);
227 l_cap_rec HZ_CUSTOMER_PROFILE_V2PUB.CUSTOMER_PROFILE_REC_TYPE;
228 l_profile_id NUMBER;
229 l_party_id NUMBER;
230
231 CURSOR get_party_id(l_ca_id NUMBER) IS
232 SELECT party_id
233 FROM HZ_CUST_ACCOUNTS
234 WHERE cust_account_id = l_ca_id;
235 BEGIN
236 -- Standard start of API savepoint
237 SAVEPOINT create_casu_pvt;
238
239 -- initialize API return status to success.
240 x_return_status := FND_API.G_RET_STS_SUCCESS;
241
242 -- Debug info.
243 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
244 hz_utility_v2pub.debug(p_message=>'create_cust_site_uses(+)',
245 p_prefix=>l_debug_prefix,
246 p_msg_level=>fnd_log.level_procedure);
247 END IF;
248
249 -- Create cust site use with site use profile
250 -- HZ_CUST_ACCONT_SITE_V2PUB will create cust site use and then
251 -- create site use profile
252 FOR i IN 1..p_casu_objs.COUNT LOOP
253 -- no need to check parent cust_acct_site_id because this id is
254 -- passed from BO API, it guarantees the correctness of it
255 l_casu_id := p_casu_objs(i).site_use_id;
256 l_casu_os := p_casu_objs(i).orig_system;
257 l_casu_osr := p_casu_objs(i).orig_system_reference;
258
259 -- check if pass in site_use_id and os+osr
260 hz_registry_validate_bo_pvt.validate_ssm_id(
261 px_id => l_casu_id,
262 px_os => l_casu_os,
263 px_osr => l_casu_osr,
264 p_org_id => p_casu_objs(i).org_id,
265 p_obj_type => 'HZ_CUST_SITE_USES_ALL',
266 p_create_or_update => 'C',
267 x_return_status => x_return_status,
268 x_msg_count => x_msg_count,
269 x_msg_data => x_msg_data);
270
271 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
272 RAISE FND_API.G_EXC_ERROR;
273 END IF;
274
275 assign_cust_site_use_rec(
276 p_cust_site_use_obj => p_casu_objs(i),
277 p_cust_acct_site_id => p_cas_id,
278 p_cust_site_use_id => l_casu_id,
279 p_cust_site_use_os => l_casu_os,
280 p_cust_site_use_osr => l_casu_osr,
281 px_cust_site_use_rec => l_casu_rec
282 );
283
284 HZ_CUST_ACCOUNT_SITE_V2PUB.create_cust_site_use (
285 p_cust_site_use_rec => l_casu_rec,
286 p_customer_profile_rec => NULL,
287 p_create_profile => FND_API.G_FALSE,
288 p_create_profile_amt => FND_API.G_FALSE,
289 x_site_use_id => l_casu_id,
290 x_return_status => x_return_status,
291 x_msg_count => x_msg_count,
292 x_msg_data => x_msg_data
293 );
294
295 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
296 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
297 hz_utility_v2pub.debug(p_message=>'Error occurred at hz_cust_acct_site_bo_pvt.create_cust_site_uses, acct_site_id: '||p_cas_id||' , cust_acct_site_os: '||l_casu_os||' , cust_acct_site_osr: '||l_casu_osr,
298 p_prefix=>l_debug_prefix,
299 p_msg_level=>fnd_log.level_procedure);
300 END IF;
301 RAISE FND_API.G_EXC_ERROR;
302 END IF;
303
304 -- assign site_use_id
305 p_casu_objs(i).site_use_id := l_casu_id;
306
307 IF(p_casu_objs(i).site_use_code in ('BILL_TO', 'DUN', 'STMTS') AND
308 p_casu_objs(i).site_use_profile_obj IS NOT NULL) THEN
309 -- check if BILL_TO, DUN or STMTS to create with profile
310 -- no need to pass cust account id since in v2api, the cust account
311 -- id will be obtained from cust site id
312 HZ_CUST_ACCT_BO_PVT.create_cust_profile(
313 p_cp_obj => p_casu_objs(i).site_use_profile_obj,
314 p_ca_id => p_ca_id,
315 p_casu_id => l_casu_id,
316 x_cp_id => l_profile_id,
317 x_return_status => x_return_status,
318 x_msg_count => x_msg_count,
319 x_msg_data => x_msg_data
320 );
321
322 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
323 RAISE FND_API.G_EXC_ERROR;
324 END IF;
325
326 HZ_CUST_ACCT_BO_PVT.create_cust_profile_amts(
327 p_cpa_objs => p_casu_objs(i).site_use_profile_obj.cust_profile_amt_objs,
328 p_cp_id => l_profile_id,
329 p_ca_id => p_ca_id,
330 p_casu_id => l_casu_id,
331 x_return_status => x_return_status,
332 x_msg_count => x_msg_count,
333 x_msg_data => x_msg_data
334 );
335
336 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
337 RAISE FND_API.G_EXC_ERROR;
338 END IF;
339 END IF;
340
341 ------------------------
342 -- Call bank account use
343 ------------------------
344 OPEN get_party_id(p_ca_id);
345 FETCH get_party_id INTO l_party_id;
346 CLOSE get_party_id;
347
348 IF((p_casu_objs(i).bank_acct_use_objs IS NOT NULL) AND
349 (p_casu_objs(i).bank_acct_use_objs.COUNT > 0)) THEN
350 HZ_CUST_ACCT_BO_PVT.save_bank_acct_uses(
351 p_bank_acct_use_objs => p_casu_objs(i).bank_acct_use_objs,
352 p_party_id => l_party_id,
353 p_ca_id => p_ca_id,
354 p_casu_id => l_casu_id,
355 x_return_status => x_return_status,
356 x_msg_count => x_msg_count,
357 x_msg_data => x_msg_data
358 );
359
360 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
361 RAISE FND_API.G_EXC_ERROR;
362 END IF;
363 END IF;
364
365 ------------------------
366 -- Call payment method
367 ------------------------
368 IF(p_casu_objs(i).payment_method_obj IS NOT NULL) THEN
369 HZ_CUST_ACCT_BO_PVT.create_payment_method(
370 p_payment_method_obj => p_casu_objs(i).payment_method_obj,
371 p_ca_id => p_ca_id,
372 p_casu_id => l_casu_id,
373 x_return_status => x_return_status,
374 x_msg_count => x_msg_count,
375 x_msg_data => x_msg_data
376 );
377
378 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
379 RAISE FND_API.G_EXC_ERROR;
380 END IF;
381 END IF;
382 END LOOP;
383
384 -- Debug info.
385 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
386 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
387 p_msg_data=>x_msg_data,
388 p_msg_type=>'WARNING',
389 p_msg_level=>fnd_log.level_exception);
390 END IF;
391 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
392 hz_utility_v2pub.debug(p_message=>'create_cust_site_uses(-)',
393 p_prefix=>l_debug_prefix,
394 p_msg_level=>fnd_log.level_procedure);
395 END IF;
396
397 EXCEPTION
398 WHEN fnd_api.g_exc_error THEN
399 ROLLBACK TO create_casu_pvt;
400 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_STRUCT_ERROR');
401 FND_MESSAGE.SET_TOKEN('STRUCTURE', 'CUST_ACCT_SITE_USE');
402 FND_MSG_PUB.ADD;
403
404 x_return_status := fnd_api.g_ret_sts_error;
405
406 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
407 p_count => x_msg_count,
408 p_data => x_msg_data);
409
410 -- Debug info.
411 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
412 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
413 p_msg_data=>x_msg_data,
414 p_msg_type=>'ERROR',
415 p_msg_level=>fnd_log.level_error);
416 END IF;
417 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
418 hz_utility_v2pub.debug(p_message=>'create_cust_site_uses(-)',
419 p_prefix=>l_debug_prefix,
420 p_msg_level=>fnd_log.level_procedure);
421 END IF;
422
423 WHEN fnd_api.g_exc_unexpected_error THEN
424 ROLLBACK TO create_casu_pvt;
425 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_STRUCT_ERROR');
426 FND_MESSAGE.SET_TOKEN('STRUCTURE', 'CUST_ACCT_SITE_USE');
427 FND_MSG_PUB.ADD;
428
429 x_return_status := fnd_api.g_ret_sts_unexp_error;
430
431 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
432 p_count => x_msg_count,
433 p_data => x_msg_data);
434
435 -- Debug info.
436 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
437 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
438 p_msg_data=>x_msg_data,
439 p_msg_type=>'UNEXPECTED ERROR',
440 p_msg_level=>fnd_log.level_error);
441 END IF;
442 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
443 hz_utility_v2pub.debug(p_message=>'create_cust_site_uses(-)',
444 p_prefix=>l_debug_prefix,
445 p_msg_level=>fnd_log.level_procedure);
446 END IF;
447
448 WHEN OTHERS THEN
449 ROLLBACK TO create_casu_pvt;
450 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_STRUCT_ERROR');
451 FND_MESSAGE.SET_TOKEN('STRUCTURE', 'CUST_ACCT_SITE_USE');
452 FND_MSG_PUB.ADD;
453
454 x_return_status := fnd_api.g_ret_sts_unexp_error;
455
456 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
457 fnd_message.set_token('ERROR' ,SQLERRM);
458 fnd_msg_pub.add;
459
460 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
461 p_count => x_msg_count,
462 p_data => x_msg_data);
463
464 -- Debug info.
465 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
466 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
467 p_msg_data=>x_msg_data,
468 p_msg_type=>'SQL ERROR',
469 p_msg_level=>fnd_log.level_error);
470 END IF;
471 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
472 hz_utility_v2pub.debug(p_message=>'create_cust_site_uses(-)',
473 p_prefix=>l_debug_prefix,
474 p_msg_level=>fnd_log.level_procedure);
475 END IF;
476 END create_cust_site_uses;
477
478 -- PROCEDURE save_cust_site_uses
479 --
480 -- DESCRIPTION
481 -- Create or update customer account site uses.
482 --
483 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
484 --
485 -- ARGUMENTS
486 -- IN:
487 -- p_casu_objs List of customer account site use objects.
488 -- p_ca_id Customer account Id.
489 -- p_cas_id Customer account site Id.
490 -- p_parent_os Parent original system.
491 -- OUT:
492 -- x_return_status Return status after the call. The status can
493 -- be fnd_api.g_ret_sts_success (success),
494 -- fnd_api.g_ret_sts_error (error),
495 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
496 -- x_msg_count Number of messages in message stack.
497 -- x_msg_data Message text if x_msg_count is 1.
498 --
499 -- NOTES
500 --
501 -- MODIFICATION HISTORY
502 --
503 -- 14-DEC-2004 Arnold Ng Created.
504
505 PROCEDURE save_cust_site_uses(
506 p_casu_objs IN OUT NOCOPY HZ_CUST_SITE_USE_BO_TBL,
507 p_ca_id IN NUMBER,
508 p_cas_id IN NUMBER,
509 p_parent_os IN VARCHAR2,
510 x_return_status OUT NOCOPY VARCHAR2,
511 x_msg_count OUT NOCOPY NUMBER,
512 x_msg_data OUT NOCOPY VARCHAR2
513 )IS
514 l_debug_prefix VARCHAR2(30) := '';
515 l_casu_id NUMBER;
516 l_casu_os VARCHAR2(30);
517 l_casu_osr VARCHAR2(255);
518 l_casu_rec HZ_CUST_ACCOUNT_SITE_V2PUB.CUST_SITE_USE_REC_TYPE;
519 l_cap_rec HZ_CUSTOMER_PROFILE_V2PUB.CUSTOMER_PROFILE_REC_TYPE;
520 l_ovn NUMBER;
521 l_cap_ovn NUMBER;
522 l_create_update_flag VARCHAR2(1);
523 l_profile_id NUMBER;
524 l_party_id NUMBER;
525 l_site_use_code VARCHAR2(30);
526 l_parent_id NUMBER;
527 l_parent_obj_type VARCHAR2(30);
528
529 CURSOR get_cap_id(l_ca_id NUMBER, l_casu_id NUMBER, l_profile_class_id NUMBER) IS
530 SELECT cust_account_profile_id
531 FROM HZ_CUSTOMER_PROFILES
532 WHERE cust_account_id = l_ca_id
533 AND site_use_id = l_casu_id
534 AND profile_class_id = l_profile_class_id
535 AND status IN ('A','I');
536
537 CURSOR get_ovn(l_casu_id NUMBER) IS
538 SELECT site_use_code, object_version_number
539 FROM HZ_CUST_SITE_USES
540 WHERE site_use_id = l_casu_id
541 AND status in ('A','I');
542
543 CURSOR get_party_id(l_ca_id NUMBER) IS
544 SELECT party_id
545 FROM HZ_CUST_ACCOUNTS
546 WHERE cust_account_id = l_ca_id;
547
548 CURSOR get_casu_id(l_cas_id NUMBER, l_su_code VARCHAR2, l_org_id NUMBER) IS
549 SELECT site_use_id
550 FROM HZ_CUST_SITE_USES_ALL
551 WHERE cust_acct_site_id = l_cas_id
552 AND site_use_code = l_su_code
553 AND status = 'A'
554 AND org_id = l_org_id
555 AND rownum = 1;
556
557 BEGIN
558 -- Standard start of API savepoint
559 SAVEPOINT save_casu_pvt;
560
561 -- initialize API return status to success.
562 x_return_status := FND_API.G_RET_STS_SUCCESS;
563
564 -- Debug info.
565 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
566 hz_utility_v2pub.debug(p_message=>'save_cust_site_uses(+)',
567 p_prefix=>l_debug_prefix,
568 p_msg_level=>fnd_log.level_procedure);
569 END IF;
570
571 -- Create/Update cust site uses
572 FOR i IN 1..p_casu_objs.COUNT LOOP
573 l_casu_id := p_casu_objs(i).site_use_id;
574 l_casu_os := p_casu_objs(i).orig_system;
575 l_casu_osr := p_casu_objs(i).orig_system_reference;
576
577 IF(p_cas_id IS NOT NULL) THEN
578 l_parent_id := p_cas_id;
579 l_parent_obj_type := 'CUST_ACCT_SITE';
580 if p_casu_objs(i).site_use_id is null and l_casu_os = 'ORACLE_AIA' -- AIA enh 7209179
581 then
582 open get_casu_id(p_cas_id,p_casu_objs(i).site_use_code,p_casu_objs(i).org_id);
583 fetch get_casu_id into l_casu_id;
584 close get_casu_id;
585 if l_casu_id is not null
586 then
587 l_casu_os := null;
588 l_casu_osr := null;
589 l_casu_rec.site_use_id := l_casu_id;
590 l_casu_rec.orig_system := null;
591 l_casu_rec.orig_system_reference := null;
592 end if;
593 end if;
594 ELSE
595 l_parent_id := p_ca_id;
596 l_parent_obj_type := 'CUST_ACCT';
597 END IF;
598
599 -- check root business object to determine that it should be
600 -- create or update, call HZ_REGISTRY_VALIDATE_BO_PVT
601 l_create_update_flag := HZ_REGISTRY_VALIDATE_BO_PVT.check_bo_op(
602 p_entity_id => l_casu_id,
603 p_entity_os => l_casu_os,
604 p_entity_osr => l_casu_osr,
605 p_entity_type => 'HZ_CUST_SITE_USES_ALL',
606 p_parent_id => l_parent_id,
607 p_parent_obj_type=> l_parent_obj_type
608 );
609
610 IF(l_create_update_flag = 'E') THEN
611 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_STRUCT_ERROR');
612 FND_MESSAGE.SET_TOKEN('STRUCTURE', 'CUST_ACCT_SITE_USE');
613 FND_MSG_PUB.ADD;
614 RAISE FND_API.G_EXC_ERROR;
615 END IF;
616
617 -- check if the cust site use record is create or update
618 -- since cust site use has os+osr, use os+osr to check if record exist or not
619 IF(l_create_update_flag = 'C') THEN
620 assign_cust_site_use_rec(
621 p_cust_site_use_obj => p_casu_objs(i),
622 p_cust_acct_site_id => p_cas_id,
623 p_cust_site_use_id => l_casu_id,
624 p_cust_site_use_os => l_casu_os,
625 p_cust_site_use_osr => l_casu_osr,
626 px_cust_site_use_rec => l_casu_rec
627 );
628
629 HZ_CUST_ACCOUNT_SITE_V2PUB.create_cust_site_use (
630 p_cust_site_use_rec => l_casu_rec,
631 p_customer_profile_rec => NULL,
632 p_create_profile => FND_API.G_FALSE,
633 p_create_profile_amt => FND_API.G_FALSE,
634 x_site_use_id => l_casu_id,
635 x_return_status => x_return_status,
636 x_msg_count => x_msg_count,
637 x_msg_data => x_msg_data
638 );
639
640 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
641 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
642 hz_utility_v2pub.debug(p_message=>'Error occurred at hz_cust_acct_site_bo_pvt.save_cust_site_uses, acct_site_id: '||p_cas_id||' , cust_acct_site_os: '||l_casu_os||' , cust_acct_site_osr: '||l_casu_osr,
643 p_prefix=>l_debug_prefix,
644 p_msg_level=>fnd_log.level_procedure);
645 END IF;
646 RAISE fnd_api.g_exc_error;
647 END IF;
648
649 -- assign site_use_id
650 p_casu_objs(i).site_use_id := l_casu_id;
651
652 IF(p_casu_objs(i).site_use_code in ('BILL_TO', 'DUN', 'STMTS') AND
653 p_casu_objs(i).site_use_profile_obj IS NOT NULL) THEN
654 -- check if BILL_TO, DUN and STMTS to create with profile
655 HZ_CUST_ACCT_BO_PVT.create_cust_profile(
656 p_cp_obj => p_casu_objs(i).site_use_profile_obj,
657 p_ca_id => p_ca_id,
658 p_casu_id => l_casu_id,
659 x_cp_id => l_profile_id,
660 x_return_status => x_return_status,
661 x_msg_count => x_msg_count,
662 x_msg_data => x_msg_data
663 );
664
665 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
666 RAISE FND_API.G_EXC_ERROR;
667 END IF;
668
669 HZ_CUST_ACCT_BO_PVT.create_cust_profile_amts(
670 p_cpa_objs => p_casu_objs(i).site_use_profile_obj.cust_profile_amt_objs,
671 p_cp_id => l_profile_id,
672 p_ca_id => p_ca_id,
673 p_casu_id => l_casu_id,
674 x_return_status => x_return_status,
675 x_msg_count => x_msg_count,
676 x_msg_data => x_msg_data
677 );
678
679 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
680 RAISE FND_API.G_EXC_ERROR;
681 END IF;
682
683 END IF;
684
685 ELSE
686 hz_registry_validate_bo_pvt.validate_ssm_id(
687 px_id => l_casu_id,
688 px_os => l_casu_os,
689 px_osr => l_casu_osr,
690 p_org_id => p_casu_objs(i).org_id,
691 p_obj_type => 'HZ_CUST_SITE_USES_ALL',
692 p_create_or_update => 'U',
693 x_return_status => x_return_status,
694 x_msg_count => x_msg_count,
695 x_msg_data => x_msg_data
696 );
697
698 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
699 RAISE FND_API.G_EXC_ERROR;
700 END IF;
701
702 OPEN get_ovn(l_casu_id);
703 FETCH get_ovn INTO l_site_use_code, l_ovn;
704 CLOSE get_ovn;
705
706 assign_cust_site_use_rec(
707 p_cust_site_use_obj => p_casu_objs(i),
708 p_cust_acct_site_id => p_cas_id,
709 p_cust_site_use_id => l_casu_id,
710 p_cust_site_use_os => l_casu_os,
711 p_cust_site_use_osr => l_casu_osr,
712 px_cust_site_use_rec => l_casu_rec
713 );
714
715 -- clean up created_by_module, os and osr for update
716 l_casu_rec.created_by_module := NULL;
717 l_casu_rec.orig_system := NULL;
718 l_casu_rec.orig_system_reference := NULL;
719 HZ_CUST_ACCOUNT_SITE_V2PUB.update_cust_site_use (
720 p_cust_site_use_rec => l_casu_rec,
721 p_object_version_number => l_ovn,
722 x_return_status => x_return_status,
723 x_msg_count => x_msg_count,
724 x_msg_data => x_msg_data
725 );
726
727 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
728 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
729 hz_utility_v2pub.debug(p_message=>'Error occurred at hz_cust_acct_site_bo_pvt.save_cust_site_uses, acct_site_id: '||p_cas_id||' , cust_acct_site_os: '||l_casu_os||' , cust_acct_site_osr: '||l_casu_osr,
730 p_prefix=>l_debug_prefix,
731 p_msg_level=>fnd_log.level_procedure);
732 END IF;
733 RAISE fnd_api.g_exc_error;
734 END IF;
735
736 -- assign site_use_id
737 p_casu_objs(i).site_use_id := l_casu_id;
738
739 IF(l_site_use_code in ('BILL_TO', 'DUN', 'STMTS') AND
740 p_casu_objs(i).site_use_profile_obj IS NOT NULL) THEN
741 -- need to update customer profile
742 HZ_CUST_ACCT_BO_PVT.update_cust_profile(
743 p_cp_obj => p_casu_objs(i).site_use_profile_obj,
744 p_ca_id => p_ca_id,
745 p_casu_id => l_casu_id,
746 x_cp_id => l_profile_id,
747 x_return_status => x_return_status,
748 x_msg_count => x_msg_count,
749 x_msg_data => x_msg_data
750 );
751
752 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
753 RAISE FND_API.G_EXC_ERROR;
754 END IF;
755
756 HZ_CUST_ACCT_BO_PVT.save_cust_profile_amts(
757 p_cpa_objs => p_casu_objs(i).site_use_profile_obj.cust_profile_amt_objs,
758 p_cp_id => l_profile_id,
759 p_ca_id => p_ca_id,
760 p_casu_id => l_casu_id,
761 x_return_status => x_return_status,
762 x_msg_count => x_msg_count,
763 x_msg_data => x_msg_data
764 );
765 END IF;
766 END IF;
767
768 ------------------------
769 -- Call bank account use
770 ------------------------
771 OPEN get_party_id(p_ca_id);
772 FETCH get_party_id INTO l_party_id;
773 CLOSE get_party_id;
774
775 IF((p_casu_objs(i).bank_acct_use_objs IS NOT NULL) AND
776 (p_casu_objs(i).bank_acct_use_objs.COUNT > 0)) THEN
777 HZ_CUST_ACCT_BO_PVT.save_bank_acct_uses(
778 p_bank_acct_use_objs => p_casu_objs(i).bank_acct_use_objs,
779 p_party_id => l_party_id,
780 p_ca_id => p_ca_id,
781 p_casu_id => l_casu_id,
782 x_return_status => x_return_status,
783 x_msg_count => x_msg_count,
784 x_msg_data => x_msg_data
785 );
786
787 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
788 RAISE FND_API.G_EXC_ERROR;
789 END IF;
790 END IF;
791
792 ------------------------
793 -- Call payment method
794 ------------------------
795 IF(p_casu_objs(i).payment_method_obj IS NOT NULL) THEN
796 HZ_CUST_ACCT_BO_PVT.save_payment_method(
797 p_payment_method_obj => p_casu_objs(i).payment_method_obj,
798 p_ca_id => p_ca_id,
799 p_casu_id => l_casu_id,
800 x_return_status => x_return_status,
801 x_msg_count => x_msg_count,
802 x_msg_data => x_msg_data
803 );
804
805 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
806 RAISE FND_API.G_EXC_ERROR;
807 END IF;
808 END IF;
809
810 END LOOP;
811
812 -- Debug info.
813 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
814 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
815 p_msg_data=>x_msg_data,
816 p_msg_type=>'WARNING',
817 p_msg_level=>fnd_log.level_exception);
818 END IF;
819 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
820 hz_utility_v2pub.debug(p_message=>'save_cust_site_uses(-)',
821 p_prefix=>l_debug_prefix,
822 p_msg_level=>fnd_log.level_procedure);
823 END IF;
824 EXCEPTION
825 WHEN fnd_api.g_exc_error THEN
826 ROLLBACK TO save_casu_pvt;
827 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_STRUCT_ERROR');
828 FND_MESSAGE.SET_TOKEN('STRUCTURE', 'CUST_ACCT_SITE_USE');
829 FND_MSG_PUB.ADD;
830
831 x_return_status := fnd_api.g_ret_sts_error;
832
833 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
834 p_count => x_msg_count,
835 p_data => x_msg_data);
836
837 -- Debug info.
838 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
839 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
840 p_msg_data=>x_msg_data,
841 p_msg_type=>'ERROR',
842 p_msg_level=>fnd_log.level_error);
843 END IF;
844 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
845 hz_utility_v2pub.debug(p_message=>'save_cust_site_uses(-)',
846 p_prefix=>l_debug_prefix,
847 p_msg_level=>fnd_log.level_procedure);
848 END IF;
849
850 WHEN fnd_api.g_exc_unexpected_error THEN
851 ROLLBACK TO save_casu_pvt;
852 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_STRUCT_ERROR');
853 FND_MESSAGE.SET_TOKEN('STRUCTURE', 'CUST_ACCT_SITE_USE');
854 FND_MSG_PUB.ADD;
855
856 x_return_status := fnd_api.g_ret_sts_unexp_error;
857
858 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
859 p_count => x_msg_count,
860 p_data => x_msg_data);
861
862 -- Debug info.
863 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
864 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
865 p_msg_data=>x_msg_data,
866 p_msg_type=>'UNEXPECTED ERROR',
867 p_msg_level=>fnd_log.level_error);
868 END IF;
869 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
870 hz_utility_v2pub.debug(p_message=>'save_cust_site_uses(-)',
871 p_prefix=>l_debug_prefix,
872 p_msg_level=>fnd_log.level_procedure);
873 END IF;
874
875 WHEN OTHERS THEN
876 ROLLBACK TO save_casu_pvt;
877 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_STRUCT_ERROR');
878 FND_MESSAGE.SET_TOKEN('STRUCTURE', 'CUST_ACCT_SITE_USE');
879 FND_MSG_PUB.ADD;
880
881 x_return_status := fnd_api.g_ret_sts_unexp_error;
882
883 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
884 fnd_message.set_token('ERROR' ,SQLERRM);
885 fnd_msg_pub.add;
886
887 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
888 p_count => x_msg_count,
889 p_data => x_msg_data);
890
891 -- Debug info.
892 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
893 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
894 p_msg_data=>x_msg_data,
895 p_msg_type=>'SQL ERROR',
896 p_msg_level=>fnd_log.level_error);
897 END IF;
898 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
899 hz_utility_v2pub.debug(p_message=>'save_cust_site_uses(-)',
900 p_prefix=>l_debug_prefix,
901 p_msg_level=>fnd_log.level_procedure);
902 END IF;
903 END save_cust_site_uses;
904
905 -- PROCEDURE save_cust_acct_sites
906 --
907 -- DESCRIPTION
908 -- Create or update customer account sites.
909 PROCEDURE save_cust_acct_sites(
910 p_cas_objs IN OUT NOCOPY HZ_CUST_ACCT_SITE_BO_TBL,
911 p_create_update_flag IN VARCHAR2,
912 p_obj_source IN VARCHAR2 := null,
913 x_return_status OUT NOCOPY VARCHAR2,
914 x_msg_count OUT NOCOPY NUMBER,
915 x_msg_data OUT NOCOPY VARCHAR2,
916 p_parent_acct_id IN NUMBER,
917 p_parent_acct_os IN VARCHAR2,
918 p_parent_acct_osr IN VARCHAR2
919 ) IS
920 l_debug_prefix VARCHAR2(30) := '';
921 l_cas_id NUMBER;
922 l_cas_os VARCHAR2(30);
923 l_cas_osr VARCHAR2(255);
924 l_parent_acct_id NUMBER;
925 l_parent_acct_os VARCHAR2(30);
926 l_parent_acct_osr VARCHAR2(255);
927 l_cbm VARCHAR2(30);
928 BEGIN
929 -- initialize API return status to success
930 x_return_status := FND_API.G_RET_STS_SUCCESS;
931
932 -- Debug info.
933 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
934 hz_utility_v2pub.debug(p_message=>'save_cust_acct_sites(+)',
935 p_prefix=>l_debug_prefix,
936 p_msg_level=>fnd_log.level_procedure);
937 END IF;
938
939 l_parent_acct_id := p_parent_acct_id;
940 l_parent_acct_os := p_parent_acct_os;
941 l_parent_acct_osr := p_parent_acct_osr;
942
943 l_cbm := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
944
945 IF(p_create_update_flag = 'C') THEN
946 -- Create cust account sites
947 FOR i IN 1..p_cas_objs.COUNT LOOP
948 HZ_CUST_ACCT_SITE_BO_PUB.do_create_cust_acct_site_bo(
949 p_init_msg_list => fnd_api.g_false,
950 p_validate_bo_flag => fnd_api.g_false,
951 p_cust_acct_site_obj => p_cas_objs(i),
952 p_created_by_module => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
953 p_obj_source => p_obj_source,
954 x_return_status => x_return_status,
955 x_msg_count => x_msg_count,
956 x_msg_data => x_msg_data,
957 x_cust_acct_site_id => l_cas_id,
958 x_cust_acct_site_os => l_cas_os,
959 x_cust_acct_site_osr => l_cas_osr,
960 px_parent_acct_id => l_parent_acct_id,
961 px_parent_acct_os => l_parent_acct_os,
962 px_parent_acct_osr => l_parent_acct_osr
963 );
964
965 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
966 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
967 hz_utility_v2pub.debug(p_message=>'Error occurred at hz_cust_acct_site_bo_pvt.save_cust_acct_sites, parent id: '||l_parent_acct_id||' '||l_parent_acct_os||'-'||l_parent_acct_osr,
968 p_prefix=>l_debug_prefix,
969 p_msg_level=>fnd_log.level_procedure);
970 END IF;
971 RAISE fnd_api.g_exc_error;
972 END IF;
973
974 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
975 END LOOP;
976 ELSE
977 -- Create/update cust account site
978 FOR i IN 1..p_cas_objs.COUNT LOOP
979 HZ_CUST_ACCT_SITE_BO_PUB.do_save_cust_acct_site_bo(
980 p_init_msg_list => fnd_api.g_false,
981 p_validate_bo_flag => fnd_api.g_false,
982 p_cust_acct_site_obj => p_cas_objs(i),
983 p_created_by_module => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
984 p_obj_source => p_obj_source,
985 x_return_status => x_return_status,
986 x_msg_count => x_msg_count,
987 x_msg_data => x_msg_data,
988 x_cust_acct_site_id => l_cas_id,
989 x_cust_acct_site_os => l_cas_os,
990 x_cust_acct_site_osr => l_cas_osr,
991 px_parent_acct_id => l_parent_acct_id,
992 px_parent_acct_os => l_parent_acct_os,
993 px_parent_acct_osr => l_parent_acct_osr
994 );
995
996 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
997 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
998 hz_utility_v2pub.debug(p_message=>'Error occurred at hz_cust_acct_site_bo_pvt.save_cust_acct_sites, parent id: '||l_parent_acct_id||' '||l_parent_acct_os||'-'||l_parent_acct_osr,
999 p_prefix=>l_debug_prefix,
1000 p_msg_level=>fnd_log.level_procedure);
1001 END IF;
1002 RAISE fnd_api.g_exc_error;
1003 END IF;
1004
1005 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
1006 END LOOP;
1007 END IF;
1008
1009 -- Debug info.
1010 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1011 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1012 p_msg_data=>x_msg_data,
1013 p_msg_type=>'WARNING',
1014 p_msg_level=>fnd_log.level_exception);
1015 END IF;
1016 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1017 hz_utility_v2pub.debug(p_message=>'save_cust_acct_sites(-)',
1018 p_prefix=>l_debug_prefix,
1019 p_msg_level=>fnd_log.level_procedure);
1020 END IF;
1021 EXCEPTION
1022 WHEN fnd_api.g_exc_error THEN
1023 x_return_status := fnd_api.g_ret_sts_error;
1024
1025 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1026 p_count => x_msg_count,
1027 p_data => x_msg_data);
1028
1029 -- Debug info.
1030 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1031 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1032 p_msg_data=>x_msg_data,
1033 p_msg_type=>'ERROR',
1034 p_msg_level=>fnd_log.level_error);
1035 END IF;
1036 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1037 hz_utility_v2pub.debug(p_message=>'save_cust_acct_sites(-)',
1038 p_prefix=>l_debug_prefix,
1039 p_msg_level=>fnd_log.level_procedure);
1040 END IF;
1041 WHEN fnd_api.g_exc_unexpected_error THEN
1042 x_return_status := fnd_api.g_ret_sts_unexp_error;
1043
1044 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1045 p_count => x_msg_count,
1046 p_data => x_msg_data);
1047
1048 -- Debug info.
1049 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1050 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1051 p_msg_data=>x_msg_data,
1052 p_msg_type=>'UNEXPECTED ERROR',
1053 p_msg_level=>fnd_log.level_error);
1054 END IF;
1055 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1056 hz_utility_v2pub.debug(p_message=>'save_cust_acct_sites(-)',
1057 p_prefix=>l_debug_prefix,
1058 p_msg_level=>fnd_log.level_procedure);
1059 END IF;
1060 WHEN OTHERS THEN
1061 x_return_status := fnd_api.g_ret_sts_unexp_error;
1062
1063 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1064 fnd_message.set_token('ERROR' ,SQLERRM);
1065 fnd_msg_pub.add;
1066
1067 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1068 p_count => x_msg_count,
1069 p_data => x_msg_data);
1070
1071 -- Debug info.
1072 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1073 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1074 p_msg_data=>x_msg_data,
1075 p_msg_type=>'SQL ERROR',
1076 p_msg_level=>fnd_log.level_error);
1077 END IF;
1078 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1079 hz_utility_v2pub.debug(p_message=>'save_cust_acct_sites(-)',
1080 p_prefix=>l_debug_prefix,
1081 p_msg_level=>fnd_log.level_procedure);
1082 END IF;
1083 END save_cust_acct_sites;
1084
1085 -- PRIVATE PROCEDURE assign_cust_site_use_v2_rec
1086 --
1087 -- DESCRIPTION
1088 -- Assign attribute value from customer account site use object to plsql record.
1089 --
1090 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1091 --
1092 -- ARGUMENTS
1093 -- IN:
1094 -- p_cust_site_use_v2_obj Customer account site use object.
1095 -- p_cust_acct_site_id Customer account site Id.
1096 -- p_cust_site_use_id Customer account site use Id.
1097 -- p_cust_site_use_os Customer account site use original system.
1098 -- p_cust_site_use_osr Customer account site use original system reference.
1099 -- IN/OUT:
1100 -- px_cust_site_use_rec Customer account site use plsql record.
1101 --
1102 -- NOTES
1103 --
1104 -- MODIFICATION HISTORY
1105 --
1106 -- 31-JAN-2008 vsegu Created.
1107
1108 PROCEDURE assign_cust_site_use_v2_rec(
1109 p_cust_site_use_v2_obj IN HZ_CUST_SITE_USE_V2_BO,
1110 p_cust_acct_site_id IN NUMBER,
1111 p_cust_site_use_id IN NUMBER,
1112 p_cust_site_use_os IN VARCHAR2,
1113 p_cust_site_use_osr IN VARCHAR2,
1114 px_cust_site_use_rec IN OUT NOCOPY HZ_CUST_ACCOUNT_SITE_V2PUB.CUST_SITE_USE_REC_TYPE
1115 );
1116
1117 -- PRIVATE PROCEDURE assign_cust_site_use_v2_rec
1118 --
1119 -- DESCRIPTION
1120 -- Assign attribute value from customer account site use object to plsql record.
1121 --
1122 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1123 --
1124 -- ARGUMENTS
1125 -- IN:
1126 -- p_cust_site_use_v2_obj Customer account site use object.
1127 -- p_cust_acct_site_id Customer account site Id.
1128 -- p_cust_site_use_id Customer account site use Id.
1129 -- p_cust_site_use_os Customer account site use original system.
1130 -- p_cust_site_use_osr Customer account site use original system reference.
1131 -- IN/OUT:
1132 -- px_cust_site_use_rec Customer account site use plsql record.
1133 --
1134 -- NOTES
1135 --
1136 -- MODIFICATION HISTORY
1137 --
1138 -- 31-JAN-2008 vsegu Created.
1139
1140 PROCEDURE assign_cust_site_use_v2_rec(
1141 p_cust_site_use_v2_obj IN HZ_CUST_SITE_USE_V2_BO,
1142 p_cust_acct_site_id IN NUMBER,
1143 p_cust_site_use_id IN NUMBER,
1144 p_cust_site_use_os IN VARCHAR2,
1145 p_cust_site_use_osr IN VARCHAR2,
1146 px_cust_site_use_rec IN OUT NOCOPY HZ_CUST_ACCOUNT_SITE_V2PUB.CUST_SITE_USE_REC_TYPE
1147 ) IS
1148 BEGIN
1149 px_cust_site_use_rec.site_use_id := p_cust_site_use_id;
1150 px_cust_site_use_rec.cust_acct_site_id := p_cust_acct_site_id;
1151 px_cust_site_use_rec.site_use_code := p_cust_site_use_v2_obj.site_use_code;
1152 IF(p_cust_site_use_v2_obj.primary_flag in ('Y','N')) THEN
1153 px_cust_site_use_rec.primary_flag := p_cust_site_use_v2_obj.primary_flag;
1154 END IF;
1155 IF(p_cust_site_use_v2_obj.status in ('A','I')) THEN
1156 px_cust_site_use_rec.status := p_cust_site_use_v2_obj.status;
1157 END IF;
1158 px_cust_site_use_rec.location := p_cust_site_use_v2_obj.location;
1159 px_cust_site_use_rec.bill_to_site_use_id := p_cust_site_use_v2_obj.bill_to_site_use_id;
1160 px_cust_site_use_rec.sic_code := p_cust_site_use_v2_obj.sic_code;
1161 px_cust_site_use_rec.payment_term_id := p_cust_site_use_v2_obj.payment_term_id;
1162 IF(p_cust_site_use_v2_obj.gsa_indicator in ('Y','N')) THEN
1163 px_cust_site_use_rec.gsa_indicator := p_cust_site_use_v2_obj.gsa_indicator;
1164 END IF;
1165 px_cust_site_use_rec.ship_partial := p_cust_site_use_v2_obj.ship_partial;
1166 px_cust_site_use_rec.ship_via := p_cust_site_use_v2_obj.ship_via;
1167 px_cust_site_use_rec.fob_point := p_cust_site_use_v2_obj.fob_point;
1168 px_cust_site_use_rec.order_type_id := p_cust_site_use_v2_obj.order_type_id;
1169 px_cust_site_use_rec.price_list_id := p_cust_site_use_v2_obj.price_list_id;
1170 px_cust_site_use_rec.freight_term := p_cust_site_use_v2_obj.freight_term;
1171 px_cust_site_use_rec.warehouse_id := p_cust_site_use_v2_obj.warehouse_id;
1172 px_cust_site_use_rec.territory_id := p_cust_site_use_v2_obj.territory_id;
1173 px_cust_site_use_rec.attribute_category := p_cust_site_use_v2_obj.attribute_category;
1174 px_cust_site_use_rec.attribute1 := p_cust_site_use_v2_obj.attribute1;
1175 px_cust_site_use_rec.attribute2 := p_cust_site_use_v2_obj.attribute2;
1176 px_cust_site_use_rec.attribute3 := p_cust_site_use_v2_obj.attribute3;
1177 px_cust_site_use_rec.attribute4 := p_cust_site_use_v2_obj.attribute4;
1178 px_cust_site_use_rec.attribute5 := p_cust_site_use_v2_obj.attribute5;
1179 px_cust_site_use_rec.attribute6 := p_cust_site_use_v2_obj.attribute6;
1180 px_cust_site_use_rec.attribute7 := p_cust_site_use_v2_obj.attribute7;
1181 px_cust_site_use_rec.attribute8 := p_cust_site_use_v2_obj.attribute8;
1182 px_cust_site_use_rec.attribute9 := p_cust_site_use_v2_obj.attribute9;
1183 px_cust_site_use_rec.attribute10 := p_cust_site_use_v2_obj.attribute10;
1184 px_cust_site_use_rec.attribute11 := p_cust_site_use_v2_obj.attribute11;
1185 px_cust_site_use_rec.attribute12 := p_cust_site_use_v2_obj.attribute12;
1186 px_cust_site_use_rec.attribute13 := p_cust_site_use_v2_obj.attribute13;
1187 px_cust_site_use_rec.attribute14 := p_cust_site_use_v2_obj.attribute14;
1188 px_cust_site_use_rec.attribute15 := p_cust_site_use_v2_obj.attribute15;
1189 px_cust_site_use_rec.attribute16 := p_cust_site_use_v2_obj.attribute16;
1190 px_cust_site_use_rec.attribute17 := p_cust_site_use_v2_obj.attribute17;
1191 px_cust_site_use_rec.attribute18 := p_cust_site_use_v2_obj.attribute18;
1192 px_cust_site_use_rec.attribute19 := p_cust_site_use_v2_obj.attribute19;
1193 px_cust_site_use_rec.attribute20 := p_cust_site_use_v2_obj.attribute20;
1194 px_cust_site_use_rec.attribute21 := p_cust_site_use_v2_obj.attribute21;
1195 px_cust_site_use_rec.attribute22 := p_cust_site_use_v2_obj.attribute22;
1196 px_cust_site_use_rec.attribute23 := p_cust_site_use_v2_obj.attribute23;
1197 px_cust_site_use_rec.attribute24 := p_cust_site_use_v2_obj.attribute24;
1198 px_cust_site_use_rec.attribute25 := p_cust_site_use_v2_obj.attribute25;
1199 px_cust_site_use_rec.tax_reference := p_cust_site_use_v2_obj.tax_reference;
1200 px_cust_site_use_rec.sort_priority := p_cust_site_use_v2_obj.sort_priority;
1201 px_cust_site_use_rec.tax_code := p_cust_site_use_v2_obj.tax_code;
1202 px_cust_site_use_rec.demand_class_code := p_cust_site_use_v2_obj.demand_class_code;
1203 px_cust_site_use_rec.tax_header_level_flag := p_cust_site_use_v2_obj.tax_header_level_flag;
1204 px_cust_site_use_rec.tax_rounding_rule := p_cust_site_use_v2_obj.tax_rounding_rule;
1205 px_cust_site_use_rec.global_attribute_category := p_cust_site_use_v2_obj.global_attribute_category;
1206 px_cust_site_use_rec.global_attribute1 := p_cust_site_use_v2_obj.global_attribute1;
1207 px_cust_site_use_rec.global_attribute2 := p_cust_site_use_v2_obj.global_attribute2;
1208 px_cust_site_use_rec.global_attribute3 := p_cust_site_use_v2_obj.global_attribute3;
1209 px_cust_site_use_rec.global_attribute4 := p_cust_site_use_v2_obj.global_attribute4;
1210 px_cust_site_use_rec.global_attribute5 := p_cust_site_use_v2_obj.global_attribute5;
1211 px_cust_site_use_rec.global_attribute6 := p_cust_site_use_v2_obj.global_attribute6;
1212 px_cust_site_use_rec.global_attribute7 := p_cust_site_use_v2_obj.global_attribute7;
1213 px_cust_site_use_rec.global_attribute8 := p_cust_site_use_v2_obj.global_attribute8;
1214 px_cust_site_use_rec.global_attribute9 := p_cust_site_use_v2_obj.global_attribute9;
1215 px_cust_site_use_rec.global_attribute10 := p_cust_site_use_v2_obj.global_attribute10;
1216 px_cust_site_use_rec.global_attribute11 := p_cust_site_use_v2_obj.global_attribute11;
1217 px_cust_site_use_rec.global_attribute12 := p_cust_site_use_v2_obj.global_attribute12;
1218 px_cust_site_use_rec.global_attribute13 := p_cust_site_use_v2_obj.global_attribute13;
1219 px_cust_site_use_rec.global_attribute14 := p_cust_site_use_v2_obj.global_attribute14;
1220 px_cust_site_use_rec.global_attribute15 := p_cust_site_use_v2_obj.global_attribute15;
1221 px_cust_site_use_rec.global_attribute16 := p_cust_site_use_v2_obj.global_attribute16;
1222 px_cust_site_use_rec.global_attribute17 := p_cust_site_use_v2_obj.global_attribute17;
1223 px_cust_site_use_rec.global_attribute18 := p_cust_site_use_v2_obj.global_attribute18;
1224 px_cust_site_use_rec.global_attribute19 := p_cust_site_use_v2_obj.global_attribute19;
1225 px_cust_site_use_rec.global_attribute20 := p_cust_site_use_v2_obj.global_attribute20;
1226 px_cust_site_use_rec.primary_salesrep_id := p_cust_site_use_v2_obj.primary_salesrep_id;
1227 px_cust_site_use_rec.finchrg_receivables_trx_id := p_cust_site_use_v2_obj.finchrg_receivables_trx_id;
1228 px_cust_site_use_rec.dates_negative_tolerance := p_cust_site_use_v2_obj.dates_negative_tolerance;
1229 px_cust_site_use_rec.dates_positive_tolerance := p_cust_site_use_v2_obj.dates_positive_tolerance;
1230 px_cust_site_use_rec.date_type_preference := p_cust_site_use_v2_obj.date_type_preference;
1231 px_cust_site_use_rec.over_shipment_tolerance := p_cust_site_use_v2_obj.over_shipment_tolerance;
1232 px_cust_site_use_rec.under_shipment_tolerance := p_cust_site_use_v2_obj.under_shipment_tolerance;
1233 px_cust_site_use_rec.item_cross_ref_pref := p_cust_site_use_v2_obj.item_cross_ref_pref;
1234 px_cust_site_use_rec.over_return_tolerance := p_cust_site_use_v2_obj.over_return_tolerance;
1235 px_cust_site_use_rec.under_return_tolerance:= p_cust_site_use_v2_obj.under_return_tolerance;
1236 IF(p_cust_site_use_v2_obj.ship_sets_include_lines_flag in ('Y','N')) THEN
1237 px_cust_site_use_rec.ship_sets_include_lines_flag := p_cust_site_use_v2_obj.ship_sets_include_lines_flag;
1238 END IF;
1239 IF(p_cust_site_use_v2_obj.arrivalsets_incl_lines_flag in ('Y','N')) THEN
1240 px_cust_site_use_rec.arrivalsets_include_lines_flag := p_cust_site_use_v2_obj.arrivalsets_incl_lines_flag;
1241 END IF;
1242 IF(p_cust_site_use_v2_obj.sched_date_push_flag in ('Y','N')) THEN
1243 px_cust_site_use_rec.sched_date_push_flag := p_cust_site_use_v2_obj.sched_date_push_flag;
1244 END IF;
1245 px_cust_site_use_rec.invoice_quantity_rule := p_cust_site_use_v2_obj.invoice_quantity_rule;
1246 px_cust_site_use_rec.pricing_event := p_cust_site_use_v2_obj.pricing_event;
1247 px_cust_site_use_rec.gl_id_rec := p_cust_site_use_v2_obj.gl_id_rec;
1248 px_cust_site_use_rec.gl_id_rev := p_cust_site_use_v2_obj.gl_id_rev;
1249 px_cust_site_use_rec.gl_id_tax := p_cust_site_use_v2_obj.gl_id_tax;
1250 px_cust_site_use_rec.gl_id_freight := p_cust_site_use_v2_obj.gl_id_freight;
1251 px_cust_site_use_rec.gl_id_clearing := p_cust_site_use_v2_obj.gl_id_clearing;
1252 px_cust_site_use_rec.gl_id_unbilled := p_cust_site_use_v2_obj.gl_id_unbilled;
1253 px_cust_site_use_rec.gl_id_unearned := p_cust_site_use_v2_obj.gl_id_unearned;
1254 px_cust_site_use_rec.gl_id_unpaid_rec := p_cust_site_use_v2_obj.gl_id_unpaid_rec;
1255 px_cust_site_use_rec.gl_id_remittance := p_cust_site_use_v2_obj.gl_id_remittance;
1256 px_cust_site_use_rec.gl_id_factor := p_cust_site_use_v2_obj.gl_id_factor;
1257 px_cust_site_use_rec.tax_classification := p_cust_site_use_v2_obj.tax_classification;
1258 px_cust_site_use_rec.orig_system := p_cust_site_use_os;
1259 px_cust_site_use_rec.orig_system_reference := p_cust_site_use_osr;
1260 px_cust_site_use_rec.created_by_module := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
1261 px_cust_site_use_rec.org_id := p_cust_site_use_v2_obj.org_id;
1262 END assign_cust_site_use_v2_rec;
1263
1264 -- PROCEDURE create_cust_site_v2_uses
1265 --
1266 -- DESCRIPTION
1267 -- Create customer account site uses.
1268 --
1269 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1270 --
1271 -- ARGUMENTS
1272 -- IN:
1273 -- p_casu_v2_objs List of customer account site use objects.
1274 -- p_ca_id Customer account Id.
1275 -- p_cas_id Customer account site Id.
1276 -- p_parent_os Parent original system.
1277 -- OUT:
1278 -- x_return_status Return status after the call. The status can
1279 -- be fnd_api.g_ret_sts_success (success),
1280 -- fnd_api.g_ret_sts_error (error),
1281 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
1282 -- x_msg_count Number of messages in message stack.
1283 -- x_msg_data Message text if x_msg_count is 1.
1284 --
1285 -- NOTES
1286 --
1287 -- MODIFICATION HISTORY
1288 --
1289 -- 31-JAN-2008 vsegu Created.
1290
1291 PROCEDURE create_cust_site_v2_uses(
1292 p_casu_v2_objs IN OUT NOCOPY HZ_CUST_SITE_USE_V2_BO_TBL,
1293 p_ca_id IN NUMBER,
1294 p_cas_id IN NUMBER,
1295 p_parent_os IN VARCHAR2,
1296 x_return_status OUT NOCOPY VARCHAR2,
1297 x_msg_count OUT NOCOPY NUMBER,
1298 x_msg_data OUT NOCOPY VARCHAR2
1299 ) IS
1300 l_debug_prefix VARCHAR2(30) := '';
1301 l_casu_id NUMBER;
1302 l_casu_os VARCHAR2(30);
1303 l_casu_osr VARCHAR2(255);
1304 l_casu_rec HZ_CUST_ACCOUNT_SITE_V2PUB.CUST_SITE_USE_REC_TYPE;
1305 l_cap_id NUMBER;
1306 l_cap_os VARCHAR2(30);
1307 l_cap_osr VARCHAR2(255);
1308 l_cap_rec HZ_CUSTOMER_PROFILE_V2PUB.CUSTOMER_PROFILE_REC_TYPE;
1309 l_profile_id NUMBER;
1310 l_party_id NUMBER;
1311
1312 CURSOR get_party_id(l_ca_id NUMBER) IS
1313 SELECT party_id
1314 FROM HZ_CUST_ACCOUNTS
1315 WHERE cust_account_id = l_ca_id;
1316 BEGIN
1317 -- Standard start of API savepoint
1318 SAVEPOINT create_casu_v2_pvt;
1319
1320 -- initialize API return status to success.
1321 x_return_status := FND_API.G_RET_STS_SUCCESS;
1322
1323 -- Debug info.
1324 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1325 hz_utility_v2pub.debug(p_message=>'create_cust_site_v2_uses(+)',
1326 p_prefix=>l_debug_prefix,
1327 p_msg_level=>fnd_log.level_procedure);
1328 END IF;
1329
1330 -- Create cust site use with site use profile
1331 -- HZ_CUST_ACCONT_SITE_V2PUB will create cust site use and then
1332 -- create site use profile
1333 FOR i IN 1..p_casu_v2_objs.COUNT LOOP
1334 -- no need to check parent cust_acct_site_id because this id is
1335 -- passed from BO API, it guarantees the correctness of it
1336 l_casu_id := p_casu_v2_objs(i).site_use_id;
1337 l_casu_os := p_casu_v2_objs(i).orig_system;
1338 l_casu_osr := p_casu_v2_objs(i).orig_system_reference;
1339
1340 -- check if pass in site_use_id and os+osr
1341 hz_registry_validate_bo_pvt.validate_ssm_id(
1342 px_id => l_casu_id,
1343 px_os => l_casu_os,
1344 px_osr => l_casu_osr,
1345 p_org_id => p_casu_v2_objs(i).org_id,
1346 p_obj_type => 'HZ_CUST_SITE_USES_ALL',
1347 p_create_or_update => 'C',
1348 x_return_status => x_return_status,
1349 x_msg_count => x_msg_count,
1350 x_msg_data => x_msg_data);
1351
1352 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1353 RAISE FND_API.G_EXC_ERROR;
1354 END IF;
1355
1356 assign_cust_site_use_v2_rec(
1357 p_cust_site_use_v2_obj => p_casu_v2_objs(i),
1358 p_cust_acct_site_id => p_cas_id,
1359 p_cust_site_use_id => l_casu_id,
1360 p_cust_site_use_os => l_casu_os,
1361 p_cust_site_use_osr => l_casu_osr,
1362 px_cust_site_use_rec => l_casu_rec
1363 );
1364
1365 HZ_CUST_ACCOUNT_SITE_V2PUB.create_cust_site_use (
1366 p_cust_site_use_rec => l_casu_rec,
1367 p_customer_profile_rec => NULL,
1368 p_create_profile => FND_API.G_FALSE,
1369 p_create_profile_amt => FND_API.G_FALSE,
1370 x_site_use_id => l_casu_id,
1371 x_return_status => x_return_status,
1372 x_msg_count => x_msg_count,
1373 x_msg_data => x_msg_data
1374 );
1375
1376 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1377 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1378 hz_utility_v2pub.debug(p_message=>'Error occurred at hz_cust_acct_site_bo_pvt.create_cust_site_v2_uses, acct_site_id: '||p_cas_id||' , cust_acct_site_os: '||l_casu_os||' , cust_acct_site_osr: '||l_casu_osr,
1379 p_prefix=>l_debug_prefix,
1380 p_msg_level=>fnd_log.level_procedure);
1381 END IF;
1382 RAISE FND_API.G_EXC_ERROR;
1383 END IF;
1384
1385 -- assign site_use_id
1386 p_casu_v2_objs(i).site_use_id := l_casu_id;
1387
1388 IF(p_casu_v2_objs(i).site_use_code in ('BILL_TO', 'DUN', 'STMTS') AND
1389 p_casu_v2_objs(i).site_use_profile_obj IS NOT NULL) THEN
1390 -- check if BILL_TO, DUN or STMTS to create with profile
1391 -- no need to pass cust account id since in v2api, the cust account
1392 -- id will be obtained from cust site id
1393 HZ_CUST_ACCT_BO_PVT.create_cust_profile(
1394 p_cp_obj => p_casu_v2_objs(i).site_use_profile_obj,
1395 p_ca_id => p_ca_id,
1396 p_casu_id => l_casu_id,
1397 x_cp_id => l_profile_id,
1398 x_return_status => x_return_status,
1399 x_msg_count => x_msg_count,
1400 x_msg_data => x_msg_data
1401 );
1402
1403 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1404 RAISE FND_API.G_EXC_ERROR;
1405 END IF;
1406
1407 HZ_CUST_ACCT_BO_PVT.create_cust_profile_amts(
1408 p_cpa_objs => p_casu_v2_objs(i).site_use_profile_obj.cust_profile_amt_objs,
1409 p_cp_id => l_profile_id,
1410 p_ca_id => p_ca_id,
1411 p_casu_id => l_casu_id,
1412 x_return_status => x_return_status,
1413 x_msg_count => x_msg_count,
1414 x_msg_data => x_msg_data
1415 );
1416
1417 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1418 RAISE FND_API.G_EXC_ERROR;
1419 END IF;
1420 END IF;
1421
1422 ------------------------
1423 -- Call bank account use
1424 ------------------------
1425 OPEN get_party_id(p_ca_id);
1426 FETCH get_party_id INTO l_party_id;
1427 CLOSE get_party_id;
1428
1429 IF((p_casu_v2_objs(i).bank_acct_use_objs IS NOT NULL) AND
1430 (p_casu_v2_objs(i).bank_acct_use_objs.COUNT > 0)) THEN
1431 HZ_CUST_ACCT_BO_PVT.save_bank_acct_uses(
1432 p_bank_acct_use_objs => p_casu_v2_objs(i).bank_acct_use_objs,
1433 p_party_id => l_party_id,
1434 p_ca_id => p_ca_id,
1435 p_casu_id => l_casu_id,
1436 x_return_status => x_return_status,
1437 x_msg_count => x_msg_count,
1438 x_msg_data => x_msg_data
1439 );
1440
1441 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1442 RAISE FND_API.G_EXC_ERROR;
1443 END IF;
1444 END IF;
1445
1446 ------------------------
1447 -- Call payment method
1448 ------------------------
1449 IF((p_casu_v2_objs(i).payment_method_objs IS NOT NULL) AND
1450 (p_casu_v2_objs(i).payment_method_objs.COUNT > 0)) THEN
1451 HZ_CUST_ACCT_BO_PVT.create_payment_methods(
1452 p_payment_method_objs => p_casu_v2_objs(i).payment_method_objs,
1453 p_ca_id => p_ca_id,
1454 p_casu_id => l_casu_id,
1455 x_return_status => x_return_status,
1456 x_msg_count => x_msg_count,
1457 x_msg_data => x_msg_data
1458 );
1459
1460 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1461 RAISE FND_API.G_EXC_ERROR;
1462 END IF;
1463 END IF;
1464 END LOOP;
1465
1466 -- Debug info.
1467 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1468 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1469 p_msg_data=>x_msg_data,
1470 p_msg_type=>'WARNING',
1471 p_msg_level=>fnd_log.level_exception);
1472 END IF;
1473 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1474 hz_utility_v2pub.debug(p_message=>'create_cust_site_v2_uses(-)',
1475 p_prefix=>l_debug_prefix,
1476 p_msg_level=>fnd_log.level_procedure);
1477 END IF;
1478
1479 EXCEPTION
1480 WHEN fnd_api.g_exc_error THEN
1481 ROLLBACK TO create_casu_v2_pvt;
1482 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_STRUCT_ERROR');
1483 FND_MESSAGE.SET_TOKEN('STRUCTURE', 'CUST_ACCT_SITE_USE');
1484 FND_MSG_PUB.ADD;
1485
1486 x_return_status := fnd_api.g_ret_sts_error;
1487
1488 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1489 p_count => x_msg_count,
1490 p_data => x_msg_data);
1491
1492 -- Debug info.
1493 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1494 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1495 p_msg_data=>x_msg_data,
1496 p_msg_type=>'ERROR',
1497 p_msg_level=>fnd_log.level_error);
1498 END IF;
1499 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1500 hz_utility_v2pub.debug(p_message=>'create_cust_site_v2_uses(-)',
1501 p_prefix=>l_debug_prefix,
1502 p_msg_level=>fnd_log.level_procedure);
1503 END IF;
1504
1505 WHEN fnd_api.g_exc_unexpected_error THEN
1506 ROLLBACK TO create_casu_v2_pvt;
1507 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_STRUCT_ERROR');
1508 FND_MESSAGE.SET_TOKEN('STRUCTURE', 'CUST_ACCT_SITE_USE');
1509 FND_MSG_PUB.ADD;
1510
1511 x_return_status := fnd_api.g_ret_sts_unexp_error;
1512
1513 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1514 p_count => x_msg_count,
1515 p_data => x_msg_data);
1516
1517 -- Debug info.
1518 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1519 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1520 p_msg_data=>x_msg_data,
1521 p_msg_type=>'UNEXPECTED ERROR',
1522 p_msg_level=>fnd_log.level_error);
1523 END IF;
1524 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1525 hz_utility_v2pub.debug(p_message=>'create_cust_site_v2_uses(-)',
1526 p_prefix=>l_debug_prefix,
1527 p_msg_level=>fnd_log.level_procedure);
1528 END IF;
1529
1530 WHEN OTHERS THEN
1531 ROLLBACK TO create_casu_v2_pvt;
1532 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_STRUCT_ERROR');
1533 FND_MESSAGE.SET_TOKEN('STRUCTURE', 'CUST_ACCT_SITE_USE');
1534 FND_MSG_PUB.ADD;
1535
1536 x_return_status := fnd_api.g_ret_sts_unexp_error;
1537
1538 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1539 fnd_message.set_token('ERROR' ,SQLERRM);
1540 fnd_msg_pub.add;
1541
1542 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1543 p_count => x_msg_count,
1544 p_data => x_msg_data);
1545
1546 -- Debug info.
1547 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1548 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1549 p_msg_data=>x_msg_data,
1550 p_msg_type=>'SQL ERROR',
1551 p_msg_level=>fnd_log.level_error);
1552 END IF;
1553 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1554 hz_utility_v2pub.debug(p_message=>'create_cust_site_v2_uses(-)',
1555 p_prefix=>l_debug_prefix,
1556 p_msg_level=>fnd_log.level_procedure);
1557 END IF;
1558 END create_cust_site_v2_uses;
1559
1560 -- PROCEDURE save_cust_site_v2_uses
1561 --
1562 -- DESCRIPTION
1563 -- Create or update customer account site uses.
1564 --
1565 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1566 --
1567 -- ARGUMENTS
1568 -- IN:
1569 -- p_casu_v2_objs List of customer account site use objects.
1570 -- p_ca_id Customer account Id.
1571 -- p_cas_id Customer account site Id.
1572 -- p_parent_os Parent original system.
1573 -- OUT:
1574 -- x_return_status Return status after the call. The status can
1575 -- be fnd_api.g_ret_sts_success (success),
1576 -- fnd_api.g_ret_sts_error (error),
1577 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
1578 -- x_msg_count Number of messages in message stack.
1579 -- x_msg_data Message text if x_msg_count is 1.
1580 --
1581 -- NOTES
1582 --
1583 -- MODIFICATION HISTORY
1584 --
1585 -- 31-JAN-2008 vsegu Created.
1586
1587 PROCEDURE save_cust_site_v2_uses(
1588 p_casu_v2_objs IN OUT NOCOPY HZ_CUST_SITE_USE_V2_BO_TBL,
1589 p_ca_id IN NUMBER,
1590 p_cas_id IN NUMBER,
1591 p_parent_os IN VARCHAR2,
1592 x_return_status OUT NOCOPY VARCHAR2,
1593 x_msg_count OUT NOCOPY NUMBER,
1594 x_msg_data OUT NOCOPY VARCHAR2
1595 )IS
1596 l_debug_prefix VARCHAR2(30) := '';
1597 l_casu_id NUMBER;
1598 l_casu_os VARCHAR2(30);
1599 l_casu_osr VARCHAR2(255);
1600 l_casu_rec HZ_CUST_ACCOUNT_SITE_V2PUB.CUST_SITE_USE_REC_TYPE;
1601 l_cap_rec HZ_CUSTOMER_PROFILE_V2PUB.CUSTOMER_PROFILE_REC_TYPE;
1602 l_ovn NUMBER;
1603 l_cap_ovn NUMBER;
1604 l_create_update_flag VARCHAR2(1);
1605 l_profile_id NUMBER;
1606 l_party_id NUMBER;
1607 l_site_use_code VARCHAR2(30);
1608 l_parent_id NUMBER;
1609 l_parent_obj_type VARCHAR2(30);
1610
1611 CURSOR get_cap_id(l_ca_id NUMBER, l_casu_id NUMBER, l_profile_class_id NUMBER) IS
1612 SELECT cust_account_profile_id
1613 FROM HZ_CUSTOMER_PROFILES
1614 WHERE cust_account_id = l_ca_id
1615 AND site_use_id = l_casu_id
1616 AND profile_class_id = l_profile_class_id
1617 AND status IN ('A','I');
1618
1619 CURSOR get_ovn(l_casu_id NUMBER) IS
1620 SELECT site_use_code, object_version_number
1621 FROM HZ_CUST_SITE_USES
1622 WHERE site_use_id = l_casu_id
1623 AND status in ('A','I');
1624
1625 CURSOR get_party_id(l_ca_id NUMBER) IS
1626 SELECT party_id
1627 FROM HZ_CUST_ACCOUNTS
1628 WHERE cust_account_id = l_ca_id;
1629 BEGIN
1630 -- Standard start of API savepoint
1631 SAVEPOINT save_casu_v2_pvt;
1632
1633 -- initialize API return status to success.
1634 x_return_status := FND_API.G_RET_STS_SUCCESS;
1635
1636 -- Debug info.
1637 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1638 hz_utility_v2pub.debug(p_message=>'save_cust_site_v2_uses(+)',
1639 p_prefix=>l_debug_prefix,
1640 p_msg_level=>fnd_log.level_procedure);
1641 END IF;
1642
1643 -- Create/Update cust site uses
1644 FOR i IN 1..p_casu_v2_objs.COUNT LOOP
1645 l_casu_id := p_casu_v2_objs(i).site_use_id;
1646 l_casu_os := p_casu_v2_objs(i).orig_system;
1647 l_casu_osr := p_casu_v2_objs(i).orig_system_reference;
1648
1649 IF(p_cas_id IS NOT NULL) THEN
1650 l_parent_id := p_cas_id;
1651 l_parent_obj_type := 'CUST_ACCT_SITE';
1652 ELSE
1653 l_parent_id := p_ca_id;
1654 l_parent_obj_type := 'CUST_ACCT';
1655 END IF;
1656
1657 -- check root business object to determine that it should be
1658 -- create or update, call HZ_REGISTRY_VALIDATE_BO_PVT
1659 l_create_update_flag := HZ_REGISTRY_VALIDATE_BO_PVT.check_bo_op(
1660 p_entity_id => l_casu_id,
1661 p_entity_os => l_casu_os,
1662 p_entity_osr => l_casu_osr,
1663 p_entity_type => 'HZ_CUST_SITE_USES_ALL',
1664 p_parent_id => l_parent_id,
1665 p_parent_obj_type=> l_parent_obj_type
1666 );
1667
1668 IF(l_create_update_flag = 'E') THEN
1669 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_STRUCT_ERROR');
1670 FND_MESSAGE.SET_TOKEN('STRUCTURE', 'CUST_ACCT_SITE_USE');
1671 FND_MSG_PUB.ADD;
1672 RAISE FND_API.G_EXC_ERROR;
1673 END IF;
1674
1675 -- check if the cust site use record is create or update
1676 -- since cust site use has os+osr, use os+osr to check if record exist or not
1677 IF(l_create_update_flag = 'C') THEN
1678 assign_cust_site_use_v2_rec(
1679 p_cust_site_use_v2_obj => p_casu_v2_objs(i),
1680 p_cust_acct_site_id => p_cas_id,
1681 p_cust_site_use_id => l_casu_id,
1682 p_cust_site_use_os => l_casu_os,
1683 p_cust_site_use_osr => l_casu_osr,
1684 px_cust_site_use_rec => l_casu_rec
1685 );
1686
1687 HZ_CUST_ACCOUNT_SITE_V2PUB.create_cust_site_use (
1688 p_cust_site_use_rec => l_casu_rec,
1689 p_customer_profile_rec => NULL,
1690 p_create_profile => FND_API.G_FALSE,
1691 p_create_profile_amt => FND_API.G_FALSE,
1692 x_site_use_id => l_casu_id,
1693 x_return_status => x_return_status,
1694 x_msg_count => x_msg_count,
1695 x_msg_data => x_msg_data
1696 );
1697
1698 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1699 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1700 hz_utility_v2pub.debug(p_message=>'Error occurred at hz_cust_acct_site_bo_pvt.save_cust_site_v2_uses, acct_site_id: '||p_cas_id||' , cust_acct_site_os: '||l_casu_os||' , cust_acct_site_osr: '||l_casu_osr,
1701 p_prefix=>l_debug_prefix,
1702 p_msg_level=>fnd_log.level_procedure);
1703 END IF;
1704 RAISE fnd_api.g_exc_error;
1705 END IF;
1706
1707 -- assign site_use_id
1708 p_casu_v2_objs(i).site_use_id := l_casu_id;
1709
1710 IF(p_casu_v2_objs(i).site_use_code in ('BILL_TO', 'DUN', 'STMTS') AND
1711 p_casu_v2_objs(i).site_use_profile_obj IS NOT NULL) THEN
1712 -- check if BILL_TO, DUN and STMTS to create with profile
1713 HZ_CUST_ACCT_BO_PVT.create_cust_profile(
1714 p_cp_obj => p_casu_v2_objs(i).site_use_profile_obj,
1715 p_ca_id => p_ca_id,
1716 p_casu_id => l_casu_id,
1717 x_cp_id => l_profile_id,
1718 x_return_status => x_return_status,
1719 x_msg_count => x_msg_count,
1720 x_msg_data => x_msg_data
1721 );
1722
1723 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1724 RAISE FND_API.G_EXC_ERROR;
1725 END IF;
1726
1727 HZ_CUST_ACCT_BO_PVT.create_cust_profile_amts(
1728 p_cpa_objs => p_casu_v2_objs(i).site_use_profile_obj.cust_profile_amt_objs,
1729 p_cp_id => l_profile_id,
1730 p_ca_id => p_ca_id,
1731 p_casu_id => l_casu_id,
1732 x_return_status => x_return_status,
1733 x_msg_count => x_msg_count,
1734 x_msg_data => x_msg_data
1735 );
1736
1737 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1738 RAISE FND_API.G_EXC_ERROR;
1739 END IF;
1740
1741 END IF;
1742
1743 ELSE
1744 hz_registry_validate_bo_pvt.validate_ssm_id(
1745 px_id => l_casu_id,
1746 px_os => l_casu_os,
1747 px_osr => l_casu_osr,
1748 p_org_id => p_casu_v2_objs(i).org_id,
1749 p_obj_type => 'HZ_CUST_SITE_USES_ALL',
1750 p_create_or_update => 'U',
1751 x_return_status => x_return_status,
1752 x_msg_count => x_msg_count,
1753 x_msg_data => x_msg_data
1754 );
1755
1756 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1757 RAISE FND_API.G_EXC_ERROR;
1758 END IF;
1759
1760 OPEN get_ovn(l_casu_id);
1761 FETCH get_ovn INTO l_site_use_code, l_ovn;
1762 CLOSE get_ovn;
1763
1764 assign_cust_site_use_v2_rec(
1765 p_cust_site_use_v2_obj => p_casu_v2_objs(i),
1766 p_cust_acct_site_id => p_cas_id,
1767 p_cust_site_use_id => l_casu_id,
1768 p_cust_site_use_os => l_casu_os,
1769 p_cust_site_use_osr => l_casu_osr,
1770 px_cust_site_use_rec => l_casu_rec
1771 );
1772
1773 -- clean up created_by_module, os and osr for update
1774 l_casu_rec.created_by_module := NULL;
1775 l_casu_rec.orig_system := NULL;
1776 l_casu_rec.orig_system_reference := NULL;
1777 HZ_CUST_ACCOUNT_SITE_V2PUB.update_cust_site_use (
1778 p_cust_site_use_rec => l_casu_rec,
1779 p_object_version_number => l_ovn,
1780 x_return_status => x_return_status,
1781 x_msg_count => x_msg_count,
1782 x_msg_data => x_msg_data
1783 );
1784
1785 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1786 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1787 hz_utility_v2pub.debug(p_message=>'Error occurred at hz_cust_acct_site_bo_pvt.save_cust_site_v2_uses, acct_site_id: '||p_cas_id||' , cust_acct_site_os: '||l_casu_os||' , cust_acct_site_osr: '||l_casu_osr,
1788 p_prefix=>l_debug_prefix,
1789 p_msg_level=>fnd_log.level_procedure);
1790 END IF;
1791 RAISE fnd_api.g_exc_error;
1792 END IF;
1793
1794 -- assign site_use_id
1795 p_casu_v2_objs(i).site_use_id := l_casu_id;
1796
1797 IF(l_site_use_code in ('BILL_TO', 'DUN', 'STMTS') AND
1798 p_casu_v2_objs(i).site_use_profile_obj IS NOT NULL) THEN
1799 -- need to update customer profile
1800 HZ_CUST_ACCT_BO_PVT.update_cust_profile(
1801 p_cp_obj => p_casu_v2_objs(i).site_use_profile_obj,
1802 p_ca_id => p_ca_id,
1803 p_casu_id => l_casu_id,
1804 x_cp_id => l_profile_id,
1805 x_return_status => x_return_status,
1806 x_msg_count => x_msg_count,
1807 x_msg_data => x_msg_data
1808 );
1809
1810 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1811 RAISE FND_API.G_EXC_ERROR;
1812 END IF;
1813
1814 HZ_CUST_ACCT_BO_PVT.save_cust_profile_amts(
1815 p_cpa_objs => p_casu_v2_objs(i).site_use_profile_obj.cust_profile_amt_objs,
1816 p_cp_id => l_profile_id,
1817 p_ca_id => p_ca_id,
1818 p_casu_id => l_casu_id,
1819 x_return_status => x_return_status,
1820 x_msg_count => x_msg_count,
1821 x_msg_data => x_msg_data
1822 );
1823 END IF;
1824 END IF;
1825
1826 ------------------------
1827 -- Call bank account use
1828 ------------------------
1829 OPEN get_party_id(p_ca_id);
1830 FETCH get_party_id INTO l_party_id;
1831 CLOSE get_party_id;
1832
1833 IF((p_casu_v2_objs(i).bank_acct_use_objs IS NOT NULL) AND
1834 (p_casu_v2_objs(i).bank_acct_use_objs.COUNT > 0)) THEN
1835 HZ_CUST_ACCT_BO_PVT.save_bank_acct_uses(
1836 p_bank_acct_use_objs => p_casu_v2_objs(i).bank_acct_use_objs,
1837 p_party_id => l_party_id,
1838 p_ca_id => p_ca_id,
1839 p_casu_id => l_casu_id,
1840 x_return_status => x_return_status,
1841 x_msg_count => x_msg_count,
1842 x_msg_data => x_msg_data
1843 );
1844
1845 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1846 RAISE FND_API.G_EXC_ERROR;
1847 END IF;
1848 END IF;
1849
1850 ------------------------
1851 -- Call payment method
1852 ------------------------
1853 IF((p_casu_v2_objs(i).payment_method_objs IS NOT NULL) AND
1854 (p_casu_v2_objs(i).payment_method_objs.COUNT > 0 )) THEN
1855 HZ_CUST_ACCT_BO_PVT.save_payment_methods(
1856 p_payment_method_objs => p_casu_v2_objs(i).payment_method_objs,
1857 p_ca_id => p_ca_id,
1858 p_casu_id => l_casu_id,
1859 x_return_status => x_return_status,
1860 x_msg_count => x_msg_count,
1861 x_msg_data => x_msg_data
1862 );
1863
1864 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1865 RAISE FND_API.G_EXC_ERROR;
1866 END IF;
1867 END IF;
1868
1869 END LOOP;
1870
1871 -- Debug info.
1872 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1873 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1874 p_msg_data=>x_msg_data,
1875 p_msg_type=>'WARNING',
1876 p_msg_level=>fnd_log.level_exception);
1877 END IF;
1878 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1879 hz_utility_v2pub.debug(p_message=>'save_cust_site_v2_uses(-)',
1880 p_prefix=>l_debug_prefix,
1881 p_msg_level=>fnd_log.level_procedure);
1882 END IF;
1883 EXCEPTION
1884 WHEN fnd_api.g_exc_error THEN
1885 ROLLBACK TO save_casu_v2_pvt;
1886 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_STRUCT_ERROR');
1887 FND_MESSAGE.SET_TOKEN('STRUCTURE', 'CUST_ACCT_SITE_USE');
1888 FND_MSG_PUB.ADD;
1889
1890 x_return_status := fnd_api.g_ret_sts_error;
1891
1892 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1893 p_count => x_msg_count,
1894 p_data => x_msg_data);
1895
1896 -- Debug info.
1897 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1898 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1899 p_msg_data=>x_msg_data,
1900 p_msg_type=>'ERROR',
1901 p_msg_level=>fnd_log.level_error);
1902 END IF;
1903 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1904 hz_utility_v2pub.debug(p_message=>'save_cust_site_v2_uses(-)',
1905 p_prefix=>l_debug_prefix,
1906 p_msg_level=>fnd_log.level_procedure);
1907 END IF;
1908
1909 WHEN fnd_api.g_exc_unexpected_error THEN
1910 ROLLBACK TO save_casu_v2_pvt;
1911 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_STRUCT_ERROR');
1912 FND_MESSAGE.SET_TOKEN('STRUCTURE', 'CUST_ACCT_SITE_USE');
1913 FND_MSG_PUB.ADD;
1914
1915 x_return_status := fnd_api.g_ret_sts_unexp_error;
1916
1917 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1918 p_count => x_msg_count,
1919 p_data => x_msg_data);
1920
1921 -- Debug info.
1922 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1923 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1924 p_msg_data=>x_msg_data,
1925 p_msg_type=>'UNEXPECTED ERROR',
1926 p_msg_level=>fnd_log.level_error);
1927 END IF;
1928 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1929 hz_utility_v2pub.debug(p_message=>'save_cust_site_v2_uses(-)',
1930 p_prefix=>l_debug_prefix,
1931 p_msg_level=>fnd_log.level_procedure);
1932 END IF;
1933
1934 WHEN OTHERS THEN
1935 ROLLBACK TO save_casu_v2_pvt;
1936 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_STRUCT_ERROR');
1937 FND_MESSAGE.SET_TOKEN('STRUCTURE', 'CUST_ACCT_SITE_USE');
1938 FND_MSG_PUB.ADD;
1939
1940 x_return_status := fnd_api.g_ret_sts_unexp_error;
1941
1942 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1943 fnd_message.set_token('ERROR' ,SQLERRM);
1944 fnd_msg_pub.add;
1945
1946 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1947 p_count => x_msg_count,
1948 p_data => x_msg_data);
1949
1950 -- Debug info.
1951 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1952 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1953 p_msg_data=>x_msg_data,
1954 p_msg_type=>'SQL ERROR',
1955 p_msg_level=>fnd_log.level_error);
1956 END IF;
1957 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1958 hz_utility_v2pub.debug(p_message=>'save_cust_site_v2_uses(-)',
1959 p_prefix=>l_debug_prefix,
1960 p_msg_level=>fnd_log.level_procedure);
1961 END IF;
1962 END save_cust_site_v2_uses;
1963
1964 -- PROCEDURE save_cust_acct_v2_sites
1965 --
1966 -- DESCRIPTION
1967 -- Create or update customer account sites.
1968 PROCEDURE save_cust_acct_v2_sites(
1969 p_cas_v2_objs IN OUT NOCOPY HZ_CUST_ACCT_SITE_V2_BO_TBL,
1970 p_create_update_flag IN VARCHAR2,
1971 p_obj_source IN VARCHAR2 := null,
1972 x_return_status OUT NOCOPY VARCHAR2,
1973 x_msg_count OUT NOCOPY NUMBER,
1974 x_msg_data OUT NOCOPY VARCHAR2,
1975 p_parent_acct_id IN NUMBER,
1976 p_parent_acct_os IN VARCHAR2,
1977 p_parent_acct_osr IN VARCHAR2
1978 ) IS
1979 l_debug_prefix VARCHAR2(30) := '';
1980 l_cas_id NUMBER;
1981 l_cas_os VARCHAR2(30);
1982 l_cas_osr VARCHAR2(255);
1983 l_parent_acct_id NUMBER;
1984 l_parent_acct_os VARCHAR2(30);
1985 l_parent_acct_osr VARCHAR2(255);
1986 l_cbm VARCHAR2(30);
1987 BEGIN
1988 -- initialize API return status to success
1989 x_return_status := FND_API.G_RET_STS_SUCCESS;
1990
1991 -- Debug info.
1992 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1993 hz_utility_v2pub.debug(p_message=>'save_cust_acct_v2_sites(+)',
1994 p_prefix=>l_debug_prefix,
1995 p_msg_level=>fnd_log.level_procedure);
1996 END IF;
1997
1998 l_parent_acct_id := p_parent_acct_id;
1999 l_parent_acct_os := p_parent_acct_os;
2000 l_parent_acct_osr := p_parent_acct_osr;
2001
2002 l_cbm := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
2003
2004 IF(p_create_update_flag = 'C') THEN
2005 -- Create cust account sites
2006 FOR i IN 1..p_cas_v2_objs.COUNT LOOP
2007 HZ_CUST_ACCT_SITE_BO_PUB.do_create_cust_acct_site_v2_bo(
2008 p_init_msg_list => fnd_api.g_false,
2009 p_validate_bo_flag => fnd_api.g_false,
2010 p_cust_acct_site_v2_obj => p_cas_v2_objs(i),
2011 p_created_by_module => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
2012 p_obj_source => p_obj_source,
2013 x_return_status => x_return_status,
2014 x_msg_count => x_msg_count,
2015 x_msg_data => x_msg_data,
2016 x_cust_acct_site_id => l_cas_id,
2017 x_cust_acct_site_os => l_cas_os,
2018 x_cust_acct_site_osr => l_cas_osr,
2019 px_parent_acct_id => l_parent_acct_id,
2020 px_parent_acct_os => l_parent_acct_os,
2021 px_parent_acct_osr => l_parent_acct_osr
2022 );
2023
2024 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2025 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2026 hz_utility_v2pub.debug(p_message=>'Error occurred at hz_cust_acct_site_bo_pvt.save_cust_acct_v2_sites, parent id: '||l_parent_acct_id||' '||l_parent_acct_os||'-'||l_parent_acct_osr,
2027 p_prefix=>l_debug_prefix,
2028 p_msg_level=>fnd_log.level_procedure);
2029 END IF;
2030 RAISE fnd_api.g_exc_error;
2031 END IF;
2032
2033 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
2034 END LOOP;
2035 ELSE
2036 -- Create/update cust account site
2037 FOR i IN 1..p_cas_v2_objs.COUNT LOOP
2038 HZ_CUST_ACCT_SITE_BO_PUB.do_save_cust_acct_site_v2_bo(
2039 p_init_msg_list => fnd_api.g_false,
2040 p_validate_bo_flag => fnd_api.g_false,
2041 p_cust_acct_site_v2_obj => p_cas_v2_objs(i),
2042 p_created_by_module => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
2043 p_obj_source => p_obj_source,
2044 x_return_status => x_return_status,
2045 x_msg_count => x_msg_count,
2046 x_msg_data => x_msg_data,
2047 x_cust_acct_site_id => l_cas_id,
2048 x_cust_acct_site_os => l_cas_os,
2049 x_cust_acct_site_osr => l_cas_osr,
2050 px_parent_acct_id => l_parent_acct_id,
2051 px_parent_acct_os => l_parent_acct_os,
2052 px_parent_acct_osr => l_parent_acct_osr
2053 );
2054
2055 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2056 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2057 hz_utility_v2pub.debug(p_message=>'Error occurred at hz_cust_acct_site_bo_pvt.save_cust_acct_v2_sites, parent id: '||l_parent_acct_id||' '||l_parent_acct_os||'-'||l_parent_acct_osr,
2058 p_prefix=>l_debug_prefix,
2059 p_msg_level=>fnd_log.level_procedure);
2060 END IF;
2061 RAISE fnd_api.g_exc_error;
2062 END IF;
2063
2064 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
2065 END LOOP;
2066 END IF;
2067
2068 -- Debug info.
2069 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
2070 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2071 p_msg_data=>x_msg_data,
2072 p_msg_type=>'WARNING',
2073 p_msg_level=>fnd_log.level_exception);
2074 END IF;
2075 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2076 hz_utility_v2pub.debug(p_message=>'save_cust_acct_v2_sites(-)',
2077 p_prefix=>l_debug_prefix,
2078 p_msg_level=>fnd_log.level_procedure);
2079 END IF;
2080 EXCEPTION
2081 WHEN fnd_api.g_exc_error THEN
2082 x_return_status := fnd_api.g_ret_sts_error;
2083
2084 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2085 p_count => x_msg_count,
2086 p_data => x_msg_data);
2087
2088 -- Debug info.
2089 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2090 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2091 p_msg_data=>x_msg_data,
2092 p_msg_type=>'ERROR',
2093 p_msg_level=>fnd_log.level_error);
2094 END IF;
2095 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2096 hz_utility_v2pub.debug(p_message=>'save_cust_acct_v2_sites(-)',
2097 p_prefix=>l_debug_prefix,
2098 p_msg_level=>fnd_log.level_procedure);
2099 END IF;
2100 WHEN fnd_api.g_exc_unexpected_error THEN
2101 x_return_status := fnd_api.g_ret_sts_unexp_error;
2102
2103 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2104 p_count => x_msg_count,
2105 p_data => x_msg_data);
2106
2107 -- Debug info.
2108 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2109 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2110 p_msg_data=>x_msg_data,
2111 p_msg_type=>'UNEXPECTED ERROR',
2112 p_msg_level=>fnd_log.level_error);
2113 END IF;
2114 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2115 hz_utility_v2pub.debug(p_message=>'save_cust_acct_v2_sites(-)',
2116 p_prefix=>l_debug_prefix,
2117 p_msg_level=>fnd_log.level_procedure);
2118 END IF;
2119 WHEN OTHERS THEN
2120 x_return_status := fnd_api.g_ret_sts_unexp_error;
2121
2122 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
2123 fnd_message.set_token('ERROR' ,SQLERRM);
2124 fnd_msg_pub.add;
2125
2126 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2127 p_count => x_msg_count,
2128 p_data => x_msg_data);
2129
2130 -- Debug info.
2131 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2132 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2133 p_msg_data=>x_msg_data,
2134 p_msg_type=>'SQL ERROR',
2135 p_msg_level=>fnd_log.level_error);
2136 END IF;
2137 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2138 hz_utility_v2pub.debug(p_message=>'save_cust_acct_v2_sites(-)',
2139 p_prefix=>l_debug_prefix,
2140 p_msg_level=>fnd_log.level_procedure);
2141 END IF;
2142 END save_cust_acct_v2_sites;
2143
2144 END hz_cust_acct_site_bo_pvt;