[FIX] website_sale: order data refresh problem

bzr revid: dle@openerp.com-20140404102512-72x74ys4k6whk8ss
This commit is contained in:
Denis Ledoux 2014-04-04 12:25:12 +02:00
parent effa87f794
commit 368afae722
4 changed files with 17 additions and 17 deletions

View File

@ -58,20 +58,18 @@ class sale_order(osv.Model):
result.update(carrier_id=order.carrier_id.id)
return result
def _delivery_unset(self, cr, uid, order, context=None):
line_ids = [line.id for line in order.order_line if line.is_delivery]
self.pool['sale.order.line'].unlink(cr, uid, line_ids, context=context)
order.refresh()
return True
def _delivery_unset(self, cr, uid, ids, context=None):
sale_obj = self.pool['sale.order.line']
line_ids = sale_obj.search(cr, uid, [('order_id', 'in', ids), ('is_delivery', '=', True)],context=context)
sale_obj.unlink(cr, uid, line_ids, context=context)
def delivery_set(self, cr, uid, ids, context=None):
line_obj = self.pool.get('sale.order.line')
grid_obj = self.pool.get('delivery.grid')
carrier_obj = self.pool.get('delivery.carrier')
acc_fp_obj = self.pool.get('account.fiscal.position')
self._delivery_unset(cr, uid, ids, context=context)
for order in self.browse(cr, uid, ids, context=context):
self._delivery_unset(cr, uid, order, context=context)
grid_id = carrier_obj.grid_get(cr, uid, [order.carrier_id.id], order.partner_shipping_id.id)
if not grid_id:
raise osv.except_osv(_('No Grid Available!'), _('No grid matching for this carrier!'))

View File

@ -604,9 +604,8 @@ class Ecommerce(http.Controller):
else:
shipping_partner_id = order.partner_invoice_id.id
values = {
'order': sale_order_obj.browse(cr, SUPERUSER_ID, order.id, context=context)
}
values = {}
values['website_sale_order'] = values['order'] = sale_order_obj.browse(cr, SUPERUSER_ID, order.id, context=context)
values['errors'] = sale_order_obj._get_errors(cr, uid, order, context=context)
values.update(sale_order_obj._get_website_data(cr, uid, order, context=context))

View File

@ -885,7 +885,7 @@
<h1 class="mb32">Validate Order</h1>
<t t-foreach="errors" t-as="error">
<div class="alert alert-danger" t-if="error">
<h3><t t-esc="error[0]"/></h3>
<h4><t t-esc="error[0]"/></h4>
<t t-esc="error[1]"/>
</div>
</t>

View File

@ -64,15 +64,16 @@ class SaleOrder(orm.Model):
return False
if all(line.product_id.type == "service" for line in order.website_order_line):
order.write({'carrier_id': None}, context=context)
self.pool['sale.order']._delivery_unset(cr, SUPERUSER_ID, order, context=context)
self.pool['sale.order']._delivery_unset(cr, SUPERUSER_ID, [order.id], context=context)
return True
else:
carrier_id = force_carrier_id or order.carrier_id.id
if force_carrier_id or not carrier_id or not carrier_id in self._get_delivery_methods(cr, uid, order, context=context):
self.pool['sale.order']._delivery_unset(cr, SUPERUSER_ID, order, context=context)
carrier_ids = self.pool.get('delivery.carrier').search(cr, uid, [('website_published','=',True)], context=context)
if force_carrier_id:
carrier_ids.insert(0, force_carrier_id)
carrier_ids = self._get_delivery_methods(cr, uid, order, context=context)
if carrier_id not in carrier_ids:
carrier_id = False
else:
carrier_ids.insert(0, carrier_ids.pop(carrier_id))
if force_carrier_id or not carrier_id or not carrier_id in carrier_ids:
for delivery_id in carrier_ids:
grid_id = carrier_obj.grid_get(cr, SUPERUSER_ID, [delivery_id], order.partner_shipping_id.id)
if grid_id:
@ -81,6 +82,8 @@ class SaleOrder(orm.Model):
order.write({'carrier_id': carrier_id}, context=context)
if carrier_id:
order.delivery_set(context=context)
else:
order._delivery_unset(context=context)
return bool(carrier_id)