fix
This commit is contained in:
@@ -7,6 +7,7 @@ from core.apps.orders.models import Order
|
|||||||
class OrderAdmin(admin.ModelAdmin):
|
class OrderAdmin(admin.ModelAdmin):
|
||||||
list_display = ['id', 'product', 'wherehouse', 'currency', 'counterparty']
|
list_display = ['id', 'product', 'wherehouse', 'currency', 'counterparty']
|
||||||
list_filter = ['counterparty']
|
list_filter = ['counterparty']
|
||||||
|
search_fields = ['parties__number']
|
||||||
|
|
||||||
# # Statuslar: {'ORDERED', 'PARTIALLY_RECIEVED', 'pending', "open", "buying", "rejected", "recieved", "passive"}
|
# # Statuslar: {'ORDERED', 'PARTIALLY_RECIEVED', 'pending', "open", "buying", "rejected", "recieved", "passive"}
|
||||||
# open -> yangi == NEW
|
# open -> yangi == NEW
|
||||||
|
|||||||
@@ -26,6 +26,9 @@ class PartyAdmin(admin.ModelAdmin):
|
|||||||
"number", "orders__counterparty__name"
|
"number", "orders__counterparty__name"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
def get_queryset(self, request):
|
||||||
|
return super().get_queryset(request).select_related('party_amount')
|
||||||
|
|
||||||
|
|
||||||
@admin.register(PartyAmount)
|
@admin.register(PartyAmount)
|
||||||
class PartyAmountAdmin(admin.ModelAdmin):
|
class PartyAmountAdmin(admin.ModelAdmin):
|
||||||
|
|||||||
@@ -25,104 +25,103 @@ headers = {"Authorization": f"Bearer {token}"}
|
|||||||
|
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
def add_arguments(self, parser):
|
def add_arguments(self, parser):
|
||||||
parser.add_argument("ids", type=list)
|
parser.add_argument("ids", type=int, nargs="+")
|
||||||
|
|
||||||
def handle(self, *args, **options):
|
def handle(self, *args, **options):
|
||||||
for page in range(1,6):
|
ids = options['ids']
|
||||||
data = options['ids']
|
statuses = {
|
||||||
statuses = {
|
"open": "NEW",
|
||||||
"open": "NEW",
|
"ordered": "PARTY_IS_MADE",
|
||||||
"ordered": "PARTY_IS_MADE",
|
"pending": "EXPECTED",
|
||||||
"pending": "EXPECTED",
|
"passive": "DRAFT",
|
||||||
"passive": "DRAFT",
|
"recieved": "RECIEVED",
|
||||||
"recieved": "RECIEVED",
|
"rejected": "CANCELLED",
|
||||||
"rejected": "CANCELLED",
|
"buying": "PURCHASED",
|
||||||
"buying": "PURCHASED",
|
"partially_recieved": "PROCESS"
|
||||||
"partially_recieved": "PROCESS"
|
}
|
||||||
}
|
|
||||||
|
|
||||||
for id in data:
|
for id in ids:
|
||||||
url = f"https://backend.app.uyqur.uz/main/supply/order-view?id={id}"
|
url = f"https://backend.app.uyqur.uz/main/supply/order-view?id={id}"
|
||||||
res = requests.get(url, headers=headers)
|
res = requests.get(url, headers=headers)
|
||||||
data = res.json()["data"]
|
data = res.json()['data']
|
||||||
user = None
|
user = None
|
||||||
if data.get("agent"):
|
if data.get("agent"):
|
||||||
user = User.objects.filter(full_name=data["agent"]["full_name"]).first()
|
user = User.objects.filter(full_name=data["agent"]["full_name"]).first()
|
||||||
if not user:
|
if not user:
|
||||||
|
continue
|
||||||
|
|
||||||
|
party, created = Party.objects.update_or_create(
|
||||||
|
number=data["id"],
|
||||||
|
defaults={
|
||||||
|
"mediator": user,
|
||||||
|
"delivery_date": parse_date(data["delivery_date"]),
|
||||||
|
"closed_date": parse_date(data["recieved_date"]),
|
||||||
|
"order_date": parse_date(data["ordered_date"]),
|
||||||
|
"payment_date": (
|
||||||
|
parse_date(data["payment_date"])
|
||||||
|
if parse_date(data["payment_date"])
|
||||||
|
else parse_date(data["ordered_date"])
|
||||||
|
),
|
||||||
|
"status": statuses.get(data["status"].lower()),
|
||||||
|
"payment_percentage": data["payment_percent"],
|
||||||
|
"process": data["percent"],
|
||||||
|
},
|
||||||
|
)
|
||||||
|
orders = []
|
||||||
|
total_price = 0
|
||||||
|
paid_amount = 0
|
||||||
|
calculated_amount = 0
|
||||||
|
must_pay_amount = 0
|
||||||
|
debt_amount = 0
|
||||||
|
for i in data["warehouse_products"]:
|
||||||
|
product = Product.objects.filter(
|
||||||
|
name__icontains=i["product"]["name"]["uz"]
|
||||||
|
).first()
|
||||||
|
if not product:
|
||||||
continue
|
continue
|
||||||
|
unit, created = Unity.objects.get_or_create(value=i["unit"]["name"]["uz"])
|
||||||
party, created = Party.objects.update_or_create(
|
counterparty = Counterparty.objects.filter(
|
||||||
number=data["id"],
|
name=i["company_person"]["name"]
|
||||||
defaults={
|
).first()
|
||||||
"mediator": user,
|
wherehouse = None
|
||||||
"delivery_date": parse_date(data["delivery_date"]),
|
if i.get("warehouse"):
|
||||||
"closed_date": parse_date(data["recieved_date"]),
|
wherehouse = WhereHouse.objects.filter(
|
||||||
"order_date": parse_date(data["ordered_date"]),
|
name=i.get("warehouse").get("name")
|
||||||
"payment_date": (
|
|
||||||
parse_date(data["payment_date"])
|
|
||||||
if parse_date(data["payment_date"])
|
|
||||||
else parse_date(data["ordered_date"])
|
|
||||||
),
|
|
||||||
"status": statuses.get(data["status"].lower()),
|
|
||||||
"payment_percentage": data["payment_percent"],
|
|
||||||
"process": data["percent"],
|
|
||||||
},
|
|
||||||
)
|
|
||||||
orders = []
|
|
||||||
total_price = 0
|
|
||||||
paid_amount = 0
|
|
||||||
calculated_amount = 0
|
|
||||||
must_pay_amount = 0
|
|
||||||
debt_amount = 0
|
|
||||||
for i in data["warehouse_products"]:
|
|
||||||
product = Product.objects.filter(
|
|
||||||
name__icontains=i["product"]["name"]["uz"]
|
|
||||||
).first()
|
).first()
|
||||||
if not product:
|
project_folder = None
|
||||||
continue
|
if i.get("project"):
|
||||||
unit, created = Unity.objects.get_or_create(value=i["unit"]["name"]["uz"])
|
project_folder = ProjectFolder.objects.filter(
|
||||||
counterparty = Counterparty.objects.filter(
|
name=i["project"]["name"]
|
||||||
name=i["company_person"]["name"]
|
|
||||||
).first()
|
).first()
|
||||||
wherehouse = None
|
|
||||||
if i.get("warehouse"):
|
|
||||||
wherehouse = WhereHouse.objects.filter(
|
|
||||||
name=i.get("warehouse").get("name")
|
|
||||||
).first()
|
|
||||||
project_folder = None
|
|
||||||
if i.get("project"):
|
|
||||||
project_folder = ProjectFolder.objects.filter(
|
|
||||||
name=i["project"]["name"]
|
|
||||||
).first()
|
|
||||||
|
|
||||||
order = Order.objects.create(
|
order = Order.objects.create(
|
||||||
product=product,
|
product=product,
|
||||||
amount=i["amount"],
|
amount=i["amount"],
|
||||||
total_price=i["total_amount"],
|
total_price=i["total_amount"],
|
||||||
quantity=i["quantity"],
|
quantity=i["quantity"],
|
||||||
unity=unit,
|
unity=unit,
|
||||||
currency=i["currency"]["symbol"].lower(),
|
currency=i["currency"]["symbol"].lower(),
|
||||||
project_folder=project_folder,
|
project_folder=project_folder,
|
||||||
wherehouse=wherehouse,
|
wherehouse=wherehouse,
|
||||||
counterparty=counterparty,
|
counterparty=counterparty,
|
||||||
type='party',
|
type='party',
|
||||||
)
|
|
||||||
total_price += i["total_amount"]
|
|
||||||
paid_amount += i["paid_amount"]
|
|
||||||
calculated_amount += i["calculated_amount"]
|
|
||||||
must_pay_amount += i["must_pay_amount"]
|
|
||||||
debt_amount += i['debt_amount']
|
|
||||||
orders.append(order)
|
|
||||||
party.orders.set(orders)
|
|
||||||
PartyAmount.objects.get_or_create(
|
|
||||||
party=party,
|
|
||||||
defaults={
|
|
||||||
"total_price": total_price,
|
|
||||||
"calculated_amount": calculated_amount,
|
|
||||||
"paid_amount": paid_amount,
|
|
||||||
"payment_amount": must_pay_amount,
|
|
||||||
"debt_amount": debt_amount,
|
|
||||||
# "total_expense_amount": item['total_expense_amount'],
|
|
||||||
},
|
|
||||||
)
|
)
|
||||||
|
total_price += i["total_amount"]
|
||||||
|
paid_amount += i["paid_amount"]
|
||||||
|
calculated_amount += i["calculated_amount"]
|
||||||
|
must_pay_amount += i["must_pay_amount"]
|
||||||
|
debt_amount += i['debt_amount']
|
||||||
|
orders.append(order)
|
||||||
|
party.orders.set(orders)
|
||||||
|
PartyAmount.objects.get_or_create(
|
||||||
|
party=party,
|
||||||
|
defaults={
|
||||||
|
"total_price": total_price,
|
||||||
|
"calculated_amount": calculated_amount,
|
||||||
|
"paid_amount": paid_amount,
|
||||||
|
"payment_amount": must_pay_amount,
|
||||||
|
"debt_amount": debt_amount,
|
||||||
|
# "total_expense_amount": item['total_expense_amount'],
|
||||||
|
},
|
||||||
|
)
|
||||||
self.stdout.write("Parties added")
|
self.stdout.write("Parties added")
|
||||||
@@ -76,7 +76,8 @@ class Party(BaseModel):
|
|||||||
for order in self.orders.all():
|
for order in self.orders.all():
|
||||||
count += 1
|
count += 1
|
||||||
percentage += order.completion_percentage
|
percentage += order.completion_percentage
|
||||||
self.process = percentage / count
|
if percentage > 0 and count > 0:
|
||||||
|
self.process = percentage / count
|
||||||
|
|
||||||
return super().save(*args, **kwargs)
|
return super().save(*args, **kwargs)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user