Opencart é uma das lojas online mais comuns. Em muitos casos, surge a tarefa de integração com um sistema de contabilidade de armazém (geralmente com 1C).
A integração envolve, no mínimo, a transferência de pedidos do IM para o sistema do armazém para processamento e envio de mercadorias ao comprador e a atualização da quantidade de mercadorias no IM de acordo com a disponibilidade real no armazém.
Muitas vezes, a tarefa é sincronizar os bens, seus parâmetros, fotos e assim por diante.
A dificuldade é que, como regra, é necessário fazer alterações no sistema de mensagens instantâneas e no armazém, o que significa que o desenvolvedor deve conhecer os dois sistemas ou precisa envolver outro desenvolvedor. Existem soluções prontas, mas geralmente exigem acabamento ou pagamento, e ainda exigem acabamento.
Para resolver esse problema, foi criado um módulo para o OpenCard, que estende a API do OpenCart, permitindo que alterações sejam feitas apenas no lado do sistema de contabilidade.
O módulo é de código aberto gratuito, localizado no
github .
O módulo foi desenvolvido para um sistema contábil
específico , mas foi escrito para que possa ser usado por outros programas de terceiros.
O módulo é instalado no IM de maneira padrão no painel de administração ou simplesmente copiando-o para a pasta catalog / controller / api. O módulo consiste em um arquivo. Não são necessárias alterações nas configurações ou na estrutura dos opencards.
Obviamente, no painel do administrador, você precisa gerar a API KEY, que será definida nas configurações do sistema do armazém para efetuar login na API antes de acessá-la.
Trabalho verificado com o OpenCart 2.3 e 3.0
O módulo fornece várias funções de API para trabalhar com pedidos e mercadorias.
De acordo com os contratos de placa aberta, os parâmetros são transmitidos usando o método POST e um token especial deve ser obtido antes de acessar a API. Os dados são trocados no formato JSON. Todas essas são ferramentas padrão para trabalhar com a API OpenCart.
Trabalhar com pedidos
Quando novos pedidos aparecem no IM, eles devem ser importados para o sistema do armazém, ou seja, com base neles, documentos apropriados (registros, etc.) devem ser criados no sistema do armazém, processados e enviados ao cliente
Os pedidos são importados chamando a função
orders () .
Para obter apenas os pedidos necessários, o parâmetro status_id com o status dos pedidos é passado. Como os status no mapa aberto são criados pelo painel de administração e podem ser qualquer coisa, você primeiro precisa obter uma lista de status usando o método
statuses () , que retorna uma matriz de valores-chave com identificadores e nomes de status.
O sistema contábil apresenta esses status para esclarecimento em algum tipo de lista suspensa. O gerente seleciona dentre esses status o que corresponde ao novo pedido.
Com o pedido, vem uma lista de mercadorias e dados do cliente para entrega.
Para identificar pedidos, o sistema contábil deve escrever o ID do pedido em algum atributo da ordem interna. Esses identificadores atualizam os status no MI e também verificam se o pedido já foi importado.
As atualizações de status no IM são realizadas pela função
updateorder ()O gerente seleciona os pedidos necessários (sistema de contabilidade) no estado desejado (por exemplo, o pedido está sendo processado) e atualiza os status dos pedidos iniciais correspondentes no IM. A matriz de valores-chave é transferida - o ID do pedido do MI e o ID do status do MI na lista suspensa proposta pelo sistema.
Por exemplo, os pedidos podem ser atualizados após serem aceitos para processamento, enviados ao cliente, entregues ao cliente e fechados. Isso fica a critério do gerente.
Obviamente, se os status nos dois sistemas estiverem claramente definidos e não forem alterados, as chamadas de API com status fixo poderão ser suspensas em algum agendador e chamadas automaticamente.
Trabalhar com mercadorias
Ao trabalhar com mercadorias, geralmente é necessário atualizar a quantidade real de mercadorias no depósito e os preços na loja.
Para trocar dados, as mercadorias no IM devem ser sincronizadas com as mercadorias no armazém. A conformidade é fornecida pelo artigo, mas, se desejar, você pode ajustar o código e usar outro parâmetro, por exemplo, o nome (embora isso não seja uma boa ideia).
Para adicionar produtos à loja, use a função
addproducts () .
As mercadorias que ainda não estão lá são transferidas para a loja. Para não transferir duplicatas, você pode obter da loja uma lista de artigos existentes, usando o método
articles () .
Para que as mercadorias caiam diretamente na categoria desejada, você deve primeiro obter uma lista de categorias usando o método
cats () e dar ao gerente a oportunidade de selecionar a categoria desejada na lista. Depois disso, as mercadorias são registradas novamente usando ferramentas padrão no painel de administração do OpenCart.
As mercadorias são transferidas na forma de um nome, artigo, descrição (se houver), preço e quantidade. Em alguns casos, a tarefa é transferir atributos, todas as descrições, fotos e assim por diante do armazém. Mas, nesse sentido, há dúvidas sobre a conveniência de criar tudo isso do lado do sistema contábil.
Em primeiro lugar, para a contabilidade clássica de depósito, o nome e o número do artigo, ou seja, os dados utilizados nas faturas e pedidos, são suficientes.
Em segundo lugar, o painel de administração de IM já possui meios regulares para formar cartões de produtos.
Em terceiro lugar, a transferência e coordenação de estruturas complexas, como uma árvore de categorias, atributos, imagens e assim por diante, é um negócio muito problemático e, como segue a seguir, não é necessário.
Tais soluções fazem sentido se o sistema contábil funcionar com outros recursos, carregar dados nos mercados, por exemplo. Embora eu tenha certeza de que existem módulos para o cartão aberto que carregam características e fotos de mercadorias nos mercados do cartão aberto.
Se houver algumas mercadorias no IM no momento em que o sistema de depósito foi introduzido, você poderá obter uma lista de mercadorias usando o método
getproducts () e adicioná-lo ao
catálogo de mercadorias
do sistema contábil. A exclusividade também é verificada por artigo.
A seguir, as principais funções
updatequantity () e
updateprice () para atualizar a quantidade e o preço no MI de acordo com os dados do armazém. As funções transmitem a matriz de valores-chave (número ou preço do artigo) e não requerem parâmetros, ou seja, podem ser iniciados pelo planejador.
Como já mencionado, a vantagem do módulo é a ausência de alterações no código OpenCart. Se necessário, o módulo é finalizado com facilidade - para transferir dados adicionais, basta adicionar uma nova chave à matriz associativa correspondente. Os dados serão compactados e descompactados da mesma forma no lado receptor.
Caso o sistema de contabilidade seja escrito em PHP, existe uma
função pronta para chamar a API do opencards (você pode simplesmente remover a linha da mensagem de erro do sistema).