12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- # -*- 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,
- )}
|