~eduardo-bayardo-bias/openobject-addons/addons_nixus

« back to all changes in this revision

Viewing changes to mrp_operations/mrp_operations.py

  • Committer: root
  • Date: 2011-09-16 15:29:00 UTC
  • Revision ID: root@openerp-20110916152900-3rzqdbv32mcenxit
cambio a version 5.0.16

Show diffs side-by-side

added added

removed removed

Lines of Context:
44
44
    _columns = {
45
45
        'move_dest_id_lines': fields.one2many('stock.move','move_dest_id', 'Children Moves')
46
46
    }
 
47
    
 
48
    def copy(self, cr, uid, id, default=None, context={}):
 
49
        if default is None:
 
50
            default = {}
 
51
        default.update({
 
52
            'move_dest_id_lines': [],
 
53
        })
 
54
        return super(stock_move, self).copy(cr, uid, id, default, context)
 
55
    
47
56
stock_move()
48
57
 
49
58
class mrp_production_workcenter_line(osv.osv):
137
146
        return True
138
147
 
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')})
 
149
        delay = 0.0
 
150
        date_now = time.strftime('%Y-%m-%d %H:%M:%S')
 
151
        obj_line = self.browse(cr, uid, ids[0])
 
152
        
 
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)
 
157
        
 
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')
142
160
        return True
143
161
 
170
188
        return result
171
189
 
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)
177
 
 
 
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)
 
197
    
 
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)
 
205
    
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)
183
213
 
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'):
332
362
                   continue
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)
337
367
        return diff
338
368
 
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)
 
441
                
411
442
 
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):
430
461
            return
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})
433
 
 
434
 
        return super(mrp_operations_operation, self).create(cr, uid, vals,  context=context)
 
463
        line_vals = {}
 
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']
 
470
 
 
471
        self.pool.get('mrp.production.workcenter.line').write(cr, uid, wc_op_id, line_vals, context=context)
 
472
 
 
473
        return super(mrp_operations_operation, self).create(cr, uid, vals, context=context)
435
474
 
436
475
    _columns={
437
476
        'production_id':fields.many2one('mrp.production','Production',required=True),