122 lines
3.5 KiB
Python
122 lines
3.5 KiB
Python
|
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)
|