You need to sign in to do that
Don't have an account?
Som_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;
}
}
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;
}
}
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
Can you advise what line are you experiencing the issue at? I recommend setting up debug logs to print the productId and pricebook2id
Anudeep
I am getting above error at Order Liner item insertion. Is the fetching record type is the problem?