Jump to content

Any salesforce developers??


Kedism

Recommended Posts

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

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

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


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

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...