counterparty: counterparty akt api added

This commit is contained in:
behruz-dev
2025-11-13 16:28:00 +05:00
parent acd4bfd30d
commit d7b9264546
8 changed files with 133 additions and 42 deletions

View File

@@ -14,18 +14,17 @@ class PartyAdmin(admin.ModelAdmin):
list_display = [
"id",
"number",
"mediator",
"delivery_date",
"payment_date",
"is_deleted",
"party_amount__total_price",
"currency"
"currency",
'process',
'payment_percentage',
]
inlines = [PartyAmountInline]
search_fields = [
"number", "orders__counterparty__name"
]
autocomplete_fields = ['orders']
ordering = ['-number']
def get_queryset(self, request):
return super().get_queryset(request).select_related('party_amount', 'mediator').prefetch_related('orders')

View File

@@ -15,19 +15,18 @@ token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2JhY2tlbmQuYX
headers = {"Authorization": f"Bearer {token}"}
def get_data(page):
url = f"https://backend.app.uyqur.uz/main/supply/order-view?size=1000&page={page}"
response = requests.get(url, headers=headers)
# def get_data(page):
# url = f"https://backend.app.uyqur.uz/main/supply/order-view?size=1000&page={page}"
# response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.json()
print(response.json())
# if response.status_code == 200:
# return response.json()
# print(response.json())
class Command(BaseCommand):
def handle(self, *args, **options):
for page in range(1,6):
data = get_data(page)
for page in range(1,10479):
statuses = {
"open": "NEW",
"ordered": "PARTY_IS_MADE",
@@ -39,10 +38,10 @@ class Command(BaseCommand):
"partially_recieved": "PROCESS"
}
for item in data["data"]["data"]:
url = f"https://backend.app.uyqur.uz/main/supply/order-view?id={item['id']}"
res = requests.get(url, headers=headers)
data = res.json()["data"]
url = f"https://backend.app.uyqur.uz/main/supply/order-view?id={page}"
res = requests.get(url, headers=headers)
data = res.json()["data"]
if data:
user = None
if data.get("agent"):
user = User.objects.filter(full_name=data["agent"]["full_name"]).first()
@@ -120,7 +119,8 @@ class Command(BaseCommand):
"paid_amount": paid_amount,
"payment_amount": must_pay_amount,
"debt_amount": debt_amount,
"total_expense_amount": item['total_expense_amount'],
# "total_expense_amount": item['total_expense_amount'],
},
)
print(page)
self.stdout.write("Parties added")

View File

@@ -15,13 +15,6 @@ token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2JhY2tlbmQuYX
headers = {"Authorization": f"Bearer {token}"}
# def get_data(page):
# url = f"https://backend.app.uyqur.uz/main/supply/order-view?size=1000&page={page}"
# response = requests.get(url, headers=headers)
# if response.status_code == 200:
# return response.json()
class Command(BaseCommand):
def add_arguments(self, parser):

View File

@@ -1,8 +1,6 @@
import json
import requests
from django.core.management import BaseCommand
from core.apps.accounts.models import User
from core.apps.counterparty.models import Counterparty
from core.apps.orders.models import Order, Party, PartyAmount
@@ -12,25 +10,46 @@ from core.apps.projects.models import Project, ProjectFolder
from core.apps.wherehouse.models import WhereHouse
token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2JhY2tlbmQuYXBwLnV5cXVyLnV6L21haW4vYXV0aC9sb2dpbiIsImlhdCI6MTc2Mjk1MjUxNiwiZXhwIjoxNzYzMDM4OTE2LCJuYmYiOjE3NjI5NTI1MTYsImp0aSI6IkVlcW1lVVluMUR0VTNvUDciLCJzdWIiOiIxMDQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.64QPbq6CeJqXubai4nMfH9RlJIJ0YUPFfJ298ar4YGQ"
headers = {"Authorization": f"Bearer {token}"}
def get_data(page):
url = f"https://backend.app.uyqur.uz/main/supply/order-view?size=1000&page={page}"
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.json()
class Command(BaseCommand):
def handle(self, *args, **options):
for page in range(1,6):
data = get_data(page)
for data in data['data']['data']:
Party.objects.filter(number=data['id']).update(
payment_percentage=data["payment_percent"],
process=data["percent"],
)
self.stdout.write("Parties added")
for page in range(1, 100):
data = get_data(page)
for item in data['data']['data']:
try:
# Party ID orqali topish va yangilash
party = Party.objects.get(number=item["id"])
party.number = item["id"]
party.payment_percentage = item["payment_percent"]
party.process = item["percent"]
party.save()
self.stdout.write(
self.style.SUCCESS(
f'Party {item["id"]} updated successfully'
)
)
except Party.DoesNotExist:
self.stdout.write(
self.style.WARNING(
f'Party {item["id"]} not found'
)
)
except Exception as e:
self.stdout.write(
self.style.ERROR(
f'Error updating Party {item["id"]}: {str(e)}'
)
)
self.stdout.write(
self.style.SUCCESS('All parties processed')
)

View File

@@ -68,7 +68,6 @@ class Party(BaseModel):
percentage += order.completion_percentage
if percentage > 0 and count > 0:
self.process = percentage / count
# self.party_amount.save()
return super().save(*args, **kwargs)

View File

@@ -17,7 +17,7 @@ class OrderListApiView(generics.ListAPIView):
serializer_class = serializers.OrderListSerializer
queryset = Order.objects.select_related(
'product', 'unity', 'project', 'project_folder', 'wherehouse'
).filter(type='order')
).filter(type='order').order_by('-created_at')
permission_classes = [HasRolePermission]
pagination_class = CustomPageNumberPagination
filter_backends = [DjangoFilterBackend, filters.SearchFilter]