def test_payment_in_default_recover(self): user = self.create_user_from1y() assert user.account.balance == 0.00, "Initial user account balance not zero" assert user.account.in_default_days == 0 assert user.has_property("member"), "User is not a member" # Test fee with payment_in_default group action post_transactions_for_membership_fee(self.membership_fee_pid_state, self.processor) session.session.refresh(user.account) assert user.account.balance == self.membership_fee_pid_state.regular_fee, "User balance incorrect" self.handle_payment_in_default_users() self.session.refresh(user) assert user.has_property("member"), "User is not a member" assert user.has_property( "payment_in_default"), "User has no payment_in_default property" # this transaction… simple_transaction(description="deposit", debit_account=user.account, credit_account=AccountFactory(), amount=self.membership_fee_pid_state.regular_fee, author=self.processor) # …should unblock the user now self.handle_payment_in_default_users() self.session.refresh(user) assert user.has_property("member"), "User is not a member" assert not user.has_property( "payment_in_default"), "User has payment_in_default property"
def test_0030_simple_transaction(self): try: simple_transaction(u"transaction", self.fee_account, self.user_account, Decimal(90), self.author) except Exception: self.fail() Transaction.q.delete() session.session.commit()
def test_0030_simple_transaction(self): try: simple_transaction( u"transaction", self.asset_account, self.liability_account, 9000, self.author ) except Exception: self.fail() Transaction.q.delete()
def test_0030_simple_transaction(self): try: simple_transaction( u"transaction", self.fee_account, self.user_account, Decimal(90), self.author ) except Exception: self.fail() Transaction.q.delete() session.session.commit()
def bank_account_activities_edit(activity_id): activity = BankAccountActivity.q.get(activity_id) if activity is None: flash(u"Bankbewegung mit ID {} existiert nicht!".format(activity_id), 'error') abort(404) form = BankAccountActivityEditForm( obj=activity, bank_account_name=activity.bank_account.name) if form.validate(): debit_account = Account.q.filter( Account.id == form.account_id.data ).one() credit_account = activity.bank_account.account transaction = finance.simple_transaction( description=form.description.data, debit_account=debit_account, credit_account=credit_account, amount=activity.amount, author=current_user, valid_on=activity.valid_on) activity.split = next(split for split in transaction.splits if split.account_id == credit_account.id) session.add(activity) session.commit() end_payment_in_default_memberships() return redirect(url_for('.bank_accounts_list')) return render_template('finance/bank_account_activities_edit.html', form=form)
def bank_account_activities_edit(activity_id): activity = BankAccountActivity.q.get(activity_id) if activity is None: flash(u"Bankbewegung mit ID {} existiert nicht!".format(activity_id), 'error') abort(404) form = BankAccountActivityEditForm( obj=activity, bank_account_name=activity.bank_account.name) if form.validate(): debit_account = Account.q.filter( Account.id == form.account_id.data).one() credit_account = activity.bank_account.account transaction = finance.simple_transaction( description=form.description.data, debit_account=debit_account, credit_account=credit_account, amount=activity.amount, author=current_user, valid_on=activity.valid_on) activity.split = next(split for split in transaction.splits if split.account_id == credit_account.id) session.add(activity) session.commit() end_payment_in_default_memberships() return redirect(url_for('.bank_accounts_list')) return render_template('finance/bank_account_activities_edit.html', form=form)
def bank_account_activities_do_match(): # Generate form again matching = match_activities() matched = [] FieldList = [] for activity, user in matching.items(): FieldList.append((str(activity.id), BooleanField('{} ({}€) -> {} ({}, {})'.format( activity.reference, activity.amount, user.name, user.id, user.login)))) class F(forms.ActivityMatchForm): pass for (name, field) in FieldList: setattr(F, name, field) form = F() # parse data if form.validate_on_submit(): # look for all matches which were checked for activity, user in matching.items(): if form._fields[str( activity.id )].data is True and activity.transaction_id is None: debit_account = user.account credit_account = activity.bank_account.account transaction = finance.simple_transaction( description=activity.reference, debit_account=debit_account, credit_account=credit_account, amount=activity.amount, author=current_user, valid_on=activity.valid_on) activity.split = next(split for split in transaction.splits if split.account_id == credit_account.id) session.add(activity) matched.append((activity, user)) end_payment_in_default_memberships() session.flush() session.commit() return render_template('finance/bank_accounts_matched.html', matched=matched)
def test_payment_in_default_recover(self): user = self.create_user_from1y() self.assertEqual(user.account.balance, 0.00, "Initial user account balance not zero") self.assertEqual(user.account.in_default_days, 0) self.assertTrue(user.has_property("member"), "User is not a member") # Test fee with payment_in_default group action post_transactions_for_membership_fee(self.membership_fee_pid_state, self.processor) session.session.refresh(user.account) self.assertEqual(user.account.balance, self.membership_fee_pid_state.regular_fee, "User balance incorrect") self.handle_payment_in_default_users() self.assertTrue(user.has_property("member"), "User is not a member") self.assertTrue(user.has_property("payment_in_default"), "User has no payment_in_default property") simple_transaction(description="deposit", debit_account=user.account, credit_account=AccountFactory(), amount=self.membership_fee_pid_state.regular_fee, author=self.processor) self.handle_payment_in_default_users() self.assertTrue(user.has_property("member"), "User is not a member") self.assertFalse(user.has_property("payment_in_default"), "User has payment_in_default property")
def _apply_checked_matches(matching, subform): # look for all matches which were checked matched = [] for activity, entity in matching.items(): if subform[str(activity.id)].data and activity.transaction_id is None: debit_account = entity if type( entity) is Account else entity.account credit_account = activity.bank_account.account transaction = finance.simple_transaction( description=activity.reference, debit_account=debit_account, credit_account=credit_account, amount=activity.amount, author=current_user, valid_on=activity.valid_on) activity.split = next(split for split in transaction.splits if split.account_id == credit_account.id) session.add(activity) matched.append((activity, entity)) return matched
def journals_entries_edit(journal_id, entry_id): entry = JournalEntry.q.get(entry_id) form = JournalEntryEditForm(obj=entry, journal_name=entry.journal.name) if form.validate(): debit_account = entry.journal.finance_account credit_account = FinanceAccount.q.filter( FinanceAccount.id == form.finance_account_id.data ).one() entry.transaction = finance.simple_transaction( description=entry.description, debit_account=debit_account, credit_account=credit_account, amount=entry.amount, author=current_user, valid_date=entry.valid_date) entry.description = form.description.data session.add(entry) session.commit() return redirect(url_for('.journals')) return render_template( 'finance/journals_entries_edit.html', entry=entry, form=form )
def journals_entries_edit(journal_id, entry_id): entry = JournalEntry.q.get(entry_id) form = JournalEntryEditForm(obj=entry, journal_name=entry.journal.name) if form.validate(): debit_account = entry.journal.finance_account credit_account = FinanceAccount.q.filter( FinanceAccount.id == form.finance_account_id.data).one() entry.transaction = finance.simple_transaction( description=entry.description, debit_account=debit_account, credit_account=credit_account, amount=entry.amount, author=current_user, valid_date=entry.valid_date) entry.description = form.description.data session.add(entry) session.commit() return redirect(url_for('.journals')) return render_template('finance/journals_entries_edit.html', entry=entry, form=form)
def test_0030_transferred_value(self): amount = Decimal(90) today = session.utcnow().date() simple_transaction("transaction", self.fee_account, self.user_account, amount, self.author, today - timedelta(1)) simple_transaction("transaction", self.fee_account, self.user_account, amount, self.author, today) simple_transaction("transaction", self.fee_account, self.user_account, amount, self.author, today + timedelta(1)) assert (transferred_amount(self.fee_account, self.user_account, single(today)) == amount) assert (transferred_amount(self.fee_account, self.user_account, closedopen(today, None)) == 2 * amount) assert (transferred_amount(self.fee_account, self.user_account, openclosed(None, today)) == 2 * amount) assert (transferred_amount(self.fee_account, self.user_account) == 3 * amount) Transaction.q.delete() session.session.commit()
def test_0030_transferred_value(self): amount = Decimal(90) today = session.utcnow().date() simple_transaction( u"transaction", self.fee_account, self.user_account, amount, self.author, today - timedelta(1) ) simple_transaction( u"transaction", self.fee_account, self.user_account, amount, self.author, today ) simple_transaction( u"transaction", self.fee_account, self.user_account, amount, self.author, today + timedelta(1) ) self.assertEqual( transferred_amount( self.fee_account, self.user_account, single(today) ), amount ) self.assertEqual( transferred_amount( self.fee_account, self.user_account, closedopen(today, None) ), 2*amount ) self.assertEqual( transferred_amount( self.fee_account, self.user_account, openclosed(None, today) ), 2*amount ) self.assertEqual( transferred_amount( self.fee_account, self.user_account ), 3*amount ) Transaction.q.delete() session.session.commit()
def test_0030_transferred_value(self): amount = 9000 today = date.today() simple_transaction( u"transaction", self.asset_account, self.liability_account, amount, self.author, today - timedelta(1) ) simple_transaction( u"transaction", self.asset_account, self.liability_account, amount, self.author, today ) simple_transaction( u"transaction", self.asset_account, self.liability_account, amount, self.author, today + timedelta(1) ) self.assertEqual( transferred_amount( self.asset_account, self.liability_account, today, today ), amount ) self.assertEqual( transferred_amount( self.asset_account, self.liability_account, today, None ), 2*amount ) self.assertEqual( transferred_amount( self.asset_account, self.liability_account, None, today ), 2*amount ) self.assertEqual( transferred_amount( self.asset_account, self.liability_account, None, None ), 3*amount ) Transaction.q.delete()
def bank_account_activities_edit(activity_id): activity = BankAccountActivity.q.get(activity_id) if activity is None: flash(u"Bankbewegung mit ID {} existiert nicht!".format(activity_id), 'error') abort(404) if activity.transaction_id is not None: form = BankAccountActivityReadForm( obj=activity, bank_account_name=activity.bank_account.name) if activity.transaction_id: flash(u"Bankbewegung ist bereits zugewiesen!".format(activity_id), 'warning') form_args = { 'form': form, 'show_submit': False, 'show_cancel': False, } return render_template('generic_form.html', page_title="Bankbewegung", form_args=form_args, form=form) else: form = BankAccountActivityEditForm( obj=activity, bank_account_name=activity.bank_account.name, description=activity.reference) if form.validate_on_submit(): debit_account = Account.q.filter( Account.id == form.account_id.data).one() credit_account = activity.bank_account.account transaction = finance.simple_transaction( description=form.description.data, debit_account=debit_account, credit_account=credit_account, amount=activity.amount, author=current_user, valid_on=activity.valid_on, confirmed=current_user.member_of(config.treasurer_group)) activity.split = next(split for split in transaction.splits if split.account_id == credit_account.id) session.add(activity) end_payment_in_default_memberships() session.commit() flash(u"Transaktion erfolgreich erstellt.", 'success') return redirect(url_for('.bank_accounts_list')) form_args = { 'form': form, 'cancel_to': url_for('.bank_accounts_list'), 'submit_text': 'Zuweisen', } return render_template('generic_form.html', page_title="Bankbewegung zuweisen", form_args=form_args, form=form)