Documentação Gerenciamais

Acessar com dados de Super usuário Gerenciamais

E-mail e/ou senha incorretos.

Conhecimentos necessários para manutenção do sistema

PHP 7+, Composer, HTML, CSS, Bootstrap, Javascript, MySQL, Vuejs, Crons.

Resumo do sistema

Bootstrap 4 com tema Hyper. Nos primeiros módulos, jQuery e nos próximos começou a ser implementado VueJs 2 para melhorar a performance.
Documentação do tema Hyper
Documentação do jQuery
Documentação do VueJs
O banco de dados armazena os dados unificados de todas as empresas, baseando-se pela tabela gm_empresas. Em todos os registros associados as empresas (Funcionários, clientes, produtos, pedidos...) são relacionados pelo campo empresa_id.

A tabela gm_admin armazena os super usuários, estes devem acessar o sistema por https://app.gerenciamais.com.br/login/adm. Uma vez logado como super usuário, o sistema libera acesso a todos os registros de todas as empresas.

Login Gerenciamais

O login no sistema possui três tipos: Super usuário, Gestor e Colaborador.

Super usuário: Acessa todas as informações do sistema
Gestor: Acesso das empresas, onde os super usuários definem os módulos que a empresa poderá utilizar no sistema.
Colaborador: Acesso dos colaboradores das empresas, onde as empresas definem os módulos que seus colaboradores poderão acessar no sistema.

Cada tipo de login gera php sessions diferentes. O único arquivo responsável pelo login e recuperação de senha de todos os usuários está em: /static/pages/login.php

Sobre as pastas do sistema

O sistema possui as seguintes pastas fixas:

No início do sistema foi criado arquivos unificados, ou seja, um arquivo para todas as crons de Mercado Livre, um para Shopee, ViaVarejo... Onde era feito pequenas crons, pausar anuncios, alterar preço...

Com o tempo, o sistema recebeu a solicitação para gerenciar marketplaces e integrações como hub.
Assim, foi criado a pasta hubs, e por sua vez, subpastas nomeados de acordo com cada integração.

Atualmente temos algumas integrações em andamento, accion, api_sol, magento, mercadolivre, shopee e viavarejo.
Dentro de suas pastas, todos os hubs possuem uma classe php exclusiva para receber e enviar dados. Existem também arquivos para atualização de tokens, se necessário.

Outros módulos que fazem comunicação com marketplaces e sistemas externos, buscam as funções de cada hub dentro de suas pastas.
Caso precise fazer algum ajuste em qualquer um dos hubs, basta acessar essas pastas.

As crons de cada hub também são acionados por esses arquivos.
Você também pode alterar e consultar os horários das crons dentro do cPanel do Gerenciamais

Dentro da pasta modulos existe subpastas nomeadas de acordo com cada módulo inserido no sistema

Dentro de cada módulo, segue-se o mesmo padrão de pastas e arquivos, sendo:
/modulos/nome_modulo/view/nome_modulo.html - Contendo listagens e formulários (para manter o padrão, no view utilize apenas html, css e javascript)
/modulos/nome_modulo/model/nome_modulo.php - Contendo rota para insert, update, remove e list (Para insert e update existe classes prontas para simplificar)
/modulos/nome_modulo/controller/nome_modulo.php - Contendo controlador de rotas, define quando será exibido formulários e listas

Em resumo, abrindo por exemplo a rota app.gerenciamais.com.br/produtos, o index.php raiz do sistema detecta o módulo, no caso produtos utilizando a função router(0) e inclui o arquivo modulos/produtos/controller/produtos.php.
O controller por sua vez inclui o modulos/produtos/view/produtos.html exibindo por padrão a listagem de registros.

Após importado, o view inicia o Vuejs (em alguns módulos jQuery) e faz uma requisição via GET (Vue com Axios ou jQuery com Ajax) no modulos/produtos/model/produtos.php (/model/produtos/list) para obter o retorno do mysql select com a listagem dos registros no formato JSON.

Abrindo a rota app.gerenciamais.com.br/produtos/insert ou update, o controller inclui o formulário para inserção ou atualização de dados.

O formulário possui campos de acordo com cada módulo, e deverá enviar dados sempre via POST (Vue com Axios ou jQuery com Ajax) para model/produtos/insert ou update, com isso, dentro do model do módulo você poderá inserir ou atualizar dados no banco.

A validação de campos poderá feita feita com Vue antes do envio do POST ou no recebimento dos dados no model.

O exemplo acima se aplica para todos os módulos atuais e para os novos.

Criando novo módulo:
Para criar um novo módulo, você pode baixar o módulo exemplo aqui, alterar o nome para um que não exista na base de módulos se seguir as instruções contidas no arquivo (leia me).
O módulo de exmplo possui listagem, formulário para insert, update e remoção de dados.
Se preferir, aqui tem um vídeo mostrando a instalação de um novo módulo.

Existem alguns módulos principais que exigem mais atenção, são eles:

Empresas: Esse módulo possui comunicação com api do site https://www.sintegraws.com.br/ para obter dados de CNPJ.
Em todas as empresas cadastradas, esse módulo puxa os demais módulos para controle de acesso das empresas.

Produtos: Esse é o maior módulo do sistema, portando em sua pasta model existem alguns arquivos que se comunicam com outros módulos.

Planos: Esse módulo é responsável por limitar as empresas. Seu model é chamado alguns módulos para verificar o espaço em disco do cliente, total de produtos cadastrados, nfe emitidas...