Exemple #1
0
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)
Exemple #2
0
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))
Exemple #3
0
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)
Exemple #4
0
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))
Exemple #5
0
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)
Exemple #6
0
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)