예제 #1
0
    def search_orders_by_tids(self, cr, uid, ids, context=None, tids = ''):  # 根据电商单号 下载 订单
        port = 80
        shop = self.browse(cr, uid, ids[0], context = context)
        partner_id = shop.partner_id.id		
        setDefaultAppInfo(shop.appkey, shop.appsecret)
        req = TradeGetRequest(shop.apiurl,port) 		
        req.fields="tid,pay_time,seller_memo,created,buyer_nick,orders.num,orders.store_code,orders.num_iid,orders.sku_id,orders.oid, orders.total_fee,orders.payment,orders.outer_sku_id"
		
        tids = []
        note = shop.last_log or ''	
        tmijdi_nos = note.strip().split(',')     	
        for tmijdi_no in tmijdi_nos:
            tmijdi_no = tmijdi_no.strip()		
            if tmijdi_no != '' : tids.append( tmijdi_no )
			
        order_list = []		
        for tid in tids:            	
            req.tid = tid
            resp = req.getResponse(shop.sessionkey)
            order = resp.get('trade_get_response').get('trade', '')				
		
            if order : 	
                seller_memo = order.get('seller_memo','')
                order['is_jaycee'] = seller_memo.find(u'jaycee订单') >= 0 or seller_memo.find(u'anja订单') >= 0		
                order['is_kevin'] = seller_memo.find(u'kevin订单') >= 0 or seller_memo.find(u'anja订单') >= 0	
                order['is_sz'] = seller_memo.find(u'深圳发货') >= 0	
                order['is_hk'] = seller_memo.find(u'香港四方转运') >= 0	or seller_memo.find(u'香港发货') >= 0						
                order_list.append( order )	
				
        order_id = self.create_order(cr, uid, ids, order_list, context = context )
        if order_id : shop.import_salesorder = order_id
        return order_id			
예제 #2
0
    def _sync_stock_qty(self, cr, uid, ids, context=None):
        """
         同步本条记录的库存数量到 电商店铺
        """
        port = 80
        shop = self.pool.get('loewieec.shop').browse(cr,
                                                     uid,
                                                     ids[0],
                                                     context=context)
        for product in shop.products:

            qty = product.erp_stock
            if qty < 1: continue

            setDefaultAppInfo(shop.appkey, shop.appsecret)
            req = ItemQuantityUpdateRequest(shop.apiurl, port)
            req.num_iid = long(product.ec_num_iid)

            req.sku_id = product.ec_sku_id

            if qty < 0: qty = 0
            req.quantity = int(qty)
            req.type = 1

            resp = req.getResponse(shop.sessionkey)

        return True
    def get_losgistic_company_code(self, cr, uid, ids, context=None):  #

        port = 80
        shop = self.browse(cr, uid, ids[0], context=context)
        setDefaultAppInfo(shop.appkey, shop.appsecret)
        req = LogisticsCompaniesGetRequest(shop.apiurl, port)
        req.fields = "id,code,name,reg_mail_no"
        req.order_mode = "all"

        resp = req.getResponse(shop.sessionkey)
        companies = resp.get('logistics_companies_get_response').get(
            'logistics_companies', False)
        comp_list = companies.get('logistics_company', False)

        carrier_obj = self.pool.get('loewie.carrier')
        for comp in comp_list:
            comp_ids = carrier_obj.search(cr,
                                          uid,
                                          [('name', '=', comp.get('name'))],
                                          context=context)
            comp_ids = comp_ids and comp_ids[0] or 0
            if not comp_ids:
                vals = {
                    'name': comp.get('name'),
                    'id_tm': str(comp.get('id')),
                    'code_tm': comp.get('code'),
                    'reg_mail_no': comp.get('reg_mail_no')
                }
                carrier_obj.create(cr, uid, vals, context=context)

        return True
예제 #4
0
    def b_sync_stock_qty(self, cr, uid, ids, context=None):

        port = 80
        shop = self.browse(cr, uid, ids[0], context=context)
        setDefaultAppInfo(shop.appkey, shop.appsecret)
        req = ProductsSearchRequest(shop.apiurl, port)
        req.fields = "name, sale_props, binds, product_id, outer_id, barcode_str"

        #resp= req.getResponse(shop.sessionkey)
        #skus = resp.get('items_inventory_get_response',False).get('items',False).get('item', False)
        req.page_no = 1
        req.page_size = 100
        req.q = "Fun Factory"
        total_get = 0
        total_results = 100
        res = []
        while total_get < total_results:
            resp = req.getResponse(shop.sessionkey)
            total_results = resp.get('products_search_response').get(
                'total_results')

            if total_results > 0:
                res += resp.get('products_search_response').get(
                    'products').get('product')
            total_get += req.page_size
            req.page_no = req.page_no + 1

        return res
예제 #5
0
    def set_losgistic_confirm(self,
                              cr,
                              uid,
                              ids,
                              context=None,
                              salesorder=None):  #
        port = 80
        shop = self.browse(cr, uid, ids[0], context=context)
        setDefaultAppInfo(shop.appkey, shop.appsecret)
        req = LogisticsOnlineConfirmRequest(shop.apiurl, port)
        log = []
        is_sent_list = []
        for line in salesorder.order_line:

            tmi_jdi_no, express_id, is_sent = line.tmi_jdi_no, line.express_id, line.logistic_sent
            tmi_jdi_no = tmi_jdi_no.strip()
            express_no = express_id and express_id.express_no.strip() or ''
            if not tmi_jdi_no or not express_no or is_sent or tmi_jdi_no in is_sent_list:
                continue

            req.tid = tmi_jdi_no
            req.out_sid = express_no
            resp = req.getResponse(shop.sessionkey)
            is_ok = False
            try:
                is_ok = resp.get('logistics_online_confirm_response').get(
                    'shipping', False).get('is_success')
            except ValueError:
                log.append(line.tmi_jdi_no)

            is_sent_list.append(tmi_jdi_no)
            if is_ok:
                line.logistic_sent = True

        return True
예제 #6
0
    def set_losgistic_confirm(self, cr, uid, ids, context=None, salesorder=None):	# 		
 
        port = 80
        shop = self.browse(cr, uid, ids[0], context = context)
        setDefaultAppInfo(shop.appkey, shop.appsecret)
        req = LogisticsOnlineConfirmRequest(shop.apiurl,port)
		
        tmi_jdi_list = {}		
        for line in salesorder.order_line:	
		
            tmi_jdi_no,coe_no,is_sent = line.tmi_jdi_no,line.coe_no, line.logistic_sent
            tmi_jdi_no = tmi_jdi_no.strip()	
            coe_no = coe_no and coe_no.name.strip() or False			
            if not tmi_jdi_no or not coe_no or is_sent: continue	
            tmi_jdi_list[tmi_jdi_no] = coe_no
        
        is_sent_list = []		
        for tmi_jdi_num in tmi_jdi_list.keys():		
            req.tid = tmi_jdi_num
            req.out_sid = tmi_jdi_list[tmi_jdi_num]			
            resp= req.getResponse(shop.sessionkey)
            is_ok = resp.get('logistics_online_confirm_response').get('shipping', False).get('is_success')
			
            if is_ok :	 
                is_sent_list.append(tmi_jdi_num)
				
        for line3 in salesorder.order_line:				
            tmi_jdi = line3.tmi_jdi_no
            if tmi_jdi.strip() in is_sent_list:
                line3.logistic_sent = True	
				
        return True		  	
예제 #7
0
    def update_orders_seller_memo(self, cr, uid, ids, context=None, tids=[]):
        port = 80
        shop = self.browse(cr, uid, ids[0], context=context)
        partner_id = shop.partner_id.id
        setDefaultAppInfo(shop.appkey, shop.appsecret)
        req = TradeGetRequest(shop.apiurl, port)
        req.fields = "seller_memo"

        tid_memos = {}
        for tid in tids:
            req.tid = tid
            resp = req.getResponse(shop.sessionkey)
            seller_memo = resp.get('trade_get_response',
                                   '').get('trade', '').get('seller_memo', '')
            if tid not in tid_memos.keys():
                tid_memos[tid] = seller_memo

        req = TradeMemoUpdateRequest(shop.apiurl, port)
        error_list = []
        _index = 1
        for key in tid_memos.keys():
            req.tid = key
            memo = ("%d. SZ-ERP downloaded. " % _index) + tid_memos[key]
            req.memo = memo  # .encode("utf-8")
            _index += 1
            resp = req.getResponse(shop.sessionkey)
            if not resp.get('trade_memo_update_response', ''):
                error_list.append(key)
예제 #8
0
    def a_sync_stock_qty(self, cr, uid, ids, context=None):

        port = 80
        shop = self.browse(cr, uid, ids[0], context=context)
        setDefaultAppInfo(shop.appkey, shop.appsecret)
        req = ItemsInventoryGetRequest(shop.apiurl, port)
        req.fields = "skus, num_iid, title, type, product_id, props_name, outer_id, barcode, sub_title, shop_type, price"

        #resp= req.getResponse(shop.sessionkey)
        #skus = resp.get('items_inventory_get_response',False).get('items',False).get('item', False)
        req.page_no = 1
        req.page_size = 100
        #req.is_ex = "true"
        req.is_taobao = "true"
        total_get = 0
        total_results = 100
        res = []
        while total_get < total_results:
            resp = req.getResponse(shop.sessionkey)
            total_results = resp.get('items_inventory_get_response').get(
                'total_results')

            if total_results > 0:
                res += resp.get('items_inventory_get_response').get(
                    'items').get('item')
            total_get += req.page_size
            req.page_no = req.page_no + 1

        return res
예제 #9
0
    def update_tmall_waybill(self, cr, uid, ids, context=None, salesorder=None): # 	 
        port = 80
        shop = self.browse(cr, uid, ids[0], context = context)
        setDefaultAppInfo(shop.appkey, shop.appsecret)
        req = LogisticsOfflineSendRequest(shop.apiurl,port)  # HKERP -> LogisticsOfflineSendRequest  SZ-ERP -> LogisticsOnlineSendRequest
        log = []		
        is_sent_list = []
		
        for line in salesorder.order_line:		
            tmi_jdi_no,coe_no,is_sent = line.tmi_jdi_no,line.coe_no, line.logistic_sent
            tmi_jdi_no = tmi_jdi_no.strip()	
            express_no = coe_no and coe_no.name.strip() or ''			
            if not tmi_jdi_no or not express_no or is_sent or tmi_jdi_no in is_sent_list: continue	
			
            req.tid = tmi_jdi_no
            req.out_sid = express_no	
            req.company_code = 'EMS'
            is_sent_list.append(tmi_jdi_no)			
            try:			
                resp= req.getResponse(shop.sessionkey)				
                is_ok =  resp.get('logistics_offline_send_response',{}).get('shipping', {}).get('is_success',False)			
                if is_ok :	 
                    coe_no.write({'logistic_sent':True, 'state':'done'})			
            except Exception, e:
                _logger.info("Jimmy:%s" % str(e))			
                log.append(line.tmi_jdi_no)	 #  raise e   #  + '---' +  str(e)
예제 #10
0
    def search_orders_by_created_time(self, cr, uid, ids, context=None, status = []):
        port = 80
        shop = self.browse(cr, uid, ids[0], context = context)
        partner_id = shop.partner_id.id		
        setDefaultAppInfo(shop.appkey, shop.appsecret)
        req = TradesSoldGetRequest(shop.apiurl,port)		
        req.fields="sid,tid,pay_time,created,buyer_nick,orders.num,orders.store_code,orders.num_iid,orders.sku_id,orders.oid, orders.total_fee,orders.payment,orders.outer_sku_id"
        req.type = "instant_trade,auto_delivery,guarantee_trade,tmall_i18n"	
 				
        ctx_end_time = context.get('end_time',False)
        end_time = ctx_end_time and (datetime.strptime(ctx_end_time, '%Y-%m-%d %H:%M:%S') + timedelta(hours=8)) or self.get_datetime_now()
        end_time_str = end_time.strftime('%Y-%m-%d %H:%M:%S')		
        req.end_date = end_time_str
        req.status = 'WAIT_SELLER_SEND_GOODS'		
		
        hours_interval = shop.sync_interval
        if not hours_interval : hours_interval = 24
		
        ctx_start_time = context.get('start_time',False)		
        start_time = ctx_start_time and ( datetime.strptime(ctx_start_time, '%Y-%m-%d %H:%M:%S') + timedelta(hours=8) )
        start_time = start_time or ( end_time and (end_time - timedelta(hours=hours_interval)) ) or ( datetime.now() - timedelta(hours=hours_interval-8) )	
        start_time_str = start_time.strftime('%Y-%m-%d %H:%M:%S') 		
        req.start_date = start_time_str	  
		
        res = []
        #if len(status) < 1: status.append( shop.tmi_state or 'WAIT_SELLER_SEND_GOODS')	
		
        req.page_no = 1
        req.page_size = 100
        total_get = 0
        total_results = 200
			
        while total_get < total_results:
            resp= req.getResponse(shop.sessionkey)
            trades = resp.get('trades_sold_get_response').get('trades', False)
            total_results = resp.get('trades_sold_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
	
        if total_results < 1:
            shop.last_log = u"时间:%s 在%d小时内没有状态:%s 的订单可下载" % (self.get_datetime_now_str(), shop.sync_interval, shop.tmi_state)
            return True
			
        time_filter = []
        for result in res:
            created_time = datetime.strptime(result.get('created'), '%Y-%m-%d %H:%M:%S')		
            if created_time <= end_time and created_time >= start_time : time_filter.append(result)		
	
        orders = self.remove_duplicate_tmijdi_no(cr, uid, ids, time_filter, shop, context=context)	
		
        normal_list, si_fang_list = self.search_orders_seller_memo(cr, uid, ids, context,orders)
        order_id = order_id2 = 0	
        if normal_list : order_id = self.create_order(cr, uid, ids, normal_list, context = context.update({'is_si_fang':True}) )
        #if si_fang_list : order_id2 = self.create_order(cr, uid, ids, si_fang_list, context = context )	
        #if order_id or order_id2 : shop.write({'import_salesorder':order_id or order_id2})
        if order_id : shop.write({'import_salesorder':order_id})
		
        return order_id
예제 #11
0
    def _search_product(self, cr, uid, ids, product_name = None, start_modified = None, end_modified = None, context=None):
        """
        1) 按商品名称,商品修改时间搜索店铺商品
        2) start_modified、end_modified 都是UTC时间,需要加上8小时传给电商平台
        """
        shop_id = self.browse(cr, uid, ids[0], context= context)
        setDefaultAppInfo(shop_id.appkey, shop_id.appsecret)
        req = ItemsOnsaleGetRequest(shop_id.apiurl, 80)
        req.fields="approve_status,num_iid,title,nick,type,num,list_time,price,modified,delist_time,outer_id"		
        if product_name:
            req.q = product_name
        
        req.page_no = 1
        req.page_size = 100
        total_get = 0
        total_results = 100
        res = []
        while total_get < total_results:
            resp= req.getResponse(shop_id.sessionkey)
            total_results = resp.get('items_onsale_get_response').get('total_results')
		
            if total_results > 0:
                res += resp.get('items_onsale_get_response').get('items').get('item')
            total_get += req.page_size			
            req.page_no = req.page_no + 1
        #
        # 时间需要减去8小时
        for r in res:
            r['modified'] = (datetime.strptime(r['modified'],'%Y-%m-%d %H:%M:%S',) - timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S')
        return res
예제 #12
0
    def search_orders_seller_memo(self, cr, uid, ids, context=None, orders={}):
        port = 80
        shop = self.browse(cr, uid, ids[0], context=context)
        partner_id = shop.partner_id.id
        setDefaultAppInfo(shop.appkey, shop.appsecret)
        req = TradeGetRequest(shop.apiurl, port)
        req.fields = "seller_memo"
        res = []

        for order in orders:

            lines = order["orders"]["order"]
            is_baosui = False
            for line in lines:
                store_code = line.get('store_code') or ''
                if store_code not in ['loewie', '']:
                    is_baosui = True
                    break  # 如果 是 天猫国际 保税仓发货 则跳过此订单
            if is_baosui: continue

            req.tid = order["tid"]
            resp = req.getResponse(shop.sessionkey)
            seller_memo = resp.get('trade_get_response',
                                   '').get('trade', '').get('seller_memo', '')
            order['is_jaycee'] = seller_memo.find(
                u'jaycee订单') >= 0 or seller_memo.find(u'anja订单') >= 0
            order['is_kevin'] = seller_memo.find(
                u'kevin订单') >= 0 or seller_memo.find(u'anja订单') >= 0
            order['is_sz'] = seller_memo.find(u'深圳发货') >= 0
            order['is_hk'] = seller_memo.find(
                u'香港发货') >= 0 or seller_memo.find(u'香港四方转运') >= 0
            res.append(order)
            """			
            if order['is_jaycee'] or order['is_kevin'] or order['is_sz'] or order['is_hk'] or ids[0]==1 : continue  # 如果是 天猫国内店铺(乐易成人用品专营店id==1)的订单 跳过

            lines = order["orders"]["order"]			
            for line in lines:            			
			
                store_code = line.get('store_code') or ''				
                if store_code != 'loewie' : break  # 如果 是 天猫国际 保税仓发货 则跳过此订单
				
                sku_id = line.get('sku_id',False) or line.get('num_iid','')			
                cr.execute("select id from product_tmalljd where ec_sku_id = '%s' limit 1" % sku_id)
                product_tmalljd_ids = 0			
                for i in cr.fetchall():	
                    product_tmalljd_ids = i[0]				
				
                if not product_tmalljd_ids:
                    syncerr = u"订单导入错误: 匹配不到商品。tid=%s, 商品num_iid=%s, outer_sku_id=%s, sku_id=%s " % ( tid, line.get('num_iid', ''),  line.get('outer_sku_id', ''), line.get('sku_id', '') )
                    raise osv.except_osv(u"ERP中不存在以下产品", syncerr)

                product_tmalljd_obj = self.pool.get('product.tmalljd').browse(cr, uid, product_tmalljd_ids, context = context)
                name_template = product_tmalljd_obj.erp_product_id.name_template				
                if name_template.find("ml") < 1 :  # 如果发现产品不是液体则HK-ERP不导入此订单,默认由深圳SZ-ERP发货
                    order['is_sz'] = True
                    break
            """

        return res
예제 #13
0
    def search_orders_by_modified_time(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)
        partner_id = shop.partner_id.id		
        setDefaultAppInfo(shop.appkey, shop.appsecret)
        req = TradesSoldIncrementGetRequest(shop.apiurl,port)
        req.fields="type,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
        req.type = "instant_trade,auto_delivery,guarantee_trade,tmall_i18n"		
		
        if shop.start_modified:
            #date_start = (datetime.strptime( shop.start_modified, '%Y-%m-%d %H:%M:%S',)  + timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S')
            #req.start_modified = date_start
            req.start_modified = shop.start_modified			
        if shop.end_modified:
            #date_end = (datetime.strptime(  shop.end_modified, '%Y-%m-%d %H:%M:%S',)  + timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S')
            #req.end_modified = date_end
            req.end_modified = shop.end_modified			
        
        res = []
        req.page_no = 1
        req.page_size = 100

        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')
            _logger.info("Jimmy total_results :%d" % total_results)				
            if total_results > 0:
                res += trades.get('trade')
            total_get += req.page_size
            req.page_no = req.page_no + 1
            _logger.info("Jimmy page_size :%d" % req.page_size)
            _logger.info("Jimmy total_get :%d" % total_get)	
        # 时间需要减去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.get('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.get('tid'))
        
        orders = self.remove_duplicate_orders(cr, uid, res, context=context)
        #orders = res		
        for trade in orders:
            #try:
            #    #_logger.info("Jimmy before create_order")		
                #order_id = self.create_order(cr, uid, ids, trade, context = context )			
            order_id = self.create_order(cr, uid, ids, trade, context = context )
            #    _logger.info("Jimmy after create_order")				
            #    order_ids.append(order_id)
            #except Exception, e:
            #    syncerr = u"店铺[%s]订单[%s]同步错误: %s" % (shop.name, trade['tid'], e)
            #    self.pool.get('loewieec.error').create(cr, uid, {'name':syncerr, 'shop_id': shop.id}, context = context )
            #    continue
        return order_ids
예제 #14
0
    def get_tmall_time(self, cr, uid, ids, context=None):
        shop = self.browse(cr, uid, ids[0], context=context)
        setDefaultAppInfo(shop.appkey, shop.appsecret)
        req = TimeGetRequest(shop.apiurl, 80)
        resp = req.getResponse(shop.sessionkey)
        ttime = resp.get('time_get_response').get('time', False)

        if ttime:
            shop.tmall_time = ttime
        return True
예제 #15
0
def sendcode(cellphone, code):
    top.setDefaultAppInfo('23313828', '9c58da786b40f4d74bed1a7fb32ab7a1')
    top.getDefaultAppInfo()
    a = top.api.AlibabaAliqinFcSmsNumSendRequest()
    a.sms_type = "normal"
    a.sms_free_sign_name = "登录验证"
    a.sms_param = {
        "code": code,
        "product": "穗源购物"
    }
    a.rec_num = cellphone
    a.sms_template_code = "SMS_5048722"
    a.getResponse()
예제 #16
0
    def search_orders_by_tid(self, cr, uid, ids, context=None):
        port = 80
        shop = self.browse(cr, uid, ids[0], context=context)
        partner_id = shop.partner_id.id
        setDefaultAppInfo(shop.appkey, shop.appsecret)
        req = TradeFullinfoGetRequest(shop.apiurl, port)
        #req.fields="type,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.fields = "type,receiver_name,receiver_state,receiver_city,receiver_district,receiver_address, receiver_zip,receiver_mobile,receiver_phone"
        req.tid = shop.authurl

        resp = req.getResponse(shop.sessionkey)
        trade = resp.get('trade_fullinfo_get_response').get('trade', False)

        return True
예제 #17
0
    def get_losgistic_company_code(self, cr, uid, ids, context=None):	# 		
 
        port = 80
        shop = self.browse(cr, uid, ids[0], context = context)
        setDefaultAppInfo(shop.appkey, shop.appsecret)
        req = LogisticsCompaniesGetRequest(shop.apiurl,port)
        req.fields="id,code,name,reg_mail_no"
        req.order_mode="all"		
			
        resp= req.getResponse(shop.sessionkey)
        companies = resp.get('logistics_companies_get_response').get('logistics_companies', False)
        comp_list = companies.get('logistics_company',False)		

        return comp_list   
예제 #18
0
    def search_orders_by_tid(self, cr, uid, ids, context=None):
        port = 80
        shop = self.browse(cr, uid, ids[0], context=context)
        partner_id = shop.partner_id.id
        setDefaultAppInfo(shop.appkey, shop.appsecret)
        req = TradeFullinfoGetRequest(shop.apiurl, port)

        req.fields = "type,receiver_name,receiver_state,receiver_city,receiver_district,receiver_address, receiver_zip,receiver_mobile,receiver_phone"
        req.tid = shop.authurl

        resp = req.getResponse(shop.sessionkey)
        trade = resp.get('trade_fullinfo_get_response').get('trade', False)

        return True
예제 #19
0
    def update_waybill_no_tmall(self, cr, uid, ids, context=None): # LogisticsOfflineSendRequest	 
        port = 80
        shop = self.browse(cr, uid, ids[0], context = context)
        setDefaultAppInfo(shop.appkey, shop.appsecret)
        req = LogisticsOfflineSendRequest(shop.apiurl,port)
        req.company_code="EMS"
	
        sale_id = shop.import_salesorder.id
        domain = [('order_id','=',sale_id)]		
        coe_tmino = self.pool.get('sale.order.line').read_group(cr, uid, domain, ['tmi_jdi_no','coe_no'], ['product_id'], context=context)
        resp= req.getResponse(shop.sessionkey)
        companies = resp.get('logistics_companies_get_response').get('logistics_companies', False)
        comp_list = companies.get('logistics_company',False)
		
        return True		
예제 #20
0
    def search_orders_seller_memo(self, cr, uid, ids, context=None, orders={}):
        port = 80
        shop = self.browse(cr, uid, ids[0], context=context)
        partner_id = shop.partner_id.id
        setDefaultAppInfo(shop.appkey, shop.appsecret)
        req = TradeGetRequest(shop.apiurl, port)
        req.fields = "seller_memo"

        for order in orders:
            req.tid = order["tid"]
            resp = req.getResponse(shop.sessionkey)
            seller_memo = resp.get('trade_get_response',
                                   '').get('trade', '').get('seller_memo', '')
            order['is_jaycee'] = seller_memo.find(u'jaycee订单') >= 0

        return orders
예제 #21
0
def send_message():
    phone = request.args.get('phone')
    if not phone:
        return xtjson.json_params_error(message=u'必须指定一个手机号码')
    if xtcache.get(phone):
        return xtjson.json_params_error(message=u'验证码已发送,60秒内有效')

    app_key = contants.APP_KEY
    app_secret = contants.APP_SECRET
    req = top.setDefaultAppInfo(app_key,app_secret)
    req = top.api.AlibabaAliqinFcSmsNumSendRequest()
    req.extend=""
    req.sms_type='normal'
    req.sms_free_sign_name = contants.ALIDAYU_SIGN_NAME
    graph_captcha = captcha.gene_text()
    req.sms_param = "{code:%s}"% graph_captcha
    req.rec_num = phone.decode('utf-8').encode('ascii')
    req.sms_template_code = contants.ALIDAYU_TEMPLATE_CODE
    try:
        resp = req.getResponse()
        xtcache.set(phone,graph_captcha)
        print xtcache.get(graph_captcha)
        return xtjson.json_result()
    except Exception,e:
        print e
        return xtjson.json_server_error()
예제 #22
0
def sms_captcha(request):
    telephone = request.GET.get('telephone')
    # 获取用户名,用于发送短信验证码显示用户名
    if not telephone:
        return myjson.json_params_error(message=u'必须指定手机号码!')
    if cache.get(telephone):
        return myjson.json_params_error(message=u'验证码已发送,请1分钟后重复发送!')
    # if not username:
    #     return myjson.json_params_error(message=u'必须输入用户名!')
    # 阿里大于APP_KEY及APP_SECRET
    app_key = settings.APP_KEY
    app_secret = settings.APP_SECRET
    req = top.setDefaultAppInfo(app_key, app_secret)
    req = toprequest.api.AlibabaAliqinFcSmsNumSendRequest()
    req.extend = ""
    req.sms_type = 'normal'
    # 签名名称
    req.sms_free_sign_name = settings.SIGN_NAME
    # 随即生成字符串
    captcha = Captcha.gene_text()
    # 设置短信的模板
    req.sms_param = "{code:%s}" % captcha
    # req.sms_param = "{username:%s,code:%s}" % (username, captcha)
    req.rec_num = telephone.decode('utf-8').encode('ascii')
    req.sms_template_code = settings.TEMPLATE_CODE
    try:
        resp = req.getResponse()
        cache.set(telephone, captcha, 120)
        return myjson.json_result()
    except Exception, e:
        print e
        return myjson.json_server_error()
예제 #23
0
    def search_product_sku(self, cr, uid, ids, num_iids=None, context=None):

        port = 80
        shop = self.browse(cr, uid, ids[0], context = context)
        setDefaultAppInfo(shop.appkey, shop.appsecret)
        req = ItemSkusGetRequest(shop.apiurl,port)
        req.fields="sku_id, num_iid, properties, price, status, memo, properties_name, outer_id,quantity,barcode,change_prop,sku_spec_id,extra_id"
        
        if not num_iids : 
            req.num_iids = shop.tokenurl			
        else: 
            req.num_iids = num_iids
			
        resp= req.getResponse(shop.sessionkey)
        skus = resp.get('item_skus_get_response').get('skus', False).get('sku',False)

        return skus
예제 #24
0
 def load_configure(self):
     cfg = ConfigParser()
     cfg.read(assign_path, "utf-8")
     self.appkey = cfg.get("TBK", "appkey")
     self.secret = cfg.get("TBK", "secret")
     self.user_id = cfg.getint("TBK", "user_id")
     self.site_id = cfg.getint("TBK", "site_id")
     self.adzone_id = cfg.getint("TBK", "adzone_id")
     self.home_id = cfg.get("YNOTE", "home_id")
     self.test_item_id = cfg.getint("TBK", "test_item_id")
     self.test_finger_id = cfg.getint("TBK", "test_finger_id")
     self.uland_url = cfg.get("TBK", "uland_url")
     self.unlogin_id = cfg.get("YNOTE", "unlogin_id")
     self.cookie = cfg.get("YNOTE", "cookie")[1:-1]
     self.api_key = cfg.get("TBK", "apikey")
     self.assign_rec = cfg.get("YNOTE", "assign_email").split(",")
     cookie_de = decoder_cookie(self.cookie)
     self.cstk = cookie_de[self.CSTK_KEY] if self.CSTK_KEY in cookie_de else ""
     top.setDefaultAppInfo(self.appkey, self.secret)
예제 #25
0
def ali_cms(telephone, captcha):
    app_key = constants.ALIDAYU_APP_KEY
    app_secret = constants.ALIDAYU_APP_SECRET
    req = top.setDefaultAppInfo(app_key, app_secret)
    req = top.api.AlibabaAliqinFcSmsNumSendRequest()
    req.extend = ""
    req.sms_type = 'normal'
    req.sms_free_sign_name = constants.ALIDAYU_SIGN_NAME

    req.sms_param = constants.ALIDAYU_SMS_PARAMS % (captcha)

    req.rec_num = telephone.decode('utf-8').encode('ascii')
    req.sms_template_code = constants.ALIDAYU_TEMPLATE_CODE
    resp = req.getResponse()
    return resp
예제 #26
0
    def update_tmi_jdi_no_state(self, cr, uid, ids, context=None):
        port = 80
        shop = self.browse(cr, uid, ids[0], context=context)
        partner_id = shop.partner_id.id
        setDefaultAppInfo(shop.appkey, shop.appsecret)
        req = TradeGetRequest(shop.apiurl, port)
        req.fields = "seller_memo"
        res = []

        for order in orders:

            lines = order["orders"]["order"]
            is_baosui = False
            for line in lines:
                store_code = line.get('store_code') or ''
                if store_code not in ['loewie', '']:
                    is_baosui = True
                    break  # 如果 是 天猫国际 保税仓发货 则跳过此订单
            if is_baosui: continue

            req.tid = order["tid"]
            resp = req.getResponse(shop.sessionkey)
            seller_memo = resp.get('trade_get_response',
                                   '').get('trade', '').get('seller_memo', '')
예제 #27
0
    def search_orders_seller_memo(self, cr, uid, ids, context=None, orders = {}):
        port = 80
        shop = self.browse(cr, uid, ids[0], context = context)
        partner_id = shop.partner_id.id		
        setDefaultAppInfo(shop.appkey, shop.appsecret)
        req = TradeGetRequest(shop.apiurl,port) 		
        req.fields="seller_memo"
        normal_list = []		
        si_fang_list = []		
		
        for order in orders:            	
            req.tid = order["tid"]
            resp= req.getResponse(shop.sessionkey)
            seller_memo = resp.get('trade_get_response','').get('trade','').get('seller_memo','')
            order['is_si_fang'] = seller_memo.find(u'香港四方转运') >= 0  			
            order['is_kevin'] = seller_memo.find(u'kevin订单') >= 0 or seller_memo.find(u'anja订单') >= 0 or seller_memo.find(u'jaycee订单') >= 0
            order['is_hk'] = seller_memo.find(u'香港发货') >= 0				
            order['is_sz'] = seller_memo.find(u'深圳发货') >= 0	
            if order['is_si_fang'] : 
                si_fang_list.append(order)
                continue				
            normal_list.append(order)			
					
        return normal_list, si_fang_list
예제 #28
0
    def search_orders_by_created_time(self,
                                      cr,
                                      uid,
                                      ids,
                                      context=None,
                                      status=[]):
        port = 80
        shop = self.browse(cr, uid, ids[0], context=context)
        partner_id = shop.partner_id.id
        setDefaultAppInfo(shop.appkey, shop.appsecret)
        req = TradesSoldGetRequest(shop.apiurl, port)
        req.fields = "sid,tid,orders.num,orders.store_code,orders.num_iid,orders.sku_id,orders.oid, orders.total_fee,orders.payment,orders.outer_sku_id"
        req.type = "instant_trade,auto_delivery,guarantee_trade,tmall_i18n"

        ctx_start_time = context.get('start_time', False)
        ctx_start_time = ctx_start_time and (datetime.strptime(
            ctx_start_time, '%Y-%m-%d %H:%M:%S') + timedelta(hours=8))

        ctx_end_time = context.get(
            'end_time', False)  # datetime.strptime(string, "%Y-%m-%d-%H")
        ctx_end_time = ctx_end_time and datetime.strptime(
            ctx_end_time, '%Y-%m-%d %H:%M:%S') + timedelta(hours=8)
        req.end_date = ctx_end_time and ctx_end_time.strftime(
            '%Y-%m-%d %H:%M:%S') or self.get_datetime_now()

        hours_interval = shop.sync_interval
        if not hours_interval: hours_interval = 24

        req.start_date = ctx_start_time or (
            ctx_end_time and
            (ctx_end_time - timedelta(hours=hours_interval)
             ).strftime('%Y-%m-%d %H:%M:%S')) or (datetime.now() - timedelta(
                 hours=hours_interval - 8)).strftime('%Y-%m-%d %H:%M:%S')

        res = []
        if len(status) < 1:
            status.append(shop.tmi_state or 'WAIT_SELLER_SEND_GOODS')

        for order_status in status:
            req.status = order_status
            req.page_no = 1
            req.page_size = 100
            total_get = 0
            total_results = 100
            while total_get < total_results:
                resp = req.getResponse(shop.sessionkey)
                trades = resp.get('trades_sold_get_response').get(
                    'trades', False)
                total_results = resp.get('trades_sold_get_response').get(
                    'total_results')
                _logger.info("Jimmy total_results :%d" % total_results)
                if total_results > 0:
                    res += trades.get('trade')
                total_get += req.page_size
                req.page_no = req.page_no + 1

        if total_results < 1:
            shop.last_log = u"在%d小时内没有状态:%s 的订单可下载" % (shop.sync_interval,
                                                       shop.tmi_state)
            return True

        orders = self.remove_duplicate_tmijdi_no(cr,
                                                 uid,
                                                 ids,
                                                 res,
                                                 shop,
                                                 context=context)
        marked_orders = self.search_orders_seller_memo(cr, uid, ids, context,
                                                       orders)
        order_id = self.create_order(cr,
                                     uid,
                                     ids,
                                     marked_orders,
                                     context=context)
        self.create_sz_salesorder_tmi(cr,
                                      uid,
                                      ids,
                                      marked_orders,
                                      context=context)
        if order_id: shop.import_salesorder = order_id
        return order_id
예제 #29
0
__author__ = 'xlrtx'
import top
import config as config
top.setDefaultAppInfo(config.top['key'], config.top['secret'])  # top kek
예제 #30
0
    def search_orders_by_created_time(self,
                                      cr,
                                      uid,
                                      ids,
                                      date_start=None,
                                      date_end=None,
                                      status='WAIT_SELLER_SEND_GOODS',
                                      context=None):
        port = 80
        shop = self.browse(cr, uid, ids[0], context=context)
        partner_id = shop.partner_id.id
        setDefaultAppInfo(shop.appkey, shop.appsecret)
        req = TradesSoldGetRequest(shop.apiurl, port)
        req.fields = "type,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 = shop.tmi_state
        req.type = "instant_trade,auto_delivery,guarantee_trade,tmall_i18n"
        hours_interval = shop.sync_interval
        if hours_interval: hours_interval -= 8
        else: hours_interval = 16
        req.start_created = (
            datetime.now() -
            timedelta(hours=hours_interval)).strftime('%Y-%m-%d %H:%M:%S')
        req.end_created = (datetime.now() +
                           timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S')

        res = []
        req.page_no = 1
        req.page_size = 100

        total_get = 0
        total_results = 100
        while total_get < total_results:
            resp = req.getResponse(shop.sessionkey)
            trades = resp.get('trades_sold_get_response').get('trades', False)
            total_results = resp.get('trades_sold_get_response').get(
                'total_results')
            _logger.info("Jimmy total_results :%d" % total_results)
            if total_results > 0:
                res += trades.get('trade')
            total_get += req.page_size
            req.page_no = req.page_no + 1

        if total_results < 1:
            shop.last_log = u"在%d小时内没有状态:%s 的订单可下载" % (shop.sync_interval,
                                                       shop.tmi_state)
            return True
        # 时间需要减去8小时
        # 单号加上店铺前缀
        order_ids = []
        for trade in res:
            trade['created'] = (datetime.strptime(
                trade.get('created'),
                '%Y-%m-%d %H:%M:%S',
            ) - timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S')
            trade['pay_time'] = (datetime.strptime(
                (trade.get('pay_time', False) or '2016-01-01 00:00:01'),
                '%Y-%m-%d %H:%M:%S',
            ) - timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S')

        #orders = self.remove_duplicate_orders(cr, uid, res, context=context)
        #for trade in orders:
        orders = self.remove_duplicate_tmijdi_no(cr,
                                                 uid,
                                                 ids,
                                                 res,
                                                 shop,
                                                 context=context)
        order_id = self.create_order(cr, uid, ids, orders, context=context)
        shop.import_salesorder = order_id
        return order_id
예제 #31
0
파일: inv.py 프로젝트: ibd-zhe/tbapi
 def __init__(self):
     top.setDefaultAppInfo("21206983", "2b7aa50061dcc3aba1a5777b55d89085")
     self.session = '6201812c38514ee9fddace5eeZZee6f8aee063af7653a82894689296'
예제 #32
0
import re
from  urllib.request import urlretrieve
from datetime import datetime
import threading
import os
import top

current_path = os.path.dirname(os.path.abspath(__file__))

appkey = 24822866
secret = '9ef7c4a3efc58c0312b9b3f6e8d974db'
adzone_id = 317500099
url = 'eco.taobao.com'
port = '80'

top.setDefaultAppInfo(appkey, secret)

# 通过淘宝客API搜索优惠券
def get_tk_coupon(kw,size):
    req = top.api.TbkDgItemCouponGetRequest()
    req.set_app_info(top.appinfo(appkey, secret))

    req.adzone_id = adzone_id
    req.platform = 2
    req.page_size = size
    req.q = kw
    req.page_no = 1
    try:
        resp = req.getResponse()
        for r in resp['tbk_dg_item_coupon_get_response']['results']['tbk_coupon']:
            coupon_url = r['coupon_click_url']