Origem do CFOP na Importação de XML de CT-e
Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Ambos → Opção 2 → campo "CFOP Importação XML CT-E" Tabela:
PARMFATUR.ST_IMPORTACFOCTEValor padrão:E(Endereço Transportadora)
Define de onde o sistema obtém o estado (UF) usado para decidir se o CFOP do item será "dentro do estado" (inicia com 5) ou "fora do estado" (inicia com 6) quando se importa um XML de Conhecimento de Transporte Eletrônico (CT-e) na nota fiscal de entrada.
Telas impactadas
| Módulo | Código | Descrição |
|---|---|---|
| NF Entrada | MNF001 | Emissão/recebimento de NF de entrada - importação XML de CT-e e definição do CFO do item |
| Manutenção NF-e | MNF034 | Retorno de CFOP para itens/documentos quando o tipo de documento é Transporte |
Campos envolvidos
| Campo | Descrição |
|---|---|
ITEMNOTA.CD_CFO | CFO que será gravado no item da nota ao importar o CT-e |
ITEMNOTA.CD_CFODENTRO | CFO configurado na Movimentação para operações dentro do estado |
ITEMNOTA.CD_CFOFORA | CFO configurado na Movimentação para operações fora do estado |
ITEMNOTA.CD_MOVIMENTACAO | Movimentação vinculada ao item (origem dos CFOs dentro/fora) |
NOTA.SG_ESTADO | UF do endereço da transportadora (usado quando parâmetro = E) |
| CFOP lido do XML do CT-e | Primeiro dígito do CFOP do próprio CT-e (usado quando parâmetro = O) |
Opções disponíveis
E - Endereço Transportadora
| O que faz | Detalhe |
|---|---|
| Origem da UF | UF cadastrada no endereço da transportadora da nota (NOTA.SG_ESTADO) |
| Comparação | NOTA.SG_ESTADO = UF da empresa? Sim → CD_CFODENTRO; Não → CD_CFOFORA |
| Usa o CFOP do XML do CT-e? | Não, ignora o CFOP do XML para decidir |
| Comportamento | Padrão tradicional: o CFOP do item é definido pela UF da transportadora vs UF da empresa |
Simulação passo a passo
- Em MFA001 → Parâmetros → Ambos → Opção 2 → CFOP Importação XML CT-E = "Endereço Transportadora"
- Salve os parâmetros (F6)
- Abra MNF001 e importe um XML de CT-e
- Suponha empresa em RS e transportadora cadastrada em RS (mesma UF)
- O item do CT-e recebe
CD_CFO = CD_CFODENTROda movimentação (CFOP 5xxx) - Agora importe outro CT-e cuja transportadora é de SC (UF diferente)
- O item recebe
CD_CFO = CD_CFOFORA(CFOP 6xxx)
Resultado esperado: O CFOP segue a UF da transportadora. Se a transportadora é do mesmo estado da empresa, usa CFO dentro; caso contrário, CFO fora, independentemente do que está escrito no XML do CT-e.
O - Origem/Destino Transporte
| O que faz | Detalhe |
|---|---|
| Origem da UF | CFOP lido diretamente do XML do CT-e (primeiro dígito) |
| Comparação | Copy(CFOPCte, 1, 1) = '5' → CD_CFODENTRO; caso contrário → CD_CFOFORA |
| Usa o CFOP do XML do CT-e? | Sim, confia no CFOP que a transportadora emitiu |
| Comportamento | Respeita a natureza da operação declarada pela transportadora no próprio CT-e |
Simulação passo a passo
- Em MFA001 → Parâmetros → Ambos → Opção 2 → CFOP Importação XML CT-E = "Origem/Destino Transporte"
- Salve os parâmetros (F6)
- Abra MNF001 e importe um XML de CT-e cujo CFOP emitido é 5353 (prestação dentro do estado)
- O item recebe
CD_CFO = CD_CFODENTROda movimentação - Importe outro CT-e cujo CFOP emitido é 6353 (prestação fora do estado)
- O item recebe
CD_CFO = CD_CFOFORA - Mesmo que a transportadora esteja cadastrada em UF diferente da operação, o CFOP usado respeita o XML
Resultado esperado: A decisão dentro/fora ignora a UF cadastrada da transportadora e usa a natureza do transporte declarada no CT-e. Útil quando a mesma transportadora presta serviços interestaduais e intraestaduais.
Tabela Comparativa Resumida
| Opção | Fonte da UF para CFOP | Critério | Observação |
|---|---|---|---|
| E | NOTA.SG_ESTADO (endereço da transportadora) | Igual à UF da empresa → DENTRO, senão → FORA | Valor padrão |
| O | Primeiro dígito do CFOP do XML do CT-e | 5 → DENTRO, 6 (ou outro) → FORA | Respeita o CFOP emitido pela transportadora |
Referências no Código Fonte
Delphi
-
source/MFA001/UMFA001.dfm(linhas 3833-3847, 4396-4422): label "CFOP Importação XML CT-E" e comboboxcmbTP_ANALISE1comDataField = 'ST_IMPORTACFOCTE'e opçõesEndereço Transportadora (E)/Origem/Destino Transporte (O). -
source/MFA001/UdmMFA001.paslinha 550: valor padrão'E'atribuído emAfterInsertdo datasettabPARMFATUR. -
source/MFA001/UdmMFA001.dfmlinhas 1806-1808, 2428, 2602, 2848: definição do fieldtabPARMFATURST_IMPORTACFOCTEe inclusão nas cláusulas INSERT/UPDATE da PARMFATUR. -
source/MNF001/UdmMNF001.paslinhas 1803-1822 (procedureDetermina_Cfo):if ((dmMNF001.ParmFatur.Values['ST_IMPORTACFOCTE'] = 'O') and (iTP_XML = 'cte')) thenbeginif (iTP_XML = 'cte') thenbeginif (Copy(CFOPCte, 1 , 1) = '5') thendmMNF001.tabITEMNOTACD_CFO.AsString := dmMNF001.tabITEMNOTACD_CFODENTRO.AsStringelsedmMNF001.tabITEMNOTACD_CFO.AsString := dmMNF001.tabITEMNOTACD_CFOFORA.AsString;endend elsebeginif ( dmMNF001.tabNOTASG_ESTADO.AsString = dmMNF001.iSG_ESTEMP ) thendmMNF001.tabITEMNOTACD_CFO.AsString := dmMNF001.tabITEMNOTACD_CFODENTRO.AsStringelsedmMNF001.tabITEMNOTACD_CFO.AsString := dmMNF001.tabITEMNOTACD_CFOFORA.AsString;end; -
source/MNF034/UMNF034.paslinhas 1581-1616 (functionretornaCFOP):Consulta :='SELECT M.CD_MOVIMENTACAO, M.CD_CFOD, M.CD_CFOF, P.ST_IMPORTACFOCTE '+#10+'FROM MOVIMENTACAO M '+#10+'INNER JOIN PARMFATUR P ON (P.CD_EMPRESA = '+IntToStr(sessao.empresa.cd_Empresa)+') '+#10+'WHERE M.CD_MOVIMENTACAO = '+Movimentacao;...if ((dmMNF034.ParmFatur.Values['ST_IMPORTACFOCTE'] = 'O') and (cmbTP_DOCUMENTO.Value = 'T')) thenbeginif (Copy(dmMNF034.cdsDOCUMENTOSCFOP.AsString, 1 , 1) = '5') thenResult := Resultado[1] // CD_CFOD (dentro)elseResult := Resultado[2]; // CD_CFOF (fora)end elsebeginif (dmMNF034.cdsDOCUMENTOSSG_ESTADO.AsString = UFEmpresa) thenResult := Resultado[1]elseResult := Resultado[2];end;
SQL / Scripts
- Nenhuma referência a
ST_IMPORTACFOCTEemScripts/- a regra é aplicada exclusivamente no cliente Delphi durante a importação do XML do CT-e. Stored procedures não leem este parâmetro.