def test_de_15_conto(self): objCaixa = Caixa() self.assertEquals(objCaixa.sacar(15), { 10: 1, 20: 0, 50: 0, 100: 0 })
def test_de_180_conto(self): objCaixa = Caixa() self.assertEquals(objCaixa.sacar(180), { 10: 1, 20: 1, 50: 1, 100: 1 })
def test_de_250_conto(self): objCaixa = Caixa() self.assertEquals(objCaixa.sacar(250), { 10: 0, 20: 0, 50: 1, 100: 2 })
def test_de_40_conto(self): objCaixa = Caixa() self.assertEquals(objCaixa.sacar(40), { 10: 0, 20: 2, 50: 0, 100: 0 })
def efectuar_pagamento(self, key, window_id): """Esta acção efectua o pagamento""" active = False record_id = key record = model.get(key=record_id)[0] record['user'] = session['user'] record['estado'] = 'Pago' from terceiro import Terceiro terceiro = Terceiro(where="nome='Clientes Gerais'").get()[0] cliente = terceiro['id'] conta_cliente = terceiro['a_receber'] #Verifica se tem caixa aberta, se não tiver abre #Faz o pagamento em caixa from caixa import Caixa from linha_caixa import LinhaCaixa from terminal import Terminal terminal = Terminal(where="""name='Distribuicao'""").get( ) # substituir esta bosta para get_terminal if len(terminal) > 0: terminal = terminal[0]['id'] caixa = Caixa( where= "estado = 'Aberta' AND terminal='{terminal}' AND data_inicial <= '{today}'" .format(terminal=terminal, today=record['data'])).get() if not caixa: caixa = Caixa(data_inicial=record['data'], hora_inicial=time.strftime('%H:%M:%S'), valor_inicial=0, valor_final=0, estado='Aberta', user=session['user'], vendedor=session['user'], terminal=terminal).put() else: caixa = caixa[0]['id'] from metodo_pagamento import MetodoPagamento metodos_pagamento = MetodoPagamento().get_options() first = True total_entregue = to_decimal('0') for metodo in metodos_pagamento: if bottle.request.forms.get(metodo[1]): method = to_decimal(str(bottle.request.forms.get(metodo[1]))) else: method = to_decimal('0') if method > to_decimal('0'): total_entregue += to_decimal( str(bottle.request.forms.get(metodo[1]))) if total_entregue >= to_decimal( str(bottle.request.forms.get('total_a_pagar'))): for metodo in metodos_pagamento: if first == True: default_metodo = metodo first = False if bottle.request.forms.get(metodo[1]): method = to_decimal( str(bottle.request.forms.get(metodo[1]))) else: method = to_decimal('0') if method > to_decimal('0'): linha_caixa = LinhaCaixa( caixa=caixa, descricao='Nossa Guia de Distribuição', documento='distribuicao', num_doc=record['numero'], valor_documento=to_decimal( str(bottle.request.forms.get('total_a_pagar'))), terceiro=cliente, metodo=metodo[0], entrada=bottle.request.forms.get(metodo[1]), saida=0, active=active, user=session['user']).put() troco = total_entregue - to_decimal( str(bottle.request.forms.get('total_a_pagar'))) if troco > to_decimal('0'): linha_caixa = LinhaCaixa( caixa=caixa, descricao='Nossa Guia de Distribuição', documento='distribuicao', num_doc=record['numero'], valor_documento=to_decimal( str(bottle.request.forms.get('total_a_pagar'))), terceiro=cliente, metodo=default_metodo[0], entrada=0, saida=troco, active=active, user=session['user']).put() else: troco = to_decimal('0') record['residual'] = to_decimal( str(bottle.request.forms.get( 'total_a_pagar'))) - total_entregue + troco #Faz o lançamento contabilistico se tiver factura como movimento activo, se não como movimento geral #Vê o metodo de pagamento e lança na conta adequada from diario import Diario diario = Diario(where="tipo='caixa'").get()[0]['id'] periodo = None from periodo import Periodo periodos = Periodo().get() for p in periodos: lista_datas = generate_dates(start_date=p['data_inicial'], end_date=p['data_final']) if str(format_date(record['data'])) in lista_datas: periodo = p['id'] if not periodo: return error_message( 'não existe periodo definido para a data em questão! \n') from movimento import Movimento from linha_movimento import LinhaMovimento movimento = Movimento( data=record['data'], numero=base_models.Sequence().get_sequence('movimento'), num_doc=record['numero'], descricao='Pagamento de Guia de Distribuição', diario=diario, documento='distribuicao', periodo=periodo, estado='Rascunho', user=session['user'], active=active).put() #print (record) Distribuicao(**record).put() for metodo in metodos_pagamento: if bottle.request.forms.get(metodo[1]): method = to_decimal( str(bottle.request.forms.get(metodo[1]))) else: method = to_decimal('0') if method > to_decimal('0'): conta_pagamento = MetodoPagamento().get( key=metodo[0])[0]['conta'] LinhaMovimento(movimento=movimento, descricao='Pagamento de Talão de Venda', conta=conta_pagamento, quant_debito=to_decimal('0'), debito=to_decimal( str(bottle.request.forms.get( metodo[1]))), quant_credito=to_decimal('0'), credito=to_decimal('0'), user=session['user']).put() LinhaMovimento( movimento=movimento, descricao='Pagamento de Guia de Distribuição', conta=conta_cliente, quant_debito=to_decimal('0'), debito=to_decimal('0'), quant_credito=to_decimal('0'), credito=to_decimal( str(bottle.request.forms.get(metodo[1]))), user=session['user']).put() return form_edit(key='None', window_id=self.window_id) else: return error_message( 'Segundo as Regras da Empresa não é possivel receber valores inferiores ao valor a Pagar, Torne a efectuar o pagamento por Favor!' ) #depois ver a possibilidade de ficar no mesmo sitio
def test_de_15_conto(self): objCaixa = Caixa() self.assertEquals(objCaixa.sacar(15), {10:1, 20:0, 50:0, 100:0});
def test_de_180_conto(self): objCaixa = Caixa() self.assertEquals(objCaixa.sacar(180), {10:1, 20:1, 50:1, 100:1});
def test_de_250_conto(self): objCaixa = Caixa() self.assertEquals(objCaixa.sacar(250), {10:0, 20:0, 50:1, 100:2});
def test_de_40_conto(self): objCaixa = Caixa() self.assertEquals(objCaixa.sacar(40), {10:0, 20:2, 50:0, 100:0});
def setUp(self): self.caixa = Caixa()
class CaixaEletronicoTest(unittest.TestCase): def setUp(self): self.caixa = Caixa() def test_pobrinho_quer_sacar_10_reais(self): self.assertEqual(self.caixa.sacar(10), [10,]) def test_menos_pobrinho_quer_sacar_20_reais(self): self.assertEqual(self.caixa.sacar(20), [20,]) def test_classe_media_quer_sacar_50_reais(self): self.assertEqual(self.caixa.sacar(50), [50,]) def test_rico_quer_sacar_100_reais(self): self.assertEqual(self.caixa.sacar(100), [100,]) def test_sacar_30_reais(self): self.assertEqual(self.caixa.sacar(30), [20, 10]) def test_sacar_130_reais(self): self.assertEqual(self.caixa.sacar(130), [100, 20, 10]) def test_sacar_280_reais(self): self.assertEqual(self.caixa.sacar(280), [100, 100, 50, 20, 10]) def test_sacar_15_reais(self): try: self.caixa.sacar(15) except ValorNaoPermitido: return assert False def test_zacarias_quer_sacar_menos_200_reais(self): try: self.caixa.sacar(-200) except ValorNaoPermitido: return assert False def test_contar_quando_houver_2_notas_de_100(self): self.assertEqual(self.caixa.como_dicionario([100, 100]), {100 : 2}) def test_contar_quando_houver_2_notas_de_100_e_1_de_50(self): self.assertEqual(self.caixa.como_dicionario([100, 100, 50]), {100: 2, 50: 1}) def test_contar_quando_houver_2_notas_de_100_e_1_de_50_e_2_de_20(self): self.assertEqual(self.caixa.como_dicionario([100, 100, 50, 20, 20]), {100: 2, 50: 1, 20: 2})
from list_de_compras import ListaCompras, menu_add_item, menu_remover_item, imprimir_lista from carrinho import Carrinho, add_carrinho, remover_item_carrinho, imprimir_carrinho from caixa import Caixa, imprimir_caixa from utils import clean_screen opcao = 0 lista = ListaCompras() carrinho = Carrinho() caixa = Caixa() # menu lista while opcao != 4: clean_screen() print('\t╔════════════════════════════════╗') print('\t║ 1º: Fazendo a lista de compras ║') print('\t╠════════════════════════════════╣') print('\t║ Opção 1 »» adionar item ║') print('\t║ Opção 2 »» remover item ║') print('\t║ Opção 3 »» ver a lista ║') print('\t║ Opção 4 »» ir para o mercado ║') print('\t╚════════════════════════════════╝') opcao = int(input('\n»sua opção: ')) clean_screen() if opcao < 1 or opcao > 4: print('\n\t»opção inválida!!') opcao = int(input('\t»selecione uma opção novamente: ')) elif opcao == 1:
class CaixaEletronicoTest(unittest.TestCase): def setUp(self): self.caixa = Caixa() def test_pobrinho_quer_sacar_10_reais(self): self.assertEqual(self.caixa.sacar(10), [ 10, ]) def test_menos_pobrinho_quer_sacar_20_reais(self): self.assertEqual(self.caixa.sacar(20), [ 20, ]) def test_classe_media_quer_sacar_50_reais(self): self.assertEqual(self.caixa.sacar(50), [ 50, ]) def test_rico_quer_sacar_100_reais(self): self.assertEqual(self.caixa.sacar(100), [ 100, ]) def test_sacar_30_reais(self): self.assertEqual(self.caixa.sacar(30), [20, 10]) def test_sacar_130_reais(self): self.assertEqual(self.caixa.sacar(130), [100, 20, 10]) def test_sacar_280_reais(self): self.assertEqual(self.caixa.sacar(280), [100, 100, 50, 20, 10]) def test_sacar_15_reais(self): try: self.caixa.sacar(15) except ValorNaoPermitido: return assert False def test_zacarias_quer_sacar_menos_200_reais(self): try: self.caixa.sacar(-200) except ValorNaoPermitido: return assert False def test_contar_quando_houver_2_notas_de_100(self): self.assertEqual(self.caixa.como_dicionario([100, 100]), {100: 2}) def test_contar_quando_houver_2_notas_de_100_e_1_de_50(self): self.assertEqual(self.caixa.como_dicionario([100, 100, 50]), { 100: 2, 50: 1 }) def test_contar_quando_houver_2_notas_de_100_e_1_de_50_e_2_de_20(self): self.assertEqual(self.caixa.como_dicionario([100, 100, 50, 20, 20]), { 100: 2, 50: 1, 20: 2 })