Hello,
can anyone please help me , how to import products GetLowestOfferListingsForSKU.
Below is the code for it.
getting error "results = bag.GetLowestOfferListingsForSKUResponse.GetLowestOfferListingsForSKUResult "
"AttributeError: 'str' object has no attribute 'GetLowestOfferListingsForSKUResponse'"
def make_request_product2(self, cr, uid, ids, request, section='/Products/2011-10-01', Version='2011-10-01'):
amazon_obj = self.get_active_amazon(cr, uid, ids)
domain = amazon_obj.domain
user_agent = amazon_obj.user_agent
secret_key = amazon_obj.secret_key
data = {
'AWSAccessKeyId' : amazon_obj.aws_access_key_id,
'SellerId' : amazon_obj.seller_id,
'MarketplaceId' : amazon_obj.marketplace_id,
'SignatureMethod': 'HmacSHA256',
'SignatureVersion': '2',
'Timestamp': datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ"),
'Version': Version
}
data.update(request)
request_description = '&'.join(['%s=%s' % (k, urllib.quote(data[k], safe='-_.~').encode('utf-8')) for k in sorted(data)])
signature = self.calc_signature(domain, secret_key, request_description, section)
request = '%s%s?%s&Signature=%s' % (domain, section, request_description, urllib.quote(signature))
try:
xml = urllib2.urlopen(urllib2.Request(request, headers={'User-Agent': user_agent})).read()
except urllib2.URLError, e:
print e.code
xml = e.read()
if 'ErrorResponse' in xml:
print xml
return self.xml_to_dict(xml)
def import_best_price(self, cr, uid, ids, all_sku=[]):
print 'import_best_price--------------------------',all_sku
all_sku = []
if not all_sku:
cr.execute("SELECT default_code from product_product")
all_sku = [x[0] for x in cr.fetchall()]
prod_pool = self.pool.get('product.product')
data = {'Action' : 'GetLowestOfferListingsForSKU'}
count = 1
for amazon_sku in all_sku:
if not amazon_sku:
continue
data['SellerSKUList.SellerSKU.'+(str(count))] = amazon_sku
count += 1
# Get Lowest Price
bag = self.make_request_product2(cr, uid, ids, data, section='/Products/2011-10-01', Version='2011-10-01')
results = bag.GetLowestOfferListingsForSKUResponse.GetLowestOfferListingsForSKUResult
if not isinstance(results, list):
results = [results]
best_price = 0.0
for result in results:
if hasattr(result, 'Error'):
continue
sku = result.Product.Identifiers.SKUIdentifier.SellerSKU
prices = []
lowest_offers = []
if result.Product.LowestOfferListings:
lowest_offers = result.Product.LowestOfferListings.LowestOfferListing
if not isinstance(lowest_offers, list):
lowest_offers = [lowest_offers]
for offer in lowest_offers:
if offer:
best_price = float(offer.Price.ListingPrice.Amount)
prices.append(best_price)
print sku, prices
if prices:
prod_id = prod_pool.search(cr, uid, [('default_code','=',sku)])
if prod_id:
prod_pool.write(cr, uid, prod_id, {'price_best': min(prices) })
# Get My Price
data['Action'] = 'GetMyPriceForSKU'
bag = self.make_request_product2(cr, uid, ids, data, section='/Products/2011-10-01', Version='2011-10-01')
results = bag.GetMyPriceForSKUResponse.GetMyPriceForSKUResult
if not isinstance(results, list):
results = [results]
for result in results:
if hasattr(result, 'Error'):
continue
sku = result.Product.Identifiers.SKUIdentifier.SellerSKU
offers = result.Product.Offers
if not isinstance(offers, list):
offers = [offers]
for offer in offers:
if offer:
my_price = float(offer.Offer.BuyingPrice.ListingPrice.Amount)
print sku, my_price
prod_id = prod_pool.search(cr, uid, [('default_code','=',sku)])
if prod_id:
prod_pool.write(cr, uid, prod_id, {'price_mine': my_price })