Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public with sharing class CPQ_MIL01_UtilsCls {
- public static final String MIL_NAME_ASSIGN_COORDINATOR = 'Assign Coordinator';
- public static final String MIL_NAME_COMMITED_DELIVERY_DATE = 'Committed Delivery Date';
- public static final String MIL_NAME_DELIVERY_ON_TIME = 'Delivered On Time';
- public static final String MIL_NAME_DISMANTLE_CROSS_CONNECT = 'Dismantle Cross Connect';
- public static final String MIL_NAME_DISMANTLE = 'Dismantle';
- public static final String MIL_NAME_PORT_ALLOCATION_ETHERNET = 'Port Allocation Ethernet';
- public static final String MIL_NAME_PORT_ALLOCATION_IP_SERVICE = 'Port Allocation IP Service';
- public static final String MIL_NAME_PORT_ALLOCATION_DEFAULT = 'Default Port Allocation';
- public static final String MIL_NAME_ROUTE_PLANNING_BACKBONE = 'Route Planning Backbone';
- public static final String MIL_NAME_ROUTE_PLANNING_ETHERNET = 'Route Planning Ethernet';
- public static final String MIL_NAME_ROUTE_PLANNING_IP_SERVICE = 'Route Planning IP Service';
- public static final String MIL_NAME_ROUTE_PLANNING_WAVELENGTH = 'Route Planning Wavelength';
- public static final String MIL_NAME_ROUTE_PLANNING_WITH_NBO = 'Route Planning with NBO';
- public static final String MIL_NAME_ROUTE_PLANNING_DEFAULT = 'Default Route Planning';
- public static final String MIL_NAME_SERV_CONF_IP_OR_ETHERNET = 'Service Configuration IP Service or Ethernet';
- public static final String MIL_NAME_SERV_CONF_SEC_IP = 'Service Configuration Security Service, IP Sec Gateway';
- public static final String MIL_NAME_SERV_CONF_DEFAULT = 'Default Service Configuration';
- public static final String MIL_NAME_TRANS_CONF_BACKBONE = 'Transmission Configuration Backbone';
- public static final String MIL_NAME_TRANS_CONF_ETHERNET = 'Transmission Configuration Ethernet';
- public static final String MIL_NAME_TRANS_CONF_IP_SERVICE = 'Transmission Configuration IP Service';
- public static final String MIL_NAME_TRANS_CONF_WAVELENGTH = 'Transmission Configuration Wavelength';
- public static final String MIL_NAME_TRANS_CONF_NBO = 'Transmission Configuration with NBO';
- public static final String MIL_NAME_TRANS_CONF_DEFAULT = 'Default Transmission Configuration';
- public static final String TYPE_OF_SERVICE_CARRIER_IP = 'CARRIER_IP';
- public static final Map<String, List<String>> WO_TYPE_TO_MIL = prepareMap();
- private static Map<String, List<String>> prepareMap(){
- Map<String, List<String>> outputMap = new Map<String, List<String>>();
- outputMap.put(ApplicationConstant.WORK_ORDER_TYPE_TRANSMISSION_CONFIGURATION, new List<String>{MIL_NAME_TRANS_CONF_NBO, MIL_NAME_TRANS_CONF_WAVELENGTH,
- MIL_NAME_TRANS_CONF_IP_SERVICE, MIL_NAME_TRANS_CONF_ETHERNET, MIL_NAME_TRANS_CONF_BACKBONE,
- MIL_NAME_TRANS_CONF_DEFAULT});
- outputMap.put(ApplicationConstant.WORK_ORDER_TYPE_SERVICE_CONFIGURATION, new List<String>{MIL_NAME_SERV_CONF_IP_OR_ETHERNET, MIL_NAME_SERV_CONF_SEC_IP, MIL_NAME_SERV_CONF_DEFAULT, MIL_NAME_DISMANTLE});
- outputMap.put(ApplicationConstant.WORK_ORDER_TYPE_PORT_ALLOCATION, new List<String>{MIL_NAME_PORT_ALLOCATION_IP_SERVICE, MIL_NAME_PORT_ALLOCATION_ETHERNET, MIL_NAME_PORT_ALLOCATION_DEFAULT});
- outputMap.put(ApplicationConstant.WORK_ORDER_TYPE_ROUTE_PLANNER, new List<String>{MIL_NAME_ROUTE_PLANNING_WITH_NBO, MIL_NAME_ROUTE_PLANNING_WAVELENGTH, MIL_NAME_ROUTE_PLANNING_IP_SERVICE, MIL_NAME_ROUTE_PLANNING_ETHERNET,
- MIL_NAME_ROUTE_PLANNING_BACKBONE, MIL_NAME_ROUTE_PLANNING_DEFAULT, MIL_NAME_DISMANTLE});
- return outputMap;
- }
- public static void completeWorkOrderMilestone(Map<Id, WorkOrder> workOrderMap, List<String> milestoneNameList, DateTime complDate) {
- List<EntityMilestone> womToUpdate = [
- SELECT Id, CompletionDate
- FROM EntityMilestone
- WHERE ParentEntityId IN : workOrderMap.keySet()
- AND Name IN :milestoneNameList
- AND CompletionDate = null
- ];
- if (!womToUpdate.isEmpty()) {
- for (EntityMilestone emRecord : womToUpdate) {
- emRecord.CompletionDate = complDate;
- }
- update womToUpdate;
- }
- }
- /**
- * @author Grzegorz Długosz - grzegorz.dlugosz@enxoo.com
- * @description Method reopens closed milestones that are related to given List of WorkOrders and
- * which names are included in the list.
- * @param workOrderSetId - Work Orders for which the milestones need to be reopened
- */
- public static void reopenWorkOrderMilestone(Set<Id> workOrderIdSet) {
- List<String> milestoneNameList = new List<String>{MIL_NAME_PORT_ALLOCATION_ETHERNET, MIL_NAME_PORT_ALLOCATION_IP_SERVICE, MIL_NAME_ROUTE_PLANNING_WAVELENGTH, MIL_NAME_ROUTE_PLANNING_IP_SERVICE,
- MIL_NAME_ROUTE_PLANNING_ETHERNET, MIL_NAME_ROUTE_PLANNING_BACKBONE, MIL_NAME_TRANS_CONF_WAVELENGTH, MIL_NAME_TRANS_CONF_IP_SERVICE,
- MIL_NAME_TRANS_CONF_ETHERNET, MIL_NAME_TRANS_CONF_BACKBONE};
- DateTime newStartDate = System.now();
- List<EntityMilestone> milestonesToUpdate = [
- SELECT Id, CompletionDate, StartDate
- FROM EntityMilestone
- WHERE ParentEntityId IN : workOrderIdSet
- AND Name IN :milestoneNameList
- AND CompletionDate != null
- ];
- if (!milestonesToUpdate.isEmpty()) {
- for (EntityMilestone em : milestonesToUpdate) {
- em.CompletionDate = null;
- em.StartDate = newStartDate;
- }
- update milestonesToUpdate;
- }
- }
- // closeRelatedWO - not empty only in Insert operation
- public static void completeWorkOrderMilestone(Map<String, Map<Id, WorkOrder>> workOrderMap, DateTime complDate, Map<String, Set<Id>> closeRelatedWO) {
- Set<String> milestonesTosearch = new Set<String>();
- Map<Id, WorkOrder> wo2check = new Map<Id, WorkOrder>();
- if(closeRelatedWO != null && !closeRelatedWO.isEmpty()){
- for(String typeWo : closeRelatedWO.keySet()){
- milestonesTosearch.addAll(WO_TYPE_TO_MIL.get(typeWo));
- }
- wo2check = findRelatedWO(closeRelatedWO);
- } else {
- closeRelatedWO = new Map<String, Set<Id>>();
- }
- for(String key : workOrderMap.keySet()){
- if(WO_TYPE_TO_MIL.containsKey(key)){
- milestonesTosearch.addAll(WO_TYPE_TO_MIL.get(key));
- }
- wo2check.putAll(workOrderMap.get(key));
- }
- List<EntityMilestone> mil2update = new List<EntityMilestone>();
- System.debug('@@ GRDLU wo2check: ' + JSON.serialize(wo2check));
- System.debug('@@ GRDLU mil2update : ' + JSON.serialize(mil2update ));
- System.debug('@@ GRDLU milestonesTosearch : ' + JSON.serialize(milestonesTosearch ));
- for(EntityMilestone entMil : [ SELECT Name, CompletionDate, ParentEntityId, ParentEntity.Sold_Service_Modification__r.Type_Of_Service__c FROM EntityMilestone WHERE ParentEntityId IN : wo2check.keySet() AND Name IN :milestonesTosearch AND CompletionDate = null]){
- System.debug('@@ GRDLU considered entMil: ' + JSON.serialize(entMil));
- Boolean updateMilestone = false;
- WorkOrder woTemp = wo2check.get(entMil.ParentEntityId);
- if(woTemp.Type__c == ApplicationConstant.WORK_ORDER_TYPE_TRANSMISSION_CONFIGURATION){
- if(closeRelatedWO.isEmpty() && entMil.Name == MIL_NAME_TRANS_CONF_DEFAULT){
- updateMilestone = true;
- } else if(closeRelatedWO.containsKey(ApplicationConstant.WORK_ORDER_TYPE_TRANSMISSION_CONFIGURATION) && closeRelatedWO.get(ApplicationConstant.WORK_ORDER_TYPE_TRANSMISSION_CONFIGURATION).contains(woTemp.Sold_Service_Modification__c) && entMil.Name != MIL_NAME_TRANS_CONF_NBO){
- updateMilestone = true;
- } else if(closeRelatedWO.isEmpty() && woTemp.NBO_Connected_To_SSM__c == true && entMil.Name == MIL_NAME_TRANS_CONF_NBO){
- updateMilestone = true;
- } else if(entMil.Name != MIL_NAME_TRANS_CONF_NBO && woTemp.Product_Name__c != null && (woTemp.Product_Name__c == ApplicationConstant.ITEMNAME_WAVELENGTH || woTemp.Product_Name__c == ApplicationConstant.ITEMNAME_IP_SERVICE ||
- woTemp.Product_Name__c.contains(ApplicationConstant.PRD_NAME_BACKBONE) || woTemp.Product_Name__c.contains(ApplicationConstant.PRD_NAME_ETHERNET) || entMil.ParentEntity.Sold_Service_Modification__r.Type_Of_Service__c.contains(TYPE_OF_SERVICE_CARRIER_IP))){
- updateMilestone = true;
- }
- } else if(woTemp.Type__c == ApplicationConstant.WORK_ORDER_TYPE_ROUTE_PLANNER){
- System.debug('@@ GRDLU 1: ' + JSON.serialize(woTemp));
- if(closeRelatedWO.isEmpty() && entMil.Name == MIL_NAME_ROUTE_PLANNING_DEFAULT || entMil.Name == MIL_NAME_DISMANTLE){
- System.debug('@@ GRDLU 2: ' + JSON.serialize(woTemp));
- updateMilestone = true;
- } else if(closeRelatedWO.containsKey(ApplicationConstant.WORK_ORDER_TYPE_ROUTE_PLANNER) && closeRelatedWO.get(ApplicationConstant.WORK_ORDER_TYPE_ROUTE_PLANNER).contains(woTemp.Sold_Service_Modification__c) && entMil.Name != MIL_NAME_ROUTE_PLANNING_WITH_NBO){
- System.debug('@@ GRDLU 3: ' + JSON.serialize(woTemp));
- updateMilestone = true;
- } else if(closeRelatedWO.isEmpty() && woTemp.NBO_Connected_To_SSM__c == true && entMil.Name == MIL_NAME_ROUTE_PLANNING_WITH_NBO){
- System.debug('@@ GRDLU 4: ' + JSON.serialize(woTemp));
- updateMilestone = true;
- } else if(entMil.Name != MIL_NAME_ROUTE_PLANNING_WITH_NBO && woTemp.Product_Name__c != null && (woTemp.Product_Name__c == ApplicationConstant.ITEMNAME_WAVELENGTH || woTemp.Product_Name__c.contains(ApplicationConstant.PRD_NAME_ETHERNET) || woTemp.Product_Name__c.contains(ApplicationConstant.PRD_NAME_BACKBONE) ||
- woTemp.Product_Name__c == ApplicationConstant.ITEMNAME_IP_SERVICE ) || entMil.ParentEntity.Sold_Service_Modification__r.Type_Of_Service__c.contains(TYPE_OF_SERVICE_CARRIER_IP)){
- System.debug('@@ GRDLU 6: ' + JSON.serialize(woTemp));
- updateMilestone = true;
- }
- } else if(woTemp.Type__c == ApplicationConstant.WORK_ORDER_TYPE_SERVICE_CONFIGURATION){
- if(closeRelatedWO.isEmpty() && entMil.Name == MIL_NAME_SERV_CONF_DEFAULT || entMil.Name == MIL_NAME_DISMANTLE){
- updateMilestone = true;
- } else if(woTemp.Product_Name__c == ApplicationConstant.ITEMNAME_SECURITY_SERVICE || woTemp.Product_Name__c == ApplicationConstant.ITEMNAME_IP_SERVICE ||
- woTemp.Product_Name__c == ApplicationConstant.ITEMNAME_IP_SEC_GATEWAY || (woTemp.Product_Name__c != null && woTemp.Product_Name__c.contains(ApplicationConstant.PRD_NAME_ETHERNET) || entMil.ParentEntity.Sold_Service_Modification__r.Type_Of_Service__c.contains(TYPE_OF_SERVICE_CARRIER_IP))){
- updateMilestone = true;
- }
- } else if(woTemp.Type__c == ApplicationConstant.WORK_ORDER_TYPE_PORT_ALLOCATION){
- if(closeRelatedWO.isEmpty() && entMil.Name == MIL_NAME_PORT_ALLOCATION_DEFAULT){
- updateMilestone = true;
- } else if(closeRelatedWO.containsKey(ApplicationConstant.WORK_ORDER_TYPE_PORT_ALLOCATION) && closeRelatedWO.get(ApplicationConstant.WORK_ORDER_TYPE_PORT_ALLOCATION).contains(woTemp.Sold_Service_Modification__c)){
- updateMilestone = true;
- } else if(woTemp.Product_Name__c != null && (woTemp.Product_Name__c == ApplicationConstant.ITEMNAME_IP_SERVICE || woTemp.Product_Name__c.contains(ApplicationConstant.PRD_NAME_ETHERNET) || entMil.ParentEntity.Sold_Service_Modification__r.Type_Of_Service__c.contains(TYPE_OF_SERVICE_CARRIER_IP))){
- updateMilestone = true;
- }
- }
- if(updateMilestone){
- entMil.CompletionDate = complDate;
- System.debug('@@ GRDLU mil2update: ' + JSON.serialize(mil2update));
- mil2update.add(entMil);
- }
- }
- if (!mil2update.isEmpty()) {
- System.debug('@@ GRDLU mil2update: ' + JSON.serialize(mil2update));
- update mil2update;
- }
- }
- public static Map<Id, WorkOrder> findRelatedWO(Map<String, Set<Id>> closeRelatedWO){
- Set<Id> relatedSSM = new Set<Id>();
- for(Set<Id> idSet : closeRelatedWO.values()){
- relatedSSM.addAll(idSet);
- }
- return new Map<Id, WorkOrder>([SELECT Type__c, Sold_Service_Modification__c, NBO_Connected_To_SSM__c, Product_Name__c FROM WorkOrder WHERE Sold_Service_Modification__c IN :relatedSSM AND Type__c = :closeRelatedWO.keySet()]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement