summaryrefslogtreecommitdiff
path: root/addons/stock_picking_batch/wizard
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/stock_picking_batch/wizard
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/stock_picking_batch/wizard')
-rw-r--r--addons/stock_picking_batch/wizard/__init__.py5
-rw-r--r--addons/stock_picking_batch/wizard/stock_package_destination.py25
-rw-r--r--addons/stock_picking_batch/wizard/stock_picking_to_batch.py31
-rw-r--r--addons/stock_picking_batch/wizard/stock_picking_to_batch_views.xml36
4 files changed, 97 insertions, 0 deletions
diff --git a/addons/stock_picking_batch/wizard/__init__.py b/addons/stock_picking_batch/wizard/__init__.py
new file mode 100644
index 00000000..cfb88076
--- /dev/null
+++ b/addons/stock_picking_batch/wizard/__init__.py
@@ -0,0 +1,5 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import stock_picking_to_batch
+from . import stock_package_destination
diff --git a/addons/stock_picking_batch/wizard/stock_package_destination.py b/addons/stock_picking_batch/wizard/stock_package_destination.py
new file mode 100644
index 00000000..05b60cf0
--- /dev/null
+++ b/addons/stock_picking_batch/wizard/stock_package_destination.py
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, models
+
+
+class ChooseDestinationLocation(models.TransientModel):
+ _inherit = "stock.package.destination"
+
+ def _compute_move_line_ids(self):
+ destination_without_batch = self.env['stock.package.destination']
+ for destination in self:
+ if not destination.picking_id.batch_id:
+ destination_without_batch |= destination
+ continue
+ destination.move_line_ids = destination.picking_id.batch_id.move_line_ids.filtered(lambda l: l.qty_done > 0 and not l.result_package_id)
+ super(ChooseDestinationLocation, destination_without_batch)._compute_move_line_ids()
+
+ def action_done(self):
+ if self.picking_id.batch_id:
+ # set the same location on each move line and pass again in action_put_in_pack
+ self.move_line_ids.location_dest_id = self.location_dest_id
+ return self.picking_id.batch_id.action_put_in_pack()
+ else:
+ return super().action_done()
diff --git a/addons/stock_picking_batch/wizard/stock_picking_to_batch.py b/addons/stock_picking_batch/wizard/stock_picking_to_batch.py
new file mode 100644
index 00000000..f4f50f02
--- /dev/null
+++ b/addons/stock_picking_batch/wizard/stock_picking_to_batch.py
@@ -0,0 +1,31 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import fields, models, _
+from odoo.exceptions import UserError
+
+
+class StockPickingToBatch(models.TransientModel):
+ _name = 'stock.picking.to.batch'
+ _description = 'Batch Transfer Lines'
+
+ batch_id = fields.Many2one('stock.picking.batch', string='Batch Transfer', domain="[('state', '=', 'draft')]")
+ mode = fields.Selection([('existing', 'an existing batch transfer'), ('new', 'a new batch transfer')], default='existing')
+ user_id = fields.Many2one('res.users', string='Responsible', help='Person responsible for this batch transfer')
+
+ def attach_pickings(self):
+ self.ensure_one()
+ pickings = self.env['stock.picking'].browse(self.env.context.get('active_ids'))
+ if self.mode == 'new':
+ company = pickings.company_id
+ if len(company) > 1:
+ raise UserError(_("The selected pickings should belong to an unique company."))
+ batch = self.env['stock.picking.batch'].create({
+ 'user_id': self.user_id.id,
+ 'company_id': company.id,
+ 'picking_type_id': pickings[0].picking_type_id.id,
+ })
+ else:
+ batch = self.batch_id
+
+ pickings.write({'batch_id': batch.id})
diff --git a/addons/stock_picking_batch/wizard/stock_picking_to_batch_views.xml b/addons/stock_picking_batch/wizard/stock_picking_to_batch_views.xml
new file mode 100644
index 00000000..5483f40a
--- /dev/null
+++ b/addons/stock_picking_batch/wizard/stock_picking_to_batch_views.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+
+ <!-- add picking to batch -->
+ <record id="stock_picking_to_batch_form" model="ir.ui.view">
+ <field name="name">stock.picking.to.batch.form</field>
+ <field name="model">stock.picking.to.batch</field>
+ <field name="arch" type="xml">
+ <form string="Add pickings to">
+ <group>
+ <group>
+ <label for="mode" string="Add to"/>
+ <field name="mode" widget="radio" nolabel="1"/>
+ <field name="batch_id" options="{'no_create_edit': True, 'no_open': True}" attrs="{'invisible': [('mode', '=', 'new')], 'required': [('mode', '=', 'existing')]}"/>
+ <field name="user_id" options="{'no_create_edit': True}" attrs="{'invisible': [('mode', '=', 'existing')]}"/>
+ </group>
+ </group>
+
+ <footer>
+ <button name="attach_pickings" type="object" string="Confirm" class="btn-primary"/>
+ <button string="Cancel" class="btn-secondary" special="cancel"/>
+ </footer>
+ </form>
+ </field>
+ </record>
+
+ <record id="stock_picking_to_batch_action_stock_picking" model="ir.actions.act_window">
+ <field name="name">Add to batch</field>
+ <field name="res_model">stock.picking.to.batch</field>
+ <field name="view_mode">form</field>
+ <field name="target">new</field>
+ <field name="binding_model_id" ref="model_stock_picking"/>
+ <field name="binding_view_types">list</field>
+ </record>
+
+</odoo>