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

« back to all changes in this revision

Viewing changes to concrete_sale_order/sale.py

  • Committer: Eduardo Bayardo
  • Date: 2017-08-15 21:49:35 UTC
  • Revision ID: eduardo.bayardo@bias.com.mx-20170815214935-94uhog6hvq6em5mj
set correct date at sale order validation (sock.move, stock.picking)... Create Invoice defaults from pickings

Show diffs side-by-side

added added

removed removed

Lines of Context:
302
302
            if line.product_id.categ_id.check_delivery:
303
303
                xfer = time.strptime(so.transfer_time, TM_FMT)
304
304
                spacing = time.strptime(so.delivery_spacing, TM_FMT)
 
305
                if not so.load_capacity:
 
306
                    raise osv.except_osv(_('Error'),_('Asigna una Capacidad de Carga !'))
305
307
                factor = int(line.product_uom_qty/so.load_capacity)
306
308
                last_load = [line.product_uom_qty - (so.load_capacity * factor)][0] and [line.product_uom_qty - (so.load_capacity * factor)] or []
307
309
                qty_list = ([so.load_capacity]*factor) + last_load
402
404
        mrp_obj = self.pool.get('mrp.production')
403
405
        so = self.browse(cr, uid, ids[0], context={})
404
406
        self.create_picking_location(cr, uid, ids)
 
407
        picking_date = False
405
408
        for line in so.order_line:
406
 
            if line.product_id.categ_id.check_delivery or line.product_id.categ_id.check_delivery_time:
407
 
                move_id = move_obj.search(cr, uid, [('sale_line_id','=',line.id)])
 
409
            if line.product_id.categ_id.check_delivery or line.product_id.categ_id.check_delivery_time:# TODO this field is duplicated...
 
410
                if not picking_date or (picking_date > line.delivery_time):
 
411
                    picking_date = line.delivery_time
 
412
                [move_id] = move_obj.search(cr, uid, [('sale_line_id','=',line.id)])
408
413
                production_id = mrp_obj.search(cr, uid, [('move_prod_id', '=', move_id)])
409
 
                move_obj.write(cr, uid, move_id, {'date':line.delivery_time, 'date_expected':line.delivery_time})
 
414
 
 
415
                move = move_obj.browse(cr, uid, move_id)
 
416
                move.write({'date':line.delivery_time, 'date_expected':line.delivery_time})
 
417
                move.picking_id.write({'min_date':picking_date})
 
418
                
410
419
                proc_obj.write(cr, uid, line.procurement_id.id, {'date_planned':line.delivery_time})
411
420
                mrp_obj.write(cr, uid, production_id, {'date_planned':line.delivery_time})
412
421
                self.update_production_internal_picking_time(cr, uid, production_id, line.delivery_time)
423
432
 
424
433
    def update_production_internal_picking_time(self, cr, uid, production_id, date_planned):
425
434
        if production_id:
426
 
            query = "UPDATE stock_picking SET date = '%s' WHERE id = (SELECT picking_id FROM mrp_production where id = %s)"%(date_planned, production_id[0])
 
435
            query = "UPDATE stock_picking SET min_date = '%s' WHERE id = (SELECT picking_id FROM mrp_production where id = %s)"%(date_planned, production_id[0])
427
436
            cr.execute(query)
428
437
            query2 = "UPDATE stock_move SET date_expected = '%s' WHERE picking_id = (SELECT picking_id FROM mrp_production where id = %s)"%(date_planned, production_id[0])
429
438
            cr.execute(query2)