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
Sfdc wonderSfdc wonder 

Avoid Duplicates

Hi,

i want to develop web service class which is take opportunity id and List of products as input.

from that list of products i have to create opportunity products.

for this requirement i have to take care the following actions

a)avoid duplicates of products(i have to check the incomming products with existing products based on some fields like Productid__c,if it is exist its updated if it is not dere insert and finally add to opportunity products)

b)used to Standard pricebook id

c)create pricebook entry

d)OpportunityLineItem

please suggest me how i achieve this functionality......


global class BB_productservicenew{

    // A class to accept an array of input records (e.g. product/amount combinations)
    global class productInfo{
        webservice String productName;
        webservice String productCode;
        webservice Double UnitPrice;
        webservice Double Quantity;

      
    }
   
    // A class to send back as an output to PHP
    global class myOutputs{
        webservice String errorMessage;
        webservice Boolean success;
        webservice List<productInfo> inputs;
        webservice Id OpportunityId;
    }

webservice static myOutputs initiateService(Id OppId, List<productInfo> inputs)
 
    {
     List<String>pidlist=new List<String>();
     for(BB_productservicenew.productInfo ps:inputs)
     {
       pidlist.add(ps.productCode);
   
     }
    
        List<Product2>plist2=[select id,name,productCode,ProductId__c from Product2];
      
       List<Product2> plist = new List<Product2>();
      
      
      
        for(Product2 pd:plist2){
      
         for(Integer i=0;i<inputs.size();i++){
       
       
         if(pd.ProductId__c==inputs[i].productCode){

                  Pd.Name=inputs[i].productName;
                  pd.ProductId__c=inputs[i].productCode;
                  pd.Quantity__c=inputs[i].Quantity;
                  pd.UnitPrice__c=inputs[i].UnitPrice;
                  pd.IsActive=true;
                  plist.add(pd);

         }


         }

        }
      
    if(plist.size()>0){
                
                  update plist;
       
          Pricebook2 pbid=[select id from Pricebook2 where IsStandard = true limit 1];

                
          List<PricebookEntry> pentrylist=new List<PricebookEntry>();
                    
           List<PricebookEntry>pentrylist2=[select id,Pricebook2Id,Product2Id,UnitPrice,UseStandardPrice,IsActive from PricebookEntry where Product2Id     in:plist];         
                   
                     for(Product2 p:plist){
                   
                      //PricebookEntry pentry=new PricebookEntry();
                   
                       for(integer i=0;i<pentrylist2.size();i++){
                     
                       if(p.id==pentrylist2[i].Product2Id){

                     // pentrylist2[i].Pricebook2Id=pbid.id;
                  
                      //pentrylist2[i].Product2Id=p.id;
                    
                   
                   
                      pentrylist2[i].UnitPrice=p.UnitPrice__c;
                    
                     // pentry.Quantity__c=p.Quantity__c;
                      pentrylist2[i].UseStandardPrice=false;
                      pentrylist2[i].IsActive=true;
                    
                      pentrylist.add(pentrylist2[i]);
                    
                      }
                    
                      }
                     }
                   
                     update pentrylist;
                    
                    
                      List<OpportunityLineItem> opitemlist=new List<OpportunityLineItem>();

List<PricebookEntry> pbeIds =[Select Id,UnitPrice, Product2.Name,Product2.Quantity__c,Product2.UnitPrice__c From PricebookEntry where Id in:pentrylist];
 
                      for(PricebookEntry pb:pbeIds)
                      {
                    
                    
                      OpportunityLineItem opitem=new OpportunityLineItem();


                      opitem.OpportunityId=OppId;
                      opitem.PricebookEntryId=pb.id;
                      opitem.Quantity=pb.Product2.Quantity__c;
                  
                      opitem.TotalPrice=pb.UnitPrice * opitem.Quantity ;
                      opitemlist.add(opitem);
                    
                    
                      }
                    
                      insert opitemlist;

         }
            myOutputs output = new myOutputs();
            output.errorMessage = 'No errors here.';
            output.success = true;
            output.inputs = inputs;
            output.OpportunityId= OppId;
      
        return output;
       
    }
}
Ankit AroraAnkit Arora
Please do not post same post in multiple sections. https://developer.salesforce.com/forums/?id=906F0000000AbQGIA0