Moved the Polulator from accounting.populate to accounting.utils in the accounting application.
This commit is contained in:
parent
a089e2c235
commit
9602ba56c7
@ -23,7 +23,7 @@ import random
|
|||||||
from django.core.management import BaseCommand, CommandParser
|
from django.core.management import BaseCommand, CommandParser
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
|
||||||
from accounting.populate import Populator
|
from accounting.utils import Populator
|
||||||
from mia_core.models import User
|
from mia_core.models import User
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,107 +0,0 @@
|
|||||||
from django.utils import timezone
|
|
||||||
|
|
||||||
from accounting.models import Transaction, Record, Account
|
|
||||||
from mia_core.models import User
|
|
||||||
from mia_core.utils import new_sn
|
|
||||||
|
|
||||||
|
|
||||||
class Populator:
|
|
||||||
"""The helper to populate the accounting data.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
user (User): The user in action.
|
|
||||||
|
|
||||||
Attributes:
|
|
||||||
user (User): The user in action.
|
|
||||||
"""
|
|
||||||
user = None
|
|
||||||
|
|
||||||
def __init__(self, user):
|
|
||||||
self.user = user
|
|
||||||
|
|
||||||
def add_accounts(self, accounts):
|
|
||||||
"""Adds accounts.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
accounts (tuple[tuple[any]]): Tuples of
|
|
||||||
(code, Traditional Chinese, English, Simplified Chinese)
|
|
||||||
of the accounts.
|
|
||||||
"""
|
|
||||||
for data in accounts:
|
|
||||||
code = data[0]
|
|
||||||
if isinstance(code, int):
|
|
||||||
code = str(code)
|
|
||||||
parent = None if len(code) == 1\
|
|
||||||
else Account.objects.get(code=code[:-1])
|
|
||||||
Account(sn=new_sn(Account), parent=parent, code=code,
|
|
||||||
title_zh_hant=data[1], title_en=data[2],
|
|
||||||
title_zh_hans=data[3],
|
|
||||||
created_by=self.user, updated_by=self.user).save()
|
|
||||||
|
|
||||||
def add_transfer_transaction(self, date, debit, credit):
|
|
||||||
"""Adds a transfer transaction.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
date (datetime.date|int): The date, or the number of days from
|
|
||||||
today.
|
|
||||||
debit (tuple[tuple[any]]): Tuples of (account, summary, amount)
|
|
||||||
of the debit records.
|
|
||||||
credit (tuple[tuple[any]]): Tuples of (account, summary, amount)
|
|
||||||
of the credit records.
|
|
||||||
"""
|
|
||||||
if isinstance(date, int):
|
|
||||||
date = timezone.localdate() + timezone.timedelta(days=date)
|
|
||||||
order = Transaction.objects.filter(date=date).count() + 1
|
|
||||||
transaction = Transaction(sn=new_sn(Transaction), date=date, ord=order,
|
|
||||||
created_by=self.user, updated_by=self.user)
|
|
||||||
transaction.save()
|
|
||||||
order = 1
|
|
||||||
for data in debit:
|
|
||||||
account = data[0]
|
|
||||||
if isinstance(account, str):
|
|
||||||
account = Account.objects.get(code=account)
|
|
||||||
elif isinstance(account, int):
|
|
||||||
account = Account.objects.get(code=str(account))
|
|
||||||
transaction.record_set.create(sn=new_sn(Record), is_credit=False,
|
|
||||||
ord=order, account=account,
|
|
||||||
summary=data[1], amount=data[2],
|
|
||||||
created_by=self.user,
|
|
||||||
updated_by=self.user)
|
|
||||||
order = order + 1
|
|
||||||
order = 1
|
|
||||||
for data in credit:
|
|
||||||
account = data[0]
|
|
||||||
if isinstance(account, str):
|
|
||||||
account = Account.objects.get(code=account)
|
|
||||||
elif isinstance(account, int):
|
|
||||||
account = Account.objects.get(code=str(account))
|
|
||||||
transaction.record_set.create(sn=new_sn(Record), is_credit=True,
|
|
||||||
ord=order, account=account,
|
|
||||||
summary=data[1], amount=data[2],
|
|
||||||
created_by=self.user,
|
|
||||||
updated_by=self.user)
|
|
||||||
order = order + 1
|
|
||||||
|
|
||||||
def add_income_transaction(self, date, credit):
|
|
||||||
"""Adds a cash income transaction.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
date (datetime.date|int): The date, or the number of days from
|
|
||||||
today.
|
|
||||||
credit (tuple[tuple[any]]): Tuples of (account, summary, amount) of
|
|
||||||
the credit records.
|
|
||||||
"""
|
|
||||||
amount = sum([x[2] for x in credit])
|
|
||||||
self.add_transfer_transaction(date, (("1111", None, amount),), credit)
|
|
||||||
|
|
||||||
def add_expense_transaction(self, date, debit):
|
|
||||||
"""Adds a cash income transaction.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
date (datetime.date|int): The date, or the number of days from
|
|
||||||
today.
|
|
||||||
debit (tuple[tuple[any]]): Tuples of (account, summary, amount) of
|
|
||||||
the debit records.
|
|
||||||
"""
|
|
||||||
amount = sum([x[2] for x in debit])
|
|
||||||
self.add_transfer_transaction(date, debit, (("1111", None, amount),))
|
|
@ -21,9 +21,11 @@
|
|||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
from django.utils import timezone
|
||||||
|
|
||||||
from accounting.models import Account
|
from accounting.models import Account, Transaction, Record
|
||||||
from mia_core.period import Period
|
from mia_core.period import Period
|
||||||
|
from mia_core.utils import new_sn
|
||||||
|
|
||||||
|
|
||||||
class ReportUrl:
|
class ReportUrl:
|
||||||
@ -100,3 +102,105 @@ class ReportUrl:
|
|||||||
@property
|
@property
|
||||||
def balance_sheet(self):
|
def balance_sheet(self):
|
||||||
return reverse("accounting:balance-sheet", args=(self._period,))
|
return reverse("accounting:balance-sheet", args=(self._period,))
|
||||||
|
|
||||||
|
|
||||||
|
class Populator:
|
||||||
|
"""The helper to populate the accounting data.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
user (User): The user in action.
|
||||||
|
|
||||||
|
Attributes:
|
||||||
|
user (User): The user in action.
|
||||||
|
"""
|
||||||
|
user = None
|
||||||
|
|
||||||
|
def __init__(self, user):
|
||||||
|
self.user = user
|
||||||
|
|
||||||
|
def add_accounts(self, accounts):
|
||||||
|
"""Adds accounts.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
accounts (tuple[tuple[any]]): Tuples of
|
||||||
|
(code, Traditional Chinese, English, Simplified Chinese)
|
||||||
|
of the accounts.
|
||||||
|
"""
|
||||||
|
for data in accounts:
|
||||||
|
code = data[0]
|
||||||
|
if isinstance(code, int):
|
||||||
|
code = str(code)
|
||||||
|
parent = None if len(code) == 1\
|
||||||
|
else Account.objects.get(code=code[:-1])
|
||||||
|
Account(sn=new_sn(Account), parent=parent, code=code,
|
||||||
|
title_zh_hant=data[1], title_en=data[2],
|
||||||
|
title_zh_hans=data[3],
|
||||||
|
created_by=self.user, updated_by=self.user).save()
|
||||||
|
|
||||||
|
def add_transfer_transaction(self, date, debit, credit):
|
||||||
|
"""Adds a transfer transaction.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
date (datetime.date|int): The date, or the number of days from
|
||||||
|
today.
|
||||||
|
debit (tuple[tuple[any]]): Tuples of (account, summary, amount)
|
||||||
|
of the debit records.
|
||||||
|
credit (tuple[tuple[any]]): Tuples of (account, summary, amount)
|
||||||
|
of the credit records.
|
||||||
|
"""
|
||||||
|
if isinstance(date, int):
|
||||||
|
date = timezone.localdate() + timezone.timedelta(days=date)
|
||||||
|
order = Transaction.objects.filter(date=date).count() + 1
|
||||||
|
transaction = Transaction(sn=new_sn(Transaction), date=date, ord=order,
|
||||||
|
created_by=self.user, updated_by=self.user)
|
||||||
|
transaction.save()
|
||||||
|
order = 1
|
||||||
|
for data in debit:
|
||||||
|
account = data[0]
|
||||||
|
if isinstance(account, str):
|
||||||
|
account = Account.objects.get(code=account)
|
||||||
|
elif isinstance(account, int):
|
||||||
|
account = Account.objects.get(code=str(account))
|
||||||
|
transaction.record_set.create(sn=new_sn(Record), is_credit=False,
|
||||||
|
ord=order, account=account,
|
||||||
|
summary=data[1], amount=data[2],
|
||||||
|
created_by=self.user,
|
||||||
|
updated_by=self.user)
|
||||||
|
order = order + 1
|
||||||
|
order = 1
|
||||||
|
for data in credit:
|
||||||
|
account = data[0]
|
||||||
|
if isinstance(account, str):
|
||||||
|
account = Account.objects.get(code=account)
|
||||||
|
elif isinstance(account, int):
|
||||||
|
account = Account.objects.get(code=str(account))
|
||||||
|
transaction.record_set.create(sn=new_sn(Record), is_credit=True,
|
||||||
|
ord=order, account=account,
|
||||||
|
summary=data[1], amount=data[2],
|
||||||
|
created_by=self.user,
|
||||||
|
updated_by=self.user)
|
||||||
|
order = order + 1
|
||||||
|
|
||||||
|
def add_income_transaction(self, date, credit):
|
||||||
|
"""Adds a cash income transaction.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
date (datetime.date|int): The date, or the number of days from
|
||||||
|
today.
|
||||||
|
credit (tuple[tuple[any]]): Tuples of (account, summary, amount) of
|
||||||
|
the credit records.
|
||||||
|
"""
|
||||||
|
amount = sum([x[2] for x in credit])
|
||||||
|
self.add_transfer_transaction(date, (("1111", None, amount),), credit)
|
||||||
|
|
||||||
|
def add_expense_transaction(self, date, debit):
|
||||||
|
"""Adds a cash income transaction.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
date (datetime.date|int): The date, or the number of days from
|
||||||
|
today.
|
||||||
|
debit (tuple[tuple[any]]): Tuples of (account, summary, amount) of
|
||||||
|
the debit records.
|
||||||
|
"""
|
||||||
|
amount = sum([x[2] for x in debit])
|
||||||
|
self.add_transfer_transaction(date, debit, (("1111", None, amount),))
|
||||||
|
Loading…
Reference in New Issue
Block a user