Adicionar Nova Unidade — Aba Informações
Documentação funcional da aba INFORMAÇÕES do formulário de unidade (Adicionar Nova Unidade / Editar Unidade): view, campos, validações, controller, model, fluxos e API.
Índice
- Visão geral
- Rota e contexto
- View (empresaForm.html)
- Campos por bloco
- Botões e ações
- Controller (empresaFormCtrl)
- Model (empresaModel)
- Fluxos de uso
- Payload e API (salvar pela aba Informações)
- Componentes e arquivos
- i18n
- Âncoras
Visão geral
A aba INFORMAÇÕES é a primeira aba (índice 0) da tela de unidade (/empresa/:id). Ela contém:
- Dados cadastrais: nome fantasia, tipo (jurídica/física), CNPJ/CPF, razão social, telefone, status (ativo/inativo), tipo de empresa (Principal/Espelho).
- Endereço: endereço, país, estado, cidade.
- Vínculo ao grupo de unidades (obrigatório).
- E-mail financeiro (apenas em edição).
- Logo da unidade, token (apenas em edição), datas de criação/alteração.
- Preferência do cliente (textarea).
- Botões: Criar Unidade (nova), Clonar, Salvar (edição), Mostrar logs (edição).
O formulário usa o nome empresaForm; os campos estão em empresa.empresa, exceto os selects que usam empresa.pais (lista de países).
tela-informacoes

Rota e contexto
| Item | Valor |
|---|---|
| State | empresaTabs |
| URL | /empresa/:id (id = 0 = nova unidade) |
| Template da tela | views/empresa/empresaTabs.html |
| Tab | Primeira aba: md-tab-label com data-translate="INFORMACOES" |
| Conteúdo da aba | ng-include="empresa.pathFile.empresaForm" → views/empresa/form/empresaForm.html |
| Controller | empresaFormCtrl (compartilhado com as demais abas) |
A aba é exibida quando selectedTab === 0 e visitedTabs[0] é true (ao selecionar a tab). Ao selecionar a tab 0, a ação selectTab(0) dispara _buscaPais() e getEmpresa().
View (empresaForm.html)
| Atributo | Valor |
|---|---|
| Arquivo | views/empresa/form/empresaForm.html |
| Form | name="empresaForm" |
| Layout | panel-body > layout-padding > form > várias row com col-md-4 / col-md-8 |
A view não declara controller; o controller é o empresaFormCtrl do div pai em empresaTabs.html.
Campos por bloco
Coluna 1 (col-md-4) — Dados básicos
| Ordem | Label (i18n) | ng-model | Tipo / Diretiva | Obrigatório | Observação |
|---|---|---|---|---|---|
| 1 | NOME_FANTASIA | empresa.empresa.nome_fantasia | input | Sim (ng-required="true") | autofocus |
| 2 | TELEFONE | empresa.empresa.telefone | input type="tel" | Não | ui-br-phone-number |
| 3 | STATUS | empresa.empresa.is_ativa | md-select | Não | Opções: true (ATIVO), false (INATIVO). Exibido só se hasPermission(PROPRIETARIO) |
| 4 | TIPO | empresa.empresa.is_juridica | md-select | Não | true = JURIDICA, false = FISICA |
| 5 | TIPO_EMPRESA | empresa.empresa.tipo_empresa | md-select | Não | PRINCIPAL, ESPELHO |
| 6a | RAZAO_SOCIAL | empresa.empresa.razao_social | input | Não | Exibido só se empresa.empresa.is_juridica == 1 |
| 6b | CPF | empresa.empresa.cpf | input | Não | Exibido se pessoa física; ui-mask 999.999.999-99; debounce 750 |
| 7 | CNPJ | empresa.empresa.cnpj | input | Sim | ui-mask 99.999.999/9999-99 |
| 8 | CNES | empresa.empresa.cnes | input | Não | — |
Coluna 2 (col-md-4) — Endereço e grupo
| Ordem | Label (i18n) | ng-model | Tipo / Componente | Obrigatório | Observação |
|---|---|---|---|---|---|
| 1 | ENDERECO | empresa.empresa.endereco | input | Não | — |
| 2 | PAIS | empresa.empresa.pais_id | md-select | Sim | Opções: empresa.pais (ng-repeat); ng-change="verificaIdPais(empresa.empresa.pais_id)" |
| 3 | ESTADO | empresa.empresa.estado | select-unico | Não | select-entidade="selectEstados", select-params="empresa.empresa.pais.itemSelect" |
| 4 | CIDADE | empresa.empresa.cidade | select-unico | Não | select-entidade="selectCidades", select-params="empresa.empresa.estado.itemSelect" |
| 5 | GRUPOS_UNIDADESS | empresa.empresa.gruposEmpresas | select-unico | Sim | select-entidade="selectGruposEmpresasSemTodos", select-params="usuarioStorage.id". Desabilitado se (selectID > 0) e não for proprietário |
| 6 | EMAIL_FINANCEIRO | empresa.empresa.email_financeiro | input | Não | Exibido só se empresa.selectID != 0 (edição) |
Coluna 3 (col-md-4) — Logo, token, datas
| Elemento | Descrição |
|---|---|
| Logo | Área clicável (.hover-logo-empresa) com ng-click="logoCropper()". Imagem: ng-src="{{empresa.empresa.link_logo_path}}", classe img-circle, 110x110. |
| TOKEN | empresa.empresa.token, input desabilitado. Exibido só se empresa.selectID != 0. |
| Botão COPIAR | id btn-empresa-form-copiar, ng-click="copyToken()", diretiva clipboard com text="empresa.empresa.token". Oculto se nova unidade. |
| DATA_CRIACAO | Exibição: empresa.empresa.data_criacao | date: 'dd/MM/yyyy HH:mm:ss'. Oculto se nova unidade. |
| DATA_ALTERACAO | Exibição: empresa.empresa.data_alteracao | date: 'dd/MM/yyyy HH:mm:ss'. Oculto se nova unidade. |
Área inferior — Preferência do cliente
| Label (i18n) | ng-model | Elemento | Observação |
|---|---|---|---|
| PREFERENCIA_CLIENTE | empresa.empresa.preferencia_cliente | textarea | id textarea-empresa-form-preferencia, rows="8", maxlength="500", col-md-8 |
Botões e ações
| ID | Condição de exibição | Ação | Label (i18n) |
|---|---|---|---|
btn-empresa-form-criar-unidade | empresa.selectID == 0 | ng-click="criarEmpresa(empresa)", ng-disabled="empresaForm.$invalid" | CRIAR_UNIDADE |
btn-empresa-form-clonar-empresa | empresa.selectID != 0 e permissão PROPRIETARIO | ng-click="openModalClonagem(empresa)", ng-disabled="empresaForm.$invalid" | CLONAR |
btn-empresa-form-salvar | empresa.selectID != 0 | ng-click="atualizarEmpresa(empresa, true)", ng-disabled="empresaForm.$invalid" | SALVAR |
btn-empresa-form-mostrar-logs | empresa.selectID != 0 | ng-click="mostrarHistorico()" | MOSTRAR_LOGS |
O parâmetro true em atualizarEmpresa(empresa, true) indica que a salvagem partiu da aba Informações; o controller remove do payload campos de outras abas (prioridades, modalidades, preferência protocolo, etc.) antes de enviar.
Controller (empresaFormCtrl)
Arquivo: app/controllers/empresaFormCtrl.js
Inicialização ao abrir a aba (tab 0)
tabActions[0]: chama_buscaPais()e$scope.getEmpresa().- getEmpresa():
- Se
empresa.selectID == 0: apenas defineempresa.empresa.link_logo_path = config.LOGO_UNIDADEe retorna (não chama API). - Se
empresa.selectID != 0: verifica permissão comusuarioHttpService.buscaPerfilUsuarioEmpresa, depoisempresaHttpService.getEmpresa(empresa.selectID). Nothen, preencheempresa.empresacomempresaModel.frontEmpresa(response.data), definepais_id, montapacs_externo(para outras abas), carrega worklist, commandCenter, módulos, etc.
- Se
Funções usadas na aba Informações
| Função | Uso na aba |
|---|---|
verificaIdPais(pais_id) | Chamada no ng-change do select de país. |
logoCropper() | Abre modal/flow para upload/recorte da logo. |
copyToken() | Copia o token para a área de transferência. |
tokenCopiedSuccess() | Callback após copiar token. |
criarEmpresa(empresa) | Cria nova unidade; valida CNPJ, país, PACS (usa dados já preenchidos, inclusive da aba PACS se o usuário tiver ido lá antes). Monta payload com empresaModel.backEmpresa(empresa.empresa) e chama empresaHttpService.criarEmpresa. |
atualizarEmpresa(empresa, true) | Atualiza unidade a partir dos dados da aba Informações; o true faz o controller remover do payload campos de outras abas. |
openModalClonagem(empresa) | Abre modal de clonagem da unidade. |
mostrarHistorico() | Exibe histórico/logs da unidade. |
Escopo relevante
empresa.selectID: ID da unidade (0 = nova).empresa.empresa: objeto principal do formulário.empresa.pais: lista de países (preenchida por_buscaPais).empresa.pathFile: pathFile (empresaForm, empresaFormPacs, etc.).usuarioStorage: usuário logado (para select de grupos).hasPermission,enums: permissões e enums.
Model (empresaModel)
Arquivo: app/domain/models/empresaModel.js
frontEmpresa(dadosBack)
Usado ao carregar a unidade em edição. Converte dadosBack.empresa para o formato da tela:
- Inclui: nome_fantasia, is_juridica, tipo_empresa, cnpj, cpf, razao_social, endereco, pais (objeto com array + itemSelect), estado, cidade, gruposEmpresas (objeto select), email_financeiro, token, link_logo_path, data_criacao, data_alteracao, preferencia_cliente, is_ativa, entre outros.
- País/estado/cidade e gruposEmpresas vêm no formato usado pelos selects (array + itemSelect).
backEmpresa(dados)
Usado ao salvar (criar ou atualizar). Monta o objeto enviado na requisição:
- Inclui todos os campos de empresa mapeados no model (incl. gruposEmpresas_id a partir de grupo, endereço, país/estado/cidade, etc.).
- Quando o salvamento é pela aba Informações com
isInformaçoes === true, o controller remove do payload (após o back) campos como prioridades, modalidades, preferencia_prioridade, tempo_impressao, etc., para não sobrescrever outras abas.
Fluxos de uso
Nova unidade (selectID == 0)
- Usuário acessa
/empresa/0e abre a aba Informações. getEmpresa()só define logo padrão;_buscaPais()carrega países.

- Usuário preenche nome, CNPJ, tipo, país, estado, cidade, grupo (obrigatórios) e demais campos.
- Clica Criar Unidade (pode ser nesta aba ou na aba PACS; o botão desta aba chama
criarEmpresa(empresa)).

- Controller valida CNPJ, país e PACS; monta payload com
backEmpresae chamacriarEmpresa(HTTP). Em sucesso: upload da logo, notificação e redirecionamento.

Editar unidade (selectID != 0)
- Usuário acessa a tabela de Cadastro de Unidades e clica no botão de editar.

getEmpresa()carrega dados da unidade e preenche o formulário.- Usuário altera campos e clica Salvar.

atualizarEmpresa(empresa, true)monta payload combackEmpresa; controller remove campos de outras abas; chamaatualizarEmpresa(HTTP). Em sucesso: salvar logo (se houver), notificação.
Payload e API (salvar pela aba Informações)
Criar (POST /empresa/)
- Chamada a partir de
criarEmpresa(empresa). O payload éempresaModel.backEmpresa(empresa.empresa)(objetoempresano body). Inclui dados cadastrais da aba Informações e, se o usuário tiver preenchido a aba PACS, também id_pacs, url_pacs_externo, storage, etc.
Atualizar (PUT /empresa/)
- Chamada a partir de
atualizarEmpresa(empresa, true). O payload é montado combackEmpresa(dados.empresa); em seguida o controller remove do objeto enviado: prioridades, modalidades, preferencia_prioridade, tempo_impressao, preferencia_protocolo, permissao_entrega_exames, permissao_emails_automaticos, permissao_imprimir_exames, permissao_pre_visualizacao, permissao_bloquear_imagens, url_entrega, permissao_duplicar_medico, permissao_duplicar_tecnico, permissao_revisar, somente_gestor_excluir. Assim, salvar pela aba Informações não sobrescreve configurações das outras abas.
Obter unidade (GET /empresa/:id)
- Usado em
getEmpresa()para preencher o formulário em edição. A resposta é passada paraempresaModel.frontEmpresa(response.data).
Componentes e arquivos
| Tipo | Caminho |
|---|---|
| View (aba) | views/empresa/form/empresaForm.html |
| Controller | app/controllers/empresaFormCtrl.js |
| Model | app/domain/models/empresaModel.js |
| Service HTTP | app/services/http/empresaHttpService.js (getEmpresa, criarEmpresa, atualizarEmpresa) |
| Config pathFile | app/config/config.js → empresaForm: 'views/empresa/form/empresaForm.html' |
| Tela (tabs) | views/empresa/empresaTabs.html |
| Controller tabs | app/controllers/empresaTabsCtrl.js |
| Rota | app/core/config.route.js → state empresaTabs, url /empresa/:id |
Âncoras
| Âncora | Conteúdo |
|---|---|
#visão-geral | Objetivo da aba Informações |
#rota-e-contexto | State, URL, template, tab index |
#view-empresaformhtml | Arquivo e form name |
#campos-por-bloco | Tabelas de campos por coluna |
#botões-e-ações | Botões e parâmetro isInformaçoes |
#controller-empresaformctrl | getEmpresa, criarEmpresa, atualizarEmpresa, etc. |
#model-empresamodel | frontEmpresa e backEmpresa |
#fluxos-de-uso | Nova unidade e editar |
#payload-e-api-salvar-pela-aba-informações | POST/PUT e remoção de campos |
#componentes-e-arquivos | Lista de arquivos |
#i18n | Chaves de tradução |
Written by: Fabiane Heckmann
Last modified:
© 2026 Mobilemed. Todos os direitos reservados.