Skip to content

Tag-icone-mini.png Projetos

Objetivo ​

Este projeto tem por objetivo a identificação das saídas de mercadorias isentas de contribuição.

Isenção de Impostos pela Lei 11.196 (Antiga MP do Bem) ​

O Governo Federal instiuiu a LEI Nº 11.196 (21 de Novembro de 2005) e regulamentou o programa de Inclusão Digital pelo Decreto nº 5.602 (06 de Dezembro de 2005).
Com este decreto ficam reduzidas a zero as alíquotas da Contribuição para o PIS/PASEP e da COFINS incidentes sobre a receita bruta decorrente da venda a varejo.
O valor de venda a varejo NÿO deve incluir o valor de IPI, pois o referido imposto não é composto no faturamento, portanto, em regra geral, será o valor de cálculo da base de PIS e COFINS.

Obs.: Assim quando o cliente for Revenda não se enquadra nesta lei, pois a venda não é a varejo.

O quadro abaixo mostra a composição das unidades de processamento e o valor máximo permitido:

IncisoComponentesValor Máximo (R$)
ICPU2.000
IINotebook4.000
IIICPU + Monitor + Teclado + Mouse4.000
IVCPU + Teclado + Mouse2.100
VModem150
VITablet2.500
VIISmartphoneIndefinido
VIIIRoteadorIndefinido

Para determinar se um item de venda se classifica como CPU, Monitor, Notebook, Teclado ou Mouse, utilize a propriedade "Código NCM", segue abaixo o quadro que contém os valores para enquadramento:

ItemCódigo na NCM
CPU8471.50.10
Notebook8471.30.12 ou 8471.30.19 ou 8471.30.90
MonitorDe 8471.60.70 até 8471.60.79.
E também os códigos
8528.41.10,
8528.41.20,
8528.49.10,
8528.49.21,
8528.49.29,
8528.51.10,
8528.51.20,
8528.59.10,
8528.59.20.
Teclado8471.60.52
Mouse8471.60.53
Modem8517.62.55, 8517.62.62 e 8517.62.72
Tablet8471.41.00 até 8471.41.99
Smartphone8517.12.31
Roteador8517.62.41 e 8517.62.77

Especificação Técnica ​

  • Os fontes do projeto deverão estar na pasta "T:\totalidll\dllMPBem\".

  • As classes devem permitir que seja possível adicionar N itens, e após as inserções, deve ser possível a chamada de um método que realiza o cálculo e disponibilize como retorno uma lista contendo os conjuntos formados e também uma lista que informe qual a quantidade de cada item que foi aproveitada.

  • A classe principal deverá ser chamada de "TMPBem", esta classe será responsável por receber os itens fiscais e fornecer: lista de conjuntos e lista de itens, contendo a quantidade de itens aproveitados para formar conjuntos.

  • Depois de todos os itens serem informados, o método "calcular" deverá ordenar as listas, do maior valor para o menor valor, e montar os conjuntos, obedecendo a seguinte ordem: Inciso II, Inciso III, Inciso IV, Inciso V, Inciso VI, Inciso VII, Inciso VIII e por último lista contendo os itens do Inciso I.

Para um melhor entendimento da implementação requisita, seguem abaixo os diagramas de classes e de sequência.

Diagrama de classes:

DiagramaClassesMPBem.PNG

Diagrama de sequência:

DiagramaSequenciaMPBem.PNG

Abaixo segue um exemplo, mostrando como ficaria a lista e os conjuntos depois de informados os itens na tabela a seguir.

ItemDescriçãoValor (R$)
CPUA3.600
CPUB2.500
CPUC3.000
TecladoA100
MouseA40
MouseB120
MonitorA1200
MonitorB800
NotebookA4.500
NotebookB3.500

Com base nas informações da tabela acima, as listas ordenadas ficariam desta forma:

Lista Notebook: Lista CPU Notebook A R$ 4.500 CPU A R$ 3.600 Notebook B R$ 3.500 CPU C R$ 3.000 CPU B R$ 2.500

Lista Monitor: Lista Teclado:

Monitor A R$ 1.200 Teclado A R$ 100 Monitor B R$ 800

Lista Mouse: Mouse B R$ 120 Mouse A R$ 40

Primeiramente, deve-se percorrer a lista de notebooks e verificar quais atendem ao critério do Inciso II.

Desta forma, o notebook A, não entraria na lista e ficaria com o atributo Aproveitado = False, e o notebook B, teria a propriedade Aproveitado = True.

Posteriormente, deve-se tentar montar os itens conforme Inciso III (por possuir valor mais elevado), percorre -ser a lista dos outros itens e montar os conjuntos de acordo com os critérios citados anteriormente. Na prática, percorre-se a lista de CPUs, para cada CPU, percorre-se a lista de monitores, para cada monitor, percorre-se a lista de teclados, e finalmente, para cada teclado, percorre-se a lista de mouses, o primeiro conjunto que atender ao critério do inciso, serão colocados em um novo objeto do tipo TConjunto, e além disso, cada objeto THardware deverá informar que foi aproveitado.

Ao percorrer a lista teríamos como tentativas de montagem de conjuntos a tabela a seguir:

CPUMonitorTecladoMouseSoma dos ItensResultado
3.6001.2001001205020Inválido, valor maior que R$4.000
3.6001.200100404940Inválido, valor maior que R$4.000
3.6008001001204620Inválido, valor maior que R$4.000
3.600800100404540Inválido, valor maior que R$4.000
3.0001.2001001204420Inválido, valor maior que R$4.000
3.0001.200100404340Inválido, valor maior que R$4.000
3.0008001001204020Inválido, valor maior que R$4.000
3.000800100403940Válido, valor inferior a R$4.000

Neste momento, deve-se criar um objeto do tipo conjunto e inserir os objetos THardware que montaram a combinação válida. Repetindo o processo até que não seja possível montar mais combinações obedecendo aos incisos decretados.

Protótipo ​

Este projeto possui um protótipo visual e um protótipo de utilização do algoritmo de ordenação quicksort, a ordenação pelo método quicksort, está disponível em:

T:\TotaliPrototipos\prototipos\PCIA\MP do bem\Exemplo QuickSort

e o protótipo visual se encontra em:

Protótipo MP do Bem