48 lines
2.8 KiB
Python
48 lines
2.8 KiB
Python
from django.core.management.base import BaseCommand
|
|
from accounting.models import Account
|
|
|
|
class Command(BaseCommand):
|
|
help = 'Setup default Chart of Accounts'
|
|
|
|
def handle(self, *args, **options):
|
|
default_accounts = [
|
|
# ASSETS
|
|
{'code': '1000', 'name_en': 'Cash', 'name_ar': 'النقد', 'account_type': 'asset'},
|
|
{'code': '1010', 'name_en': 'Bank', 'name_ar': 'البنك', 'account_type': 'asset'},
|
|
{'code': '1200', 'name_en': 'Accounts Receivable', 'name_ar': 'الذمم المدينة', 'account_type': 'asset'},
|
|
{'code': '1300', 'name_en': 'Inventory', 'name_ar': 'المخزون', 'account_type': 'asset'},
|
|
|
|
# LIABILITIES
|
|
{'code': '2000', 'name_en': 'Accounts Payable', 'name_ar': 'الذمم الدائنة', 'account_type': 'liability'},
|
|
{'code': '2100', 'name_en': 'VAT Payable', 'name_ar': 'ضريبة القيمة المضافة المستحقة', 'account_type': 'liability'},
|
|
|
|
# EQUITY
|
|
{'code': '3000', 'name_en': 'Owner Equity', 'name_ar': 'رأس المال', 'account_type': 'equity'},
|
|
{'code': '3100', 'name_en': 'Retained Earnings', 'name_ar': 'الأرباح المحتجزة', 'account_type': 'equity'},
|
|
|
|
# INCOME
|
|
{'code': '4000', 'name_en': 'Sales Revenue', 'name_ar': 'إيرادات المبيعات', 'account_type': 'income'},
|
|
{'code': '4100', 'name_en': 'Other Income', 'name_ar': 'إيرادات أخرى', 'account_type': 'income'},
|
|
|
|
# EXPENSES
|
|
{'code': '5000', 'name_en': 'Cost of Goods Sold', 'name_ar': 'تكلفة البضائع المباعة', 'account_type': 'expense'},
|
|
{'code': '5100', 'name_en': 'Salaries Expense', 'name_ar': 'مصاريف الرواتب', 'account_type': 'expense'},
|
|
{'code': '5200', 'name_en': 'Rent Expense', 'name_ar': 'مصاريف الإيجار', 'account_type': 'expense'},
|
|
{'code': '5300', 'name_en': 'Utility Expense', 'name_ar': 'مصاريف المرافق', 'account_type': 'expense'},
|
|
{'code': '5400', 'name_en': 'General Expense', 'name_ar': 'مصاريف عامة', 'account_type': 'expense'},
|
|
]
|
|
|
|
for acc_data in default_accounts:
|
|
account, created = Account.objects.get_or_create(
|
|
code=acc_data['code'],
|
|
defaults={
|
|
'name_en': acc_data['name_en'],
|
|
'name_ar': acc_data['name_ar'],
|
|
'account_type': acc_data['account_type']
|
|
}
|
|
)
|
|
if created:
|
|
self.stdout.write(self.style.SUCCESS(f'Created account: {account.name_en}'))
|
|
else:
|
|
self.stdout.write(f'Account already exists: {account.name_en}')
|