예제 #1
0
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'
예제 #2
0
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'
예제 #3
0
def thoroughbred_mismatch(order_id, qstring):
    order_data = salesapi.sale(order_id)
    # for now assume only ever one fulfill
    wh_fulfill = WarehouseFulfill.objects \
                                 .filter(savor_order_id=order_id) \
                                 .values('warehouse_pack_id')[0]

    req_fulfill = Fulfillment.objects \
                             .filter(order_id=order_id) \
                             .values('id')[0]

    req_record = fulfillment(req_fulfill['id'])
    req_record['shipping_zip'] = order_data['shipping_zip']
    req_record['shipping_name'] = order_data['shipping_name']
    whouse_record = warehousefulfill(wh_fulfill['warehouse_pack_id'])

    output = []
    flds = ['shipping_name', 'shipping_zip', 'skus']

    def get_row(fld):
        return {'field': fld,
                'savor': str(req_record.get(fld, '')),
                'thoroughbred': str(whouse_record.get(fld, '')),
                'mismatch': req_record.get(fld, '') != whouse_record.get(fld, '')}

    for fld in flds:
        output.append(get_row(fld))

    return output