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