Added the fill_transaction_from_previous_form() utility to load the transaction data from the stored status, and applied it to the transaction_edit() view in the accounting application.
This commit is contained in:
parent
80b871d488
commit
4c3f3465d5
@ -18,6 +18,7 @@
|
|||||||
"""The utilities of the accounting application.
|
"""The utilities of the accounting application.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
import re
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db.models import Q, Sum, Case, When, F, Count, Max, Min
|
from django.db.models import Q, Sum, Case, When, F, Count, Max, Min
|
||||||
@ -27,6 +28,7 @@ from django.utils.translation import pgettext
|
|||||||
|
|
||||||
from accounting.models import Account, Transaction, Record
|
from accounting.models import Account, Transaction, Record
|
||||||
from mia_core.period import Period
|
from mia_core.period import Period
|
||||||
|
from mia_core.status import retrieve_status
|
||||||
from mia_core.utils import new_pk
|
from mia_core.utils import new_pk
|
||||||
|
|
||||||
|
|
||||||
@ -290,3 +292,62 @@ def find_order_holes(records):
|
|||||||
.filter(~Q(count=1))]
|
.filter(~Q(count=1))]
|
||||||
for record in records:
|
for record in records:
|
||||||
record.has_order_hole = record.transaction.date in holes
|
record.has_order_hole = record.transaction.date in holes
|
||||||
|
|
||||||
|
|
||||||
|
def fill_transaction_from_previous_form(request, transaction):
|
||||||
|
"""Fills the transaction from the previously-stored form.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
request (HttpRequest): The request.
|
||||||
|
transaction (Transaction): The transaction.
|
||||||
|
"""
|
||||||
|
status = retrieve_status(request)
|
||||||
|
if status is None:
|
||||||
|
return
|
||||||
|
if "form" not in status:
|
||||||
|
return
|
||||||
|
form = status["form"]
|
||||||
|
if "date" in form:
|
||||||
|
transaction.date = form["date"]
|
||||||
|
if "notes" in form:
|
||||||
|
transaction.notes = form["notes"]
|
||||||
|
# The records
|
||||||
|
max_debit_no = 0
|
||||||
|
max_credit_no = 0
|
||||||
|
for key in form.keys():
|
||||||
|
m = re.match("^debit-([1-9][0-9]*)-", key)
|
||||||
|
if m is not None:
|
||||||
|
no = int(m.group(1))
|
||||||
|
if max_debit_no < no:
|
||||||
|
max_debit_no = no
|
||||||
|
m = re.match("^credit-([1-9][0-9]*)-", key)
|
||||||
|
if m is not None:
|
||||||
|
no = int(m.group(1))
|
||||||
|
if max_credit_no < no:
|
||||||
|
max_credit_no = no
|
||||||
|
records = []
|
||||||
|
for i in range(max_debit_no):
|
||||||
|
no = i + 1
|
||||||
|
record = Record(ord=no, is_credit=False)
|
||||||
|
if F"debit-{no}-sn" in form:
|
||||||
|
record.pk = form[F"debit-{no}-sn"]
|
||||||
|
if F"debit-{no}-account" in form:
|
||||||
|
record.account = Account(pk=form[F"debit-{no}-account"])
|
||||||
|
if F"debit-{no}-summary" in form:
|
||||||
|
record.summary = form[F"debit-{no}-summary"]
|
||||||
|
if F"debit-{no}-amount" in form:
|
||||||
|
record.amount = form[F"debit-{no}-amount"]
|
||||||
|
records.append(record)
|
||||||
|
for i in range(max_credit_no):
|
||||||
|
no = i + 1
|
||||||
|
record = Record(ord=no, is_credit=True)
|
||||||
|
if F"credit-{no}-sn" in form:
|
||||||
|
record.pk = form[F"credit-{no}-sn"]
|
||||||
|
if F"credit-{no}-account" in form:
|
||||||
|
record.account = Account(pk=form[F"credit-{no}-account"])
|
||||||
|
if F"credit-{no}-summary" in form:
|
||||||
|
record.summary = form[F"credit-{no}-summary"]
|
||||||
|
if F"credit-{no}-amount" in form:
|
||||||
|
record.amount = form[F"credit-{no}-amount"]
|
||||||
|
records.append(record)
|
||||||
|
transaction.records = records
|
||||||
|
@ -33,7 +33,7 @@ from django.views.decorators.http import require_GET, require_POST
|
|||||||
from mia_core.status import success_redirect
|
from mia_core.status import success_redirect
|
||||||
from .models import Record, Transaction, Account, RecordSummary
|
from .models import Record, Transaction, Account, RecordSummary
|
||||||
from .utils import ReportUrl, get_cash_accounts, get_ledger_accounts, \
|
from .utils import ReportUrl, get_cash_accounts, get_ledger_accounts, \
|
||||||
find_imbalanced, find_order_holes
|
find_imbalanced, find_order_holes, fill_transaction_from_previous_form
|
||||||
from mia_core.digest_auth import digest_login_required
|
from mia_core.digest_auth import digest_login_required
|
||||||
from mia_core.period import Period
|
from mia_core.period import Period
|
||||||
from mia_core.utils import Pagination, get_multi_lingual_search, UrlBuilder
|
from mia_core.utils import Pagination, get_multi_lingual_search, UrlBuilder
|
||||||
@ -876,6 +876,7 @@ def transaction_edit(request, type, transaction=None):
|
|||||||
"""
|
"""
|
||||||
if transaction is None:
|
if transaction is None:
|
||||||
transaction = Transaction()
|
transaction = Transaction()
|
||||||
|
fill_transaction_from_previous_form(request, transaction)
|
||||||
if len(transaction.debit_records) == 0:
|
if len(transaction.debit_records) == 0:
|
||||||
transaction.records.append(Record(ord=1, is_credit=False))
|
transaction.records.append(Record(ord=1, is_credit=False))
|
||||||
if len(transaction.credit_records) == 0:
|
if len(transaction.credit_records) == 0:
|
||||||
|
Loading…
Reference in New Issue
Block a user