Ejemplo n.º 1
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()
Ejemplo n.º 2
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)))