# список заказов в ЛК
# преобразование заказов из ретейла в формат, необходимый для фронта
def orders_serialize(orders):
serialized_orders = []
for order in orders:
code = order["delivery"].get("code")
address = order["delivery"].get("address", {})
city = address.get("city", "")
if order.get("orderMethod") == "newsletter":
address = {"city": "Подписка на рассылку", "text": ""}
else:
if not address.get("street"):
if order.get("shipmentStore"):
if not city:
store = Store.objects.filter(code=order["shipmentStore"]).first()
if store:
if store.city:
city = store.city
address = {
"city": city,
"text": "Розничный покупатель",
"street": "Розничный покупатель",
}
else:
address = {
"city": city,
"text": "Самовывоз",
"street": "Самовывоз",
}
items = []
for item in order["items"]:
if item.get("prices"):
for price in item["prices"]:
i = {
"name": item["offer"]["name"],
"quantity": price["quantity"],
"price": price["price"],
}
items.append(i)
else:
i = {
"name": item["offer"]["name"],
"quantity": item["quantity"],
"price": item["initialPrice"],
}
items.append(i)
status_code = order.get("status", "")
status = OrderStatus.objects.filter(code=status_code).first()
if status:
status = status.get_response()
else:
status = OrderStatus.dummy_response(status_code)
number1c = ""
if order.get("customFields"):
if isinstance(order["customFields"], dict):
order["customFields"].get("number1c", "")
else:
capture_message(f"Неизвестный customFields - {order['customFields']}")
orderMethod = OrderMethod.objects.filter(code=order["orderMethod"]).first()
if orderMethod:
orderMethod = orderMethod.get_response()['name']
else:
orderMethod = order["orderMethod"]
data = {
"id": order["id"],
"paid": order["prepaySum"] == order["totalSumm"],
"site": order.get("site"),
"status": status,
"number": order.get("number"),
"number1c": number1c,
"order_method": orderMethod,
"lastName": order.get("lastName"),
"firstName": order.get("firstName"),
"patronymic": order.get("patronymic"),
"summ": order.get("summ"),
"totalSumm": order.get("totalSumm"),
"partnerSumm": int(order.get("totalSumm", 0) * 0.5),
"phone": order.get("phone"),
"city": order["delivery"].get("city"),
"createdAt": order["createdAt"],
"storehouse": order.get("shipmentStore", ""),
"customerCity": order.get("customer", {}).get("address", {}).get("city"),
"contactCity": order.get("contact", {}).get("address", {}).get("city"),
"companyCity": order.get("company", {}).get("address", {}).get("city"),
"delivery": {
"code": code,
"address": address,
"date": order["delivery"].get("date"),
"time": order["delivery"].get("time"),
},
"items": items,
}
serialized_orders.append(data)
return serialized_orders