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 __removerConta(self):
        conta_id = self.__getContaId()
        if conta_id:
            Conta.delete_by_id(conta_id)

        del self.__contas[self.__contaSelecionadaIndex]
        self.__atualizarContas()
        self.__valida()
    def __addConta(self, dadosConta):
        if dadosConta['id']:
            Conta.update(valor=dadosConta['valor'],
                         descricao=dadosConta['descricao'],
                         morador_id=dadosConta['pagante_id'],
                         tipo_conta_id=dadosConta['tipo_conta_id']).where(
                             Conta.id == dadosConta['id']).execute()
        else:
            self.__contas.append(dadosConta)

        self.__atualizarContas()
        self.__valida()
Exemple #4
0
    def __remover(self):
        if self.registro_mensal_id:
            resposta = QMessageBox.question(
                self, 'Exclusão de Registro Mensal',
                'Realmente deseja excluir o registro mensal e todas as contas e empréstimos atrelados a ele?',
                QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
            if resposta == QMessageBox.Yes:
                Conta.delete().where(Conta.registro_mensal_id ==
                                     self.registro_mensal_id).execute()
                Emprestimo.delete().where(Emprestimo.registro_mensal_id ==
                                          self.registro_mensal_id).execute()
                RegistroMensal.delete_by_id(self.registro_mensal_id)

            self.__atualizar()
    def __tabelaTotais(self):
        i = 0
        for morador in self.__moradores:
            self.__totais[i]['total_pessoa'] = self.__totais[i]['total_por_pessoa']
            self.__totais[i]['total_pessoa_pago'] = 0
            emprestimos_de = Emprestimo.select().where((Emprestimo.de_id == morador.id) & (Emprestimo.registro_mensal_id == self.__registroMensal.id))
            emprestimos_para = Emprestimo.select().where((Emprestimo.para_id == morador.id) & (Emprestimo.registro_mensal_id == self.__registroMensal.id))
            contas = Conta().select().where((Conta.morador_id == morador.id) & (Conta.registro_mensal_id == self.__registroMensal.id))

            for emprestimo in emprestimos_de:
                self.__totais[i]['total_pessoa'] += emprestimo.valor

            for emprestimo in emprestimos_para:
                self.__totais[i]['total_pessoa'] -= emprestimo.valor

            for conta in contas:
                self.__totais[i]['total_pessoa_pago'] += conta.valor
                self.__totais[i]['total_pessoa'] -= conta.valor

            rowIndex = self.totais.rowCount()
            self.totais.insertRow(rowIndex)
            self.totais.setItem(rowIndex, 0, QTableWidgetItem(morador.nome))
            self.totais.setItem(rowIndex, 1, QTableWidgetItem(f"R${round(self.__totais[i]['total_por_pessoa'], 2)}"))
            self.totais.setItem(rowIndex, 2, QTableWidgetItem(f"R${round(self.__totais[i]['total_pessoa_pago'], 2)}"))
            self.totais.setItem(rowIndex, 3, QTableWidgetItem(f"R${round(self.__totais[i]['total_pessoa'], 2)}"))

            i += 1
    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 __remover(self):
     if self.tipo_conta_id:
         resposta = QMessageBox.question(self, 'Exclusão de Tipo de Conta', 'Realmente deseja excluir o tipo de conta?', QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
         if resposta == QMessageBox.Yes:
             temContas = Conta.select().where(Conta.tipo_conta == self.tipo_conta_id).count()
             if temContas > 0:
                 QMessageBox.warning(self, 'Tipo de Conta não pode ser excluído', 'Tipo de Conta tem registros vinculados!', QMessageBox.Ok, QMessageBox.Ok)
             else:
                 TipoConta.delete_by_id(self.tipo_conta_id)
             self.__atualizar()
     else:
         self.editarRegistro.setEnabled(False)
         self.removerRegistro.setEnabled(False)
    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)