Exemplo n.º 1
0
 def test_de_15_conto(self):
     objCaixa = Caixa()
     self.assertEquals(objCaixa.sacar(15), {
         10: 1,
         20: 0,
         50: 0,
         100: 0
     })
Exemplo n.º 2
0
 def test_de_180_conto(self):
     objCaixa = Caixa()
     self.assertEquals(objCaixa.sacar(180), {
         10: 1,
         20: 1,
         50: 1,
         100: 1
     })
Exemplo n.º 3
0
 def test_de_250_conto(self):
     objCaixa = Caixa()
     self.assertEquals(objCaixa.sacar(250), {
         10: 0,
         20: 0,
         50: 1,
         100: 2
     })
Exemplo n.º 4
0
 def test_de_40_conto(self):
     objCaixa = Caixa()
     self.assertEquals(objCaixa.sacar(40), {
         10: 0,
         20: 2,
         50: 0,
         100: 0
     })
Exemplo n.º 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
Exemplo n.º 6
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:
Exemplo n.º 7
0
 def setUp(self):
     self.caixa = Caixa()