[Home] [Help]
PACKAGE BODY: APPS.CSD_REPAIR_ACTUAL_LINES_PVT
Source
1 PACKAGE BODY CSD_REPAIR_ACTUAL_LINES_PVT as
2 /* $Header: csdvalnb.pls 120.6 2008/05/20 22:44:19 swai ship $ */
3
4
5 --G_PKG_NAME CONSTANT VARCHAR2(30):= 'CSD_REPAIR_ACTUAL_LINES_PVT';
6 G_FILE_NAME CONSTANT VARCHAR2(12) := 'csdvclnb.pls';
7
8 -- Global variable for storing the debug level
9 G_debug_level number := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
10
11 /*--------------------------------------------------------------------*/
12 /* procedure name: CREATE_REPAIR_ACTUAL_LINES */
13 /* description : procedure used to Create Repair Actuals */
14 /* */
15 /* */
16 /* */
17 /* Called from : Depot Repair Actuals UI */
18 /* Input Parm : */
19 /* p_api_version NUMBER Req Api Version number */
20 /* p_init_msg_list VARCHAR2 Opt Initialize message stack */
21 /* p_commit VARCHAR2 Opt Commits in API */
22 /* p_validation_level NUMBER Opt validation steps */
23 /* px_CSD_ACTUAL_LINES_REC REC Req Actuals lines Record */
24 /* px_Charges_Rec REC Req Charges line Record */
25 /* Output Parm : */
26 /* x_return_status VARCHAR2 Return status after the call. */
27 /* x_msg_count NUMBER Number of messages in stack */
28 /* x_msg_data VARCHAR2 Mesg. text if x_msg_count >= 1 */
29 /* Change Hist : */
30 /* 08/11/03 travikan Initial Creation. */
31 /* */
32 /* */
33 /* */
34 /*--------------------------------------------------------------------*/
35 PROCEDURE CREATE_REPAIR_ACTUAL_LINES(
36 P_Api_Version IN NUMBER,
37 P_Commit IN VARCHAR2,
38 P_Init_Msg_List IN VARCHAR2,
39 p_validation_level IN NUMBER,
40 px_CSD_ACTUAL_LINES_REC IN OUT NOCOPY CSD_ACTUAL_LINES_REC_TYPE,
41 px_CHARGES_REC IN OUT NOCOPY CS_CHARGE_DETAILS_PUB.CHARGES_REC_TYPE,
42 X_Return_Status OUT NOCOPY VARCHAR2,
43 X_Msg_Count OUT NOCOPY NUMBER,
44 X_Msg_Data OUT NOCOPY VARCHAR2
45 )
46
47 IS
48 -- Variables used in FND Log
49 l_stat_level number := FND_LOG.LEVEL_STATEMENT;
50 l_proc_level number := FND_LOG.LEVEL_PROCEDURE;
51 l_event_level number := FND_LOG.LEVEL_EVENT;
52 l_excep_level number := FND_LOG.LEVEL_EXCEPTION;
53 l_error_level number := FND_LOG.LEVEL_ERROR;
54 l_unexp_level number := FND_LOG.LEVEL_UNEXPECTED;
55 l_mod_name varchar2(2000) := 'csd.plsql.csd_repair_actual_lines_pvt.create_repair_actual_lines';
56
57 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_REPAIR_ACTUAL_LINES';
58 l_api_version CONSTANT NUMBER := 1.0;
59 l_msg_count NUMBER;
60 l_msg_data VARCHAR2(100);
61 l_msg_index NUMBER;
62
63 l_api_return_status VARCHAR2(3);
64 l_act_count NUMBER;
65 lx_csd_actuals_rec CSD_REPAIR_ACTUALS_PVT.CSD_REPAIR_ACTUALS_REC_TYPE;
66 lx_charges_rec CS_CHARGE_DETAILS_PUB.CHARGES_REC_TYPE;
67
68 x_actual_header_id NUMBER := NULL;
69
70 l_serial_flag BOOLEAN := FALSE;
71 l_dummy VARCHAR2(1);
72
73 x_estimate_detail_id NUMBER := NULL;
74 l_act_hdr NUMBER := NULL;
75 l_reference_number VARCHAR2(30) := '';
76 l_contract_number VARCHAR2(30) := '';
77 l_bus_process_id NUMBER := NULL;
78 l_repair_type_ref VARCHAR2(3) := '';
79 l_line_type_id NUMBER := NULL;
80 l_txn_billing_type_id NUMBER := NULL;
81 l_party_id NUMBER := NULL;
82 l_account_id NUMBER := NULL;
83 l_order_header_id NUMBER := NULL;
84 l_release_status VARCHAR2(10) := '';
85 l_curr_code VARCHAR2(10) := '';
86 l_line_category_code VARCHAR2(30) := '';
87 l_ship_from_org_id NUMBER := NULL;
88 l_order_line_id NUMBER := NULL;
89 l_unit_selling_price NUMBER := NULL;
90 l_item_cost NUMBER := NULL;
91
92 -- swai: 12.1 service costing uptake bug 6960295
93 l_cs_cost_flag VARCHAR2(1) := 'Y';
94
95 -- passing in from form
96 -- l_coverage_id NUMBER := NULL;
97 -- l_coverage_name VARCHAR2(30) := '';
98 -- l_txn_group_id NUMBER := NULL;
99 --
100
101 CURSOR order_rec(p_incident_id IN NUMBER) IS
102 SELECT customer_id,
103 account_id
104 FROM cs_incidents_all_b
105 WHERE incident_id = p_incident_id;
106
107 BEGIN
108
109 -- Standard Start of API savepoint
110 SAVEPOINT CREATE_REPAIR_ACTUAL_LINES;
111
112 -- Standard call to check for call compatibility.
113 IF NOT FND_API.Compatible_API_Call ( l_api_version,
114 p_api_version,
115 l_api_name,
116 G_PKG_NAME)
117 THEN
118 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
119 END IF;
120
121 -- Initialize message list if p_init_msg_list is set to TRUE.
122 IF FND_API.to_Boolean( p_init_msg_list ) THEN
123 FND_MSG_PUB.initialize;
124 END IF;
125
126 -- Initialize API return status to success
127 x_return_status := FND_API.G_RET_STS_SUCCESS;
128
129 -- Api body starts
130 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
131 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'At the Beginning of create_repair_actual_lines');
132 END IF;
133
134 -- Dump the in parameters in the log file
135 -- if the debug level > 5
136 -- If fnd_profile.value('CSD_DEBUG_LEVEL') > 5 then
137 -- if (g_debug > 5) then
138 -- csd_gen_utility_pvt.dump_actual_lines_rec
139 -- ( p_CSD_ACTUAL_LINES_REC => px_CSD_ACTUAL_LINES_REC);
140 -- end if;
141
142 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
143 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Begin Check reqd parameter Repair Line ID : '||px_CSD_ACTUAL_LINES_REC.repair_line_id);
144 END IF;
145
146 -- Check the required parameter
147 CSD_PROCESS_UTIL.Check_Reqd_Param
148 ( p_param_value => px_CSD_ACTUAL_LINES_REC.repair_line_id,
149 p_param_name => 'REPAIR_LINE_ID',
150 p_api_name => l_api_name);
151
152 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
153 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'End Check reqd parameter');
154 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Begin Validate Repair Line id');
155 END IF;
156
157 -- Validate the repair line ID
158 IF NOT( CSD_PROCESS_UTIL.Validate_rep_line_id
159 ( p_repair_line_id => px_CSD_ACTUAL_LINES_REC.repair_line_id )) THEN
160 RAISE FND_API.G_EXC_ERROR;
161 END IF;
162
163 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
164 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'End Validate Repair Line id');
165 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Check if there is only one Actual Header per Repair Order');
166 END IF;
167
168 -- Begin check Actuals Header is null
169 IF (px_CSD_ACTUAL_LINES_REC.repair_actual_id is null) then
170
171 Begin
172 -- initialize
173 l_act_count := -1;
174
175 select count(*)
176 into l_act_count
177 from csd_repair_actuals
178 where repair_line_id = px_CSD_ACTUAL_LINES_REC.repair_line_id;
179 Exception
180 when others then
181 IF ( Fnd_Log.Level_Exception >= G_debug_level) THEN
182 FND_LOG.STRING(Fnd_Log.Level_Exception,l_mod_name,'Others exception error :'||SubStr('Error '||TO_CHAR(SQLCODE)||': '||SQLERRM, 1,255));
183 END IF;
184
185 End;
186
187 -- Begin check Actuals Header call
188 IF l_act_count = 0 then
189 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
190 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Actuals do not exists for the repair line Id: '||px_CSD_ACTUAL_LINES_REC.repair_line_id);
191 END IF;
192
193 -- Create Actual Header
194 -- Assign values to actuals header record
195 lx_csd_actuals_rec.REPAIR_ACTUAL_ID := NULL;
196 lx_csd_actuals_rec.OBJECT_VERSION_NUMBER := NULL;
197 lx_csd_actuals_rec.REPAIR_LINE_ID := px_CSD_ACTUAL_LINES_REC.repair_line_id;
198 lx_csd_actuals_rec.CREATED_BY := NULL;
199 lx_csd_actuals_rec.CREATION_DATE := NULL;
200 lx_csd_actuals_rec.LAST_UPDATED_BY := NULL;
201 lx_csd_actuals_rec.LAST_UPDATE_DATE := NULL;
202 lx_csd_actuals_rec.LAST_UPDATE_LOGIN := NULL;
203 lx_csd_actuals_rec.ATTRIBUTE_CATEGORY := NULL;
204 lx_csd_actuals_rec.ATTRIBUTE1 := NULL;
205 lx_csd_actuals_rec.ATTRIBUTE2 := NULL;
206 lx_csd_actuals_rec.ATTRIBUTE3 := NULL;
207 lx_csd_actuals_rec.ATTRIBUTE4 := NULL;
208 lx_csd_actuals_rec.ATTRIBUTE5 := NULL;
209 lx_csd_actuals_rec.ATTRIBUTE6 := NULL;
210 lx_csd_actuals_rec.ATTRIBUTE7 := NULL;
211 lx_csd_actuals_rec.ATTRIBUTE8 := NULL;
212 lx_csd_actuals_rec.ATTRIBUTE9 := NULL;
213 lx_csd_actuals_rec.ATTRIBUTE10 := NULL;
214 lx_csd_actuals_rec.ATTRIBUTE11 := NULL;
215 lx_csd_actuals_rec.ATTRIBUTE12 := NULL;
216 lx_csd_actuals_rec.ATTRIBUTE13 := NULL;
217 lx_csd_actuals_rec.ATTRIBUTE14 := NULL;
218 lx_csd_actuals_rec.ATTRIBUTE15 := NULL;
219 lx_csd_actuals_rec.BILL_TO_ACCOUNT_ID := NULL;
220 lx_csd_actuals_rec.BILL_TO_PARTY_ID := NULL;
221 lx_csd_actuals_rec.BILL_TO_PARTY_SITE_ID := NULL;
222
223
224 IF ( Fnd_Log.Level_Procedure >= G_debug_level) THEN
225 FND_LOG.STRING(Fnd_Log.Level_Procedure,l_mod_name,'Calling csd_repair_actuals_pvt.create_repair_actuals');
226 END IF;
227
228 -- call API to create Repair Actuals header
229 csd_repair_actuals_pvt.create_repair_actuals
230 ( P_Api_Version => 1.0,
231 P_Commit => 'F',
232 P_Init_Msg_List => 'T',
233 p_validation_level => 10,
234 px_CSD_REPAIR_ACTUALS_REC => lx_csd_actuals_rec,
235 X_Return_Status => x_return_status,
236 X_Msg_Count => x_msg_count,
237 X_Msg_Data => x_msg_data);
238
239 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
240 IF ( Fnd_Log.Level_Procedure >= G_debug_level) THEN
241 FND_LOG.STRING(Fnd_Log.Level_Procedure,l_mod_name,'csd_repair_actuals_pvt.create_repair_actuals failed');
242 END IF;
243 RAISE FND_API.G_EXC_ERROR;
244 END IF;
245
246 -- assign the created actuals header to actual lines record
247 px_CSD_ACTUAL_LINES_REC.repair_actual_id := lx_csd_actuals_rec.REPAIR_ACTUAL_ID;
248
249 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
250 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Actuals do not exists for the repair line Id: '||lx_csd_actuals_rec.REPAIR_ACTUAL_ID);
251 END IF;
252
253 ELSIF (l_act_count = 1) then
254 -- special cases
255 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
256 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Actual Header was not passed in. Retrieving it..');
257 END IF;
258 Begin
259 -- initialize
260 l_act_hdr := -1;
261
262 select repair_actual_id
263 into l_act_hdr
264 from csd_repair_actuals
265 where repair_line_id = px_CSD_ACTUAL_LINES_REC.repair_line_id;
266 Exception
267 when others then
268 IF ( Fnd_Log.Level_Exception >= G_debug_level) THEN
269 FND_LOG.STRING(Fnd_Log.Level_Exception,l_mod_name,'Others exception error :'||SubStr('Error '||TO_CHAR(SQLCODE)||': '||SQLERRM, 1,255));
270 END IF;
271 End;
272
273 -- assign the repair actual header id
274 px_CSD_ACTUAL_LINES_REC.REPAIR_ACTUAL_ID := l_act_hdr;
275
276 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
277 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Actuals header: '||l_act_hdr||'already exists for the repair line Id: '||px_CSD_ACTUAL_LINES_REC.repair_line_id);
278 END IF;
279
280 ELSIF l_act_count > 1 then
281 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
282 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Multiple Actuals exists for the repair line Id: '||px_CSD_ACTUAL_LINES_REC.repair_line_id);
283 END IF;
284
285 FND_MESSAGE.SET_NAME('CSD','CSD_API_ACTUALS_EXISTS');
286 FND_MESSAGE.SET_TOKEN('REPAIR_LINE_ID',px_CSD_ACTUAL_LINES_REC.repair_line_id);
287 FND_MSG_PUB.ADD;
288 IF (Fnd_Log.Level_Error >= Fnd_Log.G_Current_Runtime_Level) THEN
289 FND_LOG.MESSAGE(Fnd_Log.Level_Error,l_mod_name, FALSE);
290 END IF;
291 RAISE FND_API.G_EXC_ERROR;
292 End IF;
293 -- End check Actuals Header call
294
295 END IF;
296 -- End check Actuals Header is null
297
298 -- Assigning object version number
299 px_CSD_ACTUAL_LINES_REC.OBJECT_VERSION_NUMBER := 1;
300
301 -- --------------------------------------------------------------------
302 -- Check if the Repair_Actual_Lines_Rec.actual_source_code = ESTIMATE
303 -- --------------------------------------------------------------------
304 IF (px_CSD_ACTUAL_LINES_REC.actual_source_code = 'ESTIMATE' ) THEN
305
306 -- Copy from Estimate API will create a Charge line in the table by
307 -- Calling charges API copy actual from estimate to create the record
308 -- in CS_ESTIMATE_DETAILS and will send in estimate_detail_id
309 -- which is the estimate_detail_id of the Actual line
310
311 -- Raise FND_API.G_EXC_ERROR if the estimate_detail_id is null
312 IF (px_CSD_ACTUAL_LINES_REC.ESTIMATE_DETAIL_ID is null) THEN
313 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
314 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Missing estimate_detail_id for actual_source_code : '||px_CSD_ACTUAL_LINES_REC.actual_source_code);
315 END IF;
316
317 RAISE FND_API.G_EXC_ERROR;
318 END IF;
319
320 --
321 -- API body
322 --
323 IF ( Fnd_Log.Level_Procedure >= G_debug_level) THEN
324 FND_LOG.STRING(Fnd_Log.Level_Procedure,l_mod_name,'Call to CSD_REPAIR_ACTUAL_LINES_REC_PKG.Insert_Row');
325 END IF;
326
327 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
328 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Required columns: ');
329 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'REPAIR_ACTUAL_LINE_ID (must be null) = ' || px_CSD_ACTUAL_LINES_REC.REPAIR_ACTUAL_LINE_ID);
330 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'OBJECT_VERSION_NUMBER = ' || px_CSD_ACTUAL_LINES_REC.OBJECT_VERSION_NUMBER);
331 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'ESTIMATE_DETAIL_ID = ' || px_CSD_ACTUAL_LINES_REC.ESTIMATE_DETAIL_ID);
332 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'REPAIR_ACTUAL_ID = ' || px_CSD_ACTUAL_LINES_REC.REPAIR_ACTUAL_ID);
333 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'REPAIR_LINE_ID = ' || px_CSD_ACTUAL_LINES_REC.REPAIR_LINE_ID);
334 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'CREATED_BY = ' || FND_GLOBAL.USER_ID);
335 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'LAST_UPDATED_BY = '|| FND_GLOBAL.USER_ID);
336 END IF;
337
338 BEGIN
339 -- Call table handler CSD_REPAIR_ACTUALS_LINES_PKG.Insert_Row to
340 -- insert the record into CSD_REPAIR_ACTUAL_LINES
341 -- Invoke table handler(CSD_REPAIR_ACTUAL_LINES_PKG.Insert_Row)
342 CSD_REPAIR_ACTUAL_LINES_PKG.Insert_Row(
343 px_REPAIR_ACTUAL_LINE_ID => px_CSD_ACTUAL_LINES_REC.REPAIR_ACTUAL_LINE_ID
344 ,p_OBJECT_VERSION_NUMBER => px_CSD_ACTUAL_LINES_REC.OBJECT_VERSION_NUMBER
345 ,p_ESTIMATE_DETAIL_ID => px_CSD_ACTUAL_LINES_REC.ESTIMATE_DETAIL_ID
346 ,p_REPAIR_ACTUAL_ID => px_CSD_ACTUAL_LINES_REC.REPAIR_ACTUAL_ID
347 ,p_REPAIR_LINE_ID => px_CSD_ACTUAL_LINES_REC.REPAIR_LINE_ID
348 ,p_CREATED_BY => FND_GLOBAL.USER_ID
349 ,p_CREATION_DATE => SYSDATE
350 ,p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID
351 ,p_LAST_UPDATE_DATE => SYSDATE
352 ,p_LAST_UPDATE_LOGIN => FND_GLOBAL.CONC_LOGIN_ID
353 ,p_ITEM_COST => px_CSD_ACTUAL_LINES_REC.ITEM_COST
354 ,p_JUSTIFICATION_NOTES => px_CSD_ACTUAL_LINES_REC.JUSTIFICATION_NOTES
355 ,p_RESOURCE_ID => px_CSD_ACTUAL_LINES_REC.RESOURCE_ID
356 ,p_OVERRIDE_CHARGE_FLAG => px_CSD_ACTUAL_LINES_REC.OVERRIDE_CHARGE_FLAG
357 ,p_ACTUAL_SOURCE_CODE => px_CSD_ACTUAL_LINES_REC.ACTUAL_SOURCE_CODE
358 ,p_ACTUAL_SOURCE_ID => px_CSD_ACTUAL_LINES_REC.ACTUAL_SOURCE_ID
359 ,p_WARRANTY_CLAIM_FLAG => px_CSD_ACTUAL_LINES_REC.WARRANTY_CLAIM_FLAG
360 ,p_WARRANTY_NUMBER => px_CSD_ACTUAL_LINES_REC.WARRANTY_NUMBER
361 ,p_WARRANTY_STATUS_CODE => px_CSD_ACTUAL_LINES_REC.WARRANTY_STATUS_CODE
362 ,p_REPLACED_ITEM_ID => px_CSD_ACTUAL_LINES_REC.REPLACED_ITEM_ID
363 ,p_ATTRIBUTE_CATEGORY => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE_CATEGORY
364 ,p_ATTRIBUTE1 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE1
365 ,p_ATTRIBUTE2 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE2
366 ,p_ATTRIBUTE3 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE3
367 ,p_ATTRIBUTE4 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE4
368 ,p_ATTRIBUTE5 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE5
369 ,p_ATTRIBUTE6 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE6
370 ,p_ATTRIBUTE7 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE7
371 ,p_ATTRIBUTE8 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE8
372 ,p_ATTRIBUTE9 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE9
373 ,p_ATTRIBUTE10 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE10
374 ,p_ATTRIBUTE11 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE11
375 ,p_ATTRIBUTE12 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE12
376 ,p_ATTRIBUTE13 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE13
377 ,p_ATTRIBUTE14 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE14
378 ,p_ATTRIBUTE15 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE15
379 ,p_LOCATOR_ID => px_CSD_ACTUAL_LINES_REC.LOCATOR_ID
380 ,p_LOC_SEGMENT1 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT1
381 ,p_LOC_SEGMENT2 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT2
382 ,p_LOC_SEGMENT3 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT3
383 ,p_LOC_SEGMENT4 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT4
384 ,p_LOC_SEGMENT5 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT5
385 ,p_LOC_SEGMENT6 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT6
386 ,p_LOC_SEGMENT7 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT7
387 ,p_LOC_SEGMENT8 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT8
388 ,p_LOC_SEGMENT9 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT9
389 ,p_LOC_SEGMENT10 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT10
390 ,p_LOC_SEGMENT11 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT11
391 ,p_LOC_SEGMENT12 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT12
392 ,p_LOC_SEGMENT13 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT13
393 ,p_LOC_SEGMENT14 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT14
394 ,p_LOC_SEGMENT15 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT15
395 ,p_LOC_SEGMENT16 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT16
396 ,p_LOC_SEGMENT17 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT17
397 ,p_LOC_SEGMENT18 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT18
398 ,p_LOC_SEGMENT19 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT19
399 ,p_LOC_SEGMENT20 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT20);
400
401 IF ( Fnd_Log.Level_Procedure >= G_debug_level) THEN
402 FND_LOG.STRING(Fnd_Log.Level_Procedure,l_mod_name,'Returned from CSD_REPAIR_ACTUAL_LINES_REC_PKG.Insert_Row');
403 END IF;
404
405 EXCEPTION
406 WHEN OTHERS THEN
407 IF ( Fnd_Log.Level_Exception >= G_debug_level) THEN
408 FND_LOG.STRING(Fnd_Log.Level_Exception,l_mod_name,'Others exception in CSD_REPAIR_ACTUAL_LINES_PKG.Insert_Row Call :'||SubStr('Error '||TO_CHAR(SQLCODE)||': '||SQLERRM, 1,255));
409 END IF;
410 x_return_status := FND_API.G_RET_STS_ERROR;
411 END;
412
413 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
414 RAISE FND_API.G_EXC_ERROR;
415 END IF;
416
417 --
418 -- End of API body
419 --
420 -- --------------------------------------------------------------------
421 -- Check if the Repair_Actual_Lines_Rec.actual_source_code = TASK
422 -- --------------------------------------------------------------------
423 ELSIF (px_CSD_ACTUAL_LINES_REC.actual_source_code = 'TASK' ) THEN
424
425 -- Debrief would have created a Charge line in the cs_estimate_details table
426 -- which is the estimate_detail_id of the Actual line
427 -- we link the Debrief createsd charge line to our Actual Line
428
429 -- Raise FND_API.G_EXC_ERROR if the estimate_detail_id is null
430 IF (px_CSD_ACTUAL_LINES_REC.ESTIMATE_DETAIL_ID is null) THEN
431 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
432 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Missing estimate_detail_id for actual_source_code : '||px_CSD_ACTUAL_LINES_REC.actual_source_code);
433 END IF;
434 RAISE FND_API.G_EXC_ERROR;
435 END IF;
436
437 --
438 -- API body
439 --
440 IF ( Fnd_Log.Level_Procedure >= G_debug_level) THEN
441 FND_LOG.STRING(Fnd_Log.Level_Procedure,l_mod_name,'Call to CSD_REPAIR_ACTUAL_LINES_REC_PKG.Insert_Row');
442 END IF;
443
444 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
445 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Required columns: ');
446 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,' ');
447 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'OBJECT_VERSION_NUMBER = ' || px_CSD_ACTUAL_LINES_REC.OBJECT_VERSION_NUMBER);
448 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'ESTIMATE_DETAIL_ID = ' || px_CSD_ACTUAL_LINES_REC.ESTIMATE_DETAIL_ID);
449 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'REPAIR_ACTUAL_ID = ' || px_CSD_ACTUAL_LINES_REC.REPAIR_ACTUAL_ID);
450 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'REPAIR_LINE_ID = ' || px_CSD_ACTUAL_LINES_REC.REPAIR_LINE_ID);
451 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'CREATED_BY = ' || FND_GLOBAL.USER_ID);
452 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'LAST_UPDATED_BY = '|| FND_GLOBAL.USER_ID);
453 END IF;
454
455 BEGIN
456 -- Call table handler CSD_REPAIR_ACTUALS_LINES_PKG.Insert_Row to
457 -- insert the record into CSD_REPAIR_ACTUAL_LINES
458 -- Invoke table handler(CSD_REPAIR_ACTUAL_LINES_PKG.Insert_Row)
459 CSD_REPAIR_ACTUAL_LINES_PKG.Insert_Row(
460 px_REPAIR_ACTUAL_LINE_ID => px_CSD_ACTUAL_LINES_REC.REPAIR_ACTUAL_LINE_ID
461 ,p_OBJECT_VERSION_NUMBER => px_CSD_ACTUAL_LINES_REC.OBJECT_VERSION_NUMBER
462 ,p_ESTIMATE_DETAIL_ID => px_CSD_ACTUAL_LINES_REC.ESTIMATE_DETAIL_ID
463 ,p_REPAIR_ACTUAL_ID => px_CSD_ACTUAL_LINES_REC.REPAIR_ACTUAL_ID
464 ,p_REPAIR_LINE_ID => px_CSD_ACTUAL_LINES_REC.REPAIR_LINE_ID
465 ,p_CREATED_BY => FND_GLOBAL.USER_ID
466 ,p_CREATION_DATE => SYSDATE
467 ,p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID
468 ,p_LAST_UPDATE_DATE => SYSDATE
469 ,p_LAST_UPDATE_LOGIN => FND_GLOBAL.CONC_LOGIN_ID
470 ,p_ITEM_COST => px_CSD_ACTUAL_LINES_REC.ITEM_COST
471 ,p_JUSTIFICATION_NOTES => px_CSD_ACTUAL_LINES_REC.JUSTIFICATION_NOTES
472 ,p_RESOURCE_ID => px_CSD_ACTUAL_LINES_REC.RESOURCE_ID
473 ,p_OVERRIDE_CHARGE_FLAG => px_CSD_ACTUAL_LINES_REC.OVERRIDE_CHARGE_FLAG
474 ,p_ACTUAL_SOURCE_CODE => px_CSD_ACTUAL_LINES_REC.ACTUAL_SOURCE_CODE
475 ,p_ACTUAL_SOURCE_ID => px_CSD_ACTUAL_LINES_REC.ACTUAL_SOURCE_ID
476 ,p_WARRANTY_CLAIM_FLAG => px_CSD_ACTUAL_LINES_REC.WARRANTY_CLAIM_FLAG
477 ,p_WARRANTY_NUMBER => px_CSD_ACTUAL_LINES_REC.WARRANTY_NUMBER
478 ,p_WARRANTY_STATUS_CODE => px_CSD_ACTUAL_LINES_REC.WARRANTY_STATUS_CODE
479 ,p_REPLACED_ITEM_ID => px_CSD_ACTUAL_LINES_REC.REPLACED_ITEM_ID
480 ,p_ATTRIBUTE_CATEGORY => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE_CATEGORY
481 ,p_ATTRIBUTE1 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE1
482 ,p_ATTRIBUTE2 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE2
483 ,p_ATTRIBUTE3 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE3
484 ,p_ATTRIBUTE4 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE4
485 ,p_ATTRIBUTE5 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE5
486 ,p_ATTRIBUTE6 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE6
487 ,p_ATTRIBUTE7 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE7
488 ,p_ATTRIBUTE8 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE8
489 ,p_ATTRIBUTE9 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE9
490 ,p_ATTRIBUTE10 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE10
491 ,p_ATTRIBUTE11 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE11
492 ,p_ATTRIBUTE12 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE12
493 ,p_ATTRIBUTE13 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE13
494 ,p_ATTRIBUTE14 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE14
495 ,p_ATTRIBUTE15 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE15
496 ,p_LOCATOR_ID => px_CSD_ACTUAL_LINES_REC.LOCATOR_ID
497 ,p_LOC_SEGMENT1 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT1
498 ,p_LOC_SEGMENT2 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT2
499 ,p_LOC_SEGMENT3 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT3
500 ,p_LOC_SEGMENT4 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT4
501 ,p_LOC_SEGMENT5 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT5
502 ,p_LOC_SEGMENT6 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT6
503 ,p_LOC_SEGMENT7 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT7
504 ,p_LOC_SEGMENT8 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT8
505 ,p_LOC_SEGMENT9 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT9
506 ,p_LOC_SEGMENT10 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT10
507 ,p_LOC_SEGMENT11 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT11
508 ,p_LOC_SEGMENT12 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT12
509 ,p_LOC_SEGMENT13 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT13
510 ,p_LOC_SEGMENT14 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT14
511 ,p_LOC_SEGMENT15 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT15
512 ,p_LOC_SEGMENT16 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT16
513 ,p_LOC_SEGMENT17 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT17
514 ,p_LOC_SEGMENT18 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT18
515 ,p_LOC_SEGMENT19 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT19
516 ,p_LOC_SEGMENT20 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT20);
517
518
519 EXCEPTION
520 WHEN OTHERS THEN
521 IF ( Fnd_Log.Level_Exception >= G_debug_level) THEN
522 FND_LOG.STRING(Fnd_Log.Level_Exception,l_mod_name,'Others exception in CSD_REPAIR_ACTUAL_LINES_PKG.Insert_Row Call :'||SubStr('Error '||TO_CHAR(SQLCODE)||': '||SQLERRM, 1,255));
523 END IF;
524 x_return_status := FND_API.G_RET_STS_ERROR;
525 END;
526
527 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
528 RAISE FND_API.G_EXC_ERROR;
529 END IF;
530
531 --
532 -- End of API body
533 --
534 -- ---------------------------------------------------------------------------
535 -- Check if the Repair_Actual_Lines_Rec.actual_source_code are WIP or MANUAL
536 -- ---------------------------------------------------------------------------
537 ELSIF (px_CSD_ACTUAL_LINES_REC.actual_source_code in ('WIP','MANUAL') ) THEN
538 -- swai: 12.1 service costing uptake bug 6960295
539 -- If importing from wip, do not cost the line again when importing
540 -- Otherwise, default to costing if the SAC is setup to cost
541 IF (px_CSD_ACTUAL_LINES_REC.actual_source_code in ('WIP') ) THEN
542 l_cs_cost_flag := 'N';
543 END IF;
544
545 -- If the actual_source_code = MANUAL then do validation for the
546 -- actual line record values passed from the Actuals UI
547 -- Raise FND_API.G_EXC_ERROR if it fails
548 --IF (px_CSD_ACTUAL_LINES_REC.actual_source_code in ('MANUAL') ) THEN
549
550 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
551 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Begin Check reqd parameter');
552 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Repair Line ID ='||px_CSD_ACTUAL_LINES_REC.repair_line_id);
553 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Transaction Billing Type ID ='||px_CHARGES_REC.txn_billing_type_id);
554 END IF;
555
556 -- Check the required parameter
557 CSD_PROCESS_UTIL.Check_Reqd_Param
558 ( p_param_value => px_CHARGES_REC.incident_id,
559 p_param_name => 'INCIDENT_ID',
560 p_api_name => l_api_name);
561
562 CSD_PROCESS_UTIL.Check_Reqd_Param
563 ( p_param_value => px_CHARGES_REC.txn_billing_type_id,
564 p_param_name => 'TXN_BILLING_TYPE_ID',
565 p_api_name => l_api_name);
566
567 CSD_PROCESS_UTIL.Check_Reqd_Param
568 ( p_param_value => px_CHARGES_REC.inventory_item_id_in,
569 p_param_name => 'INVENTORY_ITEM_ID',
570 p_api_name => l_api_name);
571
572 CSD_PROCESS_UTIL.Check_Reqd_Param
573 ( p_param_value => px_CHARGES_REC.unit_of_measure_code,
574 p_param_name => 'UNIT_OF_MEASURE_CODE',
575 p_api_name => l_api_name);
576
577 CSD_PROCESS_UTIL.Check_Reqd_Param
578 ( p_param_value => px_CHARGES_REC.quantity_required,
579 p_param_name => 'ESTIMATE_QUANTITY',
580 p_api_name => l_api_name);
581
582 CSD_PROCESS_UTIL.Check_Reqd_Param
583 ( p_param_value => px_CHARGES_REC.price_list_id,
584 p_param_name => 'PRICE_LIST_ID',
585 p_api_name => l_api_name);
586
587 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
588 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'End Check reqd parameter');
589 END IF;
590
591 -- begin check for incident id is not null
592 IF (px_CHARGES_REC.incident_id is not null) THEN
593
594 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
595 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Incident_id ='||px_CHARGES_REC.incident_id);
596 END IF;
597
598 -- Get the business process id
599 l_bus_process_id := CSD_PROCESS_UTIL.GET_BUS_PROCESS(px_CSD_ACTUAL_LINES_REC.repair_line_id);
600
601 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
602 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'l_bus_process_id ='||l_bus_process_id);
603 END IF;
604
605 IF l_bus_process_id < 0 THEN
606 IF NVL(px_CHARGES_REC.business_process_id,FND_API.G_MISS_NUM)
607 <> FND_API.G_MISS_NUM THEN
608 l_bus_process_id := px_CHARGES_REC.business_process_id;
609 ELSE
610 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
611 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Business process does not exist');
612 END IF;
613 RAISE FND_API.G_EXC_ERROR;
614 END IF;
615 END IF;
616
617 OPEN order_rec(px_CHARGES_REC.incident_id);
618 FETCH order_rec
619 INTO l_party_id,
620 l_account_id;
621
622 IF order_rec%NOTFOUND OR l_party_id IS NULL THEN
623 FND_MESSAGE.SET_NAME('CSD','CSD_API_PARTY_MISSING');
624 FND_MESSAGE.SET_TOKEN('INCIDENT_ID',px_CHARGES_REC.incident_id);
625 FND_MSG_PUB.ADD;
626 IF (Fnd_Log.Level_Error >= Fnd_Log.G_Current_Runtime_Level) THEN
627 FND_LOG.MESSAGE(Fnd_Log.Level_Error,l_mod_name, FALSE);
628 END IF;
629 RAISE FND_API.G_EXC_ERROR;
630 END IF;
631
632 IF order_rec%ISOPEN THEN
633 CLOSE order_rec;
634 END IF;
635
636 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
637 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'l_party_id ='||l_party_id);
638 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'l_account_id ='||l_account_id);
639 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'px_CHARGES_REC.txn_billing_type_id ='||px_CHARGES_REC.txn_billing_type_id);
640 END IF;
641
642 -- Derive the txn_billing type and line category code
643 -- from the transaction type
644 CSD_PROCESS_UTIL.GET_LINE_TYPE
645 ( p_txn_billing_type_id => px_CHARGES_REC.txn_billing_type_id,
646 p_org_id => CSD_PROCESS_UTIL.get_org_id(px_CHARGES_REC.incident_id),
647 x_line_type_id => l_line_type_id,
648 x_line_category_code => l_line_category_code,
649 x_return_status => x_return_status );
650
651 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
652 RAISE FND_API.G_EXC_ERROR;
653 END IF;
654
655 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
656 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'line_type_id ='||l_line_type_id);
657 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'line_category_code ='||l_line_category_code);
658 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'price_list_id ='||px_CHARGES_REC.price_list_id);
659 END IF;
660
661 -- If line_type_id Or line_category_code is null, then raise error
662 IF l_line_type_id IS NULL OR
663 l_line_category_code IS NULL THEN
664 FND_MESSAGE.SET_NAME('CSD','CSD_API_LINE_TYPE_MISSING');
665 FND_MESSAGE.SET_TOKEN('TXN_BILLING_TYPE_ID',px_CHARGES_REC.txn_billing_type_id);
666 FND_MSG_PUB.ADD;
667 IF (Fnd_Log.Level_Error >= Fnd_Log.G_Current_Runtime_Level) THEN
668 FND_LOG.MESSAGE(Fnd_Log.Level_Error,l_mod_name, FALSE);
669 END IF;
670 RAISE FND_API.G_EXC_ERROR;
671 END IF;
672
673 -- Get the currency code
674 IF NVL(px_CHARGES_REC.price_list_id,FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
675 BEGIN
676 SELECT currency_code
677 INTO l_curr_code
678 FROM oe_price_lists
679 WHERE price_list_id = px_CHARGES_REC.price_list_id;
680 EXCEPTION
681 WHEN NO_DATA_FOUND THEN
682 FND_MESSAGE.SET_NAME('CSD','CSD_API_INV_PRICE_LIST_ID');
683 FND_MESSAGE.SET_TOKEN('PRICE_LIST_ID',px_CHARGES_REC.price_list_id);
684 FND_MSG_PUB.ADD;
685 IF (Fnd_Log.Level_Error >= Fnd_Log.G_Current_Runtime_Level) THEN
686 FND_LOG.MESSAGE(Fnd_Log.Level_Error,l_mod_name, FALSE);
687 END IF;
688 RAISE FND_API.G_EXC_ERROR;
689 END;
690 END IF;
691
692 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
693 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'l_curr_code ='||l_curr_code);
694 END IF;
695
696 -- If l_curr_code is null then raise error
697 IF l_curr_code IS NULL THEN
698 FND_MESSAGE.SET_NAME('CSD','CSD_API_INV_CURR_CODE');
699 FND_MESSAGE.SET_TOKEN('PRICE_LIST_ID',px_CHARGES_REC.price_list_id);
700 FND_MSG_PUB.ADD;
701 IF (Fnd_Log.Level_Error >= Fnd_Log.G_Current_Runtime_Level) THEN
702 FND_LOG.MESSAGE(Fnd_Log.Level_Error,l_mod_name, FALSE);
703 END IF;
704 RAISE FND_API.G_EXC_ERROR;
705 END IF;
706
707 -- assigning values for the charge record
708 px_CHARGES_REC.business_process_id := l_bus_process_id;
709 px_CHARGES_REC.line_type_id := l_line_type_id;
710 px_CHARGES_REC.currency_code := l_curr_code;
711 px_CHARGES_REC.line_category_code := l_line_category_code;
712
713 -- travi new code
714 --px_CHARGES_REC.charge_line_type := ;
715 --px_CHARGES_REC.apply_contract_discount := ;
716
717 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
718 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Assign Derived values for the charge rec');
719 END IF;
720
721 -- always create estimate lines with interface to OE flag as 'N'
722 px_CHARGES_REC.interface_to_oe_flag := 'N' ;
723
724 -- Convert the estimate record to charge record
725 --CSD_PROCESS_UTIL.CONVERT_EST_TO_CHG_REC
726 -- ( p_estimate_line_rec => px_CSD_ACTUAL_LINES_REC,
727 -- x_charges_rec => lx_charges_rec,
728 -- x_return_status => x_return_status );
729
730 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
731 RAISE FND_API.G_EXC_ERROR;
732 END IF;
733
734 END IF;
735 -- end check for incident id is not null
736
737 --ELSIF (px_CSD_ACTUAL_LINES_REC.actual_source_code in ('WIP') ) THEN
738 -- null;
739 --END IF;
740 IF ( Fnd_Log.Level_Procedure >= G_debug_level) THEN
741 FND_LOG.STRING(Fnd_Log.Level_Procedure,l_mod_name,'Call process_estimate_lines to create charge lines');
742 END IF;
743
744 -- For WIP we will have charge record as input but we create charge record for MANUAL
745 -- Call table handler CSD_REPAIR_ESTIMATE_PVT.Process_Estimate_Lines in create mode
746 -- which calls charges API to update the record in CS_ESTIMATE_DETAILS
747 CSD_REPAIR_ESTIMATE_PVT.PROCESS_ESTIMATE_LINES
748 ( p_api_version => 1.0 ,
749 p_commit => fnd_api.g_false,
750 p_init_msg_list => fnd_api.g_true,
751 p_validation_level => fnd_api.g_valid_level_full,
752 p_action => 'CREATE',
753 p_cs_cost_flag => l_cs_cost_flag, -- swai: 12.1 service costing uptake bug 6960295
754 x_Charges_Rec => px_charges_rec,
755 x_return_status => x_return_status,
756 x_msg_count => x_msg_count,
757 x_msg_data => x_msg_data );
758
759 -- Raise FND_API.G_EXC_ERROR if it fails
760 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
761 RAISE FND_API.G_EXC_ERROR;
762 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
763 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Creating Charge line failed for actual_source_code : '||px_CSD_ACTUAL_LINES_REC.actual_source_code);
764 END IF;
765 END IF;
766
767 -- Assign estimate_detail_id to Actual lines record
768 px_CSD_ACTUAL_LINES_REC.ESTIMATE_DETAIL_ID := px_charges_rec.estimate_detail_id;
769 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
770 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Created estimate_detail_id : '||px_CSD_ACTUAL_LINES_REC.ESTIMATE_DETAIL_ID);
771 END IF;
772
773 --
774 -- API body
775 --
776 IF ( Fnd_Log.Level_Procedure >= G_debug_level) THEN
777 FND_LOG.STRING(Fnd_Log.Level_Procedure,l_mod_name,'Call to CSD_REPAIR_ACTUAL_LINES_REC_PKG.Insert_Row');
778 END IF;
779
780 BEGIN
781 -- Call table handler CSD_REPAIR_ACTUALS_LINES_PKG.Insert_Row to
782 -- insert the record into CSD_REPAIR_ACTUAL_LINES
783 -- Invoke table handler(CSD_REPAIR_ACTUAL_LINES_PKG.Insert_Row)
784 CSD_REPAIR_ACTUAL_LINES_PKG.Insert_Row(
785 px_REPAIR_ACTUAL_LINE_ID => px_CSD_ACTUAL_LINES_REC.REPAIR_ACTUAL_LINE_ID
786 ,p_OBJECT_VERSION_NUMBER => px_CSD_ACTUAL_LINES_REC.OBJECT_VERSION_NUMBER
787 ,p_ESTIMATE_DETAIL_ID => px_CSD_ACTUAL_LINES_REC.ESTIMATE_DETAIL_ID
788 ,p_REPAIR_ACTUAL_ID => px_CSD_ACTUAL_LINES_REC.REPAIR_ACTUAL_ID
789 ,p_REPAIR_LINE_ID => px_CSD_ACTUAL_LINES_REC.REPAIR_LINE_ID
790 ,p_CREATED_BY => FND_GLOBAL.USER_ID
791 ,p_CREATION_DATE => SYSDATE
792 ,p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID
793 ,p_LAST_UPDATE_DATE => SYSDATE
794 ,p_LAST_UPDATE_LOGIN => FND_GLOBAL.CONC_LOGIN_ID
795 ,p_ITEM_COST => px_CSD_ACTUAL_LINES_REC.ITEM_COST
796 ,p_JUSTIFICATION_NOTES => px_CSD_ACTUAL_LINES_REC.JUSTIFICATION_NOTES
797 ,p_RESOURCE_ID => px_CSD_ACTUAL_LINES_REC.RESOURCE_ID
798 ,p_OVERRIDE_CHARGE_FLAG => px_CSD_ACTUAL_LINES_REC.OVERRIDE_CHARGE_FLAG
799 ,p_ACTUAL_SOURCE_CODE => px_CSD_ACTUAL_LINES_REC.ACTUAL_SOURCE_CODE
800 ,p_ACTUAL_SOURCE_ID => px_CSD_ACTUAL_LINES_REC.ACTUAL_SOURCE_ID
801 ,p_WARRANTY_CLAIM_FLAG => px_CSD_ACTUAL_LINES_REC.WARRANTY_CLAIM_FLAG
802 ,p_WARRANTY_NUMBER => px_CSD_ACTUAL_LINES_REC.WARRANTY_NUMBER
803 ,p_WARRANTY_STATUS_CODE => px_CSD_ACTUAL_LINES_REC.WARRANTY_STATUS_CODE
804 ,p_REPLACED_ITEM_ID => px_CSD_ACTUAL_LINES_REC.REPLACED_ITEM_ID
805 ,p_ATTRIBUTE_CATEGORY => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE_CATEGORY
806 ,p_ATTRIBUTE1 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE1
807 ,p_ATTRIBUTE2 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE2
808 ,p_ATTRIBUTE3 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE3
809 ,p_ATTRIBUTE4 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE4
810 ,p_ATTRIBUTE5 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE5
811 ,p_ATTRIBUTE6 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE6
812 ,p_ATTRIBUTE7 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE7
813 ,p_ATTRIBUTE8 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE8
814 ,p_ATTRIBUTE9 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE9
815 ,p_ATTRIBUTE10 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE10
816 ,p_ATTRIBUTE11 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE11
817 ,p_ATTRIBUTE12 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE12
818 ,p_ATTRIBUTE13 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE13
819 ,p_ATTRIBUTE14 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE14
820 ,p_ATTRIBUTE15 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE15
821 ,p_LOCATOR_ID => px_CSD_ACTUAL_LINES_REC.LOCATOR_ID
822 ,p_LOC_SEGMENT1 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT1
823 ,p_LOC_SEGMENT2 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT2
824 ,p_LOC_SEGMENT3 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT3
825 ,p_LOC_SEGMENT4 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT4
826 ,p_LOC_SEGMENT5 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT5
827 ,p_LOC_SEGMENT6 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT6
828 ,p_LOC_SEGMENT7 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT7
829 ,p_LOC_SEGMENT8 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT8
830 ,p_LOC_SEGMENT9 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT9
831 ,p_LOC_SEGMENT10 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT10
832 ,p_LOC_SEGMENT11 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT11
833 ,p_LOC_SEGMENT12 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT12
834 ,p_LOC_SEGMENT13 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT13
835 ,p_LOC_SEGMENT14 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT14
836 ,p_LOC_SEGMENT15 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT15
837 ,p_LOC_SEGMENT16 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT16
838 ,p_LOC_SEGMENT17 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT17
839 ,p_LOC_SEGMENT18 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT18
840 ,p_LOC_SEGMENT19 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT19
841 ,p_LOC_SEGMENT20 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT20);
842
843
844 EXCEPTION
845 WHEN OTHERS THEN
846 IF ( Fnd_Log.Level_Exception >= G_debug_level) THEN
847 FND_LOG.STRING(Fnd_Log.Level_Exception,l_mod_name,'Others exception in CSD_REPAIR_ACTUAL_LINES_PKG.Insert_Row Call :'||SubStr('Error '||TO_CHAR(SQLCODE)||': '||SQLERRM, 1,255));
848 END IF;
849 x_return_status := FND_API.G_RET_STS_ERROR;
850 END;
851
852 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
853 RAISE FND_API.G_EXC_ERROR;
854 END IF;
855
856 --
857 -- End of API body
858 --
859
860 END IF;
861
862
863 -- Standard check of p_commit.
864 IF FND_API.To_Boolean( p_commit ) THEN
865 COMMIT WORK;
866 END IF;
867
868 -- Standard call to get message count and IF count is get message info.
869 FND_MSG_PUB.Count_And_Get
870 (p_count => x_msg_count,
871 p_data => x_msg_data );
872
873 EXCEPTION
874 WHEN FND_API.G_EXC_ERROR THEN
875 IF ( Fnd_Log.Level_Exception >= G_debug_level) THEN
876 FND_LOG.STRING(Fnd_Log.Level_Exception,l_mod_name,'In FND_API.G_EXC_ERROR exception');
877 END IF;
878 x_return_status := FND_API.G_RET_STS_ERROR ;
879 ROLLBACK TO CREATE_REPAIR_ACTUAL_LINES;
880 FND_MSG_PUB.Count_And_Get
881 (p_count => x_msg_count,
882 p_data => x_msg_data );
883 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
884 IF ( Fnd_Log.Level_Exception >= G_debug_level) THEN
885 FND_LOG.STRING(Fnd_Log.Level_Exception,l_mod_name,'In FND_API.G_EXC_UNEXPECTED_ERROR exception ');
886 END IF;
887 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
888 ROLLBACK TO CREATE_REPAIR_ACTUAL_LINES;
889 FND_MSG_PUB.Count_And_Get
890 ( p_count => x_msg_count,
891 p_data => x_msg_data );
892 WHEN OTHERS THEN
893 IF ( Fnd_Log.Level_Exception >= G_debug_level) THEN
894 FND_LOG.STRING(Fnd_Log.Level_Exception,l_mod_name,'In OTHERS exception');
895 FND_LOG.STRING(Fnd_Log.Level_Exception,l_mod_name,'Sql Err Msg :'||SQLERRM );
896 END IF;
897 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
898 ROLLBACK TO CREATE_REPAIR_ACTUAL_LINES;
899 IF FND_MSG_PUB.Check_Msg_Level
900 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
901 THEN
902 FND_MSG_PUB.Add_Exc_Msg
903 (G_PKG_NAME ,
904 l_api_name );
905 END IF;
906 FND_MSG_PUB.Count_And_Get
907 (p_count => x_msg_count,
908 p_data => x_msg_data );
909
910 End CREATE_REPAIR_ACTUAL_LINES;
911
912
913 /*--------------------------------------------------------------------*/
914 /* procedure name: UPDATE_REPAIR_ACTUAL_LINES */
915 /* description : procedure used to Update Repair Actuals */
916 /* */
917 /* */
918 /* */
919 /* Called from : Depot Repair Actuals UI */
920 /* Input Parm : */
921 /* p_api_version NUMBER Req Api Version number */
922 /* p_init_msg_list VARCHAR2 Opt Initialize message stack */
923 /* p_commit VARCHAR2 Opt Commits in API */
924 /* p_validation_level NUMBER Opt validation steps */
925 /* px_CSD_ACTUAL_LINES_REC REC Req Actuals lines Record */
926 /* px_Charges_Rec REC Req Charges line Record */
927 /* Output Parm : */
928 /* x_return_status VARCHAR2 Return status after the call. */
929 /* x_msg_count NUMBER Number of messages in stack */
930 /* x_msg_data VARCHAR2 Mesg. text if x_msg_count >= 1 */
931 /* Change Hist : */
932 /* 08/11/03 travikan Initial Creation. */
933 /* */
934 /* */
935 /* */
936 /*--------------------------------------------------------------------*/
937 PROCEDURE UPDATE_REPAIR_ACTUAL_LINES(
938 P_Api_Version IN NUMBER,
939 P_Commit IN VARCHAR2,
940 P_Init_Msg_List IN VARCHAR2,
941 p_validation_level IN NUMBER,
942 px_CSD_ACTUAL_LINES_REC IN OUT NOCOPY CSD_ACTUAL_LINES_REC_TYPE,
943 px_Charges_Rec IN OUT NOCOPY CS_CHARGE_DETAILS_PUB.CHARGES_REC_TYPE,
944 X_Return_Status OUT NOCOPY VARCHAR2,
945 X_Msg_Count OUT NOCOPY NUMBER,
946 X_Msg_Data OUT NOCOPY VARCHAR2
947 )
948
949 IS
950 -- Variables used in FND Log
951 l_stat_level number := FND_LOG.LEVEL_STATEMENT;
952 l_proc_level number := FND_LOG.LEVEL_PROCEDURE;
953 l_event_level number := FND_LOG.LEVEL_EVENT;
954 l_excep_level number := FND_LOG.LEVEL_EXCEPTION;
955 l_error_level number := FND_LOG.LEVEL_ERROR;
956 l_unexp_level number := FND_LOG.LEVEL_UNEXPECTED;
957 l_mod_name varchar2(2000) := 'csd.plsql.csd_repair_actual_lines_pvt.update_repair_actual_lines';
958
959 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_REPAIR_ACTUAL_LINES';
960 l_api_version CONSTANT NUMBER := 1.0;
961 l_msg_count NUMBER;
962 l_msg_data VARCHAR2(100);
963 l_msg_index NUMBER;
964 l_api_return_status VARCHAR2(3);
965
966 l_act_obj_ver_num NUMBER;
967 l_est_obj_ver_num NUMBER;
968
969 /*FP Fixed for bug#5117652
970 Following variables added
971 */
972 l_sr_add_to_order_flag varchar2(1);
973 l_ro_add_to_order_flag varchar2(1);
974 l_line_order_category_code varchar2(30);
975 l_add_actual_to_id number;
976 /*FP Fixed for bug#5117652 end*/
977
978 -- swai: 12.1 service costing uptake bug 6960295
979 l_cs_cost_flag VARCHAR2(1) := 'Y';
980
981 CURSOR charge_lines(p_est_det_id IN NUMBER) IS
982 SELECT object_version_number
983 FROM cs_estimate_details
984 WHERE estimate_detail_id = p_est_det_id;
985
986 CURSOR repair_actual_lines(p_actual_line_id IN NUMBER) IS
987 SELECT a.object_version_number
988 FROM csd_repair_actual_lines a,
989 csd_repairs b
990 WHERE a.repair_line_id = b.repair_line_id
991 and a.repair_actual_line_id = p_actual_line_id;
992
993
994
995 BEGIN
996 -- Standard Start of API savepoint
997 SAVEPOINT UPDATE_REPAIR_ACTUAL_LINES;
998
999 -- Standard call to check for call compatibility.
1000 IF NOT FND_API.Compatible_API_Call ( l_api_version,
1001 p_api_version,
1002 l_api_name,
1003 G_PKG_NAME)
1004 THEN
1005 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1006 END IF;
1007
1008 -- Initialize message list if p_init_msg_list is set to TRUE.
1009 IF FND_API.to_Boolean( p_init_msg_list ) THEN
1010 FND_MSG_PUB.initialize;
1011 END IF;
1012
1013 -- Initialize API return status to success
1014 x_return_status := FND_API.G_RET_STS_SUCCESS;
1015
1016 -- Api body starts
1017 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
1018 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'At the Beginning of update_repair_actual_lines');
1019 END IF;
1020
1021 -- Dump the in parameters in the log file
1022 -- if the debug level > 5
1023 -- If fnd_profile.value('CSD_DEBUG_LEVEL') > 5 then
1024 -- if (g_debug > 5) then
1025 -- csd_gen_utility_pvt.dump_actuals_rec
1026 -- ( p_CSD_ACTUAL_LINES_REC => px_CSD_ACTUAL_LINES_REC);
1027 -- end if;
1028
1029 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
1030 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Begin Check reqd parameter');
1031 END IF;
1032
1033 -- Check the required parameter
1034 CSD_PROCESS_UTIL.Check_Reqd_Param
1035 ( p_param_value => px_CSD_ACTUAL_LINES_REC.repair_line_id,
1036 p_param_name => 'REPAIR_LINE_ID',
1037 p_api_name => l_api_name);
1038
1039 CSD_PROCESS_UTIL.Check_Reqd_Param
1040 ( p_param_value => px_CSD_ACTUAL_LINES_REC.repair_actual_id,
1041 p_param_name => 'REPAIR_ACTUAL_ID',
1042 p_api_name => l_api_name);
1043
1044 CSD_PROCESS_UTIL.Check_Reqd_Param
1045 ( p_param_value => px_CSD_ACTUAL_LINES_REC.repair_actual_line_id,
1046 p_param_name => 'REPAIR_ACTUAL_LINE_ID',
1047 p_api_name => l_api_name);
1048
1049 CSD_PROCESS_UTIL.Check_Reqd_Param
1050 ( p_param_value => px_Charges_Rec.estimate_detail_id,
1051 p_param_name => 'ESTIMATE_DETAIL_ID',
1052 p_api_name => l_api_name);
1053
1054 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
1055 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'End Check reqd parameter');
1056 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Begin Validate Repair Line id');
1057 END IF;
1058
1059 -- Validate the repair line ID
1060 IF NOT( CSD_PROCESS_UTIL.Validate_rep_line_id
1061 ( p_repair_line_id => px_CSD_ACTUAL_LINES_REC.repair_line_id )) THEN
1062 RAISE FND_API.G_EXC_ERROR;
1063 END IF;
1064
1065 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
1066 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'End Validate Repair Line id');
1067 END IF;
1068
1069 -- Validate the repair actual line id against csd_repair_actual_lines
1070 -- If it is invalid then raise FND_API.G_EXC_ERROR
1071 IF NVL(px_CSD_ACTUAL_LINES_REC.repair_actual_line_id,FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
1072
1073 OPEN repair_actual_lines(px_CSD_ACTUAL_LINES_REC.repair_actual_line_id);
1074 FETCH repair_actual_lines
1075 INTO l_act_obj_ver_num;
1076
1077 IF repair_actual_lines%NOTFOUND THEN
1078 FND_MESSAGE.SET_NAME('CSD','CSD_API_ACTUAL_LINE_MISSING');
1079 FND_MESSAGE.SET_TOKEN('REPAIR_ACTUAL_LINE_ID',px_CSD_ACTUAL_LINES_REC.repair_actual_line_id);
1080 FND_MSG_PUB.ADD;
1081 IF (Fnd_Log.Level_Error >= Fnd_Log.G_Current_Runtime_Level) THEN
1082 FND_LOG.MESSAGE(Fnd_Log.Level_Error,l_mod_name, FALSE);
1083 END IF;
1084 RAISE FND_API.G_EXC_ERROR;
1085 END IF;
1086
1087 IF repair_actual_lines%ISOPEN THEN
1088 CLOSE repair_actual_lines;
1089 END IF;
1090
1091 -- Validate the estimate detail id against cs_estimate_details
1092 -- If it is invalid then raise FND_API.G_EXC_ERROR
1093 OPEN charge_lines(px_Charges_Rec.estimate_detail_id);
1094 FETCH charge_lines
1095 INTO l_est_obj_ver_num;
1096
1097 IF charge_lines%NOTFOUND THEN
1098 FND_MESSAGE.SET_NAME('CSD','CSD_API_CHARGE_LINE_MISSING');
1099 FND_MESSAGE.SET_TOKEN('ESTIMATE_DETAIL_ID',px_Charges_Rec.estimate_detail_id);
1100 FND_MSG_PUB.ADD;
1101 IF (Fnd_Log.Level_Error >= Fnd_Log.G_Current_Runtime_Level) THEN
1102 FND_LOG.MESSAGE(Fnd_Log.Level_Error,l_mod_name, FALSE);
1103 END IF;
1104 RAISE FND_API.G_EXC_ERROR;
1105 END IF;
1106
1107 IF charge_lines%ISOPEN THEN
1108 CLOSE charge_lines;
1109 END IF;
1110
1111 END IF;
1112
1113 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
1114 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Validate Object Version Number for Charge and Actual Line');
1115 END IF;
1116
1117 IF NVL(px_CSD_ACTUAL_LINES_REC.object_version_number,FND_API.G_MISS_NUM) <> l_act_obj_ver_num THEN
1118 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
1119 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Actual Line Object Version Number does not match'
1120 || ' for the Repair Actual Line ID = ' || px_CSD_ACTUAL_LINES_REC.repair_actual_line_id);
1121 END IF;
1122
1123 -- Modified the message name for bugfix 3281321. vkjain.
1124 -- FND_MESSAGE.SET_NAME('CSD','CSD_OBJ_VER_MISMATCH');
1125 FND_MESSAGE.SET_NAME('CSD','CSD_ACT_LIN_OBJ_VER_MISMATCH');
1126 -- FND_MESSAGE.SET_TOKEN('REPAIR_ACTUAL_LINE_ID',px_CSD_ACTUAL_LINES_REC.repair_actual_line_id);
1127 FND_MSG_PUB.ADD;
1128 IF (Fnd_Log.Level_Error >= Fnd_Log.G_Current_Runtime_Level) THEN
1129 FND_LOG.MESSAGE(Fnd_Log.Level_Error,l_mod_name, FALSE);
1130 END IF;
1131 RAISE FND_API.G_EXC_ERROR;
1132 ELSE
1133 -- Assigning object version number
1134 px_CSD_ACTUAL_LINES_REC.object_version_number := l_act_obj_ver_num+1;
1135 END IF;
1136
1137 /*FP Fixed for bug#5117652
1138 Below code is added. This code ensure that actual line is added to
1139 existing OM line based on profile setup.
1140 */
1141
1142 IF px_Charges_Rec.INTERFACE_TO_OE_FLAG ='Y'then /*if interfacing the line then get the order header based on profile */
1143 select line_order_category_code
1144 into l_line_order_category_code
1145 from cs_transaction_types_b
1146 where transaction_type_id = px_Charges_Rec.TRANSACTION_TYPE_ID;
1147
1148 l_sr_add_to_order_flag := fnd_profile.value('CSD_ADD_TO_SO_WITHIN_SR');
1149 l_sr_add_to_order_flag := nvl(l_sr_Add_to_order_flag, 'N');
1150 l_ro_add_to_order_flag := fnd_profile.value('CSD_ADD_TO_SO_WITHIN_RO');
1151 l_ro_add_to_order_flag := nvl(l_ro_Add_to_order_flag, 'N');
1152
1153 IF (l_sr_add_to_order_flag='Y') OR (l_ro_add_to_order_flag='Y') then
1154 IF l_line_order_category_code ='ORDER' then
1155 begin
1156 Select max(ced.order_header_id)
1157 into l_add_actual_to_id
1158 from cs_estimate_details ced,
1159 oe_order_headers_all ooh,
1160 oe_order_types_v oot
1161 where
1162 ced.estimate_detail_id in
1163 (select estimate_detail_id
1164 from csd_product_transactions
1165 where repair_line_id = px_CSD_ACTUAL_LINES_REC.REPAIR_LINE_ID
1166 union
1167 select estimate_detail_id
1168 from csd_repair_actual_lines
1169 where repair_actual_id=px_CSD_ACTUAL_LINES_REC.REPAIR_ACTUAL_ID)
1170 and ced.order_header_id is not null
1171 and ooh.open_flag = 'Y'
1172 and nvl(ooh.cancelled_flag,'N') = 'N'
1173 and ooh.header_id = ced.order_header_id
1174 and (ooh.cust_po_number = nvl(px_Charges_Rec.PURCHASE_ORDER_NUM,ooh.cust_po_number)
1175 or ooh.cust_po_number is null)
1176 and ooh.sold_to_org_id = px_Charges_Rec.bill_to_account_id -- swai: bug 6962424
1177 and oot.order_type_id = ooh.order_type_id
1178 and oot.order_category_code in ('MIXED','ORDER')
1179 and ced.interface_to_oe_flag = 'Y';
1180 exception
1181 when no_data_found then
1182 l_add_actual_to_id := null;
1183 end;
1184 ELSIF l_line_order_category_code ='RETURN' then
1185 begin
1186 Select max(ced.order_header_id)
1187 into l_add_actual_to_id
1188 from cs_estimate_details ced,
1189 oe_order_headers_all ooh,
1190 oe_order_types_v oot
1191 where
1192 ced.estimate_detail_id in
1193 (select estimate_detail_id
1194 from csd_product_transactions
1195 where repair_line_id = px_CSD_ACTUAL_LINES_REC.REPAIR_LINE_ID
1196 union
1197 select estimate_detail_id
1198 from csd_repair_actual_lines
1199 where repair_actual_id=px_CSD_ACTUAL_LINES_REC.REPAIR_ACTUAL_ID)
1200 and ced.order_header_id is not null
1201 and ooh.open_flag = 'Y'
1202 and nvl(ooh.cancelled_flag,'N') = 'N'
1203 and ooh.header_id = ced.order_header_id
1204 and (ooh.cust_po_number = nvl(px_Charges_Rec.PURCHASE_ORDER_NUM,ooh.cust_po_number)
1205 or ooh.cust_po_number is null)
1206 and ooh.sold_to_org_id = px_Charges_Rec.bill_to_account_id -- swai: bug 6962424
1207 and oot.order_type_id = ooh.order_type_id
1208 and oot.order_category_code in ('MIXED','RETURN')
1209 and ced.interface_to_oe_flag = 'Y';
1210 exception
1211 when no_data_found then
1212 l_add_actual_to_id := null;
1213 end;
1214 END IF; /*line order category*/
1215
1216 If l_add_actual_to_id is not null then /*add actual line */
1217 px_Charges_Rec.ADD_TO_ORDER_FLAG := 'Y';
1218 px_Charges_Rec.ORDER_HEADER_ID := l_add_actual_to_id;
1219 elsif (l_sr_add_to_order_flag='N') then
1220 /*RO profile is yes and SR profile is NO and we do not find SO under RO
1221 in this case new SR should be created */
1222 px_Charges_Rec.ADD_TO_ORDER_FLAG := 'F';
1223 px_Charges_Rec.ORDER_HEADER_ID := NULL;
1224 end if;
1225
1226 ELSE /*when both profile are N then create new order */
1227 px_Charges_Rec.ADD_TO_ORDER_FLAG := 'F';
1228 px_Charges_Rec.ORDER_HEADER_ID := NULL;
1229 END IF;
1230 end if; /*end if interface to oe flag */
1231 /*FP Fixed for bug#5117652 end*/
1232
1233
1234 -- Initialize API return status to SUCCESS
1235 x_return_status := FND_API.G_RET_STS_SUCCESS;
1236
1237 -- --------------------------------------------------------------------
1238 -- Check the Repair_Actual_Lines_Rec.actual_source_code for validations
1239
1240 -- Following validations will be done in the form itself
1241 -- Validate the repair actual line record for
1242 -- if the line is not interfaced to Order Management
1243
1244 -- Validate the repair actual line record for
1245 -- if the line passes the security validations
1246
1247 -- Validate the repair actual line record for
1248 -- if the line can have a override in charge value
1249 -- --------------------------------------------------------------------
1250 IF (px_CSD_ACTUAL_LINES_REC.actual_source_code in ('MANUAL', 'ESTIMATE') ) THEN
1251 -- no validations planned as of now
1252 null;
1253 ELSIF (px_CSD_ACTUAL_LINES_REC.actual_source_code in ('TASK', 'WIP') ) THEN
1254 null;
1255 -- -------------------------------------------------------------
1256 -- These Validations are enforced in the form itself
1257 -- Allow Pricing related updates but not product related updates
1258 -- product, quantity
1259 -- price list, uom, contract, unit price, after warranty cost
1260 -- -------------------------------------------------------------
1261
1262 -- swai: 12.1 service costing uptake bug 6960295
1263 IF (px_CSD_ACTUAL_LINES_REC.actual_source_code = 'WIP' ) THEN
1264 l_cs_cost_flag := 'N';
1265 END IF;
1266 END IF;
1267
1268 --
1269 -- Api body
1270 --
1271 BEGIN
1272 -- Call table handler CSD_REPAIR_ESTIMATE_PVT.Process_Estimate_Lines in update mode
1273 -- which calls charges API to update the record in CS_ESTIMATE_DETAILS
1274 CSD_REPAIR_ESTIMATE_PVT.PROCESS_ESTIMATE_LINES
1275 ( p_api_version => 1.0 ,
1276 p_commit => fnd_api.g_false,
1277 p_init_msg_list => fnd_api.g_true,
1278 p_validation_level => fnd_api.g_valid_level_full,
1279 p_action => 'UPDATE',
1280 -- swai: 12.1 service costing uptake bug 6960295
1281 p_cs_cost_flag => l_cs_cost_flag,
1282 x_Charges_Rec => px_charges_rec,
1283 x_return_status => x_return_status,
1284 x_msg_count => x_msg_count,
1285 x_msg_data => x_msg_data);
1286
1287 -- The following check was added as a fix for bug 3378602. vkjain
1288 -- We do not want to continue with updating the Actual line if Charges
1289 -- API returned error.
1290 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
1291 RAISE FND_API.G_EXC_ERROR;
1292 END IF;
1293
1294 EXCEPTION
1295 -- The following exception was added as a fix for bug 3378602. vkjain
1296 WHEN FND_API.G_EXC_ERROR THEN
1297 IF ( Fnd_Log.Level_Exception >= G_debug_level) THEN
1298 FND_LOG.STRING(Fnd_Log.Level_Exception,l_mod_name,'Charges API returned error while calling UPDATE.');
1299 END IF;
1300 RAISE FND_API.G_EXC_ERROR;
1301 WHEN OTHERS THEN
1302 IF ( Fnd_Log.Level_Exception >= G_debug_level) THEN
1303 FND_LOG.STRING(Fnd_Log.Level_Exception,l_mod_name,'Others exception error :'||SubStr('Error '||TO_CHAR(SQLCODE)||': '||SQLERRM, 1,255));
1304 END IF;
1305 RAISE FND_API.G_EXC_ERROR;
1306 END;
1307
1308 IF ( Fnd_Log.Level_Procedure >= G_debug_level) THEN
1309 FND_LOG.STRING(Fnd_Log.Level_Procedure,l_mod_name,'Call to CSD_REPAIR_ACTUAL_LINES_REC_PKG.Update_Row');
1310 END IF;
1311
1312 BEGIN
1313 -- Invoke table handler(CSD_REPAIR_ACTUAL_LINES_PKG.Update_Row)
1314 CSD_REPAIR_ACTUAL_LINES_PKG.Update_Row(
1315 p_REPAIR_ACTUAL_LINE_ID => px_CSD_ACTUAL_LINES_REC.REPAIR_ACTUAL_LINE_ID
1316 ,p_OBJECT_VERSION_NUMBER => px_CSD_ACTUAL_LINES_REC.OBJECT_VERSION_NUMBER
1317 ,p_ESTIMATE_DETAIL_ID => px_CSD_ACTUAL_LINES_REC.ESTIMATE_DETAIL_ID
1318 ,p_REPAIR_ACTUAL_ID => px_CSD_ACTUAL_LINES_REC.REPAIR_ACTUAL_ID
1319 ,p_REPAIR_LINE_ID => px_CSD_ACTUAL_LINES_REC.REPAIR_LINE_ID
1320 ,p_CREATED_BY => FND_API.G_MISS_NUM
1321 ,p_CREATION_DATE => FND_API.G_MISS_DATE
1322 ,p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID
1323 ,p_LAST_UPDATE_DATE => SYSDATE
1324 ,p_LAST_UPDATE_LOGIN => FND_GLOBAL.CONC_LOGIN_ID
1325 ,p_ITEM_COST => px_CSD_ACTUAL_LINES_REC.ITEM_COST
1326 ,p_JUSTIFICATION_NOTES => px_CSD_ACTUAL_LINES_REC.JUSTIFICATION_NOTES
1327 ,p_RESOURCE_ID => px_CSD_ACTUAL_LINES_REC.RESOURCE_ID
1328 ,p_OVERRIDE_CHARGE_FLAG => px_CSD_ACTUAL_LINES_REC.OVERRIDE_CHARGE_FLAG
1329 ,p_ACTUAL_SOURCE_CODE => px_CSD_ACTUAL_LINES_REC.ACTUAL_SOURCE_CODE
1330 ,p_ACTUAL_SOURCE_ID => px_CSD_ACTUAL_LINES_REC.ACTUAL_SOURCE_ID
1331 ,p_WARRANTY_CLAIM_FLAG => px_CSD_ACTUAL_LINES_REC.WARRANTY_CLAIM_FLAG
1332 ,p_WARRANTY_NUMBER => px_CSD_ACTUAL_LINES_REC.WARRANTY_NUMBER
1333 ,p_WARRANTY_STATUS_CODE => px_CSD_ACTUAL_LINES_REC.WARRANTY_STATUS_CODE
1334 ,p_REPLACED_ITEM_ID => px_CSD_ACTUAL_LINES_REC.REPLACED_ITEM_ID
1335 ,p_ATTRIBUTE_CATEGORY => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE_CATEGORY
1336 ,p_ATTRIBUTE1 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE1
1337 ,p_ATTRIBUTE2 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE2
1338 ,p_ATTRIBUTE3 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE3
1339 ,p_ATTRIBUTE4 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE4
1340 ,p_ATTRIBUTE5 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE5
1341 ,p_ATTRIBUTE6 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE6
1342 ,p_ATTRIBUTE7 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE7
1343 ,p_ATTRIBUTE8 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE8
1344 ,p_ATTRIBUTE9 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE9
1345 ,p_ATTRIBUTE10 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE10
1346 ,p_ATTRIBUTE11 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE11
1347 ,p_ATTRIBUTE12 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE12
1348 ,p_ATTRIBUTE13 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE13
1349 ,p_ATTRIBUTE14 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE14
1350 ,p_ATTRIBUTE15 => px_CSD_ACTUAL_LINES_REC.ATTRIBUTE15
1351 ,p_LOCATOR_ID => px_CSD_ACTUAL_LINES_REC.LOCATOR_ID
1352 ,p_LOC_SEGMENT1 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT1
1353 ,p_LOC_SEGMENT2 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT2
1354 ,p_LOC_SEGMENT3 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT3
1355 ,p_LOC_SEGMENT4 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT4
1356 ,p_LOC_SEGMENT5 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT5
1357 ,p_LOC_SEGMENT6 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT6
1358 ,p_LOC_SEGMENT7 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT7
1359 ,p_LOC_SEGMENT8 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT8
1360 ,p_LOC_SEGMENT9 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT9
1361 ,p_LOC_SEGMENT10 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT10
1362 ,p_LOC_SEGMENT11 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT11
1363 ,p_LOC_SEGMENT12 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT12
1364 ,p_LOC_SEGMENT13 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT13
1365 ,p_LOC_SEGMENT14 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT14
1366 ,p_LOC_SEGMENT15 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT15
1367 ,p_LOC_SEGMENT16 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT16
1368 ,p_LOC_SEGMENT17 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT17
1369 ,p_LOC_SEGMENT18 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT18
1370 ,p_LOC_SEGMENT19 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT19
1371 ,p_LOC_SEGMENT20 => px_CSD_ACTUAL_LINES_REC.LOC_SEGMENT20);
1372
1373
1374 EXCEPTION
1375 WHEN OTHERS THEN
1376 IF ( Fnd_Log.Level_Exception >= G_debug_level) THEN
1377 FND_LOG.STRING(Fnd_Log.Level_Exception,l_mod_name,'Others exception in CSD_REPAIR_ACTUAL_LINES_PKG.Update_Row Cal:'||SubStr('Error '||TO_CHAR(SQLCODE)||': '||SQLERRM, 1,255));
1378 END IF;
1379 RAISE FND_API.G_EXC_ERROR;
1380 END;
1381 --
1382 -- End of API body
1383 --
1384
1385 -- Standard check of p_commit.
1386 IF FND_API.To_Boolean( p_commit ) THEN
1387 COMMIT WORK;
1388 END IF;
1389
1390 -- Standard call to get message count and IF count is get message info.
1391 FND_MSG_PUB.Count_And_Get
1392 (p_count => x_msg_count,
1393 p_data => x_msg_data );
1394
1395 EXCEPTION
1396 WHEN FND_API.G_EXC_ERROR THEN
1397 IF ( Fnd_Log.Level_Exception >= G_debug_level) THEN
1398 FND_LOG.STRING(Fnd_Log.Level_Exception,l_mod_name,'In FND_API.G_EXC_ERROR exception');
1399 END IF;
1400 x_return_status := FND_API.G_RET_STS_ERROR ;
1401 ROLLBACK TO UPDATE_REPAIR_ACTUAL_LINES;
1402 FND_MSG_PUB.Count_And_Get
1403 (p_count => x_msg_count,
1404 p_data => x_msg_data );
1405 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1406 IF ( Fnd_Log.Level_Exception >= G_debug_level) THEN
1407 FND_LOG.STRING(Fnd_Log.Level_Exception,l_mod_name,'In FND_API.G_EXC_UNEXPECTED_ERROR exception ');
1408 END IF;
1409 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1410 ROLLBACK TO UPDATE_REPAIR_ACTUAL_LINES;
1411 FND_MSG_PUB.Count_And_Get
1412 ( p_count => x_msg_count,
1413 p_data => x_msg_data );
1414 WHEN OTHERS THEN
1415 IF ( Fnd_Log.Level_Exception >= G_debug_level) THEN
1416 FND_LOG.STRING(Fnd_Log.Level_Exception,l_mod_name,'In OTHERS exception');
1417 FND_LOG.STRING(Fnd_Log.Level_Exception,l_mod_name,'Sql Err Msg :'||SQLERRM );
1418 END IF;
1419 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1420 ROLLBACK TO UPDATE_REPAIR_ACTUAL_LINES;
1421 IF FND_MSG_PUB.Check_Msg_Level
1422 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1423 THEN
1424 FND_MSG_PUB.Add_Exc_Msg
1425 (G_PKG_NAME ,
1426 l_api_name );
1427 END IF;
1428 FND_MSG_PUB.Count_And_Get
1429 (p_count => x_msg_count,
1430 p_data => x_msg_data );
1431
1432 End UPDATE_REPAIR_ACTUAL_LINES;
1433
1434
1435 /*--------------------------------------------------------------------*/
1436 /* procedure name: DELETE_REPAIR_ACTUAL_LINES */
1437 /* description : procedure used to Delete Repair Actuals */
1438 /* */
1439 /* */
1440 /* */
1441 /* Called from : Depot Repair Actuals UI */
1442 /* Input Parm : */
1443 /* p_api_version NUMBER Req Api Version number */
1444 /* p_init_msg_list VARCHAR2 Opt Initialize message stack */
1445 /* p_commit VARCHAR2 Opt Commits in API */
1446 /* p_validation_level NUMBER Opt validation steps */
1447 /* px_CSD_ACTUAL_LINES_REC REC Req Actuals lines Record */
1448 /* px_Charges_Rec REC Req Charges line Record */
1449 /* Output Parm : */
1450 /* x_return_status VARCHAR2 Return status after the call. */
1451 /* x_msg_count NUMBER Number of messages in stack */
1452 /* x_msg_data VARCHAR2 Mesg. text if x_msg_count >= 1 */
1453 /* Change Hist : */
1454 /* 08/11/03 travikan Initial Creation. */
1455 /* */
1456 /* */
1457 /* */
1458 /*--------------------------------------------------------------------*/
1459 PROCEDURE DELETE_REPAIR_ACTUAL_LINES(
1460 P_Api_Version IN NUMBER,
1461 P_Commit IN VARCHAR2,
1462 P_Init_Msg_List IN VARCHAR2,
1463 p_validation_level IN NUMBER,
1464 px_CSD_ACTUAL_LINES_REC IN OUT NOCOPY CSD_ACTUAL_LINES_REC_TYPE,
1465 px_Charges_Rec IN OUT NOCOPY CS_CHARGE_DETAILS_PUB.CHARGES_REC_TYPE,
1466 X_Return_Status OUT NOCOPY VARCHAR2,
1467 X_Msg_Count OUT NOCOPY NUMBER,
1468 X_Msg_Data OUT NOCOPY VARCHAR2
1469 )
1470
1471 IS
1472 -- Variables used in FND Log
1473 l_stat_level number := FND_LOG.LEVEL_STATEMENT;
1474 l_proc_level number := FND_LOG.LEVEL_PROCEDURE;
1475 l_event_level number := FND_LOG.LEVEL_EVENT;
1476 l_excep_level number := FND_LOG.LEVEL_EXCEPTION;
1477 l_error_level number := FND_LOG.LEVEL_ERROR;
1478 l_unexp_level number := FND_LOG.LEVEL_UNEXPECTED;
1479 l_mod_name varchar2(2000) := 'csd.plsql.csd_repair_actual_lines_pvt.delete_repair_actual_lines';
1480
1481
1482 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_REPAIR_ACTUAL_LINES';
1483 l_api_version CONSTANT NUMBER := 1.0;
1484 l_msg_count NUMBER;
1485 l_msg_data VARCHAR2(100);
1486 l_msg_index NUMBER;
1487
1488 l_actual_line_id NUMBER;
1489 l_obj_ver_num NUMBER;
1490 l_act_line_count NUMBER;
1491
1492 -- swai: 12.1 service costing uptake bug 6960295
1493 -- Since actual lines imported from WIP cannot be deleted, it is not
1494 -- necessary to pass the cost flag. But we will do it to be consistent
1495 -- with CREATE and UPDATE. If we allow deletion of actual lines from
1496 -- WIP in the future, then cost flag should be set to 'N' for those
1497 -- lines.
1498 l_cs_cost_flag VARCHAR2(1) := 'Y';
1499
1500 CURSOR repair_actual_lines(p_actual_line_id IN NUMBER) IS
1501 SELECT
1502 a.repair_actual_line_id,
1503 a.object_version_number
1504 FROM csd_repair_actual_lines a,
1505 csd_repairs b
1506 WHERE a.repair_line_id = b.repair_line_id
1507 and a.repair_actual_line_id = p_actual_line_id;
1508
1509 BEGIN
1510
1511 -- Standard Start of API savepoint
1512 SAVEPOINT DELETE_REPAIR_ACTUAL_LINES;
1513
1514 -- Standard call to check for call compatibility.
1515 IF NOT FND_API.Compatible_API_Call ( l_api_version,
1516 p_api_version,
1517 l_api_name,
1518 G_PKG_NAME)
1519 THEN
1520 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1521 END IF;
1522
1523 -- Initialize message list if p_init_msg_list is set to TRUE.
1524 IF FND_API.to_Boolean( p_init_msg_list ) THEN
1525 FND_MSG_PUB.initialize;
1526 END IF;
1527
1528 -- Initialize API return status to success
1529 x_return_status := FND_API.G_RET_STS_SUCCESS;
1530
1531 -- Api body starts
1532 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
1533 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'At the Beginning of delete_repair_actual_lines');
1534 END IF;
1535
1536 -- Dump the in parameters in the log file
1537 -- if the debug level > 5
1538 -- If fnd_profile.value('CSD_DEBUG_LEVEL') > 5 then
1539 /* TBD
1540 if (g_debug > 5) then
1541 csd_gen_utility_pvt.dump_actuals_rec
1542 ( p_CSD_ACTUAL_LINES_REC => px_CSD_ACTUAL_LINES_REC);
1543 end if;
1544 */
1545
1546 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
1547 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Begin Check reqd parametes');
1548 END IF;
1549
1550 -- Check the required parameter
1551 CSD_PROCESS_UTIL.Check_Reqd_Param
1552 ( p_param_value => px_CSD_ACTUAL_LINES_REC.repair_actual_line_id,
1553 p_param_name => 'REPAIR_ACTUAL_LINE_ID',
1554 p_api_name => l_api_name);
1555
1556 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
1557 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'End Check reqd parametes');
1558 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Begin Validate Repair Line id');
1559 END IF;
1560
1561 -- Validate the repair line ID
1562 IF NOT( CSD_PROCESS_UTIL.Validate_rep_line_id
1563 ( p_repair_line_id => px_CSD_ACTUAL_LINES_REC.repair_line_id )) THEN
1564 RAISE FND_API.G_EXC_ERROR;
1565 END IF;
1566
1567 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
1568 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'End Validate Repair Line id');
1569 END IF;
1570
1571 --
1572 -- API body
1573 --
1574
1575 -- Actual deletes allowed only for Actual lines created manually
1576 -- or for the ones copied from the estimates
1577 -- Check the actual_source_code in Repair_Actual_Lines_Rec
1578
1579 IF (px_CSD_ACTUAL_LINES_REC.actual_source_code in ('MANUAL', 'ESTIMATE')) then
1580
1581 -- Validate the repair actual line id against csd_repair_actual_lines
1582 -- If it is interfaced then raise FND_API.G_EXC_ERROR
1583 IF NVL(px_CSD_ACTUAL_LINES_REC.repair_actual_line_id,FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
1584
1585 OPEN repair_actual_lines(px_CSD_ACTUAL_LINES_REC.repair_actual_line_id);
1586 FETCH repair_actual_lines
1587 INTO l_actual_line_id,
1588 l_obj_ver_num;
1589
1590 IF repair_actual_lines%NOTFOUND THEN
1591 FND_MESSAGE.SET_NAME('CSD','CSD_API_ACTUAL_LINES_MISSING');
1592 FND_MESSAGE.SET_TOKEN('REPAIR_ACTUAL_LINE_ID',l_actual_line_id);
1593 FND_MSG_PUB.ADD;
1594 IF (Fnd_Log.Level_Error >= Fnd_Log.G_Current_Runtime_Level) THEN
1595 FND_LOG.MESSAGE(Fnd_Log.Level_Error,l_mod_name, FALSE);
1596 END IF;
1597 RAISE FND_API.G_EXC_ERROR;
1598 END IF;
1599
1600 IF repair_actual_lines%ISOPEN THEN
1601 CLOSE repair_actual_lines;
1602 END IF;
1603
1604 END IF;
1605
1606 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
1607 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Validate Object Version Number');
1608 END IF;
1609
1610 IF NVL(px_CSD_ACTUAL_LINES_REC.object_version_number,FND_API.G_MISS_NUM) <>l_obj_ver_num THEN
1611 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
1612 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Object Version Number does not match'
1613 || ' for the Repair Actual Line ID = ' || l_actual_line_id);
1614 END IF;
1615
1616 -- Modified the message name for bugfix 3281321. vkjain.
1617 -- FND_MESSAGE.SET_NAME('CSD','CSD_OBJ_VER_MISMATCH');
1618 FND_MESSAGE.SET_NAME('CSD','CSD_ACT_LIN_OBJ_VER_MISMATCH');
1619 -- FND_MESSAGE.SET_TOKEN('REPAIR_ACTUAL_LINE_ID',l_actual_line_id);
1620 FND_MSG_PUB.ADD;
1621 IF (Fnd_Log.Level_Error >= Fnd_Log.G_Current_Runtime_Level) THEN
1622 FND_LOG.MESSAGE(Fnd_Log.Level_Error,l_mod_name, FALSE);
1623 END IF;
1624 RAISE FND_API.G_EXC_ERROR;
1625 END IF;
1626
1627 IF (px_Charges_Rec.order_header_id is not null) THEN
1628 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
1629 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Repair Actual Line is Interfaced to Order Management');
1630 END IF;
1631
1632 FND_MESSAGE.SET_NAME('CSD','CSD_ACT_LIN_OM_IFACE');
1633 FND_MESSAGE.SET_TOKEN('REPAIR_ACTUAL_LINE_ID',l_actual_line_id);
1634 FND_MSG_PUB.ADD;
1635 IF (Fnd_Log.Level_Error >= Fnd_Log.G_Current_Runtime_Level) THEN
1636 FND_LOG.MESSAGE(Fnd_Log.Level_Error,l_mod_name, FALSE);
1637 END IF;
1638 RAISE FND_API.G_EXC_ERROR;
1639 END IF;
1640
1641 -- Call table handler CSD_REPAIR_ESTIMATE_PVT.Process_Estimate_Lines to
1642 -- delete the record in CS_ESTIMATE_DETAILS
1643 IF ( Fnd_Log.Level_Procedure >= G_debug_level) THEN
1644 FND_LOG.STRING(Fnd_Log.Level_Procedure,l_mod_name,'Call process_estimate_lines to delete charge line');
1645 END IF;
1646
1647 CSD_REPAIR_ESTIMATE_PVT.PROCESS_ESTIMATE_LINES
1648 ( p_api_version => 1.0 ,
1649 p_commit => fnd_api.g_false,
1650 p_init_msg_list => fnd_api.g_true,
1651 p_validation_level => fnd_api.g_valid_level_full,
1652 p_action => 'DELETE',
1653 -- swai: 12.1 service costing uptake bug 6960295
1654 p_cs_cost_flag => l_cs_cost_flag,
1655 x_Charges_Rec => px_charges_rec,
1656 x_return_status => x_return_status,
1657 x_msg_count => x_msg_count,
1658 x_msg_data => x_msg_data);
1659
1660 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1661 RAISE FND_API.G_EXC_ERROR;
1662 END IF;
1663
1664 IF ( Fnd_Log.Level_Procedure >= G_debug_level) THEN
1665 FND_LOG.STRING(Fnd_Log.Level_Procedure,l_mod_name,'Call to CSD_REPAIR_ACTUAL_LINES_PKG.Delete_Row');
1666 END IF;
1667
1668 BEGIN
1669
1670 -- Invoke table handler(CSD_REPAIR_ACTUAL_LINES_PKG.Delete_Row)
1671 CSD_REPAIR_ACTUAL_LINES_PKG.Delete_Row(
1672 p_REPAIR_ACTUAL_LINE_ID => px_CSD_ACTUAL_LINES_REC.REPAIR_ACTUAL_LINE_ID
1673 ,p_OBJECT_VERSION_NUMBER => px_CSD_ACTUAL_LINES_REC.OBJECT_VERSION_NUMBER);
1674
1675 EXCEPTION
1676 WHEN OTHERS THEN
1677 IF ( Fnd_Log.Level_Exception >= G_debug_level) THEN
1678 FND_LOG.STRING(Fnd_Log.Level_Exception,l_mod_name,'Others exception in CSD_REPAIR_ACTUAL_LINES_PKG.Delete_Row Call :'||SubStr('Error '||TO_CHAR(SQLCODE)||': '||SQLERRM, 1,255));
1679 END IF;
1680 x_return_status := FND_API.G_RET_STS_ERROR;
1681 END;
1682
1683 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1684 RAISE FND_API.G_EXC_ERROR;
1685 END IF;
1686
1687 END IF;
1688 --
1689 -- End of API body
1690 --
1691
1692 -- Standard check of p_commit.
1693 IF FND_API.To_Boolean( p_commit ) THEN
1694 COMMIT WORK;
1695 END IF;
1696
1697 -- Standard call to get message count and IF count is get message info.
1698 FND_MSG_PUB.Count_And_Get
1699 (p_count => x_msg_count,
1700 p_data => x_msg_data );
1701 EXCEPTION
1702 WHEN FND_API.G_EXC_ERROR THEN
1703 IF ( Fnd_Log.Level_Exception >= G_debug_level) THEN
1704 FND_LOG.STRING(Fnd_Log.Level_Exception,l_mod_name,'In FND_API.G_EXC_ERROR exception');
1705 END IF;
1706 x_return_status := FND_API.G_RET_STS_ERROR ;
1707 ROLLBACK TO DELETE_REPAIR_ACTUAL_LINES;
1708 FND_MSG_PUB.Count_And_Get
1709 (p_count => x_msg_count,
1710 p_data => x_msg_data );
1711 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1712 IF ( Fnd_Log.Level_Exception >= G_debug_level) THEN
1713 FND_LOG.STRING(Fnd_Log.Level_Exception,l_mod_name,'In FND_API.G_EXC_UNEXPECTED_ERROR exception ');
1714 END IF;
1715 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1716 ROLLBACK TO DELETE_REPAIR_ACTUAL_LINES;
1717 FND_MSG_PUB.Count_And_Get
1718 ( p_count => x_msg_count,
1719 p_data => x_msg_data );
1720 WHEN OTHERS THEN
1721 IF ( Fnd_Log.Level_Exception >= G_debug_level) THEN
1722 FND_LOG.STRING(Fnd_Log.Level_Exception,l_mod_name,'In OTHERS exception');
1723 FND_LOG.STRING(Fnd_Log.Level_Exception,l_mod_name,'Sql Err Msg :'||SQLERRM );
1724 END IF;
1725 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1726 ROLLBACK TO DELETE_REPAIR_ACTUAL_LINES;
1727 IF FND_MSG_PUB.Check_Msg_Level
1728 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1729 THEN
1730 FND_MSG_PUB.Add_Exc_Msg
1731 (G_PKG_NAME ,
1732 l_api_name );
1733 END IF;
1734 FND_MSG_PUB.Count_And_Get
1735 (p_count => x_msg_count,
1736 p_data => x_msg_data );
1737
1738 End DELETE_REPAIR_ACTUAL_LINES;
1739
1740
1741 /*--------------------------------------------------------------------*/
1742 /* procedure name: LOCK_REPAIR_ACTUAL_LINES */
1743 /* description : procedure used to Delete Repair Actuals */
1744 /* */
1745 /* */
1746 /* */
1747 /* Called from : Depot Repair Actuals UI */
1748 /* Input Parm : */
1749 /* p_api_version NUMBER Req Api Version number */
1750 /* p_init_msg_list VARCHAR2 Opt Initialize message stack */
1751 /* p_commit VARCHAR2 Opt Commits in API */
1752 /* p_validation_level NUMBER Opt validation steps */
1753 /* px_CSD_ACTUAL_LINES_REC REC Req Actuals lines Record */
1754 /* Output Parm : */
1755 /* x_return_status VARCHAR2 Return status after the call. */
1756 /* x_msg_count NUMBER Number of messages in stack */
1757 /* x_msg_data VARCHAR2 Mesg. text if x_msg_count >= 1 */
1758 /* Change Hist : */
1759 /* 08/11/03 travikan Initial Creation. */
1760 /* */
1761 /* */
1762 /* */
1763 /*--------------------------------------------------------------------*/
1764 PROCEDURE LOCK_REPAIR_ACTUAL_LINES(
1765 P_Api_Version IN NUMBER,
1766 P_Commit IN VARCHAR2,
1767 P_Init_Msg_List IN VARCHAR2,
1768 p_validation_level IN NUMBER,
1769 px_CSD_ACTUAL_LINES_REC IN OUT NOCOPY CSD_ACTUAL_LINES_REC_TYPE,
1770 X_Return_Status OUT NOCOPY VARCHAR2,
1771 X_Msg_Count OUT NOCOPY NUMBER,
1772 X_Msg_Data OUT NOCOPY VARCHAR2
1773 )
1774
1775 IS
1776 -- Variables used in FND Log
1777 l_stat_level number := FND_LOG.LEVEL_STATEMENT;
1778 l_proc_level number := FND_LOG.LEVEL_PROCEDURE;
1779 l_event_level number := FND_LOG.LEVEL_EVENT;
1780 l_excep_level number := FND_LOG.LEVEL_EXCEPTION;
1781 l_error_level number := FND_LOG.LEVEL_ERROR;
1782 l_unexp_level number := FND_LOG.LEVEL_UNEXPECTED;
1783 l_mod_name varchar2(2000) := 'csd.plsql.csd_repair_actual_lines_pvt.lock_repair_actual_lines';
1784
1785 l_api_name CONSTANT VARCHAR2(30) := 'LOCK_REPAIR_ACTUAL_LINES';
1786 l_api_version CONSTANT NUMBER := 1.0;
1787 l_msg_count NUMBER;
1788 l_msg_data VARCHAR2(100);
1789 l_msg_index NUMBER;
1790
1791 BEGIN
1792 -- Standard Start of API savepoint
1793 SAVEPOINT LOCK_REPAIR_ACTUAL_LINES;
1794
1795 -- Standard call to check for call compatibility.
1796 IF NOT FND_API.Compatible_API_Call ( l_api_version,
1797 p_api_version,
1798 l_api_name,
1799 G_PKG_NAME)
1800 THEN
1801 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1802 END IF;
1803
1804 -- Initialize message list if p_init_msg_list is set to TRUE.
1805 IF FND_API.to_Boolean( p_init_msg_list ) THEN
1806 FND_MSG_PUB.initialize;
1807 END IF;
1808
1809 -- Initialize API return status to success
1810 x_return_status := FND_API.G_RET_STS_SUCCESS;
1811
1812 -- Api body starts
1813 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
1814 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'At the Beginning of lock_repair_actual_lines');
1815 END IF;
1816 -- Dump the in parameters in the log file
1817 -- if the debug level > 5
1818 -- If fnd_profile.value('CSD_DEBUG_LEVEL') > 5 then
1819 -- if (g_debug > 5) then
1820 -- csd_gen_utility_pvt.dump_actuals_rec
1821 -- ( p_CSD_ACTUAL_LINES_REC => px_CSD_ACTUAL_LINES_REC);
1822 -- end if;
1823
1824 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
1825 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'Begin Check reqd parameter');
1826 END IF;
1827
1828 -- Check the required parameter
1829 CSD_PROCESS_UTIL.Check_Reqd_Param
1830 ( p_param_value => px_CSD_ACTUAL_LINES_REC.repair_actual_id,
1831 p_param_name => 'REPAIR_ACTUAL_LINE_ID',
1832 p_api_name => l_api_name);
1833
1834 IF ( Fnd_Log.Level_Statement >= G_debug_level) THEN
1835 FND_LOG.STRING(Fnd_Log.Level_Statement,l_mod_name,'End Check reqd parameter');
1836 END IF;
1837
1838 --
1839 -- API body
1840 --
1841 IF ( Fnd_Log.Level_Procedure >= G_debug_level) THEN
1842 FND_LOG.STRING(Fnd_Log.Level_Procedure,l_mod_name,'Call to CSD_REPAIR_ACTUAL_LINES_PKG.Lock_Row');
1843 END IF;
1844
1845 BEGIN
1846
1847 -- Invoke table handler(CSD_REPAIR_ACTUAL_LINES_PKG.Lock_Row)
1848 CSD_REPAIR_ACTUAL_LINES_PKG.Lock_Row(
1849 p_REPAIR_ACTUAL_LINE_ID => px_CSD_ACTUAL_LINES_REC.REPAIR_ACTUAL_LINE_ID
1850 ,p_OBJECT_VERSION_NUMBER => px_CSD_ACTUAL_LINES_REC.OBJECT_VERSION_NUMBER);
1851
1852 EXCEPTION
1853 WHEN OTHERS THEN
1854 IF ( Fnd_Log.Level_Exception >= G_debug_level) THEN
1855 FND_LOG.STRING(Fnd_Log.Level_Exception,l_mod_name,'Others exception in CSD_REPAIR_ACTUAL_LINES_PKG.Lock_Row Call :'||SubStr('Error '||TO_CHAR(SQLCODE)||': '||SQLERRM, 1,255));
1856 END IF;
1857 x_return_status := FND_API.G_RET_STS_ERROR;
1858 END;
1859
1860 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1861 RAISE FND_API.G_EXC_ERROR;
1862 END IF;
1863
1864 --
1865 -- End of API body
1866 --
1867
1868 -- Standard check of p_commit.
1869 IF FND_API.To_Boolean( p_commit ) THEN
1870 COMMIT WORK;
1871 END IF;
1872
1873 -- Standard call to get message count and IF count is get message info.
1874 FND_MSG_PUB.Count_And_Get
1875 (p_count => x_msg_count,
1876 p_data => x_msg_data );
1877 EXCEPTION
1878 WHEN FND_API.G_EXC_ERROR THEN
1879 IF ( Fnd_Log.Level_Exception >= G_debug_level) THEN
1880 FND_LOG.STRING(Fnd_Log.Level_Exception,l_mod_name,'In FND_API.G_EXC_ERROR exception');
1881 END IF;
1882 x_return_status := FND_API.G_RET_STS_ERROR ;
1883 ROLLBACK TO LOCK_REPAIR_ACTUAL_LINES;
1884 FND_MSG_PUB.Count_And_Get
1885 (p_count => x_msg_count,
1886 p_data => x_msg_data );
1887 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1888 IF ( Fnd_Log.Level_Exception >= G_debug_level) THEN
1889 FND_LOG.STRING(Fnd_Log.Level_Exception,l_mod_name,'In FND_API.G_EXC_UNEXPECTED_ERROR exception ');
1890 END IF;
1891 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1892 ROLLBACK TO LOCK_REPAIR_ACTUAL_LINES;
1893 FND_MSG_PUB.Count_And_Get
1894 ( p_count => x_msg_count,
1895 p_data => x_msg_data );
1896 WHEN OTHERS THEN
1897 IF ( Fnd_Log.Level_Exception >= G_debug_level) THEN
1898 FND_LOG.STRING(Fnd_Log.Level_Exception,l_mod_name,'In OTHERS exception');
1899 FND_LOG.STRING(Fnd_Log.Level_Exception,l_mod_name,'Sql Err Msg :'||SQLERRM );
1900 END IF;
1901 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1902 ROLLBACK TO LOCK_REPAIR_ACTUAL_LINES;
1903 IF FND_MSG_PUB.Check_Msg_Level
1904 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1905 THEN
1906 FND_MSG_PUB.Add_Exc_Msg
1907 (G_PKG_NAME ,
1908 l_api_name );
1909 END IF;
1910 FND_MSG_PUB.Count_And_Get
1911 (p_count => x_msg_count,
1912 p_data => x_msg_data );
1913
1914 End LOCK_REPAIR_ACTUAL_LINES;
1915
1916 End CSD_REPAIR_ACTUAL_LINES_PVT;