change a lot of code
This commit is contained in:
@@ -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')
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -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}"
|
||||||
|
|||||||
@@ -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"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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}"}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user