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()
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)