in order/utils/order_actions.py [0:0]
def fulfill_order(order:Order, carrier, tracking_number, items=None):
''' Fulfil an order
NOTE: currently only fulfills an order COMPLETELY
params:
order: the Order to fulfill
carrier: the shipping carrier
tracking_number: tracking number from the carrier
items: the subset of items this particular fulfillment is for
returns:
order, data: tuple of the order object and response data if successful.
'''
fb_meta = FacebookMetadata.objects.get(store=order.store)
token = fb_meta.token_info
url = settings.BASE_API_URL + order.ext_order_id + '/shipments'
body = {
'access_token': token,
'items': items or get_order_items(order),
'tracking_info': {
'carrier': carrier,
'tracking_number': tracking_number,
},
'idempotency_key': get_idempotency_key(),
}
res = requests.post(url, json=body)
data = res.json()
if not data.get("success", False):
print(json.dumps(res.json(), indent=2))
return None, None
update_order_fulfillment_state(order, OrderFulfillmentState.FULLY_FULFILLED)
update_order_state(order, OrderStatus.COMPLETED)
return order, data