45
45
'move_dest_id_lines': fields.one2many('stock.move','move_dest_id', 'Children Moves')
48
def copy(self, cr, uid, id, default=None, context={}):
52
'move_dest_id_lines': [],
54
return super(stock_move, self).copy(cr, uid, id, default, context)
49
58
class mrp_production_workcenter_line(osv.osv):
139
148
def action_done(self, cr, uid, ids):
140
self.write(cr, uid, ids, {'state':'done', 'date_finnished': time.strftime('%Y-%m-%d %H:%M:%S')})
150
date_now = time.strftime('%Y-%m-%d %H:%M:%S')
151
obj_line = self.browse(cr, uid, ids[0])
153
date_start = DateTime.strptime(obj_line.date_start,'%Y-%m-%d %H:%M:%S')
154
date_finished = DateTime.strptime(date_now,'%Y-%m-%d %H:%M:%S')
155
delay += (date_finished-date_start).days * 24
156
delay += (date_finished-date_start).seconds / float(60*60)
158
self.write(cr, uid, ids, {'state':'done', 'date_finnished': date_now,'delay':delay})
141
159
self.modify_production_order_state(cr,uid,ids,'done')
172
190
def action_production_end(self, cr, uid, ids):
173
obj=self.browse(cr,uid,ids)[0]
174
for workcenter_line in obj.workcenter_lines:
175
tmp=self.pool.get('mrp.production.workcenter.line').action_done(cr,uid,[workcenter_line.id])
176
return super(mrp_production,self).action_production_end(cr,uid,ids)
191
obj = self.browse(cr, uid, ids)[0]
192
for workcenter_line in obj.workcenter_lines:
193
tmp = self.pool.get('mrp.production.workcenter.line').action_done(cr, uid, [workcenter_line.id])
194
wf_service = netsvc.LocalService("workflow")
195
wf_service.trg_validate(uid, 'mrp.production.workcenter.line', workcenter_line.id, 'button_done', cr)
196
return super(mrp_production,self).action_production_end(cr, uid, ids)
198
def action_in_production(self, cr, uid, ids):
199
obj = self.browse(cr, uid, ids)[0]
200
for workcenter_line in obj.workcenter_lines:
201
tmp = self.pool.get('mrp.production.workcenter.line').action_start_working(cr, uid, [workcenter_line.id])
202
wf_service = netsvc.LocalService("workflow")
203
wf_service.trg_validate(uid, 'mrp.production.workcenter.line', workcenter_line.id, 'button_start_working', cr)
204
return super(mrp_production,self).action_in_production(cr, uid, ids)
178
206
def action_cancel(self, cr, uid, ids):
179
obj=self.browse(cr,uid,ids)[0]
207
obj = self.browse(cr,uid,ids)[0]
180
208
for workcenter_line in obj.workcenter_lines:
181
209
tmp=self.pool.get('mrp.production.workcenter.line').action_cancel(cr,uid,[workcenter_line.id])
210
wf_service = netsvc.LocalService("workflow")
211
wf_service.trg_validate(uid, 'mrp.production.workcenter.line', workcenter_line.id, 'button_cancel', cr)
182
212
return super(mrp_production,self).action_cancel(cr,uid,ids)
184
214
def _compute_planned_workcenter(self, cr, uid, ids, context={}, mini=False):
330
360
if not i: continue
331
361
if code_lst[i-1] not in ('resume','start'):
333
a = datetime.datetime.strptime(time_lst[i-1],'%Y:%m:%d %H:%M:%S')
334
b = datetime.datetime.strptime(time_lst[i],'%Y:%m:%d %H:%M:%S')
363
a = DateTime.strptime(time_lst[i-1],'%Y-%m-%d %H:%M:%S')
364
b = DateTime.strptime(time_lst[i],'%Y-%m-%d %H:%M:%S')
335
365
diff += (b-a).days * 24
336
diff += (b-a).seconds / (60*60)
366
diff += (b-a).seconds / float(60*60)
339
369
def check_operation(self,cr,uid,vals):
408
438
if code.start_stop=='start':
409
439
tmp=self.pool.get('mrp.production.workcenter.line').action_start_working(cr,uid,wc_op_id)
410
440
wf_service.trg_validate(uid, 'mrp.production.workcenter.line', wc_op_id[0], 'button_start_working', cr)
412
443
if code.start_stop=='done':
413
444
tmp=self.pool.get('mrp.production.workcenter.line').action_done(cr,uid,wc_op_id)
429
460
if not self.check_operation(cr, uid, vals):
431
462
delay=self.calc_delay(cr, uid, vals)
432
self.pool.get('mrp.production.workcenter.line').write(cr,uid,wc_op_id,{'delay':delay})
434
return super(mrp_operations_operation, self).create(cr, uid, vals, context=context)
464
line_vals['delay'] = delay
465
if vals.get('date_start',False):
466
if code.start_stop == 'done':
467
line_vals['date_finnished'] = vals['date_start']
468
elif code.start_stop == 'start':
469
line_vals['date_start'] = vals['date_start']
471
self.pool.get('mrp.production.workcenter.line').write(cr, uid, wc_op_id, line_vals, context=context)
473
return super(mrp_operations_operation, self).create(cr, uid, vals, context=context)
437
476
'production_id':fields.many2one('mrp.production','Production',required=True),