Nav apraksta

stock_utils.py 3.2KB

    # -*- coding: utf-8 -*- import json from django.conf import settings from TimeConvert import TimeConvert as tc import jd from jd.api.rest.EdiInventorySendRequest import EdiInventorySendRequest from jd.api.rest.VcAplsStockBatchGetProdStockInfoRequest import VcAplsStockBatchGetProdStockInfoRequest from jd.api.rest.VcItemProductsFindRequest import VcItemProductsFindRequest from stock.models import StockInfo from utils.redis.connect import r from utils.redis.rkeys import JDJOS_STOCK_CHANGED_SET JOS = settings.JOS['TAMRON'] def refresh_stock_info(): jd.setDefaultAppInfo(JOS['appkey'], JOS['secret']) offset = 0 jcontinue = True while jcontinue: a = VcItemProductsFindRequest() a.brand_id = 16795 a.category_id = 834 a.offset = offset a.page_size = 50 try: f = a.getResponse(JOS['accessToken']) print(json.dumps(f)) except Exception, e: print(e) products = f['jingdong_vc_item_products_find_responce']['jos_result_dto']['result'] print products # ware_ids = [int(p['ware_id']) for p in products] # print ware_ids offset += 50 a.offset += offset if len(products) < 50: jcontinue = False # a = VcAplsStockBatchGetProdStockInfoRequest() # a.vendorCode = JOS['vendorCode'] # a.skuList = list(set(ware_ids) - set(settings.JOS_SKU_EXCLUDE)) # # try: # f = a.getResponse(JOS['accessToken']) # print(json.dumps(f)) # except Exception, e: # print(e) # stocks = f['jingdong_vc_apls_stock_batchGetProdStockInfo_responce']['batchGetProdStockInfoResponse']['stockList'] for product in products: print product['ware_id'] s, _ = StockInfo.objects.get_or_create(vendorProductId=product['ware_id']) s.vendorProductName = product['ware_name'] s.vendorCode = JOS['vendorCode'] s.vendorName = JOS['vendorName'] s.storeId = JOS['storeId'] s.storeName = JOS['storeName'] s.save() def send_stock_info(stock): jd.setDefaultAppInfo(JOS['appkey'], JOS['secret']) a = EdiInventorySendRequest() a.vendorCode = stock.vendorCode a.vendorName = stock.vendorName a.vendorProductId = stock.vendorProductId a.inventoryDate = tc.local_string(tc.to_local_datetime(stock.inventoryDate)) a.totalQuantity = stock.totalQuantity a.estimateDate = tc.local_string(tc.to_local_datetime(stock.estimateDate)) a.totalEstimateQuantity = stock.totalEstimateQuantity a.costPrice = stock.costPrice a.storeId = stock.storeId a.storeName = stock.storeName a.quantity = stock.totalQuantity a.estimateQuantity = stock.totalEstimateQuantity try: f = a.getResponse(JOS['accessToken']) print(json.dumps(f)) except Exception, e: print(e) def send_all_stock_info(): pks, _ = r.pipeline().smembers(JDJOS_STOCK_CHANGED_SET).delete(JDJOS_STOCK_CHANGED_SET).execute() for pk in pks: try: stock = StockInfo.objects.get(pk=pk, status=True) except StockInfo.DoesNotExist: continue send_stock_info(stock)