Configurando as lógicas de Recomendações
Neste material, você terá todas as informações de como recomendar produtos automaticamente em kits personalizados
Leonardo Abreu
Última atualização há 8 meses
1 Introdução
A funcionalidade Recomendações tem como objetivo adicionar automaticamente equipamentos, durante a montagem dos kits personalizados, para facilitar o fluxo de compra do usuário. Esta adição de produtos segue, exatamente, a lógica configurada na plataforma pelo distribuidor.
Ao entrar na configuração de recomendações, e clicar no botão "Atualizar recomendações", abre-se um pop-up que se divide em duas seções:
Variáveis;
Condições

1.1 Variáveis
As variáveis têm como objetivo servirem para trazer escalabilidade, facilitar a manutenção e atualização de informações particulares do sistema.
Para criar uma variável, clique no botão +, digite o nome da variável e clique novamente em + para salvar. Atenção: após escolhido um nome para uma variável, esse nome não poderá ser alterado.

Alguns exemplos são:
Criar variáveis para utilizá-las nas recomendações de string box. Se há mais de 1 modelo de inversor que recomenda 1 modelo de string box, é interessante unificar tudo dentro da mesma variável;
Criar variáveis para utilizá-las nas recomendações de estruturas de fixação. Se há módulos que utilizam fixações diferentes de acordo com o seu tamanho, é interessante unificar dentro da mesma variável;
Criar variáveis para fazer validações de condição VERDADEIRA ou FALSA. Neste caso, pode-se criar uma condição para retornar 1 ou 0 e utilizá-la para multiplicar outras fórmulas.

Para editar ou adicionar informações na variável, deve-se clicar no ícone lápis e, no pop-up que abrir, deve-se criar as diversas condições desejadas e suas respectivas fórmulas. Após finalizar, deve-se clicar em Salvar.

1.2 Condições

2 Fórmulas e variáveis predefinidas
2.1 Fórmulas
Atualmente, o sistema dispõe de algumas fórmulas e operadores para auxiliar na configuração das recomendações, como:
Operadores aritméticos:
Adição: +
Subtração: -
Divisão: /
Multiplicação: *
Parênteses: ()
Operadores de comparação:
Maior: >
Maior e igual: >=
Menor: <
Menor e igual: <=
Igual: =
Diferente: <>
Operadores lógico: possibilita realizar combinação de condições utilizando “e” e “ou”.
Exemplo: potenciaTotal < 10 e (contemCodigo = Produto123 ou contemCodigo = Produto456)
verificar.decimal(dividendo;divisor;validação;decimal): verifica as casas decimais de uma divisão e valida esse valor de acordo com uma condição. Caso a condição seja verdadeira, o sistema retorna 1, caso seja falsa irá retornar 0. Além disso, é possível utilizar esta fórmula associada à uma função que dependa da validação configurada.
Dividendo: É o número a ser dividido
Divisor: É o número que irá dividir o dividendo
Validação: pode ser utilizado: >; >=; <; <=; =; <>
Decimal: é o valor decimal a ser comparado. Deve ser um número >= 0 e < 1.
Exemplo: para verificar se a quantidade de módulos é par, deve-se utilizar esta função de acordo com o mostrado abaixo. Se a quantidade de módulos divido por dois, resultar em um número cuja casa decimal seja igual a zero, então retornará 1, senão retornará 0. Portanto, se a validação for verdadeira (1), a quantidade do produto recomendado será a mesma que a quantidade de inversores selecionados. Se for falsa (0), retornará 0 e nenhum produto será recomendado.
verificar.decimal(qtdTotalModulos; 2; = ;0)*qtdInversores
Atenção: Caso queira utilizar essa fórmula para validar que as decimais estão em um intervalo, utilize a multiplicação dessa fórmula, de acordo com o seguinte exemplo abaixo.
verificar.decimal(8;2;>;0,5) * verificar.decimal(8;2;<;0,75)
arredondar.para.cima(número): irá arredondar o número para o primeiro número inteiro superior.
arredondar.para.baixo(número): irá arredondar o número para o primeiro número inteiro inferior.
quociente(dividendo;divisor): tem como objetivo retornar o número inteiro resultante da divisão.
Dividendo: É o número a ser dividido.
Divisor: É o número que irá dividir o dividendo.
mod(dividendo;divisor): tem como objetivo retornar o resto resultante da divisão.
Dividendo: É o número a ser dividido.
Divisor: É o número que irá dividir o dividendo.
switch( referência; valor1; resultado1; valor2; resultado2; … valorn; resultadon; resultado padrão): assim como no Excel, esta função compara um valor com uma lista de valores, e retorna um resultado referente à primeira correspondência, trazendo maior escalabilidade nas recomendações.
Referência: deve ser um valor numérico ou o resultado numérico de uma variável;
valor1, valor2 … valorn: valor numérico para comparar se é igual ao valor de referência;
resultado1, resultado2…resultadon: resultado que a função switch deve retornar caso a referência seja igual ao valor1, valor2 … valorn.
padrão: resultado que a função deve retornar, caso nenhuma referência seja validada.
Exemplo: Para a recomendação de perfis, utilizando a função switch, foi utilizado como referência a quantidade total de módulos selecionados, a partir da variável qtdTotalModulos (descrita na seção 2.2). De acordo com o exemplo, caso 1 módulo seja selecionado, a recomendação será de 1 perfil, se optar por 2 módulos, a recomendação será de 1 perfil, e se optar por 3 módulos a recomendação será de 2 perfis. E caso você escolha um número de módulos que não descrito na função, a recomendação será automaticamente o valor padrão de “11”.

Produto a adicionar: ProdutoA – Perfil para 2 módulos
Condição: qtdTotalModulos > 0
Quantidade: switch (qtdTotalModulos ; 1 ; 1 ; 2 ; 1 ; 3 ; 2 ; 4 ; 2 ; 11 )
1 módulo = 1 perfil recomendado
2 módulos = 1 perfil recomendado
3 módulos = 2 perfis recomendados
4 módulos = 2 perfis recomendados
5 módulos = 11 perfis recomendados
6 módulos = 11 perfis recomendados
...
10 módulos = 11 perfis recomendados
2.2 Variáveis
Atualmente, as variáveis predefinidas no sistema são as seguintes:
codigoProduto: código do equipamento cadastrado. Esta variável verifica se o produto mencionado está adicionado na plataforma e, juntamente à variável “qtdProduto”, é possível contabilizar a quantidade destes produtos adicionados. Atenção: Esta variável ser utilizada, exclusivamente, no campo “Condição”. Sugerimos a utilização desta variável quando se deseja contabilizar a quantidade de daquele produto. Caso deseje somente validar a presença do produto no orçamento, vide variável “contemCodigo”.
Exemplo 1: de acordo com a lógica implementada abaixo, caso haja 3 produtos “ProdutoA” e 2 produtos “ProdutoB”, a condição será verdadeira e o sistema irá contabilizar 5 produtos.
Produto a adicionar: X
Condição: codigoProduto = ProdutoA ou codigoProduto = ProdutoB ou codigoProduto = ProdutoC
Quantidade: qtdProduto
A cada código validado, a fórmula presente em Quantidade se repete. Ao final, os resultados obtidos são somados.
Exemplo 2: Se 3 ProdutoA e 2 ProdutoB forem selecionados, será recomendado 3*2 + 2*2 = 10 produtos X.
Produto a adicionar: X
Condição: codigoProduto = ProdutoA ou codigoProduto = ProdutoB ou codigoProduto = ProdutoC
Quantidade: qtdProduto*2
contemCodigo: código do equipamento cadastrado. Esta variável tem como objetivo validar se aquele produto está incluso no orçamento. Atenção: Esta variável deve ser utilizada, exclusivamente, no campo “Condição”. Recomenda-se a utilização desta variável para validar a presença daquele produto. Caso queira contabilizar a quantidade de produtos específicos, utilize a variável “codigoProduto”.
Exemplo: caso o produto “ProdutoA” ou o produto “ProdutoB” esteja presente no orçamento, a quantidade recomendada do produto X será igual ao total de módulos selecionados no orçamento.
Produto a adicionar: X
Condição: contemCodigo = ProdutoA ou contemCodigo = ProdutoB
Quantidade: qtdTotalModulos
linhasArranjo: contabiliza ou valida as linhas dos arranjos informadas na seção “Estruturas” na aba de kit personalizado. Esta variável pode ser utilizada no campo “Condição” e no campo “Quantidade”. Atenção: ao utilizar esta variável, a plataforma realizará o cálculo para cada arranjo e somará as quantidades.
Exemplo: para recomendar o produto X, a plataforma repetirá o cálculo linhasArranjo*2 + 10 para cada arranjo configurado, da forma descrita abaixo.
Produto a adicionar: X
Condição: linhasArranjo >= 1
Quantidade: linhasArranjo*2 + 10
Layout montado pelo integrador:

Contas que o sistema irá realizar:
Arranjo 1: 2*2 +10 = 14
Arranjo 2: 3*2 +10 = 16
Arranjo 3: 1*2 +10 = 12
Resultado total: A plataforma recomendará 14+16+12= 42 do produto X.
modulosPorLinhaArranjo: Esta variável tem como objetivo contabilizar os módulos por linhas de arranjos informadas nas estruturas. Esta variável pode ser utilizada no campo “Condição” e no campo “Quantidade”. Atenção: ao utilizar esta variável, a plataforma realizará o cálculo para cada arranjo e somará as quantidades.
Sempre que quiser utilizar esta variável, deve-se utilizar nas condições a variável modulosPorLinhaArranjo ou linhasArranjo como uma condição.
Exemplo:
Produto a adicionar: X
Condição: modulosPorLinhaArranjo >= 1
Quantidade: modulosPorLinhaArranjo *2 + 10
Layout montado pelo integrador:
Contas que o sistema irá realizar:
Arranjo 1: 10*2 +10 = 30
Arranjo 2: 5*2 +10 = 20
Arranjo 3: 20*2 +10 = 50
Resultado total: Resultado total: A plataforma recomendará 30+20+10= 100 do produto X.
orientacao: orientação do módulo. Esta variável é utilizada para validar a orientação informada no arranjo. Pode-se utilizar esta validação de duas formas:
orientacao = retrato;
orientacao = paisagem.
Esta variável pode ser utilizada, exclusivamente, no campo “Condição”. Atenção: ao utilizar esta variável, a plataforma realizará o cálculo para cada arranjo e somará as quantidades.
Exemplo: a plataforma irá validar a orientação selecionada pelo usuário para assim recomendar o produto X.
Produto a adicionar: X
Condição: linhasArranjo >= 1 e orientação= retrato
Quantidade: linhasArranjo *2 + 10
Layout montado pelo integrador:

Contas que o sistema irá realizar:
Arranjo 1: 2*2 +10 = 14
Arranjo 2: 3*2 +10 = 16
Arranjo 3: 1*2 +10 = 12
Resultado total: A plataforma recomendará 14+16+12= 42 do produto X.
qtdProduto: Esta variável retorna a quantidade de produtos contabilizados pela condição “codigoProduto” mencionada anteriormente. Atenção: Esta variável deve ser utilizada, exclusivamente, no campo “Quantidade”. Atentar às diferentes formas de aplicação desta variável.
Exemplo: De acordo com a recomendação abaixo, caso haja 3 produtos “ProdutoA” e 2 produtos “ProdutoB”, a condição será verdadeira e o sistema irá contabilizar 10 produtos.
Produto a adicionar: X
Condição: codigoProduto = ProdutoA ou codigoProduto = ProdutoB
Quantidade: qtdProduto*2
O cálculo funciona da seguinte forma:
(qtdProdutoA*2) + (qtdProdutoB*2) = 10
(3*2) + (2*2) = 6 + 4 = 10
Ou seja, a multiplicação é aplicada por código do produto e por fim soma todos os resultados dessas multiplicações.
Resultado: o sistema irá recomendar 10 produtos.
qtdProdutos(código do produto): retorna a quantidade selecionada do produto informado entre parênteses. Atenção: Esta variável deve ser utilizada, exclusivamente, no campo “Quantidade”.
Exemplo: De acordo com a recomendação abaixo, caso haja 3 produtos “ProdutoA” e 2 produtos “ProdutoB”, a condição será verdadeira e o sistema irá calcular a Quantidade, com base na soma dos produtos.
Produtos a adicionar: X
Condição: qtdTotalModulos > 0
Quantidade: ((qtdProduto(ProdutoA) + (qtdProduto(ProdutoB)) * 2
O cálculo funciona da seguinte forma:
((3+2))*2 = 5*2 = 10
Ou seja, não há diferenciação do produto por conta do código, apenas é somado o total de produtos e o resultado final é multiplicado por 2.
Resultado: o sistema irá recomendar 10 produtos.
potenciaTotal: retorna a potência total do sistema em kWp, ou seja, a potência total dos módulos selecionados. Esta variável pode ser utilizada tanto como condição, quanto como quantidade.
potenciaModulo: retorna a potência individual de cada módulo em Wp. Esta variável pode ser utilizada tanto como condição, quanto como quantidade.
qtdTotalModulos: retorna o valor absoluto de módulos selecionados no sistema. Esta variável pode ser utilizada tanto como condição, quanto como quantidade.
qtdInversores; qtdStringbox; qtdOutros: retorna o valor absoluto dos respectivos produtos selecionados no sistema. Esta variável pode ser utilizada tanto como condição, quanto como quantidade.
qtdInversorMono: retorna a quantidade de inversores monofásicos selecionados.
qtdInversorTri: retorna a quantidade de inversores trifásicos selecionados.
tipoEstrutura: verifica o tipo de estrutura informada pelo integrador e valida a condição de acordo com os nomes das estruturas criadas na plataforma. Esta variável deve ser utilizada, exclusivamente, no campo “Condição”. Atenção: O nome da estrutura deve sempre ser informado entre aspas e com a escrita exatamente como cadastrado no sistema, ou seja, letras maiúsculas e minúsculas, quantidades de espaços.
Exemplo: Caso o usuário selecione a estrutura “Nome da Estrutura Criado”, a plataforma irá recomendar o produto X na mesma quantidade de inversores.

Produto a adicionar: X
Condição: tipoEstrutura = “Nome da Estrutura Criado”
Quantidade: qtdInversores
tipoInversorPrincipal: verifica o tipo de inversor selecionado no kit. Caso seja criado um sistema misturando inversores micro e string, o sistema retorna “string” como resposta. Pode-se utilizar esta validação de duas formas:
tipoInversorPrincipal = micro;
tipoInversorPrincipal = string;
tipoInversorPrincipal = hibrido;
tipoInversorPrincipal = solaredge.
Atenção: Esta variável deve ser utilizada, exclusivamente, no campo “Condição”.
totalLinhasArranjo: contabiliza o valor absoluto de linhas de arranjos informadas nas estruturas. Esta variável pode ser utilizada tanto como condição, quanto como quantidade.
Exemplo:
Produto a adicionar: X
Condição: totalLinhasArranjo >= 1
Quantidade: totalLinhasArranjo *2 + 10
Layout montado pelo integrador:

Contas que o sistema irá realizar: Total de Linhas Arranjo = 2 + 3 + 1 = 6
Resultado total: a plataforma recomendará 6 * 2 + 10= 22 do produto X.
qtdTotalEntradasInversor: Contabiliza o valor absoluto de entradas dos inversores selecionados.
Exemplo: Recomendar 2 unidades do conector MC4 para cada entrada do inversor.
Condição: qtdTotalEntradasInversor > 0
Quantidade: qtdTotalEntradasInversor*2
- padraoEntrada: o padrão de entrada selecionado na jornada de compras.
- tensaoRede: a tensão selecionada na jornada de compras.
maiorCorrenteIscModulo: Verifica a corrente de curto circuito (Isc) do módulo selecionado.
maiorCorrenteImpModulo: Verifica a corrente de máxima potência (Imp) do módulo selecionado.
- larguraModulo: largura do módulo de acordo com o cadastro do equipamento.
- comprimentoModulo: comprimento do módulo de acordo com o cadastro do equipamento.
- alturaModulo: altura do módulo de acordo com o cadastro do equipamento.
- pesoModulo: peso do módulo de acordo com o cadastro do equipamento.

2.3 Informações adicionais
Sempre que for adicionado um novo produto ou alterado um código de produto, deve-se verificar se não é necessário atualizar alguma recomendação que utilize este código;
Sempre que for adicionado uma nova estrutura ou alterado o nome de uma estrutura, deve-se verificar se não é necessário atualizar alguma recomendação que utilize esta estrutura;
Para as recomendações dos equipamentos das estruturas, para evitar recomendações quando o usuário informar o tipo de estrutura “Sem estrutura”, sugerimos sempre adicionar a condição: tipoEstrutura <> “Nome estrutura sem estrutura”;
Para as recomendações dos equipamentos das estruturas, para NÃO RECOMENDAR quando o usuário informa “Não sei informar” na parte do layout, sugerimos sempre adicionar uma das seguintes condições:
linhasArranjo >=1
totalLinhasArranjo >=1
Para as recomendações dos equipamentos das estruturas, para RECOMENDAR quando o usuário informa “Não sei informar” na parte do layout, deve-se sempre adicionar a condição: totalLinhasArranjo = -1.

