diff options
| author | niv-openerp <nicolas.vanhoren@openerp.com> | 2012-03-29 13:27:05 +0200 |
|---|---|---|
| committer | niv-openerp <nicolas.vanhoren@openerp.com> | 2012-03-29 13:27:05 +0200 |
| commit | bd36d4e1ff79b54456b27bb8a912a4e5904130ea (patch) | |
| tree | 9ccfb968e0d80060f95ccebbd5884980e69ccc38 | |
| parent | f0a92dfc5a9572d2d73967a8b7b6e9ee7ae98c01 (diff) | |
| parent | 1517145f3fc86285aa650a6f3ff9008d984e1273 (diff) | |
[merge]
bzr revid: nicolas.vanhoren@openerp.com-20120329112705-524e63bkyqfaxet4
26 files changed, 1022 insertions, 47 deletions
diff --git a/addons/account/board_account_view.xml b/addons/account/board_account_view.xml index 0ec75e7b5c8..6417bb99d88 100644 --- a/addons/account/board_account_view.xml +++ b/addons/account/board_account_view.xml @@ -61,7 +61,7 @@ <field name="view_id" ref="board_account_form"/> </record> - <menuitem id="menu_dashboard_acc" name="Accounting" sequence="30" parent="base.menu_dasboard" groups="group_account_user,group_account_manager"/> + <menuitem id="menu_dashboard_acc" name="Accounting" sequence="30" parent="base.menu_reporting_dashboard" groups="group_account_user,group_account_manager"/> <menuitem action="open_board_account" icon="terp-graph" id="menu_board_account" parent="menu_dashboard_acc" sequence="1"/> <menuitem icon="terp-account" id="account.menu_finance" name="Accounting" sequence="14" action="open_board_account"/> diff --git a/addons/account/i18n/zh_CN.po b/addons/account/i18n/zh_CN.po index c5a78346b02..6b88c60792c 100644 --- a/addons/account/i18n/zh_CN.po +++ b/addons/account/i18n/zh_CN.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-03-27 04:51+0000\n" -"X-Generator: Launchpad (build 15011)\n" +"X-Launchpad-Export-Date: 2012-03-28 04:45+0000\n" +"X-Generator: Launchpad (build 15027)\n" #. module: account #: view:account.invoice.report:0 diff --git a/addons/auction/board_auction_view.xml b/addons/auction/board_auction_view.xml index cb5ed07804c..360d8f38116 100644 --- a/addons/auction/board_auction_view.xml +++ b/addons/auction/board_auction_view.xml @@ -93,7 +93,7 @@ <field name="view_id" ref="board_auction_form1"/> </record> - <menuitem name="Auction" id="menu_board_auction" parent="base.menu_dasboard" sequence="40"/> + <menuitem name="Auction" id="menu_board_auction" parent="base.menu_reporting_dashboard" sequence="40"/> <menuitem name="Auction DashBoard" diff --git a/addons/base_crypt/i18n/pl.po b/addons/base_crypt/i18n/pl.po new file mode 100644 index 00000000000..4e4ff39a279 --- /dev/null +++ b/addons/base_crypt/i18n/pl.po @@ -0,0 +1,45 @@ +# Polish translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-02-08 00:36+0000\n" +"PO-Revision-Date: 2012-03-28 14:21+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Polish <pl@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-03-29 04:35+0000\n" +"X-Generator: Launchpad (build 15032)\n" + +#. module: base_crypt +#: model:ir.model,name:base_crypt.model_res_users +msgid "res.users" +msgstr "" + +#. module: base_crypt +#: sql_constraint:res.users:0 +msgid "You can not have two users with the same login !" +msgstr "Nie może być dwóch użytkowników o tym samym loginie !" + +#. module: base_crypt +#: constraint:res.users:0 +msgid "The chosen company is not in the allowed companies for this user" +msgstr "Wybrana firma jest niedozwolona dla tego użytkownika" + +#. module: base_crypt +#: code:addons/base_crypt/crypt.py:140 +#, python-format +msgid "Please specify the password !" +msgstr "Proszę podać hasło!" + +#. module: base_crypt +#: code:addons/base_crypt/crypt.py:140 +#, python-format +msgid "Error" +msgstr "Błąd" diff --git a/addons/crm/board_crm_statistical_view.xml b/addons/crm/board_crm_statistical_view.xml index 69c4f0bfb9e..b1b9ec93784 100644 --- a/addons/crm/board_crm_statistical_view.xml +++ b/addons/crm/board_crm_statistical_view.xml @@ -107,10 +107,10 @@ <field name="view_id" ref="board_crm_statistical_form"/> </record> - <menuitem id="board.menu_sales_dasboard" name="Sales" sequence="1" parent="base.menu_dasboard"/> + <menuitem id="board.menu_sales_dashboard" name="Sales" sequence="1" parent="base.menu_reporting_dashboard"/> <menuitem - name="CRM Dashboard" parent="board.menu_sales_dasboard" + name="CRM Dashboard" parent="board.menu_sales_dashboard" action="open_board_statistical_dash" sequence="0" id="menu_board_statistics_dash" diff --git a/addons/crm_caldav/i18n/pl.po b/addons/crm_caldav/i18n/pl.po new file mode 100644 index 00000000000..748beb9313f --- /dev/null +++ b/addons/crm_caldav/i18n/pl.po @@ -0,0 +1,33 @@ +# Polish translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-02-08 00:36+0000\n" +"PO-Revision-Date: 2012-03-28 14:18+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Polish <pl@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-03-29 04:35+0000\n" +"X-Generator: Launchpad (build 15032)\n" + +#. module: crm_caldav +#: model:ir.actions.act_window,name:crm_caldav.action_caldav_browse +msgid "Caldav Browse" +msgstr "" + +#. module: crm_caldav +#: model:ir.ui.menu,name:crm_caldav.menu_caldav_browse +msgid "Synchronize This Calendar" +msgstr "Synchronizuj ten kalendarz" + +#. module: crm_caldav +#: model:ir.model,name:crm_caldav.model_crm_meeting +msgid "Meeting" +msgstr "Zebranie" diff --git a/addons/document/board_document_view.xml b/addons/document/board_document_view.xml index ee6fc61f896..4412423c97b 100644 --- a/addons/document/board_document_view.xml +++ b/addons/document/board_document_view.xml @@ -37,7 +37,7 @@ <menuitem name="Knowledge" id="menu_reports_document" - parent="base.menu_dasboard" + parent="base.menu_reporting_dashboard" sequence="45" groups="base.group_system"/> diff --git a/addons/event/__openerp__.py b/addons/event/__openerp__.py index 06252001c83..ea0e4316ef5 100644 --- a/addons/event/__openerp__.py +++ b/addons/event/__openerp__.py @@ -53,6 +53,7 @@ Note that: ], 'demo_xml': ['event_demo.xml'], 'test': ['test/process/event_draft2done.yml'], + 'css': ['static/src/css/event.css'], 'installable': True, 'application': True, 'auto_install': False, diff --git a/addons/event/board_association_view.xml b/addons/event/board_association_view.xml index b9187227b1c..96db3db6781 100644 --- a/addons/event/board_association_view.xml +++ b/addons/event/board_association_view.xml @@ -63,7 +63,7 @@ <field name="view_id" ref="board_associations_manager_form"/> </record> <menuitem id="menus_event_dashboard" name="Events" - parent="base.menu_dasboard" sequence="25"/> + parent="base.menu_reporting_dashboard" sequence="25"/> <menuitem name="Event Dashboard" parent="menus_event_dashboard" action="open_board_associations_manager" diff --git a/addons/event/event.py b/addons/event/event.py index 133d29281f1..ce72dadb2cc 100644 --- a/addons/event/event.py +++ b/addons/event/event.py @@ -148,9 +148,28 @@ class event_event(osv.osv): number = reg_done elif field == 'register_prospect': number = reg_draft + elif field == 'register_avail': + #the number of ticket is unlimited if the event.register_max field is not set. + #In that cas we arbitrary set it to 9999, it is used in the kanban view to special case the display of the 'subscribe' button + number = event.register_max - reg_open if event.register_max != 0 else 9999 res[event.id][field] = number return res + def _subscribe_fnc(self, cr, uid, ids, fields, args, context=None): + """This functional fields compute if the current user (uid) is already subscribed or not to the event passed in parameter (ids) + """ + register_pool = self.pool.get('event.registration') + res = {} + for event in self.browse(cr, uid, ids, context=context): + res[event.id] = False + curr_reg_id = register_pool.search(cr, uid, [('user_id', '=', uid), ('event_id', '=' ,event.id)]) + if curr_reg_id: + for reg in register_pool.browse(cr, uid, curr_reg_id, context=context): + if reg.state in ('open','done'): + res[event.id]= True + continue + return res + _columns = { 'name': fields.char('Name', size=64, required=True, translate=True, readonly=False, states={'done': [('readonly', True)]}), 'user_id': fields.many2one('res.users', 'Responsible User', readonly=False, states={'done': [('readonly', True)]}), @@ -158,13 +177,14 @@ class event_event(osv.osv): 'register_max': fields.integer('Maximum Registrations', help="You can for each event define a maximum registration level. If you have too much registrations you are not able to confirm your event. (put 0 to ignore this rule )", readonly=True, states={'draft': [('readonly', False)]}), 'register_min': fields.integer('Minimum Registrations', help="You can for each event define a minimum registration level. If you do not enough registrations you are not able to confirm your event. (put 0 to ignore this rule )", readonly=True, states={'draft': [('readonly', False)]}), 'register_current': fields.function(_get_register, string='Confirmed Registrations', multi='register_numbers'), + 'register_avail': fields.function(_get_register, string='Available Registrations', multi='register_numbers',type='integer'), 'register_prospect': fields.function(_get_register, string='Unconfirmed Registrations', multi='register_numbers'), 'register_attended': fields.function(_get_register, string='Attended Registrations', multi='register_numbers'), 'registration_ids': fields.one2many('event.registration', 'event_id', 'Registrations', readonly=False, states={'done': [('readonly', True)]}), 'date_begin': fields.datetime('Start Date', required=True, readonly=True, states={'draft': [('readonly', False)]}), 'date_end': fields.datetime('End Date', required=True, readonly=True, states={'draft': [('readonly', False)]}), 'state': fields.selection([ - ('draft', 'Draft'), + ('draft', 'Unconfirmed'), ('confirm', 'Confirmed'), ('done', 'Done'), ('cancel', 'Cancelled')], @@ -182,6 +202,7 @@ class event_event(osv.osv): type='many2one', relation='res.country', string='Country', readonly=False, states={'done': [('readonly', True)]}), 'note': fields.text('Description', readonly=False, states={'done': [('readonly', True)]}), 'company_id': fields.many2one('res.company', 'Company', required=False, change_default=True, readonly=False, states={'done': [('readonly', True)]}), + 'is_subscribed' : fields.function(_subscribe_fnc, type="boolean", string='Subscribed'), } _defaults = { @@ -190,6 +211,22 @@ class event_event(osv.osv): 'user_id': lambda obj, cr, uid, context: uid, } + def subscribe_to_event(self, cr, uid, ids, context=None): + register_pool = self.pool.get('event.registration') + user_pool = self.pool.get('res.users') + user = user_pool.browse(cr, uid, uid, context=context) + curr_reg_ids = register_pool.search(cr, uid, [('user_id', '=', user.id), ('event_id', '=' , ids[0])]) + #the subscription is done with UID = 1 because in case we share the kanban view, we want anyone to be able to subscribe + if not curr_reg_ids: + curr_reg_ids = [register_pool.create(cr, 1, {'event_id': ids[0] ,'email': user.user_email, 'name':user.name, 'user_id': user.id,})] + return register_pool.confirm_registration(cr, 1, curr_reg_ids, context=context) + + def unsubscribe_to_event(self, cr, uid, ids, context=None): + register_pool = self.pool.get('event.registration') + #the unsubscription is done with UID = 1 because in case we share the kanban view, we want anyone to be able to unsubscribe + curr_reg_ids = register_pool.search(cr, 1, [('user_id', '=', uid), ('event_id', '=', ids[0])]) + return register_pool.button_reg_cancel(cr, 1, curr_reg_ids, context=context) + def _check_closing_date(self, cr, uid, ids, context=None): for event in self.browse(cr, uid, ids, context=context): if event.date_end < event.date_begin: @@ -233,19 +270,18 @@ class event_registration(osv.osv): 'log_ids': fields.one2many('mail.message', 'res_id', 'Logs', domain=[('email_from', '=', False),('model','=',_name)]), 'event_end_date': fields.related('event_id','date_end', type='datetime', string="Event End Date", readonly=True), 'event_begin_date': fields.related('event_id', 'date_begin', type='datetime', string="Event Start Date", readonly=True), - 'user_id': fields.many2one('res.users', 'Responsible', states={'done': [('readonly', True)]}), + 'user_id': fields.many2one('res.users', 'Attendee', states={'done': [('readonly', True)]}), 'company_id': fields.related('event_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True, states={'draft':[('readonly',False)]}), 'state': fields.selection([('draft', 'Unconfirmed'), ('open', 'Confirmed'), ('cancel', 'Cancelled'), ('done', 'Attended')], 'State', - size=16, readonly=True) + size=16, readonly=True), } _defaults = { 'nb_register': 1, 'state': 'draft', - 'user_id': lambda self, cr, uid, ctx: uid, } _order = 'name, create_date desc' diff --git a/addons/event/event_demo.xml b/addons/event/event_demo.xml index 0dfbbf6de18..b76055cd0ff 100644 --- a/addons/event/event_demo.xml +++ b/addons/event/event_demo.xml @@ -32,7 +32,6 @@ <field name="name">Concert of Bon Jovi</field> <field eval="time.strftime('%Y-%m-01 19:05:15')" name="date_begin"/> <field eval="time.strftime('%Y-%m-01 23:05:15')" name="date_end"/> - <field name="user_id" ref="base.user_root"/> <field name="register_max">500</field> <field name="type" ref="event_type_1"/> </record> @@ -42,17 +41,15 @@ <field eval="time.strftime('%Y-%m-05 18:00:00')" name="date_begin"/> <field eval="time.strftime('%Y-%m-05 21:00:00')" name="date_end"/> <field name="type" ref="event_type_1"/> - <field name="user_id" ref="base.user_root"/> <field name="register_min">50</field> <field name="register_max">350</field> </record> <record id="event_2" model="event.event"> - <field name="name">Conference on ERP Buisness</field> + <field name="name">Conference on ERP Business</field> <field eval="time.strftime('%Y-%m-05 14:00:00')" name="date_begin"/> <field eval="time.strftime('%Y-%m-05 16:30:00')" name="date_end"/> <field name="type" ref="event_type_2"/> <field name="register_max">200</field> - <field name="user_id" ref="base.user_root"/> </record> <function model="event.event" name="button_confirm" eval="[ref('event_2')]"/> <function model="event.event" name="button_confirm" eval="[ref('event_2')]"/> diff --git a/addons/event/event_view.xml b/addons/event/event_view.xml index a0b956790af..0d72e16e7da 100644 --- a/addons/event/event_view.xml +++ b/addons/event/event_view.xml @@ -63,7 +63,7 @@ <page string="Event"> <separator string="Description" colspan="4"/> <field name="note" colspan="4" nolabel="1"/> - <field name="registration_ids" colspan="4" nolabel="1"> + <field name="registration_ids" colspan="4" nolabel="1" groups="event.group_event_manager,event.group_event_user"> <tree string="Registration" editable="top"> <field name="name" /> <field name="email" /> @@ -156,6 +156,71 @@ </tree> </field> </record> + + <!-- Event Kanban View --> + + <record model="ir.ui.view" id="view_event_kanban"> + <field name="name">event.event.kanban</field> + <field name="model">event.event</field> + <field name="type">kanban</field> + <field name="arch" type="xml"> + <kanban> + <field name="register_max"/> + <field name="type"/> + <field name="user_id"/> + <field name="register_current"/> + <field name="is_subscribed"/> + <field name="country_id"/> + <field name="date_begin"/> + <field name="state"/> + <field name="register_avail"/> + <templates> + <t t-name="kanban-box"> + <div class="oe_module_vignette"> + <a type="edit" class="oe_module_icon"> + <div class="oe_event_date "><t t-esc="record.date_begin.raw_value.getDate()"/></div> + <div class="oe_event_month_year"> + <t t-esc="record.date_begin.raw_value.toString('MMM')"/> + <t t-esc="record.date_begin.raw_value.getFullYear()"/> + </div> + <div class="oe_event_time"><t t-esc="record.date_begin.raw_value.toString('hh:mm tt')"/></div> + </a> + <div class="oe_module_desc"> + <h4><a type="edit"><field name="name"/></a></h4> + <p> + <t t-if="record.country_id.raw_value">@<field name="country_id"/><br/></t> + <t t-if="record.user_id.raw_value">Organized by <field name="user_id"/><br/></t> + <t t-if="record.register_avail.raw_value lte 10 and record.register_avail.raw_value gt 0"><i>Only</i></t> + <t t-if="record.register_avail.raw_value == 0"><i>No ticket available.</i></t> + <t t-if="record.register_avail.raw_value != 0"> + <i><b><t t-if="record.register_avail.raw_value != 9999"><field name="register_avail"/></t></b></i> + <i> + <t t-if="record.register_avail.raw_value > 1">tickets </t> + <t t-if="record.register_avail.raw_value == 1 || !record.register_avail.raw_value > 1">ticket </t> + available. + </i> + </t> + </p> + <t t-if="record.register_avail.raw_value != 0"> + <t t-if="!record.is_subscribed.raw_value"> + <button type="object" name="subscribe_to_event" class="subscribe_button oe_event_button_subscribe"> + <span >Subscribe</span> + </button> + </t> + </t> + <t t-if="record.is_subscribed.raw_value"> + <button type="object" name="unsubscribe_to_event" class="unsubscribe_button oe_event_button_unsubscribe"> + <span>Subscribed</span> + <span class="unsubscribe">Unsubscribe</span> + </button> + </t> + </div> + </div> + </t> + </templates> + </kanban> + </field> + </record> <!-- Events Calendar View --> @@ -199,6 +264,10 @@ <filter icon="terp-check" string="Unconfirmed" name="draft" domain="[('state','=','draft')]" help="Events in New state"/> <filter icon="terp-camera_test" string="Confirmed" domain="[('state','=','confirm')]" help="Confirmed events"/> <separator orientation="vertical"/> + <filter icon="terp-go-today" string="Upcoming" + name="upcoming" + domain="[('date_begin','>=', time.strftime('%%Y-%%m-%%d 00:00:00'))]" + help="Upcoming events from today" /> <field name="name"/> <field name="type" widget="selection"/> <field name="user_id" widget="selection"> @@ -229,8 +298,8 @@ <field name="type">ir.actions.act_window</field> <field name="res_model">event.event</field> <field name="view_type">form</field> - <field name="view_mode">tree,form,calendar,graph</field> - <field name="context">{"search_default_section_id": section_id}</field> + <field name="view_mode">kanban,calendar,tree,form,graph</field> + <field name="context">{"search_default_upcoming":1}</field> <field name="search_view_id" ref="view_event_search"/> <field name="help">Event is the low level object used by meeting and others documents that should be synchronized with mobile devices or calendar applications through caldav. Most of the users should work in the Calendar menu, and not in the list of events.</field> </record> @@ -415,7 +484,7 @@ <menuitem name="Registrations" id="menu_action_registration" parent="base.menu_event_main" - action="action_registration"/> + action="action_registration" groups="event.group_event_manager,event.group_event_user"/> <menuitem name="Reporting" id="base.menu_report_association" parent="event_main_menu" sequence="20"/> diff --git a/addons/event/security/event_security.xml b/addons/event/security/event_security.xml index e7a84337bac..fb29fffcca9 100644 --- a/addons/event/security/event_security.xml +++ b/addons/event/security/event_security.xml @@ -2,12 +2,21 @@ <openerp> <data noupdate="0"> - <record id="group_event_manager" model="res.groups"> - <field name="name">Event Manager</field> + <record model="ir.module.category" id="module_category_event_management"> + <field name="name">Event</field> + <field name="description">Helps you manage your Events.</field> + <field name="sequence">3</field> + </record> + + <record id="group_event_user" model="res.groups"> + <field name="name">User</field> + <field name="category_id" ref="module_category_event_management"/> </record> - <record id="group_event_user" model="res.groups"> - <field name="name">Event User</field> + <record id="group_event_manager" model="res.groups"> + <field name="name">Manager</field> + <field name="category_id" ref="module_category_event_management"/> + <field name="implied_ids" eval="[(4, ref('group_event_user'))]"/> </record> <record model="res.users" id="base.user_admin"> diff --git a/addons/event/static/src/css/event.css b/addons/event/static/src/css/event.css new file mode 100644 index 00000000000..a0f738e6323 --- /dev/null +++ b/addons/event/static/src/css/event.css @@ -0,0 +1,118 @@ +.oe_event_date{ + border-top-left-radius:3px; + border-top-right-radius:3px; + font-size: 48px; + height: auto; + font-weight: bold; + text-align: center; + margin-bottom:-7px; + color: #FFFFFF; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4); + background-color: #8A89BA; +} +.oe_event_time{ + border-bottom-left-radius:3px; + border-bottom-right-radius:3px; + font-size: 12px; + text-align: center; + font-weight: bold; + color: #8A89BA; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4); + background-color: #FFFFFF; +} +.oe_event_month_year{ + border-bottom-left-radius:3px; + border-bottom-right-radius:3px; + font-size: 12px; + text-align: center; + font-weight: bold; + color: #FFFFFF; + background-color: #8A89BA; +} +div.oe_fold_column{ + padding:0px !important; +} +.oe_event_button_subscribe { + display: inline-block; + border: 1px solid #ababab; + color: #404040; + font-size: 12px; + padding: 3px 10px; + text-align: center; + -o-background-size: 100% 100%; + -moz-background-size: 100% 100%; + -webkit-background-size: auto auto !important; + background-size: 100% 100%; + background: #d8d8d8 none; + background: none, -webkit-gradient(linear, left top, left bottom, from(#efefef), to(#d8d8d8)); + background: none, -webkit-linear-gradient(#efefef, #d8d8d8); + background: none, -moz-linear-gradient(#efefef, #d8d8d8); + background: none, -o-linear-gradient(top, #efefef, #d8d8d8); + background: none, -khtml-gradient(linear, left top, left bottom, from(#efefef), to(#d8d8d8)); + background: -ms-linear-gradient(top, #efefef, #d8d8d8); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#efefef', endColorstr='#d8d8d8',GradientType=0 ); + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + -o-border-radius: 3px; + -ms-border-radius: 3px; + border-radius: 3px; + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + -o-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5); + -webkit-font-smoothing: antialiased; + outline: none; +} +.oe_event_button_unsubscribe { + display: inline-block; + border: 1px solid #AAA; + color: #404040; + font-size: 12px; + padding: 3px 10px; + text-align: center; + -o-background-size: 100% 100%; + -moz-background-size: 100% 100%; + -webkit-background-size: auto auto !important; + background-size: 100% 100%; + background: #AAA none; + background: none, -webkit-gradient(linear, left top, left bottom, from(#AAA), to(#AAA)); + background: none, -webkit-linear-gradient(#AAA, #AAA); + background: none, -moz-linear-gradient(#AAA, #AAA); + background: none, -o-linear-gradient(top, #AAA, #AAA); + background: none, -khtml-gradient(linear, left top, left bottom, from(#AAA), to(#AAA)); + background: -ms-linear-gradient(top, #AAA, #AAA); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#AAA, endColorstr='#AAA',GradientType=0 ); + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + -o-border-radius: 3px; + -ms-border-radius: 3px; + border-radius: 3px; + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + -o-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5); + -webkit-font-smoothing: antialiased; + outline: none; +} +.oe_event_button_subscribe:hover { + cursor: pointer; + background-size: 100% 100%; + /*background: #DC5F59 none;*/ + +} +.oe_event_button_unsubscribe:hover { + cursor: pointer; + background-size: 100% 100%; + background: #DC5F59 none; + } + .unsubscribe, .unsubscribe_button:hover span { + display: none; + background-color: #DC5F59 + } + .unsubscribe_button:hover .unsubscribe { + display: inline; + background-color: #DC5F59; + } + diff --git a/addons/event_sale/__openerp__.py b/addons/event_sale/__openerp__.py index f92a9eb5617..d8f689986e2 100644 --- a/addons/event_sale/__openerp__.py +++ b/addons/event_sale/__openerp__.py @@ -37,8 +37,8 @@ It defines a new kind of service products that offers you the possibility to cho 'depends': ['event','sale','sale_crm'], 'update_xml': [ 'event_sale_view.xml', - 'event_demo.xml', ], + 'demo_xml': ['event_demo.xml'], 'test':['test/confirm.yml'], 'installable': True, 'active': False, diff --git a/addons/hr/hr_board.xml b/addons/hr/hr_board.xml index 555312afb6b..6b541f5a557 100644 --- a/addons/hr/hr_board.xml +++ b/addons/hr/hr_board.xml @@ -26,7 +26,7 @@ <menuitem id="menu_hr_root" icon="terp-hr" name="Human Resources" sequence="15" action="open_board_hr"/> <menuitem id="menu_hr_reporting" parent="base.menu_reporting" name="Human Resources" sequence="40" /> - <menuitem id="menu_hr_dashboard" parent="base.menu_dasboard" name="Human Resources" sequence="35"/> + <menuitem id="menu_hr_dashboard" parent="base.menu_reporting_dashboard" name="Human Resources" sequence="35"/> <menuitem id="menu_hr_dashboard_user" parent="menu_hr_dashboard" action="open_board_hr" icon="terp-graph" sequence="4"/> <!-- This board view will be complete by other hr_* modules--> diff --git a/addons/hr_timesheet/i18n/es_EC.po b/addons/hr_timesheet/i18n/es_EC.po new file mode 100644 index 00000000000..b5d3252d359 --- /dev/null +++ b/addons/hr_timesheet/i18n/es_EC.po @@ -0,0 +1,657 @@ +# Spanish (Ecuador) translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-02-08 00:36+0000\n" +"PO-Revision-Date: 2012-03-27 14:00+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Spanish (Ecuador) <es_EC@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-03-28 04:46+0000\n" +"X-Generator: Launchpad (build 15027)\n" + +#. module: hr_timesheet +#: code:addons/hr_timesheet/report/user_timesheet.py:43 +#: code:addons/hr_timesheet/report/users_timesheet.py:77 +#, python-format +msgid "Wed" +msgstr "Miércoles" + +#. module: hr_timesheet +#: view:hr.sign.out.project:0 +msgid "(Keep empty for current_time)" +msgstr "(Vacío para fecha actual)" + +#. module: hr_timesheet +#: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:132 +#, python-format +msgid "No employee defined for your user !" +msgstr "¡No se ha definido un empleado para su usuario!" + +#. module: hr_timesheet +#: view:hr.analytic.timesheet:0 +msgid "Group By..." +msgstr "Agrupar por..." + +#. module: hr_timesheet +#: model:ir.actions.act_window,help:hr_timesheet.action_hr_timesheet_sign_in +msgid "" +"Employees can encode their time spent on the different projects. A project " +"is an analytic account and the time spent on a project generate costs on the " +"analytic account. This feature allows to record at the same time the " +"attendance and the timesheet." +msgstr "" +"Los empleados pueden imputar el tiempo que han invertido en los diferentes " +"proyectos. Un proyecto es una cuenta analítica y el tiempo de empleado en " +"un proyecto genera costes en esa cuenta analítica. Esta característica " +"permite registrar al mismo tiempo la asistencia y la hoja de tiempos." + +#. module: hr_timesheet +#: view:hr.analytic.timesheet:0 +msgid "Today" +msgstr "Hoy" + +#. module: hr_timesheet +#: field:hr.employee,journal_id:0 +msgid "Analytic Journal" +msgstr "Diario analítico" + +#. module: hr_timesheet +#: view:hr.sign.out.project:0 +msgid "Stop Working" +msgstr "Parar de trabajar" + +#. module: hr_timesheet +#: model:ir.actions.act_window,name:hr_timesheet.action_hr_timesheet_employee +#: model:ir.ui.menu,name:hr_timesheet.menu_hr_timesheet_employee +msgid "Employee Timesheet" +msgstr "Horario del empleado" + +#. module: hr_timesheet +#: view:account.analytic.account:0 +msgid "Work done stats" +msgstr "Estadísticas trabajo realizado" + +#. module: hr_timesheet +#: view:hr.analytic.timesheet:0 +#: model:ir.ui.menu,name:hr_timesheet.menu_hr_reporting_timesheet +msgid "Timesheet" +msgstr "Hoja de asistencia" + +#. module: hr_timesheet +#: code:addons/hr_timesheet/report/user_timesheet.py:43 +#: code:addons/hr_timesheet/report/users_timesheet.py:77 +#, python-format +msgid "Mon" +msgstr "Lunes" + +#. module: hr_timesheet +#: view:hr.sign.in.project:0 +msgid "Sign in" +msgstr "Acceder" + +#. module: hr_timesheet +#: code:addons/hr_timesheet/report/user_timesheet.py:43 +#: code:addons/hr_timesheet/report/users_timesheet.py:77 +#, python-format +msgid "Fri" +msgstr "Viernes" + +#. module: hr_timesheet +#: field:hr.employee,uom_id:0 +msgid "UoM" +msgstr "UoM" + +#. module: hr_timesheet +#: view:hr.sign.in.project:0 +msgid "" +"Employees can encode their time spent on the different projects they are " +"assigned on. A project is an analytic account and the time spent on a " +"project generates costs on the analytic account. This feature allows to " +"record at the same time the attendance and the timesheet." +msgstr "" +"Los empleados pueden imputar el tiempo que han invertido en los diferentes " +"proyectos. Un proyecto es una cuenta analítica y el tiempo de empleado en " +"un proyecto genera costes en esa cuenta analítica. Esta característica " +"permite registrar al mismo tiempo la asistencia y la hoja de tiempos." + +#. module: hr_timesheet +#: field:hr.sign.out.project,analytic_amount:0 +msgid "Minimum Analytic Amount" +msgstr "Importe analítico mínimo" + +#. module: hr_timesheet +#: view:hr.analytical.timesheet.employee:0 +msgid "Monthly Employee Timesheet" +msgstr "Hoja de asistencia mensual del Empleado" + +#. module: hr_timesheet +#: view:hr.sign.out.project:0 +msgid "Work done in the last period" +msgstr "Trabajo realizado en el último período" + +#. module: hr_timesheet +#: field:hr.sign.in.project,state:0 +#: field:hr.sign.out.project,state:0 +msgid "Current state" +msgstr "Estado actual" + +#. module: hr_timesheet +#: field:hr.sign.in.project,name:0 +#: field:hr.sign.out.project,name:0 +msgid "Employees name" +msgstr "Nombre de empleados" + +#. module: hr_timesheet +#: field:hr.sign.out.project,account_id:0 +msgid "Project / Analytic Account" +msgstr "Proyecto / Cuenta Analítica" + +#. module: hr_timesheet +#: model:ir.model,name:hr_timesheet.model_hr_analytical_timesheet_users +msgid "Print Employees Timesheet" +msgstr "Imprimir hoja de asistencia de los Empleados" + +#. module: hr_timesheet +#: code:addons/hr_timesheet/hr_timesheet.py:175 +#: code:addons/hr_timesheet/hr_timesheet.py:177 +#, python-format +msgid "Warning !" +msgstr "Advertencia !" + +#. module: hr_timesheet +#: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:77 +#: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:132 +#, python-format +msgid "UserError" +msgstr "Error de usuario" + +#. module: hr_timesheet +#: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:77 +#, python-format +msgid "No cost unit defined for this employee !" +msgstr "¡No se ha definido un coste unitario para este empleado!" + +#. module: hr_timesheet +#: code:addons/hr_timesheet/report/user_timesheet.py:43 +#: code:addons/hr_timesheet/report/users_timesheet.py:77 +#, python-format +msgid "Tue" +msgstr "Martes" + +#. module: hr_timesheet +#: code:addons/hr_timesheet/wizard/hr_timesheet_print_employee.py:42 +#, python-format +msgid "Warning" +msgstr "Advertencia" + +#. module: hr_timesheet +#: field:hr.analytic.timesheet,partner_id:0 +msgid "Partner" +msgstr "Cliente" + +#. module: hr_timesheet +#: view:hr.sign.in.project:0 +#: view:hr.sign.out.project:0 +msgid "Sign In/Out By Project" +msgstr "Acceder/salir del proyecto" + +#. module: hr_timesheet +#: code:addons/hr_timesheet/report/user_timesheet.py:43 +#: code:addons/hr_timesheet/report/users_timesheet.py:77 +#, python-format +msgid "Sat" +msgstr "Sábado" + +#. module: hr_timesheet +#: code:addons/hr_timesheet/report/user_timesheet.py:43 +#: code:addons/hr_timesheet/report/users_timesheet.py:77 +#, python-format +msgid "Sun" +msgstr "Domingo" + +#. module: hr_timesheet +#: view:hr.analytic.timesheet:0 +msgid "Analytic account" +msgstr "Cuenta Analítica" + +#. module: hr_timesheet +#: view:hr.analytical.timesheet.employee:0 +#: view:hr.analytical.timesheet.users:0 +msgid "Print" +msgstr "Imprimir" + +#. module: hr_timesheet +#: view:hr.analytic.timesheet:0 +#: model:ir.actions.act_window,name:hr_timesheet.act_hr_timesheet_line_evry1_all_form +#: model:ir.ui.menu,name:hr_timesheet.menu_hr_working_hours +msgid "Timesheet Lines" +msgstr "Líneas de la hoja de asistencia" + +#. module: hr_timesheet +#: view:hr.analytical.timesheet.users:0 +msgid "Monthly Employees Timesheet" +msgstr "Hoja de asistencia mensual de empleados" + +#. module: hr_timesheet +#: code:addons/hr_timesheet/report/user_timesheet.py:40 +#: code:addons/hr_timesheet/report/users_timesheet.py:73 +#: selection:hr.analytical.timesheet.employee,month:0 +#: selection:hr.analytical.timesheet.users,month:0 +#, python-format +msgid "July" +msgstr "Julio" + +#. module: hr_timesheet +#: field:hr.sign.in.project,date:0 +#: field:hr.sign.out.project,date_start:0 +msgid "Starting Date" +msgstr "Fecha de inicio" + +#. module: hr_timesheet +#: view:hr.employee:0 +msgid "Categories" +msgstr "Categorías" + +#. module: hr_timesheet +#: constraint:hr.analytic.timesheet:0 +msgid "You cannot modify an entry in a Confirmed/Done timesheet !." +msgstr "" +"No se puede modificar una entrada Confirmado / Hoja de asistencia ya hecha!." + +#. module: hr_timesheet +#: help:hr.employee,product_id:0 +msgid "Specifies employee's designation as a product with type 'service'." +msgstr "" +"Especifica la designación del empleado como un producto de tipo 'servicio'." + +#. module: hr_timesheet +#: view:hr.analytic.timesheet:0 +msgid "Total cost" +msgstr "Coste total" + +#. module: hr_timesheet +#: code:addons/hr_timesheet/report/user_timesheet.py:40 +#: code:addons/hr_timesheet/report/users_timesheet.py:73 +#: selection:hr.analytical.timesheet.employee,month:0 +#: selection:hr.analytical.timesheet.users,month:0 +#, python-format +msgid "September" +msgstr "Septiembre" + +#. module: hr_timesheet +#: model:ir.model,name:hr_timesheet.model_hr_analytic_timesheet +msgid "Timesheet Line" +msgstr "Línea hoja de servicios" + +#. module: hr_timesheet +#: field:hr.analytical.timesheet.users,employee_ids:0 +msgid "employees" +msgstr "Empleados" + +#. module: hr_timesheet +#: view:account.analytic.account:0 +msgid "Stats by month" +msgstr "Estadísticas por mes" + +#. module: hr_timesheet +#: view:account.analytic.account:0 +#: field:hr.analytical.timesheet.employee,month:0 +#: field:hr.analytical.timesheet.users,month:0 +msgid "Month" +msgstr "Mes" + +#. module: hr_timesheet +#: field:hr.sign.out.project,info:0 +msgid "Work Description" +msgstr "Descripción del trabajo" + +#. module: hr_timesheet +#: view:account.analytic.account:0 +msgid "Invoice Analysis" +msgstr "Análisis de facturas" + +#. module: hr_timesheet +#: model:ir.actions.report.xml,name:hr_timesheet.report_user_timesheet +msgid "Employee timesheet" +msgstr "Hoja de asistencia del empleado" + +#. module: hr_timesheet +#: model:ir.actions.act_window,name:hr_timesheet.action_hr_timesheet_sign_in +#: model:ir.actions.act_window,name:hr_timesheet.action_hr_timesheet_sign_out +msgid "Sign in / Sign out by project" +msgstr "Entrada/salida por proyecto" + +#. module: hr_timesheet +#: model:ir.actions.act_window,name:hr_timesheet.action_define_analytic_structure +msgid "Define your Analytic Structure" +msgstr "Defina su estructura analítica" + +#. module: hr_timesheet +#: view:hr.sign.in.project:0 +msgid "Sign in / Sign out" +msgstr "Registrar entrada/salida" + +#. module: hr_timesheet +#: code:addons/hr_timesheet/hr_timesheet.py:175 +#, python-format +msgid "" +"Analytic journal is not defined for employee %s \n" +"Define an employee for the selected user and assign an analytic journal!" +msgstr "" +"El diario analítico no está definido para el empleado %s\n" +"¡Defina un empleado para el usuario seleccionado y asígnele un diario " +"analítico!" + +#. module: hr_timesheet +#: view:hr.sign.in.project:0 +msgid "(Keep empty for current time)" +msgstr "(Dejarlo vacío para hora actual)" + +#. module: hr_timesheet +#: view:hr.employee:0 +msgid "Timesheets" +msgstr "Hojas de trabajo" + +#. module: hr_timesheet +#: model:ir.actions.act_window,help:hr_timesheet.action_define_analytic_structure +msgid "" +"You should create an analytic account structure depending on your needs to " +"analyse costs and revenues. In OpenERP, analytic accounts are also used to " +"track customer contracts." +msgstr "" +"Debe crear una estructura de la cuenta analítica dependiendo de sus " +"necesidades para analizar los costos e ingresos. En OpenERP, cuentas " +"analíticas también se utilizan para seguimiento de contratos de clientes." + +#. module: hr_timesheet +#: field:hr.analytic.timesheet,line_id:0 +msgid "Analytic Line" +msgstr "Línea Analítica" + +#. module: hr_timesheet +#: code:addons/hr_timesheet/report/user_timesheet.py:40 +#: code:addons/hr_timesheet/report/users_timesheet.py:73 +#: selection:hr.analytical.timesheet.employee,month:0 +#: selection:hr.analytical.timesheet.users,month:0 +#, python-format +msgid "August" +msgstr "Agosto" + +#. module: hr_timesheet +#: code:addons/hr_timesheet/report/user_timesheet.py:40 +#: code:addons/hr_timesheet/report/users_timesheet.py:73 +#: selection:hr.analytical.timesheet.employee,month:0 +#: selection:hr.analytical.timesheet.users,month:0 +#, python-format +msgid "June" +msgstr "Junio" + +#. module: hr_timesheet +#: view:hr.analytical.timesheet.employee:0 +msgid "Print My Timesheet" +msgstr "Imprimir mi horario" + +#. module: hr_timesheet +#: view:hr.analytic.timesheet:0 +msgid "Date" +msgstr "Fecha" + +#. module: hr_timesheet +#: code:addons/hr_timesheet/report/user_timesheet.py:40 +#: code:addons/hr_timesheet/report/users_timesheet.py:73 +#: selection:hr.analytical.timesheet.employee,month:0 +#: selection:hr.analytical.timesheet.users,month:0 +#, python-format +msgid "November" +msgstr "Noviembre" + +#. module: hr_timesheet +#: constraint:hr.employee:0 +msgid "Error ! You cannot create recursive Hierarchy of Employees." +msgstr "¡Error! No se puede crear una jerarquía recursiva de empleados." + +#. module: hr_timesheet +#: field:hr.sign.out.project,date:0 +msgid "Closing Date" +msgstr "Fecha de cierre" + +#. module: hr_timesheet +#: code:addons/hr_timesheet/report/user_timesheet.py:40 +#: code:addons/hr_timesheet/report/users_timesheet.py:73 +#: selection:hr.analytical.timesheet.employee,month:0 +#: selection:hr.analytical.timesheet.users,month:0 +#, python-format +msgid "October" +msgstr "Octubre" + +#. module: hr_timesheet +#: code:addons/hr_timesheet/report/user_timesheet.py:40 +#: code:addons/hr_timesheet/report/users_timesheet.py:73 +#: selection:hr.analytical.timesheet.employee,month:0 +#: selection:hr.analytical.timesheet.users,month:0 +#, python-format +msgid "January" +msgstr "Enero" + +#. module: hr_timesheet +#: view:account.analytic.account:0 +msgid "Key dates" +msgstr "Fechas clave" + +#. module: hr_timesheet +#: code:addons/hr_timesheet/report/user_timesheet.py:43 +#: code:addons/hr_timesheet/report/users_timesheet.py:77 +#, python-format +msgid "Thu" +msgstr "Jueves" + +#. module: hr_timesheet +#: view:account.analytic.account:0 +msgid "Analysis stats" +msgstr "Estadísticas de análisis" + +#. module: hr_timesheet +#: model:ir.model,name:hr_timesheet.model_hr_analytical_timesheet_employee +msgid "Print Employee Timesheet & Print My Timesheet" +msgstr "Imprime el 'Parte de Horas del Empleado' y 'Mi Parte de Horas'" + +#. module: hr_timesheet +#: field:hr.sign.in.project,emp_id:0 +#: field:hr.sign.out.project,emp_id:0 +msgid "Employee ID" +msgstr "ID empleado" + +#. module: hr_timesheet +#: view:hr.sign.out.project:0 +msgid "General Information" +msgstr "Información general" + +#. module: hr_timesheet +#: model:ir.actions.act_window,name:hr_timesheet.action_hr_timesheet_my +msgid "My Timesheet" +msgstr "My horario" + +#. module: hr_timesheet +#: code:addons/hr_timesheet/report/user_timesheet.py:40 +#: code:addons/hr_timesheet/report/users_timesheet.py:73 +#: selection:hr.analytical.timesheet.employee,month:0 +#: selection:hr.analytical.timesheet.users,month:0 +#, python-format +msgid "December" +msgstr "Diciembre" + +#. module: hr_timesheet +#: view:hr.analytical.timesheet.employee:0 +#: view:hr.analytical.timesheet.users:0 +#: view:hr.sign.in.project:0 +#: view:hr.sign.out.project:0 +msgid "Cancel" +msgstr "Cancelar" + +#. module: hr_timesheet +#: model:ir.actions.act_window,name:hr_timesheet.action_hr_timesheet_users +#: model:ir.actions.report.xml,name:hr_timesheet.report_users_timesheet +#: model:ir.actions.wizard,name:hr_timesheet.wizard_hr_timesheet_users +#: model:ir.ui.menu,name:hr_timesheet.menu_hr_timesheet_users +msgid "Employees Timesheet" +msgstr "Horario de empleados" + +#. module: hr_timesheet +#: view:hr.analytic.timesheet:0 +msgid "Information" +msgstr "Información" + +#. module: hr_timesheet +#: field:hr.analytical.timesheet.employee,employee_id:0 +#: model:ir.model,name:hr_timesheet.model_hr_employee +msgid "Employee" +msgstr "Empleado(a)" + +#. module: hr_timesheet +#: model:ir.actions.act_window,help:hr_timesheet.act_hr_timesheet_line_evry1_all_form +msgid "" +"Through this menu you can register and follow your workings hours by project " +"every day." +msgstr "" +"A través de este menú se puede registrar y seguir las horas diarias " +"trabajadas por proyecto." + +#. module: hr_timesheet +#: field:hr.sign.in.project,server_date:0 +#: field:hr.sign.out.project,server_date:0 +msgid "Current Date" +msgstr "Fecha Actual" + +#. module: hr_timesheet +#: view:hr.analytical.timesheet.employee:0 +msgid "This wizard will print monthly timesheet" +msgstr "Este asistente imprimirá el parte de horas mensual" + +#. module: hr_timesheet +#: view:hr.analytic.timesheet:0 +#: field:hr.employee,product_id:0 +msgid "Product" +msgstr "Producto" + +#. module: hr_timesheet +#: view:hr.analytic.timesheet:0 +msgid "Invoicing" +msgstr "Facturación" + +#. module: hr_timesheet +#: code:addons/hr_timesheet/report/user_timesheet.py:40 +#: code:addons/hr_timesheet/report/users_timesheet.py:73 +#: selection:hr.analytical.timesheet.employee,month:0 +#: selection:hr.analytical.timesheet.users,month:0 +#, python-format +msgid "May" +msgstr "Mayo" + +#. module: hr_timesheet +#: view:hr.analytic.timesheet:0 +msgid "Total time" +msgstr "Tiempo total" + +#. module: hr_timesheet +#: view:hr.sign.in.project:0 +msgid "(local time on the server side)" +msgstr "(hora local en el servidor)" + +#. module: hr_timesheet +#: model:ir.model,name:hr_timesheet.model_hr_sign_in_project +msgid "Sign In By Project" +msgstr "Registrarse en un proyecto" + +#. module: hr_timesheet +#: code:addons/hr_timesheet/report/user_timesheet.py:40 +#: code:addons/hr_timesheet/report/users_timesheet.py:73 +#: selection:hr.analytical.timesheet.employee,month:0 +#: selection:hr.analytical.timesheet.users,month:0 +#, python-format +msgid "February" +msgstr "Febrero" + +#. module: hr_timesheet +#: model:ir.model,name:hr_timesheet.model_hr_sign_out_project +msgid "Sign Out By Project" +msgstr "Salir de un proyecto" + +#. module: hr_timesheet +#: view:hr.analytical.timesheet.users:0 +msgid "Employees" +msgstr "Empleados" + +#. module: hr_timesheet +#: code:addons/hr_timesheet/report/user_timesheet.py:40 +#: code:addons/hr_timesheet/report/users_timesheet.py:73 +#: selection:hr.analytical.timesheet.employee,month:0 +#: selection:hr.analytical.timesheet.users,month:0 +#, python-format +msgid "March" +msgstr "Marzo" + +#. module: hr_timesheet +#: code:addons/hr_timesheet/report/user_timesheet.py:40 +#: code:addons/hr_timesheet/report/users_timesheet.py:73 +#: selection:hr.analytical.timesheet.employee,month:0 +#: selection:hr.analytical.timesheet.users,month:0 +#, python-format +msgid "April" +msgstr "Abril" + +#. module: hr_timesheet +#: code:addons/hr_timesheet/hr_timesheet.py:177 +#, python-format +msgid "" +"No analytic account defined on the project.\n" +"Please set one or we can not automatically fill the timesheet." +msgstr "" +"No se ha definido una cuenta analítica para el proyecto.\n" +"Por favor seleccione una o no se puede llenar automáticamente la hoja de " +"asistencia." + +#. module: hr_timesheet +#: view:account.analytic.account:0 +#: view:hr.analytic.timesheet:0 +msgid "Users" +msgstr "Usuarios" + +#. module: hr_timesheet +#: view:hr.sign.in.project:0 +msgid "Start Working" +msgstr "Empezar a trabajar" + +#. module: hr_timesheet +#: view:account.analytic.account:0 +msgid "Stats by user" +msgstr "Estadísticas por usuario" + +#. module: hr_timesheet +#: code:addons/hr_timesheet/wizard/hr_timesheet_print_employee.py:42 +#, python-format +msgid "No employee defined for this user" +msgstr "No se ha definido un empleado para este usuario" + +#. module: hr_timesheet +#: field:hr.analytical.timesheet.employee,year:0 +#: field:hr.analytical.timesheet.users,year:0 +msgid "Year" +msgstr "Año" + +#. module: hr_timesheet +#: view:hr.analytic.timesheet:0 +msgid "Accounting" +msgstr "Administración Financiera" + +#. module: hr_timesheet +#: view:hr.sign.out.project:0 +msgid "Change Work" +msgstr "Cambiar trabajo" diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py index e4e65c67edf..aef3aa24767 100644 --- a/addons/mail/mail_message.py +++ b/addons/mail/mail_message.py @@ -464,6 +464,23 @@ class mail_message(osv.osv): msg['sub_type'] = msg['subtype'] or 'plain' return msg + def _postprocess_sent_message(self, cr, uid, message, context=None): + """Perform any post-processing necessary after sending ``message`` + successfully, including deleting it completely along with its + attachment if the ``auto_delete`` flag of the message was set. + Overridden by subclasses for extra post-processing behaviors. + + :param browse_record message: the message that was just sent + :return: True + """ + if message.auto_delete: + self.pool.get('ir.attachment').unlink(cr, uid, + [x.id for x in message.attachment_ids \ + if x.res_model == self._name and \ + x.res_id == message.id], + context=context) + message.unlink() + return True def send(self, cr, uid, ids, auto_commit=False, context=None): """Sends the selected emails immediately, ignoring their current @@ -521,16 +538,9 @@ class mail_message(osv.osv): message.write({'state':'sent', 'message_id': res}) else: message.write({'state':'exception'}) - - # if auto_delete=True then delete that sent messages as well as attachments message.refresh() - if message.state == 'sent' and message.auto_delete: - self.pool.get('ir.attachment').unlink(cr, uid, - [x.id for x in message.attachment_ids \ - if x.res_model == self._name and \ - x.res_id == message.id], - context=context) - message.unlink() + if message.state == 'sent': + self._postprocess_sent_message(cr, uid, message, context=context) except Exception: _logger.exception('failed sending mail.message %s', message.id) message.write({'state':'exception'}) diff --git a/addons/mrp/board_manufacturing_view.xml b/addons/mrp/board_manufacturing_view.xml index 1815c4ceb12..cb81d51d439 100644 --- a/addons/mrp/board_manufacturing_view.xml +++ b/addons/mrp/board_manufacturing_view.xml @@ -29,7 +29,7 @@ </record> <menuitem id="menus_dash_mrp" name="Manufacturing" - parent="base.menu_dasboard" sequence="15"/> + parent="base.menu_reporting_dashboard" sequence="15"/> <menuitem action="open_board_manufacturing" icon="terp-graph" id="menu_board_manufacturing" parent="menus_dash_mrp" diff --git a/addons/project/board_project_view.xml b/addons/project/board_project_view.xml index 34de37fd9a7..f4a855283ba 100644 --- a/addons/project/board_project_view.xml +++ b/addons/project/board_project_view.xml @@ -104,17 +104,17 @@ </record> <menuitem - id="menu_project_dasboard" + id="menu_project_dashboard" name="Project" sequence="20" - parent="base.menu_dasboard" + parent="base.menu_reporting_dashboard" /> <menuitem action="open_board_project" icon="terp-graph" id="menu_board_project" - parent="menu_project_dasboard" + parent="menu_project_dashboard" sequence="1"/> <menuitem diff --git a/addons/project_issue/board_project_issue_view.xml b/addons/project_issue/board_project_issue_view.xml index bcb73456b88..ff33793d8e8 100644 --- a/addons/project_issue/board_project_issue_view.xml +++ b/addons/project_issue/board_project_issue_view.xml @@ -79,7 +79,7 @@ <field name="usage">menu</field> <field name="view_id" ref="board_project_issue_form"/> </record> - <menuitem id="menu_deshboard_project_issue" name="Project Issue Dashboard" parent="project.menu_project_dasboard" + <menuitem id="menu_dashboard_project_issue" name="Project Issue Dashboard" parent="project.menu_project_dashboard" icon="terp-graph" action="open_board_project_issue"/> diff --git a/addons/project_planning/project_planning_view.xml b/addons/project_planning/project_planning_view.xml index 3beb5ad39a9..d12b62dbf18 100644 --- a/addons/project_planning/project_planning_view.xml +++ b/addons/project_planning/project_planning_view.xml @@ -292,11 +292,11 @@ <!-- <field name="context">{"search_default_user_id":uid}</field> --> <field name="search_view_id" ref="account_analytic_planning_stat_view_search"/> </record> - + <menuitem action="action_account_analytic_planning_stat_form" icon="terp-graph" id="menu_board_planning" - parent="project.menu_project_dasboard"/> + parent="project.menu_project_dashboard"/> <!-- Analytic account Form --> diff --git a/addons/project_scrum/board_project_scrum_view.xml b/addons/project_scrum/board_project_scrum_view.xml index 7d993dd90c9..924a1cbf5cc 100644 --- a/addons/project_scrum/board_project_scrum_view.xml +++ b/addons/project_scrum/board_project_scrum_view.xml @@ -98,7 +98,7 @@ </record> <menuitem id="menu_deshboard_scurm" - name="Scrum Dashboard" parent="project.menu_project_dasboard" + name="Scrum Dashboard" parent="project.menu_project_dashboard" icon="terp-graph" action="open_board_project_scrum"/> diff --git a/addons/purchase/board_purchase_view.xml b/addons/purchase/board_purchase_view.xml index 74f34a45cb6..4c9e776b96b 100644 --- a/addons/purchase/board_purchase_view.xml +++ b/addons/purchase/board_purchase_view.xml @@ -5,7 +5,7 @@ <menuitem id="menu_purchase_deshboard" name="Purchase" - parent="base.menu_dasboard" sequence="5"/> + parent="base.menu_reporting_dashboard" sequence="5"/> <record id="purchase_draft" model="ir.actions.act_window"> <field name="name">Request for Quotations</field> diff --git a/addons/sale/board_sale_view.xml b/addons/sale/board_sale_view.xml index 57eee7f184b..8a6caf1a849 100644 --- a/addons/sale/board_sale_view.xml +++ b/addons/sale/board_sale_view.xml @@ -30,8 +30,8 @@ <field name="view_id" ref="board_sales_manager_form"/> </record> - <menuitem id="board.menu_sales_dasboard" name="Sales" sequence="1" parent="base.menu_dasboard"/> - <menuitem action="open_board_sales_manager" icon="terp-graph" id="menu_board_sales_manager" parent="board.menu_sales_dasboard" sequence="0" groups="base.group_sale_manager"/> + <menuitem id="board.menu_sales_dashboard" name="Sales" sequence="1" parent="base.menu_reporting_dashboard"/> + <menuitem action="open_board_sales_manager" icon="terp-graph" id="menu_board_sales_manager" parent="board.menu_sales_dashboard" sequence="0" groups="base.group_sale_manager"/> <record id="action_quotation_for_sale" model="ir.actions.act_window"> diff --git a/addons/stock/board_warehouse_view.xml b/addons/stock/board_warehouse_view.xml index 5c52c6412f3..b8de9cf445e 100644 --- a/addons/stock/board_warehouse_view.xml +++ b/addons/stock/board_warehouse_view.xml @@ -68,7 +68,7 @@ <field name="view_id" ref="board_warehouse_form"/> </record> - <menuitem id="menu_dashboard_stock" name="Warehouse" sequence="10" parent="base.menu_dasboard"/> + <menuitem id="menu_dashboard_stock" name="Warehouse" sequence="10" parent="base.menu_reporting_dashboard"/> <menuitem action="open_board_warehouse" icon="terp-graph" groups="group_stock_manager" id="menu_board_warehouse" parent="menu_dashboard_stock" sequence="1"/> <menuitem icon="terp-stock" id="stock.menu_stock_root" name="Warehouse" sequence="5" groups="group_stock_manager" action="open_board_warehouse"/> |
