def pag_vendas(): if request.method == "GET": estoque_info = request.args.get('info') estoque = Estoque(estoque_info) #Insere a sessao na tabela de Sessoes e cria uma tabela Prod_vendidos para a sessão data_hora = datetime.now().strftime("%Y/%m/%d %H:%M:%S") sessao = Sessao(estoque_info, data_hora) sessao.sessao_nova() li_li_tup = Estoque.gerar_li_li_tup(estoque) return render_template('vendas.html', li_li_tup=li_li_tup, estoque=estoque.estoque)
def pag_sessao_fim(): if request.method == 'GET': #Finaliza a coleta de dados e apresenta o relatorio estoque_info = request.args.get('info') data_hora = datetime.now().strftime("%Y/%m/%d %H:%M:%S") Sessao.adicionar_hora_fim(estoque_info, data_hora) li_li = Sessao.get_vendidos(estoque_info) sess = Sessao.get_sessao(estoque_info) str1 = sess[0] str1 = str(str1).split('.', 1)[0] str2 = sess[0] str2 = str(str2).split('.', 1)[1] str2 = str2[0:2] receita = str1+"."+str2 return render_template('sessao_fim.html', receita = receita, hora_ini = sess[1], hora_fim = sess[2], li_li = li_li, estoque = estoque_info, pagina = True) if request.method == 'POST': estoque_info = request.form["nome_estoque"] if "not_save" in request.form: #Descarta o relatorio apresentado Sessao.fechar_sessao(estoque_info) flash('Relatório descartado','success') return redirect(url_for('pag_estoque',info=estoque_info)) if "salvar" in request.form: #Guarda o arquivo html da pagina(com as informações apresentadas) li_li = Sessao.get_vendidos(estoque_info) sess = Sessao.get_sessao(estoque_info) estoque_num = Estoque.cod_estoque(estoque_info) rendered = render_template('relatorio.html', receita = sess[0], hora_ini = sess[1], hora_fim = sess[2], li_li = li_li, estoque = estoque_info, estoque_num = estoque_num) Relatorio.guardar(estoque_info,sess[1], rendered) Sessao.fechar_sessao(estoque_info) flash('Arquivo salvo','success') return redirect(url_for('pag_estoque',info=estoque_info))
def teste(): repeat = Estoque.mostrar_estoques() tam = len(repeat) if request.method == "POST": #Confere se algum estoque foi deletado e deleta for i in range(tam): repeat[i] for re in repeat: if str(re[1]) in request.form: estoque = re[1] Estoque.remover_estoque(str(estoque)) flash('O estoque {} foi exluído.'.format(str(estoque)), 'success') return redirect(url_for('teste')) #Confere se algum estoque foi adicionado e adiciona if "add" in request.form: for re in repeat: #if Estoque(request.form.get('novo_estoque')) in repeat: if str(re[1]) in request.form: flash('O estoque já existe ','warning') return redirect(url_for('teste')) else: stock = Estoque(request.form.get('novo_estoque')) Estoque.criar_tabela(stock) lista = [] repeat = Estoque.mostrar_estoques() for re in repeat: lista.append(re[1]) return render_template('home.html', len=len(lista), repeat=lista)
def pag_relatorios_rel(): if request.method == 'GET': # Apresenta o arquvivo html guardado no banco # Se o nome do estoque tiver sido alterado depois da sessão de vendas do relatorio apresentado, # o nome do estoque vigente durante a sessão ainda será apresentado no relatorio, # visto que é o html guardado é um 'arquivo estatico' já renderizado estoque = request.args.get("info") hora_ini = request.args.get("h_ini") rendered = Relatorio.get_rel(estoque, hora_ini) return rendered if request.method == 'POST': if "baixar" in request.form: # Baixa no dispositivo o arquivo em formato PDF # Os botoes do arquivo html não aparecem no PDF pois a biblioteca FPDF não suporta a tag <input> hora_ini = request.form["hora_ini"] estoque = request.form["nome_estoque"] rendered = Relatorio.get_rel(estoque, hora_ini) hora_str = str(hora_ini).translate({ord(c): '' for c in " "}) pdf = MyFPDF() pdf.add_page() pdf.write_html(rendered) response = make_response(pdf.output(dest='S').encode('latin-1')) response.headers['Content-Type'] = 'application/pdf' response.headers['Content-Disposition'] = 'attachment; filename='+estoque+'_'+hora_str+'.pdf' return response if "delete" in request.form: #Deleta o relatorio e volta para a pagina de relatorios hora_ini = request.form["hora_ini"] estoque = request.form["nome_estoque"] Relatorio.del_rel(estoque, hora_ini) flash('Relatório deletado','success') return redirect(url_for('pag_relatorios',info=estoque)) if "voltar" in request.form: #Volta para a pagina de relatorios estoque_num = request.form["estoque_num"] estoque = Estoque.get_estoque_nome(estoque_num) return redirect(url_for('pag_relatorios',info=estoque))
def pag_estoque(): # Metodos Get e Post para manter o nome do estoque na pagina if request.method == "GET": estoque_info = request.args.get('info') elif request.method == "POST": estoque_info = request.form["nome_estoque"] estoque = Estoque(estoque_info) estoque.criar_tabela() # Checando de o Botão " Vendas" foi pressionado if "vendas" in request.form: return redirect(url_for('pag_vendas',info=estoque.estoque)) if "relatorios" in request.form: return redirect(url_for('pag_relatorios',info=estoque.estoque)) if "n_estoque" in request.form: novo_estoque = request.form["novo_estoque"] antigo_estoque = estoque_info con = Estoque.alterar_estoque(antigo_estoque,novo_estoque) if con: estoque = Estoque(novo_estoque) li_li_tup = Estoque.gerar_li_li_tup(estoque) return render_template('estoque.html', li_li_tup=li_li_tup, estoque=estoque.estoque) else: li_li_tup = Estoque.gerar_li_li_tup(estoque) return render_template('estoque.html', li_li_tup=li_li_tup, estoque=estoque.estoque) if request.method == "POST": # Checando se o Botão "Atualizar Valores" foi pressionado if "atualizar" in request.form: # Função para Atualizar a tabela w = 0 for prods in estoque.mostrar_estoque(): z = str(w) prod = Produto(request.form["numero" + z], request.form["nome" + z], request.form["preço" + z], request.form["quantidade" + z], estoque.estoque) prod.alterar_produto(prods[0]) w = w + 1 # Função para Adicionar novo produto prodnovo = Produto(request.form["numeron"], request.form["nomen"], request.form["preçon"], request.form["quantidaden"], estoque.estoque) count= int(request.form["numeron"]) count2=int(request.form["preçon"]) count3=int(request.form["quantidaden"]) if (count<0) or (count2<0) or (count3<0): flash('Não é permitido números, preços ou quantidades negativas no estoque','warning') return redirect(url_for('pag_estoque')) else: prodnovo.produto_novo() flash(f'O produto {request.form["nomen"]} foi adicionado ao estoque.','success') return redirect(url_for('pag_estoque')) # Função para Deletar um produto do estoque else: z = 2 for produto in estoque.mostrar_estoque(): y = str(z) #Se um botao de deletar foi pressionado if y in request.form: del_produto = Produto(produto[0], produto[1], produto[2], produto[3], estoque.estoque) del_produto.remover_produto() flash('O produto foi removido','success') return redirect(url_for('pag_estoque',info=estoque_info,li_li_tup=li_li_tup, estoque=estoque.estoque)) z = z + 1 li_li_tup = Estoque.gerar_li_li_tup(estoque) return render_template('estoque.html', li_li_tup=li_li_tup, estoque=estoque.estoque)
def pag_carrinho(): if "carrinho" in request.form: # Função para enviar os produtos selecionados para o carrinho usando dicionario dic ={} li_dic = [] s = ["numero", "nome", "preço", "quantidade"] z = 0 w = 0 val = 0 preço = 0 while "numero"+str(z) in request.form: if int(request.form["quantidade"+str(z)]) > 0 : for k in range(4): dic[s[k]+str(w)] = request.form[s[k]+str(z)] if k == 2: preço = request.form[s[k]+str(z)] if k == 3: val = val + float(preço)*int(request.form[s[k]+str(z)]) preço = 0 li_dic.append(dic) w = w + 1 dic = {} z = z+1 str1 = val str1 = str(str1).split('.', 1)[0] str2 = val str2 = str(str2).split('.', 1)[1] str2 = str2[0:2] val = str1+"."+str2 return render_template('carrinho.html', li_dic = li_dic, estoque = request.form["nome_estoque"], subtotal = val ) elif "reset" in request.form: #Recarrega a pagina para 'resetar' as quantidades selecionadas estoque = Estoque(request.form["nome_estoque"]) li_li_tup = Estoque.gerar_li_li_tup(estoque) flash('Quantidade no estoque resetada', 'success') return render_template('vendas.html', li_li_tup=li_li_tup, estoque=estoque.estoque) elif "confirm" in request.form: # Função para confirmar a venda dos produtos, retirar quantidade do estoque e adicionar na tabela _vendidos estoque = Estoque(request.form["nome_estoque"]) prod_v = Prod_Vendido(0,"0",0,0,estoque.estoque) z = 0 val = 0 while "numero"+str(z) in request.form: prod_v.numero = request.form["numero"+str(z)] prod_v.nome = request.form["nome"+str(z)] prod_v.preço = request.form["preço"+str(z)] prod_v.quantidade = request.form["quantidade"+str(z)] prod_v.vendido() val = val + float(prod_v.preço)*int(prod_v.quantidade) z = z+1 Sessao.adicionar_receita(estoque.estoque, val) li_li_tup = Estoque.gerar_li_li_tup(estoque) flash('Produtos vendidos','success') return render_template('vendas.html', li_li_tup=li_li_tup, estoque=estoque.estoque) elif "cancel" in request.form: #Descarta o carrinho/Recarrega a pagina de vendas estoque = Estoque(request.form["nome_estoque"]) li_li_tup = Estoque.gerar_li_li_tup(estoque) flash('Carrinho esvaziado','success') return render_template('vendas.html', li_li_tup=li_li_tup, estoque=estoque.estoque) elif "alterar" in request.form: estoque = Estoque(request.form["nome_estoque"]) # Função DIFERENCIADA para criar os nomes ( começando por 0) das informações para o request_form # Mantem a quantidade de cada produto selecionado prod = str(estoque.mostrar_estoque()).translate({ord(c): '' for c in "[]()'"}) prod = list(prod.split(",")) li_li_tup = [] y = [] s = ["numero", "nome", "preço", "quantidade"] z = 0 k = 0 w = 0 u = 0 for info in prod: j = str(k) if "numero" + str(w) in request.form: if z == 0 and int(info) == int(request.form["numero" + str(w)]): u = 1 if z == 3 and u == 1: tup = (s[z] + j, request.form["quantidade" + str(w)]) w = w+1 u = 0 elif z == 3: tup = (s[z] + j, 0) else : tup = (s[z] + j, info) y.append(tup) if z == 3: k = k + 1 li_li_tup.append(y) y = [] z = (z + 1) % 4 return render_template('vendas.html', li_li_tup=li_li_tup, estoque=estoque.estoque, atualizar = True) elif "encerrar" in request.form: #Vai para a pagina de sessao_fim return redirect(url_for('pag_sessao_fim',info=request.form["nome_estoque"]))
def pag_estoque(): # Metodos Get e Post para manter o nome do estoque na pagina if request.method == "GET": estoque_info = request.args.get('info') elif request.method == "POST": print('é o metodo post') estoque_info = request.form["nome_estoque"] print("Nome do estoque dento de post :",estoque_info) estoque = Estoque(estoque_info) print("Nome do estoque :",estoque.estoque) estoque.criar_tabela() # Checando de o Botão " Vendas" foi pressionado if "vendas" in request.form: return redirect(url_for('pag_vendas',info=estoque.estoque)) if "relatorios" in request.form: return redirect(url_for('pag_relatorios',info=estoque.estoque)) if "n_estoque" in request.form: novo_estoque = request.form["novo_estoque"] antigo_estoque = estoque_info con = Estoque.alterar_estoque(antigo_estoque,novo_estoque) if con: estoque = Estoque(novo_estoque) li_li_tup = Estoque.gerar_li_li_tup(estoque) flash('O estoque foi renomeado para {}.'.format(str(novo_estoque)), 'success') return render_template('estoque.html', li_li_tup=li_li_tup, estoque=estoque.estoque) else: li_li_tup = Estoque.gerar_li_li_tup(estoque) flash('O estoque {} já existe.'.format(str(novo_estoque)),'warning') return render_template('estoque.html', li_li_tup=li_li_tup, estoque=estoque.estoque) if request.method == "POST": # Checando se o Botão "Atualizar Valores" foi pressionado if "atualizar" in request.form: print("Nome do estoque dentro de 'atualizar' :",estoque.estoque) # Função para Atualizar a tabela w = 0 for prods in estoque.mostrar_estoque(): z = str(w) prod = Produto(request.form["numero" + z], request.form["nome" + z], request.form["preço" + z], request.form["quantidade" + z], estoque.estoque) erro = prod.alterar_produto(prods[0]) if bool(erro): flash('Entrada Invalida em Produto Alterado','warning') return redirect(url_for('pag_estoque', info=estoque.estoque)) w = w + 1 # Função para Adicionar novo produto prodnovo = Produto(request.form["numeron"], request.form["nomen"], request.form["preçon"], request.form["quantidaden"], estoque.estoque) erro = prodnovo.produto_novo() if erro == 0: flash('O produto foi adicionado ao estoque.') return redirect(url_for('pag_estoque', info=estoque.estoque)) elif erro == 1: flash('Entrada Invalida em Novo Produto','warning') return redirect(url_for('pag_estoque', info=estoque.estoque)) # Função para Deletar um produto do estoque else: z = 2 for produto in estoque.mostrar_estoque(): y = str(z) #Se um botao de deletar foi pressionado if y in request.form: del_produto = Produto(produto[0], produto[1], produto[2], produto[3], estoque.estoque) del_produto.remover_produto() flash('O produto foi removido do estoque.') z = z + 1 li_li_tup =Estoque.gerar_li_li_tup(estoque) return render_template('estoque.html', li_li_tup=li_li_tup, estoque=estoque.estoque)