def _initialize_date(self): """Default to today, formatted as MM/DD/YYYY.""" if hasattr(self, 'instance') and self.instance.pk: formatted_date = self.instance.date.strftime('%m/%d/%Y') self.initial['date'] = formatted_date else: self.initial['date'] = today_in_american_format()
def __init__(self, *args, **kwargs): """Set the initial date to today & change the name label.""" super(CreditCardEntryForm, self).__init__(*args, **kwargs) self.fields['name'].label = "Your Name" if hasattr(self, 'instance') and self.instance.pk: formatted_date = self.instance.date.strftime('%m/%d/%Y') self.initial['date'] = formatted_date amount = self.instance.amount self.initial['amount'] = remove_trailing_zeroes(amount) else: self.initial['date'] = today_in_american_format()
def __init__(self, *args, **kwargs): """Set the initial date to today & change the name label.""" super(CreditCardEntryForm, self).__init__(*args, **kwargs) self.fields['date'].label = "Purchase Date" self.fields['name'].label = "Your Name" if hasattr(self, 'instance') and self.instance.pk: formatted_date = self.instance.date.strftime('%m/%d/%Y') self.initial['date'] = formatted_date amount = self.instance.amount self.initial['amount'] = remove_trailing_zeroes(amount) else: self.initial['date'] = today_in_american_format()
def __init__(self, *args, **kwargs): """Set the initial date to today, remove trailing zeros.""" super(TripEntryForm, self).__init__(*args, **kwargs) if hasattr(self, 'instance') and self.instance.pk: formatted_date = self.instance.date.strftime('%m/%d/%Y') self.initial['date'] = formatted_date trip_advance = self.instance.total_trip_advance self.initial['total_trip_advance'] = remove_trailing_zeroes( trip_advance) amount = self.instance.amount self.initial['amount'] = remove_trailing_zeroes(amount) else: self.initial['date'] = today_in_american_format()
def __init__(self, *args, **kwargs): """Set the initial date to today, remove trailing zeros.""" super(TripEntryForm, self).__init__(*args, **kwargs) self.fields['date'].label = "Trip Date" if hasattr(self, 'instance') and self.instance.pk: formatted_date = self.instance.date.strftime('%m/%d/%Y') self.initial['date'] = formatted_date trip_advance = self.instance.total_trip_advance self.initial['total_trip_advance'] = remove_trailing_zeroes( trip_advance) amount = self.instance.amount self.initial['amount'] = remove_trailing_zeroes(amount) else: self.initial['date'] = today_in_american_format()
def reconcile_account(request, account_slug, template_name="accounts/account_reconcile.html"): """Reconcile an Account against a Statement. This view presents a form to the user, allowing them to enter a ``Statement Balance`` and ``Statement Date``. Upon a ``GET`` request with valid data, the view will display all unreconciled :class:`Transactions<Transaction>` from before the entered ``Statement Date``. The user will then select which :class:`Transactions<Transaction>` to reconcile. If a balanced form is submit, the view will mark each marked :class:`Transaction` as reconciled. The user will then be redirected to the :class:`Account's<Account>` :func:`show_account_detail` view. :param account_slug: The slug of the :class:`Account` to reconcile. :type account_slug: str :param template_name: The template to use. :type template_name: str :returns: HTTP response containing :class:`AccountReconcileForm`, \ :class:`~accounts.forms.ReconcileTransactionFormSet`, the \ :class:`Account`, and the Reconciled Balance and Last \ Reconciled Date as context. Redirects if successful POST is sent. :rtype: HttpResponse or HttpResponseRedirect """ account = get_object_or_404(Account, slug=account_slug) last_reconciled = account.last_reconciled reconciled_balance = account.reconciled_balance if request.method == 'POST': if request.POST.get('submit') == 'Get Transactions': account_form = AccountReconcileForm(request.POST, prefix='account', instance=account) if account_form.is_valid(): stop_date = account_form.cleaned_data.get('statement_date') pre_statement_transactions = account.transaction_set.filter( reconciled=False).filter(date__lte=stop_date) transaction_formset = ReconcileTransactionFormSet( queryset=pre_statement_transactions) reconciled_balance *= (-1 if account.flip_balance() else 1) return render(request, template_name, {'account': account, 'reconciled_balance': reconciled_balance, 'last_reconciled': last_reconciled, 'account_form': account_form, 'transaction_formset': transaction_formset}) elif request.POST.get('submit') == 'Reconcile Transactions': account_form = AccountReconcileForm(request.POST, prefix='account', instance=account) transaction_formset = ReconcileTransactionFormSet(request.POST) if account_form.is_valid(): transaction_formset.reconciled_balance = reconciled_balance transaction_formset.account_form = account_form # Flip the reconciled balance for display in case of formset # error reconciled_balance *= (-1 if account.flip_balance() else 1) if transaction_formset.is_valid(): transaction_formset.save() account.last_reconciled = account_form.cleaned_data.get( 'statement_date') account.reconciled_balance = account_form.cleaned_data.get( 'statement_balance') account.save() messages.success(request, "The account was reconciled.") return HttpResponseRedirect( reverse('accounts.views.show_account_detail', kwargs={'account_slug': account.slug})) else: stop_date = account_form.cleaned_data.get('statement_date') pre_statement_transactions = ( account.transaction_set.filter( reconciled=False).filter(date__lte=stop_date)) form_instances = set(form.instance for form in transaction_formset.forms) missing_transactions = (set(pre_statement_transactions) - form_instances) _ = [transaction_formset.add_form(instance) for instance in missing_transactions] else: raise Http404 else: reconciled_balance *= (-1 if account.flip_balance() else 1) if reconciled_balance == 0 and '-' in str(reconciled_balance): reconciled_balance *= -1 account_form = AccountReconcileForm( prefix='account', instance=account, initial={ 'statement_date': today_in_american_format(), 'statement_balance': remove_trailing_zeroes(reconciled_balance) }) return render(request, template_name, locals())
def reconcile_account(request, account_slug, template_name="accounts/account_reconcile.html"): """Reconcile an Account against a Statement. This view presents a form to the user, allowing them to enter a ``Statement Balance`` and ``Statement Date``. Upon a ``GET`` request with valid data, the view will display all unreconciled :class:`Transactions<Transaction>` from before the entered ``Statement Date``. The user will then select which :class:`Transactions<Transaction>` to reconcile. If a balanced form is submit, the view will mark each marked :class:`Transaction` as reconciled. The user will then be redirected to the :class:`Account's<Account>` :func:`show_account_detail` view. :param account_slug: The slug of the :class:`Account` to reconcile. :type account_slug: str :param template_name: The template to use. :type template_name: str :returns: HTTP response containing :class:`AccountReconcileForm`, \ :class:`~accounts.forms.ReconcileTransactionFormSet`, the \ :class:`Account`, and the Reconciled Balance and Last \ Reconciled Date as context. Redirects if successful POST is sent. :rtype: HttpResponse or HttpResponseRedirect """ account = get_object_or_404(Account, slug=account_slug) last_reconciled = account.last_reconciled reconciled_balance = account.reconciled_balance if request.method == 'POST': if request.POST.get('submit') == 'Get Transactions': account_form = AccountReconcileForm(request.POST, prefix='account', instance=account) if account_form.is_valid(): stop_date = account_form.cleaned_data.get('statement_date') pre_statement_transactions = account.transaction_set.filter( reconciled=False).filter(date__lte=stop_date) transaction_formset = ReconcileTransactionFormSet( queryset=pre_statement_transactions) reconciled_balance *= (-1 if account.flip_balance() else 1) return render( request, template_name, { 'account': account, 'reconciled_balance': reconciled_balance, 'last_reconciled': last_reconciled, 'account_form': account_form, 'transaction_formset': transaction_formset }) elif request.POST.get('submit') == 'Reconcile Transactions': account_form = AccountReconcileForm(request.POST, prefix='account', instance=account) transaction_formset = ReconcileTransactionFormSet(request.POST) if account_form.is_valid(): transaction_formset.reconciled_balance = reconciled_balance transaction_formset.account_form = account_form # Flip the reconciled balance for display in case of formset # error reconciled_balance *= (-1 if account.flip_balance() else 1) if transaction_formset.is_valid(): transaction_formset.save() account.last_reconciled = account_form.cleaned_data.get( 'statement_date') account.reconciled_balance = account_form.cleaned_data.get( 'statement_balance') account.save() messages.success(request, "The account was reconciled.") return HttpResponseRedirect( reverse('accounts.views.show_account_detail', kwargs={'account_slug': account.slug})) else: stop_date = account_form.cleaned_data.get('statement_date') pre_statement_transactions = ( account.transaction_set.filter( reconciled=False).filter(date__lte=stop_date)) form_instances = set(form.instance for form in transaction_formset.forms) missing_transactions = (set(pre_statement_transactions) - form_instances) _ = [ transaction_formset.add_form(instance) for instance in missing_transactions ] else: raise Http404 else: reconciled_balance *= (-1 if account.flip_balance() else 1) if reconciled_balance == 0 and '-' in str(reconciled_balance): reconciled_balance *= -1 account_form = AccountReconcileForm( prefix='account', instance=account, initial={ 'statement_date': today_in_american_format(), 'statement_balance': remove_trailing_zeroes(reconciled_balance) }) return render(request, template_name, locals())