Beispiel #1
0
    def saldo(self, event):
        self.saldo = Tk()
        self.saldo.title('Clientes e Saldos')

        self.t = Text(self.saldo)
        self.t.pack()

        self.s = Conecta()
        self.pesquisa_valores = self.s.ledados(
            "SELECT cliente,saldo FROM cliente_saldo")

        for i in self.pesquisa_valores:
            consumer = i[0]
            value = i[1]
            self.t.insert(INSERT, '%s: R$ %s\n' % (consumer, str(value)))
Beispiel #2
0
    def __init__(self, a):
        self.a = a
        self.a['bg'] = color
        self.con = Conecta(
        )  #conectar já no __init__ para que após o login já esteja com conexão no banco.

        self.telaprincipal()
Beispiel #3
0
    def gerapedido(self, event):
        arquivo = open('Pedido.txt', 'w')

        self.g = Conecta()

        self.consultapedido = self.g.ledados('SELECT * FROM pedidos')

        if self.consultapedido != []:

            for i in self.consultapedido:

                arquivo.write('Cliente: %s Produto: %s Quantidade: %s\n' %
                              (i[1], i[2], str(i[3])))

        self.l5['text'] = 'Pedido gerado com sucesso!'
        self.l5['font'] = font2
        arquivo.close()
Beispiel #4
0
    def cria(self):
        n = self.e3.get()
        c = self.e1.get()
        s = self.e2.get()
        t = time.strftime("%x, %X")

        n = n.upper()
        c = c.upper()
        s = s.upper()

        self.c = Conecta()
        self.dados = self.c.ledados("SELECT login FROM usuario")
        self.nome = ""
        #definição da variável self.nome para facilitar a verificação no for loop
        #criação de usuário acusando corretamente se já existe cadastrado login
        #verificar a troca de informação das labels
        if self.dados == []:
            self.c.insereDadosUsuarios(n, c, s, t)
            self.l7['text'] = 'Usuário cadastrado com sucesso'
            self.new = False
            self.c.fechaConexao()
        else:
            for i in self.dados:
                if c in i:
                    self.nome = i
                    break
                else:
                    continue

            if self.nome != "":
                if c in self.nome:
                    self.l7['text'] = 'Usuário já cadastrado!'
                    self.new = False
                    self.c.fechaConexao()
                    self.e3.destroy()
            else:
                self.c.insereDadosUsuarios(n, c, s, t)
                self.l7['text'] = 'Usuário cadastrado com sucesso'
                self.new = False
                self.c.fechaConexao()
                self.e3.destroy()
Beispiel #5
0
    def abate(self, event):
        c = self.e1.get()
        v = self.e2.get()
        t = time.strftime("%x, %X")

        c = c.upper()
        v = float(v.replace(',', '.'))

        self.v = Conecta()
        self.dados = self.v.ledados("SELECT cliente FROM cliente_saldo")

        if self.dados == []:
            self.v.insereDadosVendas(c, v, t)
            self.v.fechaConexao()
        else:
            for i in self.dados:
                if c in i:
                    saldo = self.v.ledados(
                        "SELECT saldo FROM cliente_saldo WHERE cliente = ?",
                        (c, ))

                    for h in saldo:
                        saldo1 = h[
                            0]  # precisa fazer esse for pra tirar o resultado da tupla (verificar melhora no código)
                    saldo1 = float(saldo1)
                    saldo1 -= float(v)
                    self.v.executaUpdate(
                        "UPDATE cliente_saldo SET saldo = ? WHERE cliente = ?",
                        (
                            saldo1,
                            c,
                        ))
                    self.v.fechaConexao()
                    time.sleep(0.3)
                    self.l5[
                        'text'] = 'Subtraído o valor de R$ %.2f para cliente: %s' % (
                            v, c)
                    break
                elif c not in i:
                    continue  # break para para aqui se o if for verdadeiro, senão vai continuar (é errado)
Beispiel #6
0
    def entrar(self, event):
        c = self.e1.get()
        s = self.e2.get()

        c = c.upper()
        s = s.upper()

        if c == "" or s == "":
            self.l5['text'] = 'Campo Usuário e senha obrigatórios'
        elif c == "SUPERACCESS":
            if s == "MASTERACCESS" and (self.r.get() == 0):
                self.muda()
            elif s == "MASTERACESS" and (self.r.get() == 1):
                self.muda1()
            elif s != "MASTERACCESS":
                self.l5['text'] = 'ADMIN CANNOT LOG IN CHECK INFO PROVIDED'
        else:
            self.c = Conecta()
            #lembrar de colocar o comando sql ao chamar o método abaixo
            self.loga = self.c.ledados('SELECT * FROM usuario')
            for i in self.loga:
                #Transformar resultado em lista para facilitar o acesso aos indíces de i
                i = list(i)
                if c in i:
                    if s == i[3] and (self.r.get() == 0):
                        self.c.fechaConexao()
                        self.muda()
                        break
                    elif s == i[3] and (self.r.get() == 1):
                        self.c.fechaConexao()
                        self.muda1()
                        break
                    elif s != i[3]:
                        self.l5['text'] = 'Senha incorreta!'
                        break
                else:
                    self.l5['text'] = 'Usuário não encontrado!'
Beispiel #7
0
class Login(object):
    def __init__(self, b):
        self.b = b
        self.b['bg'] = color

        self.telaprincipal()

    def telaprincipal(self):

        self.l1 = Label(self.b,
                        text='Bem - vindo!',
                        bg=color,
                        fg='white',
                        font=font1)
        self.l1.grid(row=1, column=1, columnspan=2, padx=5)

        self.l2 = Label(self.b,
                        text='Faça login e escolha um modo para entrar',
                        bg=color,
                        fg='white',
                        font=font3)
        self.l2.grid(row=2, column=1, columnspan=2, padx=5)

        self.l3 = Label(self.b,
                        text='Usuário',
                        bg=color,
                        fg='white',
                        font=font3)
        self.l3.grid(row=3, column=1, columnspan=2, padx=3)

        self.e1 = Entry(self.b)
        self.e1.grid(row=4, column=1, columnspan=2)

        self.l4 = Label(self.b, text='Senha', bg=color, fg='white', font=font3)
        self.l4.grid(row=5, column=1, columnspan=2, padx=3)

        self.e2 = Entry(self.b, show='*')
        self.e2.grid(row=6, column=1, columnspan=2)
        '''
        Usar intvar() para atribuir a variable no radio button para que ele troque, bem como atribuir
        value crescente para cada radio button criado.
        '''
        self.r = IntVar()
        self.rb1 = Radiobutton(self.b,
                               text='Módulo Venda',
                               variable=self.r,
                               value=0,
                               bg=color,
                               font=font3)
        self.rb1.grid(row=7, column=1, columnspan=2)

        self.rb2 = Radiobutton(self.b,
                               text='Módulo Pedidos',
                               variable=self.r,
                               value=1,
                               bg=color,
                               font=font3)
        self.rb2.grid(row=8, column=1, columnspan=2)

        self.l5 = Label(self.b, text="", bg=color, fg='white', font=font2)
        self.l5.grid(row=11, column=1, columnspan=2)

        self.l6 = Label(self.b, text="", bg=color, fg='white', font=font2)
        self.l6.grid(row=11, column=1, columnspan=2)

        self.l7 = Label(self.b, text="", bg=color, fg='white', font=font2)
        self.l7.grid(row=11, column=1, columnspan=2)

        self.b1 = Button(self.b, text='Entrar')
        self.b1.bind('<Button-1>', self.entrar)
        self.b1.bind('<Return>', self.entrar)
        self.b1.grid(row=12, column=1)

        self.b2 = Button(self.b, text='Novo usuário')
        self.b2.bind('<Button-1>', self.novo)
        self.b2.bind('<Return>', self.novo)
        self.b2.grid(row=12, column=2)

        self.new = False

    def entrar(self, event):
        c = self.e1.get()
        s = self.e2.get()

        c = c.upper()
        s = s.upper()

        if c == "" or s == "":
            self.l5['text'] = 'Campo Usuário e senha obrigatórios'
        elif c == "SUPERACCESS":
            if s == "MASTERACCESS" and (self.r.get() == 0):
                self.muda()
            elif s == "MASTERACESS" and (self.r.get() == 1):
                self.muda1()
            elif s != "MASTERACCESS":
                self.l5['text'] = 'ADMIN CANNOT LOG IN CHECK INFO PROVIDED'
        else:
            self.c = Conecta()
            #lembrar de colocar o comando sql ao chamar o método abaixo
            self.loga = self.c.ledados('SELECT * FROM usuario')
            for i in self.loga:
                #Transformar resultado em lista para facilitar o acesso aos indíces de i
                i = list(i)
                if c in i:
                    if s == i[3] and (self.r.get() == 0):
                        self.c.fechaConexao()
                        self.muda()
                        break
                    elif s == i[3] and (self.r.get() == 1):
                        self.c.fechaConexao()
                        self.muda1()
                        break
                    elif s != i[3]:
                        self.l5['text'] = 'Senha incorreta!'
                        break
                else:
                    self.l5['text'] = 'Usuário não encontrado!'

    def destroi(self):
        self.l1.destroy()
        self.l2.destroy()
        self.l3.destroy()
        self.l4.destroy()
        self.l5.destroy()
        self.l6.destroy()
        self.l7.destroy()
        self.e1.destroy()
        self.e2.destroy()
        self.b1.destroy()
        self.b2.destroy()
        self.rb1.destroy()
        self.rb2.destroy()

    def muda(self):
        time.sleep(0.4)
        self.destroi()
        principal(self.b)

    def muda1(self):
        time.sleep(0.4)
        self.destroi()
        Pedidos(self.b)

    def novo(self, event):
        if not self.new:
            self.rb1.destroy()
            self.rb2.destroy()
            self.l2['text'] = 'Digite um novo usuário e nova senha'
            self.b2['text'] = 'Criar'
            self.l5 = Label(self.b,
                            text="Nome de usuário",
                            bg=color,
                            fg='white',
                            font=font2)
            self.l5.grid(row=9, column=1, columnspan=2)
            self.e3 = Entry(self.b, show='')
            self.e3.grid(row=10, column=1, columnspan=2)
            self.new = True
        else:
            self.cria()

    def cria(self):
        n = self.e3.get()
        c = self.e1.get()
        s = self.e2.get()
        t = time.strftime("%x, %X")

        n = n.upper()
        c = c.upper()
        s = s.upper()

        self.c = Conecta()
        self.dados = self.c.ledados("SELECT login FROM usuario")
        self.nome = ""
        #definição da variável self.nome para facilitar a verificação no for loop
        #criação de usuário acusando corretamente se já existe cadastrado login
        #verificar a troca de informação das labels
        if self.dados == []:
            self.c.insereDadosUsuarios(n, c, s, t)
            self.l7['text'] = 'Usuário cadastrado com sucesso'
            self.new = False
            self.c.fechaConexao()
        else:
            for i in self.dados:
                if c in i:
                    self.nome = i
                    break
                else:
                    continue

            if self.nome != "":
                if c in self.nome:
                    self.l7['text'] = 'Usuário já cadastrado!'
                    self.new = False
                    self.c.fechaConexao()
                    self.e3.destroy()
            else:
                self.c.insereDadosUsuarios(n, c, s, t)
                self.l7['text'] = 'Usuário cadastrado com sucesso'
                self.new = False
                self.c.fechaConexao()
                self.e3.destroy()
Beispiel #8
0
class principal(object):
    def __init__(self, a):
        self.a = a
        self.a['bg'] = color
        self.con = Conecta(
        )  #conectar já no __init__ para que após o login já esteja com conexão no banco.

        self.telaprincipal()

    def telaprincipal(self):

        self.l1 = Label(self.a,
                        text='Módulo de vendas',
                        bg=color,
                        fg='white',
                        font=font1)
        self.l1.grid(row=2, column=2, pady=3)

        self.l2 = Label(self.a, text='Cliente', bg=color, font=font3)
        self.l2.grid(row=3, column=2, pady=3)

        self.e1 = Entry(self.a)
        self.e1.grid(row=4, column=2, pady=3)

        self.l3 = Label(self.a, text="Valor", bg=color, font=font3)
        self.l3.grid(row=5, column=2, pady=3)

        self.e2 = Entry(self.a)
        self.e2.grid(row=6, column=2, pady=3)

        self.l5 = Label(self.a, text="", bg=color, fg="white", font=font2)
        self.l5['bg'] = color
        self.l5.grid(row=7, column=2, pady=3)

        self.b1 = Button(self.a, text='Registra venda')
        self.b1.bind('<Button-1>', self.venda)
        self.b1.bind('<Return>', self.venda)
        self.b1.grid(row=8, column=1)

        self.b2 = Button(self.a, text='Abater valor')
        self.b2.bind('<Button-1>', self.abate)
        self.b2.bind('<Return>', self.abate)
        self.b2.grid(row=8, column=2)

        self.b3 = Button(self.a, text='Clientes e Saldos')
        self.b3.bind('<Button-1>', self.saldo)
        self.b3.bind('<Return>', self.saldo)
        self.b3.grid(row=8, column=3)

    def venda(self, event):
        c = self.e1.get()
        v = self.e2.get()
        t = time.strftime("%x, %X")

        c = c.upper()
        v = float(v.replace(',', '.'))

        if type(v) == float:
            v = v
        else:
            v = None

        print(v)
        print(type(v))

        self.v = Conecta()
        self.dados = self.v.ledados("SELECT cliente FROM cliente_saldo")

        clientes = []

        for i in self.dados:
            for g in i:
                clientes.append(g)

        if c not in clientes:
            if v != None:
                self.v.insereDadosVendas(c, v, t)
                self.l5[
                    'text'] = 'Registrado o valor de R$ %.2f para cliente: %s' % (
                        v, c)
            else:
                pass
                self.l5['text'] = 'Valor inserido inválido'

        else:
            if v != None:
                self.quantidade = float(
                    self.v.transformaResultados(
                        self.v.ledados(
                            'SELECT saldo FROM cliente_saldo WHERE cliente = ?',
                            (c, ))))
                self.v.executaUpdate(
                    "UPDATE cliente_saldo SET saldo = ? WHERE cliente = ?", (
                        str(v + self.quantidade),
                        c,
                    ))
                self.l5[
                    'text'] = 'Registrado o valor de R$ %.2f para cliente: %s' % (
                        v, c)
            else:
                pass
                self.l5['text'] = 'Valor inserido inválido'

    def abate(self, event):
        c = self.e1.get()
        v = self.e2.get()
        t = time.strftime("%x, %X")

        c = c.upper()
        v = float(v.replace(',', '.'))

        self.v = Conecta()
        self.dados = self.v.ledados("SELECT cliente FROM cliente_saldo")

        if self.dados == []:
            self.v.insereDadosVendas(c, v, t)
            self.v.fechaConexao()
        else:
            for i in self.dados:
                if c in i:
                    saldo = self.v.ledados(
                        "SELECT saldo FROM cliente_saldo WHERE cliente = ?",
                        (c, ))

                    for h in saldo:
                        saldo1 = h[
                            0]  # precisa fazer esse for pra tirar o resultado da tupla (verificar melhora no código)
                    saldo1 = float(saldo1)
                    saldo1 -= float(v)
                    self.v.executaUpdate(
                        "UPDATE cliente_saldo SET saldo = ? WHERE cliente = ?",
                        (
                            saldo1,
                            c,
                        ))
                    self.v.fechaConexao()
                    time.sleep(0.3)
                    self.l5[
                        'text'] = 'Subtraído o valor de R$ %.2f para cliente: %s' % (
                            v, c)
                    break
                elif c not in i:
                    continue  # break para para aqui se o if for verdadeiro, senão vai continuar (é errado)

    def saldo(self, event):
        self.saldo = Tk()
        self.saldo.title('Clientes e Saldos')

        self.t = Text(self.saldo)
        self.t.pack()

        self.s = Conecta()
        self.pesquisa_valores = self.s.ledados(
            "SELECT cliente,saldo FROM cliente_saldo")

        for i in self.pesquisa_valores:
            consumer = i[0]
            value = i[1]
            self.t.insert(INSERT, '%s: R$ %s\n' % (consumer, str(value)))
Beispiel #9
0
class Pedidos(object):
    def __init__(self, c):
        self.c = c
        self.c['bg'] = color

        self.telaprincipal()

    def telaprincipal(self):
        self.l1 = Label(self.c,
                        text='Módulo de Pedidos',
                        bg=color,
                        fg='white',
                        font=font1)
        self.l1.grid(row=1, column=1, columnspan=3, padx=5)

        self.l2 = Label(
            self.c,
            text='Escolha o produto, informe o cliente e quantidade',
            bg=color,
            fg='white',
            font=font2)
        self.l2.grid(row=2, column=1, columnspan=3, padx=5)

        self.l3 = Label(self.c,
                        text='Cliente',
                        bg=color,
                        fg="white",
                        font=font3)
        self.l3.grid(row=3, column=1, columnspan=3, padx=5)

        self.e1 = Entry(self.c)
        self.e1.grid(row=4, column=1, columnspan=3, padx=5)

        self.l4 = Label(self.c, text="", bg=color)
        self.l4.grid(row=9, column=1, columnspan=2, padx=4)

        self.l5 = Label(self.c, text="", bg=color, fg='white', font=font2)
        self.l5.grid(row=11, column=1, columnspan=2)

        self.l6 = Label(self.c, text="", bg=color, fg='white', font=font2)
        self.l6.grid(row=11, column=1, columnspan=2)

        #primeira opção
        self.con = Conecta()
        self.produtos = self.con.ledados("SELECT produto_nome FROM produtos")

        lista = []  #lista com os resultados da query para exibição no option

        for i in self.produtos:
            lista.append(str(
                i[0]))  #adicionando resultados fora da tupla para a lista

        self.var = StringVar(
            self.c
        )  #verificar necessidade na documentação de optionmenu tkinter.
        self.var.set("Escolha um produto")  # valor exibido no botão

        self.option1 = OptionMenu(
            self.c, self.var,
            *lista)  # colocar '*' antes da variavel lista para
        self.option1.grid(
            row=6, column=1, columnspan=2,
            padx=5)  #que sejam exibidas todas as opçães, uma em cada linha

        self.l5 = Label(self.c,
                        text='Quantidade',
                        bg=color,
                        fg="white",
                        font=font3)
        self.l5.grid(row=5, column=3, columnspan=3, padx=5)

        self.e2 = Entry(self.c)
        self.e2.grid(row=6, column=3, columnspan=3, padx=5)

        self.l6 = Label(self.c, text="", bg=color)
        self.l6.grid(row=9, column=1, columnspan=2, padx=4)

        # segunda opção
        self.con = Conecta()
        self.produtos = self.con.ledados("SELECT produto_nome FROM produtos")

        lista = []  # lista com os resultados da query para exibição no option

        for i in self.produtos:
            lista.append(str(
                i[0]))  # adicionando resultados fora da tupla para a lista

        self.var2 = StringVar(self.c)
        self.var2.set("Escolha um produto")  # valor exibido no botão

        self.option2 = OptionMenu(
            self.c, self.var2,
            *lista)  # colocar '*' antes da variavel lista para
        self.option2.grid(
            row=8, column=1, columnspan=2,
            padx=5)  # que sejam exibidas todas as opçães, uma em cada linha

        self.l5 = Label(self.c,
                        text='Quantidade',
                        bg=color,
                        fg="white",
                        font=font3)
        self.l5.grid(row=7, column=3, columnspan=3, padx=5)

        self.e3 = Entry(self.c)
        self.e3.grid(row=8, column=3, columnspan=3, padx=5)

        self.l6 = Label(self.c, text="", bg=color)
        self.l6.grid(row=9, column=1, columnspan=2, padx=4)

        # terceira opção
        self.con = Conecta()
        self.produtos = self.con.ledados("SELECT produto_nome FROM produtos")

        lista = []  # lista com os resultados da query para exibição no option

        for i in self.produtos:
            lista.append(str(
                i[0]))  # adicionando resultados fora da tupla para a lista

        self.var3 = StringVar(self.c)
        self.var3.set("Escolha um produto")  # valor exibido no botão

        self.option3 = OptionMenu(
            self.c, self.var3,
            *lista)  # colocar '*' antes da variavel lista para
        self.option3.grid(
            row=10, column=1, columnspan=2,
            padx=5)  # que sejam exibidas todas as opçães, uma em cada linha

        self.l5 = Label(self.c,
                        text='Quantidade',
                        bg=color,
                        fg="white",
                        font=font3)
        self.l5.grid(row=9, column=3, columnspan=3, padx=5)

        self.e4 = Entry(self.c)
        self.e4.grid(row=10, column=3, columnspan=3, padx=5)

        self.l6 = Label(self.c, text="", bg=color)
        self.l6.grid(row=11, column=1, columnspan=2, padx=4)

        # quarta opção
        self.con = Conecta()
        self.produtos = self.con.ledados("SELECT produto_nome FROM produtos")

        lista = []  # lista com os resultados da query para exibição no option

        for i in self.produtos:
            lista.append(str(
                i[0]))  # adicionando resultados fora da tupla para a lista

        self.var4 = StringVar(self.c)
        self.var4.set("Escolha um produto")  # valor exibido no botão

        self.option4 = OptionMenu(
            self.c, self.var4,
            *lista)  # colocar '*' antes da variavel lista para
        self.option4.grid(
            row=12, column=1, columnspan=2,
            padx=5)  # que sejam exibidas todas as opçães, uma em cada linha

        self.l5 = Label(self.c,
                        text='Quantidade',
                        bg=color,
                        fg="white",
                        font=font3)
        self.l5.grid(row=11, column=3, columnspan=3, padx=5)

        self.e5 = Entry(self.c)
        self.e5.grid(row=12, column=3, columnspan=3, padx=5)

        self.l6 = Label(self.c, text="", bg=color)
        self.l6.grid(row=13, column=1, columnspan=2, padx=4)

        self.l7 = Label(self.c, text="", bg=color)
        self.l7.grid(row=14, column=1, columnspan=2, padx=4)

        self.l7 = Label(self.c, text="", bg=color, fg="white", font=font3)
        self.l7.grid(row=15, column=1, columnspan=5, padx=5)

        self.l8 = Label(self.c, text="", bg=color)
        self.l8.grid(row=16, column=1, columnspan=5, padx=4)

        self.b1 = Button(self.c, text='Grava')
        self.b1.bind('<Button-1>', self.gravapedido)
        self.b1.bind('<Return>', self.gravapedido)
        self.b1.grid(row=16, column=1, padx=3)

        self.b2 = Button(self.c, text='Gera Pedido')
        self.b2.bind('<Button - 1>', self.gerapedido)
        self.b2.bind('<Return>', self.gerapedido)
        self.b2.grid(row=16, column=3, padx=3)

    def gravapedido(self, event):
        c = self.e1.get()
        t = time.strftime("%x, %X")

        c = c.upper()

        self.p = Conecta()
        # lembrar de colocar o comando sql ao chamar o método abaixo
        self.cliente = self.p.ledados(
            'SELECT * FROM pedidos WHERE nome_cliente=?', (c, ))

        if self.cliente != []:
            '''
            IMPORTANTE!!!! Depois de horas tentando realizar o update quando já tivesse cliente e produtos, e gravar um produto novo,
            quando já tivesse o cliente, depois de muita batalha (estava indo pro banco novamente mesmo já existente), isto por conta
            do for loop, em um loop ele achava, fazia o upload e continuava, no outro, como estaria diferente ele gravava outro registro duplicadp
            no banco. A solução, embora penosa, é simples. ao invés de tentar fazer tudo com o retorno de uma query (usando o self.cliente acima)
            eu executo uma para cada option. Assim, ele não vai percorrer todos os resuldados. Portanto faz o update se achar cliente e produto juntos
            ou grava um registro novo se achar cliente e não achar produto. 
            Depois de muito tempo perdido, fica a lição de que nem sempre tentar simplificar o máximo deu certo.
            O ponto chave não está no self.cliente e sim no self.verifica1 dentro dos options
            '''
            if self.var.get() != "Escolha um produto":
                self.verifica1 = self.p.ledados(
                    'SELECT * FROM pedidos WHERE nome_cliente=? AND produto=?',
                    (
                        c,
                        self.var.get(),
                    ))
                if self.verifica1 != []:
                    self.q1 = int(
                        self.p.transformaResultados(
                            self.p.ledados(
                                '''
                    SELECT quantidade 
                    FROM pedidos 
                    WHERE nome_cliente = ? AND produto = ?
                    ''', (c, self.var.get()))))
                    self.p.executaUpdatePedidos(c, self.var.get(),
                                                (self.q1 + int(self.e2.get())),
                                                t)

                else:
                    self.valida = int(self.e2.get())
                    if self.valida > 0:
                        self.p.insereDadosPedidos(c, self.var.get(),
                                                  self.e2.get(), t)
                    else:
                        pass

            if self.var2.get() != "Escolha um produto":
                self.verifica2 = self.p.ledados(
                    'SELECT * FROM pedidos WHERE nome_cliente=? AND produto=?',
                    (
                        c,
                        self.var2.get(),
                    ))
                if self.verifica2 != []:
                    self.q2 = int(
                        self.p.transformaResultados(
                            self.p.ledados(
                                '''
                    SELECT quantidade 
                    FROM pedidos 
                    WHERE nome_cliente = ? AND produto = ?
                    ''', (c, self.var2.get()))))
                    self.p.executaUpdatePedidos(c, self.var2.get(),
                                                (self.q2 + int(self.e3.get())),
                                                t)

                else:
                    self.valida2 = int(self.e3.get())
                    if self.valida2 > 0:
                        self.p.insereDadosPedidos(c, self.var2.get(),
                                                  self.e3.get(), t)
                    else:
                        pass

            if self.var3.get() != "Escolha um produto":
                self.verifica3 = self.p.ledados(
                    'SELECT * FROM pedidos WHERE nome_cliente=? AND produto=?',
                    (
                        c,
                        self.var3.get(),
                    ))
                if self.verifica3 != []:
                    self.q3 = int(
                        self.p.transformaResultados(
                            self.p.ledados(
                                '''
                    SELECT quantidade 
                    FROM pedidos 
                    WHERE nome_cliente = ? AND produto = ?
                    ''', (c, self.var3.get()))))
                    self.p.executaUpdatePedidos(c, self.var3.get(),
                                                (self.q3 + int(self.e4.get())),
                                                t)

                else:
                    self.valida3 = int(self.e4.get())
                    if self.valida3 > 0:
                        self.p.insereDadosPedidos(c, self.var3.get(),
                                                  self.e4.get(), t)
                    else:
                        pass

            if self.var4.get() != "Escolha um produto":
                self.verifica4 = self.p.ledados(
                    'SELECT * FROM pedidos WHERE nome_cliente=? AND produto=?',
                    (
                        c,
                        self.var4.get(),
                    ))
                if self.verifica4 != []:
                    self.q4 = int(
                        self.p.transformaResultados(
                            self.p.ledados(
                                '''
                    SELECT quantidade 
                    FROM pedidos 
                    WHERE nome_cliente = ? AND produto = ?
                    ''', (c, self.var4.get()))))
                    self.p.executaUpdatePedidos(c, self.var4.get(),
                                                (self.q4 + int(self.e5.get())),
                                                t)

                else:
                    self.valida4 = int(self.e5.get())
                    if self.valida4 > 0:
                        self.p.insereDadosPedidos(c, self.var4.get(),
                                                  self.e5.get(), t)
                    else:
                        pass
            self.gerado()

        else:
            if self.var.get() != "Escolha um produto":
                self.p.insereDadosPedidos(c, self.var.get(), self.e2.get(), t)
            else:
                pass
            if self.var2.get() != "Escolha um produto":
                self.p.insereDadosPedidos(c, self.var2.get(), self.e3.get(), t)
            else:
                pass
            if self.var3.get() != "Escolha um produto":
                self.p.insereDadosPedidos(c, self.var3.get(), self.e4.get(), t)
            else:
                pass
            if self.var4.get() != "Escolha um produto":
                self.p.insereDadosPedidos(c, self.var4.get(), self.e5.get(), t)
            else:
                pass
            self.gerado()

    def gerado(self):
        time.sleep(0.2)
        self.l7['text'] = ""
        time.sleep(0.5)
        self.l7['text'] = "Pedido inserido com sucesso"

        # atualizado 06/10/2018 . update e gravar pedido, terminados.

    def gerapedido(self, event):
        arquivo = open('Pedido.txt', 'w')

        self.g = Conecta()

        self.consultapedido = self.g.ledados('SELECT * FROM pedidos')

        if self.consultapedido != []:

            for i in self.consultapedido:

                arquivo.write('Cliente: %s Produto: %s Quantidade: %s\n' %
                              (i[1], i[2], str(i[3])))

        self.l5['text'] = 'Pedido gerado com sucesso!'
        self.l5['font'] = font2
        arquivo.close()
Beispiel #10
0
    def gravapedido(self, event):
        c = self.e1.get()
        t = time.strftime("%x, %X")

        c = c.upper()

        self.p = Conecta()
        # lembrar de colocar o comando sql ao chamar o método abaixo
        self.cliente = self.p.ledados(
            'SELECT * FROM pedidos WHERE nome_cliente=?', (c, ))

        if self.cliente != []:
            '''
            IMPORTANTE!!!! Depois de horas tentando realizar o update quando já tivesse cliente e produtos, e gravar um produto novo,
            quando já tivesse o cliente, depois de muita batalha (estava indo pro banco novamente mesmo já existente), isto por conta
            do for loop, em um loop ele achava, fazia o upload e continuava, no outro, como estaria diferente ele gravava outro registro duplicadp
            no banco. A solução, embora penosa, é simples. ao invés de tentar fazer tudo com o retorno de uma query (usando o self.cliente acima)
            eu executo uma para cada option. Assim, ele não vai percorrer todos os resuldados. Portanto faz o update se achar cliente e produto juntos
            ou grava um registro novo se achar cliente e não achar produto. 
            Depois de muito tempo perdido, fica a lição de que nem sempre tentar simplificar o máximo deu certo.
            O ponto chave não está no self.cliente e sim no self.verifica1 dentro dos options
            '''
            if self.var.get() != "Escolha um produto":
                self.verifica1 = self.p.ledados(
                    'SELECT * FROM pedidos WHERE nome_cliente=? AND produto=?',
                    (
                        c,
                        self.var.get(),
                    ))
                if self.verifica1 != []:
                    self.q1 = int(
                        self.p.transformaResultados(
                            self.p.ledados(
                                '''
                    SELECT quantidade 
                    FROM pedidos 
                    WHERE nome_cliente = ? AND produto = ?
                    ''', (c, self.var.get()))))
                    self.p.executaUpdatePedidos(c, self.var.get(),
                                                (self.q1 + int(self.e2.get())),
                                                t)

                else:
                    self.valida = int(self.e2.get())
                    if self.valida > 0:
                        self.p.insereDadosPedidos(c, self.var.get(),
                                                  self.e2.get(), t)
                    else:
                        pass

            if self.var2.get() != "Escolha um produto":
                self.verifica2 = self.p.ledados(
                    'SELECT * FROM pedidos WHERE nome_cliente=? AND produto=?',
                    (
                        c,
                        self.var2.get(),
                    ))
                if self.verifica2 != []:
                    self.q2 = int(
                        self.p.transformaResultados(
                            self.p.ledados(
                                '''
                    SELECT quantidade 
                    FROM pedidos 
                    WHERE nome_cliente = ? AND produto = ?
                    ''', (c, self.var2.get()))))
                    self.p.executaUpdatePedidos(c, self.var2.get(),
                                                (self.q2 + int(self.e3.get())),
                                                t)

                else:
                    self.valida2 = int(self.e3.get())
                    if self.valida2 > 0:
                        self.p.insereDadosPedidos(c, self.var2.get(),
                                                  self.e3.get(), t)
                    else:
                        pass

            if self.var3.get() != "Escolha um produto":
                self.verifica3 = self.p.ledados(
                    'SELECT * FROM pedidos WHERE nome_cliente=? AND produto=?',
                    (
                        c,
                        self.var3.get(),
                    ))
                if self.verifica3 != []:
                    self.q3 = int(
                        self.p.transformaResultados(
                            self.p.ledados(
                                '''
                    SELECT quantidade 
                    FROM pedidos 
                    WHERE nome_cliente = ? AND produto = ?
                    ''', (c, self.var3.get()))))
                    self.p.executaUpdatePedidos(c, self.var3.get(),
                                                (self.q3 + int(self.e4.get())),
                                                t)

                else:
                    self.valida3 = int(self.e4.get())
                    if self.valida3 > 0:
                        self.p.insereDadosPedidos(c, self.var3.get(),
                                                  self.e4.get(), t)
                    else:
                        pass

            if self.var4.get() != "Escolha um produto":
                self.verifica4 = self.p.ledados(
                    'SELECT * FROM pedidos WHERE nome_cliente=? AND produto=?',
                    (
                        c,
                        self.var4.get(),
                    ))
                if self.verifica4 != []:
                    self.q4 = int(
                        self.p.transformaResultados(
                            self.p.ledados(
                                '''
                    SELECT quantidade 
                    FROM pedidos 
                    WHERE nome_cliente = ? AND produto = ?
                    ''', (c, self.var4.get()))))
                    self.p.executaUpdatePedidos(c, self.var4.get(),
                                                (self.q4 + int(self.e5.get())),
                                                t)

                else:
                    self.valida4 = int(self.e5.get())
                    if self.valida4 > 0:
                        self.p.insereDadosPedidos(c, self.var4.get(),
                                                  self.e5.get(), t)
                    else:
                        pass
            self.gerado()

        else:
            if self.var.get() != "Escolha um produto":
                self.p.insereDadosPedidos(c, self.var.get(), self.e2.get(), t)
            else:
                pass
            if self.var2.get() != "Escolha um produto":
                self.p.insereDadosPedidos(c, self.var2.get(), self.e3.get(), t)
            else:
                pass
            if self.var3.get() != "Escolha um produto":
                self.p.insereDadosPedidos(c, self.var3.get(), self.e4.get(), t)
            else:
                pass
            if self.var4.get() != "Escolha um produto":
                self.p.insereDadosPedidos(c, self.var4.get(), self.e5.get(), t)
            else:
                pass
            self.gerado()
Beispiel #11
0
    def telaprincipal(self):
        self.l1 = Label(self.c,
                        text='Módulo de Pedidos',
                        bg=color,
                        fg='white',
                        font=font1)
        self.l1.grid(row=1, column=1, columnspan=3, padx=5)

        self.l2 = Label(
            self.c,
            text='Escolha o produto, informe o cliente e quantidade',
            bg=color,
            fg='white',
            font=font2)
        self.l2.grid(row=2, column=1, columnspan=3, padx=5)

        self.l3 = Label(self.c,
                        text='Cliente',
                        bg=color,
                        fg="white",
                        font=font3)
        self.l3.grid(row=3, column=1, columnspan=3, padx=5)

        self.e1 = Entry(self.c)
        self.e1.grid(row=4, column=1, columnspan=3, padx=5)

        self.l4 = Label(self.c, text="", bg=color)
        self.l4.grid(row=9, column=1, columnspan=2, padx=4)

        self.l5 = Label(self.c, text="", bg=color, fg='white', font=font2)
        self.l5.grid(row=11, column=1, columnspan=2)

        self.l6 = Label(self.c, text="", bg=color, fg='white', font=font2)
        self.l6.grid(row=11, column=1, columnspan=2)

        #primeira opção
        self.con = Conecta()
        self.produtos = self.con.ledados("SELECT produto_nome FROM produtos")

        lista = []  #lista com os resultados da query para exibição no option

        for i in self.produtos:
            lista.append(str(
                i[0]))  #adicionando resultados fora da tupla para a lista

        self.var = StringVar(
            self.c
        )  #verificar necessidade na documentação de optionmenu tkinter.
        self.var.set("Escolha um produto")  # valor exibido no botão

        self.option1 = OptionMenu(
            self.c, self.var,
            *lista)  # colocar '*' antes da variavel lista para
        self.option1.grid(
            row=6, column=1, columnspan=2,
            padx=5)  #que sejam exibidas todas as opçães, uma em cada linha

        self.l5 = Label(self.c,
                        text='Quantidade',
                        bg=color,
                        fg="white",
                        font=font3)
        self.l5.grid(row=5, column=3, columnspan=3, padx=5)

        self.e2 = Entry(self.c)
        self.e2.grid(row=6, column=3, columnspan=3, padx=5)

        self.l6 = Label(self.c, text="", bg=color)
        self.l6.grid(row=9, column=1, columnspan=2, padx=4)

        # segunda opção
        self.con = Conecta()
        self.produtos = self.con.ledados("SELECT produto_nome FROM produtos")

        lista = []  # lista com os resultados da query para exibição no option

        for i in self.produtos:
            lista.append(str(
                i[0]))  # adicionando resultados fora da tupla para a lista

        self.var2 = StringVar(self.c)
        self.var2.set("Escolha um produto")  # valor exibido no botão

        self.option2 = OptionMenu(
            self.c, self.var2,
            *lista)  # colocar '*' antes da variavel lista para
        self.option2.grid(
            row=8, column=1, columnspan=2,
            padx=5)  # que sejam exibidas todas as opçães, uma em cada linha

        self.l5 = Label(self.c,
                        text='Quantidade',
                        bg=color,
                        fg="white",
                        font=font3)
        self.l5.grid(row=7, column=3, columnspan=3, padx=5)

        self.e3 = Entry(self.c)
        self.e3.grid(row=8, column=3, columnspan=3, padx=5)

        self.l6 = Label(self.c, text="", bg=color)
        self.l6.grid(row=9, column=1, columnspan=2, padx=4)

        # terceira opção
        self.con = Conecta()
        self.produtos = self.con.ledados("SELECT produto_nome FROM produtos")

        lista = []  # lista com os resultados da query para exibição no option

        for i in self.produtos:
            lista.append(str(
                i[0]))  # adicionando resultados fora da tupla para a lista

        self.var3 = StringVar(self.c)
        self.var3.set("Escolha um produto")  # valor exibido no botão

        self.option3 = OptionMenu(
            self.c, self.var3,
            *lista)  # colocar '*' antes da variavel lista para
        self.option3.grid(
            row=10, column=1, columnspan=2,
            padx=5)  # que sejam exibidas todas as opçães, uma em cada linha

        self.l5 = Label(self.c,
                        text='Quantidade',
                        bg=color,
                        fg="white",
                        font=font3)
        self.l5.grid(row=9, column=3, columnspan=3, padx=5)

        self.e4 = Entry(self.c)
        self.e4.grid(row=10, column=3, columnspan=3, padx=5)

        self.l6 = Label(self.c, text="", bg=color)
        self.l6.grid(row=11, column=1, columnspan=2, padx=4)

        # quarta opção
        self.con = Conecta()
        self.produtos = self.con.ledados("SELECT produto_nome FROM produtos")

        lista = []  # lista com os resultados da query para exibição no option

        for i in self.produtos:
            lista.append(str(
                i[0]))  # adicionando resultados fora da tupla para a lista

        self.var4 = StringVar(self.c)
        self.var4.set("Escolha um produto")  # valor exibido no botão

        self.option4 = OptionMenu(
            self.c, self.var4,
            *lista)  # colocar '*' antes da variavel lista para
        self.option4.grid(
            row=12, column=1, columnspan=2,
            padx=5)  # que sejam exibidas todas as opçães, uma em cada linha

        self.l5 = Label(self.c,
                        text='Quantidade',
                        bg=color,
                        fg="white",
                        font=font3)
        self.l5.grid(row=11, column=3, columnspan=3, padx=5)

        self.e5 = Entry(self.c)
        self.e5.grid(row=12, column=3, columnspan=3, padx=5)

        self.l6 = Label(self.c, text="", bg=color)
        self.l6.grid(row=13, column=1, columnspan=2, padx=4)

        self.l7 = Label(self.c, text="", bg=color)
        self.l7.grid(row=14, column=1, columnspan=2, padx=4)

        self.l7 = Label(self.c, text="", bg=color, fg="white", font=font3)
        self.l7.grid(row=15, column=1, columnspan=5, padx=5)

        self.l8 = Label(self.c, text="", bg=color)
        self.l8.grid(row=16, column=1, columnspan=5, padx=4)

        self.b1 = Button(self.c, text='Grava')
        self.b1.bind('<Button-1>', self.gravapedido)
        self.b1.bind('<Return>', self.gravapedido)
        self.b1.grid(row=16, column=1, padx=3)

        self.b2 = Button(self.c, text='Gera Pedido')
        self.b2.bind('<Button - 1>', self.gerapedido)
        self.b2.bind('<Return>', self.gerapedido)
        self.b2.grid(row=16, column=3, padx=3)