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)
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)
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)
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)
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)
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)
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)
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())
# -*- 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())
# -*- 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)
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()
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'
# -*- 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())))
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)
# -*- 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())))