def search_import_orders(self, cr, uid, ids, status = 'WAIT_SELLER_SEND_GOODS', date_start = None, date_end = None, context=None): """ 搜索订单,批量导入 """ port = 80 shop = self.browse(cr, uid, ids[0], context = context) setDefaultAppInfo(shop.appkey, shop.appsecret) req = TradesSoldIncrementGetRequest(shop.apiurl,port) req.fields="seller_nick,buyer_nick,created,sid,tid,status,buyer_memo,seller_memo,payment,discount_fee,adjust_fee,post_fee,total_fee,pay_time,end_time,modified,received_payment,price,alipay_id,receiver_name,receiver_state,receiver_city,receiver_district,receiver_address,receiver_zip,receiver_mobile,receiver_phone,orders.price,orders.num,orders.iid,orders.num_iid,orders.sku_id,orders.refund_status,orders.status,orders.oid,orders.total_fee,orders.payment,orders.discount_fee,orders.adjust_fee,orders.sku_properties_name,orders.outer_iid,orders.outer_sku_id" req.status = status if date_start: date_start = (datetime.strptime(str(date_start), '%Y-%m-%d %H:%M:%S',) + timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S') req.start_modified = date_start if date_end: date_end = (datetime.strptime(str(date_end), '%Y-%m-%d %H:%M:%S',) + timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S') req.end_modified = date_end res = [] req.page_no = 1 req.page_size = 100 # 淘宝沙箱环境不支持use_has_next 参数 # req.use_has_next = True # has_next = True # while has_next: # resp= req.getResponse(shop.sessionkey) # trades = resp.get('trades_sold_get_response').get('trades', False) # if trades: # res += trades.get('trade') # req.page_no += 1 # has_next = resp.get('trades_sold_get_response').get('has_next', False) total_get = 0 total_results = 100 while total_get < total_results: resp= req.getResponse(shop.sessionkey) trades = resp.get('trades_sold_increment_get_response').get('trades', False) total_results = resp.get('trades_sold_increment_get_response').get('total_results') if total_results > 0: res += trades.get('trade') total_get += req.page_size req.page_no = req.page_no + 1 # 时间需要减去8小时 # 单号加上店铺前缀 order_ids = [] for trade in res: trade['created'] = (datetime.strptime(trade['created'], '%Y-%m-%d %H:%M:%S',) - timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S') trade['pay_time'] = (datetime.strptime(trade['pay_time'], '%Y-%m-%d %H:%M:%S',) - timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S') trade['sale_code'] = '%s_%s' % (shop.code, trade['tid']) try: #创建Partner partner_id, address_id = self.create_partner_address(cr, uid, shop.code, trade, context = context ) #创建订单及明细行 order_id = self.create_order(cr, uid, shop, partner_id, address_id, trade, context = context ) order_ids.append(order_id) except Exception, e: #写入 同步异常日志 syncerr = u"店铺【%s】订单【%s】同步错误: %s" % (shop.name, trade['tid'], e) self.pool.get('ebiz.syncerr').create(cr, uid, {'name':syncerr, 'shop_id': shop.id, 'type': 'order' }, context = context ) continue
def search_orders(self, cr, uid, ids, status = 'WAIT_SELLER_SEND_GOODS', date_start = None, date_end = None, context=None): """ 从电商店铺搜索一定时间区间创建的、指定交易状态的订单 本方法支持的交易状态有: WAIT_SELLER_SEND_GOODS (默认) WAIT_BUYER_CONFIRM_GOODS TRADE_FINISHED TRADE_CLOSED 淘宝订单交易状态 WAIT_BUYER_PAY:等待买家付款 WAIT_SELLER_SEND_GOODS:等待卖家发货 SELLER_CONSIGNED_PART:卖家部分发货 WAIT_BUYER_CONFIRM_GOODS:等待买家确认收货 TRADE_BUYER_SIGNED:买家已签收(货到付款专用) TRADE_FINISHED:交易成功 TRADE_CLOSED:交易关闭 TRADE_CLOSED_BY_TAOBAO:交易被淘宝关闭 TRADE_NO_CREATE_PAY:没有创建外部交易(支付宝交易) WAIT_PRE_AUTH_CONFIRM:余额宝0元购合约中 PAY_PENDING:外卡支付付款确认中 ALL_WAIT_PAY:所有买家未付款的交易(包含:WAIT_BUYER_PAY、TRADE_NO_CREATE_PAY) ALL_CLOSED:所有关闭的交易(包含:TRADE_CLOSED、TRADE_CLOSED_BY_TAOBAO) """ port = 80 shop = self.browse(cr, uid, ids[0], context = context) setDefaultAppInfo(shop.appkey, shop.appsecret) req = TradesSoldIncrementGetRequest(shop.apiurl,port) req.fields="tid, buyer_nick, created, discount_fee, adjust_fee, post_fee, total_fee, pay_time, end_time, modified, consign_time, receiver_name" req.status = status if date_start: date_start = (datetime.strptime(str(date_start), '%Y-%m-%d %H:%M:%S',) + timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S') req.start_modified = date_start if date_end: date_end = (datetime.strptime(str(date_end), '%Y-%m-%d %H:%M:%S',) + timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S') req.end_modified = date_end res = [] req.page_no = 1 req.page_size = 100 # 淘宝沙箱环境不支持use_has_next 参数 # req.use_has_next = True # has_next = True # while has_next: # resp= req.getResponse(shop.sessionkey) # trades = resp.get('trades_sold_get_response').get('trades', False) # if trades: # res += trades.get('trade') # req.page_no += 1 # has_next = resp.get('trades_sold_get_response').get('has_next', False) total_get = 0 total_results = 100 while total_get < total_results: resp= req.getResponse(shop.sessionkey) trades = resp.get('trades_sold_increment_get_response').get('trades', False) total_results = resp.get('trades_sold_increment_get_response').get('total_results') if total_results > 0: res += trades.get('trade') total_get += req.page_size req.page_no = req.page_no + 1 # 时间需要减去8小时 # 单号加上店铺前缀 for r in res: r['created'] = (datetime.strptime(r['created'],'%Y-%m-%d %H:%M:%S',) - timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S') r['modified'] = (datetime.strptime(r['modified'],'%Y-%m-%d %H:%M:%S',) - timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S') r['sale_code'] = '%s_%s' % (shop.code, r['tid']) return res