From 341d9317828c4e54705cd51035e034cfa49aed10 Mon Sep 17 00:00:00 2001 From: Denis Ledoux Date: Mon, 2 May 2016 16:17:09 +0200 Subject: [PATCH 01/16] [FIX] hr_holidays: mail notification on leave request confirm The followers of the departments subscribed to the `Leaves/Allocations Confirmed` are supposed to receive a mail notification when an employee confirms a leave request. It was no longer the case since the below revision: 2be1dfc1ed7c9814cd3dbf4eb4cc95f842f738c2 This revision subscribes the followers of the department following the `confirmed` subtype manually ,on the leave request confirmation, because `message_auto_subscribe` only works on fields for which the value is passed to the `create` or `write` methods, it doesn't work for related/computed fields This can be removed as soon as `department_id` on `hr.holidays` becomes a regular fields or as soon as `message_auto_subscribe` works with related/computed fields. opw-676521 --- addons/hr_holidays/hr_holidays.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/addons/hr_holidays/hr_holidays.py b/addons/hr_holidays/hr_holidays.py index bdce2f9de44..b694b882ca9 100644 --- a/addons/hr_holidays/hr_holidays.py +++ b/addons/hr_holidays/hr_holidays.py @@ -450,6 +450,19 @@ class hr_holidays(osv.osv): return True def holidays_confirm(self, cr, uid, ids, context=None): + for record in self.browse(cr, uid, ids, context=context): + if record.department_id: + # Subscribe the followers of the department following the `confirmed` subtype + # It's done manually because `message_auto_subscribe` only works on fields for which + # the value is passed to the `create` or `write` methods, + # it doesn't work for related/computed fields + # This can be removed as soon as `department_id` on `hr.holidays` becomes a regular + # fields or as soon as `message_auto_subscribe` works with related/computed fields. + confirmed_subtype = self.pool['ir.model.data'].xmlid_to_object(cr, uid, 'hr_holidays.mt_department_holidays_confirmed', context=context) + self.message_subscribe(cr, uid, [record.id], [ + follower.partner_id.id for follower in record.department_id.message_follower_ids + if confirmed_subtype in follower.subtype_ids + ], context=context) return self.write(cr, uid, ids, {'state': 'confirm'}) def holidays_refuse(self, cr, uid, ids, context=None): From 07633cda1eb191419fd6195c47d02568be10b319 Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Mon, 2 May 2016 12:21:40 +0200 Subject: [PATCH 02/16] [FIX] point_of_sale: pass tax_ids to pos_config view It's needed by the onchange on product_id. Without this the price will be correctly computed by `onchange_product_id` but upon saving the record tax_ids will be lost. Closes #11875 Closes #11705 Closes #10378 --- addons/point_of_sale/point_of_sale_view.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/point_of_sale/point_of_sale_view.xml b/addons/point_of_sale/point_of_sale_view.xml index 5720fac7c6c..6765f887d28 100644 --- a/addons/point_of_sale/point_of_sale_view.xml +++ b/addons/point_of_sale/point_of_sale_view.xml @@ -40,6 +40,7 @@ + From e588d85315968f48c98e96b23f4153ee93d950d3 Mon Sep 17 00:00:00 2001 From: Goffin Simon Date: Mon, 2 May 2016 13:16:09 +0200 Subject: [PATCH 03/16] [FIX] product_expiry: 'product_id' in context When creating a new lot from an incoming picking transfer, the product_id is written in the context. opw:674608 --- addons/product_expiry/product_expiry.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/product_expiry/product_expiry.py b/addons/product_expiry/product_expiry.py index d24640f85ed..104b938c67c 100644 --- a/addons/product_expiry/product_expiry.py +++ b/addons/product_expiry/product_expiry.py @@ -58,7 +58,7 @@ class stock_production_lot(osv.osv): # Assign dates according to products data def create(self, cr, uid, vals, context=None): context = dict(context or {}) - context['product_id'] = vals.get('product_id', context.get('default_product_id')) + context['product_id'] = vals.get('product_id', context.get('default_product_id') or context.get('product_id')) return super(stock_production_lot, self).create(cr, uid, vals, context=context) _defaults = { From e94b2f8a3e84a5695873da35bdc44cc1a848a5ae Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Mon, 2 May 2016 12:12:52 +0200 Subject: [PATCH 04/16] [FIX] point_of_sale: display select button on client list after scanning Before this, if you where on the customer selection screen and scanned a customer barcode the customer would be shown, but you were not able to select him. This correctly sets ClientListScreenWidget.new_client to the scanned partner which makes the button toggle. Closes #11874 --- addons/point_of_sale/static/src/js/screens.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/addons/point_of_sale/static/src/js/screens.js b/addons/point_of_sale/static/src/js/screens.js index 15fba3f1975..d9eeb7683b4 100644 --- a/addons/point_of_sale/static/src/js/screens.js +++ b/addons/point_of_sale/static/src/js/screens.js @@ -1023,7 +1023,9 @@ var ClientListScreenWidget = ScreenWidget.extend({ if (this.editing_client) { this.$('.detail.barcode').val(code.code); } else if (this.pos.db.get_partner_by_barcode(code.code)) { - this.display_client_details('show',this.pos.db.get_partner_by_barcode(code.code)); + var partner = this.pos.db.get_partner_by_barcode(code.code); + this.new_client = partner; + this.display_client_details('show', partner); } }, perform_search: function(query, associate_result){ From bbf64347e42833248953229c7e67e6ec6f26dacc Mon Sep 17 00:00:00 2001 From: Aaron Bohy Date: Thu, 28 Apr 2016 11:00:33 +0200 Subject: [PATCH 05/16] [FIX] mail: escape author name in messaging menu --- addons/mail/static/src/js/systray.js | 4 +--- addons/mail/static/src/xml/systray.xml | 1 + 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/addons/mail/static/src/js/systray.js b/addons/mail/static/src/js/systray.js index af442f5606e..5e73042a7aa 100644 --- a/addons/mail/static/src/js/systray.js +++ b/addons/mail/static/src/js/systray.js @@ -111,9 +111,7 @@ var MessagingMenu = Widget.extend({ // Generate last message preview (inline message body and compute date to display) _.each(channels_preview, function (channel) { - channel.last_message_preview = - channel.last_message.displayed_author + ': ' + - chat_manager.get_message_body_preview(channel.last_message.body); + channel.last_message_preview = chat_manager.get_message_body_preview(channel.last_message.body); if (channel.last_message.date.isSame(new Date(), 'd')) { // today channel.last_message_date = channel.last_message.date.format('LT'); } else { diff --git a/addons/mail/static/src/xml/systray.xml b/addons/mail/static/src/xml/systray.xml index 4a987fdf992..2ce26f4d485 100644 --- a/addons/mail/static/src/xml/systray.xml +++ b/addons/mail/static/src/xml/systray.xml @@ -45,6 +45,7 @@
+ :
From 019fcae90ba8302b01554f746b98962b705c6a88 Mon Sep 17 00:00:00 2001 From: Aaron Bohy Date: Tue, 3 May 2016 09:06:06 +0200 Subject: [PATCH 06/16] [FIX] mail: messages sent as reply to previously selected message In Discuss, if a message was selected as message to reply to, it wasn't reset when switching to another channel. So if the user sent a message in that other channel, the message was sent as reply to the previously selected message. This rev. ensures to always unselect messages when switching between channels. Closes #11879 --- addons/mail/static/src/js/client_action.js | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/addons/mail/static/src/js/client_action.js b/addons/mail/static/src/js/client_action.js index 8b10d5eb282..0e27eb10fbb 100644 --- a/addons/mail/static/src/js/client_action.js +++ b/addons/mail/static/src/js/client_action.js @@ -272,12 +272,13 @@ var ChatAction = Widget.extend(ControlPanelMixin, { }, unselect_message: function() { - if (this.channel.type !== 'static' && !this.channel.mass_mailing) { - this.basic_composer.toggle(true); - this.basic_composer.focus(); + this.basic_composer.toggle(this.channel.type !== 'static' && !this.channel.mass_mailing); + this.extended_composer.toggle(this.channel.type !== 'static' && this.channel.mass_mailing); + if (!config.device.touch) { + var composer = this.channel.mass_mailing ? this.extended_composer : this.basic_composer; + composer.focus(); } this.$el.removeClass('o_mail_selection_mode'); - this.extended_composer.toggle(this.channel.mass_mailing); this.thread.unselect(); this.selected_message = null; }, @@ -413,10 +414,6 @@ var ChatAction = Widget.extend(ControlPanelMixin, { .find('.o_mail_chat_button_unstar_all') .toggle(channel.id === "channel_starred"); - self.basic_composer.toggle(channel.type !== 'static' && !channel.mass_mailing); - self.extended_composer.toggle(channel.type !== 'static' && channel.mass_mailing); - self.$el.removeClass('o_mail_selection_mode'); - self.$('.o_mail_chat_channel_item') .removeClass('o_active') .filter('[data-channel-id=' + channel.id + ']') @@ -432,14 +429,14 @@ var ChatAction = Widget.extend(ControlPanelMixin, { // Update control panel before focusing the composer, otherwise focus is on the searchview self.update_cp(); - if (!config.device.touch) { - var composer = channel.mass_mailing ? self.extended_composer : self.basic_composer; - composer.focus(); - } if (config.device.size_class === config.device.SIZES.XS) { self.$('.o_mail_chat_sidebar').hide(); } + // Display and focus the adequate composer, and unselect possibly selected message + // to prevent sending messages as reply to that message + self.unselect_message(); + self.action_manager.do_push_state({ action: self.action.id, active_id: self.channel.id, From fdcd788afb7b4cf7bff7e3e6f858c73112169c4a Mon Sep 17 00:00:00 2001 From: Damien Bouvy Date: Tue, 3 May 2016 10:04:02 +0200 Subject: [PATCH 07/16] [FIX] account: SO reference in register payment wzd Follow up of fix 6f8030a This previous fix removed the reference field when creating an invoice from a sales order since this field was for Supplier Invoices (and is not shown for Customer Invoices). While this males sense, it had the side effect of removing the default value for the "Register Payment" wizard. To keep this wizard populated with the most sensible data, the default is now set to reference or name or number (in that order). opw 676261 --- addons/account/models/account_payment.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/account/models/account_payment.py b/addons/account/models/account_payment.py index b08a17092a9..38ad5ecffc1 100644 --- a/addons/account/models/account_payment.py +++ b/addons/account/models/account_payment.py @@ -248,7 +248,7 @@ class account_payment(models.Model): invoice_defaults = self.resolve_2many_commands('invoice_ids', rec.get('invoice_ids')) if invoice_defaults and len(invoice_defaults) == 1: invoice = invoice_defaults[0] - rec['communication'] = invoice['reference'] + rec['communication'] = invoice['reference'] or invoice['name'] or invoice['number'] rec['currency_id'] = invoice['currency_id'][0] rec['payment_type'] = invoice['type'] in ('out_invoice', 'in_refund') and 'inbound' or 'outbound' rec['partner_type'] = MAP_INVOICE_TYPE_PARTNER_TYPE[invoice['type']] From da3ca72ba3f494fa3030a3b2306287fcb43e8a10 Mon Sep 17 00:00:00 2001 From: Goffin Simon Date: Tue, 3 May 2016 12:25:09 +0200 Subject: [PATCH 08/16] [FIX] sale_mrp: return of _get_anglo_saxon_price_unit This function _get_anglo_saxon_price_unit must always return the price_unit. --- addons/sale_mrp/sale_mrp.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/addons/sale_mrp/sale_mrp.py b/addons/sale_mrp/sale_mrp.py index 8dc89814a3c..c168e0e1770 100644 --- a/addons/sale_mrp/sale_mrp.py +++ b/addons/sale_mrp/sale_mrp.py @@ -144,6 +144,4 @@ class AccountInvoiceLine(models.Model): average_price_unit += factor * self._compute_average_price(prod_qty_done, prod_quantity, prod_moves) price_unit = average_price_unit or price_unit price_unit = uom_obj._compute_qty_obj(self.uom_id, price_unit, self.product_id.uom_id, round=False) - return price_unit - else: - return price_unit + return price_unit From d5abeb2c5b9ff9c22b64a9eb7323bcad9b5767be Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Tue, 3 May 2016 14:18:35 +0200 Subject: [PATCH 09/16] [FIX] base_action_rule: simplification typo in `make_unlink()` --- addons/base_action_rule/base_action_rule.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/base_action_rule/base_action_rule.py b/addons/base_action_rule/base_action_rule.py index 39dd7b1f3e3..76c70e5db11 100644 --- a/addons/base_action_rule/base_action_rule.py +++ b/addons/base_action_rule/base_action_rule.py @@ -274,7 +274,7 @@ class base_action_rule(osv.osv): # check conditions, and execute actions on the records that satisfy them for action in actions: - action._process(action._filter_post(pre[action])) + action._process(action._filter_post(records)) # call original method return unlink.origin(self, **kwargs) From bc23c92c3ed07283bbd40f88ce73024572922a72 Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Fri, 29 Apr 2016 15:48:55 +0200 Subject: [PATCH 10/16] [FIX] mrp: avoid empty cost of produced product If the production flow is in two steps: 1. consume raw material 2. produce manufactured product The total_consume_moves was empty (so computed cost was 0) Include the moves that were already consumed since the last production. This will offer a correct estimation of cost of production in real time for companies producing in several steps. opw-675994 --- addons/mrp/mrp.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py index b94428f91fe..e972a0bfdcf 100644 --- a/addons/mrp/mrp.py +++ b/addons/mrp/mrp.py @@ -1011,6 +1011,11 @@ class mrp_production(osv.osv): total_consume_moves.append(extra_move_id) if production_mode == 'consume_produce': + # add production lines that have already been consumed since the last 'consume & produce' + last_production_date = production.move_created_ids2 and max(production.move_created_ids2.mapped('date')) or False + already_consumed_lines = production.move_lines2.filtered(lambda l: l.date > last_production_date) + total_consume_moves += already_consumed_lines.ids + price_unit = 0 for produce_product in production.move_created_ids: is_main_product = (produce_product.product_id.id == production.product_id.id) and production.product_id.cost_method=='real' From dd6640616ed39bf7702ec4d3a6ec863016b5c952 Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Mon, 2 May 2016 17:23:05 +0200 Subject: [PATCH 11/16] [FIX] mrp: include workcenter cost in total cost Estimate the workcenter cost based on produced quantity so far. The workcenter cost is written on analytic accounts at the end of the production only. A new method _compute_costs_from_production is needed to estimate the workcenter total cost and then divide by the produced unit. opw-675994 --- addons/mrp/mrp.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py index e972a0bfdcf..871fe2a6a10 100644 --- a/addons/mrp/mrp.py +++ b/addons/mrp/mrp.py @@ -802,13 +802,7 @@ class mrp_production(osv.osv): return True def _compute_costs_from_production(self, cr, uid, ids, context=None): - """ Generate workcenter costs and rectify the value of the quant - - Must be called at the end of the production. - The value of the quant was not possible to compute before the end of - the manufacturing order due to the cost of raw manterial and production - costs. The price of the quant was not set in get_price_unit. - """ + """ Generate workcenter costs in analytic accounts""" for production in self.browse(cr, uid, ids): total_cost = self._costs_generate(cr, uid, production) @@ -956,6 +950,16 @@ class mrp_production(osv.osv): total_cost += sum([x.inventory_value for x in consumed_move.quant_ids if x.qty > 0]) return total_cost + def _calculate_workcenter_cost(self, cr, uid, production_id, context=None): + """ Compute the planned production cost from the workcenters """ + production = self.browse(cr, uid, production_id, context=context) + total_cost = 0.0 + for wc_line in production.workcenter_lines: + wc = wc_line.workcenter_id + total_cost += wc_line.hour*wc.costs_hour + wc_line.cycle*wc.costs_cycle + + return total_cost + def action_produce(self, cr, uid, production_id, production_qty, production_mode, wiz=False, context=None): """ To produce final product based on production mode (consume/consume&produce). If Production mode is consume, all stock move lines of raw materials will be done/consumed. @@ -1021,13 +1025,15 @@ class mrp_production(osv.osv): is_main_product = (produce_product.product_id.id == production.product_id.id) and production.product_id.cost_method=='real' if is_main_product: total_cost = self._calculate_total_cost(cr, uid, total_consume_moves, context=context) - price_unit = total_cost / production_qty_uom + production_cost = self._calculate_workcenter_cost(cr, uid, production_id, context=context) + price_unit = (total_cost + production_cost) / production_qty_uom + subproduct_factor = self._get_subproduct_factor(cr, uid, production.id, produce_product.id, context=context) lot_id = False if wiz: lot_id = wiz.lot_id.id qty = min(subproduct_factor * production_qty_uom, produce_product.product_qty) #Needed when producing more than maximum quantity - if is_main_product: + if is_main_product and price_unit: stock_mov_obj.write(cr, uid, [produce_product.id], {'price_unit': price_unit}, context=context) new_moves = stock_mov_obj.action_consume(cr, uid, [produce_product.id], qty, location_id=produce_product.location_id.id, restrict_lot_id=lot_id, context=context) From 6beeec363a09c7b2bf77623db7c156c738eacf2e Mon Sep 17 00:00:00 2001 From: Denis Ledoux Date: Tue, 3 May 2016 18:01:26 +0200 Subject: [PATCH 12/16] [FIX] crm_partner_assign: Interested message subtype When a partner tells he is interested or not by a lead, the customer on the lead must not receive a mail with this information. opw-676729 --- addons/crm_partner_assign/wizard/crm_channel_interested.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/crm_partner_assign/wizard/crm_channel_interested.py b/addons/crm_partner_assign/wizard/crm_channel_interested.py index 76dc52b30f3..3994320f2f9 100644 --- a/addons/crm_partner_assign/wizard/crm_channel_interested.py +++ b/addons/crm_partner_assign/wizard/crm_channel_interested.py @@ -48,7 +48,7 @@ class crm_lead_forward_to_partner(osv.TransientModel): if wizard.comment: message += '

%s

' % wizard.comment for active_id in context.get('active_ids', []): - lead_obj.message_post(cr, uid, active_id, body=message, subtype="mail.mt_comment", context=context) + lead_obj.message_post(cr, uid, active_id, body=message, subtype="mail.mt_note", context=context) if values: lead_obj.write(cr, SUPERUSER_ID, context.get('active_ids', []), values) if wizard.interested: From 86ae7b1e1a2b4e34ed1c8c98055fdabb574e53ff Mon Sep 17 00:00:00 2001 From: Goffin Simon Date: Tue, 3 May 2016 16:37:11 +0200 Subject: [PATCH 13/16] [FIX] website_project_issue: Issues visibility in frontend for portal users The domain used to search the project issues in the website_project_issue controller(['/my', '/my/home']) was useless thanks to the ir.rule portal_issue_rule opw:676447 --- addons/website_project_issue/controllers/main.py | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/addons/website_project_issue/controllers/main.py b/addons/website_project_issue/controllers/main.py index 942fec9da53..98f06c0c281 100644 --- a/addons/website_project_issue/controllers/main.py +++ b/addons/website_project_issue/controllers/main.py @@ -10,15 +10,7 @@ class WebsiteAccount(website_account): def account(self): response = super(WebsiteAccount, self).account() user = request.env.user - # TDE FIXME: shouldn't that be mnaged by the access rule itself ? - # portal projects where you or someone from your company are a follower - project_issues = request.env['project.issue'].search([ - '&', - ('project_id.privacy_visibility', '=', 'portal'), - '|', - ('message_partner_ids', 'child_of', [user.partner_id.commercial_partner_id.id]), - ('message_partner_ids', 'child_of', [user.partner_id.id]) - ]) + project_issues = request.env['project.issue'].search([]) response.qcontext.update({'issues': project_issues}) return response From e664d3074ce478fb0a79db419d6693cc0edc34fb Mon Sep 17 00:00:00 2001 From: "Adrien Peiffer (ACSONE)" Date: Wed, 4 May 2016 11:31:20 +0200 Subject: [PATCH 14/16] [FIX] account: A negative amount with sale taxes on bank statement line must be considered as a refund. Courtesy of Adrien Peiffer (ACSONE). PR #11877 --- addons/account/account_move_line.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py index a698b263e44..2ace8acc7ee 100644 --- a/addons/account/account_move_line.py +++ b/addons/account/account_move_line.py @@ -1378,7 +1378,8 @@ class account_move_line(osv.osv): account_id = 'account_collected_id' base_sign = 'base_sign' tax_sign = 'tax_sign' - if journal.type in ('purchase_refund', 'sale_refund') or (journal.type in ('cash', 'bank') and total < 0 and tax_id.type_tax_use != 'sale'): + is_refund = ((total > 0 and tax_id.type_tax_use == 'sale') or (total < 0 and tax_id.type_tax_use != 'sale')) + if journal.type in ('purchase_refund', 'sale_refund') or (journal.type in ('cash', 'bank') and is_refund): base_code = 'ref_base_code_id' tax_code = 'ref_tax_code_id' account_id = 'account_paid_id' From f47e39edf9e9daa1b977148f51ac45b7fe28555f Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Wed, 4 May 2016 13:42:06 +0200 Subject: [PATCH 15/16] [IMP] doc: add documentation of read_group Has already a docstring but was not included --- doc/reference/orm.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/reference/orm.rst b/doc/reference/orm.rst index 10ac368e950..fa986038bb6 100644 --- a/doc/reference/orm.rst +++ b/doc/reference/orm.rst @@ -639,6 +639,7 @@ Model Reference .. automethod:: write .. automethod:: read + .. automethod:: read_group .. rubric:: Research From c768bbeb22963272ab8f254f90afe83c3aa36652 Mon Sep 17 00:00:00 2001 From: Goffin Simon Date: Wed, 4 May 2016 10:34:35 +0200 Subject: [PATCH 16/16] [FIX] base: Changing a company contact in a company When a company contact is changed in a company, this contact will not be displayed as a company contact. opw:673715 --- openerp/addons/base/i18n/base.pot | 2 +- openerp/addons/base/res/res_partner.py | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/i18n/base.pot b/openerp/addons/base/i18n/base.pot index 5316b459bc9..69c948e8de4 100644 --- a/openerp/addons/base/i18n/base.pot +++ b/openerp/addons/base/i18n/base.pot @@ -14902,7 +14902,7 @@ msgstr "" #. module: base #: model:ir.model.fields,help:base.field_res_partner_company_type #: model:ir.model.fields,help:base.field_res_users_company_type -msgid "Technical field, used only to display a boolean using a radio button. As for Odoo v9 RadioButton cannot be used on boolean fields, this one serves as interface. Due to the old API limitations with interface function field, we implement it by hand instead of a true function field. When migrating to the new API the code should be simplified." +msgid "Technical field, used only to display a boolean using a radio button. As for Odoo v9 RadioButton cannot be used on boolean fields, this one serves as interface. Due to the old API limitations with interface function field, we implement it by hand instead of a true function field. When migrating to the new API the code should be simplified. Changing the company_type of a company contact into a company will not display this contact as a company contact but as a standalone company." msgstr "" #. module: base diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index b13ef071bc9..0e21b3272dc 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -237,7 +237,9 @@ class res_partner(osv.Model, format_address): 'fields, this one serves as interface. Due to the old API ' 'limitations with interface function field, we implement it ' 'by hand instead of a true function field. When migrating to ' - 'the new API the code should be simplified.'), + 'the new API the code should be simplified. Changing the' + 'company_type of a company contact into a company will not display' + 'this contact as a company contact but as a standalone company.'), 'use_parent_address': fields.boolean('Use Company Address', help="Select this if you want to set company's address information for this contact"), 'company_id': fields.many2one('res.company', 'Company', select=1), 'color': fields.integer('Color Index'),