Salve
sto provando a fare la copia di un timesheet,
ho reimplementato la funzione copy sia con le vecchie api che con le nuove (ho installato odoo 8)
ottengo una copia del timesheet con anche i dati delle ore lavorate dall'utante,
ma nel timesheet originale perdo queste ultime informazioni,
con le nuove api ho provato a fare anche la copia dei dati del nuovo timesheet e riassegnarle al vecchio timesheet con una write ma il risultato è che il nuovo ha i dati ripetuti e il vecchio non ha nulla.
qualcuno sa darmi una soluzione?
con le vecchie api:
def map_timesheets(self, cr, uid, old_timesheet_id, new_timesheet_id, context=None):
""" copy and map timesheet from old to new timesheet """
if context is None:
context = {}
map_analityc_time_id = {}
analitytic_timesheet_obj = self.pool.get('hr.analytic.timesheet')
timesheet = self.browse(cr, uid, old_timesheet_id, context=context)
for line in timesheet.timesheet_ids:
defaults = {'sheet_id': line.sheet_id.id, 'name': line.name}
map_analityc_time_id[line.id] = analitytic_timesheet_obj.copy(cr, uid, line.id, defaults, context=context)
self.write(cr, uid, [new_timesheet_id], {'timesheet_ids':[(6,0, map_analityc_time_id.values())]})
return True
def copy(self, cr, uid, id, default=None, context=None):
if default is None:
default = {}
context = dict(context or {})
context = False
timesheet = self.browse(cr, uid, id, context=context)
if not default.get('name'):
default.update(name=_("%s (copy)") % (timesheet.name))
data = self.copy_data(cr, uid, id, default, context)
new_id = self.create(cr, uid, data, context)
self.map_timesheets(cr, uid, id, new_id, context=context)
return new_id
def copy_data(self, cr, uid, id, default=None, context=None):
context = dict(context or {}, mail_notrack=True)
padre= super(extended_timesheet, self)
ris= super(extended_timesheet, self).copy_data(cr, uid, id, default, context)
return ris
nuove api:
@api.multi
def copy(self, default=None):
if default is None:
default = {}
res=osv.osv.copy(self,default)#res indice della copia di timesheet
map_timesheet_id = {}
for line in res.timesheet_ids:
default=line.name+'(copy)'
puntatore=osv.osv.copy(line,default)
map_timesheet_id[line.id]=puntatore.id#res indice della copia di timesheet
ris = self.write( {'timesheet_ids': [(0,_, map_timesheet_id.values())]})
return res