Skip to main content

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​

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 tela informações


Rota e contexto​

ItemValor
StateempresaTabs
URL/empresa/:id (id = 0 = nova unidade)
Template da telaviews/empresa/empresaTabs.html
TabPrimeira aba: md-tab-label com data-translate="INFORMACOES"
Conteúdo da abang-include="empresa.pathFile.empresaForm" → views/empresa/form/empresaForm.html
ControllerempresaFormCtrl (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)​

AtributoValor
Arquivoviews/empresa/form/empresaForm.html
Formname="empresaForm"
Layoutpanel-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​

OrdemLabel (i18n)ng-modelTipo / DiretivaObrigatórioObservação
1NOME_FANTASIAempresa.empresa.nome_fantasiainputSim (ng-required="true")autofocus
2TELEFONEempresa.empresa.telefoneinput type="tel"Nãoui-br-phone-number
3STATUSempresa.empresa.is_ativamd-selectNãoOpções: true (ATIVO), false (INATIVO). Exibido só se hasPermission(PROPRIETARIO)
4TIPOempresa.empresa.is_juridicamd-selectNãotrue = JURIDICA, false = FISICA
5TIPO_EMPRESAempresa.empresa.tipo_empresamd-selectNãoPRINCIPAL, ESPELHO
6aRAZAO_SOCIALempresa.empresa.razao_socialinputNãoExibido só se empresa.empresa.is_juridica == 1
6bCPFempresa.empresa.cpfinputNãoExibido se pessoa física; ui-mask 999.999.999-99; debounce 750
7CNPJempresa.empresa.cnpjinputSimui-mask 99.999.999/9999-99
8CNESempresa.empresa.cnesinputNão—

Coluna 2 (col-md-4) — Endereço e grupo​

OrdemLabel (i18n)ng-modelTipo / ComponenteObrigatórioObservação
1ENDERECOempresa.empresa.enderecoinputNão—
2PAISempresa.empresa.pais_idmd-selectSimOpções: empresa.pais (ng-repeat); ng-change="verificaIdPais(empresa.empresa.pais_id)"
3ESTADOempresa.empresa.estadoselect-unicoNãoselect-entidade="selectEstados", select-params="empresa.empresa.pais.itemSelect"
4CIDADEempresa.empresa.cidadeselect-unicoNãoselect-entidade="selectCidades", select-params="empresa.empresa.estado.itemSelect"
5GRUPOS_UNIDADESSempresa.empresa.gruposEmpresasselect-unicoSimselect-entidade="selectGruposEmpresasSemTodos", select-params="usuarioStorage.id". Desabilitado se (selectID > 0) e não for proprietário
6EMAIL_FINANCEIROempresa.empresa.email_financeiroinputNãoExibido só se empresa.selectID != 0 (edição)

Coluna 3 (col-md-4) — Logo, token, datas​

ElementoDescrição
LogoÁrea clicável (.hover-logo-empresa) com ng-click="logoCropper()". Imagem: ng-src="{{empresa.empresa.link_logo_path}}", classe img-circle, 110x110.
TOKENempresa.empresa.token, input desabilitado. Exibido só se empresa.selectID != 0.
Botão COPIARid btn-empresa-form-copiar, ng-click="copyToken()", diretiva clipboard com text="empresa.empresa.token". Oculto se nova unidade.
DATA_CRIACAOExibição: empresa.empresa.data_criacao | date: 'dd/MM/yyyy HH:mm:ss'. Oculto se nova unidade.
DATA_ALTERACAOExibiçã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-modelElementoObservação
PREFERENCIA_CLIENTEempresa.empresa.preferencia_clientetextareaid textarea-empresa-form-preferencia, rows="8", maxlength="500", col-md-8

Botões e ações​

IDCondição de exibiçãoAçãoLabel (i18n)
btn-empresa-form-criar-unidadeempresa.selectID == 0ng-click="criarEmpresa(empresa)", ng-disabled="empresaForm.$invalid"CRIAR_UNIDADE
btn-empresa-form-clonar-empresaempresa.selectID != 0 e permissão PROPRIETARIOng-click="openModalClonagem(empresa)", ng-disabled="empresaForm.$invalid"CLONAR
btn-empresa-form-salvarempresa.selectID != 0ng-click="atualizarEmpresa(empresa, true)", ng-disabled="empresaForm.$invalid"SALVAR
btn-empresa-form-mostrar-logsempresa.selectID != 0ng-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 define empresa.empresa.link_logo_path = config.LOGO_UNIDADE e retorna (não chama API).
    • Se empresa.selectID != 0: verifica permissão com usuarioHttpService.buscaPerfilUsuarioEmpresa, depois empresaHttpService.getEmpresa(empresa.selectID). No then, preenche empresa.empresa com empresaModel.frontEmpresa(response.data), define pais_id, monta pacs_externo (para outras abas), carrega worklist, commandCenter, módulos, etc.

Funções usadas na aba Informações​

FunçãoUso 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)​

  1. Usuário acessa /empresa/0 e abre a aba Informações.
  2. getEmpresa() só define logo padrão; _buscaPais() carrega países.

buscar paises

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

form info

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

criar empresa

Editar unidade (selectID != 0)​

  1. Usuário acessa a tabela de Cadastro de Unidades e clica no botão de editar.

editar unidade

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

form btn salvar

  1. atualizarEmpresa(empresa, true) monta payload com backEmpresa; controller remove campos de outras abas; chama atualizarEmpresa (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) (objeto empresa no 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 com backEmpresa(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 para empresaModel.frontEmpresa(response.data).

Componentes e arquivos​

TipoCaminho
View (aba)views/empresa/form/empresaForm.html
Controllerapp/controllers/empresaFormCtrl.js
Modelapp/domain/models/empresaModel.js
Service HTTPapp/services/http/empresaHttpService.js (getEmpresa, criarEmpresa, atualizarEmpresa)
Config pathFileapp/config/config.js → empresaForm: 'views/empresa/form/empresaForm.html'
Tela (tabs)views/empresa/empresaTabs.html
Controller tabsapp/controllers/empresaTabsCtrl.js
Rotaapp/core/config.route.js → state empresaTabs, url /empresa/:id

Âncoras​

ÂncoraConteúdo
#visão-geralObjetivo da aba Informações
#rota-e-contextoState, URL, template, tab index
#view-empresaformhtmlArquivo e form name
#campos-por-blocoTabelas de campos por coluna
#botões-e-açõesBotões e parâmetro isInformaçoes
#controller-empresaformctrlgetEmpresa, criarEmpresa, atualizarEmpresa, etc.
#model-empresamodelfrontEmpresa e backEmpresa
#fluxos-de-usoNova unidade e editar
#payload-e-api-salvar-pela-aba-informaçõesPOST/PUT e remoção de campos
#componentes-e-arquivosLista de arquivos
#i18nChaves de tradução

Written by: Fabiane Heckmann

Last modified:

© 2026 Mobilemed. Todos os direitos reservados.