Páginas filhas
  • Myfrota - Fluxo de Integração

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Na tabela PCINTEGRACAOWTAPARAMETRO no cadastro referente ao Myfrota possui a linha de registro relacionado ao token de acesso que será buscado utilizando o usuário e senha configurado na rotina 805 WTA; . Esse token é utilizado como credencial de acesso sempre que precisa necessário conectar na API da plataforma para envio e recebimento de dados.

  • A cada 2 horas será buscado feita a busca de um novo token de acesso.
  • Caso ocorra algum problema para gerar o token nenhuma informação será integrada, pois as chamadas de API ficará inativada até uma nova tentativa de obter o token.
  • Na coluna da tabela PCINTEGRACAOWTAPARAMETRO.PARAMETRO = 'AltToken' possui registro de data/hora da ultima tentativa de geração de token.
  • Caso a linha de registro de token coluna tabela PCINTEGRACAOWTAPARAMETRO.PARAMETRO = 'UriToken' estiver vazia significa que não foi gerado com sucesso, sendo necessário verificar se o usuário e senha cadastrado na 805 WTA esta correto, ou verificar junto a Sofit View se a o endereço final https://sofitview.com.br/api/v1/users/login esta disponível.
  • Todo token gerado com sucesso inserido na PCINTEGRACAOWTAPARAMETRO gera informação de log na tabela PCINTEGRACAOEXEC. 

...

Todo o cadastro de fornecedor é automaticamente enviado para a Sofit View, não necessitando nenhuma configuração adicional, portanto, após configurar a integração, podem ser visualizados os clientes fornecedores no sistema Sofit View.

  • A cada 2 minutos será acionado a aplicação para enviar fornecedores.
  • Para realizar a integração do fornecedor cadastrado no WinThor, é necessário, obrigatoriamente, informar o tipo de fornecedor, visto que essa informação é obrigatória no cadastro do fornecedor na plataforma da Sofitview. O vínculo do tipo de fornecedor também é realizado através da rotina 202 – Cadastro de Fornecedores, opção “Cadastro deTipo de Fornecedor – SOFITVIEW”, disponível no botão “Ações”.
  • Todos fornecedores integrado gera informação de log na tabela PCINTEGRACAOEXEC seja de sucesso ou erro.
  • Inicialmente será realizado a consulta a seguir para buscar os registros que será enviado.

...

Na rotina 528 todos os setores que estiver com a opção "Usa My Frota" marcada será enviado seus respectivos funcionário funcionários vinculados.

  • A cada 2,5 minutos será acionado a aplicação para enviar funcionário.
  • Todos funcionários integrado gera informação de log na tabela PCINTEGRACAOEXEC seja de sucesso ou erro.
  • Inicialmente será realizado a consulta a seguir para buscar os registros que será enviado. 

SQL Oracle

Observação: Existem dois parâmetros na rotina 132 para que a API verifique quais dados serão utilizados para  montar a consulta para envio. E caso esses parâmetros não esteja sendo usado a API envia todos os funcionários, conforme já funciona, no qual seu setor esta marcado para usa my frota (PCSETOR.USAMYFROTA = 'S') na 528.

  • Para que esses parâmetros funcionem, a tabela PCPARAMFILIAL precisa estár atualizada para a ultima versão disponivel do objeto PARAMETRO, através da rotina 814, para versão igual ou superior a 2.1.113.000
  • Para que esses parâmetros funcionem, o job PcJobSofitViewEmployee_2.0 precisa está atualizada para a ultima versão. Data igual ou superior a 08/09/2023 14:55
  • Caso o parâmetro 'MYFROTA_MOTORISTA_FUNC' esteja ativo, serão enviados para o myfrota somente os funcionários com o campo TIPO = M (MOTORISTA) configurado na rotina 528. (Adicione na consulta abaixo a seguinte condição: AND PCEMPR.TIPO = 'M')
  • Cadastros já realizados antes dessa melhoria não são ajustados na plataforma, pois a API da Sofit relacionado a funcionários não permite exclusão.

         Image Added

  • Caso o parâmetro 'MYFROTA_MOTORISTA_FUNC' esteja ativo, serão enviados para o myfrota somente os motorista com o campo TIPO DE MOTORISTA = F (FUNCIONÁRIO), configurado na rotina 929. (Adicione na consulta abaixo a seguinte condição: AND PCEMPR.TIPOMOTORISTA = 'F')

         Image Added


SQL Oracle

SELECT
    CAST(PCEMPR.NOME AS VARCHAR(80)) AS NAME,
    CAST(PCEMPR.MATRICULA AS VARCHAR(25)) AS REGISTRATION_NUMSELECT
    CAST(PCEMPR.NOME AS VARCHAR(80)) AS NAME,
    CAST(PCEMPR.MATRICULA AS VARCHAR(25)) AS REGISTRATION_NUM,
    NVL(CAST(PCEMPR.CNH AS VARCHAR(50)),'') AS HABILITATION_NUM,
    NVL(CAST(TO_CHAR(PCEMPR.DTVALIDADECNH, 'YYYY-MM-DD') AS VARCHAR(10)),'') AS HABILITATION_DUE_DATE,
    NVL(CAST(PCEMPR.ORGAOEMISSORCNH AS VARCHAR(25)),'') AS HABILITATION_ISSUER,
    NVL(CAST(PCEMPR.CATEGORIACNH AS VARCHAR(25)),'') AS HABILITATION_CATEGORY,
    CAST(DECODE(NVL(PCEMPR.DT_EXCLUSAO,''),'',DECODE(NVL(PCSETOR.USAMYFROTA,'N'),'S','true','false'),'false') AS VARCHAR(5)) AS ACTIVE,
    NVL(CAST(PCEMPR.CPF AS VARCHAR(20)),'') AS CPF,
    NVL(CAST(PCEMPR.RG AS VARCHAR(20)),'') AS RG,
    NVL(CAST(PCEMPR.CNH AS VARCHAR(50)),'') AS CNHHABILITATION_NUM,
    NVL(CAST(TO_CHAR(PCEMPR.DTNASCDTVALIDADECNH, 'YYYY-MM-DD') AS VARCHAR(10)),'') AS BIRTHDATEHABILITATION_DUE_DATE,
    NVL(CAST(DECODE(PCEMPR.TIPOMOTORISTA, 'F', 'CLT', 'T', 'Terceirizado', 'CLT') ORGAOEMISSORCNH AS VARCHAR(25)) AS TYPE,'') AS HABILITATION_ISSUER,
    NVL(CAST(TO_CHAR(PCEMPR.ADMISSAO, 'YYYY-MM-DD') PCEMPR.CATEGORIACNH AS VARCHAR(1025)),'') AS ADMISSIONHABILITATION_DATECATEGORY,
    TO_CHARCAST(DECODE(NVL((SELECT MAX(D.DATA)
 FROM PCLOGALTERACAODADOS D
 WHERE D.DATA BETWEEN TO_DATE(TO_CHAR(SYSDATE,'dd/mm/rrrr')||' 00:00:00','dd/mm/rrrr hh24:mi:ss') AND 
 TO_DATE(TO_CHAR(SYSDATE,'dd/mm/rrrr')||' 23:59:59','dd/mm/rrrr hh24:mi:ss')
 AND D.TABELA = 'PCEMPR'
 AND D.COLUNA = 'CODFILIAL'
 AND D.CODIGO = PCEMPR.MATRICULA), PCEMPR.ADMISSAO), 'YYYY-MM-DD HH24:MI:SS') AS SUBSIDIARY_CHANGE_DATEPCEMPR.DT_EXCLUSAO,''),'',DECODE(NVL(PCSETOR.USAMYFROTA,'N'),'S','true','false'),'false') AS VARCHAR(5)) AS ACTIVE,
    NVL(CAST(PCEMPR.CPF AS VARCHAR(20)),'') AS CPF,
    NVL(CAST(PCEMPR.CELULAR RG AS VARCHAR(20)),'') AS PHONESRG,
    NVL(CAST(PCEMPR.ENDERECO CNH AS VARCHAR(6050)),'') AS ADDRESSCNH,
    NVL(CAST(TO_CHAR(PCEMPR.ESTADO DTNASC, 'YYYY-MM-DD') AS VARCHAR(210)),'') AS ADDRESS_STATE_IDBIRTHDATE,
    NVLCAST(CASTDECODE(PCEMPR.CIDADE AS VARCHAR(50)),'') AS ADDRESS_CITY_ID,
    CAST('BR' AS VARCHAR(2)) AS ADDRESS_COUNTRYTIPOMOTORISTA, 'F', 'CLT', 'T', 'Terceirizado', 'CLT') AS VARCHAR(25)) AS TYPE,
    NVL(CAST(TO_CHAR(PCEMPR.CEP ADMISSAO, 'YYYY-MM-DD') AS VARCHAR(2010)),'') AS POSTALADMISSION_CODEDATE,
    CAST('Motorista' AS VARCHAR(25)) AS EMPLOYEE_ROLE_ID,
    CAST(PCFILIAL.RAZAOSOCIAL AS VARCHAR(60)) AS SUBSIDIARY_ID,
    NVL(CAST(PCEMPR.ORGAOEMISSORRG AS VARCHAR(20)),'') AS RG_ISSUER,
    CAST(PCEMPR.IDINTEGRACAOMYFROTA AS VARCHAR(50)) AS EXTERNAL_ID,
    PCSETOR.DESCRICAO AS DEPARTMENT,
    PCEMPR.EMAIL AS EMAIL,
    PCEMPR.BAIRRO AS ADRESS_NEIGHBORHOOD
FROM PCEMPR, PCSETOR, PCFILIAL
WHERE PCEMPR.CODSETOR = PCSETOR.CODSETOR
  AND PCEMPR.CODFILIAL = PCFILIAL.CODIGO
  AND PCSETOR.USAMYFROTA = 'S'
  AND
  (IDSOFITVIEW IS NULL
    OR ((TO_DATE(TO_CHAR(NVL(DT_EXCLUSAO,TO_DATE('01/01/1900','DD/MM/YYYY HH24:MI:SS')),'DD/MM/YYYY HH24:MI:SS'),'DD/MM/YYYY HH24:MI:SS')
        - TO_DATE(TO_CHAR(NVL(DTEXCLUSAOSOFITVIEW,TO_DATE('01/01/1900','DD/MM/YYYY HH24:MI:SS')),'DD/MM/YYYY HH24:MI:SS'),'DD/MM/YYYY HH24:MI:SS')) > 0
        AND IDSOFITVIEW IS NOT NULL AND CAST(IDSOFITVIEW AS INT) > 0)
    OR (DTEXCLUSAOSOFITVIEW IS NOT NULL AND DT_EXCLUSAO IS NULL)
        TO_CHAR(NVL((SELECT MAX(D.DATA)
 FROM PCLOGALTERACAODADOS D
 WHERE D.DATA BETWEEN TO_DATE(TO_CHAR(SYSDATE,'dd/mm/rrrr')||' 00:00:00','dd/mm/rrrr hh24:mi:ss') AND 
 TO_DATE(TO_CHAR(SYSDATE,'dd/mm/rrrr')||' 23:59:59','dd/mm/rrrr hh24:mi:ss')
 AND D.TABELA = 'PCEMPR'
 AND D.COLUNA = 'CODFILIAL'
 AND D.CODIGO = PCEMPR.MATRICULA), PCEMPR.ADMISSAO), 'YYYY-MM-DD HH24:MI:SS') AS SUBSIDIARY_CHANGE_DATE,
    NVL(CAST(PCEMPR.CELULAR AS VARCHAR(20)),'') AS PHONES,
    NVL(CAST(PCEMPR.ENDERECO AS VARCHAR(60)),'') AS ADDRESS,
    NVL(CAST(PCEMPR.ESTADO AS VARCHAR(2)),'') AS ADDRESS_STATE_ID,
    NVL(CAST(PCEMPR.CIDADE AS VARCHAR(50)),'') AS ADDRESS_CITY_ID,
    CAST('BR' AS VARCHAR(2)) AS ADDRESS_COUNTRY,
    NVL(CAST(PCEMPR.CEP AS VARCHAR(20)),'') AS POSTAL_CODE,
    CAST('Motorista' AS VARCHAR(25)) AS EMPLOYEE_ROLE_ID,
    CAST(PCFILIAL.RAZAOSOCIAL AS VARCHAR(60)) AS SUBSIDIARY_ID,
    NVL(CAST(PCEMPR.ORGAOEMISSORRG AS VARCHAR(20)),'') AS RG_ISSUER,
    CAST(PCEMPR.IDINTEGRACAOMYFROTA AS VARCHAR(50)) AS EXTERNAL_ID,
    PCSETOR.DESCRICAO AS DEPARTMENT,
    PCEMPR.EMAIL AS EMAIL,
    PCEMPR.BAIRRO AS ADRESS_NEIGHBORHOOD
FROM PCEMPR, PCSETOR, PCFILIAL
WHERE PCEMPR.CODSETOR = PCSETOR.CODSETOR
  AND PCEMPR.CODFILIAL = PCFILIAL.CODIGO
  AND PCSETOR.USAMYFROTA = 'S'
  AND
  (IDSOFITVIEW IS NULL
    OR ((TO_DATE(TO_CHAR(NVL(PCSETOR.DTULTALTERDT_EXCLUSAO,TO_DATE('01/01/1900','DD/MM/YYYY HH24:MI:SS')),'DD/MM/YYYY HH24:MI:SS'),'DD/MM/YYYY HH24:MI:SS')
        - TO_DATE(TO_CHAR(NVL(DTULTALTERSOFITVIEWDTEXCLUSAOSOFITVIEW,TO_DATE('01/01/1900','DD/MM/YYYY HH24:MI:SS')),'DD/MM/YYYY HH24:MI:SS'),'DD/MM/YYYY HH24:MI:SS')) > 0
        AND DTULTALTERSOFITVIEW IDSOFITVIEW IS NOT NULL AND CAST(IDSOFITVIEW AS INT) > 0)
    OR (DTEXCLUSAOSOFITVIEW IS NOT NULL AND DT_EXCLUSAO IS NULL)
        OR ((TO_DATE(TO_CHAR(NVL(PCEMPRPCSETOR.DTULTALTER,TO_DATE('01/01/1900','DD/MM/YYYY HH24:MI:SS')),'DD/MM/YYYY HH24:MI:SS'),'DD/MM/YYYY HH24:MI:SS')
        - TO_DATE(TO_CHAR(NVL(DTULTALTERSOFITVIEW,TO_DATE('01/01/1900','DD/MM/YYYY HH24:MI:SS')),'DD/MM/YYYY HH24:MI:SS'),'DD/MM/YYYY HH24:MI:SS')) > 0
        AND DTULTALTERSOFITVIEW IS NOT NULL)
  )
ORDER BY PCEMPR.MATRICULA DESC

Route (Rotas)

Todo o cadastro de rotas é automaticamente enviado para a Sofit View, não necessitando nenhuma configuração adicional, portanto, após configurar a integração, podem ser visualizados os clientes no sistema Sofit View.

  • A cada 4 minutos será acionado a aplicação para enviar rotas.
  • Todas rotas integradas gera informação de log na tabela PCINTEGRACAOEXEC seja de sucesso ou erro.
  • Inicialmente será realizado a consulta a seguir para buscar os registros que será enviado. 

SQL Oracle

SELECT
       CAST('INDEFINIDA' AS VARCHAR(50)) AS NAME,
       CAST('0' AS VARCHAR(50)) AS FORESEEN_DISTANCE,
       CAST('0000000001' AS VARCHAR(50)) AS EXTERNAL_ID
FROM DUAL
WHERE
  (SELECT COUNT(CODROTA) FROM PCROTAEXP WHERE IDSOFITVIEW IS NULL) > 0

UNION ALL

  OR ((TO_DATE(TO_CHAR(NVL(PCEMPR.DTULTALTER,TO_DATE('01/01/1900','DD/MM/YYYY HH24:MI:SS')),'DD/MM/YYYY HH24:MI:SS'),'DD/MM/YYYY HH24:MI:SS')
        - TO_DATE(TO_CHAR(NVL(DTULTALTERSOFITVIEW,TO_DATE('01/01/1900','DD/MM/YYYY HH24:MI:SS')),'DD/MM/YYYY HH24:MI:SS'),'DD/MM/YYYY HH24:MI:SS')) > 0
        AND DTULTALTERSOFITVIEW IS NOT NULL)

--Retirar o comentario abaixo (--), somente se o parametro 4724 - Enviar ao myfrota somente funcionário do tipo motorista (MYFROTA_ENVIA_MOTORISTA) estiver igual a Sim
--AND PCEMPR.TIPO = 'M' 

--Retirar o comentario abaixo (--), somente se o parametro 4725 - Enviar ao myfrota somente motorista do tipo funcionário - (MYFROTA_MOTORISTA_FUNC) estiver igual a Sim
-- AND PCEMPR.TIPOMOTORISTA = 'F' 
 AND ROWNUM < 101
)
ORDER BY PCEMPR.MATRICULA DESC

Route (Rotas)

Todo o cadastro de rotas é automaticamente enviado para a Sofit View, não necessitando nenhuma configuração adicional, portanto, após configurar a integração, podem ser visualizadas as rotas no sistema Sofit View.

  • A cada 4 minutos será acionado a aplicação para enviar rotas.
  • Todas rotas integradas gera informação de log na tabela PCINTEGRACAOEXEC seja de sucesso ou erro.
  • Inicialmente será realizado a consulta a seguir para buscar os registros que será enviado. 

SQL Oracle

SELECT
       CAST('INDEFINIDA' AS VARCHAR(50)) AS NAME,
       CAST('0' AS VARCHAR(50)) AS FORESEEN_DISTANCE,
       CAST('0000000001' AS VARCHAR(50)) AS EXTERNAL_ID
FROM DUAL
WHERE
  (SELECT COUNT(CODROTA) FROM PCROTAEXP WHERE IDSOFITVIEW IS NULL) > 0

UNION ALL

SELECT
       CAST(ROT.DESCRICAO AS VARCHAR(50)) AS NAME,
       CAST(NVL(ROT.KMROTA,'0') AS VARCHAR(50)) AS FORESEEN_DISTANCE,
       CAST(ROT.ROWID AS VARCHAR(50)) AS EXTERNAL_ID
FROM PCROTAEXP ROT
WHERE
  (IDSOFITVIEW IS NULL
    OR ((TO_DATE(TO_CHAR(NVL((SELECT MAX(DATALOG) FROM PCLOGCADASTRO WHERE ROWIDCAMPO = ROT.ROWID AND NOMEOBJETO = 'PCROTAEXP'),TO_DATE('01/01/1900','DD/MM/YYYY HH24:MI:SS')),'DD/MM/YYYY HH24:MI:SS'),'DD/MM/YYYY HH24:MI:SS')
        - TO_DATE(TO_CHAR(NVL(DTULTALTERSOFITVIEW,TO_DATE('01/01/1900','DD/MM/YYYY HH24:MI:SS')),'DD/MM/YYYY HH24:MI:SS'),'DD/MM/YYYY HH24:MI:SS')) > 0
        )
  )

Trip (Carregamento)

Quando é faturado carregamento no Winthor, o mesmo deve ser enviado de forma automática para a Sofit View.

  • A cada 4,5 minutos será acionado a aplicação para enviar carregamentos.
  • Todas carregamentos integradas gera informação de log na tabela PCINTEGRACAOEXEC seja de sucesso ou erro.
  • Inicialmente será realizado a consulta a seguir para buscar os registros que será enviado. 

SQL Oracle

SELECT CAR.IDINTEGRACAOMYFROTA AS EXTERNAL_ID,
       CAST(NVL(CAR.IDSOFITVIEW, 0) AS INT) AS IDSOFITVIEW,
       CAST(UPPER(REGEXP_REPLACE(VEI.PLACA, '[^a-zA-Z0-9]', '')) AS
            VARCHAR(10)) AS VEHICLE,
       EMP.NOME AS EMPLOYEE,
       CAST(NVL(ROT.DESCRICAO, 'INDEFINIDA') AS VARCHAR(40)) AS ROUTE,
       CAST(TO_CHAR(CAR.DTSAIDA, 'YYYY-MM-DD') AS VARCHAR(10)) AS DATA,
       'Carregamento: ' || CAR.NUMCAR AS OBSERVATION,
       'Planejada' AS STATUS,
       CAR.NUMCAR AS DOCNUMBER
FROM   PCCARREG CAR, PCVEICUL VEI, PCEMPR EMP, PCROTAEXP ROT
WHERE  CAR.CODVEICULO = VEI.CODVEICULO AND
       CAR.CODMOTORISTA = EMP.MATRICULA AND
       CAR.CODROTAPRINC = ROT.CODROTA AND
       NVL(VEI.IDSOFITVIEW, 0) > 0 AND
       NVL(EMP.IDSOFITVIEW, 0) > 0 AND
       CAR.DTFAT IS NOT NULL
       AND CAR.DTFECHA IS NULL   
   AND CAR.IDSOFITVIEW IS NULL  
ORDER  BY CAR.DTFAT ASC

Para envio de atualização de viagem, transferência de nota, cancelamento de nota e envio de nota o carregamento deverá aparecer na consulta abaixo, que é feita pela API no momento do envio.

Importante: Depois que o carregamento está fechado não e possível enviar mais os carregamentos e notas .

SQL Oracle

SELECT CAR.IDINTEGRACAOMYFROTA AS EXTERNAL_ID

...

,
       CAST(NVL(

...

CAR.

...

IDSOFITVIEW,

...

0

...

) AS

...

Trip (Carregamento)

Quando é faturado carregamento no Winthor, o mesmo deve ser enviado de forma automática para a Sofit View.

  • A cada 4,5 minutos será acionado a aplicação para enviar carregamentos.
  • Todas carregamentos integradas gera informação de log na tabela PCINTEGRACAOEXEC seja de sucesso ou erro.
  • Inicialmente será realizado a consulta a seguir para buscar os registros que será enviado. 

SQL Oracle

...

INT) AS IDSOFITVIEW,
       CAST(UPPER(REGEXP_REPLACE(VEI.PLACA, '[^a-zA-Z0-9]', '')) AS
            VARCHAR(10)) AS VEHICLE,
       EMP.NOME AS EMPLOYEE,
       CAST(NVL(ROT.DESCRICAO, 'INDEFINIDA') AS VARCHAR(40)) AS ROUTE,
       CAST(TO_CHAR(CAR.DTSAIDA, 'YYYY-MM-DD') AS VARCHAR(10)) AS DATA,
       'Carregamento: ' || CAR.NUMCAR AS OBSERVATION,
       'Planejada' AS STATUS,
       CAR.NUMCAR AS DOCNUMBER
FROM   PCCARREG CAR, PCVEICUL VEI, PCEMPR EMP, PCROTAEXP ROT
WHERE  CAR.CODVEICULO = VEI.CODVEICULO AND
       CAR.CODMOTORISTA = EMP.MATRICULA AND
       CAR.CODROTAPRINC = ROT.CODROTA AND
       NVL(VEI.IDSOFITVIEW, 0) > 0 AND
       NVL(EMP.IDSOFITVIEW, 0) > 0 AND
       CAR.DTFAT IS NOT NULL
   AND CAR.IDSOFITVIEW IS NOT NULL
       AND CAR.DTFECHA IS NULL   
   AND ((TO_DATE(TO_CHAR(CAR.DTULTALTER,'DD/MM/YYYY HH24:MI:SS'),'DD/MM/YYYY HH24:MI:SS')
- TO_DATE(TO_CHAR(CAR.DTULTALTERSOFITVIEW,'DD/MM/YYYY HH24:MI:SS'),'DD/MM/YYYY HH24:MI:SS')) > 0
OR ((TO_DATE(TO_CHAR(CAR.DTULTALTER,'DD/MM/YYYY'),'DD/MM/YYYY')
- TO_DATE(TO_CHAR(CAR.DTULTALTERSOFITVIEW,'DD/MM/YYYY'),'DD/MM/YYYY') = 0)
AND
   (TO_DATE(TO_CHAR(CAR.DTULTALTERSOFITVIEW,'HH24:MI:SS'),'HH24:MI:SS')
- TO_DATE(TO_CHAR(CAR.DTULTALTER,'HH24:MI:SS'),'HH24:MI:SS') > 0))
   )   
ORDER  BY CAR.DTFAT ASC