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
Som_11Som_11 

System.DmlException: Insert failed. First exception on row 0; first error: REQUIRED_FIELD_MISSING, Required fields are missing: [PricebookEntryId]: [PricebookEntryId]

Hi all, For my test class getting this error..
My test class is

@isTest(seeAllData = true)
public class Test_ApplyOrderLineOffers {
    @isTest Public static void lineOffers(){
        //Distributor Account Insertion
        RecordType AccDistRecId = [SELECT Id FROM RecordType WHERE sObjectType = 'Account' AND Name = 'Distributor'];
        Account DistAcc=new Account(Name='DistrbAccnt',recordTypeId=AccDistRecId.id,icxdms__Credit_Limit__c=20000);
        insert DistAcc;
        //Retailer Account Insertion
        RecordType AccRTRetailer = [SELECT Id FROM RecordType WHERE sObjectType = 'Account' AND Name = 'Retailer'];
        Account RetAcc=new Account(Name='RetailerAccnt',ParentId=DistAcc.Id,recordTypeId=AccRTRetailer.id);
        insert RetAcc;
        
        // Adding Products
        Product2 p1=new Product2(Name='Fruitnik 50ml',Family='Beverages',IsActive=true,productCode='BEV');
        insert p1;
        
        Product2 p2=new Product2(Name='Fruitnik 200ml',Family='Beverages',IsActive=true,productCode='BEV');
        insert p2;
   
        Pricebook2  standardPb = [select id, name, isActive from Pricebook2 where IsStandard = true limit 1];
        
        PricebookEntry standardPrice = new PricebookEntry();
        standardPrice.Pricebook2Id = standardPb.Id;
        standardPrice.Product2Id = p2.Id;
        standardPrice.UnitPrice = 100;
        standardPrice.IsActive = true;
        standardPrice.UseStandardPrice = false;
        insert standardPrice ;
        

        RecordType OrderRTRetlr = [SELECT Id FROM RecordType WHERE sObjectType = 'Order' AND Name = 'Retailer'];
        Order Retailerorder=new Order(AccountId=RetAcc.Id,recordTypeId=OrderRTRetlr.Id,Status='Draft',EffectiveDate=system.today()-5,Pricebook2Id =standardPb.Id);//dist order
        insert Retailerorder;
        
        OrderItem i=new OrderItem(Product2Id=p2.Id,Quantity=100,OrderId=Retailerorder.Id,UnitPrice=100,PricebookEntryId=standardPrice.id);
        insert i;
        

    }
}
AnudeepAnudeep (Salesforce Developers) 
Hi Somesh, 

I found no issues with your test class. I ran the following code in my org by commenting out a few lines of code in order to avoid dependencies and did not experience any errors
 
@isTest(seeAllData = true)
public class PricebookTest {
    @isTest Public static void lineOffers(){
        //Distributor Account Insertion
        //RecordType AccDistRecId = [SELECT Id FROM RecordType WHERE sObjectType = 'Account' AND Name = 'Distributor'];
        Account DistAcc=new Account(Name='DistrbAccnt');
        insert DistAcc;
        //Retailer Account Insertion
        //RecordType AccRTRetailer = [SELECT Id FROM RecordType WHERE sObjectType = 'Account' AND Name = 'Retailer'];
        //Account RetAcc=new Account(Name='RetailerAccnt',ParentId=DistAcc.Id,recordTypeId=AccRTRetailer.id);
        //insert RetAcc;
        
        // Adding Products
        Product2 p1=new Product2(Name='Fruitnik 50ml',Family='Beverages',IsActive=true,productCode='BEV');
        insert p1;
        
        Product2 p2=new Product2(Name='Fruitnik 200ml',Family='Beverages',IsActive=true,productCode='BEV');
        insert p2;
   
        Pricebook2  standardPb = [select id, name, isActive from Pricebook2 where IsStandard = true limit 1];
        
        PricebookEntry standardPrice = new PricebookEntry();
        standardPrice.Pricebook2Id = standardPb.Id;
        standardPrice.Product2Id = p2.Id;
        standardPrice.UnitPrice = 100;
        standardPrice.IsActive = true;
        standardPrice.UseStandardPrice = false;
        insert standardPrice ;
        

        //RecordType OrderRTRetlr = [SELECT Id FROM RecordType WHERE sObjectType = 'Order'];
        Order Retailerorder=new Order(AccountId=DistAcc.Id,Status='Draft',EffectiveDate=system.today()-5,Pricebook2Id =standardPb.Id);//dist order
        insert Retailerorder;
        
        OrderItem i=new OrderItem(Product2Id=p2.Id,Quantity=100,OrderId=Retailerorder.Id,UnitPrice=100,PricebookEntryId=standardPrice.id);
        insert i;
        

    }
}

Can you advise what line are you experiencing the issue at? I recommend setting up debug logs to print the productId and pricebook2id

Anudeep

 
Som_11Som_11
Hi, Anudeep thanks for the response.
I am getting above error at Order Liner item insertion. Is the fetching record type is the problem?