def create_fulfill_request(warehouse, order_id): warehouse_labels = [w['label'] for w in inventory_api.warehouse({})] unfulfilled_items = fulfill_api.unfulfilled(str(order_id), {})['unfulfilled_items'] inv_items = dict((i['label'], i['id']) for i in products_api.inventoryitem({})) order = sales_api.sale(order_id, {}) if unfulfilled_items is None: return 'FULFILL_ALREADY_REQUESTED' elif warehouse not in warehouse_labels: return 'WAREHOUSE_NOT_RECOGNISED' else: # now create a fulfillment request today = get_today() warehouse = Warehouse.objects.get(label=warehouse) fulfill_info = {} fulfill_info['request_date'] = today fulfill_info['warehouse_id'] = warehouse.id fulfill_info['order_id'] = str(order_id) fulfill_info['status'] = 'requested' fulfill_obj = Fulfillment(**fulfill_info) fulfill_obj.save() for label, quantity in unfulfilled_items.iteritems(): inv_id = inv_items[label] fline_info = {} fline_info['inventory_item_id'] = inv_id fline_info['quantity'] = quantity fline_info['fulfillment_id'] = fulfill_obj.id fline_obj = FulfillLine(**fline_info) fline_obj.save() return 'FULFILL_REQUESTED'
def create_backorder(order_id): # check that it has not been requested already unfulfilled_items = fulfill_api.unfulfilled(str(order_id), {})['unfulfilled_items'] inv_items = dict((i['label'], i['id']) for i in products_api.inventoryitem({})) order = sales_api.sale(order_id, {}) if unfulfilled_items is None: return 'FULFILL_ALREADY_REQUESTED' else: # now create a fulfillment request today = get_today() fulfill_info = {} fulfill_info['request_date'] = today fulfill_info['order_id'] = str(order_id) fulfill_info['status'] = 'back-ordered' fulfill_obj = Fulfillment(**fulfill_info) fulfill_obj.save() for label, quantity in unfulfilled_items.iteritems(): inv_id = inv_items[label] fline_info = {} fline_info['inventory_item_id'] = inv_id fline_info['quantity'] = quantity fline_info['fulfillment_id'] = fulfill_obj.id fline_obj = FulfillLine(**fline_info) fline_obj.save() return 'FULFILL_BACKORDERED'