diff --git a/addons/calendar/calendar.py b/addons/calendar/calendar.py index 7fe38851f3e..b9dbd80306e 100644 --- a/addons/calendar/calendar.py +++ b/addons/calendar/calendar.py @@ -1655,6 +1655,14 @@ class calendar_event(osv.Model): self.create_attendees(cr, uid, [res], context=context) return res + def export_data(self, cr, uid, ids, *args, **kwargs): + """ Override to convert virtual ids to ids """ + real_ids = [] + for real_id in get_real_ids(ids): + if real_id not in real_ids: + real_ids.append(real_id) + return super(calendar_event, self).export_data(cr, uid, real_ids, *args, **kwargs) + def read_group(self, cr, uid, domain, fields, groupby, offset=0, limit=None, context=None, orderby=False, lazy=True): context = dict(context or {}) diff --git a/addons/hr_timesheet_invoice/hr_timesheet_invoice.py b/addons/hr_timesheet_invoice/hr_timesheet_invoice.py index 9c7213ce84b..cc927f47f61 100644 --- a/addons/hr_timesheet_invoice/hr_timesheet_invoice.py +++ b/addons/hr_timesheet_invoice/hr_timesheet_invoice.py @@ -324,7 +324,8 @@ class account_analytic_line(osv.osv): class hr_analytic_timesheet(osv.osv): _inherit = "hr.analytic.timesheet" def on_change_account_id(self, cr, uid, ids, account_id, user_id=False): - res = {} + res = super(hr_analytic_timesheet, self).on_change_account_id( + cr, uid, ids, account_id, context=user_id) if not account_id: return res res.setdefault('value',{}) diff --git a/addons/membership/membership.py b/addons/membership/membership.py index cc3c1b2c908..98c54d5548f 100644 --- a/addons/membership/membership.py +++ b/addons/membership/membership.py @@ -347,7 +347,7 @@ class Partner(osv.osv): store = { 'account.invoice': (_get_invoice_partner, ['state'], 10), 'membership.membership_line': (_get_partner_id, ['state'], 10, ), - 'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['free_member'], 10) + 'res.partner': (_get_partners, ['free_member', 'membership_state', 'associate_member'], 10) }, help="Date from which membership becomes active."), 'membership_stop': fields.function( _membership_date, @@ -355,7 +355,7 @@ class Partner(osv.osv): store = { 'account.invoice': (_get_invoice_partner, ['state'], 10), 'membership.membership_line': (_get_partner_id, ['state'], 10), - 'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['free_member'], 10) + 'res.partner': (_get_partners, ['free_member', 'membership_state', 'associate_member'], 10) }, help="Date until which membership remains active."), 'membership_cancel': fields.function( _membership_date, @@ -363,7 +363,7 @@ class Partner(osv.osv): store = { 'account.invoice': (_get_invoice_partner, ['state'], 11), 'membership.membership_line': (_get_partner_id, ['state'], 10), - 'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['free_member'], 10) + 'res.partner': (_get_partners, ['free_member', 'membership_state', 'associate_member'], 10) }, help="Date on which membership has been cancelled"), } _defaults = { diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js index d81fc2bbcb6..39e380beb71 100644 --- a/addons/point_of_sale/static/src/js/models.js +++ b/addons/point_of_sale/static/src/js/models.js @@ -1548,6 +1548,10 @@ openerp.point_of_sale.load_models = function load_models(instance, module){ //mo this.select_orderline(this.get_last_orderline()); }, add_product: function(product, options){ + if(this._printed){ + this.destroy(); + return this.pos.get_order().add_product(product, options); + } this.assert_editable(); options = options || {}; var attr = JSON.parse(JSON.stringify(product)); diff --git a/addons/resource/resource.py b/addons/resource/resource.py index bf7f708abb8..f3f4d67e9c7 100644 --- a/addons/resource/resource.py +++ b/addons/resource/resource.py @@ -337,6 +337,7 @@ class resource_calendar(osv.osv): # no calendar: try to use the default_interval, then return directly if id is None: + working_interval = [] if default_interval: working_interval = (start_dt.replace(hour=default_interval[0], minute=0, second=0), start_dt.replace(hour=default_interval[1], minute=0, second=0)) @@ -550,7 +551,6 @@ class resource_calendar(osv.osv): intervals = [] planned_days = 0 iterations = 0 - current_datetime = day_date.replace(hour=0, minute=0, second=0) while planned_days < days and iterations < 100: diff --git a/addons/resource/tests/test_resource.py b/addons/resource/tests/test_resource.py index 1291089fce6..34eef002a3c 100644 --- a/addons/resource/tests/test_resource.py +++ b/addons/resource/tests/test_resource.py @@ -431,6 +431,8 @@ class TestResource(TestResourceCommon): res = self.resource_calendar.schedule_days_get_date(cr, uid, self.calendar_id, 5, day_date=self.date1) self.assertEqual(res.date(), datetime.strptime('2013-02-26 00:0:00', _format).date(), 'resource_calendar: wrong days scheduling') + res = self.resource_calendar.schedule_days_get_date(cr, uid, self.calendar_id, -2, day_date=self.date1) + self.assertEqual(res.date(), datetime.strptime('2013-02-08 00:00:00', _format).date(), 'resource_calendar: wrong days scheduling') res = self.resource_calendar.schedule_days_get_date( cr, uid, self.calendar_id, 5, day_date=self.date1, diff --git a/addons/website_hr_recruitment/data/hr_job_demo.xml b/addons/website_hr_recruitment/data/hr_job_demo.xml index 962f468b2f9..45a0fed846a 100644 --- a/addons/website_hr_recruitment/data/hr_job_demo.xml +++ b/addons/website_hr_recruitment/data/hr_job_demo.xml @@ -209,7 +209,7 @@