Dicas sobre desenvolvimento de software, gestão e tributações

Rede Social

25 de outubro de 2016

Verificar valor em lista C# .Any()


Nesta dica irei demonstrar como verificar se existe um valor em uma lista.
Algumas vezes quando trabalhamos com listas, sejam listas de ints, strings ou mesmo classes, necessitamos saber se um dado valor está contido nesta lista.

Neste primeiro exemplo uma forma mais simples. Tenho uma lista de strings e quero saber se alguma das strings está preenchida com o valor "001" para setar em um booleano.

List<string> itens = new List<string>();
bool existe = itens.Any(i => i == "001");

Ainda no mesmo exemplo eu poderia querer saber se alguma string contém o valor "001" e não apenas se e alguma está setada com o valor "001", como um Like '1%' do SQL

List<string> itens = new List<string>();
bool existe = itens.Any(i => i.Contains("001"));

Agora incrementando um pouco mais o uso, utilizarei a pesquisa em uma lista de classes.

Tenho a classe Produtos:

public class Produtos
{
public int IdProduto { get; set; }
public Decimal ValorProduto { get; set; }
}

E tenho uma lista dessa classe:
List<Produtos> itens = new List<Produtos>();

Desejo saber se o produto de IdProduto 3 já foi adicionado à essa lista.

bool existe = itens.Any(i => i.IdProduto == 3);
Ler

23 de outubro de 2016

Verificar processos com C#


Nesta dica irei demonstrar algumas formas fáceis de se trabalhar com processos em execução na máquina.
Sabe quando você pressiona Ctrl + Alt + Del e exibe os processos em execução no windows? São esses mesmo.

Para isso teremos que adicionar o using "System.Diagnostics;", pois é nele que contém os métodos que iremos utilizar

Primeiro iremos ver os processos do windows.
var processos = Process.GetProcesses();

Também tem como ver o processo atual (o processo disparado pelo seu aplicativo).
var meuProcesso = Process.GetCurrentProcess();

Também verificar se existe um processo igual ao que você está executando. Como por exemplo caso você queira bloquear o usuário de abrir duas instâncias do mesmo aplicativo.
var processoIgual = Process.GetProcessesByName(meuProcesso.ProcessName).FirstOrDefault(p => p.Id != meuProcesso.Id);

E por fim finalizar (matar) o processo.
meuProcesso.Kill();
Ler

22 de outubro de 2016

Update setando valores de outra tabela com join


Neste exemplo irei mostrar uma forma fácil de atualizar valores em uma tabela com dados de
uma segunda tabela utilizando join.

Isso se faz muito útil, pois não é necessário cursor, while ou qualquer comando de repetição ou
laço.
Para o exemplo irei utilizar as seguintes tabelas, agenda e clientes, onde desejo atualizar a
tabela agenda com os telefones dos clientes, constantes na respectiva tabela.
Como coluna base para associar a agenda com o cliente utilizarei uma coluna codcli.
UPDATE AGENDA
SET AG.TELEFONE = CLI.TELEFONE
FROM AGENDA AG
INNER JOIN CLIENTES CLI
ON AG.CODCLI = CLI.CODCLI;
Ler

21 de outubro de 2016

Cálculo de Base de cálculo ICMS e IPI


Uma das coisas que sempre causa confusão quando se começa a estudar/trabalhar com cálculo de impostos é à base de cálculo, como eu também já me bati muito resolvi escrever este artigo dando uma introdução sobre como obter a base de cálculo do ICMS e do IPI.
Base de cálculo é o valor sobre o qual será aplicada alíquota para obtenção do valor de impostos devidos na operação. Esta base de cálculo muda de acordo com o tipo de operação que está sendo realizada e o tipo de imposto que está sendo calculado.
Caso alguém queira se aprofundar sobre as principais as variações legais da base de cálculo do ICMS pode encontrar mais informações na LEI COMPLEMENTAR Nº 87, DE 13 DE SETEMBRO DE 1996 no Art. 13, lembrando que cada estado pode possuir algumas variações.
Já o IPI é regido pelo DECRETO Nº 4.544, DE 26 DE DEZEMBRO DE 2002 e possui características específicas para calculo da Base.
Demonstrarei como obter a base de ICMS e IPI em uma operação de venda de mercadoria dentro do estado e sujeita a ICMS e IPI. Para o exemplo utilizarei uma alíquota de ICMS de 17% e IPI de 10%
Vamos para nosso exemplo:
Valor das Mercadorias.............: R$ 150,00 
Valor do Frete....................: R$ 25,00 
Valor das Despesas Acessórias.....: R$ 25,00 
Valor do Seguro...................: R$ 25,00 
Valor do Desconto Incondicional...: R$ 25,00
Existem algumas operações em que o ICMS incide sobre o valor de IPI também, sendo assim, é sempre uma boa prática começar a calcular os impostos pelo IPI. 
Vamos lá:
Base de cálculo IPI = Valor das Mercadorias + Valor das Despesas Acessórias  + Valor do Seguro

Bem, aqui começa a primeira pegadinha, o regulamento do IPI, art 131, § 2º, o Frete também incide a base de dados do IPI se “o valor do frete, quando o transporte for realizado ou cobrado por firma coligada, controlada ou controladora (Lei nº 6.404, de 1974) ou interligada (Decreto-lei nº 1.950, de 1982) do estabelecimento contribuinte ou por firma com a qual este tenha relação de interdependência, mesmo quando o frete seja subcontratado (Lei nº 4.502, de 1964, art. 14, § 3º, e Lei nº 7.798, de 1989, art. 15)”

Então, em nosso caso, vamos imaginar que a empresa de frete não tem ligação nenhuma com o estabelecimento que está fazendo a venda. Sendo assim, em nosso caso o Frete não vai incidir sobre o IPI.
Sendo assim,
Base de cálculo IPI = 150 + 25 + 25  = 200
Percebeu que eu não tirei o valor do desconto do valor do IPI? É assim mesmo! Descontos ou abatimentos, mesmo que incondicionais não reduzem a base de IPI, em outras palavras, você paga IPI mesmo que não cobre o valor do cliente. Encontramos isso no regulamento do IPI Como havíamos estabelecido uma alíquota de IPI de 10%, nosso IPI será de R$ 20,00.
Caso não houvesse IPI na operação que estamos simulando, a base de calculo do ICMS consiste na soma de todos esses valores acima, deduzindo deles o valor do desconto incondicional, desta forma, ficaria assim:
Base de Cálculo do ICMS = Valor das Mercadorias  + Valor das Despesas Acessórias  + Valor do Seguro + Valor do Frete - Valor do Desconto Incondic.
Base de Cálculo do ICMS = 150 + 25 + 25 +25 - 25 = 200

Como tem IPI, se a operação for uma operação para um consumidor final, ou seja, alguém que não vai revender a mercadoria, então o IPI vai estar incluso na base de calculo do ICMS e a base de ICMS será:
Base de Cálculo do ICMS = Valor das Mercadorias  + Valor das Despesas Acessórias + Valor do Seguro + Valor do Frete  - Valor do Desconto Incondic. + Valor do IPI
Base de Cálculo do ICMS = 150 + 25 + 25 +25 - 25  + 20 = 220
Ler

17 de outubro de 2016

Exemplo de Utilização dos CST’s Part.3


CST ICMS 40, 41, 50 e 51.
Bem, creio que muitos já saibam, que a CST de ICMS 40, 41, 50 e 51 não se calcula o valor do ICMS.

CST 40 – Isenta – A operação é isenta de ICMS, isso quer dizer que em vias normais, esta operação seria tributada, mas existe algum beneficio legal que isenta a mercadoria/operação de ser tributada pelo ICMS, mas que pode voltar a tributar futuramente com o fim do beneficio.

CST 41-Não tributada – É o tipo de operação onde não existe a incidência do ICMS, um exemplo é nas exportações de mercadorias (Constituição Federal, Art. 155 X, a).

CST 50 – Suspensão – A operação é passível de tributação, mas a legislação permite o não recolhimento do ICMS sobre certas circunstâncias, um exemplo disso é a Remessa para industrialização ou beneficiamento, caso o retorno da mercadoria demore mais que 180 dias, deverá ser recolhido o ICMS anteriormente suspenso. Existem situações de suspensão, entretanto, que não estabelecem restrições nem limites que obrigam o recolhimento do ICMS.

CST 51 – Diferimento. É empurrar o pagamento do Imposto para a operação posterior. Normalmenteaplicada ao fabricante. Um exemplo disso é a venda de gelo para embarcações pesqueiras em SC. Algunsestados exigem que seja escriturado na nota fiscal o valor do imposto suspenso. Nessa situação o ICMS seria calculado e destacado, mas não seria recolhido.
Ler

16 de outubro de 2016

Exemplo de Utilização dos CST’s Part.2


ICMS CST 10 (Tributada e com cobrança do ICMS por substituição tributária)
Operação de venda onde o fornecedor é responsável pelo recolhimento do ICMS por Substituição tributária.
Esse cálculo é simples, precisaremos de 4 informações, a base de calculo de ICMS, o MVA Ajustado a alíquota de ICMS interna da UF do destinatário da mercadoria, e o Valor de ICMS normal da operação.
Para nossos exemplos assumiremos os seguintes valores
Base ICMS: 100,00
Alíquota ICMS Operação : 12%
Alíquota ICMS Interna Destino : 17%
MVA Ajustado: 50,00%
Valor ICMS Normal : 12,00
Valor do IPI : 0,00
O calculo da base de ICMS é assim:
Base de calculo ST = (Base de calculo + IPI) * ([100 + MVA Ajustado]/100)
Ou Seja
Base de calculo ST = (100,00 + 0,00) * ([100 + 50]/100)
Base de calculo ST = 100,00 * 1,50
Base de calculo ST = 150,00
Calcula-se o valor do ICMS-ST da seguinte forma:
Valor ICMS ST = (Base de calculo ST * Alíquota ICMS Interna Destino) – Valor de ICMS Normal
Ou seja:
Valor ICMS ST = (150,00 * 17%) – 12,00
Valor ICMS ST = 25,50 – 12,00
Valor ICMS ST = 13,50
Neste caso, Valor ICMS ST é o valor do imposto a ser destacado na nota fiscal. Existe, no entanto caso em
que o governo estabelece uma tabela de preço para estas mercadorias. Nestas situações a base de calculo
é o valor de tabela que o governo estabelece.
O calculo fica assim:
Valor de tabela = 200
Valor ICMS ST = (Valor de Tabela * Alíquota ICMS) – Valor ICMS Normal
Ou seja:
Valor ICMS ST = (200,00 * 17%) – 12,00
Valor ICMS ST = 34,00 – 12,00
Valor ICMS ST = 22,00
Creio que esse exemplo deva atender 99% das situações de ICMS com cst 10.

ICMS CST 30 ou Isenta ou não tributada e com cobrança do ICMS por substituição tributária
Esta é uma CST interessante, a primeira vez que eu a vi fiquei um tempo imaginando a aplicação dela o
como calcular a ST nessa situação.
Essa CST se aplica, quando o emissor da NF possui algum tipo de benefício que o Isenta da Tributação de
ICMS próprio. E ela é muito usada por empresas optantes pelo Simples Nacional, e para ser sincero, até
hoje não vi nenhum documento que utilizasse esta CST e que não fosse do Simples Nacional.
Portanto, se você quiser aprender mais sobre esta utilizar esta CST para calcular ST eu indico o artigo
 “Cálculo ICMS ST Simples Nacional”
Creio que em outras situações deve-se utilizar o calculo semelhante, mas não conheço o embasamento
legal para outras utilizações desta CST.

ICMS CST 60 ou ICMS cobrado anteriormente por substituição tributária.
Neste tipo de operação o ICMS não é calculado nem recolhido. Para que uma operação se enquadre nesta
situação, é preciso que a mercadoria tenha tido entrada no estabelecimento com retenção do ICMS por ST.
Na prática existem quatro situações em que a mercadoria se enquadrará nesta CST.
1º Quando, na entrada da mercadoria, ela usa CST de ICMS 10/30/70, ou seja, Tributada/isenta/ com
redução de base e com cobrança do ICMS por substituição tributária.
2º Quando em compra de mercadoria sujeita a Substituição Tributária de fornecedor localizado em UF não
signatária ao protocolo de ST do produto. Nesta situação, a nota fiscal terá destacado ICMS Normal, mas o
imposto deverá ser recolhido antes da entrada da mercadoria no estado de destino (o recolhimento pode
variar de acordo com algumas variáveis que levantarei em outro artigo)
3º Quando a mercadoria foi adquirida com CST 60, ou seja, o fornecedor já foi substituído tributariamente.
4º Embora ilegal, os estados exigem o recolhimento do ICMS ST sobre a mercadoria existente em estoque
quando entra em vigor algum protocolo de ST. Eu digo que esta operação é ilegal, pois a lei não pode incidir
sobre eventos anteriores a ela devido ao princípio da irretroatividade da lei. Como a mercadoria foi
adquirida de acordo a lei vigente e o imposto tributado sobre a lei vigente é, portanto ato jurídico perfeito.
O comerciante tem o direito de distribuí-la sem recolher o ICMS por ST, mas terá que tributar o produto
como se não possuísse ST no momento da saída.
Essas são as situações do ICMS CST 60.
Uma característica que é importante salientar neste tipo de ICMS é que deve ser destacado na nota fiscal o
valor do ICMS retido por ST anteriormente, isso quer dizer que deve existir certa rastreabilidade entre
as entradas e as saídas de mercadorias no estabelecimento para que se possa destacar o valor correto do
imposto no momento da saída.
Exemplo
OP   QTD  BC Unit  Vl ICMS ST
Entrada  10  150   8,5
Entrada  10  300   17
Nas saídas você calcula pelo total.
Para uma saída de 20 pcs, por exemplo:
BC = (10 * 150) + (10*300)
BC = 1500+3000
BC = 4500
Vlr ST = (10 * 8,5) + (10 * 17)
Vlr ST = 85 + 170
Vlr ST = 255
Alguns estados permitem crédito de ICMS de acordo com a última entrada, mas para isso é preciso
verificar a legislação de cada estado.

ICMS CST 70 ou Com redução da Base de Cálculo e cobrança de ICMS por Substituição
tributária.

Bem, se você caiu de paraquedas aqui e está tentando entender um pouco sobre este tipo de ICMS, eu
recomendo primeiramente uma leitura do tópico sobre CST 20 (Redução da base de calculo) e depois
continue lendo este artigo.
Neste artigo eu vou explicar apenas brevemente a redução de base de calculo do ICMS próprio, pois uma
explicação mais detalhada se encontra no endereço que eu já citei. Buscarei me ater mais aos detalhes da
operação com ST.
Creio que este cálculo é um dos mais difíceis de ser explicado, não pela complexidade do calculo em si, mas
pelas variações que pode sofrer. Para facilitar o entendimento, vou explicar como funcionaria este calculo
no mundo perfeito, e depois vamos para cada uma das exceções.
No mundo perfeito, e na maior parte dos casos o calculo ICMS CST 70 se dá da seguinte forma:
Variáveis para Cálculo:
Base de calculo: 100,00
Alíquota ICMS Próprio: 12%
Alíquota ICMS ST : 17%
MVA Ajustado : 45%
% Red. Base ICMS Próprio: 40%
% Red. Base ICMS ST: 40%
Valor IPI : 0,00
Calculo Base de ICMS Próprio com Redução:
Base Reduzida = Base ICMS * (100 – % Red. Base ICMS Próprio) / 100
Base Reduzida = 100,00 * (100 – 40) / 100
Base Reduzida = 60,00
Calculo Base ICMS ST:
Base ICMS ST = (Base ICMS + IPI)* MVA Ajustado / 100
Base ICMS ST = (100,00 + 0,00) * (100 + 45) / 100
Base ICMS ST = 145,00
Calculo Base Reduzida ICMS ST:
Base Reduzida ST = Base ICMS ST * (100 – % Red. Base ICMS ST) / 100
Base Reduzida ST = 145,00 * (100 – 40) / 100
Base Reduzida ST = 87,00
Valor ICMS Próprio:
Valor ICMS Próprio = Base Reduzida *Alíquota ICMS Próprio / 100
Valor ICMS Próprio = 60 * 12 / 100
Valor ICMS Próprio = 7,20
Valor ICMS ST:
Valor ICMS ST = (Base Reduzida ICMS ST * Alíquota ICMS ST / 100) – Valor ICMS Próprio
Valor ICMS ST = (87,00 * 17 / 100) – 7,20
Valor ICMS ST = 14,79 – 7,20
Valor ICMS ST = 7,59
Ok, este é o mundo perfeito. Agora vamos para as variações.
1º – O percentual de redução de ICMS Próprio e ICMS ST podem ser diferentes.
2º – Existem algumas situações em que, para manter um benefício fiscal, as empresas não aplicam redução
na base do ICMS Próprio. Apenas na base do ICMS ST. Isso acontece aqui em Santa Catarina, nas saídas de
equipamentos de automação, informática e telecomunicações. Essas empresas adotam este procedimento
pois possuem outro benefício (Crédito Presumido de 50% nas saídas) e os 2 benefícios não são
cumulativos. O problema começa quando o % de redução é maior que o MVA Ajustado, pois o valor do
ICMS se torna negativo.
Nestas situações as empresas tem adotado o seguinte calculo:
Valor ICMS Próprio = Base ICMS * Alíquota ICMS Próprio / 100
Valor ICMS Próprio = 100 * 17 / 100
Valor ICMS Próprio = 17,00
Valor ICMS ST = (Base Reduzida ICMS ST * Alíquota ICMS ST / 100) – (Base ICMS Reduzida * Alíquota ICMS
Próprio / 100)
Valor ICMS ST = (87,00 * 17 / 100) – (60 * 12 / 100)
Valor ICMS ST = 14,79 – 7,20
Valor ICMS ST = 7,59.
Agora, olha só o detalhe:
Valor ICMS Próprio: 17,00
Valor do ICMS ST: 7,59
Valor Total: 24,59
Se a empresa não tomasse proveito do crédito de ICMS de 50% neste item o Valor de ICMS seria de 14,79.
Ler

15 de outubro de 2016

Exemplo de Utilização dos CST’s


CST 00
ICMS CST 00 quer dizer, Tributada Integralmente. Para calcular este ICMS é simples, basta multiplicar a base de calculo pela alíquota estabelecida.
Mais ou menos assim:
Base = 100,00
Alíquota = 17%
Valor ICMS = 100,00 x 17% = 17,00
Simples né? Então vamos começar a complicar.
Embora a operação seja tributada integralmente, ela pode possuir Alíquota de ICMS reduzida.
A alíquota de ICMS também muda de acordo com o estado de origem x destino da mercadoria.

Algumas regras básicas:
1 – Venda para consumidor final, não contribuinte do ICMS, residente em UF diversa do emitente da nota fiscal, aplica-se a alíquota interna da UF do emissor da nota fiscal.

2 – Venda para consumidor final, contribuinte do ICMS, residente em UF diversa do emitente da nota fiscal, aplica-se a alíquota interestadual entre as UF’s.
3 – Venda para contribuinte do ICMS que não seja consumidor final, aplica-se a alíquota interestadual.
Obs.: Como já citei anteriormente, a alíquota do ICMS é uma característica do ITEM da nota, então dentro de uma nota, pode ter vários itens tributados integralmente, mas cada um com alíquota de ICMS diferente.
E isso em operações internas (dentro do estado).
Lembrando, essas regras são aplicadas para as operações tributadas integralmente, ou seja, CST 00.


ICMS CST 20, ou com redução da base de calculo.

Redução da base de calculo é uma espécie de incentivo que o governo oferece para alguns produtos ou
áreas de atuação, reduzindo a tributação sobre a mercadoria.
A forma de redução de base de calculo é basicamente simples, apenas deduzimos da base de calculo de
ICMS o percentual estabelecido por lei, e sobre esta base reduzida aplicamos a alíquota de ICMS.

Para o exemplo de calculo usaremos os seguintes valores:
% Redução: 29,412
Valor da Base de Calculo: 100,00
Alíquota de ICMS = 17%
O calculo se dá da seguinte forma:
Base ICMS Reduzida = Valor da Base de Calculo * (1 – %Redução Base)
Base ICMS Reduzida = 100,00 * (1 – 29,412%)
ou
Base ICMS Reduzida = 100,00 * (1 – 0,29412)
Base ICMS Reduzida = 100,00 * 0,70588
Base ICMS Reduzida = 70,588 ou 70,59
E para calcular o valor do ICMS:
Valor do ICMS = Base ICMS Reduzida * Alíquota ICMS
Valor do ICMS = 70,59* 17%
Valor do ICMS = 12,0003 ou 12,00

A regra discriminada acima é a regra padrão para calculo do ICMS, entretanto, algumas vezes o governo
faculta a possibilidade de ao invés de fazer uma redução de base fazer uma redução de alíquota.
A legislação que tomaremos para estudo de caso é do Regulamento do ICMS-SC, caso deseje ler o texto na
integra pode fazer isso no seguinte link RICMS/SC Anexo 2, art. 7º, VII

Citando o texto indicado acima temos :
“Art. 7° Nas seguintes operações internas a base de cálculo do imposto será reduzida:

VII – em 29,412% (vinte e nove inteiros e quatrocentos e doze milésimos por cento) nas saídas de
equipamentos de automação, informática e telecomunicações, relacionados no Anexo 1, Seção XIX,
observado o seguinte (Lei nº 10.297/96, art. 43):
a) fica facultado aplicar diretamente o percentual de 12% (doze por cento) sobre a base de cálculo integral,
desde que o sujeito passivo aponha, no documento fiscal, a seguinte observação: “Base de cálculo reduzida
– produtos da indústria de automação, informática e telecomunicações – RICMS-SC/01 – Anexo 2, art. 7°,
VII”;

No texto acima verificamos que ao invés de aplicar a redução de base especificada, pode-se aplicar uma
redução de alíquota de ICMS.
A CST de ICMS no entanto permanece a mesma, pois mesmo havendo a redução de alíquota, continua
sendo uma redução de base de cálculo.
Esse tipo de situação também acontece quando estamos utilizando um equipamento de ECF (Cupom
Fiscal), pois não é possível reduzir a base de ICMS em cupom fiscal, reduzimos então a alíquota de ICMS.
Reescrevendo o exemplo que foi dado acima temos:
Valor da Base de Calculo : 100,00
Alíquota de ICMS = 12% <– Perceba que reduzimos a alíquota ao invés da base
O calculo se dá da seguinte forma:
Valor do ICMS = Valor da Base de Calculo * Alíquota ICMS
Valor do ICMS = 100,00 * 12%
Valor do ICMS = 12,00
Perceba que o valor final do ICMS foi o mesmo do obtido através da redução de base e o calculo foi mais
simples.
Mas atenção, não se pode reduzir a alíquota em vez da base em todas as situações. Isso só é permitido
quando a legislação permite.
Ler