Beispiel #1
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
    def search_orders_by_created_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 = 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 = 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_created = shop.start_modified
        #req.start_created = (datetime.now()- timedelta(hours=64)).strftime('%Y-%m-%d %H:%M:%S')
        req.start_created = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        #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_created = shop.end_modified
        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
            _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.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')
            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
Beispiel #3
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
Beispiel #4
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)  #  pay_time,created,buyer_nick,

        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 = []
        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')
            _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

        note = shop.last_log and shop.last_log + chr(10) or ''
        if total_results < 1:
            shop.last_log = note + u"在%d小时内没有状态:%s 的订单可下载" % (
                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_tmi_jdi_no(cr,
                                                  uid,
                                                  ids,
                                                  time_filter,
                                                  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)
        if order_id: shop.import_salesorder = order_id
        return order_id