Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * @description: Asset Management handler class
- * @author: Davanti Consulting
- * @history:
- * 07Jul2014 Davanti Consulting: Initial version
- * 18Mar2015 Shailendra(DC): Updated for Asset Management Order changes.
- */
- public class OrderItemTriggerHandler {
- public static void forceEditOnChildRecords(Set<Id> newChildSet){
- system.debug('newChildSet>>'+newChildSet);
- List<Order_Receive_Line__c> childOrderReceiveLine = [select Id from Order_Receive_Line__c where Order_Item_Id__c in :newChildSet];
- if (childOrderReceiveLine.size() > 0) update childOrderReceiveLine;
- }
- /*******************************************************************
- Purpose : OrderProduct Trigger hanlder class to Created Asset/Asset Assignment records
- Parameters : List Of OrderProduct and Map of old OrderProduct records
- Returns : None
- ********************************************************************/
- public static List<OrderItem> getOrderItemDetails(Set<String> setOrderItemId){
- return [Select Id, OrderId, Order.AccountId, Connection_Type__c, Order.Account.Asset_Management__c, Order.Account.Phone, Phone_Number__c,
- Serial_Number__c, Pricebookentry.Product2.LE_Price_Hidden__c, User_Name__c, Pricebookentry.Product2.Name, MSP_Product__c,Serialised__c,
- Order.Account.Device_Recycling__c, User_Email__c, Order.Account.Replenishment_Stock__c,Replenishment_Stock__c,MSP_No__c
- from OrderItem where ID IN :setOrderItemId
- AND (Order.Account.Asset_Management__c=true OR Order.Account.Replenishment_Stock__c=true OR Order.Account.Device_Recycling__c=true)];
- }
- public static List<Asset_Assignment__c> getAssetAssignmentDetails(Set<String> setPhoneNumber){
- return [Select Asset__c, Phone_Number__c, Account__r.Device_Recycling__c from Asset_Assignment__c
- where Phone_Number__c IN: setPhoneNumber];
- }
- public static Asset__c createAsset(OrderItem obj, Map<Id, OrderItem> mapOrderItems){
- Asset__c objAsset=new Asset__c();
- objAsset.Asset_Name__c=mapOrderItems.get(obj.Id).Pricebookentry.Product2.Name;
- objAsset.Latest_Account_Assigned__c= mapOrderItems.get(obj.Id).Order.AccountId;
- objAsset.Serial_Number__c=obj.Serial_Number__c;
- objAsset.Status__c=mapOrderItems.get(obj.Id).Order.Account.Replenishment_Stock__c?'Created':'Active';
- objAsset.Source_MSP_Order_No__c=mapOrderItems.get(obj.Id).MSP_No__c;
- objAsset.Source_Order__c=mapOrderItems.get(obj.Id).OrderId;
- objAsset.Type__c='Device';
- objAsset.Product_List_Price__c=mapOrderItems.get(obj.Id).Pricebookentry.Product2.LE_Price_Hidden__c;
- objAsset.Purchase_Date__c=Date.Today();
- objAsset.Active__c=true;
- insert objAsset;
- return objAsset;
- }
- public static Asset_Assignment__c createAssetAssignment(OrderItem obj, Id objAssetId, Map<Id, OrderItem> mapOrderItems){
- Asset_Assignment__c objAssetAssign=new Asset_Assignment__c();
- objAssetAssign.Account__c = mapOrderItems.get(obj.Id).Order.AccountId;
- objAssetAssign.Phone_Number__c=obj.Phone_Number__c;
- objAssetAssign.Status__c='Active';
- objAssetAssign.User_Name__c=obj.User_Name__c;
- objAssetAssign.User_Email_Address__c=obj.User_Email__c;
- objAssetAssign.Asset__c = objAssetId;
- objAssetAssign.Assignment_Date__c=Date.Today();
- insert objAssetAssign;
- return objAssetAssign;
- }
- public static void createCaseForAssignment(OrderItem obj, Map<Id, OrderItem> mapOrderItems, QueueSObject queueLog, Id rtId, Id oldAssetId, Asset_Assignment__c objAssetAssignment){
- Case objcase=new Case();
- objcase.OwnerId = queueLog.queueId;
- objcase.Status = 'Awaiting Asset Return';
- objcase.Asset__c = oldAssetId;
- objcase.RecordTypeId = rtId;
- objcase.Type = 'Recycle Return';
- objcase.AccountId=mapOrderItems.get(obj.Id).Order.AccountId;
- objcase.User_Name__c=objAssetAssignment.User_Name__c;
- objcase.Mobile_Number__c=objAssetAssignment.Phone_Number__c;
- objcase.contact_email_address__c=objAssetAssignment.User_Email_Address__c;
- objcase.Asset_Condition__c='Awaiting Diagnosis';
- objcase.Subject='Recycle Return for '+objAssetAssignment.User_Name__c;
- insert objCase;
- }
- public static void createAssetAssignmentForNonReplenishment(List<OrderItem> lstOrderItem, Map<String, Asset_Assignment__c> mapExistingAssetAssignments, Map<Id, OrderItem> mapOrderItems, QueueSObject queueLog, Id rtID){
- for(OrderItem obj: lstOrderItem){
- if(obj.Connection_Type__c!=null && (obj.Connection_Type__c=='New Connection' || obj.Connection_Type__c=='Port')){
- if(!(mapOrderItems.get(obj.Id).Order.Account.Replenishment_Stock__c && mapOrderItems.get(obj.Id).Order.Account.Asset_Management__c==false && mapOrderItems.get(obj.Id).Order.Account.Device_Recycling__c==false)){
- Asset_Assignment__c objAssetAssign=createAssetAssignment(obj, obj.Assigned_Asset_New__c, mapOrderItems);
- }
- }else{
- Asset_Assignment__c objAssetAssignment= new Asset_Assignment__c();
- objAssetAssignment=mapExistingAssetAssignments.get(obj.Phone_Number__c);
- Id oldAssetId;
- if(objAssetAssignment==null){
- objAssetAssignment=createAssetAssignment(obj, obj.Assigned_Asset_New__c, mapOrderItems);
- System.debug('>>>>>>>>>>>>>>>>>>>>>>>>>>>objAssetAssignment'+objAssetAssignment);
- }else{
- objAssetAssignment.Assignment_Date__c=Date.Today();
- objAssetAssignment.Status__c='Active';
- oldAssetId=objAssetAssignment.Asset__c;
- objAssetAssignment.Asset__c=obj.Assigned_Asset_New__c;
- objAssetAssignment.User_Name__c=obj.User_Name__c;
- objAssetAssignment.User_Email_Address__c=obj.User_Email__c;
- update objAssetAssignment;
- }
- if(mapOrderItems.get(obj.Id).Order.Account.Device_Recycling__c){
- createCaseForAssignment(obj, mapOrderItems, queueLog, rtId, oldAssetId, objAssetAssignment);
- }
- Asset__c assetUpdate =new Asset__c();
- assetUpdate.Id=oldAssetId;
- assetUpdate.Status__c=mapOrderItems.get(obj.Id).Order.Account.Device_Recycling__c?'Awaiting Return':'Decommissioned';
- update assetUpdate;
- }
- Asset__c assetUpdateAssigned =new Asset__c(Id=obj.Assigned_Asset_New__c, Status__c='Assigned');
- update assetUpdateAssigned;
- }
- }
- public static void createAssetAssignmentForReplenishment(List<OrderItem> lstOrderItem, Map<String, Asset_Assignment__c> mapExistingAssetAssignments, Map<Id, OrderItem> mapOrderItems, QueueSObject queueLog, Id rtID){
- Map<String, Asset_Assignment__c> mapAssetAssignmentsInsert=new Map<String, Asset_Assignment__c>();
- List<Asset_Assignment__c> lstAssignmentInsert=new List<Asset_Assignment__c>();
- List<Asset_Assignment__c> lstAssignmentUpdate=new List<Asset_Assignment__c>();
- List<Case> lstCaseInsert=new List<Case>();
- for(OrderItem obj: lstOrderItem){
- // if(!obj.Replenishment_Stock__c) continue;
- if(obj.Connection_Type__c!=null && (obj.Connection_Type__c=='New Connection' || obj.Connection_Type__c=='Port')){
- if(obj.Replenishment_Stock__c){
- Asset__c objAsset=createAsset(obj, mapOrderItems);
- obj.Created_Asset__c=objAsset.Id;
- }else{
- Asset__c objAsset=createAsset(obj, mapOrderItems);
- obj.Assigned_Asset_New__c=objAsset.Id;
- obj.Created_Asset__c=objAsset.Id;
- Asset_Assignment__c objAssetAssign=createAssetAssignment(obj, objAsset.Id, mapOrderItems);
- }
- }else{
- if(obj.Replenishment_Stock__c){
- Asset__c objAsset=createAsset(obj, mapOrderItems);
- obj.Created_Asset__c=objAsset.Id;
- }else{
- Asset__c objAsset=createAsset(obj, mapOrderItems);
- obj.Assigned_Asset_New__c=objAsset.Id;
- obj.Created_Asset__c=objAsset.Id;
- Asset_Assignment__c objAssetAssignment= new Asset_Assignment__c();
- objAssetAssignment=mapExistingAssetAssignments.get(obj.Phone_Number__c);
- Id oldAssetId;
- if(objAssetAssignment==null){
- objAssetAssignment=createAssetAssignment(obj, obj.Assigned_Asset_New__c, mapOrderItems);
- }else{
- objAssetAssignment.Assignment_Date__c=Date.Today();
- objAssetAssignment.Status__c='Active';
- oldAssetId=objAssetAssignment.Asset__c;
- objAssetAssignment.Asset__c=objAsset.Id;
- objAssetAssignment.User_Name__c=obj.User_Name__c;
- objAssetAssignment.User_Email_Address__c=obj.User_Email__c;
- update objAssetAssignment;
- }
- if(mapOrderItems.get(obj.Id).Order.Account.Device_Recycling__c){
- createCaseForAssignment(obj, mapOrderItems, queueLog, rtId, oldAssetId, objAssetAssignment);
- }
- Asset__c assetUpdate =new Asset__c();
- assetUpdate.Id=oldAssetId;
- assetUpdate.Status__c=mapOrderItems.get(obj.Id).Order.Account.Device_Recycling__c?'Awaiting Return':'Decommissioned';
- update assetUpdate;
- }
- }
- }
- }
- public static void assetManagementProcess(List<OrderItem> lstOrderItem, Map<Id, OrderItem> mapNewOrder, Map<Id, OrderItem> mapOldOrder, Set<Id> newChildSet){
- // if(!checkRecursive.runOnce()) return;
- Map<String, Asset_Assignment__c> mapExistingAssetAssignments=new Map<String, Asset_Assignment__c>();
- Map<Id, OrderItem> mapOrderItems=new Map<Id, OrderItem>();
- Set<String> setOrderItemId=new Set<String>();
- Set<String> setOrderItemIdAssetChange=new Set<String>();
- Set<String> setPhoneNumber=new Set<String>();
- for(OrderItem obj: lstOrderItem){
- if(obj.Serial_Number__c!=null && obj.Serial_Number__c!=mapOldOrder.get(obj.Id).Serial_Number__c && obj.MSP_Product__c && obj.Serialised__c){
- setOrderItemId.add(obj.Id);
- }
- if(obj.Assigned_Asset_New__c!=null && obj.Assigned_Asset_New__c!=mapOldOrder.get(obj.Id).Assigned_Asset_New__c){
- setOrderItemIdAssetChange.add(obj.Id);
- }
- if(obj.Phone_Number__c!=null){
- setPhoneNumber.add(obj.Phone_Number__c);
- }
- }
- if(setOrderItemId.ISEMPTY() && setOrderItemIdAssetChange.ISEMPTY()) return;
- Id rtId = [select Id,name from RecordType where SobjectType='Case' AND Name='Replacement Recycle' limit 1].Id;
- QueueSObject queueLog = [select id,QueueId,Queue.Name from QueueSObject where Queue.Name='Logistics' limit 1];
- Set<String> setOrderItemChangeId=setOrderItemId.ISEMPTY()?setOrderItemIdAssetChange:setOrderItemId;
- for(Asset_Assignment__c obj: getAssetAssignmentDetails(setPhoneNumber)){
- mapExistingAssetAssignments.put(obj.Phone_Number__c,obj);
- }
- try{
- for(OrderItem obj: getOrderItemDetails(setOrderItemChangeId)){
- mapOrderItems.put(obj.Id,obj);
- }
- System.debug('mapOrderItems---------------------------------->'+mapOrderItems);
- if(!mapOrderItems.ISEMPTY() && !setOrderItemId.ISEMPTY()){
- createAssetAssignmentForReplenishment(lstOrderItem, mapExistingAssetAssignments, mapOrderItems, queueLog, rtId);
- }else if(!mapOrderItems.ISEMPTY() && !setOrderItemIdAssetChange.ISEMPTY()){
- createAssetAssignmentForNonReplenishment(lstOrderItem, mapExistingAssetAssignments, mapOrderItems, queueLog, rtId);
- }
- }catch(Exception e){
- System.debug(e);
- }
- }
- public static void updateBulkChangesList(Set<Id> oldChildSet){
- List<Bulk_Changes_List__c> newList = new List<Bulk_Changes_List__c>();
- List<OrderItem> orderItems = [select Id, Order.Id, Order.Case__c, Phone_Number__c, User_Name__c, User_Email__c, SPOT__c, SUBS__c, DTOM_Profile__c, Cost_Centre__c from OrderItem where Serialised__c=true and Id in :oldChildSet LIMIT 1];
- if(orderItems.size() > 0){
- for(OrderItem oItem : orderItems) {
- if(![select Id from Bulk_Changes_List__c where Order_Product__c =: oItem.Id].isEmpty()) {
- Bulk_Changes_List__c bulkItem = [select Id from Bulk_Changes_List__c where Order_Product__c =: oItem.Id LIMIT 1];
- bulkItem.Order_Product__c = oItem.Id;
- bulkItem.User_Name__c = oItem.User_Name__c;
- bulkItem.User_Email__c = oItem.User_Email__c;
- bulkItem.SPOT__c = oItem.SPOT__c;
- bulkItem.SUBS__c = oItem.SUBS__c;
- bulkItem.DTOM_Profile__c = oItem.DTOM_Profile__c;
- bulkItem.Cost_Centre__c = oItem.Cost_Centre__c;
- if (oItem.Phone_Number__c != null) {
- bulkItem.Name = oItem.Phone_Number__c;
- } else {
- bulkItem.Name = 'TO BE CONFIRMED';
- }
- newList.add(bulkItem);
- }
- }
- }
- if(newList.size() > 0) update newList;
- }
- public static void updateAccountNamePicklist(Set<Id> oldChildSet){
- if(!checkRecursive.runOnce()) return;
- List<OrderItem> ItemstoUpdate = new List<OrderItem>();
- for(OrderItem obj : [Select id,Account_Name__c,Account_Name_Picklist__c from OrderItem where id in:Trigger.newMap.keyset()]){
- if(obj.Account_Name_Picklist__c <> obj.Account_Name__c){
- If(obj.Account_Name__c.contains('CHH')){
- obj.Account_Name_Picklist__c = 'CHH';
- }else{if(obj.Account_Name__c.contains('Oji')){
- obj.Account_Name_Picklist__c = 'Oji';
- }else{
- obj.Account_Name_Picklist__c = obj.Account_Name__c;
- }
- }
- ItemstoUpdate.add(obj);
- }
- update ItemstoUpdate;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement