[MERGE] Forward-port 7.0 up to 9411a2da
authorOlivier Dony <odo@openerp.com>
Fri, 1 Aug 2014 21:01:57 +0000 (23:01 +0200)
committerOlivier Dony <odo@openerp.com>
Fri, 1 Aug 2014 21:01:57 +0000 (23:01 +0200)
addons/product_visible_discount/product_visible_discount.py
openerp/addons/base/res/res_partner_view.xml
openerp/osv/orm.py

index 605a71e..cdc858d 100644 (file)
@@ -77,10 +77,15 @@ class sale_order_line(osv.osv):
             list_price = pricelist_obj.price_get(cr, uid, [pricelist],
                     product.id, qty or 1.0, partner_id, {'uom': uom,'date': date_order })
 
-            pricelists = pricelist_obj.read(cr,uid,[pricelist],['visible_discount'])
+            so_pricelist = pricelist_obj.browse(cr, uid, pricelist, context=context)
 
             new_list_price = get_real_price(list_price, product.id, qty, uom, pricelist)
-            if len(pricelists)>0 and pricelists[0]['visible_discount'] and list_price[pricelist] != 0 and new_list_price != 0:
+            if so_pricelist.visible_discount and list_price[pricelist] != 0 and new_list_price != 0:
+                if so_pricelist.currency_id.id != product.company_id.currency_id.id:
+                    # new_list_price is in company's currency while price in pricelist currency
+                    new_list_price = self.pool['res.currency'].compute(cr, uid,
+                        product.company_id.currency_id.id, so_pricelist.currency_id.id,
+                        new_list_price, context=context)
                 discount = (new_list_price - price) / new_list_price * 100
                 if discount > 0:
                     result['price_unit'] = new_list_price
index e658ddc..3c3509b 100644 (file)
@@ -31,6 +31,7 @@
                     <group col="4">
                         <field name="name"/>
                         <field name="shortcut"/>
+                        <field name="domain"/>
                     </group>
                 </form>
             </field>
                             <field name="fax"/>
                             <field name="user_ids" invisible="1"/>
                             <field name="email" widget="email" attrs="{'required': [('user_ids','!=', [])]}"/>
-                            <field name="title" domain="[('domain', '=', 'contact')]"
-                                options='{"no_open": True}' attrs="{'invisible': [('is_company','=', True)]}" />
+                            <field name="title" domain="[('domain','=','contact')]" options='{"no_open": True}' attrs="{'invisible': [('is_company','=',True)]}" context="{'default_domain': 'contact'}"/>
+                            <field name="title" domain="[('domain','=','partner')]" options='{"no_open": True}' attrs="{'invisible': [('is_company','=',False)]}" context="{'default_domain': 'partner'}"/>
                         </group>
                     </group>
 
index 808276c..cf73a69 100644 (file)
@@ -1394,6 +1394,16 @@ class BaseModel(object):
                 # Failed to write, log to messages, rollback savepoint (to
                 # avoid broken transaction) and keep going
                 cr.execute('ROLLBACK TO SAVEPOINT model_load_save')
+            except Exception, e:
+                message = (_('Unknown error during import:') +
+                           u' %s: %s' % (type(e), unicode(e)))
+                moreinfo = _('Resolve other errors first')
+                messages.append(dict(info, type='error',
+                                     message=message,
+                                     moreinfo=moreinfo))
+                # Failed for some reason, perhaps due to invalid data supplied,
+                # rollback savepoint and keep going
+                cr.execute('ROLLBACK TO SAVEPOINT model_load_save')
         if any(message['type'] == 'error' for message in messages):
             cr.execute('ROLLBACK TO SAVEPOINT model_load')
             ids = False
@@ -4038,6 +4048,8 @@ class BaseModel(object):
             self._transient_vacuum(cr, user)
 
         self.check_access_rights(cr, user, 'create')
+        
+        vals = self._add_missing_default_values(cr, user, vals, context)
 
         if self._log_access:
             for f in LOG_ACCESS_COLUMNS:
@@ -4045,7 +4057,6 @@ class BaseModel(object):
                     _logger.warning(
                         'Field `%s` is not allowed when creating the model `%s`.',
                         f, self._name)
-        vals = self._add_missing_default_values(cr, user, vals, context)
 
         tocreate = {}
         for v in self._inherits: