[MERGE] forward port of branch 8.0 up to d80376a
authorChristophe Simonis <chs@odoo.com>
Tue, 21 Oct 2014 12:33:36 +0000 (14:33 +0200)
committerChristophe Simonis <chs@odoo.com>
Tue, 21 Oct 2014 12:33:36 +0000 (14:33 +0200)
addons/mail/mail_thread.py
addons/point_of_sale/report/pos_order_report.py
addons/point_of_sale/static/src/js/models.js
addons/sale/wizard/sale_make_invoice_advance.py
addons/web/controllers/main.py
openerp/addons/base/res/res_partner.py

index 495b841..4356ee6 100644 (file)
@@ -1612,7 +1612,9 @@ class mail_thread(osv.AbstractModel):
 
         # _mail_flat_thread: automatically set free messages to the first posted message
         if self._mail_flat_thread and model and not parent_id and thread_id:
-            message_ids = mail_message.search(cr, uid, ['&', ('res_id', '=', thread_id), ('model', '=', model)], context=context, order="id ASC", limit=1)
+            message_ids = mail_message.search(cr, uid, ['&', ('res_id', '=', thread_id), ('model', '=', model), ('type', '=', 'email')], context=context, order="id ASC", limit=1)
+            if not message_ids:
+                message_ids = message_ids = mail_message.search(cr, uid, ['&', ('res_id', '=', thread_id), ('model', '=', model)], context=context, order="id ASC", limit=1)
             parent_id = message_ids and message_ids[0] or False
         # we want to set a parent: force to set the parent_id to the oldest ancestor, to avoid having more than 1 level of thread
         elif parent_id:
index 8227590..d1c56e2 100644 (file)
@@ -58,7 +58,7 @@ class pos_order_report(osv.osv):
                     sum(l.qty * u.factor) as product_qty,
                     sum(l.qty * l.price_unit) as price_total,
                     sum((l.qty * l.price_unit) * (l.discount / 100)) as total_discount,
-                    (sum(l.qty*l.price_unit)/sum(l.qty * u.factor))::decimal(16,2) as average_price,
+                    (sum(l.qty*l.price_unit)/sum(l.qty * u.factor))::decimal as average_price,
                     sum(cast(to_char(date_trunc('day',s.date_order) - date_trunc('day',s.create_date),'DD') as int)) as delay_validation,
                     s.partner_id as partner_id,
                     s.state as state,
index 31ede08..4719b82 100644 (file)
@@ -333,13 +333,14 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
                         c.height = height
                     var ctx = c.getContext('2d');
                         ctx.drawImage(self.company_logo,0,0, width, height);
-                    
+
                     self.company_logo_base64 = c.toDataURL();
                     logo_loaded.resolve();
                 };
                 self.company_logo.onerror = function(){
                     logo_loaded.reject();
                 };
+                    self.company_logo.crossOrigin = "anonymous";
                 self.company_logo.src = '/web/binary/company_logo' +'?_'+Math.random();
 
                 return logo_loaded;
index 3d8cc3e..0690223 100644 (file)
@@ -58,6 +58,9 @@ class sale_advance_payment_inv(osv.osv_memory):
         'product_id': _get_advance_product,
     }
 
+    def _translate_advance(self, cr, uid, percentage=False, context=None):
+        return _("Advance of %s %%") if percentage else _("Advance of %s %s")
+
     def onchange_method(self, cr, uid, ids, advance_payment_method, product_id, context=None):
         if advance_payment_method == 'percentage':
             return {'value': {'amount':0, 'product_id':False }}
@@ -104,16 +107,17 @@ class sale_advance_payment_inv(osv.osv_memory):
             if wizard.advance_payment_method == 'percentage':
                 inv_amount = sale.amount_total * wizard.amount / 100
                 if not res.get('name'):
-                    res['name'] = _("Advance of %s %%") % (wizard.amount)
+                    res['name'] = self._translate_advance(cr, uid, percentage=True, context=dict(context, lang=sale.partner_id.lang)) % (wizard.amount)
             else:
                 inv_amount = wizard.amount
                 if not res.get('name'):
                     #TODO: should find a way to call formatLang() from rml_parse
                     symbol = sale.pricelist_id.currency_id.symbol
                     if sale.pricelist_id.currency_id.position == 'after':
-                        res['name'] = _("Advance of %s %s") % (inv_amount, symbol)
+                        symbol_order = (inv_amount, symbol)
                     else:
-                        res['name'] = _("Advance of %s %s") % (symbol, inv_amount)
+                        symbol_order = (symbol, inv_amount)
+                    res['name'] = self._translate_advance(cr, uid, context=dict(context, lang=sale.partner_id.lang)) % symbol_order
 
             # determine taxes
             if res.get('invoice_line_tax_id'):
@@ -159,7 +163,6 @@ class sale_advance_payment_inv(osv.osv_memory):
         sale_obj.write(cr, uid, sale_id, {'invoice_ids': [(4, inv_id)]}, context=context)
         return inv_id
 
-
     def create_invoices(self, cr, uid, ids, context=None):
         """ create invoices for the active sales orders """
         sale_obj = self.pool.get('sale.order')
index 908f56c..c057f7c 100644 (file)
@@ -1179,7 +1179,7 @@ class Binary(http.Controller):
         '/web/binary/company_logo',
         '/logo',
         '/logo.png',
-    ], type='http', auth="none")
+    ], type='http', auth="none", cors="*")
     def company_logo(self, dbname=None, **kw):
         imgname = 'logo.png'
         placeholder = functools.partial(get_module_resource, 'web', 'static', 'src', 'img')
index 70f08ac..4f21ea0 100644 (file)
@@ -233,6 +233,7 @@ class res_partner(osv.Model, format_address):
         'date': fields.date('Date', select=1),
         'title': fields.many2one('res.partner.title', 'Title'),
         'parent_id': fields.many2one('res.partner', 'Related Company', select=True),
+        'parent_name': fields.related('parent_id', 'name', type='char', readonly=True, string='Parent name'),
         'child_ids': fields.one2many('res.partner', 'parent_id', 'Contacts', domain=[('active','=',True)]), # force "active_test" domain to bypass _search() override
         'ref': fields.char('Contact Reference', select=1),
         'lang': fields.selection(_lang_get, 'Language',
@@ -591,7 +592,7 @@ class res_partner(osv.Model, format_address):
         for record in self.browse(cr, uid, ids, context=context):
             name = record.name
             if record.parent_id and not record.is_company:
-                name =  "%s, %s" % (record.parent_id.name, name)
+                name = "%s, %s" % (record.parent_name, name)
             if context.get('show_address_only'):
                 name = self._display_address(cr, uid, record, without_company=True, context=context)
             if context.get('show_address'):
@@ -791,7 +792,7 @@ class res_partner(osv.Model, format_address):
             'state_name': address.state_id.name or '',
             'country_code': address.country_id.code or '',
             'country_name': address.country_id.name or '',
-            'company_name': address.parent_id.name or '',
+            'company_name': address.parent_name or '',
         }
         for field in self._address_fields(cr, uid, context=context):
             args[field] = getattr(address, field) or ''