Kedism Posted February 6, 2022 Share Posted February 6, 2022 Oka issue find out cheyyadaniki chastuna.. can any one guide me ? Link to comment Share on other sites More sharing options...
Naren_EGDT Posted February 6, 2022 Share Posted February 6, 2022 Post the issue uncle, mai hoon na Link to comment Share on other sites More sharing options...
Kedism Posted February 6, 2022 Author Share Posted February 6, 2022 6 hours ago, Naren_EGDT said: Post the issue uncle, mai hoon na Annay Meeru sf side yeppudu move iyyaru?? direct call (007) ye chesthaanu Meeku .. okay Na ? Link to comment Share on other sites More sharing options...
Peter Griffin Posted February 6, 2022 Share Posted February 6, 2022 db ki nee saggam salary evvachu emmo nuvu .... Link to comment Share on other sites More sharing options...
Kedism Posted February 6, 2022 Author Share Posted February 6, 2022 1 hour ago, Peter Griffin said: db ki nee saggam salary evvachu emmo nuvu .... annay last time Meeku Nenu hand ichanu ee term Meeru icharu ga Link to comment Share on other sites More sharing options...
KEDI Posted February 6, 2022 Share Posted February 6, 2022 Link to comment Share on other sites More sharing options...
freeks Posted February 6, 2022 Share Posted February 6, 2022 Issue ekkada post cheyyi bro,will check with my circle.. Link to comment Share on other sites More sharing options...
abhitdp Posted February 7, 2022 Share Posted February 7, 2022 Send me issue will see Link to comment Share on other sites More sharing options...
man07 Posted February 7, 2022 Share Posted February 7, 2022 Sf developers ki amina jobs untey cheypandi I live in canada Link to comment Share on other sites More sharing options...
Kedism Posted February 7, 2022 Author Share Posted February 7, 2022 Thank you vary much for your response. adi ikkada share cheyyalenu direct connecting .. Link to comment Share on other sites More sharing options...
Kedism Posted February 7, 2022 Author Share Posted February 7, 2022 7 hours ago, KEDI said: Annay Naa kastaalu Meeku em ardam avthaaye le Link to comment Share on other sites More sharing options...
Kedism Posted February 7, 2022 Author Share Posted February 7, 2022 13 hours ago, freeks said: Issue ekkada post cheyyi bro,will check with my circle.. vehicle trigger: trigger OUV_VehicleTrigger on OUV_Vehicle__c (before insert, before update, after insert, after update,after delete,after undelete) { public static final Boolean FLEETONLY = True; List<B25__Availability__c> recordInsertList = new List<B25__Availability__c>(); List<B25__Availability__c> recordUpdateList = new List<B25__Availability__c>(); B25__Availability__c emptyRec = new B25__Availability__c(); OUV_OverbudgetCalculator overbudgetCalc = new OUV_OverbudgetCalculator(); OUV_VehicleHandler handler = new OUV_VehicleHandler(Trigger.oldmap, overbudgetCalc); OUV_VehicleUtilisationHandler utilizationHandler = new OUV_VehicleUtilisationHandler(Trigger.oldmap); OUV_RecordShareProcessor shareHandler = new OUV_RecordShareProcessor(Trigger.oldmap); OUV_Vehicle_Availability_TriggerHandler availabilityHandler = new OUV_Vehicle_Availability_TriggerHandler(Trigger.oldmap); OUV_Vehicle_Cancel_Reservation cancelReservHandler = new OUV_Vehicle_Cancel_Reservation(Trigger.oldmap); OUV_NewRequestedHandInDateChange requestedHandInDateChanges = new OUV_NewRequestedHandInDateChange (); //System.debug('Veh Trigger: ' + Trigger.operationType); if(Trigger.isBefore){ if(Trigger.New != null){ for(OUV_Vehicle__c newObj: Trigger.New){ handler.bulkBeginEval(newObj); } handler.bulkBeginExecute(false); } if(Trigger.isInsert){ for(OUV_Vehicle__c newObj: Trigger.New){ handler.beforeInsert(newObj); } } else if(Trigger.isUpdate){ requestedHandInDateChanges.changeNewRequestedDate(trigger.new, trigger.oldmap); requestedHandInDateChanges.taskNotificationOwnerChange(trigger.new, trigger.oldmap); for(OUV_Vehicle__c newObj: Trigger.New) { handler.beforeUpdate(newObj); } } handler.andFinally(); } else{ if(Trigger.New != null){ for(SObject newObj: Trigger.New){ handler.bulkBeginEval((OUV_Vehicle__c)newObj); utilizationHandler.bulkBeginEval((OUV_Vehicle__c)newObj); shareHandler.bulkAfterEval(newObj); } handler.bulkBeginExecute(FLEETONLY); utilizationHandler.bulkBeginExecute(); shareHandler.updateFleetMap(handler.RelatedFleetMap); shareHandler.bulkAfterExecute(); } if(Trigger.isInsert){ for(SObject newObj: Trigger.New){ OUV_Vehicle__c rec = (OUV_Vehicle__c)newObj; B25__Availability__c sObj = availabilityHandler.insertAvailability(rec); recordInsertList.add(sObj); utilizationHandler.afterInsert((OUV_Vehicle__c)newObj); shareHandler.afterInsert(newObj); } if(!recordInsertList.isEmpty()) { INSERT recordInsertList; } OUV_OUVEventHandler.RaiseOUVChangeEvent(Trigger.New); } else if(Trigger.isUpdate){ availabilityHandler.getRelatedAvail(); for(SObject newObj: Trigger.New) { OUV_Vehicle__c rec = (OUV_Vehicle__c)newObj; B25__Availability__c sObj2 = availabilityHandler.updateAvailability(rec); if(sObj2 != emptyRec) { recordUpdateList.add(sObj2); } utilizationHandler.afterUpdate((OUV_Vehicle__c)newObj); shareHandler.afterUpdate(newObj); } if(!recordUpdateList.isEmpty()) { UPDATE recordUpdateList; } cancelReservHandler.cancelReservations(Trigger.new); OUV_OUVEventHandler.RaiseOUVChangeEvent(Trigger.New); }else if(Trigger.isUndelete){ OUV_OUVEventHandler.RaiseOUVChangeEvent(Trigger.New); }else if(Trigger.isDelete){ OUV_OUVEventHandler.RaiseOUVDeleteEvent(Trigger.Old); } utilizationHandler.andFinally(); shareHandler.andFinally(); } } Link to comment Share on other sites More sharing options...
Kedism Posted February 7, 2022 Author Share Posted February 7, 2022 Vehicle handler : public without sharing class OUV_VehicleHandler { private Map<Id, OUV_Vehicle__c> oldMap; @TestVisible private Set<Id> vehicleIds = new Set<Id>(); @TestVisible private Set<Id> fleetIds= new Set<Id>(); @TestVisible private Set<String> amsMarkets= new Set<String>(); @TestVisible private Set<string> marketCodes = new Set<string>(); @TestVisible private Map<String,String> currencyMap = new Map<String,String>(); @TestVisible private Boolean fetchOverBudgetData = false; @TestVisible private Date MaxHandIn = NTT_ApexUtils.today(); @TestVisible private Date MinHandIn = NTT_ApexUtils.today(); @TestVisible public Map<Id,OUV_Fleet__c> RelatedFleetMap = new Map<Id,OUV_Fleet__c>(); @TestVisible public Map<Id,B25__Reservation__c> RelatedReservMap = new Map<Id,B25__Reservation__c>(); public static final String FLEET_FIELD = 'OUV_Fleet__c'; private OUV_OverbudgetCalculator overbudgetCalc = new OUV_OverbudgetCalculator(); private enum CountMethod {INCREASE, DECREASE} public OUV_VehicleHandler(Map<Id, OUV_Vehicle__c> oldMap, OUV_OverbudgetCalculator overbudgetCalc){ this.oldMap = oldMap; this.overbudgetCalc = overbudgetCalc; } public void bulkBeginEval(OUV_Vehicle__c sObj){ vehicleIds.add(sObj.Id); if(fetchFleet(sObj)){ fleetIds.add(sObj.OUV_Fleet__c); if(oldMap != null && oldMap.containsKey(sObj.Id)){ OUV_Vehicle__c old = oldMap.get(sObj.Id); fleetIds.add(old.OUV_Fleet__c); } } if(RequireOverBudgetCalc(sObj)){ if(sObj.OUV_Market_Location__c != null) amsMarkets.add(sObj.OUV_Market_Location__c); if(sObj.OUV_HandinDate__c != null && sObj.OUV_HandinDate__c > MaxHandIn) MaxHandIn = sObj.OUV_HandinDate__c; if(sObj.OUV_HandinDate__c != null && sObj.OUV_HandinDate__c < MinHandIn) MinHandIn = sObj.OUV_HandinDate__c; fetchOverBudgetData = true; } if(RequiresCurrencyUpdate(sObj)){ marketCodes.add(sObj.OUV_MarketCode__c); } } public void bulkBeginExecute(Boolean fleetOnly){ //Get Associated Reservation records if(!vehicleIds.isEmpty()){ Datetime currentTime = NTT_ApexUtils.now(); for (B25__Reservation__c reserv : [SELECT Id, OUV_Vehicle__c FROM B25__Reservation__c Where B25__EndLocal__c >= :currentTime AND B25__Status__r.Name != 'Cancelled' AND OUV_Vehicle__c IN :vehicleIds]){ RelatedReservMap.put(reserv.OUV_Vehicle__c, reserv); } } //Get Associated Fleet records if(!fleetIds.isEmpty()){ for (OUV_Fleet__c f : [SELECT Id, OUV_Public_Group_Id__c, Fleet_Manager__c, OUV_Disposal_Approver__c, OUV_Registration_Approver__c, Fleet_Administrator_1__c, Fleet_Administrator_2__c, Fleet_Administrator_3__c, Approval_Route__r.OUV_Remarketing_Manager__c, Approval_Route__r.LL6_Approver__c, Approval_Route__r.LL4_Approver__c, Approval_Route__r.Additional_Finance__c, Approval_Route__r.Additional_Operations__c, Approval_Route__r.Regional_Finance_Director__c, Approval_Route__r.Regional_Managing_Director__c FROM OUV_Fleet__c Where Id in :fleetIds]){ RelatedFleetMap.put(f.Id, f); } } if(fetchOverBudgetData){ //Add markets from the oldMap if(oldMap != null){ for(OUV_Vehicle__c old : oldMap.values()){ if(old.OUV_Market_Location__c != null) amsMarkets.add(old.OUV_Market_Location__c); } } overbudgetCalc.GetBulkifyData(amsMarkets, MinHandIn, MaxHandIn); } if(!marketCodes.isEmpty()){ for(OUV_VISTA_Currency_Map__mdt mdt : [SELECT DeveloperName, Currency_ISO__c FROM OUV_VISTA_Currency_Map__mdt WHERE DeveloperName IN :marketCodes ]){ currencyMap.put(mdt.DeveloperName,mdt.Currency_ISO__c); } } } public void beforeInsert(OUV_Vehicle__c sObj){ sObj.OUV_HandinDate__c = sObj.OUV_ExpectedHandInDate__c; SetFinancialYearFields(sObj,null); SetFleetApprovers(sObj); SetFleetAdmins(sObj); SetFleetOwner(sObj); EvaluateOverbudget(sObj); EvaluateCurrencyUpdate(sObj); } public void beforeUpdate(OUV_Vehicle__c sObj){ OUV_Vehicle__c old = oldMap.get(sObj.Id); sObj.OUV_HandinDate__c = sObj.OUV_ExpectedHandInDate__c; SetFinancialYearFields(sObj, Old); if(sObj.OUV_Fleet__c != old.OUV_Fleet__c && !RelatedReservMap.containsKey(sObj.Id)){ SetFleetApprovers(sObj); SetFleetAdmins(sObj); SetFleetOwner(sObj); } else if(sObj.OUV_Fleet__c != old.OUV_Fleet__c && RelatedReservMap.containsKey(sObj.Id)) { sObj.addError(Label.OUV_Cannot_Change_Fleet); } EvaluateOverbudget(sObj); if(sObj.OUV_VehicleMasterStatus__c != old.OUV_VehicleMasterStatus__c && sObj.OUV_VehicleMasterStatus__c == 'Handed In' && RelatedReservMap.containsKey(sObj.Id)){ sObj.addError(Label.OUV_Cannot_Change_To_Handed_In); } ///////////////////////////////////////////////////////////////////////// if(sObj.OUV_VehicleMasterStatus__c != old.OUV_VehicleMasterStatus__c && sObj.OUV_VehicleMasterStatus__c == 'Live' && sObj.OUV_VehicleSubStatus__c == null && sObj.OUV_ReportingLevel1__c != 'Employee Cars' && sObj.OUV_ReportingLevel1__c != 'Buybacks'){ sObj.OUV_VehicleSubStatus__c = 'Available / Idle'; } else if(sObj.OUV_VehicleMasterStatus__c != old.OUV_VehicleMasterStatus__c && sObj.OUV_VehicleMasterStatus__c == 'Live' && sObj.OUV_VehicleSubStatus__c == null && (sObj.OUV_ReportingLevel1__c == 'Employee Cars' || sObj.OUV_ReportingLevel1__c == 'Buybacks')){ sObj.OUV_VehicleSubStatus__c = 'In Use'; } else if(sObj.OUV_VehicleMasterStatus__c != old.OUV_VehicleMasterStatus__c && sObj.OUV_VehicleMasterStatus__c == 'Handed In' && sObj.OUV_VehicleSubStatus__c == null ){ sObj.OUV_VehicleSubStatus__c = 'Awaiting Inspection'; } ///////////////////////////////////////////////////////////////////////// EvaluateCurrencyUpdate(sObj); } public void andFinally() { } private void SetFleetOwner(OUV_Vehicle__c record){ OUV_Fleet__c fleet = RelatedFleetMap.get(record.OUV_Fleet__c); if(fleet != null){ record.OwnerId = fleet.Fleet_Manager__c; } } private void SetFleetApprovers(OUV_Vehicle__c record){ OUV_Fleet__c fleet = RelatedFleetMap.get(record.OUV_Fleet__c); if(fleet != null){ record.OUV_RemarketingFleetManager__c = fleet.Approval_Route__r.OUV_Remarketing_Manager__c; record.OUV_Additional_Finance__c = fleet.Approval_Route__r.Additional_Finance__c; record.OUV_Additional_Operations__c = fleet.Approval_Route__r.Additional_Operations__c; record.OUV_LL6_Approval__c = fleet.Approval_Route__r.LL6_Approver__c; record.OUV_LL4_Approval__c = fleet.Approval_Route__r.LL4_Approver__c; record.OUV_Registration_Approver__c = fleet.OUV_Registration_Approver__c; record.OUV_Disposal_Approver__c = fleet.OUV_Disposal_Approver__c; } } private void SetFleetAdmins(OUV_Vehicle__c record){ OUV_Fleet__c fleet = RelatedFleetMap.get(record.OUV_Fleet__c); if(fleet != null){ record.OUV_FleetAdministrator__c = fleet.Fleet_Administrator_1__c; record.OUV_Fleet_Administrator_2__c = fleet.Fleet_Administrator_2__c; record.OUV_Fleet_Administrator_3__c = fleet.Fleet_Administrator_3__c; } } private void SetFinancialYearFields(OUV_Vehicle__c record, OUV_Vehicle__c old){ if((old == null || record.OUV_AddToFleetDate__c != old.OUV_AddToFleetDate__c)) record.OUV_ActualAddToFleetFinancialYear__c = OUV_DateUtils.GetFiscalYear(record.OUV_AddToFleetDate__c); if((old == null || record.OUV_ProposedAddToFleetDate__c != old.OUV_ProposedAddToFleetDate__c)){ record.OUV_AddToFleetFYQuarter__c = OUV_DateUtils.GetCurrentQuarter(record.OUV_ProposedAddToFleetDate__c); record.OUV_AddToFleetFinancialYear__c = OUV_DateUtils.GetFiscalYear(record.OUV_ProposedAddToFleetDate__c); } if((old == null || record.OUV_HandinDate__c != old.OUV_HandinDate__c)){ record.OUV_HandInFYQuarter__c = OUV_DateUtils.GetCurrentQuarter(record.OUV_HandinDate__c); record.OUV_HandInFinancialYear__c = OUV_DateUtils.GetFiscalYear(record.OUV_HandinDate__c); } if((old == null || record.OUV_NewRequestedHandedInDate__c != old.OUV_NewRequestedHandedInDate__c)) record.OUV_NewRequestedHandedInFinancialYear__c = OUV_DateUtils.GetFiscalYear(record.OUV_NewRequestedHandedInDate__c); } private boolean fetchFleet(OUV_Vehicle__c record){ if((oldMap == null || !oldMap.containsKey(record.Id)) && record.OUV_Fleet__c != null){ //Must be Insert return true; } else{ //Must be Update so check if changing OUV_Vehicle__c old = oldMap.get(record.Id); if(record.OUV_Fleet__c != old.OUV_Fleet__c && record.OUV_Fleet__c != null) return true; } return false; } private boolean RequireOverBudgetCalc(OUV_Vehicle__c record){ system.debug('handin : ' + record.OUV_HandinDate__c); if (record.OUV_NewRequestedHandedInDate__c != null && record.OUV_HandinDate__c != null){ if(oldMap != null && record.OUV_NewRequestedHandedInDate__c != oldMap.get(record.Id).OUV_NewRequestedHandedInDate__c) { return true; } } return false; } private void EvaluateOverbudget(OUV_Vehicle__c record){ if (RequireOverBudgetCalc(record)) { CalcOverbudget(record); } else if(record.OUV_NewRequestedHandedInDate__c == null && (oldMap == null || oldMap.get(record.Id).OUV_HandedInDateChangeOverBudget__c != 'NA')){ record.OUV_HandedInDateChangeOverBudget__c = 'NA'; // (by default value when extended handed in date is null) } } private void EvaluateCurrencyUpdate(OUV_Vehicle__c record){ if(RequiresCurrencyUpdate(record)){ record.CurrencyIsoCode = currencyMap.get(record.OUV_MarketCode__c); } } private Boolean RequiresCurrencyUpdate(OUV_Vehicle__c record){ if(record.OUV_MarketCode__c != null && (this.oldMap == null || this.oldMap.get(record.Id).OUV_MarketCode__c != record.OUV_MarketCode__c)){ return true; } return false; } private void CalcOverbudget(OUV_Vehicle__c record){ //Overbudget. Determine the budget based on the next Qtr after existing hand-in (unless change is in same FY & Qtr in which case use the existing Qtr) of an active AMS. Otherwise use the Q4 of last active String budgetQtr = 'Q4'; String budgetFY = record.OUV_HandInFinancialYear__c; String extendedHandedInQuarter = OUV_DateUtils.GetCurrentQuarter(record.OUV_NewRequestedHandedInDate__c); String expectedHandInQuarter = OUV_DateUtils.GetCurrentQuarter(record.OUV_HandinDate__c); //Set the Qtr for the New Requested Hand-in on the OUV record.OUV_NewRequestedHandedInDateQuarter__c = extendedHandedInQuarter; //Get the AMS for the Existing Hand-in Date FY if (extendedHandedInQuarter == expectedHandInQuarter && record.OUV_HandInFinancialYear__c == record.OUV_NewRequestedHandedInFinancialYear__c) { System.debug('Use Same Qtr condition'); budgetQtr = expectedHandInQuarter; } else if (expectedHandInQuarter != 'Q4') { System.debug('Use Next Qtr condition'); budgetQtr = 'Q' + string.valueOf(integer.valueOf(expectedHandInQuarter.substring(1, 2)) + 1); } else { System.debug('Use Next Qtr condition'); //Only use Q1 of the next financial year if that is Approved budgetQtr = 'Q1'; budgetFY = string.valueOf(integer.valueOf(budgetFY.substring(0, 4)) + 1) + '/' + string.valueOf(integer.valueOf(budgetFY.substring(5, 9)) + 1); } // check if vehicle i within or over budget if (overBudgetCalc.IsOverbudget(budgetFY, budgetQtr, record.OUV_Market_Location__c, 1)) { record.OUV_HandedInDateChangeOverBudget__c = 'Yes'; } else { record.OUV_HandedInDateChangeOverBudget__c = 'No'; } record.OUV_ActualToDateForExtendedHandedIn__c = overBudgetCalc.getEstLiveCount(); } } Link to comment Share on other sites More sharing options...
uma Posted February 7, 2022 Share Posted February 7, 2022 On 2/6/2022 at 4:39 PM, Kedism said: Oka issue find out cheyyadaniki chastuna.. can any one guide me ? findout ke help adhigithe...inka resolve ki intiki vachi cheyyamantaavemo......... Link to comment Share on other sites More sharing options...
uma Posted February 7, 2022 Share Posted February 7, 2022 code ikkada post chesinanduku moosi dobbandi ee @Kedismni.... Link to comment Share on other sites More sharing options...
Kedism Posted February 7, 2022 Author Share Posted February 7, 2022 @uma uncle spamming stop chesi helping cheyyachu ga Link to comment Share on other sites More sharing options...
uma Posted February 7, 2022 Share Posted February 7, 2022 1 minute ago, Kedism said: @uma uncle spamming stop chesi helping cheyyachu ga SF manaki raadugaa......openstack ask...i help... Link to comment Share on other sites More sharing options...
Kedism Posted February 7, 2022 Author Share Posted February 7, 2022 6 minutes ago, Kedism said: Vehicle handler : public without sharing class OUV_VehicleHandler { private Map<Id, OUV_Vehicle__c> oldMap; @TestVisible private Set<Id> vehicleIds = new Set<Id>(); @TestVisible private Set<Id> fleetIds= new Set<Id>(); @TestVisible private Set<String> amsMarkets= new Set<String>(); @TestVisible private Set<string> marketCodes = new Set<string>(); @TestVisible private Map<String,String> currencyMap = new Map<String,String>(); @TestVisible private Boolean fetchOverBudgetData = false; @TestVisible private Date MaxHandIn = NTT_ApexUtils.today(); @TestVisible private Date MinHandIn = NTT_ApexUtils.today(); @TestVisible public Map<Id,OUV_Fleet__c> RelatedFleetMap = new Map<Id,OUV_Fleet__c>(); @TestVisible public Map<Id,B25__Reservation__c> RelatedReservMap = new Map<Id,B25__Reservation__c>(); public static final String FLEET_FIELD = 'OUV_Fleet__c'; private OUV_OverbudgetCalculator overbudgetCalc = new OUV_OverbudgetCalculator(); private enum CountMethod {INCREASE, DECREASE} public OUV_VehicleHandler(Map<Id, OUV_Vehicle__c> oldMap, OUV_OverbudgetCalculator overbudgetCalc){ this.oldMap = oldMap; this.overbudgetCalc = overbudgetCalc; } public void bulkBeginEval(OUV_Vehicle__c sObj){ vehicleIds.add(sObj.Id); if(fetchFleet(sObj)){ fleetIds.add(sObj.OUV_Fleet__c); if(oldMap != null && oldMap.containsKey(sObj.Id)){ OUV_Vehicle__c old = oldMap.get(sObj.Id); fleetIds.add(old.OUV_Fleet__c); } } if(RequireOverBudgetCalc(sObj)){ if(sObj.OUV_Market_Location__c != null) amsMarkets.add(sObj.OUV_Market_Location__c); if(sObj.OUV_HandinDate__c != null && sObj.OUV_HandinDate__c > MaxHandIn) MaxHandIn = sObj.OUV_HandinDate__c; if(sObj.OUV_HandinDate__c != null && sObj.OUV_HandinDate__c < MinHandIn) MinHandIn = sObj.OUV_HandinDate__c; fetchOverBudgetData = true; } if(RequiresCurrencyUpdate(sObj)){ marketCodes.add(sObj.OUV_MarketCode__c); } } public void bulkBeginExecute(Boolean fleetOnly){ //Get Associated Reservation records if(!vehicleIds.isEmpty()){ Datetime currentTime = NTT_ApexUtils.now(); for (B25__Reservation__c reserv : [SELECT Id, OUV_Vehicle__c FROM B25__Reservation__c Where B25__EndLocal__c >= :currentTime AND B25__Status__r.Name != 'Cancelled' AND OUV_Vehicle__c IN :vehicleIds]){ RelatedReservMap.put(reserv.OUV_Vehicle__c, reserv); } } //Get Associated Fleet records if(!fleetIds.isEmpty()){ for (OUV_Fleet__c f : [SELECT Id, OUV_Public_Group_Id__c, Fleet_Manager__c, OUV_Disposal_Approver__c, OUV_Registration_Approver__c, Fleet_Administrator_1__c, Fleet_Administrator_2__c, Fleet_Administrator_3__c, Approval_Route__r.OUV_Remarketing_Manager__c, Approval_Route__r.LL6_Approver__c, Approval_Route__r.LL4_Approver__c, Approval_Route__r.Additional_Finance__c, Approval_Route__r.Additional_Operations__c, Approval_Route__r.Regional_Finance_Director__c, Approval_Route__r.Regional_Managing_Director__c FROM OUV_Fleet__c Where Id in :fleetIds]){ RelatedFleetMap.put(f.Id, f); } } if(fetchOverBudgetData){ //Add markets from the oldMap if(oldMap != null){ for(OUV_Vehicle__c old : oldMap.values()){ if(old.OUV_Market_Location__c != null) amsMarkets.add(old.OUV_Market_Location__c); } } overbudgetCalc.GetBulkifyData(amsMarkets, MinHandIn, MaxHandIn); } if(!marketCodes.isEmpty()){ for(OUV_VISTA_Currency_Map__mdt mdt : [SELECT DeveloperName, Currency_ISO__c FROM OUV_VISTA_Currency_Map__mdt WHERE DeveloperName IN :marketCodes ]){ currencyMap.put(mdt.DeveloperName,mdt.Currency_ISO__c); } } } public void beforeInsert(OUV_Vehicle__c sObj){ sObj.OUV_HandinDate__c = sObj.OUV_ExpectedHandInDate__c; SetFinancialYearFields(sObj,null); SetFleetApprovers(sObj); SetFleetAdmins(sObj); SetFleetOwner(sObj); EvaluateOverbudget(sObj); EvaluateCurrencyUpdate(sObj); } public void beforeUpdate(OUV_Vehicle__c sObj){ OUV_Vehicle__c old = oldMap.get(sObj.Id); sObj.OUV_HandinDate__c = sObj.OUV_ExpectedHandInDate__c; SetFinancialYearFields(sObj, Old); if(sObj.OUV_Fleet__c != old.OUV_Fleet__c && !RelatedReservMap.containsKey(sObj.Id)){ SetFleetApprovers(sObj); SetFleetAdmins(sObj); SetFleetOwner(sObj); } else if(sObj.OUV_Fleet__c != old.OUV_Fleet__c && RelatedReservMap.containsKey(sObj.Id)) { sObj.addError(Label.OUV_Cannot_Change_Fleet); } EvaluateOverbudget(sObj); if(sObj.OUV_VehicleMasterStatus__c != old.OUV_VehicleMasterStatus__c && sObj.OUV_VehicleMasterStatus__c == 'Handed In' && RelatedReservMap.containsKey(sObj.Id)){ sObj.addError(Label.OUV_Cannot_Change_To_Handed_In); } ///////////////////////////////////////////////////////////////////////// if(sObj.OUV_VehicleMasterStatus__c != old.OUV_VehicleMasterStatus__c && sObj.OUV_VehicleMasterStatus__c == 'Live' && sObj.OUV_VehicleSubStatus__c == null && sObj.OUV_ReportingLevel1__c != 'Employee Cars' && sObj.OUV_ReportingLevel1__c != 'Buybacks'){ sObj.OUV_VehicleSubStatus__c = 'Available / Idle'; } else if(sObj.OUV_VehicleMasterStatus__c != old.OUV_VehicleMasterStatus__c && sObj.OUV_VehicleMasterStatus__c == 'Live' && sObj.OUV_VehicleSubStatus__c == null && (sObj.OUV_ReportingLevel1__c == 'Employee Cars' || sObj.OUV_ReportingLevel1__c == 'Buybacks')){ sObj.OUV_VehicleSubStatus__c = 'In Use'; } else if(sObj.OUV_VehicleMasterStatus__c != old.OUV_VehicleMasterStatus__c && sObj.OUV_VehicleMasterStatus__c == 'Handed In' && sObj.OUV_VehicleSubStatus__c == null ){ sObj.OUV_VehicleSubStatus__c = 'Awaiting Inspection'; } ///////////////////////////////////////////////////////////////////////// EvaluateCurrencyUpdate(sObj); } public void andFinally() { } private void SetFleetOwner(OUV_Vehicle__c record){ OUV_Fleet__c fleet = RelatedFleetMap.get(record.OUV_Fleet__c); if(fleet != null){ record.OwnerId = fleet.Fleet_Manager__c; } } private void SetFleetApprovers(OUV_Vehicle__c record){ OUV_Fleet__c fleet = RelatedFleetMap.get(record.OUV_Fleet__c); if(fleet != null){ record.OUV_RemarketingFleetManager__c = fleet.Approval_Route__r.OUV_Remarketing_Manager__c; record.OUV_Additional_Finance__c = fleet.Approval_Route__r.Additional_Finance__c; record.OUV_Additional_Operations__c = fleet.Approval_Route__r.Additional_Operations__c; record.OUV_LL6_Approval__c = fleet.Approval_Route__r.LL6_Approver__c; record.OUV_LL4_Approval__c = fleet.Approval_Route__r.LL4_Approver__c; record.OUV_Registration_Approver__c = fleet.OUV_Registration_Approver__c; record.OUV_Disposal_Approver__c = fleet.OUV_Disposal_Approver__c; } } private void SetFleetAdmins(OUV_Vehicle__c record){ OUV_Fleet__c fleet = RelatedFleetMap.get(record.OUV_Fleet__c); if(fleet != null){ record.OUV_FleetAdministrator__c = fleet.Fleet_Administrator_1__c; record.OUV_Fleet_Administrator_2__c = fleet.Fleet_Administrator_2__c; record.OUV_Fleet_Administrator_3__c = fleet.Fleet_Administrator_3__c; } } private void SetFinancialYearFields(OUV_Vehicle__c record, OUV_Vehicle__c old){ if((old == null || record.OUV_AddToFleetDate__c != old.OUV_AddToFleetDate__c)) record.OUV_ActualAddToFleetFinancialYear__c = OUV_DateUtils.GetFiscalYear(record.OUV_AddToFleetDate__c); if((old == null || record.OUV_ProposedAddToFleetDate__c != old.OUV_ProposedAddToFleetDate__c)){ record.OUV_AddToFleetFYQuarter__c = OUV_DateUtils.GetCurrentQuarter(record.OUV_ProposedAddToFleetDate__c); record.OUV_AddToFleetFinancialYear__c = OUV_DateUtils.GetFiscalYear(record.OUV_ProposedAddToFleetDate__c); } if((old == null || record.OUV_HandinDate__c != old.OUV_HandinDate__c)){ record.OUV_HandInFYQuarter__c = OUV_DateUtils.GetCurrentQuarter(record.OUV_HandinDate__c); record.OUV_HandInFinancialYear__c = OUV_DateUtils.GetFiscalYear(record.OUV_HandinDate__c); } if((old == null || record.OUV_NewRequestedHandedInDate__c != old.OUV_NewRequestedHandedInDate__c)) record.OUV_NewRequestedHandedInFinancialYear__c = OUV_DateUtils.GetFiscalYear(record.OUV_NewRequestedHandedInDate__c); } private boolean fetchFleet(OUV_Vehicle__c record){ if((oldMap == null || !oldMap.containsKey(record.Id)) && record.OUV_Fleet__c != null){ //Must be Insert return true; } else{ //Must be Update so check if changing OUV_Vehicle__c old = oldMap.get(record.Id); if(record.OUV_Fleet__c != old.OUV_Fleet__c && record.OUV_Fleet__c != null) return true; } return false; } private boolean RequireOverBudgetCalc(OUV_Vehicle__c record){ system.debug('handin : ' + record.OUV_HandinDate__c); if (record.OUV_NewRequestedHandedInDate__c != null && record.OUV_HandinDate__c != null){ if(oldMap != null && record.OUV_NewRequestedHandedInDate__c != oldMap.get(record.Id).OUV_NewRequestedHandedInDate__c) { return true; } } return false; } private void EvaluateOverbudget(OUV_Vehicle__c record){ if (RequireOverBudgetCalc(record)) { CalcOverbudget(record); } else if(record.OUV_NewRequestedHandedInDate__c == null && (oldMap == null || oldMap.get(record.Id).OUV_HandedInDateChangeOverBudget__c != 'NA')){ record.OUV_HandedInDateChangeOverBudget__c = 'NA'; // (by default value when extended handed in date is null) } } private void EvaluateCurrencyUpdate(OUV_Vehicle__c record){ if(RequiresCurrencyUpdate(record)){ record.CurrencyIsoCode = currencyMap.get(record.OUV_MarketCode__c); } } private Boolean RequiresCurrencyUpdate(OUV_Vehicle__c record){ if(record.OUV_MarketCode__c != null && (this.oldMap == null || this.oldMap.get(record.Id).OUV_MarketCode__c != record.OUV_MarketCode__c)){ return true; } return false; } private void CalcOverbudget(OUV_Vehicle__c record){ //Overbudget. Determine the budget based on the next Qtr after existing hand-in (unless change is in same FY & Qtr in which case use the existing Qtr) of an active AMS. Otherwise use the Q4 of last active String budgetQtr = 'Q4'; String budgetFY = record.OUV_HandInFinancialYear__c; String extendedHandedInQuarter = OUV_DateUtils.GetCurrentQuarter(record.OUV_NewRequestedHandedInDate__c); String expectedHandInQuarter = OUV_DateUtils.GetCurrentQuarter(record.OUV_HandinDate__c); //Set the Qtr for the New Requested Hand-in on the OUV record.OUV_NewRequestedHandedInDateQuarter__c = extendedHandedInQuarter; //Get the AMS for the Existing Hand-in Date FY if (extendedHandedInQuarter == expectedHandInQuarter && record.OUV_HandInFinancialYear__c == record.OUV_NewRequestedHandedInFinancialYear__c) { System.debug('Use Same Qtr condition'); budgetQtr = expectedHandInQuarter; } else if (expectedHandInQuarter != 'Q4') { System.debug('Use Next Qtr condition'); budgetQtr = 'Q' + string.valueOf(integer.valueOf(expectedHandInQuarter.substring(1, 2)) + 1); } else { System.debug('Use Next Qtr condition'); //Only use Q1 of the next financial year if that is Approved budgetQtr = 'Q1'; budgetFY = string.valueOf(integer.valueOf(budgetFY.substring(0, 4)) + 1) + '/' + string.valueOf(integer.valueOf(budgetFY.substring(5, 9)) + 1); } // check if vehicle i within or over budget if (overBudgetCalc.IsOverbudget(budgetFY, budgetQtr, record.OUV_Market_Location__c, 1)) { record.OUV_HandedInDateChangeOverBudget__c = 'Yes'; } else { record.OUV_HandedInDateChangeOverBudget__c = 'No'; } record.OUV_ActualToDateForExtendedHandedIn__c = overBudgetCalc.getEstLiveCount(); } } Here this is not working as expected public void beforeUpdate(OUV_Vehicle__c sObj){ OUV_Vehicle__c old = oldMap.get(sObj.Id); sObj.OUV_HandinDate__c = sObj.OUV_ExpectedHandInDate__c; Link to comment Share on other sites More sharing options...
JVC Posted February 7, 2022 Share Posted February 7, 2022 Error enti mastaru Link to comment Share on other sites More sharing options...
Kedism Posted February 7, 2022 Author Share Posted February 7, 2022 Error em ledu annay aa expectedhandin field lo value immediate ga update avvadam ledu.. Link to comment Share on other sites More sharing options...
abhitdp Posted February 7, 2022 Share Posted February 7, 2022 Add debug logs and check issue Link to comment Share on other sites More sharing options...
Kedism Posted February 7, 2022 Author Share Posted February 7, 2022 Done that also .. latest value pick cheyyadam ledu .. picking old value Link to comment Share on other sites More sharing options...
Raaz@NBK Posted February 7, 2022 Share Posted February 7, 2022 Endhidhi.. Makentidhi anta.. Link to comment Share on other sites More sharing options...
uma Posted February 7, 2022 Share Posted February 7, 2022 10 minutes ago, Kedism said: Done that also .. latest value pick cheyyadam ledu .. picking old value before getting new value, initialize field first.... Link to comment Share on other sites More sharing options...
uma Posted February 7, 2022 Share Posted February 7, 2022 8 minutes ago, Raaz@NBK said: Endhidhi.. Makentidhi anta.. maa software kooleela kastalu ilaane untaayi zamindar reddy gaaru... Link to comment Share on other sites More sharing options...
Kedism Posted February 7, 2022 Author Share Posted February 7, 2022 31 minutes ago, uma said: before getting new value, initialize field first.... Ila yela senior director iyyaru annay accenture ki Link to comment Share on other sites More sharing options...
Kedism Posted February 7, 2022 Author Share Posted February 7, 2022 40 minutes ago, Raaz@NBK said: Endhidhi.. Makentidhi anta.. all maaya Link to comment Share on other sites More sharing options...
uma Posted February 7, 2022 Share Posted February 7, 2022 7 minutes ago, Kedism said: Ila yela senior director iyyaru annay accenture ki ye movie ki.. Link to comment Share on other sites More sharing options...
Kedism Posted February 8, 2022 Author Share Posted February 8, 2022 scenario: A - we are updating this field with new value B - this is formula field . so here the new updated value will pick from A and based on formula value will be calculated and assigned. c - what ever the value is in B it should reflect the same here . in above pasted code value up to B it is working fine but from B it is not assigning to C. Link to comment Share on other sites More sharing options...
Kedism Posted February 8, 2022 Author Share Posted February 8, 2022 Issue got fixed with the help of @JVC annay🙏🙏 Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.