a lot changes

This commit is contained in:
Elvis 2023-12-05 17:34:38 -05:00
parent 9847767661
commit cd02efa318
3 changed files with 44 additions and 21 deletions

View File

@ -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
View File

@ -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 = [

View File

@ -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