fix import party command
This commit is contained in:
@@ -11,109 +11,112 @@ 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.eyJpc3MiOiJodHRwczovL2JhY2tlbmQuYXBwLnV5cXVyLnV6L21haW4vYXV0aC9sb2dpbiIsImlhdCI6MTc2MTgzMzg2OSwiZXhwIjoxNzYxOTIwMjY5LCJuYmYiOjE3NjE4MzM4NjksImp0aSI6IjZSQWE1RzlyT0pGbXF1T2kiLCJzdWIiOiIxMDQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.ACT7oxl-A2eit_bzxeal2jF_xLa0klFObNBpp1HuheE"
|
||||
token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2JhY2tlbmQuYXBwLnV5cXVyLnV6L21haW4vYXV0aC9sb2dpbiIsImlhdCI6MTc2MjE1NzIzNywiZXhwIjoxNzYyMjQzNjM3LCJuYmYiOjE3NjIxNTcyMzcsImp0aSI6Ijh3WXVpbHBIUU43eVdhdE4iLCJzdWIiOiIxMDQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.uAebDLZUDKbImw8M9ZLEYApc2Li19a1XD6RJRcMvchY"
|
||||
|
||||
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()
|
||||
print(response.json())
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
def add_arguments(self, parser):
|
||||
parser.add_argument("file_path", type=str)
|
||||
|
||||
def handle(self, *args, **options):
|
||||
file_path = options["file_path"]
|
||||
headers = {"Authorization": f"Bearer {token}"}
|
||||
for page in range(1,6):
|
||||
data = get_data(page)
|
||||
statuses = {
|
||||
"open": "NEW",
|
||||
"ordered": "PARTY_IS_MADE",
|
||||
"pending": "EXPECTED",
|
||||
"passive": "DRAFT",
|
||||
"recieved": "RECIEVED",
|
||||
"rejected": "CANCELLED",
|
||||
"buying": "PURCHASED",
|
||||
"partially_recieved": "PROCESS"
|
||||
}
|
||||
|
||||
with open(file_path, "r") as f:
|
||||
data = json.load(f)
|
||||
|
||||
statuses = {
|
||||
"open": "NEW",
|
||||
"ordered": "PARTY_IS_MADE",
|
||||
"pending": "EXPECTED",
|
||||
"passive": "DRAFT",
|
||||
"recieved": "RECIEVED",
|
||||
"rejected": "CANCELLED",
|
||||
"buying": "PURCHASED",
|
||||
"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"]
|
||||
user = None
|
||||
if data.get("agent"):
|
||||
user = User.objects.filter(full_name=data["agent"]["full_name"]).first()
|
||||
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
|
||||
for i in data["warehouse_products"]:
|
||||
product = Product.objects.filter(
|
||||
name__icontains=i["product"]["name"]["uz"]
|
||||
).first()
|
||||
if not product:
|
||||
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"]
|
||||
user = None
|
||||
if data.get("agent"):
|
||||
user = User.objects.filter(full_name=data["agent"]["full_name"]).first()
|
||||
if not user:
|
||||
continue
|
||||
unit, created = Unity.objects.get_or_create(value=i["unit"]["name"]["uz"])
|
||||
counterparty = Counterparty.objects.filter(
|
||||
name=i["company_person"]["name"]
|
||||
).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(
|
||||
product=product,
|
||||
amount=i["amount"],
|
||||
total_price=i["total_amount"],
|
||||
quantity=i["quantity"],
|
||||
unity=unit,
|
||||
currency=i["currency"]["symbol"].lower(),
|
||||
project_folder=project_folder,
|
||||
wherehouse=wherehouse,
|
||||
counterparty=counterparty,
|
||||
type='party',
|
||||
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
|
||||
for i in data["warehouse_products"]:
|
||||
product = Product.objects.filter(
|
||||
name__icontains=i["product"]["name"]["uz"]
|
||||
).first()
|
||||
if not product:
|
||||
continue
|
||||
unit, created = Unity.objects.get_or_create(value=i["unit"]["name"]["uz"])
|
||||
counterparty = Counterparty.objects.filter(
|
||||
name=i["company_person"]["name"]
|
||||
).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(
|
||||
product=product,
|
||||
amount=i["amount"],
|
||||
total_price=i["total_amount"],
|
||||
quantity=i["quantity"],
|
||||
unity=unit,
|
||||
currency=i["currency"]["symbol"].lower(),
|
||||
project_folder=project_folder,
|
||||
wherehouse=wherehouse,
|
||||
counterparty=counterparty,
|
||||
type='party',
|
||||
)
|
||||
total_price += i["total_amount"]
|
||||
paid_amount += i["paid_amount"]
|
||||
calculated_amount += i["calculated_amount"]
|
||||
must_pay_amount += i["must_pay_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,
|
||||
},
|
||||
)
|
||||
total_price += i["total_amount"]
|
||||
paid_amount += i["paid_amount"]
|
||||
calculated_amount += i["calculated_amount"]
|
||||
must_pay_amount += i["must_pay_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,
|
||||
},
|
||||
)
|
||||
self.stdout.write("Parties added")
|
||||
Reference in New Issue
Block a user