Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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étodoURLDescriçã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

integration_structure.png

A estrutura da integração pode ser dividida em 4 partes

Topo

integration_structure_1.png

ChaveObrigatórioValorDescrição
aliasSimApelidoTabelaDeve ser um apelido para tabela sem espaço.
tableSimTABELA_NOMEÉ a Tabela Nome que está na nfs_core_ds_tabela, usada para referênciar a uma tabela do NFS

field

integration_structure_2.png

Composto pelos campos enviados, geramente é um id que no NFS representa o SEQ_DB de um dado da tabela a ser sincronizada.

ChaveObrigatórioValorDescrição
columnSimSTRINGNome da Coluna no NFS.
typeSimVarcharTipo da Coluna, geralmente é varchar
sizeSimINTEGERTamanho maximo do dado que está sendo sincronizado, ainda não é usado esse valor, mas será útil para validações futuras
descriptionNãoSTRINGDescriçã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.
primaryKeyNãotrue/falseIndica 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
requiredNãotrue/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

integration_structure_3.png

Um array onde ficam os campos que vão ser atualizados depois que o sincronismo for feito com sucesso.

output

integration_structure_4.png

Configuração dos dados que vão ser retornados para o sistema do cliente.

ChaveObrigatórioValorDescrição
aliasSimApelidoTabelaDeve 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"
                }
            }
        }
    }
}