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

Versões comparadas

Chave

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

Entradas de dados direção Sofit View para Winthor

1 - Token

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 conectar na API da plataforma para envio e recebimento de dados.

...

  • A cada 3,5 minutos será realizado uma requisição a Sofit View para buscar as novas ordem de serviço cadastrados.
  • Todas as ordem de serviço são inseridas em PCPREREQMATCONSUMOC.
  • A atualização e realizada a cada 3,5 minutos quando será realizado uma requisição a Sofit View e buscado os registros alterados nos últimos 7 dias.
  • A exclusão de ordem de serviço ocorre a cada 3,5 minutos quando será realizado uma requisição a Sofit View e buscado os registros que foram excluídos da plataforma.
  • Todo veiculo integrado inserido na PCPREREQMATCONSUMOC gera informação de log na tabela PCINTEGRACAOEXEC.

Saida de dados direção Winthor para Sofit View

Item (Produtos)

Na rotina 203, informe Sim no campo "Enviar para o myFrota" para todos produtos que deseja enviar para a Sofit View.

  • A cada 1,5 minutos será acionado a aplicação para enviar produtos.
  • Todos produtos 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

SELECT
    CAST(NVL(DESCRICAO,'') AS VARCHAR2(80)) AS NAME,
    CAST('Un - Unidade' AS VARCHAR2(18)) AS MEASUREMENT_UNIT_ID,
    CAST('Ferramentas' AS VARCHAR2(18)) AS SUB_SYSTEM_ID,
    CAST(NVL(REGEXP_REPLACE(NBM, '[^0-9]', ''), '') AS VARCHAR2(50)) AS NCM_CODE,
    CAST(DECODE(NVL(DTEXCLUSAO,''),'','true','false') AS VARCHAR(5)) AS ACTIVE,
    CAST('Outros' AS VARCHAR2(50)) AS TYPE,
    CAST(IDINTEGRACAOMYFROTA AS VARCHAR2(50)) AS EXTERNAL_ID
FROM PCPRODUT
WHERE
  (IDSOFITVIEW IS NULL
    OR ((TO_DATE(TO_CHAR(NVL(DTEXCLUSAO,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 DTEXCLUSAO IS NULL)
    OR (TO_DATE(TO_CHAR(DTULTALTER,'DD/MM/YYYY HH24:MI:SS'),'DD/MM/YYYY HH24:MI:SS')
        - TO_DATE(TO_CHAR(DTULTALTERSOFITVIEW,'DD/MM/YYYY HH24:MI:SS'),'DD/MM/YYYY HH24:MI:SS')) > 0
    OR ((TO_DATE(TO_CHAR(DTULTALTER,'DD/MM/YYYY'),'DD/MM/YYYY')
        - TO_DATE(TO_CHAR(DTULTALTERSOFITVIEW,'DD/MM/YYYY'),'DD/MM/YYYY') = 0)
        AND
       (TO_DATE(TO_CHAR(DTULTALTERSOFITVIEW,'HH24:MI:SS'),'HH24:MI:SS')
        - TO_DATE(TO_CHAR(DTULTALTER,'HH24:MI:SS'),'HH24:MI:SS') > 0))
  )
  AND MYFROTA = 'S'
  ORDER BY CODPROD DESC

Customer (Cliente)

Todo o cadastro de clientes é 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 1 minuto será acionado a aplicação para enviar clientes.
  • Todos clientes 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

SELECT
  CAST(REGEXP_REPLACE(CLIENTE,'''',' ') AS VARCHAR(60)) AS NAME,
  CAST(REGEXP_REPLACE(FANTASIA,'''',' ') AS VARCHAR(40)) AS FANTASY_NAME,
  NVL(CGCENT,CGCENTREGA) AS CNPJ,
  CAST(REGEXP_REPLACE(NVL(CGCENT,CGCENTREGA), '[^0-9]', '') AS VARCHAR(20)) AS CNPJ_AUX,
  ENDERCOM AS ADDRESS,
  NUMEROCOM AS ADDRESS_NUM,
  ENDERCOM AS ADDRESS_NEIGHBORHOOD,
  ESTCOM AS ADDRESS_STATE_ID,
  PCCIDADE.NOMECIDADE AS ADDRESS_CITY_ID,
  BAIRROCOM AS ADDRESS_COMPLEMENTARY,
  CEPCOM AS POSTAL_CODE,
  CAST(DECODE(NVL(DTEXCLUSAO,''),'','true','false') AS VARCHAR(5)) AS ACTIVE,
  NVL(REGEXP_REPLACE(CODCNAE, '[^[:digit:]]'),0) AS CNAE,
  CAST(IDINTEGRACAOMYFROTA AS VARCHAR(60)) AS EXTERNAL_ID
FROM PCCLIENT, PCCIDADE
WHERE
  (IDSOFITVIEW IS NULL
    OR ((TO_DATE(TO_CHAR(NVL(DTEXCLUSAO,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 DTEXCLUSAO IS NULL)
    OR (TO_DATE(TO_CHAR(DTULTALTER,'DD/MM/YYYY HH24:MI:SS'),'DD/MM/YYYY HH24:MI:SS')
        - TO_DATE(TO_CHAR(DTULTALTERSOFITVIEW,'DD/MM/YYYY HH24:MI:SS'),'DD/MM/YYYY HH24:MI:SS')) > 0
    OR ((TO_DATE(TO_CHAR(DTULTALTER,'DD/MM/YYYY'),'DD/MM/YYYY')
        - TO_DATE(TO_CHAR(DTULTALTERSOFITVIEW,'DD/MM/YYYY'),'DD/MM/YYYY') = 0)
        AND
       (TO_DATE(TO_CHAR(DTULTALTERSOFITVIEW,'HH24:MI:SS'),'HH24:MI:SS')
        - TO_DATE(TO_CHAR(DTULTALTER,'HH24:MI:SS'),'HH24:MI:SS') > 0))
  )
  AND PCCLIENT.CODCIDADECOM = PCCIDADE.CODCIDADE(+)
 AND NVL(CGCENT,CGCENTREGA) IS NOT NULL
ORDER BY CODCLI DESC

Supplier (Fornecedor)

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 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.

SQL Oracle

SELECT NAME, FANTASY_NAME, CNPJ, CNPJ_AUX, ADDRESS, ADDRESS_NUM, ADDRESS_NEIGHBORHOOD,
ADDRESS_STATE_ID, ADDRESS_CITY_ID, ADDRESS_COMPLEMENTARY, POSTAL_CODE, ACTIVE, CNAE, TO_CHAR(TYPE) type,
PHONES, EMAIL, EXTERNAL_ID
FROM (SELECT
  CAST(REGEXP_REPLACE(FORNECEDOR,'''',' ') AS VARCHAR(60)) AS NAME,
  CAST(REGEXP_REPLACE(FANTASIA,'''',' ') AS VARCHAR(40)) AS FANTASY_NAME,
  CGC AS CNPJ,
  CAST(REGEXP_REPLACE(CGC, '[^0-9]', '') AS VARCHAR(20)) AS CNPJ_AUX,
  ENDER AS ADDRESS,
  NUMEROEND AS ADDRESS_NUM,
  ENDER AS ADDRESS_NEIGHBORHOOD,
  ESTADO AS ADDRESS_STATE_ID,
  PCCIDADE.NOMECIDADE AS ADDRESS_CITY_ID,
  BAIRRO AS ADDRESS_COMPLEMENTARY,
  CEP AS POSTAL_CODE,
  CAST(DECODE(NVL(DTEXCLUSAO,''),'','true','false') AS VARCHAR(5)) AS ACTIVE,
  NVL(CAE,0) AS CNAE,
  nvl((select Wm_concat(pctipofornecsofitview.desctipofornecsv) desctipofornecsv from
            pctipofornecsofitview, pcfornecsofitview, pcfornec f
            where f.codfornec = pcfornecsofitview.codfornec
            and pcfornecsofitview.codtipofornecsv = pctipofornecsofitview.codtipofornecsv
            and f.codfornec = pcfornec.codfornec and PCFORNECSOFITVIEW.STATUS = 'A'
            ), 'Outros') AS TYPE,
  TELFAB AS PHONES,
  EMAIL AS EMAIL,
  CAST(IDINTEGRACAOMYFROTA AS VARCHAR(60)) AS EXTERNAL_ID
FROM PCFORNEC, PCCIDADE, PCFORNECSOFITVIEW
WHERE
(IDSOFITVIEW IS NULL
  OR ((TO_DATE(TO_CHAR(NVL(DTEXCLUSAO,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 DTEXCLUSAO IS NULL)
  OR (TO_DATE(TO_CHAR(PCFORNEC.DTULTALTER,'DD/MM/YYYY HH24:MI:SS'),'DD/MM/YYYY HH24:MI:SS')
      - TO_DATE(TO_CHAR(DTULTALTERSOFITVIEW,'DD/MM/YYYY HH24:MI:SS'),'DD/MM/YYYY HH24:MI:SS')) > 0 
  OR ((TO_DATE(TO_CHAR(PCFORNECSOFITVIEW.DTULTALTER,'DD/MM/YYYY HH24:MI:SS'),'DD/MM/YYYY HH24:MI:SS')
      - TO_DATE(TO_CHAR(DTULTALTERSOFITVIEW,'DD/MM/YYYY HH24:MI:SS'),'DD/MM/YYYY HH24:MI:SS')) > 0   
        ) 
  OR ((TO_DATE(TO_CHAR(PCFORNEC.DTULTALTER,'DD/MM/YYYY'),'DD/MM/YYYY')
      - TO_DATE(TO_CHAR(DTULTALTERSOFITVIEW,'DD/MM/YYYY'),'DD/MM/YYYY') = 0)
      AND
     (TO_DATE(TO_CHAR(DTULTALTERSOFITVIEW,'HH24:MI:SS'),'HH24:MI:SS')
      - TO_DATE(TO_CHAR(PCFORNEC.DTULTALTER,'HH24:MI:SS'),'HH24:MI:SS') > 0))
)
AND PCFORNEC.CODCIDADE = PCCIDADE.CODCIDADE(+)
AND PCFORNEC.CODFORNEC = PCFORNECSOFITVIEW.CODFORNEC(+)
AND CGC IS NOT NULL
ORDER BY PCFORNEC.CODFORNEC DESC)
group by NAME, FANTASY_NAME, CNPJ, CNPJ_AUX, ADDRESS, ADDRESS_NUM, ADDRESS_NEIGHBORHOOD,
ADDRESS_STATE_ID, ADDRESS_CITY_ID, ADDRESS_COMPLEMENTARY, POSTAL_CODE, ACTIVE, CNAE, TO_CHAR(type),
PHONES, EMAIL, EXTERNAL_ID

Employee (Funcionário)

Na rotina 528 todos os setores que estiver com a opção "Usa My Frota" marcada será enviado seus respectivos funcionário 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

SELECT
    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 CNH,
    NVL(CAST(TO_CHAR(PCEMPR.DTNASC, 'YYYY-MM-DD') AS VARCHAR(10)),'') AS BIRTHDATE,
    CAST(DECODE(PCEMPR.TIPOMOTORISTA, 'F', 'CLT', 'T', 'Terceirizado', 'CLT') AS VARCHAR(25)) AS TYPE,
    NVL(CAST(TO_CHAR(PCEMPR.ADMISSAO, 'YYYY-MM-DD') AS VARCHAR(10)),'') AS ADMISSION_DATE,
    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(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)
        OR ((TO_DATE(TO_CHAR(NVL(PCSETOR.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)
    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)
  )
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

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