function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
sfdeveloper12sfdeveloper12 

How to make discount filed 0 in apex?

Hello, 

I want to make dicount filed 0 if it left blank. How is it possible?

trigger QuotelineItemApproval on QuoteLineItem (after insert, after update) {

    List<Quote> parentObjList = new List<Quote>();
    List<ID> listIds = new List<ID>();
    List<Quote> listIds1 = new List<Quote>();
    
    //List <QuotelineItem> m3 = [select ID, Discount_Flag1__c from QuotelineItem where Discount_Flag1__c = : '1'];
    Boolean inRange ;
    
    String status  ='Not Required';
    String QuoteID ;
    Boolean isAwaiting = false;
    
    
    for (QuoteLineItem childObj : Trigger.new) {
        if(QuoteID == null) {
             QuoteID  = childObj.QuoteID;
        }    
    }
    
    Boolean changed = false;
    
    if(QuoteID  != null) {
        for(List<QuoteLineItem> items : [select ID, Discount_Flag1__c,Quantity ,Discount  from QuotelineItem where QuoteId= : QuoteID  ]) {
            for(QuoteLineItem item : items ) {
                inRange = false;
                changed  = true;
                if(item.Quantity >= 0 && item.Quantity <= 9 &&  item.Discount <= 0) {
                       inRange = true;
                } else {
                   if(item.Quantity >= 10 && item.Quantity <= 25 &&  item.Discount <= 5) {
                     inRange = true;
                   } else {
                      if(item.Quantity >= 26 && item.Quantity <= 49 &&  item.Discount <= 7) {
                         inRange = true;
                      } else {
                         if(item.Quantity >= 50  &&  item.Discount <= 10) {
                             inRange = true;
                         }
                      }
                   }
                }
                
                if(!inRange) {
                   isAwaiting  = true;              
                }  
                
                system.debug('***********+Quantity +*************'+item.Quantity);
                system.debug('***********+Discount +*************'+item.Discount);
                 
                system.debug('***********+inRange +*************'+inRange );
        
            } 
        } 
        
        
        system.debug('***********+isAwaiting  +*************'+isAwaiting  );
         
        if(changed ) {
           
           Id retVal = null;
           for(ProcessInstanceWorkitem workItem  : [Select p.Id from ProcessInstanceWorkitem p   where p.ProcessInstance.TargetObjectId =: QuoteID]) {
                retVal  =  workItem.Id;
           } 
           
           if(isAwaiting  ) {  
               status = 'Awaiting Approval'; 
           } else {
               status = 'Not Required';           
           }
           
           List<Quote> quotes = [select Id,Approval_Status__c  from Quote where Id =:QuoteID  ]; 
           
           if(quotes.size() > 0) {
               Quote QuoteDetails = quotes[0];
               if(retVal != null && status == 'Not Required') {
                       Approval.ProcessWorkitemRequest req = new Approval.ProcessWorkitemRequest();
                       req.setComments('Automatically approved as Approval is no longer required.'); 
                       req.setAction('Approve');
                       req.setNextApproverIds(new Id[] {UserInfo.getUserId()});  
                       req.setWorkitemId(retVal );    
                       Approval.ProcessResult result =  Approval.process(req);
               } 
                
               
               
           
               //QuoteDetails.IsSynching = false;
               QuoteDetails.Approval_Status__c  = status;
               update QuoteDetails;
           } 
        } 
    }
    
    
    
}

Thanks & Regards,
Utkarsha
Best Answer chosen by sfdeveloper12
D-CoderD-Coder
Use workflow field update. Add condition on discount , if it is blank or null add workflow action - field update , to update a value use formula expression and set 0.

All Answers

AvaneeshAvaneesh
Hi Utkarsha 

if you want to check a field as empty then you can use the logic in your code 



 
List<QuoteLineItem> ItemUpdateList = new List<QuoteLineItem >();

for(QuoteLineItem item:items)
{
  if(String.valueOf(Discount).equals(NULL) || String.ValueOf(Discount).equals(' ') )
  { 
    QuoteLineItem  QL = new QuoteLineItem (Discount=0);    
      ItemUpdateList.add(QL);  
   
  }
}

if(ItemUpdateList.size()>0)
{
  update ItemUpdateList ;
}

mark best if this was helpful else let me know 


Thank you 
Avaneesh Singh
 
D-CoderD-Coder
Use workflow field update. Add condition on discount , if it is blank or null add workflow action - field update , to update a value use formula expression and set 0.
This was selected as the best answer
sfdeveloper12sfdeveloper12
Its working with this formula in workflow:  IF(ISNULL(Discount) , 0, Discount )