qdp (OpenERP) has proposed merging lp:~openerp-dev/openobject-addons/trunk-improve-addons27-event-ggh into lp:openobject-addons.
Requested reviews: OpenERP Core Team (openerp) For more details, see: https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-improve-addons27-event-ggh/+merge/139428 -- https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-improve-addons27-event-ggh/+merge/139428 Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-addons/trunk-improve-addons27-event-ggh.
=== modified file 'analytic_contract_hr_expense/analytic_contract_hr_expense.py' --- analytic_contract_hr_expense/analytic_contract_hr_expense.py 2012-11-29 22:26:45 +0000 +++ analytic_contract_hr_expense/analytic_contract_hr_expense.py 2012-12-12 10:42:15 +0000 @@ -113,20 +113,20 @@ return res def open_hr_expense(self, cr, uid, ids, context=None): + mod_obj = self.pool.get('ir.model.data') + act_obj = self.pool.get('ir.actions.act_window') + + result = mod_obj.get_object_reference(cr, uid, 'hr_expense', 'expense_all') + id = result and result[1] or False + result = act_obj.read(cr, uid, [id], context=context)[0] + line_ids = self.pool.get('hr.expense.line').search(cr,uid,[('analytic_account', 'in', ids)]) - domain = [('line_ids', 'in', line_ids)] + result['domain'] = [('line_ids', 'in', line_ids)] names = [record.name for record in self.browse(cr, uid, ids, context=context)] - name = _('Expenses of %s') % ','.join(names) - return { - 'type': 'ir.actions.act_window', - 'name': name, - 'view_type': 'form', - 'view_mode': 'tree,form', - 'context':{'analytic_account':ids[0]}, - 'domain' : domain, - 'res_model': 'hr.expense.expense', - 'nodestroy': True, - } + result['name'] = _('Expenses of %s') % ','.join(names) + result['context'] = {'analytic_account':ids[0]} + result['view_type'] = 'form' + return result def hr_to_invoice_expense(self, cr, uid, ids, context=None): domain = [('invoice_id','=',False),('to_invoice','!=',False), ('journal_id.type', '=', 'purchase'), ('account_id', 'in', ids)] === modified file 'crm/crm_lead_view.xml' --- crm/crm_lead_view.xml 2012-12-08 16:24:56 +0000 +++ crm/crm_lead_view.xml 2012-12-12 10:42:15 +0000 @@ -177,14 +177,15 @@ <field name="company_id" groups="base.group_multi_company" widget="selection" colspan="2"/> - <field name="type_id"/> - <field name="channel_id" widget="selection"/> - <field name="referred"/> <field name="state" groups="base.group_no_one"/> </group> <group string="Mailings"> <field name="opt_out"/> </group> + <group string="Misc"> + <field name="active"/> + <field name="referred"/> + </group> </group> </page> </notebook> @@ -463,11 +464,6 @@ <field name="mobile"/> <field name="fax"/> </group> - - <group string="Categorization"> - <field name="type_id" /> - <field name="channel_id" widget="selection"/> - </group> <group string="Mailings"> <field name="opt_out"/> </group> === modified file 'event/event_view.xml' --- event/event_view.xml 2012-12-07 13:08:08 +0000 +++ event/event_view.xml 2012-12-12 10:42:15 +0000 @@ -6,7 +6,7 @@ <field name="res_model">event.registration</field> <field name="view_type">form</field> <field name="name">Registrations</field> - <field name="view_mode">calendar,tree,form,graph</field> + <field name="view_mode">tree,form,calendar,graph</field> <field name="context">{'search_default_event_id': active_id, 'default_event_id': active_id}</field> </record> @@ -100,19 +100,13 @@ </group> </group> <notebook> - <page string="Email Configuration" groups="base.group_no_one"> - <group> + <page string="Event Details" groups="base.group_no_one"> + <group colspan="4"> <field name="reply_to"/> - <group> - <field name="email_registration_id"/> - </group> - <group> - <field name="email_confirmation_id"/> - </group> + <field name="email_registration_id"/> + <field name="email_confirmation_id"/> </group> - </page> - <page string="Event Description"> - <field name="note" colspan="4" nolabel="1"/> + <field name="note" nolabel="1" placeholder="Event Description..."/> </page> <page string="Registrations"> <group> === modified file 'event_sale/event_sale.py' --- event_sale/event_sale.py 2012-12-08 10:33:38 +0000 +++ event_sale/event_sale.py 2012-12-12 10:42:15 +0000 @@ -71,6 +71,8 @@ ''' create registration with sale order ''' + if context is None: + context = {} registration_obj = self.pool.get('event.registration') sale_obj = self.pool.get('sale.order') for order_line in self.browse(cr, uid, ids, context=context): @@ -84,7 +86,24 @@ 'origin': order_line.order_id.name, 'event_id': order_line.event_id.id, } + message = _("The registration has been <b>created</b> for event <i>%s</i> from the Sale Order %s. ") % (order_line.event_id.name, order_line.order_id.name) + context.update({'sale_event': True, 'message': message }) registration_id = registration_obj.create(cr, uid, dic, context=context) - message = _("The registration %s has been created from the Sale Order %s.") % (registration_id, order_line.order_id.name) - registration_obj.message_post(cr, uid, [registration_id], body=message, context=context) return super(sale_order_line, self).button_confirm(cr, uid, ids, context=context) + +sale_order_line() + +class event_registration(osv.osv): + _inherit = 'event.registration' + + # ---------------------------------------- + # OpenChatter methods and notifications + # ---------------------------------------- + + def create_send_note(self, cr, uid, ids, context=None): + if context.get("sale_event") and context.get("message"): + message = context.get("message") + self.message_post(cr, uid, ids, body=message, context=context) + else: + super(event_registration, self).create_send_note(cr, uid, ids, context) + return True === modified file 'hr_expense/hr_expense_view.xml' --- hr_expense/hr_expense_view.xml 2012-11-29 22:26:45 +0000 +++ hr_expense/hr_expense_view.xml 2012-12-12 10:42:15 +0000 @@ -58,15 +58,16 @@ <record id="view_expenses_form" model="ir.ui.view"> <field name="name">hr.expense.form</field> <field name="model">hr.expense.expense</field> + <field eval="25" name="priority"/> <field name="arch" type="xml"> <form string="Expenses Sheet" version="7.0"> <header> <button name="confirm" states="draft" string="Submit to Manager" type="workflow" class="oe_highlight"/> <button name="validate" states="confirm" string="Approve" type="workflow" groups="base.group_hr_user" class="oe_highlight"/> + <button name="refuse" states="confirm,accepted" string="Refuse" type="workflow" groups="base.group_hr_user" /> <button name="draft" states="confirm,cancelled" string="Set to Draft" type="workflow" groups="base.group_hr_user" /> <button name="done" states="accepted" string="Generate Accounting Entries" type="workflow" groups="account.group_account_invoice" class="oe_highlight"/> <button name="action_view_receipt" states="done" string="Open Receipt" type="object"/> - <button name="refuse" states="confirm,accepted" string="Refuse" type="workflow" groups="base.group_hr_user" /> <field name="state" widget="statusbar" statusbar_visible="draft,confirm,accepted,done" statusbar_colors='{"confirm":"blue","cancelled":"red"}'/> </header> <sheet> === modified file 'hr_timesheet/__openerp__.py' --- hr_timesheet/__openerp__.py 2012-11-29 22:26:45 +0000 +++ hr_timesheet/__openerp__.py 2012-12-12 10:42:15 +0000 @@ -21,7 +21,7 @@ { - 'name': 'Timesheets', + 'name': 'Time Tracking', 'version': '1.0', 'category': 'Human Resources', 'sequence': 23, === modified file 'mail/data/mail_demo.xml' --- mail/data/mail_demo.xml 2012-11-29 22:26:45 +0000 +++ mail/data/mail_demo.xml 2012-12-12 10:42:15 +0000 @@ -332,7 +332,7 @@ </record> <record id="msg_discus1_1" model="mail.message"> <field name="subject">RE: Feedback about our On Site Assistance</field> - <field name="body"><![CDATA[<p>Hello Administrator,</p><p>Glad to hearing from you! Everything is perfect, thanks for asking. Concerning the order of 2 IP phones, I ordered them for new employees. We are satisfied with the products of <i>YourCompany</i>, and we plan to fit out each new employee with one of your phone this year.<br />Regards,</p>]]></field> + <field name="body"><![CDATA[<p>Hello Administrator,</p><p>Glad to hear from you! Everything is perfect, thanks for asking. Concerning the order of 2 IP phones, I ordered them for new employees. We are satisfied with the products of <i>YourCompany</i>, and we plan to fit out each new employee with one of your phone this year.<br />Regards,</p>]]></field> <field name="parent_id" ref="msg_discus1"/> <field name="type">comment</field> <field name="subtype_id" ref="mt_comment"/> === modified file 'mail/doc/mail_message.rst' --- mail/doc/mail_message.rst 2012-12-04 10:31:46 +0000 +++ mail/doc/mail_message.rst 2012-12-12 10:42:15 +0000 @@ -6,101 +6,23 @@ Models +++++++ -``mail.message`` is a class for holding the main attributes of a message object -(notification for system message, reciving email message or sent messages). It -could be reused as parent model for any database model, wall thread view, or -wizard screen that needs to hold a kind of message. +``mail.message.common`` is an abstract class for holding the main attributes of a +message object. It could be reused as parent model for any database model +or wizard screen that needs to hold a kind of message. All internal logic should be in a database-based model while this model holds the basics of a message. For example, a wizard for writing emails -should inherit from this class. +should inherit from this class and not from mail.message. .. versionchanged:: 7.0 -ClientAction (ir.actions.client) -+++++++ - <record id="action_mail_inbox_feeds" model="ir.actions.client"> - <field name="name">Inbox</field> - <field name="tag">mail.wall</field> - <field name="res_model">mail.message</field> - <field name="context"></field> - <field name="params"></field> - <field name="help" type="html"></field> - </record> - - - ``tag`` : 'mail.wall', 'mail_thread' or 'mail.widget' - 'mail.wall' to have a display like the mail wall with threads, title, search view - (default value like a wall) - 'mail_thread' widget for field on standard view. (default value like a thread for - record, view on flat mode, no reply, no read/unread) - 'mail.widget' it's the root thread, used by 'mail.wall' and 'mail_thread' - - ``help`` : Text HTML to display if there are no message - - ``context`` : insert 'default_model' and 'default_res_id' - - ``params`` : options for the widget - - ``domain`` : choose the domain of the messages - - ``truncate_limit`` : {Number} number of character to display before having a "show more" - link; note that the text will not be truncated if it does not have 110% of the parameter - - ``show_record_name`` : {Boolean} display the name and link of the related record - - ``show_reply_button`` : {Boolean} display the reply button - - ``show_read_unread_button`` : {Boolean} display the read/unread button - - ``display_indented_thread`` : {int [0,1]} number thread level to indented threads. - - ``show_compose_message`` : display the composer on top thread - - ``show_compact_message`` : display the compact message on the thread when the user clic - on this compact mode, the composer is open - - ``message_ids`` : {Array | False} List of ids to fetch by the root thread. If no value, - the root search the message by the domain - - ``compose_placeholder`` : Message to display on the textareaboxes. - - ``show_link`` : Display partner (authors, followers...) on link or not - - ``compose_as_todo`` : The root composer mark automatically the message as todo - -Fields -+++++++ - - - ``type`` : usually 'email', 'comment', 'notification'. - Message type: email for external email message recieve, notification for system - message, comment for other messages such as user replies. - - ``subtype_id`` : - Subtype of the notification for system message. The users can followe a document - and choose the subtype of this document (eg: Create, Comment, Done). - You can defined new subtypes and choose his name, by agreement the id begin by "mt_" on the model - "mail.message.subtype". - - ``partner_ids`` : - List of recipients, the recipients have this message in their personal mailboxe. - - ``notified_partner_ids`` : - Partners that have a notification pushing this message in their mailboxes. Usualy - it's an automatic system message for a model followed by users. - - ``notification_ids`` : - Technical field holding the message notifications. Use notified_partner_ids to access - notified partners. - - ``attachment_ids`` : - List of attachments - - ``parent_id`` : - It's the initial thread message. It's use for group message by thread in mailboxes. - - ``child_ids`` : - List of child message linked to the initial thread message. - - ``model`` : - Related Document Moded. It's use for group message by document. - - ``res_id`` : - Related Document ID. It's use for group message by document. - - ``record_name`` : - Functionnal field use to get the name of related document. - - ``vote_user_ids`` : - List of partner that vote/like this message. - - ``to_read`` : - Functional field to search for messages the current user has to read. The messages as - treat like a need action. When the user recive a message (to_read = True) this message - or action must be performed and mark done (to_read = False) - - ``favorite_user_ids`` : - Users that set this message in their favorites/todo list. - -Methods -+++++++ - - - ``message_read`` : - Value: ids, domain, message_unload_ids, thread_level, context, parent_id, limit - Return: List of dictinary of message. All message is sent with their parented messages and - sort by id. The messages that the user can read but not in his search, are group in - expandable messages. The expandable messages contain the domain to expand. - - ``check_access_rule`` : - Overwrite the initial message for this model. \ No newline at end of file + - ``subtype`` is renamed to ``content_subtype``: usually 'html' or 'plain'. + This field is used to select plain-text or rich-text contents accordingly. + - ``subtype`` is moved to mail.message model. The purpose is to be able to + distinguish message of the same type, such as notifications about creating + or cancelling a record. For example, it is used to add the possibility + to hide notifications in the wall. + +Those changes aim at being able to distinguish the message content to the +message itself. === modified file 'mail/mail_mail_view.xml' --- mail/mail_mail_view.xml 2012-09-04 09:28:20 +0000 +++ mail/mail_mail_view.xml 2012-12-12 10:42:15 +0000 @@ -6,6 +6,11 @@ <field name="model">mail.mail</field> <field name="arch" type="xml"> <form string="Email message" version="7.0"> + <header> + <button name="send" string="Send Now" type="object" states='outgoing'/> + <button name="mark_outgoing" string="Retry" type="object" states='exception,cancel'/> + <button name="cancel" string="Cancel" type="object" states='outgoing'/> + </header> <sheet> <label for="subject" class="oe_edit_only"/> <h2><field name="subject"/></h2> === modified file 'mail/static/src/js/mail.js' --- mail/static/src/js/mail.js 2012-12-11 15:22:19 +0000 +++ mail/static/src/js/mail.js 2012-12-12 10:42:15 +0000 @@ -1411,10 +1411,9 @@ * when the user clic on this compact mode, the composer is open *... @param {Array} [message_ids] List of ids to fetch by the root thread. * When you use this option, the domain is not used for the fetch root. - *... @param {String} [help] Message to display when there are no message. - *... @param {String} [compose_placeholder] Message to display on the textareaboxes. - *... @param {Boolean} [show_link_partner] Display partner (authors, followers...) on link or not - *... @param {Boolean} [compose_as_todo] The root composer mark automatically the message as todo + * @param {String} [no_message] Message to display when there are no message + * @param {Boolean} [show_link_partner] Display partner (authors, followers...) on link or not + * @param {Boolean} [compose_as_todo] The root composer mark automatically the message as todo */ init: function (parent, action) { this._super(parent, action); === modified file 'marketing/__openerp__.py' --- marketing/__openerp__.py 2012-11-29 22:26:45 +0000 +++ marketing/__openerp__.py 2012-12-12 10:42:15 +0000 @@ -23,7 +23,7 @@ { 'name': 'Marketing', 'version': '1.1', - 'depends': ['base', 'base_setup'], + 'depends': ['base', 'base_setup', 'crm'], 'author': 'OpenERP SA', 'category': 'Hidden/Dependency', 'description': """ === modified file 'marketing/marketing_view.xml' --- marketing/marketing_view.xml 2012-11-29 22:26:45 +0000 +++ marketing/marketing_view.xml 2012-12-12 10:42:15 +0000 @@ -7,6 +7,32 @@ id="base.marketing_menu" groups="marketing.group_marketing_user,marketing.group_marketing_manager" sequence="85"/> - + <record id="view_crm_lead_form" model="ir.ui.view"> + <field name="name">crm.lead.inherit.form</field> + <field name="model">crm.lead</field> + <field name="inherit_id" ref="crm.crm_case_form_view_leads"/> + <field name="arch" type="xml"> + <xpath expr="//group[@string='Categorization']" position="attributes"> + <attribute name="string">Marketing</attribute> + </xpath> + <xpath expr="//field[@name='company_id']" position="after"> + <field name="type_id"/> + <field name="channel_id" widget="selection"/> + </xpath> + </field> + </record> + <record id="view_crm_opportunity_form" model="ir.ui.view"> + <field name="name">crm.lead.inherit.form</field> + <field name="model">crm.lead</field> + <field name="inherit_id" ref="crm.crm_case_form_view_oppor"/> + <field name="arch" type="xml"> + <xpath expr="//group[@string='Mailings']" position="before"> + <group string="Marketing"> + <field name="type_id" /> + <field name="channel_id" widget="selection"/> + </group> + </xpath> + </field> + </record> </data> </openerp> === modified file 'mrp/mrp.py' --- mrp/mrp.py 2012-12-08 16:27:24 +0000 +++ mrp/mrp.py 2012-12-12 10:42:15 +0000 @@ -1084,7 +1084,7 @@ 'cycle': fields.float('Number of Cycles', digits=(16,2)), 'hour': fields.float('Number of Hours', digits=(16,2)), 'sequence': fields.integer('Sequence', required=True, help="Gives the sequence order when displaying a list of work orders."), - 'production_id': fields.many2one('mrp.production', 'Production Order', select=True, ondelete='cascade', required=True), + 'production_id': fields.many2one('mrp.production', 'Manufacturing Order', select=True, ondelete='cascade', required=True), } _defaults = { 'sequence': lambda *a: 1, === modified file 'mrp/mrp_view.xml' --- mrp/mrp_view.xml 2012-12-09 10:55:27 +0000 +++ mrp/mrp_view.xml 2012-12-12 10:42:15 +0000 @@ -784,8 +784,8 @@ <group> <group> <field name="priority"/> - <field name="date_start"/> - <field name="date_finished"/> + <field name="date_start" invisible="1"/> + <field name="date_finished" invisible="1"/> </group> <group> <field name="company_id" groups="base.group_multi_company" widget="selection"/> === modified file 'mrp_operations/mrp_operations.py' --- mrp_operations/mrp_operations.py 2012-11-29 22:26:45 +0000 +++ mrp_operations/mrp_operations.py 2012-12-12 10:42:15 +0000 @@ -70,6 +70,30 @@ else: res[op.id] = op.date_planned return res + + def onchange_get_date_end(self, cr, uid, ids, workcenter_id, date_planned, cycle, hour, context=None): + work_ids = self.search(cr,uid,[('workcenter_id','=',workcenter_id)],context=context) + ops = self.browse(cr, uid, work_ids, context=context) + date_and_hours_by_cal = [(op.date_planned, op.hour, op.workcenter_id.calendar_id.id) for op in ops if op.date_planned] + intervals = self.pool.get('resource.calendar').interval_get_multi(cr, uid, date_and_hours_by_cal) + res = False + for op in ops: + if date_planned: + i = intervals.get((op.date_planned,op.hour, op.workcenter_id.calendar_id.id)) + if i: + res= i[-1][1].strftime('%Y-%m-%d %H:%M:%S') + else: + res = op.date_planned + return {'value':{'date_planned_end': res}} + + def onchange_production_id(self, cr, uid, ids, production_id, context=None): + products = self.pool.get('mrp.production').browse(cr, uid, production_id, context=None) + result = { + 'product': products.product_id.id, + 'qty': products.product_qty, + 'uom': products.product_uom.id, + } + return {'value': result} _inherit = 'mrp.production.workcenter.line' _order = "sequence, date_planned" @@ -98,7 +122,8 @@ _defaults = { 'state': lambda *a: 'draft', - 'delay': lambda *a: 0.0 + 'delay': lambda *a: 0.0, + 'production_state': 'draft' } def modify_production_order_state(self, cr, uid, ids, action): === modified file 'mrp_operations/mrp_operations_view.xml' --- mrp_operations/mrp_operations_view.xml 2012-11-29 22:26:45 +0000 +++ mrp_operations/mrp_operations_view.xml 2012-12-12 10:42:15 +0000 @@ -74,9 +74,9 @@ </header> <sheet string="Work Orders"> <group col="4"> - <field colspan="4" name="name"/> - <field name="workcenter_id"/> - <field name="production_id"/> + <field colspan="2" name="name"/> + <field name="workcenter_id" on_change="onchange_get_date_end(date_planned, cycle, hour, context)"/> + <field name="production_id" on_change="onchange_production_id(production_id)"/> <field name="production_state"/> <field name="sequence"/> </group> @@ -84,7 +84,7 @@ <page string="Information"> <group> <group string="Planned Date"> - <field name="date_planned"/> + <field name="date_planned" on_change="onchange_get_date_end(workcenter_id, date_planned, cycle, hour, context)"/> <field name="date_planned_end"/> </group> @@ -92,7 +92,7 @@ <field name="cycle"/> <field name="hour" widget="float_time"/> </group> - <group string="Real" > + <group string="Actual Production Date" > <field name="date_start" readonly="1"/> <field name="date_finished" readonly="1"/> <field name="delay" widget="float_time"/> === modified file 'purchase/res_config.py' --- purchase/res_config.py 2012-12-08 16:36:13 +0000 +++ purchase/res_config.py 2012-12-12 10:42:15 +0000 @@ -66,7 +66,9 @@ 'default_invoice_method': 'manual', } - + def onchange_purchase_analytic_plans(self, cr, uid, ids, module_purchase_analytic_plans, context=None): + """ change group_analytic_account_for_purchases following module_purchase_analytic_plans """ + return {'value': {'group_analytic_account_for_purchases': module_purchase_analytic_plans}} class account_config_settings(osv.osv_memory): === modified file 'purchase/res_config_view.xml' --- purchase/res_config_view.xml 2012-11-29 22:26:45 +0000 +++ purchase/res_config_view.xml 2012-12-12 10:42:15 +0000 @@ -67,7 +67,7 @@ <label for="module_purchase_requisition"/> </div> <div> - <field name="module_purchase_analytic_plans" class="oe_inline"/> + <field name="module_purchase_analytic_plans" class="oe_inline" on_change="onchange_purchase_analytic_plans(module_purchase_analytic_plans)"/> <label for="module_purchase_analytic_plans"/> </div> <div> === modified file 'sale/wizard/sale_make_invoice.py' --- sale/wizard/sale_make_invoice.py 2012-11-29 22:26:45 +0000 +++ sale/wizard/sale_make_invoice.py 2012-12-12 10:42:15 +0000 @@ -30,7 +30,8 @@ 'invoice_date': fields.date('Invoice Date'), } _defaults = { - 'grouped': False + 'grouped': False, + 'invoice_date': fields.date.context_today } def view_init(self, cr, uid, fields_list, context=None):
_______________________________________________ Mailing list: https://launchpad.net/~openerp-dev-gtk Post to : openerp-dev-gtk@lists.launchpad.net Unsubscribe : https://launchpad.net/~openerp-dev-gtk More help : https://help.launchpad.net/ListHelp