170 lines
5.7 KiB
Python
170 lines
5.7 KiB
Python
|
import requests
|
||
|
|
||
|
from get_order_number_from_crm_by_id import get_order_number
|
||
|
from create_order_in_crm import BASE_URL, CRM_API_KEY
|
||
|
from get_orders import get_auth_token, LOGIN, PASSWORD
|
||
|
from models import EpicenterOrder, db
|
||
|
|
||
|
|
||
|
def get_ttn_number_from_order(order_id: int):
|
||
|
order_number = get_order_number(order_id)
|
||
|
|
||
|
order = (
|
||
|
EpicenterOrder.select()
|
||
|
.where(EpicenterOrder.order_number == order_number)
|
||
|
.first()
|
||
|
)
|
||
|
|
||
|
if not order:
|
||
|
print(f"Order with order number {order_number} not found.")
|
||
|
|
||
|
order_url = BASE_URL + f"order/{order_id}/"
|
||
|
|
||
|
print(order_id, order_url)
|
||
|
|
||
|
headers = {
|
||
|
"accept": "application/json",
|
||
|
"Authorization": f"Bearer {CRM_API_KEY}",
|
||
|
}
|
||
|
|
||
|
params = {
|
||
|
"include": "shipping",
|
||
|
}
|
||
|
|
||
|
try:
|
||
|
response = requests.get(order_url, headers=headers, params=params)
|
||
|
|
||
|
data = response.json()
|
||
|
tracking_code = data["shipping"].get("tracking_code")
|
||
|
return tracking_code
|
||
|
|
||
|
except Exception as e:
|
||
|
print(f"An unexpected error occurred: {e}")
|
||
|
|
||
|
|
||
|
|
||
|
def change_status_to_confirmed(order_number: int, auth_token: str):
|
||
|
order = (
|
||
|
EpicenterOrder.select()
|
||
|
.where(EpicenterOrder.order_number == order_number)
|
||
|
.first()
|
||
|
)
|
||
|
order_id = order.order_id
|
||
|
order.status = "confirmed"
|
||
|
|
||
|
first_headers = {
|
||
|
"authority": "core-api.epicentrm.cloud",
|
||
|
"accept": "*/*",
|
||
|
"accept-language": "en-US,en;q=0.9,ru;q=0.8,ru-RU;q=0.7",
|
||
|
"access-control-request-headers": "authorization,content-type",
|
||
|
"access-control-request-method": "POST",
|
||
|
"origin": "https://admin.epicentrm.com.ua",
|
||
|
"referer": "https://admin.epicentrm.com.ua/",
|
||
|
"sec-fetch-dest": "empty",
|
||
|
"sec-fetch-mode": "cors",
|
||
|
"sec-fetch-site": "cross-site",
|
||
|
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36",
|
||
|
}
|
||
|
|
||
|
first_response = requests.options(
|
||
|
f"https://core-api.epicentrm.cloud/v2/oms/orders/{order_id}/change-status/to/confirmed",
|
||
|
headers=first_headers,
|
||
|
)
|
||
|
|
||
|
second_headers = {
|
||
|
"authority": "core-api.epicentrm.cloud",
|
||
|
"accept": "*/*",
|
||
|
"accept-language": "en-US,en;q=0.9,ru;q=0.8,ru-RU;q=0.7",
|
||
|
"authorization": f"Bearer {auth_token}",
|
||
|
# 'content-length': '0',
|
||
|
"content-type": "application/json",
|
||
|
"origin": "https://admin.epicentrm.com.ua",
|
||
|
"referer": "https://admin.epicentrm.com.ua/",
|
||
|
"sec-ch-ua": '"Not A(Brand";v="99", "Google Chrome";v="121", "Chromium";v="121"',
|
||
|
"sec-ch-ua-mobile": "?0",
|
||
|
"sec-ch-ua-platform": '"Windows"',
|
||
|
"sec-fetch-dest": "empty",
|
||
|
"sec-fetch-mode": "cors",
|
||
|
"sec-fetch-site": "cross-site",
|
||
|
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36",
|
||
|
}
|
||
|
|
||
|
second_response = requests.post(
|
||
|
f"https://core-api.epicentrm.cloud/v2/oms/orders/{order_id}/change-status/to/confirmed",
|
||
|
headers=second_headers,
|
||
|
)
|
||
|
|
||
|
|
||
|
def update_status_to_sent(order_number: int, order_id_crm: int):
|
||
|
|
||
|
auth_token = get_auth_token(LOGIN, PASSWORD)
|
||
|
|
||
|
with db.transaction():
|
||
|
change_status_to_confirmed(order_number, auth_token)
|
||
|
order = (
|
||
|
EpicenterOrder.select()
|
||
|
.where(EpicenterOrder.order_number == order_number)
|
||
|
.first()
|
||
|
)
|
||
|
order_id = order.order_id
|
||
|
order.order_status = "sent"
|
||
|
|
||
|
ttn_number = get_ttn_number_from_order(order_id_crm)
|
||
|
order.ttn = ttn_number
|
||
|
order.save()
|
||
|
|
||
|
first_headers = {
|
||
|
"authority": "core-api.epicentrm.cloud",
|
||
|
"accept": "*/*",
|
||
|
"accept-language": "en-US,en;q=0.9,ru;q=0.8,ru-RU;q=0.7",
|
||
|
"access-control-request-headers": "authorization,content-type",
|
||
|
"access-control-request-method": "POST",
|
||
|
"origin": "https://admin.epicentrm.com.ua",
|
||
|
"referer": "https://admin.epicentrm.com.ua/",
|
||
|
"sec-fetch-dest": "empty",
|
||
|
"sec-fetch-mode": "cors",
|
||
|
"sec-fetch-site": "cross-site",
|
||
|
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36",
|
||
|
}
|
||
|
|
||
|
first_response = requests.options(
|
||
|
"https://core-api.epicentrm.cloud/v2/oms/orders/{order_id}/change-status/to/sent",
|
||
|
headers=first_headers,
|
||
|
)
|
||
|
|
||
|
second_headers = {
|
||
|
"authority": "core-api.epicentrm.cloud",
|
||
|
"accept": "*/*",
|
||
|
"accept-language": "en-US,en;q=0.9,ru;q=0.8,ru-RU;q=0.7",
|
||
|
"authorization": f"Bearer {auth_token}",
|
||
|
"content-type": "application/json",
|
||
|
"origin": "https://admin.epicentrm.com.ua",
|
||
|
"referer": "https://admin.epicentrm.com.ua/",
|
||
|
"sec-ch-ua": '"Not A(Brand";v="99", "Google Chrome";v="121", "Chromium";v="121"',
|
||
|
"sec-ch-ua-mobile": "?0",
|
||
|
"sec-ch-ua-platform": '"Windows"',
|
||
|
"sec-fetch-dest": "empty",
|
||
|
"sec-fetch-mode": "cors",
|
||
|
"sec-fetch-site": "cross-site",
|
||
|
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36",
|
||
|
}
|
||
|
|
||
|
json_data = {
|
||
|
"reason_code": "",
|
||
|
"comment": None,
|
||
|
"translationKey": "",
|
||
|
"number": ttn_number,
|
||
|
"provider": "nova_poshta",
|
||
|
}
|
||
|
|
||
|
second_response = requests.post(
|
||
|
f"https://core-api.epicentrm.cloud/v2/oms/orders/{order_id}/change-status/to/sent",
|
||
|
headers=second_headers,
|
||
|
json=json_data,
|
||
|
)
|
||
|
|
||
|
|
||
|
def get_and_write_ttn_number(order_id_crm: int):
|
||
|
order_number = get_order_number(order_id=order_id_crm)
|
||
|
update_status_to_sent(order_number, order_id_crm)
|