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}')