Pular para o conteúdo principal

Rotina: Transporte — CT-e e MDF-e

Emissão de Conhecimento de Transporte Eletrônico (CT-e), Manifesto Eletrônico de Documentos Fiscais (MDF-e), controle de viagens, veículos e motoristas.


Módulos Delphi​

ArquivoPapel
source/MTR001/UMTR001.pasForm principal — viagens, rotas, despesas
source/MTR001/UdmMTR001.pasDataModule de viagens
source/jFaturamento/jCTe.pasEngine de emissão CT-e (assinatura, transmissão, retorno)
source/jFaturamento/jMDFe.pasEngine de emissão MDF-e
source/TFA*/Telas de emissão CT-e e MDF-e

Classes em jCTe.pas:

ClasseResponsabilidade
TCTeRecepcaoTransmissão do CT-e à SEFAZ
TCTeRetRecepcaoConsulta de retorno de lote
TCTeConsultaConsulta de situação por chave de acesso
TCTeCancelamentoCancelamento de CT-e
TCTeCartaCorrecaoCarta de Correção Eletrônica (CC-e)
TCTeInutilizacaoInutilização de série/numeração

Enum TAcaoCTe:

acEmitindoCTe
acCancelando
acCartaCorrecao
acConsultando
acInutilizando
acEncerrandoMDFe

Classes em jMDFe.pas:

ClasseResponsabilidade
TMDFeRecepcaoTransmissão do MDF-e
TMDFeEncerramentoEncerramento do MDF-e no destino
TMDFeTrocaMotoristaSubstituição de motorista em viagem
TMDFeConsultaConsulta de situação
TMDFeCancelamentoCancelamento antes de iniciar viagem

Enum TAcaoMDFe:

amEmitindoMDFe
amEncerrandoMDFe
amTrocandoMotoristaMDFe
amCancelando
amConsultando

Tabelas do Banco de Dados​

MDFE — Manifesto Eletrônico​

DDL: docs/schema/tables/MDFE.sql Chave primária: (CD_EMPRESA, NR_MDFE)

CampoTipoDescrição
NR_MDFEINTEGERNúmero sequencial do MDF-e
NR_CHAVEACESSOVARCHAR(44)Chave de acesso (44 dígitos — mesmo algoritmo NF-e)
CD_SERIEVARCHAR(3)Série do MDF-e
DT_EMISSAOTIMESTAMPData/hora de emissão
DT_ENCERRAMENTOTIMESTAMPData/hora de encerramento no destino (NULL = em trânsito)
DT_CANCELAMENTOTIMESTAMPData/hora de cancelamento
ST_MDFECHAR(1)'N'=Normal (autorizado), 'C'=Cancelado, 'E'=Encerrado
TP_EMITCHAR(1)'1'=Prestador de serviço de transporte, '2'=Transportador de carga própria
TP_TRANSPCHAR(1)'1'=ETC, '2'=TAC, '3'=CTC
CD_UFCARREGAMENTOVARCHAR(2)UF de carregamento
CD_UFDESTINOVARCHAR(2)UF(s) de destino (múltiplas)
NR_RNTRCVARCHAR(8)Registro Nacional de Transportadores Rodoviários de Carga
CD_VEICULOINTEGERVeículo trator (FK → VEICULO)
VL_CARGANUMERIC(15,2)Valor total da carga
QT_CARGANUMERIC(15,3)Quantidade total
UN_CARGAVARCHAR(6)Unidade (KG, TON, UN)
NR_PROTOCOLOVARCHAR(60)Protocolo de autorização SEFAZ
DS_XMLMDFEBLOBXML do MDF-e autorizado
DS_ERROSVARCHAR(4000)Erros de rejeição

MDFEMOTORISTA — Motoristas do MDF-e​

DDL: docs/schema/tables/MDFEMOTORISTA.sql Chave primária: (CD_EMPRESA, NR_MDFE, NR_SEQUENCIAL)

CampoTipoDescrição
NR_SEQUENCIALINTEGEROrdem do motorista
CD_MOTORISTAINTEGERMotorista (FK → PESSOA)
NR_CPFVARCHAR(11)CPF do motorista
NM_MOTORISTAVARCHAR(60)Nome
ST_MOTORISTACHAR(1)'A'=Ativo, 'S'=Substituído
DT_SUBSTITUICAOTIMESTAMPData da troca de motorista

MDFENOTA — Documentos Vinculados ao MDF-e​

DDL: docs/schema/tables/MDFENOTA.sql Chave primária: (CD_EMPRESA, NR_MDFE, NR_SEQUENCIAL)

CampoTipoDescrição
NR_SEQUENCIALINTEGERSequência
TP_DOCUMENTOCHAR(2)'NF'=NF-e, 'CT'=CT-e, 'CF'=CF-e SAT
NR_CHAVEACESSOVARCHAR(44)Chave de acesso do documento vinculado
CD_MUNICIPIOINTEGERMunicípio de entrega
CD_UFVARCHAR(2)UF do município

MDFEPERCURSO — UFs do Percurso​

DDL: docs/schema/tables/MDFEPERCURSO.sql

CampoTipoDescrição
NR_MDFEINTEGERMDF-e
NR_SEQUENCIALSMALLINTOrdem no percurso
CD_UFPERCURSOVARCHAR(2)UF intermediária (ex: 'PR', 'SP', 'RJ')

VEICULO — Frota​

DDL: docs/schema/tables/VEICULO.sql Chave primária: (CD_EMPRESA, CD_VEICULO)

CampoTipoDescrição
NR_PLACAVARCHAR(7)Placa (ex: 'ABC1D23')
NR_CHASSISVARCHAR(17)Número de chassi
NR_RENAVAMVARCHAR(11)RENAVAM
NR_RNTRCVARCHAR(8)RNTRC do veículo
TP_VEICULOCHAR(1)'T'=Trator, 'R'=Reboque, 'S'=Semirreboque
CD_TPCARROCERIASMALLINTTipo de carroceria (SEFAZ)
KM_AQUISICAOINTEGERQuilometragem de aquisição
KM_ATUALINTEGERQuilometragem atual
DT_VENCIMENTO_RNTRCDATEVencimento do RNTRC
DT_VENCIMENTO_SEGURODATEVencimento do seguro
CD_PROPRIEDADECHAR(1)'P'=Próprio, 'T'=Terceiro
CD_PESSOAINTEGERProprietário (se terceiro)

CT-e — Tabelas de Conhecimento de Transporte​

TabelaDescrição
CTECabeçalho do CT-e (NR_CTE, NR_CHAVEACESSO, ST_CTE: N/C, VL_PRESTACAO)
CTEPRESTACAOComponentes do valor (frete, seguro, gris, pedagio)
CTEMERCADORIAMercadorias transportadas
CTEDOCUMENTODocumentos fiscais vinculados (NF-e, CF-e)
CTETOMADORTomador do serviço (remetente, destinatário, expedidor, recebedor)

ROTATRANSPORTE — Rotas e Viagens​

DDL: docs/schema/tables/ROTATRANSPORTE.sql

CampoTipoDescrição
NR_ROTAINTEGERSequencial da viagem (PK)
CD_MOTORISTAINTEGERMotorista (FK → PESSOA)
CD_VEICULOINTEGERVeículo (FK → VEICULO)
DT_SAIDATIMESTAMPData/hora de saída
DT_RETORNOTIMESTAMPData/hora de retorno
KM_SAIDAINTEGERHodômetro na saída
KM_RETORNOINTEGERHodômetro no retorno
VL_FRETENUMERIC(15,2)Valor total do frete
VL_DESPESASNUMERIC(15,2)Despesas da viagem
ST_VIAGEMCHAR(1)'A'=Aberta, 'E'=Encerrada, 'C'=Cancelada
NR_MDFEINTEGERMDF-e vinculado à viagem

Parâmetros (PARMTRANSPORTE)​

ParâmetroTipoEfeito
ST_EMITECTES/N'S' = empresa emite CT-e (transportadora)
ST_EMITEMDFES/N'S' = empresa emite MDF-e
CD_SERIECTVARCHAR(3)Série padrão do CT-e
CD_SERIEMDFEVARCHAR(3)Série padrão do MDF-e
CD_AMBIENTE_CTECHAR'1'=Produção, '2'=Homologação
NR_RNTRC_EMPRESAVARCHAR(8)RNTRC da empresa transportadora
TP_EMIT_PADRAOCHARTipo emitente padrão (1=ETC, 2=carga própria)

Fluxo de Emissão CT-e​

┌──────────────────────────────────────────────────────────┐
│ 1. PRESTAÇÃO DO SERVIÇO │
│ Transportadora recebe NFs para transporte │
│ Informa: tomador, remetente, destinatário │
│ Valor do frete + componentes (gris, pedagio, seguro) │
│ Vincula NF-e(s) ao CT-e (CTEDOCUMENTO) │
└─────────────────────────┬────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────┐
│ 2. EMISSÃO (jCTe.pas — TCTeRecepcao) │
│ Gera XML do CT-e (schema cte_v04_00.xsd) │
│ Assina com certificado digital A1/A3 │
│ Transmite lote à SEFAZ: POST /cte/ws │
│ ST_CTE := 'N' (autorizado) │
│ NR_PROTOCOLO preenchido │
│ DANFE-CT impressa ou enviada por e-mail │
└─────────────────────────┬────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────┐
│ 3. CANCELAMENTO (até 168h após autorização) │
│ TCTeCancelamento → POST /cancelamento │
│ ST_CTE := 'C' │
│ DT_CANCELAMENTO preenchida │
│ Evento registrado na SEFAZ │
└──────────────────────────────────────────────────────────┘

Fluxo de Emissão MDF-e​

┌──────────────────────────────────────────────────────────┐
│ 1. INÍCIO DA VIAGEM │
│ Seleciona veículo(s) e motorista(s) │
│ Vincula CT-e(s) ou NF-e(s) (MDFENOTA) │
│ Informa percurso: UF carregamento → UFs percurso → UF destino │
│ VL_CARGA e QT_CARGA calculados dos documentos │
└─────────────────────────┬────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────┐
│ 2. TRANSMISSÃO (jMDFe.pas — TMDFeRecepcao) │
│ Gera XML do MDF-e │
│ Assina com certificado digital │
│ Transmite à SEFAZ: POST /mdfe/ws │
│ ST_MDFE := 'N' (autorizado) │
│ DasMDF-e disponível para motorista │
└─────────────────────────┬────────────────────────────────┘
│
├─── TROCA DE MOTORISTA (TAcaoMDFe = amTrocandoMotoristaMDFe)
│ TMDFeTrocaMotorista → POST /motorista
│ INSERT MDFEMOTORISTA (ST_MOTORISTA='S' no anterior)
│ INSERT MDFEMOTORISTA (novo, ST_MOTORISTA='A')
│
▼
┌──────────────────────────────────────────────────────────┐
│ 3. ENCERRAMENTO (TAcaoMDFe = amEncerrandoMDFe) │
│ TMDFeEncerramento → POST /encerramento │
│ Informa: DT_ENCERRAMENTO, município de encerramento │
│ ST_MDFE := 'E' │
│ DT_ENCERRAMENTO preenchida │
│ ROTATRANSPORTE.KM_RETORNO e DT_RETORNO atualizados │
└──────────────────────────────────────────────────────────┘

Controle de Viagens (MTR001)​

O módulo MTR001 complementa o fiscal com:

Diário de bordo:

  • Registro de hodômetros (saída/retorno)
  • Registro de despesas (combustível, pedágio, refeição)
  • Controle de adiantamentos ao motorista

CTRC (Conhecimento de Transporte Rodoviário de Cargas):

  • Documento interno para cargas que não exigem CT-e eletrônico
  • Controle de fretes pagos e a receber

Controle de manutenção de frota:

  • Vinculado a MANUTENCAOEQUIPAMENTO (mesmo módulo da OS de equipamentos)
  • Alertas por KM ou prazo (ex: troca de óleo a cada 10.000 km)

Influências em Outros Módulos​

→ Emissão NF-e​

  • CT-e vincula NF-e(s) do carregamento (CTEDOCUMENTO.NR_CHAVEACESSO)
  • MDF-e vincula CT-e(s) e/ou NF-e(s) diretas (MDFENOTA)

→ Fiscal e SPED​

  • CT-e alimenta Bloco D do SPED Fiscal (EFD-ICMS/IPI)
  • Retenção de IR/CSLL em fretes alimenta eventos REINF R-2010/R-2020

→ Pedido de Venda​

  • Entrega de pedidos usa MDF-e para carga própria (TP_EMIT='2')
  • Romaneio de expedição pode originar MDF-e de carga própria

→ Ordem de Serviço​

  • Veículos da frota têm histórico de OS de manutenção vinculados por NR_PLACA
  • KM_ATUAL atualizado via MOVESTOQUE.NR_PLACA (abastecimentos)

→ APIs Java​

  • TransporteController — CRUD de viagens e MDF-e
  • VeiculoController — histórico por placa (compartilhado com oficina)