16.7.2.2. ICMS [23-12-13]
Sumário
· 16.7.2.2.1. ICMS - CSOSN [23-12-13]
Grupo de ICMS da NF-e versão 3.x
Funcionalidade para gerar o XML do grupo do ICMS da NF-e 3.x
Novidades
Casas decimais - os campos de alíquota e percetual foram alterados para serem gerados com até 4 decimais, ex: 18.00, 1.234, 1.2345, etc. Os zeros não siginficativos só serão gerados para as 2 casas decimais: 18.00 (18, 18.0, 18.00, 18.000 e 18.0000 serão gerados como: 18.00)
Novas tags - criadas novas tags da operação com diferimento: vICMSOp, pDif e vICMSDif para permitir a informação do diferimento parcial.
ICMS desonerado - houve alteração na estrutura para que seja possível informar o valor do ICMS desonerado para os CST: 20, 30, 70 e 90.
Assinatura
string icms310(string orig, string CST, int modBC, double pRedBC, double vBC, double pICMS, double vICMS, int modBCST, double pMVAST, doublepRedBCST, double vBCST, double pICMSST, double vICMSST, double vBCSTRet, double vICMSSTRet, double vBCSTDest, double vICMSSTDest, intmotDesICMS, double pBCOp, string UFST, double pCredSN, double vCredICMSSN, double vICMSDeson, double vICMSOp, double pDif, doublevICMSDif)
Descrição:
Funcionalidade para gerar as informações do ICMS do item de produto da NF-e versão 3.10.
O preenchimento dos campos do grupo de ICMS são variáveis e dependem do CST - Código da Situação Tributária ou do CSOSN - código da Situação da operação do ICMS no Simples Nacional do item de produto.
A funcionalidade utiliza apenas os campos exigidos para o CST para montar o grupo de informações do ICMS, assim o usuário deve ficar atento para informar os campos que são exigidos para cada CST.
Campo | Descrição | CST | CST | CST | CST | CST | CST | CST | CST | CST | CST | CST |
orig | Origem da mercadoria | S | S | S | S | S | S | S | S | S | S | ? |
CST | Tributação do ICMS | S | S | S | S | S | S | S | S | S | S | ? |
modBC | Modalidade de determinação da BC do ICMS | S | S | S | N | N | N | N | ? | N | S | ? |
pRedBC | Percentual da Redução de BC | N | N | S | N | N | N | N | ? | N | S | ? |
vBC | Valor da BC do ICMS | S | S | S | N | N | N | N | ? | N | S | ? |
pICMS | Alíquota do imposto | S | S | S | N | N | N | N | ? | N | S | ? |
vICMS | Valor do ICMS | S | S | S | N | N | N | N | ? | N | S | ? |
modBCST | Modalidade de determinação da BC do ICMS ST | N | S | N | S | N | N | N | N | N | S | ? |
pMVAST | Percentual da margem de valor Adicionado do ICMS ST | N | S | N | S | N | N | N | N | N | S | ? |
pRedBCST | Percentual da Redução de BC do ICMS ST | N | ? | N | ? | N | N | N | N | N | ? | ? |
vBCST | Valor da BC do ICMS ST | N | S | N | S | N | N | N | N | N | S | ? |
pICMSST | Alíquota do imposto do ICMS ST | N | S | N | S | N | N | N | N | N | S | ? |
vICMSST | Valor do ICMS ST | N | S | N | S | N | N | N | N | N | S | ? |
UFST | UF para qual é devido o ICMS ST | N | N | N | N | N | N | N | N | N | N | ? |
pBCop | Percentual da BC operação própria | N | N | N | N | N | N | N | N | N | N | ? |
vBCSTRet | Valor da BC do ICMS Retido Anteriormente | N | N | N | N | N | S | N | N | S | N | ? |
vICMSSTRet | Valor do ICMS Retido Anteriormente | N | N | N | N | N | S | N | N | S | N | ? |
motDesICMS | Motivo da desoneração do ICMS | N | N | ? | ? | ? | ? | ? | N | N | N | ? |
vBCSTDest | Valor da BC do ICMS ST da UF destino | N | N | N | N | N | N | N | N | N | N | N |
vICMSSTDest | Valor do ICMS ST da UF destino | N | N | N | N | N | N | N | N | N | N | N |
pCredSN | Alíquota aplicável de cálculo do crédito (Simples Nacional) | N | N | N | N | N | N | N | N | N | N | N |
vCredICMSSN | Valor crédito do ICMS que pode ser aproveitado nos termos do art. 23 da LC 123 (SIMPLES NACIONAL) | N | N | N | N | N | N | N | N | N | N | N |
vICMSDeson | Valor do ICMS da desoneração (campo novo) | N | N | ? | ? | ? | ? | ? | N | N | ? | ? |
vICMSOp | Valor do ICMS da Operação (campo novo) | N | N | N | N | N | N | N | ? | N | N | ? |
pDif | percentual do diferimento (campo novo) | N | N | N | N | N | N | N | ? | N | N | ? |
vICMSDif | Valor do ICMS Diferido (campo novo) | N | N | N | N | N | N | N | ? | N | N | ? |
· “S” - o campo deve ser informado, “N” - o campo não deve ser informado e “?” - a exigência do campo depende da situação fática.
Campo | Descrição | CST | CST |
orig | Origem da mercadoria | S | S |
CST | Tributação do ICMS | S | S |
modBC | Modalidade de determinação da BC do ICMS | S | N |
pRedBC | Percentual da Redução de BC | S | N |
vBC | Valor da BC do ICMS | S | N |
pICMS | Alíquota do imposto | S | N |
vICMS | Valor do ICMS | S | N |
modBCST | Modalidade de determinação da BC do ICMS ST | S | N |
pMVAST | Percentual da margem de valor Adicionado do ICMS ST | S | N |
pRedBCST | Percentual da Redução de BC do ICMS ST | S | N |
vBCST | Valor da BC do ICMS ST | S | N |
pICMSST | Alíquota do imposto do ICMS ST | S | N |
vICMSST | Valor do ICMS ST | S | N |
UFST | UF para qual é devido o ICMS ST | S | N |
pBCop | Percentual da BC operação própria | S | N |
vBCSTRet | Valor da BC do ICMS Retido Anteriormente | N | S |
vICMSSTRet | Valor do ICMS Retido Anteriormente | N | S |
motDesICMS | Motivo da desoneração do ICMS | N | N |
vBCSTDest | Valor da BC do ICMS ST da UF destino | N | S |
vICMSSTDest | Valor do ICMS ST da UF destino | N | S |
pCredSN | Alíquota aplicável de cálculo do crédito (Simples Nacional) | N | N |
vCredICMSSN | Valor crédito do ICMS que pode ser aproveitado nos termos do art. 23 da LC 123 (SIMPLES NACIONAL) | N | N |
vICMSDeson | Valor do ICMS da desoneração (campo novo) | N | N |
vICMSOp | Valor do ICMS da Operação (campo novo) | N | N |
pDif | percentual do diferimento (campo novo) | N | N |
vICMSDif | Valor do ICMS Diferido (campo novo) | N | N |
· “S” - o campo deve ser informado, “N” - o campo não deve ser informado e “?” - a exigência do campo depende da situação fática.
Campo | Descrição | CSOSN | CSOSN | CSOSN | CSOSN | CSOSN | CSOSN | CSOSN | CSOSN | CSOSN |
orig | Origem da mercadoria | S | S | S | S | S | S | S | S | ? |
CST | Tributação do ICMS | S | S | S | S | S | S | S | S | ? |
modBC | Modalidade de determinação da BC do ICMS | N | N | N | N | N | N | N | N | ? |
pRedBC | Percentual da Redução de BC | N | N | N | N | N | N | N | N | ? |
vBC | Valor da BC do ICMS | N | N | N | N | N | N | N | N | ? |
pICMS | Alíquota do imposto | N | N | N | N | N | N | N | N | ? |
vICMS | Valor do ICMS | N | N | N | N | N | N | N | N | ? |
modBCST | Modalidade de determinação da BC do ICMS ST | N | N | N | S | S | S | N | N | ? |
pMVAST | Percentual da margem de valor Adicionado do ICMS ST | N | N | N | S | S | S | N | N | ? |
pRedBCST | Percentual da Redução de BC do ICMS ST | N | N | N | ? | ? | ? | N | N | ? |
vBCST | Valor da BC do ICMS ST | N | N | N | S | S | S | N | N | ? |
pICMSST | Alíquota do imposto do ICMS ST | N | N | N | S | S | S | N | N | ? |
vICMSST | Valor do ICMS ST | N | N | N | S | S | S | N | N | ? |
UFST | UF para qual é devido o ICMS ST | N | N | N | N | N | N | N | N | ? |
pBCop | Percentual da BC operação própria | N | N | N | N | N | N | N | N | ? |
vBCSTRet | Valor da BC do ICMS Retido Anteriormente | N | N | N | N | N | N | N | S | ? |
vICMSSTRet | Valor do ICMS Retido Anteriormente | N | N | N | N | N | N | N | S | ? |
motDesICMS | Motivo da desoneração do ICMS | N | N | N | N | N | N | N | N | ? |
vBCSTDest | Valor da BC do ICMS ST da UF destino | N | N | N | N | N | N | N | N | ? |
vICMSSTDest | Valor do ICMS ST da UF destino | N | N | N | N | N | N | N | N | ? |
pCredSN | Alíquota aplicável de cálculo do crédito (Simples Nacional) | S | N | N | S | N | N | N | N | ? |
vCredICMSSN | Valor crédito do ICMS que pode ser aproveitado nos termos do art. 23 da LC 123 (SIMPLES NACIONAL) | S | N | N | S | N | N | N | N | ? |
vICMSDeson | Valor do ICMS da desoneração (campo novo) | N | N | N | N | N | N | N | N | N |
vICMSOp | Valor do ICMS da Operação (campo novo) | N | N | N | N | N | N | N | N | N |
pDif | percentual do diferimento (campo novo) | N | N | N | N | N | N | N | N | N |
vICMSDif | Valor do ICMS Diferido (campo novo) | N | N | N | N | N | N | N | N | N |
· “S” - o campo deve ser informado, “N” - o campo não deve ser informado e “?” - a exigência do campo depende da situação fática.
Parâmetros:
nome | tipo | tam. | obrig. | descrição |
orig | string | 1 | sim | informar o código da origem da mercadoria: |
CST | string | 2,3 | sim | informar o CST da operação: |
modBC | inteiro | 1 | depende | informar a modalidade de determinação da BC do ICMS: |
pRedBC | double | 5,2-4 | depende | informar o Percentual de redução da BC do ICMS da operação própria |
vBC | double | 15,2 | depende | informar o Valor da BC do ICMS do ICMS da operação própria |
pICMS | double | 5,2-4 | depende | informar a Alíquota do ICMS do ICMS da operação própria |
vICMS | double | 15,2 | depende | informar o Valor do ICMS do ICMS da operação própria |
modBCST | inteiro | 1 | depende | informar a modalidade de determinação da BC do ICMS ST: |
pMVAST | double | 5,2-4 | depende | informar o Percentual da Margem de Valor Adicionado ICMS ST (quantidade de decimais alterado para aceitar de 2 a 4 decimais) |
pRedBCST | double | 5,2-4 | depende | informar o Percentual de redução da BC ICMS ST (quantidade de decimais alterado para aceitar de 2 a 4 decimais) |
vBCST | double | 15,2 | depende | informar o Valor da BC do ICMS ST |
pICMSST | double | 5,2-4 | depende | informar a Alíquota do ICMS ST |
vICMSST | double | 15,2 | depende | informar o Valor do ICMS ST |
vBCSTRet | double | 15,2 | depende | informar o Valor da BC do ICMS ST retido |
vICMSSTRet | double | 15,2 | depende | informar o Valor do ICMS ST retido |
vBCSTDest | double | 15,2 | depende | informar o Valor da BC do ICMS ST da UF Destino |
vICMSSTDest | double | 15,2 | depende | informar o Valor do ICMS ST da UF destino |
motDesICMS | inteiro | 1 | depende | informar o Motivo da desoneração do ICMS: |
pBCOp | double | 5,2-4 | depende | informar o Percentual da BC operação própria (quantidade de decimais alterado para aceitar de 2 a 4 decimais) |
UFST | string | 2 | depende | informar a UF para qual é devido o ICMS ST |
pCredSN | double | 15,2 | depende | informar o Alíquota aplicável de cálculo do crédito (Simples Nacional) |
vCredICMSSN | double | 15,2 | depende | informar o Valor crédito do ICMS que pode ser aproveitado nos termos do art. 23 da LC 123 (SIMPLES NACIONAL) |
vICMSDeson | double | 15,2 | depende | informar o Valor do ICMS da desoneração, deve ser informado quando em con junto com motDesICMS(campo novo) |
vICMSOp | double | 15,2 | depende | informar o Valor do ICMS da operação que não será diferido (campo novo) |
pDif | double | 5,2-4 | depende | informar o percentual do diferimento (campo novo) |
vICMSDif | double | 15,2 | depende | informar o Valor do ICMS que será diferido. (campo novo) |
Diagrama:
Retorno:
Um string com o grupo XML de identificação
Histórico de atualização:
· 2012-06-29 - revisão de texto - corrigido o tipo do parâmetro orig.
· 2014-01-12 - Atualização para a versão 3.10.
XML:
Exemplo de XML para CST = 00 - Tributada integralmente
<ICMS>
<ICMS00>
<orig>0</orig>
<CST>00</CST>
<modBC>3</modBC>
<vBC>100.00</vBC>
<pICMS>18.00</pICMS>
<vICMS>18.00</vICMS>
</ICMS00>
</ICMS>
Exemplo de XML para CST = 10 - Tributada e com cobrança do ICMS por substituição tributária
<ICMS>
<ICMS10>
<orig>0</orig>
<CST>10</CST>
<modBC>3</modBC>
<vBC>100.00</vBC>
<pICMS>18.00</pICMS>
<vICMS>18.00</vICMS>
<modBCST>4</modBCST>
<pMVAST>50.00</pMVAST>
<pRedBCST>10.00</pRedBCST>
<vBCST>135.00</vBCST>
<pICMSST>18.00</pICMSST>
<vICMSST>6.30</vICMSST>
</ICMS10>
</ICMS>
· Os campos pMVAST e pRedBCST devem ser omitidos quando o conteúdo for igual a zero.
Exemplo de XML para CST = 20 - com redução de base de cálculo
<ICMS>
<ICMS20>
<orig>0</orig>
<CST>20</CST>
<modBC>3</modBC>
<pRedBC>10.00</pRedBC>
<vBC>90.00</vBC>
<pICMS>18.00</pICMS>
<vICMS>16.20</vICMS>
</ICMS20>
</ICMS>
Exemplo de XML para CST = 30 - Isenta ou não tributada e com cobrança do ICMS por substituição tributária
<ICMS>
<ICMS30>
<orig>0</orig>
<CST>30</CST>
<modBCST>4</modBCST>
<pMVAST>50.00</pMVAST>
<pRedBCST>10.00</pRedBCST>
<vBCST>135.00</vBCST>
<pICMSST>18.00</pICMSST>
<vICMSST>24.30</vICMSST>
</ICMS30>
</ICMS>
· Os campos pMVAST e pRedBCST devem ser omitidos quando o conteúdo for igual a zero.
Exemplo de XML para CST = 40 - Isenta
<ICMS>
<ICMS40>
<orig>0</orig>
<CST>40</CST>
</ICMS40>
</ICMS>
Exemplo de XML para CST = 40 - Isenta, com isenção condicional
<ICMS>
<ICMS40>
<orig>0</orig>
<CST>40</CST>
<vICMSDeson>1800.00</vICMSDeson>
<motDesICMS>1</motDesICMS>
</ICMS40>
</ICMS>
· Os campos vICMSDeson e motDesICMS devem ser informados quando a ISENÇÃO for condicional (exemplo: venda de veículo com ISENÇÃO de ICMS para Taxista)*
Exemplo de XML para CST = 41 - Não tributada
<ICMS>
<ICMS40>
<orig>0</orig>
<CST>41</CST>
</ICMS40>
</ICMS>
Exemplo de XML para CST = 50 - Suspensão
<ICMS>
<ICMS40>
<orig>0</orig>
<CST>50</CST>
</ICMS40>
</ICMS>
Exemplo de XML para CST = 51 - Diferimento, sem informação do ICMS diferido (diferimento total)
<ICMS>
<ICMS51>
<orig>0</orig>
<CST>51</CST>
</ICMS51>
</ICMS>
Exemplo de XML para CST = 51 - Diferimento, com informação do valor do tributo diferido quando exigido pela legislação
<ICMS>
<ICMS51>
<orig>0</orig>
<CST>51</CST>
<modBC>3</modBC>
<pRedBC>20.00</pRedBC>
<vBC>80.00</vBC>
<pICMS>18.00</pICMS>
<vICMSOp>9.60</vICMSOp>
<pDif>100.00</pDif >
<vICMSDif>9.60</vICMSDif>
</ICMS51>
</ICMS>
· Os campos modBC, pRedBC, vBC, pICMS e vICMS podem ser omitidos quando não exigidos pela legislação ou o seu conteúdo for igual a zero.
**Exemplo de XML para CST = 51 - Diferimento parcial* de 33,33% do ICMS devido*
<ICMS>
<ICMS51>
<orig>0</orig>
<CST>51</CST>
<modBC>3</modBC>
<vBC>1000.00</vBC>
<pICMS>18.00</pICMS>
<vICMSOp>180.00</vICMSOp>
<pDif>33.33</pDif >
<vICMSDif>60.00</vICMSDif>
<vICMS>120.00</vICMS>
<ICMS51></ICMS>
Exemplo de XML para CST = 60 - ICMS cobrado anteriormente por substituição tributária
<ICMS>
<ICMS60>
<orig>0</orig>
<CST>60</CST>
<vBCSTRet>135.00</vBCSTRet>
<vICMSSTRet>24.30</vICMSSTRet>
</ICMS60>
</ICMS>
Exemplo de XML para CST = 70 - Com redução de base de cálculo e cobrança de ICMS por substituição tributária
<ICMS>
<ICMS70>
<orig>0</orig>
<CST>70</CST>
<modBC>3</modBC>
<pRedBC>10.00</pRedBC>
<vBC>90.00</vBC>
<pICMS>18.00</pICMS>
<vICMS>16.20</vICMS>
<modBCST>4</modBCST>
<pMVAST>100.00</pMVAST>
<pRedBCST>10.00</pRedBCST>
<vBCST>162.00</vBCST>
<pICMSST>18.00</pICMSST>
<vICMSST>12.96</vICMSST>
</ICMS70>
</ICMS>
· Os campos pMVAST e pRedBCST devem ser omitidos quando o conteúdo for igual a zero.
Exemplo de XML para CST = 90 - Outras
<ICMS>
<ICMS90>
<orig>0</orig>
<CST>90</CST>
<modBC>3</modBC>
<pRedBC>10.00</pRedBC>
<vBC>90.00</vBC>
<pICMS>18.00</pICMS>
<vICMS>16.20</vICMS>
<modBCST>4</modBCST>
<pMVAST>100.00</pMVAST>
<pRedBCST>10.00</pRedBCST>
<vBCST>162.00</vBCST>
<pICMSST>18.00</pICMSST>
<vICMSST>12.96</vICMSST>
</ICMS90>
</ICMS>
· Os campos pRedBC, pMVAST e pRedBCST devem ser omitidos quando o conteúdo for igual a zero.
Exemplo de XML para CST = 90 - Outras, com informação somente do CST
<ICMS>
<ICMS90>
<orig>0</orig>
<CST>90</CST>
</ICMS90>
</ICMS>
Exemplo de XML para CST = 90 - Outras, com informação do CST e ICMS próprio
<ICMS>
<ICMS90>
<orig>0</orig>
<CST>90</CST>
<modBC>3</modBC>
<pRedBC>10.00</pRedBC>
<vBC>90.00</vBC>
<pICMS>18.00</pICMS>
<vICMS>16.20</vICMS>
</ICMS90>
</ICMS>
Exemplo de XML para CST = 90 - Outras, com informação do CST e ICMS ST
<ICMS>
<ICMS90>
<orig>0</orig>
<CST>90</CST>
<modBCST>4</modBCST>
<pMVAST>100.00</pMVAST>
<pRedBCST>10.00</pRedBCST>
<vBCST>162.00</vBCST>
<pICMSST>18.00</pICMSST>
<vICMSST>12.96</vICMSST>
</ICMS90>
</ICMS>
Exemplo de XML para CST = 90 - Outras, com informação do CST, ICMS próprio e ICMS ST
<ICMS>
<ICMS90>
<orig>0</orig>
<CST>90</CST>
<modBC>3</modBC>
<pRedBC>10.00</pRedBC>
<vBC>90.00</vBC>
<pICMS>18.00</pICMS>
<vICMS>16.20</vICMS>
<modBCST>4</modBCST>
<pMVAST>100.00</pMVAST>
<pRedBCST>10.00</pRedBCST>
<vBCST>162.00</vBCST>
<pICMSST>18.00</pICMSST>
<vICMSST>12.96</vICMSST>
</ICMS90>
</ICMS>
Exemplo de XML para CRT=1 e CSOSN = 101
<ICMS>
<ICMSSN101>
<orig>0</orig>
<CSOSN>101</CSOSN>
<pCredSN>1.25</pCredSN>
<vCredICMSSN>12.96</vCredICMSSN>
</ICMSSN101>
</ICMS>
Exemplo de XML para CRT=1 e CSOSN = 102, 103, 300 ou 400
<ICMS>
<ICMSSN102>
<orig>0</orig>
<CSOSN>102</CSOSN>
</ICMSSN102>
</ICMS>
· O campo CST pode ser informado com 102, 103, 300 ou 400
Exemplo de XML para CRT=1 e CSOSN = 201
<ICMS>
<ICMSSN201>
<orig>0</orig>
<CSOSN>201</CSOSN>
<modBCST>4</modBCST>
<pMVAST>100.00</pMVAST>
<pRedBCST>10.00</pRedBCST>
<vBCST>162.00</vBCST>
<pICMSST>18.00</pICMSST>
<vICMSST>12.96</vICMSST>
<pCredSN>1.25</pCredSN>
<vCredICMSSN>12.96</vCredICMSSN>
</ICMSSN201>
</ICMS>
· Os campos pMVAST e pRedBCST devem ser omitidos quando o conteúdo for igual a zero.
Exemplo de XML para CRT=1 e CSOSN = 202 ou 203
<ICMS>
<ICMSSN202>
<orig>0</orig>
<CSOSN>202</CSOSN>
<modBCST>4</modBCST>
<pMVAST>100.00</pMVAST>
<pRedBCST>10.00</pRedBCST>
<vBCST>162.00</vBCST>
<pICMSST>18.00</pICMSST>
<vICMSST>12.96</vICMSST>
</ICMSSN202>
</ICMS>
· O campo CST pode ser informado com 202 ou 203
· Os campos pMVAST e pRedBCST devem ser omitidos quando o conteúdo for igual a zero.
Exemplo de XML para CRT=1 e CSOSN = 500
<ICMS>
<ICMSSN500>
<orig>0</orig>
<CSOSN>500</CSOSN>
<vBCSTRet>162.00</vBCSTRet>
<vICMSSTRet>12.96</vICMSSTRet>
</ICMSSN500>
</ICMS>
Exemplo de XML para CRT=1 e CSOSN = 900
<ICMS>
<ICMSSN900>
<orig>0</orig>
<CSOSN>900</CSOSN>
<modBC>3</modBC>
<pRedBC>10.00</pRedBC>
<vBC>90.00</vBC>
<pICMS>7.00</pICMS>
<vICMS>6.30</vICMS>
<modBCST>4</modBCST>
<pMVAST>100.00</pMVAST>
<pRedBCST>10.00</pRedBCST>
<vBCST>162.00</vBCST>
<pICMSST>18.00</pICMSST>
<vICMSST>22,86</vICMSST>
<pCredSN>1.25</pCredSN>
<vCredICMSSN>1.25</vCredICMSSN>
</ICMSSN900>
</ICMS>
· Os campos pRedBC, pMVAST e pRedBCST devem ser omitidos quando o conteúdo for igual a zero.
Exemplo de XML para CRT=1 e CSOSN = 900, com informação do CSOSN
<ICMS>
<ICMSSN900>
<orig>0</orig>
<CSOSN>900</CSOSN>
</ICMSSN900>
</ICMS>
Exemplo de XML para CRT=1 e CSOSN = 900, com informação do CSOSN e valor do ICMS passível de crédito pelo destinatário
<ICMS>
<ICMSSN900>
<orig>0</orig>
<CSOSN>900</CSOSN>
<pCredSN>1.25</pCredSN>
<vCredICMSSN>12.96</vCredICMSSN>
</ICMSSN900>
</ICMS>
Exemplo de XML para CRT=1 e CSOSN = 900, com informação do CSOSN e ICMS próprio
<ICMS>
<ICMSSN900>
<orig>0</orig>
<CSOSN>900</CSOSN>
<modBC>3</modBC>
<pRedBC>10.00</pRedBC>
<vBC>90.00</vBC>
<pICMS>18.00</pICMS>
<vICMS>16.20</vICMS>
</ICMSSN900>
</ICMS>
Exemplo de XML para CRT=1 e CSOSN = 900, com informação do CSOSN, ICMS próprio e ICMS ST
<ICMS>
<ICMSSN900>
<orig>0</orig>
<CSOSN>900</CSOSN>
<modBC>3</modBC>
<pRedBC>10.00</pRedBC>
<vBC>90.00</vBC>
<pICMS>7.00</pICMS>
<vICMS>6.30</vICMS>
<modBCST>4</modBCST>
<pMVAST>100.00</pMVAST>
<pRedBCST>10.00</pRedBCST>
<vBCST>162.00</vBCST>
<pICMSST>18.00</pICMSST>
<vICMSST>22.86</vICMSST>
</ICMSSN900>
</ICMS>
Exemplo:
Exemplo Delphi
procedure TForm1.ICMSCSOSN101(Sender: TObject);
var
Util: Olevariant;
ICMS : widestring;
ICMS_orig : widestring;
ICMS_CST : widestring;
ICMS_modBC: integer;
ICMS_pRedBC: currency;
ICMS_vBC : currency;
ICMS_pICMS : currency;
ICMS_vICMS : currency;
ICMS_modBCST : integer;
ICMS_pMVAST : currency;
ICMS_pRedBCST : currency;
ICMS_vBCST : currency;
ICMS_pICMSST : currency;
ICMS_vICMSST : currency;
ICMS_vBCSTRet : currency;
ICMS_vICMSSRet : currency;
ICMS_vBCSTDest : currency;
ICMS_vICMSSTDest : currency;
ICMS_motDesICMS : integer;
ICMS_pBCOp : currency;
ICMS_UFST : widestring;
ICMS_pCredSN : currency;
ICMS_vCredICMSSN : currency;
ICMS_vICMSDeson : currency;
ICMS_vICMSOp : currency;
ICMS_pDif : currency;
ICMS_vICMSDif : currency;
begin
ICMS_orig := '0'; // informar a origem do produto
ICMS_CST := '101'; // informar o CST (emissor RPA) ou CSOSN (emissor optante do Simples Nacional)
//
// informações do ICMS da operação própria, somente para CST = 00, 10, 20, 51 (depende da SEFAZ exigir), 70 e 90 (depende do caso)
// CSOSN=900
//
ICMS_modBC := 0;
ICMS_pRedBC :=0;
ICMS_vBC :=0;
ICMS_pICMS :=0;
ICMS_vICMS :=0;
//
// informações do ICMS retido por Substituição Tributária, informar somente nos casos em que o emissor
// retem o ICMS por ST do destinatário CST = 10, 30, 70 e 90 (depende do caso)
// CSOSN = 201, 202, 203 e 900 (depende do caso)
//
ICMS_modBCST :=0;
ICMS_pMVAST :=0;
ICMS_pRedBCST :=0;
ICMS_vBCST :=0;
ICMS_pICMSST :=0;
ICMS_vICMSST :=0;
//
// informações do ICMS retido anteriormente por Substituição Tributária,
// deve ser informado se a legislação exigir para os CST=60 e CSOSN=500
//
// É aplicável quando o emissor adquiriu o produto que já teve a retenção do ICMS devido até a venda para
// consumidor retido anteriormente.
//
// Também deve ser informado nos casos de CST = ICMSST
//
ICMS_vBCSTRet :=0;
ICMS_vICMSSRet :=0;
//
//
ICMS_vBCSTDest :=0;
ICMS_vICMSSTDest :=0;
//
// deve ser informado quando existir alguma desoneração condicional para veículos novos, CST=40
//
ICMS_motDesICMS :=0;
//
// percentual da BC da operação própria no caso de repartição de tributo
//
ICMS_pBCOp :=0;
//
// informar a UF para qual é devido o ICMS ST no caso de repartição do tributo
//
ICMS_UFST := '';
//
// informar para o CSOSN 101, 201 e 900 (depende do caso)
//
ICMS_pCredSN :=1.25;
ICMS_vCredICMSSN :=12.96;
//
// Campos novos da versão 3.10
//
ICMS_vICMSDeson := 0; // valor do ICMS desonerado
ICMS_vICMSOp := 0; // valor do ICMS da Operação - grupo 51 diferimento
ICMS_pDif := 0; // percentual do diferimento - grupo 51 diferimento
ICMS_vICMSDif := 0; // valor do ICMS diferido - grupo 51 diferimento
Util := CreateOleObject('NFe_util_2G.util');
ICMS:=Util.icms310(ICMS_orig, ICMS_CST, ICMS_modBC, ICMS_pRedBC, ICMS_vBC, ICMS_pICMS, ICMS_vICMS,
ICMS_modBCST, ICMS_pMVAST, ICMS_pRedBCST, ICMS_vBCST, ICMS_pICMSST, ICMS_vICMSST,
ICMS_vBCSTRet, ICMS_vICMSSRet, ICMS_vBCSTDest, ICMS_vICMSSTDest, ICMS_motDesICMS,
ICMS_pBCOp, ICMS_UFST, ICMS_pCredSN, ICMS_vCredICMSSN, ICMS_vICMSDeson, ICMS_vICMSOp,
ICMS_pDif, ICMS_vICMSDif);
MessageDlg('O fragmento XML gerado é: '+#13+#13+ICMS, mtInformation, [mbOk], 0);
end;
Exemplo VB
' inicializar variáveis
'...............................................
Dim objNFeUtil As Object
Set objNFeUtil = CreateObject("NFe_Util_2G.Util")
'
'=========dados do ICMS===========
'
Dim icms_orig As String
Dim icms_CST As String
Dim icms_modBC As Long
Dim icms_pRedBC As Double
Dim icms_vBC As Currency
Dim icms_pICMS As Double
Dim icms_vICMS As Currency
Dim icms_modBCST As Long
Dim icms_pmVAST As Double
Dim icms_pRedBCST As Double
Dim icms_vBCST As Currency
Dim icms_pICMSST As Double
Dim icms_vICMSST As Currency
'
' campos novos da versão 2.00
'
Dim icms_vBCSTRet As Currency
Dim icms_vICMSSTRet As Currency
Dim icms_motDesICMS As Long
Dim icms_pBCOp As Double
Dim icms_UFST As String
Dim icms_pCredSN As Double
Dim icms_vCredICMSSN As Currency
Dim icms_vICMSSTDest As Currency
Dim icms_vBCICMSSTDest As Currency
'
' campos novos da versão 3.10
'
Dim icms_vICMSDeson As Currency
Dim icms_vICMSOp As Currency
Dim icms_pDif As Double
Dim icms_vICMSDif As Currency
'=========dados do ICMS (grupo N01 do Manual de integração - páginas 128-)=====================
'
icms_orig = "0" ' Tabela A - origem da mercadoria 0=nacional
icms_CST = "00" ' Tabela B - CST=00-tributação normal
icms_modBC = 3 ' modalidade de determinação da BC = 3-valor da operação
icms_pRedBC = 0 ' percentual de redução da BC
icms_vBC = 10 ' valor da BC do ICMS = vProd + vFrete + vSeguro + vOutro
icms_pICMS = 18 ' alíquota do ICMS
icms_vICMS = 1.8 ' valor do ICMS
icms_modBCST = 0 ' modalidade de determinação da BC ICMS ST
icms_pmVAST = 0 ' percentual de valor de margem e valor adicionado
icms_pRedBCST = 0 ' percentual de redução da BC do ICMS ST
icms_vBCST = 0 ' BC do ICMS ST
icms_pICMSST = 0 ' percentual do ICMSST
icms_vICMSST = 0 ' valor do ICMS ST devido
'
' Campos novos da versão 2.00
'
icms_vBCSTRet = 0 ' informação do ICMS retindo anteriormente por ST
icms_vICMSSTRet = 0 ' estes campos devem ser informado somente no caso do CST = 60 ou CSOSN = 500
'
icms_motDesICMS = 0 ' motivo de desoneração do ICMS, só deve ser informado no caso de CST = 40 (isenção condicional)
'
icms_pBCOp = 0 ' campos para uso nos casos de ICMSPart/ICMSST
icms_UFST = "" '
icms_vICMSSTDest = 0 '
icms_vBCICMSSTDest = 0 '
'
icms_pCredSN = 0 ' campos exclusivos para emissor optante do Simples Nacional CSOSN= 101, 201 e 900
icms_vCredICMSSN = 0 ' não esquecer de informar o CRT=1
'
' Campos novos da versão 3.10
'
icms_vICMSDeson = 0 ' valor do ICMS desonerado
icms_vICMSOp = 0 ' valor do ICMS da Operação - grupo 51 diferimento
icms_pDif = 0 ' percentual do diferimento - grupo 51 diferimento
icms_vICMSDif = 0 ' valor do ICMS diferido - grupo 51 diferimento
'
' gera grupo do ICMS
'
ICMS = objNFeUtil.icms310(icms_orig,
icms_CST,
icms_modBC, _
icms_pRedBC, _
icms_vBC, _
icms_pICMS, _
icms_vICMS, _
icms_modBCST, _
icms_pmVAST, _
icms_pRedBCST, _
icms_vBCST, _
icms_pICMSST, _
icms_vICMSST, _
icms_vBCSTRet, _
icms_vICMSSTRet, _
icms_vBCICMSSTDest, _
icms_vICMSSTDest, _
icms_motDesICMS, _
icms_pBCOp, _
icms_UFST, _
icms_pCredSN, _
icms_vCredICMSSN, _
icms_vDeson, _
icms_vICMSOp, _
icms_pDif, _
icms_vICMSDif)
MsgBox ICMS, vbInformation, "Informação"
AVISO LEGAL
"As informações existentes nesta mensagem e nos arquivos anexados têm caráter confidencial e são para uso restrito. A utilização, divulgação, cópia ou distribuição desta mensagem, ou parte dela, por qualquer pessoa diferente do destinatário é proibida, sujeitando o infrator às sanções legais. Se esta mensagem foi recebida por engano, favor excluí-la e informar ao remetente pelo endereço eletrônico acima. Agradecemos sua cooperação."DISCLAIMER
"This email and its attachments may contain privileged and/or confidential information. Use, disclosure, copying or distribution of this message, or part thereof, by anyone other than the intended recipient is strictly prohibited, and will submit the infractor to the legal sanctions. If you have received this email in error, please notify the sender by reply email and destroy all copies of this message. Thank you for your cooperation."