Skip to main content
Sys Admin preguntó en #Apex

I have a field on the product that I would like visible as quote line items are entered. Can someone please tell me what is wrong with my code below?

trigger UpdateFormulaFields on QuoteLineItem (before insert,before update) {

set<id> PIds = new set<id>();

for(QuoteLineItem qli : Trigger.new){

PIds.add(qli.Product2Id);

}

list<Product2> pList = [select id, name , Cost_Price__c, Quantity_On_Hand__c, In_Stock_Pricing__c from Product2 where Id IN : PIds];

for(Product2 p : pList){

for(QuoteLineItem ql : Trigger.new){

if(p.id == ql.product2Id){

if(Trigger.isInsert){

ql.Cost_Price__c = p.Cost_Price__c;

ql.Quantity_On_Hand__c = p.Quantity_On_Hand__c;

ql.In_Stock_Price2__c = p.In_Stock_Pricing__c;

}

if(Trigger.isUpdate){

ql.Cost_Price__c = p.Cost_Price__c;

ql.Quantity_On_Hand__c = p.Quantity_On_Hand__c;

ql.In_Stock_Price2__c = p.In_Stock_Pricing__c;

}

}

}

}

update pList;

}

1 respuesta
  1. 22 jul 2015, 18:18
    Hi Masie Maseli;

    I assume you want the field values from product sould be displayed on quote line items.

    if yes, try below code

    trigger UpdateFormulaFields on QuoteLineItem (before insert,before update) {

    set<id> PIds = new set<id>();

    Map<Id,Product2> mapIdWithProduct = new Map<Id,Product2>();

    for(QuoteLineItem qli : Trigger.new){

    if(trigger.isInsert){

    if(qli.Product2Id != null){

    PIds.add(qli.Product2Id);

    }

    }

    if(trigger.isUpdate){

    if(qli.Product2Id != trigger.oldMap.get(qli.Id).Product2Id){

    PIds.add(qli.Product2Id);

    }

    }

    }

    if(!PIds.isEmpty()){

    for(Product2 product :[select id, name , Cost_Price__c, Quantity_On_Hand__c, In_Stock_Pricing__c from Product2 where Id IN : PIds]){

    mapIdWithProduct.put(product.Id,product);

    }

    for(QuoteLineItem qli : Trigger.new){

    if(qli.Product2Id != null && mapIdWithProduct != null && mapIdWithProduct.get(qli.Product2Id) != null){

    Product2 product = mapIdWithProduct.get(qli.Product2Id);

    ql.Cost_Price__c = product.Cost_Price__c;

    ql.Quantity_On_Hand__c = product.Quantity_On_Hand__c;

    ql.In_Stock_Price2__c = product.In_Stock_Pricing__c;

    }

    }

    }

    }

    Mark this as "SOLVED" if your issue is resolved
0/9000