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}"))
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()
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')
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('.', ',')))
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)