Integração
Integração é quando o dado sai do NFS e vai para o sistema de terceiros.
Ele é feito em duas partes a primeira é a obtenção dos dados no NFS por meio de um id. A outra parte é uma confirmação que de que os dados já enviados estão corretos, com isso é enviado o id novamente por meio de outra URL e os campos necessários são atualizados para não haver mais o sincronismo da mesma informação.
Rotas
Método | URL | Descrição |
---|---|---|
POST | /nfs/api/v1.1/integration/{table} | Realiza alteração nos dados da tabela |
POST | /nfs/api/v1/integration/list/{table} | Obtém dados |
Configuração Integração
A estrutura da integração pode ser dividida em 4 partes
Topo
Chave | Obrigatório | Valor | Descrição |
---|---|---|---|
alias | Sim | ApelidoTabela | Deve ser um apelido para tabela sem espaço. |
table | Sim | TABELA_NOME | É a Tabela Nome que está na nfs_core_ds_tabela, usada para referênciar a uma tabela do NFS |
field
Composto pelos campos enviados, geramente é um id que no NFS representa o SEQ_DB de um dado da tabela a ser sincronizada.
Chave | Obrigatório | Valor | Descrição |
---|---|---|---|
column | Sim | STRING | Nome da Coluna no NFS. |
type | Sim | Varchar | Tipo da Coluna, geralmente é varchar |
size | Sim | INTEGER | Tamanho maximo do dado que está sendo sincronizado, ainda não é usado esse valor, mas será útil para validações futuras |
description | Não | STRING | Descrição da chave/Coluna, pode ser que isso ajude na manutenção para outras pessoas entenderem o que foi realizado, para que ser, de onde pertence. |
primaryKey | Não | true/false | Indica que aquela chave/coluna é chave primária, pode até não ser no banco mas ela é importanta para fazer buscas verificando se existe o campo no banco do NFS para ver se é necessário fazer um update ou insert |
required | Não | true/false | É um atributo importante, se marcado como true exije que o sistema de terceiro envie o valor, se não enviar será enviado uma mensagem de erro dizendo que o campo é obrigatório. Lembrando que se o campo não é obrigado não é necessário usar esse atributo |
updateIntegraion
Um array onde ficam os campos que vão ser atualizados depois que o sincronismo for feito com sucesso.
output
Configuração dos dados que vão ser retornados para o sistema do cliente.
Chave | Obrigatório | Valor | Descrição |
---|---|---|---|
alias | Sim | ApelidoTabela | Deve ser um apelido para tabela sem espaço. |
Exemplos
Exemplo de Sincronismo de OS
{
"alias": "OrdemServico",
"table": "OS",
"field": {
"id": {
"column": "SEQ_DB",
"type": "int",
"size": 100,
"description": "SEQ_DB da OS",
"required": true
}
},
"updateIntegration": [
"RO = 1",
"PROC_DH = CURRENT_TIMESTAMP",
"PROC_ST = 1",
"PROC_DESC = 'OS Integrada com sucesso para o DMS'"
],
"output": {
"FILIAL": {
"field": "CodigoEmpresa",
"type": "sys",
"returnColumns": [
"SIGLA"
]
},
"LOCAL": {
"field": "FilialOS",
"type": "sys",
"returnColumns": [
"SIGLA"
]
},
"CODIGO": {
"field": "CodigoOS",
"type": "varchar"
},
"LINHA": {
"field": "CodigoLinhaEquip"
},
"MODELO": {
"field": "CodigoModeloEquip",
"type": "varchar"
},
"STATUS_OS_SEQ_DB": {
"field": [
"StatusOS",
"IDStatusOS"
],
"type": "varchar",
"fk": true,
"tableOrigin": "STATUS_OS",
"columns": [
"DESCRICAO",
"ID"
]
},
"Equipamento": {
"table": "APONTAMENTO_EQUIPAMENTO",
"type": "child",
"description": "Vinculo com OS",
"columns": {
"CHASSI": {
"field": "Chassi"
},
"HORIMETRO": {
"field": "Horimetro"
},
"FOTO_CHASSI": {
"field": "IdImagemChassi",
"type": "image"
},
"FOTO_HORIMETRO": {
"field": "IdImagemHorimetro",
"type": "image"
},
"INI_DH": {
"field": "DataLeitura"
}
}
},
"Dtac": {
"table": "APONTAMENTO_DTAC",
"type": "child",
"description": "Vinculo com OS",
"columns": {
"CODIGO_PECA_CAUSADORA": {
"field": "PecaCausadora"
}
}
},
"Assinaturas": {
"table": "APONTAMENTO_ASSINATURA",
"type": "child",
"description": "Vinculo com OS",
"columns": {
"ASSINATURA_CLIENTE": {
"field": "IdImagemAssinaturaCliente",
"type": "image"
},
"NOME_CLIENTE": {
"field": "Contato"
},
"TELEFONE": {
"field": "Telefone"
}
}
},
"Problemas": {
"table": "APONTAMENTO_FOTO",
"type": "child",
"description": "Vinculo com OS",
"columns": {
"FOTO": {
"field": "IdImagemProblema",
"type": "image"
},
"OBS": {
"field": "DescFalha"
}
}
},
"AptHorasTrabalhadas": {
"table": "APONTAMENTO",
"type": "child",
"description": "Vinculo com OS",
"columns": {
"SERVICO_SEQ_DB": {
"field": [
"SeqServico"
],
"type": "varchar",
"fk": true,
"tableOrigin": "SERVICO",
"columns": [
"SEQ_OPERACAO"
]
},
"FILIAL": {
"field": "CodigoEmpresaTec",
"returnColumns": [
"SIGLA"
]
},
"INI_DH": {
"field": "DataInicialApontamento"
},
"FIM_DH": {
"field": "DataFinalApontamento"
},
"INI_FIM_DIFF_SEC": {
"field": "TempoApontado",
"type": "time",
"mask": "minute"
},
"AUXILIAR_SEQ_DB": {
"field": [
"CodigoTecnico"
],
"type": "varchar",
"fk": true,
"tableOrigin": "FUNCIONARIO",
"columns": [
"CRACHA"
]
}
}
},
"DescFalha": {
"table": "APONTAMENTO_DESCRICAO_SERVICO",
"type": "child",
"description": "Vinculo com OS",
"columns": {
"RECLAMACAO_CLIENTE": {
"field": "DescricaoFalha",
"type": "varchar"
},
"CAUSA": {
"field": "DescricaoCausa",
"type": "varchar"
},
"SOLUCAO": {
"field": "DescricaoCorrecao",
"type": "varchar"
}
}
},
"PecasAplicacas": {
"table": "OS_PECA",
"type": "child",
"description": "Vinculo com OS",
"columns": {
"PECA_SEQ_DB": {
"field": [
"CodigoPeca"
],
"type": "varchar",
"fk": true,
"tableOrigin": "PECA",
"columns": [
"CODIGO"
]
},
"QTD_UTILIZADA": {
"field": "QuantidadeAplicada",
"type": "varchar"
}
}
},
"Deslocamentos": {
"table": "APONTAMENTO_DESLOCAMENTO",
"type": "child",
"description": "Vinculo com OS",
"columns": {
"VEICULO_SEQ_DB": {
"field": [
"VeiculoPlaca"
],
"type": "varchar",
"fk": true,
"tableOrigin": "VEICULO",
"columns": [
"PLACA"
]
},
"FUNCIONARIO_SEQ_DB": {
"field": [
"Tecnico"
],
"type": "varchar",
"fk": true,
"tableOrigin": "FUNCIONARIO",
"columns": [
"CRACHA"
]
},
"INI_DH": {
"field": "DataHoraInicio"
},
"FIM_DH": {
"field": "DataHoraFim"
},
"KM_INICIAL": {
"field": "KmInicial"
},
"KM_FINAL": {
"field": "KmFinal"
},
"DIFERENCA_KM": {
"field": "KmPercorrido"
}
}
},
"Despesas": {
"table": "APONTAMENTO_DESPESA",
"type": "child",
"description": "Vinculo com OS",
"columns": {
"FUNCIONARIO_SEQ_DB": {
"field": [
"Tecnico"
],
"type": "varchar",
"fk": true,
"tableOrigin": "FUNCIONARIO",
"columns": [
"CRACHA"
]
},
"DESPESA_SEQ_DB": {
"field": [
"Despesa"
],
"type": "varchar",
"fk": true,
"tableOrigin": "DESPESA",
"columns": [
"DESCRICAO"
]
},
"DESCRICAO_DESPESA": {
"field": "DescricaoDespesa",
"type": "varchar"
},
"INI_DH": {
"field": "DataHora"
},
"QUANTIDADE_DESPESA": {
"field": "Valor",
"type": "varchar"
}
}
}
}
}
DeepFK
A Deep FK permitir você a obter dados de outras tabelas na sua tabela alvo, exemplo de problema:
- Necessário enviar o código do Modelo relacionado ao Equipamento da Tabela OS e o Tipo Equipamento relacionado ao Modelo.
Configuração:
"EQUIPAMENTO_SEQ_DB": {
"type": "deepFK",
"fk": true,
"name": "EQUIPAMENTO",
"tableOrigin": "EQUIPAMENTO",
"fields": {
"codigoModeloEquip": {
"type": "fk",
"tableOrigin": "MODELO_EQUIPAMENTO",
"column": "MODELO_EQUIPAMENTO_SEQ_DB",
"fields": {
"CODIGO": {
"type": "varchar"
}
}
},
"codigoLinhaEquip": {
"type": "fk",
"tableOrigin": "MODELO_EQUIPAMENTO",
"column": "MODELO_EQUIPAMENTO_SEQ_DB",
"fields": {
"TIPO_EQUIPAMENTO": {
"type": "fk",
"tableOrigin": "TIPO_EQUIPAMENTO",
"column": "TIPO_EQUIPAMENTO_SEQ_DB",
"fields": {
"CODIGO": {
"type": "varchar"
}
}
}
}
}
}
Outra opção é ser possível também obter qualquer outra coluna da própria tabela Equipamento.
"EQUIPAMENTO_SEQ_DB": {
"type": "deepFK",
"fk": true,
"name": "EQUIPAMENTO",
"tableOrigin": "EQUIPAMENTO",
"fields": {
"codigoModeloEquip": {
"type": "fk",
"tableOrigin": "MODELO_EQUIPAMENTO",
"column": "MODELO_EQUIPAMENTO_SEQ_DB",
"fields": {
"CODIGO": {
"type": "varchar"
}
}
},
"codigoLinhaEquip": {
"type": "fk",
"tableOrigin": "MODELO_EQUIPAMENTO",
"column": "MODELO_EQUIPAMENTO_SEQ_DB",
"fields": {
"TIPO_EQUIPAMENTO": {
"type": "fk",
"tableOrigin": "TIPO_EQUIPAMENTO",
"column": "TIPO_EQUIPAMENTO_SEQ_DB",
"fields": {
"CODIGO": {
"type": "varchar"
}
}
}
}
},
"chassi": {
"type": "varchar",
"column": "CHASSI"
}
}
}
Exemplo completo:
{
"alias": "OrdemServico",
"table": "OS",
"ignore": {
"local": true
},
"field": {
"SeqOs": {
"column": "SEQ_DB",
"type": "int",
"size": 100,
"description": "SEQ_DB da OS",
"required": true
}
},
"conditions": [
"PROC_ST = 1"
],
"updateIntegration": [
"RO = 1",
"PROC_DH = CURRENT_TIMESTAMP",
"PROC_ST = 2",
"PROC_DESC = 'OS Integrada com sucesso para o DMS'"
],
"output": {
"FILIAL": {
"field": "Filial",
"type": "sys",
"returnColumns": [
"SIGLA"
]
},
"LOCAL": {
"field": "Local",
"type": "sys",
"returnColumns": [
"SIGLA"
]
},
"OsServico": {
"table": "OS_SERVICO",
"type": "child",
"description": "Vinculo com OS",
"columns": {
"SEQ_DB": {
"field": "idOsServico",
"type": "varchar"
}
}
},
"EQUIPAMENTO_SEQ_DB": {
"type": "deepFK",
"fk": true,
"name": "EQUIPAMENTO",
"tableOrigin": "EQUIPAMENTO",
"fields": {
"codigoModeloEquip": {
"type": "fk",
"tableOrigin": "MODELO_EQUIPAMENTO",
"column": "MODELO_EQUIPAMENTO_SEQ_DB",
"fields": {
"CODIGO": {
"type": "varchar"
}
}
},
"codigoLinhaEquip": {
"type": "fk",
"tableOrigin": "MODELO_EQUIPAMENTO",
"column": "MODELO_EQUIPAMENTO_SEQ_DB",
"fields": {
"TIPO_EQUIPAMENTO": {
"type": "fk",
"tableOrigin": "TIPO_EQUIPAMENTO",
"column": "TIPO_EQUIPAMENTO_SEQ_DB",
"fields": {
"CODIGO": {
"type": "varchar"
}
}
}
}
},
"chassi": {
"type": "varchar",
"column": "CHASSI"
}
}
},
"CODIGO": {
"field": "CodigoOS",
"type": "varchar"
},
"STATUS_OS_SEQ_DB": {
"field": [
"StatusOS",
"IDStatusOS"
],
"type": "fk",
"fk": true,
"name": "STATUS_OS",
"tableOrigin": "STATUS_OS",
"columns": [
"DESCRICAO",
"ID"
]
},
"ApontamentoEquipamento": {
"table": "APONTAMENTO_EQUIPAMENTO",
"type": "child",
"description": "Vinculo com OS",
"columns": {
"CHASSI": {
"field": "Chassi",
"type": "varchar"
},
"HORIMETRO": {
"field": "Horimetro",
"type": "varchar"
},
"FOTO_CHASSI": {
"field": "IdImagemChassi",
"type": "image"
},
"FOTO_HORIMETRO": {
"field": "IdImagemHorimetro",
"type": "image"
},
"INI_DH": {
"field": "DataLeitura",
"type": "varchar"
}
}
},
"Dtac": {
"table": "APONTAMENTO_DTAC",
"type": "child",
"description": "Vinculo com OS",
"columns": {
"NUMERO_DTAC": {
"field": "NumeroDtac",
"type": "varchar"
}
}
},
"PecaCausadora": {
"table": "APONTAMENTO_PECA_CAUSADORA",
"type": "child",
"description": "Vinculo com OS",
"columns": {
"CODIGO_PECA_CAUSADORA": {
"field": "PecaCausadora",
"type": "varchar"
},
"DESCRICAO_PECA_CAUSADORA": {
"field": "DescricaoPecaCausadora",
"type": "varchar"
}
}
},
"Assinaturas": {
"table": "APONTAMENTO_ASSINATURA",
"type": "child",
"description": "Vinculo com OS",
"columns": {
"ASSINATURA_CLIENTE": {
"field": "IdImagemAssinaturaCliente",
"type": "image"
},
"NOME_CLIENTE": {
"field": "Contato",
"type": "varchar"
},
"TELEFONE": {
"field": "Telefone",
"type": "varchar"
}
}
},
"Problemas": {
"table": "APONTAMENTO_FOTO",
"type": "child",
"description": "Vinculo com OS",
"columns": {
"FOTO": {
"field": "IdImagemProblema",
"type": "image"
},
"OBS": {
"field": "DescFalha",
"type": "varchar"
}
}
},
"AptHorasTrabalhadas": {
"table": "APONTAMENTO",
"type": "child",
"description": "Vinculo com OS",
"columns": {
"SERVICO_SEQ_DB": {
"field": [
"SeqServico"
],
"type": "varchar",
"fk": true,
"tableOrigin": "SERVICO",
"columns": [
"SEQ_DB"
]
},
"GRUPO_SERVICO_SEQ_DB": {
"field": [
"CodigoServico",
"DescServico"
],
"type": "varchar",
"fk": true,
"tableOrigin": "GRUPO_SERVICO",
"columns": [
"CODIGO",
"DESCRICAO"
]
},
"OS_SEQ_DB": {
"field": [
"SeqOs",
"CodigoOs"
],
"type": "varchar",
"fk": true,
"tableOrigin": "OS",
"columns": [
"SEQ_DB",
"CODIGO"
]
},
"PARADA_SEQ_DB": {
"field": [
"CodigoParada",
"DescParada"
],
"type": "varchar",
"fk": true,
"tableOrigin": "PARADA",
"columns": [
"ID",
"DESCRICAO"
]
},
"TIPO_APONTAMENTO": {
"field": "TipoApontamento",
"type": "int"
},
"FILIAL": {
"field": "CodigoEmpresaTec",
"type": "sys",
"returnColumns": [
"SIGLA"
]
},
"FLAG_OUTROS_SERVICOS": {
"field": "FlagServicoManual",
"type": "varchar"
},
"INI_DH": {
"field": "DataInicialApontamento",
"type": "varchar"
},
"FIM_DH": {
"field": "DataFinalApontamento",
"type": "varchar"
},
"INI_FIM_DIFF_SEC": {
"field": "TempoApontado",
"type": "time",
"mask": "minute"
},
"AUXILIAR_SEQ_DB": {
"field": [
"CodigoTecnico"
],
"type": "varchar",
"fk": true,
"tableOrigin": "FUNCIONARIO",
"columns": [
"CRACHA"
]
}
}
},
"DescFalha": {
"table": "APONTAMENTO_DESCRICAO_SERVICO",
"type": "child",
"description": "Vinculo com OS",
"columns": {
"RECLAMACAO_CLIENTE": {
"field": "DescricaoFalha",
"type": "varchar"
},
"CAUSA": {
"field": "DescricaoCausa",
"type": "varchar"
},
"SOLUCAO": {
"field": "DescricaoCorrecao",
"type": "varchar"
}
}
},
"PecasAplicadas": {
"table": "OS_PECA",
"type": "child",
"description": "Vinculo com OS",
"columns": {
"PECA_SEQ_DB": {
"field": [
"CodigoPeca"
],
"type": "varchar",
"fk": true,
"tableOrigin": "PECA",
"columns": [
"CODIGO"
]
},
"QTD_UTILIZADA": {
"field": "QuantidadeAplicada",
"type": "varchar"
}
}
},
"Deslocamentos": {
"table": "APONTAMENTO_DESLOCAMENTO",
"type": "child",
"description": "Vinculo com OS",
"columns": {
"VEICULO_SEQ_DB": {
"field": [
"VeiculoPlaca"
],
"type": "varchar",
"fk": true,
"tableOrigin": "VEICULO",
"columns": [
"PLACA"
]
},
"FUNCIONARIO_SEQ_DB": {
"field": [
"Tecnico"
],
"type": "varchar",
"fk": true,
"tableOrigin": "FUNCIONARIO",
"columns": [
"CRACHA"
]
},
"INI_DH": {
"field": "DataHoraInicio",
"type": "varchar"
},
"FIM_DH": {
"field": "DataHoraFim",
"type": "varchar"
},
"KM_INICIAL": {
"field": "KmInicial",
"type": "varchar"
},
"KM_FINAL": {
"field": "KmFinal",
"type": "varchar"
},
"DIFERENCA_KM": {
"field": "KmPercorrido",
"type": "varchar"
}
}
},
"Despesas": {
"table": "APONTAMENTO_DESPESA",
"type": "child",
"description": "Vinculo com OS",
"columns": {
"FUNCIONARIO_SEQ_DB": {
"field": [
"Tecnico"
],
"type": "varchar",
"fk": true,
"tableOrigin": "FUNCIONARIO",
"columns": [
"CRACHA"
]
},
"DESPESA_SEQ_DB": {
"field": [
"Despesa"
],
"type": "varchar",
"fk": true,
"tableOrigin": "DESPESA",
"columns": [
"DESCRICAO"
]
},
"DESCRICAO_DESPESA": {
"field": "DescricaoDespesa",
"type": "varchar"
},
"INI_DH": {
"field": "DataHora",
"type": "varchar"
},
"QUANTIDADE_DESPESA": {
"field": "Valor",
"type": "varchar"
}
}
}
}
}
Integração - Consulta
É possível também realizar a consulta de dados sem que seja feita qualquer alterção neles.
Para isso é necessário 2 coisas:
1 - O método ser GET ao invés de POST
curl --request GET \
--url http://nfs.local/nfs/api/v1/integration/apontamento \
--header 'authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJuZnMubG9jYWwiLCJuYW1lIjoic2ltb3ZhLmFkbWluIiwiZW1haWwiOiJzaW1vdmEuYWRtaW5Ac2ltb3ZhLmNvbS5iciIsImZpbGlhbCI6IkFyYWd1YXJpIiwibG9jYWwiOm51bGwsImV4cCI6IjIwMjAtMDQtMjMgMTE6NDg6NDIifQ==.8Yc6ZupCzQIxhsbH\/V6Rzo456uudnt\/8loPgMqmKQVI=' \
--header 'content-type: application/json' \
--cookie PHPSESSID=bt409rccmaotg830011ja5um15 \
--data '{
"periodo": {
"end": "2020-01-06 17:54:43",
"begin" : "2020-01-01 17:54:40"
}
}'
2 - Na configuração do updateIntegraion o mesmo deve ser vazio.
Type period
Foi criado um novo tipo também para esses casos que é o period, configuração básica é
{
"alias": "Apontamento",
"table": "APONTAMENTO",
"field": {
"periodo": {
"column": "INI_DH",
"type": "period",
"size": 100,
"description": "Periodo Busca de Apontamentos"
}
}
....
}
no Body do request deve ter a data begin (Começo) e end (Fim)
{
"periodo": {
"end": "2020-01-06 17:54:43",
"begin" : "2020-01-01 17:54:40"
}
}
OBS: Pode ser adicionado no período a filial e o local para que possa obter os dados que correspondem apenas a estes, podendo ser inserido os dois ou apenas um ou outro, caso não sejam colocados serão trazidos os dados da filial que o usuario esta autenticado, como no exemplo abaixo:
"periodo": {
"end": "2020-01-06 17:54:43",
"begin" : "2020-01-01 17:54:40",
"filial": "NomeDaFilial",
"local": "NomeDoLocal"
}
Logo no exemplo acima vai pesquisar WHERE INI_DH >= '2020-01-06 17:54:43' and INI_DH <= '2020-01-01 17:54:40'
, o formato da datas deve ser YYYY-MM-DD hh:mi:ss
.
Ao definir um tipo period o mesmo deve ser enviado como um json com duas chaves begin e end, nota que o end nao pode ser maior que o begin se nao é gerada uma mensagem de validaçao
[
{
"type": "validation",
"msg": "Período inválido, data inicial maior que final",
"field": "",
"id": ""
}
]
e nem o periodo maior que sete dias.
[
{
"type": "validation",
"msg": "Período maior que 7 dias",
"field": "",
"id": ""
}
]
Type user
Na integração para retornar informações do usuário como por exemplo e-mail foi criado o tipo user onde busca os dados na tabela nfs_acl_usuario.
"INS_USUARIO_SEQ_DB": {
"field": [
"INS_USUARIO_SEQ_DB"
],
"type": "user",
"columns": [
"EMAIL"
]
}
No field um array com os apelidos que vão retornar no json na columns as colunas de retorno nfs_acl_usuario que deseja obter as informações.
Exemplo de Integração de Apontamentos
Request
curl --request GET \
--url http://nfs.local/nfs/api/v1/integration/apontamento \
--header 'authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJuZnMubG9jYWwiLCJuYW1lIjoic2ltb3ZhLmFkbWluIiwiZW1haWwiOiJzaW1vdmEuYWRtaW5Ac2ltb3ZhLmNvbS5iciIsImZpbGlhbCI6IkFyYWd1YXJpIiwibG9jYWwiOm51bGwsImV4cCI6IjIwMjAtMDQtMjMgMTE6NDg6NDIifQ==.8Yc6ZupCzQIxhsbH\/V6Rzo456uudnt\/8loPgMqmKQVI=' \
--header 'content-type: application/json' \
--cookie PHPSESSID=bt409rccmaotg830011ja5um15 \
--data '{
"periodo": {
"end": "2020-01-06 17:54:43",
"begin" : "2020-01-01 17:54:40"
}
}'
SQL
{
"alias": "Apontamento",
"table": "APONTAMENTO",
"field": {
"periodo": {
"column": "INI_DH",
"type": "period",
"size": 100,
"description": "Periodo Busca de Apontamentos"
}
},
"updateIntegration": [],
"output": {
"EMPRESA": {
"field": "NOME_EMPRESA",
"type": "sys",
"returnColumns": [
"SIGLA"
]
},
"FILIAL": {
"field": "NOME_FILIAL",
"type": "sys",
"returnColumns": [
"SIGLA"
]
},
"LOCAL": {
"field": "LOCAL",
"type": "sys",
"returnColumns": [
"SIGLA"
]
},
"INS_DH": {
"field": "DT_INS_APONT",
"type": "varchar"
},
"INI_DH": {
"field": "DT_INI_APONT",
"type": "varchar"
},
"FIM_DH": {
"field": "DT_FIM_APONT",
"type": "varchar"
},
"SEQ_DB_DEVICE": {
"field": "SEQ_APONTAMENTO",
"type": "varchar"
},
"ATIVO": {
"field": "STATUS_APONT",
"type": "varchar"
},
"INI_DH_TIPO": {
"field": "TIPO_DT_INI",
"type": "varchar"
},
"INI_DH_ONLINE": {
"field": "INI_ONLINE",
"type": "varchar"
},
"FIM_DH_TIPO": {
"field": "TIPO_DT_FIM",
"type": "varchar"
},
"FIM_DH_ONLINE": {
"field": "FIM_ONLINE",
"type": "varchar"
},
"OS_CRIADA": {
"field": "COD_OS_OFFLINE",
"type": "varchar"
},
"FLAG_DESLOCAMENTO": {
"field": "FLAG_DESLOCAMENTO",
"type": "varchar"
},
"POSICAO_PLAT": {
"field": "POSICAO_LAT_APONT",
"type": "varchar"
},
"POSICAO_PLON": {
"field": "POSICAO_LON_APONT",
"type": "varchar"
},
"PROC_DH": {
"field": "DT_INTEGRACAO",
"type": "varchar"
},
"UPD_DH": {
"field": "DT_ALTERACAO",
"type": "varchar"
},
"FLAG_DIAGNOSTICO": {
"field": "FLAG_DIAGNOSTICO",
"type": "varchar"
},
"INS_USUARIO_SEQ_DB": {
"field": [
"INS_USUARIO_SEQ_DB"
],
"type": "user",
"columns": [
"EMAIL"
]
},
"UPD_USUARIO_SEQ_DB": {
"field": [
"USUARIO_ALT_APONT"
],
"type": "user",
"columns": [
"EMAIL"
]
},
"OBSERVACAO": {
"field": "OBSERVACAO",
"type": "varchar"
},
"TIPO_APONTAMENTO": {
"field": "TIPO_APONTAMENTO",
"type": "varchar"
},
"FUNCIONARIO_SEQ_DB": {
"field": [
"CRACHA_FUNCIONARIO",
"NOME_FUNCIONARIO"
],
"type": "fk",
"fk": true,
"tableOrigin": "FUNCIONARIO",
"columns": [
"CRACHA",
"NOME"
]
},
"AUXILIAR_SEQ_DB": {
"field": [
"CRACHA_AUXILIAR",
"NOME_AUXILIAR"
],
"type": "fk",
"fk": true,
"tableOrigin": "FUNCIONARIO",
"columns": [
"CRACHA",
"NOME"
]
},
"OS_SEQ_DB": {
"field": [
"OS_COD"
],
"type": "fk",
"fk": true,
"tableOrigin": "OS",
"columns": [
"CODIGO"
]
},
"CLIENTE_SEQ_DB": {
"field": [
"COD_CLIENTE",
"LOJA_CLIENTE",
"DESC_CLIENTE"
],
"type": "fk",
"fk": true,
"tableOrigin": "CLIENTE",
"columns": [
"CODIGO",
"LOJA",
"DESCRICAO"
]
},
"GRUPO_SERVICO_SEQ_DB": {
"field": [
"COD_GRUPO_SERVICO",
"DESC_GRUPO_SERVICO"
],
"type": "fk",
"fk": true,
"tableOrigin": "GRUPO_SERVICO",
"columns": [
"CODIGO",
"DESCRICAO"
]
},
"SERVICO_SEQ_DB": {
"field": [
"COD_SERVICO",
"DESC_SERVICO"
],
"type": "fk",
"fk": true,
"tableOrigin": "SERVICO",
"columns": [
"CODIGO",
"DESCRICAO"
]
},
"PARADA_SEQ_DB": {
"field": [
"DESC_PARADA"
],
"type": "fk",
"fk": true,
"tableOrigin": "PARADA",
"columns": [
"DESCRICAO"
]
},
"TIPO_SERVICO_SEQ_DB": {
"field": [
"CD_TIPO_SERV",
"DESC_TIPO_SERV"
],
"type": "fk",
"fk": true,
"tableOrigin": "TIPO_SERVICO",
"columns": [
"CODIGO",
"DESCRICAO"
]
},
"TIPO_TEMPO_SEQ_DB": {
"field": [
"CD_TIPO_TEMP",
"DESC_TIPO_TEMP"
],
"type": "fk",
"fk": true,
"tableOrigin": "TIPO_TEMPO",
"columns": [
"CODIGO",
"DESCRICAO"
]
},
"LOCAL_SERVICO_SEQ_DB": {
"field": [
"CD_LOCAL_SERV",
"DESC_LOCAL_SERV"
],
"type": "fk",
"fk": true,
"tableOrigin": "LOCAL_SERVICO",
"columns": [
"CODIGO",
"DESCRICAO"
]
},
"SEQ_DB_DEVICE_MASTER_SEQ_DB": {
"field": [
"DT_INS_BOL",
"DT_INI_BOL",
"DT_FIM_BOL",
"BOL_INTEGRADO"
],
"type": "fk",
"fk": true,
"tableOrigin": "BOLETIM",
"columns": [
"INS_DH",
"INI_DH",
"FIM_DH",
"PROCT_ST"
]
}
}
}
Alteração Pós Integração
Caso seja necessário realizar uma alteração para marcar os dados como integrados e também passar por um entry point, o melhor candidato é a rota de Alteração Pós Integração.
Rota: /nfs/api/v1.1/integration/{table}
Caso seja necessário fixar alguma informação automáticamente, use a configuração after-integration:
"after-integration": {
"update": {
"RO": 1,
"PROC_DH": "CURRENT_TIMESTAMP",
"PROC_ST": 4,
"PROC_DESC": "OS Integrada com Sucesso!!"
}
},
Dentro da chave update, adicione as colunas e seus valores para serem alterados.
curl
curl --request POST \
--url https://nfs.local/nfs/api/v1.1/integration/os \
--header 'Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJuZnMubG9jYWwiLCJuYW1lIjoic2ltb3ZhLmFkbWluQHNpbW92YS5jb20uYnIiLCJlbWFpbCI6InNpbW92YS5hZG1pbkBzaW1vdmEuY29tLmJyIiwiZmlsaWFsIjoiVkVTUFVDSU8iLCJsb2NhbCI6IjEwQVZTUDIwIiwiZXhwIjoiMjAyNS0wOC0yOSAyMDowODozOCJ9.ZQ33N4mwsAEurobAKHDLjL4mXq1C22zuXFLGl9SO7mo=' \
--header 'Content-Type: application/json' \
--header 'User-Agent: insomnia/11.2.0' \
--cookie PHPSESSID=9p3g4gne2d91p72phhu29r8eqq \
--data '{"CodigoOt":"000043201168" }'
No exemplo do CURL a OS com código 000043201168, vai ser ter o campos alterados para:
- RO igual a 1
- PROD_DH igual a data atual da filial
- PROC_ST igual a 4
- PROC_DESC igual ao texto: OS Integrada com Sucesso!!
Exemplo da configuração completa
{
"alias": "OrdemServico",
"table": "OS",
"conditions": [
"PROC_ST IN (1)"
],
"msgForConditions": "Registro já foi lido!",
"field":
{
"Periodo":
{
"column": "INI_DH",
"type": "period",
"size": 100,
"description": "Periodo Busca de Apontamentos"
},
"CodigoOt":
{
"column": "CODIGO",
"type": "varchar",
"size": 100,
"description": "Codigo da OS"
}
},
"updateIntegration":
[
"RO = 1",
"PROC_DH = CURRENT_TIMESTAMP",
"PROC_ST = 4",
"PROC_DESC = 'OS Integrada com sucesso'"
],
"after-integration": {
"update": {
"RO": 1,
"PROC_DH": "CURRENT_TIMESTAMP",
"PROC_ST": 4,
"PROC_DESC": "OS Integrada com Sucesso!!"
}
},
"output":
{
"FILIAL":
{
"field": "Filial",
"type": "sys",
"returnColumns":
[
"SIGLA"
]
},
"LOCAL":
{
"field": "Local",
"type": "sys",
"returnColumns":
[
"SIGLA"
]
},
"CODIGO":
{
"field": "CodigoOs",
"type": "varchar"
},
"EQUIPAMENTO_SEQ_DB":
{
"field":
[
"Chassi"
],
"type": "fk",
"fk": true,
"tableOrigin": "EQUIPAMENTO",
"columns":
[
"CHASSI"
]
},
"Apontamento":
{
"table": "apontamento",
"type": "child",
"description": "Vinculo com OS",
"columns":
{
"SEQ_DB_DEVICE_MASTER_SEQ_DB":
{
"field":
[
"SeqBoletim",
"DataInicialBoletim",
"DataFinalBoletim"
],
"type": "fk",
"fk": true,
"tableOrigin": "BOLETIM",
"columns":
[
"SEQ_DB_DEVICE",
"INI_DH",
"FIM_DH"
]
},
"SEQ_DB_DEVICE":
{
"field": "SequencialApontamento",
"type": "varchar"
},
"INI_DH":
{
"field": "DataInicialApontamento",
"type": "varchar"
},
"FIM_DH":
{
"field": "DataFinalApontamento",
"type": "varchar"
},
"TIPO_APONTAMENTO":
{
"field": "TipoApontamento",
"type": "varchar"
},
"FUNCIONARIO_SEQ_DB":
{
"field":
[
"NomeFuncionario",
"CrachaFuncionario"
],
"type": "fk",
"fk": true,
"tableOrigin": "FUNCIONARIO",
"columns":
[
"NOME",
"CRACHA"
]
},
"SERVICO_SEQ_DB":
{
"field":
[
"CodigoServico",
"DescricaoServico",
"FlagDeslocamento"
],
"type": "fk",
"fk": true,
"tableOrigin": "SERVICO",
"columns":
[
"CODIGO",
"DESCRICAO",
"FLAG_DESLOCAMENTO"
]
},
"GRUPO_SERVICO_SEQ_DB":
{
"field":
[
"CodigoGrupoServico",
"DescricaoGrupoServico"
],
"type": "fk",
"fk": true,
"tableOrigin": "GRUPO_SERVICO",
"columns":
[
"CODIGO",
"DESCRICAO"
]
},
"CLIENTE_SEQ_DB":
{
"field":
[
"CodigoCliente",
"LojaCliente",
"DescricaoCliente"
],
"type": "fk",
"fk": true,
"tableOrigin": "CLIENTE",
"columns":
[
"CODIGO",
"LOJA",
"DESCRICAO"
]
},
"INI_FIM_DIFF_SEC":
{
"field": "TempoApontado",
"type": "int"
},
"OS_CRIADA":
{
"field": "OsCriada",
"type": "varchar"
},
"POSICAO_PLAT":
{
"field": "Latitude",
"type": "varchar"
},
"POSICAO_PLON":
{
"field": "Longitude",
"type": "varchar"
}
}
},
"aptDescricaoServico":
{
"table": "APONTAMENTO_DESCRICAO_SERVICO",
"type": "child",
"description": "Vinculo com OS",
"columns":
{
"SEQ_DB_DEVICE":
{
"field": "SequencialApontamento",
"type": "varchar"
},
"INI_DH":
{
"field": "DataInicialApontamento",
"type": "varchar"
},
"FIM_DH":
{
"field": "DataFinalApontamento",
"type": "varchar"
},
"SEQ_DB_DEVICE_MASTER_SEQ_DB":
{
"field":
[
"SeqBoletim",
"DataInicialBoletim",
"DataFinalBoletim"
],
"type": "fk",
"fk": true,
"tableOrigin": "BOLETIM",
"columns":
[
"SEQ_DB_DEVICE",
"INI_DH",
"FIM_DH"
]
},
"FUNCIONARIO_SEQ_DB":
{
"field":
[
"NomeFuncionario",
"CrachaFuncionario"
],
"type": "fk",
"fk": true,
"tableOrigin": "FUNCIONARIO",
"columns":
[
"NOME",
"CRACHA"
]
},
"CODIGO_OS":
{
"field": "CodigoOsApontado",
"type": "varchar"
},
"OS_SEQ_DB":
{
"field":
[
"CodigoOs"
],
"type": "fk",
"fk": true,
"tableOrigin": "OS",
"columns":
[
"CODIGO"
]
},
"OS_CRIADA":
{
"field": "OsCriada",
"type": "varchar"
},
"CLIENTE_SEQ_DB":
{
"field":
[
"CodigoCliente",
"DescricaoCliente",
"LojaCliente"
],
"type": "fk",
"fk": true,
"tableOrigin": "CLIENTE",
"columns":
[
"CODIGO",
"DESCRICAO",
"LOJA"
]
},
"RECLAMACAO_CLIENTE":
{
"field": "ReclamacaoCliente",
"type": "varchar"
},
"CAUSA":
{
"field": "Causa",
"type": "varchar"
},
"SOLUCAO":
{
"field": "Solucao",
"type": "varchar"
},
"INI_FIM_DIFF_SEC":
{
"field": "HorasApontamento",
"type": "varchar"
}
}
}
}
}