Pular para o conteúdo principal

ST_DIFALIQUOTAXML - Diferencial de Alíquota na Importação de XML

Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Notas → Parâmetros de Notas Fiscais → campo "Dif. de Alíquota Importação XML [MNF001]" Tabela: PARMFATUR.ST_DIFALIQUOTAXML Valor padrão: S (Soma ao Custo do Produto) — atribuído em UdmMFA001.pas AfterInsert, chamado 1350

Telas impactadas​

MóduloCódigoDescrição
NF EntradaMNF001Importação de XML de entrada; controla se VL_DIFALIQUOTA é somado ao custo de reposição
Custo de Reposição NFMNF001 / CUSTOREPOSICAONFSubtela de recálculo de custo que monta VL_UNITARIO / VL_CUSTO / VL_VENDA do item a partir do VL_LIQUIDO + diferencial de alíquota

Procedures impactadas​

ProcedureComo usa
GERA_NOTAFISCALAo gerar NF a partir de pedidos, lê PARMFATUR.ST_DIFALIQUOTAXML e, combinado com ITEMNOTA.ST_DIFALXML, decide se soma VL_DIFALIQUOTA ao custo de estoque (I_VL_ESTOQUE) ao gravar o item e ao calcular o valor complementar de devolução.
POPULA_ITEMFRETENOTAAo ratear frete sobre a nota, lê PM.ST_DIFALIQUOTAXML junto com PM.ST_MODALIDADECALCULOFRETE para compor a base de rateio do frete (inclui ou não o diferencial no total).
RECALCULA_ESTOQUENo recálculo histórico de estoque, lê P.ST_DIFALIQUOTAXML e, combinado com ITEMNOTA.ST_DIFALXML, inclui ou ignora COALESCE(ITN.VL_DIFALIQUOTA, 0) na composição do valor total da nota/item e na geração de notas complementares.

Campos envolvidos​

CampoDescrição
PARMFATUR.ST_DIFALIQUOTAXMLDefine a regra global da empresa para tratar o diferencial de alíquota importado do XML (S / X / I)
ITEMNOTA.VL_DIFALIQUOTAValor do diferencial de alíquota (ICMS) calculado/importado para o item da NF
ITEMNOTA.ST_DIFALXMLFlag gravada no item da NF ('S' = valor veio do XML / já foi contabilizado; 'N' = calculado/informado e ainda não somado). Usada em conjunto com o parâmetro no modo 'X'
ITEMNOTA.VL_LIQUIDOValor líquido do item somado ao diferencial para compor custo unitário e de reposição
NOTA.VL_TOTAL, NOTA.VL_FRETE, NOTA.VL_DESPESA, NOTA.VL_DESCONTOCompõem o total da nota somado ao diferencial conforme o parâmetro

Opções disponíveis​

S - Soma ao Custo do Produto​

O que fazDetalhe
Diferencial de alíquota (VL_DIFALIQUOTA)Sempre somado ao custo do produto
Flag ITEMNOTA.ST_DIFALXMLIgnorada — o sistema soma independente da origem
Custo de reposição (MNF001)VL_UNITARIO = (VL_LIQUIDO + VL_DIFALIQUOTA) / quantidade
Custo de estoque na geração da NF (GERA_NOTAFISCAL)I_VL_ESTOQUE = I_VL_ESTOQUE + COALESCE(V_VL_DIFALIQUOTA, 0)
Rateio de frete / recálculo de estoqueO VL_DIFALIQUOTA entra no valor total da nota base para rateio

Simulação passo a passo​

  1. MFA001 → Parâmetros → Notas → Parâmetros de Notas Fiscais → ST_DIFALIQUOTAXML = "Soma ao Custo do Produto"
  2. Salve os parâmetros (F6)
  3. Abra MNF001 e importe um XML de compra interestadual com ICMS diferencial de alíquota (ex.: VL_LIQUIDO = R$ 100,00 e VL_DIFALIQUOTA = R$ 10,00)
  4. Confirme a importação do XML
  5. Abra a subtela de Custo de Reposição do item → VL_UNITARIO aparece como (100 + 10) / quantidade
  6. Finalize a nota e verifique o estoque ([MEQ...] / relatórios de custo) → o custo lançado inclui os R$ 10,00
  7. Em RECALCULA_ESTOQUE, o total da nota utilizado também soma o diferencial

Resultado esperado: O diferencial de alíquota sempre entra no custo do produto, no rateio de frete e no recálculo de estoque.


X - Soma ao Custo: Calculado pelo Sistema ou Informado Manualmente​

O que fazDetalhe
Diferencial de alíquotaSoma ao custo somente se ITEMNOTA.ST_DIFALXML = 'N' (isto é, o valor foi calculado/informado internamente, não veio pronto do XML)
Se ST_DIFALXML = 'S'Ignora (considera que o valor já está embutido no VL_LIQUIDO importado do XML)
ObjetivoEvitar soma dupla quando o fornecedor já considerou o ICMS diferencial no valor do item no XML
Regra em SQL (RECALCULA_ESTOQUE)IIF(((ST_DIFALIQUOTAXML='X') AND (ITN.ST_DIFALXML='N')), COALESCE(ITN.VL_DIFALIQUOTA,0), 0)
Regra em PSQL (GERA_NOTAFISCAL)IF ((V_ST_DIFALIQUOTAXML='X') AND (V_ST_DIFALXML='N')) THEN I_VL_ESTOQUE = I_VL_ESTOQUE + COALESCE(V_VL_DIFALIQUOTA,0)

Simulação passo a passo​

  1. MFA001 → ST_DIFALIQUOTAXML = "Soma ao Custo: Calculado pelo Sistema ou Informado Manualmente"
  2. Salve os parâmetros (F6)
  3. Cenário A — XML traz o diferencial embutido: importe XML em MNF001 em que o fornecedor já adicionou o diferencial no valor do item. No item a flag ITEMNOTA.ST_DIFALXML fica 'S'
  4. Verifique o custo do item → o sistema não soma novamente o VL_DIFALIQUOTA (evita duplicidade)
  5. Cenário B — sistema calcula o diferencial: importe XML em que o diferencial é calculado pelo JunsoftERP ou informado manualmente. A flag ST_DIFALXML fica 'N'
  6. Verifique o custo → o sistema soma VL_DIFALIQUOTA ao custo
  7. Em ambos os cenários, RECALCULA_ESTOQUE respeita a mesma regra ao recompor o custo histórico

Resultado esperado: O parâmetro só soma o diferencial quando ele foi gerado pelo sistema (para não duplicar quando o XML já traz o valor embutido).


I - Ignora no Custo do Produto​

O que fazDetalhe
Diferencial de alíquotaNunca somado ao custo do produto
Custo unitárioBaseado apenas em VL_LIQUIDO / quantidade
Regra em GERA_NOTAFISCALO IF que soma V_VL_DIFALIQUOTA ao I_VL_ESTOQUE não dispara
Custo de reposição (MNF001)IIF(PF.ST_DIFALIQUOTAXML = 'S', COALESCE(N.VL_DIFALIQUOTA,0), 0) → como o parâmetro não é 'S', soma zero
Rateio de frete / recálculo de estoqueO VL_DIFALIQUOTA fica fora da base de cálculo

Simulação passo a passo​

  1. MFA001 → ST_DIFALIQUOTAXML = "Ignora no Custo do Produto"
  2. Salve os parâmetros (F6)
  3. Importe em MNF001 um XML com VL_DIFALIQUOTA > 0
  4. Abra a subtela de Custo de Reposição do item → VL_UNITARIO considera apenas VL_LIQUIDO / quantidade
  5. Finalize a nota → o custo gravado no estoque não inclui o diferencial
  6. No rateio de frete (POPULA_ITEMFRETENOTA) e no RECALCULA_ESTOQUE, o diferencial também não compõe o total

Resultado esperado: O diferencial de alíquota é tratado como custo tributário à parte e não afeta o preço de custo do estoque.


Tabela Comparativa Resumida​

OpçãoDescriçãoSoma diferencial ao custo?Considera ITEMNOTA.ST_DIFALXML?
SSoma ao Custo do ProdutoSempreNão
XSoma quando calculado/informadoSomente se ST_DIFALXML = 'N'Sim
IIgnora no Custo do ProdutoNuncaNão

Referências no Código Fonte​

Delphi​

  • source/MFA001/UMFA001.dfm linhas 6459-6473 — label lblDIFALIQUOTAXML com Caption Dif. de Alíquota Importação XML [MNF001]
  • source/MFA001/UMFA001.dfm linhas 7493-7520 — combobox cmbDIFALIQUOTAXML (DataField ST_DIFALIQUOTAXML), opções S, X, I da aba Parâmetros → Notas → Parâmetros de Notas Fiscais
  • source/MFA001/UdmMFA001.pas linha 279 — declaração tabPARMFATURST_DIFALIQUOTAXML: TStringField
  • source/MFA001/UdmMFA001.pas linha 570 — AfterInsert atribui o valor padrão 'S' (chamado 1350, 16/10/2018)
  • source/MNF001/UMNF001.pas linhas 2542-2574 — monta SQL do custo de reposição: quando flagSICMSDifal = 'Difal' usa IIF(PF.ST_DIFALIQUOTAXML = 'S', COALESCE(N.VL_DIFALIQUOTA,0), 0) dentro do cálculo de VL_UNITARIO, VL_CUSTO e VL_VENDA
  • source/MNF001/UCUSTOREPOSICAONF.dfm linhas 391-436 — SQL persistido do mesmo cálculo na tabCUSTO do formulário CUSTOREPOSICAONF

SQL (Firebird)​

  • Scripts/GERA_NOTAFISCAL.sql linhas 168-268 — declara V_ST_DIFALIQUOTAXML, lê o parâmetro do PARMFATUR e, nas linhas 947-949, aplica a regra: IF ((V_ST_DIFALIQUOTAXML = 'S') OR ((V_ST_DIFALIQUOTAXML = 'X') AND (V_ST_DIFALXML = 'N'))) THEN I_VL_ESTOQUE = I_VL_ESTOQUE + COALESCE(V_VL_DIFALIQUOTA, 0);
  • Scripts/POPULA_ITEMFRETENOTA.sql linhas 15-62 — declara V_ST_DIFALIQUOTAXML e lê de PARMFATUR PM junto ao cursor de FRETENOTA para compor a base de rateio do frete
  • Scripts/RECALCULA_ESTOQUE.sql linhas 94, 157-160, 562 e 626 — lê ST_DIFALIQUOTAXML do PARMFATUR e aplica IIF(((V_ST_DIFALIQUOTAXML='S') OR ((V_ST_DIFALIQUOTAXML='X') AND (N.ST_DIFALXML='N'))), COALESCE(N.VL_DIFALIQUOTA, 0), 0) ao somar o total da nota e o valor complementar de devolução