change a lot of code

This commit is contained in:
behruz-dev
2025-11-07 21:21:03 +05:00
parent a9df29200a
commit 8a298b76f1
7 changed files with 51 additions and 35 deletions

View File

@@ -15,6 +15,7 @@ class CounterpartyBalanceInline(admin.StackedInline):
class CounterpartyAdmin(admin.ModelAdmin): class CounterpartyAdmin(admin.ModelAdmin):
list_display = ['id', 'name', 'phone', 'type', 'inn'] list_display = ['id', 'name', 'phone', 'type', 'inn']
inlines = [CounterpartyBalanceInline] inlines = [CounterpartyBalanceInline]
search_fields = ['name']
def get_queryset(self, request): def get_queryset(self, request):
return super().get_queryset(request).select_related('balance') return super().get_queryset(request).select_related('balance')

View File

@@ -1,8 +1,9 @@
import json import json
from datetime import datetime
from django.core.management import BaseCommand from django.core.management import BaseCommand
from core.apps.counterparty.models import Counterparty from core.apps.counterparty.models import Counterparty, CounterpartyBalance
class Command(BaseCommand): class Command(BaseCommand):
@@ -16,21 +17,26 @@ class Command(BaseCommand):
data = json.load(f) data = json.load(f)
for item in data["data"]["data"]: for item in data["data"]["data"]:
Counterparty.objects.update_or_create( counterparty, created = Counterparty.objects.update_or_create(
name=item["name"], name=item["name"],
defaults={ defaults={
"phone": item["person"]["phone"], "phone": item["person"]["phone"],
"inn": item["person"]["tin"], "inn": item["person"]["tin"],
"balance_currency": (
item["balances"][0]["currency"]["symbol"].lower()
if item["balances"]
else "uzs"
),
"is_archived": item["is_archived"], "is_archived": item["is_archived"],
"balance": item["total_amount"],
"total_debit": item["debt_amount"],
"total_kredit": item["credit_amount"],
}, },
) )
if item.get("balances"):
balance = CounterpartyBalance.objects.create(
counterparty=counterparty,
balance_date=datetime.strptime(item['balances'][0]['start_date'], "%d.%m.%Y"),
kredit_uzs=item['credit_amount'],
debit_uzs=item['debt_amount'],
)
for b in item["balances"]:
if b["currency"]["symbol"].lower() == 'uzs':
balance.balance_uzs = b['amount']
elif item["balances"][0]["currency"]["symbol"].lower() == 'usd':
balance.balance_usd = b['amount']
balance.save()
self.stdout.write("Counterparties added") self.stdout.write("Counterparties added")

View File

@@ -1,11 +1,12 @@
import json, requests import json, requests
from datetime import datetime
from django.core.management import BaseCommand from django.core.management import BaseCommand
from core.apps.counterparty.models import CounterpartyFolder, Counterparty from core.apps.counterparty.models import CounterpartyFolder, Counterparty, CounterpartyBalance
headers = { headers = {
"Authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2JhY2tlbmQuYXBwLnV5cXVyLnV6L21haW4vYXV0aC9sb2dpbiIsImlhdCI6MTc2MjMzNjg2MSwiZXhwIjoxNzYyNDIzMjYxLCJuYmYiOjE3NjIzMzY4NjEsImp0aSI6Ino1SVpXRmlTVUJpMDA2eDciLCJzdWIiOiIxMDQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.yVOvrb-QjdYvCx6GJOW4T5y_N9-Lq2ThYFPu8_J0K3w" "Authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2JhY2tlbmQuYXBwLnV5cXVyLnV6L21haW4vYXV0aC9sb2dpbiIsImlhdCI6MTc2MjUxMDQyMywiZXhwIjoxNzYyNTk2ODIzLCJuYmYiOjE3NjI1MTA0MjMsImp0aSI6IlNPMmx5VjJ3Mllmb3BlSXEiLCJzdWIiOiIxMDQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.3DemwyRz2FMzMm-JRBOqGPSgu_m4s4ndWz56e_ROp8A"
} }
def get_counterparty(folder_id): def get_counterparty(folder_id):
@@ -16,24 +17,28 @@ def get_counterparty(folder_id):
return None return None
def create_counterparty(data, folder): def create_counterparty(item, folder):
Counterparty.objects.get_or_create( counterparty, created = Counterparty.objects.update_or_create(
name=data["name"], name=item["name"],
defaults={ defaults={
"phone": data["person"]["phone"], "phone": item["person"]["phone"],
"inn": data["person"]["tin"], "inn": item["person"]["tin"],
"balance_currency": ( "is_archived": item["is_archived"],
data["balances"][0]["currency"]["symbol"].lower()
if data["balances"]
else "uzs"
),
"is_archived": data["is_archived"],
"balance": data["total_amount"],
"total_debit": data["debt_amount"],
"total_kredit": data["credit_amount"],
"folder": folder
}, },
) )
if item.get("balances"):
balance = CounterpartyBalance.objects.create(
counterparty=counterparty,
balance_date=datetime.strptime(item['balances'][0]['start_date'], "%d.%m.%Y"),
kredit_uzs=item['credit_amount'],
debit_uzs=item['debt_amount'],
)
for b in item["balances"]:
if b["currency"]["symbol"].lower() == 'uzs':
balance.balance_uzs = b['amount']
elif item["balances"][0]["currency"]["symbol"].lower() == 'usd':
balance.balance_usd = b['amount']
balance.save()
class Command(BaseCommand): class Command(BaseCommand):

View File

@@ -85,8 +85,8 @@ class CounterpartyBalance(BaseModel):
super().save(*args, **kwargs) super().save(*args, **kwargs)
total_usd = self.total_balance_usd total_usd = Decimal(self.total_balance_usd)
total_uzs = self.total_balance_uzs total_uzs = Decimal(self.total_balance_uzs)
if total_usd < 0 or total_uzs < 0: if total_usd < 0 or total_uzs < 0:
self.counterparty.status = 'CREDITOR' self.counterparty.status = 'CREDITOR'
@@ -99,11 +99,15 @@ class CounterpartyBalance(BaseModel):
@property @property
def total_balance_usd(self): def total_balance_usd(self):
return (self.debit_usd or Decimal(0)) - (self.kredit_usd or Decimal(0)) debit = Decimal(self.debit_usd or 0)
kredit = Decimal(self.kredit_usd or 0)
return debit - kredit
@property @property
def total_balance_uzs(self): def total_balance_uzs(self):
return (self.debit_uzs or Decimal(0)) - (self.kredit_uzs or Decimal(0)) debit = Decimal(self.debit_uzs or 0)
kredit = Decimal(self.kredit_uzs or 0)
return debit - kredit
def __str__(self): def __str__(self):
return f"{self.counterparty.name} | USD: {self.total_balance_usd} | UZS: {self.total_balance_uzs}" return f"{self.counterparty.name} | USD: {self.total_balance_usd} | UZS: {self.total_balance_uzs}"

View File

@@ -19,7 +19,7 @@ from core.apps.orders.models import Party
headers = { headers = {
"Authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2JhY2tlbmQuYXBwLnV5cXVyLnV6L21haW4vYXV0aC9sb2dpbiIsImlhdCI6MTc2MjMzNjg2MSwiZXhwIjoxNzYyNDIzMjYxLCJuYmYiOjE3NjIzMzY4NjEsImp0aSI6Ino1SVpXRmlTVUJpMDA2eDciLCJzdWIiOiIxMDQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.yVOvrb-QjdYvCx6GJOW4T5y_N9-Lq2ThYFPu8_J0K3w" "Authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2JhY2tlbmQuYXBwLnV5cXVyLnV6L21haW4vYXV0aC9sb2dpbiIsImlhdCI6MTc2MjUxMDQyMywiZXhwIjoxNzYyNTk2ODIzLCJuYmYiOjE3NjI1MTA0MjMsImp0aSI6IlNPMmx5VjJ3Mllmb3BlSXEiLCJzdWIiOiIxMDQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.3DemwyRz2FMzMm-JRBOqGPSgu_m4s4ndWz56e_ROp8A"
} }

View File

@@ -19,7 +19,7 @@ from core.apps.orders.models import Party
headers = { headers = {
"Authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2JhY2tlbmQuYXBwLnV5cXVyLnV6L21haW4vYXV0aC9sb2dpbiIsImlhdCI6MTc2MjMzNjg2MSwiZXhwIjoxNzYyNDIzMjYxLCJuYmYiOjE3NjIzMzY4NjEsImp0aSI6Ino1SVpXRmlTVUJpMDA2eDciLCJzdWIiOiIxMDQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.yVOvrb-QjdYvCx6GJOW4T5y_N9-Lq2ThYFPu8_J0K3w" "Authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2JhY2tlbmQuYXBwLnV5cXVyLnV6L21haW4vYXV0aC9sb2dpbiIsImlhdCI6MTc2MjUxMDQyMywiZXhwIjoxNzYyNTk2ODIzLCJuYmYiOjE3NjI1MTA0MjMsImp0aSI6IlNPMmx5VjJ3Mllmb3BlSXEiLCJzdWIiOiIxMDQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.3DemwyRz2FMzMm-JRBOqGPSgu_m4s4ndWz56e_ROp8A"
} }

View File

@@ -11,7 +11,7 @@ from core.apps.products.models import Product, Unity
from core.apps.projects.models import Project, ProjectFolder from core.apps.projects.models import Project, ProjectFolder
from core.apps.wherehouse.models import WhereHouse from core.apps.wherehouse.models import WhereHouse
token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2JhY2tlbmQuYXBwLnV5cXVyLnV6L21haW4vYXV0aC9sb2dpbiIsImlhdCI6MTc2MjMzNjg2MSwiZXhwIjoxNzYyNDIzMjYxLCJuYmYiOjE3NjIzMzY4NjEsImp0aSI6Ino1SVpXRmlTVUJpMDA2eDciLCJzdWIiOiIxMDQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.yVOvrb-QjdYvCx6GJOW4T5y_N9-Lq2ThYFPu8_J0K3w" token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2JhY2tlbmQuYXBwLnV5cXVyLnV6L21haW4vYXV0aC9sb2dpbiIsImlhdCI6MTc2MjUxMDQyMywiZXhwIjoxNzYyNTk2ODIzLCJuYmYiOjE3NjI1MTA0MjMsImp0aSI6IlNPMmx5VjJ3Mllmb3BlSXEiLCJzdWIiOiIxMDQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.3DemwyRz2FMzMm-JRBOqGPSgu_m4s4ndWz56e_ROp8A"
headers = {"Authorization": f"Bearer {token}"} headers = {"Authorization": f"Bearer {token}"}