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
venkateshyadav1243venkateshyadav1243 

Trigger for error message

Hi,

 

I have to write a trigger to show error message when quantity more than actual quantity value.

 

i have 2 objects callup order(child) and purchase order(parent) both have lookup,

in purchase order a filed called quatition qunatiyty ,here i will give my qty.

so for one purchase order i can i create any number of call up order,

for example i given qty 200 in purchase order,

now when i goto create call up order it should not allow me to create more than 200,

example i created one call up order with qty 120,i created anther call up order with 70,and when i try to craete anther call up order with qty 30 i need to show error.

 

can any one tell me how can i do this

this my trigger
 

 

 

trigger total_calluo_order_qty on Call_Up_Order__c (before insert,before update) {

set<id> saleid=new set<id>();
List<Purchase_Order__c> ToUpdate = new List<Purchase_Order__c>();

if(trigger.isInsert || trigger.isUpdate){
for(Call_Up_Order__c c: trigger.new){
      saleid.add(c.Sale_Confirmation_Order__c);
    }
}

if(trigger.isDelete){
    for(Call_Up_Order__c c: trigger.new){
      saleid.add(c.Sale_Confirmation_Order__c);
    }
  }

map<id,double> Map = new map<id,double>();
for(AggregateResult q : [select sum(Call_Up_Quantity__c)totalcallup,Sale_Confirmation_Order__c from Call_Up_Order__c where Sale_Confirmation_Order__c in:saleid group by Sale_Confirmation_Order__c])
{
      Map.put((Id)q.get('Sale_Confirmation_Order__c'),(Double)q.get('totalcallup'));
  }


   for(Purchase_Order__c p:[select id,Total_call_up_order_Quantity__c from Purchase_Order__c where id in:saleid])
   {
    Double PaymentSum = Map.get(p.Id);
    p.Total_call_up_order_Quantity__c=PaymentSum ;
    ToUpdate.add(p);
    }         
         update ToUpdate;
             
         
         for(Call_Up_Order__c cup:[select id,Quote_Quantity__c,Balance_Qty__c,Call_Up_Quantity__c,Total_call_up_order_Quantity__c from Call_Up_Order__c  where id in:trigger.new])
         {
         if(cup.Total_call_up_order_Quantity__c >= cup.Quote_Quantity__c)        
         {
         cup.addError('please check all call up order quantity was excedded');
         }         
         }
         
}

 

 

regards

venkatesh.

 

 

 

venkateshyadav1243venkateshyadav1243

Hi

 

Can any one help me.

this is very urgent to me

 

 

 

 

 

Regards

venkatesh.

Grazitti InteractiveGrazitti Interactive

Hi Venkatesh,

 

In Before trigger, there is no Id created for current version of record. so your query in last for loop 

for(Call_Up_Order__c cup:[select id,Quote_Quantity__c,Balance_Qty__c,Call_Up_Quantity__c,Total_call_up_order_Quantity__c from Call_Up_Order__c where id in:trigger.new])

will not return any record.

so use just for(Call_Up_Order__c cup:Trigger.New){

 

}

 

trigger total_calluo_order_qty on Call_Up_Order__c (before insert,before update) {

set<id> saleid=new set<id>();
List<Purchase_Order__c> ToUpdate = new List<Purchase_Order__c>();

if(trigger.isInsert || trigger.isUpdate){
for(Call_Up_Order__c c: trigger.new){
saleid.add(c.Sale_Confirmation_Order__c);
}
}

if(trigger.isDelete){
for(Call_Up_Order__c c: trigger.new){
saleid.add(c.Sale_Confirmation_Order__c);
}
}

map<id,double> Map = new map<id,double>();
for(AggregateResult q : [select sum(Call_Up_Quantity__c) totalcallup,Sale_Confirmation_Order__c from Call_Up_Order__c where Sale_Confirmation_Order__c in:saleid group by Sale_Confirmation_Order__c])
{
Map.put((Id)q.get('Sale_Confirmation_Order__c'),(Double)q.get('totalcallup'));
}


for(Purchase_Order__c p:[select id,Total_call_up_order_Quantity__c from Purchase_Order__c where id in:saleid])
{
Double PaymentSum = Map.get(p.Id);
p.Total_call_up_order_Quantity__c = PaymentSum ;
ToUpdate.add(p);
}
update ToUpdate;


for(Call_Up_Order__c cup:[select id,Quote_Quantity__c,Balance_Qty__c,Call_Up_Quantity__c,Total_call_up_order_Quantity__c from Call_Up_Order__c where id in:trigger.new])
{
if(cup.Total_call_up_order_Quantity__c >= cup.Quote_Quantity__c)
{
cup.addError('please check all call up order quantity was excedded');
}
}

}

 

Thanks

www.grazitti.com