change a lot of code
This commit is contained in:
@@ -15,6 +15,7 @@ class CounterpartyBalanceInline(admin.StackedInline):
|
||||
class CounterpartyAdmin(admin.ModelAdmin):
|
||||
list_display = ['id', 'name', 'phone', 'type', 'inn']
|
||||
inlines = [CounterpartyBalanceInline]
|
||||
search_fields = ['name']
|
||||
|
||||
def get_queryset(self, request):
|
||||
return super().get_queryset(request).select_related('balance')
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import json
|
||||
from datetime import datetime
|
||||
|
||||
from django.core.management import BaseCommand
|
||||
|
||||
from core.apps.counterparty.models import Counterparty
|
||||
from core.apps.counterparty.models import Counterparty, CounterpartyBalance
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
@@ -16,21 +17,26 @@ class Command(BaseCommand):
|
||||
data = json.load(f)
|
||||
|
||||
for item in data["data"]["data"]:
|
||||
Counterparty.objects.update_or_create(
|
||||
counterparty, created = Counterparty.objects.update_or_create(
|
||||
name=item["name"],
|
||||
defaults={
|
||||
"phone": item["person"]["phone"],
|
||||
"inn": item["person"]["tin"],
|
||||
"balance_currency": (
|
||||
item["balances"][0]["currency"]["symbol"].lower()
|
||||
if item["balances"]
|
||||
else "uzs"
|
||||
),
|
||||
"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")
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
import json, requests
|
||||
from datetime import datetime
|
||||
|
||||
from django.core.management import BaseCommand
|
||||
|
||||
from core.apps.counterparty.models import CounterpartyFolder, Counterparty
|
||||
from core.apps.counterparty.models import CounterpartyFolder, Counterparty, CounterpartyBalance
|
||||
|
||||
headers = {
|
||||
"Authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2JhY2tlbmQuYXBwLnV5cXVyLnV6L21haW4vYXV0aC9sb2dpbiIsImlhdCI6MTc2MjMzNjg2MSwiZXhwIjoxNzYyNDIzMjYxLCJuYmYiOjE3NjIzMzY4NjEsImp0aSI6Ino1SVpXRmlTVUJpMDA2eDciLCJzdWIiOiIxMDQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.yVOvrb-QjdYvCx6GJOW4T5y_N9-Lq2ThYFPu8_J0K3w"
|
||||
"Authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2JhY2tlbmQuYXBwLnV5cXVyLnV6L21haW4vYXV0aC9sb2dpbiIsImlhdCI6MTc2MjUxMDQyMywiZXhwIjoxNzYyNTk2ODIzLCJuYmYiOjE3NjI1MTA0MjMsImp0aSI6IlNPMmx5VjJ3Mllmb3BlSXEiLCJzdWIiOiIxMDQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.3DemwyRz2FMzMm-JRBOqGPSgu_m4s4ndWz56e_ROp8A"
|
||||
}
|
||||
|
||||
def get_counterparty(folder_id):
|
||||
@@ -16,24 +17,28 @@ def get_counterparty(folder_id):
|
||||
return None
|
||||
|
||||
|
||||
def create_counterparty(data, folder):
|
||||
Counterparty.objects.get_or_create(
|
||||
name=data["name"],
|
||||
def create_counterparty(item, folder):
|
||||
counterparty, created = Counterparty.objects.update_or_create(
|
||||
name=item["name"],
|
||||
defaults={
|
||||
"phone": data["person"]["phone"],
|
||||
"inn": data["person"]["tin"],
|
||||
"balance_currency": (
|
||||
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
|
||||
"phone": item["person"]["phone"],
|
||||
"inn": item["person"]["tin"],
|
||||
"is_archived": item["is_archived"],
|
||||
},
|
||||
)
|
||||
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):
|
||||
|
||||
@@ -85,8 +85,8 @@ class CounterpartyBalance(BaseModel):
|
||||
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
total_usd = self.total_balance_usd
|
||||
total_uzs = self.total_balance_uzs
|
||||
total_usd = Decimal(self.total_balance_usd)
|
||||
total_uzs = Decimal(self.total_balance_uzs)
|
||||
|
||||
if total_usd < 0 or total_uzs < 0:
|
||||
self.counterparty.status = 'CREDITOR'
|
||||
@@ -99,11 +99,15 @@ class CounterpartyBalance(BaseModel):
|
||||
|
||||
@property
|
||||
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
|
||||
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):
|
||||
return f"{self.counterparty.name} | USD: {self.total_balance_usd} | UZS: {self.total_balance_uzs}"
|
||||
|
||||
@@ -19,7 +19,7 @@ from core.apps.orders.models import Party
|
||||
|
||||
|
||||
headers = {
|
||||
"Authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2JhY2tlbmQuYXBwLnV5cXVyLnV6L21haW4vYXV0aC9sb2dpbiIsImlhdCI6MTc2MjMzNjg2MSwiZXhwIjoxNzYyNDIzMjYxLCJuYmYiOjE3NjIzMzY4NjEsImp0aSI6Ino1SVpXRmlTVUJpMDA2eDciLCJzdWIiOiIxMDQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.yVOvrb-QjdYvCx6GJOW4T5y_N9-Lq2ThYFPu8_J0K3w"
|
||||
"Authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2JhY2tlbmQuYXBwLnV5cXVyLnV6L21haW4vYXV0aC9sb2dpbiIsImlhdCI6MTc2MjUxMDQyMywiZXhwIjoxNzYyNTk2ODIzLCJuYmYiOjE3NjI1MTA0MjMsImp0aSI6IlNPMmx5VjJ3Mllmb3BlSXEiLCJzdWIiOiIxMDQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.3DemwyRz2FMzMm-JRBOqGPSgu_m4s4ndWz56e_ROp8A"
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ from core.apps.orders.models import Party
|
||||
|
||||
|
||||
headers = {
|
||||
"Authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2JhY2tlbmQuYXBwLnV5cXVyLnV6L21haW4vYXV0aC9sb2dpbiIsImlhdCI6MTc2MjMzNjg2MSwiZXhwIjoxNzYyNDIzMjYxLCJuYmYiOjE3NjIzMzY4NjEsImp0aSI6Ino1SVpXRmlTVUJpMDA2eDciLCJzdWIiOiIxMDQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.yVOvrb-QjdYvCx6GJOW4T5y_N9-Lq2ThYFPu8_J0K3w"
|
||||
"Authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2JhY2tlbmQuYXBwLnV5cXVyLnV6L21haW4vYXV0aC9sb2dpbiIsImlhdCI6MTc2MjUxMDQyMywiZXhwIjoxNzYyNTk2ODIzLCJuYmYiOjE3NjI1MTA0MjMsImp0aSI6IlNPMmx5VjJ3Mllmb3BlSXEiLCJzdWIiOiIxMDQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.3DemwyRz2FMzMm-JRBOqGPSgu_m4s4ndWz56e_ROp8A"
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ from core.apps.products.models import Product, Unity
|
||||
from core.apps.projects.models import Project, ProjectFolder
|
||||
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}"}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user