264
264
res[period_id] = payroll
267
def _get_is_system_from_number(self, number):
268
return isinstance(number, int) and number in (0, 16, ) or False
270
def _get_is_system(self, cr, uid, ids, field_name=None, arg=None, context=None):
274
if isinstance(ids, (int, long, )):
277
for rec in self.browse(cr, uid, ids, context=context):
278
res[rec.id] = self._get_is_system_from_number(rec.number)
281
def _get_search_is_system(self, cr, uid, obj, name, args, context=None):
286
msg = _("Domain %s not suported") % (str(args), )
287
raise osv.except_osv(_('Error'), msg)
288
if args[0][1] != '=':
289
msg = _("Operator '%s' not suported") % (args[0][1], )
290
raise osv.except_osv(_('Error'), msg)
291
operator = 'in' if args[0][2] else 'not in'
293
return [('number', operator, (0, 16, ))]
268
296
'name': fields.char('Period Name', size=64, required=True, translate=True),
269
297
'special': fields.boolean('Opening/Closing Period', size=12,
270
298
help="These periods can overlap.", readonly=True),
271
299
'state': fields.selection(ACCOUNT_PERIOD_STATE_SELECTION, 'State', readonly=True,
272
300
help='HQ opens a monthly period. After validation, it will be closed by the different levels.'),
273
'number': fields.integer(string="Number for register creation", help="This number informs period's order. Should be between 1 and 15. If 16: have not been defined yet."),
301
'number': fields.integer(string="Number for register creation", help="This number informs period's order. Should be between 1 and 15."),
274
302
'field_process': fields.boolean('Is this period in Field close processing?', readonly=True),
275
303
'state_sync_flag': fields.char('Sync Flag', required=True, size=64, help='Flag for controlling sync actions on the period state.'),
276
304
'payroll_ok': fields.function(_get_payroll_ok, method=True, type='boolean', store=False, string="Permit to know if payrolls are active", readonly=True),
305
'is_system': fields.function(_get_is_system, fnct_search=_get_search_is_system, method=True, type='boolean', string="System period ?", readonly=True),
279
308
_order = 'date_start, number'
285
314
if context.get('sync_update_execution') and 'state' not in vals:
286
logging.getLogger('init').info('Loading default draft - created - state for account.period')
287
vals['state'] = 'created'
315
if not self._get_is_system_from_number(vals.get('number', False)):
316
logging.getLogger('init').info('Loading default draft - created - state for account.period')
317
vals['state'] = 'created'
319
vals['state'] = 'draft' # passtrough for system periods: 'Open'
289
321
res = super(account_period, self).create(cr, uid, vals, context=context)
290
322
self.pool.get('account.period.state').update_state(cr, uid, res,
342
def unlink(self, cr, uid, ids, context=None):
345
if isinstance(ids, (int, long, )):
348
is_system = [ rec.is_system \
349
for rec in self.browse(cr, uid, ids, context=context) ]
351
raise osv.except_osv(_('Warning'), _('System period not deletable'))
352
return super(account_period, self).unlink(cr, uid, ids, context=context)
311
355
'state': lambda *a: 'created',
312
'number': lambda *a: 16, # Because of 15 period in MSF, no period would use 16 number.
356
'number': lambda *a: 17, # Because of 16 period in MSF, no period would use 16 number.
313
357
'special': lambda *a: False,
314
358
'field_process': lambda *a: False,
315
359
'state_sync_flag': lambda *a: 'none',
318
363
def action_reopen_field(self, cr, uid, ids, context=None):