Ejemplo n.º 1
0
    def transfere(cnta:str,valor:float,destino:str,cursor,sinc)->bool:

        if Conta.saca(cnta,valor,cursor,False):
 
            if Conta.deposita(destino,valor,cursor,False,sinc):

                cursor.execute('SELECT titular,numero FROM contas')
                for num_cont in cursor:
                    if(num_cont[1] == destino):
                        aux = num_cont[0]
                
                cursor.execute('SELECT nome,cpf FROM pessoas')
                for nome in cursor:
                    if(nome[1] == aux):
                        cliente = nome[0]

                nova_transacao = 'Transferencia para {} -- Data: {} Valor: {}'.format(cliente,datetime.now().strftime('%d/%m/%Y %H:%M'),valor)
                Historico.adicionar_transacao(cnta,nova_transacao,cursor)
                
                cursor.execute('SELECT titular,numero FROM contas')
                for num_cont2 in cursor:
                    if(num_cont2[1] == cnta):
                        aux2 = num_cont2[0]
                
                cursor.execute('SELECT nome,cpf FROM pessoas')
                for nome2 in cursor:
                    if(nome2[1] == aux):
                        cliente2 = nome2[0]

                nova_transacao = 'Tranferencia recebida de "{}" -- Data: {} Valor: {} '.format(cliente2,datetime.now().strftime('%d/%m/%Y %H:%M'),valor)
                Historico.adicionar_transacao(destino,nova_transacao,cursor)

                return True
        return False
Ejemplo n.º 2
0
 def __init__(self, cliente, senha, saldo=0, limite=5000):
     self._numero = str((Conta.cont + 1) * 1000)
     self._saldo = float(saldo)
     self._cliente = cliente
     self._senha = str(senha)
     self._limite = float(limite)
     self._historico = Historico()
     Conta.cont += 1
Ejemplo n.º 3
0
 def __init__(self, numero, titular, saldo, limite, data_abertura):
     Conta._total_contas += 1
     self._id = Conta._total_contas
     self._numero = numero
     self._titular = titular
     self._saldo = saldo
     self._limite = limite
     self._data_abertura = data_abertura
     self._historico = Historico()
     self._tipo = ""
	def listar(self, id_usuario):
		
		objHistorico = Historico()
		resultados = objHistorico.listarHistorico(id_usuario)
		
		#listagem do histórico
		for i, dado in enumerate(resultados):
			Label(self.frame1, text=dado[1], fg='black', font=('Verdana','12')).grid(row=i+3, column=1)
			Label(self.frame1, text=dado[2], fg='black', font=('Verdana','12')).grid(row=i+3, column=2)
			Label(self.frame1, text=dado[3], fg='black', font=('Verdana','12')).grid(row=i+3, column=3)
			Label(self.frame1, text=dado[4], fg='black', font=('Verdana','12')).grid(row=i+3, column=4)
		
		self.frame1.pack()
Ejemplo n.º 5
0
 def __init__(self, numero, titular, saldo, limite=1000.0):
     self._numero = numero
     self._titular = titular
     self._saldo = saldo
     self._limite = limite
     Conta._total_contas += 1
     self.historico = Historico()
Ejemplo n.º 6
0
    def enterHandler(self, event):
        nroMatric = self.limiteIns.inputNro.get()
        nome = self.limiteIns.inputNome.get()
        cursoSel = self.limiteIns.escolhaCombo.get()
        curso = self.ctrlPrincipal.ctrlCurso.getCurso(cursoSel)
        try:
            if nroMatric == '' or nome == '' or cursoSel == '':
                raise OpcaoVazia

            mat = ''
            for matricula in self.ctrlPrincipal.ctrlCurso.getListaNroMatric():
                if matricula == nroMatric:
                    mat = 'Erro'
            if mat == 'Erro':
                raise MatriculaIgual

        except OpcaoVazia:
            self.limiteIns.mostraJanela('Alerta', 'Campo vazio')
        except MatriculaIgual:
            self.limiteIns.mostraJanela('Alerta', 'Matricula já existente')

        else:
            historico = Historico()
            aluno = Aluno(nroMatric, nome, curso, historico)
            self.ctrlPrincipal.ctrlCurso.listaAlunos.append(aluno)
            self.limiteIns.mostraJanela('Sucesso',
                                        'Aluno cadastrado com sucesso')
            self.clearHandler(event)
Ejemplo n.º 7
0
 def __init__(self, titular: Cliente, saldo: float, limite=1000.0):
     self.__numero = Conta.total_contas()
     self.__titular = titular
     self.__saldo = saldo
     self.__limite = limite
     self.__historico = Historico()
     Conta.incrementa_total_contas()
Ejemplo n.º 8
0
    def deposita(self, valor):
        data = datetime.strftime(datetime.today(), "%d/%m/%Y")
        histDep = Historico("Deposito", data, valor)
        self.listaHist.append(histDep)

        self.saldo = self.saldo + valor
        print("Voce depositou: {}".format(valor))
Ejemplo n.º 9
0
 def __init__(self,numero:str,titular:str,saldo:float,limite:float):
     self._numero = numero
     self._titular = titular
     self._saldo = saldo
     self._limite = limite
     self._data_abertura = str(datetime.now().strftime('%d/%m/%Y %H:%M'))
     self._historico = Historico()
Ejemplo n.º 10
0
 def	__init__(self, numero, cliente, saldo, limite):
     self._numero = numero
     self._titular = cliente
     self._saldo = saldo
     self._limite = limite
     self._historico = Historico()
     self._identificador = Conta.identificador
     Conta.identificador += 1
Ejemplo n.º 11
0
 def __init__(self,cliente,saldo,limite):
     # Aqui eu passei uma objeto 'cliente' como refêrencia
     # Através dele posso acessar todos os métodos do objeto
     # Assim está classe foi associada a classe cliente
     self.cliente = cliente
     self.saldo = saldo
     self.limite = limite
     self.historico = Historico()
     print("\nConta criada com sucesso")
Ejemplo n.º 12
0
    def __init__(self, numero, cliente, saldo, limite=1000.0):

        #print("Inicializando uma conta")

        self.numero = numero
        self.titular = cliente
        self.saldo = saldo
        self.limite = limite
        self.historico = Historico()
	def calcularImc(self):
		
		usuario = self.usuario
		peso    = self.peso.get()
		altura  = self.altura.get()
		data    = date.today()
		
		objHist = Historico()
		
		if peso != "" and altura != "":
			
			imc = float(peso) / float(altura) ** 2
			gravar = objHist.gravarHistorico(float(peso), float(altura), data, imc, usuario)
			
			if gravar == True:
				from historico_lista_tela import HistoricoListaTela
				t = HistoricoListaTela()
				t.listar(usuario)
Ejemplo n.º 14
0
 def __init__(self, numero, cliente, saldo=0, limite=1000.0):
     self._numero = numero
     self._titular = cliente
     self._saldo = saldo
     self._limite = limite
     self._historico = Historico()
     self._data_abertura = Data()
     self._tipo = type(self).__name__
     Conta._identificador += 1
Ejemplo n.º 15
0
    def saca(cnta:str,valor:float,cursor,controle)->bool:

        saldo = 0.0

        cursor.execute('SELECT numero,saldo FROM contas')
        for conta in cursor:
            conta[0] == cnta
            saldo = conta[1]

        if valor <= saldo and valor > 0:
            saldo -= valor
            cursor.execute('UPDATE contas SET saldo = %s WHERE numero = %s',(float(saldo),cnta))

            if controle:
                nova_transacao = 'Saque -- Data: {} Valor: {}'.format((datetime.now().strftime('%d/%m/%Y %H:%M')),valor)
                Historico.adicionar_transacao(cnta,nova_transacao,cursor)
            return True
        return False
Ejemplo n.º 16
0
    def saca(self, valor):
        data = datetime.strftime(datetime.today(), "%d/%m/%Y")
        histSac = Historico("Saque", data, valor)
        self.listaHist.append(histSac)

        validacao = valor - self.saldo
        if validacao > (self.limite):
           print("Impossivel efetuar o saque, limite excedido!")
        else:
            self.saldo = self.saldo - valor
            print("Voce sacou: {}".format(valor))
Ejemplo n.º 17
0
    def deposita(cnta:str,valor:float,cursor,controle,sinc)->bool:

        saldo = 0.0
        sinc.acquire()
        cursor.execute('SELECT numero,saldo FROM contas')
        sinc.release()
        for conta in cursor:
            conta[0] == cnta
            saldo = conta[1]

            if valor > 0:
                saldo += valor
                sinc.acquire()
                cursor.execute('UPDATE contas SET saldo = %s WHERE numero = %s',(float(saldo),cnta))
                sinc.release()

            if controle:
                nova_transacao = 'Deposito -- Data: {} Valor: {}'.format(datetime.now().strftime('%d/%m/%Y %H:%M'),valor)
                Historico.adicionar_transacao(cnta,nova_transacao,cursor)
            return True
        return False
Ejemplo n.º 18
0
class Conta:
    '''
        Essa classe representa uma conta do banco

        Attributes:
            numero (str): numero da conta (id)
            saldo (float): qnt de dinheiro disponivel
            cliente (Cliente): objeto Cliente com os dados do titular
            senha (str): senha para realizar operacoes na conta
            limite (float): valor maximo para depositar na conta
            historico (Historico): objeto historico que armazena as operacoes feitas na conta
    '''
    __slots__ = [
        '_numero', '_senha', '_saldo', '_cliente', '_limite', '_historico'
    ]
    cont = 0  #contador da classe

    def __init__(self, cliente, senha, saldo=0, limite=5000):
        self._numero = str((Conta.cont + 1) * 1000)
        self._saldo = float(saldo)
        self._cliente = cliente
        self._senha = str(senha)
        self._limite = float(limite)
        self._historico = Historico()
        Conta.cont += 1

    #metodos de acesso
    @property
    def numero(self):
        return self._numero

    @property
    def senha(self):
        return self._senha

    @senha.setter
    def senha(self, s):
        self._senha = s

    @property
    def cliente(self):
        return self._cliente

    @cliente.setter
    def cliente(self, c):
        self._cliente = c

    @property
    def limite(self):
        return self._limite

    @limite.setter
    def limite(self, l):
        self._limite = l

    @property
    def saldo(self):
        return self._saldo

    @saldo.setter
    def saldo(self, s):
        self._saldo = s

    @property
    def historico(self):
        return self._historico

    #Metodos
    def saque(self, valor):
        '''
            Metodo para retirar um valor da conta

            Args:
                valor(float): valor a ser retirado da conta

            Returns:
                1. Se o saldo for menor que o valor: 'False,saldo,limite'
                2. Caso contrario: 'True,saldo,limite'

        '''
        if self._saldo < valor:
            #return 'Valor não disponível para saque!'
            return f'False,{self._saldo},{self._limite}'
        else:
            self._saldo -= valor
            self._limite += valor
            self._historico.adicionar_transacao('Saque', valor)
            #return 'Saque realizado com sucesso!\nSaldo restante = {}'.format(self._saldo)
            return f'True,{self._saldo},{self._limite}'

    def depositar(self, valor):
        '''
            Metodo que realiza o deposito na conta

            Args:
                valor(float): valor a ser depositado
            
            Returns:
                1. Se o valor for maior que o limite: 'False,saldo,limite'
                2. Caso contrario: 'True,saldo,limite'
        '''
        if valor > self._limite:
            return f'False,{self._saldo},{self._limite}'
        else:
            self._saldo += valor
            self._limite -= valor
            self._historico.adicionar_transacao('Deposito', valor)
            #return 'Deposito realizado com sucesso!\nSaldo da conta = {}'.format(self._saldo)
            return f'True,{self._saldo},{self._limite}'

    def transfere_para(self, c, valor):
        '''
            Metodo que faz a transferencia de um valor para outra conta

            Args:
                c (Conta): conta que vai receber o valor
                valor (float): valor a ser transferido

            Returns:
                1. Se o saldo for menor que o valor: 'False,saldo,limite'
                2. Caso contrario: 'True,saldo,limite'

        '''
        if valor > self._saldo:
            #return 'Valor a ser transferido não pode ser negativo!'
            #return 'Valor não disponível para transferencia!'
            return f'False,{self._saldo},{self._limite}'
        else:
            self._saldo -= valor
            self._limite += valor
            c._saldo += valor
            c._limite -= valor
            self._historico.adicionar_transacao(
                f'Transferencia para {c.cliente.nome}', valor)
            c._historico.adicionar_transacao(
                f'Transferencia recebida de {self._cliente.nome}', valor)
            #return 'Transferencia realizada com sucesso!'
            return f'True,{self._saldo},{self._limite}'

    def imprimir(self):
        '''
            Metodo que retorna uma string com o extrato da conta

        '''
        transacoes = self._historico._transacoes
        lista = [item + ',' for item in transacoes]
        historico = ''.join(lista)
        return historico
Ejemplo n.º 19
0
class Conta(abc.ABC):
    '''
    Representação de uma Conta bancária.

    Atributos:
    numero: número da conta
    titular: objeto do tipo Cliente representando o titular da conta
    saldo: saldo inicial da conta
    limite: limite de cheque especial da conta
    data_abertura: objeto do tipo Data representando a data de abertura da conta
    '''

    # definir os Slots impede que se crie novos atributos na classe dinamicamente em tempo
    # de execução (ele apaga o __dict__)
    __slots__ = [
        '_id', '_numero', '_titular', '_saldo', '_limite', '_data_abertura',
        '_historico', '_tipo'
    ]
    _total_contas = 0

    def __init__(self, numero, titular, saldo, limite, data_abertura):
        Conta._total_contas += 1
        self._id = Conta._total_contas
        self._numero = numero
        self._titular = titular
        self._saldo = saldo
        self._limite = limite
        self._data_abertura = data_abertura
        self._historico = Historico()
        self._tipo = ""

    @property
    def id(self):
        return self._id

    @property
    def numero(self):
        return self._numero

    @numero.setter
    def numero(self, valor):
        self._numero = valor

    @property
    def titular(self):
        return self._titular

    @titular.setter
    def titular(self, valor):
        self._titular = valor

    @property
    def saldo(self):
        return self._saldo

    @property
    def limite(self):
        return self._limite

    @limite.setter
    def limite(self, valor):
        self._limite = valor

    @property
    def data_abertura(self):
        return self._data_abertura

    @data_abertura.setter
    def data_abertura(self, valor):
        self._data_abertura = valor

    @property
    def historico(self):
        return self._historico

    @property
    def tipo(self):
        return self._tipo

    @classmethod
    def total_contas(cls):
        return cls._total_contas

    def deposita(self, valor):
        '''
        Realiza um depósito acrescentando o valor informado ao saldo da conta
        '''
        if (valor <= 0):
            raise ValueError("Valor para depósito deve ser positivo")
        else:
            self._saldo += valor
            self._historico.atualiza_historico(
                f'Depósito realizado no valor de {valor}. Saldo parcial: {self._saldo}'
            )

    def saca(self, valor):
        '''
        Realiza um saque deduzindo o valor informado do saldo da conta
        '''
        if (valor <= 0):
            raise ValueError("Valor para saque deve ser positivo")
        elif ((self._saldo + self._limite) < valor):
            raise SaldoInsuficienteError("Saldo insuficiente")
        else:
            self._saldo -= valor
            self._historico.atualiza_historico(
                f'Saque realizado no valor de {valor}. Saldo parcial: {self._saldo}'
            )
            return True

    def transfere_para(self, destino, valor):
        '''
        Realiza uma transferência do valor informado para a conta destino
        '''
        if (valor <= 0):
            raise ValueError("Valor para transferência deve ser positivo")

        try:
            retirou = self.saca(valor)
            if (retirou == False):
                return False
            else:
                destino.deposita(valor)
                self._historico.atualiza_historico(
                    f'Transferência realizada no valor de {valor} para a conta número {destino.numero} - titular: {destino.titular.nome} {destino.titular.sobrenome}. Saldo parcial: {self._saldo}'
                )
                return True
        except SaldoInsuficienteError as e:
            raise SaldoInsuficienteError(
                "Saldo insuficente para transferência")
        except:
            raise e

    def extrato(self):
        '''
        Demonstra o extrato da conta informada
        '''
        print(
            f"Titular: {self._titular.nome} {self._titular.sobrenome}\nCPF: {self._titular.cpf}"
        )
        print(f"Conta número: {self._numero}\nSaldo: {self._saldo}")
        print('\n')
        self._historico.imprime()

    @abc.abstractmethod
    def atualiza(self, taxa):
        '''
        Atualiza o saldo com a taxa informada
        '''
        #self._saldo += self._saldo * taxa
        #self._historico.atualiza_historico(f'Atualização de rendimentos - taxa: {taxa}. Saldo parcial: {self._saldo}')
        pass

    def __str__(self):
        return f"Tipo: {self._tipo} - Titular: {self._titular.nome} {self._titular.sobrenome} - CPF: {self._titular.cpf}"
Ejemplo n.º 20
0
Archivo: conta.py Proyecto: Pepyn0/UFPI
 def __init__(self, numero, cliente, saldo, limite=1000):
     self.numero = numero
     self.titular = cliente
     self.saldo = saldo
     self.limite = limite
     self.historico = Historico()
Ejemplo n.º 21
0
    def run(self):
        print("Conectado...")

        while (True):

            recebe = self.socket.recv(1024)
            msg_recebida = recebe.decode()

            print('cliente: ' + msg_recebida)

            if msg_recebida != '':
                msg = msg_recebida.split(',')

                print(msg)

                if msg[0] == 'add_cliente':  # ,nome,cpf,data_nascimento

                    if not (Cliente.cadast_clie(msg[1], msg[2], msg[3],
                                                cursor)):
                        con.send('erro'.encode())
                    else:
                        con.send('sucesso'.encode())
                        #bd.commit()

                if msg[0] == 'add_conta':  # ,numero,titular,saldo,limite

                    if not (Conta.abrir_conta(msg[1], msg[2], msg[3], msg[3],
                                              cursor, self.sinc)):
                        con.send('erro'.encode())
                    else:
                        con.send('sucesso'.encode())
                        #bd.commit()

                if msg[0] == 'transfere':  # ,num,numDest,valor

                    if not (Conta.transfere(msg[1], float(msg[2]), msg[3],
                                            cursor, self.sinc)):
                        con.send('erro'.encode())
                    else:
                        con.send('sucesso'.encode())
                        #bd.commit()

                if msg[0] == 'saque':  # ,num,valor

                    if not (Conta.saca(msg[1], float(msg[2]), cursor, True)):
                        con.send('erro'.encode())
                    else:
                        con.send('sucesso'.encode())
                        #bd.commit()

                if msg[0] == 'deposita':  # ,num,valor

                    if not (Conta.deposita(msg[1], float(msg[2]), cursor, True,
                                           self.sinc)):
                        con.send('erro'.encode())
                    else:
                        con.send('sucesso'.encode())
                        #bd.commit()

                if msg[0] == 'saldo':  # ,num
                    extr = Conta.extrato(msg[1], cursor)
                    if extr == None:
                        con.send('erro'.encode())
                    else:
                        con.send(str(extr).encode())
                        #bd.commit()

                if msg[0] == 'busc_clie':  # ,cpf
                    cli = Cliente.busca_clie(msg[1], cursor)
                    if cli == False:
                        con.send('erro'.encode())
                    else:
                        con.send(f'{cli}'.encode())
                        #bd.commit()

                if msg[0] == 'busca_cnta':  # ,num
                    cta = Conta.busca_conta(msg[1], cursor, self.sinc)
                    if cta == False:
                        con.send('erro'.encode())
                    else:
                        con.send(f'{cta}'.encode())
                        #bd.commit()

                if msg[0] == 'historic':  # ,num
                    hist = Historico.imprimir_transacoes(msg[1], cursor)
                    if hist == None:
                        con.send('erro'.encode())
                    else:
                        con.send(f'{hist}'.encode())

            bd.commit()
Ejemplo n.º 22
0
    def saca(self,valor):
        '''Metodo Saca'''

        self.saldo -= valor
        self.listahistorico.append(Historico('Saque',datetime.today(),valor))
Ejemplo n.º 23
0
    def deposita(self,valor):
        '''Metodo deposita'''

        self.saldo += valor
        self.listahistorico.append(Historico('Deposito',datetime.today(),valor))
Ejemplo n.º 24
0
class Conta:
    __slots__ = [
        '_numero', '_senha', '_saldo', '_cliente', '_limite', '_historico'
    ]
    cont = 0  #contador da classe

    def __init__(self, cliente, senha, saldo=0, limite=5000):
        self._numero = str((Conta.cont + 1) * 1000)
        self._saldo = float(saldo)
        self._cliente = cliente
        self._senha = str(senha)
        self._limite = float(limite)
        self._historico = Historico()
        Conta.cont += 1

    #metodos de acesso
    @property
    def numero(self):
        return self._numero

    @property
    def senha(self):
        return self._senha

    @senha.setter
    def senha(self, s):
        self._senha = s

    @property
    def cliente(self):
        return self._cliente

    @cliente.setter
    def cliente(self, c):
        self._cliente = c

    @property
    def limite(self):
        return self._limite

    @limite.setter
    def limite(self, l):
        self._limite = l

    @property
    def saldo(self):
        return self._saldo

    @saldo.setter
    def saldo(self, s):
        self._saldo = s

    @property
    def historico(self):
        return self._historico

    #Metodos
    def saque(self, valor):
        if self._saldo < valor:
            #return 'Valor não disponível para saque!'
            return False
        else:
            self._saldo -= valor
            self._limite += valor
            self._historico.adicionar_transacao('Saque', valor)
            #return 'Saque realizado com sucesso!\nSaldo restante = {}'.format(self._saldo)
            return True

    def depositar(self, valor):
        if valor > self._limite:
            return False
        else:
            self._saldo += valor
            self._limite -= valor
            self._historico.adicionar_transacao('Deposito', valor)
            #return 'Deposito realizado com sucesso!\nSaldo da conta = {}'.format(self._saldo)
            return True

    '''
    def extrato(self):
        print("numero: {} saldo: {}".format(self._numero, self._saldo))
        self._historico.adicionar_transacao("tirou extrato - saldo de {}".format(self._saldo))
    '''

    def transfere_para(self, c, valor):
        if valor > self._saldo:
            #return 'Valor a ser transferido não pode ser negativo!'
            #return 'Valor não disponível para transferencia!'
            return False
        else:
            self._saldo -= valor
            self._limite += valor
            c._saldo += valor
            c._limite -= valor
            self._historico.adicionar_transacao(
                f'Transferencia para {c.cliente.nome}', valor)
            c._historico.adicionar_transacao(
                f'Transferencia recebida de {self._cliente.nome}', valor)
            #return 'Transferencia realizada com sucesso!'
            return True

    def imprimir_transacoes(self):
        historico = ''
        transacoes = self._historico._transacoes

        for transacao in transacoes:
            historico += transacao

        return historico

    def imprimir_conta(self):
        print('Titular = ', self._cliente.nome, 'Numero = ', self._numero,
              'Saldo = ', self._saldo, 'Limite = ', self._limite)