Identificador de Regra

FPR-621ICMSR01

Módulo: FPR - Formação de Preço.

Finalidade: Efetuar o cálculo dos valores de impostos de maneira customizada quando o cálculo for efetuado com a opção "Origem do Preço Base" for pela "Última Compra". Permite a execução do cálculo diferente do cálculo padrão do sistema.

Características: O identificador somente é executado quando o item da nota fiscal referente à última compra atender aos requisitos para o cálculo do ICMS Subst/Retido: Item da nota fiscal possuir valor de retenção do ICMS Substituído do item de produto da NF de entrada e a quantidade comprada ou então o item da nota fiscal possuir valor base do ICMS Substituído do item de produto da NF de entrada e valor base do ICMS do item de produto da NF de entrada.

Tela: F621APC

Transação: Não se aplica.

Variáveis disponibilizadas:

Campo Tipo Descrição Retorna Valor
FprNCodEmp NÚMERO Código da empresa N
FprNCodApc NÚMERO Código do Cálculo N
FprATipPre NÚMERO Origem do Preço N
FprNMtcCcc NÚMERO Tabela de Componentes N
FprNTxaFin NÚMERO Taxa Financeira N
FprNPreUni NÚMERO Preço Unitário do item (preço base) S
FprNPerIcm NÚMERO % ICMS S
FprNPerIpi NÚMERO % IPI S
FprNPrzPgt NÚMERO Prazo de pagamento S
FprNPerPis NÚMERO % PIs recuperar S
FprNPerCof NÚMERO % Cofins recuperar S
FprNPerIim NÚMERO % Imposto importação S
FprNVlrSeg NÚMERO Valor Seguro S
FprNPerFre NÚMERO % frete do item S
FprNPerIsb NÚMERO % icms subst S
FprNVlrIsb NÚMERO Valor icms subst S
FprNDesImp NÚMERO Despesas com impostos S

Observação

A variável de retorno FprNDesImp pode receber os valores de todos os impostos calculados na regra e será utilizada na tela F621APC através da grid "Desp. Imp". Caso esta variável não receba valor na regra a coluna "Desp. Imp" da tela F621APC recebe apenas o valor do valor do icms substituído (atual).

Campos encontrados nas listas:

Exemplo de regra:

Definir Alfa SomFre; @ somar frete @
Definir Alfa CodCpg; @ condições de pagamento @
Definir Alfa CodMoe; @ código da moeda da nota @
Definir Numero SeqIpc; @ sequencia do item na nota @
Definir Alfa CodTns; @ transação do item @
Definir Alfa CodTst; @ código do ICMS Substituído do item @
Definir Numero PreUni; @ preço unitário do item @
Definir Numero VlrBic; @ valor base icms do item @
Definir Numero PerIcm; @ % icms do item @
Definir Numero VlrIcm; @ valor do icms do item @
Definir Numero VlrBsi; @ valor base icms subst @
Definir Numero VlrIcs; @ valor icms st original da nota fiscal @
Definir Numero VlrBpi; @ Base Pis --> valor base do PIS a recuperar do item @
Definir Numero PerPir; @ % Pis a recuperar @
Definir Numero VlrPis; @ valor pis a recuperar (original nota fiscal) @
Definir Numero VlrBcr; @ valor base do cofins a recuperar @
Definir Numero PerCor; @ % COFINS a recuperar @
Definir Numero VlrCor; @ valor do cofins a recuperar do item (original nota) @
Definir Numero VlrBip; @ valor base ipi item @
Definir Numero PerIpi; @ % ipi do item @
Definir Numero VlrIpi; @ valor do ipi do item @
Definir Alfa CodTrd; @ código da redução de impostos @
Definir Numero PerIim; @ % imposto importação @
Definir Numero VlrFei; @ valor frete importação do item @
Definir Numero VlrSei; @ valor seguro importação do item @
Definir Numero VlrOui; @ valor outras despesas de importação do item @
Definir Numero VlrBid; @ valor base do ipi presumido @
Definir Numero VlrIpd; @ valor do ipi presumido @
Definir Numero VlrBru; @ valor bruto do item @
Definir Numero QtdEst; @ quantidade pedida do item @
Definir Numero AcrFin; @ valor acrescimo financeiro do item @

Definir numero FprNPreUni; @ Preço Unitário do item (preço base) @
Definir Numero FprNPerIcm; @ % ICMS @
Definir Numero FprNPerIpi; @ % IPI @
Definir Numero FprNPrzPgt; @ Prazo de pagamento @
Definir Numero FprNPerPis; @ % PIs recuperar @
Definir Numero FprNPerCof; @ % Cofins recuperar @
Definir Numero FprNPerIim; @ % Imposto importação @
Definir Numero FprNVlrSeg; @ Valor Seguro @
Definir Numero FprNPerFre; @ % frete do item @
Definir Numero FprNPerIsb; @ % icms subst @
Definir Numero FprNVlrIsb; @ valor icms subst ==> despesas com impostos @
Definir Numero FprNDesImp; @ despesas com impostos @

Definir numero IntNListaICMSubOrigem;
Definir numero CodEmpOrigem;
Definir numero CodFilOrigem;
Definir alfa SigUfsOrigem;
Definir alfa CodTstOrigem;
Definir numero CodCrtOrigem;
Definir numero MarLucOrigem;
Definir numero RedIcmOrigem;
Definir numero IcmEstOrigem;

Definir numero IntNListaICMSubDestino;
Definir numero CodEmpDestino;
Definir numero CodFilDestino;
Definir alfa SigUfsDestino;
Definir alfa CodTstDestino;
Definir numero CodCrtDestino;
Definir numero MarLucDestino;
Definir numero RedIcmDestino;
Definir numero IcmEstDestino;

Definir Alfa S_N;
Definir Alfa S_N_Campo;

Definir Numero xVlrAux;

S_N = "N";
ListaRegraPrimeiro(IntNListaItemNFE, S_N);
Se (S_N = "S"){
 ListaRegraObterValorNumero(IntNListaItemNFE, "CodFil", CodFilial, S_N_Campo);
 ListaRegraObterValorNumero(IntNListaItemNFE, "NumNfc", NumNfc, S_N_Campo);
 ListaRegraObterValorAlfa(IntNListaItemNFE, "CodSnf", CodSnf, S_N_Campo); 
 ListaRegraObterValorNumero(IntNListaItemNFE, "CodFor", CodFor, S_N_Campo);
 ListaRegraObterValorAlfa(IntNListaItemNFE, "CodPro", CodPro, S_N_Campo); 
 ListaRegraObterValorAlfa(IntNListaItemNFE, "CodDer", CodDer, S_N_Campo);
 ListaRegraObterValorData(IntNListaItemNFE, "DatEnt", DatEnt, S_N_Campo); 
 ListaRegraObterValorData(IntNListaItemNFE, "DatEmi", DatEmi, S_N_Campo);
 ListaRegraObterValorNumero(IntNListaItemNFE, "VlrFre", VlrFre, S_N_Campo);
 ListaRegraObterValorNumero(IntNListaItemNFE, "VlrLiq", VlrLiq, S_N_Campo); 
 ListaRegraObterValorAlfa(IntNListaItemNFE, "SigUfs", SigUfs, S_N_Campo); 
 ListaRegraObterValorAlfa(IntNListaItemNFE, "SomFre", SomFre, S_N_Campo); 
 ListaRegraObterValorAlfa(IntNListaItemNFE, "CodCpg", CodCpg, S_N_Campo); 
 ListaRegraObterValorAlfa(IntNListaItemNFE, "CodMoe", CodMoe, S_N_Campo); 
 ListaRegraObterValorNumero(IntNListaItemNFE, "SeqIpc", SeqIpc, S_N_Campo);
 ListaRegraObterValorAlfa(IntNListaItemNFE, "CodTns", CodTns, S_N_Campo); 
 ListaRegraObterValorAlfa(IntNListaItemNFE, "CodTst", CodTst, S_N_Campo); 
 ListaRegraObterValorNumero(IntNListaItemNFE, "PreUni", PreUni, S_N_Campo);
 ListaRegraObterValorNumero(IntNListaItemNFE, "VlrBic", VlrBic, S_N_Campo); 
 ListaRegraObterValorNumero(IntNListaItemNFE, "PerIcm", PerIcm, S_N_Campo);
 ListaRegraObterValorNumero(IntNListaItemNFE, "VlrIcm", VlrIcm, S_N_Campo); 
 ListaRegraObterValorNumero(IntNListaItemNFE, "VlrBsi", VlrBsi, S_N_Campo); 
 ListaRegraObterValorNumero(IntNListaItemNFE, "VlrIcs", VlrIcs, S_N_Campo); 
 ListaRegraObterValorNumero(IntNListaItemNFE, "VlrBpi", VlrBpi, S_N_Campo);
 ListaRegraObterValorNumero(IntNListaItemNFE, "PerPir", PerPir, S_N_Campo);
 ListaRegraObterValorNumero(IntNListaItemNFE, "VlrPis", VlrPis, S_N_Campo); 
 ListaRegraObterValorNumero(IntNListaItemNFE, "VlrBcr", VlrBcr, S_N_Campo);
 ListaRegraObterValorNumero(IntNListaItemNFE, "PerCor", PerCor, S_N_Campo);
 ListaRegraObterValorNumero(IntNListaItemNFE, "VlrCor", VlrCor, S_N_Campo);
 ListaRegraObterValorNumero(IntNListaItemNFE, "VlrBip", VlrBip, S_N_Campo); 
 ListaRegraObterValorNumero(IntNListaItemNFE, "PerIpi", PerIpi, S_N_Campo); 
 ListaRegraObterValorNumero(IntNListaItemNFE, "VlrIpi", VlrIpi, S_N_Campo); 
 ListaRegraObterValorAlfa(IntNListaItemNFE, "CodTrd", CodTrd, S_N_Campo); 
 ListaRegraObterValorNumero(IntNListaItemNFE, "PerIim", PerIim, S_N_Campo);
 ListaRegraObterValorNumero(IntNListaItemNFE, "VlrFei", VlrFei, S_N_Campo); 
 ListaRegraObterValorNumero(IntNListaItemNFE, "VlrSei", VlrSei, S_N_Campo); 
 ListaRegraObterValorNumero(IntNListaItemNFE, "VlrOui", VlrOui, S_N_Campo);
 ListaRegraObterValorNumero(IntNListaItemNFE, "VlrBid", VlrBid, S_N_Campo); 
 ListaRegraObterValorNumero(IntNListaItemNFE, "VlrIpd", VlrIpd, S_N_Campo);
 ListaRegraObterValorNumero(IntNListaItemNFE, "VlrBru", VlrBru, S_N_Campo);
 ListaRegraObterValorNumero(IntNListaItemNFE, "QtdEst", QtdEst, S_N_Campo);
 ListaRegraObterValorNumero(IntNListaItemNFE, "AcrFin", AcrFin, S_N_Campo); 


S_N = "N";
ListaRegraPrimeiro(IntNListaICMSubOrigem, S_N);
Se (S_N = "S"){
ListaRegraObterValorNumero(IntNListaICMSubOrigem, "CodEmp", CodEmpOrigem, S_N_Campo);
ListaRegraObterValorNumero(IntNListaICMSubOrigem, "CodFil", CodFilOrigem, S_N_Campo);
ListaRegraObterValorAlfa(IntNListaICMSubOrigem, "SigUfs", SigUfsOrigem, S_N_Campo);
ListaRegraObterValorAlfa(IntNListaICMSubOrigem, "CodTst", CodTstOrigem, S_N_Campo);
ListaRegraObterValorNumero(IntNListaICMSubOrigem, "CodCrt", CodCrtOrigem, S_N_Campo);
ListaRegraObterValorNumero(IntNListaICMSubOrigem, "MarLuc", MarLucOrigem, S_N_Campo);
ListaRegraObterValorNumero(IntNListaICMSubOrigem, "RedIcm", RedIcmOrigem, S_N_Campo);
ListaRegraObterValorNumero(IntNListaICMSubOrigem, "IcmEst", IcmEstOrigem, S_N_Campo);
}

S_N = "N";
ListaRegraPrimeiro(IntNListaICMSubDestino, S_N);
Se (S_N = "S"){
ListaRegraObterValorNumero(IntNListaICMSubDestino, "CodEmp", CodEmpDestino, S_N_Campo);
ListaRegraObterValorNumero(IntNListaICMSubDestino, "CodFil", CodFilDestino, S_N_Campo);
ListaRegraObterValorAlfa(IntNListaICMSubDestino, "SigUfs", SigUfsDestino, S_N_Campo);
ListaRegraObterValorAlfa(IntNListaICMSubDestino, "CodTst", CodTstDestino, S_N_Campo);
ListaRegraObterValorNumero(IntNListaICMSubDestino, "CodCrt", CodCrtDestino, S_N_Campo);
ListaRegraObterValorNumero(IntNListaICMSubDestino, "MarLuc", MarLucDestino, S_N_Campo);
ListaRegraObterValorNumero(IntNListaICMSubDestino, "RedIcm", RedIcmDestino, S_N_Campo);
ListaRegraObterValorNumero(IntNListaICMSubDestino, "IcmEst", IcmEstDestino, S_N_Campo);
}

@Implementação da regra @
se (MarlucOrigem = MarlucDestino)
{
se ((VLRBSI > 0) e (VLRBIC > 0))
{
PerIcm = 17.00;
xVlrAux = ((VLRBSI - VLRBIC) / VLRBIC * 100);
ArredondarValor(xVlrAux, 2);
FprNPerIsb = xVlrAux;
FprNVlrIsb = 0;
se ((QTDEST > 0) e (PerIcm > 0))

{ xVlrAux = (VLRBSI - VLRBIC) / QTDEST * (PerIcm / 100); ArredondarValor(xVlrAux, 2); FprNVlrIsb = xVlrAux; }
}
se ((VLRBSI = 0) ou (VLRBIC = 0))
{
FprNPerIsb = 0;
FprNVlrIsb = 0;
se ((VLRRIS > 0) e (QTDEST > 0))

{ xVlrAux = (VLRRIS / QTDEST); ArredondarValor(xVlrAux, 2); FprNVlrIsb = xVlrAux; }
}

}

@Variáveis de retorno @
FprNPreUni = PreUni + 0.99; @ Preço Unitário do item (preço base) @
FprNPerIcm = PerIcm; @ % ICMS @
FprNPerIpi = 0.91; @ % IPI @
FprNPrzPgt = 30; @ Prazo de pagamento @
FprNPerPis = PerPir + 0.92; @ % PIs recuperar @
FprNPerCof = Percor + 0.93; @ % Cofins recuperar @
FprNPerIim = 0.94; @ % Imposto importação @
FprNVlrSeg = 0.95; @ Valor Seguro @
FprNPerFre = 9.6; @ % frete do item @
FprNDesImp = 99.7; @ despesas com impostos @

Atenção

Caso o parâmetro global LisVarReg esteja habilitado, a variável ListaVariaveis estará disponível em todos os identificadores de regras do sistema. O conteúdo desta variável lista os campos disponibilizados no identificador de regras em questão.

Não é aconselhada a ativação desse parâmetro global para o uso cotidiano. Esse recurso de listagem dos campos de identificadores auxilia a construção de regras e o Suporte para, por exemplo, depuração ou quando não houver acesso à documentação dos identificadores de regras.

Este artigo ajudou você?