Exemplo n.º 1
0
def migrate():
    try:
        Morador.create_table()
        print(f'Tabela "Morador" criada com sucesso!')
    except peewee.OperationalError:
        print(f'Tabela "Morador" já existe!')

    try:
        TipoConta.create_table()
        print(f'Tabela "TipoConta" criada com sucesso!')
    except peewee.OperationalError:
        print(f'Tabela "TipoConta" já existe!')

    try:
        RegistroMensal.create_table()
        print(f'Tabela "RegistroMensal" criada com sucesso!')
    except peewee.OperationalError:
        print(f'Tabela "RegistroMensal" já existe!')

    try:
        Emprestimo.create_table()
        print(f'Tabela "Emprestimo" criada com sucesso!')
    except peewee.OperationalError:
        print(f'Tabela "Emprestimo" já existe!')

    try:
        Conta.create_table()
        print(f'Tabela "Conta" criada com sucesso!')
    except peewee.OperationalError:
        print(f'Tabela "Conta" já existe!')
 def __tabelaEmprestimos(self):
     for emprestimo in self.__emprestimos:
         rowIndex = self.emprestimos.rowCount()
         self.emprestimos.insertRow(rowIndex)
         self.emprestimos.setItem(rowIndex, 0, QTableWidgetItem(emprestimo.descricao))
         self.emprestimos.setItem(rowIndex, 1, QTableWidgetItem(Morador.get_by_id(emprestimo.de_id).nome))
         self.emprestimos.setItem(rowIndex, 2, QTableWidgetItem(Morador.get_by_id(emprestimo.para_id).nome))
         self.emprestimos.setItem(rowIndex, 3, QTableWidgetItem(f"R${emprestimo.valor}"))
Exemplo n.º 3
0
    def __salvarMorador(self):
        if self.morador:
            self.morador.nome = self.nomeMorador.text()
            self.morador.save()
        else:
            Morador.create(nome=self.nomeMorador.text(),
                           data=date.today().strftime('%Y-%m-%d'))

        self.salvo.emit()
        self.close()
Exemplo n.º 4
0
    def __init__(self, *args, **kwargs):
        super(NovoEmprestimoView, self).__init__()
        self.setupUi(self)
        self.setModal(True)
        self.salvar.setEnabled(False)

        self.cancelar.clicked.connect(self.close)
        self.salvar.clicked.connect(self.__salvar)

        self.moradores = Morador.select().where(Morador.deleted == False)

        for morador in self.moradores:
            self.de.addItem(morador.nome, morador.id)
            self.para.addItem(morador.nome, morador.id)

        self.de.currentIndexChanged.connect(self.__validar)
        self.para.currentIndexChanged.connect(self.__validar)
        self.valor.textChanged.connect(self.__validar)
        self.descricao.textChanged.connect(self.__validar)

        self.emprestimo_id = None

        if 'dados_emprestimo' in kwargs:
            self.emprestimo_id = kwargs['dados_emprestimo']['id']
            self.de.setCurrentIndex(self.de.findData(kwargs['dados_emprestimo']['de_id']))
            self.para.setCurrentIndex(self.para.findData(kwargs['dados_emprestimo']['para_id']))
            self.descricao.setText(kwargs['dados_emprestimo']['descricao'])
            self.valor.setText(f"R${str(kwargs['dados_emprestimo']['valor']).replace('.', ',')}")
            self.salvar.setEnabled(True)
            self.cancelar.setVisible(False)
            self.setWindowTitle('Editando Empréstimo')
Exemplo n.º 5
0
    def __init__(self, *args, **kwargs):
        super(NovaContaView, self).__init__()
        self.setupUi(self)
        self.setModal(True)
        self.salvar.setEnabled(False)

        self.cancelar.clicked.connect(self.close)
        self.salvar.clicked.connect(self.__salvar)

        self.moradores = Morador.select().where(Morador.deleted == False)
        self.tiposConta = TipoConta.select()

        self.pagante.addItem('Não pago', None)

        for morador in self.moradores:
            self.pagante.addItem(morador.nome, morador.id)

        for tipoConta in self.tiposConta:
            self.tipoConta.addItem(tipoConta.nome, tipoConta.id)

        self.conta_id = None

        self.tipoConta.currentIndexChanged.connect(self.__validar)
        self.valor.textChanged.connect(self.__validar)
        self.descricao.textChanged.connect(self.__validar)

        if 'dados_conta' in kwargs:
            self.conta_id = kwargs['dados_conta']['id']
            self.tipoConta.setCurrentIndex(self.tipoConta.findData(kwargs['dados_conta']['tipo_conta_id']))
            self.pagante.setCurrentIndex(self.pagante.findData(kwargs['dados_conta']['pagante_id']))
            self.descricao.setText(kwargs['dados_conta']['descricao'])
            self.valor.setText(f"R${str(kwargs['dados_conta']['valor']).replace('.', ',')}")
            self.salvar.setEnabled(True)
            self.cancelar.setVisible(False)
            self.setWindowTitle('Editando Conta')
    def __init__(self, *args, **kwargs):
        super(RelatorioRegistroMensalView, self).__init__()
        self.setupUi(self)
        self.setModal(True)

        self.sair.clicked.connect(self.close)

        self.contas.setSelectionBehavior(QAbstractItemView.SelectRows)
        self.totais.setSelectionBehavior(QAbstractItemView.SelectRows)
        self.emprestimos.setSelectionBehavior(QAbstractItemView.SelectRows)
        self.contas.setEditTriggers(QAbstractItemView.NoEditTriggers)
        self.totais.setEditTriggers(QAbstractItemView.NoEditTriggers)
        self.emprestimos.setEditTriggers(QAbstractItemView.NoEditTriggers)


        self.__registroMensal = RegistroMensal.get_by_id(kwargs['registro_mensal_id'])
        self.__contas = Conta.select().where(Conta.registro_mensal_id == self.__registroMensal.id)
        self.__emprestimos = Emprestimo.select().where(Emprestimo.registro_mensal_id == self.__registroMensal.id)
        self.__moradores = Morador.select().where(Morador.deleted == False)
        self.__totais = []

        self.__adjustHeaders()
        self.titulo.setText(self.titulo.text().replace('mes_ano', self.__registroMensal.data.strftime('%m/%Y')))
        self.__tabelaContas()
        self.__tabelaEmprestimos()
        self.__tabelaTotais()
    def __atualizarEmprestimos(self):
        if self.registroMensal:
            emprestimos = Emprestimo.select().join(RegistroMensal).where(
                RegistroMensal.id == self.registroMensal.id)

            for emprestimo in emprestimos:
                emprestimo = {
                    'id': emprestimo.id,
                    'de_id': emprestimo.de_id,
                    'para_id': emprestimo.para_id,
                    'valor': emprestimo.valor,
                    'descricao': emprestimo.descricao,
                }
                if emprestimo not in self.__emprestimos:
                    self.__emprestimos.append(emprestimo)

        self.emprestimos.setRowCount(0)

        for emprestimo in self.__emprestimos:
            rowIndex = self.emprestimos.rowCount()

            self.emprestimos.insertRow(rowIndex)

            self.emprestimos.setItem(
                rowIndex, 0,
                QTableWidgetItem(
                    str(emprestimo['id']) if emprestimo['id'] else ""))
            self.emprestimos.setItem(
                rowIndex, 1, QTableWidgetItem(str(emprestimo['descricao'])))
            self.emprestimos.setItem(
                rowIndex, 2,
                QTableWidgetItem(
                    str(Morador.get_by_id(emprestimo['de_id']).nome)))
            self.emprestimos.setItem(
                rowIndex, 3,
                QTableWidgetItem(
                    str(Morador.get_by_id(emprestimo['para_id']).nome)))
            self.emprestimos.setItem(
                rowIndex, 4,
                QTableWidgetItem(f'R$ {round(emprestimo["valor"], 2)}'))
    def __tabelaContas(self):
        total = 0
        for conta in self.__contas:
            rowIndex = self.contas.rowCount()
            self.contas.insertRow(rowIndex)

            self.contas.setItem(rowIndex, 0, QTableWidgetItem(f"R${conta.valor}"))
            self.contas.setItem(rowIndex, 1, QTableWidgetItem(TipoConta.get_by_id(conta.tipo_conta_id).nome))
            self.contas.setItem(rowIndex, 2, QTableWidgetItem(conta.descricao))
            self.contas.setItem(rowIndex, 3, QTableWidgetItem(Morador.get_by_id(conta.morador_id).nome if conta.morador_id else "Não Paga"))
            total += conta.valor

        self.__totais = [{'total_por_pessoa': total / len(self.__moradores)}] * len(self.__moradores)
        self.totalLabel.setText(self.totalLabel.text().replace('valor', str(total).replace('.', ',')))
Exemplo n.º 9
0
    def __init__(self, *args, **kwargs):
        super(NovoMoradorView, self).__init__()
        self.setupUi(self)
        self.setModal(True)

        self.morador = None

        self.salvarMorador.setEnabled(False)

        self.cancelarNovoMorador.clicked.connect(self.close)
        self.nomeMorador.textChanged.connect(self.__checkName)
        self.salvarMorador.clicked.connect(self.__salvarMorador)

        if 'morador_id' in kwargs:
            self.morador = Morador.get_by_id(kwargs['morador_id'])
            self.nomeMorador.setText(self.morador.nome)
            self.salvarMorador.setEnabled(False)
            self.setWindowTitle(f"Editando morador: {self.morador.nome}")
    def __atualizarContas(self):
        if self.registroMensal:
            contas = Conta.select().join(RegistroMensal).where(
                RegistroMensal.id == self.registroMensal.id)

            for conta in contas:
                conta = {
                    'id': conta.id,
                    'tipo_conta_id': conta.tipo_conta_id,
                    'pagante_id': conta.morador_id,
                    'valor': conta.valor,
                    'descricao': conta.descricao
                }
                if conta not in self.__contas:
                    self.__contas.append(conta)

        self.contas.setRowCount(0)

        for conta in self.__contas:
            rowIndex = self.contas.rowCount()

            self.contas.insertRow(rowIndex)

            self.contas.setItem(
                rowIndex, 0,
                QTableWidgetItem(str(conta['id']) if conta['id'] else ""))
            self.contas.setItem(rowIndex, 1,
                                QTableWidgetItem(str(conta['descricao'])))
            self.contas.setItem(
                rowIndex, 2,
                QTableWidgetItem(
                    str(TipoConta.get_by_id(conta['tipo_conta_id']).nome)))
            self.contas.setItem(
                rowIndex, 3,
                QTableWidgetItem(f'R$ {round(conta["valor"], 2)}'))
            self.contas.setItem(
                rowIndex, 4,
                QTableWidgetItem(
                    str(Morador.get_by_id(conta['pagante_id']).nome
                        ) if conta['pagante_id'] else "Não Paga"))
    def __salvar(self):
        if len(self.__contas) == 0 and len(self.__emprestimos) == 0:
            self.salvar.setEnabled(False)
        else:
            if self.registroMensal:
                registro_mensal = self.registroMensal
            else:
                registro_mensal = RegistroMensal.create(
                    data=date.today().strftime('%Y-%m-%d'),
                    total=0,
                    numero_pessoas=0)

            total = 0
            moradores = len(Morador.select().where(Morador.deleted == False))

            for emprestimo in self.__emprestimos:
                if emprestimo['id']:
                    Emprestimo.update(
                        valor=emprestimo['valor'],
                        descricao=emprestimo['descricao'],
                        de_id=emprestimo['de_id'],
                        para_id=emprestimo['para_id']).where(
                            Emprestimo.id == emprestimo['id']).execute()
                else:
                    Emprestimo.create(data=date.today().strftime('%Y-%m-%d'),
                                      valor=emprestimo['valor'],
                                      descricao=emprestimo['descricao'],
                                      registro_mensal_id=registro_mensal.id,
                                      de_id=emprestimo['de_id'],
                                      para_id=emprestimo['para_id'])

            for conta in self.__contas:
                total += conta['valor']
                if conta['id']:
                    Conta.update(valor=conta['valor'],
                                 descricao=conta['descricao'],
                                 morador_id=conta['pagante_id'],
                                 tipo_conta_id=conta['tipo_conta_id']).where(
                                     Conta.id == conta['id']).execute()
                else:
                    Conta.create(data=date.today().strftime('%Y-%m-%d'),
                                 valor=conta['valor'],
                                 descricao=conta['descricao'],
                                 registro_mensal_id=registro_mensal.id,
                                 morador_id=conta['pagante_id'],
                                 tipo_conta_id=conta['tipo_conta_id'])

            mes = int(self.mes.text()) if self.mes.text() != '' else 0
            ano = int(self.ano.text()) if self.ano.text() != '' else 0

            registro_mensal.data = date(ano, mes, 1)
            registro_mensal.total = total
            registro_mensal.numero_pessoas = moradores
            registro_mensal.save()

            self.__emprestimos = []
            self.__contas = []

            self.registroMensal = registro_mensal

            self.salvo.emit()
            self.__atualizarContas()
            self.__atualizarEmprestimos()
            self.gerarRelatorio.setEnabled(True)