From 998880fd462ba4d23d349062248f1c13802d4d9d Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Mon, 8 Sep 2025 18:22:25 +0500 Subject: [PATCH] fix: fix url bug --- core/apps/finance/admin/__init__.py | 2 +- core/apps/finance/admin/expence.py | 9 +++++ core/apps/finance/migrations/0010_expence.py | 41 ++++++++++++++++++++ core/apps/finance/models/__init__.py | 3 +- core/apps/finance/models/expence.py | 39 +++++++++++++++++++ core/apps/finance/urls.py | 2 +- 6 files changed, 93 insertions(+), 3 deletions(-) create mode 100644 core/apps/finance/admin/expence.py create mode 100644 core/apps/finance/migrations/0010_expence.py create mode 100644 core/apps/finance/models/expence.py diff --git a/core/apps/finance/admin/__init__.py b/core/apps/finance/admin/__init__.py index 2be883c..13ad81b 100644 --- a/core/apps/finance/admin/__init__.py +++ b/core/apps/finance/admin/__init__.py @@ -3,4 +3,4 @@ from .payment_type import * from .type_income import * from .income import * from .expence_type import * - +from .expence import * \ No newline at end of file diff --git a/core/apps/finance/admin/expence.py b/core/apps/finance/admin/expence.py new file mode 100644 index 0000000..c57127d --- /dev/null +++ b/core/apps/finance/admin/expence.py @@ -0,0 +1,9 @@ +from django.contrib import admin + +from core.apps.finance.models import Expence + + +@admin.register(Expence) +class ExpenceAdmin(admin.ModelAdmin): + list_display = ['id', 'price', 'cash_transaction'] + \ No newline at end of file diff --git a/core/apps/finance/migrations/0010_expence.py b/core/apps/finance/migrations/0010_expence.py new file mode 100644 index 0000000..5eef104 --- /dev/null +++ b/core/apps/finance/migrations/0010_expence.py @@ -0,0 +1,41 @@ +# Generated by Django 5.2.4 on 2025-09-08 18:20 + +import django.db.models.deletion +import uuid +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('counterparty', '0004_counterparty_status'), + ('finance', '0009_expencetype'), + ('projects', '0016_estimatework_employee_estimatework_end_date_and_more'), + ] + + operations = [ + migrations.CreateModel( + name='Expence', + 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)), + ('price', models.PositiveBigIntegerField()), + ('exchange_rate', models.PositiveBigIntegerField(default=0)), + ('currency', models.CharField(choices=[('usd', 'usd'), ('uzs', 'uzs')], max_length=3)), + ('date', models.DateField(blank=True, null=True)), + ('comment', models.TextField(blank=True, null=True)), + ('audit', models.CharField(blank=True, max_length=200, null=True)), + ('cash_transaction', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='expences', to='finance.cashtransaction')), + ('counterparty', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='expences', to='counterparty.counterparty')), + ('expence_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='expences', to='finance.expencetype')), + ('payment_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='expences', to='finance.paymenttype')), + ('project', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='expences', to='projects.project')), + ('project_folder', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='expences', to='projects.projectfolder')), + ], + options={ + 'verbose_name': 'chiqim', + 'verbose_name_plural': 'chiqimlar', + }, + ), + ] diff --git a/core/apps/finance/models/__init__.py b/core/apps/finance/models/__init__.py index aab12db..e57b1c1 100644 --- a/core/apps/finance/models/__init__.py +++ b/core/apps/finance/models/__init__.py @@ -2,4 +2,5 @@ from .cash_transaction import * from .payment_type import * from .type_income import * from .income import * -from .expence_type import * \ No newline at end of file +from .expence_type import * +from .expence import * \ No newline at end of file diff --git a/core/apps/finance/models/expence.py b/core/apps/finance/models/expence.py new file mode 100644 index 0000000..52ac9c2 --- /dev/null +++ b/core/apps/finance/models/expence.py @@ -0,0 +1,39 @@ +from django.db import models + +from core.apps.shared.models import BaseModel +from core.apps.finance.models import CashTransaction, PaymentType, ExpenceType +from core.apps.counterparty.models import Counterparty + + +class Expence(BaseModel): + cash_transaction = models.ForeignKey(CashTransaction, on_delete=models.CASCADE, related_name='expences') + payment_type = models.ForeignKey(PaymentType, on_delete=models.CASCADE, related_name='expences') + project_folder = models.ForeignKey( + 'projects.ProjectFolder', on_delete=models.CASCADE, related_name='expences' + ) + project = models.ForeignKey( + 'projects.Project', on_delete=models.SET_NULL, null=True, related_name='expences', blank=True + ) + expence_type = models.ForeignKey( + ExpenceType, on_delete=models.SET_NULL, null=True, blank=True, related_name='expences' + ) + counterparty = models.ForeignKey( + Counterparty, on_delete=models.SET_NULL, null=True, blank=True, related_name='expences' + ) + + price = models.PositiveBigIntegerField() + exchange_rate = models.PositiveBigIntegerField(default=0) + currency = models.CharField( + max_length=3, choices=[('usd','usd'), ('uzs', 'uzs')] + ) + date = models.DateField(null=True, blank=True) + comment = models.TextField(null=True, blank=True) + audit = models.CharField(max_length=200, null=True, blank=True) + + def __str__(self): + return f'{self.cash_transaction} kassa uchun chiqim {self.price}' + + class Meta: + verbose_name = 'chiqim' + verbose_name_plural = 'chiqimlar' + diff --git a/core/apps/finance/urls.py b/core/apps/finance/urls.py index 2eff4fd..5501783 100644 --- a/core/apps/finance/urls.py +++ b/core/apps/finance/urls.py @@ -52,7 +52,7 @@ urlpatterns = [ path('list/', ex_views.ExpenceTypeListApiView.as_view()), path('create/', ex_views.ExpenceTypeCreateApiView.as_view()), path('/update/', ex_views.ExpenceTypeUpdateApiView.as_view()), - path('/delete/', ex_views.ExpenceTypeDeleteApiView.as_view()), ] )), ] \ No newline at end of file