epicenter/create_order_in_crm.py

122 lines
3.5 KiB
Python
Raw Normal View History

2024-02-10 11:05:21 +02:00
import requests
import os
from models import EpicenterOrder, EpicenterOrderProduct
from dotenv import load_dotenv
load_dotenv()
BASE_URL = "https://openapi.keycrm.app/v1/"
CRM_API_KEY = os.getenv("CRM_API_KEY")
PAYMENT_METHOD_ID = os.getenv("PAYMENT_METHOD_ID")
def create_order(
order_number: str,
order_creation_date: str,
full_name: str,
email: str,
phone_number: str,
city: str,
delivery_address: str,
delivery_post_number: str,
delivery_ref: str,
products: list,
amount: float,
):
create_order_url = BASE_URL + "order/"
headers = {
"accept": "application/json",
"Authorization": f"Bearer {CRM_API_KEY}",
}
json_data = {
"source_id": 1,
"source_uuid": order_number,
"ordered_at": order_creation_date,
"buyer": {
"full_name": full_name,
"email": email,
"phone": phone_number,
},
"shipping": {
"delivery_service_id": 1,
"shipping_service": "Нова Пошта",
"shipping_address_city": city,
"shipping_address_country": "Ukraine",
"shipping_secondary_line": delivery_address,
"shipping_receive_point": delivery_post_number,
"recipient_full_name": full_name,
"recipient_phone": phone_number,
"warehouse_ref": delivery_ref,
},
"products": products,
"payments": [
{
"status": "not_paid",
"payment_method_id": PAYMENT_METHOD_ID,
"amount": amount,
},
],
}
response = requests.post(create_order_url, headers=headers, json=json_data)
print(response.text)
def create_from_db(order_number: int):
orders_query = EpicenterOrder.select().where(
EpicenterOrder.order_number == order_number
)
# print(orders_query)
for order_info in orders_query:
# extract order information
order_number = order_info.order_number
order_creation_date = order_info.order_creation_date.strftime(
"%Y-%m-%d %H:%M:%S"
)
full_name = order_info.full_name
email = order_info.email
phone_number = order_info.phone_number
delivery_address = order_info.delivery_address
delivery_post_number = order_info.delivery_post_number
delivery_ref = order_info.delivery_ref
settlement = order_info.settlement
amount = float(order_info.amount)
# print(amount)
# extract products associated with the order
products = []
for order_product in EpicenterOrderProduct.select().where(
EpicenterOrderProduct.epicenter_order == order_info
):
product_info = {
"name": order_product.product.name,
"sku": order_product.product.sku,
"price": float(order_product.product.price),
"quantity": order_product.quantity,
}
products.append(product_info)
print(product_info)
create_order(
order_number=order_number,
order_creation_date=order_creation_date,
full_name=full_name,
email=email,
phone_number=phone_number,
delivery_post_number=delivery_post_number,
delivery_ref=delivery_ref,
delivery_address=delivery_address,
city=settlement,
products=products,
amount=amount,
)
# create_from_db(32078457)