[IMP] stock: improve picking draft form
The reserved and the done column doesn't have any sense for
draft picking and the forectasted button was always green.
-> Fix it
Also we add forectasted information for draft move in mrp
(281e1a57b3).
-> Use it also for outgoing picking
task-2579011
Part-of: odoo/odoo#77092
This commit is contained in:
@@ -1876,3 +1876,30 @@ class TestStockFlow(TestStockCommon):
|
||||
picking = f.save()
|
||||
|
||||
self.assertEqual(f.state, 'confirmed')
|
||||
|
||||
def test_picking_form_immediate_transfer(self):
|
||||
picking_form = Form(self.env['stock.picking'].with_context(default_immediate_transfer=True))
|
||||
|
||||
picking_form.picking_type_id = self.env.ref('stock.picking_type_in')
|
||||
with picking_form.move_ids_without_package.new() as move:
|
||||
self.assertFalse(move._get_modifier('quantity_done', 'column_invisible'))
|
||||
self.assertTrue(move._get_modifier('forecast_availability', 'column_invisible'))
|
||||
self.assertTrue(move._get_modifier('reserved_availability', 'column_invisible'))
|
||||
move.product_id = self.productA
|
||||
move.quantity_done = 1
|
||||
picking = picking_form.save()
|
||||
|
||||
self.assertEqual(picking.state, 'assigned')
|
||||
|
||||
picking_form = Form(self.env['stock.picking'].with_context(default_immediate_transfer=False))
|
||||
|
||||
picking_form.picking_type_id = self.env.ref('stock.picking_type_in')
|
||||
with picking_form.move_ids_without_package.new() as move:
|
||||
self.assertTrue(move._get_modifier('quantity_done', 'column_invisible'))
|
||||
self.assertTrue(move._get_modifier('forecast_availability', 'column_invisible'))
|
||||
self.assertTrue(move._get_modifier('reserved_availability', 'column_invisible'))
|
||||
move.product_id = self.productA
|
||||
move.product_uom_qty = 1
|
||||
picking = picking_form.save()
|
||||
|
||||
self.assertEqual(picking.state, 'draft')
|
||||
|
||||
@@ -380,14 +380,18 @@
|
||||
<field name="is_quantity_done_editable" invisible="1"/>
|
||||
<field name="product_packaging_id" groups="product.group_stock_packaging"/>
|
||||
<field name="product_uom_qty" string="Demand" attrs="{'column_invisible': [('parent.immediate_transfer', '=', True)], 'readonly': ['|', ('is_initial_demand_editable', '=', False), '&', '&', ('show_operations', '=', True), ('is_locked', '=', True), ('is_initial_demand_editable', '=', False)]}"/>
|
||||
<button type="object" name="action_product_forecast_report" title="Forecast Report" icon="fa-area-chart" attrs="{'invisible': ['|', ('forecast_availability', '<', 0), '|', ('parent.immediate_transfer', '=', True), ('parent.picking_type_code', '=', 'outgoing')]}"/>
|
||||
<button type="object" name="action_product_forecast_report" title="Forecast Report" icon="fa-area-chart text-danger" attrs="{'invisible': ['|', ('forecast_availability', '>=', 0), '|', ('parent.immediate_transfer', '=', True), ('parent.picking_type_code', '=', 'outgoing')]}"/>
|
||||
<field name="reserved_availability" string="Reserved" attrs="{'column_invisible': (['|','|', ('parent.state','=', 'done'), ('parent.picking_type_code', 'in', ['incoming', 'outgoing']), ('parent.immediate_transfer', '=', True)])}"/>
|
||||
<button type="object" name="action_product_forecast_report" title="Forecast Report" icon="fa-area-chart"
|
||||
attrs="{'invisible': ['|', ('forecast_availability', '<', 0), '|', ('parent.immediate_transfer', '=', True), '&', ('parent.picking_type_code', '=', 'outgoing'), ('state', '!=', 'draft')]}"/>
|
||||
<button type="object" name="action_product_forecast_report" title="Forecast Report" icon="fa-area-chart text-danger"
|
||||
attrs="{'invisible': ['|', ('forecast_availability', '>=', 0), '|', ('parent.immediate_transfer', '=', True), '&', ('parent.picking_type_code', '=', 'outgoing'), ('state', '!=', 'draft')]}"/>
|
||||
<field name="forecast_expected_date" invisible="1"/>
|
||||
<field name="forecast_availability" string="Reserved"
|
||||
attrs="{'column_invisible': ['|', '|', ('parent.state', 'in', ['draft', 'done']), ('parent.picking_type_code', '!=', 'outgoing'), ('parent.immediate_transfer', '=', True)]}" widget="forecast_widget"/>
|
||||
<field name="reserved_availability" string="Reserved"
|
||||
attrs="{'column_invisible': ['|', '|', ('parent.state', 'in', ['draft', 'done']), ('parent.picking_type_code', 'in', ['incoming', 'outgoing']), ('parent.immediate_transfer', '=', True)]}"/>
|
||||
<field name="product_qty" invisible="1" readonly="1"/>
|
||||
<field name="forecast_expected_date" invisible="1" />
|
||||
<field name="forecast_availability" string="Reserved" attrs="{'column_invisible': ['|', '|', ('parent.picking_type_code', '!=', 'outgoing'), ('parent.state','=', 'done'), ('parent.immediate_transfer', '=', True)]}" widget="forecast_widget"/>
|
||||
<field name="quantity_done" string="Done" attrs="{'readonly': [('is_quantity_done_editable', '=', False)]}"/>
|
||||
<field name="product_uom" attrs="{'readonly': [('state', '!=', 'draft'), ('id', '!=', False)]}" options="{'no_open': True, 'no_create': True}" string="Unit of Measure" groups="uom.group_uom"/>
|
||||
<field name="quantity_done" string="Done" attrs="{'readonly': [('is_quantity_done_editable', '=', False)], 'column_invisible':[('parent.state', '=', 'draft'), ('parent.immediate_transfer', '=', False)]}"/>
|
||||
<field name="product_uom" attrs="{'readonly': [('state', '!=', 'draft'), ('additional', '=', False)]}" options="{'no_open': True, 'no_create': True}" string="Unit of Measure" groups="uom.group_uom"/>
|
||||
<field name="lot_ids" widget="many2many_tags"
|
||||
groups="stock.group_production_lot"
|
||||
attrs="{'invisible': ['|', ('show_details_visible', '=', False), ('has_tracking', '!=', 'serial')]}"
|
||||
|
||||
Reference in New Issue
Block a user