Exemple #1
0
class TestISS(unittest.TestCase):
    def setUp(self):
        self.item = Item('bolsa', 200)
        self.orcamento = Orcamento()
        self.orcamento.adiciona_item(self.item)

    def test_calcula_ISS(self):
        iss = ISS()
        self.assertEqual(iss.calcula(self.orcamento), 200 * 0.1)

    def test_calcula_ICMS(self):
        icms = ICMS()
        self.assertEqual(icms.calcula(self.orcamento), 200 * 0.06)
Exemple #2
0
    def test_calcula(self):
        item_a = Item(nome='Item A', valor=100)
        orcamento = Orcamento(itens=[item_a])
        imposto = ICMS()

        imposto_calculado = imposto.calcula(orcamento)
        imposto_esperado = 60

        self.assertEqual(imposto_esperado, imposto_calculado)
Exemple #3
0
    def test_calcula_sem_desconto(self):
        item_a = Item(nome='Item A', valor=10)
        orcamento = Orcamento(itens=[item_a])

        sut = CalculadorDesconto()

        desconto_calculado = sut.calcula(orcamento)
        desconto_esperado = 0

        self.assertEqual(desconto_calculado, desconto_esperado)
Exemple #4
0
    def test_calcula_iss(self):
        calculador = CalculadorImposto()
        item_a = Item(nome='Item A', valor=100)
        orcamento = Orcamento(itens=[item_a])
        imposto = ISS()

        imposto_calculado = calculador.calcula(orcamento, imposto)
        imposto_esperado = 10

        self.assertEqual(imposto_esperado, imposto_calculado)
Exemple #5
0
    def test_calcula(self):
        itens = [Item(nome=f'Item {it}', valor=it) for it in range(1, 10)]

        orcamento = Orcamento(itens=itens)

        sut = SemDesconto()

        desconto_calculado = sut.calcula(orcamento)
        desconto_esperado = 0

        self.assertEqual(desconto_calculado, desconto_esperado)
Exemple #6
0
    def test_calcula_desconto_por_cinco_itens(self):
        itens = [Item(nome=f'Item {it}', valor=it) for it in range(1, 10)]

        orcamento = Orcamento(itens=itens)

        sut = CalculadorDesconto()

        desconto_calculado = sut.calcula(orcamento)
        desconto_esperado = 4.5

        self.assertEqual(desconto_calculado, desconto_esperado)
Exemple #7
0
class CalculadorDeImpostosTestCase(unittest.TestCase):
    def setUp(self):
        self.orcamento = Orcamento()
        self.orcamento.adiciona_item(Item('Item A', 100.0))
        self.orcamento.adiciona_item(Item('Item B', 50.0))
        self.orcamento.adiciona_item(Item('Item C', 400.0))
        self.calculador_de_impostos = CalculadorDeImpostos()

    def test_realiza_calculo_ICMS(self):
        valor = self.calculador_de_impostos.realiza_calculo(
            self.orcamento, ICMS())
        self.assertEqual(valor, 33.0)

    def test_realiza_calculo_ISS(self):
        valor = self.calculador_de_impostos.realiza_calculo(
            self.orcamento, ISS())
        self.assertEqual(valor, 105.0)

    def test_realiza_calculo_ICPP(self):
        valor = self.calculador_de_impostos.realiza_calculo(
            self.orcamento, ICPP())
        self.assertEqual(valor, 38.5)

    def test_realiza_calculo_IKCV(self):
        valor = self.calculador_de_impostos.realiza_calculo(
            self.orcamento, IKCV())
        self.assertEqual(valor, 55)

    def test_realiza_calculo_IKCV_com_ICMS(self):
        valor = self.calculador_de_impostos.realiza_calculo(
            self.orcamento, IKCV(ICMS()))
        self.assertEqual(valor, 88)
# -*- coding: UTF-8 -*-


class Calculador_de_impostos(object):
    """Classe calculadora de impostos responsável pela montagem do cálculo de
        impostos com base no padrão strategy.
    """
    def calcula_imposto(self, orcamento, imposto):
        return imposto.calcula(orcamento)


if __name__ == "__main__":
    from orcamento import Orcamento
    from impostos import IKCV, ICPP

    valor_do_orcamento = Orcamento(100)
    calculadora = Calculador_de_impostos()

    print(calculadora.calcula_imposto(valor_do_orcamento, IKCV()))
    print(calculadora.calcula_imposto(valor_do_orcamento, ICPP(IKCV())))
# -*- coding: UTF-8 -*-
# calculador_de_descontos.py
from descontos import Desconto_por_cinco_itens, Desconto_por_mais_de_quinhetos_reais, Sem_desconto

class Calculador_de_descontos(object):

    def calcula(self, orcamento):

        desconto = Desconto_por_cinco_itens(
            Desconto_por_mais_de_quinhentos_reais(
                Sem_desconto()
            )
        )

        return desconto.calcula(orcamento)

if __name__ == '__main__':

    from orcamento import Orcamento, Item

    orcamento = Orcamento()
    orcamento.adiciona_item(Item('Item A', 100.0))
    orcamento.adiciona_item(Item('Item B', 50.0))
    orcamento.adiciona_item(Item('Item C', 400.0))

    calculador_de_descontos = Calculador_de_descontos()
    desconto = calculador_de_descontos.calcula(orcamento)
    print 'Desconto calculado : %s' % (desconto)
# -*- coding: UTF-8 -*-
#../design-patterns-python/calculador_de_impostos.py

class Calculador_de_impostos(object):
    def realiza_calculo(self, orcamento, imposto):
        valor = imposto.calcula(orcamento)
        print valor


if __name__ == '__main__':

    from orcamento import Orcamento, Item
    from impostos import ICMS, ISS, IKCV, ICPP

    orcamento = Orcamento()

    orcamento.adiciona_item(Item('Item 1', 20))
    orcamento.adiciona_item(Item('Item 2', 20))
    orcamento.adiciona_item(Item('Item 3', 20))
    orcamento.adiciona_item(Item('Item 4', 20))
    orcamento.adiciona_item(Item('Item 5', 200))

    calculador_de_impostos = Calculador_de_impostos()
    
    print 'ICMS seguido de ISS:'
    calculador_de_impostos.realiza_calculo(orcamento, ICMS())
    calculador_de_impostos.realiza_calculo(orcamento, ISS())
    
    print '\nICMS com ISS:'
    ISS_com_ICMS = ISS(ICMS())
    calculador_de_impostos.realiza_calculo(orcamento, ISS_com_ICMS)
Exemple #11
0
from impostos import ICMS, ISS, ICPP, IKCV


class Calculador_de_impostos():
    def realiza_calculo(self, orcamento, imposto):

        imposto_calculado = imposto.calcula(orcamento)

        print(imposto_calculado)


if __name__ == '__main__':

    from orcamento import Orcamento, Item

    orcamento = Orcamento()

    orcamento.adiciona_item(Item('item1', 50))
    orcamento.adiciona_item(Item('item2', 200))
    orcamento.adiciona_item(Item('item3', 250))

    calculador = Calculador_de_impostos()

    calculador.realiza_calculo(orcamento, ISS())
    calculador.realiza_calculo(orcamento, ICMS())

    print('ISS e ICMS')

    calculador.realiza_calculo(orcamento, ISS(ICMS()))

    calculador.realiza_calculo(orcamento, ICPP())
Exemple #12
0
# -*- coding: UTF-8 -*-

class Calculador_de_impostos(object):

        def realiza_calculo(self, orcamento, imposto):    
            imposto_calculado =imposto.calcula(orcamento)
            print(imposto_calculado)


if __name__ == '__main__':

    print()
    print('--CALCULADOR DE IMPOSTOS--')
    from orcamento import Orcamento, Item

    orcamento = Orcamento()
    orcamento.adiciona_item(Item('ITEM - 1', 10))
    orcamento.adiciona_item(Item('ITEM - 2', 10))
    orcamento.adiciona_item(Item('ITEM - 3', 10))
    orcamento.adiciona_item(Item('ITEM - 4', 10))    
    orcamento.adiciona_item(Item('ITEM - 5', 10))    
    orcamento.adiciona_item(Item('ITEM - 6', 50))

    calculador = Calculador_de_impostos()

    calculador.realiza_calculo(orcamento, ISS())
    calculador.realiza_calculo(orcamento, ICMS())

    calculador.realiza_calculo(orcamento,  ISS(ICMS()))

    calculador.realiza_calculo(orcamento, ICPP())
Exemple #13
0
# -*- coding: UTF-8 -*-

from descontos import Desconto_por_cinco_itens, Desconto_por_mais_de_quinhentos_reais, Sen_desconto


class Calculador_de_descontos(object):
    def calcula(self, orcamento):
        desconto = Desconto_por_cinco_itens(
            Desconto_por_mais_de_quinhentos_reais(
                Sen_desconto())).calcula(orcamento)
        return desconto


if __name__ == '__main__':
    from orcamento import Orcamento, Item

    orcamento = Orcamento()
    orcamento.adiciona_item(Item('Item - 1', 100))
    orcamento.adiciona_item(Item('Item - 2', 50))
    orcamento.adiciona_item(Item('Item - 3', 100))

    calculador = Calculador_de_descontos()

    desconto = calculador.calcula(orcamento)

    print orcamento.valor
    print 'Desconto calculado %s' % (desconto)
Exemple #14
0
from impostos import ISS, ICMS, IKCV, ICPP


class CalculadorDeImpostos(object):
    def realiza_calculo(self, orcamento, imposto):
        imposto_calculado = imposto.calcula(orcamento)
        print(imposto_calculado)


if __name__ == "__main__":
    from orcamento import Orcamento, Item

    calculador = CalculadorDeImpostos()
    orcamento = Orcamento()
    orcamento.adiciona_itens(Item('Item 1', 50))
    orcamento.adiciona_itens(Item('Item 1', 200))
    orcamento.adiciona_itens(Item('Item 1', 250))

    print("ICMS e ISS")
    calculador.realiza_calculo(orcamento, ICMS())
    calculador.realiza_calculo(orcamento, ISS())

    print("ICPP e IKCV")
    calculador.realiza_calculo(orcamento, ICPP())
    calculador.realiza_calculo(orcamento, IKCV())
# -*- coding: UTF-8 -*-
# calculador_de_descontos.py
from descontos import Desconto_por_cinco_itens, Desconto_por_mais_de_quinhentos_reais, Desconto_por_cem_reais, Sem_desconto


class Calculador_de_descontos(object):
    def calcula(self, orcamento):

        desconto = Desconto_por_cinco_itens(
            Desconto_por_cem_reais(
                Desconto_por_mais_de_quinhentos_reais(
                    Sem_desconto()))).calcular(orcamento)

        return desconto


if __name__ == '__main__':

    from orcamento import Orcamento, Item

    orcamento = Orcamento()
    orcamento.adiciona_item(Item('Item A', 30.0))

    calculador_de_descontos = Calculador_de_descontos()
    desconto = calculador_de_descontos.calcula(orcamento)
    print 'Desconto calculado : %s' % (desconto)
from impostos import ICMS, ICPP, IKCV, ISS


class CalculadorImpostos:
    def realiza_calculo(self, orcamento, imposto):
        imposto_calculado = imposto.calcula(orcamento)
        print(imposto_calculado)


if __name__ == '__main__':

    from orcamento import Orcamento, Item

    orcamento = Orcamento()

    orcamento.adiciona_item(Item('item 0', 50.0))
    orcamento.adiciona_item(Item('item 1', 200.0))
    orcamento.adiciona_item(Item('item 2', 250.0))

    calculador = CalculadorImpostos()

    print('ISS e ICMS')
    calculador.realiza_calculo(orcamento, ISS())
    calculador.realiza_calculo(orcamento, ICMS())

    print('ICPP e IKCV')
    calculador.realiza_calculo(orcamento, ICPP())
    calculador.realiza_calculo(orcamento, IKCV())
class Calculador_de_impostos(object):

	def realiza_calculo(self, orcamento, imposto):

		imposto_calculado = imposto.calcula(orcamento)

		print imposto_calculado


if __name__ == '__main__':

	from orcamento import Orcamento, Item

	calculador = Calculador_de_impostos()

	orcamento = Orcamento()
	orcamento.adiciona_item(Item('Item - 1', 50))
	orcamento.adiciona_item(Item('Item - 2', 200))
	orcamento.adiciona_item(Item('Item - 3', 250))

	print 'ISS e ICMS'
	calculador.realiza_calculo(orcamento, ISS())
	calculador.realiza_calculo(orcamento, ICMS())

	calculador.realiza_calculo(orcamento, ISS(ICMS()))	

	print 'ICPP e IKCV'
	calculador.realiza_calculo(orcamento, ICPP())
	calculador.realiza_calculo(orcamento, IKCV())

	calculador.realiza_calculo(orcamento, ICPP(IKCV()))
from impostos import ISS, ICMS, IKCV, ICPP


class Calculador_de_impostos(object):
    def realiza_calculo(self, calculo, imposto):
        imposto_calculado = imposto.calcula(orcamento)
        print 'R$ ', imposto_calculado


if __name__ == '__main__':

    from orcamento import Orcamento, Item

    calculador = Calculador_de_impostos()
    orcamento = Orcamento()
    orcamento.adiciona_item(Item('Arroz', 30))
    orcamento.adiciona_item(Item('Feijao', 59))
    orcamento.adiciona_item(Item('Carne', 350))
    print '---Total da compra-- '
    print '-------------------- R$ ', orcamento.valor

    print 'ISS e ICMS'
    calculador.realiza_calculo(orcamento, ISS())
    calculador.realiza_calculo(orcamento, ICMS())

    print 'ISS com ICMS'
    calculador.realiza_calculo(orcamento, ISS(ICMS()))

    print 'IKCV e ICPP'
    calculador.realiza_calculo(orcamento, ICPP())
    calculador.realiza_calculo(orcamento, IKCV())
from descontos import Desconto_por_cinco_itens, Desconto_por_mais_de_quinhentos_reais, Sem_desconto


class Calculador_de_descontos(object):
    def calcula(self, orcamento):

        return Desconto_por_cinco_itens(
            Desconto_por_mais_de_quinhentos_reais(
                Sem_desconto())).calcula(orcamento)


if __name__ == "__main__":

    from orcamento import Orcamento, Item

    orcamento = Orcamento()

    orcamento.adiciona_item(Item("item 0", 100.0))
    orcamento.adiciona_item(Item("item 1", 100.0))
    orcamento.adiciona_item(Item("item 2", 100.0))
    orcamento.adiciona_item(Item("item 3", 100.0))
    orcamento.adiciona_item(Item("item 4", 100.0))
    orcamento.adiciona_item(Item("item 5", 100.0))
    orcamento.adiciona_item(Item("item 6", 100.0))
    orcamento.adiciona_item(Item("item 7", 100.0))
    orcamento.adiciona_item(Item("item 8", 100.0))
    orcamento.adiciona_item(Item("item 9", 100.0))

    print orcamento.valor

    calculator = Calculador_de_descontos()
Exemple #20
0
from descontos import Desconto_por_cinco_items, Desconto_por_mais_de_quinhentos_reais, Sem_desconto

class Calculador_de_descontos(object):

    def calcula(self, orcamento):
        desconto = Desconto_por_cinco_items(
            Desconto_por_mais_de_quinhentos_reais(Sem_desconto)).calcula(orcamento)
        return desconto


if __name__ == '__main__':
    from orcamento import Orcamento, Item

    orcamento = Orcamento()
    orcamento.adiciona_item(Item('Item -1', 100))
    orcamento.adiciona_item(Item('Item -2', 400))
    orcamento.adiciona_item(Item('Item -3', 150))
    orcamento.adiciona_item(Item('Item -4', 250))
    orcamento.adiciona_item(Item('Item -5', 350))
    orcamento.adiciona_item(Item('Item -6', 250))
    orcamento.adiciona_item(Item('Item -7', 400))

    print(orcamento.valor)
    calculador = Calculador_de_descontos()
    desconto_calculado = calculador.calcula(orcamento)
    print("Desconto Calculado: %s " % desconto_calculado)
# -*- coding: Utf-8 -*-

from desconto import Desconto_por_cinco_itens, Desconto_por_mais_de_quinhetos_reais, Sem_desconto

class Calculador_de_desconto(object):

	def calcula(self, orcamento):
		
		desconto = Desconto_por_mais_de_quinhetos_reais(Desconto_por_mais_de_quinhetos_reais(Sem_desconto())).calcula(orcamento)

		return desconto
		



if __name__ == "__main__":

	from orcamento import Orcamento, Item

	orcamento = Orcamento()

	orcamento.adiciona_item(Item('Item a', 100.0))
	orcamento.adiciona_item(Item('Item b', 50.0))
	orcamento.adiciona_item(Item('Item c', 400.0))

	desconto = Calculador_de_desconto().calcula(orcamento) 
	print('Desconto calculado : %s' % (desconto))
from descontos import Desconto_por_cinco_itens, Desconto_por_mais_de_quinhentos_reais, Sem_desconto


class Calculador_de_descontos(object):
    def calcula(self, orcamento):
        desconto = Desconto_por_cinco_itens(
            Desconto_por_mais_de_quinhentos_reais(
                Sem_desconto())).calcula(orcamento)

        return desconto


if __name__ == "__main__":

    from orcamento import Orcamento, Item

    orcamento = Orcamento()
    orcamento.adiciona_item(Item("ITEM-1", 100))
    orcamento.adiciona_item(Item("ITEM-2", 50))
    orcamento.adiciona_item(Item("ITEM-3", 400))
    orcamento.adiciona_item(Item("ITEM-3", 00))
    orcamento.adiciona_item(Item("ITEM-3", 400))

    print(orcamento.valor)

    calculador = Calculador_de_descontos()

    desconto = calculador.calcula(orcamento)

    print('Desconto calculado %s' % desconto)
# -*- coding: UTF-8 -*-
# calculador_de_impostos.py

class Calculador_de_impostos(object):

    def realiza_calculo(self, orcamento, calcula_imposto):
        valor = calcula_imposto(orcamento)
        print(valor)

if (__name__ == '__main__'):
    from orcamento import Orcamento
    from impostos import ISS, ICMS

    orcamento = Orcamento(500.0)
    calculador_de_impostos = Calculador_de_impostos()
    calculador_de_impostos.realiza_calculo(orcamento, ICMS().calcula_ICMS) # imprime 50.0
    calculador_de_impostos.realiza_calculo(orcamento, ISS().calcula_ISS)  # imprime 30.0
    DescontoMaisDeQuinhentosReais,
    SemDesconto,
)


class CalculadorDescontos:
    def calcula(self, orcamento):
        return DescontoCincoItens(DescontoMaisDeQuinhentosReais(
            SemDesconto())).calcula(orcamento)


if __name__ == '__main__':

    from orcamento import Orcamento, Item

    orcamento = Orcamento()

    orcamento.adiciona_item(Item('item 0', 100.0))
    orcamento.adiciona_item(Item('item 1', 100.0))
    orcamento.adiciona_item(Item('item 2', 100.0))
    orcamento.adiciona_item(Item('item 3', 100.0))
    orcamento.adiciona_item(Item('item 4', 100.0))
    orcamento.adiciona_item(Item('item 5', 100.0))
    orcamento.adiciona_item(Item('item 6', 100.0))
    orcamento.adiciona_item(Item('item 7', 100.0))
    orcamento.adiciona_item(Item('item 8', 100.0))
    orcamento.adiciona_item(Item('item 9', 100.0))

    print(orcamento.valor)

    calculator = CalculadorDescontos()
e deixarmos um único método descobrir o que deve ser feito, quebramos essas 
responsabilidades em várias diferentes classes, e as unimos como uma corrente.
"""

from desconto import Desconto_por_cinco_itens, Desconto_por_mais_quinhentos_reais, Sem_desconto


class Calcula_descontos(object):
    def calcula(self, orcamento):

        desconto = Desconto_por_cinco_itens(
            Desconto_por_mais_quinhentos_reais(
                Sem_desconto())).calcula(orcamento)

        return desconto


if __name__ == "__main__":

    from orcamento import Orcamento, Item

    orcamento = Orcamento()
    orcamento.adiciona_item(Item('ITEM - 1', 100))
    orcamento.adiciona_item(Item('ITEM - 2', 50))
    orcamento.adiciona_item(Item('ITEM - 3', 500))
    orcamento.adiciona_item(Item('ITEM - 4', 400))

    calculador = Calcula_descontos()
    desconto = calculador.calcula(orcamento)

    print(f"Desconto calculado R$ {desconto}")
from impostos import ICMS, ICPP, IKCV, ISS


class CalculadorImpostos:
    def realiza_calculo(self, orcamento, imposto):
        imposto_calculado = imposto.calcula(orcamento)
        print(imposto_calculado)


if __name__ == "__main__":

    from orcamento import Orcamento, Item

    orcamento = Orcamento()

    orcamento.adiciona_item(Item("item 0", 50.0))
    orcamento.adiciona_item(Item("item 1", 200.0))
    orcamento.adiciona_item(Item("item 2", 250.0))

    calculador = CalculadorImpostos()

    print("ISS e ICMS")
    calculador.realiza_calculo(orcamento, ISS())
    calculador.realiza_calculo(orcamento, ICMS())

    print("ICPP e IKCV")
    calculador.realiza_calculo(orcamento, ICPP())
    calculador.realiza_calculo(orcamento, IKCV())
from impostos import ISS, ICMS, IKCV, ICPP

class Calculador_de_impostos(object):

	def realiza_calculo(self, orcamento, imposto):
		
		valor = imposto.calcula(orcamento)
		print valor

if __name__ == '__main__':

	from orcamento import Orcamento, Item
	from impostos import ISS, ICMS, IKCV, ICPP

	calculador = Calculador_de_impostos()
	orcamento = Orcamento()

	orcamento.adiciona_item(Item('ITEM 1', 50))
	orcamento.adiciona_item(Item('ITEM 1', 200))
	orcamento.adiciona_item(Item('ITEM 1', 250))		

	print 'INSS e ICMS'
	calculador.realiza_calculo(orcamento, ISS())
	calculador.realiza_calculo(orcamento, ICMS())
	print 'INSS com ICMS'
	calculador.realiza_calculo(orcamento, ISS(ICMS()))

	print 'ICPP e IKCV'
	calculador.realiza_calculo(orcamento, ICPP())
	calculador.realiza_calculo(orcamento, IKCV())
	print 'ICPP com IKCV'
Exemple #28
0
# -*- coding: UTF-8 -*-
'''
Created on Oct 21, 2016
@author: tca85
'''

from calculador_de_impostos import Calculador_de_impostos

# -----------------------------------------------------------------------------------------
if __name__ == '__main__':
    from orcamento import Orcamento, Item
    from impostos import ICMS, ISS, ICPP, IKCV

    orcamento = Orcamento()

    orcamento.adiciona_item(Item('Item 1', 500.0))

    imposto = Calculador_de_impostos()

    print 'ISS  %f' % (imposto.realiza_calculo(orcamento, ISS()))
    print 'ICMS %f' % (imposto.realiza_calculo(orcamento, ICMS()))
    print 'ISS com ICMS %f' % (imposto.realiza_calculo(orcamento, ISS(ICMS())))

    print 'ICPP  %f' % (imposto.realiza_calculo(orcamento, ICPP()))
    print 'IKCV  %f' % (imposto.realiza_calculo(orcamento, IKCV()))
    print 'ICPP com IKCV %f' % (imposto.realiza_calculo(
        orcamento, ICPP(IKCV())))
Exemple #29
0
 def setUp(self):
     self.item = Item('bolsa', 200)
     self.orcamento = Orcamento()
     self.orcamento.adiciona_item(self.item)
# -*- coding: UTF-8 -*-
from descontos import Deconto_por_cinco_itens, Desconto_por_mais_de_quinhentos_reais, Sem_desconto

class Calculador_de_descontos(object):


	def calcula(self, orcamento):

		desconto = Deconto_por_cinco_itens(
				   Desconto_por_mais_de_quinhentos_reais(Sem_desconto())
				   ).calcula(orcamento)

		return desconto

if __name__ == '__main__' :

	from orcamento import Orcamento, Item

	orcamento = Orcamento()
	orcamento.adiciona_item(Item('ITEM - 1', 100))
	orcamento.adiciona_item(Item('ITEM - 1', 50))
	orcamento.adiciona_item(Item('ITEM - 1', 400))

	calculador = Calculador_de_descontos()

	desconto = calculador.calcula(orcamento)

	print 'Desconto %s ' % (desconto)
"""

from item import Item
from orcamento import Orcamento


def ISS(orcamento):
    return ISS.__name__, orcamento.valor * 0.1


def ICMS(orcamento):
    return ICMS.__name__, orcamento.valor * 0.06


class CalculadoraDeImpostos(object):
    def realiza_calculo(self, orcamento, calcula_imposto):
        descricao, valor = calcula_imposto(orcamento)
        print(descricao, valor, '%')


if __name__ == '__main__':

    calculador = CalculadoraDeImpostos()

    orcamento = Orcamento()
    orcamento.adiciona_item(Item('ITEM 1', 50))
    orcamento.adiciona_item(Item('ITEM 2', 100))

    calculador.realiza_calculo(orcamento, ISS)
    calculador.realiza_calculo(orcamento, ICMS)
# -*- coding: UTF-8 -*-
from descontos import Desconto_por_cinco_itens, Desconto_por_mais_de_quinhentos_reais, Sem_desconto
class Calculador_de_descontos(object):

	def calcula(self, orcamento):

		desconto = Desconto_por_cinco_itens(
			Desconto_por_mais_de_quinhentos_reais(Sem_desconto())
		).calcula(orcamento)
		return desconto

if __name__ == '__main__':

	from orcamento import Orcamento, Item

	orcamento = Orcamento()
	orcamento.adiciona_item(Item('Item - 1', 100))
	orcamento.adiciona_item(Item('Item - 2', 50))
	orcamento.adiciona_item(Item('Item - 3', 400))

	calculador = Calculador_de_descontos()

	desconto = calculador.calcula(orcamento)
	print 'Desconto calculado %s' % (desconto)
# _*_ encoding: utf-8 _*_

from descontos import Desconto_por_cinco_itens, Desconto_por_mais_de_quinhentos_reais, Sem_desconto

class Calculador_de_descontos(object):

	def calcula(self, orcamento):
		# exemplo do design patter Chain of Responsability (cadeia de responsabilidades)
		desconto = Desconto_por_cinco_itens(
				Desconto_por_mais_de_quinhentos_reais(Sem_desconto())
			).calcula(orcamento)
		return desconto

# este trecho possibilita a execução de testes com esta classe
if __name__ == '__main__': 

	from orcamento import Orcamento, Item

	orcamento = Orcamento()
	orcamento.adiciona_item(Item('ITEM 01', 100))
	orcamento.adiciona_item(Item('ITEM 02', 50))
	orcamento.adiciona_item(Item('ITEM 03', 400))
	orcamento.adiciona_item(Item('ITEM 04', 400))
	orcamento.adiciona_item(Item('ITEM 05', 500))
	orcamento.adiciona_item(Item('ITEM 06', 40))

	print orcamento.valor

	calculador = Calculador_de_descontos()
	desconto = calculador.calcula(orcamento)
	print 'Desconto calculado %s' % (desconto)
from imposto import ISS, ICMS, ICPP, IKCV
from orcamento import Orcamento, Item


class Calculador_Imposto(object):
    def __init__(self, orcamento, imposto):
        self.__calculado = imposto.calcula(orcamento)

    @property
    def imposto_calculado(self):
        return self.__calculado


if __name__ == '__main__':
    orcamento = Orcamento()
    orcamento.adiciona_item(Item('Item - A', 100.0))
    orcamento.adiciona_item(Item('Item - B', 50.0))
    orcamento.adiciona_item(Item('Item - C', 400.0))

    print 'ISS e ICMS'
    iss = Calculador_Imposto(orcamento, ISS())
    icms = Calculador_Imposto(orcamento, ICMS())

    print '%s\n%s' % (iss.imposto_calculado, icms.imposto_calculado)

    print 'ICPP e IKCV'
    icpp = Calculador_Imposto(orcamento, ICPP())
    ikcv = Calculador_Imposto(orcamento, IKCV())

    print '%s\n%s' % (icpp.imposto_calculado, ikcv.imposto_calculado)
Exemple #35
0
# -*- coding: utf-8 -*-
from descontos import Desconto_por_cinco_itens, Desconto_por_quinhentos_reais, Sem_desconto


class Calculador_de_descontos(object):
    def calcula(self, orcamento):
        desconto = Desconto_por_cinco_itens(
            Desconto_por_quinhentos_reais(Sem_desconto())).calcula(orcamento)
        return desconto


if __name__ == '__main__':

    from orcamento import Orcamento, Item

    orcamento = Orcamento()
    orcamento.adiciona_item(Item('Arroz', 150))
    orcamento.adiciona_item(Item('Feijão', 300))
    orcamento.adiciona_item(Item('Carne', 20))

    calculador = Calculador_de_descontos()
    desconto = calculador.calcula(orcamento)

    print '|----------------------------------------- |'
    print '|-- Bem vindo ao Supermercado do Rafael -- |'
    print '| ', (' ' * 39), '|'
    for itens in orcamento.obter_itens():
        print '|--', itens.nome, (' ' * (37 - len(itens.nome))), ''
        print '|--------------- R$', itens.valor, (' ' * 19), ''
    print '| ', (' ' * 39), '|'
    print '|-- Total de itens ', (orcamento.total_itens), (' ' * 19), ' |'
from impostos import ISS, ICMS


class Calculador_de_impostos(object):
    def realiza_calculo(self, orcamento, imposto):
        imposto_calculado = imposto.calcula(orcamento)
        print imposto_calculado


if __name__ == '__main__':
    from orcamento import Orcamento

    orcamento = Orcamento(500)

    calculador = Calculador_de_impostos()
    calculador.realiza_calculo(orcamento, ISS())
    calculador.realiza_calculo(orcamento, ICMS())
# -*- coding: utf-8 -*-
from impostos import ISS, ICMS, ICPP, IKCV
from orcamento import Item

class Calculador_de_impostos(object):
    
    def realiza_calculo(self, orcamento, imposto):
        imposto_calculado = imposto.calcula(orcamento)           
        print imposto_calculado
        
if __name__ == '__main__':
    from orcamento import Orcamento

    calculador = Calculador_de_impostos()

    orcamento = Orcamento()
    orcamento.adiciona_item(Item("pasta de dentes", 100))
    
    calculador.realiza_calculo(orcamento, ISS())
    calculador.realiza_calculo(orcamento, ICMS())
    calculador.realiza_calculo(orcamento, ICPP())
    calculador.realiza_calculo(orcamento, IKCV())

    #Calculo imposto composto IKCV + ISS
    calculador.realiza_calculo(orcamento, IKCV(ISS(ICMS())))