コード例 #1
0
ファイル: Pessoa.py プロジェクト: xxdannilinxx/ponto-de-venda
    def pessoas(self):
        pessoas = self.lista()
        if not pessoas:
            Util.message('info', 'Nenhuma pessoa cadastrada até o momento.')

        for pessoa in pessoas:
            Util.message('success' if pessoa['situacao'] == 'ativo' else 'danger', str(
                pessoa['id']) + ' - ' + str(pessoa['nome']) + ' <' + str(pessoa['email']) + '>')
コード例 #2
0
    def cancelar(self):
        if not r.exists('produtos'):
            Util.message('info', 'Não existe venda em andamento.')
            return False

        r.delete('produtos')
        Pessoa().selecionar('*****@*****.**')
        Util.message('success', 'Venda cancelada com sucesso.')
コード例 #3
0
 def informacoesVenda(self):
     total = 0
     Util.message(
         'info', '-------------------------------------\n' +
         '          VENDA EM ANDAMENTO         \n' +
         '-------------------------------------\n' +
         'ABERTURA DO CAIXA                    \n' +
         str(Caixa().getData()) + '\n' +
         '-------------------------------------\n' + 'ASSINATURA\n' +
         str(Caixa().getAssinatura()) + '\n' +
         '-------------------------------------\n' + 'CLIENTE\n' +
         str(Pessoa().getNome()) + '\n' +
         '-------------------------------------\n' +
         '  QTD CODIGO      PRODUTO       PREÇO  ')
     for produto in self.listaProdutos():
         preco = (float(produto['preco']) * float(produto['quantidade']))
         total += preco
         Util.message(
             'info', ' ' + str(produto['quantidade']) + ' x ' +
             str(produto['codigo']) + ' - ' + str(produto['nome']) +
             '   R$ ' + str(Util.moeda(preco)))
     Util.message(
         'info', '-------------------------------------\n' +
         'TOTAL DA VENDA:             R$ ' + Util.moeda(total) + '\n' +
         '-------------------------------------\n')
コード例 #4
0
ファイル: Caixa.py プロジェクト: xxdannilinxx/ponto-de-venda
    def fechar(self):
        if not self.getCaixa():
            Util.message('danger', 'O caixa já foi fechado anteriormente.')
            return False

        r.delete('caixa')
        Util.message(
            'info', '-------------------------------\n' +
            '       FECHAMENTO DE CAIXA     \n' +
            '-------------------------------\n' + 'DATA\n' +
            str(Util.dataAtual()) + '\n' +
            '-------------------------------\n' + 'ASSINATURA\n' +
            str(self.getAssinatura()) + '\n' +
            '-------------------------------\n')
コード例 #5
0
ファイル: Pessoa.py プロジェクト: xxdannilinxx/ponto-de-venda
    def selecionar(self, email=None):
        if not email:
            email = input('Informe (email/x para cancelar): ')

        if email == 'x':
            return False

        buscar = self.buscar('email', email)
        if not buscar:
            Util.message('info', 'Pessoa não encontrada.')
            self.selecionar()
            return False

        if buscar['situacao'] == 'desativado':
            Util.message('info', 'A pessoa selecionada está desativada.')
            return False

        r.set('pessoa', json.dumps({'id': buscar['id'], 'nome': buscar['nome'], 'email': buscar['email']}, indent=4, default=str))
        self.setPessoa(buscar)
コード例 #6
0
    def adicionarProduto(self, produto, quantidade):
        if produto == False or quantidade == False:
            Util.message('danger', 'Produto não encontrado.')
            return False

        if not Caixa().getCaixa():
            Util.message('danger', 'O caixa ainda não está aberto.')
            return False

        r.rpush(
            'produtos',
            json.dumps(
                {
                    'codigo': produto,
                    'nome': 'Produto teste',
                    'quantidade': quantidade,
                    'preco': 10.00
                },
                indent=4,
                default=str))
        self.informacoesVenda()
コード例 #7
0
ファイル: Pessoa.py プロジェクト: xxdannilinxx/ponto-de-venda
    def adicionar(self):
        id = r.llen('pessoas')
        nome = input('Informe o (nome/x para cancelar): ')
        email = input('Informe o (email/x para cancelar): ')

        if nome == 'x' or email == 'x':
            return False

        buscar = self.buscar('email', email)
        if buscar:
            Util.message('danger', 'Email já cadastrado.')
            self.adicionar()
            return True

        r.rpush('pessoas', json.dumps(
            {'id': id, 'nome': nome, 'email': email, 'situacao': 'ativo'}, indent=4, default=str))

        selecionar = input('Selecionar ' + str(nome) + '? (s/n): ')
        if selecionar == 's':
            self.selecionar(email)

        Util.message('success', 'Pessoa adicionada com sucesso.')
コード例 #8
0
ファイル: Caixa.py プロジェクト: xxdannilinxx/ponto-de-venda
    def abrir(self):
        if self.getCaixa():
            Util.message(
                'danger', 'O caixa já foi aberto em ' + str(self.getData()) +
                ' por ' + str(self.getAssinatura()) +
                ', encerre o caixa e tente novamente.')
            return False

        assinatura = input('Informe (assinatura/x para cancelar): ')
        if assinatura == 'x':
            return False

        if not assinatura:
            assinatura = input('Informe (assinatura/x para cancelar): ')
            if assinatura == 'x':
                return False
            return

        r.set(
            'caixa',
            json.dumps(
                {
                    'total': 0,
                    'data': Util.dataAtual(),
                    'assinatura': assinatura
                },
                indent=4,
                default=str))
        Util.message(
            'info', '-------------------------------\n' +
            '       ABERTURA DE CAIXA       \n' +
            '-------------------------------\n' + 'DATA\n' +
            str(Util.dataAtual()) + '\n' +
            '-------------------------------\n' + 'ASSINATURA\n' +
            str(assinatura) + '\n' + '-------------------------------\n')

        clientePadrao = r.exists('pessoas')
        if not clientePadrao:
            r.rpush(
                'pessoas',
                json.dumps(
                    {
                        'id': 0,
                        'nome': 'Cliente Padrão',
                        'email': '*****@*****.**',
                        'situacao': 'ativo'
                    },
                    indent=4,
                    default=str))
        Pessoa().selecionar('*****@*****.**')
コード例 #9
0
ファイル: Pessoa.py プロジェクト: xxdannilinxx/ponto-de-venda
    def remover(self, email=None):
        if not email:
            email = input('Informe (email/x para cancelar): ')

        if email == 'x':
            return False

        buscar = self.buscar('email', email)
        if not buscar:
            Util.message('info', 'Pessoa não encontrada.')
            self.remover()
            return False

        if buscar['email'] == self.getEmail():
            Util.message(
                'info', 'A pessoa o qual quer remover está selecionada.')
            return False
        if buscar['situacao'] == 'desativado':
            Util.message('info', 'A pessoa já está desativada.')
            return False

        buscar['situacao'] = 'desativado'
        r.lset('pessoas', buscar['id'], json.dumps(buscar))
        Util.message('success', 'Pessoa removida com sucesso.')
コード例 #10
0
    def finalizar(self):
        if not r.exists('pessoa'):
            Util.message('info', 'Nenhuma pessoa selecionada.')
            return False

        if not r.exists('produtos'):
            Util.message('info', 'Não existe venda em andamento.')
            return False

        r.rpush(
            'vendas',
            json.dumps(
                {
                    'pessoa': Pessoa().getPessoa(),
                    'produtos': self.listaProdutos(),
                    'assinatura': Caixa().getAssinatura(),
                    'data': Util.dataAtual()
                },
                indent=4,
                default=str))
        r.delete('produtos')
        Pessoa().selecionar('*****@*****.**')
        Util.message('success', 'Venda finalizada com sucesso.')
コード例 #11
0
ファイル: main.py プロジェクト: xxdannilinxx/ponto-de-venda
def PDV(exibirMenu):
    #
    # Menu inicial de opções
    #
    if exibirMenu:
        Util.message('warning',
                     '/***************************************************************************/\n' +
                     '                               PONTO DE VENDA                                \n' +
                     '                            ESCOLHA A OPÇÃO DESEJADA                         \n' +
                     '/***************************************************************************/\n' +
                     '                                                                             \n' +
                     ' menu - Exibir menu de opções                                                \n' +
                     ' abrir - Abertura de caixa.                                                  \n' +
                     ' fechar - Fechamento de caixa.                                               \n' +
                     ' addproduto produto*qtd - Adiciona produtos na venda em andamento.           \n' +
                     ' cancelar - Cancela a venda em andamento ou a venda informada.               \n' +
                     ' finalizar - Finaliza a venda em andamento.                                  \n' +
                     ' pessoas - Lista os clientes cadastrados.                                    \n' +
                     ' addpessoa - Adiciona uma pessoa aos registros.                              \n' +
                     ' selecionarpessoa - Seleciona uma pessoa na venda.                           \n' +
                     ' rmpessoa - Remove uma pessoa aos registros.                                 \n' +
                     ' encerrar - Encerra o programa.                                              \n' +
                     '                                                                             \n'
                     )
    Util.message('warning',
                 '\nInforme a opção desejada: '
                 )
    opcao = input()

    #
    # Core das opções
    #
    while opcao != 'encerrar':
        if regex.search("^menu", opcao):
            PDV(True)
        elif regex.search("^abrir", opcao):
            Caixa().abrir()
        elif regex.search("^fechar", opcao):
            Caixa().fechar()
        elif regex.search("^cancelar", opcao):
            Vendas().cancelar()
        elif regex.search("^finalizar", opcao):
            Vendas().finalizar()
        elif regex.search("^pessoas", opcao):
            Pessoa().pessoas()
        elif regex.search("^selecionar", opcao):
            Pessoa().selecionar()
        elif regex.search("^addpessoa", opcao):
            Pessoa().adicionar()
        elif regex.search("^rmpessoa", opcao):
            Pessoa().remover()
        elif regex.search("^addproduto", opcao):
            opcao = regex.sub('[^0-9*]', '', opcao)
            opcao = regex.split('[*]', opcao)
            produto = opcao[0]
            quantidade = opcao[1] if len(opcao) > 1 else 1
            Vendas().adicionarProduto(produto, quantidade)
        else:
            Util.message('danger',
                         '\nDesculpe, sua opção não foi encontrada, tente novamente...\n')
            PDV(False)
        PDV(False)
    else:
        Util.message(
            'info', '\nAté logo... obrigado por usar nosso ponto de venda! =)')
        exit()