70 lines
2.9 KiB
Python
70 lines
2.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import fields, models, api, _
|
|
from odoo.exceptions import UserError
|
|
|
|
|
|
class StockPickingToWave(models.TransientModel):
|
|
_name = 'stock.add.to.wave'
|
|
_description = 'Wave Transfer Lines'
|
|
|
|
@api.model
|
|
def default_get(self, fields_list):
|
|
res = super().default_get(fields_list)
|
|
if self.env.context.get('active_model') == 'stock.move.line':
|
|
lines = self.env['stock.move.line'].browse(self.env.context.get('active_ids'))
|
|
res['line_ids'] = self.env.context.get('active_ids')
|
|
picking_types = lines.picking_type_id
|
|
elif self.env.context.get('active_model') == 'stock.picking':
|
|
pickings = self.env['stock.picking'].browse(self.env.context.get('active_ids'))
|
|
res['picking_ids'] = self.env.context.get('active_ids')
|
|
picking_types = pickings.picking_type_id
|
|
else:
|
|
return res
|
|
|
|
if len(picking_types) > 1:
|
|
raise UserError(_("The selected transfers should belong to the same operation type"))
|
|
return res
|
|
|
|
wave_id = fields.Many2one('stock.picking.batch', string='Wave Transfer', domain="[('is_wave', '=', True), ('state', 'in', ('draft', 'in_progress'))]")
|
|
picking_ids = fields.Many2many('stock.picking')
|
|
line_ids = fields.Many2many('stock.move.line')
|
|
mode = fields.Selection([('existing', 'an existing wave transfer'), ('new', 'a new wave transfer')], default='existing')
|
|
user_id = fields.Many2one('res.users', string='Responsible')
|
|
|
|
|
|
def attach_pickings(self):
|
|
self.ensure_one()
|
|
|
|
self = self.with_context(active_owner_id=self.user_id.id)
|
|
if self.line_ids:
|
|
company = self.line_ids.company_id
|
|
if len(company) > 1:
|
|
raise UserError(_("The selected operations should belong to a unique company."))
|
|
return self.line_ids._add_to_wave(self.wave_id)
|
|
if self.picking_ids:
|
|
company = self.picking_ids.company_id
|
|
if len(company) > 1:
|
|
raise UserError(_("The selected transfers should belong to a unique company."))
|
|
else:
|
|
raise UserError(_('Cannot create wave transfers'))
|
|
|
|
view = self.env.ref('stock_picking_batch.view_move_line_tree_detailed_wave')
|
|
return {
|
|
'name': _('Add Operations'),
|
|
'type': 'ir.actions.act_window',
|
|
'view_mode': 'list',
|
|
'views': [(view.id, 'tree')],
|
|
'res_model': 'stock.move.line',
|
|
'target': 'new',
|
|
'domain': [
|
|
('picking_id', 'in', self.picking_ids.ids),
|
|
('state', '!=', 'done')
|
|
],
|
|
'context': dict(
|
|
self.env.context,
|
|
picking_to_wave=self.picking_ids.ids,
|
|
active_wave_id=self.wave_id.id,
|
|
)}
|