Example #1
0
        def insert_frt_inventory():
            inv_json_str = """
                [{
                  "BRAND_CODE": "1201",
                  "BRAND_NAME": "路虎",
                  "CLASS_CODE": "120102",
                  "CLASS_NAME": "Discovery [发现]",
                  "CARTYPE_CODE": "120102003",
                  "CARTYPE": "Discovery4 [发现4]",
                  "SUBTYPE_CODE": "1201020030080",
                  "SUBTYPE_NAME": "2015款 3.0T 手自一体 V6 SC HSE(2015)欧5",
                  "COLOR_NAME": "圣托里尼黑",
                  "COLOR_ATTRIBUTE": "车身色",
                  "WAVEHOUSE_NAME": "本店仓库",
                  "LOCATION_NAME": "1",
                  "OUT_FACTORY_DATE": "0001-01-01T00:00:00",
                  "VIN": "SALAN2V66FA765367",
                  "INV_STATUS": "销售出库",
                  "INVDAY": 190.0,
                  "IN_PRICE": 878687.98,
                  "MRSP": 928000.0,
                  "REBATE_AMT": null
                },
                {
                  "BRAND_CODE": "1201",
                  "BRAND_NAME": "路虎",
                  "CLASS_CODE": "120102",
                  "CLASS_NAME": "Discovery [发现]",
                  "CARTYPE_CODE": "120102003",
                  "CARTYPE": "Discovery4 [发现4]",
                  "SUBTYPE_CODE": "1201020030078",
                  "SUBTYPE_NAME": "2015款 3.0T 手自一体 SDV6 HSE(2015)欧5",
                  "COLOR_NAME": "圣托里尼黑",
                  "COLOR_ATTRIBUTE": "车身色",
                  "WAVEHOUSE_NAME": "本店仓库",
                  "LOCATION_NAME": "1",
                  "OUT_FACTORY_DATE": "0001-01-01T00:00:00",
                  "VIN": "SALAN2F6XFA762485",
                  "INV_STATUS": "销售出库",
                  "INVDAY": 214.0,
                  "IN_PRICE": 841487.99,
                  "MRSP": 888000.0,
                  "REBATE_AMT": null
                }]
            """

            json_data = json.loads(inv_json_str)
            from application.models.frtinv import FrtInventory

            sync_timestamp = int(time.time())

            for item in json_data:
                inv = FrtInventory.from_data(item)
                inv.sync_timestamp = sync_timestamp
                inv.save()

            saved_data = FrtInventory.find_all_by_sync_timestamp(
                sync_timestamp)
            self.assertEqual(len(json_data), len(saved_data))
Example #2
0
def publish_share_inventory(inventory_id):
    scope = request.args.get('scope', 'group')
    inv = FrtInventory.find(inventory_id)

    if inv is None:
        return abort(404)

    inv.shared = scope
    return inv
Example #3
0
def get_frt_inventory_cartypes_stats(store_id):
    stockage = request.args.get('stockage', None)

    result = FrtInventory.get_cartypes_count(store_id, stockage)
    if current_app.config['FRT_DEMO']:
        for data in result:
            data['order_count'] = MOCK_ORDERS_COUNT.get(
                data['cartype_code'], 0)
            data['store_leads_count'] = MOCK_STORE_LEEDS_COUNT.get(
                data['cartype_code'], 0)
            data['group_leads_count'] = MOCK_GROUP_LEEDS_COUNT.get(
                data['cartype_code'], 0)
            data['net_leads_count'] = MOCK_NET_LEEDS_COUNT.get(
                data['cartype_code'], 0)
    return result
Example #4
0
def get_frt_inventory_stockages_stats(store_id):
    return FrtInventory.get_stockages_count(store_id)
Example #5
0
def get_frt_inventory_subtypes_stats(store_id):
    cartype_code = request.args.get('cartype_code', None)

    return FrtInventory.get_subtypes_count(store_id, cartype_code)
Example #6
0
def get_frt_stores_inventories(store_id):
    return FrtInventory.find_all_store_inventories(store_id,
                                                   **request.args.to_dict())
Example #7
0
def get_frt_stores_inventories_lookups(store_id):
    type = request.args.get('type', 'store')

    return FrtInventory.get_lookups(store_id, type)
Example #8
0
def sync_latest_store_inventory(store_id):
    # TODO transfer store_id to frt store_no

    # load store inventories
    params = [{"store_no": map_store(store_id), "carTypeNo": ""}]
    encrypted_params = encrypt_params(params)
    inventories = get_store_inventories(encrypted_params)

    timestamp = int(time.time())

    inventories = filter(lambda inv: is_valid_inventory(inv), inventories)

    for inventory in inventories:
        frt_inv = FrtInventory.from_data(inventory)

        if current_app.config['FRT_DEMO']:
            if frt_inv.invday > 180:
                frt_inv.invday /= 5
            if DEMO_STATUS_CONV.get(frt_inv.inv_status, None):
                frt_inv.inv_status = DEMO_STATUS_CONV[frt_inv.inv_status]
            if DEMO_SUBTYPE_MRSP_CONV.get(frt_inv.subtype_code, None):
                frt_inv.mrsp = DEMO_SUBTYPE_MRSP_CONV[frt_inv.subtype_code]

        frt_inv.store_id = store_id
        frt_inv.sync_timestamp = timestamp

        frt_inv.save()

    db.session.commit()

    cache.delete_memoized(FrtInventory.get_store_lookups_from_cache,
                          FrtInventory, int(store_id))

    # load group shared inventory
    brand_codes = FrtInventory.find_all_brand_code(store_id, None)
    if brand_codes:
        brand_codes = [c for c, in brand_codes]

    timestamp = time.time()

    shared_inventories_total = []

    if current_app.config['FRT_DEMO']:
        brand_codes = DEMO_BRANDS

    for brand in brand_codes:
        shared_inv_params = [{"brand_code": brand}]
        shared_inv_encrypted_params = encrypt_params(shared_inv_params)
        shared_inventories = get_shared_inventories(
            shared_inv_encrypted_params)

        for shared_inventory in shared_inventories:
            frt_shared_inv = FrtSharedInventory.from_data(shared_inventory)
            frt_shared_inv.store_id = store_id
            frt_shared_inv.sync_timestamp = timestamp

            frt_shared_inv.save()
            shared_inventories_total.append(frt_shared_inv)

    db.session.commit()

    cache.delete_memoized(FrtSharedInventory.get_group_lookups_from_cache,
                          FrtInventory, int(store_id))

    return timestamp, inventories, shared_inventories_total