289: --Fetch the Instance Details and fill the SR record
290: OPEN C_FREE_FORM_IB_INFO (p_record.FREE_FORM_INSTANCE);
291: FETCH C_FREE_FORM_IB_INFO INTO l_free_form_rec;
292: IF C_FREE_FORM_IB_INFO%NOTFOUND THEN
293: x_return_status := FND_API.G_RET_STS_ERROR;
294: p_error_msg := 'The Instance Number :' || p_record.FREE_FORM_INSTANCE||
295: ' used for the creation of the SR :' || p_record.INCIDENT_NUMBER || 'is INVALID.';
296: CLOSE C_FREE_FORM_IB_INFO;
297: RETURN;
318: --Fetch the Instance Details and fill the SR record
319: OPEN C_FREE_FORM_SER_INFO (p_record.FREE_FORM_SERIAL);
320: FETCH C_FREE_FORM_SER_INFO INTO l_free_form_ser_rec;
321: IF C_FREE_FORM_SER_INFO%NOTFOUND THEN
322: x_return_status := FND_API.G_RET_STS_ERROR;
323: p_error_msg := 'The Serial Number :' || p_record.FREE_FORM_SERIAL||
324: ' used for the creation of the SR :' || p_record.INCIDENT_NUMBER || 'is INVALID.';
325: CLOSE C_FREE_FORM_SER_INFO;
326: RETURN;
445:
446: /* Calling CS API for actual insert */
447: CS_ServiceRequest_PUB.Create_ServiceRequest
448: ( p_api_version => 4.0
449: , p_init_msg_list => FND_API.G_TRUE
450: , p_commit => FND_API.G_TRUE
451: , x_return_status => x_return_status
452: , x_msg_count => l_msg_count
453: , x_msg_data => l_msg_data
446: /* Calling CS API for actual insert */
447: CS_ServiceRequest_PUB.Create_ServiceRequest
448: ( p_api_version => 4.0
449: , p_init_msg_list => FND_API.G_TRUE
450: , p_commit => FND_API.G_TRUE
451: , x_return_status => x_return_status
452: , x_msg_count => l_msg_count
453: , x_msg_data => l_msg_data
454: , p_user_id => l_created_by
464: , p_auto_assign => 'Y'
465: , x_sr_create_out_rec => l_sr_out_rec
466: );
467:
468: IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
469: /*** exception occurred in API -> return errmsg ***/
470: p_error_msg := CSM_UTIL_PKG.GET_ERROR_MESSAGE_TEXT
471: (
472: p_api_error => TRUE
473: );
474: CSM_UTIL_PKG.log( 'Error in ' || g_object_name || '.APPLY_INSERT:'
475: || ' ROOT ERROR: CS_ServiceRequest_PUB.Create_ServiceRequest ' || sqlerrm
476: || ' for incident_id ' || p_record.incident_id,'CSM_SERVICE_REQUESTS_PKG.APPLY_INSERT',FND_LOG.LEVEL_ERROR);
477: x_return_status := FND_API.G_RET_STS_ERROR;
478: return;
479: END IF;
480: CSM_UTIL_PKG.LOG('Leaving CSM_SERVICE_REQUESTS_PKG.APPLY_INSERT for incident_id ' || p_record.incident_id ,
481: 'CSM_SERVICE_REQUESTS_PKG.APPLY_INSERT',FND_LOG.LEVEL_PROCEDURE);
492: IF c_customer_account%ISOPEN THEN
493: CLOSE c_customer_account;
494: END IF;
495:
496: x_return_status := FND_API.G_RET_STS_ERROR;
497: END APPLY_INSERT;
498:
499: /***
500: This procedure is called by APPLY_CLIENT_CHANGES when an updated record is to be processed.
554: 'CSM_SERVICE_REQUESTS_PKG.APPLY_UPDATE',FND_LOG.LEVEL_PROCEDURE);
555: -- Check for Stale data
556: l_profile_value := fnd_profile.value(csm_profile_pkg.g_JTM_APPL_CONFLICT_RULE);
557: if l_profile_value = 'SERVER_WINS' AND
558: ASG_DEFER.IS_DEFERRED(p_record.clid$$cs, p_record.tranid$$,g_pub_name, p_record.seqno$$) <> FND_API.G_TRUE then
559: open c_last_update_date(b_incident_id => p_record.incident_id);
560: fetch c_last_update_date into r_last_update_date;
561: if c_last_update_date%found then
562: if r_last_update_date.last_update_date <> p_record.server_last_update_date and r_last_update_date.last_updated_by <> asg_base.get_user_id(p_record.clid$$cs) then
560: fetch c_last_update_date into r_last_update_date;
561: if c_last_update_date%found then
562: if r_last_update_date.last_update_date <> p_record.server_last_update_date and r_last_update_date.last_updated_by <> asg_base.get_user_id(p_record.clid$$cs) then
563: close c_last_update_date;
564: x_return_status := FND_API.G_RET_STS_ERROR;
565: p_error_msg := 'UPWARD SYNC CONFLICT: CLIENT LOST: CSM_SERVICE_REQUESTS_PKG.APPLY_UPDATE: Incident_id = '
566: || p_record.incident_id;
567: csm_util_pkg.log('UPWARD SYNC CONFLICT: CLIENT LOST: CSM_SERVICE_REQUESTS_PKG.APPLY_UPDATE: Incident_id = '
568: || p_record.incident_id,'CSM_SERVICE_REQUESTS_PKG.APPLY_UPDATE',FND_LOG.LEVEL_ERROR);
622: IF c_ovn%found THEN
623: l_ovn := r_ovn.object_version_number;
624: ELSE
625: -- Let the API complain.
626: l_ovn := FND_API.G_MISS_NUM;
627: END IF;
628: CLOSE c_ovn;
629:
630: -- instantiate the sr record
653: --Fetch the Instance Details and fill the SR record
654: OPEN C_FREE_FORM_IB_INFO (p_record.FREE_FORM_INSTANCE);
655: FETCH C_FREE_FORM_IB_INFO INTO l_free_form_rec;
656: IF C_FREE_FORM_IB_INFO%NOTFOUND THEN
657: x_return_status := FND_API.G_RET_STS_ERROR;
658: p_error_msg := 'The Instance Number :' || p_record.FREE_FORM_INSTANCE||
659: ' used for the creation of the SR :' || p_record.INCIDENT_NUMBER || 'is INVALID.';
660: CLOSE C_FREE_FORM_IB_INFO;
661: RETURN;
682: --Fetch the Instance Details and fill the SR record
683: OPEN C_FREE_FORM_SER_INFO (p_record.FREE_FORM_SERIAL);
684: FETCH C_FREE_FORM_SER_INFO INTO l_free_form_ser_rec;
685: IF C_FREE_FORM_SER_INFO%NOTFOUND THEN
686: x_return_status := FND_API.G_RET_STS_ERROR;
687: p_error_msg := 'The Serial Number :' || p_record.FREE_FORM_SERIAL||
688: ' used for the creation of the SR :' || p_record.INCIDENT_NUMBER || 'is INVALID.';
689: RETURN;
690: CLOSE C_FREE_FORM_SER_INFO;
804:
805: -- Finally the update itself.
806: CS_ServiceRequest_PUB.Update_ServiceRequest
807: ( p_api_version => 3.0
808: , p_init_msg_list => FND_API.G_TRUE
809: , p_commit => FND_API.G_TRUE
810: , x_return_status => x_return_status
811: , x_msg_count => l_msg_count
812: , x_msg_data => l_msg_data
805: -- Finally the update itself.
806: CS_ServiceRequest_PUB.Update_ServiceRequest
807: ( p_api_version => 3.0
808: , p_init_msg_list => FND_API.G_TRUE
809: , p_commit => FND_API.G_TRUE
810: , x_return_status => x_return_status
811: , x_msg_count => l_msg_count
812: , x_msg_data => l_msg_data
813: , p_request_id => p_record.incident_id
822: , x_workflow_process_id => l_workflow_id
823: , x_interaction_id => l_interaction_id
824: );
825:
826: IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
827: p_error_msg := CSM_UTIL_PKG.GET_ERROR_MESSAGE_TEXT
828: (
829: p_api_error => TRUE
830: );
830: );
831: CSM_UTIL_PKG.log( 'Error in ' || g_object_name || '.APPLY_UPDATE:'
832: || ' ROOT ERROR: CS_ServiceRequest_PUB.Update_ServiceRequest ' || sqlerrm
833: || ' for incident_id ' || p_record.incident_id ,'CSM_SERVICE_REQUESTS_PKG.APPLY_UPDATE',FND_LOG.LEVEL_ERROR);
834: x_return_status := FND_API.G_RET_STS_ERROR;
835: RETURN;
836: END IF;
837:
838: CSM_UTIL_PKG.LOG('Leaving CSM_SERVICE_REQUESTS_PKG.APPLY_UPDATE for incident_id ' || p_record.incident_id ,
846: );
847: CSM_UTIL_PKG.log( 'Exception in ' || g_object_name || '.APPLY_UPDATE: ' || sqlerrm
848: || ' for incident_id ' || p_record.incident_id ,'CSM_SERVICE_REQUESTS_PKG.APPLY_UPDATE',FND_LOG.LEVEL_EXCEPTION);
849:
850: x_return_status := FND_API.G_RET_STS_ERROR;
851: END APPLY_UPDATE;
852:
853: /***
854: This procedure is called by APPLY_CLIENT_CHANGES for every record in in-queue that needs to be processed.
862: l_rc BOOLEAN;
863: l_access_id NUMBER;
864: BEGIN
865: /*** initialize return status and message list ***/
866: x_return_status := FND_API.G_RET_STS_SUCCESS;
867: FND_MSG_PUB.INITIALIZE;
868:
869: CSM_UTIL_PKG.LOG('Entering CSM_SERVICE_REQUESTS_PKG.APPLY_RECORD for incident_id ' || p_record.incident_id ,
870: 'CSM_SERVICE_REQUESTS_PKG.APPLY_RECORD',FND_LOG.LEVEL_PROCEDURE);
896: , p_token_name1 => 'DML'
897: , p_token_value1 => p_record.dmltype$$
898: );
899:
900: x_return_status := FND_API.G_RET_STS_ERROR;
901: ELSE
902: -- invalid dml type
903: CSM_UTIL_PKG.LOG
904: ( 'Invalid DML type: ' || p_record.dmltype$$ || ' is not supported for this entity'
910: , p_token_name1 => 'DML'
911: , p_token_value1 => p_record.dmltype$$
912: );
913:
914: x_return_status := FND_API.G_RET_STS_ERROR;
915: END IF;
916:
917: CSM_UTIL_PKG.LOG('Leaving CSM_SERVICE_REQUESTS_PKG.APPLY_RECORD for incident_id ' || p_record.incident_id ,
918: 'CSM_SERVICE_REQUESTS_PKG.APPLY_RECORD',FND_LOG.LEVEL_PROCEDURE);
924: );
925: CSM_UTIL_PKG.log( 'Exception in ' || g_object_name || '.APPLY_RECORD: ' || sqlerrm
926: || ' for incident_id ' || p_record.incident_id ,'CSM_SERVICE_REQUESTS_PKG.APPLY_RECORD',FND_LOG.LEVEL_EXCEPTION);
927:
928: x_return_status := FND_API.G_RET_STS_ERROR;
929:
930: END APPLY_RECORD;
931:
932: /***
949: BEGIN
950: CSM_UTIL_PKG.LOG('Entering CSM_SERVICE_REQUESTS_PKG.APPLY_CLIENT_CHANGES ',
951: 'CSM_SERVICE_REQUESTS_PKG.APPLY_CLIENT_CHANGES',FND_LOG.LEVEL_PROCEDURE);
952: g_debug_level := p_debug_level;
953: x_return_status := FND_API.G_RET_STS_SUCCESS;
954:
955: /*** loop through CSM_INCIDENTS_ALL_INQ records in inqueue ***/
956: FOR r_incident IN c_incident( p_user_name, p_tranid) LOOP
957: SAVEPOINT save_rec ;
963: , l_process_status
964: );
965:
966: /*** was record processed successfully? ***/
967: IF l_process_status = FND_API.G_RET_STS_SUCCESS THEN
968: /*** Yes -> delete record from inqueue ***/
969: CSM_UTIL_PKG.DELETE_RECORD
970: (
971: p_user_name,
977: l_error_msg,
978: l_process_status
979: );
980: /*** was delete successful? ***/
981: IF l_process_status <> FND_API.G_RET_STS_SUCCESS THEN
982: /*** no -> rollback ***/
983: CSM_UTIL_PKG.LOG
984: ( 'Deleting from inqueue failed, rolling back to savepoint'
985: || ' for incident_id ' || r_incident.incident_id ,'CSM_SERVICE_REQUESTS_PKG.APPLY_CLIENT_CHANGES',FND_LOG.LEVEL_ERROR); -- put PK column here
983: CSM_UTIL_PKG.LOG
984: ( 'Deleting from inqueue failed, rolling back to savepoint'
985: || ' for incident_id ' || r_incident.incident_id ,'CSM_SERVICE_REQUESTS_PKG.APPLY_CLIENT_CHANGES',FND_LOG.LEVEL_ERROR); -- put PK column here
986: ROLLBACK TO save_rec;
987: x_return_status := FND_API.G_RET_STS_ERROR;
988: ELSE
989: /*** Yes -> Delete contact recs */
990: FOR r_contacts IN c_contact( r_incident.incident_id, p_tranid, p_user_name ) LOOP
991: /* Delete matching contact record(s) */
1000: l_error_msg,
1001: l_process_status
1002: );
1003: /*** was delete successful? ***/
1004: IF l_process_status <> FND_API.G_RET_STS_SUCCESS THEN
1005: /*** no -> rollback ***/
1006: CSM_UTIL_PKG.LOG
1007: ( 'Deleting from inqueue failed, rolling back to savepoint'
1008: || ' for incident_id ' || r_incident.incident_id ,'CSM_SERVICE_REQUESTS_PKG.APPLY_CLIENT_CHANGES',FND_LOG.LEVEL_ERROR); -- put PK column here
1006: CSM_UTIL_PKG.LOG
1007: ( 'Deleting from inqueue failed, rolling back to savepoint'
1008: || ' for incident_id ' || r_incident.incident_id ,'CSM_SERVICE_REQUESTS_PKG.APPLY_CLIENT_CHANGES',FND_LOG.LEVEL_ERROR); -- put PK column here
1009: ROLLBACK TO save_rec;
1010: x_return_status := FND_API.G_RET_STS_ERROR;
1011: END IF;
1012: END LOOP;
1013: END IF;
1014: ELSIF l_process_Status <> FND_API.G_RET_STS_SUCCESS THEN
1010: x_return_status := FND_API.G_RET_STS_ERROR;
1011: END IF;
1012: END LOOP;
1013: END IF;
1014: ELSIF l_process_Status <> FND_API.G_RET_STS_SUCCESS THEN
1015: /*** Record was not applied successfully -> defer and reject records ***/
1016: csm_util_pkg.log( 'Record not processed successfully, deferring and rejecting record'
1017: || ' for PK ' || r_incident.incident_id ,'CSM_SERVICE_REQUESTS_PKG.APPLY_CLIENT_CHANGES',FND_LOG.LEVEL_ERROR); -- put PK column here
1018:
1029: , r_incident.dmltype$$
1030: );
1031:
1032: /*** Was defer successful? ***/
1033: IF l_process_status <> FND_API.G_RET_STS_SUCCESS THEN
1034: /*** no -> rollback ***/
1035: CSM_UTIL_PKG.LOG
1036: ( 'Defer record failed, rolling back to savepoint'
1037: || ' for PK ' || r_incident.incident_id ,'CSM_SERVICE_REQUESTS_PKG.APPLY_CLIENT_CHANGES',FND_LOG.LEVEL_ERROR); -- put PK column here
1035: CSM_UTIL_PKG.LOG
1036: ( 'Defer record failed, rolling back to savepoint'
1037: || ' for PK ' || r_incident.incident_id ,'CSM_SERVICE_REQUESTS_PKG.APPLY_CLIENT_CHANGES',FND_LOG.LEVEL_ERROR); -- put PK column here
1038: ROLLBACK TO save_rec;
1039: x_return_status := FND_API.G_RET_STS_ERROR;
1040: ELSE
1041: /** Yes **/
1042: FOR r_contacts IN c_contact( r_incident.incident_id, p_tranid, p_user_name ) LOOP
1043: /* Defer matching contact record(s) */
1067: /*** catch and log exceptions ***/
1068: CSM_UTIL_PKG.log( 'Exception in ' || g_object_name || '.APPLY_CLIENT_CHANGES: ' || sqlerrm
1069: ,'CSM_SERVICE_REQUESTS_PKG.APPLY_CLIENT_CHANGES',FND_LOG.LEVEL_EXCEPTION);
1070:
1071: x_return_status := FND_API.G_RET_STS_ERROR;
1072:
1073: END APPLY_CLIENT_CHANGES;
1074:
1075: FUNCTION CONFLICT_RESOLUTION_METHOD (p_user_name IN VARCHAR2,