def transactions_create(): form = TransactionCreateForm() if form.validate_on_submit(): splits = [] for split_form in form.splits: splits.append(( Account.q.get(split_form.account_id.data), split_form.amount.data )) transaction = finance.complex_transaction( description=form.description.data, author=current_user, splits=splits, valid_on=form.valid_on.data, ) end_payment_in_default_memberships() session.commit() return redirect(url_for('.transactions_show', transaction_id=transaction.id)) return render_template( 'finance/transactions_create.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_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 handle_payment_in_default_users(self): end_payment_in_default_memberships(self.processor) users_pid_membership, users_membership_terminated = get_users_with_payment_in_default( self.session) take_actions_for_payment_in_default_users(users_pid_membership, users_membership_terminated, self.processor) return users_pid_membership, users_membership_terminated
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 transactions_create(): form = TransactionCreateForm() if form.validate_on_submit(): splits = [] for split_form in form.splits: splits.append((Account.q.get(split_form.account_id.data), split_form.amount.data)) transaction = finance.complex_transaction( description=form.description.data, author=current_user, splits=splits, valid_on=form.valid_on.data, ) end_payment_in_default_memberships() session.commit() return redirect( url_for('.transactions_show', transaction_id=transaction.id)) return render_template('finance/transactions_create.html', form=form)
def handle_payments_in_default(): finance.end_payment_in_default_memberships() users_pid_membership_all, users_membership_terminated_all = finance.get_users_with_payment_in_default( ) form = HandlePaymentsInDefaultForm() # Using `query_factory` instead of `query`, because wtforms would not process an empty list as `query` form.new_pid_memberships.query_factory = lambda: users_pid_membership_all form.terminated_member_memberships.query_factory = lambda: users_membership_terminated_all if not form.is_submitted(): form.new_pid_memberships.process_data(users_pid_membership_all) form.terminated_member_memberships.process_data( users_membership_terminated_all) if form.validate_on_submit(): users_pid_membership = form.new_pid_memberships.data users_membership_terminated = form.terminated_member_memberships.data take_actions_for_payment_in_default_users( users_pid_membership=users_pid_membership, users_membership_terminated=users_membership_terminated, processor=current_user) session.commit() flash("Zahlungsrückstände behandelt.", "success") return redirect(url_for(".membership_fees")) form_args = { 'form': form, 'cancel_to': url_for('.membership_fees'), 'submit_text': 'Anwenden', 'actions_offset': 0 } return render_template('generic_form.html', page_title="Zahlungsrückstände behandeln", form_args=form_args, form=form)
def bank_account_activities_do_match(): # Generate form again matching_user, matching_team = match_activities() field_list_user = _create_field_list(matching_user) field_list_team = _create_field_list(matching_team) form = _create_combined_form(field_list_user, field_list_team) matched_user = [] matched_team = [] if form.user.validate_on_submit() or form.team.validate_on_submit(): # parse data matched_user = _apply_checked_matches(matching_user, form.user) matched_team = _apply_checked_matches(matching_team, form.team) end_payment_in_default_memberships(current_user) session.flush() session.commit() return render_template('finance/bank_accounts_matched.html', matched_user=matched_user, matched_team=matched_team)
def handle_payments_in_default(): users_pid_membership, users_membership_terminated = finance.handle_payments_in_default() users_no_more_pid = finance.end_payment_in_default_memberships() changes = [('Neue Zugehörigkeiten in Zahlungsrückstands-Gruppe', users_pid_membership), ('Beendete Mitgliedschaften', users_membership_terminated), ('Beendete Zugehörigkeiten in Zahlungsrückstands-Gruppe', users_no_more_pid)] form = HandlePaymentsInDefaultForm() if form.is_submitted(): session.commit() flash("Zahlungsrückstände behandelt.", "success") return redirect(url_for(".membership_fees")) else: session.rollback() return render_template('finance/handle_payments_in_default.html', changes=changes, page_title="Zahlungsrückstände behandeln", form=form)
def handle_payments_in_default(): users_pid_membership, users_membership_terminated = finance.handle_payments_in_default( ) users_no_more_pid = finance.end_payment_in_default_memberships() changes = [('Neue Zugehörigkeiten in Zahlungsrückstands-Gruppe', users_pid_membership), ('Beendete Mitgliedschaften', users_membership_terminated), ('Beendete Zugehörigkeiten in Zahlungsrückstands-Gruppe', users_no_more_pid)] form = HandlePaymentsInDefaultForm() if form.is_submitted(): session.commit() flash("Zahlungsrückstände behandelt.", "success") return redirect(url_for(".membership_fees")) else: session.rollback() return render_template('finance/handle_payments_in_default.html', changes=changes, page_title="Zahlungsrückstände behandeln", 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) 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)