You need to sign in to do that
Don't have an account?
shruthika
Urgent:FIELD_INTEGRITY_EXCEPTION
Hi all,
I am getting an error while writing test class on opportunity line item.
System.DmlException: Insert failed. First exception on row 0; first error: FIELD_INTEGRITY_EXCEPTION, field integrity exception: PricebookEntryId (pricebook entry currency code does not match opportunity currency code): [PricebookEntryId]
This is the error am getting please give me the solution as soon as possible.
Below is the code which i have written.....
@isTest private class TestOpportunityProductLineCheck { static testMethod void myTest() { Opportunity o = new Opportunity(Id='006T0000008kKcc', Name = 'praveen', StageName='B - Prove', CloseDate = Date.today()); update o; Pricebook2 standardPB = [select id from Pricebook2 where isStandard=true]; Pricebook2 pb = new Pricebook2(Id='01s30000000A8FCAA0', Name= 'PSC Price Book', IsActive = true); update pb; Product2 prod = new Product2(Name = 'Orbix Product',IsActive = true); insert prod; PricebookEntry standardPrice = new PricebookEntry(Pricebook2Id = standardPB.Id, Product2Id = prod.Id, UnitPrice = 10000, IsActive = true, UseStandardPrice = false); insert standardPrice; PricebookEntry pbe = new PricebookEntry(Pricebook2Id = pb.Id, Product2Id = prod.Id, UnitPrice = 10000, IsActive = true, UseStandardPrice = false); insert pbe; //PricebookEntry pbe = new PricebookEntry(Pricebook2Id = '01s30000000A8FCAA0', Product2Id = prod.id, UnitPrice=100, UseStandardPrice = false, IsActive = true); //insert pbe ; //OpportunityLineItem ol = new OpportunityLineItem(OpportunityId = o.id , Quantity = 20 , TotalPrice = 100,PricebookEntryId = pbe.id ); //insert ol; OpportunityLineItem oli = new OpportunityLineItem(opportunityId = o.Id, PricebookEntryId= pbe.Id, Quantity = 1, UnitPrice = 7500); insert oli; List<OpportunityLineItem> olis = [Select Id From OpportunityLineItem Where OpportunityId =: o.Id]; update olis[0]; } } |
Thanks in advance.....
shruthika...
Hi Sruthika,
I have modifed you code below :
@isTest
private class TestOpportunityProductLineCheck
{
static testMethod void myTest()
{
Opportunity o = new Opportunity(Id='006T0000008kKcc', Name = 'praveen', StageName='B - Prove', CloseDate = Date.today());
update o;
Pricebook2 standardPB = [select id from Pricebook2 where isStandard=true];
Pricebook2 pb = new Pricebook2(Id='01s30000000A8FCAA0', Name= 'PSC Price Book', IsActive = true);
update pb;
Product2 prod = new Product2(Name = 'Orbix Product',IsActive = true);
insert prod;
// added code
Opportunity opp = [Select id,CurrencyIsoCode from Opportunity where Id = '006T0000008kKcc'];
PricebookEntry standardPrice = new PricebookEntry(Pricebook2Id = standardPB.Id,CurrencyIsoCode = opp.CurrencyIsoCode,Product2Id = prod.Id, UnitPrice = 10000, IsActive = true, UseStandardPrice = false);
insert standardPrice;
PricebookEntry pbe = new PricebookEntry(Pricebook2Id = pb.Id,CurrencyIsoCode = opp.CurrencyIsoCode,Product2Id = prod.Id, UnitPrice = 10000, IsActive = true, UseStandardPrice = false);
insert pbe;
//PricebookEntry pbe = new PricebookEntry(Pricebook2Id = '01s30000000A8FCAA0', Product2Id = prod.id, UnitPrice=100, UseStandardPrice = false, IsActive = true);
//insert pbe ;
//OpportunityLineItem ol = new OpportunityLineItem(OpportunityId = o.id , Quantity = 20 , TotalPrice = 100,PricebookEntryId = pbe.id );
//insert ol;
OpportunityLineItem oli = new OpportunityLineItem(opportunityId = o.Id, PricebookEntryId= pbe.Id, Quantity = 1, UnitPrice = 7500);
insert oli;
List<OpportunityLineItem> olis = [Select Id From OpportunityLineItem Where OpportunityId =: o.Id];
update olis[0];
}
}
Let me know if this works. :)
An advise, Never use Hardcored Id in testmethod and create test data in the same.
Try this:
Hope it helps.