1. Obter o valor do campo Tipo Empresa no cadastro do cliente
- Primeiramente para saber o tipo empresa, siga uma das opções:
Opção 1: Abra a rotina 302(Cadastro de cliente) e verifique o campo Tipo Empresa.
Opção 2: Execute o SQL SELECT TIPOEMPRESA FROM PCCLIENT WHERE CODCLI = :CODCLI
2. Se o Tipo Empresa do cliente é "R"
- Validação do processo:
Encontrando o Percentual de Isenção do ICMS:
- Verifique se existe Percentual de Isenção do ICMS e armazene essa informação.
- Como obter essa informação:
Opção 1: Se está analisando uma venda já efetuada, execute o SQL:
SELECT PERDESCISENTOICMS FROM PCPEDIECF WHERE NUMPEDECF =:NUMPED
no banco do caixa. Guarde a informação.
Opção 2: Se a venda ainda não foi efetuada, pegue a figura tributária do produto que está analisando pelo SQL
SELECT CODST FROM PCTABPR WHERE CODPROD = :CODPROD no banco do caixa.
Com a figura tributária em mãos em mãos, execute o SQL:
SELECT PERDESCICMISENCAO FROM PCTRIBUT WHERE CODST = :"FIGURA TRIBUTÁRIA QUE ESTÁ MÃOS" .
Guarde a informação.
- Se estiver zerado, acabou a validação, porque nesse caso não irá calcular o ICMS Desoneração
e não irá sair nada no XML da venda indicando Desoneração.
- Se estiver zerado, mas não deveria estar, será necessário validar o cadastro da figura vinculada ao produto na 514,
verificando se realmente existe o Percentual de Isenção do ICMS cadastrado, e se existir,
verificar se realmente foi essa figura utilizada no registro do produto.
- Se não estiver zerado, continue a validação. Lembre-se de guardar o que foi retornado no SQL.
Encontrando o Motivo da Desoneração:
- Após encontrar o Percentual de isenção do ICMS:
- Se estiver maior que zero, verifique se existe Motivo da Desoneração através dos SQLs abaixo no banco do caixa :
Opção 1: Se está analisando uma venda já efetuada, execute o SQL
SELECT CODMOTIVOICMSDESONERADO FROM PCPEDIECF WHERE NUMPEDECF =:NUMPED no banco do caixa.
Guarde a informação.
Opção 2: Se a venda ainda não foi efetuada, execute o SQL:
SELECT MOTIVODESONERAÇÃO FROM PCFIGURATRIBDESONICMS
WHERE TIPOCLIENTE = 'RE'
AND CODFILIAL = :CODFILIAL
AND CST = "CST que voçê guardou quando leu as informações gerais"
- Se estiver zerado, acabou a validação, porque nesse caso não irá calcular o ICMS Desoneração
e não irá sair nada no XML da venda indicando Desoneração.
- Se estiver zerado, mas não deveria estar, será necessário validar se o cadastro do motivo na PCFIGURATRIBDESONICMS está correto,
ou seja, se o CST que está cadastrado nessa tabela é o mesmo CST do produto que está sendo vendido.
Verifique também se o código da filial que está cadastrado nessa tabela é o mesmo do PDV.
- Se não estiver zerado, continue a validação. Lembre-se de guardar o que foi retornado no SQL.
Efetuando o calculo do ICMS Desoneração:
- Após encontrar o Motivo da Desoneração e o Percentual de isenção do ICMS:
- Se qualquer deles estiver zerado, acabou a validação.
- Se os 2 Possuem valor, finalmente vai ocorrer os seguintes passos:
Passo 1 : O valor do ICMS Desoneração é calculado através do Percentual de isenção do ICMS aplicado sobre o preço do produto.
Esse valor é armazenado na tabela PCPEDIECF no campo VLDESCICMISENCAO
e enviado no XML da venda na tag vICMSDeson(VLDESCICMISENCAO * Qtde do produto).
Passo 2 : O Motivo da Desoneração é armazenado na tabela PCPEDIECF no campo CODMOTIVOICMSDESONERADO
e enviado no XML da venda na tag motDesICMS.
Passo 3 : O Percentual de isenção do ICMS é armazenado na tabela PCPEDIECF no campo PERDESCISENTOICMS.
Não é enviado no XML.
3. Se o Tipo Empresa do cliente é "O" ou está vazio
- Se o CST do produto for 20 ou 70(Redução de base):
Encontrando o Percentual de redução de base:
- Verifique se existe Percentual de redução de base e armazene essa informação.
- Como obter essa informação:
SELECT PERCBASERED FROM PCPEDIECF WHERE NUMPEDECF =:NUMPED
no banco do caixa. Guarde a informação.
- Se estiver zerado, acabou a validação, porque nesse caso não irá calcular o ICMS Desoneração
e não irá sair nada no XML da venda indicando Desoneração.
- Se estiver zerado, mas não deveria estar, será necessário validar o cadastro da figura vinculada ao produto na 514,
verificando se realmente existe o Percentual de redução de base cadastrado, e se existir,
verificar se realmente foi essa figura utilizada no registro do produto.
- Se não estiver zerado, continue a validação. Lembre-se de guardar o que foi retornado no SQL.
Encontrando o Percentual de ICM:
- Verifique se existe Percentual de ICM e armazene essa informação.
- Como obter essa informação:
SELECT PERCICM FROM PCPEDIECF WHERE NUMPEDECF =:NUMPED
no banco do caixa. Guarde a informação.
- Se estiver zerado, acabou a validação, porque nesse caso não irá calcular o ICMS Desoneração
e não irá sair nada no XML da venda indicando Desoneração.
- Se estiver zerado, mas não deveria estar, será necessário validar o cadastro da figura vinculada ao produto na 514,
verificando se realmente existe o Percentual de ICM cadastrado, e se existir,
verificar se realmente foi essa figura utilizada no registro do produto.
- Se não estiver zerado, continue a validação. Lembre-se de guardar o que foi retornado no SQL.
Encontrando o Motivo da Desoneração:
- Após encontrar o Percentual de redução de base:
- Se estiver maior que zero, verifique se existe Motivo da Desoneração através dos SQLs abaixo no banco do caixa :
Opção 1: Se está analisando uma venda já efetuada, execute o SQL
SELECT CODMOTIVOICMSDESONERADO FROM PCPEDIECF WHERE NUMPEDECF =:NUMPED no banco do caixa.
Guarde a informação.
Opção 2: Se a venda ainda não foi efetuada, execute o SQL:
SELECT MOTIVODESONERAÇÃO FROM PCFIGURATRIBDESONICMS
WHERE TIPOCLIENTE = 'NI'
AND CODFILIAL = :CODFILIAL
AND CST = "CST do produto que voçê guardou quando leu as informações gerais.
Se não leu, é necessário que vá até a página e leia"
- Se estiver zerado, acabou a validação, porque nesse caso não irá calcular o ICMS Desoneração
e não irá sair nada no XML da venda indicando Desoneração.
- Se estiver zerado, mas não deveria estar, será necessário validar se o cadastro do motivo na PCFIGURATRIBDESONICMS está correto,
ou seja, se o CST que está cadastrado nessa tabela é o mesmo CST do produto que está sendo vendido.
Verifique também se o código da filial que está cadastrado nessa tabela é o mesmo do PDV.
- Se não estiver zerado, continue a validação. Lembre-se de guardar o que foi retornado no SQL.
Efetuando o calculo do ICMS Desoneração:
- Após encontrar o Motivo da Desoneração, o Percentual de redução de base e o Percentual de ICM:
- Se qualquer deles estiver zerado, acabou a validação.
- Se as 3 variáveis possuem valor, finalmente vai ocorrer os seguintes passos:
Passo 1 : Busque o valor do parâmetro 4175(AgregaVldesonBaseDeson).
Passo 2 :
- Se o valor do parâmetro for "SIM":
O Valor do ICMS Desoneração é calculado com a fórmula abaixo:
(P.Venda * (1 -(Percentual de redução de base/ 100))) / (1 - Percentual de ICM / 100) * (Percentual de ICM / 100)
- Se o valor do parâmetro for "NÃO ":
O valor do ICMS Desoneração é calculado coma fórmula abaixo:
(P.Venda * (1 -(Percentual de redução de base / 100))) * (Percentual de ICM / 100);
- Se o produto tiver QTUNIT maior que 1, divida o resultado do cálculo pelo QTUNIT : valor do ICMS Desoneração/QTUNIT
- Esse valor é armazenado na tabela PCPEDIECF no campo VLICMSDESONERACAO
e enviado no XML da venda na tag vICMSDeson(VLICMSDESONERACAO * Qtde do produto).
Passo 3 : O Motivo da Desoneração é armazenado na tabela PCPEDIECF no campo CODMOTIVOICMSDESONERADO
e enviado no XML da venda na tag motDesICMS.
Obs.: Lembre-se que todas as variáveis utilizadas podem ser obtidas através de um select na pcpediecf.