a lot changes
This commit is contained in:
parent
9847767661
commit
cd02efa318
|
@ -747,14 +747,14 @@ class MercadoLibre:
|
|||
dev_sales.append(return_sale)
|
||||
return dev_sales
|
||||
|
||||
def create_lines_sale(self, sale, sale_, freight=False):
|
||||
def create_lines_sale(self, sale, sale_items, sfm_id, freight=False):
|
||||
_pool = Pool()
|
||||
SaleLine = _pool.get('sale.line')
|
||||
Product = _pool.get('product.product')
|
||||
create_lines = []
|
||||
sale_items = sale_['order_items']
|
||||
# sale_items = sale_['order_items']
|
||||
ctx = self._get_context()
|
||||
sfm_id = sale_items[0]['shipping']['id']
|
||||
# sfm_id = sale_items[0]['shipping']['id']
|
||||
# reference = sale.reference.split(',')
|
||||
# reference_order = str(sale_['id'])
|
||||
# if reference_order not in reference:
|
||||
|
@ -762,15 +762,14 @@ class MercadoLibre:
|
|||
# sale.save()
|
||||
with Transaction().set_context(ctx):
|
||||
for line in sale_items:
|
||||
item = line['order_items'][0]
|
||||
sku_code = item['item']['seller_sku']
|
||||
sku_code = line['item']['seller_sku']
|
||||
|
||||
if sku_code:
|
||||
generic = False
|
||||
if sku_code.count('+') > 0:
|
||||
codes = sku_code.split('+')
|
||||
line['unit_price'] = Decimal(
|
||||
round((item['unit_price'] / 2), 2))
|
||||
round((line['unit_price'] / 2), 2))
|
||||
else:
|
||||
codes = [sku_code]
|
||||
|
||||
|
@ -792,15 +791,15 @@ class MercadoLibre:
|
|||
gettext('sale_web_channel.msg_product_not_found', s=self.generic_product.rec_name))
|
||||
for product in products:
|
||||
Tax = _pool.get('account.tax')
|
||||
un_price = Tax.reverse_compute(Decimal(item['unit_price']),
|
||||
un_price = Tax.reverse_compute(Decimal(line['unit_price']),
|
||||
product.customer_taxes_used)
|
||||
create_lines.append({
|
||||
'sale': sale.id,
|
||||
'type': 'line',
|
||||
'unit': product.default_uom.id,
|
||||
'quantity': item['quantity'],
|
||||
'quantity': line['quantity'],
|
||||
'unit_price': round(Decimal(un_price), 3),
|
||||
'unit_price_full': Decimal(item['unit_price']),
|
||||
'unit_price_full': Decimal(line['unit_price']),
|
||||
'product': product.id,
|
||||
'taxes': [('add', product.customer_taxes_used)],
|
||||
'description': description,
|
||||
|
@ -854,9 +853,20 @@ class MercadoLibre:
|
|||
_pool = Pool()
|
||||
Sale = _pool.get('sale.sale')
|
||||
# reference = '%' + str(sale_['id']).split(',')[0] + '%'
|
||||
ids = [str(order['id']) for order in sale_['orders']]
|
||||
pack_id = sale_['id'][0]
|
||||
reference = ', '.join(ids)
|
||||
try:
|
||||
ids = [str(order['id']) for order in sale_['orders']]
|
||||
pack_id = str(sale_['id']).split(',')[0]
|
||||
reference = ', '.join(ids)
|
||||
sfm_id = sale_['order_items'][0]['shipping']['id']
|
||||
sale_id = str(sale_['id']).split(',')[1]
|
||||
sale_items = sale_['order_items'][0]['order_items']
|
||||
except KeyError:
|
||||
ids = sale_['id']
|
||||
pack_id = None
|
||||
reference = sale_['id']
|
||||
sfm_id = sale_['shipping']['id']
|
||||
sale_id = sale_['id']
|
||||
sale_items = sale_['order_items']
|
||||
dom = [
|
||||
('reference', 'like', reference)
|
||||
]
|
||||
|
@ -874,10 +884,8 @@ class MercadoLibre:
|
|||
sale_data = sale_['order_items'][0]
|
||||
Party = _pool.get('party.party')
|
||||
User = _pool.get('res.user')
|
||||
sfm_id = sale_data['shipping']['id']
|
||||
shipment_ = self.get_shipment_api(sfm_id)
|
||||
if sale_.get('buyer'):
|
||||
sale_id = str(sale_['id']).split(',')[1]
|
||||
billing_info = self.get_billing_info_api(sale_id)
|
||||
customer = sale_['buyer']
|
||||
dom_party = [('id_reference', '=', str(customer['id']))]
|
||||
|
@ -920,12 +928,12 @@ class MercadoLibre:
|
|||
'shipment_address': Party.address_get(party, type='delivery'),
|
||||
'description': 'VENTA WEB ',
|
||||
'web_shop': self.id,
|
||||
'web_id': pack_id,
|
||||
'web_id': pack_id if pack_id else sale_id,
|
||||
'invoice_type': self.invoice_type,
|
||||
'pack_id': pack_id,
|
||||
}])
|
||||
generic = self.create_lines_sale(
|
||||
sale, sale_, freight=True)
|
||||
sale, sale_items, sfm_id, freight=True)
|
||||
sale.untaxed_amount_cache = sale.untaxed_amount
|
||||
if sale_['status'] == 'cancelled':
|
||||
sale.state = 'cancelled'
|
||||
|
@ -967,3 +975,20 @@ class MercadoLibre:
|
|||
)
|
||||
# return access_token, refresh_token, client_id, client_secret
|
||||
return access_token
|
||||
|
||||
def _validate_number_id(self, number_id, access_token):
|
||||
URI = 'https://api.mercadolibre.com/packs/%s?access_token=%s' % (
|
||||
number_id, access_token)
|
||||
result = self.get_response(URI).json()
|
||||
if result['status'] != 404:
|
||||
return self.validate_sale(result)
|
||||
else:
|
||||
URI = 'https://api.mercadolibre.com/orders/%s?access_token=%s' % (
|
||||
number_id, access_token)
|
||||
result = self.get_response(URI).json()
|
||||
if result['pack_id']:
|
||||
URI = 'https://api.mercadolibre.com/packs/%s?access_token=%s' % (
|
||||
result['pack_id'], access_token)
|
||||
result2 = self.get_response(URI).json()
|
||||
return self.validate_sale(result2)
|
||||
return self._create_sale(result)
|
||||
|
|
7
web.py
7
web.py
|
@ -236,14 +236,11 @@ class SynchronizeChannelOrders(Wizard):
|
|||
mercado_libre = MercadoLibre(channel)
|
||||
if operation == 'especific_order':
|
||||
order_id = self.start.order_id
|
||||
URI = 'https://api.mercadolibre.com/packs/%s?access_token=%s' % (
|
||||
order_id, channel.access_token)
|
||||
result = mercado_libre.get_response(URI).json()
|
||||
result = mercado_libre._validate_number_id(order_id, channel.access_token)
|
||||
if not result:
|
||||
raise ErrorSynchronizingSale(
|
||||
gettext('sale_web_channel.msg_error_synchronizing_sale', s=result))
|
||||
print(result, 'este es el result')
|
||||
sale_created = mercado_libre.validate_sale(result)
|
||||
sale_created = result
|
||||
if sale_created:
|
||||
generic_code = self.start.channel.generic_product.code if self.start.channel.generic_product else None
|
||||
product_generic = [
|
||||
|
|
|
@ -328,6 +328,7 @@ class SynchronizeChannelOrders(Wizard):
|
|||
if not result:
|
||||
raise ErrorSynchronizingSale(
|
||||
gettext('sale_web_channel.msg_error_synchronizing_sale', s=result))
|
||||
print(result)
|
||||
sale_created = channel.validate_sale(result)
|
||||
if sale_created:
|
||||
generic_code = self.start.channel.generic_product.code if self.start.channel.generic_product else None
|
||||
|
|
Loading…
Reference in New Issue