Пример #1
0
 def test_de_15_conto(self):
     objCaixa = Caixa()
     self.assertEquals(objCaixa.sacar(15), {
         10: 1,
         20: 0,
         50: 0,
         100: 0
     })
Пример #2
0
 def test_de_180_conto(self):
     objCaixa = Caixa()
     self.assertEquals(objCaixa.sacar(180), {
         10: 1,
         20: 1,
         50: 1,
         100: 1
     })
Пример #3
0
 def test_de_250_conto(self):
     objCaixa = Caixa()
     self.assertEquals(objCaixa.sacar(250), {
         10: 0,
         20: 0,
         50: 1,
         100: 2
     })
Пример #4
0
 def test_de_40_conto(self):
     objCaixa = Caixa()
     self.assertEquals(objCaixa.sacar(40), {
         10: 0,
         20: 2,
         50: 0,
         100: 0
     })
Пример #5
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
Пример #6
0
	def test_de_15_conto(self):
		objCaixa = Caixa()
		self.assertEquals(objCaixa.sacar(15), {10:1, 20:0, 50:0, 100:0});
Пример #7
0
	def test_de_180_conto(self):
		objCaixa = Caixa()
		self.assertEquals(objCaixa.sacar(180), {10:1, 20:1, 50:1, 100:1});
Пример #8
0
	def test_de_250_conto(self):
		objCaixa = Caixa()
		self.assertEquals(objCaixa.sacar(250), {10:0, 20:0, 50:1, 100:2});
Пример #9
0
	def test_de_40_conto(self):
		objCaixa = Caixa()
		self.assertEquals(objCaixa.sacar(40), {10:0, 20:2, 50:0, 100:0});
Пример #10
0
 def setUp(self):
     self.caixa = Caixa()
Пример #11
0
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})
Пример #12
0
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:
Пример #13
0
 def setUp(self):
     self.caixa = Caixa()
Пример #14
0
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
        })