Baseado na plataforma FileMaker, o Software ERP O gFM-Business, que funciona em Apple macOS, Windows e iOS, contém uma função integrada de loja em linha.Interface O gFM-Business também suporta a sincronização automática dos níveis de stock com os artigos da loja online. O âmbito da norma inclui atualmente os sistemas de loja Artigos de loja 5.x, Gambio Suporte para GX3 e WooCommerce para WordPress.
Como parte de uma licença aberta da gFM-Business Basic ou Profissional a interface da loja virtual com FileMaker Pro (ou Advanced) também pode ser expandida para incluir campos adicionais ou outro sistema de loja virtual. Neste artigo, explicamos como a interface da loja virtual baseada em REST API na gFM Business está estruturada e como pode ser expandida para incluir campos adicionais ou outro sistema de loja. A documentação de todas as definições e padrões básicos da gFM-Business pode ser encontrada em aqui.
Índice
- Estrutura geral da interface integrada da loja virtual
- Todos os scripts ouvem "REST"
- REST_Query [sistema externo|endpoint|]
- dlg.REST_selection_customers (parâmetro)
- dlg.REST_selection_orders (parâmetro)
- dlg.REST_selection_article (parâmetro)
- REST_Gambio_GX3_API_v210 (tipo de dados|sistema externo|{objeto|ID exportação}|)
- REST_WooCommerce_API_v3 (tipo de dados|sistema externo|{objeto|ID exportação}|)
- REST_Shopware_5x_API (tipo de dados|sistema externo|{objeto|ID exportação}|)
- Extensão de campos para uma loja virtual existente
- Expansão da interface para incluir outra loja virtual
- Extensão da interface por um parceiro de serviço ou por nós
Estrutura geral da interface integrada da loja virtual
A interface da loja virtual integrada no software gFM Business ERP tem uma estrutura simples e é constituída pelos seguintes componentes
Lojas virtuais no módulo "Definições
Todas as lojas virtuais podem ser configuradas em [Definições > Loja virtual]. Os Tabela é a tabela "REST_API" do ficheiro "gFMw_Stammdaten". Se for criada uma nova loja virtual, todos os dados são obtidos por referência da tabela "REST_API_Stamm", que também se encontra no ficheiro "gFMw_Stammdaten". Se for adicionado outro sistema de lojas à interface, também deve ser criado um registo de dados mestre para este sistema de lojas na tabela "REST_API_Stamm", para que não seja necessário introduzir todos os dados manualmente de cada vez que se utilizam várias lojas virtuais.
A versão pequena da gFM-Business Basic suporta apenas a utilização de uma loja virtual por defeito. Em princípio, isto também pode ser alargado de modo a que o gFM-Business Basic também permita a utilização de várias lojas virtuais. Para o efeito, basta um Portal para selecionar a loja virtual pode ser implementado como na versão Professional. Todas as funções e scripts também suportam várias lojas virtuais na versão Basic e não precisam de ser alargados para esta função.
Mesas virtuais
Ao selecionar clientes, artigos ou ordens de loja a importar, todos os dados disponíveis no servidor da loja são apresentados numa janela de seleção. Os dados exibidos aqui são armazenados apenas temporariamente numa tabela virtual no gFM Business e são descartados após a seleção. O conceito de tabelas virtuais foi apresentado na Conferência FileMaker 2015 por Arnold Kegebein apresentado. Numa tabela virtual, os dados de entrada não são gravados em campos individuais, mas apenas num campo de repetição. O número de repetições corresponde ao número de campos a apresentar numa tabela, um registo de dados corresponde a um registo de dados dos dados fornecidos. Todas as tabelas virtuais estão localizadas no ficheiro "gFM_Business.fmp12".
Uma tabela virtual contém os seguintes campos (usando artigos como exemplo):
- _fk_Article_ID (Artigo ID da gFM-Business com SQL-Consulta em "_Shop_ID" no mestre de artigos. Preenchido se o artigo já existir no gFM-Business)
- _id_foreign_system (ID do sistema externo)
- _sGlobal (Chave global, contém sempre o valor 1)
- Seleção (Campo para seleção pelo utilizador de um registo de dados que deve ser transferido para a gFM-Business)
- Campos de dados (Campo de repetição com 6 repetições para 6 campos de dados da interface a serem exibidos no quadro)
- ID_selecção (Campo calculado, que ID foi selecionado)
- Campos de cabeçalho (Campo de repetição com 6 repetições para 6 títulos de campo da interface a apresentar no quadro)
- Selecção_de_objectos (Campo calculado, qual a última posição selecionada no conjunto de resultados)
As outras duas tabelas virtuais funcionam, em princípio, da mesma forma, com a diferença de que na tabela de encomendas são verificados os IDs da fatura e da encomenda para os registos de dados existentes, em vez do ID do item, e para os clientes o ID do cliente.
Existem três tabelas virtuais para a interface da loja virtual no ficheiro "gFM_Business.fmp12":
- vt_selection_article (tabela virtual para apresentação de dados de artigos gravados, o campo [campos de dados] contém 6 repetições)
- vt_selection_orders (tabela virtual para exibição de dados de artigos gravados, o campo [campos de dados] contém 9 repetições)
- vt_selection_customers (tabela virtual para apresentação de dados de artigos gravados, o campo [campos de dados] contém 6 repetições)
IDs de loja nas tabelas gFM Business
Todos os quadros relevantes contêm os seguintes campos, para que o software ERP gFM-Business possa identificar os dados da loja virtual que foram atribuídos aos dados no gFM-Business:
- _Id_loja (contém o ID do registo de dados correspondente na loja virtual)
- _Shop_Foreign_system (contém a informação a que sistema externo pertence o ID da loja, uma vez que o gFM-Business suporta a utilização de várias lojas ao mesmo tempo)
Estes campos estão contidos nos seguintes quadros da gFM-Business:
- Mestre do artigo (tabela principal de todos os produtos)
- Clientes (tabela mestre de todos os clientes)
- Encomendas (tabela principal de todas as encomendas)
- Facturas (quadro principal de todas as facturas)
Todos os scripts ouvem "REST"
Todos os scripts associados à interface da loja virtual podem ser encontrados no campo de pesquisa do Script-editor, introduzindo "rest". Quando entregue, a interface é composta por um total de sete scripts:
REST_Query [sistema externo|endpoint|]
Este script é utilizado para iniciar sessão no Servidorno qual a loja virtual foi instalada e é chamado com os parâmetros "External system" e "Endpoint". Antes de se efetuar uma consulta ao servidor da loja virtual, este script de início de sessão deve ser sempre executado em primeiro lugar para iniciar a sessão no servidor antes da consulta.
Definir registo de erros [ Ligado ] Definir Permissão de cancelamento do utilizador [ Off ] # # >>>>>>>>>> TRANSMISSÃO DE VOZ Definir variável [ $dg_001 ; Valor: SQLAusführen ("SELECT \"Dialog_001\" FROM \"lg\" WHERE \"_fk_ScriptName\"='" & Hole(ScriptName) & "' AND \"_pk_Sprache_ID\"=" & prf::_Sprache_ID ; "" ; "" ) ] Definir variável [ $dg_002 ; Valor: SQLAusführen ( "SELECT \"Dialog_002\" FROM \"lg\" WHERE \"_fk_ScriptName\"='" & Hole(ScriptName) & "' AND \"_pk_Sprache_ID\"=" & prf::_Sprache_ID ; "" ; "" ) ] Definir variável [ $dg_003 ; Valor: SQLAusführen ( "SELECT \"Dialog_003\" FROM \"lg\" WHERE \"_fk_ScriptName\"='" & Hole(ScriptName) & "' AND \"_pk_Sprache_ID\"=" & prf::_Sprache_ID ; "" ; "" ) ]
Define o registo de erros e transfere os textos da tabela de idiomas para o diálogo de erro que é apresentado se o início de sessão no servidor falhar.
Definir variável [ $fremdsystem ; Valor: StringColumns(Get(ScriptParameter); 1) ] Definir variável [ $endpoint ; Valor: StringColumns(Get(ScriptParameter); 2) ] Definir variável [ $api_url ; Valor: SQLAusführen ( "SELECT \"API_URL\" FROM \"REST_API\" WHERE \"name_foreign_system\"='" & $fremdsystem & "'" ; "" ; "" ) ] Definir variável [ $login ; Valor: SQLAusführen ( "SELECT \"Consumer_Key\" FROM \"REST_API\" WHERE \"name_foreign_system\"='" & $fremdsystem & "'" ; "" ; "" ) ] Definir variável [ $pass ; Valor: SQLAusführen ("SELECT \"Consumer_Secret\" FROM \"REST_API\" WHERE \"name_foreign_system\"='" & $fremdsystem & "'" ; "" ; "" ) ]
Defina todas as variáveis necessárias. As variáveis para o sistema externo (nome do sistema externo, por exemplo, "WooCommerce") e o ponto final (por exemplo, "Ponto final para artigos") são transferidas como parâmetros de script a partir do diálogo do utilizador. As variáveis $api_url, $login e $pass são retiradas da tabela "REST_API" da loja em linha configurada no ficheiro "gFMw_Stammdaten.fmp12".
Todos os outros comandos são utilizados para iniciar sessão num sistema de loja virtual com a API RESTful e são geralmente os mesmos para todos os sistemas. O seguinte guião parcial corresponde em grande parte ao exemplo fornecido do comando Plugin MBS FileMaker.
dlg.REST_selection_customers (parâmetro)
Este script apresenta a janela de seleção com a qual os clientes a importar podem ser selecionados com base nos dados disponíveis na loja virtual. Este script pode ser chamado com os seguintes parâmetros de script:
- Importação - Este parâmetro é utilizado para apresentar a janela de seleção para importar clientes da loja virtual para o gFM Business. Este sub-script é gerado a partir do script popover "ts.kon_data_import" e contém chamadas para o script da interface principal de todas as lojas virtuais, que são chamadas em função da seleção.
- Selecionar tudo - Este parâmetro pode ser utilizado para selecionar todas as linhas da janela de seleção.
- Chamada_de_clientes - Este parâmetro pode ser utilizado para chamar um cliente a partir da janela de seleção na janela gFM Business.
dlg.REST_selection_orders (parâmetro)
Este script apresenta a janela de seleção com a qual as encomendas a importar podem ser selecionadas com base nos dados disponíveis na loja virtual. Este script pode ser chamado com os seguintes parâmetros de script:
- Ordem de importação - Este parâmetro é utilizado para apresentar a janela de seleção para importar encomendas da loja virtual para o gFM Business e depois importá-las como uma confirmação de encomenda. Este sub-script é gerado a partir do script popover "ts.fak_data_import" e contém chamadas para o script da interface principal de todas as lojas virtuais, que são chamadas em função da seleção.
- Factura_importação - Este parâmetro é utilizado para apresentar a janela de seleção para importar encomendas da loja virtual para o gFM Business e depois importá-las como uma fatura. Este sub-script é gerado a partir do script popover "ts.fak_data_import" e contém chamadas para o script da interface principal de todas as lojas virtuais, que são chamadas em função da seleção.
- Selecionar tudo - Este parâmetro pode ser utilizado para selecionar todas as linhas da janela de seleção.
- Chamada_de_ordem - Este parâmetro pode ser utilizado para chamar uma confirmação de encomenda a partir da janela de seleção na janela gFM Business.
- Chamada de faturação - Este parâmetro pode ser utilizado para chamar uma fatura a partir da janela de seleção na janela gFM Business.
dlg.REST_selection_article (parâmetro)
Este script apresenta a janela de seleção com a qual os itens a importar podem ser selecionados com base nos dados disponíveis na loja virtual. Este script pode ser chamado com os seguintes parâmetros de script:
- Importação - Este parâmetro é utilizado para apresentar a janela de seleção para importar artigos da loja virtual para o gFM Business. Este sub-script é gerado a partir do script popover "ts.art_data_import" e contém chamadas para o script da interface principal de todas as lojas virtuais, que são chamadas em função da seleção.
- Selecionar tudo - Este parâmetro pode ser utilizado para selecionar todas as linhas da janela de seleção.
- Chamada_de_clientes - Este parâmetro pode ser utilizado para chamar um item da janela de seleção na janela gFM Business.
REST_Gambio_GX3_API_v210 (tipo de dados|sistema externo|{objeto|ID exportação}|)
Este script contém todos os sub-scripts para a importação e exportação de dados relacionados com as lojas online Gambio GX3. Todos os comandos deste script são controlados através do primeiro parâmetro "Tipo de dados", que pode ter os seguintes valores
- Clientes (Script de importação para a importação automática de clientes. Com este tipo de importação, não é apresentada qualquer janela de seleção antes da importação; em vez disso, todos os clientes que ainda não existem são importados automaticamente. Com este tipo de importação, existe o risco de importar também entradas de spam indesejadas).
- Ordens_Ordens (Script de importação para a importação automática de encomendas de lojas como confirmações de encomendas. Com este tipo de importação, não é apresentada qualquer janela de seleção antes da importação, mas todas as encomendas que ainda não existem são importadas automaticamente. Com este tipo de importação, existe o risco de importar também entradas de spam não desejadas).
- Facturas_ordens (Script de importação para a importação automática de encomendas de lojas como uma fatura. Com este tipo de importação, não é apresentada qualquer janela de seleção antes da importação, mas todas as encomendas que ainda não existem são importadas automaticamente. Com este tipo de importação, existe o risco de importar também entradas de spam não desejadas).
- Artigo (Script de importação para a importação automática de produtos da loja virtual. Com este tipo de importação, não é apresentada qualquer janela de seleção antes da importação; em vez disso, todos os itens que ainda não existem são importados automaticamente.
- Cliente (Script de atualização para atualizar um único cliente da loja virtual no gFM-Business. Para chamar este script, o parâmetro [ID export] deve ser fornecido com o ID do registo de dados do cliente).
- Ordens_de_pedidos (Script de importação para importar uma única encomenda da loja virtual a partir de uma encomenda. Para chamar este script, o parâmetro [ID export] deve ser fornecido com o ID do registo de dados da encomenda).
- Facturas_de_ordem (Script de importação para importar uma única encomenda da loja virtual a partir de uma fatura. Para chamar este script, o parâmetro [ID export] deve ser fornecido com o ID do registo de dados da encomenda).
- Artigo único (Script de importação para importar um único artigo da loja virtual para o gFM-Business. Para chamar este script, o parâmetro [ID-Export] deve ser fornecido com o ID do registo de dados do artigo).
- Selecção_de_clientes (Script de importação para importar dados de clientes da loja virtual com janela de seleção. As funções dentro da janela de seleção são controladas no respetivo script de diálogo [dlg.REST_Auswahl_Kunden]).
- Selecção_ordens (Script de importação para importar encomendas da loja virtual com janela de seleção. As funções dentro da janela de seleção são controladas no respetivo script de diálogo [dlg.REST_Auswahl_Bestellungen]).
- Artigo_selecção (Script de importação para importar produtos da loja virtual com janela de seleção. As funções dentro da janela de seleção são controladas no respetivo script de diálogo [dlg.REST_Auswahl_Artikel]).
- Actualizar_estoque (Este script pode ser utilizado para comparar o stock de um artigo com o stock da loja virtual. O stock no servidor é substituído pelo stock da gFM-Business).
- Actualizar_Clientes (Este script é utilizado para atualizar os dados do cliente na loja virtual. Os dados da loja virtual são substituídos pelos dados do gFM-Business. Para chamar este script, o parâmetro [ID-Export] deve ser fornecido com o ID do registo de dados do cliente).
- Estado_da_ordem_de_actualização (Este script é utilizado para atualizar o estado da encomenda da loja virtual na gFM-Business. Os dados no gFM-Business são substituídos pelos dados da loja virtual. Para chamar este script, o parâmetro [ID export] tem de ser fornecido com o ID do registo de dados da encomenda).
- Actualizar_Artigo (Este script é utilizado para atualizar os dados do artigo na loja virtual. Os dados na loja virtual são substituídos pelos dados do gFM-Business. Para chamar este script, o parâmetro [ID-Export] deve ser fornecido com o ID do registo de dados do artigo).
REST_WooCommerce_API_v3 (tipo de dados|sistema externo|{objeto|ID exportação}|)
Este script contém todos os sub-scripts para importar e exportar dados em conjunto com as lojas virtuais baseadas no WooCommerce. Este script contém os mesmos parâmetros de comando que o script para as lojas virtuais Gambio descrito acima.
REST_Shopware_5x_API (tipo de dados|sistema externo|{objeto|ID exportação}|)
Este script contém todos os sub-scripts para importar e exportar dados em conjunto com as lojas virtuais baseadas no Shopware. Este script contém os mesmos parâmetros de comando que o script para as lojas virtuais Gambio descrito acima.
Extensão de campos para uma loja virtual existente
Os scripts da interface "REST_Shopsystem" contêm todos os sub-scripts necessários para importar dados da loja virtual. Em cada sub-script relevante, os dados a recuperar da loja são primeiro armazenados num ficheiro Variável guardado, por exemplo
Definir variável [$artikel_nr ; Valor: MBS("JSON.GetStringValue"; MBS("JSON.GetObjectItem"; $objekt; "productModel" )) ]
Quando esta variável é definida, as funções do plugin MBS são utilizadas para consultar o campo [productModel] da loja virtual. Neste caso, trata-se de um campo de texto, pelo que é utilizada a função "JSON.GetStringValue". Para campos numéricos, é utilizada a função "JSON.GetIntegerValue" ou "JSON.GetDoubleValue". Os tipos de dados devem ser estritamente diferenciados, caso contrário a função não pode ser executada. Depois de as variáveis terem sido definidas para todos os campos, os dados armazenados nas variáveis são escritos nas tabelas gFM-Business utilizando a função MBS "FM.InsertRecord".
Para importar campos adicionais da loja virtual, basta criar variáveis adicionais para os campos adicionais pretendidos e alargar a função "FM.InsertRecord" para escrever os dados nas tabelas do gFM Business em conformidade.
As variáveis $json e $object
Para todas as funções, os dados fornecidos pela loja são guardados na íntegra na variável $json. Assim, essa variável contém sempre o fluxo de dados JSON completo fornecido pela loja virtual. Dependendo da definição, a variável $object contém apenas parte dos dados fornecidos, por exemplo, um registo de dados. Para acrescentar outras tabelas à interface REST-API a partir da loja virtual ou de extensões da loja, é necessário efetuar uma nova consulta com o respetivo endpoint para a interface num script de importação. Por uma questão de clareza, pode também guardar o resultado JSON numa variável separada, por exemplo, "$json_extension_1" e "$objekt_extension_1".
Expansão da interface para incluir outra loja virtual
A adição de uma nova loja virtual que ainda não é suportada pela gFM-Business é bastante simples em princípio e consiste nos seguintes passos:
- Adicionar a nova loja virtual na gFM-Business em [Definições > Loja virtual], tendo em conta os dados de início de sessão e os pontos finais para todos os tipos de dados
- Duplicação de um script de interface existentepor exemplo, "REST_Shopware_5x_API" e mudar o nome do novo script para o nome do novo sistema de loja, por exemplo, "REST_Magento_xy_API"
- Personalizar os campos em todas as funções do novo script de importação. O pré-requisito é que a nova loja virtual também tenha uma API REST. Todas as variáveis que já foram discutidas na secção "Extensão de campos para uma loja virtual existente" devem ser adaptadas. Os nomes das variáveis não devem ser alterados. Se forem adicionados novos campos/variáveis, estes também têm de ser tidos em conta nas funções MBS "FM.InsertRecord" ou "FM.UpdateRecord". Todos os valores JSON são lidos com funções MBS na versão padrão do gFM-Business. Também é possível substituir estas funções MBS por funções FileMaker (por exemplo, JSONGetElement).
- Alargar os guiões de diálogo "dlg.REST_Auswahl_xyz". Os scripts de importação para todas as lojas virtuais são chamados a partir destes scripts, dependendo da seleção. Se for adicionado um novo sistema de lojas, estes scripts de seleção devem também ser alargados para incluir a chamada do script para a nova loja virtual. O nome da loja virtual configurada em [Definições > Loja virtual] deve conter a frase de texto que é consultada nestes scripts na variável $shopsystem.
Para os sistemas existentes, recomenda-se duplicar o sistema produtivo para a extensão da interface da loja e efetuar primeiro o desenvolvimento num sistema de teste para não comprometer a base de dados real com testes posteriores.
Extensão da interface por um parceiro de serviço ou por nós
Nós ou um dos nossos parceiros de serviço teremos todo o gosto em ajudá-lo pessoalmente na expansão da interface da loja online como parte de uma licença aberta. Podemos implementar toda a extensão pretendida ou oferecer-lhe a si ou ao seu programador uma formação adequada para a extensão da interface ou para outras questões relacionadas com o software gFM-Business ERP. Não hesite em contactar-nos!
Mais informações sobre a licença aberta do software gFM-Business ERP

Markus Schall tem vindo a desenvolver bases de dados personalizadas, interfaces e aplicações empresariais baseadas na Claris FileMaker desde 1994. É parceiro da Claris, vencedor do Prémio FMM 2011 e criador do software ERP gFM-Business. É também autor de livros e fundador da M. Schall Publishers.


