+class stock_move(osv.osv):
+ _inherit = 'stock.move'
+
+ def action_cancel(self, cr, uid, ids, context=None):
+ sale_ids = []
+ for move in self.browse(cr, uid, ids, context=context):
+ if move.procurement_id and move.procurement_id.sale_line_id:
+ sale_ids.append(move.procurement_id.sale_line_id.order_id.id)
+ if sale_ids:
+ self.pool.get('sale.order').signal_ship_except(cr, uid, sale_ids)
+ return super(stock_move, self).action_cancel(cr, uid, ids, context=context)
+
+ def _create_invoice_line_from_vals(self, cr, uid, move, invoice_line_vals, context=None):
+ invoice_line_id = super(stock_move, self)._create_invoice_line_from_vals(cr, uid, move, invoice_line_vals, context=context)
+ if move.procurement_id and move.procurement_id.sale_line_id:
+ sale_line = move.procurement_id.sale_line_id
+ self.pool.get('sale.order.line').write(cr, uid, [sale_line.id], {
+ 'invoice_lines': [(4, invoice_line_id)]
+ }, context=context)
+ self.pool.get('sale.order').write(cr, uid, [sale_line.order_id.id], {
+ 'invoice_ids': [(4, invoice_line_vals['invoice_id'])],
+ })
+ return invoice_line_id
+
+ def _get_master_data(self, cr, uid, move, company, context=None):
+ if move.procurement_id and move.procurement_id.sale_line_id:
+ sale_order = move.procurement_id.sale_line_id.order_id
+ return sale_order.partner_invoice_id, sale_order.user_id.id, sale_order.pricelist_id.currency_id.id
+ return super(stock_move, self)._get_master_data(cr, uid, move, company, context=context)
+
+ def _get_invoice_line_vals(self, cr, uid, move, partner, inv_type, context=None):
+ res = super(stock_move, self)._get_invoice_line_vals(cr, uid, move, partner, inv_type, context=context)
+ if move.procurement_id and move.procurement_id.sale_line_id:
+ sale_line = move.procurement_id.sale_line_id
+ res['invoice_line_tax_id'] = [(6, 0, [x.id for x in sale_line.tax_id])]
+ res['account_analytic_id'] = sale_line.order_id.project_id and sale_line.order_id.project_id.id or False
+ res['price_unit'] = sale_line.price_unit
+ res['discount'] = sale_line.discount
+ return res
+
+
+class stock_location_route(osv.osv):
+ _inherit = "stock.location.route"
+ _columns = {
+ 'sale_selectable': fields.boolean("Selectable on Sales Order Line")
+ }