Integracao Precos Estoque FTP
Nesta integração, específica do Cliente Coosuiponte, integra dados relativos ao Estoque e Preços dos Itens conforme saldo atual do Estoque e Tabela de Preços.
É utilizado arquivo XML conforme layout definido nesta documentação. Conforme escolha do cliente, este arquivo é gerado periodicamente, conforme configuração prévia e assim disponibilizado em um FTP conforme orientações do cliente.
Configuração
A Task responsável pela sincronização é configurada no recurso 1673 - Tasks/Tarefas. Neste recurso é configurado sua periodicidade, bem como avisos via email em caso de algum tipo de falha. Verifique em 1462_Tarefas_Servidor.
A Task é executada por um serviço, no servidor, chamado Wildfly. Este serviço deve estar ativo e operacional para que a Task continue sendo executada normalmente. Verifique mais detalhes em Case_Wildfly. Vale ressaltar que o responsável pelo TI da empresa é o responsável em verificar sua efetiva execução.
Os parâmetros necessários para ela ser executada são:
- id_tabela_base: onde é inserido os identificadores das tabelas onde serão pesquisados os produtos que serão preenchidos no arquivo. Ex: 3;4;.
- id_natureza_operacao: inserir o identificador da natureza de venda, necessário para simular o cálculo de venda dos produtos.
- id_centro_estoque: inserir o identificador do centro de estoque de onde será pesquisado o estoque dos produtos que serão preenchidos no arquivo.
- id_empresa: inserir o identificador da empresa onde são realizado as vendas;
- caminho_arquivo: inserir o caminho da pasta de onde será gerado o arquivo no computador onde está rodando o wildfly. (Este arquivo será um backup, pois o arquivo também é gerado no ftp).
- caminho_ftp: inserir o caminho do ftp onde será gerado o arquivo. Ex: ftp.touchcomp.com.br
- login_ftp: inserir o login a ser utilizado para validação no ftp.
- senha_ftp: inserir a senha a ser utilizada para validação no ftp.
Layout do Arquivo e Origem de dados
O sistema irá utilizar uma Tarefa/Task pré programada no servidor, para ser executada de tempo em tempo conforme demanda do cliente. Ao executar a mesma irá consultar o banco de dados, efetuando as devidas pesquisas para criar o arquivo e assim importá-lo ao servidor FTP do cliente.
São considerados os seguintes critérios para preenchimento do arquivo:
- Produtos que tiveram nota fiscal de entrada/compras no dia;
- Produtos que tiveram nota fiscal de saída/vendas no dia;
- Produtos que tiveram alteração nos seus preços no dia;
Observe que ajustes de estoque não são considerados. Considere o layout principal do arquivo o descrito abaixo. São carregados os dados cadastrais do produto e suas grades, estoque e tabela de preços:
-<produto>
<identificador>6138</identificador>
<codigoAuxiliar/>
<nome>ACEPRAN 1% - 20 ML</nome>
<unidadeMedida>FR</unidadeMedida>
<especie>ACEPROMAZINA INJETAVEL</especie>
<subEspecie>INJETAVEIS, TOPICOS E ORAIS</subEspecie>
<peso>0,02</peso>
<estoqueTotal>1.414,00</estoqueTotal>
-<grades>
-<gradeProduto>
<idGrade>6139</idGrade>
<idCor>1</idCor>
<nomeCor>UNICA</nomeCor>
<estoqueGrade>1.414,00</estoqueGrade>
</gradeProduto>
</grades>
-<precos>
-<preco>
<uf>MG</uf>
<precoAVista>30,53</precoAVista>
</preco>
-<preco>
<uf>BA</uf>
<precoAVista>30,53</precoAVista>
</preco>
</precos>
</produto>
Problemas e situações previstas
O ideal, para evitar problemas de informações, utilizando a situação atual, é que a Coosuiponte determine um Centro de Estoque específico para vendas no ambiente virtual. Como é conhecido, esta opção não é viável, conforme orientado pela equipe da Coosuiponte.
Outra possibilidade para diminuir problemas relativos a sincronização, seria a utilização de webservices, que seriam chamados de acordo com a demanda pelo site, onde seria exibido o estoque e preços on line. Isso diminuiria drasticamente problemas relativos ao desencontro de informações entre ERP e Site. Esta opção foi preterida pelo cliente.
Sendo a escolha o envio de patch de dados, periodicamente, e utilizando o mesmo centro de estoque para vendas locais e on line, deve se ter CIENCIA que poderá existir discrepância de dados entre as duas plataformas por questões naturais. Para ficar claro tal situação, considere:
- Sincronização ocorre a cada 3 horas, por exemplo 00:00, 03:00, 06:00, 09:00, 12:00, etc;
- Estão sendo realizadas vendas no balcão;
- Estão sendo realizadas vendas no site;
Situação 1: Um produto possuí o saldo de 300 unidades as 08:00 da manhã, que é o mesmo estoque exibido no site. As 08:30, um cliente comprou localmente 180 unidades deste produto, onde foi efetuado o pedido e reservado o estoque. As 08:35, um cliente visita o site, que consta as mesmas 300 unidades, pois a próxima sincronização ocorrerá as 09:00, e efetua a compra de 150 unidades. Logo, pode se ver que irá faltar 30 unidades.
Situação 2: Um produto possuí o saldo de 10 unidades no site as 08:00 da manhã. As 08:15 é efetuado a entrada de uma nota fiscal de compra, de 200 unidades, aumentando o seu estoque para 210 unidades. As 08:20, um cliente acessa o site, que ainda consta 10 unidades, porquê a próxima sincronização ocorrerá as 09:00. O mesmo precisa de 100 unidades, e verifica que a Coosuiponte não possui o produto. Mas na verdade, localmente existe estoque.
Por mais que se reduza o tempo de sincronização, situações descritas acima poderão ocorrer, e o cliente deve ter ciência disso. As duas opções de solução citadas acima, evitam ou reduzem drasticamente o problema, mas possuem efeitos colaterais:
- Possuir estoque separado aumentaria muito a disponibilidade de estoque e espaço físico de armazenagem, mas evitaria em 100% o problema;
- Trabalhar com o webservice traz mais dificuldade ao desenvolvedor WEB e aumenta o tempo de resposta nas chamadas, para poder carregar as informações devido a latência da internet entre servidor do site e Coosuiponte. Além disso, considerando a probabilidade maior de falhas na internet local da Coosuiponte, quando a internet na mesma cair, o site ficará inacessível. Isso diminuiria muito o problema de sincronização, para segundos, mas o extinguiria totalmente.