quinta-feira, 31 de março de 2016

Criando registros do catálogo de preço (PriceBookEntry) padrão em classes de teste Apex

Hoje, ao precisar de criar uma classe de testes no Apex, que envolvia criar uma oportunidade e seus respectivos produtos, me deparei com uma facilidade interessante do Salesforce: A referencia do catálogo de preços padrão.

Para começar, precisei criar na minha classe de testes, um produto com seu preço padrão. Dessa forma, foi-se necessário inserir um registro do objeto Product2 e outro no PriceBookEntry referente ao produto e o respectivo catálogo de preços padrão (ou personalizado, se for o caso).

Então criei meu produto na minha classe de testes:


 Product2 produto = new Product2(name = 'Produto teste');  
 insert produto;  

Agora, para criar o PriceBookEntry, precisarei passar o ID do Produto, o preço e o ID do catálogo de preços. O ID do produto eu tenho, pois acabei de inserir o produto. O preço eu vou definir. E o ID do catálogo de preço padrão? Para essa, o Salesforce tem um método para retornar o ID, sem precisar de consultas SOQL:

Test.getStandardPricebookId()

Com esse método acima, você obtem o ID Catálogo de preços padrão, sem precisar consultas SOQL. Veja como ficou a criação do PriceBookEntry:


 Id pricebookId = Test.getStandardPricebookId();  
 PriceBookEntry pbe = new PriceBookEntry(Pricebook2Id = pricebookId, Product2Id = produto.id, UnitPrice = 500, IsActive = true);  
 insert pbe;  


Depois disso, foi só inserir os respectivos dados na OpportunityLineItem da Opportunity. Mas isso é papo para outro post!

Nenhum comentário: