Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Framework e modelo ER multi empresa Olá, É a primeira vez que participo do fórum, então, se caso esteja procedendo de forma errada, peço que me corrijam. Tenho um modelo ER que é multi empresa, ou seja, quase 100% das tabelas (clientes, fornecedores, produtos, etc) tem seus dados vinculados a uma e somente uma empresa. Cada um de meus clientes acessará uma destas empresas, ou seja, somente podem visualizar os seus dados...
NF
Framework e modelo ER multi empresa  
Fechado
Olá,

É a primeira vez que participo do fórum, então, se caso esteja procedendo de forma errada, peço que me corrijam.

Tenho um modelo ER que é multi empresa, ou seja, quase 100% das tabelas (clientes, fornecedores, produtos, etc) tem seus dados vinculados a uma e somente uma empresa. Cada um de meus clientes acessará uma destas empresas, ou seja, somente podem visualizar os seus dados (company_id=?) e não tem acesso às demais empresas ou dados vinculados à elas. Com isso, na escala de centenas de clientes, procuramos evitar a criação de centenas de bancos de dados no Postgres da hospedagem.

Minha pergunta é: estamos gerando os formulários pelo Studio. No entanto, visto que cada cliente somente terá acesso à somente sua empresa, é um tanto redundante colocar em todas as telas, como mestre, a empresa, trazendo como detalhe os dados (clientes por exemplo). Como tratar isso no framework, ou seja, como fazer com que seja incorporado ao WHERE na camada do banco o teste que precisamos: COMPANY_ID=10 por exemplo.

A primeira ideia que me ocorre é adicionar no formulário em questão, clientes por exemplo, um campo do tipo THIDDEN ($company_id = new THidden('company_id') ... preenchendo esta informação no caso das novas inclusões. E no caso de pesquisas e filtros, igualmente utilizando este recurso para que o framework considere esta informação no momento de traduzir isso em um WHERE final.

Aceito sugestões.

Abraço

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (4)


MS

Tenho um sistema que funciona assim.

A primeira coisa que tem q fazer é implementar no controle de acesso o iID da empresa, que o mesmo pertence..... e nas query de filtros sempre especificar nas cláusula WHERE o ID_EMPRESA = ID_EMPRESA_USUARIO_SESSAO

Nas inclusões no método onSave sempre atribuir $obj->ID_EMPRESA = ID_EMPRESA_USUARIO_SESSAO.

att
AL

Boa tarde!

Madson Silva,
poderia exemplicar os onde coloco os codigos para filtrar o ID session do login do usuario e depois onde inserir o $obj-> ID_EMPRESA = ID_EMPRESA_USUARIO_SESSAO ???

pode ajudar por gentileza.
MS

Meu nobre

No loginFom no metodo onLogin() após a validação do usuário

TSession::setValue(' ID_EMPRESA_USUARIO_SESSAO',VAR_QUE_INDENTIFICA_A_EMPRESA);

Um detalhe, vc tem q ter um campo identificador na tela de login..... ou teu sistema tem q trabalhar com login único idenpendente da empresa e pega a identificação do prorpio objeto login.

Observação..... a Versão 5 do Adianti vem com um exemplo bem prático