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!

domingo, 27 de março de 2016

Quociente e resto de uma divisão em Apex - SFDC

Essa é uma dica rápida sobre como obter o resultado inteiro (quociente) e o resto (módulo) de uma divisão.
Em muitas linguagens de programação, usamos a barra (/) para obter o quociente da divisão. No Apex da Salesforce também. E para obtermos o resto (ou módulo) usamos a palavra reservada mod ou simplesmente o símbolo de percentual (%). Porém, no Apex é diferente. É necessário usar a biblioteca Math.mod(dividendo, divisor).

Escrevi o código a seguir no console do desenvolvedor e usei o System.debug para exibir o resultado:

 System.debug('Quociente: ' + (10/3));  
 System.debug('Resto: ' + Math.mod(10,3));  
 System.debug('Quociente: ' + (25/5));  
 System.debug('Resto: ' + Math.mod(25,5));  
 System.debug('Quociente: ' + (12/15));  
 System.debug('Resto: ' + Math.mod(12,15));  
 System.debug('Quociente: ' + (1000/400));  
 System.debug('Resto: ' + Math.mod(1000,400));  

Ao executar temos:





domingo, 13 de março de 2016

Alterando logomarca da Organização

Um "problema" que me deparei recentemente foi a alteração de logomarca do Salesforce, no canto superior esquerdo da tela. Essa operação já realizei algumas vezes sem muitos problemas. Normalmente acesso a opção de Documentos (nas guias-menu- ou naquela opção "+"). Lá cadastro uma imagem com a logomarca do cliente que usará a Org. 
Em seguida, acesso as configurações do SFDC: Configurar aplicativo / Criar / Aplicativos. Seleciono o aplicativo que desejo alterar a logomarca e clico em Editar.



Em seguida, seleciono a opção Inserir uma imagem e seleciono a imagem que inseri na opção Documentos:


Ao clicar em Salvar, a imagem já será inserida no lugar da imagem padrão do Salesforce, no canto superior esquerdo da tela.

Bem, aí começa o tal "problema" que relatei inicialmente. Essa solução só funciona para aplicativos customizados. Os aplicativos padrão da Salesforce, não é permitido a alteração da logomarca. Isto é, será impossível alterar a logomarca de aplicativos Vendas, Call Center, Marketing, Comunidades, etc. Para resolver essa situação, temos duas opções:
1ª) Criarmos um novo aplicativo personalizado e colocarmos as guias e permissões do aplicativo padrão (uma espécie de clone do aplicativo padrão);
2º) Deixaremos a logomarca padrão da Salesforce no canto superior esquerdo da página, porém colocaremos a nossa logomarca na barra lateral da página. E é esse processo que demonstraremos a seguir.

Logomarca na barra lateral

Antes de iniciar esse procedimento, insira a imagem desejada da opção de Documentos, do Salesforce. Caso não saiba o procedimento, é o mesmo que demonstramos acima, nesse mesmo post. 

Iniciando, para inserir sua logomarca na barra lateral, acesse as configurações, menu Criar | Personalização | Início | Componentes da Página Inicial. Em seguida, clique em Novo, na opção Componentes personalizados.


Ao clicar em Novo, pode ser exibido uma mensagem informativa. Caso isso aconteça, clique em Avançar. Ao iniciar o Wizard (de 2 etapas), será necessário preencher alguns campos de configuração do componente que estamos criando. Preencha então o nome do componente e marque a opção Imagem. Em seguida, Avançar.


Na página a seguir (etapa 2 do Wizard), será necessário selecionar a imagem que inseriu na opção Documentos. Clique em Inserir uma imagem, selecione a desejada e clique em Salvar.


Com o componente criado, acesse a opção de configuração Criar | Personalização | Início | Layouts da home page e clique em Novo



Na página seguinte, você deverá dar um nome para seu novo Layout de página inicial e clonar uma página existente. Em seguida clique em Salvar.


Será exibido um Wizard para seleção dos componentes dessa nova página inicial. Entre os desejados, selecione o componente que criamos anteriormente e clique em Avançar.


Para finalizar o Wizard, selecione os itens que ficarão na coluna da esquerda e da direita na página inicial. Para dar um destaque, coloque a logomarca na primeira posição na coluna da esquerda. E clique em Salvar e atribuir para atribuir essa página inicial aos perfis desejados. 


Após atribuir os perfis, clique em Salvar. Se atribuiu esse layout de página inicial ao seu perfil, basta clicar em Início para ver como ficou o resultado!


Antes de finalizar, para que essa logomarca fique disponível em todas as páginas laterais e não somente na página inicial do sistema, é necessário acessar as configurações Criar | Personalização | Interface do usuário e marcar a opção Mostrar componentes personalizados da barra lateral em todas as páginas.