# Liberar Pontuação :::info Descrição Permite ao usuário aprovar liberações de contratos que tiveram pontuação abaixo do mínimo durante simulação. O processo de liberação é iniciado no sistema web e finalizado via APP. ::: ## Fluxo no APP 1. O usuário acessa o menu `Liberar Pontuação`. 2. É exibida a lista de contratos pendentes de aprovação. 3. Ao selecionar um contrato, os dados são carregados para análise. 4. O usuário pode então aprovar a liberação clicando no botão `Liberar`. ## Como Simular/Testar no Sistema Web 1. Acesse: `http://modelo.efinance.com.br` 2. Login: - **Empresa:** 116 - **Usuário:** Santarosa 3. Após login, entre com as credenciais da Persys. 4. Vá até: `Comercial > Clientes / Simulação e Contrato` 5. Selecione um cliente com 1+ projetos (coluna `Proj.`). 6. Clique em `Simulação e Contrato`. 7. Altere o campo `Pontuação` para 1.5 ou menos e clique em `Simulação`. 8. Quando alertado que a pontuação está abaixo do mínimo, clique em `Solicitar lib. Pontuação`. 9. Marque o usuário `Silvio Santarosa` e clique em `Enviar Solicitação`. :::success Resultado Após estes passos, a solicitação aparecerá no APP. ::: ## Endpoints Utilizados ### Listar Contratos Pendentes **Método:** POST **URL:** `/api/Contrato/GetContrato` **Descrição:** Retorna os contratos pendentes de liberação. **Parâmetros:** - `Emp` <int32> - Código da empresa - `Loja` <int32> - Código da loja - `Usuario` <int32> - Código do usuário que vai aprovar **Exemplo Request:** ```json { "Emp": 116, "Loja": 2009, "Usuario": 1 } ``` **Response (Sucesso):** ```json [ { "ERR_Codigo": 0, "ERR_Mensagem": "", "CLI_Codigo": 12345, "CLI_Loja": 2009, "Cliente": "Nome do Cliente", "Indicador": 1.5, "TipoVenda": "Tipo de Venda", "Financeira": "Nome da Financeira", "Fornecedor": 123, "Contrato": "200901234", "CondicaoPagamento": "Condição de Pagamento", "Pontuacao": 1.5, "JurosMedio": 2.5, "USU_Nome": "Nome do Usuário" } ] ``` **Response (Erro):** ```json [ { "ERR_Codigo": 1, "ERR_Mensagem": "Não há contratos para liberar", "CLI_Codigo": 0, "CLI_Loja": 0, "Cliente": null, "Indicador": 0, "TipoVenda": null, "Financeira": null, "Fornecedor": 0, "Contrato": null, "CondicaoPagamento": null, "Pontuacao": 0, "JurosMedio": 0, "USU_Nome": null } ] ``` **Propriedades da Resposta:** - `ERR_Codigo` <int> - Código de erro (0 = sucesso) - `ERR_Mensagem` <string> - Mensagem de erro (vazio = sucesso) - `CLI_Codigo` <int> - Código do cliente - `CLI_Loja` <int> - Código da loja do cliente - `Cliente` <string> - Nome do cliente - `Indicador` <decimal> - Valor do indicador de pontuação - `TipoVenda` <string> - Tipo de venda (à vista, financiada, etc.) - `Financeira` <string> - Nome da instituição financeira (se aplicável) - `Fornecedor` <int> - Código do fornecedor - `Contrato` <string> - Número do contrato - `CondicaoPagamento` <string> - Condição de pagamento negociada - `Pontuacao` <decimal> - Pontuação atual do contrato - `JurosMedio` <decimal> - Taxa média de juros aplicada - `USU_Nome` <string> - Nome do usuário responsável ### Detalhes do Contrato **Método:** POST **URL:** `/api/Projeto` **Descrição:** Retorna os dados detalhados do contrato selecionado para análise. **Parâmetros:** - `Emp` <int32> - Código da empresa - `Loja` <int32> - Código da loja - `Usuario` <int32> - Código do usuário - `Cliente` <int32> - Código do cliente - `Contrato` <string> - Número do contrato **Exemplo Request:** ```json { "Emp": 116, "Loja": 2009, "Usuario": 1, "Cliente": 12345, "Contrato": "200901234" } ``` **Response:** ```json [ { "ERR_Codigo": 0, "ERR_Mensagem": "", "PRO_Loja": 2009, "PRO_Cliente": 12345, "PRO_Opcao": "AA", "PRO_Ambiente": "SALA", "PRO_Fornecedor": "123", "PRO_Linha": "456", "Fornecedor": "Nome do Fornecedor", "Linha": "Nome da Linha", "PRO_TotalPrazo": 10000.00, "PontuacaoLiberada": 1.5, "PontuacaoStartSimulacao": 2.0, "PercentualDesconto": 25.0, "JurosMedio": 2.5 }, { "ERR_Codigo": 0, "ERR_Mensagem": "", "PRO_Loja": 2009, "PRO_Cliente": 12345, "PRO_Opcao": "AB", "PRO_Ambiente": "QUARTO", "PRO_Fornecedor": "123", "PRO_Linha": "456", "Fornecedor": "Nome do Fornecedor", "Linha": "Nome da Linha", "PRO_TotalPrazo": 5000.00, "PontuacaoLiberada": 1.5, "PontuacaoStartSimulacao": 2.0, "PercentualDesconto": 25.0, "JurosMedio": 2.5 } ] ``` **Propriedades da Resposta:** - `ERR_Codigo` <int> - Código de erro (0 = sucesso) - `ERR_Mensagem` <string> - Mensagem de erro (vazio = sucesso) - `PRO_Loja` <int> - Código da loja onde o projeto foi criado - `PRO_Cliente` <int> - Código do cliente - `PRO_Opcao` <string> - Código do ambiente/opção (AA, AB, etc.) - `PRO_Ambiente` <string> - Descrição do ambiente (Sala, Quarto, etc.) - `PRO_Fornecedor` <string> - Código do fornecedor - `PRO_Linha` <string> - Código da linha de produtos - `Fornecedor` <string> - Nome do fornecedor - `Linha` <string> - Nome da linha de produtos - `PRO_TotalPrazo` <decimal> - Valor total a prazo - `PontuacaoLiberada` <decimal> - Pontuação que será liberada - `PontuacaoStartSimulacao` <decimal> - Pontuação inicial da simulação - `PercentualDesconto` <decimal> - Percentual de desconto aplicado - `JurosMedio` <decimal> - Taxa média de juros aplicada ### Liberar Pontuação **Método:** POST **URL:** `/api/Projeto/Liberar` **Descrição:** Realiza a liberação da pontuação do contrato selecionado. **Parâmetros:** - `Emp` <string> - Código da empresa - `Loja` <string> - Código da loja do usuário - `Login` <string> - Login do usuário - `Senha` <string> - Senha do usuário - `CLI_Loja` <array[string]> - Código da loja do cliente - `CLI_Codigo` <array[string]> - Código do cliente - `Opcao` <array[string]> - Código do projeto - `Linha` <array[string]> - Código da linha - `Fornecedor` <array[string]> - Código do fornecedor - `Pontuacao` <array[string]> - Pontuação do projeto **Exemplo Request:** ```json { "Emp": "116", "Loja": "2009", "Login": "usuario", "Senha": "senha123", "CLI_Loja": ["2009"], "CLI_Codigo": ["12345"], "Opcao": ["AA", "AB"], "Linha": ["115"], "Fornecedor": ["6"], "Pontuacao": ["1,2"] } ``` **Response:** ```json { "ERR_Codigo": 0, "ERR_Mensagem": "" } ``` **Response (em caso de sucesso):** ```json { "ERR_Codigo": 0, "ERR_Mensagem": "" } ``` **Response (em caso de erro):** ```json { "ERR_Codigo": 1, "ERR_Mensagem": "Usuário sem permissão para liberar pontuações" } ``` **Propriedades da Resposta:** - `ERR_Codigo` <int> - Código de erro (0 = sucesso, outros valores = erro) - `ERR_Mensagem` <string> - Mensagem de erro ou sucesso :::warning Observações - O contrato só aparece no APP após o processo de solicitação de liberação ser feito no sistema web. - O ambiente de testes é: `http://suporte.efinance.com.br/13647`. - O usuário `Silvio Santarosa` (Usuário ID: 1) é utilizado nos testes. - Todos os endpoints sempre retornam HTTP Status Code 200. - Para verificar se houve erro na operação, verifique se `ERR_Codigo` é diferente de 0 e a mensagem em `ERR_Mensagem`. ::: # Autorização Deb/Cred :::info Descrição Permite ao usuário autorizar, retornar, aprovar ou reprovar solicitações de débito ou crédito cadastradas previamente no sistema web. O APP apresenta os registros pendentes e possibilita o gerenciamento individual de cada solicitação. ::: ## Fluxo no APP 1. O usuário acessa o menu `Autorização Deb/Cred`. 2. A tela lista todas as solicitações pendentes. 3. Ao selecionar uma solicitação, o app exibe os detalhes da CI. 4. As ações disponíveis são: - Alterar grupo de contas e tipo de movimento - Retornar ao solicitante - Aprovar - Reprovar - Fechar sem ação (desbloqueia automaticamente) ## Como Simular/Testar no Sistema Web 1. Acesse: `http://modelo.efinance.com.br` 2. Login: - **Empresa:** 116 - **Loja:** 2009 - **Usuário:** dani - **Senha:** eFiPersys 3. Vá até: `Financeiro > Solicitação de Autorização (Deb/Cre)` 4. Clique em `Nova` 5. Selecione o destinatário `SILVIO SANTAROSA` 6. Preencha todos os campos da CI, incluindo parcelamento 7. Clique em `Enviar` :::success Resultado Após estes passos, a solicitação será exibida no APP. ::: ## Endpoints Utilizados ### Listar Autorizações Pendentes **Método:** POST **URL:** `/api/SolicitacaoAutorizacao/GetSolicitacaoAutorizacao` **Descrição:** Retorna a lista de autorizações pendentes. **Parâmetros:** - `Emp` <int32> - Código da empresa - `Loja` <int32> - Código da loja - `Usuario` <int32> - Código do usuário **Exemplo Request:** ```json { "Emp": 116, "Loja": 2009, "Usuario": 1 } ``` **Response:** ```json [ { "ERR_Codigo": 0, "ERR_Mensagem": "", "CodCIA": 3497170, "Loja": 2009, "Data": "28/01/2025 10:51:26", "Vencimento": "28/01/2025", "Remetente": "Ana Lima", "Destinatario": "Silvio Santarosa ", "GrupoContas": "CREDITOS", "ContaMovto": "CRÉDITOS-DIVERSOS", "TotalCI": 2460, "Status": "<font color=green><b>Retornado</b></font>", "Tipo": "C" }, { "ERR_Codigo": 0, "ERR_Mensagem": "", "CodCIA": 3518832, "Loja": 2009, "Data": "27/02/2025 10:21:44", "Vencimento": "12/02/2025", "Remetente": "Silvio Santarosa ", "Destinatario": "Ana Lima", "GrupoContas": "OBRIGAÇÕES TRABALHISTAS", "ContaMovto": "INSS", "TotalCI": 500, "Status": "<font color=green><b>Aguarda</b></font>", "Tipo": "D" } ] ``` **Propriedades da Resposta:** - `ERR_Codigo` <int> - Código de erro (0 = sucesso) - `ERR_Mensagem` <string> - Mensagem de erro (vazio = sucesso) - `CodCIA` <int> - Código único da CI (vem de `CIA_CodCIA`) - `Loja` <int> - Código da loja da CI (vem de `CIA_Loja`) - `Data` <string> - Data e hora de criação da solicitação (formato "dd/MM/yyyy HH:mm:ss", vem de `CIA_Data` e `CIA_Hora`) - `Vencimento` <string> - Data do primeiro vencimento (formato "dd/MM/yyyy", vem de `Primeiro_Vecto`) - `Remetente` <string> - Nome do usuário remetente (vem de `DeNome`) - `Destinatario` <string> - Nome do usuário destinatário (vem de `ParaNome`) - `GrupoContas` <string> - Descrição do grupo de contas (vem de `TMS_Descricao`) - `ContaMovto` <string> - Descrição da conta de movimento/tipo de despesa (vem de `TMP_Descricao`) - `TotalCI` <decimal> - Valor total da solicitação (vem de `TotalCIA`) - `Status` <string> - Descrição do status da CI (pode conter HTML, vem de `NomeStatus`) - `Tipo` <string> - Tipo da operação ("D" para Débito, "C" para Crédito, vem de `TMP_DebCre`) ### Detalhes da CI **Método:** POST **URL:** `/api/SolicitacaoAutorizacaoItem` **Descrição:** Retorna os detalhes da CI selecionada. **Parâmetros:** - `Emp` <int32> - Código da empresa - `CodCIA` <int32> - Código da CI - `Usuario` <int32> - Código do usuário **Exemplo Request:** ```json { "Emp": 116, "CodCIA": 3475277, "Usuario": 1 } ``` **Response:** ```json { "ERR_Codigo": 0, "ERR_Mensagem": "", "UserDe": "DANIELLE SILVA", "UserPara": "SILVIO SANTAROSA", "Loja": "Loja Exemplo", "TipoMovto": "<font color=red> Débito</font>", "Documento": "Nota Fiscal", "GrupoContas": "PGTO FORNECEDOR", "ContasMovto": "PAGAMENTO A FORNECEDORES", "Fornecedor": "FORNECEDOR XYZ LTDA", "Assunto": "PAGAMENTO FORNECEDOR", "Historico": "Pagamento referente à nota fiscal 9876, entrega realizada em 20/11/2024", "Observacao": "<br /><br /><div class=dvCIA>DANIELLE SILVA - 25/11/2024 14:35 hs </div>Favor verificar e aprovar com urgência", "CodCIA": 3475277, "CIA_Status": 0, "CIA_TipoMovimento": 5213, "CIA_Equipe": 0, "CIA_PeriodoMes": 11, "CIA_PeriodoAno": 2024, "CIA_Origem": 0, "CIA_Fornecedor": 3075, "TMP_DebCre": "D", "CIA_CodUserDe": 287, "CIA_CodUserPara": 1, "CIA_Loja": 2009, "CIA_Documento": 1234, "CIA_Data_Retornado": null, "Documentos": [ { "NomCampo": "Número NF", "Conteudo": "9876" }, { "NomCampo": "Data Emissão NF", "Conteudo": "20/11/2024" } ], "Parcelas": [ { "Parcela": "1", "Vencto": "30/11/2024", "Valor": 2500.00 }, { "Parcela": "2", "Vencto": "30/12/2024", "Valor": 2500.00 } ], "Bloqueado": "N" } ``` **Propriedades da Resposta:** - `ERR_Codigo` <int> - Código de erro (0 = sucesso) - `ERR_Mensagem` <string> - Mensagem de erro (vazio = sucesso) - `UserDe` <string> - Nome do usuário DE (remetente da CIA, da Model: `NomUserDE`) - `UserPara` <string> - Nome do usuário PARA (destinatário da CIA, da Model: `NomUserPara`) - `Loja` <string> - Nome da Loja (da Model: `NomLoja`) - `TipoMovto` <string> - Tipo de movimento formatado (ex: D/C com HTML, da Model: `TMP_DebCre` formatado) - `Documento` <string> - Nome do tipo de documento (da Model: `TDO_Nome`) - `GrupoContas` <string> - Descrição do "Grupo de Contas" (mapeado de `TMP_Descricao` - Nome do Tipo de Movimento/Despesa) - `ContasMovto` <string> - Descrição da "Conta de Movimento" (mapeado de `TMS_Descricao` - Nome do SubGrupo de Contas) - `Fornecedor` <string> - Nome do Fornecedor (da Model: `NomFornecedor`) - `Assunto` <string> - Assunto da CI (da Model: `CIA_Assunto`) - `Historico` <string> - Histórico da CI (da Model: `CIA_Historico`) - `Observacao` <string> - Observações do sistema/fluxo em uma string única (da Model: `CIA_Observacao`) - `CodCIA` <int> - Código da CI - `CIA_Status` <int> - Status numérico da CI (0=Pendente, 1=Aprovada, 2=Reprovada, 3=Retornada) - `CIA_TipoMovimento` <int> - Código do Tipo de Movimento - `CIA_Equipe` <int> - Código da Equipe (se houver) - `CIA_PeriodoMes` <int> - Mês de referência do período (se houver) - `CIA_PeriodoAno` <int> - Ano de referência do período (se houver) - `CIA_Origem` <int> - Código da origem da CI (se houver) - `CIA_Fornecedor` <int> - Código do fornecedor (se aplicável) - `TMP_DebCre` <string> - Tipo da operação ("D" para Débito, "C" para Crédito) - `CIA_CodUserDe` <int> - Código do usuário solicitante/DE - `CIA_CodUserPara` <int> - Código do usuário destinatário/PARA - `CIA_Loja` <int> - Código da loja da CI - `CIA_Documento` <int> - Código do Tipo de Documento - `CIA_Data_Retornado` <string> - Data em que a CI foi retornada (se aplicável, formato ISO ou dd/MM/yyyy) - `Documentos` <array[object]> - Lista de documentos associados à CI - `NomCampo` <string> - Nome do campo do documento - `Conteudo` <string> - Conteúdo do campo do documento - `Parcelas` <array[object]> - Lista de parcelas da CI - `Parcela` <string> - Identificador da parcela (ex: "1", "2") - `Vencto` <string> - Data de vencimento da parcela (formato dd/MM/yyyy) - `Valor` <decimal> - Valor da parcela - `Bloqueado` <string> - Indica o status de bloqueio do registro (ex: "S" para Sim, "N" para Não, ou mensagem) ### Carregar Grupos de Contas **Método:** POST **URL:** `/api/SolicitacaoAutorizacaoItem/GrupoConta` **Descrição:** Carrega as opções de grupo de contas. **Parâmetros:** - `Emp` <int32> - Código da empresa - `DebCre` <string> - Tipo do movimento ("D" para Débito ou "C" para Crédito) **Exemplo Request:** ```json { "Emp": 116, "DebCre": "D" } ``` **Response:** ```json [ { "ERR_Codigo": 0, "ERR_Mensagem": "", "Codigo": 52, "Descricao": "CONTAS A PAGAR", "SubGrupos": [ { "Codigo": 5213, "Descricao": "PAGAMENTO A FORNECEDORES" }, { "Codigo": 5214, "Descricao": "PAGAMENTO DE SERVIÇOS" }, { "Codigo": 5215, "Descricao": "DESPESAS DIVERSAS" } ] }, { "ERR_Codigo": 0, "ERR_Mensagem": "", "Codigo": 53, "Descricao": "DESPESAS ADMINISTRATIVAS", "SubGrupos": [ { "Codigo": 5301, "Descricao": "MATERIAL DE ESCRITÓRIO" }, { "Codigo": 5302, "Descricao": "DESPESAS COM PESSOAL" } ] } ] ``` **Propriedades da Resposta:** - `ERR_Codigo` <int> - Código de erro (0 = sucesso) - `ERR_Mensagem` <string> - Mensagem de erro (vazio = sucesso) - `Codigo` <int> - Código do grupo de contas - `Descricao` <string> - Nome do grupo de contas - `SubGrupos` <array[object]> - Lista de subgrupos pertencentes ao grupo - `Codigo` <int> - Código do subgrupo - `Descricao` <string> - Nome do subgrupo ### Carregar Tipos de Movimento **Método:** POST **URL:** `/api/SolicitacaoAutorizacaoItem/TipoMovimento` **Descrição:** Retorna os tipos de movimento conforme o subgrupo selecionado. **Parâmetros:** - `Emp` <int32> - Código da empresa - `SubGrupo` <int32> - Código do subgrupo de contas **Exemplo Request:** ```json { "Emp": 116, "SubGrupo": 5213 } ``` **Response:** ```json [ { "ERR_Codigo": 0, "ERR_Mensagem": "", "TMO_Codigo": 52131, "TMO_Nome": "PGTO FORNECEDOR MATERIAL" }, { "ERR_Codigo": 0, "ERR_Mensagem": "", "TMO_Codigo": 52132, "TMO_Nome": "PGTO FORNECEDOR SERVIÇO" }, { "ERR_Codigo": 0, "ERR_Mensagem": "", "TMO_Codigo": 52133, "TMO_Nome": "PGTO FORNECEDOR FRETE" } ] ``` **Propriedades da Resposta:** - `ERR_Codigo` <int> - Código de erro (0 = sucesso) - `ERR_Mensagem` <string> - Mensagem de erro (vazio = sucesso) - `TMO_Codigo` <int> - Código do tipo de movimento - `TMO_Nome` <string> - Nome do tipo de movimento ### Desbloquear CI **Método:** POST **URL:** `/api/SolicitacaoAutorizacaoItem/Desbloqueia` **Descrição:** Desbloqueia a CI caso o usuário apenas feche a tela sem tomar ação. **Parâmetros:** - `Emp` <int32> - Código da empresa - `CodCIA` <int32> - Código da CI - `Usuario` <int32> - Código do usuário **Exemplo Request:** ```json { "Emp": 116, "CodCIA": 3497170, "Usuario": 1 } ``` **Response:** ```json { "ERR_Codigo": 0, "ERR_Mensagem": "" } ``` **Propriedades da Resposta:** - `ERR_Codigo` <int> - Código de erro (0 = sucesso) - `ERR_Mensagem` <string> - Mensagem de erro (vazio = sucesso) ### Retornar CI **Método:** POST **URL:** `/api/SolicitacaoAutorizacao/Retornar` **Descrição:** Retorna a CI ao solicitante com observação obrigatória. **Parâmetros:** - `Emp` <int32> - Código da empresa - `CodCIA` <int32> - Código da CI - `Observacao` <string> - Motivo do retorno - `Usuario` <int32> - Código do usuário - `CIA_CodUserDe` <int32> - Código do usuário que está retornando - `CIA_CodUserPara` <int32> - Código do usuário destinatário - `CIA_Loja` <int32> - Código da loja - `CIA_TipoMovimento` <int32> - Código do tipo de movimento - `CIA_Documento` <int32> - Número do documento - `CIA_Assunto` <string> - Assunto da CI - `CIA_Historico` <string> - Histórico da CI - `CIA_Fornecedor` <int32> - Código do fornecedor **Exemplo Request:** ```json { "Emp": 116, "CodCIA": 3475277, "Observacao": "Falta nota fiscal do fornecedor", "Usuario": 1, "CIA_CodUserDe": 1, "CIA_CodUserPara": 287, "CIA_Loja": 2009, "CIA_TipoMovimento": 5213, "CIA_Documento": 1, "CIA_Assunto": "PAGAMENTO FORNECEDOR", "CIA_Historico": "Pagamento referente à nota fiscal 9876", "CIA_Fornecedor": 3075 } ``` **Response:** ```json { "ERR_Codigo": 0, "ERR_Mensagem": "" } ``` **Response (em caso de erro):** ```json { "ERR_Codigo": 1, "ERR_Mensagem": "É necessário incluir uma observação para retornar a CI" } ``` **Propriedades da Resposta:** - `ERR_Codigo` <int> - Código de erro (0 = sucesso, outros valores = erro) - `ERR_Mensagem` <string> - Mensagem de erro ou sucesso ### Aprovar/Reprovar CI **Método:** POST **URL:** `/api/SolicitacaoAutorizacao/Aprovar` **Descrição:** Usado tanto para aprovar quanto para reprovar a solicitação. **Parâmetros:** - `Emp` <int32> - Código da empresa - `Loja` <int32> - Código da loja - `Usuario` <int32> - Código do usuário - `CodCIA` <int32> - Código da CI - `Aprova` <int32> - 0 para Reprovar, 1 para Aprovar - `CIA_CodUserDe` <int32> - Código do usuário que está aprovando - `CIA_CodUserPara` <int32> - Código do usuário destinatário - `CIA_Loja` <int32> - Código da loja - `CIA_Status` <int32> - Status da CI - `CIA_TipoMovimento` <int32> - Código do tipo de movimento - `CIA_Documento` <int32> - Número do documento - `CIA_Assunto` <string> - Assunto da CI - `CIA_Equipe` <int32> - Código da equipe - `CIA_PeriodoMes` <int32> - Mês do período - `CIA_PeriodoAno` <int32> - Ano do período - `CIA_Origem` <int32> - Código da origem - `CIA_Historico` <string> - Histórico da CI - `CIA_Fornecedor` <int32> - Código do fornecedor - `TMP_DebCre` <string> - Tipo do movimento (D/C) - `Observacao` <string> - Observação da aprovação/reprovação - `Vencimentos` <string> - Datas de vencimento das parcelas - `ValoresParcelas` <string> - Valores das parcelas **Exemplo Request (Aprovação):** ```json { "Emp": 116, "Loja": 2009, "Usuario": 1, "CodCIA": 3475277, "Aprova": 1, "CIA_CodUserDe": 1, "CIA_CodUserPara": 287, "CIA_Loja": 2009, "CIA_Status": 0, "CIA_TipoMovimento": 5213, "CIA_Documento": 1, "CIA_Assunto": "PAGAMENTO FORNECEDOR", "CIA_Equipe": 0, "CIA_PeriodoMes": 0, "CIA_PeriodoAno": 0, "CIA_Origem": 0, "CIA_Historico": "Pagamento referente à nota fiscal 9876", "CIA_Fornecedor": 3075, "TMP_DebCre": "D", "Observacao": "Aprovado - Pagamento autorizado", "Vencimentos": "18/12/2024", "ValoresParcelas": "5000.00" } ``` **Exemplo Request (Reprovação):** ```json { "Emp": 116, "Loja": 2009, "Usuario": 1, "CodCIA": 3475277, "Aprova": 0, "CIA_CodUserDe": 1, "CIA_CodUserPara": 287, "CIA_Loja": 2009, "CIA_Status": 0, "CIA_TipoMovimento": 5213, "CIA_Documento": 1, "CIA_Assunto": "PAGAMENTO FORNECEDOR", "CIA_Equipe": 0, "CIA_PeriodoMes": 0, "CIA_PeriodoAno": 0, "CIA_Origem": 0, "CIA_Historico": "Pagamento referente à nota fiscal 9876", "CIA_Fornecedor": 3075, "TMP_DebCre": "D", "Observacao": "Reprovado - Falta documentação completa", "Vencimentos": "18/12/2024", "ValoresParcelas": "5000.00" } ``` **Response:** ```json { "ERR_Codigo": 0, "ERR_Mensagem": "" } ``` **Response (em caso de erro na reprovação):** ```json { "ERR_Codigo": 1, "ERR_Mensagem": "É necessário incluir uma observação para reprovar a CI" } ``` **Propriedades da Resposta:** - `ERR_Codigo` <int> - Código de erro (0 = sucesso, outros valores = erro) - `ERR_Mensagem` <string> - Mensagem de erro ou sucesso :::warning Observações - CI só pode ser reprovada se tiver uma observação. - CI é desbloqueada automaticamente se o usuário fechar a tela sem ação. - A mesma CI pode ser retornada para outro usuário, dependendo do fluxo interno. - O sistema permite alterar o grupo de contas e tipo de movimento mesmo após o cadastro inicial. - O sistema mantém um histórico completo de todas as observações e ações realizadas. - Os valores das parcelas são exibidos com 2 casas decimais. - Quando uma CI é retornada ou já foi processada, os botões de aprovar e reprovar são automaticamente desabilitados. ::: # Gerenciamento de Montagem/AT :::info Descrição Sistema integrado para gerenciamento completo de serviços pós-venda, abrangendo três módulos principais que trabalham de forma integrada: ### 1. Gerenciamento de Montagem - Acompanhamento de montagens por ambiente - Registro de ocorrências durante a montagem - Controle de prazos e responsáveis - Geração de ficha de montagem ### 2. AT de Serviço - Gestão de assistência técnica para serviços - Registro de ocorrências de assistência - Controle de tipos de serviço e valores - Atribuição de responsáveis ### 3. AT de Produto - Gestão de assistência técnica para produtos - Integração com fornecedores - Controle de custos e dimensões - Geração automática de pedidos ::: ## Fluxo no APP 1. Acessar o menu `Gerenciamento de Montagem/AT`. ### Gerenciamento de Montagem (`TipoCliente = 0`) 1. Visualizar lista de clientes com montagem 2. Selecionar ambiente do cliente 3. Registrar ocorrências de montagem: - Visualizar ocorrências - Criar nova ocorrência (serviço ou produto) - Inserir observações - Finalizar ocorrência (com ou sem pendência) - Gerar ficha - Acessar arquivos do ambiente ### AT de Serviço 1. Alternar para modo AT (`TipoCliente = 1`) 2. Selecionar cliente/ambiente 3. Criar nova ocorrência tipo "Serviço": - Selecionar tipo de serviço - Registrar observações 4. Acompanhar e finalizar serviço ### AT de Produto 1. Alternar para modo AT (`TipoCliente = 1`) 2. Selecionar cliente/ambiente 3. Criar nova ocorrência tipo "Produto": - Escolher fornecedor e linha - Buscar produto - Informar quantidades - Selecionar tipo de AT: - AT sem Custo (código 4) - AT com Custo (código 5) - AT venda Cliente (código 15) 4. Definir responsável e observações ## Endpoints Utilizados ### Listar Clientes **Método:** POST **URL:** `/api/GerenciamentoMontagem` **Descrição:** Lista clientes, com ou sem montagem, para o gerenciamento do Pós-Venda. **Parâmetros:** - `Emp` <int32> - Código da empresa - `EmpPadrao` <int32> - Código da empresa padrão - `Usuario` <int32> - Código do usuário - `Loja` <int32> - Código da loja - `MesMinimo` <int32> - Período em meses para retornar os dados - `TipoStatus` <int32> - Tipo do status (-1=Todos, 0=Com montagem, 1=Sem montagem) - `TipoCliente` <int32> - Tipo do cliente (-1=Todos, 0=Montagem, 1=AT) - `Status` <int32> - Status (-1=Todos, 0=Em aberto, 1=Terminadas) - `Campo` <string, ==opcional==> - Campo para busca - `Busca` <string, ==opcional==> - Conteúdo da busca - `VersaoMobile` <string> - Versão do aplicativo **Exemplo:** ```json { "Emp": 116, "EmpPadrao": 116, "Usuario": 1, "Loja": 2009, "MesMinimo": 3, "TipoStatus": -1, "TipoCliente": 0, "Status": 0, "Campo": "", "Busca": "", "VersaoMobile": "1.4.1" } ``` **Response (Exemplo):** ```json [ { "TM1_Ambientes": "5", "TM1_AtrasoOcorrenciaPedido": "5", "TM1_BaixaMontagem": "08/12/2016 00:00", "TM1_CodCliente": "2101", "TM1_CodGrupo": "2", "TM1_Contrato": "200901996", "TM1_DataCadOcorrencia": "21/08/2017 13:25", "TM1_DiasAtrasos": "547", "TM1_Emp": "116", "TM1_Loja": "2009", "TM1_NomeCliente": "PAULO DA SILVA COSTA", "TM1_OcorrenciaStatus": "0", "TM1_QtdeDiasUltimoPedido": "291", "TM1_TipoIcone": "1", "TM1_TipoStatusCliente": null, "TM1_QtdeOcorrenciaAtrasadoPedido": "1", "TM1_ParametroDiasAtraso": "30", "TM1_HabilitaPesquisa": "S", "TM1_MAX_AtFinalizadaData": "15/08/2017 00:00", "ERR_Codigo": 0, "ERR_Mensagem": "" } ] ``` **Propriedades da Resposta (por item da lista):** - `TM1_Ambientes` <string> - Número de ambientes. - `TM1_AtrasoOcorrenciaPedido` <string> - Dias de atraso da ocorrência do pedido. - `TM1_BaixaMontagem` <string> - Data da baixa da montagem (formato dd/MM/yyyy HH:mm). - `TM1_CodCliente` <string> - Código do cliente. - `TM1_CodGrupo` <string> - Código do grupo. - `TM1_Contrato` <string> - Número do contrato. - `TM1_DataCadOcorrencia` <string> - Data de cadastro da ocorrência (formato dd/MM/yyyy HH:mm). - `TM1_DiasAtrasos` <string> - Total de dias em atraso. - `TM1_Emp` <string> - Código da empresa. - `TM1_Loja` <string> - Código da loja. - `TM1_NomeCliente` <string> - Nome do cliente. - `TM1_OcorrenciaStatus` <string> - Status da ocorrência. - `TM1_QtdeDiasUltimoPedido` <string> - Quantidade de dias desde o último pedido. - `TM1_TipoIcone` <string> - Tipo de ícone para exibição. - `TM1_TipoStatusCliente` <object> - Tipo de status do cliente (o tipo exato pode variar, string ou numérico). - `TM1_QtdeOcorrenciaAtrasadoPedido` <string> - Quantidade de ocorrências de pedido atrasado. - `TM1_ParametroDiasAtraso` <string> - Parâmetro de dias para considerar atraso. - `TM1_HabilitaPesquisa` <string> - Indica se a pesquisa está habilitada ("S" ou "N"). - `TM1_MAX_AtFinalizadaData` <string> - Data máxima de finalização de AT (formato dd/MM/yyyy HH:mm). - `ERR_Codigo` <int> - Código de erro (0 = sucesso). - `ERR_Mensagem` <string> - Mensagem de erro (vazio se sucesso). ### Listar Ambientes **Método:** POST **URL:** `/api/GerenciamentoMontagemAmbiente` **Descrição:** Retorna os ambientes e ocorrências do cliente selecionado. **Parâmetros:** - `Emp` <int32> - Código da empresa - `Usuario` <int32> - Código do usuário - `Loja` <int32> - Código da loja - `Cliente` <int32> - Código do cliente - `Contrato` <int32> - Número do contrato - `Ambientes` <string> - Códigos dos ambientes **Exemplo:** ```json { "Emp": 116, "Usuario": 1, "Loja": 2009, "Cliente": 12345, "Contrato": 67890, "Ambientes": "AA,AB" } ``` **Response (Exemplo de um item da lista):** ```json [ { "TM2_Ordem": "1", "TM2_Emp": "116", "TM2_Loja": "2009", "TM2_Cliente": "1977", "TM2_Contrato": "200901857", "TM2_OpcaoLetra": "AE", "TM2_Opcao": "AE - COZINHA", "TM2_DataFinalizado": "", "TM2_ValorAvista": "15000.00", "TM2_TipoMontagem": "1", "TM2_DataInicioMontagem": "12/04/2018 08:00", "TM2_DataTerminoMontagem": "12/04/2018 10:00", "TM2_DataPrevistaMontagem": "12/04/2018 10:00", "TM2_ID": "336765", "TM2_NumOcorrencia": "1", "TM2_UserCadastro": "1", "TM2_DataCadastro": "19/03/2018 12:16", "TM2_Servico": "-1", "TM2_Observacao": "Não houve observação.", "TM2_Status": "0", "TM2_TipoResponsavel": "1", "TM2_CodUserResponsavelAt": "10", "TM2_TipoCliente": "0", "TM2_NomeCliente": "RENATINHO", "TM2_CliEntFone1": "999732545", "TM2_CliEndereco": "RUA TITANIA", "TM2_DescricaoProduto": "Base superior de armário", "TM2_NomeCadastro": "Silvio Santarosa", "TM2_UserResponsavelAt": "VAPT E VUPT", "TM2_Fornecedor": "HERVAL COLCHÕES", "TM2_Linha": "CABEÇEIRA", "TM2_NumPedido": "0", "TM2_QtdeProduto": "1.00", "TM2_AmbienteReferencia": "AI", "ERR_Codigo": 0, "ERR_Mensagem": "" } ] ``` **Propriedades da Resposta (por item da lista):** - `TM2_Ordem` <string> - Ordem de exibição. - `TM2_Emp` <string> - Código da empresa. - `TM2_Loja` <string> - Código da loja. - `TM2_Cliente` <string> - Código do cliente. - `TM2_Contrato` <string> - Número do contrato. - `TM2_OpcaoLetra` <string> - Letra da opção/ambiente (ex: "AA"). - `TM2_Opcao` <string> - Código e descrição do ambiente (ex: "AA - SALA"). - `TM2_DataFinalizado` <string> - Data de finalização do ambiente/ocorrência. - `TM2_ValorAvista` <string> - Valor à vista do projeto/ambiente. - `TM2_DataTerminoEmpresa` <string> - Data de término pela empresa. - `TM2_TipoAt` <string> - Tipo de AT. - `TM2_FinalizadoPor` <string> - Código do usuário que finalizou. - `TM2_UserTerminoEmpresa` <string> - Código do usuário que deu término pela empresa. - `TM2_FinalizadoPorNome` <string> - Nome do usuário que finalizou. - `TM2_UserTerminoEmpresaNome` <string> - Nome do usuário que deu término pela empresa. - `TM2_TipoMontagem` <string> - Código do tipo de montagem. - `TM2_DataInicioMontagem` <string> - Data de início da montagem. - `TM2_DataTerminoMontagem` <string> - Data de término da montagem. - `TM2_DataBaixaMontagem` <string> - Data da baixa da montagem. - `TM2_DataPrevistaMontagem` <string> - Data prevista para montagem. - `TM2_MontagemTSistema` <string> - Data de montagem (sistema). - `TM2_ID` <string> - ID da ocorrência/ambiente. - `TM2_NumOcorrencia` <string> - Número da ocorrência. - `TM2_UserCadastro` <string> - Código do usuário que cadastrou. - `TM2_DataCadastro` <string> - Data de cadastro. - `TM2_Servico` <string> - Código do serviço. - `TM2_ServicoValor` <string> - Valor do serviço. - `TM2_Observacao` <string> - Observações gerais. - `TM2_Status` <string> - Status da ocorrência/ambiente. - `TM2_EnviaCI` <string> - Indica se envia CI. - `TM2_ObservacaoHTML` <string> - Observações em HTML. - `TM2_TipoResponsavel` <string> - Código do tipo de responsável. - `TM2_CodUserResponsavelAt` <string> - Código do usuário responsável pela AT. - `TM2_TipoCliente` <string> - Tipo de cliente (0=Montagem, 1=AT). - `TM2_DesativadoData` <string> - Data de desativação. - `TM2_DesativadoPor` <string> - Código do usuário que desativou. - `TM2_DesativadoMotivo` <string> - Motivo da desativação. - `TM2_TipoFinalizacao` <string> - Tipo de finalização. - `TM2_NomeCliente` <string> - Nome do cliente. - `TM2_CliCgcCpf` <string> - CPF/CNPJ do cliente. - `TM2_CliInscRG` <string> - RG/IE do cliente. - `TM2_CliEntFone1` <string> - Telefone 1 do cliente. - `TM2_CliEntFone2` <string> - Telefone 2 do cliente. - `TM2_CliEmail` <string> - Email do cliente. - `TM2_CliEndereco` <string> - Endereço do cliente. - `TM2_CliBairro` <string> - Bairro do cliente. - `TM2_CliCidade` <string> - Cidade do cliente. - `TM2_CliEstado` <string> - Estado do cliente. - `TM2_CliCep` <string> - CEP do cliente. - `TM2_CliDataCadastro` <string> - Data de cadastro do cliente. - `TM2_ClienteAT` <string> - Indica se é cliente de AT. - `TM2_DescricaoServico` <string> - Descrição do serviço. - `TM2_DescricaoProduto` <string> - Descrição do produto. - `TM2_NomeCadastro` <string> - Nome do usuário de cadastro. - `TM2_DesativadoPorNome` <string> - Nome de quem desativou. - `TM2_UserResponsavelAt` <string> - Nome do usuário responsável pela AT. - `TM2_TooltipComissionados` <string> - Tooltip dos comissionados. - `TM2_Fornecedor` <string> - Nome do fornecedor. - `TM2_Linha` <string> - Nome da linha. - `TM2_NumPedido` <string> - Número do pedido. - `TM2_QtdeOcorrencia` <string> - Quantidade de ocorrências. - `TM2_QtdeProduto` <string> - Quantidade de produto. - `TM2_CodFornecedor` <string> - Código do fornecedor. - `TM2_CodLinha` <string> - Código da linha. - `TM2_QtdeOcorrenciaFinalizada` <string> - Quantidade de ocorrências finalizadas. - `TM2_AmbienteReferencia` <string> - Código do ambiente de referência. - `T_PTI_DataInicio` <string> - Data de início (programação técnica). - `T_PMO_ProgramacaoAT` <string> - Código da programação de AT. - `T_PTI_Tecnico` <string> - Código do técnico. - `TM2_PRO_DataRomaneio` <string> - Data do romaneio. - `TM2_AtrasoOcorrenciaPedido` <string> - Atraso da ocorrência do pedido. - `TM2_CancelarAmbienteReferencia` <string> - Flag para cancelar ambiente de referência. - `TM2_AmbienteReferenciaDescricao` <string> - Descrição do ambiente de referência. - `TM2_AmbienteReferencia_PRO_EnviadoFabrica` <string> - Data de envio à fábrica do ambiente de referência. - `TM2_AmbienteReferencia_PRO_DataStartLiberacao` <string> - Data de início da liberação do ambiente de referência. - `TM2_AmbienteReferencia_PRO_DataFimLiberacao` <string> - Data de fim da liberação do ambiente de referência. - `TM2_AmbienteReferencia_PRO_Pontuacao` <string> - Pontuação do ambiente de referência. - `TM2_AmbienteReferencia_PRO_T012_Tabela_Preco` <string> - Tabela de preço do ambiente de referência. - `TM2_AmbienteReferencia_PRO_DataFIN` <string> - Data FIN do ambiente de referência. - `TM2_AmbienteReferencia_PRO_Fornecedor` <string> - Código do fornecedor do ambiente de referência. - `TM2_AmbienteReferencia_PRO_Linha` <string> - Código da linha do ambiente de referência. - `TM2_Tabela_Preco` <string> - Tabela de preço. - `TM2_FornecedorFabricante_eFinance` <string> - Indicador de fornecedor fabricante eFinance. - `ERR_Codigo` <int> - Código de erro (0 = sucesso). - `ERR_Mensagem` <string> - Mensagem de erro (vazio se sucesso). ### Listar Tipos de Serviço **Método:** POST **URL:** `/api/GerenciamentoMontagem/TipoServico` **Descrição:** Lista os tipos de serviço disponíveis. **Parâmetros:** - `Emp` <int32> - Código da empresa - `Usuario` <int32> - Código do usuário - `Loja` <int32> - Código da loja **Exemplo:** ```json { "Emp": 116, "Usuario": 1, "Loja": 2009 } ``` **Response (Exemplo):** ```json [ { "TPS_Codigo": "101", "TPS_Descricao": "AJUSTE DE PORTA", "TPS_ValorMinimo": "50.00", "ERR_Codigo": 0, "ERR_Mensagem": "" }, { "TPS_Codigo": "102", "TPS_Descricao": "TROCA DE PUXADOR", "TPS_ValorMinimo": "30.00", "ERR_Codigo": 0, "ERR_Mensagem": "" } ] ``` **Propriedades da Resposta (por item da lista):** - `TPS_Codigo` <string> - Código do tipo de serviço. - `TPS_Descricao` <string> - Descrição do tipo de serviço. - `TPS_ValorMinimo` <string> - Valor mínimo associado ao serviço (pode ser string representando decimal). - `ERR_Codigo` <int> - Código de erro (0 = sucesso). - `ERR_Mensagem` <string> - Mensagem de erro (vazio se sucesso). ### Listar Fornecedores **Método:** POST **URL:** `/api/GerenciamentoMontagem/Fornecedor` **Descrição:** Lista fornecedores para AT. **Parâmetros:** - `Emp` <int32> - Código da empresa - `Usuario` <int32> - Código do usuário - `Loja` <int32> - Código da loja - `TipoAT` <int32> - Tipo de AT (4=Sem Custo, 5=Com Custo, 15=Venda Cliente) **Exemplo:** ```json { "Emp": 116, "Usuario": 1, "Loja": 2009, "TipoAT": 4 } ``` **Response (Exemplo):** ```json [ { "FOR_Codigo": "123", "FOR_Nome": "DELLAVITA COZINHAS E PLANEJADOS", "FOR_TMS_Codigo": null, "FOR_TMP_Codigo": null, "FOR_Fabricante": "1", "HabilitaCadastro": "1", "ERR_Codigo": 0, "ERR_Mensagem": "" }, { "FOR_Codigo": "456", "FOR_Nome": "ITALINEA MOVEIS", "FOR_TMS_Codigo": "10", "FOR_TMP_Codigo": "101", "FOR_Fabricante": "2", "HabilitaCadastro": "0", "ERR_Codigo": 0, "ERR_Mensagem": "" } ] ``` **Propriedades da Resposta (por item da lista):** - `FOR_Codigo` <string> - Código do fornecedor. - `FOR_Nome` <string> - Nome/razão social do fornecedor. - `FOR_TMS_Codigo` <string> - Código do subgrupo de contas (pode ser nulo). - `FOR_TMP_Codigo` <string> - Código do tipo de movimento/despesa (pode ser nulo). - `FOR_Fabricante` <string> - Código do fabricante associado. - `HabilitaCadastro` <string> - Indica se o cadastro de linhas para este fornecedor está habilitado/restrito ("1" para habilitado/sem restrição, "0" para restrito). - `ERR_Codigo` <int> - Código de erro (0 = sucesso). - `ERR_Mensagem` <string> - Mensagem de erro (vazio se sucesso). ### Listar Linhas **Método:** POST **URL:** `/api/GerenciamentoMontagem/Linha` **Descrição:** Lista linhas do fornecedor selecionado. **Parâmetros:** - `Emp` <string> - Código da empresa - `Loja` <string> - Código da loja - `Fornecedor` <string> - Código do fornecedor - `TipoAT` <string> - Tipo de AT **Exemplo:** ```json { "Emp": "116", "Loja": "2009", "Fornecedor": "123", "TipoAT": "4" } ``` **Response (Exemplo):** ```json [ { "Codigo": "4561", "Descricao": "LINHA PREMIUM COZINHAS", "LSI_Fornecedor": "123", "ERR_Codigo": 0, "ERR_Mensagem": "" }, { "Codigo": "4562", "Descricao": "LINHA STANDARD SALAS", "LSI_Fornecedor": "123", "ERR_Codigo": 0, "ERR_Mensagem": "" } ] ``` **Propriedades da Resposta (por item da lista):** - `Codigo` <string> - Código da linha. - `Descricao` <string> - Descrição da linha (pode incluir nome do fornecedor dependendo da lógica interna da API). - `LSI_Fornecedor` <string> - Código do fornecedor ao qual a linha pertence. - `ERR_Codigo` <int> - Código de erro (0 = sucesso). - `ERR_Mensagem` <string> - Mensagem de erro (vazio se sucesso). ### Buscar Produtos **Método:** POST **URL:** `/api/GerenciamentoMontagem/Produto` **Descrição:** Busca produtos do fornecedor/linha selecionados. **Parâmetros:** - `Emp` <string> - Código da empresa - `Loja` <string> - Código da loja - `Linha` <string> - Código da linha - `Fornecedor` <string> - Código do fornecedor - `Busca` <string, ==opcional==> - Termo para busca - `TipoAT` <string> - Tipo de AT **Exemplo:** ```json { "Emp": "116", "Loja": "2009", "Linha": "456", "Fornecedor": "123", "Busca": "mesa", "TipoAT": "4" } ``` **Response (Exemplo):** ```json [ { "Codigo": "PROD001", "Descricao": "MESA DE JANTAR 4 LUGARES", "FOR_Nome": "DELLAVITA COZINHAS E PLANEJADOS", "LSI_Descricao": "LINHA PREMIUM COZINHAS", "PRC_Descricao": "MESA DE JANTAR 4 LUGARES", "PRC_Fornecedor": "123", "PRC_Linha": "4561", "PRC_CodComercial": "PROD001COM", "PRC_CodFabricante": "FAB001XYZ", "Unidade": "UN", "ValorUnitario": "799.90", "ERR_Codigo": 0, "ERR_Mensagem": "" }, { "Codigo": "PROD002", "Descricao": "CADEIRA ESTOFADA", "FOR_Nome": "DELLAVITA COZINHAS E PLANEJADOS", "LSI_Descricao": "LINHA PREMIUM COZINHAS", "PRC_Descricao": "CADEIRA ESTOFADA COM BRAÇO", "PRC_Fornecedor": "123", "PRC_Linha": "4561", "PRC_CodComercial": "PROD002COM", "PRC_CodFabricante": "FAB002ABC", "Unidade": "PC", "ValorUnitario": "250.00", "ERR_Codigo": 0, "ERR_Mensagem": "" } ] ``` **Propriedades da Resposta (por item da lista):** - `Codigo` <string> - Código principal do produto/item. - `Descricao` <string> - Descrição geral do produto/item. - `FOR_Nome` <string> - Nome do fornecedor associado. - `LSI_Descricao` <string> - Descrição da linha do produto. - `PRC_Descricao` <string> - Descrição específica do produto (pode ser igual a `Descricao`). - `PRC_Fornecedor` <string> - Código do fornecedor do produto. - `PRC_Linha` <string> - Código da linha do produto. - `PRC_CodComercial` <string> - Código comercial do produto. - `PRC_CodFabricante` <string> - Código do produto no fabricante. - `Unidade` <string> - Unidade de medida do produto (ex: "UN", "PC", "M2"). - `ValorUnitario` <string> - Valor unitário do produto (string representando decimal). - `ERR_Codigo` <int> - Código de erro (0 = sucesso). - `ERR_Mensagem` <string> - Mensagem de erro (vazio se sucesso). ### Listar Tipos de AT **Método:** POST **URL:** `/api/GerenciamentoMontagem/TipoAT` **Descrição:** Retorna tipos de AT disponíveis. **Parâmetros:** - `Emp` <string> - Código da empresa - `Loja` <string> - Código da loja **Exemplo:** ```json { "Emp": "116", "Loja": "2009" } ``` **Response (Exemplo):** ```json [ { "Codigo": "4", "Descricao": "AT SEM CUSTO", "ERR_Codigo": 0, "ERR_Mensagem": "" }, { "Codigo": "5", "Descricao": "AT COM CUSTO", "ERR_Codigo": 0, "ERR_Mensagem": "" }, { "Codigo": "15", "Descricao": "AT VENDA CLIENTE", "ERR_Codigo": 0, "ERR_Mensagem": "" } ] ``` **Propriedades da Resposta (por item da lista):** - `Codigo` <string> - Código do Tipo de AT. - `Descricao` <string> - Descrição do Tipo de AT. - `ERR_Codigo` <int> - Código de erro (0 = sucesso). - `ERR_Mensagem` <string> - Mensagem de erro (vazio se sucesso). ### Listar Usuários Responsáveis **Método:** POST **URL:** `/api/GerenciamentoMontagem/UsuarioResponsavel` **Descrição:** Lista responsáveis disponíveis. **Parâmetros:** - `Emp` <string> - Código da empresa - `Loja` <string> - Código da loja - `TipoResponsavel` <string> - Tipo do responsável **Exemplo:** ```json { "Emp": "116", "Loja": "2009", "TipoResponsavel": "1" } ``` **Response (Exemplo):** ```json [ { "TM1_CodIdentity": "USER_1", "TM1_NomeCompleto": "Silvio Santarosa", "TM1_Codigo": "1", "TM1_Emp": "116", "TM1_Cargo": "10", "TM1_Equipe": "1", "TM1_Desativado": "0", "TM1_DescricaoCargo": "VENDEDOR", "ERR_Codigo": 0, "ERR_Mensagem": "" }, { "TM1_CodIdentity": "CARGO_5", "TM1_NomeCompleto": "MONTADOR", "TM1_Codigo": "5", "TM1_Emp": "116", "TM1_Cargo": "5", "TM1_Equipe": "0", "TM1_Desativado": "0", "TM1_DescricaoCargo": "MONTADOR", "ERR_Codigo": 0, "ERR_Mensagem": "" }, { "TM1_CodIdentity": "EQUIPE_3", "TM1_NomeCompleto": "EQUIPE AZUL", "TM1_Codigo": "3", "TM1_Emp": "116", "TM1_Cargo": "0", "TM1_Equipe": "3", "TM1_Desativado": "0", "TM1_DescricaoCargo": "EQUIPE DE MONTAGEM", "ERR_Codigo": 0, "ERR_Mensagem": "" } ] ``` **Propriedades da Resposta (por item da lista):** - `TM1_CodIdentity` <string> - Identificador único do responsável na lista (pode ser uma combinação de tipo e código). - `TM1_NomeCompleto` <string> - Nome completo do usuário, cargo ou equipe (pode conter formatação HTML se vier da SP com status). - `TM1_Codigo` <string> - Código do usuário, cargo ou equipe. - `TM1_Emp` <string> - Código da empresa. - `TM1_Cargo` <string> - Código do cargo (se aplicável). - `TM1_Equipe` <string> - Código da equipe (se aplicável). - `TM1_Desativado` <string> - Indica se o responsável está desativado ("1" para desativado, "0" para ativo). - `TM1_DescricaoCargo` <string> - Descrição do cargo (pode ser o nome da equipe ou "Empresa", "Transporte" etc., dependendo do tipo de responsável). - `ERR_Codigo` <int> - Código de erro (0 = sucesso). - `ERR_Mensagem` <string> - Mensagem de erro (vazio se sucesso). ### Salvar Nova Ocorrência **Método:** POST **URL:** `/api/GerenciamentoMontagem/SalvaNovaOcorrencia` **Descrição:** Registra uma nova ocorrência de montagem ou AT. **Parâmetros:** - `Emp` <string> - Código da empresa - `Loja` <string> - Código da loja - `Cliente` <string> - Código do cliente - `Contrato` <string> - Número do contrato - `Ambiente` <string> - Código do ambiente - `TipoOcorrencia` <int32> - Tipo da ocorrência (1=Serviço, 2=Produto) - `Fornecedor` <string, ==opcional==> - Código do fornecedor - `Linha` <string, ==opcional==> - Código da linha - `Produto` <string, ==opcional==> - Código do produto - `ProdutoDescricao` <string, ==opcional==> - Descrição do produto - `Quantidade` <int32> - Quantidade - `TipoAT` <int32, ==opcional==> - Tipo de AT - `Altura` <decimal, ==opcional==> - Altura do produto - `Largura` <decimal, ==opcional==> - Largura do produto - `Profundidade` <decimal, ==opcional==> - Profundidade do produto - `ValorUnitario` <decimal, ==opcional==> - Valor unitário - `Observacao` <string, ==opcional==> - Observações - `UsuarioResponsavel` <int32> - Código do usuário responsável **Exemplo:** ```json { "Emp": "116", "Loja": "2009", "Cliente": "12345", "Contrato": "67890", "Ambiente": "AA", "TipoOcorrencia": 1, "Observacao": "Instalação de móveis", "UsuarioResponsavel": 1 } ``` **Response (Sucesso):** ```json { "ERR_Codigo": 0, "ERR_Mensagem": "" } ``` **Response (Erro):** ```json { "ERR_Codigo": 1, "ERR_Mensagem": "Falha ao salvar ocorrência: [descrição do erro]" } ``` **Propriedades da Resposta:** - `ERR_Codigo` <int> - Código de erro (0 = sucesso, outros valores = erro). - `ERR_Mensagem` <string> - Mensagem de erro ou sucesso. ### Salvar Observação **Método:** POST **URL:** `/api/GerenciamentoMontagem/SalvaObservacao` **Descrição:** Adiciona uma observação a uma ocorrência. **Parâmetros:** - `Emp` <string> - Código da empresa - `Usuario` <string> - Código do usuário - `Loja` <string> - Código da loja - `Cliente` <string> - Código do cliente - `Contrato` <string> - Número do contrato - `Ambiente` <string> - Código do ambiente - `IdOcorrencia` <string> - ID da ocorrência - `Observacao` <string> - Texto da observação **Exemplo:** ```json { "Emp": "116", "Usuario": "1", "Loja": "2009", "Cliente": "12345", "Contrato": "67890", "Ambiente": "AA", "IdOcorrencia": "123", "Observacao": "Serviço concluído com sucesso" } ``` **Response (Sucesso):** ```json { "ERR_Codigo": 0, "ERR_Mensagem": "" } ``` **Response (Erro):** ```json { "ERR_Codigo": 1, "ERR_Mensagem": "Falha ao salvar observação: [descrição do erro]" } ``` **Propriedades da Resposta:** - `ERR_Codigo` <int> - Código de erro (0 = sucesso, outros valores = erro). - `ERR_Mensagem` <string> - Mensagem de erro ou sucesso. ### Finalizar Ocorrência **Método:** POST **URL:** `/api/GerenciamentoMontagem/FinalizaOcorrencia` **Descrição:** Finaliza uma ocorrência de montagem ou AT. **Parâmetros:** - `Emp` <string> - Código da empresa - `Loja` <string> - Código da loja - `Usuario` <string> - Código do usuário - `Cliente` <string> - Código do cliente - `Contrato` <string> - Número do contrato - `Ambiente` <string> - Código do ambiente - `codOcorrencia` <string> - ID da ocorrência - `ComPendencia` <boolean> - Se finaliza com pendência - `Observacao` <string> - Observação de finalização **Exemplo:** ```json { "Emp": "116", "Loja": "2009", "Usuario": "1", "Cliente": "12345", "Contrato": "67890", "Ambiente": "AA", "codOcorrencia": "123", "ComPendencia": false, "Observacao": "Montagem finalizada" } ``` **Response (Sucesso):** ```json { "ERR_Codigo": 0, "ERR_Mensagem": "" } ``` **Response (Erro):** ```json { "ERR_Codigo": 1, "ERR_Mensagem": "Falha ao finalizar ocorrência: [descrição do erro]" } ``` **Propriedades da Resposta:** - `ERR_Codigo` <int> - Código de erro (0 = sucesso, outros valores = erro). - `ERR_Mensagem` <string> - Mensagem de erro ou sucesso. :::warning Observações ### Gerenciamento de Montagem - Agrupamento de ocorrências é feito por ambiente - Possibilidade de anexar fotos durante o processo - Geração de ficha com histórico completo ### AT de Serviço - Valores de serviço podem ser fixos ou variáveis - Responsável pode ser usuário, cargo ou equipe - Permite finalização parcial com pendências ### AT de Produto - Para fabricantes integrados, pedido é gerado automaticamente - AT com custo permite compra parcial de itens - AT sem custo tem custos atribuídos ao fabricante - AT com custo (prioritária) permite compra de itens completos com acréscimo de 50% - Dimensões e valores são obrigatórios para alguns tipos de AT ::: # Arquivos de Projetos :::info Descrição Sistema integrado para gerenciamento de arquivos relacionados aos projetos dos clientes, com armazenamento em nuvem (Azure Storage). Permite visualizar, fazer upload e gerenciar arquivos por cliente, contrato e ambiente. ::: ## Fluxo no APP 1. Acessar menu de `Arquivos de Projetos` 2. Visualizar lista de clientes com projetos - Filtros disponíveis por período e busca por nome - Indicadores visuais de arquivos por pasta 3. Ao selecionar um cliente: - Ver ambientes do projeto - Acessar arquivos por ambiente - Upload de novos arquivos - Visualização de miniaturas para imagens - Download de arquivos ## Endpoints Utilizados ### Listar Clientes com Projetos **Método:** POST **URL:** `/api/ArquivosClienteProjeto` **Descrição:** Lista os clientes com projetos e arquivos. **Parâmetros:** - `Emp` <int32> - Código da empresa - `EmpPadrao` <int32> - Código da empresa padrão - `Usuario` <int32> - Código do usuário - `Loja` <int32> - Código da loja - `Busca` <string, ==opcional==> - Termo para filtrar resultados - `Campo` <string, ==opcional==> - Campo para filtrar a busca **Exemplo:** ```json { "Emp": 116, "EmpPadrao": 116, "Usuario": 1, "Loja": 2009, "Busca": "Cliente A", "Campo": "CLI_Nome" } ``` **Response (Exemplo):** ```json [ { "CLI_Codigo": 12345, "CLI_Nome": "Cliente A Soluções Digitais", "CLI_Loja": 2009, "UltimoContrato": "200912345", "QtdProjetosComArquivos": 3, "TotalProjetosCliente": 5, "DataUltimaModificacaoArquivo": "2024-07-29T10:30:00", "ERR_Codigo": 0, "ERR_Mensagem": "" }, { "CLI_Codigo": 67890, "CLI_Nome": "Cliente A B C Comércio", "CLI_Loja": 2009, "UltimoContrato": "200967890", "QtdProjetosComArquivos": 0, "TotalProjetosCliente": 1, "DataUltimaModificacaoArquivo": null, "ERR_Codigo": 0, "ERR_Mensagem": "" } ] ``` **Propriedades da Resposta (por item da lista):** - `CLI_Codigo` <int> - Código do cliente. - `CLI_Nome` <string> - Nome/razão social do cliente. - `CLI_Loja` <int> - Código da loja do cliente. - `UltimoContrato` <string> - Número do último contrato ou de um contrato de referência do cliente. - `QtdProjetosComArquivos` <int> - Quantidade de projetos/ambientes do cliente que possuem arquivos associados. - `TotalProjetosCliente` <int> - Quantidade total de projetos/ambientes do cliente. - `DataUltimaModificacaoArquivo` <string> - Data e hora da última modificação em qualquer arquivo do cliente (formato ISO 8601, opcional). - `ERR_Codigo` <int> - Código de erro (0 = sucesso). - `ERR_Mensagem` <string> - Mensagem de erro (vazio se sucesso). ### Listar Ambientes com Arquivos **Método:** POST **URL:** `/api/GerenciamentoMontagemArquivosAmbientes` **Descrição:** Retorna os ambientes do projeto que contêm arquivos. **Parâmetros:** - `Emp` <int32> - Código da empresa - `Usuario` <int32> - Código do usuário - `Loja` <int32> - Código da loja - `Cliente` <string> - Código do cliente - `Contrato` <string> - Número do contrato **Exemplo:** ```json { "Emp": 116, "Usuario": 1, "Loja": 2009, "Cliente": "12345", "Contrato": "67890" } ``` **Response (Exemplo):** ```json [ { "PRO_Opcao": "AA", "PRO_Ambiente": "COZINHA PLANEJADA", "PRO_Contrato": "67890", "QtdArquivosNaPasta": 5, "CaminhoPasta": "Projetos/Cozinha", "ERR_Codigo": 0, "ERR_Mensagem": "" }, { "PRO_Opcao": "AB", "PRO_Ambiente": "SALA DE TV", "PRO_Contrato": "67890", "QtdArquivosNaPasta": 0, "CaminhoPasta": "Projetos/SalaDeTV", "ERR_Codigo": 0, "ERR_Mensagem": "" }, { "PRO_Opcao": "AC", "PRO_Ambiente": "QUARTO CASAL", "PRO_Contrato": "67890", "QtdArquivosNaPasta": 12, "CaminhoPasta": "Projetos/QuartoCasal", "ERR_Codigo": 0, "ERR_Mensagem": "" } ] ``` **Propriedades da Resposta (por item da lista):** - `PRO_Opcao` <string> - Código do ambiente/opção do projeto (ex: "AA", "AB"). - `PRO_Ambiente` <string> - Descrição do ambiente (ex: "COZINHA", "SALA"). - `PRO_Contrato` <string> - Número do contrato ao qual o ambiente pertence. - `QtdArquivosNaPasta` <int> - Quantidade de arquivos encontrados neste ambiente para a `Pasta` (módulo) especificada na requisição. - `CaminhoPasta` <string> - Descrição ou caminho da pasta/módulo onde os arquivos foram contados (informativo, pode ser derivado do parâmetro `Pasta` da requisição). - `ERR_Codigo` <int> - Código de erro (0 = sucesso). - `ERR_Mensagem` <string> - Mensagem de erro (vazio se sucesso). ### Listar Arquivos do Ambiente **Método:** POST **URL:** `/api/GerenciamentoMontagemArquivos` **Descrição:** Retorna a lista de arquivos do ambiente. **Parâmetros:** - `Emp` <int32> - Código da empresa - `Usuario` <int32> - Código do usuário - `Loja` <int32> - Código da loja - `Cliente` <string> - Código do cliente - `Ambientes` <string> - Códigos dos ambientes **Exemplo:** ```json { "Emp": 116, "Usuario": 1, "Loja": 2009, "Cliente": "12345", "Ambientes": "AA" } ``` **Response (Exemplo):** ```json [ { "ARQ_GUID": "guid-arquivo-1", "ARQ_Arquivo_Nome": "Planta Baixa Cozinha", "ARQ_Arquivo_Extencao": ".pdf", "ARQ_DataCadastro": "2024-07-28T14:00:00", "ARQ_Arquivo_DataModificado": "2024-07-29T09:15:00", "USU_Nome": "Silvio Santarosa", "ARQ_Modulo": "6", "ARQ_Categoria": "1", "ARQ_URL": "https://url.do.azure.storage/container/guid-arquivo-1.pdf?token=xyz", "MiniaturaURL": "https://url.do.azure.storage/container/thumbnails/guid-arquivo-1.jpg?token=abc", "TamanhoBytes": 1024576, "ERR_Codigo": 0, "ERR_Mensagem": "" }, { "ARQ_GUID": "guid-arquivo-2", "ARQ_Arquivo_Nome": "Render Final Sala", "ARQ_Arquivo_Extencao": ".jpg", "ARQ_DataCadastro": "2024-07-27T10:00:00", "ARQ_Arquivo_DataModificado": "2024-07-27T10:05:00", "USU_Nome": "Ana Lima", "ARQ_Modulo": "6", "ARQ_Categoria": "2", "ARQ_URL": "https://url.do.azure.storage/container/guid-arquivo-2.jpg?token=123", "MiniaturaURL": "https://url.do.azure.storage/container/thumbnails/guid-arquivo-2.jpg?token=456", "TamanhoBytes": 204800, "ERR_Codigo": 0, "ERR_Mensagem": "" } ] ``` **Propriedades da Resposta (por item da lista):** - `ARQ_GUID` <string> - Identificador único global do arquivo. - `ARQ_Arquivo_Nome` <string> - Nome do arquivo (sem extensão). - `ARQ_Arquivo_Extencao` <string> - Extensão do arquivo (ex: ".pdf", ".jpg"). - `ARQ_DataCadastro` <string> - Data e hora do cadastro do arquivo (formato ISO 8601). - `ARQ_Arquivo_DataModificado` <string> - Data e hora da última modificação do arquivo (formato ISO 8601). - `USU_Nome` <string> - Nome do usuário que cadastrou/modificou o arquivo. - `ARQ_Modulo` <string> - Código do módulo/pasta onde o arquivo está (relacionado ao parâmetro `Pasta` da requisição). - `ARQ_Categoria` <string> - Código da categoria do arquivo. - `ARQ_URL` <string> - URL para download/visualização do arquivo no Azure Storage (gerada pela API com token de acesso temporário). - `MiniaturaURL` <string> - URL para a miniatura da imagem, se aplicável (gerada pela API com token, opcional). - `TamanhoBytes` <int> - Tamanho do arquivo em bytes (obtido da tabela `Advanced_Arquivos` ou do Azure). - `ERR_Codigo` <int> - Código de erro (0 = sucesso). - `ERR_Mensagem` <string> - Mensagem de erro (vazio se sucesso). ### Obter Token Azure **Método:** POST **URL:** `/api/GerenciamentoMontagemGetTokenAzure` **Descrição:** Obtém token para operações no Azure Storage. **Parâmetros:** - `Emp` <int32> - Código da empresa - `Usuario` <int32> - Código do usuário - `Loja` <int32> - Código da loja **Exemplo:** ```json { "Emp": 116, "Usuario": 1, "Loja": 2009 } ``` **Response (Exemplo):** ```json { "AzureStorageToken": "sv=2021-06-08&ss=b&srt=sco&sp=rwdlacup&se=2024-07-30T12:00:00Z&st=2024-07-30T10:00:00Z&spr=https&sig=aBcDeFgHiJkLmNoPqRsTuVwXyZ1234567890AbCdEfG%3D", "AzureStorageBaseUrl": "https://seustorageaccount.blob.core.windows.net/seucontainer/", "TokenExpiry": "2024-07-30T12:00:00Z", "ERR_Codigo": 0, "ERR_Mensagem": "" } ``` **Propriedades da Resposta:** - `AzureStorageToken` <string> - O token SAS (Shared Access Signature) para acesso ao Azure Storage. - `AzureStorageBaseUrl` <string> - A URL base do contêiner no Azure Storage onde os arquivos estão localizados. - `TokenExpiry` <string> - Data e hora de expiração do token (formato ISO 8601 UTC). - `ERR_Codigo` <int> - Código de erro (0 = sucesso). - `ERR_Mensagem` <string> - Mensagem de erro (vazio se sucesso). ### Salvar Arquivo **Método:** POST **URL:** `/api/GerenciamentoMontagemSaveArquivoAzure` **Descrição:** Salva novo arquivo no Azure Storage. **Parâmetros:** - `Emp` <int32> - Código da empresa - `Loja` <int32> - Código da loja - `Usuario` <int32> - Código do usuário - `Guid` <string> - Identificador único do arquivo - `Modulo` <string> - Código do módulo - `Ref1` <string> - Referência 1 (geralmente código do cliente) - `Ref2` <string> - Referência 2 (geralmente código do ambiente) - `Tamanho` <int32> - Tamanho do arquivo em bytes - `Extencao` <string> - Extensão do arquivo - `Descricao` <string, ==opcional==> - Descrição do arquivo - `Categoria` <string, ==opcional==> - Categoria do arquivo - `Origem` <string, ==opcional==> - Origem do arquivo - `NomeArquivo` <string, ==opcional==> - Nome original do arquivo **Exemplo:** ```json { "Emp": 116, "Loja": 2009, "Usuario": 1, "Guid": "novo-guid", "Modulo": "6", "Ref1": "12345", "Ref2": "AA", "Tamanho": 1024, "Extencao": ".jpg", "Descricao": "Foto do ambiente", "NomeArquivo": "foto_ambiente.jpg" } ``` **Response (Sucesso):** ```json { "ERR_Codigo": 0, "ERR_Mensagem": "Arquivo salvo com sucesso.", "ARQ_GUID": "novo-guid" } ``` **Response (Erro):** ```json { "ERR_Codigo": 1, "ERR_Mensagem": "Falha ao salvar arquivo: [descrição do erro]", "ARQ_GUID": null } ``` **Propriedades da Resposta:** - `ERR_Codigo` <int> - Código de erro (0 = sucesso, outros valores = erro). - `ERR_Mensagem` <string> - Mensagem de erro ou sucesso. - `ARQ_GUID` <string> - O GUID do arquivo que foi salvo (em caso de sucesso, nulo em caso de erro). ### Excluir Arquivo **Método:** POST **URL:** `/api/GerenciamentoMontagemDeleteArquivoAzure` **Descrição:** Remove arquivo do Azure Storage. **Parâmetros:** - `Emp` <int32> - Código da empresa - `Loja` <int32> - Código da loja - `Usuario` <int32> - Código do usuário - `Guid` <string> - Identificador único do arquivo **Exemplo:** ```json { "Emp": 116, "Loja": 2009, "Usuario": 1, "Guid": "arquivo-guid" } ``` **Response (Sucesso):** ```json { "ERR_Codigo": 0, "ERR_Mensagem": "Arquivo excluído com sucesso." } ``` **Response (Erro):** ```json { "ERR_Codigo": 1, "ERR_Mensagem": "Falha ao excluir arquivo: [descrição do erro]" } ``` **Propriedades da Resposta:** - `ERR_Codigo` <int> - Código de erro (0 = sucesso, outros valores = erro). - `ERR_Mensagem` <string> - Mensagem de erro ou sucesso. :::warning Observações - Arquivos são armazenados no Azure Storage em containers específicos por empresa/loja - Sistema gera automaticamente miniaturas para arquivos de imagem - Suporte para diversos tipos de arquivo: - Imagens: JPG, PNG, JPEG - Documentos: PDF, DOC, DOCX, XLS, XLSX - Projetos: PROMOB, KIT - Compactados: ZIP, RAR, 7Z - URLs dos arquivos são geradas com token de acesso temporário - Organização hierárquica: Empresa > Loja > Cliente > Ambiente - Integração com módulo de Gerenciamento de Montagem/AT para anexar fotos às ocorrências ::: # Gerenciar Usuários :::info Descrição Sistema para gerenciamento de usuários do aplicativo, permitindo visualizar, bloquear/desbloquear usuários e resetar senhas. O controle é feito por loja e inclui informações como cargo, status e permissões. ::: ## Fluxo no APP 1. Acessar o menu `Gerenciar Usuários` 2. Selecionar a loja desejada 3. Filtrar usuários por: - Campo de busca (personalizado) - Texto da busca 4. Ao selecionar um usuário, é possível: - Visualizar detalhes (nome, cargo, loja) - Bloquear/Desbloquear acesso - Resetar senha --- ## Endpoints Utilizados ### Listar Usuários **Método:** POST **URL:** `/api/Users` **Descrição:** Lista os usuários cadastrados. **Parâmetros:** - `Emp` <int32> - Código da empresa - `Loja` <int32> - Código da loja - `Usuario` <int32> - Código do usuário - `Status` <int32> - Status (-1=Todos, 0=Ativos, 1=Inativos) - `Campo` <string, ==opcional==> - Campo para filtrar a busca - `Busca` <string, ==opcional==> - Texto para busca **Exemplo:** ```json { "Emp": 116, "Loja": 2009, "Usuario": 1, "Status": -1, "Campo": "", "Busca": "" } ``` **Response (Exemplo):** ```json [ { "ERR_Codigo": 0, "ERR_Mensagem": "", "Codigo": 1, "Nome": "Silvio Santarosa", "Login": "santarosa", "Cargo": "GERENTE COMERCIAL", "Loja": "Matriz SP", "Status": "Ativo", "Email": "s.santarosa@email.com", "Bloqueado": false }, { "ERR_Codigo": 0, "ERR_Mensagem": "", "Codigo": 287, "Nome": "Danielle Silva", "Login": "dani", "Cargo": "ANALISTA FINANCEIRO", "Loja": "Filial RJ", "Status": "Ativo", "Email": "dani.silva@email.com", "Bloqueado": true }, { "ERR_Codigo": 0, "ERR_Mensagem": "", "Codigo": 500, "Nome": "Usuario Inativo Teste", "Login": "inativo.teste", "Cargo": "VENDEDOR", "Loja": "Matriz SP", "Status": "Inativo", "Email": "inativo@email.com", "Bloqueado": false } ] ``` **Propriedades da Resposta (por item da lista, baseado na Model Users.vb):** - `ERR_Codigo` <int> - Código de erro (0 = sucesso). - `ERR_Mensagem` <string> - Mensagem de erro (vazio se sucesso). - `Codigo` <int> - Código interno do usuário. - `Nome` <string> - Nome completo do usuário. - `Login` <string> - Login de acesso do usuário. - `Cargo` <string> - Descrição do cargo do usuário. - `Loja` <string> - Nome/apelido da loja à qual o usuário está vinculado. - `Status` <string> - Descrição do status do usuário (ex: "Ativo", "Inativo"). - `Email` <string> - Endereço de e-mail do usuário. - `Bloqueado` <boolean> - Indica se o usuário está bloqueado (`true`) ou não (`false`). ### Bloquear Usuário **Método:** POST **URL:** `/api/Users/Bloquear` **Descrição:** Bloqueia o acesso do usuário. **Parâmetros:** - `Emp` <int32> - Código da empresa - `CodigoUsuario` <int32> - Código do usuário a ser bloqueado **Exemplo:** ```json { "Emp": 116, "CodigoUsuario": 1 } ``` **Response (Sucesso):** ```json { "ERR_Codigo": 0, "ERR_Mensagem": "Usuário bloqueado com sucesso." } ``` **Response (Erro):** ```json { "ERR_Codigo": 1, "ERR_Mensagem": "Falha ao bloquear usuário: [descrição do erro]" } ``` **Propriedades da Resposta:** - `ERR_Codigo` <int> - Código de erro (0 = sucesso). - `ERR_Mensagem` <string> - Mensagem de erro ou sucesso. ### Desbloquear Usuário **Método:** POST **URL:** `/api/Users/Desbloquear` **Descrição:** Desbloqueia o acesso do usuário. **Parâmetros:** - `Emp` <int32> - Código da empresa - `CodigoUsuario` <int32> - Código do usuário a ser desbloqueado **Exemplo:** ```json { "Emp": 116, "CodigoUsuario": 1 } ``` **Response (Sucesso):** ```json { "ERR_Codigo": 0, "ERR_Mensagem": "Usuário desbloqueado com sucesso." } ``` **Response (Erro):** ```json { "ERR_Codigo": 1, "ERR_Mensagem": "Falha ao desbloquear usuário: [descrição do erro]" } ``` **Propriedades da Resposta:** - `ERR_Codigo` <int> - Código de erro (0 = sucesso). - `ERR_Mensagem` <string> - Mensagem de erro ou sucesso. ### Resetar Senha **Método:** POST **URL:** `/api/Users/ResetarSenha` **Descrição:** Reseta a senha do usuário para o padrão. **Parâmetros:** - `Emp` <int32> - Código da empresa - `Loja` <int32> - Código da loja - `CodigoUsuario` <int32> - Código do usuário **Exemplo:** ```json { "Emp": 116, "Loja": 2009, "CodigoUsuario": 1 } ``` **Response (Sucesso):** ```json { "ERR_Codigo": 0, "ERR_Mensagem": "Senha resetada com sucesso.", "NovaSenha": "aB1!cDe2" } ``` **Response (Erro):** ```json { "ERR_Codigo": 1, "ERR_Mensagem": "Falha ao resetar senha: [descrição do erro]", "NovaSenha": null } ``` **Propriedades da Resposta:** - `ERR_Codigo` <int> - Código de erro (0 = sucesso). - `ERR_Mensagem` <string> - Mensagem de erro ou sucesso. - `NovaSenha` <string> - A nova senha gerada para o usuário (em caso de sucesso, nulo em caso de erro). Esta senha deve ser informada ao usuário. ### Verificar Permissões **Método:** POST **URL:** `/api/Permissao` **Descrição:** Verifica as permissões do usuário para construir o menu. **Parâmetros:** - `Emp` <int32> - Código da empresa - `Usuario` <int32> - Código do usuário - `Versao` <string> - Versão do aplicativo **Exemplo:** ```json { "Emp": 116, "Usuario": 1, "Versao": "0.2" } ``` **Response (Exemplo):** ```json [ { "ERR_Codigo": 0, "ERR_Mensagem": "", "Codigo": 1, "Descricao": "Liberar Pontuação", "Icone": "icon_liberar_pontuacao", "Ordem": 1, "Status": true, "IdentificadorOriginal": "liLiberacoes" }, { "ERR_Codigo": 0, "ERR_Mensagem": "", "Codigo": 2, "Descricao": "Autorização Deb/Cred", "Icone": "icon_autorizacao_de_cred", "Ordem": 2, "Status": true, "IdentificadorOriginal": "liAutorizacoes" }, { "ERR_Codigo": 0, "ERR_Mensagem": "", "Codigo": 7, "Descricao": "Limpar Senha", "Icone": "icon_reset_senha", "Ordem": 7, "Status": true, "IdentificadorOriginal": "btnResetSenha" } ] ``` **Propriedades da Resposta (por item da lista):** - `ERR_Codigo` <int> - Código de erro (0 = sucesso). - `ERR_Mensagem` <string> - Mensagem de erro (vazio se sucesso). - `Codigo` <int> - Código numérico da permissão (pode ser derivado da `Seq` da SP ou ser um ID de permissão interno). - `Descricao` <string> - Descrição textual da permissão/item de menu. - `Icone` <string> - Nome/identificador do ícone para a permissão (pode ser nulo/vazio se não definido). - `Ordem` <int> - Ordem de exibição da permissão (derivado da `Seq` da SP). - `Status` <boolean> - Sempre `true` para permissões retornadas, indicando que o usuário tem acesso. - `IdentificadorOriginal` <string> - O campo `Identificador` original retornado pela Stored Procedure (ex: "liLiberacoes", "btnResetSenha"). :::warning Observações - O bloqueio/desbloqueio de usuários requer permissão específica - O reset de senha requer permissão específica - Usuários bloqueados são identificados com ícone de cadeado - Após bloqueio/desbloqueio, a lista é atualizada automaticamente - A senha padrão após reset é definida no sistema - As permissões são verificadas ao carregar o menu principal - O sistema mantém histórico de alterações de status dos usuários ::: # Comunicação Interna :::info Descrição Sistema completo de mensagens corporativas que permite a troca de comunicações entre usuários, cargos e equipes. Inclui recursos de organização por pastas, acompanhamento de mensagens, respostas e busca avançada. ::: ## Fluxo no APP 1. Acessar o menu `Comunicação Interna` 2. Visualizar mensagens organizadas por pastas: - Entrada - Enviadas - Importantes - Arquivadas 3. Ao selecionar uma mensagem e/ou (arrastar para a esquerda): - Ler conteúdo completo - Marcar como lida/não lida - Sinalizar para acompanhamento - Mover para outra pasta - Responder 4. Para nova mensagem: - Selecionar destinatários (usuários, cargos ou equipes) - Definir assunto e conteúdo - Enviar --- ## Endpoints Utilizados ### Listar Mensagens **Método:** POST **URL:** `/api/ComunicacaoInterna` **Descrição:** Lista as mensagens de uma pasta. **Parâmetros:** - `Pasta` <int32> - Tipo da pasta (-1=Todas, 100=Entrada, 300=Enviadas, 400=Acompanhamento, 500=Lixeira) - `Usuario` <string> - ID do usuário - `Posicao` <int32> - Início da paginação - `RegPorPagina` <int32> - Quantidade de registros por página **Exemplo:** ```json { "Pasta": -1, "Usuario": "160200900001", "Posicao": 0, "RegPorPagina": 20 } ``` **Response (Exemplo de um item da lista):** ```json [ { "ERR_Codigo": 0, "ERR_Mensagem": "", "_Seq": "1", "CAB_ID": 7313221, "USU_NomeCompletoDe": "Silvio Santarosa ", "CON_Assunto": "Exportação de informações do sistema - Usuário: Silvio", "CON_Conteudo": null, "CAB_DataEnviado": "14/05/2025 17:29:34", "Usuarios": "Silvio Santarosa ;", "CAB_Acompanhar": 0, "CAB_Pasta": 100, "CAB_DataLida": "", "CAB_Pai": "7313220", "CAB_Conteudo": null, "TipoCampoBusca": null, "TitHeader": null } ] ``` **Propriedades da Resposta (por item da lista):** - `ERR_Codigo` <int> - Código de erro (0 = sucesso). - `ERR_Mensagem` <string> - Mensagem de erro (vazio se sucesso). - `_Seq` <string> - Sequencial ou identificador de ordenação na lista. - `CAB_ID` <int> - ID único do cabeçalho da mensagem. - `USU_NomeCompletoDe` <string> - Nome completo do usuário remetente. - `CON_Assunto` <string> - Assunto da mensagem. - `CON_Conteudo` <string> - Conteúdo HTML principal da mensagem (pode ser `null`). - `CAB_DataEnviado` <string> - Data e hora do envio da mensagem (formato "dd/MM/yyyy HH:mm:ss"). - `Usuarios` <string> - Lista de destinatários (nomes separados por ponto e vírgula, ex: "Nome1 ; Nome2 ;"). - `CAB_Acompanhar` <int> - Indica se a mensagem está marcada para acompanhamento (0 = Não, 1 = Sim). - `CAB_Pasta` <int> - Código numérico da pasta onde a mensagem se encontra (ex: 100 para Caixa de Entrada, 300 para Enviadas, etc.). - `CAB_DataLida` <string> - Data e hora em que a mensagem foi lida pelo usuário atual (formato "dd/MM/yyyy HH:mm:ss"). String vazia (`""`) se não lida. - `CAB_Pai` <string> - ID da mensagem original à qual esta é uma resposta. Pode ser uma string numérica ou `null` se não for uma resposta. - `CAB_Conteudo` <string> - Um conteúdo secundário ou preview relacionado ao cabeçalho da mensagem (pode ser `null`). Distinto de `CON_Conteudo`. - `TipoCampoBusca` <string> - Informa qual campo foi utilizado caso a mensagem tenha sido encontrada através de uma busca (ex: "Assunto", "Remetente"). Pode ser `null`. - `TitHeader` <string> - Título sugerido para exibição no cabeçalho da interface ao visualizar os detalhes da mensagem. Pode ser `null`. ### Detalhes da Mensagem **Método:** POST **URL:** `/api/ComunicacaoInterna/Item` **Descrição:** Retorna o conteúdo de uma mensagem específica. **Parâmetros:** - `CAB_ID` <int32> - ID da mensagem **Exemplo:** ```json { "CAB_ID": 12345 } ``` ### Buscar Mensagens **Método:** POST **URL:** `/api/ComunicacaoInterna/Busca` **Descrição:** Busca mensagens por conteúdo. **Parâmetros:** - `Pasta` <int32> - Tipo da pasta - `Usuario` <string> - Código do usuário - `Criterio` <string> - Texto para busca **Exemplo:** ```json { "Pasta": -1, "Usuario": "160200900001", "Criterio": "texto para busca" } ``` **Response (Exemplo de um item da lista - similar a Listar Mensagens):** ```json [ { "ERR_Codigo": 0, "ERR_Mensagem": "", "CAB_ID": 12380, "CAB_Tipo": 1, "CON_Assunto": "Urgente: Revisão da Proposta Cliente X", "CON_DataCadastro": "28/07/2024 15:00:00", "CAB_Usuario": "102009000001", "USU_Nome": "Silvio Santarosa", "CIC_Lida": false, "CAB_Acompanhar": false, "CAB_Prioridade": 3, // Ex: 3=Urgente "TotalDestinatarios": 1, "Destinatarios": "Danielle Silva", "TemAnexo": true, "Pasta": "Caixa de Entrada", "Icone": "email_urgent", "Cor": "#FFDAB9", "Respondida": false, "Encaminhada": false, "CAB_IdResposta": null } // ... mais mensagens encontradas na busca ] ``` **Propriedades da Resposta (por item da lista, baseado na Model ComunicacaoInterna.vb - igual a Listar Mensagens):** - `ERR_Codigo` <int> - Código de erro (0 = sucesso). - `ERR_Mensagem` <string> - Mensagem de erro (vazio se sucesso). - `CAB_ID` <int> - ID único da mensagem (cabeçalho). - `CAB_Tipo` <int> - Tipo da mensagem/documento. - `CON_Assunto` <string> - Assunto da mensagem. - `CON_DataCadastro` <string> - Data e hora do cadastro/envio da mensagem (formato "dd/MM/yyyy HH:mm:ss"). - `CAB_Usuario` <string> - ID do usuário remetente original. - `USU_Nome` <string> - Nome do usuário remetente original. - `CIC_Lida` <boolean> - Indica se a mensagem foi lida pelo usuário atual. - `CAB_Acompanhar` <boolean> - Indica se a mensagem está marcada para acompanhamento. - `CAB_Prioridade` <int> - Nível de prioridade da mensagem. - `TotalDestinatarios` <int> - Número total de destinatários da mensagem. - `Destinatarios` <string> - String com os nomes dos primeiros destinatários. - `TemAnexo` <boolean> - Indica se a mensagem possui anexos. - `Pasta` <string> - Nome da pasta onde a mensagem está. - `Icone` <string> - Identificador do ícone para a mensagem. - `Cor` <string> - Cor associada à mensagem. - `Respondida` <boolean> - Indica se esta mensagem foi respondida. - `Encaminhada` <boolean> - Indica se esta mensagem foi encaminhada. - `CAB_IdResposta` <int> - ID da mensagem original à qual esta é uma resposta. ### Marcar Acompanhamento **Método:** POST **URL:** `/api/ComunicacaoInterna/MudaAcompanhar` **Descrição:** Marca/desmarca mensagem para acompanhamento. **Parâmetros:** - `CAB_ID` <int32> - ID da mensagem - `CAB_Acompanhar` <int32> - Status do acompanhamento (0=Não, 1=Sim) **Exemplo:** ```json { "CAB_ID": 12345, "CAB_Acompanhar": 1 } ``` **Response (Sucesso):** ```json { "ERR_Codigo": 0, "ERR_Mensagem": "Status de acompanhamento atualizado." } ``` **Response (Erro):** ```json { "ERR_Codigo": 1, "ERR_Mensagem": "Falha ao atualizar acompanhamento." } ``` **Propriedades da Resposta:** - `ERR_Codigo` <int> - Código de erro (0 = sucesso). - `ERR_Mensagem` <string> - Mensagem de erro ou sucesso. ### Mover Mensagem **Método:** POST **URL:** `/api/ComunicacaoInterna/MudaPasta` **Descrição:** Move mensagem para outra pasta. **Parâmetros:** - `CAB_ID` <int32> - ID da mensagem - `CAB_Pasta` <int32> - Código da pasta destino - `Lida` <int32> - Status de leitura **Exemplo:** ```json { "CAB_ID": 12345, "CAB_Pasta": 500, "Lida": 1 } ``` **Response (Sucesso):** ```json { "ERR_Codigo": 0, "ERR_Mensagem": "Mensagem movida com sucesso." } ``` **Response (Erro):** ```json { "ERR_Codigo": 1, "ERR_Mensagem": "Falha ao mover mensagem." } ``` **Propriedades da Resposta:** - `ERR_Codigo` <int> - Código de erro (0 = sucesso). - `ERR_Mensagem` <string> - Mensagem de erro ou sucesso. ### Marcar Leitura **Método:** POST **URL:** `/api/ComunicacaoInterna/MudaLida` **Descrição:** Marca/desmarca mensagem como lida. **Parâmetros:** - `CAB_ID` <int32> - ID da mensagem - `Modo` <int32> - Status de leitura (0=Não lida, 1=Lida) **Exemplo:** ```json { "CAB_ID": 12345, "Modo": 1 } ``` **Response (Sucesso):** ```json { "ERR_Codigo": 0, "ERR_Mensagem": "Status de leitura atualizado." } ``` **Response (Erro):** ```json { "ERR_Codigo": 1, "ERR_Mensagem": "Falha ao marcar leitura." } ``` **Propriedades da Resposta:** - `ERR_Codigo` <int> - Código de erro (0 = sucesso). - `ERR_Mensagem` <string> - Mensagem de erro ou sucesso. ### Nova Mensagem **Método:** POST **URL:** `/api/ComunicacaoInterna/NovaCI` **Descrição:** Envia nova mensagem. **Parâmetros:** - `Emp` <int32> - Código da empresa - `CAB_IdResposta` <int32> - ID da mensagem respondida (-1 para nova) - `CAB_Usuario` <string> - Código do usuário remetente - `CAB_NaoResponder` <int32> - Permite resposta (0=Sim, 1=Não) - `CAB_Tipo` <int32> - Tipo da mensagem - `CAB_Pasta` <int32> - Pasta inicial - `CAB_Acompanhar` <int32> - Marca para acompanhamento - `CAB_Prioridade` <int32> - Nível de prioridade - `CON_Assunto` <string> - Assunto da mensagem - `CON_Conteudo` <string> - Conteúdo da mensagem - `CON_IP` <string, ==opcional==> - IP do remetente - `Participantes` <string, ==opcional==> - Lista de usuários (separados por ;) - `Cargos` <string, ==opcional==> - Lista de cargos (separados por ;) - `CargosEquipe` <string, ==opcional==> - Lista de equipes (separados por ;) **Exemplo:** ```json { "Emp": 116, "CAB_IdResposta": -1, "CAB_Usuario": "160200900001", "CAB_NaoResponder": 0, "CAB_Tipo": 1, "CAB_Pasta": 100, "CAB_Acompanhar": 0, "CAB_Prioridade": 1, "CON_Assunto": "Assunto da mensagem", "CON_Conteudo": "Conteúdo da mensagem", "CON_IP": "", "Participantes": "1;2;3;", "Cargos": "10;20;", "CargosEquipe": "100;200;" } ``` **Response (Sucesso):** ```json { "ERR_Codigo": 0, "ERR_Mensagem": "Mensagem enviada com sucesso.", "CAB_ID": 12346 // ID da nova mensagem criada } ``` **Response (Erro):** ```json { "ERR_Codigo": 1, "ERR_Mensagem": "Falha ao enviar mensagem: [descrição do erro]", "CAB_ID": null } ``` **Propriedades da Resposta:** - `ERR_Codigo` <int> - Código de erro (0 = sucesso). - `ERR_Mensagem` <string> - Mensagem de erro ou sucesso. - `CAB_ID` <int> - ID da nova mensagem (cabeçalho principal) criada (em caso de sucesso, nulo em caso de erro). ### Buscar Usuários **Método:** POST **URL:** `/api/GetBuscaUsuarioCI` **Descrição:** Busca usuários para envio de mensagem. **Parâmetros:** - `Emp` <int32> - Código da empresa - `UserCI` <string> - Código do usuário - `Busca` <string> - Termo para busca **Exemplo:** ```json { "Emp": 116, "UserCI": "160200900001", "Busca": "nome do usuário" } ``` :::warning Observações - A busca de mensagens requer no mínimo 3 caracteres - Mensagens podem ser enviadas para múltiplos destinatários - Destinatários podem ser usuários, cargos ou equipes - Sistema mantém histórico completo de mensagens - Mensagens não lidas são destacadas visualmente - Respostas mantêm referência à mensagem original - Conteúdo suporta formatação HTML básica - Anexos não são suportados na versão atual ::: # Registro de Visita :::info Descrição Sistema para registro e controle de visitas técnicas aos clientes, permitindo check-in e check-out com geolocalização. Integrado com os módulos de montagem e assistência técnica, possibilita o acompanhamento em tempo real das visitas realizadas. ::: ## Fluxo no APP 1. Acessar o menu `Registro de Visita` 2. Visualizar lista de clientes agendados - Filtrar por nome do cliente - Ver status da visita (pendente, em andamento, finalizada) 3. Ao selecionar um cliente: - Realizar check-in - Registra localização atual - Registra data/hora - Adiciona observações - Durante a visita: - Registrar ocorrências - Adicionar observações - Realizar check-out - Registra localização de saída - Registra data/hora final - Adiciona observações finais --- ## Endpoints Utilizados ### Listar Visitas **Método:** POST **URL:** `/api/visitasLista` **Descrição:** Lista as visitas agendadas. **Parâmetros:** - `Emp` <int32> - Código da empresa - `Usuario` <int32> - Código do usuário - `Busca` <string, ==opcional==> - Termo para filtrar resultados **Exemplo:** ```json { "Emp": 116, "Usuario": 1, "Busca": "" } ``` **Response (Exemplo):** ```json [ { "ERR_Codigo": 0, "ERR_Mensagem": "", "PMT_Emp": 116, "PMT_Loja": 2009, "PMT_Cliente": 12345, "CLI_Nome": "Nome Completo do Cliente Exemplo", "PMT_Contrato": "200901234", "PMT_TipoMontagem": 1, "Ambientes": "AA-AB-AC [Montagem]", "MIN_PMT_MontagemI": "2024-08-01T09:00:00", "MAX_PMT_MontagemT": "2024-08-05T18:00:00", "REV_ID": 789, "REV_CheckinData": "2024-08-02T10:00:00.123", // Exemplo com milissegundos "REV_CheckOutData": "0001-01-01T00:00:00", // Visita em aberto "USU_Nome": "MONTADOR - Fulano de Tal", "StatusVisita": 1, "StatusVisitaDescricao": "Iniciado em 02/08/2024 10:00" }, { "ERR_Codigo": 0, "ERR_Mensagem": "", "PMT_Emp": 116, "PMT_Loja": 2009, "PMT_Cliente": 67890, "CLI_Nome": "Outro Cliente Teste", "PMT_Contrato": "200967890", "PMT_TipoMontagem": 10, "Ambientes": "BA [Retorno]", "MIN_PMT_MontagemI": "2024-07-20T08:00:00", "MAX_PMT_MontagemT": "2024-07-20T17:00:00", "REV_ID": 790, "REV_CheckinData": "2024-07-20T08:05:00.00", "REV_CheckOutData": "2024-07-20T16:55:00.456", // Visita finalizada "USU_Nome": "MONTADOR - Ciclano Alves", "StatusVisita": 0, "StatusVisitaDescricao": "Última visita em 20/07/2024 16:55" }, { "ERR_Codigo": 0, "ERR_Mensagem": "", "PMT_Emp": 116, "PMT_Loja": 2009, "PMT_Cliente": 11223, "CLI_Nome": "Cliente Sem Visita Registrada", "PMT_Contrato": "200911223", "PMT_TipoMontagem": 1, "Ambientes": "DA-DB", "MIN_PMT_MontagemI": "2024-08-10T00:00:00", "MAX_PMT_MontagemT": "2024-08-12T00:00:00", "REV_ID": null, // Sem visita registrada "REV_CheckinData": null, "REV_CheckOutData": null, "USU_Nome": "Sem visita", "StatusVisita": 0, "StatusVisitaDescricao": "Sem visita" } ] ``` **Propriedades da Resposta:** - `ERR_Codigo` <int> - Código de erro (0 = sucesso). - `ERR_Mensagem` <string> - Mensagem de erro (vazio se sucesso, ou "Nenhum registro encontrado"). - `PMT_Emp` <int> - Código da empresa. - `PMT_Loja` <int> - Código da loja. - `PMT_Cliente` <int> - Código do cliente. - `CLI_Nome` <string> - Nome do cliente. - `PMT_Contrato` <string> - Número do contrato. - `PMT_TipoMontagem` <int> - Código do tipo de montagem (ex: 1, 4, 10). - `Ambientes` <string> - String com os códigos dos ambientes agregados (ex: "AA-AB-AC"), pode incluir sufixo como "[Retorno]". - `MIN_PMT_MontagemI` <datetime> - Data e hora previstas para o início da montagem do primeiro ambiente (formato ISO 8601, ex: "2024-08-01T09:00:00"). - `MAX_PMT_MontagemT` <datetime> - Data e hora previstas para o término da montagem do último ambiente (formato ISO 8601, ex: "2024-08-05T18:00:00"). - `REV_ID` <int> - ID do último registro de visita associado (pode ser `null` se não houver visita registrada para o agrupamento de montagem). - `REV_CheckinData` <datetime> - Data e hora do check-in da última visita (formato ISO 8601, ex: "2024-08-02T10:00:00.123", pode incluir milissegundos). Será `null` se não houver visita. - `REV_CheckOutData` <datetime> - Data e hora do check-out da última visita (formato ISO 8601, ex: "2024-07-20T16:55:00.456"). Retorna `"0001-01-01T00:00:00"` se a visita foi iniciada (check-in realizado) mas ainda não finalizada (check-out não realizado). Será `null` se não houver visita. - `USU_Nome` <string> - Nome do usuário (técnico/montador) que realizou a última visita, formatado com o cargo (ex: "MONTADOR - Fulano de Tal"), ou "Sem visita". - `StatusVisita` <int> - Código do status da visita (0 = Sem visita / Finalizada, 1 = Em andamento). - `StatusVisitaDescricao` <string> - Descrição textual do status da visita (ex: "Sem visita", "Iniciado em dd/MM/yyyy HH:mm", "Última visita em dd/MM/yyyy HH:mm"). ### Registrar Check-in **Método:** POST **URL:** `/api/visitasCheckin` **Descrição:** Registra o início da visita (check-in). **Parâmetros:** - `REV_Emp` <int32> - Código da empresa. - `REV_Loja` <int32> - Código da loja. - `REV_Cliente` <int32> - Código do cliente. - `REV_Contrato` <int32> - Número do contrato. - `REV_Ambientes` <string> - Códigos dos ambientes (separados por vírgula, ex: "AA,AB"). - `REV_CheckinUsuario` <int32> - Código do usuário que está fazendo o check-in. - `REV_CheckinLatitude` <string> - Latitude da localização no momento do check-in. - `REV_CheckinLongitude` <string> - Longitude da localização no momento do check-in. - `REV_CheckinDevice` <string> - Identificador/nome do dispositivo utilizado. - `REV_Observacao` <string> - Observações iniciais da visita. - `PMT_TipoMontagem` <int32> - Código do tipo de montagem (Este valor é passado para o parâmetro `@REV_TipoMontagem` da Stored Procedure. O parâmetro `@REV_TipoVisita` da SP é fixado em `1` pela API para check-in, indicando "Montagem"). **Exemplo:** ```json { "REV_Emp": 116, "REV_Loja": 2009, "REV_Cliente": 12345, "REV_Contrato": 67890, "REV_Ambientes": "AA,AB", "REV_TipoVisita": 1, // A API envia este valor fixo para a SP (@REV_TipoVisita = 1) "REV_CheckinUsuario": 1, "REV_CheckinLatitude": "-19.123456", "REV_CheckinLongitude": "-43.123456", "REV_CheckinDevice": "iPhone 12", "REV_Observacao": "Início da visita", "PMT_TipoMontagem": 1 // Mapeado para @REV_TipoMontagem na SP } ``` **Response (Sucesso):** ```json { "ERR_Codigo": 0, "ERR_Mensagem": "98765" // Contém o ID (REV_ID) do novo registro de visita criado } ``` **Response (Erro - Ex: Check-in pendente):** ```json { "ERR_Codigo": 1, "ERR_Mensagem": "Existe cliente sem finalizar visita. Finalize a visita antes de iniciar uma nova. <br>Loja: 2009 - Cliente: 12340 - Nome Cliente Pendente" } ``` **Propriedades da Resposta:** - `ERR_Codigo` <int> - Código de erro (0 = sucesso, 1 = erro). - `ERR_Mensagem` <string> - Em caso de sucesso, contém o ID (string) do novo registro de visita (`REV_ID`). Em caso de erro, contém a mensagem de erro do sistema ou da Stored Procedure. ### Registrar Check-out **Método:** POST **URL:** `/api/visitasChekout` **Descrição:** Finaliza a visita (check-out). **Parâmetros:** - `REV_Emp` <int32> - Código da empresa. - `REV_Loja` <int32> - Código da loja. - `REV_Cliente` <int32> - Código do cliente. - `REV_Contrato` <int32> - Número do contrato. - `REV_Ambientes` <string> - Códigos dos ambientes (separados por vírgula, ex: "AA,AB"). - `REV_TipoVisita` <int32> - Tipo da visita (A API atualmente envia o valor fixo `1` para a Stored Procedure, indicando "Montagem", durante o check-out). - `REV_CheckOutUsuario` <int32> - Código do usuário que está fazendo o check-out. - `REV_CheckOutLatitude` <string> - Latitude da localização no momento do check-out. - `REV_CheckOutLongitude` <string> - Longitude da localização no momento do check-out. - `REV_CheckOutDevice` <string> - Identificador/nome do dispositivo utilizado. - `REV_Observacao` <string> - Observações finais da visita (obrigatórias para check-out). - `REV_ID` <int32> - ID do registro de visita que está sendo finalizado (este ID foi retornado no momento do check-in). **Exemplo:** ```json { "REV_Emp": 116, "REV_Loja": 2009, "REV_Cliente": 12345, "REV_Contrato": 67890, "REV_Ambientes": "AA,AB", "REV_TipoVisita": 1, // A API envia este valor fixo para a SP (@REV_TipoVisita = 1) "REV_CheckOutUsuario": 1, "REV_CheckOutLatitude": "-19.123456", "REV_CheckOutLongitude": "-43.123456", "REV_CheckOutDevice": "iPhone 12", "REV_Observacao": "Visita finalizada com sucesso. Todas as pendências resolvidas.", "REV_ID": 98765 } ``` **Response (Sucesso):** ```json { "ERR_Codigo": 0, "ERR_Mensagem": "" } ``` **Response (Erro):** ```json { "ERR_Codigo": 1, "ERR_Mensagem": "Falha ao registrar o check-out. Detalhes do erro aqui." } ``` **Propriedades da Resposta:** - `ERR_Codigo` <int> - Código de erro (0 = sucesso, 1 = erro). - `ERR_Mensagem` <string> - Mensagem de sucesso (geralmente vazia) ou mensagem de erro detalhada. :::warning Observações - O sistema registra automaticamente data, hora e localização do dispositivo - É necessário permitir acesso à localização do dispositivo - Visitas podem ser de três tipos: Montagem, AT ou Cliente avulso - O histórico completo de visitas é mantido no sistema - Observações são obrigatórias no check-out - O status da visita é atualizado em tempo real - Integração com módulo de Gerenciamento de Montagem/AT para registro de ocorrências - Visitas sem check-out são sinalizadas como pendentes no sistema :::