You need to sign in to do that
Don't have an account?

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
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
All Answers
if you want to check a field as empty then you can use the logic in your code
mark best if this was helpful else let me know
Thank you
Avaneesh Singh