diff --git a/core/apps/finance/admin/__init__.py b/core/apps/finance/admin/__init__.py index ecdca82..2be883c 100644 --- a/core/apps/finance/admin/__init__.py +++ b/core/apps/finance/admin/__init__.py @@ -1,4 +1,6 @@ from .cash_transaction import * from .payment_type import * from .type_income import * -from .income import * \ No newline at end of file +from .income import * +from .expence_type import * + diff --git a/core/apps/finance/admin/expence_type.py b/core/apps/finance/admin/expence_type.py new file mode 100644 index 0000000..690a5db --- /dev/null +++ b/core/apps/finance/admin/expence_type.py @@ -0,0 +1,8 @@ +from django.contrib import admin + +from core.apps.finance.models import ExpenceType + + +@admin.register(ExpenceType) +class ExpenceTypeAdmin(admin.ModelAdmin): + list_display = ['id', 'name'] diff --git a/core/apps/finance/migrations/0009_expencetype.py b/core/apps/finance/migrations/0009_expencetype.py new file mode 100644 index 0000000..a4b6772 --- /dev/null +++ b/core/apps/finance/migrations/0009_expencetype.py @@ -0,0 +1,31 @@ +# Generated by Django 5.2.4 on 2025-09-08 17:40 + +import uuid +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0008_alter_income_audit_alter_income_counterparty_and_more'), + ] + + operations = [ + migrations.CreateModel( + name='ExpenceType', + fields=[ + ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True)), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('updated_at', models.DateTimeField(auto_now=True)), + ('name', models.CharField(max_length=200)), + ('category', models.CharField(choices=[('OTHERS', 'boshqalar'), ('FIXED_COST', 'doimiy xarajat')], max_length=20)), + ('activity', models.CharField(choices=[('FINANCIAL', 'moliyaviy'), ('CAPITAL', 'sarmoya')], max_length=20)), + ('comment', models.CharField(max_length=200)), + ('status', models.BooleanField(default=True)), + ], + options={ + 'verbose_name': 'xarajat turi', + 'verbose_name_plural': 'xarajat turlari', + }, + ), + ] diff --git a/core/apps/finance/models/__init__.py b/core/apps/finance/models/__init__.py index caa3f73..aab12db 100644 --- a/core/apps/finance/models/__init__.py +++ b/core/apps/finance/models/__init__.py @@ -1,4 +1,5 @@ from .cash_transaction import * from .payment_type import * from .type_income import * -from .income import * \ No newline at end of file +from .income import * +from .expence_type import * \ No newline at end of file diff --git a/core/apps/finance/models/expence_type.py b/core/apps/finance/models/expence_type.py new file mode 100644 index 0000000..de2742f --- /dev/null +++ b/core/apps/finance/models/expence_type.py @@ -0,0 +1,22 @@ +from django.db import models + +from core.apps.shared.models import BaseModel + + +class ExpenceType(BaseModel): + name = models.CharField(max_length=200) + category = models.CharField( + choices=[('OTHERS', 'boshqalar'), ('FIXED_COST', 'doimiy xarajat')], max_length=20 + ) + activity = models.CharField( + max_length=20, choices=[('FINANCIAL', 'moliyaviy'), ('CAPITAL', 'sarmoya')] + ) + comment = models.CharField(max_length=200) + status = models.BooleanField(default=True) + + def __str__(self): + return self.name + + class Meta: + verbose_name = 'xarajat turi' + verbose_name_plural = 'xarajat turlari' diff --git a/core/apps/finance/serializers/expence_type.py b/core/apps/finance/serializers/expence_type.py new file mode 100644 index 0000000..2db8b0b --- /dev/null +++ b/core/apps/finance/serializers/expence_type.py @@ -0,0 +1,11 @@ +from rest_framework import serializers + +from core.apps.finance.models import ExpenceType + + +class ExpenceTypeSerializer(serializers.ModelSerializer): + class Meta: + model = ExpenceType + fields = [ + 'id', 'name' + ] \ No newline at end of file diff --git a/core/apps/finance/urls.py b/core/apps/finance/urls.py index 2341885..2eff4fd 100644 --- a/core/apps/finance/urls.py +++ b/core/apps/finance/urls.py @@ -5,6 +5,7 @@ from core.apps.finance.views import cash_transaction_folder as folder_views from core.apps.finance.views import payment_type as pt_views from core.apps.finance.views import type_income as ti_views from core.apps.finance.views import income as income_views +from core.apps.finance.views import expence_type as ex_views urlpatterns = [ @@ -45,5 +46,13 @@ urlpatterns = [ path('list/', income_views.IncomeListApiView.as_view()), path('create/', income_views.IncomeCreateApiView.as_view()), ] - )) + )), + path('expence_type/', include( + [ + path('list/', ex_views.ExpenceTypeListApiView.as_view()), + path('create/', ex_views.ExpenceTypeCreateApiView.as_view()), + path('/update/', ex_views.ExpenceTypeUpdateApiView.as_view()), + path('