Forward port of 7.0 up to rev 9b87d6f
authorMartin Trigaux <mat@openerp.com>
Fri, 19 Sep 2014 13:28:02 +0000 (15:28 +0200)
committerMartin Trigaux <mat@openerp.com>
Fri, 19 Sep 2014 13:28:02 +0000 (15:28 +0200)
addons/event/event.py
addons/purchase/stock.py
addons/stock/stock.py

index d76c57e..79072a2 100644 (file)
@@ -332,7 +332,7 @@ class event_registration(osv.osv):
             else:
                 template_id = registration.event_id.email_registration_id.id
                 if template_id:
-                    mail_message = self.pool.get('email.template').send_mail(cr,uid,template_id,registration.id)
+                    self.pool.get('email.template').send_mail(cr,uid,template_id,registration.id, context=context)
         return True
 
     def mail_user_confirm(self, cr, uid, ids, context=None):
@@ -342,7 +342,7 @@ class event_registration(osv.osv):
         for registration in self.browse(cr, uid, ids, context=context):
             template_id = registration.event_id.email_confirmation_id.id
             if template_id:
-                mail_message = self.pool.get('email.template').send_mail(cr,uid,template_id,registration.id)
+                self.pool.get('email.template').send_mail(cr,uid,template_id,registration.id, context=context)
         return True
 
     def onchange_contact_id(self, cr, uid, ids, contact, partner, context=None):
index 69f97e7..ccd7c56 100644 (file)
@@ -127,14 +127,23 @@ class stock_partial_picking(osv.osv_memory):
     # Overridden to inject the purchase price as true 'cost price' when processing
     # incoming pickings.
     def _product_cost_for_average_update(self, cr, uid, move):
-        if move.purchase_line_id and move.purchase_line_id and move.purchase_line_id.invoice_lines:
-            cost = move.price_unit
-            for inv_line in move.purchase_line_id.invoice_lines:
-                if inv_line.invoice_id.state not in ('draft', 'cancel'):
-                    inv_currency = inv_line.invoice_id.currency_id.id
-                    company_currency = inv_line.invoice_id.company_id.currency_id.id
-                    cost = self.pool.get('res.currency').compute(cr, uid, inv_currency, company_currency, inv_line.price_unit, round=False, context={'date': inv_line.invoice_id.date_invoice})
-                    return {'cost': cost, 'currency': company_currency}
+        purchase_line = move.purchase_line_id
+        if move.picking_id.purchase_id and purchase_line:
+            if any([x.invoice_id.state not in ('draft', 'cancel') for x in purchase_line.invoice_lines]):
+                # use price set on validated invoices
+                cost = move.price_unit
+                for inv_line in purchase_line.invoice_lines:
+                    if inv_line.invoice_id.state not in ('draft', 'cancel'):
+                        inv_currency = inv_line.invoice_id.currency_id.id
+                        company_currency = inv_line.invoice_id.company_id.currency_id.id
+                        cost = self.pool.get('res.currency').compute(cr, uid, inv_currency, company_currency, inv_line.price_unit, round=False, context={'date': inv_line.invoice_id.date_invoice})
+                        return {'cost': cost, 'currency': company_currency}
+            else:
+                # use price set on the purchase order
+                pur_currency = purchase_line.order_id.currency_id.id
+                company_currency = purchase_line.company_id.currency_id.id
+                cost = self.pool.get('res.currency').compute(cr, uid, pur_currency, company_currency, purchase_line.price_unit, round=False, context={'date': purchase_line.date_order})
+                return {'cost': cost, 'currency': company_currency}
         return super(stock_partial_picking, self)._product_cost_for_average_update(cr, uid, move)
 
     def __get_help_text(self, cursor, user, picking_id, context=None):
index 99d420f..5492b60 100644 (file)
@@ -1198,7 +1198,9 @@ class stock_picking(osv.osv):
             context = {}
         for pick in self.browse(cr, uid, ids, context=context):
             if pick.state in ['done','cancel']:
-                raise osv.except_osv(_('Error!'), _('You cannot remove the picking which is in %s state!')%(pick.state,))
+                # retrieve the string value of field in user's language
+                state = dict(self.fields_get(cr, uid, context=context)['state']['selection']).get(pick.state, pick.state)
+                raise osv.except_osv(_('Error!'), _('You cannot remove the picking which is in %s state!')%(state,))
             else:
                 ids2 = [move.id for move in pick.move_lines]
                 ctx = context.copy()