[Home] [Help]
PACKAGE BODY: APPS.CS_SERVICEREQUEST_UTIL
Source
1 PACKAGE BODY CS_ServiceRequest_UTIL AS
2 /* $Header: csusrb.pls 120.30 2008/01/09 11:58:04 nveerara ship $ */
3
4 G_ACTION_SUBTYPE CONSTANT VARCHAR2(5) := 'ACT';
5 G_PKG_NAME CONSTANT VARCHAR2(30) := 'CS_ServiceRequest_UTIL';
6 G_TABLE_NAME CONSTANT VARCHAR2(40) := 'CS_INCIDENTS_ALL_B';
7 G_TL_TABLE_NAME CONSTANT VARCHAR2(40) := 'CS_INCIDENTS_ALL_TL';
8
9 -- -----------------------------------------------------------------------------
10 -- Procedure Name : get_org_details
11 -- Parameter :
12 -- IN : p_org_id This is a foreign key to table
13 -- mtl_paramters
14 -- OUT : x_maint_org Maintenance organization associated
15 -- with p_org_id
16 -- : x_eam_enabled_flag Eam Enabled flag for paramter p_org_id
17 -- : x_return_status Indicates success or error condition
18 -- encountered by the procedure
19 -- Description : This procedure checks whether party role code exist in
20 -- party role table and is active on system date or not.
21 -- Modification History
22 -- Date Name Description
23 ---------- -------- ------------------------------------------------------------
24 -- 04/21/05 smisra Created
25 -- 08/29/05 smisra Used NVL in select statement
26 -- -----------------------------------------------------------------------------
27 PROCEDURE get_org_details
28 ( p_org_id IN NUMBER
29 , x_eam_enabled_flag OUT NOCOPY VARCHAR2
30 , x_maint_org_id OUT NOCOPY NUMBER
31 , x_master_org_id OUT NOCOPY NUMBER
32 , x_return_Status OUT NOCOPY VARCHAR2
33 ) IS
34 CURSOR c_org_info IS
35 SELECT
36 NVL(maint_organization_id,-1)
37 , NVL(master_organization_id,-1)
38 , NVL(eam_enabled_flag,'X')
39 FROM mtl_parameters
40 WHERE organization_id = p_org_id;
41 BEGIN
42 OPEN c_org_info;
43 FETCH c_org_info INTO x_maint_org_id, x_master_org_id, x_eam_enabled_flag;
44 IF c_org_info % NOTFOUND
45 THEN
46 x_return_status := FND_API.G_RET_STS_ERROR;
47 ELSE
48 x_return_status := FND_API.G_RET_STS_SUCCESS;
49 END IF;
50 CLOSE c_org_info;
51 --
52 EXCEPTION
53 WHEN OTHERS THEN
54 FND_MESSAGE.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
55 FND_MESSAGE.set_token('P_TEXT','CS_SERVICEREQUEST_UTIL.get_org_details'||'-'||SQLERRM);
56 FND_MSG_PUB.ADD;
57 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
58 END get_org_details;
59 -- -----------------------------------------------------------------------------
60 -- Procedure Name : get_status_details
61 -- Parameter :
62 -- IN : p_status_id This foreign key to
63 -- cs_incident_statuses_b
64 -- OUT : x_close_flag
65 -- : x_disallow_request_update Any SR attribute except statrus
66 -- can not be updated.
67 -- : x_disallow_agent_dispatch owner update not allowed
68 -- : x_disallow_product_update product update not allowed
69 -- : x_pending_approval_flag Indicates if a status id is
70 -- used as intermediate status
71 -- in ERES process
72 -- : x_intermediated_status_id Intermediate status to be
73 -- used before ERES action
74 -- : x_approval_action_status_id Status to be used for
75 -- ERES approval
76 -- : x_rejection_action_status_id Status to be used for
77 -- ERES rejection
78 -- : x_return_stauts indicates if validation failed or
79 -- succeeded
80 -- Description : This procedure accesses incident status table and get all
81 -- attributes associated with incident status.
82 -- Modification History
83 -- Date Name Description
84 -- -------- -------- -----------------------------------------------------------
85 -- 06/20/05 smisra Created
86 -- -----------------------------------------------------------------------------
87 PROCEDURE get_status_details
88 ( p_status_id IN NUMBER
89 , x_close_flag OUT NOCOPY VARCHAR2
90 , x_disallow_request_update OUT NOCOPY VARCHAR2
91 , x_disallow_agent_dispatch OUT NOCOPY VARCHAR2
92 , x_disallow_product_update OUT NOCOPY VARCHAR2
93 , x_pending_approval_flag OUT NOCOPY VARCHAR2
94 , x_intermediate_status_id OUT NOCOPY VARCHAR2
95 , x_approval_action_status_id OUT NOCOPY VARCHAR2
96 , x_rejection_action_status_id OUT NOCOPY VARCHAR2
97 , x_return_status OUT NOCOPY VARCHAR2
98 ) IS
99 l_dt DATE;
100 BEGIN
101 x_return_status := FND_API.G_RET_STS_SUCCESS;
102 l_dt := trunc(sysdate);
103 SELECT
104 NVL(close_flag ,'N')
105 , NVL(disallow_request_update,'N')
106 , NVL(disallow_agent_dispatch,'N')
107 , NVL(disallow_product_update,'N')
108 , NVL(pending_approval_flag ,'N')
109 , intermediate_status_id
110 , approval_action_status_id
111 , rejection_action_status_id
112 INTO
113 x_close_flag
114 , x_disallow_request_update
115 , x_disallow_agent_dispatch
116 , x_disallow_product_update
117 , x_pending_approval_flag
118 , x_intermediate_status_id
119 , x_approval_action_status_id
120 , x_rejection_action_status_id
121 FROM
122 cs_incident_statuses_b
123 WHERE incident_status_id = p_status_id
124 -- AND trunc(sysdate) BETWEEN NVL(start_date_active,l_dt)
125 -- AND NVL(end_date_active ,l_dt)
126 ;
127 EXCEPTION
128 WHEN NO_DATA_FOUND THEN
129 x_return_status := FND_API.G_RET_STS_ERROR;
130 WHEN OTHERS THEN
131 FND_MESSAGE.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
132 FND_MESSAGE.set_token ('P_TEXT','CS_SERVICEREQUEST_UTIL.get_status_details'||'-'||SQLERRM);
133 FND_MSG_PUB.ADD;
134 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
135 END get_status_details;
136 -- -----------------------------------------------------------------------------
137 -- Procedure Name : get_customer_product_details
138 -- Parameter :
139 -- IN : p_customer_product_id This foreign key to
140 -- csi_item_instances table.
141 -- OUT :
142 -- : x_party_source_table Party source table.
143 -- : x_party_id customer product customer Id
144 -- : x_inv_master_org_id inventory master org
145 -- : x_inv_item_id Inventory item associated with
146 -- customer product
147 -- : x_maint_org_id last validation org
148 -- : x_external_reference external reference for CP
149 -- : x_serial_number CP serail number
150 -- : x_start_dt_active Customer product Active from
151 -- : x_end_dt_active Customer product Active up to
152 -- : x_loc_type Customer product location type.
153 -- : x_return_stauts indicates if validation failed or
154 -- succeeded
155 -- Description : This procedure accesses customer product table and get
156 -- customer product details that a used by customer product
157 -- validation procedure
158 -- This procedure can be used by current serial number and
159 -- external reference validations too.
160 -- Modification History
161 -- Date Name Description
162 -- -------- -------- -----------------------------------------------------------
163 -- 05/10/05 smisra Created
164 -- -----------------------------------------------------------------------------
165 PROCEDURE get_customer_product_details
166 ( p_customer_product_id IN NUMBER
167 , x_party_source_table OUT NOCOPY VARCHAR2
168 , x_party_id OUT NOCOPY NUMBER
169 , x_inv_master_org_id OUT NOCOPY NUMBER
170 , x_inv_item_id OUT NOCOPY NUMBER
171 , x_maint_org_id OUT NOCOPY NUMBER
172 , x_external_reference OUT NOCOPY VARCHAR2
173 , x_serial_number OUT NOCOPY VARCHAR2
174 , x_start_dt_active OUT NOCOPY DATE
175 , x_end_dt_active OUT NOCOPY DATE
176 , x_loc_type OUT NOCOPY VARCHAR2
177 , x_return_status OUT NOCOPY VARCHAR2
178 ) IS
179
180 CURSOR c_cp IS
181 SELECT
182 owner_party_source_table
183 , owner_party_id
184 , inv_master_organization_id
185 , inventory_item_id
186 , last_vld_organization_id
187 , active_start_date
188 , active_end_date
189 , location_type_code
190 , external_reference
191 , serial_number
192 FROM
193 csi_item_instances
194 WHERE instance_id = p_customer_product_id;
195 --
196 BEGIN
197 OPEN c_cp;
198 FETCH c_cp
199 INTO
200 x_party_source_table
201 , x_party_id
202 , x_inv_master_org_id
203 , x_inv_item_id
204 , x_maint_org_id
205 , x_start_dt_active
206 , x_end_dt_active
207 , x_loc_type
208 , x_external_reference
209 , x_serial_number
210 ;
211 IF c_cp%NOTFOUND
212 THEN
213 x_return_status := FND_API.G_RET_STS_ERROR;
214 ELSE
215 x_return_status := FND_API.G_RET_STS_SUCCESS;
216 END IF;
217 CLOSE c_cp;
218 END;
219 -- -----------------------------------------------------------------------------
220 -- Procedure Name : get_item_details
221 -- Parameter :
222 -- IN : p_inv_item_id inventory item. This paramter and
223 -- p_inventory_org id is a key to
224 -- mtl_system_items_b table.
225 -- : p_inventory__org_id inventory organization
226 -- OUT : x_enable_flag indicates if item is enabled
227 -- : x_serv_req_enabled indicates if inv item can be used
228 -- in a service request.
229 -- : x_eam_item_type indicatea if inv item is an asset
230 -- : x_start_date_active Inventory item Active from
231 -- : x_end_date_active Inventory item Active up to
232 -- : x_return_stauts indicates if validation failed or
233 -- succeeded
234 -- Description : This procedure accesses item master table and gets inventory
235 -- item details that are used for further validations.
236 -- Modification History
237 -- Date Name Description
238 -- -------- -------- -----------------------------------------------------------
239 -- 05/05/05 smisra Created
240 -- 08/29/05 smisra Used NVL in select statement
241 -- -----------------------------------------------------------------------------
242 PROCEDURE get_item_details
243 ( p_inventory_org_id NUMBER
244 , p_inv_item_id NUMBER
245 , x_enabled_flag OUT NOCOPY VARCHAR2
246 , x_serv_req_enabled OUT NOCOPY VARCHAR2
247 , x_eam_item_type OUT NOCOPY NUMBER
248 , x_start_date_active OUT NOCOPY DATE
249 , x_end_date_active OUT NOCOPY DATE
250 , x_return_status OUT NOCOPY VARCHAR2
251 ) IS
252 BEGIN
253 SELECT
254 NVL(enabled_flag,'N')
255 , NVL(serv_req_enabled_code,'N')
256 , NVL(eam_item_type,-1)
257 , start_date_active
258 , end_date_active
259 INTO
260 x_enabled_flag
261 , x_serv_req_enabled
262 , x_eam_item_type
263 , x_start_date_active
264 , x_end_date_active
265 FROM
266 mtl_system_items
267 WHERE organization_id = p_inventory_org_id
268 AND inventory_item_id = p_inv_item_id;
269 x_return_status := FND_API.G_RET_STS_SUCCESS;
270 EXCEPTION
271 WHEN NO_DATA_FOUND THEN
272 x_return_status := FND_API.G_RET_STS_ERROR;
273 WHEN OTHERS THEN
274 x_return_status := FND_API.G_RET_STS_ERROR;
275 END;
276 -- -----------------------------------------------------------------------------
277 -- Function Name : get_unassigned_indicator
278 -- Parameter :
279 -- IN : p_incident_owner_id NUMBER
280 -- : p_owner_group_id NUMBER
281 -- Description : This function return unassinged indicator based on owner and
282 -- group values
283 -- Modification History
284 -- Date Name Description
285 -- -------- -------- -----------------------------------------------------------
286 -- 03/25/05 smisra Created
287 -- -----------------------------------------------------------------------------
288 FUNCTION get_unassigned_indicator
289 (p_incident_owner_id IN NUMBER
290 ,p_owner_group_id IN NUMBER) RETURN NUMBER
291 IS
292 BEGIN
293 if (p_incident_owner_id IS NOT NULL AND
294 p_owner_group_id IS NOT NULL )
295 THEN
296 RETURN 3;
297 ELSIF (p_incident_owner_id IS NULL AND
298 p_owner_group_id IS NOT NULL )
299 THEN
300 RETURN 2;
301 ELSIF (p_incident_owner_id IS NOT NULL AND
302 p_owner_group_id IS NULL )
303 THEN
304 RETURN 1;
305 ELSE
306 RETURN 0;
307 END IF;
308 END get_unassigned_indicator;
309 --
310 -- The following function are local function. Introduced in 11.5.10
311 -- Function to derive the correct values to be passed to the cross validation
312 -- APIs. ie. if the new values is passed, then use the new value, else use
313 -- the old value. (since decode cannot be used out of a select stmnt. this
314 -- approach was considered.
315 --
316 -- The function is overloaded to handle the 3 data types, number, varchar2
317 -- and date
318 FUNCTION GET_RIGHT_NUM (
319 p_new_num_value IN NUMBER,
320 p_old_num_value IN NUMBER )
321 RETURN NUMBER
322 IS
323 BEGIN
324 if ( p_new_num_value = FND_API.G_MISS_NUM ) then
325 return p_old_num_value;
326 else
327 return p_new_num_value;
328 end if;
329
330 END GET_RIGHT_NUM;
331
332 FUNCTION GET_RIGHT_CHAR (
333 p_new_char_value IN VARCHAR2,
334 p_old_char_value IN VARCHAR2 )
335 RETURN VARCHAR2
336 IS
337 BEGIN
338 if ( p_new_char_value = FND_API.G_MISS_CHAR ) then
339 return p_old_char_value;
340 else
341 return p_new_char_value;
342 end if;
343
344 END GET_RIGHT_CHAR;
345
346 FUNCTION GET_RIGHT_DATE (
347 p_new_date_value IN DATE,
348 p_old_date_value IN DATE )
349 RETURN DATE
350 IS
351 BEGIN
352 if ( p_new_date_value = FND_API.G_MISS_DATE ) then
353 return p_old_date_value;
354 else
355 return p_new_date_value;
356 end if;
357
358 END GET_RIGHT_DATE;
359
360 -- --------------------------------------------------------------------------------
361 -- Convert_Request_Number_To_ID
362 -- convert a service request number to the corresponding internal ID.
363 -- --------------------------------------------------------------------------------
364 PROCEDURE Convert_Request_Number_To_ID (
365 p_api_name IN VARCHAR2,
366 p_parameter_name IN VARCHAR2,
367 p_request_number IN VARCHAR2,
368 p_org_id IN NUMBER := NULL,
369 p_request_id OUT NOCOPY NUMBER ,
370 x_return_status OUT NOCOPY VARCHAR2
371 ) IS
372 l_api_name CONSTANT VARCHAR2(30) := 'Convert_Request_Number_To_ID';
373 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
374 BEGIN
375 -- Initialize Return Status to SUCCESS
376 x_return_status := FND_API.G_RET_STS_SUCCESS;
377 BEGIN
378 SELECT incident_id INTO p_request_id
379 FROM cs_incidents_all_b
380 WHERE incident_number = p_request_number ;
381 EXCEPTION
382 WHEN NO_DATA_FOUND THEN
383 x_return_status := FND_API.G_RET_STS_ERROR;
384 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
385 p_token_v => p_request_number,
386 p_token_p => p_parameter_name,
387 p_table_name => G_TABLE_NAME,
388 p_column_name => 'INCIDENT_NUMBER' );
389 WHEN OTHERS THEN
390 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
391 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
392 fnd_msg_pub.ADD;
393 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
394 END;
395 END Convert_Request_Number_To_ID;
396 -- --------------------------------------------------------------------------------
397 -- Convert_Type_To_ID
398 -- convert a service request or action type to the corresponding internal ID.
399 -- --------------------------------------------------------------------------------
400 PROCEDURE Convert_Type_To_ID (
401 p_api_name IN VARCHAR2,
402 p_parameter_name IN VARCHAR2,
403 p_type_name IN VARCHAR2,
404 p_subtype IN VARCHAR2,
405 p_parent_type_id IN NUMBER := FND_API.G_MISS_NUM,
406 p_type_id OUT NOCOPY NUMBER,
407 x_return_status OUT NOCOPY VARCHAR2
408 ) IS
409 l_api_name CONSTANT VARCHAR2(30) := 'Convert_Type_To_ID';
410 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
411
412 BEGIN
413 -- Initialize Return Status to SUCCESS
414 x_return_status := FND_API.G_RET_STS_SUCCESS;
415
416 IF p_subtype = G_ACTION_SUBTYPE THEN
417 IF p_parent_type_id = FND_API.g_MISS_NUM THEN
418 -- the subtype is 'ACT' and the user did not pass in parent_type_id
419 -- it is possible that multiple rows will be returned and hence TOO_MANY_ROWS
420 -- exception must be handled
421 BEGIN
422 SELECT incident_type_id INTO p_type_id
423 FROM cs_incident_types_vl
424 WHERE incident_subtype = p_subtype
425 AND UPPER(name) = UPPER(p_type_name);
426
427 EXCEPTION
428 WHEN NO_DATA_FOUND THEN
429 x_return_status := FND_API.G_RET_STS_ERROR;
430 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
431 p_token_v => p_type_name,
432 p_token_p => p_parameter_name,
433 p_table_name => 'CS_INCIDENT_TYPES_VL',
434 p_column_name => 'NAME' );
435 WHEN TOO_MANY_ROWS THEN
436 x_return_status := FND_API.G_RET_STS_ERROR;
437 Add_Duplicate_Value_Msg( p_token_an => l_api_name_full,
438 p_token_p => p_parameter_name,
439 p_table_name => 'CS_INCIDENT_TYPES_VL',
440 p_column_name => 'NAME' );
441 WHEN OTHERS THEN
442 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
443 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
444 fnd_msg_pub.ADD;
445 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
446 END;
447 ELSE
448 -- the subtype is 'ACT' and the user did pass in parent_type_id
449 -- it is not possible that multiple rows will be returned and hence TOO_MANY_ROWS
450 -- exception need not be handled
451 BEGIN
452 SELECT incident_type_id INTO p_type_id
453 FROM cs_incident_types_vl
454 WHERE incident_subtype = p_subtype
455 AND UPPER(name) = UPPER(p_type_name)
456 AND ((parent_incident_type_id = p_parent_type_id)
457 OR (parent_incident_type_id IS NULL
458 AND p_parent_type_id IS NULL));
459
460 EXCEPTION
461 WHEN NO_DATA_FOUND THEN
462 x_return_status := FND_API.G_RET_STS_ERROR;
463 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
464 p_token_v => p_type_name,
465 p_token_p => p_parameter_name,
466 p_table_name => 'CS_INCIDENT_TYPES_VL',
467 p_column_name => 'NAME' );
468 WHEN OTHERS THEN
469 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
470 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
471 fnd_msg_pub.ADD;
472 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
473 END;
474 END IF;
475 ELSE
476 -- if this is a SR type
477 BEGIN
478 SELECT incident_type_id INTO p_type_id
479 FROM cs_incident_types_vl
480 WHERE incident_subtype = p_subtype
481 AND UPPER(name) = UPPER(p_type_name)
482 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date_active, SYSDATE))
483 AND TRUNC(NVL(end_date_active, SYSDATE))
484 AND rownum<2;
485 EXCEPTION
486 WHEN NO_DATA_FOUND THEN
487 x_return_status := FND_API.G_RET_STS_ERROR;
488 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
489 p_token_v => p_type_name,
490 p_token_p => p_parameter_name,
491 p_table_name => 'CS_INCIDENT_TYPES_VL',
492 p_column_name => 'NAME' );
493 WHEN OTHERS THEN
494 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
495 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
496 fnd_msg_pub.ADD;
497 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
498 END;
499 END IF;
500 END Convert_Type_To_ID;
501
502 -- --------------------------------------------------------------------------------
503 -- Convert_Status_To_ID
504 -- convert a service request or action status to the corresponding internal ID.
505 -- --------------------------------------------------------------------------------
506
507 PROCEDURE Convert_Status_To_ID (
508 p_api_name IN VARCHAR2,
509 p_parameter_name IN VARCHAR2,
510 p_status_name IN VARCHAR2,
511 p_subtype IN VARCHAR2,
512 p_status_id OUT NOCOPY NUMBER,
513 x_return_status OUT NOCOPY VARCHAR2
514 ) IS
515
516 l_api_name CONSTANT VARCHAR2(30) := 'Convert_Status_To_ID';
517 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
518
519 BEGIN
520 -- Initialize Return Status to SUCCESS
521 x_return_status := FND_API.G_RET_STS_SUCCESS;
522
523 BEGIN
524 SELECT incident_status_id INTO p_status_id
525 FROM cs_incident_statuses_vl
526 WHERE incident_subtype = p_subtype
527 AND UPPER(name) = UPPER(p_status_name)
528 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date_active, SYSDATE))
529 AND TRUNC(NVL(end_date_active, SYSDATE))
530 AND rownum<2;
531 EXCEPTION
532 WHEN NO_DATA_FOUND THEN
533 x_return_status := FND_API.G_RET_STS_ERROR;
534 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
535 p_token_v => p_status_name,
536 p_token_p => p_parameter_name,
537 p_table_name => 'CS_INCIDENT_STATUSES_VL',
538 p_column_name => 'NAME');
539 WHEN OTHERS THEN
540 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
541 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
542 fnd_msg_pub.ADD;
543 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
544 END;
545 END Convert_Status_to_ID;
546 -- --------------------------------------------------------------------------------
547 -- Convert_Severity_To_ID
548 -- convert a service request or action severity to the corresponding internal ID.
549 -- --------------------------------------------------------------------------------
550 PROCEDURE Convert_Severity_To_ID (
551 p_api_name IN VARCHAR2,
552 p_parameter_name IN VARCHAR2,
553 p_severity_name IN VARCHAR2,
554 p_subtype IN VARCHAR2,
555 p_severity_id OUT NOCOPY NUMBER,
556 x_return_status OUT NOCOPY VARCHAR2
557 ) IS
558
559 l_api_name CONSTANT VARCHAR2(30) := 'Convert_Severity_To_ID';
560 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
561
562
563 BEGIN
564 -- Initialize Return Status to SUCCESS
565 x_return_status := FND_API.G_RET_STS_SUCCESS;
566
567 BEGIN
568 SELECT incident_severity_id INTO p_severity_id
569 FROM cs_incident_severities_vl
570 WHERE incident_subtype = p_subtype
571 AND UPPER(name) = UPPER(p_severity_name)
572 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date_active, SYSDATE))
573 AND TRUNC(NVL(end_date_active, SYSDATE))
574 AND rownum<2;
575 EXCEPTION
576 WHEN NO_DATA_FOUND THEN
577 x_return_status := FND_API.G_RET_STS_ERROR;
578 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
579 p_token_v => p_severity_name,
580 p_token_p => p_parameter_name,
581 p_table_name => 'CS_INCIDENT_SEVERITIES_VL',
582 p_column_name => 'NAME');
583 WHEN OTHERS THEN
584 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
585 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
586 fnd_msg_pub.ADD;
587 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
588 END;
589 END Convert_Severity_To_ID;
590
591 /*
592 ** Convert_Urgency_To_ID
593 ** 1. Convert a service request urgency to the corresponding internal ID.
594 */
595 PROCEDURE Convert_Urgency_To_ID
596 ( p_api_name IN VARCHAR2,
597 p_parameter_name IN VARCHAR2,
598 p_urgency_name IN VARCHAR2,
599 p_urgency_id OUT NOCOPY NUMBER,
600 x_return_status OUT NOCOPY VARCHAR2
601 )
602 IS
603 l_api_name CONSTANT VARCHAR2(30) := 'Convert_Urgency_To_ID';
604 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
605
606
607 BEGIN
608 -- Initialize the return status.
609 x_return_status := FND_API.G_RET_STS_SUCCESS;
610
611 -- Fetch ID from database.
612 SELECT incident_urgency_id INTO p_urgency_id
613 FROM cs_incident_urgencies_vl
614 WHERE UPPER(name) = UPPER(p_urgency_name)
615 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date_active, SYSDATE))
616 AND TRUNC(NVL(end_date_active, SYSDATE))
617 AND rownum<2;
618
619 EXCEPTION
620 WHEN NO_DATA_FOUND THEN
621 x_return_status := FND_API.G_RET_STS_ERROR;
622 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
623 p_token_v => p_urgency_name,
624 p_token_p => p_parameter_name,
625 p_table_name => 'CS_INCIDENT_URGENCIES_VL',
626 p_column_name => 'NAME');
627 WHEN OTHERS THEN
628 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
629 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
630 fnd_msg_pub.ADD;
631 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
632 END Convert_Urgency_To_ID;
633
634 /*
635 ** Convert_Customer_To_ID
636 ** 1. Convert a customer name or a customer number to the corresponding
637 ** internal ID.
638 */
639 -- -----------------------------------------------------------------------------
640 -- Modification History
641 -- Date Name Desc
642 -- -------- -------- -----------------------------------------------------------
643 -- 12/16/05 smisra Bug 4890701
644 -- This procedure is never called with some value of param
645 -- p_customer_name. so program logic related to this param
646 -- is never executed. The code related to p_customer_name
647 -- has performance issues. hence removing all the logic
648 -- related to parameter p_customer_name
649 -- -----------------------------------------------------------------------------
650 PROCEDURE Convert_Customer_To_ID
651 ( p_api_name IN VARCHAR2,
652 p_parameter_name_nb IN VARCHAR2,
653 p_parameter_name_n IN VARCHAR2,
654 p_customer_number IN VARCHAR2 := FND_API.G_MISS_CHAR,
655 p_customer_name IN VARCHAR2 := FND_API.G_MISS_CHAR,
656 p_customer_id OUT NOCOPY NUMBER,
657 x_return_status OUT NOCOPY VARCHAR2
658 )
659 IS
660 l_api_name CONSTANT VARCHAR2(30) := 'Convert_Customer_To_ID';
661 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
662 BEGIN
663 -- Initialize the return status.
664 x_return_status := FND_API.G_RET_STS_SUCCESS;
665
666 -- Fetch ID from database.
667
668 IF p_customer_number <> FND_API.G_MISS_CHAR THEN
669 BEGIN
670 SELECT a.party_id INTO p_customer_id
671 FROM hz_parties a
672 WHERE a.party_number = p_customer_number;
673 EXCEPTION
674 WHEN NO_DATA_FOUND THEN
675 x_return_status := FND_API.G_RET_STS_ERROR;
676 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
677 p_token_v => p_customer_number,
678 p_token_p => p_parameter_name_nb,
679 p_table_name => G_TABLE_NAME,
680 p_column_name => 'CUSTOMER_NUMBER');
681 WHEN OTHERS THEN
682 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
683 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
684 fnd_msg_pub.ADD;
685 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
686 END;
687 -- If the customer name parameter is also passed, generate an
688 -- informational message.
689
690 IF p_customer_name <> FND_API.G_MISS_CHAR THEN
691 Add_Param_Ignored_Msg( p_token_an => l_api_name_full,
692 p_token_ip => p_parameter_name_n,
693 p_table_name => G_TABLE_NAME,
694 p_column_name => 'CUSTOMER_NAME' );
695 END IF;
696 /* Bug 4890701 smisra 12/16/05
697 This is procedure is used only in csvsrb.pls
698 and it is not used with parameter p_customer_name. so this condition
699 will never execute. hence removing this piece.
700 ELSE
701 BEGIN
702 SELECT a.party_id INTO p_customer_id
703 FROM hz_parties a
704 WHERE UPPER(a.party_name) = UPPER(p_customer_name);
705
706 EXCEPTION
707 WHEN NO_DATA_FOUND THEN
708 x_return_status := FND_API.G_RET_STS_ERROR;
709 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
710 p_token_v => p_customer_name,
711 p_token_p => p_parameter_name_n,
712 p_table_name => G_TABLE_NAME,
713 p_column_name => 'CUSTOMER_NAME' );
714 WHEN TOO_MANY_ROWS THEN
715 x_return_status := FND_API.G_RET_STS_ERROR;
716 Add_Duplicate_Value_Msg( p_token_an => l_api_name_full,
717 p_token_p => p_parameter_name_n,
718 p_table_name => G_TABLE_NAME,
719 p_column_name => 'CUSTOMER_NAME' );
720 WHEN OTHERS THEN
721 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
722 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
723 fnd_msg_pub.ADD;
724 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
725 END;
726 **************************************************************************/
727 END IF;
728 END Convert_Customer_To_ID;
729
730
731 -----------------------------------------------------------------------------
732 -- Convert_Employee_To_ID
733 -- Convert an employee name or an employee number to the corresponding
734 -- internal ID.
735 -----------------------------------------------------------------------------
736 PROCEDURE Convert_Employee_To_ID
737 ( p_api_name IN VARCHAR2,
738 p_parameter_name_nb IN VARCHAR2,
739 p_employee_number IN VARCHAR2 := FND_API.G_MISS_CHAR,
740 p_employee_id OUT NOCOPY NUMBER,
741 x_return_status OUT NOCOPY VARCHAR2
742 )
743 IS
744 l_api_name CONSTANT VARCHAR2(30) := 'Convert_Employee_To_ID';
745 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
746 BEGIN
747 -- Initialize the return status.
748 x_return_status := FND_API.G_RET_STS_SUCCESS;
749
750 -- Fetch ID from database.
751 IF (p_employee_number <> FND_API.G_MISS_CHAR) THEN
752 BEGIN
753 SELECT person_id INTO p_employee_id
754 FROM per_people_x
755 WHERE employee_number = p_employee_number;
756 EXCEPTION
757 WHEN NO_DATA_FOUND THEN
758 x_return_status := FND_API.G_RET_STS_ERROR;
759 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
760 p_token_v => p_employee_number,
761 p_token_p => p_parameter_name_nb,
762 p_table_name => null,
763 p_column_name => 'EMPLOYEE_NUMBER' );
764 WHEN TOO_MANY_ROWS THEN
765 x_return_status := FND_API.G_RET_STS_ERROR;
766 Add_Duplicate_Value_Msg( p_token_an => l_api_name_full,
767 p_token_p => p_parameter_name_nb,
768 p_table_name => null,
769 p_column_name => 'EMPLOYEE_NUMBER' );
770 WHEN OTHERS THEN
771 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
772 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
773 fnd_msg_pub.ADD;
774 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
775
776 END;
777 END IF;
778
779 END Convert_Employee_To_ID;
780
781
782 /*
783 ** Convert_CP_Ref_Number_To_ID
784 ** 1. Convert a customer product reference number to the corresponding
785 ** customer product ID.
786 */
787 PROCEDURE Convert_CP_Ref_Number_To_ID
788 ( p_api_name IN VARCHAR2,
789 p_parameter_name IN VARCHAR2,
790 p_cp_ref_number IN NUMBER,
791 p_org_id IN NUMBER := NULL,
792 p_customer_product_id OUT NOCOPY NUMBER,
793 x_return_status OUT NOCOPY VARCHAR2
794 )
795 IS
796 l_api_name CONSTANT VARCHAR2(30) := 'Convert_CP_Ref_Number_To_ID';
797 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
798 l_cp_ref_number csi_item_instances.instance_number % type;
799
800 BEGIN
801 -- Initialize the return status.
802 x_return_status := FND_API.G_RET_STS_SUCCESS;
803 l_cp_ref_number := to_char(p_cp_ref_number);
804
805 -- Fetch ID from database.
806 SELECT instance_id
807 INTO p_customer_product_id
808 FROM csi_item_instances
809 WHERE instance_number = l_cp_ref_number;
810
811 EXCEPTION
812 WHEN NO_DATA_FOUND THEN
813 x_return_status := FND_API.G_RET_STS_ERROR;
814 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
815 p_token_v => TO_CHAR(p_cp_ref_number),
816 p_token_p => p_parameter_name,
817 p_table_name => null,
818 p_column_name => 'CP_REF_NUMBER' );
819 WHEN OTHERS THEN
820 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
821 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
822 fnd_msg_pub.ADD;
823 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
824 END Convert_CP_Ref_Number_To_ID;
825
826 /*
827 ** Convert_RMA_Number_To_ID
828 ** 1. Convert an RMA number into the corresponding sales order header ID.
829 */
830 PROCEDURE Convert_RMA_Number_To_ID
831 ( p_api_name IN VARCHAR2,
832 p_parameter_name IN VARCHAR2,
833 p_rma_number IN NUMBER,
834 p_order_type_id IN NUMBER := NULL,
835 p_org_id IN NUMBER := NULL,
836 p_rma_header_id OUT NOCOPY NUMBER,
837 x_return_status OUT NOCOPY VARCHAR2
838 )
839 IS
840 l_api_name CONSTANT VARCHAR2(30) := 'Convert_RMA_Number_To_ID';
841 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
842
843
844 BEGIN
845 -- Initialize the return status.
846 x_return_status := FND_API.G_RET_STS_SUCCESS;
847
848 -- Fetch ID from database.
849 SELECT header_id INTO p_rma_header_id
850 FROM so_headers_all
851 WHERE order_number = p_rma_number
852 AND order_type_id = NVL(p_order_type_id,order_type_id) ;
853
854 EXCEPTION
855 WHEN NO_DATA_FOUND THEN
856 x_return_status := FND_API.G_RET_STS_ERROR;
857
858 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
859 p_token_v => TO_CHAR(p_rma_number),
860 p_token_p => p_parameter_name,
861 p_table_name => G_TABLE_NAME ,
862 p_column_name => 'RMA_NUMBER' );
863
864 WHEN TOO_MANY_ROWS THEN
865 x_return_status := FND_API.G_RET_STS_ERROR;
866
867 Add_Duplicate_Value_Msg( p_token_an => l_api_name_full,
868 p_token_p => p_parameter_name,
869 p_table_name => G_TABLE_NAME ,
870 p_column_name => 'RMA_NUMBER' );
871 WHEN OTHERS THEN
872 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
873 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
874 fnd_msg_pub.ADD;
875 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
876 END Convert_RMA_Number_To_ID;
877
878 -- --------------------------------------------------------------------------------
879 -- Validate_Who_info
880 -- --------------------------------------------------------------------------------
881 PROCEDURE Validate_Who_Info (
882 p_api_name IN VARCHAR2,
883 p_parameter_name_usr IN VARCHAR2,
884 p_parameter_name_login IN VARCHAR2,
885 p_user_id IN NUMBER,
886 p_login_id IN NUMBER,
887 x_return_status OUT NOCOPY VARCHAR2
888 ) IS
889 l_dummy VARCHAR2(1);
890 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Who_Info';
891 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
892
893 BEGIN
894 -- Initialize Return Status to SUCCESS
895 x_return_status := FND_API.G_RET_STS_SUCCESS;
896
897 BEGIN
898
899 -- Special check to not check the dates when the user ID is (-1).
900 IF p_user_id = -1 THEN
901 SELECT 'x' INTO l_dummy
902 FROM fnd_user
903 WHERE user_id = p_user_id;
904 ELSE
905 SELECT 'x' INTO l_dummy
906 FROM fnd_user
907 WHERE user_id = p_user_id
908 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date, SYSDATE))
909 AND TRUNC(NVL(end_date, SYSDATE));
910 END IF;
911
912 EXCEPTION
913 WHEN NO_DATA_FOUND THEN
914 x_return_status := FND_API.G_RET_STS_ERROR;
915 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
916 p_token_v => TO_CHAR(p_user_id),
917 p_token_p => p_parameter_name_usr,
918 p_table_name => G_TABLE_NAME,
919 p_column_name => 'CREATED_BY');
920 WHEN OTHERS THEN
921 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
922 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
923 fnd_msg_pub.ADD;
924 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
925
926 RETURN;
927 END;
928
929 IF p_login_id IS NOT NULL THEN
930
931 BEGIN
932 SELECT 'x' INTO l_dummy
933 FROM fnd_logins
934 WHERE login_id = p_login_id
935 AND user_id = p_user_id;
936 EXCEPTION
937 WHEN NO_DATA_FOUND THEN
938 x_return_status := FND_API.G_RET_STS_ERROR;
939 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
940 p_token_v => TO_CHAR(p_login_id),
941 p_token_p => p_parameter_name_login,
942 p_table_name => G_TABLE_NAME,
943 p_column_name => 'LAST_UPDATE_LOGIN' );
944
945 WHEN OTHERS THEN
946 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
947 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
948 fnd_msg_pub.ADD;
949 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
950 END;
951 END IF;
952 END Validate_Who_Info;
953
954
955 /*
956 ** Validate_Type
957 ** 1. Verify that the service request type is a valid and active type.
958 ** 2. Verify that if the type of the request has any related statuses defined,
959 ** the status given is one of the active related statuses.
960 */
961
962 /*******************************
963 --commented out to test new type validation proc below.
964 PROCEDURE Validate_Type
965 ( p_api_name IN VARCHAR2,
966 p_parameter_name IN VARCHAR2,
967 p_type_id IN NUMBER,
968 p_subtype IN VARCHAR2,
969 p_status_id IN NUMBER,
970 p_resp_id IN NUMBER,
971 p_operation IN VARCHAR2,
972 x_return_status OUT NOCOPY VARCHAR2,
973 -- for cmro_eam
974 x_CMRO_flag OUT NOCOPY VARCHAR2,
975 x_maintenance_flag OUT NOCOPY VARCHAR2
976 )
977 IS
978 l_dummy VARCHAR2(1);
979 l_status NUMBER;
980 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Type';
981 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
982 l_profile VARCHAR2(9);
983
984 CURSOR val_type_map IS
985 SELECT 'x'
986 FROM cs_sr_type_mapping
987 WHERE incident_type_id = p_type_id
988 AND responsibility_id = p_resp_id
989 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date, SYSDATE))
990 AND TRUNC(NVL(end_date, SYSDATE));
991
992 CURSOR val_type IS
993 SELECT CMRO_flag,Maintenance_flag
994 FROM cs_incident_types_b
995 WHERE incident_type_id = p_type_id
996 AND incident_subtype = p_subtype
997 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date_active, SYSDATE))
998 AND TRUNC(NVL(end_date_active, SYSDATE));
999
1000 BEGIN
1001 -- Initialize the return status.
1002 x_return_status := FND_API.G_RET_STS_SUCCESS;
1003 x_CMRO_flag := NULL;
1004 x_maintenance_flag := NULL;
1005
1006 l_profile := FND_PROFILE.VALUE('CS_SR_USE_TYPE_RESPON_SETUP');
1007
1008 -- Verify the type ID against the database.
1009
1010 IF l_profile='YES' Then
1011 OPEN val_type_map;
1012 FETCH val_type_map INTO l_dummy;
1013 IF (val_type_map%NOTFOUND) THEN
1014 CLOSE val_type_map;
1015 x_return_status := FND_API.G_RET_STS_ERROR;
1016 fnd_message.set_name ('CS', 'CS_SR_TYPE_BY_RESP');
1017 fnd_message.set_token ('OPERATION',p_operation);
1018 fnd_msg_pub.ADD;
1019 ELSE
1020 x_return_status := FND_API.G_RET_STS_SUCCESS;
1021 --Fixed bug 2809312, moved this close cursor here from
1022 --after the if.
1023 CLOSE val_type_map;
1024 END IF;
1025 ELSE
1026 OPEN val_type;
1027 -- for cmro_eam
1028 FETCH val_type INTO x_CMRO_flag,x_maintenance_flag;
1029 IF (val_type%NOTFOUND) THEN
1030 CLOSE val_type;
1031 x_return_status := FND_API.G_RET_STS_ERROR;
1032 RAISE NO_DATA_FOUND ;
1033 ELSE
1034 x_return_status := FND_API.G_RET_STS_SUCCESS;
1035 --Fixed bug 2809312, moved this close cursor here from
1036 --after the if.
1037 CLOSE val_type;
1038 END IF;
1039 END IF;
1040
1041 EXCEPTION
1042 WHEN NO_DATA_FOUND THEN
1043 x_return_status := FND_API.G_RET_STS_ERROR;
1044 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
1045 p_token_v => TO_CHAR(p_type_id),
1046 p_token_p => p_parameter_name,
1047 p_table_name => G_TABLE_NAME,
1048 p_column_name => 'INCIDENT_TYPE_ID' );
1049
1050 WHEN OTHERS THEN
1051 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
1052 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
1053 fnd_msg_pub.ADD;
1054 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1055 END Validate_Type;
1056
1057 *******************************/
1058
1059 -- DJ API Cleanup
1060 -- New proc. to validate type for security
1061 PROCEDURE Validate_Type (
1062 p_parameter_name IN VARCHAR2,
1063 p_type_id IN NUMBER,
1064 p_subtype IN VARCHAR2,
1065 p_status_id IN NUMBER, -- not used in proc.
1066 p_resp_id IN NUMBER,
1067 p_resp_appl_id IN NUMBER, -- new for 11.5.10 default NULL
1068 p_business_usage IN VARCHAR2, -- new for 11.5.10 default NULL
1069 p_ss_srtype_restrict IN VARCHAR2, -- new for 11.5.10 default 'N'
1070 p_operation IN VARCHAR2, -- new for 11.5.10 used for self_service resp.
1071 x_return_status OUT NOCOPY VARCHAR2,
1072 x_cmro_flag OUT NOCOPY VARCHAR2, -- new for 11.5.10
1073 x_maintenance_flag OUT NOCOPY VARCHAR2 ) -- new for 11.5.10
1074 IS
1075 l_dummy VARCHAR2(1);
1076 l_status NUMBER;
1077 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Type';
1078 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
1079
1080 -- this is used to indicate if the out flag params. are populated or not.
1081 l_flags_set VARCHAR2(1) := 'N';
1082 l_start_date DATE;
1083 l_end_date DATE;
1084
1085 cursor val_type_map is
1086 select 'x'
1087 from cs_sr_type_mapping
1088 where incident_type_id = p_type_id
1089 and responsibility_id = p_resp_id
1090 and application_id = p_resp_appl_id -- new for 11.5.10
1091 and trunc(sysdate) between trunc(nvl(start_date, sysdate))
1092 and trunc(nvl(end_date, sysdate));
1093
1094 -- For bug 3474365
1095 cursor val_type_unsecure is
1096 select UPPER(cmro_flag), UPPER(maintenance_flag),start_date_active,end_date_active
1097 from cs_incident_types_b
1098 where incident_type_id = p_type_id
1099 and incident_subtype = p_subtype;
1100 -- and trunc(sysdate) between trunc(nvl(start_date_active, sysdate))
1101 -- and trunc(nvl(end_date_active, sysdate));
1102
1103 cursor val_type_secure is
1104 select cmro_flag, maintenance_flag ,start_date_active,end_date_active
1105 from cs_incident_types_vl_sec
1106 where incident_type_id = p_type_id
1107 and incident_subtype = p_subtype;
1108 -- and trunc(sysdate) between trunc(nvl(start_date_active, sysdate))
1109 -- and trunc(nvl(end_date_active, sysdate));
1110
1111 BEGIN
1112 -- Initialize the return status.
1113 x_return_status := FND_API.G_RET_STS_SUCCESS;
1114 x_cmro_flag := NULL;
1115 x_maintenance_flag := NULL;
1116
1117 -- Verify the type ID against the database.
1118 if ( p_business_usage = 'SELF_SERVICE' ) then
1119 if ( p_ss_srtype_restrict = 'Y' AND p_operation = 'CREATE') then
1120 open val_type_map;
1121 fetch val_type_map into l_dummy;
1122 close val_type_map;
1123
1124 if ( l_dummy = 'x' ) then
1125 x_return_status := FND_API.G_RET_STS_SUCCESS;
1126 else
1127 -- new message for 11.5.10
1128 -- You do not have access to the service request type that is
1129 -- being created. Please contact your system administrator.
1130 fnd_message.set_name ('CS', 'CS_SR_WEB_NO_PRIV');
1131 fnd_msg_pub.ADD;
1132 x_return_status := FND_API.G_RET_STS_ERROR;
1133 end if;
1134 else
1135 -- For bug 3474365 - included an if condition while called for validating old sr type
1136 -- for self_Service applications.
1137
1138
1139 if ( p_operation = 'UPDATE') then
1140 open val_type_unsecure;
1141 fetch val_type_unsecure into x_cmro_flag, x_maintenance_flag,l_start_date,l_end_date;
1142
1143 if ( val_type_unsecure%notfound ) then
1144 -- new message for 11.5.10
1145 -- Invalid type. Given type is either end dated or does not exist
1146 -- as a valid type.
1147 fnd_message.set_name ('CS', 'CS_SR_INVALID_TYPE');
1148 fnd_message.set_token('API_NAME', l_api_name_full);
1149 fnd_msg_pub.ADD;
1150 x_return_status := FND_API.G_RET_STS_ERROR;
1151
1152 elsif (not( trunc(sysdate) >= trunc(nvl(l_start_date, sysdate))
1153 and trunc(sysdate) <= trunc(nvl(l_end_date, sysdate)) )) then
1154 fnd_message.set_name ('CS', 'CS_SR_INVALID_TYPE');
1155 fnd_message.set_token('API_NAME', l_api_name_full);
1156 fnd_msg_pub.ADD;
1157 x_return_status := FND_API.G_RET_STS_ERROR;
1158 else
1159 l_flags_set := 'Y';
1160 x_return_status := FND_API.G_RET_STS_SUCCESS;
1161 end if;
1162 close val_type_unsecure;
1163
1164 elsif ( p_operation = 'UPDATE_OLD') then
1165 open val_type_unsecure;
1166 fetch val_type_unsecure into x_cmro_flag, x_maintenance_flag,l_start_date,l_end_date;
1167
1168 if ( val_type_unsecure%notfound ) then
1169 -- new message for 11.5.10
1170 -- Invalid type. Given type is either end dated or does not exist
1171 -- as a valid type.
1172 fnd_message.set_name ('CS', 'CS_SR_INVALID_TYPE');
1173 fnd_message.set_token('API_NAME', l_api_name_full);
1174 fnd_msg_pub.ADD;
1175 x_return_status := FND_API.G_RET_STS_ERROR;
1176 else
1177 l_flags_set := 'Y';
1178 x_return_status := FND_API.G_RET_STS_SUCCESS;
1179 end if;
1180 close val_type_unsecure;
1181
1182 end if; -- if ( p_operation = 'UPDATE') then
1183 end if; -- if ( p_ss_srtype_restrict = 'Y' ) then
1184 else -- p_business_usage = AGENT
1185
1186 -- For bug 3474365 - included an if condition while called for validating old sr type
1187 -- when the security is off
1188
1189 -- For bug 3732793 included the or condition for create
1190 if ( p_operation = 'UPDATE' OR p_operation = 'CREATE') then
1191 open val_type_secure;
1192 fetch val_type_secure into x_cmro_flag, x_maintenance_flag,l_start_date,l_end_date;
1193
1194 if ( val_type_secure%notfound ) then
1195 -- new message for 11.5.10
1196 -- Current responsibility does not have sufficient priviledges to access
1197 -- service requests of this type. Please contact your system administrator.
1198 fnd_message.set_name ('CS', 'CS_SR_AGENT_NO_PRIV');
1199 fnd_message.set_token('API_NAME', l_api_name_full);
1200 fnd_msg_pub.ADD;
1201 x_return_status := FND_API.G_RET_STS_ERROR;
1202 elsif (not( trunc(sysdate) >= trunc(nvl(l_start_date, sysdate))
1203 and trunc(sysdate) <= trunc(nvl(l_end_date, sysdate)) )) then
1204 fnd_message.set_name ('CS', 'CS_SR_INVALID_TYPE');
1205 fnd_message.set_token('API_NAME', l_api_name_full);
1206 fnd_msg_pub.ADD;
1207 x_return_status := FND_API.G_RET_STS_ERROR;
1208 else
1209 l_flags_set := 'Y';
1210 x_return_status := FND_API.G_RET_STS_SUCCESS;
1211 end if;
1212 close val_type_secure;
1213 elsif ( p_operation = 'UPDATE_OLD') then
1214 open val_type_secure;
1215 fetch val_type_secure into x_cmro_flag, x_maintenance_flag,l_start_date,l_end_date;
1216
1217 if ( val_type_secure%notfound ) then
1218 -- new message for 11.5.10
1219 -- Invalid type. Given type is either end dated or does not exist
1220 -- as a valid type.
1221 -- For bug 3902711
1222 --fnd_message.set_name ('CS', 'CS_SR_INVALID_TYPE');
1223 fnd_message.set_name ('CS', 'CS_SR_AGENT_NO_PRIV');
1224 fnd_message.set_token('API_NAME', l_api_name_full);
1225 fnd_msg_pub.ADD;
1226 x_return_status := FND_API.G_RET_STS_ERROR;
1227 else
1228 l_flags_set := 'Y';
1229 x_return_status := FND_API.G_RET_STS_SUCCESS;
1230 end if;
1231 close val_type_secure;
1232
1233 end if; -- if ( p_operation = 'UPDATE') then
1234 end if; -- if ( p_business_usage = 'SELF_SERVICE' ) then
1235
1236 -- get the values of the flags for the out parameters if not set
1237 if ( x_return_status = FND_API.G_RET_STS_SUCCESS and
1238 l_flags_set = 'N' ) then
1239 open val_type_unsecure;
1240 fetch val_type_unsecure into x_cmro_flag, x_maintenance_flag,l_start_date,l_end_date;
1241 close val_type_unsecure;
1242 end if;
1243
1244 EXCEPTION
1245 WHEN NO_DATA_FOUND THEN
1246 x_return_status := FND_API.G_RET_STS_ERROR;
1247 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
1248 p_token_v => TO_CHAR(p_type_id),
1249 p_token_p => p_parameter_name,
1250 p_table_name => G_TABLE_NAME,
1251 p_column_name => 'INCIDENT_TYPE_ID' );
1252
1253 WHEN OTHERS THEN
1254 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
1255 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
1256 fnd_msg_pub.ADD;
1257 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1258 END Validate_Type;
1259 /*
1260 ** Validate_Status
1261 ** Note : This procedure is used during Create Service Request.
1262 ** 1. Find whether Status Group is Mapped to Type, If yes use Status Group (SG1)
1263 ** 2. Find whether Status Group is mapped to Type-Resp. If yes, use status Group (SG2)
1264 ** 3. If No status Group is mapped
1265 ** Check whether status is a valid status with Valid_in_Create set as 'Y'
1266 ** 4. If a Status Group is mapped (SG1) or (SG2)
1267 ** Is the Status a valid Status with Valid_In_Create set as 'Y'
1268 ** Does Given Status exist in CS_ALLOWED_STATUSES for the Given Group?
1269 ** 5. Return to the caller via the p_close_flag parameter whether or not the
1270 ** status is a "closed" status. This will be useful to the caller for
1271 ** managing the closed date.
1272 */
1273 PROCEDURE Validate_Status
1274 ( p_api_name IN VARCHAR2,
1275 p_parameter_name IN VARCHAR2,
1276 p_status_id IN NUMBER,
1277 p_subtype IN VARCHAR2,
1278 p_type_id IN NUMBER,
1279 p_resp_id IN NUMBER,
1280 p_close_flag OUT NOCOPY VARCHAR2,
1281 p_operation IN VARCHAR2,
1282 x_return_status OUT NOCOPY VARCHAR2
1283 )
1284 IS
1285
1286 l_status_group_id NUMBER := 0;
1287
1288 -- Cursor to Validate Status
1289
1290 CURSOR all_statuses_csr IS
1291 SELECT seeded_flag, close_flag
1292 FROM cs_incident_statuses_b
1293 WHERE incident_subtype = p_subtype
1294 AND incident_status_id = p_status_id
1295 AND valid_in_create_flag = 'Y'
1296 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date_active, SYSDATE))
1297 AND TRUNC(NVL(end_date_active, SYSDATE));
1298
1299 CURSOR all_statuses_csr1 IS
1300 SELECT seeded_flag, close_flag
1301 FROM cs_incident_statuses_b
1302 WHERE incident_subtype = p_subtype
1303 AND incident_status_id = p_status_id
1304 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date_active, SYSDATE))
1305 AND TRUNC(NVL(end_date_active, SYSDATE));
1306
1307 CURSOR group_for_type_Csr IS
1308 SELECT status_Group_id
1309 FROM cs_incident_types_B
1310 WHERE Incident_type_id = p_type_id;
1311 /* Type is already validated **/
1312
1313 CURSOR group_for_type_resp_csr IS
1314 SELECT status_Group_id
1315 FROM cs_sr_type_mapping
1316 WHERE Incident_type_id = p_type_id
1317 AND responsibility_id = p_resp_id
1318 AND status_group_id IS NOT NULL;
1319
1320 -- Check Status is allowed for the Group
1321 CURSOR allowed_Statuses_csr IS
1322 SELECT incident_status_id
1323 FROM cs_sr_allowed_statuses
1324 WHERE status_Group_id = l_status_group_id
1325 AND incident_Status_id = p_status_id
1326 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date, SYSDATE))
1327 AND TRUNC(NVL(end_date, SYSDATE));
1328
1329 l_seeded_flag VARCHAR2(3);
1330 l_status NUMBER;
1331 l_incident_Status_id NUMBER;
1332 l_count NUMBER;
1333
1334 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Status';
1335 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
1336 BEGIN
1337 -- Initialize the return status.
1338 x_return_status := FND_API.G_RET_STS_SUCCESS;
1339
1340 IF NVL(p_operation,'CREATE') = 'CREATE' THEN
1341
1342 OPEN all_statuses_Csr;
1343 FETCH all_statuses_csr INTO l_seeded_flag, p_close_flag;
1344 IF (all_statuses_Csr%NOTFOUND) THEN
1345 CLOSE all_statuses_csr;
1346 RAISE NO_DATA_FOUND ;
1347 END IF;
1348 CLOSE all_statuses_csr;
1349 ELSE
1350 OPEN all_statuses_Csr1;
1351 FETCH all_statuses_csr1 INTO l_seeded_flag, p_close_flag;
1352 IF (all_statuses_Csr1%NOTFOUND) THEN
1353 CLOSE all_statuses_csr1;
1354 RAISE NO_DATA_FOUND ;
1355 END IF;
1356
1357 CLOSE all_statuses_csr1;
1358 END IF;
1359
1360
1361 -- Check Whether Any Group is mapped for Type and Resp.
1362 OPEN group_for_type_resp_csr;
1363 FETCH group_for_type_resp_csr INTO l_status_group_id;
1364 IF (group_for_type_resp_csr%NOTFOUND) THEN
1365 -- No Group is mapped for Type and Resp, try Type
1366 OPEN group_for_type_csr;
1367 FETCH group_for_type_csr INTO l_status_group_id;
1368 IF (group_for_type_csr%NOTFOUND) THEN
1369 -- No Group is mapped for Type, All Valid statuses are Valid.
1370 NULL;
1371 END IF;
1372 CLOSE group_for_type_csr;
1373 END IF;
1374 CLOSE group_for_type_resp_csr;
1375
1376 IF (l_status_group_id > 0) THEN
1377 -- Status group has been Found
1378 -- Check for allowed statuses
1379 OPEN allowed_Statuses_csr;
1380 FETCH allowed_Statuses_csr INTO l_incident_Status_id;
1381 IF (allowed_Statuses_csr%NOTFOUND) THEN
1382 -- This Status is not Allowed for this Group
1383 CLOSE allowed_Statuses_csr;
1384 RAISE NO_DATA_FOUND ;
1385 END IF;
1386 CLOSE allowed_Statuses_csr;
1387 END IF;
1388
1389
1390 EXCEPTION
1391 WHEN NO_DATA_FOUND THEN
1392 x_return_status := FND_API.G_RET_STS_ERROR;
1393
1394 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
1395 p_token_v => TO_CHAR(p_status_id),
1396 p_token_p => p_parameter_name,
1397 p_table_name => G_TABLE_NAME,
1398 p_column_name => 'INCIDENT_STATUS_ID' );
1399 WHEN OTHERS THEN
1400 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
1401 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
1402 fnd_msg_pub.ADD;
1403 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1404 END Validate_Status;
1405
1406 /*
1407 ** Validate_Updated_Status
1408 ** Note : This procedure is used during Update Service Request.
1409 ** 1. Find whether Status Group is Mapped to Type, If yes use Status Group (SG1)
1410 ** 2. Find whether Status Group is mapped to Type-Resp. If yes, use status Group (SG2)
1411 ** 3. If No status Group is mapped
1412 ** Check whether status is a valid status.
1413 ** 4. If a Status Group is mapped (SG1) or (SG2)
1414 ** Is Status Transition defined for this group
1415 ** If yes, Is the current Transition Allowed
1416 ** If Status Transition are not defined.
1417 **** Does Given Status exist in CS_ALLOWED_STATUSES for the Given Group?
1418 ** 5. Return to the caller via the p_close_flag parameter whether or not the
1419 ** status is a "closed" status. This will be useful to the caller for
1420 ** managing the closed date.
1421 */
1422
1423 PROCEDURE Validate_Updated_Status
1424 ( p_api_name IN VARCHAR2,
1425 p_parameter_name IN VARCHAR2,
1426 p_resp_id IN NUMBER,
1427 p_new_status_id IN NUMBER,
1428 p_old_status_id IN NUMBER,
1429 p_subtype IN VARCHAR2,
1430 p_type_id IN NUMBER,
1431 p_old_type_id IN NUMBER := NULL,
1432 p_close_flag OUT NOCOPY VARCHAR2,
1433 p_disallow_request_update OUT NOCOPY VARCHAR2,
1434 p_disallow_owner_update OUT NOCOPY VARCHAR2,
1435 p_disallow_product_update OUT NOCOPY VARCHAR2,
1436 x_return_status OUT NOCOPY VARCHAR2
1437 )
1438 IS
1439
1440 l_status_group_id NUMBER := 0;
1441 l_status_Transition_id NUMBER;
1442 l_incident_status_id NUMBER;
1443 l_old_status_group_id NUMBER := 0;
1444
1445
1446 -- Cursor to Validate Status
1447 CURSOR all_statuses_csr IS
1448 SELECT seeded_flag, close_flag
1449 FROM cs_incident_statuses_b
1450 WHERE incident_subtype = p_subtype
1451 AND incident_status_id = p_new_status_id
1452 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date_active, SYSDATE))
1453 AND TRUNC(NVL(end_date_active, SYSDATE));
1454
1455 CURSOR group_for_type_Csr (l_type_id IN NUMBER) IS
1456 SELECT status_Group_id
1457 FROM cs_incident_types_B
1458 WHERE Incident_type_id = l_type_id
1459 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date_active, SYSDATE))
1460 AND TRUNC(NVL(end_date_active, SYSDATE));
1461 /* Type is already validated **/
1462
1463 CURSOR group_for_type_resp_csr (l_type_id IN NUMBER, l_resp_id IN NUMBER) IS
1464 SELECT status_Group_id
1465 FROM cs_sr_type_mapping
1466 WHERE Incident_type_id = l_type_id
1467 AND responsibility_id = l_resp_id
1468 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date, SYSDATE))
1469 AND TRUNC(NVL(end_date, SYSDATE)) ;
1470
1471 -- Check Status is allowed for the Group
1472 CURSOR allowed_Statuses_csr ( p_status_group_id IN NUMBER) IS
1473 SELECT incident_status_id
1474 FROM cs_sr_allowed_statuses
1475 WHERE status_Group_id = p_status_group_id
1476 AND incident_Status_id = p_new_status_id
1477 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date, SYSDATE))
1478 AND TRUNC(NVL(end_date, SYSDATE));
1479
1480 -- Check Whether transitions are defined for the Group.
1481 CURSOR status_Transitions_csr IS
1482 SELECT status_Transition_id
1483 FROM cs_sr_status_transitions
1484 WHERE status_Group_id = l_status_group_id
1485 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date, SYSDATE))
1486 AND TRUNC(NVL(end_date, SYSDATE));
1487 /** This above should later be moved to use transition IND**/
1488
1489 -- Check Whether Current update is a Valid transitions for the Group.
1490 CURSOR valid_status_Transitions_csr IS
1491 SELECT status_Transition_id
1492 FROM cs_sr_status_transitions
1493 WHERE status_Group_id = l_status_group_id
1494 AND FROM_Incident_status_id = p_old_status_id
1495 AND TO_Incident_status_id = p_new_status_id
1496 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date, SYSDATE))
1497 AND TRUNC(NVL(end_date, SYSDATE));
1498
1499 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Updated_Status';
1500 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
1501 l_status_valid VARCHAR2(1);
1502 l_count NUMBER;
1503
1504 BEGIN
1505
1506 -- Initialize the return status.
1507 x_return_status := FND_API.G_RET_STS_SUCCESS;
1508 l_status_valid := 'N' ;
1509
1510 -- Verify the given status against the cs_incident_statuses table.
1511 -- Get all the values for the flags.
1512 -- Changed the new_status_id to old_status_id for fixing Bug# 2094344.
1513 -- For bug 3306908 - commented the date validation
1514
1515 SELECT close_flag, disallow_request_update,
1516 disallow_agent_dispatch, disallow_product_update
1517 INTO p_close_flag, p_disallow_request_update,
1518 p_disallow_owner_update, p_disallow_product_update
1519 FROM cs_incident_statuses_b
1520 WHERE incident_status_id = p_old_status_id
1521 AND incident_subtype = p_subtype;
1522 -- AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date_active, SYSDATE))
1523 -- AND TRUNC(NVL(end_date_active, SYSDATE));
1524
1525 --Added the query because the close_date did not populate with SYSDATE
1526 SELECT close_flag INTO p_close_flag
1527 FROM cs_incident_statuses_b
1528 WHERE incident_status_id = p_new_status_id
1529 AND incident_subtype = p_subtype
1530 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date_active, SYSDATE))
1531 AND TRUNC(NVL(end_date_active, SYSDATE));
1532 /*** Move the Above as Cursors ****/
1533
1534 -- Check Whether Any Group is mapped for Type and Resp.
1535 OPEN group_for_type_resp_csr(p_type_id,p_resp_id);
1536 FETCH group_for_type_resp_csr INTO l_status_group_id;
1537 IF (group_for_type_resp_csr%NOTFOUND) THEN
1538 -- No Group is mapped for Type and Resp, try Type
1539 OPEN group_for_type_csr(p_type_id);
1540 FETCH group_for_type_csr INTO l_status_group_id;
1541 IF (group_for_type_csr%NOTFOUND) THEN
1542 -- No Group is mapped for Type, All Valid statuses are Valid.
1543 NULL;
1544 END IF;
1545 CLOSE group_for_type_csr;
1546 END IF;
1547 CLOSE group_for_type_resp_csr;
1548
1549 -- If the type has changed then get the status group mapped to the
1550 -- old SR Type
1551
1552 IF (NVL(p_type_id ,00) <> NVL(p_old_type_id,00) AND
1553 (p_old_type_id IS NOT NULL)
1554 )THEN
1555
1556 -- Check Whether Any Group is mapped for Type and Resp.
1557
1558 OPEN group_for_type_resp_csr(p_old_type_id,p_resp_id);
1559 FETCH group_for_type_resp_csr INTO l_old_status_group_id;
1560
1561 IF (group_for_type_resp_csr%NOTFOUND) THEN
1562 -- No Group is mapped for Type and Resp, try Type
1563
1564 OPEN group_for_type_csr(p_old_type_id);
1565 FETCH group_for_type_csr INTO l_old_status_group_id;
1566
1567 IF (group_for_type_csr%NOTFOUND) THEN
1568 -- No Group is mapped for Type, All Valid statuses are Valid.
1569 NULL;
1570 END IF;
1571 CLOSE group_for_type_csr;
1572 END IF;
1573 CLOSE group_for_type_resp_csr;
1574 END IF;
1575
1576 IF (NVL(p_type_id ,00) <> NVL(p_old_type_id,00) AND
1577 p_old_type_id IS NOT NULL AND
1578 l_status_group_id <> l_old_status_group_id
1579 ) THEN
1580 -- Since the type and status group is changed we need to validate only that the
1581 -- status exists in the status group and not the transition.
1582
1583 OPEN allowed_Statuses_csr(l_status_group_id);
1584 FETCH allowed_Statuses_csr INTO l_incident_Status_id;
1585
1586 IF (allowed_Statuses_csr%NOTFOUND) THEN
1587 -- This Status is not Allowed for this Group
1588 CLOSE allowed_Statuses_csr;
1589 RAISE NO_DATA_FOUND ;
1590 END IF;
1591 CLOSE allowed_Statuses_csr;
1592
1593 ELSE
1594 IF (l_status_group_id > 0) THEN
1595 -- Status group has been Found , Check whether transition are defined.
1596 OPEN status_transitions_csr;
1597 FETCH status_transitions_csr INTO l_status_transition_id;
1598
1599 IF (status_transitions_csr%NOTFOUND) THEN
1600 -- Status transitions are not defined, ck only allowed Status
1601 OPEN allowed_Statuses_csr(l_status_group_id);
1602 FETCH allowed_Statuses_csr INTO l_incident_Status_id;
1603
1604 IF (allowed_Statuses_csr%NOTFOUND) THEN
1605 -- This Status is not Allowed for this Group
1606 CLOSE allowed_Statuses_csr;
1607 RAISE NO_DATA_FOUND ;
1608 END IF;
1609 CLOSE allowed_Statuses_csr;
1610 ELSE
1611 -- Status Transitions are defined, check whether current trans. is valid
1612 OPEN valid_status_transitions_csr;
1613 FETCH valid_status_transitions_csr INTO l_status_transition_id;
1614 IF (valid_status_transitions_csr%NOTFOUND) THEN
1615 CLOSE valid_status_transitions_csr;
1616 RAISE NO_DATA_FOUND;
1617 END IF;
1618 CLOSE valid_status_transitions_csr;
1619 END IF;
1620 END IF;
1621 END IF;
1622 EXCEPTION
1623 WHEN NO_DATA_FOUND THEN
1624 x_return_status := FND_API.G_RET_STS_ERROR;
1625 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
1626 p_token_v => TO_CHAR(p_new_status_id),
1627 p_token_p => p_parameter_name,
1628 p_table_name => G_TABLE_NAME,
1629 p_column_name => 'INCIDENT_STATUS_ID' );
1630 WHEN OTHERS THEN
1631 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
1632 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
1633 fnd_msg_pub.ADD;
1634 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1635 END Validate_Updated_Status;
1636
1637
1638 -- Validate_Severity
1639 -- verify that the service request severity is a valid and active.
1640 -- --------------------------------------------------------------------------------
1641 PROCEDURE Validate_Severity (
1642 p_api_name IN VARCHAR2,
1643 p_parameter_name IN VARCHAR2,
1644 p_severity_id IN NUMBER,
1645 p_subtype IN VARCHAR2,
1646 x_return_status OUT NOCOPY VARCHAR2
1647 ) IS
1648
1649 l_dummy VARCHAR2(1);
1650 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Severity';
1651 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
1652
1653 BEGIN
1654 -- Initialize Return Status to SUCCESS
1655 x_return_status := FND_API.G_RET_STS_SUCCESS;
1656
1657 BEGIN
1658 SELECT 'x' INTO l_dummy
1659 FROM cs_incident_severities_b
1660 WHERE incident_subtype = p_subtype
1661 AND incident_severity_id = p_severity_id
1662 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date_active, SYSDATE))
1663 AND TRUNC(NVL(end_date_active, SYSDATE));
1664 EXCEPTION
1665 WHEN NO_DATA_FOUND THEN
1666 x_return_status := FND_API.G_RET_STS_ERROR;
1667 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
1668 p_token_v => TO_CHAR(p_severity_id),
1669 p_token_p => p_parameter_name,
1670 p_table_name => G_TABLE_NAME,
1671 p_column_name => 'SEVERITY_ID' );
1672 WHEN OTHERS THEN
1673 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
1674 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
1675 fnd_msg_pub.ADD;
1676 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1677
1678 END;
1679 END Validate_Severity ;
1680
1681
1682 -- --------------------------------------------------------------------------------
1683 -- Validate_Urgency
1684 -- verify that the service request urgency is a valid and active.
1685 -- --------------------------------------------------------------------------------
1686 PROCEDURE Validate_Urgency (
1687 p_api_name IN VARCHAR2,
1688 p_parameter_name IN VARCHAR2,
1689 p_urgency_id IN NUMBER,
1690 x_return_status OUT NOCOPY VARCHAR2
1691 ) IS
1692
1693 l_dummy VARCHAR2(1);
1694 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Urgency';
1695 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
1696
1697 BEGIN
1698 -- Initialize Return Status to SUCCESS
1699 x_return_status := FND_API.G_RET_STS_SUCCESS;
1700
1701 BEGIN
1702 SELECT 'x' INTO l_dummy
1703 FROM cs_incident_urgencies_b
1704 WHERE incident_urgency_id = p_urgency_id
1705 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date_active, SYSDATE))
1706 AND TRUNC(NVL(end_date_active, SYSDATE));
1707 EXCEPTION
1708 WHEN NO_DATA_FOUND THEN
1709 x_return_status := FND_API.G_RET_STS_ERROR;
1710 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
1711 p_token_v => TO_CHAR(p_urgency_id),
1712 p_token_p => p_parameter_name,
1713 p_table_name => G_TABLE_NAME,
1714 p_column_name => 'URGENCY_ID' );
1715 WHEN OTHERS THEN
1716 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
1717 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
1718 fnd_msg_pub.ADD;
1719 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1720
1721 END;
1722 END Validate_Urgency;
1723
1724
1725 /*
1726 ** Validate_Closed_Date
1727 ** 1. The closed date is validated against the service request date.
1728 ** Therefore, this procedure takes in the service request date as a
1729 ** parameter.
1730 ** 2. Verify that the closed date is later than the service request date.
1731 */
1732 PROCEDURE Validate_Closed_Date
1733 ( p_api_name IN VARCHAR2,
1734 p_parameter_name IN VARCHAR2,
1735 p_closed_date IN DATE,
1736 p_request_date IN DATE,
1737 x_return_status OUT NOCOPY VARCHAR2
1738 )
1739 IS
1740 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Closed_Date';
1741 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
1742
1743
1744 BEGIN
1745 IF p_closed_date >= p_request_date THEN
1746 x_return_status := FND_API.G_RET_STS_SUCCESS;
1747 ELSE
1748 x_return_status := FND_API.G_RET_STS_ERROR;
1749 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
1750 p_token_v => TO_CHAR(p_closed_date),
1751 p_token_p => p_parameter_name,
1752 p_table_name => G_TABLE_NAME ,
1753 p_column_name => 'CLOSED_DATE' );
1754 END IF;
1755
1756 EXCEPTION
1757 WHEN OTHERS THEN
1758 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
1759 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
1760 fnd_msg_pub.ADD;
1761 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1762
1763 END Validate_Closed_Date;
1764
1765 ---- Added for Enh# 1830701
1766 PROCEDURE Validate_Inc_Reported_Date
1767 ( p_api_name IN VARCHAR2,
1768 p_parameter_name IN VARCHAR2,
1769 p_request_date IN DATE,
1770 p_inc_occurred_date IN DATE,
1771 x_return_status OUT NOCOPY VARCHAR2
1772 )
1773 IS
1774 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Inc_Reported_Date';
1775 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
1776
1777 BEGIN
1778 /* p_request_date is the incident date and the incident date
1779 should be greater than and equal to the incident occured_date*/
1780
1781 IF p_request_date >= p_inc_occurred_date THEN
1782 x_return_status := FND_API.G_RET_STS_SUCCESS;
1783 ELSE
1784 x_return_status := FND_API.G_RET_STS_ERROR;
1785 fnd_message.set_name ('CS','CS_INC_DATES_MISMATCH');
1786 fnd_message.set_token ('INCIDENT_DATE',TO_CHAR(p_request_date));
1787 fnd_message.set_token ('INCIDENT_OCC_DATE',TO_CHAR(p_inc_occurred_date));
1788 FND_MSG_PUB.ADD;
1789 END IF;
1790 EXCEPTION
1791 WHEN OTHERS THEN
1792 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
1793 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
1794 fnd_msg_pub.ADD;
1795 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1796
1797 END Validate_Inc_Reported_Date;
1798
1799 PROCEDURE Validate_Inc_Occurred_Date
1800 ( p_api_name IN VARCHAR2,
1801 p_parameter_name IN VARCHAR2,
1802 p_inc_occurred_date IN DATE,
1803 p_request_date IN DATE,
1804 x_return_status OUT NOCOPY VARCHAR2
1805 )
1806 IS
1807 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Inc_Occurred_Date';
1808 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
1809
1810 BEGIN
1811 IF p_inc_occurred_date <= p_request_date THEN
1812 x_return_status := FND_API.G_RET_STS_SUCCESS;
1813 ELSE
1814 x_return_status := FND_API.G_RET_STS_ERROR;
1815 fnd_message.set_name ('CS','CS_INC_DATES_MISMATCH');
1816 fnd_message.set_token ('INCIDENT_DATE',TO_CHAR(p_request_date));
1817 fnd_message.set_token ('INCIDENT_OCC_DATE',TO_CHAR(p_inc_occurred_date));
1818 FND_MSG_PUB.ADD;
1819 END IF;
1820 EXCEPTION
1821 WHEN OTHERS THEN
1822 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
1823 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
1824 fnd_msg_pub.ADD;
1825 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1826
1827 END Validate_Inc_Occurred_Date;
1828
1829 PROCEDURE Validate_Inc_Resolved_Date
1830 ( p_api_name IN VARCHAR2,
1831 p_parameter_name IN VARCHAR2,
1832 p_inc_resolved_date IN DATE,
1833 p_request_date IN DATE,
1834 x_return_status OUT NOCOPY VARCHAR2
1835 )
1836 IS
1837 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Inc_Resolved_Date';
1838 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
1839
1840 BEGIN
1841 IF p_inc_resolved_date >= p_request_date THEN
1842 x_return_status := FND_API.G_RET_STS_SUCCESS;
1843 ELSE
1844 x_return_status := FND_API.G_RET_STS_ERROR;
1845 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
1846 p_token_v => TO_CHAR(p_inc_resolved_date),
1847 p_token_p => p_parameter_name,
1848 p_table_name => G_TABLE_NAME,
1849 p_column_name => 'INCIDENT_RESOLVED_DATE' );
1850 END IF;
1851 EXCEPTION
1852 WHEN OTHERS THEN
1853 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
1854 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
1855 fnd_msg_pub.ADD;
1856 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1857
1858 END Validate_Inc_Resolved_Date;
1859
1860 PROCEDURE Validate_Inc_Responded_Date
1861 ( p_api_name IN VARCHAR2,
1862 p_parameter_name IN VARCHAR2,
1863 p_inc_responded_by_date IN DATE,
1864 p_request_date IN DATE,
1865 x_return_status OUT NOCOPY VARCHAR2
1866 )
1867 IS
1868 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Inc_Responded_Date';
1869 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
1870
1871 BEGIN
1872 IF p_inc_responded_by_date >= p_request_date THEN
1873 x_return_status := FND_API.G_RET_STS_SUCCESS;
1874 ELSE
1875 x_return_status := FND_API.G_RET_STS_ERROR;
1876 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
1877 p_token_v => TO_CHAR(p_inc_responded_by_date),
1878 p_token_p => p_parameter_name,
1879 p_table_name => G_TABLE_NAME,
1880 p_column_name => 'INC_RESPONDED_BY_DATE' );
1881 END IF;
1882 EXCEPTION
1883 WHEN OTHERS THEN
1884 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
1885 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
1886 fnd_msg_pub.ADD;
1887 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1888
1889 END Validate_Inc_Responded_Date;
1890
1891 ---- Added for Enh# 1830701
1892 -- -----------------------------------------------------------------------------
1893 -- Modification History
1894 -- Date Name Desc
1895 -- -------- -------- -----------------------------------------------------------
1896 -- 12/14/05 smisra Bug 4386879
1897 -- Added a new out param x_incident_country and set it based
1898 -- on country associated with location
1899 -- -----------------------------------------------------------------------------
1900 PROCEDURE Validate_Inc_Location_Id
1901 ( p_api_name IN VARCHAR2,
1902 p_parameter_name IN VARCHAR2,
1903 -- New parameter added for validation based on location type --anmukher -- 08/18/03
1904 p_incident_location_type IN VARCHAR2,
1905 p_incident_location_id IN NUMBER,
1906 x_incident_country OUT NOCOPY VARCHAR2,
1907 x_return_status OUT NOCOPY VARCHAR2
1908 )
1909 IS
1910 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Inc_Location_Id';
1911 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
1912
1913 -- Added for validation based on location type --anmukher -- 08/18/03
1914 e_invalid_location_type EXCEPTION;
1915
1916 BEGIN
1917
1918 -- Initialize Return Status to SUCCESS
1919 x_return_status := FND_API.G_RET_STS_SUCCESS;
1920
1921 BEGIN
1922 -- IF block added for validation based on location type --anmukher -- 08/18/03
1923 If p_incident_location_type = 'HZ_LOCATION' Then
1924
1925 SELECT country INTO x_incident_country
1926 FROM hz_locations
1927 WHERE location_id = p_incident_location_id;
1928 Elsif p_incident_location_type = 'HZ_PARTY_SITE' Then
1929
1930 SELECT b.country INTO x_incident_country
1931 FROM hz_party_sites a,
1932 hz_locations b
1933 WHERE party_site_id = p_incident_location_id
1934 AND a.location_id = b.location_id;
1935
1936 Else
1937
1938 RAISE e_invalid_location_type;
1939
1940 End If;
1941
1942
1943 EXCEPTION
1944 WHEN NO_DATA_FOUND THEN
1945 x_return_status := FND_API.G_RET_STS_ERROR;
1946 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
1947 p_token_v => TO_CHAR(p_incident_location_id),
1948 p_token_p => p_parameter_name,
1949 p_table_name => G_TABLE_NAME ,
1950 p_column_name => 'INCIDENT_LOCATION_ID' );
1951 -- Added for validation based on location type --anmukher -- 08/18/03
1952 WHEN e_invalid_location_type THEN
1953 x_return_status := FND_API.G_RET_STS_ERROR;
1954 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
1955 p_token_v => p_incident_location_type,
1956 p_token_p => 'p_incident_location_type',
1957 p_table_name => G_TABLE_NAME ,
1958 p_column_name => 'INCIDENT_LOCATION_TYPE' );
1959 WHEN OTHERS THEN
1960 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
1961 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
1962 fnd_msg_pub.ADD;
1963 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1964
1965 END;
1966 END Validate_Inc_Location_Id;
1967
1968 PROCEDURE Validate_Incident_Country
1969 ( p_api_name IN VARCHAR2,
1970 p_parameter_name IN VARCHAR2,
1971 p_incident_country IN VARCHAR2,
1972 x_return_status OUT NOCOPY VARCHAR2
1973 )
1974 IS
1975 l_dummy VARCHAR2(1);
1976 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Incident_Country';
1977 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
1978
1979 BEGIN
1980
1981 -- Initialize Return Status to SUCCESS
1982 x_return_status := FND_API.G_RET_STS_SUCCESS;
1983
1984 BEGIN
1985 SELECT 'x' INTO l_dummy
1986 FROM fnd_territories
1987 WHERE territory_code = p_incident_country;
1988
1989 EXCEPTION
1990 WHEN NO_DATA_FOUND THEN
1991 x_return_status := FND_API.G_RET_STS_ERROR;
1992 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
1993 p_token_v => p_incident_country,
1994 p_token_p => p_parameter_name,
1995 p_table_name => G_TABLE_NAME,
1996 p_column_name => 'INCIDENT_COUNTRY' );
1997 WHEN OTHERS THEN
1998 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
1999 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
2000 fnd_msg_pub.ADD;
2001 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2002
2003 END;
2004 END Validate_Incident_Country;
2005
2006 -------------------------------------------------------------------------------
2007 -- Validate_Employee
2008 -- Verify that the employee is valid and active.
2009 -- Made the LOV query and cursor query in sync.by shijain dated 11th oct 2002
2010
2011 -------------------------------------------------------------------------------
2012 -- -----------------------------------------------------------------------------
2013 -- Modification History
2014 -- Date Name Desc
2015 -- -------- -------- -----------------------------------------------------------
2016 -- 12/12/05 smisra Contingent worker support project
2017 -- replaced the view per_employees_x with per_workforce_x so
2018 -- that emaployee and temp worker could be SR contact
2019 -- -----------------------------------------------------------------------------
2020 PROCEDURE Validate_Employee
2021 ( p_api_name IN VARCHAR2,
2022 p_parameter_name IN VARCHAR2,
2023 p_employee_id IN NUMBER,
2024 p_org_id IN NUMBER := NULL,
2025 p_employee_name OUT NOCOPY VARCHAR2,
2026 x_return_status OUT NOCOPY VARCHAR2
2027 )
2028 IS
2029 l_orig_org_id NUMBER;
2030 l_dummy VARCHAR2(1);
2031 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Employee';
2032 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
2033
2034 CURSOR employee IS
2035 SELECT 'x'
2036 FROM per_workforce_x hr
2037 WHERE hr.person_id = p_employee_id
2038 AND NVL(hr.termination_date,SYSDATE) >= SYSDATE;
2039
2040 BEGIN
2041 -- Initialize return status to success
2042 x_return_status := FND_API.G_RET_STS_SUCCESS;
2043
2044 OPEN employee;
2045 FETCH employee INTO l_dummy;
2046 IF (employee%NOTFOUND) THEN
2047 x_return_status := FND_API.G_RET_STS_ERROR;
2048 CLOSE employee;
2049
2050 RAISE NO_DATA_FOUND;
2051 END IF;
2052 CLOSE employee;
2053
2054 EXCEPTION
2055 WHEN NO_DATA_FOUND THEN
2056 x_return_status := FND_API.G_RET_STS_ERROR;
2057 Add_Invalid_Argument_Msg
2058 ( p_token_an => l_api_name_full,
2059 p_token_v => TO_CHAR(p_employee_id),
2060 p_token_p => p_parameter_name,
2061 p_table_name => G_TABLE_NAME,
2062 p_column_name => 'EMPLOYEE_ID' );
2063
2064 WHEN OTHERS THEN
2065 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
2066 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
2067 fnd_msg_pub.ADD;
2068 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2069 END Validate_Employee;
2070
2071 -- --------------------------------------------------------------------------------
2072 -- Validate_Customer
2073 -- verify that the given customer is a valid and active customer.
2074 -- Check that the party_type of the Customer is same as the passed Caller_type (Bug 3666089)
2075 -- --------------------------------------------------------------------------------
2076 PROCEDURE Validate_Customer (
2077 p_api_name IN VARCHAR2,
2078 p_parameter_name IN VARCHAR2,
2079 p_customer_id IN NUMBER,
2080 p_caller_type IN VARCHAR2, --Bug 3666089
2081 x_return_status OUT NOCOPY VARCHAR2
2082 ) IS
2083
2084 -- l_dummy VARCHAR2(1);
2085 l_party_type VARCHAR2(30); -- Bug 3666089
2086 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Customer';
2087 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
2088
2089 --For bug 2885111
2090 l_associated_col1 VARCHAR2(240);
2091 l_token_v VARCHAR2(4000);
2092
2093 BEGIN
2094 -- Initialize Return Status to SUCCESS
2095 x_return_status := FND_API.G_RET_STS_SUCCESS;
2096
2097 --For bug 2885111
2098 l_associated_col1 := G_TABLE_NAME ||'.'||'CUSTOMER_ID';
2099 l_token_v := TO_CHAR(p_customer_id);
2100
2101 BEGIN
2102 SELECT party_type INTO l_party_type -- Bug 3666089
2103 FROM hz_parties a
2104 WHERE a.party_id = p_customer_id
2105 AND a.status = 'A'
2106 AND a.party_type IN ('ORGANIZATION','PERSON');
2107
2108 EXCEPTION
2109 WHEN NO_DATA_FOUND THEN
2110 x_return_status := FND_API.G_RET_STS_ERROR;
2111
2112 -- For bug 2885111 - adding a new error message
2113 FND_MESSAGE.Set_Name('CS', 'CS_SR_INVALID_CUSTOMER');
2114 FND_MESSAGE.Set_Token('API_NAME', l_api_name_full);
2115 FND_MESSAGE.Set_Token('VALUE',l_token_v);
2116 FND_MESSAGE.Set_Token('P_NAME', p_parameter_name);
2117 FND_MSG_PUB.ADD_DETAIL(p_associated_column1 => l_associated_col1);
2118
2119
2120 /* Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
2121 p_token_v => TO_CHAR(p_customer_id),
2122 p_token_p => p_parameter_name,
2123 p_table_name => G_TABLE_NAME,
2124 p_column_name => 'CUSTOMER_ID' ); */
2125 WHEN OTHERS THEN
2126 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
2127 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
2128 fnd_msg_pub.ADD;
2129 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2130
2131 END;
2132 --Addition for 3666089 starts
2133 IF (l_party_type <> p_caller_type) THEN
2134 x_return_status := FND_API.G_RET_STS_ERROR;
2135 FND_MESSAGE.Set_Name('CS', 'CS_SR_INVALID_CUST_TYPE');
2136 FND_MSG_PUB.ADD; --3666089 (Jun 15)
2137 END IF;
2138 --Addition for 3666089 Ends
2139
2140 END Validate_Customer;
2141
2142 /*
2143 ** Validate_Bill_To_Ship_To_Ct - validate_bill_to_ship_to_contact
2144 ** 1. Same procedure will be used to Validate Bill_To and Ship_To Contacts
2145 ** 2. Contat can be
2146 ** a. If Bill_to_customer is person , contact can be same person (Self)
2147 ** b. If bill_to_customer is person or Org, Contact can be a Relationship
2148 ** between the Bill_To Customer and a Person
2149 */
2150
2151 PROCEDURE Validate_Bill_To_Ship_To_Ct (
2152 p_api_name IN VARCHAR2,
2153 p_parameter_name IN VARCHAR2,
2154 p_bill_to_contact_id IN NUMBER,
2155 p_bill_to_party_id IN NUMBER,
2156 p_customer_type IN VARCHAR2,
2157 x_return_status OUT NOCOPY VARCHAR2 )
2158 IS
2159 l_dummy VARCHAR2(1);
2160 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Bill_To_Ship_To_Ct';
2161 l_api_name_full CONSTANT VARCHAR2(70) := G_PKG_NAME||'.'||l_api_name;
2162 l_party_type hz_parties.party_type % type;
2163
2164 CURSOR bill_to_party_type_csr is
2165 SELECT party_type from hz_parties
2166 WHERE party_id = p_bill_to_party_id;
2167
2168 CURSOR validate_bill_to_contact_csr IS
2169 SELECT 'x'
2170 FROM Hz_Parties sub,
2171 Hz_Relationships r
2172 WHERE r.object_id = p_bill_to_party_id
2173 AND r.party_id = p_bill_to_contact_id
2174 AND sub.status = 'A'
2175 AND r.status = 'A'
2176 AND r.subject_id = sub.party_id
2177 AND sub.party_type = 'PERSON'
2178 AND NVL(r.start_date, SYSDATE-1) < SYSDATE
2179 AND NVL(r.end_date, SYSDATE+1) > SYSDATE;
2180
2181 BEGIN
2182 -- Initialize the return status.
2183 x_return_status := FND_API.G_RET_STS_SUCCESS;
2184
2185 /*
2186 IF (p_bill_to_party_id = p_bill_to_contact_id AND
2187 p_customer_type = 'PERSON') THEN
2188 x_return_status := FND_API.G_RET_STS_SUCCESS;
2189 */
2190 /* if bill_to_party_id is same as bill_to_contact_id then bill_to_party_id
2191 has to be of type PERSON because contact has has to be of type PERSON
2192 2/11/04 smisra Bug 3379631
2193 Above 3 lines are replaced by 10 following lines
2194 */
2195 IF (p_bill_to_party_id = p_bill_to_contact_id) then
2196 OPEN bill_to_party_type_csr;
2197 FETCH bill_to_party_type_csr into l_party_type;
2198 CLOSE bill_to_party_type_csr;
2199 IF (l_party_type <> 'PERSON') then
2200 x_return_status := FND_API.G_RET_STS_ERROR;
2201 RAISE NO_DATA_FOUND;
2202 END IF;
2203 ELSE
2204 OPEN validate_bill_to_contact_csr;
2205 FETCH validate_bill_to_contact_csr INTO l_dummy;
2206
2207 IF (validate_bill_to_contact_csr%NOTFOUND) THEN
2208 x_return_status := FND_API.G_RET_STS_ERROR;
2209 CLOSE validate_bill_to_contact_csr;
2210 RAISE NO_DATA_FOUND;
2211 END IF;
2212
2213 CLOSE validate_bill_to_contact_csr;
2214 END IF;
2215
2216 EXCEPTION
2217 WHEN NO_DATA_FOUND THEN
2218 x_return_status := FND_API.G_RET_STS_ERROR;
2219 Add_Invalid_Argument_Msg(p_token_an => l_api_name_full,
2220 p_token_v => TO_CHAR(p_bill_to_contact_id),
2221 p_token_p => p_parameter_name ,
2222 p_table_name => G_TABLE_NAME,
2223 p_column_name => 'BILL_TO_CONTACT_ID' );
2224
2225 WHEN OTHERS THEN
2226 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
2227 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
2228 fnd_msg_pub.ADD;
2229 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2230
2231 END Validate_Bill_To_Ship_To_Ct;
2232
2233
2234 /*
2235 ** Validate_Customer_Contact
2236 ** 1. The validation of the customer contact depends on the value of the
2237 ** service request customer. Therefore, the service request customer is
2238 ** passed in as a parameter.
2239 ** 2. Since customer relationships is a multi-org entity, this procedure
2240 ** accepts ORG_ID as a parameter.
2241 ** 3. Verify that the contact is an active contact within the operating unit.
2242 ** 4. Verify that the contact belongs to the service request customer, or one
2243 ** of its related customers.
2244 ** 5. Made the LOV query and the validation in sync, dated oct 11th 2002 by
2245 ** shijain, also the union part is removed from the cursor to check the
2246 ** self condition as in that case the customer is already valid.
2247 ** 6. Added one more in parameter as p_customer_type, to get the header
2248 ** customer_type by shijain.
2249 *
2250 **** Commented and replaced by Validate_bill_To_contact in 11.5.9 */
2251 PROCEDURE Validate_Customer_Contact
2252 ( p_api_name IN VARCHAR2,
2253 p_parameter_name IN VARCHAR2,
2254 p_customer_contact_id IN NUMBER,
2255 p_customer_id IN NUMBER,
2256 p_org_id IN NUMBER := NULL,
2257 p_customer_type IN VARCHAR2,
2258 x_return_status OUT NOCOPY VARCHAR2 )
2259 IS
2260 l_dummy VARCHAR2(1);
2261 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Customer_Contact';
2262 l_api_name_full CONSTANT VARCHAR2(70) := G_PKG_NAME||'.'||l_api_name;
2263
2264 CURSOR validate_bill_to_contact_csr IS
2265 SELECT 'x'
2266 FROM Hz_Parties sub,
2267 Hz_Relationships r
2268 WHERE r.object_id = p_customer_id
2269 AND r.party_id = p_customer_contact_id
2270 AND sub.status = 'A'
2271 AND r.status = 'A'
2272 AND r.subject_id = sub.party_id
2273 AND sub.party_type = 'PERSON'
2274 AND NVL(r.start_date, SYSDATE-1) < SYSDATE
2275 AND NVL(r.end_date, SYSDATE+1) > SYSDATE;
2276
2277 BEGIN
2278 -- Initialize the return status.
2279 x_return_status := FND_API.G_RET_STS_SUCCESS;
2280
2281 IF ( p_customer_id = p_customer_contact_id AND
2282 p_customer_type = 'PERSON') THEN
2283 x_return_status := FND_API.G_RET_STS_SUCCESS;
2284 ELSE
2285 OPEN validate_bill_to_contact_csr;
2286 FETCH validate_bill_to_contact_csr INTO l_dummy;
2287
2288 IF (validate_bill_to_contact_csr%NOTFOUND) THEN
2289 x_return_status := FND_API.G_RET_STS_ERROR;
2290 CLOSE validate_bill_to_contact_csr;
2291 RAISE NO_DATA_FOUND;
2292 END IF;
2293
2294 CLOSE validate_bill_to_contact_csr;
2295
2296 END IF;
2297 EXCEPTION
2298 WHEN NO_DATA_FOUND THEN
2299 x_return_status := FND_API.G_RET_STS_ERROR;
2300 Add_Invalid_Argument_Msg(
2301 p_token_an => l_api_name_full,
2302 p_token_v => TO_CHAR(p_customer_contact_id),
2303 p_token_p => p_parameter_name,
2304 p_table_name => G_TABLE_NAME,
2305 p_column_name => 'CUSTOMER_CONTACT_ID' );
2306
2307 WHEN OTHERS THEN
2308 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
2309 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
2310 fnd_msg_pub.ADD;
2311 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2312
2313 END Validate_Customer_Contact;
2314
2315 --Procedure added to support contacts of type relation
2316 --Added on Jan 22nd 2001
2317 -- Made the LOV query and cursor query in sync.by shijain dated 11th oct 2002
2318
2319 -- 06/06/06 spusegao Modified the WHERE clause 'AND NVL(r.start_date, SYSDATE-1) < SYSDATE' to
2320 -- 'AND NVL(r.start_date, SYSDATE-1) <= SYSDATE' for bug # 5216551.
2321
2322 PROCEDURE Validate_Org_Relationship
2323 ( p_api_name IN VARCHAR2,
2324 p_parameter_name IN VARCHAR2,
2325 p_customer_contact_id IN NUMBER,
2326 p_customer_id IN NUMBER,
2327 p_org_id IN NUMBER := NULL,
2328 x_return_status OUT NOCOPY VARCHAR2
2329 )
2330 IS
2331 l_dummy VARCHAR2(1);
2332 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Org_Relationship';
2333 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
2334
2335 CURSOR party_relationship IS
2336 SELECT 'x'
2337 FROM Hz_Parties sub,
2338 Hz_Relationships r,
2339 Hz_Parties obj
2340 WHERE r.object_id = p_customer_id
2341 AND r.party_id = p_customer_contact_id
2342 AND sub.status = 'A'
2343 AND r.status = 'A'
2344 AND obj.status = 'A'
2345 AND r.subject_id = sub.party_id
2346 AND r.object_id = obj.party_id
2347 AND sub.party_type = 'PERSON'
2348 AND obj.party_type = 'ORGANIZATION'
2349 AND NVL(r.start_date, SYSDATE-1) <= SYSDATE
2350 AND NVL(r.end_date, SYSDATE+1) > SYSDATE;
2351
2352 BEGIN
2353 -- Initialize the return status.
2354 x_return_status := FND_API.G_RET_STS_SUCCESS;
2355
2356 OPEN party_relationship;
2357 FETCH party_relationship INTO l_dummy;
2358
2359 IF (party_relationship%NOTFOUND) THEN
2360 x_return_status := FND_API.G_RET_STS_ERROR;
2361 CLOSE party_relationship;
2362 RAISE NO_DATA_FOUND;
2363 END IF;
2364
2365 CLOSE party_relationship;
2366
2367 EXCEPTION
2368 WHEN NO_DATA_FOUND THEN
2369 x_return_status := FND_API.G_RET_STS_ERROR;
2370 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
2371 p_token_v => TO_CHAR(p_customer_contact_id),
2372 p_token_p => p_parameter_name,
2373 p_table_name => G_TABLE_NAME,
2374 p_column_name => 'CUSTOMER_CONTACT_ID' );
2375 WHEN OTHERS THEN
2376 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
2377 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
2378 fnd_msg_pub.ADD;
2379 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2380
2381 END Validate_Org_Relationship;
2382
2383 -- Made the LOV query and cursor query in sync.by shijain dated 11th oct 2002
2384
2385 PROCEDURE Validate_Person_Relationship
2386 ( p_api_name IN VARCHAR2,
2387 p_parameter_name IN VARCHAR2,
2388 p_customer_contact_id IN NUMBER,
2389 p_customer_id IN NUMBER,
2390 p_org_id IN NUMBER := NULL,
2391 x_return_status OUT NOCOPY VARCHAR2
2392 )
2393 IS
2394 l_dummy VARCHAR2(1);
2395 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Person_Relationship';
2396 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
2397
2398 CURSOR party_relationship_per IS
2399 SELECT 'x'
2400 FROM Hz_Parties sub,
2401 Hz_Relationships r,
2402 Hz_Parties obj
2403 WHERE r.object_id = p_customer_id
2404 AND r.party_id = p_customer_contact_id
2405 AND sub.status = 'A'
2406 AND r.status = 'A'
2407 AND obj.status = 'A'
2408 AND r.subject_id = sub.party_id
2409 AND r.object_id = obj.party_id
2410 AND sub.party_type = 'PERSON'
2411 AND obj.party_type = 'PERSON'
2412 -- Made below changes as per bug6629807 put <= instead of < rtripath 12/30/2007
2413 AND NVL(r.start_date, SYSDATE-1) <= SYSDATE
2414 AND NVL(r.end_date, SYSDATE+1) > SYSDATE;
2415
2416 BEGIN
2417 -- Initialize the return status.
2418 x_return_status := FND_API.G_RET_STS_SUCCESS;
2419
2420 IF p_customer_id = p_customer_contact_id THEN
2421 x_return_status := FND_API.G_RET_STS_SUCCESS;
2422 ELSE
2423 OPEN party_relationship_per;
2424 FETCH party_relationship_per INTO l_dummy;
2425 IF (party_relationship_per%NOTFOUND) THEN
2426 x_return_status := FND_API.G_RET_STS_ERROR;
2427 CLOSE party_relationship_per;
2428
2429 RAISE NO_DATA_FOUND;
2430 END IF;
2431 CLOSE party_relationship_per;
2432 END IF;
2433
2434 EXCEPTION
2435 WHEN NO_DATA_FOUND THEN
2436 x_return_status := FND_API.G_RET_STS_ERROR;
2437 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
2438 p_token_v => TO_CHAR(p_customer_contact_id),
2439 p_token_p => p_parameter_name,
2440 p_table_name => G_TABLE_NAME,
2441 p_column_name => 'CUSTOMER_CONTACT_ID' );
2442 WHEN OTHERS THEN
2443 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
2444 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
2445 fnd_msg_pub.ADD;
2446 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2447
2448 END Validate_Person_Relationship;
2449
2450 -----------------------------------------------------------------------------
2451 -- Validate_Customer_Product
2452 -- 1. Since the installed base is a multi-org entity, this procedure accepts
2453 -- ORG_ID as a parameter.
2454 -- 2. Verify that the customer pro
2455 -----------------------------------------------------------------------------
2456 PROCEDURE Validate_Customer_Product
2457 ( p_api_name IN VARCHAR2,
2458 p_parameter_name IN VARCHAR2,
2459 p_customer_product_id IN NUMBER,
2460 p_org_id IN NUMBER := NULL,
2461 p_customer_id IN NUMBER,
2462 p_inventory_item_id OUT NOCOPY NUMBER,
2463 p_inventory_org_id IN NUMBER,
2464 x_return_status OUT NOCOPY VARCHAR2 )
2465 IS
2466 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Customer_Product';
2467 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
2468
2469 BEGIN
2470 -- Initialize the return status.
2471 x_return_status := FND_API.G_RET_STS_SUCCESS;
2472
2473 -- Changes made by shijain dec 4th 2002, added the check if the profile
2474 -- value of cs_sr_restrict_ib is yes then check for hz_party_sites and
2475 -- hz_locations else don't need to check anything
2476
2477 IF CS_ServiceRequest_PVT.g_restrict_ib = 'YES' THEN
2478 SELECT a.inventory_item_id
2479 INTO p_inventory_item_id
2480 FROM csi_item_instances a,
2481 mtl_system_items_b b,
2482 csi_i_parties cip
2483 WHERE a.instance_id = p_customer_product_id
2484 --AND a.owner_party_id = p_customer_id
2485 AND cip.party_id = p_customer_id
2486 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(a.active_start_date,SYSDATE))
2487 AND TRUNC(NVL(a.active_end_date, SYSDATE))
2488 AND a.location_type_code IN ('HZ_PARTY_SITES','HZ_LOCATIONS')
2489 AND a.owner_party_source_table = 'HZ_PARTIES'
2490 AND a.instance_id = cip.instance_id
2491 AND cip.party_source_table = 'HZ_PARTIES'
2492 AND a.inventory_item_id = b.inventory_item_id
2493 AND b.organization_id = p_inventory_org_id
2494 -- Commented service_item_flag condition as this is not used
2495 -- anymore and added contract_item_type_code condition
2496 -- AND b.service_item_flag = 'N'
2497 -- For ER 3701924
2498 -- AND contract_item_type_code IS NULL
2499 AND b.enabled_flag = 'Y'
2500 -- Added for Bug# 2167129,2175917
2501 AND b.serv_req_enabled_code = 'E'
2502 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(b.start_date_active, SYSDATE))
2503 AND TRUNC(NVL(b.end_date_active, SYSDATE))
2504 AND rownum<2;
2505 ELSE
2506 SELECT a.inventory_item_id
2507 INTO p_inventory_item_id
2508 FROM csi_item_instances a,
2509 mtl_system_items_b b,
2510 csi_i_parties cip
2511 WHERE a.instance_id = p_customer_product_id
2512 -- AND a.owner_party_id = p_customer_id
2513 AND cip.party_id = p_customer_id
2514 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(a.active_start_date,SYSDATE))
2515 AND TRUNC(NVL(a.active_end_date, SYSDATE))
2516 AND a.owner_party_source_table = 'HZ_PARTIES'
2517 AND a.instance_id = cip.instance_id
2518 AND cip.party_source_table = 'HZ_PARTIES'
2519 AND a.inventory_item_id = b.inventory_item_id
2520 AND b.organization_id = p_inventory_org_id
2521 -- Commented service_item_flag condition as this is not used
2522 -- anymore and added contract_item_type_code condition
2523 -- AND b.service_item_flag = 'N'
2524 -- For ER 3701924
2525 -- AND contract_item_type_code IS NULL
2526 AND b.enabled_flag = 'Y'
2527 -- Added for Bug# 2167129,2175917
2528 AND b.serv_req_enabled_code = 'E'
2529 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(b.start_date_active, SYSDATE))
2530 AND TRUNC(NVL(b.end_date_active, SYSDATE))
2531 AND rownum<2;
2532 END IF;
2533
2534 EXCEPTION
2535 WHEN NO_DATA_FOUND THEN
2536 x_return_status := FND_API.G_RET_STS_ERROR;
2537 Add_Invalid_Argument_Msg(
2538 p_token_an => l_api_name_full,
2539 p_token_v => TO_CHAR(p_customer_product_id),
2540 p_token_p => p_parameter_name,
2541 p_table_name => G_TABLE_NAME,
2542 p_column_name => 'CUSTOMER_PRODUCT_ID' );
2543
2544 WHEN OTHERS THEN
2545 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
2546 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
2547 fnd_msg_pub.ADD;
2548 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2549
2550 END Validate_Customer_Product;
2551
2552 /*
2553 Modification History
2554 Date Name Desc
2555 -------- -------- ---------------------------------------------------------------
2556 03/25/05 smisra Bug 4239975 Modified this procedure and removed validation of
2557 current serial number when customer product is null and
2558 inventory item is IB trackable.
2559 */
2560 ----------------------------------------------
2561 PROCEDURE Validate_Current_Serial(
2562 p_api_name IN VARCHAR2,
2563 p_parameter_name IN VARCHAR2,
2564 p_inventory_item_id IN NUMBER := NULL,
2565 p_inventory_org_id IN NUMBER,
2566 p_customer_product_id IN NUMBER := NULL,
2567 p_customer_id IN NUMBER := NULL,
2568 p_current_serial_number IN VARCHAR2,
2569 x_return_status OUT NOCOPY VARCHAR2 )
2570 IS
2571 l_dummy VARCHAR2(1);
2572 inv_item_IB_trackable VARCHAR2(1);
2573 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Current_Serial';
2574 l_api_name_full CONSTANT VARCHAR2(70) := G_PKG_NAME||'.'||l_api_name;
2575
2576
2577 BEGIN
2578 -- Initialize the return status.
2579 x_return_status := FND_API.G_RET_STS_SUCCESS;
2580
2581 --Check if installed base or not
2582 --Added a condition to fix bug# 1902127, since the script
2583 --fails while creating/updating an SR for non-IB.
2584
2585 IF ( p_customer_product_id IS NOT NULL ) AND
2586 ( p_customer_product_id <> FND_API.G_MISS_NUM ) THEN
2587
2588 -- Changes made by shijain dec 4th 2002, added the check if the profile
2589 -- value of cs_sr_restrict_ib is yes then check for hz_party_sites and
2590 -- hz_locations else don't need to check anything
2591
2592 IF CS_ServiceRequest_PVT.g_restrict_ib = 'YES' THEN
2593
2594 SELECT 'x' INTO l_dummy
2595 FROM csi_item_instances a,
2596 mtl_system_items_b b,
2597 csi_i_parties cip
2598 WHERE a.instance_id = p_customer_product_id
2599 AND a.serial_number = p_current_serial_number
2600 -- AND a.owner_party_account_id = p_customer_id
2601 AND cip.party_id = p_customer_id
2602 AND a.instance_id = cip.instance_id
2603 AND cip.party_source_table = 'HZ_PARTIES'
2604 AND b.serv_req_enabled_code = 'E'
2605 -- Added contract_item_type_code condition
2606 -- For ER 3701924
2607 -- AND contract_item_type_code IS NULL
2608 -- Added for Bug# 2167129,2175917
2609 AND a.location_type_code IN ('HZ_PARTY_SITES','HZ_LOCATIONS')
2610 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(a.active_start_date,SYSDATE))
2611 AND TRUNC(NVL(a.active_end_date, SYSDATE))
2612 AND b.inventory_item_id = a.inventory_item_id
2613 AND b.organization_id = p_inventory_org_id
2614 AND rownum<2;
2615 ELSE
2616 SELECT 'x' INTO l_dummy
2617 FROM csi_item_instances a,
2618 mtl_system_items_b b,
2619 csi_i_parties cip
2620 WHERE a.instance_id = p_customer_product_id
2621 AND a.serial_number = p_current_serial_number
2622 -- AND a.owner_party_account_id = p_customer_id
2623 AND cip.party_id = p_customer_id
2624 AND a.instance_id = cip.instance_id
2625 AND cip.party_source_table = 'HZ_PARTIES'
2626 AND b.serv_req_enabled_code = 'E'
2627 -- Added contract_item_type_code condition
2628 -- For ER 3701924
2629 -- AND contract_item_type_code IS NULL
2630 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(a.active_start_date,SYSDATE))
2631 AND TRUNC(NVL(a.active_end_date, SYSDATE))
2632 AND b.inventory_item_id = a.inventory_item_id
2633 AND b.organization_id = p_inventory_org_id
2634 AND rownum < 2;
2635 END IF;
2636 END IF;
2637
2638 EXCEPTION
2639 WHEN NO_DATA_FOUND THEN
2640 x_return_status := FND_API.G_RET_STS_ERROR;
2641 Add_Invalid_Argument_Msg(p_token_an => l_api_name_full,
2642 p_token_v => p_current_serial_number,
2643 p_token_p => p_parameter_name ,
2644 p_table_name => G_TABLE_NAME,
2645 p_column_name => 'CURRENT_SERIAL_NUMBER');
2646
2647 WHEN OTHERS THEN
2648 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
2649 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
2650 fnd_msg_pub.ADD;
2651 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2652
2653 END Validate_Current_Serial;
2654
2655 -- for cmro_eam
2656 -- ------------------------------------------------------------------------------
2657 -- Validate Inventory_Org
2658 -- 1. verify that the given inventory org is valid
2659 -- ------------------------------------------------------------------------------
2660 -- -----------------------------------------------------------------------------
2661 -- Modification History
2662 -- Date Name Desc
2663 -- -------- -------- -----------------------------------------------------------
2664 -- 06/09/05 smisra Release 12 changes
2665 -- removed parameter p_maintenance_flag and it's processing
2666 -- -----------------------------------------------------------------------------
2667 PROCEDURE Validate_Inventory_Org(
2668 p_api_name IN VARCHAR2,
2669 p_parameter_name IN VARCHAR2,
2670 p_inv_org_id IN NUMBER,
2671 x_inv_org_master_org_flag OUT NOCOPY VARCHAR2,
2672 x_return_status OUT NOCOPY VARCHAR2
2673 ) IS
2674 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Inventory_Org';
2675 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
2676 l_dummy VARCHAR2(1);
2677
2678 l_eam_enabled mtl_parameters.eam_enabled_flag % TYPE;
2679 l_maint_org_id mtl_parameters.maint_organization_id % TYPE;
2680 l_master_org_id mtl_parameters.master_organization_id % TYPE;
2681 BEGIN
2682 -- Initialize Return Status to SUCCESS
2683 x_return_status := FND_API.G_RET_STS_SUCCESS;
2684 x_inv_org_master_org_flag := NULL;
2685
2686 get_org_details
2687 ( p_org_id => p_inv_org_id
2688 , x_eam_enabled_flag => l_eam_enabled
2689 , x_maint_org_id => l_maint_org_id
2690 , x_master_org_id => l_master_org_id
2691 , x_return_Status => x_return_status
2692 );
2693 IF x_return_status = FND_API.G_RET_STS_ERROR
2694 THEN
2695 RAISE NO_DATA_FOUND;
2696 END IF;
2697 IF p_inv_org_id = l_master_org_id
2698 THEN
2699 x_inv_org_master_org_flag := 'Y';
2700 ELSE
2701 x_inv_org_master_org_flag := 'N';
2702 END IF;
2703 /***** replace this query ith the above procedure call 7/27/05 smisra
2704 select 'x' INTO l_dummy
2705 from mtl_parameters
2706 where organization_id = p_inv_org_id;
2707 ***/
2708 EXCEPTION
2709 WHEN NO_DATA_FOUND THEN
2710 x_return_status := FND_API.G_RET_STS_ERROR;
2711 Add_Invalid_Argument_Msg(
2712 p_token_an => l_api_name_full,
2713 p_token_v => p_inv_org_id,
2714 p_token_p => p_parameter_name ,
2715 p_table_name => G_TABLE_NAME,
2716 p_column_name => 'INVENTORY_ORG_ID');
2717
2718 WHEN OTHERS THEN
2719 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
2720 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
2721 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
2722 fnd_msg_pub.ADD;
2723 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2724
2725 END Validate_Inventory_Org;
2726
2727 -- ------------------------------------------------------------------------------
2728 -- Validate Owning Department
2729 -- 1. verfity that the departmnet is activ in bom_departments
2730 -- 2. verify that the department is vaild for the given organization
2731 -- ------------------------------------------------------------------------------
2732 PROCEDURE Validate_Owning_Department(
2733 p_api_name IN VARCHAR2,
2734 p_parameter_name IN VARCHAR2,
2735 p_inv_org_id IN NUMBER,
2736 p_owning_dept_id IN NUMBER,
2737 p_maintenance_flag IN VARCHAR2,
2738 x_return_status OUT NOCOPY VARCHAR2
2739 )IS
2740 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Owning_Department';
2741 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
2742 l_dummy VARCHAR2(1);
2743 BEGIN
2744 -- Initialize Return Status to SUCCESS
2745 x_return_status := FND_API.G_RET_STS_SUCCESS;
2746
2747 IF (p_maintenance_flag = 'Y' or p_maintenance_flag = 'y') THEN
2748 IF (p_owning_dept_id IS NOT NULL AND
2749 p_owning_dept_id <> FND_API.G_MISS_NUM) THEN
2750 select 'x' INTO l_dummy
2751 from bom_departments b
2752 where b.department_id = p_owning_dept_id
2753 and TRUNC(NVL(b.disable_date,SYSDATE+1)) > TRUNC(SYSDATE)
2754 and b.organization_id = p_inv_org_id;
2755 END IF;
2756 END IF;
2757
2758 EXCEPTION
2759 WHEN NO_DATA_FOUND THEN
2760 x_return_status := FND_API.G_RET_STS_ERROR;
2761 Add_Invalid_Argument_Msg(
2762 p_token_an => l_api_name_full,
2763 p_token_v => p_owning_dept_id,
2764 p_token_p => p_parameter_name ,
2765 p_table_name => G_TABLE_NAME,
2766 p_column_name => 'OWNING_DEPARTMENT_ID');
2767
2768 WHEN OTHERS THEN
2769 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
2770 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
2771 fnd_msg_pub.ADD;
2772 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2773
2774 END Validate_Owning_Department;
2775
2776 -- --------------------------------------------------------------------------------
2777 -- Validate_Product
2778 -- 1. verify that the products exists in the given operating unit and the
2779 -- inventory org specified in the profile options.
2780 -- 2. ensure that the product is a serviceable item.
2781 -- --------------------------------------------------------------------------------
2782 -- -----------------------------------------------------------------------------
2783 -- Modification History
2784 -- Date Name Desc
2785 -- -------- -------- -----------------------------------------------------------
2786 -- 06/07/05 smisra Release 12 changes
2787 -- Add parameter p_maint_organization_id to perform EAM item
2788 -- validation. Removed the existing query to validate EAM item
2789 -- As per new validation EAM item can belong to maint org or
2790 -- any org that is maintained by maint org.
2791 -- Old validation logic can be seen in file version:115.221
2792 -- 08/03/05 smisra added a new param p_inv_org_master_org_flag. if this flag
2793 -- is Y then item can belong to any org in the master org
2794 -- that is maintained by maint_organization_id otherwise
2795 -- item should belong to inv org only.
2796 -- 08/25/05 smisra gave error if maint_organization_id is G_MISS_NUM for
2797 -- EAM SRs
2798 -- -----------------------------------------------------------------------------
2799 PROCEDURE Validate_Product
2800 ( p_api_name IN VARCHAR2
2801 , p_parameter_name IN VARCHAR2
2802 , p_inventory_item_id IN NUMBER
2803 , p_inventory_org_id IN NUMBER
2804 , x_return_status OUT NOCOPY VARCHAR2
2805 , p_maintenance_flag IN VARCHAR2
2806 , p_maint_organization_id IN NUMBER
2807 , p_inv_org_master_org_flag IN VARCHAR2
2808 ) IS
2809
2810 l_dummy VARCHAR2(1);
2811 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Product';
2812 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
2813
2814
2815 BEGIN
2816 -- Initialize Return Status to SUCCESS
2817 x_return_status := FND_API.G_RET_STS_SUCCESS;
2818 -- for cmro_eam
2819 IF (p_maintenance_flag = 'Y' or p_maintenance_flag = 'y') THEN
2820 IF p_maint_organization_id IS NULL OR
2821 p_maint_organization_id = FND_API.G_MISS_NUM
2822 THEN
2823 x_return_status := FND_API.G_RET_STS_ERROR;
2824 Add_Null_Parameter_Msg
2825 ( p_token_an => l_api_name_full
2826 , p_token_np => 'p_maint_organization_id'
2827 , p_table_name => G_TABLE_NAME
2828 , p_column_name => 'MAINT_ORGANIZATION_ID'
2829 );
2830 ELSIF p_inv_org_master_org_flag = 'Y'
2831 THEN
2832 SELECT 'X'
2833 INTO l_dummy
2834 FROM mtl_system_items_b msi,
2835 mtl_parameters mp
2836 WHERE msi.inventory_item_id = p_inventory_item_id
2837 AND msi.enabled_flag = 'Y'
2838 AND msi.serv_req_enabled_code = 'E'
2839 AND msi.organization_id = mp.organization_id
2840 AND mp.maint_organization_id = p_maint_organization_id
2841 AND mp.master_organization_id = p_inventory_org_id
2842 AND msi.eam_item_type IN (1,3)
2843 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date_active, SYSDATE))
2844 AND TRUNC(NVL(end_date_active , SYSDATE))
2845 AND rownum = 1;
2846 ELSE
2847 SELECT 'X'
2848 INTO l_dummy
2849 FROM mtl_system_items_b msi,
2850 mtl_parameters mp
2851 WHERE msi.inventory_item_id = p_inventory_item_id
2852 AND msi.enabled_flag = 'Y'
2853 AND msi.serv_req_enabled_code = 'E'
2854 AND msi.organization_id = mp.organization_id
2855 AND mp.maint_organization_id = p_maint_organization_id
2856 AND mp.organization_id = p_inventory_org_id
2857 AND msi.eam_item_type IN (1,3)
2858 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date_active, SYSDATE))
2859 AND TRUNC(NVL(end_date_active , SYSDATE));
2860 END IF; -- end if for condition p_maint_organization_id IS NULL
2861 ELSE
2862 -- item is not EAM
2863 SELECT 'x' INTO l_dummy
2864 FROM mtl_system_items_b msi
2865 WHERE msi.inventory_item_id = p_inventory_item_id
2866 AND msi.enabled_flag = 'Y'
2867 AND msi.serv_req_enabled_code = 'E'
2868 -- For ER 3701924
2869 -- AND msi.contract_item_type_code IS NULL
2870 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date_active, SYSDATE))
2871 AND TRUNC(NVL(end_date_active , SYSDATE))
2872 AND msi.organization_id = p_inventory_org_id;
2873 END IF;
2874 EXCEPTION
2875 WHEN NO_DATA_FOUND THEN
2876 x_return_status := FND_API.G_RET_STS_ERROR;
2877 Add_Invalid_Argument_Msg
2878 ( p_token_an => l_api_name_full
2879 , p_token_v => TO_CHAR(p_inventory_item_id)
2880 , p_token_p => p_parameter_name
2881 , p_table_name => G_TABLE_NAME
2882 , p_column_name => 'INVENTORY_ITEM_ID'
2883 );
2884 WHEN OTHERS THEN
2885 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
2886 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
2887 fnd_msg_pub.ADD;
2888 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2889 END Validate_Product;
2890
2891
2892 -- --------------------------------------------------------------------------------
2893 -- Validate_Problem_Code
2894 -- verify that the problem code is an active problem code - same validation as UI
2895 -- First based on the parameters, check whether u find records in cs_sr_prob_code_mapping
2896 -- If 1 or more records are found
2897 -- then verify whether the given problem code is present in the records
2898 -- Raise error if no problem code matches the given problem code
2899 -- If 0 records are found in the Query, then validate the given problem code
2900 -- agains cs_lookups
2901 -- --------------------------------------------------------------------------------
2902 -- DJ API Cleanup
2903 -- Changed the validation of Problem code to invoke the problem code
2904 -- validation api cs_sr_prob_code_mapping_pkg.validate_problem_code
2905 PROCEDURE Validate_Problem_Code (
2906 p_api_name IN VARCHAR2,
2907 p_parameter_name IN VARCHAR2,
2908 p_problem_code IN VARCHAR2,
2909 p_incident_type_id IN NUMBER,
2910 p_inventory_item_id IN NUMBER,
2911 p_inventory_org_id IN NUMBER, -- added for API cleanup
2912 p_category_id IN NUMBER, -- added for API cleanup
2913 x_return_status OUT NOCOPY VARCHAR2)
2914 IS
2915
2916 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Problem_Code';
2917 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
2918
2919 l_pc_rec cs_sr_prob_code_mapping_pkg.probcode_search_rec;
2920
2921 lx_msg_count NUMBER;
2922 lx_msg_data VARCHAR2(2000);
2923
2924 BEGIN
2925 -- Initialize Return Status to SUCCESS
2926 x_return_status := FND_API.G_RET_STS_SUCCESS;
2927
2928 -- populate the problem code mapping record type
2929 l_pc_rec.service_request_type_id := p_incident_type_id;
2930 l_pc_rec.inventory_item_id := p_inventory_item_id;
2931 l_pc_rec.organization_id := p_inventory_org_id;
2932 l_pc_rec.product_category_id := p_category_id;
2933
2934 -- invoke the prob. code validation API that returns back if the given
2935 -- problem code is valid for the given mapping criteria. This API call
2936 -- is introduced in 11.5.10 and replaces the SQL logic that was present
2937 -- pre 11.5.10
2938
2939 cs_sr_prob_code_mapping_pkg.validate_problem_code (
2940 p_api_version => 1.0,
2941 p_init_msg_list => FND_API.G_TRUE,
2942 p_probcode_criteria_rec => l_pc_rec,
2943 p_problem_code => p_problem_code,
2944 x_return_status => x_return_status,
2945 x_msg_count => lx_msg_count,
2946 x_msg_data => lx_msg_data );
2947
2948 if ( x_return_status <> FND_API.G_RET_STS_SUCCESS ) then
2949 -- new message for 11.5.10
2950 -- Problem code is not valid. Please check the values for the following:\
2951 -- Service request type, inventory item and product category.
2952 fnd_message.set_name ('CS', 'CS_SR_PROB_CODE_INVALID');
2953 fnd_message.set_token('API_NAME', l_api_name_full );
2954 fnd_msg_pub.add;
2955 end if;
2956
2957
2958 EXCEPTION
2959 WHEN OTHERS THEN
2960 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
2961 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
2962 fnd_msg_pub.ADD;
2963 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2964
2965 END Validate_Problem_Code;
2966
2967 -- -----------------------------------------------------------------------------
2968 -- Validate_Cust_Pref_Lang_Code
2969 -- -----------------------------------------------------------------------------
2970
2971 PROCEDURE Validate_Cust_Pref_Lang_Code (
2972 p_api_name IN VARCHAR2,
2973 p_parameter_name IN VARCHAR2,
2974 p_cust_pref_lang_code IN VARCHAR2,
2975 x_return_status OUT NOCOPY VARCHAR2
2976 ) IS
2977
2978 l_dummy VARCHAR2(1);
2979 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Cust_Pref_Lang_Code';
2980 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
2981
2982 BEGIN
2983 -- Initialize Return Status to SUCCESS
2984 x_return_status := FND_API.G_RET_STS_SUCCESS;
2985
2986 BEGIN
2987 SELECT 'x' INTO l_dummy
2988 FROM cs_sr_preferred_lang_v
2989 WHERE language_code = p_cust_pref_lang_code
2990 AND trunc(sysdate) between trunc(nvl(start_date_active,sysdate))
2991 AND trunc(nvl(end_date_active,sysdate));
2992
2993 EXCEPTION
2994 WHEN NO_DATA_FOUND THEN
2995 x_return_status := FND_API.G_RET_STS_ERROR;
2996 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
2997 p_token_v => p_cust_pref_lang_code,
2998 p_token_p => p_parameter_name,
2999 p_table_name => G_TABLE_NAME,
3000 p_column_name => 'CUST_PERF_LANG_CODE');
3001 WHEN OTHERS THEN
3002 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
3003 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
3004 fnd_msg_pub.ADD;
3005 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3006
3007 END;
3008 END Validate_Cust_Pref_Lang_Code;
3009
3010 -- ----------------------------------------------------------------------------
3011 -- Validate_Comm_Pref_Code
3012 -- -----------------------------------------------------------------------------
3013 PROCEDURE Validate_Comm_Pref_Code (
3014 p_api_name IN VARCHAR2,
3015 p_parameter_name IN VARCHAR2,
3016 p_comm_pref_code IN VARCHAR2,
3017 x_return_status OUT NOCOPY VARCHAR2
3018 ) IS
3019 l_dummy VARCHAR2(60);
3020 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Comm_Pref_Code';
3021 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
3022
3023 BEGIN
3024 -- Initialize Return Status to SUCCESS
3025 x_return_status := FND_API.G_RET_STS_SUCCESS;
3026
3027 BEGIN
3028 SELECT DISTINCT lookup_code INTO l_dummy
3029 FROM ar_lookups
3030 WHERE lookup_type = 'COMMUNICATION_TYPE'
3031 AND lookup_code = p_comm_pref_code;
3032
3033 EXCEPTION
3034 WHEN NO_DATA_FOUND THEN
3035 x_return_status := FND_API.G_RET_STS_ERROR;
3036 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
3037 p_token_v => p_comm_pref_code,
3038 p_token_p => p_parameter_name,
3039 p_table_name => G_TABLE_NAME,
3040 p_column_name => 'COMM_PREF_CODE' );
3041 WHEN OTHERS THEN
3042 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
3043 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
3044 fnd_msg_pub.ADD;
3045 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3046 END;
3047 END Validate_Comm_Pref_Code;
3048
3049 -- --------------------------------------------------------------------------------
3050 -- Validate_Category_Id
3051 /*
3052 Modification History
3053 Date Name Desc
3054 ---------- -------- ---------------------------------------------------------------
3055 02/28/2005 smisra Bug 4083288
3056 Added a parameter category set id. Performed validation using
3057 this parameter instead of profile option value for category set
3058 id. Replaced invalid argument Error message with meaningful
3059 Error message.
3060 */
3061 -- --------------------------------------------------------------------------------
3062 PROCEDURE Validate_Category_Id(
3063 p_api_name IN VARCHAR2,
3064 p_parameter_name IN VARCHAR2,
3065 p_category_id IN NUMBER,
3066 p_category_set_id IN NUMBER,
3067 x_return_status OUT NOCOPY VARCHAR2
3068 ) IS
3069
3070 l_dummy VARCHAR2(1);
3071 l_profile VARCHAR2(255);
3072 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Category_Id';
3073 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
3074
3075 BEGIN
3076 -- Initialize Return Status to SUCCESS
3077 x_return_status := FND_API.G_RET_STS_SUCCESS;
3078 -- Changed the Profile CS_SR_PLATFORM_CATEGORY_SET to
3079 -- CS_SR_DEFAULT_CATEGORY_SET.Fix for Bug# 2102330
3080
3081 --l_profile := FND_PROFILE.VALUE('CS_SR_DEFAULT_CATEGORY_SET');
3082 l_profile := p_category_set_id;
3083
3084 BEGIN
3085 IF (p_category_id IS NOT NULL AND
3086 l_profile IS NOT NULL ) THEN
3087 SELECT 'x' INTO l_dummy
3088 --FROM mtl_item_categories ic
3089 FROM mtl_category_set_valid_cats ic
3090 WHERE ic.category_id = p_category_id
3091 AND ic.category_set_id = l_profile;
3092 --AND ic.organization_id = CS_STD.Get_Item_Valdn_Orgzn_Id;
3093 ELSE
3094 IF (l_profile IS NULL AND
3095 p_category_id IS NOT NULL) THEN
3096 RAISE NO_DATA_FOUND;
3097 END IF;
3098 END IF;
3099
3100 EXCEPTION
3101 WHEN NO_DATA_FOUND THEN
3102 x_return_status := FND_API.G_RET_STS_ERROR;
3103 fnd_message.set_name ('CS', 'CS_SR_CAT_CATSET_COMB_INVALID');
3104 fnd_message.set_token ('CAT_SET',nvl(l_profile,'NULL'));
3105 fnd_message.set_token ('CAT_ID',p_category_id);
3106 fnd_msg_pub.ADD;
3107 WHEN OTHERS THEN
3108 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
3109 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
3110 fnd_msg_pub.ADD;
3111 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3112
3113 END;
3114 END Validate_Category_Id;
3115
3116 -- --------------------------------------------------------------------------------
3117 -- Validate_Category_Set_Id
3118 /*
3119 Modification History
3120 Date Name Desc
3121 ---------- -------- ---------------------------------------------------------------
3122 02/28/2005 smisra Bug 4083288
3123 Replaced invalid argument Error message with meaningful
3124 Error message.
3125 */
3126 -- --------------------------------------------------------------------------------
3127 PROCEDURE Validate_Category_Set_Id(
3128 p_api_name IN VARCHAR2,
3129 p_parameter_name IN VARCHAR2,
3130 p_category_id IN NUMBER,
3131 p_category_set_id IN NUMBER,
3132 p_inventory_item_id IN NUMBER,
3133 p_inventory_org_id IN NUMBER,
3134 x_return_status OUT NOCOPY VARCHAR2
3135 ) IS
3136
3137 l_dummy VARCHAR2(1);
3138 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Category_Set_Id';
3139 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
3140
3141 l_validation varchar2(1);
3142 BEGIN
3143 -- Initialize Return Status to SUCCESS
3144 x_return_status := FND_API.G_RET_STS_SUCCESS;
3145
3146 IF (p_inventory_item_id IS NULL OR
3147 p_inventory_item_id = FND_API.G_MISS_NUM) THEN
3148 l_validation := 'C';
3149 SELECT 'x' INTO l_dummy
3150 FROM mtl_category_set_valid_cats
3151 WHERE category_id = p_category_id
3152 AND category_set_id = p_category_set_id;
3153 ELSIF (p_inventory_item_id IS NOT NULL) THEN
3154 l_validation := 'I';
3155 SELECT 'x' INTO l_dummy
3156 FROM mtl_item_categories
3157 WHERE inventory_item_id = p_inventory_item_id
3158 AND category_id = p_category_id
3159 AND category_set_id = p_category_set_id
3160 --AND organization_id = CS_STD.Get_Item_Valdn_Orgzn_Id;
3161 AND organization_id = p_inventory_org_id ;
3162 /* Bug 2661668/2648017 - use org_id parameter for validation of org */
3163 END IF;
3164
3165 EXCEPTION
3166 WHEN NO_DATA_FOUND THEN
3167 x_return_status := FND_API.G_RET_STS_ERROR;
3168 IF (l_validation = 'I') THEN
3169 fnd_message.set_name ('CS', 'CS_SR_CAT_ITEM_COMB_INVALID');
3170 fnd_message.set_token ('CAT_SET',p_category_set_id);
3171 fnd_message.set_token ('CAT_ID',nvl(to_char(p_category_id),'NULL'));
3172 fnd_message.set_token ('ITEM_ID',nvl(to_char(p_inventory_item_id),'NULL'));
3173 fnd_msg_pub.ADD;
3174 ELSE
3175 fnd_message.set_name ('CS', 'CS_SR_CAT_CATSET_COMB_INVALID');
3176 fnd_message.set_token ('CAT_SET',p_category_set_id);
3177 fnd_message.set_token ('CAT_ID',nvl(to_char(p_category_id),'NULL'));
3178 fnd_msg_pub.ADD;
3179 END IF;
3180 WHEN OTHERS THEN
3181 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
3182 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
3183 fnd_msg_pub.ADD;
3184 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3185
3186 END Validate_Category_Set_Id;
3187
3188 -- --------------------------------------------------------------------------------
3189 -- Validate_External_Reference
3190 -- --------------------------------------------------------------------------------
3191 -- -----------------------------------------------------------------------------
3192 -- Modification History
3193 -- Date Name Desc
3194 -- -------- -------- -----------------------------------------------------------
3195 -- 12/16/05 smisra 4869097
3196 -- Modified queries for ext ref when cust prod is null and
3197 -- added two conditions:
3198 -- 1. join between item instances and instance parties
3199 -- 2. organization of item should be equal to parameter
3200 -- inventory org
3201 -- -----------------------------------------------------------------------------
3202 PROCEDURE Validate_External_Reference(
3203 p_api_name IN VARCHAR2,
3204 p_parameter_name IN VARCHAR2,
3205 p_external_reference IN VARCHAR2,
3206 p_customer_product_id IN NUMBER,
3207 p_inventory_item_id IN NUMBER := NULL,
3208 p_inventory_org_id IN NUMBER := NULL,
3209 p_customer_id IN NUMBER := NULL,
3210 x_return_status OUT NOCOPY VARCHAR2
3211 ) IS
3212
3213 l_dummy VARCHAR2(1);
3214 inv_item_IB_trackable VARCHAR2(1);
3215 l_api_name CONSTANT VARCHAR2(30) := 'Validate_External_Reference';
3216 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
3217
3218 CURSOR c_ib_restrict
3219 IS SELECT COMMS_NL_TRACKABLE_FLAG
3220 FROM mtl_system_items_b
3221 WHERE inventory_item_id = p_inventory_item_id
3222 AND organization_id = p_inventory_org_id;
3223
3224 BEGIN
3225
3226 x_return_status := FND_API.G_RET_STS_SUCCESS;
3227
3228 -- For bug 3746983
3229
3230 IF ( p_customer_product_id IS NOT NULL ) AND
3231 ( p_customer_product_id <> FND_API.G_MISS_NUM ) THEN
3232
3233 IF CS_ServiceRequest_PVT.g_restrict_ib = 'YES' THEN
3234
3235 SELECT 'x' INTO l_dummy
3236 FROM csi_item_instances a,
3237 mtl_system_items_b b,
3238 csi_i_parties cip
3239 WHERE a.instance_id = p_customer_product_id
3240 AND a.external_reference = p_external_reference
3241 AND cip.party_id = p_customer_id
3242 AND a.instance_id = cip.instance_id
3243 AND cip.party_source_table = 'HZ_PARTIES'
3244 AND b.serv_req_enabled_code = 'E'
3245 AND a.location_type_code IN ('HZ_PARTY_SITES','HZ_LOCATIONS')
3246 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(a.active_start_date,SYSDATE))
3247 AND TRUNC(NVL(a.active_end_date, SYSDATE))
3248 AND b.inventory_item_id = a.inventory_item_id
3249 AND b.organization_id = p_inventory_org_id
3250 AND rownum<2;
3251 ELSE
3252
3253 SELECT 'x' INTO l_dummy
3254 FROM csi_item_instances a,
3255 mtl_system_items_b b,
3256 csi_i_parties cip
3257 WHERE a.instance_id = p_customer_product_id
3258 AND a.external_reference = p_external_reference
3259 AND cip.party_id = p_customer_id
3260 AND a.instance_id = cip.instance_id
3261 AND cip.party_source_table = 'HZ_PARTIES'
3262 AND b.serv_req_enabled_code = 'E'
3263 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(a.active_start_date,SYSDATE))
3264 AND TRUNC(NVL(a.active_end_date, SYSDATE))
3265 AND b.inventory_item_id = a.inventory_item_id
3266 AND b.organization_id = p_inventory_org_id
3267 AND rownum < 2;
3268 END IF;
3269 ELSE
3270
3271 OPEN c_ib_restrict;
3272 FETCH c_ib_restrict INTO inv_item_IB_trackable;
3273 CLOSE c_ib_restrict;
3274
3275 IF inv_item_IB_trackable = 'Y' THEN
3276
3277 IF CS_ServiceRequest_PVT.g_restrict_ib = 'YES' THEN
3278
3279 SELECT 'X' INTO l_dummy
3280 FROM csi_item_instances a,
3281 mtl_system_items_b b,
3282 csi_i_parties cip
3283 WHERE b.inventory_item_id = p_inventory_item_id
3284 AND b.organization_id = p_inventory_org_id
3285 AND b.inventory_item_id = a.inventory_item_id
3286 AND cip.party_id = p_customer_id
3287 AND a.instance_id = cip.instance_id
3288 AND a.external_reference = p_external_reference
3289 AND a.location_type_code IN ('HZ_PARTY_SITES','HZ_LOCATIONS')
3290 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(a.active_start_date,SYSDATE))
3291 AND TRUNC(NVL(a.active_end_date, SYSDATE))
3292 AND rownum < 2;
3293
3294 ELSE
3295
3296 SELECT 'X' INTO l_dummy
3297 FROM csi_item_instances a,
3298 mtl_system_items_b b,
3299 csi_i_parties cip
3300 WHERE b.inventory_item_id = p_inventory_item_id
3301 AND b.organization_id = p_inventory_org_id
3302 AND b.inventory_item_id = a.inventory_item_id
3303 AND cip.party_id = p_customer_id
3304 AND a.instance_id = cip.instance_id
3305 AND a.external_reference = p_external_reference
3306 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(a.active_start_date,SYSDATE))
3307 AND TRUNC(NVL(a.active_end_date, SYSDATE))
3308 AND rownum < 2;
3309
3310 END IF;
3311 END IF;
3312
3313 END IF;
3314
3315 EXCEPTION
3316 WHEN NO_DATA_FOUND THEN
3317 x_return_status := FND_API.G_RET_STS_ERROR;
3318 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
3319 p_token_v => p_external_reference,
3320 p_token_p => p_parameter_name ,
3321 p_table_name => G_TABLE_NAME,
3322 p_column_name => 'EXTERNAL_REFERENCE');
3323 WHEN OTHERS THEN
3324 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
3325 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
3326 fnd_msg_pub.ADD;
3327 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3328
3329 END Validate_External_Reference;
3330
3331 -- --------------------------------------------------------------------------------
3332 -- Validate_System_Id
3333 -- --------------------------------------------------------------------------------
3334
3335 PROCEDURE Validate_System_Id(
3336 p_api_name IN VARCHAR2,
3337 p_parameter_name IN VARCHAR2,
3338 p_system_id IN NUMBER,
3339 x_return_status OUT NOCOPY VARCHAR2
3340 ) IS
3341
3342 l_dummy VARCHAR2(1);
3343 l_api_name CONSTANT VARCHAR2(30) := 'Validate_System_Id';
3344 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
3345
3346 BEGIN
3347 -- Initialize Return Status to SUCCESS
3348 x_return_status := FND_API.G_RET_STS_SUCCESS;
3349
3350 SELECT 'x' INTO l_dummy
3351 FROM csi_systems_vl
3352 WHERE system_id = p_system_id;
3353
3354 EXCEPTION
3355 WHEN NO_DATA_FOUND THEN
3356 x_return_status := FND_API.G_RET_STS_ERROR;
3357 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
3358 p_token_v => TO_CHAR(p_system_id),
3359 p_token_p => p_parameter_name,
3360 p_table_name => G_TABLE_NAME,
3361 p_column_name => 'SYSTEM_ID' );
3362 WHEN OTHERS THEN
3363 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
3364 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
3365 fnd_msg_pub.ADD;
3366 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3367
3368 END Validate_System_Id;
3369
3370 --------------------------------------------------------------------
3371 /*
3372 ** Validate_Exp_Resolution_Date
3373 ** 1. The expected resolution date is validated against the service request
3374 ** date. Therefore, this procedure takes in the service request date as a
3375 ** parameter.
3376 ** 2. Verify that the expected resolution date is later than the service
3377 ** request date.
3378 */
3379 PROCEDURE Validate_Exp_Resolution_Date
3380 ( p_api_name IN VARCHAR2,
3381 p_parameter_name IN VARCHAR2,
3382 p_exp_resolution_date IN DATE,
3383 p_request_date IN DATE,
3384 x_return_status OUT NOCOPY VARCHAR2
3385 )
3386 IS
3387 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Exp_Resolution_Date';
3388 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
3389
3390 BEGIN
3391 IF p_exp_resolution_date >= p_request_date THEN
3392 x_return_status := FND_API.G_RET_STS_SUCCESS;
3393 ELSE
3394 x_return_status := FND_API.G_RET_STS_ERROR;
3395 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
3396 p_token_v => TO_CHAR(p_exp_resolution_date),
3397 p_token_p => p_parameter_name,
3398 p_table_name => G_TABLE_NAME ,
3399 p_column_name => 'EXPECTED_RESOLUTION_DATE' );
3400 END IF;
3401
3402 EXCEPTION
3403 WHEN OTHERS THEN
3404 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
3405 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
3406 fnd_msg_pub.ADD;
3407 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3408
3409 END Validate_Exp_Resolution_Date;
3410
3411
3412 -- --------------------------------------------------------------------------------
3413 -- Validate_Bill_To_Ship_To_Party
3414 -- Same procedure is used to validate Bill_to and Ship_To Parties
3415 -- 1. Party must be Active of type Person or Organization
3416 -- 2. Must have a valid relationship with the SR Customer.
3417 -- 3. Added one more out parameter as x_customer_type to get the bill_to_party
3418 -- customer type.
3419 -- 4. Added one more in parameter as p_customer_type, to get the header
3420 -- customer_type.
3421 -- --------------------------------------------------------------------------------
3422
3423 PROCEDURE Validate_Bill_To_Ship_To_Party (
3424 p_api_name IN VARCHAR2,
3425 p_parameter_name IN VARCHAR2,
3426 p_bill_to_party_id IN NUMBER,
3427 p_customer_id IN NUMBER,
3428 x_customer_type IN OUT NOCOPY VARCHAR2,
3429 x_return_status OUT NOCOPY VARCHAR2
3430 )
3431 AS
3432 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Bill_To_Ship_ToParty';
3433 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
3434
3435 CURSOR Bill_To_Party IS
3436 SELECT p.party_type
3437 FROM Hz_parties p ,
3438 Hz_Relationships r
3439 WHERE p.party_id = p_bill_to_party_id
3440 AND p.status = 'A'
3441 AND p.party_type IN ('PERSON','ORGANIZATION')
3442 AND r.object_id = p_customer_id
3443 AND r.subject_id = p.party_id
3444 AND r.status = 'A'
3445 -- Added to remove TCA violation -- relationship should be active -- anmukher -- 08/14/03
3446 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(r.START_DATE, SYSDATE)) AND TRUNC(NVL(r.END_DATE, SYSDATE));
3447
3448 l_dummy VARCHAR2(5);
3449 l_customer_type VARCHAR2(30);
3450 BEGIN
3451 -- Initialize return status to success
3452 x_return_status := FND_API.G_RET_STS_SUCCESS;
3453
3454 /* Changes made for 1159, added the condition that if the customer_id
3455 is same as the bill_to_party_id then we should just return success
3456 else we should check if its a valid relationship*/
3457
3458 IF (p_customer_id=p_bill_to_party_id) THEN
3459 x_return_status := FND_API.G_RET_STS_SUCCESS;
3460 ELSE
3461 OPEN bill_to_party;
3462 FETCH bill_to_party INTO l_customer_type;
3463 x_customer_type:= l_customer_type;
3464 IF (bill_to_party%NOTFOUND) THEN
3465 x_return_status := FND_API.G_RET_STS_ERROR;
3466 CLOSE bill_to_party;
3467
3468 RAISE NO_DATA_FOUND;
3469 END IF;
3470 CLOSE bill_to_party ;
3471 END IF;
3472
3473 EXCEPTION
3474 WHEN NO_DATA_FOUND THEN
3475 x_return_status := FND_API.G_RET_STS_ERROR;
3476 Add_Invalid_Argument_Msg
3477 ( p_token_an => l_api_name_full,
3478 p_token_v => TO_CHAR(p_bill_to_party_id),
3479 p_token_p => p_parameter_name,
3480 p_table_name => G_TABLE_NAME,
3481 p_column_name => 'BILL_TO_CUSTOMER_ID');
3482 WHEN OTHERS THEN
3483 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
3484 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
3485 fnd_msg_pub.ADD;
3486 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3487 END Validate_Bill_To_Ship_To_Party;
3488
3489 -- --------------------------------------------------------------------------------
3490 -- Validate_Bill_To_Ship_To_Site (New Procedure for 11.5.9)
3491 -- Same procedure is used to validate Bill_to and Ship_To Sites
3492 -- 1. Site must be an active site attached to party
3493 -- 2. Site USe must be Valid and Must be BILL_TO or SHIP_TO as required
3494 -- 3. p_site_use_type will be BILL_TO or SHIP_TO
3495 -- --------------------------------------------------------------------------------
3496
3497 PROCEDURE Validate_Bill_To_Ship_To_Site (
3498 p_api_name IN VARCHAR2,
3499 p_parameter_name IN VARCHAR2,
3500 p_bill_to_site_id IN NUMBER,
3501 p_bill_to_party_id IN NUMBER,
3502 p_site_use_type IN VARCHAR2,
3503 x_site_use_id OUT NOCOPY NUMBER,
3504 x_return_status OUT NOCOPY VARCHAR2
3505 )
3506 AS
3507 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Bill_To_Ship_To_Site';
3508 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
3509
3510 CURSOR Bill_To_Site IS
3511 SELECT su.party_site_use_id
3512 FROM Hz_Party_Sites s,
3513 Hz_Party_Site_Uses su
3514 WHERE s.party_site_id = su.party_site_id
3515 AND s.party_site_id = p_bill_to_site_id
3516 AND s.party_id = p_bill_to_party_id
3517 AND s.status = 'A'
3518 AND su.status = 'A'
3519 -- Commented out to remove TCA Violation -- Party site use dates not to be checked -- anmukher -- 08/14/03
3520 -- AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(su.begin_date,SYSDATE))
3521 -- AND TRUNC(NVL(su.end_date,SYSDATE))
3522 AND su.site_use_type = p_site_use_type;
3523
3524 l_dummy VARCHAR2(5);
3525 BEGIN
3526 -- Initialize return status to success
3527 x_return_status := FND_API.G_RET_STS_SUCCESS;
3528
3529 OPEN bill_to_site;
3530 FETCH bill_to_site INTO x_site_use_id;
3531 IF (bill_to_site%NOTFOUND) THEN
3532 x_return_status := FND_API.G_RET_STS_ERROR;
3533 CLOSE bill_to_site;
3534
3535 RAISE NO_DATA_FOUND;
3536 END IF;
3537 CLOSE bill_to_site ;
3538 EXCEPTION
3539 WHEN NO_DATA_FOUND THEN
3540 CS_ServiceRequest_UTIL.Add_Invalid_Argument_Msg
3541 ( p_token_an => l_api_name_full,
3542 p_token_v => TO_CHAR(p_bill_to_site_id),
3543 p_token_p => p_parameter_name,
3544 p_table_name => G_TABLE_NAME ,
3545 p_column_name => 'BILL_TO_SITE_ID' );
3546 WHEN OTHERS THEN
3547 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
3548 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
3549 fnd_msg_pub.ADD;
3550 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3551 END Validate_Bill_To_Ship_To_Site ;
3552
3553
3554 PROCEDURE Validate_Install_Site
3555 ( p_parameter_name IN VARCHAR2,
3556 p_install_site_id IN NUMBER,
3557 p_customer_id IN NUMBER,
3558 x_return_status OUT NOCOPY VARCHAR2
3559 )
3560 IS
3561 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Install_Site';
3562 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
3563
3564 l_install_customer_id NUMBER;
3565
3566 BEGIN
3567 -- Initialize Return Status to SUCCESS
3568 x_return_status := FND_API.G_RET_STS_SUCCESS;
3569
3570 BEGIN
3571
3572 -- Fix to bug # 2529361.included keyword distinct in select clause.
3573 -- # 2615775 - removed reference to hz_party_site_uses..
3574
3575 SELECT DISTINCT s.party_id INTO l_install_customer_id
3576 FROM Hz_Party_Sites s
3577 WHERE s.party_site_id = p_install_site_id
3578 AND s.status = 'A'
3579 -- Belongs to SR Customer
3580 AND ( s.party_id = p_customer_id
3581 -- or one of its relationships
3582 OR s.party_id IN (
3583 SELECT r.party_id
3584 FROM Hz_Relationships r
3585 WHERE r.object_id = p_customer_id
3586 AND r.status = 'A'
3587 -- Added to remove TCA violation -- Relationship should be active -- anmukher -- 08/14/03
3588 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(r.START_DATE, SYSDATE)) AND TRUNC(NVL(r.END_DATE, SYSDATE)) )
3589 -- or one of its Related parties
3590 OR s.party_id IN (
3591 SELECT sub.party_id
3592 FROM Hz_Parties p,
3593 Hz_Parties sub,
3594 Hz_Parties obj,
3595 Hz_Relationships r
3596 WHERE obj.party_id = p_customer_id
3597 AND sub.status = 'A'
3598 AND obj.status = 'A'
3599 AND r.status = 'A'
3600 AND p.status = 'A'
3601 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(r.START_DATE, SYSDATE)) AND TRUNC(NVL(r.END_DATE, SYSDATE))
3602 AND sub.party_type IN ('PERSON','ORGANIZATION')
3603 AND p.party_id = r.party_id
3604 AND r.object_id = obj.party_id
3605 AND r.subject_id = sub.party_id ));
3606
3607 EXCEPTION
3608 WHEN NO_DATA_FOUND THEN
3609 x_return_status := FND_API.G_RET_STS_ERROR;
3610 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
3611 p_token_v => TO_CHAR(p_install_site_id),
3612 p_token_p => p_parameter_name,
3613 p_table_name => G_TABLE_NAME,
3614 p_column_name => 'INSTALL_SITE_ID' );
3615
3616 WHEN OTHERS THEN
3617 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
3618 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
3619 fnd_msg_pub.ADD;
3620 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3621
3622 END;
3623
3624 END Validate_Install_Site;
3625
3626 /*
3627 ** Validate_Resolution_Code
3628 ** 1. Verify that the resolution code is an active resolution code.
3629 */
3630 PROCEDURE Validate_Resolution_Code (
3631 p_api_name IN VARCHAR2,
3632 p_parameter_name IN VARCHAR2,
3633 p_resolution_code IN VARCHAR2,
3634 x_return_status OUT NOCOPY VARCHAR2)
3635 IS
3636 l_dummy VARCHAR2(1);
3637 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Resolution_Code';
3638 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
3639
3640 BEGIN
3641 -- Initialize the return status.
3642 x_return_status := FND_API.G_RET_STS_SUCCESS;
3643
3644
3645
3646
3647 EXCEPTION
3648 WHEN NO_DATA_FOUND THEN
3649 x_return_status := FND_API.G_RET_STS_ERROR;
3650 Add_Invalid_Argument_Msg(
3651 p_token_an => l_api_name_full,
3652 p_token_v => p_resolution_code,
3653 p_token_p => p_parameter_name,
3654 p_table_name => G_TABLE_NAME,
3655 p_column_name => 'RESOLUTION_CODE' );
3656 WHEN OTHERS THEN
3657 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
3658 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
3659 fnd_msg_pub.ADD;
3660 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3661
3662 END Validate_Resolution_Code;
3663
3664 -- --------------------------------------------------------------------------------
3665 -- Validate_Act_Resolution_Date
3666 -- 1. The actual resolution date must be validated against the service request date,
3667 -- therefore this procedure takes in the service request date as a parameter.
3668 -- 2. Verify that the actual resolution date is later than the service request date
3669 -- --------------------------------------------------------------------------------
3670 PROCEDURE Validate_Act_Resolution_Date (
3671 p_api_name IN VARCHAR2,
3672 p_parameter_name IN VARCHAR2,
3673 p_act_resolution_date IN DATE,
3674 p_request_date IN DATE,
3675 x_return_status OUT NOCOPY VARCHAR2
3676 ) IS
3677 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Act_Resolution_Date';
3678 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
3679
3680 BEGIN
3681
3682 IF p_act_resolution_date >= p_request_date THEN
3683 x_return_status := FND_API.G_RET_STS_SUCCESS;
3684 ELSE
3685 x_return_status := FND_API.G_RET_STS_ERROR;
3686 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
3687 p_token_v => TO_CHAR(p_act_resolution_date),
3688 p_token_p => p_parameter_name,
3689 p_table_name => G_TABLE_NAME,
3690 p_column_name => 'ACTUAL_RESOLUTION_DATE' );
3691 END IF;
3692 EXCEPTION
3693 WHEN OTHERS THEN
3694 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
3695 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
3696 fnd_msg_pub.ADD;
3697 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3698
3699 END Validate_Act_Resolution_Date;
3700
3701 ----------------------------
3702 -- 3224828 contracts : x_contract_id IN OUT parameter
3703 PROCEDURE Validate_Contract_Service_Id
3704 ( p_api_name IN VARCHAR2,
3705 p_parameter_name IN VARCHAR2,
3706 p_contract_service_id IN NUMBER,
3707 x_contract_id IN OUT NOCOPY NUMBER,
3708 x_contract_number OUT NOCOPY VARCHAR2,
3709 x_return_status OUT NOCOPY VARCHAR2
3710 )IS
3711
3712 l_test VARCHAR2(150);
3713 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Contract_Service_Id';
3714 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
3715 l_contract_id NUMBER;
3716
3717 BEGIN
3718 -- Initialize the return status.
3719 x_return_status := FND_API.G_RET_STS_SUCCESS;
3720
3721 select chr_id
3722 into l_contract_id
3723 from okc_k_lines_b
3724 where id = p_contract_service_id;
3725
3726
3727
3728 SELECT contract_number INTO x_contract_number
3729 FROM okc_k_headers_all_b
3730 WHERE id = l_contract_id;
3731
3732 if (l_contract_id <> x_contract_id AND x_contract_id IS NOT NULL AND x_contract_id <> FND_API.G_MISS_NUM) then
3733 x_contract_id := l_contract_id;
3734 Add_Param_Ignored_Msg( p_token_an => l_api_name_full,
3735 p_token_ip => 'p_contract_id',
3736 p_table_name => G_TABLE_NAME,
3737 p_column_name => 'CONTRACT_ID' );
3738
3739 end if;
3740
3741 x_contract_id := l_contract_id;
3742
3743 /* SELECT line_number, chr_id
3744 INTO l_test, x_contract_id
3745 FROM okc_k_lines_b
3746 WHERE id = p_contract_service_id ; */
3747
3748 --SELECT chr_id INTO x_contract_id
3749 --FROM okc_k_lines_b
3750 --WHERE id = p_contract_service_id;
3751
3752 EXCEPTION
3753 WHEN NO_DATA_FOUND THEN
3754 x_return_status := FND_API.G_RET_STS_ERROR;
3755 Add_Invalid_Argument_Msg(p_token_an => l_api_name_full,
3756 p_token_v => p_contract_service_id,
3757 p_token_p => p_parameter_name ,
3758 p_table_name => G_TABLE_NAME,
3759 p_column_name => 'CONTRACT_SERVICE_ID');
3760
3761 WHEN OTHERS THEN
3762 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
3763 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
3764 fnd_msg_pub.ADD;
3765 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3766 END Validate_Contract_Service_Id;
3767 ---------------------------------------------------------------------------
3768
3769 PROCEDURE Validate_Contract_Id
3770 ( p_api_name IN VARCHAR2,
3771 p_parameter_name IN VARCHAR2,
3772 p_contract_id IN NUMBER,
3773 x_contract_number OUT NOCOPY VARCHAR2,
3774 x_return_status OUT NOCOPY VARCHAR2
3775 )IS
3776
3777 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Contract_Id';
3778 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
3779
3780 BEGIN
3781
3782 -- Initialize the return status.
3783 x_return_status := FND_API.G_RET_STS_SUCCESS;
3784
3785 SELECT contract_number
3786 INTO x_contract_number
3787 FROM okc_k_headers_all_b
3788 WHERE id = p_contract_id ;
3789
3790 EXCEPTION
3791 WHEN NO_DATA_FOUND THEN
3792 x_return_status := FND_API.G_RET_STS_ERROR;
3793 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
3794 p_token_v => p_contract_id,
3795 p_token_p => p_parameter_name,
3796 p_table_name => G_TABLE_NAME,
3797 p_column_name => 'CONTRACT_ID' );
3798
3799 WHEN OTHERS THEN
3800 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
3801 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
3802 fnd_msg_pub.ADD;
3803 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3804
3805
3806 END Validate_Contract_Id;
3807
3808 ---------------------------------------------------------------------------
3809
3810 -- -----------------------------------------------------------------------------
3811 -- Modification History
3812 -- Date Name Desc
3813 -- -------- -------- -----------------------------------------------------------
3814 -- 12/30/05 smisra Bug 4869065
3815 -- Removed the logic because support_site_id will now be
3816 -- derived based on resource_id
3817 -- ****** Do not Use This Procedure *****
3818 -- -----------------------------------------------------------------------------
3819 PROCEDURE Validate_Support_Site_Id
3820 ( p_api_name IN VARCHAR2,
3821 p_parameter_name IN VARCHAR2,
3822 p_support_site_id IN NUMBER,
3823 p_owner_id IN NUMBER,
3824 p_resource_type IN VARCHAR2,
3825 p_org_id IN NUMBER,
3826 x_return_status OUT NOCOPY VARCHAR2
3827 )IS
3828
3829 l_test VARCHAR2(1);
3830 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Support_Site_Id';
3831 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
3832 BEGIN
3833
3834 -- Initialize the return status.
3835 x_return_status := FND_API.G_RET_STS_ERROR;
3836 /****
3837 Bug 4869065
3838 The sql is very expensive. Support site is a denormalized col.
3839 so validation of resource id will determine the support site too. no need to
3840 cross validate support site and resource
3841 x_return_status := FND_API.G_RET_STS_SUCCESS;
3842
3843 SELECT 'x'
3844 INTO l_test
3845 FROM cs_sr_owners_v
3846 WHERE resource_type = UPPER(p_resource_type)
3847 AND resource_id = p_owner_id
3848 AND support_site_id = p_support_site_id ;
3849 ****/
3850 EXCEPTION
3851 WHEN NO_DATA_FOUND THEN
3852 x_return_status := FND_API.G_RET_STS_ERROR;
3853 Add_Invalid_Argument_Msg(p_token_an => l_api_name_full,
3854 p_token_v => p_support_site_id,
3855 p_token_p => p_parameter_name,
3856 p_table_name => null,
3857 p_column_name => 'P_SUPPORT_SITE_ID' );
3858
3859 WHEN OTHERS THEN
3860 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
3861 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
3862 fnd_msg_pub.ADD;
3863 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3864 END Validate_Support_Site_Id;
3865 ---------------------------------------------------------
3866
3867 PROCEDURE Validate_Group_Type
3868 ( p_api_name IN VARCHAR2,
3869 p_parameter_name IN VARCHAR2,
3870 p_group_type IN VARCHAR2,
3871 -- p_resource_type IN VARCHAR2,
3872 x_return_status OUT NOCOPY VARCHAR2
3873 )IS
3874
3875 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Group_Type';
3876 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
3877
3878 BEGIN
3879
3880 -- Initialize the return status.
3881 x_return_status := FND_API.G_RET_STS_SUCCESS;
3882
3883 /* For 1159, we changed the logic, as RS_TEAM is not supported anymore,
3884 if the resource_type is not RS_GROUP, we raise an error oherwise
3885 just return success by shijain*/
3886
3887 IF (p_group_type = 'RS_GROUP') THEN
3888 x_return_status := FND_API.G_RET_STS_SUCCESS;
3889 ELSE
3890 x_return_status := FND_API.G_RET_STS_ERROR;
3891 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
3892 p_token_v => p_group_type,
3893 p_token_p => p_parameter_name ,
3894 p_table_name => G_TABLE_NAME ,
3895 p_column_name => 'GROUP_TYPE' );
3896 END IF;
3897 EXCEPTION
3898 WHEN NO_DATA_FOUND THEN
3899 x_return_status := FND_API.G_RET_STS_ERROR;
3900 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
3901 p_token_v => p_group_type,
3902 p_token_p => p_parameter_name,
3903 p_table_name => G_TABLE_NAME ,
3904 p_column_name => 'GROUP_TYPE' );
3905
3906 WHEN OTHERS THEN
3907 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
3908 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
3909 fnd_msg_pub.ADD;
3910 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3911
3912
3913 END Validate_Group_Type;
3914
3915 ----------------------------------------
3916 PROCEDURE Validate_Group_Id
3917 ( p_api_name IN VARCHAR2,
3918 p_parameter_name IN VARCHAR2,
3919 p_group_type IN VARCHAR2,
3920 p_owner_group_id IN NUMBER,
3921 x_group_name OUT NOCOPY VARCHAR2,
3922 x_return_status OUT NOCOPY VARCHAR2
3923 )IS
3924
3925 l_test VARCHAR2(150);
3926 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Group_Id';
3927 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
3928
3929 BEGIN
3930
3931 -- Initialize the return status.
3932 x_return_status := FND_API.G_RET_STS_SUCCESS;
3933
3934 /* This change is for 1159, only RS_GROUP group type is checked, if its not RS_GROUP then return an error*/
3935
3936 IF ( p_group_type = 'RS_GROUP' ) THEN
3937 SELECT grp.group_name INTO x_group_name
3938 FROM jtf_rs_groups_vl grp,
3939 jtf_rs_group_usages usg
3940 WHERE grp.group_id = p_owner_group_id
3941 AND grp.group_id = usg.group_id
3942 AND usg.usage = 'SUPPORT'
3943 AND SYSDATE BETWEEN NVL(start_date_active, SYSDATE)
3944 AND NVL( end_date_active, SYSDATE ) ;
3945 ELSE
3946 x_return_status := FND_API.G_RET_STS_ERROR;
3947 -- 3303106
3948 -- Add_Invalid_Argument_Msg
3949 Add_Null_Parameter_Msg ( p_token_an => l_api_name_full,
3950 p_token_np => 'p_group_type',
3951 p_table_name => G_TABLE_NAME,
3952 p_column_name => 'GROUP_TYPE');
3953 END IF;
3954
3955
3956 EXCEPTION
3957 WHEN NO_DATA_FOUND THEN
3958 x_return_status := FND_API.G_RET_STS_ERROR;
3959 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
3960 p_token_v => p_owner_group_id,
3961 p_token_p => p_parameter_name,
3962 p_table_name => G_TABLE_NAME,
3963 p_column_name => 'OWNER_GROUP_ID');
3964
3965 WHEN OTHERS THEN
3966 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
3967 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
3968 fnd_msg_pub.ADD;
3969 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3970 END Validate_Group_Id;
3971
3972 ----------------------------------------
3973 -- DJ API Cleanup
3974 -- Existing proc. modified to query from CS secure view on JTF resource
3975 -- -----------------------------------------------------------------------------
3976 -- Modification History
3977 -- Date Name Desc
3978 -- -------- -------- -----------------------------------------------------------
3979 -- 07/20/05 smisra Bug 3875584
3980 -- Added a new parameter p_mode. If value of this parameter
3981 -- is CREATE then this procedure gives warning for invalid
3982 -- owner id. for all other values of p_mode, this procedure
3983 -- give invalid parameter error for invalid owner id
3984 -- 12/30/05 smisra Bug 4773215, 4869065
3985 -- Added an out parameter x_resource_type. It is derived based
3986 -- on resource id. it is set to constant string 'RS_' and
3987 -- category associated with the resource. This value is
3988 -- validated using validate_resource_type procedure.
3989 -- Added an out parameter x_support_site_id. It is derived
3990 -- based on resource_id
3991 -- -----------------------------------------------------------------------------
3992 PROCEDURE Validate_Owner
3993 ( p_api_name IN VARCHAR2,
3994 p_parameter_name IN VARCHAR2,
3995 p_owner_id IN NUMBER,
3996 p_group_type IN VARCHAR2,
3997 p_owner_group_id IN NUMBER,
3998 p_org_id IN NUMBER,
3999 p_incident_type_id IN NUMBER, -- new for 11.5.10 for Security rule
4000 p_mode IN VARCHAR2 DEFAULT NULL,
4001 x_owner_name OUT NOCOPY VARCHAR2,
4002 x_owner_id OUT NOCOPY NUMBER,
4003 x_resource_type OUT NOCOPY VARCHAR2,
4004 x_support_site_id OUT NOCOPY NUMBER,
4005 x_return_status OUT NOCOPY VARCHAR2 )
4006 IS
4007
4008 l_test VARCHAR2(1);
4009 l_api_name CONSTANT VARCHAR2(30):= 'Validate_Owner';
4010 l_api_name_full CONSTANT VARCHAR2(61):= G_PKG_NAME||'.'||l_api_name;
4011
4012 CURSOR get_valid_owner IS
4013 SELECT res.resource_name, res.resource_id, 'RS_' || res.category,
4014 DECODE(res.category, 'EMPLOYEE', res.support_site_id, NULL)
4015 FROM jtf_rs_group_members grp,
4016 cs_jtf_rs_resource_extns_sec res
4017 -- jtf_rs_resource_extns_tl res; Replaced with CS Secure view
4018 WHERE grp.resource_id = p_owner_id
4019 AND grp.group_id = p_owner_group_id
4020 AND grp.resource_id = res.resource_id;
4021
4022 BEGIN
4023 -- Initialize the return status.
4024 x_return_status := FND_API.G_RET_STS_SUCCESS;
4025
4026 -- set the context of the SR type before querying the CS Secure view
4027 -- for JTF resources
4028 cs_sr_security_context.set_sr_security_context (
4029 p_context_attribute => 'SRTYPE_ID',
4030 p_context_attribute_value => p_incident_type_id );
4031
4032 IF ( p_owner_group_id IS NOT NULL
4033 AND p_owner_group_id <> FND_API.G_MISS_NUM )
4034 THEN
4035 OPEN get_valid_owner;
4036 FETCH get_valid_owner INTO x_owner_name, x_owner_id, x_resource_type, x_support_site_id;
4037 IF ( get_valid_owner%NOTFOUND ) THEN
4038 CLOSE get_valid_owner;
4039 RAISE NO_DATA_FOUND ;
4040 END IF;
4041 CLOSE get_valid_owner;
4042 ELSE
4043 SELECT resource_name, resource_id , 'RS_' || res.category,
4044 DECODE(res.category, 'EMPLOYEE', res.support_site_id, NULL)
4045 INTO x_owner_name, x_owner_id, x_resource_type, x_support_site_id
4046 FROM cs_jtf_rs_resource_extns_sec res
4047 -- FROM jtf_rs_resource_extns_vl res; Replaced with CS secure view
4048 WHERE res.resource_id = p_owner_id
4049 AND trunc(sysdate) between trunc(nvl(start_date_active, sysdate))
4050 and trunc(nvl(end_date_active, sysdate));
4051 END IF;
4052 Validate_Resource_Type
4053 ( p_api_name => l_api_name_full
4054 , p_parameter_name => 'p_resource_type'
4055 , p_resource_type => x_resource_type
4056 , x_return_status => x_return_status
4057 );
4058
4059 EXCEPTION
4060 WHEN NO_DATA_FOUND THEN
4061 IF p_mode = 'CREATE'
4062 THEN
4063 x_return_status := FND_API.G_RET_STS_SUCCESS;
4064 -- 3277647 changed from error to warning Add_Invalid_Argument_Msg
4065
4066 Add_Param_Ignored_MSg ( p_token_an => l_api_name_full,
4067 p_token_ip => p_parameter_name,
4068 p_table_name => null,
4069 p_column_name => 'P_OWNER_ID');
4070 ELSE
4071 x_return_status := FND_API.G_RET_STS_ERROR;
4072 Add_Invalid_Argument_Msg
4073 ( p_token_an => l_api_name_full
4074 , p_token_v => TO_CHAR(p_owner_id)
4075 , p_token_p => p_parameter_name
4076 , p_table_name => G_TABLE_NAME
4077 , p_column_name => 'incident_owner_id'
4078 );
4079 END IF;
4080 WHEN OTHERS THEN
4081 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
4082 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
4083 fnd_msg_pub.ADD;
4084 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4085 END Validate_Owner;
4086
4087 ------------------------------------------------------
4088
4089 PROCEDURE Validate_Resource_Type
4090 ( p_api_name IN VARCHAR2,
4091 p_parameter_name IN VARCHAR2,
4092 p_resource_type IN VARCHAR2,
4093 x_return_status OUT NOCOPY VARCHAR2
4094 )IS
4095
4096 l_test VARCHAR2(150);
4097 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Resource_Type';
4098 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
4099
4100 BEGIN
4101
4102 -- Initialize the return status.
4103 x_return_status := FND_API.G_RET_STS_SUCCESS;
4104
4105 IF (UPPER(p_resource_type) IN ('RS_EMPLOYEE','RS_OTHER','RS_SUPPLIER_CONTACT', 'RS_PARTNER','RS_PARTY','RS_TBH'))
4106 THEN
4107 x_return_status := FND_API.G_RET_STS_SUCCESS;
4108 ELSE
4109 RAISE NO_DATA_FOUND;
4110 END IF;
4111 EXCEPTION
4112 WHEN NO_DATA_FOUND THEN
4113 x_return_status := FND_API.G_RET_STS_ERROR;
4114 Add_Invalid_Argument_Msg( p_token_an => p_api_name,
4115 p_token_v => p_resource_type,
4116 p_token_p => p_parameter_name,
4117 p_table_name => G_TABLE_NAME,
4118 p_column_name => 'RESOURCE_TYPE');
4119
4120 WHEN OTHERS THEN
4121 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
4122 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
4123 fnd_msg_pub.ADD;
4124 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4125 END Validate_Resource_Type;
4126
4127 ----------------------------------------------------
4128 -- Validate Platform Id
4129 -- 11 jul 2006 Modified version 120.26 to fix bug # 5361090.
4130 -- Added x_serial_controlled_flag as OUT parameter to
4131 -- Validate_Platform_id procedure.
4132
4133 PROCEDURE Validate_Platform_Id
4134 ( p_api_name IN VARCHAR2,
4135 p_parameter_name IN VARCHAR2,
4136 p_platform_id IN NUMBER,
4137 p_organization_id IN NUMBER,
4138 x_serial_controlled_flag OUT NOCOPY VARCHAR2,
4139 x_return_status OUT NOCOPY VARCHAR2
4140 )IS
4141
4142 l_test VARCHAR2(1);
4143 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Platform_Id';
4144 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
4145 l_control_code NUMBER;
4146 no_platform_excp EXCEPTION;
4147
4148 BEGIN
4149 -- Initialize the return status.
4150 x_return_status := FND_API.G_RET_STS_SUCCESS;
4151
4152 SELECT NVL(revision_qty_control_code,0)
4153 INTO l_control_code
4154 FROM mtl_system_items_vl item,
4155 mtl_item_categories ic
4156 WHERE item.organization_id = p_organization_id
4157 AND item.inventory_item_id = p_platform_id
4158 AND item.organization_id = ic.organization_id
4159 AND item.inventory_item_id = ic.inventory_item_id
4160 AND ic.category_set_id = fnd_profile.value('CS_SR_PLATFORM_CATEGORY_SET');
4161
4162 IF l_control_code <> 2 THEN
4163 x_serial_controlled_flag := 'N';
4164 ELSIF l_control_code = 2 THEN
4165 x_serial_controlled_flag := 'Y';
4166 END IF ;
4167
4168 EXCEPTION
4169 WHEN no_data_found THEN
4170 x_serial_controlled_flag := 'N';
4171 x_return_status := FND_API.G_RET_STS_ERROR;
4172
4173 Add_Invalid_Argument_Msg(p_token_an => p_api_name,
4174 p_token_v => p_platform_id,
4175 p_token_p => p_parameter_name,
4176 p_table_name => G_TABLE_NAME ,
4177 p_column_name => 'PLATFORM_ID' );
4178
4179 WHEN OTHERS THEN
4180 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
4181 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
4182 fnd_msg_pub.ADD;
4183 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4184
4185 END Validate_Platform_Id;
4186
4187 -- Validate Component Id
4188
4189 PROCEDURE Validate_CP_Comp_Id
4190 ( p_api_name IN VARCHAR2,
4191 p_parameter_name IN VARCHAR2,
4192 p_cp_component_id IN NUMBER,
4193 p_customer_product_id IN NUMBER,
4194 p_org_id IN NUMBER,
4195 x_return_status OUT NOCOPY VARCHAR2
4196 )IS
4197
4198 l_test VARCHAR2(1);
4199 l_api_name CONSTANT VARCHAR2(30) := 'Validate_CP_Comp_Id';
4200 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
4201
4202 BEGIN
4203 -- Initialize the return status.
4204 x_return_status := FND_API.G_RET_STS_SUCCESS;
4205
4206 SELECT 'x'
4207 INTO l_test
4208 FROM cs_sr_new_acc_cp_rg_v
4209 WHERE instance_id = p_cp_component_id
4210 AND object_id = p_customer_product_id
4211 AND rownum < 2;
4212 EXCEPTION
4213 WHEN NO_DATA_FOUND THEN
4214 x_return_status := FND_API.G_RET_STS_ERROR;
4215 Add_Invalid_Argument_Msg( p_token_an => p_api_name,
4216 p_token_v => p_cp_component_id,
4217 p_token_p => p_parameter_name,
4218 p_table_name => G_TABLE_NAME ,
4219 p_column_name => 'CP_COMPONENT_ID');
4220
4221 WHEN OTHERS THEN
4222 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
4223 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
4224 fnd_msg_pub.ADD;
4225 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4226
4227 END Validate_CP_Comp_Id;
4228
4229 -- Validate Product Revision
4230 PROCEDURE Validate_Product_Revision
4231 ( p_api_name IN VARCHAR2,
4232 p_parameter_name IN VARCHAR2,
4233 p_product_revision IN VARCHAR2,
4234 p_customer_product_id IN NUMBER,
4235 p_inventory_org_id IN NUMBER,
4236 p_inventory_item_id IN NUMBER,
4237 x_return_status OUT NOCOPY VARCHAR2
4238 )IS
4239
4240 l_test VARCHAR2(1);
4241 l_rev_control_code NUMBER;
4242 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Product_Revision';
4243 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
4244
4245 BEGIN
4246 -- Initialize the return status.
4247 x_return_status := FND_API.G_RET_STS_SUCCESS;
4248 BEGIN
4249 SELECT revision_qty_control_code
4250 INTO l_rev_control_code
4251 FROM mtl_system_items_b
4252 WHERE inventory_item_id = p_inventory_item_id
4253 AND organization_id = p_inventory_org_id;
4254
4255 IF l_rev_control_code = 2 THEN
4256 BEGIN
4257 SELECT 'x'
4258 INTO l_test
4259 FROM csi_item_instances
4260 WHERE instance_id = p_customer_product_id
4261 AND inventory_revision = p_product_revision;
4262
4263 EXCEPTION
4264 WHEN NO_DATA_FOUND THEN
4265 x_return_status := FND_API.G_RET_STS_ERROR;
4266 Add_Invalid_Argument_Msg(
4267 p_token_an => p_api_name,
4268 p_token_v => p_product_revision,
4269 p_token_p => p_parameter_name,
4270 p_table_name => null,
4271 p_column_name => null);
4272
4273 WHEN OTHERS THEN
4274 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
4275 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
4276 fnd_msg_pub.ADD;
4277 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4278 END;
4279 END IF;
4280 EXCEPTION
4281 WHEN NO_DATA_FOUND THEN
4282 x_return_status := FND_API.G_RET_STS_ERROR;
4283 Add_Invalid_Argument_Msg( p_token_an => p_api_name,
4284 p_token_v => p_product_revision,
4285 p_token_p => p_parameter_name,
4286 p_table_name => G_TABLE_NAME ,
4287 p_column_name => 'PRODUCT_REVISION');
4288
4289 WHEN OTHERS THEN
4290 x_return_status := FND_API.G_RET_STS_ERROR;
4291 Add_Invalid_Argument_Msg( p_token_an => p_api_name,
4292 p_token_v => TO_CHAR(p_inventory_item_id),
4293 p_token_p => p_parameter_name,
4294 p_table_name => G_TABLE_NAME ,
4295 p_column_name => 'PRODUCT_REVISION' );
4296 END;
4297
4298 END Validate_Product_Revision;
4299 -- This procedure can validate version of a customer product or
4300 -- customer porduct component or customer product subcomponent
4301 -- validate_compnent_version and validate_subcomponent procedure have
4302 -- same logic and we need to change validation logic as per bug 3566783
4303 -- so we creation this procedue that can be used for component version
4304 -- and subcomponent version.
4305 -- smisra 5/4/04
4306 PROCEDURE Validate_product_Version
4307 ( p_parameter_name IN VARCHAR2,
4308 p_instance_id IN NUMBER,
4309 p_inventory_org_id IN NUMBER,
4310 p_product_version IN OUT NOCOPY VARCHAR2,
4311 x_return_status OUT NOCOPY VARCHAR2
4312 )IS
4313
4314 l_test VARCHAR2(1);
4315 l_api_name CONSTANT VARCHAR2(30) := 'Validate_product_Version';
4316 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
4317 l_dummy NUMBER;
4318 l_rev_control_code NUMBER;
4319 l_product_version cs_incidents_all_b.component_version % type;
4320
4321 CURSOR c_inv_item
4322 IS SELECT inventory_item_id, inventory_revision
4323 FROM CSI_ITEM_INSTANCES
4324 WHERE INSTANCE_ID = p_instance_id;
4325
4326
4327 CURSOR c_rev_code(l_inv_item_id IN NUMBER)
4328 IS SELECT revision_qty_control_code
4329 FROM mtl_system_items_b
4330 WHERE inventory_item_id = l_inv_item_id
4331 AND organization_id = p_inventory_org_id;
4332
4333 BEGIN
4334 -- Initialize the return status.
4335 x_return_status := FND_API.G_RET_STS_SUCCESS;
4336 IF p_instance_id is null THEN
4337 p_product_version := null;
4338 ELSE
4339
4340 OPEN c_inv_item;
4341 FETCH c_inv_item INTO l_dummy, l_product_version;
4342 CLOSE c_inv_item;
4343
4344 OPEN c_rev_code(l_dummy);
4345 FETCH c_rev_code INTO l_rev_control_code;
4346 CLOSE c_rev_code;
4347
4348
4349 IF l_rev_control_code = 2 THEN
4350 IF (p_product_version = FND_API.G_MISS_CHAR) then
4351 p_product_version := l_product_version;
4352 ELSIF (nvl(p_product_version,'@#') <> nvl(l_product_version,'@#')) THEN
4353 x_return_status := FND_API.G_RET_STS_ERROR;
4354 Add_Invalid_Argument_Msg(
4355 p_token_an => l_api_name_full,
4356 p_token_v => p_product_version,
4357 p_token_p => p_parameter_name,
4358 p_table_name => null,
4359 p_column_name => null);
4360 END IF;
4361 END IF;
4362 END IF;
4363
4364 EXCEPTION
4365 WHEN NO_DATA_FOUND THEN
4366 x_return_status := FND_API.G_RET_STS_ERROR;
4367 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
4368 p_token_v => p_product_version,
4369 p_token_p => p_parameter_name,
4370 p_table_name => G_TABLE_NAME ,
4371 p_column_name => 'COMPONENT_VERSION' );
4372 WHEN OTHERS THEN
4373 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
4374 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
4375 fnd_msg_pub.ADD;
4376 x_return_status := fnd_api.g_ret_sts_unexp_error;
4377 END Validate_product_Version;
4378 --
4379 -- Validate Component Version
4380 PROCEDURE Validate_Component_Version
4381 ( p_api_name IN VARCHAR2,
4382 p_parameter_name IN VARCHAR2,
4383 p_component_version IN VARCHAR2,
4384 p_cp_component_id IN NUMBER,
4385 p_customer_product_id IN NUMBER,
4386 p_inventory_org_id IN NUMBER,
4387 x_return_status OUT NOCOPY VARCHAR2
4388 )IS
4389
4390 l_test VARCHAR2(1);
4391 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Component_Version';
4392 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
4393 l_dummy NUMBER;
4394 l_rev_control_code NUMBER;
4395
4396 CURSOR c_inv_item
4397 IS SELECT inventory_item_id
4398 FROM CSI_ITEM_INSTANCES
4399 WHERE INSTANCE_ID = p_cp_component_id;
4400
4401
4402 CURSOR c_rev_code(l_inv_item_id IN NUMBER)
4403 IS SELECT revision_qty_control_code
4404 FROM mtl_system_items_b
4405 WHERE inventory_item_id = l_inv_item_id
4406 AND organization_id = p_inventory_org_id;
4407
4408 BEGIN
4409 -- Initialize the return status.
4410 x_return_status := FND_API.G_RET_STS_SUCCESS;
4411
4412 -- For bug 3337848 - Check for revision control
4413
4414 BEGIN
4415
4416 OPEN c_inv_item;
4417 FETCH c_inv_item INTO l_dummy;
4418 CLOSE c_inv_item;
4419
4420 OPEN c_rev_code(l_dummy);
4421 FETCH c_rev_code INTO l_rev_control_code;
4422 CLOSE c_rev_code;
4423
4424
4425 IF l_rev_control_code = 2 THEN
4426 BEGIN
4427 SELECT 'x'
4428 INTO l_test
4429 FROM csi_item_instances
4430 WHERE instance_id = p_cp_component_id
4431 AND inventory_revision = p_component_version;
4432
4433 EXCEPTION
4434 WHEN NO_DATA_FOUND THEN
4435 -- 3352160 modified value of p_token_an
4436 x_return_status := FND_API.G_RET_STS_ERROR;
4437 Add_Invalid_Argument_Msg(
4438 p_token_an => l_api_name_full,
4439 p_token_v => p_component_version,
4440 p_token_p => p_parameter_name,
4441 p_table_name => null,
4442 p_column_name => null);
4443
4444 WHEN OTHERS THEN
4445 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
4446 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
4447 fnd_msg_pub.ADD;
4448 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4449 END;
4450 END IF;
4451
4452
4453
4454
4455 EXCEPTION
4456 WHEN NO_DATA_FOUND THEN
4457 x_return_status := FND_API.G_RET_STS_ERROR;
4458 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
4459 p_token_v => p_component_version,
4460 p_token_p => p_parameter_name,
4461 p_table_name => G_TABLE_NAME ,
4462 p_column_name => 'COMPONENT_VERSION' );
4463 WHEN OTHERS THEN
4464 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
4465 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
4466 fnd_msg_pub.ADD;
4467 x_return_status := fnd_api.g_ret_sts_unexp_error;
4468 END;
4469 END Validate_Component_Version;
4470
4471 -- Validate Subcomponent Version
4472 PROCEDURE Validate_Subcomponent_Version
4473 ( p_api_name IN VARCHAR2,
4474 p_parameter_name IN VARCHAR2,
4475 p_subcomponent_version IN VARCHAR2,
4476 p_cp_component_id IN NUMBER,
4477 p_cp_subcomponent_id IN NUMBER,
4478 p_customer_product_id IN NUMBER,
4479 p_inventory_org_id IN NUMBER,
4480 x_return_status OUT NOCOPY VARCHAR2
4481 )IS
4482
4483 l_test VARCHAR2(1);
4484 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Subcomponent_Version';
4485 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
4486 l_dummy NUMBER;
4487 l_rev_control_code NUMBER;
4488
4489 CURSOR c_inv_item
4490 IS SELECT inventory_item_id
4491 FROM CSI_ITEM_INSTANCES
4492 WHERE INSTANCE_ID = p_cp_subcomponent_id;
4493
4494
4495 CURSOR c_rev_code(l_inv_item_id IN NUMBER)
4496 IS SELECT revision_qty_control_code
4497 FROM mtl_system_items_b
4498 WHERE inventory_item_id = l_inv_item_id
4499 AND organization_id = p_inventory_org_id;
4500
4501 BEGIN
4502 -- Initialize the return status.
4503 x_return_status := FND_API.G_RET_STS_SUCCESS;
4504
4505 -- For bug 3337848 - for revision control
4506
4507 BEGIN
4508 OPEN c_inv_item;
4509 FETCH c_inv_item INTO l_dummy;
4510 CLOSE c_inv_item;
4511
4512 OPEN c_rev_code(l_dummy);
4513 FETCH c_rev_code INTO l_rev_control_code;
4514 CLOSE c_rev_code;
4515
4516 IF l_rev_control_code = 2 THEN
4517 BEGIN
4518 SELECT 'x'
4519 INTO l_test
4520 FROM csi_item_instances
4521 WHERE instance_id = p_cp_subcomponent_id
4522 AND inventory_revision = p_subcomponent_version;
4523
4524 EXCEPTION
4525 WHEN NO_DATA_FOUND THEN
4526 -- 3352160 - modified value of p_token_an
4527 x_return_status := FND_API.G_RET_STS_ERROR;
4528 Add_Invalid_Argument_Msg(
4529 p_token_an => l_api_name_full,
4530 p_token_v => p_subcomponent_version,
4531 p_token_p => p_parameter_name,
4532 p_table_name => null,
4533 p_column_name => null);
4534
4535 WHEN OTHERS THEN
4536 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
4537 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
4538 fnd_msg_pub.ADD;
4539 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4540 END;
4541 END IF;
4542
4543
4544
4545 EXCEPTION
4546 WHEN NO_DATA_FOUND THEN
4547 x_return_status := FND_API.G_RET_STS_ERROR;
4548 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
4549 p_token_v => p_subcomponent_version,
4550 p_token_p => p_parameter_name ,
4551 p_table_name => G_TABLE_NAME,
4552 p_column_name => 'SUBCOMPONENT_VERSION');
4553 WHEN OTHERS THEN
4554 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
4555 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
4556 fnd_msg_pub.ADD;
4557 x_return_status := fnd_api.g_ret_sts_unexp_error;
4558 END;
4559 END Validate_Subcomponent_Version;
4560 ----------------------------------------------------------------------------------
4561
4562 -- Validate Sub Component Id
4563 PROCEDURE Validate_CP_SubComp_Id
4564 ( p_api_name IN VARCHAR2,
4565 p_parameter_name IN VARCHAR2,
4566 p_cp_subcomponent_id IN NUMBER,
4567 p_cp_component_id IN NUMBER,
4568 p_customer_product_id IN NUMBER,
4569 p_org_id IN NUMBER,
4570 x_return_status OUT NOCOPY VARCHAR2
4571 )IS
4572
4573 l_test VARCHAR2(1);
4574 l_api_name CONSTANT VARCHAR2(30) := 'Validate_CP_SubComp_Id';
4575 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
4576
4577 BEGIN
4578 -- Initialize the return status.
4579 x_return_status := FND_API.G_RET_STS_SUCCESS;
4580
4581 /* SELECT 'x'
4582 INTO l_test
4583 FROM cs_customer_products_all
4584 WHERE customer_product_id = p_cp_subcomponent_id
4585 AND config_parent_id = p_cp_component_id
4586 AND config_root_id = p_customer_product_id; */
4587
4588 -- For bug 3338046 - the view has records of ser_req_enabled = 'E'
4589 SELECT 'x'
4590 INTO l_test
4591 FROM cs_sr_new_acc_cp_rg_v
4592 WHERE instance_id = p_cp_subcomponent_id
4593 AND object_id = p_cp_component_id
4594 AND rownum < 2;
4595
4596 EXCEPTION
4597 WHEN NO_DATA_FOUND THEN
4598 x_return_status := FND_API.G_RET_STS_ERROR;
4599 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
4600 p_token_v => TO_CHAR(p_cp_subcomponent_id),
4601 p_token_p => p_parameter_name,
4602 p_table_name => G_TABLE_NAME ,
4603 p_column_name => 'CP_SUBCOMPONENT_ID');
4604
4605 WHEN OTHERS THEN
4606 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
4607 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
4608 fnd_msg_pub.ADD;
4609 x_return_status := fnd_api.g_ret_sts_unexp_error;
4610
4611 END Validate_CP_SubComp_Id;
4612
4613
4614 -- Validate INV ITEM REVISION
4615 PROCEDURE Validate_Inv_Item_Rev
4616 ( p_api_name IN VARCHAR2,
4617 p_parameter_name IN VARCHAR2,
4618 p_inv_item_revision IN VARCHAR2,
4619 p_inventory_item_id IN NUMBER,
4620 p_inventory_org_id IN NUMBER,
4621 x_return_status OUT NOCOPY VARCHAR2
4622 )IS
4623
4624 l_test VARCHAR2(1);
4625 l_rev_control_code NUMBER;
4626 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Inv_Item_Rev';
4627 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
4628
4629 BEGIN
4630 -- Initialize the return status.
4631 x_return_status := FND_API.G_RET_STS_SUCCESS;
4632
4633 BEGIN
4634 SELECT revision_qty_control_code
4635 INTO l_rev_control_code
4636 FROM mtl_system_items_b
4637 WHERE inventory_item_id = p_inventory_item_id
4638 AND serv_req_enabled_code = 'E'
4639 AND organization_id = p_inventory_org_id;
4640
4641 IF l_rev_control_code = 2 THEN
4642 BEGIN
4643 SELECT 'x'
4644 INTO l_test
4645 FROM mtl_item_revisions
4646 WHERE inventory_item_id = p_inventory_item_id
4647 AND organization_id = p_inventory_org_id
4648 AND revision = p_inv_item_revision;
4649
4650 EXCEPTION
4651 WHEN NO_DATA_FOUND THEN
4652 x_return_status := FND_API.G_RET_STS_ERROR;
4653 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
4654 p_token_v => p_inv_item_revision,
4655 p_token_p => p_parameter_name,
4656 p_table_name => G_TABLE_NAME ,
4657 p_column_name => 'INV_ITEM_REVISION' );
4658 WHEN OTHERS THEN
4659 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
4660 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
4661 fnd_msg_pub.ADD;
4662 x_return_status := fnd_api.g_ret_sts_unexp_error;
4663
4664 END;
4665 END IF;
4666
4667 EXCEPTION
4668 WHEN NO_DATA_FOUND THEN
4669 x_return_status := FND_API.G_RET_STS_ERROR;
4670 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
4671 p_token_v => TO_CHAR(p_inventory_item_id),
4672 p_token_p => p_parameter_name,
4673 p_table_name => G_TABLE_NAME ,
4674 p_column_name => 'INVENTORY_ITEM_ID' );
4675
4676 WHEN OTHERS THEN
4677 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
4678 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
4679 fnd_msg_pub.ADD;
4680 x_return_status := fnd_api.g_ret_sts_unexp_error;
4681
4682 END;
4683 END Validate_Inv_Item_Rev;
4684 ------------------------------------------------------
4685
4686 -- Validate INV COMP ID
4687 PROCEDURE Validate_Inv_Comp_Id
4688 ( p_api_name IN VARCHAR2,
4689 p_parameter_name IN VARCHAR2,
4690 p_inventory_org_id IN NUMBER,
4691 p_inv_component_id IN NUMBER,
4692 p_inventory_item_id IN NUMBER,
4693 x_return_status OUT NOCOPY VARCHAR2
4694 )IS
4695
4696 l_test VARCHAR2(1);
4697 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Inv_Comp_Id';
4698 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
4699
4700 BEGIN
4701 -- Initialize the return status.
4702 x_return_status := FND_API.G_RET_STS_SUCCESS;
4703
4704
4705 /* commenting out this SQL as the view cs_sr_inv_components_v is not
4706 looking at the effective date of the inventory_item_id.
4707 SELECT 'x'
4708 INTO l_test
4709 FROM cs_sr_inv_components_v
4710 WHERE organization_id = p_inventory_org_id
4711 AND component_id = p_inv_component_id
4712 AND inventory_item_id = p_inventory_item_id;
4713 */
4714
4715 SELECT 'X' INTO l_test
4716 FROM
4717 bom_bill_of_materials bom,
4718 bom_inventory_components bic,
4719 mtl_system_items_b kfv
4720 WHERE
4721 bom.organization_id = kfv.organization_id AND
4722 bic.bill_sequence_id = bom.common_bill_sequence_id AND
4723 trunc(sysdate) between trunc(bic.effectivity_date) and
4724 nvl(bic.disable_date, trunc(sysdate)) AND
4725 trunc(sysdate) between trunc(nvl(kfv.start_date_active,sysdate)) and
4726 nvl(kfv.end_date_active, trunc(sysdate)) AND
4727 kfv.inventory_item_id = bic.component_item_id AND
4728 bom.organization_id = p_inventory_org_id AND
4729 bom.assembly_item_id = p_inventory_item_id AND
4730 bic.component_item_id = p_inv_component_id AND
4731 bom.alternate_bom_designator IS NULL;
4732
4733 EXCEPTION
4734 WHEN NO_DATA_FOUND THEN
4735 x_return_status := FND_API.G_RET_STS_ERROR;
4736 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
4737 p_token_v => TO_CHAR(p_inv_component_id),
4738 p_token_p => p_parameter_name,
4739 p_table_name => G_TABLE_NAME ,
4740 p_column_name => 'INV_COMPONENT_ID' );
4741 WHEN OTHERS THEN
4742 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
4743 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
4744 fnd_msg_pub.ADD;
4745 x_return_status := fnd_api.g_ret_sts_unexp_error;
4746
4747 END Validate_Inv_Comp_Id;
4748 -----------------------------------------
4749
4750 -- Validate INV COMP VER
4751 -- For BUG 2930217, we check the revision_qty_control_code being 2, before we validate the
4752 -- inv_component_version.
4753
4754 PROCEDURE Validate_Inv_Comp_Ver (
4755 p_api_name IN VARCHAR2,
4756 p_parameter_name IN VARCHAR2,
4757 p_inventory_org_id IN NUMBER,
4758 p_inv_component_id IN NUMBER,
4759 p_inv_component_version IN VARCHAR2,
4760 x_return_status OUT NOCOPY VARCHAR2 )
4761 IS
4762 l_rev_control_code NUMBER;
4763 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Inv_Comp_Ver';
4764 l_api_name_full CONSTANT VARCHAR2(70) := G_PKG_NAME||'.'||l_api_name;
4765 l_test VARCHAR2(3);
4766 BEGIN
4767 -- Initialize the return status.
4768 x_return_status := FND_API.G_RET_STS_SUCCESS;
4769
4770 SELECT revision_qty_control_code
4771 INTO l_rev_control_code
4772 FROM mtl_system_items_b
4773 WHERE inventory_item_id = p_inv_component_id
4774 AND organization_id = p_inventory_org_id;
4775
4776 IF l_rev_control_code = 2 THEN
4777 SELECT 'x'
4778 INTO l_test
4779 FROM mtl_item_revisions
4780 WHERE organization_id = p_inventory_org_id
4781 AND inventory_item_id = p_inv_component_id
4782 AND revision = p_inv_component_version ;
4783 END IF;
4784
4785 EXCEPTION
4786 WHEN NO_DATA_FOUND THEN
4787 x_return_status := FND_API.G_RET_STS_ERROR;
4788 Add_Invalid_Argument_Msg(
4789 p_token_an => l_api_name_full,
4790 p_token_v => p_inv_component_version,
4791 p_token_p => p_parameter_name,
4792 p_table_name => G_TABLE_NAME ,
4793 p_column_name => 'INV_COMPONENT_VERSION' );
4794
4795 WHEN OTHERS THEN
4796 x_return_status := FND_API.G_RET_STS_ERROR;
4797 Add_Invalid_Argument_Msg(
4798 p_token_an => l_api_name_full,
4799 p_token_v => p_inv_component_version,
4800 p_token_p => p_parameter_name,
4801 p_table_name => G_TABLE_NAME ,
4802 p_column_name => 'INV_COMPONENT_VERSION' );
4803
4804 END Validate_Inv_Comp_Ver;
4805
4806
4807 -- Validate INV SUBCOMP ID
4808 PROCEDURE Validate_Inv_SubComp_Id (
4809 p_api_name IN VARCHAR2,
4810 p_parameter_name IN VARCHAR2,
4811 p_inventory_org_id IN NUMBER,
4812 p_inv_subcomponent_id IN NUMBER,
4813 p_inv_component_id IN NUMBER,
4814 x_return_status OUT NOCOPY VARCHAR2 )
4815 IS
4816
4817 l_test VARCHAR2(1);
4818 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Inv_SubComp_Id';
4819 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
4820
4821 BEGIN
4822 -- Initialize the return status.
4823 x_return_status := FND_API.G_RET_STS_SUCCESS;
4824
4825 /* commenting out this SQL , as the view cs_sr_inv_subcomponents_v does not
4826 take the effective dates of the inv_subcomp_id in the invwentory table.
4827 SELECT 'x'
4828 INTO l_test
4829 FROM cs_sr_inv_subcomponents_v
4830 WHERE organization_id = p_inventory_org_id
4831 AND subcomponent_id = p_inv_subcomponent_id
4832 AND component_id = p_inv_component_id
4833 AND rownum < 2 ;
4834 */
4835
4836 SELECT 'X' INTO l_test
4837 FROM
4838 bom_bill_of_materials bom,
4839 bom_inventory_components bic,
4840 mtl_system_items_b kfv
4841 WHERE
4842 bom.organization_id = kfv.organization_id AND
4843 bic.bill_sequence_id = bom.common_bill_sequence_id AND
4844 trunc(sysdate) between trunc(bic.effectivity_date) and
4845 nvl(bic.disable_date, trunc(sysdate)) AND
4846 trunc(sysdate) between trunc(nvl(kfv.start_date_active,sysdate)) and
4847 nvl(kfv.end_date_active, trunc(sysdate)) AND
4848 kfv.inventory_item_id = bic.component_item_id AND
4849 bom.organization_id = p_inventory_org_id AND
4850 bom.assembly_item_id = p_inv_component_id AND
4851 bic.component_item_id = p_inv_subcomponent_id AND
4852 bom.alternate_bom_designator IS NULL;
4853
4854
4855 EXCEPTION
4856 WHEN NO_DATA_FOUND THEN
4857 x_return_status := FND_API.G_RET_STS_ERROR;
4858 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
4859 p_token_v => TO_CHAR(p_inv_subcomponent_id),
4860 p_token_p => p_parameter_name,
4861 p_table_name => G_TABLE_NAME ,
4862 p_column_name => 'INV_SUBCOMPONENT_ID' );
4863
4864 WHEN OTHERS THEN
4865 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
4866 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
4867 fnd_msg_pub.ADD;
4868 x_return_status := fnd_api.g_ret_sts_unexp_error;
4869
4870 END Validate_Inv_SubComp_Id;
4871 -------------------------------------
4872
4873 -- Validate INV SUb COMP VER
4874 PROCEDURE Validate_Inv_SubComp_Ver
4875 ( p_api_name IN VARCHAR2,
4876 p_parameter_name IN VARCHAR2,
4877 p_inventory_org_id IN NUMBER,
4878 p_inv_subcomponent_id IN NUMBER,
4879 p_inv_subcomponent_version IN VARCHAR2,
4880 x_return_status OUT NOCOPY VARCHAR2
4881 )IS
4882
4883 l_test VARCHAR2(1);
4884 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Inv_SubComp_Ver';
4885 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
4886 l_rev_control_code NUMBER;
4887
4888 BEGIN
4889 -- Initialize the return status.
4890 x_return_status := FND_API.G_RET_STS_SUCCESS;
4891
4892 SELECT revision_qty_control_code
4893 INTO l_rev_control_code
4894 FROM mtl_system_items_b
4895 WHERE inventory_item_id = p_inv_subcomponent_id
4896 AND organization_id = p_inventory_org_id;
4897
4898 IF l_rev_control_code = 2 THEN
4899 SELECT 'x'
4900 INTO l_test
4901 FROM mtl_item_revisions
4902 WHERE organization_id = p_inventory_org_id
4903 AND inventory_item_id = p_inv_subcomponent_id
4904 AND revision = p_inv_subcomponent_version ;
4905 END IF;
4906
4907 EXCEPTION
4908 WHEN NO_DATA_FOUND THEN
4909 x_return_status := FND_API.G_RET_STS_ERROR;
4910 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
4911 p_token_v => p_inv_subcomponent_version,
4912 p_token_p => p_parameter_name,
4913 p_table_name => G_TABLE_NAME ,
4914 p_column_name => 'INV_SUBCOMPONENT_VERSION' );
4915 WHEN OTHERS THEN
4916 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
4917 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
4918 fnd_msg_pub.ADD;
4919 x_return_status := fnd_api.g_ret_sts_unexp_error;
4920
4921 END Validate_Inv_SubComp_Ver;
4922
4923 -- Validate SR CREATION CHANNEL
4924 PROCEDURE Validate_SR_Channel
4925 ( p_api_name IN VARCHAR2,
4926 p_parameter_name IN VARCHAR2,
4927 p_sr_creation_channel IN VARCHAR2,
4928 x_return_status OUT NOCOPY VARCHAR2
4929 )IS
4930
4931 l_dummy VARCHAR2(1);
4932 l_api_name CONSTANT VARCHAR2(30) := 'Validate_SR_Channel';
4933 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
4934
4935 BEGIN
4936 -- Initialize the return status.
4937 x_return_status := FND_API.G_RET_STS_SUCCESS;
4938
4939 SELECT 'x' INTO l_dummy
4940 FROM CS_LOOKUPS
4941 WHERE lookup_code = UPPER(p_sr_creation_channel)
4942 AND lookup_type = 'CS_SR_CREATION_CHANNEL'
4943 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date_active, SYSDATE))
4944 AND TRUNC(NVL(end_date_active, SYSDATE)) ;
4945
4946 EXCEPTION
4947 WHEN NO_DATA_FOUND THEN
4948 x_return_status := FND_API.G_RET_STS_ERROR;
4949 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
4950 p_token_v => p_sr_creation_channel,
4951 p_token_p => p_parameter_name,
4952 p_table_name => G_TABLE_NAME ,
4953 p_column_name => 'SR_CREATION_CHANNEL' );
4954 WHEN OTHERS THEN
4955 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
4956 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
4957 fnd_msg_pub.ADD;
4958 x_return_status := fnd_api.g_ret_sts_unexp_error;
4959
4960 END Validate_SR_Channel;
4961 ---------------------------------------------------------------------------------
4962
4963 -- Validate Language Id
4964 PROCEDURE Validate_CP_Language_Id
4965 ( p_api_name IN VARCHAR2,
4966 p_parameter_name IN VARCHAR2,
4967 p_language_id IN NUMBER,
4968 p_customer_product_id IN NUMBER,
4969 x_return_status OUT NOCOPY VARCHAR2
4970 )IS
4971
4972 l_test VARCHAR2(1);
4973 l_api_name CONSTANT VARCHAR2(30) := 'Validate_CP_Language_Id';
4974 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
4975
4976 BEGIN
4977 -- Initialize the return status.
4978 x_return_status := FND_API.G_RET_STS_SUCCESS;
4979 SELECT 'x'
4980 INTO l_test
4981 FROM cs_cp_languages
4982 WHERE cp_language_id = p_language_id
4983 AND customer_product_id = p_customer_product_id;
4984
4985 EXCEPTION
4986 WHEN NO_DATA_FOUND THEN
4987 x_return_status := FND_API.G_RET_STS_ERROR;
4988 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full ,
4989 p_token_v => TO_CHAR(p_language_id),
4990 p_token_p => p_parameter_name,
4991 p_table_name => G_TABLE_NAME,
4992 p_column_name => 'LANGUAGE_ID');
4993 WHEN OTHERS THEN
4994 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
4995 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
4996 fnd_msg_pub.ADD;
4997 x_return_status := fnd_api.g_ret_sts_unexp_error;
4998
4999 END Validate_CP_Language_Id;
5000 ---------------------------------------------------------------------------------------------
5001
5002 -- Validate Territory Id
5003 PROCEDURE Validate_Territory_Id
5004 ( p_api_name IN VARCHAR2,
5005 p_parameter_name IN VARCHAR2,
5006 p_territory_id IN NUMBER,
5007 p_owner_id IN NUMBER,
5008 x_return_status OUT NOCOPY VARCHAR2
5009 )IS
5010
5011 l_test VARCHAR2(1);
5012 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Territory_Id';
5013 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
5014
5015 BEGIN
5016 -- Initialize the return status.
5017 x_return_status := FND_API.G_RET_STS_SUCCESS;
5018
5019 SELECT 'x' INTO l_test
5020 FROM JTF_TERR_RSC_ALL
5021 WHERE resource_id = p_owner_id
5022 AND terr_id = p_territory_id;
5023
5024 EXCEPTION
5025 WHEN NO_DATA_FOUND THEN
5026 x_return_status := FND_API.G_RET_STS_ERROR;
5027 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full ,
5028 p_token_v => TO_CHAR(p_territory_id),
5029 p_token_p => p_parameter_name,
5030 p_table_name => G_TABLE_NAME,
5031 p_column_name => 'TERRITORY_ID');
5032 WHEN OTHERS THEN
5033 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
5034 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
5035 fnd_msg_pub.ADD;
5036 x_return_status := fnd_api.g_ret_sts_unexp_error;
5037
5038 END Validate_Territory_Id;
5039
5040
5041 --------------------
5042 -- This validation has to look into JTF_CONTACT_POINTS_V because
5043 -- this view has contact point ids belonging to PARTIES only and not to PARTY_SITES
5044 -- Validate Contact Point Id
5045 PROCEDURE Validate_Per_Contact_Point_Id
5046 ( p_api_name IN VARCHAR2,
5047 p_parameter_name IN VARCHAR2,
5048 p_contact_point_type IN VARCHAR2,
5049 p_contact_point_id IN NUMBER,
5050 p_party_id IN NUMBER,
5051 x_return_status OUT NOCOPY VARCHAR2
5052 )IS
5053
5054 l_test NUMBER;
5055 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Per_Contact_Point_Id';
5056 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
5057
5058 BEGIN
5059 -- Initialize the return status.
5060 x_return_status := FND_API.G_RET_STS_SUCCESS;
5061
5062 SELECT a.contact_point_id INTO l_test
5063 FROM HZ_CONTACT_POINTS a
5064 WHERE a.contact_point_type = p_contact_point_type
5065 AND a.contact_point_id = p_contact_point_id
5066 AND a.OWNER_TABLE_ID = p_party_id
5067 AND a.OWNER_TABLE_NAME = 'HZ_PARTIES'
5068 AND a.STATUS = 'A';
5069 EXCEPTION
5070 WHEN NO_DATA_FOUND THEN
5071 x_return_status := FND_API.G_RET_STS_ERROR;
5072 -- new message for 11.5.10
5073 -- Contact point is not valid. Please check the values for the following:
5074 -- party ,contact point and contact point type.
5075
5076 fnd_message.set_name ('CS', 'CS_SR_CONT_POINT_INVALID');
5077 fnd_message.set_token('API_NAME', l_api_name_full );
5078 fnd_msg_pub.add;
5079
5080 WHEN OTHERS THEN
5081 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
5082 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
5083 fnd_msg_pub.ADD;
5084 x_return_status := fnd_api.g_ret_sts_unexp_error;
5085
5086 END Validate_Per_Contact_Point_Id;
5087 ---------------------------------------
5088
5089 -- Validate Contact Point Id
5090 PROCEDURE Validate_Emp_Contact_Point_Id
5091 ( p_api_name IN VARCHAR2,
5092 p_parameter_name IN VARCHAR2,
5093 p_employee_id IN NUMBER,
5094 p_contact_point_id IN NUMBER,
5095 x_return_status OUT NOCOPY VARCHAR2
5096 )IS
5097
5098 l_test NUMBER;
5099 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Emp_Contact_Point_Id';
5100 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
5101
5102 BEGIN
5103 -- Initialize the return status.
5104 x_return_status := FND_API.G_RET_STS_SUCCESS;
5105
5106 SELECT PHONE_ID
5107 INTO l_test
5108 FROM per_phones
5109 WHERE parent_id = p_employee_id
5110 AND parent_table = 'PER_ALL_PEOPLE_F'
5111 AND phone_id = p_contact_point_id ;
5112
5113 EXCEPTION
5114 WHEN NO_DATA_FOUND THEN
5115 x_return_status := FND_API.G_RET_STS_ERROR;
5116 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full ,
5117 p_token_v => TO_CHAR(p_contact_point_id),
5118 p_token_p => p_parameter_name,
5119 p_table_name => 'CS_HZ_SR_CONTACT_POINTS' ,
5120 p_column_name => 'CONTACT_POINT_ID');
5121 WHEN OTHERS THEN
5122 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
5123 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
5124 fnd_msg_pub.ADD;
5125 x_return_status := fnd_api.g_ret_sts_unexp_error;
5126
5127 END Validate_Emp_Contact_Point_Id;
5128 -----------------------------------------------------------------
5129
5130 -- Validate Contact Point Type
5131 PROCEDURE Validate_Contact_Point_Type
5132 ( p_api_name IN VARCHAR2,
5133 p_parameter_name IN VARCHAR2,
5134 p_contact_point_type IN VARCHAR2,
5135 x_return_status OUT NOCOPY VARCHAR2
5136 )IS
5137
5138 l_test VARCHAR2(1);
5139 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Contact_Point_Type';
5140 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
5141
5142 BEGIN
5143 -- Initialize the return status.
5144 x_return_status := FND_API.G_RET_STS_SUCCESS;
5145
5146 SELECT 'x'
5147 INTO l_test
5148 FROM AR_LOOKUPS
5149 WHERE lookup_code = UPPER(p_contact_point_type)
5150 AND (lookup_type = 'COMMUNICATION_TYPE' OR lookup_type = 'PHONE_LINE_TYPE')
5151 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date_active, SYSDATE))
5152 AND TRUNC(NVL(end_date_active, SYSDATE))
5153 AND ROWNUM <= 1 ;
5154 EXCEPTION
5155 WHEN NO_DATA_FOUND THEN
5156 x_return_status := FND_API.G_RET_STS_ERROR;
5157 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full ,
5158 p_token_v => p_contact_point_type,
5159 p_token_p => p_parameter_name,
5160 p_table_name => 'CS_HZ_SR_CONTACT_POINTS',
5161 p_column_name => 'CONTACT_POINT_TYPE');
5162 WHEN OTHERS THEN
5163 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
5164 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
5165 fnd_msg_pub.ADD;
5166 x_return_status := fnd_api.g_ret_sts_unexp_error;
5167 END Validate_Contact_Point_Type;
5168
5169 -- Validate Contact Type
5170 PROCEDURE Validate_Contact_Type
5171 ( p_api_name IN VARCHAR2,
5172 p_parameter_name IN VARCHAR2,
5173 p_contact_type IN VARCHAR2,
5174 x_return_status OUT NOCOPY VARCHAR2
5175 )IS
5176
5177 l_test VARCHAR2(1);
5178 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Contact_Type';
5179 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
5180
5181 BEGIN
5182 -- Initialize the return status.
5183 x_return_status := FND_API.G_RET_STS_SUCCESS;
5184
5185 SELECT 'x' INTO l_test
5186 FROM CS_LOOKUPS
5187 WHERE lookup_code = UPPER(p_contact_type)
5188 AND (lookup_type = 'CS_SR_CONTACT_TYPES')
5189 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date_active, SYSDATE))
5190 AND TRUNC(NVL(end_date_active, SYSDATE))
5191 AND ROWNUM <= 1;
5192
5193 EXCEPTION
5194 WHEN NO_DATA_FOUND THEN
5195 x_return_status := FND_API.G_RET_STS_ERROR;
5196 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full ,
5197 p_token_v => p_contact_type,
5198 p_token_p => p_parameter_name,
5199 p_table_name => 'CS_HZ_SR_CONTACT_POINTS',
5200 p_column_name => 'CONTACT_TYPE');
5201 WHEN OTHERS THEN
5202 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
5203 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
5204 fnd_msg_pub.ADD;
5205 x_return_status := fnd_api.g_ret_sts_unexp_error;
5206 END Validate_Contact_Type;
5207 ---------------------------------------
5208
5209 --Validate Account ID
5210 PROCEDURE Validate_Account_Id
5211 (p_api_name IN VARCHAR2,
5212 p_parameter_name IN VARCHAR2,
5213 p_account_id IN NUMBER,
5214 p_customer_id IN NUMBER,
5215 x_return_status OUT NOCOPY VARCHAR2
5216 )
5217 IS
5218
5219 l_test VARCHAR2(1);
5220 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Account_Id';
5221 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
5222
5223 BEGIN
5224 -- Initialize the return status.
5225 x_return_status := FND_API.G_RET_STS_SUCCESS;
5226
5227 SELECT 'x' INTO l_test
5228 FROM hz_cust_accounts a
5229 WHERE a.cust_account_id = p_account_id
5230 AND a.party_id = p_customer_id
5231 AND a.status = 'A'
5232 -- Added to remove TCA violation -- Sysdate should fall within Account Activation Date and Termination Date -- anmukher -- 08/14/03
5233 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(a.ACCOUNT_ACTIVATION_DATE, SYSDATE)) AND TRUNC(NVL(a.ACCOUNT_TERMINATION_DATE, SYSDATE));
5234 EXCEPTION
5235 WHEN NO_DATA_FOUND THEN
5236 x_return_status := FND_API.G_RET_STS_ERROR;
5237 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full ,
5238 p_token_v => TO_CHAR(p_account_id),
5239 p_token_p => p_parameter_name,
5240 p_table_name => G_TABLE_NAME ,
5241 p_column_name => 'ACCOUNT_ID');
5242 WHEN OTHERS THEN
5243 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
5244 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
5245 fnd_msg_pub.ADD;
5246 x_return_status := fnd_api.g_ret_sts_unexp_error;
5247
5248 END Validate_Account_Id;
5249
5250 -- --------------------------------------------------------------------------------
5251 -- Is_MultiOrg_Enabled
5252 -- Description : Checks if the multiorg is enabled
5253 -- returns TRUE if multiorg is enabled
5254 -- --------------------------------------------------------------------------------
5255 FUNCTION Is_MultiOrg_Enabled RETURN BOOLEAN IS
5256 l_multiorg_enabled VARCHAR2(1);
5257 BEGIN
5258 SELECT multi_org_flag INTO l_multiorg_enabled
5259 FROM FND_PRODUCT_GROUPS;
5260
5261 IF l_multiorg_enabled = 'Y' THEN
5262 RETURN TRUE;
5263 ELSE
5264 RETURN FALSE;
5265 END IF;
5266
5267 END Is_MultiOrg_Enabled;
5268
5269
5270 -------------------------------------------------------------------------------
5271 -- Function Is_Context_Enabled
5272 -- Description:
5273 -- Returns TRUE if the ConText Option is enabled.
5274 -- ----------------------------------------------------------------------------
5275 FUNCTION Is_Context_Enabled RETURN BOOLEAN IS
5276 l_dummy VARCHAR2(1);
5277 BEGIN
5278 IF (FND_PROFILE.Value('INC_ENABLE_CONTEXT_SEARCH') = 'Y') THEN
5279 RETURN TRUE;
5280 ELSE
5281 RETURN FALSE;
5282 END IF;
5283 EXCEPTION
5284 WHEN NO_DATA_FOUND THEN
5285 RETURN FALSE;
5286 END Is_Context_Enabled;
5287
5288
5289 --------------------------------------------------------------------------
5290 -- Procedure Add_Desc_Flex_Msg
5291 -- Usage:
5292 -- This procedure is called from the Validate_Desc_Flex routine in the
5293 -- Create_ServiceRequest API.
5294 -- Description:
5295 -- Add the error message from the FND_FLEX_DESCVAL package to the message
5296 -- list.
5297 --------------------------------------------------------------------------
5298
5299 PROCEDURE Add_Desc_Flex_Msg
5300 ( p_token_an VARCHAR2,
5301 p_token_dfm VARCHAR2
5302 )
5303 IS
5304 BEGIN
5305 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5306 FND_MESSAGE.Set_Name('CS', 'CS_API_SR_DESC_FLEX_ERROR');
5307 FND_MESSAGE.Set_Token('API_NAME', p_token_an);
5308 FND_MESSAGE.Set_Token('DESC_FLEX_MSG', p_token_dfm);
5309 FND_MSG_PUB.ADD;
5310 END IF;
5311 END Add_Desc_Flex_Msg;
5312
5313
5314 --------------------------------------------------------------------------
5315 -- Add_Invalid_Argument_Msg
5316 --------------------------------------------------------------------------
5317
5318 PROCEDURE Add_Invalid_Argument_Msg
5319 ( p_token_an VARCHAR2,
5320 p_token_v VARCHAR2,
5321 p_token_p VARCHAR2
5322 )
5323 IS
5324 -- bug 2833245 created a new local variable for assigning the value as NULL
5325 l_token_v VARCHAR2(4000);
5326 --end for bug 2833245
5327
5328 BEGIN
5329
5330 --bug 2833245 condition to check the token value
5331 l_token_v := p_token_v;
5332 if l_token_v = FND_API.G_MISS_CHAR then
5333 l_token_v := NULL;
5334 end if;
5335 -- end for bug 2833245
5336
5337
5338 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5339 FND_MESSAGE.Set_Name('CS', 'CS_API_ALL_INVALID_ARGUMENT');
5340 FND_MESSAGE.Set_Token('API_NAME', p_token_an);
5341 --bug 2833245 pass the local variable for setting the token
5342 FND_MESSAGE.Set_Token('VALUE',l_token_v);
5343 -- end for bug 2833245
5344 FND_MESSAGE.Set_Token('PARAMETER', p_token_p);
5345 FND_MSG_PUB.ADD;
5346 END IF;
5347 END Add_Invalid_Argument_Msg;
5348
5349
5350 --------------------------------------------------------------------------
5351 -- Procedure Add_Key_Flex_Msg
5352 -- Usage:
5353 -- This procedure is called from the Convert_Key_Flex_To_ID routine in
5354 -- the Create_ServiceRequest API.
5355 -- Description:
5356 -- Add the error message from the FND_FLEX_KEYVAL package to the message
5357 -- list.
5358 --------------------------------------------------------------------------
5359
5360 PROCEDURE Add_Key_Flex_Msg
5361 ( p_token_an VARCHAR2,
5362 p_token_kfm VARCHAR2
5363 )
5364 IS
5365 BEGIN
5366 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5367 FND_MESSAGE.Set_Name('CS', 'CS_API_SR_KEY_FLEX_ERROR');
5368 FND_MESSAGE.Set_Token('API_NAME', p_token_an);
5369 FND_MESSAGE.Set_Token('KEY_FLEX_MSG', p_token_kfm);
5370 FND_MSG_PUB.ADD;
5371 END IF;
5372 END Add_Key_Flex_Msg;
5373
5374
5375 --------------------------------------------------------------------------
5376 -- Add_Null_Parameter_Msg
5377 --------------------------------------------------------------------------
5378
5379 PROCEDURE Add_Null_Parameter_Msg
5380 ( p_token_an VARCHAR2,
5381 p_token_np VARCHAR2
5382 )
5383 IS
5384 BEGIN
5385 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5386 FND_MESSAGE.Set_Name('CS', 'CS_API_ALL_NULL_PARAMETER');
5387 FND_MESSAGE.Set_Token('API_NAME', p_token_an);
5388 FND_MESSAGE.Set_Token('NULL_PARAM', p_token_np);
5389 FND_MSG_PUB.ADD;
5390 END IF;
5391 END Add_Null_Parameter_Msg;
5392
5393
5394 --------------------------------------------------------------------------
5395 -- Add_Param_Ignored_Msg
5396 --------------------------------------------------------------------------
5397
5398 PROCEDURE Add_Param_Ignored_Msg
5399 ( p_token_an VARCHAR2,
5400 p_token_ip VARCHAR2
5401 )
5402 IS
5403 BEGIN
5404 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_SUCCESS) THEN
5405 FND_MESSAGE.Set_Name('CS', 'CS_API_ALL_PARAM_IGNORED');
5406 FND_MESSAGE.Set_Token('API_NAME', p_token_an);
5407 FND_MESSAGE.Set_Token('IGNORED_PARAM', p_token_ip);
5408 FND_MSG_PUB.ADD_DETAIL( p_message_type => FND_MSG_PUB.G_WARNING_MSG);
5409 END IF;
5410 END Add_Param_Ignored_Msg;
5411
5412
5413 --------------------------------------------------------------------------
5414 -- Add_Cp_Flag_Ignored_Msg
5415 --------------------------------------------------------------------------
5416
5417
5418 PROCEDURE Add_Cp_Flag_Ignored_Msg
5419 (p_token_an VARCHAR2,
5420 p_token_ip VARCHAR2,
5421 p_token_pv VARCHAR2
5422 )
5423 IS
5424 BEGIN
5425 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_SUCCESS) THEN
5426 FND_MESSAGE.Set_Name('CS', 'CS_API_SR_CP_FLAG_IGNORED');
5427 FND_MESSAGE.Set_Token('API_NAME', p_token_an);
5428 FND_MESSAGE.Set_Token('VALUE', p_token_ip);
5429 FND_MESSAGE.Set_Token('DEFAULT_VALUE', p_token_pv);
5430 FND_MSG_PUB.ADD_DETAIL( p_message_type => FND_MSG_PUB.G_WARNING_MSG);
5431 END IF;
5432 END Add_Cp_Flag_Ignored_Msg;
5433
5434
5435 --------------------------------------------------------------------------
5436 -- Add_Duplicate_Value__Msg
5437 --------------------------------------------------------------------------
5438
5439 PROCEDURE Add_Duplicate_Value_Msg( p_token_an IN VARCHAR2,
5440 p_token_p IN VARCHAR2 ) IS
5441
5442 BEGIN
5443 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5444 FND_MESSAGE.Set_Name('CS', 'CS_API_ALL_DUPLICATE_VALUE');
5445 FND_MESSAGE.Set_Token('API_NAME', p_token_an);
5446 FND_MESSAGE.Set_Token('DUPLICATE_VAL_PARAM', p_token_p);
5447 FND_MSG_PUB.ADD;
5448 END IF;
5449 END Add_Duplicate_Value_Msg;
5450
5451
5452 PROCEDURE Add_Same_Val_Update_Msg( p_token_an IN VARCHAR2,
5453 p_token_p IN VARCHAR2 ) IS
5454 BEGIN
5455 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_SUCCESS) THEN
5456 FND_MESSAGE.Set_Name('CS', 'CS_API_ALL_SAME_VAL_UPDATE');
5457 FND_MESSAGE.Set_Token('API_NAME', p_token_an);
5458 FND_MESSAGE.Set_Token('SAME_VAL_PARAM', p_token_p);
5459 FND_MSG_PUB.ADD;
5460 END IF;
5461 END Add_Same_Val_Update_Msg;
5462
5463
5464 PROCEDURE Add_Missing_Param_Msg( p_token_an IN VARCHAR2,
5465 p_token_mp IN VARCHAR2 ) IS
5466 BEGIN
5467 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5468 FND_MESSAGE.SET_NAME('CS', 'CS_API_ALL_MISSING_PARAM');
5469 FND_MESSAGE.SET_TOKEN('API_NAME', p_token_an);
5470 FND_MESSAGE.SET_TOKEN('MISSING_PARAM', p_token_mp);
5471 FND_MSG_PUB.ADD;
5472 END IF;
5473 END Add_Missing_Param_Msg;
5474
5475
5476 PROCEDURE call_internal_hook( p_package_name IN VARCHAR2 ,
5477 p_api_name IN VARCHAR2 ,
5478 p_processing_type IN VARCHAR2,
5479 x_return_status OUT NOCOPY VARCHAR2 )
5480 IS
5481 l_api_name CONSTANT VARCHAR2(30) := 'call_internal_hook';
5482 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
5483
5484
5485 CURSOR c1 IS
5486 SELECT hook_package, hook_api
5487 FROM jtf_hooks_data
5488 WHERE package_name = p_package_name
5489 AND api_name = p_api_name
5490 AND execute_flag = 'Y'
5491 AND processing_type = p_processing_type
5492 ORDER BY execution_order;
5493
5494 v_cursorid INTEGER ;
5495 v_blockstr VARCHAR2(2000);
5496 v_dummy INTEGER;
5497
5498 BEGIN
5499
5500 FOR i IN c1 LOOP
5501 v_blockstr := ' begin '||i.hook_package || '.' ||i.hook_api||'(:1); end; ' ;
5502 EXECUTE IMMEDIATE v_blockstr USING OUT x_return_status ;
5503
5504 IF NOT (x_return_status = fnd_api.g_ret_sts_success) THEN
5505 x_return_status := fnd_api.g_ret_sts_unexp_error;
5506 RAISE fnd_api.g_exc_unexpected_error;
5507 END IF;
5508 END LOOP;
5509 EXCEPTION
5510 WHEN fnd_api.g_exc_unexpected_error THEN
5511 x_return_status := fnd_api.g_ret_sts_unexp_error;
5512
5513 WHEN OTHERS THEN
5514 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
5515 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
5516 fnd_msg_pub.ADD;
5517 x_return_status := fnd_api.g_ret_sts_unexp_error;
5518
5519 END call_internal_hook ;
5520
5521 -- -----------------------------------------------------------------------
5522 -- Procedure : Validate_Bill_To_Ship_To_Acct
5523 -- Function : Verify that the Bill To Account is valid for given customer site OR customer.
5524 -- Parameters :
5525 -- IN :p_api_name IN VARCHAR2 Required Name of the calling procedure.
5526 -- p_parameter_name IN VARCHAR2 Required Name of the parameter in the
5527 -- calling procedure (e.g. 'p_bill_to_account').
5528 -- p_bill_to_account_id IN NUMBER Required Unique bill to account identifier
5529 -- p_bill_to_customer_id IN NUMBER Unique Bill to customer ientifier
5530 -- OUT :x_return_status OUT VARCHAR2(1)
5531 -- FND_API.G_RET_STS_SUCCESS => Bill_to_Account is valid
5532 -- FND_API.G_RET_STS_ERROR => Bill_to_Account is invalid
5533 -- -----------------------------------------------------------------------
5534
5535 PROCEDURE Validate_Bill_To_Ship_To_Acct
5536 ( p_api_name IN VARCHAR2,
5537 p_parameter_name IN VARCHAR2,
5538 p_account_id IN NUMBER,
5539 p_party_id IN NUMBER,
5540 x_return_status OUT NOCOPY VARCHAR2
5541 )
5542 AS
5543 l_dummy VARCHAR2(1);
5544 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Bill_To_Ship_To_Acct';
5545 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
5546
5547 BEGIN
5548 -- Initialize the return status.
5549 x_return_status := FND_API.G_RET_STS_SUCCESS;
5550 -- Validation
5551 SELECT 'x' INTO l_dummy
5552 FROM hz_cust_accounts
5553 WHERE cust_account_id = p_account_id
5554 AND party_id = p_party_id
5555 AND status = 'A';
5556 EXCEPTION
5557 WHEN NO_DATA_FOUND THEN
5558 x_return_status := FND_API.G_RET_STS_ERROR;
5559 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
5560 p_token_v => p_account_id,
5561 p_token_p => p_parameter_name,
5562 p_table_name => G_TABLE_NAME,
5563 p_column_name => 'ACCOUNT_ID' );
5564
5565 WHEN OTHERS THEN
5566 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
5567 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
5568 fnd_msg_pub.ADD;
5569 x_return_status := fnd_api.g_ret_sts_unexp_error;
5570 END Validate_Bill_To_Ship_To_Acct ;
5571
5572 -- -----------------------------------------------------------------------
5573 -- Start of Comments
5574 -- Procedure : Validate_source_program_code
5575 -- Function : Verify that the source program code is valid lookup code
5576 -- from the lookup CS_SR_SOURCE_PROGRAMS.
5577 --
5578 -- Parameters :
5579 --
5580 -- IN : p_api_name IN VARCHAR2 Required
5581 -- Name of the calling procedure.
5582 -- p_parameter_name IN VARCHAR2 Required
5583 -- Name of the parameter in the calling procedure
5584 -- (e.g. 'p_source_program_code').
5585 -- p_source_program_code IN VARCHAR2(30) Required
5586 -- Service request source program code
5587 --
5588 -- OUT : x_return_status OUT VARCHAR2(1)
5589 -- FND_API.G_RET_STS_SUCCESS => source_program_code is valid
5590 -- FND_API.G_RET_STS_ERROR => source_program_code is invalid
5591 --
5592 -- Notes : Unknown exceptions (i.e. unexpected errors) should be
5593 -- handled by the calling procedure.
5594 -- End of Comments
5595 -- -----------------------------------------------------------------------
5596
5597
5598 PROCEDURE Validate_source_program_Code
5599 ( p_api_name IN VARCHAR2,
5600 p_parameter_name IN VARCHAR2,
5601 p_source_program_code IN VARCHAR2,
5602 x_return_status OUT NOCOPY VARCHAR2
5603 )IS
5604 l_dummy VARCHAR2(1);
5605 l_api_name CONSTANT VARCHAR2(30) := 'Validate_source_program_Code';
5606 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
5607
5608 BEGIN
5609 -- Initialize the return status.
5610 x_return_status := FND_API.G_RET_STS_SUCCESS;
5611
5612 -- Verify the request CP against the database.
5613 SELECT 'x' INTO l_dummy
5614 FROM CS_LOOKUPS
5615 WHERE lookup_code = UPPER(p_source_program_code)
5616 AND lookup_type = 'CS_SR_SOURCE_PROGRAMS'
5617 AND enabled_flag = 'Y'
5618 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date_active, SYSDATE))
5619 AND TRUNC(NVL(end_date_active, SYSDATE));
5620
5621 EXCEPTION
5622 WHEN NO_DATA_FOUND THEN
5623 x_return_status := FND_API.G_RET_STS_ERROR;
5624 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
5625 p_token_v => p_source_program_code,
5626 p_token_p => p_parameter_name,
5627 p_table_name => G_TABLE_NAME,
5628 p_column_name => 'CREATION_PROGRAM_CODE' );
5629
5630 WHEN OTHERS THEN
5631 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
5632 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
5633 fnd_msg_pub.ADD;
5634 x_return_status := fnd_api.g_ret_sts_unexp_error;
5635 END Validate_source_program_Code;
5636 -- -----------------------------------------------------------------------
5637 -- Start of Comments
5638 -- Procedure : Validate_INC_DIST_QUAL_UOM
5639 -- Function : Verify that the INC_DIST_QUAL_UOM is valid lookup
5640 -- code from the lookup CS_SR_DISTANCE_UOM
5641 --
5642 -- Parameters :
5643 --
5644 -- IN : p_api_name IN VARCHAR2 Required
5645 -- Name of the calling procedure.
5646 -- p_parameter_name IN VARCHAR2 Required
5647 -- Name of the parameter in the calling procedure
5648 -- (e.g. 'P_INC_DIST_QUAL_UOM').
5649 -- P_INC_DIST_QUAL_UOM IN VARCHAR2(30)
5650 -- Service request incident distance qualifier UOM
5651 -- OUT : x_return_status OUT VARCHAR2(1)
5652 -- FND_API.G_RET_STS_SUCCESS => INC_DIST_QUAL_UOM is valid
5653 -- FND_API.G_RET_STS_ERROR => INC_DIST_QUAL_UOM is invalid
5654 --
5655 -- Notes : Unknown exceptions (i.e. unexpected errors) should be
5656 -- handled by the calling procedure.
5657 -- End of Comments
5658 -- -----------------------------------------------------------------------
5659
5660 PROCEDURE Validate_INC_DIST_QUAL_UOM
5661 ( p_api_name IN VARCHAR2,
5662 p_parameter_name IN VARCHAR2,
5663 p_INC_DIST_QUAL_UOM IN VARCHAR2,
5664 x_return_status OUT NOCOPY VARCHAR2
5665 ) IS
5666 l_dummy VARCHAR2(1);
5667 l_api_name CONSTANT VARCHAR2(30) := 'Validate_INC_DIST_QUAL_UOM';
5668 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
5669
5670 BEGIN
5671 -- Initialize the return status.
5672 x_return_status := FND_API.G_RET_STS_SUCCESS;
5673
5674 -- Verify the request CP against the database.
5675 SELECT 'x' INTO l_dummy
5676 FROM CS_LOOKUPS
5677 WHERE lookup_code = UPPER(p_INC_DIST_QUAL_UOM)
5678 AND lookup_type = 'CS_SR_DISTANCE_UOM'
5679 AND enabled_flag = 'Y'
5680 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date_active, SYSDATE))
5681 AND TRUNC(NVL(end_date_active, SYSDATE));
5682
5683 EXCEPTION
5684 WHEN NO_DATA_FOUND THEN
5685 x_return_status := FND_API.G_RET_STS_ERROR;
5686 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
5687 p_token_v => p_INC_DIST_QUAL_UOM,
5688 p_token_p => p_parameter_name ,
5689 p_table_name => G_TABLE_NAME,
5690 p_column_name => 'INCIDENT_DISTANCE_QUAL_UOM');
5691
5692 WHEN OTHERS THEN
5693 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
5694 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
5695 fnd_msg_pub.ADD;
5696 x_return_status := fnd_api.g_ret_sts_unexp_error;
5697
5698
5699 END Validate_INC_DIST_QUAL_UOM;
5700
5701
5702 -- -----------------------------------------------------------------------
5703 -- Start of Comments
5704 -- Procedure : Validate_INC_DIRECTION_QUAL
5705 -- Function : Verify that the INC_DIRECTION_QUAL is valid lookup
5706 -- code from the lookup CS_SR_DIRECTIONS.
5707 --
5708 -- Parameters :
5709 --
5710 -- IN : p_api_name IN VARCHAR2 Required
5711 -- Name of the calling procedure.
5712 -- p_parameter_name IN VARCHAR2 Required
5713 -- Name of the parameter in the calling procedure
5714 -- (e.g. 'p_INC_DIRECTION_QUAL').
5715 -- p_INC_DIRECTION_QUAL IN VARCHAR2(30)
5716 -- Service request incident direction qualifier
5717 --
5718 -- OUT : x_return_status OUT VARCHAR2(1)
5719 -- FND_API.G_RET_STS_SUCCESS => INC_DIRECTION_QUAL is valid
5720 -- FND_API.G_RET_STS_ERROR => INC_DIRECTION_QUAL is invalid
5721 --
5722 -- Notes : Unknown exceptions (i.e. unexpected errors) should be
5723 -- handled by the calling procedure.
5724 -- End of Comments
5725 -- -----------------------------------------------------------------------
5726
5727 PROCEDURE Validate_INC_DIRECTION_QUAL
5728 ( p_api_name IN VARCHAR2,
5729 p_parameter_name IN VARCHAR2,
5730 p_INC_DIRECTION_QUAL IN VARCHAR2,
5731 x_return_status OUT NOCOPY VARCHAR2
5732 )IS
5733 l_dummy VARCHAR2(1);
5734 l_api_name CONSTANT VARCHAR2(30) := 'Validate_INC_DIRECTION_QUAL';
5735 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
5736
5737 BEGIN
5738 -- Initialize the return status.
5739 x_return_status := FND_API.G_RET_STS_SUCCESS;
5740
5741 -- Verify the request CP against the database.
5742 SELECT 'x' INTO l_dummy
5743 FROM CS_LOOKUPS
5744 WHERE lookup_code = UPPER(p_INC_DIRECTION_QUAL)
5745 AND lookup_type = 'CS_SR_DIRECTIONS'
5746 AND enabled_flag = 'Y'
5747 AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date_active, SYSDATE))
5748 AND TRUNC(NVL(end_date_active, SYSDATE));
5749
5750 EXCEPTION
5751 WHEN NO_DATA_FOUND THEN
5752 x_return_status := FND_API.G_RET_STS_ERROR;
5753 Add_Invalid_Argument_Msg( p_token_an => l_api_name_full,
5754 p_token_v => p_INC_DIRECTION_QUAL,
5755 p_token_p => p_parameter_name,
5756 p_table_name => G_TABLE_NAME,
5757 p_column_name => 'INCIDENT_DIRECTION_QUALIFIER' );
5758
5759 WHEN OTHERS THEN
5760 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
5761 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
5762 fnd_msg_pub.ADD;
5763 x_return_status := fnd_api.g_ret_sts_unexp_error;
5764
5765
5766 END Validate_INC_DIRECTION_QUAL;
5767
5768
5769 --------------------------------------------------------------------------
5770 -- Procedure Add_Desc_Flex_Msg
5771 -- Usage:
5772 -- This procedure is called from the Validate_Desc_Flex routine in the
5773 -- Create_ServiceRequest API.
5774 -- Description:
5775 -- Add the error message from the FND_FLEX_DESCVAL package to the message
5776 -- list.
5777 --------------------------------------------------------------------------
5778
5779 PROCEDURE Add_Desc_Flex_Msg
5780 ( p_token_an VARCHAR2,
5781 p_token_dfm VARCHAR2,
5782 p_table_name IN VARCHAR2 ,
5783 p_column_name IN VARCHAR2
5784 )
5785 IS
5786 l_associated_col1 VARCHAR2(240);
5787
5788 BEGIN
5789 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5790
5791 IF p_table_name IS NOT NULL THEN
5792 l_associated_col1 := p_table_name ;
5793 IF p_column_name IS NOT NULL THEN
5794 l_associated_col1 := l_associated_col1 ||'.'||p_column_name ;
5795 END IF ;
5796 ELSIF p_column_name IS NOT NULL THEN
5797 l_associated_col1 := p_column_name;
5798 ELSE
5799 l_associated_col1 := p_token_dfm ;
5800 END IF ;
5801
5802 FND_MESSAGE.Set_Name('CS', 'CS_API_SR_DESC_FLEX_ERROR');
5803 FND_MESSAGE.Set_Token('API_NAME', p_token_an);
5804 FND_MESSAGE.Set_Token('DESC_FLEX_MSG', p_token_dfm);
5805 FND_MSG_PUB.ADD_DETAIL(p_associated_column1 => l_associated_col1);
5806
5807 END IF;
5808 END Add_Desc_Flex_Msg;
5809
5810 --------------------------------------------------------------------------
5811 -- Start of comments
5812 -- Procedure : Add_Invalid_Argument_Msg
5813 -- Description : Overloaded procedure to Add the CS_API_ALL_INVALID_ARGUMENT
5814 -- message to the message list.
5815 --
5816 -- Parameters :
5817 -- IN :
5818 -- p_token_an IN VARCHAR2 Required -- Value of the API_NAME token.
5819 -- p_token_v IN VARCHAR2 Required -- Value of the VALUE token.
5820 -- p_token_p IN VARCHAR2 Required -- Value of the PARAMETER token.
5821 -- p_column_name IN VARCHAR2 Default Null -- Name of the database column/control
5822 -- parameter being validated
5823 -- p_table_name IN VARCHAR2 Default Null -- Name of the database table/control
5824 -- parameter being validated
5825 -- End of comments
5826 --------------------------------------------------------------------------
5827
5828 PROCEDURE Add_Invalid_Argument_Msg ( p_token_an IN VARCHAR2,
5829 p_token_v IN VARCHAR2,
5830 p_token_p IN VARCHAR2 ,
5831 p_table_name IN VARCHAR2 ,
5832 p_column_name IN VARCHAR2
5833 )
5834 IS
5835 l_associated_col1 VARCHAR2(240);
5836 --bug 2833245 created a new local variable for assigning the value as NULL
5837 l_token_v VARCHAR2(4000);
5838 --end for bug 2833245
5839 BEGIN
5840 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5841
5842 IF p_table_name IS NOT NULL THEN
5843 l_associated_col1 := p_table_name ;
5844 IF p_column_name IS NOT NULL THEN
5845 l_associated_col1 := l_associated_col1 ||'.'||p_column_name ;
5846 END IF ;
5847 ELSIF p_column_name IS NOT NULL THEN
5848 l_associated_col1 := p_column_name;
5849 ELSE
5850 l_associated_col1 := p_token_p ;
5851 END IF ;
5852
5853 --bug 2833245 condition to check the token value
5854 l_token_v := p_token_v;
5855 if l_token_v = FND_API.G_MISS_CHAR then
5856 l_token_v := NULL;
5857 end if;
5858 -- end for bug 2833245
5859
5860 FND_MESSAGE.Set_Name('CS', 'CS_API_ALL_INVALID_ARGUMENT');
5861 FND_MESSAGE.Set_Token('API_NAME', p_token_an);
5862 --bug 2833245 pass the local variable for setting the token
5863 FND_MESSAGE.Set_Token('VALUE',l_token_v);
5864 -- end for bug 2833245
5865 FND_MESSAGE.Set_Token('PARAMETER', p_token_p);
5866 FND_MSG_PUB.ADD_DETAIL(p_associated_column1 => l_associated_col1);
5867
5868 --For bug 2885111 - to remove the blank message
5869 --FND_MSG_PUB.ADD_DETAIL(p_associated_column1 => l_associated_col1);
5870 END IF;
5871 END Add_Invalid_Argument_Msg;
5872
5873
5874 --------------------------------------------------------------------------
5875 -- Start of comments
5876 -- Procedure : Add_Key_Flex_Msg
5877 -- Description : Overloaded Procedure to Add the CS_API_SR_KEY_FLEX_ERROR message to the i
5878 -- message list.
5879 -- Usage : This procedure is called from the Convert_Key_Flex_To_ID routine in
5880 -- the Create_ServiceRequest API.
5881 -- Parameters :
5882 -- IN :
5883 -- p_token_an IN VARCHAR2 Required Value of the API_NAME token.
5884 -- p_token_kfm IN VARCHAR2 Required Value of the KEY_FLEX_MSG token.
5885 -- End of comments
5886 --------------------------------------------------------------------------
5887
5888 PROCEDURE Add_Key_Flex_Msg ( p_token_an IN VARCHAR2,
5889 p_token_kfm IN VARCHAR2,
5890 p_table_name IN VARCHAR2 ,
5891 p_column_name IN VARCHAR2
5892 )
5893 IS
5894 l_associated_col1 VARCHAR2(240);
5895 BEGIN
5896 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5897
5898 IF p_table_name IS NOT NULL THEN
5899 l_associated_col1 := p_table_name ;
5900 IF p_column_name IS NOT NULL THEN
5901 l_associated_col1 := l_associated_col1 ||'.'||p_column_name ;
5902 END IF ;
5903 ELSIF p_column_name IS NOT NULL THEN
5904 l_associated_col1 := p_column_name;
5905 ELSE
5906 l_associated_col1 := p_token_kfm ;
5907 END IF ;
5908 FND_MESSAGE.Set_Name('CS', 'CS_API_SR_KEY_FLEX_ERROR');
5909 FND_MESSAGE.Set_Token('API_NAME', p_token_an);
5910 FND_MESSAGE.Set_Token('KEY_FLEX_MSG', p_token_kfm);
5911 FND_MSG_PUB.ADD_DETAIL(p_associated_column1 => l_associated_col1);
5912 END IF;
5913 END Add_Key_Flex_Msg;
5914
5915 --------------------------------------------------------------------------
5916 -- Start of comments
5917 -- Procedure : Add_Missing_Param_Msg
5918 -- Description : Overloaded Procedure to Add the CS_API_ALL_MISSING_PARAM message to the message
5919 -- list.
5920 -- Parameters :
5921 -- IN :
5922 -- p_token_an IN VARCHAR2 Required -- Value of the API_NAME token.
5923 -- p_token_v IN VARCHAR2 Required -- Value of the VALUE token.
5924 -- p_token_p IN VARCHAR2 Required -- Value of the PARAMETER token.
5925 -- p_column_name IN VARCHAR2 Default Null -- Name of the database column/control
5926 -- parameter being validated
5927 -- p_table_name IN VARCHAR2 Default Null -- Name of the database table/control
5928 -- parameter being validated
5929 -- End of comments
5930 --------------------------------------------------------------------------
5931
5932 PROCEDURE Add_Missing_Param_Msg ( p_token_an IN VARCHAR2,
5933 p_token_mp IN VARCHAR2,
5934 p_table_name IN VARCHAR2 ,
5935 p_column_name IN VARCHAR2 ) IS
5936 l_associated_col1 VARCHAR2(240);
5937 BEGIN
5938 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5939
5940 IF p_table_name IS NOT NULL THEN
5941 l_associated_col1 := p_table_name ;
5942 IF p_column_name IS NOT NULL THEN
5943 l_associated_col1 := l_associated_col1 ||'.'||p_column_name ;
5944 END IF ;
5945 ELSIF p_column_name IS NOT NULL THEN
5946 l_associated_col1 := p_column_name;
5947 ELSE
5948 l_associated_col1 := p_token_mp ;
5949 END IF ;
5950 FND_MESSAGE.SET_NAME('CS', 'CS_API_ALL_MISSING_PARAM');
5951 FND_MESSAGE.SET_TOKEN('API_NAME', p_token_an);
5952 FND_MESSAGE.SET_TOKEN('MISSING_PARAM', p_token_mp);
5953 FND_MSG_PUB.ADD_DETAIL(p_associated_column1 => l_associated_col1);
5954 END IF;
5955 END Add_Missing_Param_Msg;
5956
5957 --------------------------------------------------------------------------
5958 -- Start of comments
5959 -- Procedure : Add_Null_Parameter_Msg
5960 -- Description : Overloaded Procedure to Add the CS_API_ALL_NULL_PARAMETER message to the message
5961 -- list.
5962 -- Parameters :
5963 -- IN :
5964 -- p_token_an IN VARCHAR2 Required -- Value of the API_NAME token.
5965 -- p_token_v IN VARCHAR2 Required -- Value of the VALUE token.
5966 -- p_token_p IN VARCHAR2 Required -- Value of the PARAMETER token.
5967 -- p_column_name IN VARCHAR2 Default Null -- Name of the database column/control
5968 -- parameter being validated
5969 -- p_table_name IN VARCHAR2 Default Null -- Name of the database table/control
5970 -- parameter being validated
5971 -- End of comments
5972 --------------------------------------------------------------------------
5973
5974 PROCEDURE Add_Null_Parameter_Msg ( p_token_an IN VARCHAR2,
5975 p_token_np IN VARCHAR2,
5976 p_table_name IN VARCHAR2 ,
5977 p_column_name IN VARCHAR2
5978 )
5979 IS
5980 l_associated_col1 VARCHAR2(240);
5981 BEGIN
5982 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5983
5984 IF p_table_name IS NOT NULL THEN
5985 l_associated_col1 := p_table_name ;
5986 IF p_column_name IS NOT NULL THEN
5987 l_associated_col1 := l_associated_col1 ||'.'||p_column_name ;
5988 END IF ;
5989 ELSIF p_column_name IS NOT NULL THEN
5990 l_associated_col1 := p_column_name;
5991 ELSE
5992 l_associated_col1 := p_token_np ;
5993 END IF ;
5994 FND_MESSAGE.Set_Name('CS', 'CS_API_ALL_NULL_PARAMETER');
5995 FND_MESSAGE.Set_Token('API_NAME', p_token_an);
5996 FND_MESSAGE.Set_Token('NULL_PARAM', p_token_np);
5997 FND_MSG_PUB.ADD_DETAIL(p_associated_column1 => l_associated_col1);
5998 END IF;
5999 END Add_Null_Parameter_Msg;
6000
6001 --------------------------------------------------------------------------
6002 -- Start of comments
6003 -- Procedure : Add_Param_Ignored_Msg
6004 -- Description : Overloaded Procedure to Add the CS_API_ALL_PARAM_IGNORED message to the message
6005 -- list.
6006 -- Parameters :
6007 -- IN :
6008 -- p_token_an IN VARCHAR2 Required -- Value of the API_NAME token.
6009 -- p_token_v IN VARCHAR2 Required -- Value of the VALUE token.
6010 -- p_token_p IN VARCHAR2 Required -- Value of the PARAMETER token.
6011 -- p_column_name IN VARCHAR2 Default Null -- Name of the database column/control
6012 -- parameter being validated
6013 -- p_table_name IN VARCHAR2 Default Null -- Name of the database table/control
6014 -- parameter being validated
6015 -- End of comments
6016 --------------------------------------------------------------------------
6017
6018 PROCEDURE Add_Param_Ignored_Msg ( p_token_an IN VARCHAR2,
6019 p_token_ip IN VARCHAR2,
6020 p_table_name IN VARCHAR2 ,
6021 p_column_name IN VARCHAR2
6022 )
6023 IS
6024 l_associated_col1 VARCHAR2(240);
6025 BEGIN
6026 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_SUCCESS) THEN
6027
6028 IF p_table_name IS NOT NULL THEN
6029 l_associated_col1 := p_table_name ;
6030 IF p_column_name IS NOT NULL THEN
6031 l_associated_col1 := l_associated_col1 ||'.'||p_column_name ;
6032 END IF ;
6033 ELSIF p_column_name IS NOT NULL THEN
6034 l_associated_col1 := p_column_name;
6035 ELSE
6036 l_associated_col1 := p_token_ip ;
6037 END IF ;
6038 FND_MESSAGE.Set_Name('CS', 'CS_API_ALL_PARAM_IGNORED');
6039 FND_MESSAGE.Set_Token('API_NAME', p_token_an);
6040 FND_MESSAGE.Set_Token('IGNORED_PARAM', p_token_ip);
6041 FND_MSG_PUB.ADD_DETAIL(p_associated_column1 => l_associated_col1);
6042 END IF;
6043 END Add_Param_Ignored_Msg;
6044
6045 --------------------------------------------------------------------------
6046 -- Start of comments
6047 -- Procedure : Add_Duplicate_Value_Msg
6048 -- Description : Overloaded Procedure to Add the CS_API_ALL_PARAM_IGNORED message to the message
6049 -- list.
6050 -- Parameters :
6051 -- IN :
6052 -- p_token_an IN VARCHAR2 Required -- Value of the API_NAME token.
6053 -- p_token_v IN VARCHAR2 Required -- Value of the VALUE token.
6054 -- p_token_p IN VARCHAR2 Required -- Value of the PARAMETER token.
6055 -- p_column_name IN VARCHAR2 Default Null -- Name of the database column/control
6056 -- parameter being validated
6057 -- p_table_name IN VARCHAR2 Default Null -- Name of the database table/control
6058 -- parameter being validated
6059 -- End of comments
6060 --------------------------------------------------------------------------
6061
6062 PROCEDURE Add_Duplicate_Value_Msg( p_token_an IN VARCHAR2,
6063 p_token_p IN VARCHAR2,
6064 p_table_name IN VARCHAR2 ,
6065 p_column_name IN VARCHAR2 ) IS
6066 l_associated_col1 VARCHAR2(240);
6067
6068 BEGIN
6069 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6070
6071 IF p_table_name IS NOT NULL THEN
6072 l_associated_col1 := p_table_name ;
6073 IF p_column_name IS NOT NULL THEN
6074 l_associated_col1 := l_associated_col1 ||'.'||p_column_name ;
6075 END IF ;
6076 ELSIF p_column_name IS NOT NULL THEN
6077 l_associated_col1 := p_column_name;
6078 ELSE
6079 l_associated_col1 := p_token_p ;
6080 END IF ;
6081 FND_MESSAGE.Set_Name('CS', 'CS_API_ALL_DUPLICATE_VALUE');
6082 FND_MESSAGE.Set_Token('API_NAME', p_token_an);
6083 FND_MESSAGE.Set_Token('DUPLICATE_VAL_PARAM', p_token_p);
6084 FND_MSG_PUB.ADD_DETAIL(p_associated_column1 => l_associated_col1);
6085 END IF;
6086 END Add_Duplicate_Value_Msg;
6087
6088 --------------------------------------------------------------------------
6089 -- Start of comments
6090 -- Procedure : Add_Same_Val_Update_Msg
6091 -- Description : Overloaded Procedure to Add the CS_API_ALL_PARAM_IGNORED message to the message
6092 -- list.
6093 -- Parameters :
6094 -- IN :
6095 -- p_token_an IN VARCHAR2 Required -- Value of the API_NAME token.
6096 -- p_token_v IN VARCHAR2 Required -- Value of the VALUE token.
6097 -- p_token_p IN VARCHAR2 Required -- Value of the PARAMETER token.
6098 -- p_column_name IN VARCHAR2 Default Null -- Name of the database column/control
6099 -- parameter being validated
6100 -- p_table_name IN VARCHAR2 Default Null -- Name of the database table/control
6101 -- parameter being validated
6102 -- End of comments
6103 --------------------------------------------------------------------------
6104
6105 PROCEDURE Add_Same_Val_Update_Msg( p_token_an IN VARCHAR2,
6106 p_token_p IN VARCHAR2,
6107 p_table_name IN VARCHAR2 ,
6108 p_column_name IN VARCHAR2 ) IS
6109 l_associated_col1 VARCHAR2(240);
6110 BEGIN
6111 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_SUCCESS) THEN
6112
6113 IF p_table_name IS NOT NULL THEN
6114 l_associated_col1 := p_table_name ;
6115 IF p_column_name IS NOT NULL THEN
6116 l_associated_col1 := l_associated_col1 ||'.'||p_column_name ;
6117 END IF ;
6118 ELSIF p_column_name IS NOT NULL THEN
6119 l_associated_col1 := p_column_name;
6120 ELSE
6121 l_associated_col1 := p_token_p ;
6122 END IF ;
6123 FND_MESSAGE.Set_Name('CS', 'CS_API_ALL_SAME_VAL_UPDATE');
6124 FND_MESSAGE.Set_Token('API_NAME', p_token_an);
6125 FND_MESSAGE.Set_Token('SAME_VAL_PARAM', p_token_p);
6126 FND_MSG_PUB.ADD_DETAIL(p_associated_column1 => l_associated_col1,
6127 p_message_type => FND_MSG_PUB.G_WARNING_MSG);
6128 END IF;
6129 END Add_Same_Val_Update_Msg;
6130
6131 -- -----------------------------------------------------------------------------
6132 ---
6133 -- Validate_Site_Site_Use
6134 -- Same procedure is used to validate Bill_to and Ship_To Site and Sites Use.
6135 -- 1. Site must be an active site attached to party
6136 -- 2. Site Use must be Valid and Must be BILL_TO or SHIP_TO as required
6137 -- 3. p_site_use_type will be BILL_TO or SHIP_TO
6138 -- -----------------------------------------------------------------------------
6139 -- Modification History
6140 -- Date Name Desc
6141 -- -------- -------- -----------------------------------------------------------
6142 -- 07/22/05 smisra Bug 4292583
6143 -- Modified query and replaced literal 'A' with a variable
6144 -- having a value 'A' for performance reasons.
6145 -- -----------------------------------------------------------------------------
6146 PROCEDURE Validate_Site_Site_Use (
6147 p_api_name IN VARCHAR2,
6148 p_parameter_name IN VARCHAR2,
6149 p_site_id IN NUMBER,
6150 p_site_use_id IN NUMBER,
6151 p_party_id IN NUMBER,
6152 p_site_use_type IN VARCHAR2,
6153 x_return_status OUT NOCOPY VARCHAR2
6154 )
6155 AS
6156 l_literal_a VARCHAR2(3);
6157 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Site_Site_Use';
6158 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
6159
6160 CURSOR Site_Site_Use IS
6161 SELECT s.status
6162 FROM Hz_Party_Sites s,
6163 Hz_Party_Site_Uses su
6164 WHERE s.party_site_id = su.party_site_id
6165 AND s.party_site_id = p_site_id
6166 AND s.party_id = p_party_id
6167 AND su.party_site_use_id = p_site_use_id
6168 AND s.status = l_literal_a
6169 AND su.status = l_literal_a
6170 -- Commented out to remove TCA Violation -- Party site use dates not to be checked -- anmukher -- 08/14/03
6171 -- AND trunc(sysdate) between trunc(nvl(su.begin_date,sysdate))
6172 -- and trunc(nvl(su.end_date,sysdate))
6173 AND su.site_use_type = p_site_use_type;
6174
6175 l_dummy Varchar2(5);
6176 BEGIN
6177 -- Initialize return status to success
6178 x_return_status := FND_API.G_RET_STS_SUCCESS;
6179 l_literal_a := 'A';
6180 OPEN site_site_use;
6181 FETCH site_site_use INTO l_dummy;
6182 IF (site_site_use%NOTFOUND) THEN
6183 x_return_status := FND_API.G_RET_STS_ERROR;
6184 CLOSE site_site_use;
6185
6186 RAISE NO_DATA_FOUND;
6187 END IF;
6188 CLOSE site_site_use ;
6189 EXCEPTION
6190 WHEN NO_DATA_FOUND THEN
6191 CS_ServiceRequest_UTIL.Add_Invalid_Argument_Msg
6192 (p_token_an => l_api_name_full,
6193 p_token_v => 'site_id:='||to_char(p_site_id)||' or site_use_id:='||to_char(p_site_use_id),
6194 p_token_p => p_parameter_name );
6195
6196 WHEN OTHERS THEN
6197 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
6198 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
6199 fnd_msg_pub.add;
6200 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6201 END Validate_Site_Site_Use ;
6202
6203 -- -----------------------------------------------------------------------------
6204 ---
6205 -- Validate_Bill_Ship_Site_Use
6206 -- Same procedure is used to validate Bill_to and Ship_To Sites
6207 -- 1. Site Use must be an active site attached to party
6208 -- 2. Site USe must be Valid and Must be BILL_TO or SHIP_TO as required
6209 -- 3. p_site_use_type will be BILL_TO or SHIP_TO
6210 -- -----------------------------------------------------------------------------
6211
6212 PROCEDURE Validate_Bill_Ship_Site_Use (
6213 p_api_name IN VARCHAR2,
6214 p_parameter_name IN VARCHAR2,
6215 p_site_use_id IN NUMBER,
6216 p_party_id IN NUMBER,
6217 p_site_use_type IN VARCHAR2,
6218 x_site_id OUT NOCOPY NUMBER,
6219 x_return_status OUT NOCOPY VARCHAR2
6220 ) IS
6221 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Bill_Ship_Site_Use';
6222 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
6223
6224 CURSOR Bill_To_Site_Use IS
6225 SELECT s.party_site_id
6226 FROM Hz_Party_Sites s,
6227 Hz_Party_Site_Uses su
6228 WHERE s.party_site_id = su.party_site_id
6229 AND su.party_site_use_id = p_site_use_id
6230 AND s.party_id = p_party_id
6231 AND s.status = 'A'
6232 AND su.status = 'A'
6233 -- Commented out to remove TCA Violation -- Party site use dates not to be checked -- anmukher -- 08/14/03
6234 -- AND trunc(sysdate) between trunc(nvl(su.begin_date,sysdate))
6235 -- and trunc(nvl(su.end_date,sysdate))
6236 AND su.site_use_type = p_site_use_type;
6237
6238 BEGIN
6239
6240 -- Initialize return status to success
6241 x_return_status := FND_API.G_RET_STS_SUCCESS;
6242
6243 OPEN bill_to_site_use;
6244 FETCH bill_to_site_use INTO x_site_id;
6245 IF (bill_to_site_use%NOTFOUND) THEN
6246 x_return_status := FND_API.G_RET_STS_ERROR;
6247 CLOSE bill_to_site_use;
6248
6249 RAISE NO_DATA_FOUND;
6250 END IF;
6251 CLOSE bill_to_site_use ;
6252
6253 EXCEPTION
6254 WHEN NO_DATA_FOUND THEN
6255 CS_ServiceRequest_UTIL.Add_Invalid_Argument_Msg(
6256 p_token_an => l_api_name_full,
6257 p_token_v => to_char(p_site_use_id),
6258 p_token_p => p_parameter_name );
6259
6260 WHEN OTHERS THEN
6261 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
6262 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
6263 fnd_msg_pub.add;
6264 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6265 END Validate_Bill_Ship_Site_Use;
6266
6267
6268 -- DJ API Cleanup; added new proc
6269 -- Procedure to be called when SR Type changes and service security is
6270 -- enabled.
6271 -- If there are any open Tasks, add a WARNING message to the Message stack,
6272 -- but return back a success status. It is upto the calling program to pull
6273 -- out the error msg. from the stack and processed as needed.
6274
6275 PROCEDURE TASK_OWNER_CROSS_VAL (
6276 p_incident_id IN NUMBER,
6277 x_return_status OUT NOCOPY VARCHAR2 )
6278 IS
6279 l_dummy NUMBER := 0;
6280 l_sr_agent_security VARCHAR2(15);
6281 l_api_name CONSTANT VARCHAR2(30) := 'TASK_OWNER_CROSS_VAL';
6282 l_api_name_full CONSTANT VARCHAR2(70) := G_PKG_NAME||'.'||l_api_name;
6283 BEGIN
6284
6285 -- procedure always returns a success status but may populate a warning
6286 -- message in the message stack
6287 x_return_status := FND_API.G_RET_STS_SUCCESS;
6288
6289 -- Check if service security is enable. This select will always return
6290 -- with atleast one record.
6291 select sr_agent_security
6292 into l_sr_agent_security
6293 from cs_system_options
6294 where rownum = 1;
6295
6296 if ( l_sr_agent_security <> 'ANONE' ) then
6297 select count(*)
6298 into l_dummy
6299 from jtf_tasks_b a,
6300 jtf_task_statuses_b b
6301 where a.source_object_id = p_incident_id
6302 and a.source_object_type_code = 'SR'
6303 and a.task_status_id = b.task_status_id
6304 and b.closed_flag <> 'Y';
6305
6306 if ( l_dummy > 0 ) then
6307 -- put in a warning message into the msg. stack.
6308 -- new message for 11.5.10
6309 -- There are open tasks associated to the service request. Changing the
6310 -- service request type may invalidate some of the task assignments.
6311 -- Please verify that the task owners are valid for the new service
6312 -- request type.
6313 fnd_message.set_name ('CS', 'CS_SR_TASK_OWNER_INVALID');
6314 fnd_msg_pub.ADD;
6315 end if;
6316 end if;
6317
6318 EXCEPTION
6319 WHEN OTHERS THEN
6320 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6321 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
6322 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
6323 fnd_msg_pub.add;
6324
6325 END TASK_OWNER_CROSS_VAL;
6326
6327 -- KP API Cleanup; added new proc
6328 -- Procedure to be called when Incident Location Id or CP changes. If
6329 -- Customer Product Id is passed , the incident Location Id should
6330 -- be the same as Install Base location.
6331
6332 PROCEDURE CP_INCIDENT_SITE_CROSS_VAL(
6333 p_parameter_name IN VARCHAR2,
6334 p_incident_location_id IN NUMBER,
6335 p_customer_product_id IN NUMBER,
6336 x_return_status OUT NOCOPY varchar2 )
6337 IS
6338 l_dummy VARCHAR2(1);
6339 l_api_name CONSTANT VARCHAR2(30) := 'CP_INCIDENT_SITE_CROSS_VAL';
6340 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
6341
6342 BEGIN
6343
6344 x_return_status := FND_API.G_RET_STS_SUCCESS;
6345
6346 SELECT 'x' INTO l_dummy
6347 FROM csi_item_instances a
6348 WHERE a.instance_id = p_customer_product_id
6349 AND a.location_id = p_incident_location_id;
6350
6351 EXCEPTION
6352 WHEN NO_DATA_FOUND THEN
6353 x_return_status := FND_API.G_RET_STS_ERROR;
6354 fnd_message.set_name ('CS', 'CS_INVALID_INC_LOCATION');
6355 fnd_message.set_token('INCIDENT_LOCATION_ID', p_incident_location_id);
6356 fnd_message.set_token('CUSTOMER_PRODUCT_ID', p_customer_product_id);
6357 fnd_msg_pub.add;
6358
6359 WHEN OTHERS THEN
6360 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
6361 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
6362 fnd_msg_pub.add;
6363 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6364
6365 END CP_INCIDENT_SITE_CROSS_VAL;
6366
6367 -- KP API Cleanup; added new proc
6368 -- Procedure to be called when install site Id or CP changes. If
6369 -- Customer Product Id is passed , the install site Id should
6370 -- be the same as Install Base location.
6371
6372 PROCEDURE CP_INSTALL_SITE_CROSS_VAL (
6373 p_parameter_name IN VARCHAR2,
6374 p_install_site_id IN NUMBER,
6375 p_customer_product_id IN NUMBER,
6376 x_return_status OUT NOCOPY varchar2 )
6377 IS
6378 l_dummy VARCHAR2(1);
6379 l_api_name CONSTANT VARCHAR2(30) := 'CP_INSTALL_SITE_CROSS_VAL';
6380 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
6381
6382 BEGIN
6383
6384 x_return_status := FND_API.G_RET_STS_SUCCESS;
6385
6386 SELECT 'x' INTO l_dummy
6387 FROM csi_item_instances a
6388 WHERE a.instance_id = p_customer_product_id
6389 AND a.install_location_type_code = 'HZ_PARTY_SITES'
6390 AND a.install_location_id = p_install_site_id;
6391
6392 EXCEPTION
6393 WHEN NO_DATA_FOUND THEN
6394 x_return_status := FND_API.G_RET_STS_ERROR;
6395 fnd_message.set_name ('CS', 'CS_INVALID_INSTALL_SITE');
6396 fnd_message.set_token('INSTALL_SITE_ID', p_install_site_id);
6397 fnd_message.set_token('CUSTOMER_PRODUCT_ID', p_customer_product_id);
6398 fnd_msg_pub.add;
6399
6400 WHEN OTHERS THEN
6401 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
6402 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
6403 fnd_msg_pub.add;
6404 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6405
6406 END CP_INSTALL_SITE_CROSS_VAL;
6407
6408
6409 -- KP API Cleanup
6410 -- Introduced the res. code cross val proc. for 11.5.10
6411 -- Validate the resolution code to confirm that it is a valid RC for the
6412 -- given mapping criteria: inventory_item_id, incident_type, category_id
6413 -- and problem code
6414 -- Invoke the res. code validation API:
6415 -- cs_sr_res_code_mapping_pkg.vaidate_resolution_code
6416
6417 PROCEDURE Resolution_Code_Cross_Val (
6418 p_parameter_name IN VARCHAR2,
6419 p_resolution_code IN VARCHAR2,
6420 p_problem_code IN VARCHAR2,
6421 p_incident_type_id IN NUMBER,
6422 p_category_id IN NUMBER,
6423 p_inventory_item_id IN NUMBER,
6424 p_inventory_org_id IN NUMBER,
6425 x_return_status OUT NOCOPY VARCHAR2 )
6426 IS
6427 l_dummy VARCHAR2(1);
6428 l_api_name CONSTANT VARCHAR2(30) := 'resolution_code_cross_val';
6429 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
6430
6431 l_rc_rec cs_sr_res_code_mapping_pkg.rescode_search_rec;
6432 lx_msg_count NUMBER;
6433 lx_msg_data VARCHAR2(2000);
6434
6435 BEGIN
6436 x_return_status := FND_API.G_RET_STS_SUCCESS;
6437
6438 -- populate the res. code record type
6439
6440 l_rc_rec.service_request_type_id := p_incident_type_id;
6441 l_rc_rec.inventory_item_id := p_inventory_item_id;
6442 l_rc_rec.organization_id := p_inventory_org_id;
6443 l_rc_rec.product_category_id := p_category_id;
6444 l_rc_rec.problem_code := p_problem_code;
6445
6446 cs_sr_res_code_mapping_pkg.validate_resolution_code (
6447 p_api_version => 1.0,
6448 p_init_msg_list => FND_API.G_TRUE,
6449 p_rescode_criteria_rec => l_rc_rec,
6450 p_resolution_code => p_resolution_code,
6451 x_return_status => x_return_status,
6452 x_msg_count => lx_msg_count,
6453 x_msg_data => lx_msg_data );
6454
6455 if ( x_return_status <> FND_API.G_RET_STS_SUCCESS ) then
6456 -- new message for 11.5.10
6457 -- Resolution code is not valid. Please check the values for the following:
6458 -- Service request type, inventory item, product category and problem code.
6459 fnd_message.set_name ('CS', 'CS_SR_RES_CODE_INVALID');
6460 fnd_message.set_token('API_NAME', l_api_name_full );
6461 fnd_msg_pub.add;
6462 end if;
6463
6464 EXCEPTION
6465 WHEN OTHERS THEN
6466 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
6467 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
6468 fnd_msg_pub.add;
6469 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6470
6471 END Resolution_Code_Cross_Val;
6472
6473 -- KP API Cleanup; added new proc
6474 -- Procedure to be called when SR Status changes. Check if the SR
6475 -- is changed to closed status. If yes then,
6476 -- If there are any open Tasks, with the restrict_flag set to 'Y''
6477 -- raise error.
6478
6479 PROCEDURE Task_Restrict_Close_Cross_Val(
6480 p_incident_id IN NUMBER,
6481 p_status_id IN NUMBER,
6482 x_return_status OUT NOCOPY VARCHAR2 )
6483 IS
6484 l_dummy NUMBER := 0;
6485 l_api_name CONSTANT VARCHAR2(30) := 'TASK_RESTRICT_CLOSE_CROSS_VAL';
6486 l_api_name_full CONSTANT VARCHAR2(70) := G_PKG_NAME||'.'||l_api_name;
6487
6488 l_close_flag VARCHAR2(10);
6489
6490 BEGIN
6491 x_return_status := FND_API.G_RET_STS_SUCCESS;
6492
6493 SELECT close_flag
6494 INTO l_close_flag
6495 FROM cs_incident_statuses_b
6496 WHERE incident_status_id = p_status_id;
6497
6498 IF ( l_close_flag = 'Y' ) THEN
6499 SELECT COUNT(*)
6500 INTO l_dummy
6501 FROM jtf_tasks_b
6502 WHERE source_object_id = p_incident_id
6503 AND source_object_type_code = 'SR'
6504 AND NVL(open_flag,'Y') = 'Y'
6505 AND restrict_closure_flag = 'Y'
6506 AND NVL(deleted_flag,'N') = 'N';
6507
6508 if ( l_dummy > 0 ) then
6509 x_return_status := FND_API.G_RET_STS_ERROR;
6510 -- This service request has open dependent tasks. Please close these
6511 -- tasks before closing the service request.
6512 fnd_message.set_name ('CS', 'CS_SR_CANNOT_CLOSE_SR');
6513 fnd_msg_pub.add;
6514 end if;
6515
6516 END IF;
6517
6518 EXCEPTION
6519 WHEN OTHERS THEN
6520 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
6521 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
6522 fnd_msg_pub.add;
6523 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6524
6525 END TASK_RESTRICT_CLOSE_CROSS_VAL;
6526
6527 -- KP API Cleanup; added new proc
6528 -- -----------------------------------------------------------------------------
6529 -- Modification History
6530 -- Date Name Desc
6531 -- -------- -------- -----------------------------------------------------------
6532 -- 11/15/05 smisra Bug 4105758 and 4432736
6533 -- Put validate_contract_line in comments and used
6534 -- oks_entitlement_pub.get_contract to get list of applicable
6535 -- contracts and compared input value with the list. If input
6536 -- is present in the list, contract is valid, otherwise it is
6537 -- invalid.
6538 -- -------- -------- -----------------------------------------------------------
6539 PROCEDURE CONTRACTS_CROSS_VAL (
6540 p_parameter_name IN VARCHAR2,
6541 p_contract_service_id IN NUMBER,
6542 p_busiproc_id IN NUMBER,
6543 p_request_date IN DATE,
6544 p_inventory_item_id IN NUMBER,
6545 p_inv_org_id IN NUMBER,
6546 p_install_site_id IN NUMBER,
6547 p_customer_product_id IN NUMBER,
6548 p_account_id IN NUMBER,
6549 p_customer_id IN NUMBER,
6550 p_system_id IN NUMBER,
6551 x_return_status OUT NOCOPY varchar2 )
6552 IS
6553 x_dummy VARCHAR2(1);
6554 valid_contract_flag VARCHAR2(1) := 'N';
6555 l_contract_index BINARY_INTEGER;
6556
6557 l_api_name CONSTANT VARCHAR2(30) := 'contracts_cross_val';
6558 l_api_name_full CONSTANT VARCHAR2(70) := G_PKG_NAME||'.'||l_api_name;
6559
6560 -- Parameter to be used to pass to the contracts API.
6561 l_covlevel_tbl OKS_ENTITLEMENTS_PUB.COVLEVEL_TBL_TYPE;
6562 lx_covlevel_tbl OKS_ENTITLEMENTS_PUB.COVLEVEL_TBL_TYPE;
6563
6564 lx_return_status VARCHAR2(5);
6565 lx_msg_count NUMBER;
6566 lx_msg_data VARCHAR2(2000);
6567
6568 l_ent_contracts OKS_ENTITLEMENTS_PUB.get_contop_tbl;
6569 px_inp_rec OKS_ENTITLEMENTS_PUB.get_contin_rec;
6570 l_match_found BOOLEAN;
6571 BEGIN
6572
6573 x_return_status := FND_API.G_RET_STS_SUCCESS;
6574
6575 px_inp_rec.contract_number := NULL;
6576 px_inp_rec.contract_number_modifier := NULL;
6577 px_inp_rec.service_line_id := NULL;
6578 px_inp_rec.party_id := p_customer_id;
6579 px_inp_rec.site_id := p_install_site_id;
6580 px_inp_rec.cust_acct_id := p_account_id;
6581 px_inp_rec.system_id := p_system_id;
6582 px_inp_rec.item_id := p_inventory_item_id;
6583 px_inp_rec.product_id := p_customer_product_id;
6584 px_inp_rec.request_date := p_request_date;
6585 --px_inp_rec.incident_date := p_incident_occurred_date;
6586 --px_inp_rec.severity_id := p_severity_id;
6587 --px_inp_rec.time_zone_id := p_time_zone_id;
6588 px_inp_rec.business_process_id := p_busiproc_id;
6589 px_inp_rec.calc_resptime_flag := 'N';
6590 px_inp_rec.validate_flag := 'Y';
6591 --px_inp_rec.sort_key := 'RSN';
6592 px_inp_rec.dates_in_input_tz := 'N';
6593
6594 OKS_ENTITLEMENTS_PUB.get_contracts
6595 ( p_api_version => 1.0
6596 , p_init_msg_list => fnd_api.g_false
6597 , p_inp_rec => px_inp_rec
6598 , x_return_status => x_return_status
6599 , x_msg_count => lx_msg_count
6600 , x_msg_data => lx_msg_data
6601 , x_ent_contracts => l_ent_contracts
6602 );
6603 IF x_return_status = FND_API.G_RET_STS_SUCCESS
6604 THEN
6605 l_match_found := false;
6606 IF l_ent_contracts.count > 0
6607 THEN
6608 FOR loop_indx in l_ent_contracts.FIRST..l_ent_contracts.LAST
6609 LOOP
6610 IF p_contract_service_id = l_ent_contracts(loop_indx).service_line_id
6611 THEN
6612 l_match_found := true;
6613 EXIT;
6614 END IF;
6615 END LOOP;
6616 END IF;
6617 -- if contract is not found in contract list, set return status to Error
6618 IF l_match_found = false
6619 THEN
6620 x_return_status := FND_API.G_RET_STS_ERROR;
6621 END IF;
6622 END IF;
6623
6624 /*************** when bug 4109990 is fixed, uncomment this part
6625 l_covlevel_tbl(1).covlevel_code := 'OKX_COVITEM';
6626 l_covlevel_tbl(1).covlevel_id := p_inventory_item_id;
6627 l_covlevel_tbl(1).inv_org_id := p_inv_org_id;
6628 l_covlevel_tbl(1).covered_yn := 'N';
6629
6630 l_covlevel_tbl(2).covlevel_code := 'OKX_CUSTPROD';
6631 l_covlevel_tbl(2).covlevel_id := p_customer_product_id;
6632 l_covlevel_tbl(2).inv_org_id := NULL;
6633 l_covlevel_tbl(2).covered_yn := 'N';
6634
6635 l_covlevel_tbl(3).covlevel_code := 'OKX_CUSTACCT';
6636 l_covlevel_tbl(3).covlevel_id := p_account_id;
6637 l_covlevel_tbl(3).inv_org_id := NULL;
6638 l_covlevel_tbl(3).covered_yn := 'N';
6639
6640 l_covlevel_tbl(4).covlevel_code := 'OKX_PARTYSITE';
6641 l_covlevel_tbl(4).covlevel_id := p_install_site_id;
6642 l_covlevel_tbl(4).inv_org_id := NULL;
6643 l_covlevel_tbl(4).covered_yn := 'N';
6644
6645 l_covlevel_tbl(5).covlevel_code := 'OKX_PARTY';
6646 l_covlevel_tbl(5).covlevel_id := p_customer_id;
6647 l_covlevel_tbl(5).inv_org_id := NULL;
6648 l_covlevel_tbl(5).covered_yn := 'N';
6649
6650 l_covlevel_tbl(6).covlevel_code := 'OKX_COVSYST';
6651 l_covlevel_tbl(6).covlevel_id := p_system_id;
6652 l_covlevel_tbl(6).inv_org_id := NULL;
6653 l_covlevel_tbl(6).covered_yn := 'N';
6654
6655 OKS_ENTITLEMENTS_PUB.VALIDATE_CONTRACT_LINE (
6656 p_api_version => 1,
6657 p_init_msg_list => FND_API.G_FALSE,
6658 p_contract_line_id => p_contract_service_id,
6659 p_busiproc_id => p_busiproc_id,
6660 p_request_date => p_request_date,
6661 p_covlevel_tbl_in => l_covlevel_tbl,
6662 p_verify_combination => 'N',
6663 x_return_status => lx_return_status ,
6664 x_msg_count => lx_msg_count ,
6665 x_msg_data => lx_msg_data,
6666 x_covlevel_tbl_out => lx_covlevel_tbl,
6667 x_combination_valid => x_dummy) ;
6668
6669 l_contract_index := lx_covlevel_tbl.FIRST;
6670
6671 IF ( lx_return_status = FND_API.G_RET_STS_SUCCESS ) then
6672 WHILE l_contract_index IS NOT NULL LOOP
6673 IF lx_covlevel_tbl(l_contract_index).covered_yn = 'Y' THEN
6674 valid_contract_flag := 'Y';
6675 END IF;
6676 l_contract_index := lx_covlevel_tbl.NEXT(l_contract_index);
6677 END LOOP;
6678
6679 IF valid_contract_flag = 'N' THEN
6680 x_return_status := FND_API.G_RET_STS_ERROR;
6681 -- new message for 11.5.10
6682 -- Contract is not valid. Please check the values for the following:
6683 -- Service request type, inventory item, instance, account and
6684 -- install site.
6685 --fnd_message.set_name ('CS', 'CS_SR_CONTRACT_INVALID');
6686 --fnd_message.set_token('API_NAME', l_api_name_full );
6687 --fnd_msg_pub.add;
6688 END IF;
6689 ELSE -- For BUG 3665768
6690 x_return_status := FND_API.G_RET_STS_ERROR;
6691 --fnd_message.set_name ('CS', 'CS_SR_CONTRACT_INVALID');
6692 --fnd_message.set_token('API_NAME', l_api_name_full );
6693 --fnd_msg_pub.add;
6694 END IF; -- IF ( lx_return_status = FND_API.G_RET_STS_SUCCESS ) then
6695 *************** when bug 4109990 is fixed, uncomment this part *********/
6696
6697 EXCEPTION
6698 WHEN OTHERS THEN
6699 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
6700 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
6701 fnd_msg_pub.add;
6702 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6703
6704 END CONTRACTS_CROSS_VAL;
6705
6706 -- KP API Cleanup; added new proc
6707 -- Procedure to be called when cp_component_id changes. Check if it has
6708 -- has a valid relation with the inv_component_id
6709
6710 PROCEDURE INV_COMPONENT_CROSS_VAL(
6711 p_parameter_name IN VARCHAR2,
6712 p_inv_component_id IN NUMBER,
6713 p_cp_component_id IN NUMBER,
6714 x_return_status OUT NOCOPY VARCHAR2 )
6715 IS
6716 l_dummy VARCHAR2(1);
6717 l_api_name CONSTANT VARCHAR2(30) := 'Inv_Component_Cross_Val';
6718 l_api_name_full CONSTANT VARCHAR2(70) := G_PKG_NAME||'.'||l_api_name;
6719
6720 BEGIN
6721
6722 x_return_status := FND_API.G_RET_STS_SUCCESS;
6723
6724 SELECT 'X'
6725 INTO l_dummy
6726 FROM CSI_ITEM_INSTANCES
6727 WHERE INSTANCE_ID = p_cp_component_id
6728 AND INVENTORY_ITEM_ID = p_inv_component_id;
6729
6730 EXCEPTION
6731 WHEN NO_DATA_FOUND THEN
6732 -- For bug 3324210 and 3324179
6733 x_return_status := FND_API.G_RET_STS_ERROR;
6734 CS_ServiceRequest_UTIL.Add_Invalid_Argument_Msg(
6735 p_token_an => l_api_name_full,
6736 -- p_token_v => to_char(p_cp_component_id), --3815710
6737 p_token_v => to_char(p_inv_component_id),
6738 p_token_p => p_parameter_name );
6739
6740 WHEN OTHERS THEN
6741 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
6742 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
6743 fnd_msg_pub.add;
6744 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6745
6746 END INV_COMPONENT_CROSS_VAL;
6747
6748 -- KP API Cleanup; added new proc
6749 -- Procedure to be called when cp_subcomponent_id changes. Check if it has
6750 -- has a valid relation with the inv_subcomponent_id
6751
6752 PROCEDURE INV_SUBCOMPONENT_CROSS_VAL(
6753 p_parameter_name IN VARCHAR2,
6754 p_inv_subcomponent_id IN NUMBER,
6755 p_cp_subcomponent_id IN NUMBER,
6756 x_return_status OUT NOCOPY VARCHAR2 )
6757
6758 IS
6759 l_dummy VARCHAR2(1);
6760 l_api_name CONSTANT VARCHAR2(30) := 'Inv_Subcomponent_Cross_Val';
6761 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
6762
6763 BEGIN
6764
6765 x_return_status := FND_API.G_RET_STS_SUCCESS;
6766
6767 SELECT 'X' INTO l_dummy
6768 FROM CSI_ITEM_INSTANCES
6769 WHERE INSTANCE_ID = p_cp_subcomponent_id
6770 AND INVENTORY_ITEM_ID = p_inv_subcomponent_id;
6771
6772 EXCEPTION
6773 WHEN NO_DATA_FOUND THEN
6774 -- For bug 3324210 and 3324179
6775 x_return_status := FND_API.G_RET_STS_ERROR;
6776 CS_ServiceRequest_UTIL.Add_Invalid_Argument_Msg(
6777 p_token_an => l_api_name_full,
6778 p_token_v => to_char(p_cp_subcomponent_id),
6779 p_token_p => p_parameter_name );
6780
6781 WHEN OTHERS THEN
6782 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
6783 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
6784 fnd_msg_pub.add;
6785 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6786
6787 END INV_SUBCOMPONENT_CROSS_VAL;
6788
6789 -- where did this requirement come from?
6790 -- security
6791 -- Added new procedure to set the grants depending on the
6792 -- value of the agent security.
6793 -- C for Custom
6794 -- S for Standard
6795 -- N for None
6796 PROCEDURE SETUP_SR_AGENT_SECURITY (
6797 p_sr_agent_security IN VARCHAR2,
6798 x_return_status OUT NOCOPY VARCHAR2 )
6799 IS
6800 BEGIN
6801 x_return_status := FND_API.G_RET_STS_SUCCESS;
6802 END SETUP_SR_AGENT_SECURITY;
6803
6804
6805 -- Added new function if the responsibility has access to
6806 -- the passed SR type
6807
6808 FUNCTION VALIDATE_INCIDENT_ACCESS (
6809 p_api_name IN VARCHAR2,
6810 p_resp_business_usage IN VARCHAR2,
6811 p_incident_id IN NUMBER )
6812 RETURN BOOLEAN
6813 IS
6814
6815 l_access VARCHAR2(3) := 'N';
6816
6817 BEGIN
6818 IF p_resp_business_usage = 'AGENT' THEN
6819
6820 SELECT 'Y'
6821 INTO l_access
6822 FROM cs_incidents_b_sec
6823 WHERE incident_id = p_incident_id;
6824
6825 ELSE
6826 l_access := 'Y';
6827 END IF;
6828
6829 IF l_access = 'N' THEN
6830 return false;
6831 ELSIF l_access = 'Y' THEN
6832 return true;
6833 END IF;
6834 EXCEPTION
6835 when no_data_found then
6836 return false;
6837 when others then
6838 return false;
6839 END VALIDATE_INCIDENT_ACCESS;
6840
6841 -- end for security
6842
6843 -- DJ API Cleanup; added new proc
6844 -- Procedure to be called when either the inv. component or the cp component
6845 -- changes.
6846 --
6847
6848 PROCEDURE CP_COMP_ID_CROSS_VAL (
6849 p_inv_component_id IN NUMBER,
6850 p_cp_component_id IN NUMBER,
6851 x_return_status OUT NOCOPY VARCHAR2 )
6852 IS
6853 l_dummy NUMBER := 0;
6854 BEGIN
6855 x_return_status := FND_API.G_RET_STS_SUCCESS;
6856 /*
6857 select 1
6858 into l_dummy
6859 from csi_item_instances
6860 where
6861
6862 */
6863
6864 END CP_COMP_ID_CROSS_VAL;
6865
6866 -- DJ API Cleanup
6867 -- Procedure to disallow SR Type change for the following cases:
6868 -- From EAM to Non Eam
6869 -- From Non Eam to EAM
6870
6871 PROCEDURE VALIDATE_TYPE_CHANGE (
6872 p_old_eam_type_flag IN VARCHAR2,
6873 p_new_eam_type_flag IN VARCHAR2,
6874 x_return_status OUT NOCOPY VARCHAR2 )
6875 IS
6876 l_api_name_full VARCHAR2(70) := G_PKG_NAME||'.VALIDATE_TYPE_CHANGE';
6877 BEGIN
6878 if ( p_old_eam_type_flag <> p_new_eam_type_flag ) then
6879 x_return_status := FND_API.G_RET_STS_ERROR;
6880
6881 -- Set different message depending on the nature of the type change
6882 if ( p_old_eam_type_flag = 'Y' ) then
6883 -- new message for 11.5.10
6884 -- The system could not update the Type. The Type cannot be changed from a
6885 -- Maintenance Type to a non-Maintenance Type.
6886 fnd_message.set_name ('CS', 'CS_SR_DISALLOW_TYPE_UPD_1');
6887 fnd_message.set_token('API_NAME', l_api_name_full );
6888 fnd_msg_pub.add;
6889 else
6890 -- new message for 11.5.10
6891 -- The system could not update the Type. The Type cannot be changed from a
6892 -- non-Maintenance Type to a Maintenance Type.
6893 fnd_message.set_name ('CS', 'CS_SR_DISALLOW_TYPE_UPD_2');
6894 fnd_message.set_token('API_NAME', l_api_name_full );
6895 fnd_msg_pub.add;
6896 end if;
6897 else
6898 x_return_status := FND_API.G_RET_STS_SUCCESS;
6899 end if;
6900
6901 EXCEPTION
6902 WHEN OTHERS THEN
6903 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6904
6905 FND_MESSAGE.SET_NAME ('CS', 'CS_API_SR_UNKNOWN_ERROR');
6906 FND_MESSAGE.SET_TOKEN ('P_TEXT',l_api_name_full||'-'||SQLERRM);
6907 FND_MSG_PUB.ADD;
6908
6909 END VALIDATE_TYPE_CHANGE;
6910
6911
6912 -- KP API Cleanup
6913 -- Service request Cross Val procedure
6914
6915 -- -----------------------------------------------------------------------------
6916 -- Modification History
6917 -- Date Name Desc
6918 -- -------- -------- -----------------------------------------------------------
6919 -- 02/28/05 smisra Bug 4083288
6920 -- Passed category_set_id to validate_category_id call.
6921 -- performed validation of category id if category_set_id
6922 -- is changed
6923 -- 03/25/05 smisra Bug 4239975 Modified call to validate_current_serial_number.
6924 -- Now it is called only if both customer product and
6925 -- current serial number are not null and one of them has
6926 -- changed.
6927 -- 05/09/05 smisra add validation of maint_organization_id
6928 -- used new procedure validation_customer_product_id to
6929 -- validate customer product. it takes an addtional parameter
6930 -- maint_organization_id
6931 -- 05/12/05 smisra removed validation of parameter item_serial_number
6932 -- 08/03/05 smisra 1. added validation for owning dept
6933 -- 2. retrieved inv_org_master_org_flag for inv org
6934 -- 3. passed inv_org_master_org_flag to validate_product,
6935 -- validate_maint_organization_id,
6936 -- validate_customer_product_id
6937 -- 08/15/05 smisra called validate product on when maint org changes
6938 -- 12/23/05 smisra Bug 4894942
6939 -- Removed call to contracts_cross_val. Now it is moved to
6940 -- vldt_sr_rec procedure of PVT API.
6941 -- 12/30/05 smisra bug 4773215
6942 -- Removed owner validatation using validate_owner. This validation
6943 -- is done in vldt_sr_rec of PVT API itself so that resource type
6944 -- can be derived based on resource id
6945 -- removed call to validate resource type as it is now being derived
6946 -- based on resource id
6947 -- Removed call to validate support site. From now on, it is
6948 -- derived based onm resource id. Derivation happens in
6949 -- vldt_Sr_rec of PVT API.
6950 -- -----------------------------------------------------------------------------
6951 PROCEDURE SERVICEREQUEST_CROSS_VAL (
6952 p_new_sr_rec IN cs_servicerequest_pvt.service_request_rec_type,
6953 p_old_sr_rec IN cs_servicerequest_pvt.sr_oldvalues_rec_type,
6954 x_cross_val_out_rec OUT NOCOPY sr_cross_val_out_rec_type,
6955 x_return_status OUT NOCOPY VARCHAR2 )
6956 IS
6957 lx_return_status VARCHAR2(1);
6958 l_api_name_full VARCHAR2(70) := G_PKG_NAME||'.SERVICEREQUEST_CROSS_VAL';
6959
6960 -- Local variables used to store the value that is passed to the cross val
6961 -- procedures. This values is populated with the new value if passed, or if
6962 -- G_MISS_XXX is passed, the old values is retrieved and passed
6963 l_problem_code VARCHAR2(30);
6964 l_res_code VARCHAR2(30);
6965 l_sr_type_id NUMBER;
6966 l_inv_item_id NUMBER;
6967 l_inv_org_id NUMBER;
6968 l_category_id NUMBER;
6969 l_cont_srv_id NUMBER; -- contract service id
6970 l_busi_proc_id NUMBER; -- business process id
6971 l_request_date DATE;
6972 l_inst_site_id NUMBER; -- install site id
6973 l_cust_prod_id NUMBER;
6974 l_account_id NUMBER;
6975 l_customer_id NUMBER;
6976 l_system_id NUMBER;
6977 l_status_id NUMBER;
6978 l_inc_loc_id NUMBER; -- incident location id
6979 l_inc_loc_type VARCHAR2(30); -- incident location type 9/19 changes
6980 l_owner_id NUMBER;
6981 l_group_type VARCHAR2(240);
6982 l_owner_grp_id NUMBER; -- owner group id
6983 l_maint_flag VARCHAR2(10); -- EAM flag for SR Type
6984 -- 3303078
6985 l_inv_item_rev VARCHAR2(240); --NUMBER; -- inventory item revision
6986 l_inv_comp_id NUMBER; -- inventory component id
6987 l_cp_comp_id NUMBER;
6988 l_cp_comp_ver VARCHAR2(3); --NUMBER; -- cp component version
6989 l_sup_site_id NUMBER; -- support site id
6990 l_res_type VARCHAR2(240); -- resource type
6991 l_bto_site_id NUMBER; -- bill to site id
6992 l_bto_party_id NUMBER; -- bill to party id
6993 l_sto_site_id NUMBER; -- ship to site id
6994 l_sto_party_id NUMBER; -- ship to party id
6995 l_bto_cont_id NUMBER; -- bill to contact id
6996 l_sto_cont_id NUMBER; -- ship to contact id
6997 l_cust_type VARCHAR2(240); -- customer type
6998 l_bto_acc_id NUMBER; -- bill to account id
6999 l_sto_acc_id NUMBER; -- ship to account id
7000 l_external_ref VARCHAR2(240); -- external reference
7001 l_prod_revision VARCHAR2(240); -- inv. item revision
7002 l_cur_serial VARCHAR2(240); -- current serial number
7003 l_inv_subcomp_id NUMBER; -- inv. subcomponent id
7004 l_cp_subcomp_id NUMBER; -- cp. subcomponent id
7005 l_inv_comp_ver VARCHAR2(240); -- inv. component version
7006 l_inv_scomp_id NUMBER; -- inv. subcomponent id
7007 l_inv_scomp_ver VARCHAR2(240); -- inv. subcomponent version
7008 l_cat_set_id NUMBER; -- category set id
7009 l_bto_site_use NUMBER; -- bill to site use id
7010 l_sto_site_use NUMBER; -- ship to site use id
7011 l_cp_scomp_id NUMBER; -- cp subcomponent id
7012 l_cp_scomp_ver VARCHAR2(3); --NUMBER; -- cp subcomponent version
7013
7014 lx_owner_name VARCHAR2(240); -- used in validate_owner
7015 lx_owner_id NUMBER; -- used in validate_owner
7016 lx_site_use_id NUMBER; -- used in validate_bill_to_ship_to_site
7017
7018 -- 3224828 contracts
7019 l_contract_id NUMBER; -- contract id
7020 l_con_number cs_incidents_all_b.contract_number % type;
7021
7022 -- 3340433
7023 l_inv_change_by_cp VARCHAR2(1):= 'N'; --set when inv_item_id is overwritten by cp
7024 l_inv_id_from_cp NUMBER;
7025 -- 3360274
7026 l_resource_type VARCHAR2(240); -- used in validate_resource_type
7027
7028 l_inv_org_master_org_flag VARCHAR2(1);
7029 l_maint_organization_id cs_incidents_all_b.maint_organization_id % TYPE;
7030 l_owning_dept_id cs_incidents_all_b.owning_department_id % TYPE;
7031
7032 BEGIN
7033 -- Initialize return status to success
7034 x_return_status := FND_API.G_RET_STS_SUCCESS;
7035
7036 -- Fetch the values that need to be used in the validation procedures. If the
7037 -- value is passed to the API, then use the passed in value, if not, use the
7038 -- existing DB value
7039
7040 l_problem_code := get_right_char(
7041 p_new_char_value => p_new_sr_rec.problem_code,
7042 p_old_char_value => p_old_sr_rec.problem_code);
7043 l_sr_type_id := get_right_num(
7044 p_new_num_value => p_new_sr_rec.type_id,
7045 p_old_num_value => p_old_sr_rec.incident_type_id);
7046 l_inv_item_id := get_right_num(
7047 p_new_num_value => p_new_sr_rec.inventory_item_id,
7048 p_old_num_value => p_old_sr_rec.inventory_item_id);
7049 l_inv_org_id := get_right_num(
7050 p_new_num_value => p_new_sr_rec.inventory_org_id,
7051 p_old_num_value => p_old_sr_rec.inv_organization_id);
7052 l_category_id := get_right_num(
7053 p_new_num_value => p_new_sr_rec.category_id,
7054 p_old_num_value => p_old_sr_rec.category_id);
7055 l_res_code := get_right_char(
7056 p_new_char_value => p_new_sr_rec.resolution_code,
7057 p_old_char_value => p_old_sr_rec.resolution_code);
7058 l_cont_srv_id := get_right_num(
7059 p_new_num_value => p_new_sr_rec.contract_service_id,
7060 p_old_num_value => p_old_sr_rec.contract_service_id);
7061 l_request_date := get_right_date(
7062 p_new_date_value => p_new_sr_rec.request_date,
7063 p_old_date_value => p_old_sr_rec.incident_date);
7064 l_inst_site_id := get_right_num(
7065 p_new_num_value => p_new_sr_rec.install_site_id,
7066 p_old_num_value => p_old_sr_rec.install_site_id);
7067 l_cust_prod_id := get_right_num(
7068 p_new_num_value => p_new_sr_rec.customer_product_id,
7069 p_old_num_value => p_old_sr_rec.customer_product_id);
7070 l_account_id := get_right_num(
7071 p_new_num_value => p_new_sr_rec.account_id,
7072 p_old_num_value => p_old_sr_rec.account_id);
7073 l_customer_id := get_right_num(
7074 p_new_num_value => p_new_sr_rec.customer_id,
7075 p_old_num_value => p_old_sr_rec.customer_id);
7076 l_system_id := get_right_num(
7077 p_new_num_value => p_new_sr_rec.system_id,
7078 p_old_num_value => p_old_sr_rec.system_id);
7079 l_status_id := get_right_num(
7080 p_new_num_value => p_new_sr_rec.status_id,
7081 p_old_num_value => p_old_sr_rec.incident_status_id);
7082 l_inc_loc_id := get_right_num(
7083 p_new_num_value => p_new_sr_rec.incident_location_id,
7084 p_old_num_value => p_old_sr_rec.incident_location_id);
7085 l_inc_loc_type := get_right_char(
7086 p_new_char_value => p_new_sr_rec.incident_location_type,
7087 p_old_char_value => p_old_sr_rec.incident_location_type);
7088 l_owner_id := get_right_num(
7089 p_new_num_value => p_new_sr_rec.owner_id,
7090 p_old_num_value => p_old_sr_rec.incident_owner_id);
7091 l_group_type := get_right_char(
7092 p_new_char_value => p_new_sr_rec.group_type,
7093 p_old_char_value => p_old_sr_rec.group_type);
7094 l_owner_grp_id := get_right_num(
7095 p_new_num_value => p_new_sr_rec.owner_group_id,
7096 p_old_num_value => p_old_sr_rec.owner_group_id);
7097 l_maint_flag := get_right_char(
7098 p_new_char_value => p_new_sr_rec.new_type_maintenance_flag,
7099 p_old_char_value => p_new_sr_rec.old_type_maintenance_flag);
7100 l_inv_item_rev := get_right_char(
7101 p_new_char_value => p_new_sr_rec.inv_item_revision,
7102 p_old_char_value => p_old_sr_rec.inv_item_revision);
7103 l_inv_comp_id := get_right_num(
7104 p_new_num_value => p_new_sr_rec.inv_component_id,
7105 p_old_num_value => p_old_sr_rec.inv_component_id);
7106 l_cp_comp_id := get_right_num(
7107 p_new_num_value => p_new_sr_rec.cp_component_id,
7108 p_old_num_value => p_old_sr_rec.cp_component_id);
7109 l_cp_comp_ver := get_right_char(
7110 p_new_char_value => p_new_sr_rec.component_version,
7111 p_old_char_value => p_old_sr_rec.component_version);
7112 l_sup_site_id := get_right_num(
7113 p_new_num_value => p_new_sr_rec.site_id,
7114 p_old_num_value => p_old_sr_rec.site_id);
7115 l_res_type := get_right_char(
7116 p_new_char_value => p_new_sr_rec.resource_type,
7117 p_old_char_value => p_old_sr_rec.resource_type);
7118 l_bto_site_id := get_right_num(
7119 p_new_num_value => p_new_sr_rec.bill_to_site_id,
7120 p_old_num_value => p_old_sr_rec.bill_to_site_id);
7121 l_bto_party_id:= get_right_num(
7122 p_new_num_value => p_new_sr_rec.bill_to_party_id,
7123 p_old_num_value => p_old_sr_rec.bill_to_party_id);
7124 l_sto_site_id := get_right_num(
7125 p_new_num_value => p_new_sr_rec.ship_to_site_id,
7126 p_old_num_value => p_old_sr_rec.ship_to_site_id);
7127 l_sto_party_id:= get_right_num(
7128 p_new_num_value => p_new_sr_rec.ship_to_party_id,
7129 p_old_num_value => p_old_sr_rec.ship_to_party_id);
7130 l_bto_cont_id := get_right_num(
7131 p_new_num_value => p_new_sr_rec.bill_to_contact_id,
7132 p_old_num_value => p_old_sr_rec.bill_to_contact_id);
7133 l_cust_type := get_right_char(
7134 p_new_char_value => p_new_sr_rec.caller_type,
7135 p_old_char_value => p_old_sr_rec.caller_type);
7136 l_sto_cont_id := get_right_num(
7137 p_new_num_value => p_new_sr_rec.ship_to_contact_id,
7138 p_old_num_value => p_old_sr_rec.ship_to_contact_id);
7139 l_bto_acc_id := get_right_num(
7140 p_new_num_value => p_new_sr_rec.bill_to_account_id,
7141 p_old_num_value => p_old_sr_rec.bill_to_account_id);
7142 l_sto_acc_id := get_right_num(
7143 p_new_num_value => p_new_sr_rec.ship_to_account_id,
7144 p_old_num_value => p_old_sr_rec.ship_to_account_id);
7145 l_external_ref := get_right_char(
7146 p_new_char_value => p_new_sr_rec.external_reference,
7147 p_old_char_value => p_old_sr_rec.external_reference);
7148 l_prod_revision:= get_right_char(
7149 p_new_char_value => p_new_sr_rec.product_revision,
7150 p_old_char_value => p_old_sr_rec.product_revision);
7151 l_cur_serial := get_right_char(
7152 p_new_char_value => p_new_sr_rec.current_serial_number,
7153 p_old_char_value => p_old_sr_rec.current_serial_number);
7154 l_inv_subcomp_id := get_right_num(
7155 p_new_num_value => p_new_sr_rec.inv_subcomponent_id,
7156 p_old_num_value => p_old_sr_rec.inv_subcomponent_id);
7157 l_cp_subcomp_id := get_right_num(
7158 p_new_num_value => p_new_sr_rec.cp_subcomponent_id,
7159 p_old_num_value => p_old_sr_rec.cp_subcomponent_id);
7160 l_inv_comp_ver := get_right_char(
7161 p_new_char_value => p_new_sr_rec.inv_component_version,
7162 p_old_char_value => p_old_sr_rec.inv_component_version);
7163 l_inv_scomp_id := get_right_num(
7164 p_new_num_value => p_new_sr_rec.inv_subcomponent_id,
7165 p_old_num_value => p_old_sr_rec.inv_subcomponent_id);
7166 l_inv_scomp_ver:= get_right_char(
7167 p_new_char_value => p_new_sr_rec.inv_subcomponent_version,
7168 p_old_char_value => p_old_sr_rec.inv_subcomponent_version );
7169 l_cat_set_id := get_right_num(
7170 p_new_num_value => p_new_sr_rec.category_set_id,
7171 p_old_num_value => p_old_sr_rec.category_set_id);
7172 l_cp_scomp_id := get_right_num(
7173 p_new_num_value => p_new_sr_rec.cp_subcomponent_id,
7174 p_old_num_value => p_old_sr_rec.cp_subcomponent_id);
7175 l_bto_site_use := get_right_num(
7176 p_new_num_value => p_new_sr_rec.bill_to_site_use_id,
7177 p_old_num_value => p_old_sr_rec.bill_to_site_use_id);
7178 l_sto_site_use := get_right_num(
7179 p_new_num_value => p_new_sr_rec.ship_to_site_use_id,
7180 p_old_num_value => p_old_sr_rec.ship_to_site_use_id);
7181 l_cp_scomp_ver := get_right_char(
7182 p_new_char_value => p_new_sr_rec.subcomponent_version,
7183 p_old_char_value => p_old_sr_rec.subcomponent_version);
7184 l_maint_organization_id := get_right_num(
7185 p_new_num_value => p_new_sr_rec.maint_organization_id,
7186 p_old_num_value => p_old_sr_rec.maint_organization_id);
7187 l_owning_dept_id := get_right_num
7188 ( p_new_num_value => p_new_sr_rec.owning_dept_id
7189 , p_old_num_value => p_old_sr_rec.owning_department_id
7190 );
7191
7192 -- 3224898 contracts
7193 l_contract_id := get_right_num(
7194 p_new_num_value => p_new_sr_rec.contract_id,
7195 p_old_num_value => p_old_sr_rec.contract_id);
7196 l_resource_type := get_right_char(
7197 p_new_char_value => p_new_sr_rec.resource_type,
7198 p_old_char_value => p_old_sr_rec.resource_type);
7199
7200
7201
7202 -- Start the cross validation checks and call outs
7203 -- this is done to inv_org_master_org_flag for further validation
7204 IF l_inv_org_id IS NOT NULL
7205 THEN
7206 CS_ServiceRequest_UTIL.Validate_Inventory_Org
7207 ( p_api_name => 'CS_SERVICEREQUEST_UTIL.servicerequest_cross_val'
7208 , p_parameter_name => 'Inventory Organization'
7209 , p_inv_org_id => l_inv_org_id
7210 , x_inv_org_master_org_flag => l_inv_org_master_org_flag
7211 , x_return_status => lx_return_status
7212 );
7213 END IF;
7214 -- validate maintenance organization id
7215 IF l_maint_organization_id IS NOT NULL AND
7216 (l_maint_organization_id <> NVL(p_old_sr_rec.maint_organization_id,-1) OR
7217 NVL(l_inv_org_id,-1) <> NVL(p_old_sr_rec.inv_organization_id,-1) )
7218 THEN
7219 validate_maint_organization_id
7220 ( p_maint_organization_id => l_maint_organization_id
7221 , p_inventory_org_id => l_inv_org_id
7222 , p_inv_org_master_org_flag => l_inv_org_master_org_flag
7223 , x_return_status => lx_return_status
7224 );
7225 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7226 x_return_status := FND_API.G_RET_STS_ERROR;
7227 RETURN;
7228 END IF;
7229 END IF;
7230 --
7231 IF l_owning_dept_id IS NOT NULL AND
7232 (l_owning_dept_id <> NVL(p_old_sr_rec.owning_department_id ,-9) OR
7233 NVL(l_maint_organization_id,-9) <> NVL(p_old_sr_rec.maint_organization_id,-9))
7234 THEN
7235 CS_ServiceRequest_UTIL.Validate_Owning_department
7236 ( p_api_name => 'CS_SERVICEREQUEST_UTIL.validate_owning_department',
7237 p_parameter_name => 'Owning Department',
7238 p_inv_org_id => l_maint_organization_id,
7239 p_owning_dept_id => l_owning_dept_id,
7240 p_maintenance_flag => l_maint_flag,
7241 x_return_status => lx_return_status
7242 );
7243 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS)
7244 THEN
7245 x_return_status := FND_API.G_RET_STS_ERROR;
7246 RETURN;
7247 END IF;
7248 END IF;
7249 --
7250 /* For bug 3340433 - moved validate_product and validate_customer_product
7251 before the validations which uses inventory_item_id */
7252 -- Inventory item cross validation
7253 IF ((p_new_sr_rec.inventory_org_id <> FND_API.G_MISS_NUM) AND
7254 (nvl(p_new_sr_rec.inventory_org_id,-99) <>
7255 nvl(p_old_sr_rec.inv_organization_id,-99)))
7256 OR
7257 ((p_new_sr_rec.inventory_item_id <> FND_API.G_MISS_NUM) AND
7258 (nvl(p_new_sr_rec.inventory_item_id,-99) <>
7259 nvl(p_old_sr_rec.inventory_item_id,-99)))
7260 OR
7261 ((p_new_sr_rec.customer_product_id <> FND_API.G_MISS_NUM) AND
7262 (nvl(p_new_sr_rec.customer_product_id,-99) <>
7263 nvl(p_old_sr_rec.customer_product_id,-99))) OR
7264 NVL(l_maint_organization_id,-99) <> NVL(p_old_sr_rec.maint_organization_id,-99)
7265 THEN
7266 if (l_inv_item_id IS NOT NULL and l_inv_item_id <> FND_API.G_MISS_NUM) then
7267 VALIDATE_PRODUCT (
7268 p_api_name => NULL,
7269 p_parameter_name => 'inventory_item_id',
7270 p_inventory_item_id => l_inv_item_id,
7271 p_inventory_org_id => l_inv_org_id,
7272 p_maintenance_flag => l_maint_flag,
7273 p_maint_organization_id => l_maint_organization_id,
7274 p_inv_org_master_org_flag => l_inv_org_master_org_flag,
7275 x_return_status => lx_return_status );
7276
7277 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7278 x_return_status := FND_API.G_RET_STS_ERROR;
7279 RETURN;
7280 END IF;
7281 END IF;
7282 END IF; -- validate inventory item end if
7283
7284
7285
7286
7287 --- Validate customer product
7288 IF l_cust_prod_id IS NOT NULL AND
7289 ( l_cust_prod_id <> NVL(p_old_sr_rec.customer_product_id,-1) OR
7290 NVL(l_inv_item_id,-1) <> NVL(p_old_sr_rec.inventory_item_id ,-1) OR
7291 NVL(l_inv_org_id ,-1) <> NVL(p_old_sr_rec.inv_organization_id,-1) OR
7292 NVL(l_maint_organization_id,-1) <> NVL(p_old_sr_rec.maint_organization_id,-1))
7293 THEN
7294 validate_customer_product_id
7295 ( p_customer_product_id => l_cust_prod_id
7296 , p_customer_id => l_customer_id
7297 , p_inventory_item_id => l_inv_id_from_cp
7298 , p_inventory_org_id => l_inv_org_id
7299 , p_maint_organization_id => l_maint_organization_id
7300 , p_inv_org_master_org_flag => l_inv_org_master_org_flag
7301 , x_return_status => lx_return_status
7302 );
7303
7304 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7305 x_return_status := FND_API.G_RET_STS_ERROR;
7306 RETURN;
7307 END IF;
7308
7309 -- For bug 3340433
7310 if (nvl(l_inv_id_from_cp,-99) <> nvl(l_inv_item_id,-99) ) then
7311 -- For bug 3586812
7312 IF l_inv_item_id IS NOT NULL THEN
7313 Add_Param_Ignored_Msg(
7314 p_token_an => l_api_name_full,
7315 p_token_ip => 'p_inventory_item_id' );
7316 END IF;
7317 l_inv_item_id := l_inv_id_from_cp;
7318 l_inv_change_by_cp := 'Y';
7319 end if;
7320
7321 END IF; -- validate customer product end if
7322
7323
7324
7325 -- Problem code cross validation
7326 -- Validate problem code if any of the following changes: type, category or
7327 -- item
7328 IF ((p_new_sr_rec.type_id <> FND_API.G_MISS_NUM) AND
7329 (nvl(p_new_sr_rec.type_id,-99) <>
7330 nvl(p_old_sr_rec.incident_type_id,-99)))
7331 OR
7332 ((p_new_sr_rec.problem_code <> FND_API.G_MISS_CHAR) AND
7333 (nvl(p_new_sr_rec.problem_code,-99) <>
7334 nvl(p_old_sr_rec.problem_code,-99)))
7335 OR
7336 ((p_new_sr_rec.category_id <> FND_API.G_MISS_NUM) AND
7337 (nvl(p_new_sr_rec.category_id,-99) <>
7338 nvl(p_old_sr_rec.category_id,-99)))
7339 OR
7340 ((p_new_sr_rec.inventory_item_id <> FND_API.G_MISS_NUM) AND
7341 (nvl(p_new_sr_rec.inventory_item_id,-99) <>
7342 nvl(p_old_sr_rec.inventory_item_id,-99)))
7343 OR ( l_inv_change_by_cp = 'Y')
7344 THEN
7345 if ( l_problem_code IS NOT NULL and l_problem_code <> FND_API.G_MISS_CHAR ) then
7346 VALIDATE_PROBLEM_CODE (
7347 p_api_name => NULL,
7348 p_parameter_name => 'problem code',
7349 p_problem_code => l_problem_code,
7350 p_incident_type_id => l_sr_type_id,
7351 p_inventory_item_id => l_inv_item_id,
7352 p_inventory_org_id => l_inv_org_id,
7353 p_category_id => l_category_id,
7354 x_return_status => lx_return_status );
7355
7356 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7357 x_return_status := FND_API.G_RET_STS_ERROR;
7358 RETURN;
7359 END IF;
7360 END IF; -- if ( l_problem_code IS NULL or l_problem_code <> FND_API
7361 END IF; -- validate proble code end if
7362
7363 -- Resolution code cross validation
7364 -- Validat resolution code if any of the following changes: type, category,
7365 -- item or problem code
7366 IF ((p_new_sr_rec.type_id <> FND_API.G_MISS_NUM) AND
7367 (nvl(p_new_sr_rec.type_id,-99) <>
7368 nvl(p_old_sr_rec.incident_type_id,-99)))
7369 OR
7370 ((p_new_sr_rec.category_id <> FND_API.G_MISS_NUM) AND
7371 (nvl(p_new_sr_rec.category_id,-99) <>
7372 nvl(p_old_sr_rec.category_id,-99)))
7373 OR
7374 ((p_new_sr_rec.inventory_item_id <> FND_API.G_MISS_NUM) AND
7375 (nvl(p_new_sr_rec.inventory_item_id,-99) <>
7376 nvl(p_old_sr_rec.inventory_item_id,-99)))
7377 OR
7378 ((p_new_sr_rec.problem_code <> FND_API.G_MISS_CHAR) AND
7379 (nvl(p_new_sr_rec.problem_code,-99) <>
7380 nvl(p_old_sr_rec.problem_code,-99)))
7381 OR
7382 ((p_new_sr_rec.resolution_code <> FND_API.G_MISS_CHAR) AND
7383 (nvl(p_new_sr_rec.resolution_code,-99) <>
7384 nvl(p_old_sr_rec.resolution_code,-99)))
7385 OR ( l_inv_change_by_cp = 'Y')
7386 THEN
7387
7388 if ( l_res_code IS NOT NULL and l_res_code <> FND_API.G_MISS_CHAR ) then
7389 RESOLUTION_CODE_CROSS_VAL (
7390 p_parameter_name => 'problem code',
7391 p_resolution_code => l_res_code,
7392 p_problem_code => l_problem_code,
7393 p_incident_type_id => l_sr_type_id,
7394 p_category_id => l_category_id,
7395 p_inventory_item_id => l_inv_item_id,
7396 p_inventory_org_id => l_inv_org_id,
7397 x_return_status => lx_return_status );
7398
7399 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7400 x_return_status := FND_API.G_RET_STS_ERROR;
7401 RETURN;
7402 END IF;
7403 END IF; -- if ( l_res_code IS NOT NULL or l_res_code <> FND_API
7404
7405 END IF; -- validate resolution code end if
7406
7407 -- contracts cross val
7408 -- Validate contract if any one of the following changes: type, install site,
7409 -- inv. item, customer product, account, customer or system
7410 -- Need to perform the validation only if there is a value for the contract
7411 -- service id. That is the reason the if condition has the contract service
7412 -- id check as well
7413 x_cross_val_out_rec.contract_service_id_valid := 'Y';
7414 /* smisra 12/20/05 Bug 4894942
7415 Now this validation is called from vldt_sr_rec
7416 IF ((nvl(p_new_sr_rec.install_site_id,-99) <> FND_API.G_MISS_NUM) AND
7417 (nvl(p_new_sr_rec.install_site_id,-99) <>
7418 nvl(p_old_sr_rec.install_site_id,-99)))
7419 OR
7420 ((p_new_sr_rec.type_id <> FND_API.G_MISS_NUM) AND
7421 (nvl(p_new_sr_rec.type_id,-99) <>
7422 nvl(p_old_sr_rec.incident_type_id,-99)))
7423 OR
7424 ((nvl(p_new_sr_rec.inventory_item_id,-99) <> FND_API.G_MISS_NUM) AND
7425 (nvl(p_new_sr_rec.inventory_item_id,-99) <>
7426 nvl(p_old_sr_rec.inventory_item_id,-99)))
7427 OR
7428 ((nvl(p_new_sr_rec.customer_product_id,-99) <> FND_API.G_MISS_NUM) AND
7429 (nvl(p_new_sr_rec.customer_product_id,-99) <>
7430 nvl(p_old_sr_rec.customer_product_id,-99)))
7431 OR
7432 ((nvl(p_new_sr_rec.account_id,-99) <> FND_API.G_MISS_NUM) AND
7433 (nvl(p_new_sr_rec.account_id,-99) <> nvl(p_old_sr_rec.account_id,-99)))
7434 OR
7435 ((p_new_sr_rec.customer_id <> FND_API.G_MISS_NUM) AND
7436 (nvl(p_new_sr_rec.customer_id,-99) <> nvl(p_old_sr_rec.customer_id,-99)))
7437 OR
7438 ((nvl(p_new_sr_rec.system_id,-99) <> FND_API.G_MISS_NUM) AND
7439 (nvl(p_new_sr_rec.system_id,-99) <> nvl(p_old_sr_rec.system_id,-99)))
7440 -- 3224898 contracts
7441 OR
7442 ((nvl(p_new_sr_rec.contract_id,-99) <> FND_API.G_MISS_NUM) AND
7443 (nvl(p_new_sr_rec.contract_id,-99) <> nvl(p_old_sr_rec.contract_id,-99)))
7444 OR
7445 ((nvl(p_new_sr_rec.contract_service_id,-99) <> FND_API.G_MISS_NUM) AND
7446 (nvl(p_new_sr_rec.contract_service_id,-99) <> nvl(p_old_sr_rec.contract_service_id,-99)))
7447 OR ( l_inv_change_by_cp = 'Y')
7448 THEN
7449 lx_return_status := FND_API.G_RET_STS_SUCCESS;
7450
7451 if ( l_cont_srv_id IS NOT NULL and l_cont_srv_id <> FND_API.G_MISS_NUM ) then
7452 begin
7453 select business_process_id
7454 into l_busi_proc_id
7455 from cs_incident_types_b
7456 where incident_type_id = l_sr_type_id;
7457 exception
7458 when no_data_found then
7459 raise fnd_api.g_exc_unexpected_error;
7460 -- Invalid type. Given type is either end dated or does not exist
7461 -- as a valid type.
7462 fnd_message.set_name ('CS', 'CS_SR_INVALID_TYPE');
7463 fnd_message.set_token('API_NAME', l_api_name_full);
7464 fnd_msg_pub.ADD;
7465 lx_return_status := FND_API.G_RET_STS_ERROR;
7466 end;
7467
7468 if ( lx_return_status = FND_API.G_RET_STS_SUCCESS ) then
7469
7470 -- 3224898 contracts
7471 Validate_Contract_Service_Id(
7472 p_api_name => l_api_name_full,
7473 p_parameter_name => 'p_contract_service_id',
7474 p_contract_service_id => l_cont_srv_id,
7475 x_contract_id => l_contract_id,
7476 x_contract_number => l_con_number,
7477 x_return_status => lx_return_status);
7478
7479 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7480 -- x_return_status := FND_API.G_RET_STS_ERROR;
7481 x_cross_val_out_rec.contract_service_id_valid := 'N';
7482 -- RETURN;
7483 ELSE
7484 x_cross_val_out_rec.contract_id := l_contract_id;
7485 x_cross_val_out_rec.contract_number := l_con_number;
7486 CONTRACTS_CROSS_VAL (
7487 p_parameter_name => 'contract_service_id',
7488 p_contract_service_id => l_cont_srv_id,
7489 p_busiproc_id => l_busi_proc_id,
7490 p_request_date => l_request_date,
7491 p_inventory_item_id => l_inv_item_id,
7492 p_inv_org_id => l_inv_org_id,
7493 p_install_site_id => l_inst_site_id,
7494 p_customer_product_id => l_cust_prod_id,
7495 p_account_id => l_account_id,
7496 p_customer_id => l_customer_id,
7497 p_system_id => l_system_id,
7498 x_return_status => lx_return_status );
7499
7500
7501 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS)
7502 THEN
7503 --x_return_status := FND_API.G_RET_STS_ERROR;
7504 lx_return_status := FND_API.G_RET_STS_SUCCESS;
7505 x_cross_val_out_rec.contract_service_id_valid := 'N';
7506 x_cross_val_out_rec.contract_id := NULL;
7507 x_cross_val_out_rec.contract_number := NULL;
7508 --RETURN;
7509 END IF;
7510 END IF; -- end of else after validate_contract_service_id procedure
7511 END IF; -- if ( lx_return_status = FND_API.G_RET_STS_SUCCESS ) then Business process process id else
7512 END IF; -- if ( l_cont_srv_ind IS NOT NULL or l_cont_srv_ind
7513 END IF; -- validate contracts end if
7514 *********/
7515
7516 -- Tasks restrict close cross val
7517 -- When closing a SR, if there are any open tasks with the task restrict
7518 -- closure flag set to Y, then do not allow the closure of the SR.
7519 IF ( p_new_sr_rec.status_id <> FND_API.G_MISS_NUM ) AND
7520 ( nvl(p_new_sr_rec.status_id,-99) <>
7521 nvl(p_old_sr_rec.incident_status_id,-99) )
7522 THEN
7523
7524 TASK_RESTRICT_CLOSE_CROSS_VAL (
7525 p_incident_id => p_old_sr_rec.incident_id,
7526 p_status_id => l_status_id,
7527 x_return_status => lx_return_status );
7528 END IF;
7529
7530 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7531 x_return_status := FND_API.G_RET_STS_ERROR;
7532 RETURN;
7533 END IF;
7534
7535 -- Incident Location cross val
7536 -- 9/19 changes.
7537 /* Commented out , as the SR UI , nor other UI's are doing this validation
7538
7539 IF ( p_new_sr_rec.incident_location_id <> FND_API.G_MISS_NUM ) AND
7540 (nvl(p_new_sr_rec.incident_location_id,-99) <>
7541 nvl(p_old_sr_rec.incident_location_id,-99))
7542 OR
7543 ((p_new_sr_rec.customer_product_id <> FND_API.G_MISS_NUM) AND
7544 (nvl(p_new_sr_rec.customer_product_id,-99) <>
7545 nvl(p_old_sr_rec.customer_product_id,-99)))
7546 THEN
7547 IF l_cust_prod_id <> NULL THEN
7548
7549 CP_INCIDENT_SITE_CROSS_VAL (
7550 p_parameter_name => 'incident_location_id',
7551 p_incident_location_id => l_inc_loc_id,
7552 p_customer_product_id => l_cust_prod_id,
7553 x_return_status => lx_return_status );
7554 ELSE
7555
7556 Validate_Inc_Location_Id (
7557 p_api_name => NULL,
7558 p_parameter_name => 'incident_location_id',
7559 p_incident_location_id => p_new_sr_rec.incident_location_id,
7560 p_incident_location_type => l_inc_loc_type,
7561 x_return_status => lx_return_status );
7562
7563 END IF;
7564 END IF;
7565
7566 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7567 x_return_status := FND_API.G_RET_STS_ERROR;
7568 RETURN;
7569 END IF;
7570 */
7571
7572 --- Install site cross val
7573
7574 IF ( p_new_sr_rec.install_site_id <> FND_API.G_MISS_NUM ) AND
7575 (nvl(p_new_sr_rec.install_site_id,-99) <>
7576 nvl(p_old_sr_rec.install_site_id,-99))
7577 OR
7578 ((p_new_sr_rec.customer_product_id <> FND_API.G_MISS_NUM) AND
7579 (nvl(p_new_sr_rec.customer_product_id,-99) <>
7580 nvl(p_old_sr_rec.customer_product_id,-99)))
7581 THEN
7582 -- For bug 3342410 - included the cust_prod_id check
7583 if ( l_inst_site_id IS NOT NULL and l_inst_site_id <> FND_API.G_MISS_NUM )AND
7584 ( l_cust_prod_id IS NOT NULL and l_cust_prod_id <> FND_API.G_MISS_NUM) then
7585 CP_INSTALL_SITE_CROSS_VAL (
7586 p_parameter_name => 'install site id',
7587 p_install_site_id => l_inst_site_id,
7588 p_customer_product_id => l_cust_prod_id,
7589 x_return_status => lx_return_status );
7590 END IF;
7591 END IF;
7592 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7593 x_return_status := FND_API.G_RET_STS_ERROR;
7594 RETURN;
7595 END IF;
7596
7597 -- Task owner cross val. When SR Type changes, return back a warning message
7598 -- that the change may invalidate some task owners.
7599 IF ((p_new_sr_rec.type_id <> FND_API.G_MISS_NUM) AND
7600 (nvl(p_new_sr_rec.type_id,-99) <>
7601 nvl(p_old_sr_rec.incident_type_id,-99)))
7602 THEN
7603
7604 TASK_OWNER_CROSS_VAL (
7605 p_incident_id => p_old_sr_rec.incident_id,
7606 x_return_status => lx_return_status );
7607
7608 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7609 x_return_status := FND_API.G_RET_STS_ERROR;
7610 RETURN;
7611 END IF;
7612 END IF; -- task owner cross val
7613
7614
7615
7616 -- Inventory item revision cross val
7617 -- Validate item revision when any of the following changes: item
7618 -- 3303078 inv_item_revision should be G_MISS_CHAR
7619 IF ((p_new_sr_rec.inventory_item_id <> FND_API.G_MISS_NUM) AND
7620 (nvl(p_new_sr_rec.inventory_item_id,-99) <>
7621 nvl(p_old_sr_rec.inventory_item_id,-99)))
7622 OR
7623 ((p_new_sr_rec.inv_item_revision <> FND_API.G_MISS_CHAR) AND
7624 (nvl(p_new_sr_rec.inv_item_revision,-99) <>
7625 nvl(p_old_sr_rec.inv_item_revision,-99)))
7626 OR ( l_inv_change_by_cp = 'Y')
7627
7628 THEN
7629 if ( l_inv_item_rev IS NOT NULL and l_inv_item_rev <> FND_API.G_MISS_CHAR ) then
7630 VALIDATE_INV_ITEM_REV (
7631 p_api_name => NULL,
7632 p_parameter_name => 'inventory item revision',
7633 p_inv_item_revision => l_inv_item_rev,
7634 p_inventory_item_id => l_inv_item_id,
7635 p_inventory_org_id => l_inv_org_id,
7636 x_return_status => lx_return_status );
7637
7638 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7639 x_return_status := FND_API.G_RET_STS_ERROR;
7640 RETURN;
7641 END IF;
7642 END IF;
7643 END IF; -- validate item revision end if
7644
7645 --- inventory component validation
7646
7647 IF ((p_new_sr_rec.inventory_item_id <> FND_API.G_MISS_NUM) AND
7648 (nvl(p_new_sr_rec.inventory_item_id,-99) <>
7649 nvl(p_old_sr_rec.inventory_item_id,-99)))
7650 OR
7651 ((p_new_sr_rec.inv_component_id <> FND_API.G_MISS_NUM) AND
7652 (nvl(p_new_sr_rec.inv_component_id,-99) <>
7653 nvl(p_old_sr_rec.inv_component_id,-99)))
7654 OR ( l_inv_change_by_cp = 'Y')
7655 THEN
7656
7657
7658 if ( l_inv_comp_id IS NOT NULL and l_inv_comp_id <> FND_API.G_MISS_NUM ) then
7659 VALIDATE_INV_COMP_ID (
7660 p_api_name => NULL,
7661 p_parameter_name => 'inventory component id',
7662 p_inv_component_id => l_inv_comp_id,
7663 p_inventory_item_id => l_inv_item_id,
7664 p_inventory_org_id => l_inv_org_id,
7665 x_return_status => lx_return_status );
7666
7667 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7668 x_return_status := FND_API.G_RET_STS_ERROR;
7669 RETURN;
7670 END IF;
7671 END IF;
7672 END IF; -- validate item component end if
7673
7674 -- Validate inv subcomponent smisra 12/21/03
7675 -- Made changes as one of the condition was missed out. On update even when the
7676 -- inv subsomp id had null the API will validate it. corected the code for this.
7677
7678 IF ((p_new_sr_rec.inv_subcomponent_id <> FND_API.G_MISS_NUM) AND
7679 (nvl(p_new_sr_rec.inv_subcomponent_id, -99) <>
7680 nvl(p_old_sr_rec.inv_subcomponent_id,-99)))
7681 OR
7682 ((p_new_sr_rec.inv_component_id <> FND_API.G_MISS_NUM) AND
7683 (nvl(p_new_sr_rec.inv_component_id,-99) <>
7684 nvl(p_old_sr_rec.inv_component_id,-99)))
7685 OR
7686 ((p_new_sr_rec.inventory_org_id <> FND_API.G_MISS_NUM) AND
7687 (nvl(p_new_sr_rec.inventory_org_id,-99) <>
7688 nvl(p_old_sr_rec.inv_organization_id,-99)))
7689 THEN
7690
7691 if ( l_inv_subcomp_id IS NOT NULL and l_inv_subcomp_id <> FND_API.G_MISS_NUM ) then
7692
7693 CS_ServiceRequest_UTIL.Validate_Inv_SubComp_Id(
7694 p_api_name => NULL,
7695 p_parameter_name => 'p_inv_subcomponent_id',
7696 p_inventory_org_id => l_inv_org_id,
7697 p_inv_subcomponent_id => l_inv_subcomp_id,
7698 p_inv_component_id => l_inv_comp_id,
7699 x_return_status => lx_return_status );
7700
7701 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7702 x_return_status := FND_API.G_RET_STS_ERROR;
7703 RETURN;
7704 END IF;
7705 END IF;
7706 END IF;
7707
7708
7709
7710 --- Validate CP component id
7711 IF ((p_new_sr_rec.inv_component_id <> FND_API.G_MISS_NUM) AND
7712 (nvl(p_new_sr_rec.inv_component_id,-99) <>
7713 nvl(p_old_sr_rec.inv_component_id,-99)))
7714 OR ((p_new_sr_rec.cp_component_id <> FND_API.G_MISS_NUM) AND
7715 (nvl(p_new_sr_rec.cp_component_id,-99) <>
7716 nvl(p_old_sr_rec.cp_component_id,-99)))
7717 THEN
7718 if ( l_cp_comp_id IS NOT NULL and l_cp_comp_id <> FND_API.G_MISS_NUM ) then
7719 CP_COMP_ID_CROSS_VAL (
7720 p_inv_component_id => l_inv_comp_id,
7721 p_cp_component_id => l_cp_comp_id,
7722 x_return_status => lx_return_status );
7723
7724 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7725 x_return_status := FND_API.G_RET_STS_ERROR;
7726 RETURN;
7727 END IF;
7728 END IF;
7729 END IF; -- validate cp component id end if
7730
7731 ---- Validate_Bill_To_Site
7732
7733 IF ((l_bto_site_id <> FND_API.G_MISS_NUM AND l_bto_site_id IS NOT NULL))
7734 THEN
7735 IF (l_bto_party_id = FND_API.G_MISS_NUM OR l_bto_party_id IS NULL) THEN
7736 fnd_message.set_name ('CS', 'CS_SR_PARENT_CHILD_CHECK');
7737 fnd_message.set_token ('CHILD_PARAM','bill_to_site_id');
7738 fnd_message.set_token ('PARENT_PARAM','bill_to_party_id');
7739 fnd_msg_pub.ADD;
7740 x_return_status := FND_API.G_RET_STS_ERROR;
7741 RETURN;
7742 END IF;
7743 END IF;
7744 IF ((p_new_sr_rec.bill_to_party_id <> FND_API.G_MISS_NUM) AND
7745 (nvl(p_new_sr_rec.bill_to_party_id,-99) <>
7746 nvl(p_old_sr_rec.bill_to_party_id,-99)))
7747 OR
7748 ((p_new_sr_rec.bill_to_site_id <> FND_API.G_MISS_NUM) AND
7749 (nvl(p_new_sr_rec.bill_to_site_id,-99) <>
7750 nvl(p_old_sr_rec.bill_to_site_id,-99)))
7751 THEN
7752
7753 if ( l_bto_site_id IS NOT NULL and l_bto_site_id <> FND_API.G_MISS_NUM ) then
7754 VALIDATE_BILL_TO_SHIP_TO_SITE (
7755 p_api_name => NULL,
7756 p_parameter_name => 'bill to site id',
7757 p_bill_to_site_id => l_bto_site_id,
7758 p_bill_to_party_id => l_bto_party_id,
7759 p_site_use_type => 'BILL_TO',
7760 x_site_use_id => x_cross_val_out_rec.bill_to_site_use_id,
7761 x_return_status => lx_return_status );
7762
7763 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7764 x_return_status := FND_API.G_RET_STS_ERROR;
7765 RETURN;
7766 END IF;
7767 END IF;
7768 END IF; -- validate bill to site id end if
7769
7770 ---- Validate_ship_to_Site
7771
7772 IF ((l_sto_site_id <> FND_API.G_MISS_NUM AND l_sto_site_id IS NOT NULL))
7773 THEN
7774 IF (l_sto_party_id = FND_API.G_MISS_NUM OR l_sto_party_id IS NULL) THEN
7775 fnd_message.set_name ('CS', 'CS_SR_PARENT_CHILD_CHECK');
7776 fnd_message.set_token ('CHILD_PARAM','ship_to_site_id');
7777 fnd_message.set_token ('PARENT_PARAM','ship_to_party_id');
7778 fnd_msg_pub.ADD;
7779 x_return_status := FND_API.G_RET_STS_ERROR;
7780 RETURN;
7781 END IF;
7782 END IF;
7783
7784 IF ((p_new_sr_rec.ship_to_party_id <> FND_API.G_MISS_NUM) AND
7785 (nvl(p_new_sr_rec.ship_to_party_id,-99) <>
7786 nvl(p_old_sr_rec.ship_to_party_id,-99)))
7787 OR
7788 ((p_new_sr_rec.ship_to_site_id <> FND_API.G_MISS_NUM) AND
7789 (nvl(p_new_sr_rec.ship_to_site_id,-99) <>
7790 nvl(p_old_sr_rec.ship_to_site_id,-99)))
7791 THEN
7792
7793 if ( l_sto_site_id IS NOT NULL and l_sto_site_id <> FND_API.G_MISS_NUM ) then
7794 VALIDATE_BILL_TO_SHIP_TO_SITE (
7795 p_api_name => NULL,
7796 p_parameter_name => 'ship to site id',
7797 p_bill_to_site_id => l_sto_site_id,
7798 p_bill_to_party_id => l_sto_party_id,
7799 p_site_use_type => 'SHIP_TO',
7800 x_site_use_id => x_cross_val_out_rec.ship_to_site_use_id,
7801 x_return_status => lx_return_status );
7802
7803 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7804 x_return_status := FND_API.G_RET_STS_ERROR;
7805 RETURN;
7806 END IF;
7807 END IF;
7808 END IF; -- validate ship to site id end if
7809
7810 ---- Validate Bill to contact id
7811 IF ((l_bto_cont_id <> FND_API.G_MISS_NUM AND l_bto_cont_id IS NOT NULL)) THEN
7812 IF (l_bto_party_id = FND_API.G_MISS_NUM OR l_bto_party_id IS NULL) THEN
7813
7814 fnd_message.set_name ('CS', 'CS_SR_PARENT_CHILD_CHECK');
7815 fnd_message.set_token ('CHILD_PARAM','bill_to_contact_id');
7816 fnd_message.set_token ('PARENT_PARAM','bill_to_party_id');
7817 fnd_msg_pub.ADD;
7818
7819 x_return_status := FND_API.G_RET_STS_ERROR;
7820 RETURN;
7821 END IF;
7822 END IF;
7823 IF ((p_new_sr_rec.bill_to_party_id <> FND_API.G_MISS_NUM) AND
7824 (nvl(p_new_sr_rec.bill_to_party_id,-99) <>
7825 nvl(p_old_sr_rec.bill_to_party_id,-99)))
7826 OR
7827 ((p_new_sr_rec.bill_to_contact_id <> FND_API.G_MISS_NUM) AND
7828 (nvl(p_new_sr_rec.bill_to_contact_id,-99) <>
7829 nvl(p_old_sr_rec.bill_to_contact_id,-99)))
7830 THEN
7831
7832 IF ( l_bto_cont_id IS NOT NULL and l_bto_cont_id <> FND_API.G_MISS_NUM ) then
7833 VALIDATE_BILL_TO_SHIP_TO_CT (
7834 p_api_name => NULL,
7835 p_parameter_name => 'bill to contact id',
7836 p_bill_to_contact_id => l_bto_cont_id,
7837 p_bill_to_party_id => l_bto_party_id,
7838 p_customer_type => l_cust_type,
7839 x_return_status => lx_return_status );
7840
7841 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7842 x_return_status := FND_API.G_RET_STS_ERROR;
7843 RETURN;
7844 END IF;
7845 END IF; -- IF ( l_bto_cont_id IS NOT NULL and l_bto_cont_id <>
7846 END IF; -- validate bill to contact id end if
7847
7848 ---- Validate ship to contact id
7849 IF ((l_sto_cont_id <> FND_API.G_MISS_NUM AND l_sto_cont_id IS NOT NULL)) THEN
7850 IF (l_sto_party_id = FND_API.G_MISS_NUM OR l_sto_party_id IS NULL) THEN
7851
7852 fnd_message.set_name ('CS', 'CS_SR_PARENT_CHILD_CHECK');
7853 fnd_message.set_token ('CHILD_PARAM','ship_to_contact_id');
7854 fnd_message.set_token ('PARENT_PARAM','ship_to_party_id');
7855 fnd_msg_pub.ADD;
7856
7857 x_return_status := FND_API.G_RET_STS_ERROR;
7858 RETURN;
7859 END IF;
7860 END IF;
7861 IF ((p_new_sr_rec.ship_to_party_id <> FND_API.G_MISS_NUM) AND
7862 (nvl(p_new_sr_rec.ship_to_party_id,-99) <>
7863 nvl(p_old_sr_rec.ship_to_party_id,-99)))
7864 OR
7865 ((p_new_sr_rec.ship_to_contact_id <> FND_API.G_MISS_NUM) AND
7866 (nvl(p_new_sr_rec.ship_to_contact_id,-99) <>
7867 nvl(p_old_sr_rec.ship_to_contact_id,-99)))
7868
7869 THEN
7870
7871 if ( l_sto_cont_id IS NOT NULL and l_sto_cont_id <> FND_API.G_MISS_NUM ) then
7872 VALIDATE_BILL_TO_SHIP_TO_CT (
7873 p_api_name => NULL,
7874 p_parameter_name => 'ship to contact id',
7875 p_bill_to_contact_id => l_sto_cont_id,
7876 p_bill_to_party_id => l_sto_party_id,
7877 p_customer_type => l_cust_type,
7878 x_return_status => lx_return_status );
7879
7880 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7881 x_return_status := FND_API.G_RET_STS_ERROR;
7882 RETURN;
7883 END IF;
7884 END IF;
7885 END IF; -- validate ship to contact id end if
7886
7887 --- Validate Bill to account id
7888
7889 IF ((p_new_sr_rec.bill_to_party_id <> FND_API.G_MISS_NUM) AND
7890 (nvl(p_new_sr_rec.bill_to_party_id,-99) <>
7891 nvl(p_old_sr_rec.bill_to_party_id,-99)))
7892 OR
7893 ((p_new_sr_rec.bill_to_account_id <> FND_API.G_MISS_NUM) AND
7894 (nvl(p_new_sr_rec.bill_to_account_id,-99) <>
7895 nvl(p_old_sr_rec.bill_to_account_id,-99)))
7896
7897 THEN
7898
7899 if ( l_bto_acc_id IS NOT NULL and l_bto_acc_id <> FND_API.G_MISS_NUM ) then
7900 VALIDATE_BILL_TO_SHIP_TO_ACCT (
7901 p_api_name => NULL,
7902 p_parameter_name => 'bill to account id',
7903 p_account_id => l_bto_acc_id,
7904 p_party_id => l_bto_party_id,
7905 x_return_status => lx_return_status );
7906
7907 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7908 x_return_status := FND_API.G_RET_STS_ERROR;
7909 RETURN;
7910 END IF;
7911 END IF;
7912 END IF; -- validate bill to account id end if
7913
7914 --- Validate ship to account id
7915
7916 IF ((p_new_sr_rec.ship_to_party_id <> FND_API.G_MISS_NUM) AND
7917 (nvl(p_new_sr_rec.ship_to_party_id,-99) <>
7918 nvl(p_old_sr_rec.ship_to_party_id,-99)))
7919 OR
7920 ((p_new_sr_rec.ship_to_account_id <> FND_API.G_MISS_NUM) AND
7921 (nvl(p_new_sr_rec.ship_to_account_id,-99) <>
7922 nvl(p_old_sr_rec.ship_to_account_id,-99)))
7923
7924 THEN
7925
7926 if ( l_sto_acc_id IS NOT NULL and l_sto_acc_id <> FND_API.G_MISS_NUM ) then
7927 VALIDATE_BILL_TO_SHIP_TO_ACCT (
7928 p_api_name => NULL,
7929 p_parameter_name => 'ship to account id',
7930 p_account_id => l_sto_acc_id,
7931 p_party_id => l_sto_party_id,
7932 x_return_status => lx_return_status );
7933
7934 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7935 x_return_status := FND_API.G_RET_STS_ERROR;
7936 RETURN;
7937 END IF;
7938 END IF;
7939 END IF; -- validate ship to account id end if
7940
7941 --- Validate External Reference
7942 IF ((p_new_sr_rec.customer_product_id <> FND_API.G_MISS_NUM) AND
7943 (nvl(p_new_sr_rec.customer_product_id,-99) <>
7944 nvl(p_old_sr_rec.customer_product_id,-99)))
7945 OR
7946 ((p_new_sr_rec.external_reference <> FND_API.G_MISS_CHAR) AND
7947 (nvl(p_new_sr_rec.external_reference,-99) <>
7948 nvl(p_old_sr_rec.external_reference,-99)))
7949
7950 THEN
7951
7952 if ( l_external_ref IS NOT NULL and l_external_ref <> FND_API.G_MISS_CHAR ) then
7953 -- For bug 3746983
7954 VALIDATE_EXTERNAL_REFERENCE (
7955 p_api_name => NULL,
7956 p_parameter_name => 'external reference',
7957 p_external_reference => l_external_ref,
7958 p_customer_product_id => l_cust_prod_id,
7959 p_inventory_item_id => l_inv_item_id,
7960 p_inventory_org_id => l_inv_org_id,
7961 p_customer_id => l_customer_id,
7962 x_return_status => lx_return_status );
7963
7964 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7965 x_return_status := FND_API.G_RET_STS_ERROR;
7966 RETURN;
7967 END IF;
7968 END IF;
7969 END IF; -- validate external reference end if
7970
7971 --- Validate Product Revision
7972 /**** Aug 13th 2004. Replaced with validate_product_version. This proc will return
7973 product revision if product revision is not passed
7974 IF ((p_new_sr_rec.inventory_item_id <> FND_API.G_MISS_NUM) AND
7975 (nvl(p_new_sr_rec.inventory_item_id,-99) <>
7976 nvl(p_old_sr_rec.inventory_item_id,-99)))
7977 OR
7978 ((p_new_sr_rec.customer_product_id <> FND_API.G_MISS_NUM) AND
7979 (nvl(p_new_sr_rec.customer_product_id,-99) <>
7980 nvl(p_old_sr_rec.customer_product_id,-99)))
7981 OR
7982 ((p_new_sr_rec.product_revision <> FND_API.G_MISS_CHAR) AND
7983 (nvl(p_new_sr_rec.product_revision,-99) <>
7984 nvl(p_old_sr_rec.product_revision,-99)))
7985 OR ( l_inv_change_by_cp = 'Y')
7986
7987 THEN
7988
7989 if ( l_prod_revision IS NOT NULL and l_prod_revision <> FND_API.G_MISS_CHAR ) then
7990 VALIDATE_PRODUCT_REVISION (
7991 p_api_name => NULL,
7992 p_parameter_name => 'product revision',
7993 p_customer_product_id => l_cust_prod_id,
7994 p_product_revision => l_prod_revision,
7995 p_inventory_item_id => l_inv_item_id,
7996 p_inventory_org_id => l_inv_org_id,
7997 x_return_status => lx_return_status );
7998
7999 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
8000 x_return_status := FND_API.G_RET_STS_ERROR;
8001 RETURN;
8002 END IF;
8003 END IF;
8004 END IF; -- validate product revision end if
8005 ****/
8006 l_prod_revision := p_new_sr_rec.product_revision;
8007 IF ((p_new_sr_rec.customer_product_id <> FND_API.G_MISS_NUM) AND
8008 (nvl(p_new_sr_rec.customer_product_id,-99) <>
8009 nvl(p_old_sr_rec.customer_product_id,-99)))
8010 OR
8011 (l_prod_revision is not null AND
8012 (nvl(p_new_sr_rec.product_revision,'-99') <>
8013 nvl(p_old_sr_rec.product_revision,'-99')))
8014
8015 THEN
8016
8017 VALIDATE_PRODUCT_VERSION
8018 ( p_parameter_name => 'Product Revision',
8019 p_instance_id => l_cust_prod_id,
8020 p_inventory_org_id => l_inv_org_id,
8021 p_product_version => l_prod_revision,
8022 x_return_status => lx_return_status );
8023
8024 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
8025 x_return_status := FND_API.G_RET_STS_ERROR;
8026 RETURN;
8027 END IF;
8028 END IF; -- validate product revision end if
8029 x_cross_val_out_rec.product_revision := l_prod_revision;
8030
8031 --- Validate current serial number
8032
8033 IF ((p_new_sr_rec.customer_product_id <> FND_API.G_MISS_NUM) AND
8034 (nvl(p_new_sr_rec.customer_product_id,-99) <>
8035 nvl(p_old_sr_rec.customer_product_id,-99)))
8036 OR
8037 ((p_new_sr_rec.current_serial_number <> FND_API.G_MISS_CHAR) AND
8038 (nvl(p_new_sr_rec.current_serial_number,-99) <>
8039 nvl(p_old_sr_rec.current_serial_number,-99)))
8040
8041 THEN
8042
8043 IF ( l_cur_serial IS NOT NULL AND l_cur_serial <> FND_API.G_MISS_CHAR ) AND
8044 ( l_cust_prod_id IS NOT NULL AND l_cust_prod_id <> FND_API.G_MISS_NUM )
8045 THEN
8046 -- For bug 3746983
8047 VALIDATE_CURRENT_SERIAL (
8048 p_api_name => NULL,
8049 p_parameter_name => 'current serial number',
8050 p_inventory_item_id => l_inv_item_id,
8051 p_inventory_org_id => l_inv_org_id,
8052 p_customer_product_id => l_cust_prod_id,
8053 p_customer_id => l_customer_id,
8054 p_current_serial_number => l_cur_serial,
8055 x_return_status => lx_return_status );
8056
8057 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
8058 x_return_status := FND_API.G_RET_STS_ERROR;
8059 RETURN;
8060 END IF;
8061 END IF;
8062 END IF; -- validate current serial number end if
8063
8064 -- For bug 3592032 - moved call to INV_SUBCOMPONENT_CROSS_VAL after validate_cp_subcomp_id
8065
8066
8067 -- Validate Inventory component version
8068 IF ((p_new_sr_rec.inv_component_id <> FND_API.G_MISS_NUM) AND
8069 (nvl(p_new_sr_rec.inv_component_id,-99) <>
8070 nvl(p_old_sr_rec.inv_component_id,-99)))
8071 OR
8072 ((p_new_sr_rec.inv_component_version <> FND_API.G_MISS_CHAR) AND
8073 (nvl(p_new_sr_rec.inv_component_version,-99) <>
8074 nvl(p_old_sr_rec.inv_component_version,-99)))
8075
8076 THEN
8077
8078 if ( l_inv_comp_ver IS NOT NULL and l_inv_comp_ver <> FND_API.G_MISS_CHAR ) then
8079 VALIDATE_INV_COMP_VER (
8080 p_api_name => NULL,
8081 p_parameter_name => 'inventory component version',
8082 p_inv_component_id => l_inv_comp_id,
8083 p_inventory_org_id => l_inv_org_id,
8084 p_inv_component_version => l_inv_comp_ver,
8085 x_return_status => lx_return_status );
8086
8087 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
8088 x_return_status := FND_API.G_RET_STS_ERROR;
8089 RETURN;
8090 END IF;
8091 END IF;
8092 END IF; -- validate item component version end if
8093
8094 ---- Validate CP component id
8095
8096 IF ((p_new_sr_rec.customer_product_id <> FND_API.G_MISS_NUM) AND
8097 (nvl(p_new_sr_rec.customer_product_id,-99) <>
8098 nvl(p_old_sr_rec.customer_product_id,-99)))
8099 OR
8100 ((p_new_sr_rec.cp_component_id <> FND_API.G_MISS_NUM) AND
8101 (nvl(p_new_sr_rec.cp_component_id,-99) <>
8102 nvl(p_old_sr_rec.cp_component_id,-99)))
8103
8104 THEN
8105 if ( l_cp_comp_id IS NOT NULL and l_cp_comp_id <> FND_API.G_MISS_NUM ) then
8106 VALIDATE_CP_COMP_ID (
8107 p_api_name => NULL,
8108 p_parameter_name => 'CP component id',
8109 p_customer_product_id => l_cust_prod_id,
8110 p_cp_component_id => l_cp_comp_id,
8111 p_org_id => NULL,
8112 x_return_status => lx_return_status );
8113
8114 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
8115 x_return_status := FND_API.G_RET_STS_ERROR;
8116 RETURN;
8117 END IF;
8118 END IF;
8119 END IF; -- validate CP component id end if
8120
8121 ---- Validate CP component version
8122 -- For bug 3337848 - change from component_version_id to component_version
8123 /***
8124 IF ((p_new_sr_rec.cp_component_id <> FND_API.G_MISS_NUM) AND
8125 (nvl(p_new_sr_rec.cp_component_id,-99) <>
8126 nvl(p_old_sr_rec.cp_component_id,-99)))
8127 OR
8128 ((p_new_sr_rec.component_version <> FND_API.G_MISS_CHAR) AND
8129 (nvl(p_new_sr_rec.component_version,-99) <>
8130 nvl(p_old_sr_rec.component_version,-99)))
8131
8132 THEN
8133
8134 if ( l_cp_comp_ver IS NOT NULL and l_cp_comp_ver <> FND_API.G_MISS_CHAR ) then
8135 VALIDATE_COMPONENT_VERSION
8136 ( p_api_name => NULL,
8137 p_parameter_name => 'CP component version',
8138 p_component_version => l_cp_comp_ver,
8139 p_cp_component_id => l_cp_comp_id,
8140 p_customer_product_id => l_cust_prod_id,
8141 p_inventory_org_id => l_inv_org_id,
8142 x_return_status => lx_return_status );
8143
8144
8145 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
8146 x_return_status := FND_API.G_RET_STS_ERROR;
8147 RETURN;
8148 END IF;
8149 END IF;
8150 END IF; -- validate CP component vesion end if
8151 ********************/
8152 l_cp_comp_ver := p_new_sr_rec.component_version;
8153 IF ((p_new_sr_rec.cp_component_id <> FND_API.G_MISS_NUM) AND
8154 (nvl(p_new_sr_rec.cp_component_id,-99) <>
8155 nvl(p_old_sr_rec.cp_component_id,-99)))
8156 OR
8157 ((l_cp_comp_id is not null) AND
8158 (nvl(p_new_sr_rec.component_version,'-99') <>
8159 nvl(p_old_sr_rec.component_version,'-99')))
8160
8161 THEN
8162 VALIDATE_PRODUCT_VERSION
8163 ( p_parameter_name => 'CP component version',
8164 p_instance_id => l_cp_comp_id,
8165 p_inventory_org_id => l_inv_org_id,
8166 p_product_version => l_cp_comp_ver,
8167 x_return_status => lx_return_status );
8168 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
8169 x_return_status := FND_API.G_RET_STS_ERROR;
8170 RETURN;
8171 END IF;
8172 END IF; -- validate CP component vesion end if
8173 x_cross_val_out_rec.component_version := l_cp_comp_ver;
8174
8175 -- For bug 3592032 - moved call to VALIDATE_INV_SUBCOMP_VER after validate_cp_subcomp_id
8176
8177
8178
8179 --- Validate Category set id
8180 IF ((p_new_sr_rec.inventory_item_id <> FND_API.G_MISS_NUM) AND
8181 (nvl(p_new_sr_rec.inventory_item_id,-99) <>
8182 nvl(p_old_sr_rec.inventory_item_id,-99)))
8183 OR
8184 ((nvl(p_new_sr_rec.category_id,-99) <> FND_API.G_MISS_NUM) AND
8185 (nvl(p_new_sr_rec.category_id,-99) <>
8186 nvl(p_old_sr_rec.category_id,-99)))
8187 OR
8188 ((p_new_sr_rec.category_set_id <> FND_API.G_MISS_NUM) AND
8189 (nvl(p_new_sr_rec.category_set_id,-99) <>
8190 nvl(p_old_sr_rec.category_set_id,-99)))
8191 OR ( l_inv_change_by_cp = 'Y')
8192 THEN
8193
8194 if ( l_cat_set_id IS NOT NULL and l_cat_set_id <> FND_API.G_MISS_NUM ) then
8195 VALIDATE_CATEGORY_SET_ID (
8196 p_api_name => NULL,
8197 p_parameter_name => 'Category set id',
8198 p_category_id => l_category_id,
8199 p_category_set_id => l_cat_set_id,
8200 p_inventory_item_id => l_inv_item_id,
8201 p_inventory_org_id => l_inv_org_id,
8202 x_return_status => lx_return_status );
8203
8204 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
8205 x_return_status := FND_API.G_RET_STS_ERROR;
8206 RETURN;
8207 END IF;
8208 END IF;
8209 END IF; -- validate category set id end if
8210
8211 -- Validate the category_id
8212 -- 1. If the category_id has changed
8213 -- 2. check category_set_id is null ( passed/DB value)
8214 IF ((p_new_sr_rec.category_id <> FND_API.G_MISS_NUM) AND
8215 (nvl(p_new_sr_rec.category_id,-99) <>
8216 nvl(p_old_sr_rec.category_id,-99)) OR
8217 (nvl(p_new_sr_rec.category_set_id,-99) <> FND_API.G_MISS_NUM) AND
8218 (nvl(p_new_sr_rec.category_set_id,-99) <>
8219 nvl(p_old_sr_rec.category_set_id,-99)))
8220 THEN
8221 if ( l_cat_set_id IS NULL OR l_cat_set_id = FND_API.G_MISS_NUM ) then
8222 VALIDATE_CATEGORY_ID
8223 ( p_api_name => NULL,
8224 p_parameter_name => 'Category id',
8225 p_category_id => l_category_id,
8226 p_category_set_id => l_cat_set_id,
8227 x_return_status => lx_return_status
8228 );
8229 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
8230 x_return_status := FND_API.G_RET_STS_ERROR;
8231 RETURN;
8232 END IF;
8233 END IF;
8234 END IF; -- validate category id end if
8235
8236
8237
8238 --- Validate Inventory component id
8239 IF ((p_new_sr_rec.inv_component_id <> FND_API.G_MISS_NUM) AND
8240 (nvl(p_new_sr_rec.inv_component_id,-99) <>
8241 nvl(p_old_sr_rec.inv_component_id,-99)))
8242 OR
8243 ((p_new_sr_rec.cp_component_id <> FND_API.G_MISS_NUM) AND
8244 (nvl(p_new_sr_rec.cp_component_id,-99) <>
8245 nvl(p_old_sr_rec.cp_component_id,-99)))
8246
8247 THEN
8248 if ( l_cp_comp_id IS NOT NULL and l_cp_comp_id <> FND_API.G_MISS_NUM ) and
8249 ( l_inv_comp_id IS NOT NULL and l_inv_comp_id <> FND_API.G_MISS_NUM ) then
8250 INV_COMPONENT_CROSS_VAL (
8251 p_parameter_name => 'Inventory component',
8252 p_cp_component_id => l_cp_comp_id,
8253 p_inv_component_id => l_inv_comp_id,
8254 x_return_status => lx_return_status );
8255
8256 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
8257 x_return_status := FND_API.G_RET_STS_ERROR;
8258 RETURN;
8259 END IF;
8260 END IF;
8261 END IF; -- validate Inventory component end if
8262
8263 --- Validate CP subcomponent id
8264
8265 IF ((p_new_sr_rec.cp_subcomponent_id <> FND_API.G_MISS_NUM) AND
8266 (nvl(p_new_sr_rec.cp_subcomponent_id,-99) <>
8267 nvl(p_old_sr_rec.cp_subcomponent_id,-99)))
8268 OR
8269 ((p_new_sr_rec.cp_component_id <> FND_API.G_MISS_NUM) AND
8270 (nvl(p_new_sr_rec.cp_component_id,-99) <>
8271 nvl(p_old_sr_rec.cp_component_id,-99)))
8272 OR
8273 ((p_new_sr_rec.customer_product_id <> FND_API.G_MISS_NUM) AND
8274 (nvl(p_new_sr_rec.customer_product_id,-99) <>
8275 nvl(p_old_sr_rec.customer_product_id,-99)))
8276 THEN
8277
8278 if ( l_cp_scomp_id IS NOT NULL and l_cp_scomp_id <> FND_API.G_MISS_NUM ) then
8279 VALIDATE_CP_SUBCOMP_ID (
8280 p_api_name => NULL,
8281 p_parameter_name => 'CP subcomponent id',
8282 p_cp_component_id => l_cp_comp_id,
8283 p_cp_subcomponent_id => l_cp_scomp_id,
8284 p_customer_product_id => l_cust_prod_id,
8285 p_org_id => NULL,
8286 x_return_status => lx_return_status );
8287
8288 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
8289 x_return_status := FND_API.G_RET_STS_ERROR;
8290 RETURN;
8291 END IF;
8292 END IF;
8293 END IF; -- validate CP subcomponent end if
8294
8295 -- For bug 3592032
8296 --- Validate Inventory subcomponent id
8297 IF ((p_new_sr_rec.inv_subcomponent_id <> FND_API.G_MISS_NUM) AND
8298 (nvl(p_new_sr_rec.inv_subcomponent_id,-99) <>
8299 nvl(p_old_sr_rec.inv_subcomponent_id,-99)))
8300 OR
8301 ((p_new_sr_rec.cp_subcomponent_id <> FND_API.G_MISS_NUM) AND
8302 (nvl(p_new_sr_rec.cp_subcomponent_id,-99) <>
8303 nvl(p_old_sr_rec.cp_subcomponent_id,-99)))
8304
8305 THEN
8306 if ( l_cp_subcomp_id IS NOT NULL and l_cp_subcomp_id <> FND_API.G_MISS_NUM ) and
8307 ( l_inv_subcomp_id IS NOT NULL and l_inv_subcomp_id <> FND_API.G_MISS_NUM ) then
8308 INV_SUBCOMPONENT_CROSS_VAL (
8309 p_parameter_name => 'inv subcomponent',
8310 p_inv_subcomponent_id => l_inv_subcomp_id,
8311 p_cp_subcomponent_id => l_cp_subcomp_id,
8312 x_return_status => lx_return_status );
8313
8314 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
8315 x_return_status := FND_API.G_RET_STS_ERROR;
8316 RETURN;
8317 END IF;
8318 END IF;
8319 END IF; -- validate inventory subcomponent end if
8320
8321 --- Validate Inv subcomponent version
8322 IF ((p_new_sr_rec.inv_subcomponent_id <> FND_API.G_MISS_NUM) AND
8323 (nvl(p_new_sr_rec.inv_subcomponent_id,-99) <>
8324 nvl(p_old_sr_rec.inv_subcomponent_id,-99)))
8325 OR
8326 ((p_new_sr_rec.inv_subcomponent_version <> FND_API.G_MISS_CHAR) AND
8327 (nvl(p_new_sr_rec.inv_subcomponent_version,-99) <>
8328 nvl(p_old_sr_rec.inv_subcomponent_version,-99)))
8329
8330 THEN
8331
8332 if ( l_inv_scomp_ver IS NOT NULL and l_inv_scomp_ver <> FND_API.G_MISS_CHAR ) then
8333 VALIDATE_INV_SUBCOMP_VER (
8334 p_api_name => NULL,
8335 p_parameter_name => 'Inv subcomponent version',
8336 p_inv_subcomponent_version => l_inv_scomp_ver,
8337 p_inv_subcomponent_id => l_inv_scomp_id,
8338 p_inventory_org_id => l_inv_org_id,
8339 x_return_status => lx_return_status );
8340
8341 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
8342 x_return_status := FND_API.G_RET_STS_ERROR;
8343 RETURN;
8344 END IF;
8345 END IF;
8346 END IF; -- validate Inv subcomponent version end if
8347
8348 -- end of change for bug 3592032
8349
8350
8351 --- Validate the CP suncomponent version
8352 -- For bug 3337848 - change from component_version_id to component_version
8353
8354 /*** smisra 5/4/04 bug 3566783
8355 IF ((p_new_sr_rec.cp_subcomponent_id <> FND_API.G_MISS_NUM) AND
8356 (nvl(p_new_sr_rec.cp_subcomponent_id,-99) <>
8357 nvl(p_old_sr_rec.cp_subcomponent_id,-99)))
8358 OR
8359 ((p_new_sr_rec.subcomponent_version <> FND_API.G_MISS_CHAR) AND
8360 (nvl(p_new_sr_rec.subcomponent_version,-99) <>
8361 nvl(p_old_sr_rec.subcomponent_version,-99)))
8362
8363 THEN
8364 if ( l_cp_scomp_ver IS NOT NULL and l_cp_scomp_ver <> FND_API.G_MISS_CHAR ) then
8365 VALIDATE_SUBCOMPONENT_VERSION (
8366 p_api_name => NULL,
8367 p_parameter_name => 'CP subcomponent version',
8368 p_cp_component_id => l_cp_comp_id,
8369 p_cp_subcomponent_id => l_cp_scomp_id,
8370 p_customer_product_id => l_cust_prod_id,
8371 p_subcomponent_version => l_cp_scomp_ver,
8372 p_inventory_org_id => l_inv_org_id,
8373 x_return_status => lx_return_status );
8374
8375 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
8376 x_return_status := FND_API.G_RET_STS_ERROR;
8377 RETURN;
8378 END IF;
8379 END IF;
8380 END IF; -- validate CP subcomponent version end if
8381 *********************************/
8382 l_cp_scomp_ver := p_new_sr_rec.subcomponent_version;
8383 IF ((p_new_sr_rec.cp_subcomponent_id <> FND_API.G_MISS_NUM) AND
8384 (nvl(p_new_sr_rec.cp_subcomponent_id,-99) <>
8385 nvl(p_old_sr_rec.cp_subcomponent_id,-99)))
8386 OR
8387 ((l_cp_scomp_id is not null) AND
8388 (nvl(p_new_sr_rec.subcomponent_version,'-99') <>
8389 nvl(p_old_sr_rec.subcomponent_version,'-99')))
8390
8391 THEN
8392 VALIDATE_PRODUCT_VERSION
8393 ( p_parameter_name => 'CP subcomponent version',
8394 p_instance_id => l_cp_scomp_id,
8395 p_inventory_org_id => l_inv_org_id,
8396 p_product_version => l_cp_scomp_ver,
8397 x_return_status => lx_return_status );
8398 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
8399 x_return_status := FND_API.G_RET_STS_ERROR;
8400 RETURN;
8401 END IF;
8402 END IF; -- validate CP component vesion end if
8403 x_cross_val_out_rec.subcomponent_version := l_cp_scomp_ver;
8404
8405
8406
8407 --- Validate bill to site and site use
8408 IF ((p_new_sr_rec.bill_to_party_id <> FND_API.G_MISS_NUM) AND
8409 (nvl(p_new_sr_rec.bill_to_party_id,-99) <>
8410 nvl(p_old_sr_rec.bill_to_party_id,-99)))
8411 OR
8412 ((p_new_sr_rec.bill_to_site_id <> FND_API.G_MISS_NUM) AND
8413 (nvl(p_new_sr_rec.bill_to_site_id,-99) <>
8414 nvl(p_old_sr_rec.bill_to_site_id,-99)))
8415 OR
8416 ((p_new_sr_rec.bill_to_site_use_id <> FND_API.G_MISS_NUM) AND
8417 (nvl(p_new_sr_rec.bill_to_site_use_id,-99) <>
8418 nvl(p_old_sr_rec.bill_to_site_use_id,-99)))
8419
8420 THEN
8421
8422 if ( l_bto_site_id IS NOT NULL and l_bto_site_id <> FND_API.G_MISS_NUM ) then
8423 VALIDATE_BILL_TO_SHIP_TO_SITE (
8424 p_api_name => NULL,
8425 p_parameter_name => 'bill to site id',
8426 p_bill_to_site_id => l_bto_site_id,
8427 p_bill_to_party_id => l_bto_party_id,
8428 p_site_use_type => 'BILL_TO',
8429 --p_site_use_id => l_bto_site_use,
8430 x_site_use_id => lx_site_use_id,
8431 x_return_status => lx_return_status );
8432
8433 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
8434 x_return_status := FND_API.G_RET_STS_ERROR;
8435 RETURN;
8436 END IF;
8437 END IF;
8438 END IF; -- validate bill to site and site use end if
8439
8440 --- Validate ship to site and site use
8441 -- ship_to_party_id is a reqd field if ship_to_site_use_id is passed,
8442 -- so check if passed, else return error
8443 IF ((l_sto_site_use <> FND_API.G_MISS_NUM AND
8444 l_sto_site_use IS NOT NULL))
8445 THEN
8446 IF (l_sto_party_id = FND_API.G_MISS_NUM OR
8447 l_sto_party_id IS NULL) THEN
8448 fnd_message.set_name ('CS', 'CS_SR_PARENT_CHILD_CHECK');
8449 fnd_message.set_token ('CHILD_PARAM','ship_to_site_use_id');
8450 fnd_message.set_token ('PARENT_PARAM','ship_to_party_id');
8451 fnd_msg_pub.ADD;
8452 x_return_status := FND_API.G_RET_STS_ERROR;
8453 RETURN;
8454 END IF;
8455 END IF;
8456 /*
8457 BUG 3702517 - Commented out
8458 IF ((p_new_sr_rec.ship_to_party_id <> FND_API.G_MISS_NUM) AND
8459 (nvl(p_new_sr_rec.ship_to_party_id,-99) <>
8460 nvl(p_old_sr_rec.ship_to_party_id,-99)))
8461 OR
8462 ((p_new_sr_rec.ship_to_site_id <> FND_API.G_MISS_NUM) AND
8463 (nvl(p_new_sr_rec.ship_to_site_id,-99) <>
8464 nvl(p_old_sr_rec.ship_to_site_id,-99)))
8465 OR
8466 ((p_new_sr_rec.ship_to_site_use_id <> FND_API.G_MISS_NUM) AND
8467 (nvl(p_new_sr_rec.ship_to_site_use_id,-99) <>
8468 nvl(p_old_sr_rec.ship_to_site_use_id,-99)))
8469 THEN
8470
8471 if ( l_sto_site_use IS NOT NULL and l_sto_site_use <> FND_API.G_MISS_NUM ) then
8472 Validate_Site_Site_Use (
8473 p_api_name => NULL,
8474 p_parameter_name => 'ship_to_site_use_id',
8475 p_site_id => l_sto_site_id,
8476 p_site_use_id => l_sto_site_use,
8477 p_party_id => l_sto_party_id,
8478 p_site_use_type => 'SHIP_TO',
8479 x_return_status => lx_return_status );
8480
8481 if (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
8482 x_return_status := FND_API.G_RET_STS_ERROR;
8483 RETURN;
8484 end if;
8485 end if;
8486 END IF; -- validate ship to site and site use end if
8487 end of comment out for Bug 3702517
8488 */
8489 -- Bug 3702517 change begins
8490 ---------------------------
8491 IF
8492 (
8493 ( p_new_sr_rec.ship_to_party_id <> FND_API.G_MISS_NUM ) AND
8494 (
8495 NVL(p_new_sr_rec.ship_to_party_id,-99) <> NVL(p_old_sr_rec.ship_to_party_id,-99)
8496 )
8497 )
8498 OR
8499 (
8500 ( p_new_sr_rec.ship_to_site_id <> FND_API.G_MISS_NUM ) AND
8501 (
8502 NVL(p_new_sr_rec.ship_to_site_id,-99) <> NVL(p_old_sr_rec.ship_to_site_id,-99)
8503 )
8504 )
8505 OR
8506 (
8507 (p_new_sr_rec.ship_to_site_use_id <> FND_API.G_MISS_NUM ) AND
8508 (
8509 NVL(p_new_sr_rec.ship_to_site_use_id,-99) <> NVL(p_old_sr_rec.ship_to_site_use_id,-99)
8510 )
8511 )
8512 THEN
8513 IF
8514 -- Both ship_to_site_id and ship_to_site_use_id are available
8515 -- => call Validate_Site_Site_Use
8516 (
8517 l_sto_site_use IS NOT NULL and l_sto_site_use <> FND_API.G_MISS_NUM AND
8518 l_sto_site_id IS NOT NULL AND l_sto_site_id <> FND_API.G_MISS_NUM
8519 )
8520 THEN
8521 Validate_Site_Site_Use
8522 (
8523 p_api_name => NULL,
8524 p_parameter_name => 'SHIP_TO_SITE_USE_ID',
8525 p_site_id => l_sto_site_id,
8526 p_site_use_id => l_sto_site_use,
8527 p_party_id => l_sto_party_id,
8528 p_site_use_type => 'SHIP_TO',
8529 x_return_status => lx_return_status
8530 );
8531 IF
8532 (lx_return_status <> FND_API.G_RET_STS_SUCCESS)
8533 THEN
8534 x_return_status := FND_API.G_RET_STS_ERROR;
8535 RETURN;
8536 END IF;
8537
8538 ELSIF
8539 -- Ship_to_site_use_id is available, but ship_to_site_id is not passed
8540 -- => Call Validate_Bill_Ship_Site_Use
8541 (
8542 (
8543 l_sto_site_use <> FND_API.G_MISS_NUM AND
8544 l_sto_site_use IS NOT NULL
8545 )
8546 AND
8547 (
8548 l_sto_site_id IS NULL OR
8549 l_sto_site_id = FND_API.G_MISS_NUM
8550 )
8551 )
8552 THEN
8553 Validate_Bill_Ship_Site_Use
8554 (
8555 p_api_name => null,
8556 p_parameter_name => 'SHIP_TO SITE USE ',
8557 p_site_use_id => l_sto_site_use,
8558 p_party_id => l_sto_party_id,
8559 p_site_use_type => 'SHIP_TO',
8560 x_site_id => l_sto_site_id,
8561 x_return_status => lx_return_status
8562 );
8563 IF
8564 (lx_return_status <> FND_API.G_RET_STS_SUCCESS)
8565 THEN
8566 x_return_status := FND_API.G_RET_STS_ERROR;
8567 RETURN;
8568 ELSE
8569 x_cross_val_out_rec.ship_to_site_id := l_sto_site_id;
8570 END IF;
8571
8572 ELSIF
8573 -- Ship_to_site_id is available, but ship_to_site_use_id is not passed
8574 -- => Call Validate_Bill_To_Ship_To_Site
8575 (
8576 (
8577 l_sto_site_id <> FND_API.G_MISS_NUM AND
8578 l_sto_site_id IS NOT NULL
8579 )
8580 AND
8581 (
8582 l_sto_site_use IS NULL OR
8583 l_sto_site_use = FND_API.G_MISS_NUM
8584 )
8585 )
8586 THEN
8587 Validate_Bill_To_Ship_To_Site
8588 (
8589 p_api_name => null,
8590 p_parameter_name => 'SHIP_TO SITE ',
8591 p_bill_to_site_id => l_sto_site_id, -- Parameter name is a misnomer,spec to be modified later
8592 p_bill_to_party_id => l_sto_party_id, -- Parameter name is a misnomer,spec to be modified later
8593 p_site_use_type => 'SHIP_TO',
8594 x_site_use_id => l_sto_site_use,
8595 x_return_status => lx_return_status
8596 );
8597 IF
8598 (lx_return_status <> FND_API.G_RET_STS_SUCCESS)
8599 THEN
8600 x_return_status := FND_API.G_RET_STS_ERROR;
8601 RETURN;
8602 ELSE
8603 x_cross_val_out_rec.ship_to_site_use_id := l_sto_site_use;
8604 END IF;
8605 END IF;
8606 END IF;
8607 --Bug 3702517 change ends
8608 -------------------------
8609 --- Validate bill to site and site use
8610 IF ((l_bto_site_use <> FND_API.G_MISS_NUM AND
8611 l_bto_site_use IS NOT NULL))
8612 THEN
8613 IF (l_bto_party_id = FND_API.G_MISS_NUM OR
8614 l_bto_party_id IS NULL) THEN
8615 fnd_message.set_name ('CS', 'CS_SR_PARENT_CHILD_CHECK');
8616 fnd_message.set_token ('CHILD_PARAM','bill_to_site_use_id');
8617 fnd_message.set_token ('PARENT_PARAM','bill_to_party_id');
8618 fnd_msg_pub.ADD;
8619 x_return_status := FND_API.G_RET_STS_ERROR;
8620 RETURN;
8621 END IF;
8622 END IF;
8623 IF ((p_new_sr_rec.bill_to_party_id <> FND_API.G_MISS_NUM) AND
8624 (nvl(p_new_sr_rec.bill_to_party_id,-99) <>
8625 nvl(p_old_sr_rec.bill_to_party_id,-99)))
8626 OR
8627 ((p_new_sr_rec.bill_to_site_id <> FND_API.G_MISS_NUM) AND
8628 (nvl(p_new_sr_rec.bill_to_site_id,-99) <>
8629 nvl(p_old_sr_rec.bill_to_site_id,-99)))
8630 OR
8631 ((p_new_sr_rec.bill_to_site_use_id <> FND_API.G_MISS_NUM) AND
8632 (nvl(p_new_sr_rec.bill_to_site_use_id,-99) <>
8633 nvl(p_old_sr_rec.bill_to_site_use_id,-99)))
8634 THEN
8635 IF ( l_bto_site_use IS NOT NULL and l_bto_site_use <> FND_API.G_MISS_NUM AND
8636 l_bto_site_id IS NOT NULL AND l_bto_site_id <> FND_API.G_MISS_NUM) THEN
8637 -- this call is made when both site use and site id are available
8638 Validate_Site_Site_Use (
8639 p_api_name => NULL,
8640 p_parameter_name => 'bill_to_site_use_id',
8641 p_site_id => l_bto_site_id,
8642 p_site_use_id => l_bto_site_use,
8643 p_party_id => l_bto_party_id,
8644 p_site_use_type => 'BILL_TO',
8645 x_return_status => lx_return_status );
8646
8647 if (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
8648 x_return_status := FND_API.G_RET_STS_ERROR;
8649 RETURN;
8650 end if;
8651 ELSIF ( ( l_bto_site_use <> FND_API.G_MISS_NUM AND l_bto_site_use IS NOT NULL ) AND
8652 ( l_bto_site_id IS NULL OR l_bto_site_id = FND_API.G_MISS_NUM )
8653 ) THEN
8654 -- this call is made when site use is availabel but site id is not available
8655 CS_ServiceRequest_UTIL.Validate_Bill_Ship_Site_Use
8656 ( p_api_name => null,
8657 -- p_parameter_name => 'Ship_To Site Use ', /* Modified during 3702517 fix */
8658 p_parameter_name => 'BILL TO SITE USE',
8659 p_site_use_id => l_bto_site_use,
8660 p_party_id => l_bto_party_id,
8661 p_site_use_type => 'BILL_TO',
8662 x_site_id => l_bto_site_id,
8663 x_return_status => lx_return_status
8664 );
8665 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
8666 x_return_status := FND_API.G_RET_STS_ERROR;
8667 RETURN;
8668 ELSE
8669 x_cross_val_out_rec.bill_to_site_id := l_bto_site_id;
8670 END IF;
8671 ELSIF ( ( l_bto_site_id <> FND_API.G_MISS_NUM AND l_bto_site_id IS NOT NULL ) AND
8672 ( l_bto_site_use IS NULL OR l_bto_site_use = FND_API.G_MISS_NUM )
8673 ) THEN
8674 -- this call is made when site use is not available but site id is available
8675 CS_ServiceRequest_UTIL.Validate_Bill_To_Ship_To_Site
8676 ( p_api_name => null,
8677 -- p_parameter_name => 'Ship_To Site ', /* Modified during 3702517 fix */
8678 p_parameter_name => 'SHIP TO SITE',
8679 p_bill_to_site_id => l_bto_site_id,
8680 p_bill_to_party_id => l_bto_party_id,
8681 p_site_use_type => 'BILL_TO',
8682 x_site_use_id => l_bto_site_use,
8683 x_return_status => lx_return_status
8684 );
8685 IF (lx_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
8686 x_return_status := FND_API.G_RET_STS_ERROR;
8687 RETURN;
8688 ELSE
8689 x_cross_val_out_rec.bill_to_site_use_id := l_bto_site_use;
8690 END IF;
8691 END IF;
8692 END IF; -- validate bill to site and site use end if
8693
8694
8695 /* For bug 3340433 - assigning the proper values to the out rec */
8696 x_cross_val_out_rec.inventory_item_id := l_inv_item_id;
8697
8698
8699
8700 /*
8701 x_cross_val_out_rec.bill_to_site_use_id := l_bto_site_use;
8702 x_cross_val_out_rec.ship_to_site_use_id :=
8703 x_cross_val_out_rec.bill_to_site_id := l_bto_site_id;
8704 x_cross_val_out_rec.ship_to_site_id :=
8705 x_cross_val_out_rec.contract_id := l_contract_id;
8706 x_cross_val_out_rec.contract_number := l_con_number;
8707 */
8708
8709
8710 EXCEPTION
8711 WHEN OTHERS THEN
8712 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8713
8714 FND_MESSAGE.SET_NAME ('CS', 'CS_API_SR_UNKNOWN_ERROR');
8715 FND_MESSAGE.SET_TOKEN ('P_TEXT',l_api_name_full||'-'||SQLERRM);
8716 FND_MSG_PUB.ADD;
8717
8718 END SERVICEREQUEST_CROSS_VAL;
8719
8720
8721
8722 -- -----------------------------------------------------------------------------
8723 -- Modification History
8724 -- Date Name Desc
8725 -- -------- -------- -----------------------------------------------------------
8726 -- 05/12/05 smisra removed item_serial_number from select statement. This col
8727 -- is obsolete from release 12.
8728 -- -----------------------------------------------------------------------------
8729 PROCEDURE Prepare_Audit_Record (
8730 p_api_version IN VARCHAR2,
8731 p_request_id IN NUMBER,
8732 x_return_status OUT NOCOPY VARCHAR2,
8733 x_msg_count OUT NOCOPY NUMBER,
8734 x_msg_data OUT NOCOPY VARCHAR2,
8735 x_audit_vals_rec OUT NOCOPY CS_ServiceRequest_PVT.SR_AUDIT_REC_TYPE) IS
8736
8737 CURSOR L_SERVICEREQUEST_CSR IS
8738 SELECT
8739 INCIDENT_STATUS_ID INCIDENT_STATUS_ID ,
8740 INCIDENT_STATUS_ID OLD_INCIDENT_STATUS_ID ,
8741 'N' CHANGE_INCIDENT_STATUS_FLAG ,
8742 INCIDENT_TYPE_ID INCIDENT_TYPE_ID ,
8743 INCIDENT_TYPE_ID OLD_INCIDENT_TYPE_ID,
8744 'N' CHANGE_INCIDENT_TYPE_FLAG ,
8745 INCIDENT_URGENCY_ID INCIDENT_URGENCY_ID ,
8746 INCIDENT_URGENCY_ID OLD_INCIDENT_URGENCY_ID ,
8747 'N' CHANGE_INCIDENT_URGENCY_FLAG ,
8748 INCIDENT_SEVERITY_ID INCIDENT_SEVERITY_ID,
8749 INCIDENT_SEVERITY_ID OLD_INCIDENT_SEVERITY_ID ,
8750 'N' CHANGE_INCIDENT_SEVERITY_FLAG ,
8751 TO_NUMBER(NULL) RESPONSIBLE_GROUP_ID,
8752 TO_NUMBER(NULL) OLD_RESPONSIBLE_GROUP_ID ,
8753 'N' CHANGE_RESPONSIBLE_GROUP_FLAG ,
8754 INCIDENT_OWNER_ID INCIDENT_OWNER_ID,
8755 INCIDENT_OWNER_ID OLD_INCIDENT_OWNER_ID ,
8756 'N' CHANGE_INCIDENT_OWNER_FLAG,
8757 'N' CREATE_MANUAL_ACTION ,
8758 to_number(null) ACTION_ID ,
8759 EXPECTED_RESOLUTION_DATE EXPECTED_RESOLUTION_DATE ,
8760 EXPECTED_RESOLUTION_DATE OLD_EXPECTED_RESOLUTION_DATE ,
8761 'N' CHANGE_RESOLUTION_FLAG ,
8762 'N' NEW_WORKFLOW_FLAG,
8763 TO_CHAR(NULL) WORKFLOW_PROCESS_NAME ,
8764 TO_CHAR(NULL) WORKFLOW_PROCESS_ITEMKEY ,
8765 OWNER_GROUP_ID GROUP_ID ,
8766 OWNER_GROUP_ID OLD_GROUP_ID ,
8767 'N' CHANGE_GROUP_FLAG,
8768 OBLIGATION_DATE OBLIGATION_DATE ,
8769 OBLIGATION_DATE OLD_OBLIGATION_DATE ,
8770 'N' CHANGE_OBLIGATION_FLAG ,
8771 SITE_ID SITE_ID ,
8772 SITE_ID OLD_SITE_ID ,
8773 'N' CHANGE_SITE_FLAG,
8774 BILL_TO_CONTACT_ID BILL_TO_CONTACT_ID ,
8775 BILL_TO_CONTACT_ID OLD_BILL_TO_CONTACT_ID ,
8776 'N' CHANGE_BILL_TO_FLAG,
8777 SHIP_TO_CONTACT_ID SHIP_TO_CONTACT_ID ,
8778 SHIP_TO_CONTACT_ID OLD_SHIP_TO_CONTACT_ID ,
8779 'N' CHANGE_SHIP_TO_FLAG ,
8780 INCIDENT_DATE INCIDENT_DATE ,
8781 INCIDENT_DATE OLD_INCIDENT_DATE,
8782 'N' CHANGE_INCIDENT_DATE_FLAG ,
8783 CLOSE_DATE CLOSE_DATE ,
8784 CLOSE_DATE OLD_CLOSE_DATE ,
8785 'N' CHANGE_CLOSE_DATE_FLAG ,
8786 CUSTOMER_PRODUCT_ID CUSTOMER_PRODUCT_ID ,
8787 CUSTOMER_PRODUCT_ID OLD_CUSTOMER_PRODUCT_ID ,
8788 'N' CHANGE_CUSTOMER_PRODUCT_FLAG ,
8789 PLATFORM_ID PLATFORM_ID ,
8790 PLATFORM_ID OLD_PLATFORM_ID ,
8791 'N' CHANGE_PLATFORM_ID_FLAG ,
8792 PLATFORM_VERSION_ID PLATFORM_VERSION_ID,
8793 PLATFORM_VERSION_ID OLD_PLATFORM_VERSION_ID ,
8794 'N' CHANGE_PLAT_VER_ID_FLAG ,
8795 CP_COMPONENT_ID CP_COMPONENT_ID ,
8796 CP_COMPONENT_ID OLD_CP_COMPONENT_ID ,
8797 'N' CHANGE_CP_COMPONENT_ID_FLAG,
8798 CP_COMPONENT_VERSION_ID CP_COMPONENT_VERSION_ID ,
8799 CP_COMPONENT_VERSION_ID OLD_CP_COMPONENT_VERSION_ID,
8800 'N' CHANGE_CP_COMP_VER_ID_FLAG ,
8801 CP_SUBCOMPONENT_ID CP_SUBCOMPONENT_ID ,
8802 CP_SUBCOMPONENT_ID OLD_CP_SUBCOMPONENT_ID ,
8803 'N' CHANGE_CP_SUBCOMPONENT_ID_FLAG ,
8804 CP_SUBCOMPONENT_VERSION_ID CP_SUBCOMPONENT_VERSION_ID ,
8805 CP_SUBCOMPONENT_VERSION_ID OLD_CP_SUBCOMPONENT_VERSION_ID ,
8806 'N' CHANGE_CP_SUBCOMP_VER_ID_FLAG ,
8807 LANGUAGE_ID LANGUAGE_ID ,
8808 LANGUAGE_ID OLD_LANGUAGE_ID ,
8809 'N' CHANGE_LANGUAGE_ID_FLAG ,
8810 TERRITORY_ID TERRITORY_ID ,
8811 TERRITORY_ID OLD_TERRITORY_ID ,
8812 'N' CHANGE_TERRITORY_ID_FLAG ,
8813 CP_REVISION_ID CP_REVISION_ID ,
8814 CP_REVISION_ID OLD_CP_REVISION_ID ,
8815 'N' CHANGE_CP_REVISION_ID_FLAG ,
8816 INV_ITEM_REVISION INV_ITEM_REVISION ,
8817 INV_ITEM_REVISION OLD_INV_ITEM_REVISION ,
8818 'N' CHANGE_INV_ITEM_REVISION ,
8819 INV_COMPONENT_ID INV_COMPONENT_ID ,
8820 INV_COMPONENT_ID OLD_INV_COMPONENT_ID,
8821 'N' CHANGE_INV_COMPONENT_ID ,
8822 INV_COMPONENT_VERSION INV_COMPONENT_VERSION ,
8823 INV_COMPONENT_VERSION OLD_INV_COMPONENT_VERSION ,
8824 'N' CHANGE_INV_COMPONENT_VERSION ,
8825 INV_SUBCOMPONENT_ID INV_SUBCOMPONENT_ID,
8826 INV_SUBCOMPONENT_ID OLD_INV_SUBCOMPONENT_ID ,
8827 'N' CHANGE_INV_SUBCOMPONENT_ID ,
8828 INV_SUBCOMPONENT_VERSION INV_SUBCOMPONENT_VERSION ,
8829 INV_SUBCOMPONENT_VERSION OLD_INV_SUBCOMPONENT_VERSION ,
8830 'N' CHANGE_INV_SUBCOMP_VERSION ,
8831 RESOURCE_TYPE RESOURCE_TYPE ,
8832 RESOURCE_TYPE OLD_RESOURCE_TYPE,
8833 'N' CHANGE_RESOURCE_TYPE_FLAG ,
8834 SECURITY_GROUP_ID SECURITY_GROUP_ID ,
8835 'N' UPGRADED_STATUS_FLAG,
8836 GROUP_TYPE OLD_GROUP_TYPE ,
8837 GROUP_TYPE GROUP_TYPE ,
8838 'N' CHANGE_GROUP_TYPE_FLAG ,
8839 OWNER_ASSIGNED_TIME OLD_OWNER_ASSIGNED_TIME ,
8840 OWNER_ASSIGNED_TIME OWNER_ASSIGNED_TIME ,
8841 'N' CHANGE_ASSIGNED_TIME_FLAG ,
8842 INV_PLATFORM_ORG_ID INV_PLATFORM_ORG_ID,
8843 INV_PLATFORM_ORG_ID OLD_INV_PLATFORM_ORG_ID ,
8844 'N' CHANGE_PLATFORM_ORG_ID_FLAG,
8845 COMPONENT_VERSION COMPONENT_VERSION ,
8846 COMPONENT_VERSION OLD_COMPONENT_VERSION ,
8847 'N' CHANGE_COMP_VER_FLAG,
8848 SUBCOMPONENT_VERSION SUBCOMPONENT_VERSION ,
8849 SUBCOMPONENT_VERSION OLD_SUBCOMPONENT_VERSION ,
8850 'N' CHANGE_SUBCOMP_VER_FLAG ,
8851 PRODUCT_REVISION PRODUCT_REVISION ,
8852 PRODUCT_REVISION OLD_PRODUCT_REVISION,
8853 'N' CHANGE_PRODUCT_REVISION_FLAG ,
8854 STATUS_FLAG STATUS_FLAG ,
8855 STATUS_FLAG OLD_STATUS_FLAG ,
8856 'N' CHANGE_STATUS_FLAG ,
8857 INVENTORY_ITEM_ID INVENTORY_ITEM_ID ,
8858 INVENTORY_ITEM_ID OLD_INVENTORY_ITEM_ID ,
8859 'N' CHANGE_INVENTORY_ITEM_FLAG,
8860 INV_ORGANIZATION_ID INV_ORGANIZATION_ID ,
8861 INV_ORGANIZATION_ID OLD_INV_ORGANIZATION_ID ,
8862 'N' CHANGE_INV_ORGANIZATION_FLAG ,
8863 PRIMARY_CONTACT_ID PRIMARY_CONTACT_ID ,
8864 'N' CHANGE_PRIMARY_CONTACT_FLAG ,
8865 PRIMARY_CONTACT_ID OLD_PRIMARY_CONTACT_ID ,
8866 TO_CHAR(null) UPGRADE_FLAG_FOR_CREATE,
8867 INCIDENT_NUMBER OLD_INCIDENT_NUMBER,
8868 INCIDENT_NUMBER INCIDENT_NUMBER,
8869 CUSTOMER_ID OLD_CUSTOMER_ID ,
8870 CUSTOMER_ID CUSTOMER_ID ,
8871 BILL_TO_SITE_USE_ID OLD_BILL_TO_SITE_USE_ID,
8872 BILL_TO_SITE_USE_ID BILL_TO_SITE_USE_ID,
8873 EMPLOYEE_ID OLD_EMPLOYEE_ID,
8874 EMPLOYEE_ID EMPLOYEE_ID,
8875 SHIP_TO_SITE_USE_ID OLD_SHIP_TO_SITE_USE_ID,
8876 SHIP_TO_SITE_USE_ID SHIP_TO_SITE_USE_ID,
8877 PROBLEM_CODE OLD_PROBLEM_CODE,
8878 PROBLEM_CODE PROBLEM_CODE,
8879 ACTUAL_RESOLUTION_DATE OLD_ACTUAL_RESOLUTION_DATE,
8880 ACTUAL_RESOLUTION_DATE ACTUAL_RESOLUTION_DATE,
8881 INSTALL_SITE_USE_ID OLD_INSTALL_SITE_USE_ID,
8882 INSTALL_SITE_USE_ID INSTALL_SITE_USE_ID,
8883 CURRENT_SERIAL_NUMBER OLD_CURRENT_SERIAL_NUMBER,
8884 CURRENT_SERIAL_NUMBER CURRENT_SERIAL_NUMBER,
8885 SYSTEM_ID OLD_SYSTEM_ID,
8886 SYSTEM_ID SYSTEM_ID,
8887 INCIDENT_ATTRIBUTE_1 OLD_INCIDENT_ATTRIBUTE_1,
8888 INCIDENT_ATTRIBUTE_1 INCIDENT_ATTRIBUTE_1,
8889 INCIDENT_ATTRIBUTE_2 OLD_INCIDENT_ATTRIBUTE_2 ,
8890 INCIDENT_ATTRIBUTE_2 INCIDENT_ATTRIBUTE_2,
8891 INCIDENT_ATTRIBUTE_3 OLD_INCIDENT_ATTRIBUTE_3,
8892 INCIDENT_ATTRIBUTE_3 INCIDENT_ATTRIBUTE_3,
8893 INCIDENT_ATTRIBUTE_4 OLD_INCIDENT_ATTRIBUTE_4,
8894 INCIDENT_ATTRIBUTE_4 INCIDENT_ATTRIBUTE_4,
8895 INCIDENT_ATTRIBUTE_5 OLD_INCIDENT_ATTRIBUTE_5,
8896 INCIDENT_ATTRIBUTE_5 INCIDENT_ATTRIBUTE_5,
8897 INCIDENT_ATTRIBUTE_6 OLD_INCIDENT_ATTRIBUTE_6,
8898 INCIDENT_ATTRIBUTE_6 INCIDENT_ATTRIBUTE_6,
8899 INCIDENT_ATTRIBUTE_7 OLD_INCIDENT_ATTRIBUTE_7,
8900 INCIDENT_ATTRIBUTE_7 INCIDENT_ATTRIBUTE_7,
8901 INCIDENT_ATTRIBUTE_8 OLD_INCIDENT_ATTRIBUTE_8,
8902 INCIDENT_ATTRIBUTE_8 INCIDENT_ATTRIBUTE_8,
8903 INCIDENT_ATTRIBUTE_9 OLD_INCIDENT_ATTRIBUTE_9,
8904 INCIDENT_ATTRIBUTE_9 INCIDENT_ATTRIBUTE_9,
8905 INCIDENT_ATTRIBUTE_10 OLD_INCIDENT_ATTRIBUTE_10,
8906 INCIDENT_ATTRIBUTE_10 INCIDENT_ATTRIBUTE_10,
8907 INCIDENT_ATTRIBUTE_11 OLD_INCIDENT_ATTRIBUTE_11,
8908 INCIDENT_ATTRIBUTE_11 INCIDENT_ATTRIBUTE_11,
8909 INCIDENT_ATTRIBUTE_12 OLD_INCIDENT_ATTRIBUTE_12,
8910 INCIDENT_ATTRIBUTE_12 INCIDENT_ATTRIBUTE_12,
8911 INCIDENT_ATTRIBUTE_13 OLD_INCIDENT_ATTRIBUTE_13,
8912 INCIDENT_ATTRIBUTE_13 INCIDENT_ATTRIBUTE_13,
8913 INCIDENT_ATTRIBUTE_14 OLD_INCIDENT_ATTRIBUTE_14,
8914 INCIDENT_ATTRIBUTE_14 INCIDENT_ATTRIBUTE_14,
8915 INCIDENT_ATTRIBUTE_15 OLD_INCIDENT_ATTRIBUTE_15,
8916 INCIDENT_ATTRIBUTE_15 INCIDENT_ATTRIBUTE_15,
8917 INCIDENT_CONTEXT OLD_INCIDENT_CONTEXT,
8918 INCIDENT_CONTEXT INCIDENT_CONTEXT,
8919 RESOLUTION_CODE OLD_RESOLUTION_CODE,
8920 RESOLUTION_CODE RESOLUTION_CODE,
8921 ORIGINAL_ORDER_NUMBER OLD_ORIGINAL_ORDER_NUMBER,
8922 ORIGINAL_ORDER_NUMBER ORIGINAL_ORDER_NUMBER,
8923 ORG_ID OLD_ORG_ID,
8924 ORG_ID ORG_ID,
8925 PURCHASE_ORDER_NUM OLD_PURCHASE_ORDER_NUMBER,
8926 PURCHASE_ORDER_NUM PURCHASE_ORDER_NUMBER,
8927 PUBLISH_FLAG OLD_PUBLISH_FLAG,
8928 PUBLISH_FLAG PUBLISH_FLAG,
8929 QA_COLLECTION_ID OLD_QA_COLLECTION_ID,
8930 QA_COLLECTION_ID QA_COLLECTION_ID,
8931 CONTRACT_ID OLD_CONTRACT_ID,
8932 CONTRACT_ID CONTRACT_ID,
8933 CONTRACT_NUMBER OLD_CONTRACT_NUMBER,
8934 CONTRACT_NUMBER CONTRACT_NUMBER,
8935 CONTRACT_SERVICE_ID OLD_CONTRACT_SERVICE_ID,
8936 CONTRACT_SERVICE_ID CONTRACT_SERVICE_ID,
8937 TIME_ZONE_ID OLD_TIME_ZONE_ID,
8938 TIME_ZONE_ID TIME_ZONE_ID,
8939 ACCOUNT_ID OLD_ACCOUNT_ID,
8940 ACCOUNT_ID ACCOUNT_ID,
8941 TIME_DIFFERENCE OLD_TIME_DIFFERENCE,
8942 TIME_DIFFERENCE TIME_DIFFERENCE,
8943 CUSTOMER_PO_NUMBER OLD_CUSTOMER_PO_NUMBER,
8944 CUSTOMER_PO_NUMBER CUSTOMER_PO_NUMBER,
8945 CUSTOMER_TICKET_NUMBER OLD_CUSTOMER_TICKET_NUMBER,
8946 CUSTOMER_TICKET_NUMBER CUSTOMER_TICKET_NUMBER,
8947 CUSTOMER_SITE_ID OLD_CUSTOMER_SITE_ID,
8948 CUSTOMER_SITE_ID CUSTOMER_SITE_ID,
8949 CALLER_TYPE OLD_CALLER_TYPE,
8950 CALLER_TYPE CALLER_TYPE,
8951 SECURITY_GROUP_ID OLD_SECURITY_GROUP_ID,
8952 ORIG_SYSTEM_REFERENCE OLD_ORIG_SYSTEM_REFERENCE,
8953 ORIG_SYSTEM_REFERENCE ORIG_SYSTEM_REFERENCE,
8954 ORIG_SYSTEM_REFERENCE_ID OLD_ORIG_SYSTEM_REFERENCE_ID,
8955 ORIG_SYSTEM_REFERENCE_ID ORIG_SYSTEM_REFERENCE_ID,
8956 REQUEST_ID REQUEST_ID,
8957 PROGRAM_APPLICATION_ID PROGRAM_APPLICATION_ID,
8958 PROGRAM_ID PROGRAM_ID,
8959 PROGRAM_UPDATE_DATE PROGRAM_UPDATE_DATE,
8960 PROJECT_NUMBER OLD_PROJECT_NUMBER,
8961 PROJECT_NUMBER PROJECT_NUMBER,
8962 PLATFORM_VERSION OLD_PLATFORM_VERSION,
8963 PLATFORM_VERSION PLATFORM_VERSION,
8964 DB_VERSION OLD_DB_VERSION,
8965 DB_VERSION DB_VERSION,
8966 CUST_PREF_LANG_ID OLD_CUST_PREF_LANG_ID,
8967 CUST_PREF_LANG_ID CUST_PREF_LANG_ID,
8968 TIER OLD_TIER,
8969 TIER TIER,
8970 CATEGORY_ID OLD_CATEGORY_ID,
8971 CATEGORY_ID CATEGORY_ID,
8972 OPERATING_SYSTEM OLD_OPERATING_SYSTEM,
8973 OPERATING_SYSTEM OPERATING_SYSTEM,
8974 OPERATING_SYSTEM_VERSION OLD_OPERATING_SYSTEM_VERSION,
8975 OPERATING_SYSTEM_VERSION OPERATING_SYSTEM_VERSION,
8976 DATABASE OLD_DATABASE ,
8977 DATABASE DATABASE,
8978 GROUP_TERRITORY_ID OLD_GROUP_TERRITORY_ID,
8979 GROUP_TERRITORY_ID GROUP_TERRITORY_ID,
8980 COMM_PREF_CODE OLD_COMM_PREF_CODE,
8981 COMM_PREF_CODE COMM_PREF_CODE,
8982 LAST_UPDATE_CHANNEL OLD_LAST_UPDATE_CHANNEL,
8983 LAST_UPDATE_CHANNEL LAST_UPDATE_CHANNEL,
8984 CUST_PREF_LANG_CODE OLD_CUST_PREF_LANG_CODE,
8985 CUST_PREF_LANG_CODE CUST_PREF_LANG_CODE,
8986 ERROR_CODE OLD_ERROR_CODE,
8987 ERROR_CODE ERROR_CODE,
8988 CATEGORY_SET_ID OLD_CATEGORY_SET_ID,
8989 CATEGORY_SET_ID CATEGORY_SET_ID,
8990 EXTERNAL_REFERENCE OLD_EXTERNAL_REFERENCE,
8991 EXTERNAL_REFERENCE EXTERNAL_REFERENCE,
8992 INCIDENT_OCCURRED_DATE OLD_INCIDENT_OCCURRED_DATE,
8993 INCIDENT_OCCURRED_DATE INCIDENT_OCCURRED_DATE,
8994 INCIDENT_RESOLVED_DATE OLD_INCIDENT_RESOLVED_DATE,
8995 INCIDENT_RESOLVED_DATE INCIDENT_RESOLVED_DATE,
8996 INC_RESPONDED_BY_DATE OLD_INC_RESPONDED_BY_DATE,
8997 INC_RESPONDED_BY_DATE INC_RESPONDED_BY_DATE,
8998 INCIDENT_LOCATION_ID OLD_INCIDENT_LOCATION_ID ,
8999 INCIDENT_LOCATION_ID INCIDENT_LOCATION_ID,
9000 INCIDENT_ADDRESS OLD_INCIDENT_ADDRESS,
9001 INCIDENT_ADDRESS INCIDENT_ADDRESS,
9002 INCIDENT_CITY OLD_INCIDENT_CITY,
9003 INCIDENT_CITY INCIDENT_CITY,
9004 INCIDENT_STATE OLD_INCIDENT_STATE,
9005 INCIDENT_STATE INCIDENT_STATE,
9006 INCIDENT_COUNTRY OLD_INCIDENT_COUNTRY,
9007 INCIDENT_COUNTRY INCIDENT_COUNTRY,
9008 INCIDENT_PROVINCE OLD_INCIDENT_PROVINCE,
9009 INCIDENT_PROVINCE INCIDENT_PROVINCE,
9010 INCIDENT_POSTAL_CODE OLD_INCIDENT_POSTAL_CODE,
9011 INCIDENT_POSTAL_CODE INCIDENT_POSTAL_CODE,
9012 INCIDENT_COUNTY OLD_INCIDENT_COUNTY,
9013 INCIDENT_COUNTY INCIDENT_COUNTY,
9014 SR_CREATION_CHANNEL OLD_SR_CREATION_CHANNEL,
9015 SR_CREATION_CHANNEL SR_CREATION_CHANNEL,
9016 DEF_DEFECT_ID OLD_DEF_DEFECT_ID,
9017 DEF_DEFECT_ID DEF_DEFECT_ID,
9018 DEF_DEFECT_ID2 OLD_DEF_DEFECT_ID2,
9019 DEF_DEFECT_ID2 DEF_DEFECT_ID2,
9020 EXTERNAL_ATTRIBUTE_1 OLD_EXTERNAL_ATTRIBUTE_1,
9021 EXTERNAL_ATTRIBUTE_1 EXTERNAL_ATTRIBUTE_1,
9022 EXTERNAL_ATTRIBUTE_2 OLD_EXTERNAL_ATTRIBUTE_2,
9023 EXTERNAL_ATTRIBUTE_2 EXTERNAL_ATTRIBUTE_2,
9024 EXTERNAL_ATTRIBUTE_3 OLD_EXTERNAL_ATTRIBUTE_3,
9025 EXTERNAL_ATTRIBUTE_3 EXTERNAL_ATTRIBUTE_3,
9026 EXTERNAL_ATTRIBUTE_4 OLD_EXTERNAL_ATTRIBUTE_4,
9027 EXTERNAL_ATTRIBUTE_4 EXTERNAL_ATTRIBUTE_4,
9028 EXTERNAL_ATTRIBUTE_5 OLD_EXTERNAL_ATTRIBUTE_5,
9029 EXTERNAL_ATTRIBUTE_5 EXTERNAL_ATTRIBUTE_5,
9030 EXTERNAL_ATTRIBUTE_6 OLD_EXTERNAL_ATTRIBUTE_6,
9031 EXTERNAL_ATTRIBUTE_6 EXTERNAL_ATTRIBUTE_6,
9032 EXTERNAL_ATTRIBUTE_7 OLD_EXTERNAL_ATTRIBUTE_7,
9033 EXTERNAL_ATTRIBUTE_7 EXTERNAL_ATTRIBUTE_7,
9034 EXTERNAL_ATTRIBUTE_8 OLD_EXTERNAL_ATTRIBUTE_8,
9035 EXTERNAL_ATTRIBUTE_8 EXTERNAL_ATTRIBUTE_8,
9036 EXTERNAL_ATTRIBUTE_9 OLD_EXTERNAL_ATTRIBUTE_9,
9037 EXTERNAL_ATTRIBUTE_9 EXTERNAL_ATTRIBUTE_9,
9038 EXTERNAL_ATTRIBUTE_10 OLD_EXTERNAL_ATTRIBUTE_10,
9039 EXTERNAL_ATTRIBUTE_10 EXTERNAL_ATTRIBUTE_10,
9040 EXTERNAL_ATTRIBUTE_11 OLD_EXTERNAL_ATTRIBUTE_11,
9041 EXTERNAL_ATTRIBUTE_11 EXTERNAL_ATTRIBUTE_11,
9042 EXTERNAL_ATTRIBUTE_12 OLD_EXTERNAL_ATTRIBUTE_12,
9043 EXTERNAL_ATTRIBUTE_12 EXTERNAL_ATTRIBUTE_12,
9044 EXTERNAL_ATTRIBUTE_13 OLD_EXTERNAL_ATTRIBUTE_13,
9045 EXTERNAL_ATTRIBUTE_13 EXTERNAL_ATTRIBUTE_13,
9046 EXTERNAL_ATTRIBUTE_14 OLD_EXTERNAL_ATTRIBUTE_14,
9047 EXTERNAL_ATTRIBUTE_14 EXTERNAL_ATTRIBUTE_14,
9048 EXTERNAL_ATTRIBUTE_15 OLD_EXTERNAL_ATTRIBUTE_15,
9049 EXTERNAL_ATTRIBUTE_15 EXTERNAL_ATTRIBUTE_15,
9050 EXTERNAL_CONTEXT OLD_EXTERNAL_CONTEXT,
9051 EXTERNAL_CONTEXT EXTERNAL_CONTEXT,
9052 LAST_UPDATE_PROGRAM_CODE OLD_LAST_UPDATE_PROGRAM_CODE,
9053 LAST_UPDATE_PROGRAM_CODE LAST_UPDATE_PROGRAM_CODE,
9054 CREATION_PROGRAM_CODE OLD_CREATION_PROGRAM_CODE,
9055 CREATION_PROGRAM_CODE CREATION_PROGRAM_CODE,
9056 COVERAGE_TYPE OLD_COVERAGE_TYPE,
9057 COVERAGE_TYPE COVERAGE_TYPE,
9058 BILL_TO_ACCOUNT_ID OLD_BILL_TO_ACCOUNT_ID,
9059 BILL_TO_ACCOUNT_ID BILL_TO_ACCOUNT_ID,
9060 SHIP_TO_ACCOUNT_ID OLD_SHIP_TO_ACCOUNT_ID,
9061 SHIP_TO_ACCOUNT_ID SHIP_TO_ACCOUNT_ID,
9062 CUSTOMER_EMAIL_ID OLD_CUSTOMER_EMAIL_ID,
9063 CUSTOMER_EMAIL_ID CUSTOMER_EMAIL_ID,
9064 CUSTOMER_PHONE_ID OLD_CUSTOMER_PHONE_ID,
9065 CUSTOMER_PHONE_ID CUSTOMER_PHONE_ID,
9066 BILL_TO_PARTY_ID OLD_BILL_TO_PARTY_ID,
9067 BILL_TO_PARTY_ID BILL_TO_PARTY_ID,
9068 SHIP_TO_PARTY_ID OLD_SHIP_TO_PARTY_ID,
9069 SHIP_TO_PARTY_ID SHIP_TO_PARTY_ID,
9070 BILL_TO_SITE_ID OLD_BILL_TO_SITE_ID,
9071 BILL_TO_SITE_ID BILL_TO_SITE_ID,
9072 SHIP_TO_SITE_ID OLD_SHIP_TO_SITE_ID ,
9073 SHIP_TO_SITE_ID SHIP_TO_SITE_ID,
9074 PROGRAM_LOGIN_ID OLD_PROGRAM_LOGIN_ID,
9075 PROGRAM_LOGIN_ID PROGRAM_LOGIN_ID,
9076 INCIDENT_POINT_OF_INTEREST OLD_INCIDENT_POINT_OF_INTEREST,
9077 INCIDENT_POINT_OF_INTEREST INCIDENT_POINT_OF_INTEREST,
9078 INCIDENT_CROSS_STREET OLD_INCIDENT_CROSS_STREET,
9079 INCIDENT_CROSS_STREET INCIDENT_CROSS_STREET,
9080 INCIDENT_DIRECTION_QUALIFIER OLD_INCIDENT_DIRECTION_QUALIF,
9081 INCIDENT_DIRECTION_QUALIFIER INCIDENT_DIRECTION_QUALIF,
9082 INCIDENT_DISTANCE_QUALIFIER OLD_INCIDENT_DISTANCE_QUALIF,
9083 INCIDENT_DISTANCE_QUALIFIER INCIDENT_DISTANCE_QUALIF,
9084 INCIDENT_DISTANCE_QUAL_UOM OLD_INCIDENT_DISTANCE_QUAL_UOM,
9085 INCIDENT_DISTANCE_QUAL_UOM INCIDENT_DISTANCE_QUAL_UOM,
9086 INCIDENT_ADDRESS2 OLD_INCIDENT_ADDRESS2,
9087 INCIDENT_ADDRESS2 INCIDENT_ADDRESS2,
9088 INCIDENT_ADDRESS3 OLD_INCIDENT_ADDRESS3,
9089 INCIDENT_ADDRESS3 INCIDENT_ADDRESS3,
9090 INCIDENT_ADDRESS4 OLD_INCIDENT_ADDRESS4,
9091 INCIDENT_ADDRESS4 INCIDENT_ADDRESS4,
9092 INCIDENT_ADDRESS_STYLE OLD_INCIDENT_ADDRESS_STYLE,
9093 INCIDENT_ADDRESS_STYLE INCIDENT_ADDRESS_STYLE,
9094 INCIDENT_ADDR_LINES_PHONETIC OLD_INCIDENT_ADDR_LNS_PHONETIC,
9095 INCIDENT_ADDR_LINES_PHONETIC INCIDENT_ADDR_LNS_PHONETIC,
9096 INCIDENT_PO_BOX_NUMBER OLD_INCIDENT_PO_BOX_NUMBER,
9097 INCIDENT_PO_BOX_NUMBER INCIDENT_PO_BOX_NUMBER,
9098 INCIDENT_HOUSE_NUMBER OLD_INCIDENT_HOUSE_NUMBER,
9099 INCIDENT_HOUSE_NUMBER INCIDENT_HOUSE_NUMBER,
9100 INCIDENT_STREET_SUFFIX OLD_INCIDENT_STREET_SUFFIX,
9101 INCIDENT_STREET_SUFFIX INCIDENT_STREET_SUFFIX,
9102 INCIDENT_STREET OLD_INCIDENT_STREET,
9103 INCIDENT_STREET INCIDENT_STREET,
9104 INCIDENT_STREET_NUMBER OLD_INCIDENT_STREET_NUMBER,
9105 INCIDENT_STREET_NUMBER INCIDENT_STREET_NUMBER,
9106 INCIDENT_FLOOR OLD_INCIDENT_FLOOR,
9107 INCIDENT_FLOOR INCIDENT_FLOOR,
9108 INCIDENT_SUITE OLD_INCIDENT_SUITE,
9109 INCIDENT_SUITE INCIDENT_SUITE,
9110 INCIDENT_POSTAL_PLUS4_CODE OLD_INCIDENT_POSTAL_PLUS4_CODE,
9111 INCIDENT_POSTAL_PLUS4_CODE INCIDENT_POSTAL_PLUS4_CODE,
9112 INCIDENT_POSITION OLD_INCIDENT_POSITION,
9113 INCIDENT_POSITION INCIDENT_POSITION,
9114 INCIDENT_LOCATION_DIRECTIONS OLD_INCIDENT_LOC_DIRECTIONS,
9115 INCIDENT_LOCATION_DIRECTIONS INCIDENT_LOC_DIRECTIONS,
9116 INCIDENT_LOCATION_DESCRIPTION OLD_INCIDENT_LOC_DESCRIPTION,
9117 INCIDENT_LOCATION_DESCRIPTION INCIDENT_LOC_DESCRIPTION,
9118 INSTALL_SITE_ID OLD_INSTALL_SITE_ID,
9119 INSTALL_SITE_ID INSTALL_SITE_ID,
9120 INCIDENT_LAST_MODIFIED_DATE INCIDENT_LAST_MODIFIED_DATE,
9121 TO_CHAR(null) UPDATED_ENTITY_CODE,
9122 TO_NUMBER(null) UPDATED_ENTITY_ID,
9123 TO_CHAR(null) ENTITY_ACTIVITY_CODE,
9124 TIER_VERSION OLD_TIER_VERSION,
9125 TIER_VERSION TIER_VERSION,
9126 OBJECT_VERSION_NUMBER OLD_INC_OBJECT_VERSION_NUMBER ,
9127 OBJECT_VERSION_NUMBER INC_OBJECT_VERSION_NUMBER,
9128 REQUEST_ID OLD_INC_REQUEST_ID,
9129 REQUEST_ID INC_REQUEST_ID,
9130 PROGRAM_APPLICATION_ID OLD_INC_PROGRAM_APPLICATION_ID,
9131 PROGRAM_APPLICATION_ID INC_PROGRAM_APPLICATION_ID,
9132 PROGRAM_ID OLD_INC_PROGRAM_ID,
9133 PROGRAM_ID INC_PROGRAM_ID,
9134 PROGRAM_UPDATE_DATE OLD_INC_PROGRAM_UPDATE_DATE,
9135 PROGRAM_UPDATE_DATE INC_PROGRAM_UPDATE_DATE,
9136 OWNING_DEPARTMENT_ID OLD_OWNING_DEPARTMENT_ID ,
9137 OWNING_DEPARTMENT_ID OWNING_DEPARTMENT_ID,
9138 INCIDENT_LOCATION_TYPE OLD_INCIDENT_LOCATION_TYPE,
9139 INCIDENT_LOCATION_TYPE INCIDENT_LOCATION_TYPE,
9140 UNASSIGNED_INDICATOR OLD_UNASSIGNED_INDICATOR,
9141 UNASSIGNED_INDICATOR UNASSIGNED_INDICATOR,
9142 MAINT_ORGANIZATION_ID OLD_MAINT_ORGANIZATION_ID,
9143 MAINT_ORGANIZATION_ID MAINT_ORGANIZATION_ID
9144 FROM cs_incidents_all_b
9145 WHERE incident_id = p_request_id;
9146
9147 l_audit_vals_rec CS_ServiceRequest_PVT.SR_AUDIT_REC_TYPE;
9148 l_api_name CONSTANT VARCHAR2(30) := 'Prepare_Audit_Record';
9149 l_api_version CONSTANT NUMBER := 1.0;
9150
9151 BEGIN
9152
9153 -- Initialize return status to SUCCESS
9154 x_return_status := FND_API.G_RET_STS_SUCCESS;
9155
9156 OPEN l_ServiceRequest_csr;
9157 FETCH l_ServiceRequest_csr INTO x_audit_vals_rec;
9158
9159 IF ( l_ServiceRequest_csr%NOTFOUND ) THEN
9160
9161 CS_ServiceRequest_UTIL.Add_Invalid_Argument_Msg
9162 ( p_token_an => l_api_name,
9163 p_token_v => TO_CHAR(p_request_id),
9164 p_token_p => 'p_request_id',
9165 p_table_name => 'CS_INCIDENTS_ALL_B',
9166 p_column_name => 'REQUEST_ID' );
9167 CLOSE l_ServiceRequest_csr;
9168 ELSE
9169 CLOSE l_ServiceRequest_csr;
9170 END IF;
9171
9172
9173 END Prepare_Audit_Record;
9174 --
9175 -- -------------------------------------------------------------------
9176 -- Validate_Desc_Flex
9177 -- -------------------------------------------------------------------
9178
9179 PROCEDURE Validate_Desc_Flex
9180 ( p_api_name IN VARCHAR2,
9181 p_application_short_name IN VARCHAR2,
9182 p_desc_flex_name IN VARCHAR2,
9183 p_desc_segment1 IN VARCHAR2,
9184 p_desc_segment2 IN VARCHAR2,
9185 p_desc_segment3 IN VARCHAR2,
9186 p_desc_segment4 IN VARCHAR2,
9187 p_desc_segment5 IN VARCHAR2,
9188 p_desc_segment6 IN VARCHAR2,
9189 p_desc_segment7 IN VARCHAR2,
9190 p_desc_segment8 IN VARCHAR2,
9191 p_desc_segment9 IN VARCHAR2,
9192 p_desc_segment10 IN VARCHAR2,
9193 p_desc_segment11 IN VARCHAR2,
9194 p_desc_segment12 IN VARCHAR2,
9195 p_desc_segment13 IN VARCHAR2,
9196 p_desc_segment14 IN VARCHAR2,
9197 p_desc_segment15 IN VARCHAR2,
9198 p_desc_context IN VARCHAR2,
9199 p_resp_appl_id IN NUMBER := NULL,
9200 p_resp_id IN NUMBER := NULL,
9201 p_return_status OUT NOCOPY VARCHAR2
9202 )
9203 IS
9204 l_error_message VARCHAR2(2000);
9205 BEGIN
9206 -- Initialize API return status to success
9207 p_return_status := FND_API.G_RET_STS_SUCCESS;
9208
9209
9210 IF ( p_desc_context || p_desc_segment1 || p_desc_segment2 ||
9211 p_desc_segment3 || p_desc_segment4 || p_desc_segment5 ||
9212 p_desc_segment6 || p_desc_segment7 || p_desc_segment8 ||
9213 p_desc_segment9 || p_desc_segment10 || p_desc_segment11 ||
9214 p_desc_segment12 || p_desc_segment13 || p_desc_segment14 ||
9215 p_desc_segment15
9216 ) IS NOT NULL THEN
9217
9218 FND_FLEX_DESCVAL.Set_Context_Value(p_desc_context);
9219
9220 FND_FLEX_DESCVAL.Set_Column_Value('INCIDENT_ATTRIBUTE_1', p_desc_segment1);
9221 FND_FLEX_DESCVAL.Set_Column_Value('INCIDENT_ATTRIBUTE_2', p_desc_segment2);
9222 FND_FLEX_DESCVAL.Set_Column_Value('INCIDENT_ATTRIBUTE_3', p_desc_segment3);
9223 FND_FLEX_DESCVAL.Set_Column_Value('INCIDENT_ATTRIBUTE_4', p_desc_segment4);
9224 FND_FLEX_DESCVAL.Set_Column_Value('INCIDENT_ATTRIBUTE_5', p_desc_segment5);
9225 FND_FLEX_DESCVAL.Set_Column_Value('INCIDENT_ATTRIBUTE_6', p_desc_segment6);
9226 FND_FLEX_DESCVAL.Set_Column_Value('INCIDENT_ATTRIBUTE_7', p_desc_segment7);
9227 FND_FLEX_DESCVAL.Set_Column_Value('INCIDENT_ATTRIBUTE_8', p_desc_segment8);
9228 FND_FLEX_DESCVAL.Set_Column_Value('INCIDENT_ATTRIBUTE_9', p_desc_segment9);
9229 FND_FLEX_DESCVAL.Set_Column_Value('INCIDENT_ATTRIBUTE_10', p_desc_segment10);
9230 FND_FLEX_DESCVAL.Set_Column_Value('INCIDENT_ATTRIBUTE_11', p_desc_segment11);
9231 FND_FLEX_DESCVAL.Set_Column_Value('INCIDENT_ATTRIBUTE_12', p_desc_segment12);
9232 FND_FLEX_DESCVAL.Set_Column_Value('INCIDENT_ATTRIBUTE_13', p_desc_segment13);
9233 FND_FLEX_DESCVAL.Set_Column_Value('INCIDENT_ATTRIBUTE_14', p_desc_segment14);
9234 FND_FLEX_DESCVAL.Set_Column_Value('INCIDENT_ATTRIBUTE_15', p_desc_segment15);
9235
9236 IF NOT FND_FLEX_DESCVAL.Validate_Desccols
9237 ( appl_short_name => p_application_short_name,
9238 desc_flex_name => p_desc_flex_name,
9239 resp_appl_id => p_resp_appl_id,
9240 resp_id => p_resp_id
9241 ) THEN
9242 l_error_message := FND_FLEX_DESCVAL.Error_Message;
9243 CS_ServiceRequest_UTIL.Add_Desc_Flex_Msg(p_api_name, l_error_message);
9244 p_return_status := FND_API.G_RET_STS_ERROR;
9245 END IF;
9246 END IF;
9247
9248 END Validate_Desc_Flex;
9249 -- -----------------------------------------------------------------------------
9250 -- Procedure Name : validate_party_role_code
9251 -- Parameter :
9252 -- IN : p_party_role_code This is a foreign key to table
9253 -- cs_pary_roles_b
9254 -- : x_return_status Indicates success or error condition
9255 -- encountered by the procedure
9256 -- Description : This procedure checks whether party role code exist in
9257 -- party role table and is active on system date or not.
9258 -- Modification History
9259 -- Date Name Description
9260 ---------- -------- ------------------------------------------------------------
9261 -- 04/21/05 smisra Created
9262 -- 05/12/05 smisra Changed the database column names
9263 -- effective_[start|end]_date to [start|end]_date_active
9264 -- -----------------------------------------------------------------------------
9265 PROCEDURE validate_party_role_code
9266 ( p_party_role_code IN VARCHAR2
9267 , x_return_status OUT NOCOPY VARCHAR2
9268 ) IS
9269 l_start_dt DATE;
9270 l_end_dt DATE;
9271 l_sys_dt DATE;
9272 CURSOR c_party_role IS
9273 SELECT
9274 NVL(start_date_active, SYSDATE-1)
9275 , NVL(end_date_active , SYSDATE+1)
9276 FROM
9277 cs_party_roles_b
9278 WHERE party_role_code = p_party_role_code;
9279 BEGIN
9280 x_return_status := FND_API.G_RET_STS_SUCCESS;
9281 l_sys_dt := SYSDATE;
9282 IF p_party_role_code <> 'CONTACT'
9283 THEN
9284 OPEN c_party_role;
9285 FETCH c_party_role INTO l_start_dt, l_end_dt;
9286
9287 IF c_party_role % NOTFOUND
9288 THEN
9289 x_return_status := FND_API.G_RET_STS_ERROR;
9290 FND_MESSAGE.set_name('CS','CS_SR_PARTY_ROLE_NE');
9291 FND_MESSAGE.set_token('API_NAME','cs_servicerequest_util.validate_party_role_code');
9292 FND_MESSAGE.set_token('PARTY_ROLE_CODE',p_party_role_code);
9293 FND_MSG_PUB.add_detail(p_associated_column1 => 'cs_hz_sr_contact_points.party_role_code');
9294 --FND_MSG_PUB.ADD_DETAIL(p_associated_column1 => l_associated_col1);
9295 ELSIF l_sys_dt < NVL(l_start_dt, l_sys_dt) OR
9296 l_sys_dt > NVL(l_end_dt , l_sys_dt)
9297 THEN
9298 x_return_status := FND_API.G_RET_STS_ERROR;
9299 FND_MESSAGE.set_name('CS','CS_SR_PARTYROLE_INACTIVE');
9300 FND_MESSAGE.set_token('API_NAME','cs_servicerequest_util.validate_party_role_code');
9301 FND_MESSAGE.set_token('PARTY_ROLE_CODE',p_party_role_code);
9302 FND_MSG_PUB.add_detail(p_associated_column1 => 'cs_hz_sr_contact_points.party_role_code');
9303 END IF;
9304 CLOSE c_party_role;
9305 END IF;
9306 --
9307 EXCEPTION
9308 WHEN OTHERS THEN
9309 IF c_party_role%ISOPEN
9310 THEN
9311 CLOSE c_party_role;
9312 END IF;
9313 FND_MESSAGE.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
9314 FND_MESSAGE.set_token('P_TEXT','CS_SERVICEREQUEST_UTIL.validate_party_role_code'||'-'||SQLERRM);
9315 FND_MSG_PUB.ADD;
9316 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9317 END validate_party_role_code;
9318 -- -----------------------------------------------------------------------------
9319 -- Procedure Name : validate_org_id
9320 -- Parameter :
9321 -- IN : p_org_id This is a foreign key to table
9322 -- hr_all_organization_units
9323 -- : x_return_status Indicates success or error condition
9324 -- encountered by the procedure
9325 -- Description : This procedure checks whether org id exist in
9326 -- hr organization table and is active on system date or not.
9327 -- Modification History
9328 -- Date Name Description
9329 ---------- -------- ------------------------------------------------------------
9330 -- 04/21/05 smisra Created
9331 -- 08/15/05 smisra Changed the table name from hr_all_organization_units to
9332 -- hr_operating_units
9333 -- 8/25/05 smisra truncated local variable l_sys_dt because table
9334 -- hr_operating_units does not store time component.
9335 -- -----------------------------------------------------------------------------
9336 PROCEDURE validate_org_id
9337 ( p_org_id NUMBER
9338 , x_return_status OUT NOCOPY VARCHAR2
9339 ) IS
9340 l_dt_from DATE;
9341 l_dt_to DATE;
9342 l_sys_dt DATE;
9343 BEGIN
9344 x_return_status := FND_API.G_RET_STS_SUCCESS;
9345 l_sys_dt := TRUNC(SYSDATE);
9346 SELECT
9347 date_from
9348 , date_to
9349 INTO
9350 l_dt_from
9351 , l_dt_to
9352 FROM
9353 hr_operating_units
9354 WHERE organization_id = p_org_id;
9355 IF l_sys_dt < NVL(l_dt_from, l_sys_dt) OR
9356 l_sys_dt > NVL(l_dt_to , l_sys_dt)
9357 THEN
9358 FND_MESSAGE.set_name ('CS', 'CS_SR_ORG_ID_INACTIVE');
9359 FND_MESSAGE.set_token ('API_NAME', 'CS_SERVICEREQUEST_UTIL.validate_org_id');
9360 FND_MESSAGE.set_token ('ORG_ID', p_org_id);
9361 FND_MSG_PUB.ADD;
9362 x_return_status := FND_API.G_RET_STS_ERROR;
9363 END IF;
9364 EXCEPTION
9365 WHEN NO_DATA_FOUND THEN
9366 x_return_status := FND_API.G_RET_STS_ERROR;
9367 Add_Invalid_Argument_Msg
9368 ( p_token_an => 'cs_servicerequest_util.validate_org_id'
9369 , p_token_v => TO_CHAR(p_org_id)
9370 , p_token_p => 'p_org_id'
9371 , p_table_name => G_TABLE_NAME
9372 , p_column_name => 'ORG_ID'
9373 );
9374 WHEN OTHERS THEN
9375 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
9376 fnd_message.set_token ('P_TEXT','cs_servicerequest_util.validate_org_id'||'-'||SQLERRM);
9377 fnd_msg_pub.ADD;
9378 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9379 END validate_org_id;
9380 -- -----------------------------------------------------------------------------
9381 -- Procedure Name : validate_maint_organization_id
9382 -- Parameter :
9383 -- IN : p_maint_organization_id maintenance organization
9384 -- : p_inventory_org_id Inventory organization id
9385 -- : p_inv_org_master_org_flag
9386 -- Indicates if inv org is a master Org
9387 -- OUT : x_return_stauts indicates if validation failed or
9388 -- succeeded
9389 -- Description : This procedure check if maint org exists in mtl paramters
9390 -- table, it is EAM enable. If inventory org is passed then
9391 -- it should be same as master organization associated with
9392 -- maintenance organization.
9393 -- Modification History
9394 -- Date Name Description
9395 ----------- -------- -----------------------------------------------------------
9396 -- 05/05/05 smisra Created
9397 -- 08/03/05 smisra Add param p_inv_org_master_org_flag
9398 -- if p_inv_org_master_org_flag is 'Y' then master org for
9399 -- maint_organization should be same as inv org
9400 -- -----------------------------------------------------------------------------
9401 PROCEDURE validate_maint_organization_id
9402 ( p_maint_organization_id IN NUMBER
9403 , p_inventory_org_id IN NUMBER
9404 , p_inv_org_master_org_flag IN VARCHAR2
9405 , x_return_status OUT NOCOPY VARCHAR2
9406 ) IS
9407 l_eam_enabled mtl_parameters.eam_enabled_flag % TYPE;
9408 l_maint_org_id mtl_parameters.maint_organization_id % TYPE;
9409 l_master_org_id mtl_parameters.master_organization_id % TYPE;
9410 l_api_name_full VARCHAR2(61);
9411 l_col VARCHAR2(61);
9412 BEGIN
9413 l_api_name_full := G_PKG_NAME || '.validate_maint_organization_id';
9414 l_col := G_TABLE_NAME || '.MAINT_ORGANIZATION_ID';
9415 x_return_status := FND_API.G_RET_STS_SUCCESS;
9416 IF p_inv_org_master_org_flag = 'N' -- means inv org is not a master org
9417 THEN
9418 get_org_details
9419 ( p_org_id => p_inventory_org_id
9420 , x_eam_enabled_flag => l_eam_enabled
9421 , x_maint_org_id => l_maint_org_id
9422 , x_master_org_id => l_master_org_id
9423 , x_return_Status => x_return_status
9424 );
9425 IF x_return_status <> FND_API.G_RET_STS_SUCCESS
9426 THEN
9427 Add_Invalid_Argument_Msg
9428 ( p_token_an => l_api_name_full
9429 , p_token_v => to_char(p_inventory_org_id)
9430 , p_token_p => 'p_inventory_org_id'
9431 , p_table_name => G_TABLE_NAME
9432 , p_column_name => 'INVENTORY_ORG_ID'
9433 );
9434 ELSIF NVL(l_maint_org_id,-99) <> p_maint_organization_id
9435 THEN
9436 x_return_status := FND_API.G_RET_STS_ERROR;
9437 FND_MESSAGE.set_name ('CS' , 'CS_SR_INV_ORG_NOT_MAINT_BY');
9438 FND_MESSAGE.set_token ('API_NAME', l_api_name_full);
9439 FND_MESSAGE.set_token ('MAINT_ORG_ID' , TO_CHAR(p_maint_organization_id));
9440 FND_MESSAGE.set_token ('INV_ORG_ID' , TO_CHAR(p_inventory_org_id));
9441 FND_MSG_PUB.add_detail(p_associated_column1 => l_col);
9442 END IF;
9443 ELSE -- inv org is a master org or inv org is not passed
9444 get_org_details
9445 ( p_org_id => p_maint_organization_id
9446 , x_eam_enabled_flag => l_eam_enabled
9447 , x_maint_org_id => l_maint_org_id
9448 , x_master_org_id => l_master_org_id
9449 , x_return_Status => x_return_status
9450 );
9451 IF x_return_status <> FND_API.G_RET_STS_SUCCESS
9452 THEN
9453 Add_Invalid_Argument_Msg
9454 ( p_token_an => l_api_name_full
9455 , p_token_v => to_char(p_maint_organization_id)
9456 , p_token_p => 'p_maint_organization_id'
9457 , p_table_name => G_TABLE_NAME
9458 , p_column_name => 'MAINT_ORGANIZATION_ID'
9459 );
9460 ELSIF l_eam_enabled <> 'Y'
9461 THEN
9462 x_return_status := FND_API.G_RET_STS_ERROR;
9463 FND_MESSAGE.set_name ('CS' , 'CS_SR_MAINT_ORG_NON_EAM');
9464 FND_MESSAGE.set_token ('API_NAME', l_api_name_full);
9465 FND_MESSAGE.set_token ('MAINT_ORG_ID', TO_CHAR(p_maint_organization_id));
9466 FND_MSG_PUB.add_detail(p_associated_column1 => l_col);
9467 ELSIF p_inventory_org_id IS NOT NULL AND
9468 p_inventory_org_id <> FND_API.G_MISS_NUM AND
9469 p_inventory_org_id <> l_master_org_id
9470 THEN
9471 x_return_status := FND_API.G_RET_STS_ERROR;
9472 FND_MESSAGE.set_name ('CS' , 'CS_SR_MAINT_INV_ORG_MISMATCH');
9473 FND_MESSAGE.set_token ('API_NAME' , l_api_name_full);
9474 FND_MESSAGE.set_token ('MAINT_ORG_ID' , TO_CHAR(p_maint_organization_id));
9475 FND_MSG_PUB.add_detail(p_associated_column1 => l_col);
9476 END IF;
9477 END IF;
9478
9479 END validate_maint_organization_id;
9480 -- -----------------------------------------------------------------------------
9481 -- Procedure Name : validate_customer_product_id
9482 -- Parameter :
9483 -- IN : p_customer_product_id This foreign key to
9484 -- csi_item_instances table.
9485 -- : p_customer_id Service Request customer
9486 -- : p_inventory_org_id Inventory organization id
9487 -- : p_maint_organization_id maintenance organization
9488 -- : p_inv_org_master_org_flag
9489 -- Indicates if inv org is a master Org
9490 -- OUT : x_inventory_item_id Inventory item associated with
9491 -- customer product
9492 -- : x_return_stauts indicates if validation failed or
9493 -- succeeded
9494 -- Description : This procedure performs following checks
9495 -- 1. customer product should exist in csi_item_instances table
9496 -- 2. service request customer should be related to customer
9497 -- product
9498 -- 3. Inventory item associated with customer product should
9499 -- 3.1 enabled
9500 -- 3.2 Service Request enabled
9501 -- 4. If maintenance organization is passed then validation org
9502 -- associated with customer product should be same as
9503 -- maint org or should be maintained by maintenance org
9504 -- 5. if profile 'CS_SR_RESTRICT_IB is 'YES' then customer
9505 -- should be installed at a HZ_PARTY_SITE or HZ_LOCATION
9506 -- Modification History
9507 -- Date Name Description
9508 ----------- -------- -----------------------------------------------------------
9509 -- 05/06/05 smisra Created
9510 -- 08/03/05 smisra Add param p_inv_org_master_org_flag
9511 -- 08/29/05 smisra Corrected message codes and tokens
9512 -- 10/27/05 smisra Correct token name for message CS_SR_LVD_ORG_NOT_MAINT_BY
9513 -- removed variable l_return_Status as it is not used
9514 -- replaced hard coded procedure name in set token calls with
9515 -- a variable to avoid spelling differences
9516 -- -----------------------------------------------------------------------------
9517 PROCEDURE validate_customer_product_id
9518 ( p_customer_product_id IN NUMBER
9519 , p_customer_id IN NUMBER
9520 , p_inventory_org_id IN NUMBER
9521 , p_maint_organization_id IN NUMBER
9522 , p_inv_org_master_org_flag IN VARCHAR2
9523 , p_inventory_item_id IN OUT NOCOPY NUMBER
9524 , x_return_status OUT NOCOPY VARCHAR2
9525 ) IS
9526 --
9527 CURSOR c_prod_rel IS
9528 SELECT 1
9529 FROM csi_i_parties
9530 WHERE instance_id = p_customer_product_id
9531 AND party_id = p_customer_id
9532 AND party_source_table = 'HZ_PARTIES';
9533
9534 l_party_id csi_i_parties.party_id % TYPE;
9535 l_source_table csi_item_instances.owner_party_source_table % TYPE;
9536 l_loc_type csi_item_instances.location_type_code % TYPE;
9537 l_external_ref csi_item_instances.external_reference % TYPE;
9538 l_serial_number csi_item_instances.serial_number % TYPE;
9539 l_inv_org_id mtl_parameters.organization_id % TYPE;
9540 l_maint_org_id mtl_parameters.organization_id % TYPE;
9541 l_master_org_id mtl_parameters.organization_id % TYPE;
9542 l_eam_enabled_flag mtl_parameters.eam_enabled_flag % TYPE;
9543 l_eam_type mtl_system_items_b.eam_item_type % TYPE;
9544 l_inv_item_id mtl_system_items_b.inventory_item_id % TYPE;
9545 l_enabled_flag mtl_system_items_b.enabled_flag % TYPE;
9546 l_last_vld_org_id mtl_system_items_b.inventory_item_id % TYPE;
9547 l_serv_req_enabled mtl_system_items_b.serv_req_enabled_code % TYPE;
9548 l_sys_dt DATE;
9549 l_end_dt DATE;
9550 l_start_dt DATE;
9551 l_dummy NUMBER;
9552 l_proc_name VARCHAR2(61);
9553 BEGIN
9554 l_sys_dt := SYSDATE;
9555 l_proc_name := 'CS_SERVICEREQUEST_UTIL.validate_customer_product_id';
9556 get_customer_product_details
9557 ( p_customer_product_id => p_customer_product_id
9558 , x_party_source_table => l_source_table
9559 , x_party_id => l_party_id
9560 , x_inv_master_org_id => l_inv_org_id
9561 , x_inv_item_id => l_inv_item_id
9562 , x_maint_org_id => l_last_vld_org_id
9563 , x_external_reference => l_external_ref
9564 , x_serial_number => l_serial_number
9565 , x_start_dt_active => l_start_dt
9566 , x_end_dt_active => l_end_dt
9567 , x_loc_type => l_loc_type
9568 , x_return_status => x_return_status
9569 );
9570 IF x_return_status <> FND_API.G_RET_STS_SUCCESS
9571 THEN
9572 RAISE NO_DATA_FOUND;
9573 END IF;
9574 --
9575 IF l_sys_dt < NVL(l_start_dt, l_sys_dt) OR
9576 l_sys_dt > NVL(l_end_dt , l_sys_dt)
9577 THEN
9578 FND_MESSAGE.set_name('CS','CS_SR_CP_INACTIVE');
9579 FND_MESSAGE.set_token('CP_ID',TO_CHAR(p_customer_product_id));
9580 FND_MESSAGE.set_token('API_NAME' , l_proc_name);
9581 FND_MSG_PUB.add_detail(p_associated_column1=> 'CS_INCIDENTS_ALL_B.CUSTOMER_PRODUCT_ID');
9582 RAISE FND_API.G_EXC_ERROR;
9583 END IF;
9584 --
9585 IF CS_SERVICEREQUEST_PVT.g_restrict_ib = 'YES' AND
9586 l_loc_type NOT IN ('HZ_PARTY_SITES', 'HZ_LOCATIONS')
9587 THEN
9588 FND_MESSAGE.set_name('CS','CS_SR_CP_LOCATION_INVALID'); -- Customer porduct installed location is invalid
9589 FND_MESSAGE.set_token('LOC',l_loc_type);
9590 FND_MESSAGE.set_token('CP_ID',TO_CHAR(p_customer_product_id));
9591 FND_MESSAGE.set_token('API_NAME' , l_proc_name);
9592 FND_MSG_PUB.add_detail(p_associated_column1=> 'CS_INCIDENTS_ALL_B.CUSTOMER_PRODUCT_ID');
9593 RAISE FND_API.G_EXC_ERROR;
9594 END IF;
9595 --
9596 IF NVL(l_source_table,'#') <> 'HZ_PARTIES'
9597 THEN
9598 FND_MESSAGE.set_name('CS','CS_SR_CP_CUST_SOURCE_INVALID'); -- product is not for TCA parties
9599 FND_MESSAGE.set_token('PARTY_SOURCE',l_source_table);
9600 FND_MESSAGE.set_token('CP_ID',TO_CHAR(p_customer_product_id));
9601 FND_MSG_PUB.add_detail(p_associated_column1=> 'CS_INCIDENTS_ALL_B.CUSTOMER_PRODUCT_ID');
9602 RAISE FND_API.G_EXC_ERROR;
9603 END IF;
9604 --
9605 IF p_customer_id <> NVL(l_party_id,-1)
9606 THEN
9607 OPEN c_prod_rel;
9608 FETCH c_prod_rel into l_dummy;
9609 IF c_prod_rel % NOTFOUND
9610 THEN
9611 FND_MESSAGE.set_name('CS','CS_SR_CP_CUST_INVALID'); -- cust not related to product
9612 FND_MESSAGE.set_token('CP_ID',TO_CHAR(p_customer_product_id));
9613 FND_MESSAGE.set_token('CUST_ID',TO_CHAR(p_customer_id));
9614 FND_MSG_PUB.add_detail(p_associated_column1=> 'CS_INCIDENTS_ALL_B.CUSTOMER_PRODUCT_ID');
9615 CLOSE c_prod_rel;
9616 RAISE FND_API.G_EXC_ERROR;
9617 ELSE
9618 CLOSE c_prod_rel;
9619 END IF;
9620 END IF;
9621 --
9622 -- if inventory item is passed and is same as inv item associated with
9623 -- customer product then no need to check various flags associated with in v item
9624 -- because these checks were already performed during inv item validation.
9625 IF l_inv_item_id <> NVL(p_inventory_item_id,-1)
9626 THEN
9627 -- get item_details
9628 get_item_details
9629 ( p_inventory_org_id => p_inventory_org_id
9630 , p_inv_item_id => l_inv_item_id
9631 , x_enabled_flag => l_enabled_flag
9632 , x_serv_req_enabled => l_serv_req_enabled
9633 , x_eam_item_type => l_eam_type
9634 , x_start_date_active => l_start_dt
9635 , x_end_date_active => l_end_dt
9636 , x_return_status => x_return_status
9637 );
9638 IF x_return_status <> FND_API.G_RET_STS_SUCCESS
9639 THEN
9640 FND_MESSAGE.set_name('CS','CS_SR_CP_ITEM_ID'); -- item associated with CP does not exists
9641 FND_MESSAGE.set_token('CP_ID',TO_CHAR(p_customer_product_id));
9642 FND_MESSAGE.set_token('INV_ITEM_ID',TO_CHAR(l_inv_item_id));
9643 FND_MSG_PUB.add_detail(p_associated_column1=> 'CS_INCIDENTS_ALL_B.CUSTOMER_PRODUCT_ID');
9644 RAISE FND_API.G_EXC_ERROR;
9645 END IF;
9646 IF l_enabled_flag <> 'Y'
9647 THEN
9648 FND_MESSAGE.set_name('CS','CS_SR_CP_ITEM_DISABLED'); -- item associated with CP is not enabled
9649 FND_MESSAGE.set_token('CP_ID',TO_CHAR(p_customer_product_id));
9650 FND_MESSAGE.set_token('INV_ITEM_ID',TO_CHAR(l_inv_item_id));
9651 FND_MESSAGE.set_token('API_NAME' , l_proc_name);
9652 FND_MSG_PUB.add_detail(p_associated_column1=> 'CS_INCIDENTS_ALL_B.CUSTOMER_PRODUCT_ID');
9653 RAISE FND_API.G_EXC_ERROR;
9654 END IF;
9655 IF l_serv_req_enabled <> 'E'
9656 THEN
9657 FND_MESSAGE.set_name('CS','CS_SR_CP_ITEM_NOT_SERV'); -- item associated with CP is not serviceable
9658 FND_MESSAGE.set_token('CP_ID',TO_CHAR(p_customer_product_id));
9659 FND_MESSAGE.set_token('INV',TO_CHAR(l_inv_item_id));
9660 FND_MESSAGE.set_token('API_NAME' , l_proc_name);
9661 FND_MSG_PUB.add_detail(p_associated_column1=> 'CS_INCIDENTS_ALL_B.CUSTOMER_PRODUCT_ID');
9662 RAISE FND_API.G_EXC_ERROR;
9663 END IF;
9664 IF l_sys_dt < NVL(l_start_dt,l_sys_dt) OR
9665 l_sys_dt > NVL(l_end_dt ,l_sys_dt)
9666 THEN
9667 FND_MESSAGE.set_name('CS','CS_SR_CP_ITEM_INACTIVE'); --Item associated with CP is inactive
9668 FND_MESSAGE.set_token('CP_ID',TO_CHAR(p_customer_product_id));
9669 FND_MESSAGE.set_token('INV_ITEM_ID',TO_CHAR(l_inv_item_id));
9670 FND_MSG_PUB.add_detail(p_associated_column1=> 'CS_INCIDENTS_ALL_B.CUSTOMER_PRODUCT_ID');
9671 RAISE FND_API.G_EXC_ERROR;
9672 END IF;
9673 -- All validations succeeded, so assign item for CP to p_inventory_item_id
9674 p_inventory_item_id := l_inv_item_id;
9675 END IF;
9676 -- Get org infor for last_vld_org
9677 IF p_maint_organization_id IS NOT NULL
9678 THEN
9679 get_org_details
9680 ( p_org_id => l_last_vld_org_id
9681 , x_eam_enabled_flag => l_eam_enabled_flag
9682 , x_maint_org_id => l_maint_org_id
9683 , x_master_org_id => l_master_org_id
9684 , x_return_Status => x_return_status
9685 );
9686 IF x_return_status <> FND_API.G_RET_STS_SUCCESS
9687 THEN
9688 FND_MESSAGE.set_name('CS','CS_SR_CP_LAST_VLD_ORG'); -- Last validation org does not exists
9689 FND_MESSAGE.set_token('CP_ID',TO_CHAR(p_customer_product_id));
9690 FND_MESSAGE.set_token('MAINT_ORG_ID',TO_CHAR(l_last_vld_org_id));
9691 FND_MSG_PUB.add_detail(p_associated_column1=> 'CS_INCIDENTS_ALL_B.CUSTOMER_PRODUCT_ID');
9692 RAISE FND_API.G_EXC_ERROR;
9693 END IF;
9694 /* last vlg org may not be eam enabled but it might be maintained bu maint org
9695 so no need for this check
9696 IF l_eam_enabled_flag <> 'Y'
9697 THEN
9698 FND_MESSAGE.set_name('CS','CS_SR_CP_MAINT_EAM'); -- Maintenance Organization is NOT Eam Enabled
9699 FND_MESSAGE.set_token('MAINT_ORG_ID',TO_CHAR(p_maint_organization_id));
9700 FND_MSG_PUB.add_detail(p_associated_column1=> 'CS_INCIDENTS_ALL_B.CUSTOMER_PRODUCT_ID');
9701 RAISE FND_API.G_EXC_ERROR;
9702 END IF;
9703 */
9704 IF l_maint_org_id <> p_maint_organization_id
9705 THEN
9706 FND_MESSAGE.set_name('CS','CS_SR_LVD_ORG_NOT_MAINT_BY'); -- CP is not maintained by Maintenance Organization
9707 FND_MESSAGE.set_token('API_NAME' , l_proc_name);
9708 FND_MESSAGE.set_token('MAINT_ORG_ID',TO_CHAR(p_maint_organization_id));
9709 FND_MESSAGE.set_token('VAL_ORG_ID',TO_CHAR(l_maint_org_id));
9710 FND_MSG_PUB.add_detail(p_associated_column1=> 'CS_INCIDENTS_ALL_B.CUSTOMER_PRODUCT_ID');
9711 RAISE FND_API.G_EXC_ERROR;
9712 END IF;
9713 IF p_inv_org_master_org_flag = 'Y' AND
9714 l_master_org_id <> p_inventory_org_id
9715 THEN
9716 FND_MESSAGE.set_name('CS','CS_SR_VLD_INV_ORG_MISMATCH');
9717 FND_MESSAGE.set_token('VAL_ORG',TO_CHAR(l_maint_org_id));
9718 FND_MSG_PUB.add_detail(p_associated_column1=> 'CS_INCIDENTS_ALL_B.CUSTOMER_PRODUCT_ID');
9719 RAISE FND_API.G_EXC_ERROR;
9720 END IF;
9721 END IF; -- p_maint_organization check
9722 --
9723 EXCEPTION
9724 WHEN NO_DATA_FOUND THEN
9725 x_return_status := FND_API.G_RET_STS_ERROR;
9726 Add_Invalid_Argument_Msg
9727 ( p_token_an => l_proc_name
9728 , p_token_v => TO_CHAR(p_customer_product_id)
9729 , p_token_p => 'customer_product_id'
9730 , p_table_name => G_TABLE_NAME
9731 , p_column_name => 'CUSTOMER_PRODUCT_ID'
9732 );
9733 WHEN FND_API.G_EXC_ERROR THEN
9734 x_return_status := FND_API.G_RET_STS_ERROR;
9735 END validate_customer_product_id;
9736 -- -----------------------------------------------------------------------------
9737 -- Procedure Name : get_reacted_resolved_dates
9738 -- Parameter :
9739 -- IN : p_incident_status_id This foreign key to
9740 -- cs_incideent_statuses_b
9741 -- : p_old_incident_status_id This foreign key to
9742 -- cs_incideent_statuses_b
9743 -- : p_old_incident_resolved_date old value of resolution date
9744 -- : p_old_inc_responded_by_date old value of response date
9745 -- OUT : x_incident_resolved_date New value of resolution date
9746 -- : x_inc_responded_by_date New value of response date
9747 -- : x_return_stauts indicates if validation failed
9748 -- or succeeded
9749 -- Description : This procedure defaults incident resolved and responded
9750 -- dates based on old and new value of service request status
9751 -- Modification History
9752 -- Date Name Description
9753 -- -------- -------- -----------------------------------------------------------
9754 -- 06/28/05 smisra Created
9755 -- -----------------------------------------------------------------------------
9756 PROCEDURE get_reacted_resolved_dates
9757 ( p_incident_status_id IN NUMBER
9758 , p_old_incident_status_id IN NUMBER
9759 , p_old_inc_responded_by_date IN DATE
9760 , p_old_incident_resolved_date IN DATE
9761 , x_inc_responded_by_date IN OUT NOCOPY DATE
9762 , x_incident_resolved_date IN OUT NOCOPY DATE
9763 , x_return_status OUT NOCOPY VARCHAR2
9764 ) IS
9765 l_new_responded_flag CS_INCIDENT_STATUSES_B.responded_flag % TYPE;
9766 l_old_responded_flag CS_INCIDENT_STATUSES_B.responded_flag % TYPE;
9767 l_new_resolved_flag CS_INCIDENT_STATUSES_B.resolved_flag % TYPE;
9768 l_old_resolved_flag CS_INCIDENT_STATUSES_B.resolved_flag % TYPE;
9769 BEGIN
9770 -- Logic added for 11.5.10 enhancement : Usability changes
9771 x_return_status := FND_API.G_RET_STS_SUCCESS;
9772 SELECT
9773 responded_flag
9774 , resolved_flag
9775 INTO
9776 l_new_responded_flag
9777 , l_new_resolved_flag
9778 FROM cs_incident_statuses_vl
9779 WHERE incident_status_id=p_incident_status_id ;
9780
9781 SELECT
9782 responded_flag
9783 , resolved_flag
9784 INTO
9785 l_old_responded_flag
9786 , l_old_resolved_flag
9787 FROM cs_incident_statuses_vl
9788 WHERE incident_status_id=p_old_incident_status_id ;
9789
9790 IF((l_old_responded_flag <>'Y' OR l_old_responded_flag is NULL) AND
9791 (l_new_responded_flag='Y'))
9792 THEN
9793 IF(x_inc_responded_by_date is NULL )
9794 THEN
9795 IF (p_old_inc_responded_by_date is NULL )
9796 THEN
9797 x_inc_responded_by_date:=SYSDATE;
9798 ELSE
9799 x_inc_responded_by_date:=p_old_inc_responded_by_date;
9800 END IF;
9801 END IF;
9802 ELSIF((l_old_responded_flag ='Y') AND (l_new_responded_flag='Y'))
9803 THEN
9804 IF (x_inc_responded_by_date is NULL)
9805 THEN
9806 IF (p_old_inc_responded_by_date is NULL)
9807 THEN
9808 x_inc_responded_by_date:=SYSDATE;
9809 ELSE
9810 x_inc_responded_by_date:=p_old_inc_responded_by_date;
9811 END IF;
9812 END IF;
9813 ELSIF((l_old_responded_flag ='Y') AND (l_new_responded_flag <> 'Y' OR
9814 l_new_responded_flag is NULL))
9815 THEN
9816 IF (x_inc_responded_by_date is NULL)
9817 THEN
9818 x_inc_responded_by_date:=p_old_inc_responded_by_date;
9819 END IF;
9820 END IF;
9821
9822 IF((l_old_resolved_flag <> 'Y' OR l_old_resolved_flag is NULL) AND
9823 (l_new_resolved_flag='Y'))
9824 THEN
9825 IF (x_incident_resolved_date is NULL) THEN
9826 IF (p_old_incident_resolved_date is NULL )THEN
9827 x_incident_resolved_date:=SYSDATE;
9828 ELSE
9829 x_incident_resolved_date:=p_old_incident_resolved_date;
9830 END IF;
9831 END IF;
9832 ELSIF ((l_old_resolved_flag='Y') AND
9833 (l_new_resolved_flag <> 'Y' OR l_new_resolved_flag is NULL))
9834 THEN
9835 IF(x_incident_resolved_date is NULL AND
9836 p_old_incident_resolved_date is NOT NULL)
9837 THEN
9838 x_incident_resolved_date:=NULL;
9839 END IF;
9840 ELSIF((l_old_resolved_flag='Y') AND (l_new_resolved_flag ='Y' )) THEN
9841 IF(x_incident_resolved_date is NULL AND
9842 p_old_incident_resolved_date is NOT NULL) THEN
9843 x_incident_resolved_date:=p_old_incident_resolved_date;
9844 ELSIF (x_incident_resolved_date is NULL AND
9845 p_old_incident_resolved_date is NULL) THEN
9846 x_incident_resolved_date:=SYSDATE;
9847 END IF ;
9848 END IF;
9849 EXCEPTION
9850 WHEN OTHERS THEN
9851 FND_MESSAGE.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
9852 FND_MESSAGE.set_token
9853 ( 'P_TEXT'
9854 , 'CS_SERVICEREQUEST_UTIL.get_status_details'||'-'||SQLERRM
9855 );
9856 FND_MSG_PUB.ADD;
9857 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9858 END get_reacted_resolved_dates;
9859 -- -----------------------------------------------------------------------------
9860 -- Procedure Name : get_party_details
9861 -- Parameter :
9862 -- IN : p_party_id This is a foreign key to table
9863 -- hz_parties
9864 -- OUT : x_party_type it is the party type associated with
9865 -- : x_status represents active or inactive status
9866 -- of party_id
9867 -- party id
9868 -- : x_return_status Indicates success or error condition
9869 -- encountered by the procedure
9870 -- Description : This procedure returns party type for a given party id
9871 -- if party id does not exist then it returns an error
9872 -- Modification History
9873 -- Date Name Description
9874 ---------- -------- ------------------------------------------------------------
9875 -- 08/04/05 smisra Created
9876 ---------- -------- ------------------------------------------------------------
9877 PROCEDURE get_party_details
9878 ( p_party_id IN NUMBER
9879 , x_party_type OUT NOCOPY VARCHAR2
9880 , x_status OUT NOCOPY VARCHAR2
9881 , x_return_status OUT NOCOPY VARCHAR2
9882 ) IS
9883 BEGIN
9884 -- Initialize Return Status to SUCCESS
9885 x_return_status := FND_API.G_RET_STS_SUCCESS;
9886
9887 SELECT
9888 party_type
9889 , status
9890 INTO
9891 x_party_type
9892 , x_status
9893 FROM
9894 hz_parties a
9895 WHERE a.party_id = p_party_id;
9896
9897 EXCEPTION
9898 WHEN NO_DATA_FOUND THEN
9899 x_return_status := FND_API.G_RET_STS_ERROR;
9900
9901 WHEN OTHERS THEN
9902 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
9903 fnd_message.set_token
9904 ( 'P_TEXT'
9905 , 'CS_SERVICEREQUEST_UTIL.get_party_detail:'||'-'||SQLERRM
9906 );
9907 fnd_msg_pub.ADD;
9908 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9909
9910 END get_party_details;
9911 -- -----------------------------------------------------------------------------
9912 -- Procedure Name : update_task_address
9913 -- Parameter :
9914 -- IN : p_incident_id This is a foreign key to table
9915 -- cs_incidents_all_b
9916 -- OUT : p_location_type This is location type of service
9917 -- request
9918 -- : p_location_id This is incident location id of
9919 -- service request
9920 -- : x_return_status Indicates success or error condition
9921 -- encountered by the procedure
9922 -- Description : This procedure find all tasks for a service request and
9923 -- updates location id or address id of tasks depending on
9924 -- location type value of parameter location type.
9925 -- if location type is HZ_LOCATION then task.address_id
9926 -- is set to null, location id is set to parameter
9927 -- p_location_id otherwise task location is is set to null and
9928 -- task address id is set to parameter p_location id.
9929 -- Modification History
9930 -- Date Name Description
9931 ---------- -------- ------------------------------------------------------------
9932 -- 10/04/05 smisra Created
9933 -- 10/06/05 smisra modified query to get SR tasks so that rejected tasks too
9934 -- get selected.
9935 -- 10/14/05 smisra uncommented x_retrun_status setting
9936 ---------- -------- ------------------------------------------------------------
9937 PROCEDURE update_task_address
9938 ( p_incident_id IN NUMBER
9939 , p_location_type IN VARCHAR2
9940 , p_location_id IN NUMBER
9941 , x_return_status OUT NOCOPY VARCHAR2
9942 ) IS
9943 --
9944 CURSOR c_tasks IS
9945 SELECT
9946 task.task_id
9947 , task.object_version_number
9948 , DECODE(typ.rule, 'DISPATCH', 'Y', 'N') fs_task
9949 FROM
9950 jtf_tasks_b task
9951 , jtf_task_statuses_b stat
9952 , jtf_task_types_b typ
9953 WHERE source_object_type_code = 'SR'
9954 AND source_object_id = p_incident_id
9955 AND stat.task_status_id = task.task_status_id
9956 AND typ.task_type_id = task.task_type_id
9957 AND NVL(stat.completed_flag, 'N') <> 'Y'
9958 AND NVL(stat.closed_flag , 'N') <> 'Y'
9959 AND NVL(stat.cancelled_flag, 'N') <> 'Y'
9960 ;
9961 l_site_id cs_incidents_all_b.incident_location_id % TYPE;
9962 l_location_id cs_incidents_all_b.incident_location_id % TYPE;
9963 l_msg_count NUMBER;
9964 l_msg_data VARCHAR2(4000);
9965 --
9966 BEGIN
9967 x_return_status := FND_API.G_RET_STS_SUCCESS;
9968 --
9969 FOR task_rec in c_tasks LOOP
9970 -- set address variables
9971 IF p_location_type = 'HZ_LOCATION'
9972 THEN
9973 l_location_id := p_location_id;
9974 l_site_id := NULL;
9975 ELSE
9976 l_location_id := NULL;
9977 l_site_id := p_location_id;
9978 END IF;
9979 --
9980 IF task_rec.fs_task = 'Y'
9981 THEN
9982 IF p_location_id IS NULL
9983 THEN
9984 FND_MESSAGE.set_name ('CS', 'CS_SR_OPEN_FS_TASKS');
9985 FND_MESSAGE.set_token
9986 ( 'API_NAME'
9987 , 'CS_SERVICEREQUEST_UTIL.update_task_address'
9988 );
9989 FND_MSG_PUB.ADD_DETAIL
9990 ( p_associated_column1 => 'CS_INCIDENTS_ALL_B.incident_location_id'
9991 );
9992 RAISE FND_API.G_EXC_ERROR;
9993 END IF;
9994 END IF;
9995 --
9996 -- Call task update APIs
9997 --
9998 IF task_rec.fs_task = 'Y'
9999 THEN
10000 CSF_TASKS_PUB.update_task
10001 ( p_api_version => 1.0
10002 , p_task_id => task_rec.task_id
10003 , p_object_version_number => task_rec.object_version_number
10004 , p_location_id => l_location_id
10005 , p_address_id => l_site_id
10006 , x_return_status => x_return_status
10007 , x_msg_count => l_msg_count
10008 , x_msg_data => l_msg_data
10009 );
10010 ELSE
10011 JTF_TASKS_PUB.update_task
10012 ( p_api_version => 1.0
10013 , p_task_id => task_rec.task_id
10014 , p_object_version_number => task_rec.object_version_number
10015 , p_location_id => l_location_id
10016 , p_address_id => l_site_id
10017 , p_enable_workflow => FND_API.G_MISS_CHAR
10018 , p_abort_workflow => FND_API.G_MISS_CHAR
10019 , p_task_split_flag => FND_API.G_MISS_CHAR
10020 , x_return_status => x_return_status
10021 , x_msg_count => l_msg_count
10022 , x_msg_data => l_msg_data
10023 );
10024 END IF;
10025 --
10026 -- check Error status
10027 --
10028 IF x_return_status = FND_API.G_RET_STS_ERROR
10029 THEN
10030 RAISE FND_API.G_EXC_ERROR;
10031 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR
10032 THEN
10033 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10034 END IF;
10035 --
10036 END LOOP;
10037 EXCEPTION
10038 WHEN FND_API.G_EXC_ERROR
10039 THEN
10040 x_return_status := FND_API.G_RET_STS_ERROR;
10041 WHEN FND_API.G_EXC_UNEXPECTED_ERROR
10042 THEN
10043 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10044 WHEN OTHERS
10045 THEN
10046 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10047 END update_task_address;
10048
10049 -- Verify_LocationUpdate_For_FSTasks
10050 -- Following procedure validates if the update to the service request location is allowed.
10051 -- If there FS tasks associated with the SR and if the work on these FS tasks is in progress
10052 -- OR if the FS tasks are scheduled then the update to the SR location is not allowed.
10053
10054 PROCEDURE Verify_LocUpdate_For_FSTasks
10055 (p_incident_id IN NUMBER,
10056 x_return_status OUT NOCOPY VARCHAR2) IS
10057
10058 l_task_id NUMBER ;
10059 l_task_type_id NUMBER ;
10060 l_task_status_id NUMBER ;
10061 l_task_rule VARCHAR2(30) ;
10062 l_assigned_flag VARCHAR2(1) ;
10063 l_completed_flag VARCHAR2(1) ;
10064 l_cancelled_flag VARCHAR2(1) ;
10065 l_rejected_flag VARCHAR2(1) ;
10066 l_schedulable_flag VARCHAR2(1) ;
10067 l_closed_flag VARCHAR2(1) ;
10068 l_start_date_type VARCHAR2(30) ;
10069 l_end_date_type VARCHAR2(30) ;
10070
10071 l_planned_start_date DATE ;
10072 l_planned_end_date DATE ;
10073 l_scheduled_start_date DATE ;
10074 l_scheduled_end_date DATE ;
10075 l_actual_start_date DATE ;
10076 l_actual_end_date DATE ;
10077 l_actual_effort NUMBER ;
10078 l_actual_effort_uom VARCHAR2(5);
10079 l_planned_effort NUMBER ;
10080 l_planned_effort_uom VARCHAR2(5);
10081
10082 loc_update_not_alwd_exp EXCEPTION;
10083
10084 -- cursor to get all the tasks for a service request.
10085 CURSOR c_tasks IS
10086 SELECT task_id,
10087 task_type_id,
10088 task_status_id,
10089 planned_start_date,
10090 planned_end_date,
10091 scheduled_start_date,
10092 scheduled_end_date,
10093 actual_start_date,
10094 actual_end_date,
10095 planned_effort,
10096 planned_effort_uom,
10097 actual_effort,
10098 actual_effort_uom
10099 FROM jtf_tasks_vl
10100 WHERE source_object_id = p_incident_id
10101 AND source_object_type_code = 'SR' ;
10102
10103 -- Cursor to get the details of a task status
10104 CURSOR c_task_status (l_task_status_id IN NUMBER) IS
10105 SELECT assigned_flag,
10106 completed_flag,
10107 cancelled_flag,
10108 rejected_flag,
10109 schedulable_flag,
10110 closed_flag,
10111 start_date_type,
10112 end_date_type
10113 FROM jtf_task_statuses_vl
10114 WHERE task_status_id = l_task_status_id ;
10115
10116 -- Cursor to get the details of a task type
10117 CURSOR c_task_type (l_task_type_id IN NUMBER) IS
10118 SELECT rule
10119 FROM jtf_task_types_vl
10120 WHERE task_type_id = l_task_type_id ;
10121
10122 -- Cursor to get the details of the task assignment.
10123 CURSOR c_assignee_id (l_task_id IN NUMBER) IS
10124 SELECT resource_id
10125 FROM jtf_task_assignments
10126 WHERE task_id = l_task_id ;
10127 BEGIN
10128 -- Check if the profile option for the state restriction is set.
10129 -- then only apply the logic in this function
10130
10131 x_return_status := FND_API.G_RET_STS_SUCCESS;
10132
10133 IF FND_PROFILE.VALUE('CS_SR_ENABLE_TASK_STATE_RESTRICTIONS') = 'Y' THEN
10134 -- Get all the tasks for the service request
10135 FOR c_tasks_rec IN c_tasks
10136 LOOP
10137 -- Check if it is a field service task
10138 OPEN c_task_type (c_tasks_rec.task_type_id);
10139 FETCH c_task_type INTO l_task_rule;
10140 CLOSE c_task_type;
10141
10142 IF l_task_rule = 'DISPATCH' THEN
10143 -- get the task status details
10144 OPEN c_task_status (c_tasks_rec.task_status_id);
10145
10146 FETCH c_task_status
10147 INTO l_assigned_flag,
10148 l_completed_flag,
10149 l_cancelled_flag,
10150 l_rejected_flag,
10151 l_schedulable_flag,
10152 l_closed_flag,
10153 l_start_date_type,
10154 l_end_date_type;
10155
10156 CLOSE c_task_status ;
10157
10158 IF( c_tasks_rec.scheduled_start_date IS NOT NULL AND -- SCHEDULED
10159 c_tasks_rec.scheduled_end_date IS NOT NULL AND
10160 l_schedulable_flag = 'Y' AND
10161 l_start_date_type = 'SCHEDULED_START' AND
10162 l_end_date_type = 'SCHEDULED_END'
10163 ) OR -- ASSIGNED
10164 ( c_tasks_rec.scheduled_start_date IS NOT NULL AND
10165 c_tasks_rec.scheduled_end_date IS NOT NULL AND
10166 l_assigned_flag = 'Y' AND
10167 l_start_date_type = 'SCHEDULED_START' AND
10168 l_end_date_type = 'SCHEDULED_END'
10169 ) OR -- EXECUTED
10170 ( c_tasks_rec.actual_start_date IS NOT NULL AND
10171 c_tasks_rec.actual_end_date IS NOT NULL AND
10172 c_tasks_rec.actual_effort IS NOT NULL AND
10173 c_tasks_rec.actual_effort_uom IS NOT NULL AND
10174 l_completed_flag = 'Y' AND
10175 l_start_date_type = 'ACTUAL_START' AND
10176 l_end_date_type = 'ACTUAL_END'
10177 ) OR -- EXECUTED
10178 ( l_completed_flag = 'Y' OR
10179 l_cancelled_flag = 'Y' OR
10180 l_rejected_flag = 'Y' OR
10181 l_closed_flag = 'Y'
10182 ) THEN
10183 RAISE loc_update_not_alwd_exp ;
10184 ELSE
10185 x_return_status := FND_API.G_RET_STS_SUCCESS;
10186 END IF ;
10187 END IF; -- end if for DISPATCH
10188 END LOOP;
10189 ELSE
10190 x_return_status := FND_API.G_RET_STS_SUCCESS;
10191 END IF;
10192
10193 EXCEPTION
10194 WHEN loc_update_not_alwd_exp THEN
10195 FND_MESSAGE.SET_Name('CS','CS_SR_LOC_UPD_NOT_ALLWD');
10196 FND_MSG_PUB.ADD;
10197 x_return_status := FND_API.G_RET_STS_ERROR;
10198 WHEN FND_API.G_EXC_ERROR THEN
10199 x_return_status := FND_API.G_RET_STS_ERROR;
10200 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
10201 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10202 WHEN OTHERS THEN
10203 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10204 END Verify_LocUpdate_For_FSTasks;
10205
10206
10207 -- -------------------------------------------------------------------
10208 -- Validate_External_Desc_Flex
10209 -- Moved this procedure from cspsrb.pls as a part of bug fix for bug 5216510.
10210 -- For ER# 2501166 added these external attributes date 1st oct 2002
10211 -- -------------------------------------------------------------------
10212 PROCEDURE Validate_External_Desc_Flex
10213 ( p_api_name IN VARCHAR2,
10214 p_application_short_name IN VARCHAR2,
10215 p_ext_desc_flex_name IN VARCHAR2,
10216 p_ext_desc_segment1 IN VARCHAR2,
10217 p_ext_desc_segment2 IN VARCHAR2,
10218 p_ext_desc_segment3 IN VARCHAR2,
10219 p_ext_desc_segment4 IN VARCHAR2,
10220 p_ext_desc_segment5 IN VARCHAR2,
10221 p_ext_desc_segment6 IN VARCHAR2,
10222 p_ext_desc_segment7 IN VARCHAR2,
10223 p_ext_desc_segment8 IN VARCHAR2,
10224 p_ext_desc_segment9 IN VARCHAR2,
10225 p_ext_desc_segment10 IN VARCHAR2,
10226 p_ext_desc_segment11 IN VARCHAR2,
10227 p_ext_desc_segment12 IN VARCHAR2,
10228 p_ext_desc_segment13 IN VARCHAR2,
10229 p_ext_desc_segment14 IN VARCHAR2,
10230 p_ext_desc_segment15 IN VARCHAR2,
10231 p_ext_desc_context IN VARCHAR2,
10232 p_resp_appl_id IN NUMBER := NULL,
10233 p_resp_id IN NUMBER := NULL,
10234 p_return_status OUT NOCOPY VARCHAR2
10235 )
10236 IS
10237 l_error_message VARCHAR2(2000);
10238 BEGIN
10239 -- Initialize API return status to success
10240 p_return_status := FND_API.G_RET_STS_SUCCESS;
10241
10242 IF ( p_ext_desc_context || p_ext_desc_segment1 || p_ext_desc_segment2 ||
10243 p_ext_desc_segment3 || p_ext_desc_segment4 || p_ext_desc_segment5 ||
10244 p_ext_desc_segment6 || p_ext_desc_segment7 || p_ext_desc_segment8 ||
10245 p_ext_desc_segment9 || p_ext_desc_segment10 || p_ext_desc_segment11 ||
10246 p_ext_desc_segment12 || p_ext_desc_segment13 || p_ext_desc_segment14 ||
10247 p_ext_desc_segment15
10248 ) IS NOT NULL THEN
10249
10250 FND_FLEX_DESCVAL.Set_Context_Value(p_ext_desc_context);
10251 FND_FLEX_DESCVAL.Set_Column_Value('EXTERNAL_ATTRIBUTE_1', p_ext_desc_segment1);
10252 FND_FLEX_DESCVAL.Set_Column_Value('EXTERNAL_ATTRIBUTE_2', p_ext_desc_segment2);
10253 FND_FLEX_DESCVAL.Set_Column_Value('EXTERNAL_ATTRIBUTE_3', p_ext_desc_segment3);
10254 FND_FLEX_DESCVAL.Set_Column_Value('EXTERNAL_ATTRIBUTE_4', p_ext_desc_segment4);
10255 FND_FLEX_DESCVAL.Set_Column_Value('EXTERNAL_ATTRIBUTE_5', p_ext_desc_segment5);
10256 FND_FLEX_DESCVAL.Set_Column_Value('EXTERNAL_ATTRIBUTE_6', p_ext_desc_segment6);
10257 FND_FLEX_DESCVAL.Set_Column_Value('EXTERNAL_ATTRIBUTE_7', p_ext_desc_segment7);
10258 FND_FLEX_DESCVAL.Set_Column_Value('EXTERNAL_ATTRIBUTE_8', p_ext_desc_segment8);
10259 FND_FLEX_DESCVAL.Set_Column_Value('EXTERNAL_ATTRIBUTE_9', p_ext_desc_segment9);
10260 FND_FLEX_DESCVAL.Set_Column_Value('EXTERNAL_ATTRIBUTE_10', p_ext_desc_segment10);
10261 FND_FLEX_DESCVAL.Set_Column_Value('EXTERNAL_ATTRIBUTE_11', p_ext_desc_segment11);
10262 FND_FLEX_DESCVAL.Set_Column_Value('EXTERNAL_ATTRIBUTE_12', p_ext_desc_segment12);
10263 FND_FLEX_DESCVAL.Set_Column_Value('EXTERNAL_ATTRIBUTE_13', p_ext_desc_segment13);
10264 FND_FLEX_DESCVAL.Set_Column_Value('EXTERNAL_ATTRIBUTE_14', p_ext_desc_segment14);
10265 FND_FLEX_DESCVAL.Set_Column_Value('EXTERNAL_ATTRIBUTE_15', p_ext_desc_segment15);
10266
10267 IF NOT FND_FLEX_DESCVAL.Validate_Desccols
10268 ( appl_short_name => p_application_short_name,
10269 desc_flex_name => p_ext_desc_flex_name,
10270 resp_appl_id => p_resp_appl_id,
10271 resp_id => p_resp_id
10272 ) THEN
10273 l_error_message := FND_FLEX_DESCVAL.Error_Message;
10274 CS_ServiceRequest_UTIL.Add_Desc_Flex_Msg(p_api_name, l_error_message);
10275 p_return_status := FND_API.G_RET_STS_ERROR;
10276 END IF;
10277 END IF;
10278
10279 END Validate_External_Desc_Flex;
10280
10281 ----------------------------------------------------
10282 -- Validate Platform Version Id
10283
10284 PROCEDURE Validate_Platform_Version_Id
10285 ( p_api_name IN VARCHAR2,
10286 p_parameter_name IN VARCHAR2,
10287 p_platform_id IN NUMBER,
10288 p_organization_id IN NUMBER,
10289 p_platform_Version_id IN NUMBER,
10290 x_return_status OUT NOCOPY VARCHAR2
10291 )IS
10292
10293 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Platform_Version_Id';
10294 l_api_name_full CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_api_name;
10295 l_revision_qty_control_code NUMBER;
10296 l_platform_Version_id NUMBER;
10297
10298 invld_platform_version_id_excp EXCEPTION;
10299
10300 CURSOR get_version_id IS
10301 SELECT revision_id
10302 INTO l_platform_Version_id
10303 FROM mtl_item_revisions
10304 WHERE organization_id = p_organization_id
10305 AND inventory_item_id = p_platform_id
10306 AND revision_id = p_platform_Version_id ;
10307
10308 BEGIN
10309 -- Initialize the return status.
10310 x_return_status := FND_API.G_RET_STS_SUCCESS;
10311
10312 IF p_platform_id IS NOT NULL THEN
10313 -- Check if the platform is serial number controlled
10314
10315 SELECT revision_qty_control_code
10316 INTO l_revision_qty_control_code
10317 FROM mtl_system_items_b
10318 WHERE inventory_item_id = p_platform_id
10319 AND organization_id = p_organization_id ;
10320
10321 IF NVL(l_revision_qty_control_code,-99) = 2 THEN
10322
10323 OPEN get_version_id;
10324 FETCH get_version_id INTO l_platform_Version_id;
10325 CLOSE get_version_id;
10326
10327 IF l_platform_Version_id IS NOT NULL THEN
10328 x_return_status := FND_API.G_RET_STS_SUCCESS;
10329 ELSE
10330 RAISE invld_platform_version_id_excp;
10331 END IF;
10332 END IF;
10333 END IF;
10334
10335 EXCEPTION
10336 WHEN invld_platform_version_id_excp THEN
10337 x_return_status := FND_API.G_RET_STS_ERROR;
10338 Add_Invalid_Argument_Msg
10339 (p_token_an => l_api_name_full,
10340 p_token_v => TO_CHAR(p_platform_version_id),
10341 p_token_p => p_parameter_name ,
10342 p_table_name => G_TABLE_NAME,
10343 p_column_name => 'PLATFORM_VERSION_ID' );
10344
10345 WHEN OTHERS THEN
10346 fnd_message.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
10347 fnd_message.set_token ('P_TEXT',l_api_name_full||'-'||SQLERRM);
10348 fnd_msg_pub.ADD;
10349 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10350
10351 END Validate_Platform_Version_Id;
10352
10353 FUNCTION BOOLEAN_TO_NUMBER (
10354 p_function_name IN VARCHAR2)
10355 RETURN NUMBER
10356 IS
10357 BEGIN
10358 if ( FND_FUNCTION.TEST(p_function_name) ) then
10359 return 0;
10360 else
10361 return 1;
10362 end if;
10363
10364 END BOOLEAN_TO_NUMBER;
10365
10366
10367 END CS_ServiceRequest_UTIL;