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']) + '>')
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.')
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')
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')
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)
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()
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.')
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('*****@*****.**')
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.')
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.')
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()