Carga de tabelas personalizadas
Com a disponibilização da funcionalidade de execução de relatórios no app Android, surgiu a necessidade de enviar para o banco de dados do dispositivo informações que possam ser usadas adicionalmente nestas consultas.
Para atender a esta necessidade, foram criadas 10 tabelas no banco de dados do app Android, com os seguintes nomes:
- Tabela01
- Tabela02
- Tabela03
- Tabela04
- Tabela05
- Tabela06
- Tabela07
- Tabela08
- Tabela09
- Tabela10
Cada tabela é composta de 10 campos, com as seguintes descrições:
- Campo01
- Campo02
- Campo03
- Campo04
- Campo05
- Campo06
- Campo07
- Campo08
- Campo09
- Campo10
Um exemplo de representação visual das tabelas, segue na imagem abaixo:
Uma consulta em linguagem SQL deverá ser desenvolvida, observando as particularidades de escrita para Microsoft SQL Server ou HANA, de acordo com o tipo de banco de dados utilizado pelo SAP Business One da empresa.
IMPORTANTE:
- Todos os 10 campos foram criados no SQLite com o tipo TEXT, onde segundo a documentação suportam uma quantidade ilimitada de caracteres, contudo neste sentido recomendamos que enviem para cada campo a menor quantidade possível de informações, evitando o uso excessivo de informações armazenadas no dispositivo, assim como reduzir o uso de dados para envio das informações ao dispositivo.
- Evitar o uso de * no SELECT, levando em consideração o tempo de processamento no banco de dados vs. a limitação de 10 colunas para envio, desta forma em seu SELECT informe o nome das 10 colunas que serão expostadas.
- Evitar consultas que gerem um número elevado de linhas, pense em consultas com limite de informação, como por exemplo de um período curto de data últimos 30 dias.
- Em um SELECT hipotético:
SELECT A, B, C, D, E, F, G, H, I, J, K, L FROM TAB
onde cada letra representa o nome de uma coluna, estão sendo selecionadas 12 colunas, considerando que a tabela no dispositivo terá no máximo 10 colunas, dispense informar as colunas excedentes, como por exemplo K e L. - Envie as informações de forma formatada, faça todas as conversões necessárias do lado do servidor, evitando processamento do lado do dispositivo (app Android).
- Aproveite melhor o uso de cada campo, concatenando campos em sua consulta e ocupando um único campo na tabela do dispositivo, lembre-se que está limitado a 10 colunas por linha/registro.
Para realizar a configuração de “Carga de tabelas personalizadas” para o app Android, os usuários com perfil de administração do CRM One deverão acessar, dentro do SAP Business One com o Add-on CRM One em execução:
> Módulos > CRM One > Configurações > Configurações gerais
Ao abrir o formulário de Configurações gerais, acessar:
> Extensão CRM One > Sincronização app mobile
clicar no botão “Carga de tabelas personalizadas”.
No formulário de “Cadastro de consulta para carga de tabelas personalizadas”:
- Marcar a opção “Ativo” para o cadastro estar disponível para uso no app Android.
- Informar uma “Descrição” para a finalidade de uso deste cadastro.
- Em “Tabela” selecionar em qual tabela o resultado da consulta será armazenado no dispositivo.
- Em “Tipo sincronização app” escolha entre as opções:
- E – Excluir dados anteriores
Utilizando esta opção, durante cada sincronização das tabelas no app Android, todos os registro serão apagados antes de receber as novas informações. - I – Incrementar
Todas as informações recebidas em sincronizações anteriores do app Android serão mantidas e novos dados serão adicionados em novas linhas da tabela.
- E – Excluir dados anteriores
- Em “Consulta SQL/Hana (Máximo 10 colunas)”, informar a sua consulta personlizada.
Lembrete: Na elaboração da sua consulta poderão ser usadas “variáveis” que serão convertidas na execução.
Cenário de exemplo
Uma empresa usuária do CRM One App Android deseja customizar o “Dashboard Insights“, nesta customização o objetivo é saber quais são os clientes que não realizaram compras nos últimos 30 dias.
No SAP Business One as “Vendas” são oficializadas/faturadas no documento “Nota fiscal de saída”, que é o correspondente da tabela [OINV]. Porém esta não é uma tabela sincronizada do SAP Business One para o App CRM One (referindo-se a versão 2020.07.1.001 do App CRM One Android).
Para poder realizar esta customização será necessário enviar para uma tabela customizada o código dos clientes que compraram nos últimos 30 dias.
A consulta/query em SQL para Microsoft SQL Server pode ser representada por:
SELECT DISTINCT T0.[CardCode] FROM OINV T0 WHERE T0.[DocDate] >= DATEADD(DAY,-30,GETDATE())
A consulta/query em SQL para SAP HANA DB pode ser representada por:
SELECT DISTINCT T0."CardCode" FROM OINV T0 WHERE T0."DocDate" >= ADD_DAYS(NOW(), -30);
IMPORTANTE: A consulta de exemplo pode requerer alguma condição adicional, observem bem o número de registros gerados e as informações, para evitar a carga de informações desnecessárias para o dispositivo de todos os usuários, ou seja, avalie usar uma condição WHERE com as variáveis #UserIDCRM# ou #SlpCodeCRM#.
Com a consulta elaborada, acessar o SAP Business One:
> Módulos > CRM One > Configurações > Configurações gerais
Ao abrir o formulário de Configurações gerais, acessar:
> Extensão CRM One > Sincronização app mobile
clicar no botão “Carga de tabelas personalizadas”.
- Marcar “Ativo”.
- Preencher a “Descrição” com: Clientes faturados no mês.
- Selecionar em “Tabela” a opção “Tabela10”.
- Em “Tipo sincronização app” selecionar “Excluir dados anteriores”.
- Em “Consulta SQL/Hana (Máximo 10 colunas)” informar a consulta SQL de acordo com o tipo de banco de dados da empresa.
Ao realizar a sincronização de dados do aplicativo Android o resultado da consulta será carregado para a respectiva tabela configurada, neste exemplo na “Tabela10”.
Pre requisitos:
- CRM One Desktop Add-on 2020.07.6.002 ou superior
- App Android 2020.07.1.001 ou superior