From 05ab387fc47bd2445d29bc509303d26f9d42a418 Mon Sep 17 00:00:00 2001 From: Jordi Ballester Date: Mon, 12 Jun 2017 15:19:34 +0200 Subject: [PATCH 01/17] add module ddmrp_exclude_moves_adu_calc --- ddmrp_exclude_moves_adu_calc/README.rst | 62 +++++++ ddmrp_exclude_moves_adu_calc/__init__.py | 6 + ddmrp_exclude_moves_adu_calc/__openerp__.py | 22 +++ .../models/__init__.py | 8 + .../models/stock_location.py | 15 ++ .../models/stock_move.py | 15 ++ .../models/stock_warehouse_orderpoint.py | 30 ++++ .../static/description/icon.png | Bin 0 -> 9455 bytes .../tests/__init__.py | 7 + .../tests/test_ddmrp.py | 164 ++++++++++++++++++ .../views/stock_location_view.xml | 17 ++ .../views/stock_move_view.xml | 17 ++ 12 files changed, 363 insertions(+) create mode 100644 ddmrp_exclude_moves_adu_calc/README.rst create mode 100644 ddmrp_exclude_moves_adu_calc/__init__.py create mode 100644 ddmrp_exclude_moves_adu_calc/__openerp__.py create mode 100644 ddmrp_exclude_moves_adu_calc/models/__init__.py create mode 100644 ddmrp_exclude_moves_adu_calc/models/stock_location.py create mode 100644 ddmrp_exclude_moves_adu_calc/models/stock_move.py create mode 100644 ddmrp_exclude_moves_adu_calc/models/stock_warehouse_orderpoint.py create mode 100644 ddmrp_exclude_moves_adu_calc/static/description/icon.png create mode 100644 ddmrp_exclude_moves_adu_calc/tests/__init__.py create mode 100644 ddmrp_exclude_moves_adu_calc/tests/test_ddmrp.py create mode 100644 ddmrp_exclude_moves_adu_calc/views/stock_location_view.xml create mode 100644 ddmrp_exclude_moves_adu_calc/views/stock_move_view.xml diff --git a/ddmrp_exclude_moves_adu_calc/README.rst b/ddmrp_exclude_moves_adu_calc/README.rst new file mode 100644 index 000000000..c0db5ee42 --- /dev/null +++ b/ddmrp_exclude_moves_adu_calc/README.rst @@ -0,0 +1,62 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +============================ +DDMRP Exclude Moves ADU Calc +============================ + +This module adds new criteria to exclude moves from the calculation of the +Average Dailiy Usage on an Orderpoint (Buffer), based on: + +* Locations +* Specific stock moves + + +Usage +===== + +Go to 'Configuration / Reordering Rules' and indicate a Procurement UoM. + + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/153/8.0 + + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smashing it by providing a detailed and welcomed feedback. + +Credits +======= + +Images +------ + +* Odoo Community Association: `Icon `_. + +Contributors +------------ + +* Jordi Ballester Alomar + + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit https://odoo-community.org. diff --git a/ddmrp_exclude_moves_adu_calc/__init__.py b/ddmrp_exclude_moves_adu_calc/__init__.py new file mode 100644 index 000000000..e50f9b656 --- /dev/null +++ b/ddmrp_exclude_moves_adu_calc/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# Copyright 2017 Eficent Business and IT Consulting Services S.L. +# (http://www.eficent.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from . import models diff --git a/ddmrp_exclude_moves_adu_calc/__openerp__.py b/ddmrp_exclude_moves_adu_calc/__openerp__.py new file mode 100644 index 000000000..e0a71ea24 --- /dev/null +++ b/ddmrp_exclude_moves_adu_calc/__openerp__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Copyright 2017 Eficent Business and IT Consulting Services S.L. +# (http://www.eficent.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +{ + "name": "DDMRP Exclude Moves ADU Calc", + "summary": "Define additional rules to exclude certain moves from ADU " + "calculation", + "version": "9.0.1.0.0", + "author": "Eficent," + "Odoo Community Association (OCA)", + "website": "https://www.odoo-community.org", + "category": "Warehouse Management", + "depends": ["ddmrp"], + "data": [ + "views/stock_move_view.xml", + "views/stock_location_view.xml"], + "license": "AGPL-3", + 'installable': True, + 'application': False, +} diff --git a/ddmrp_exclude_moves_adu_calc/models/__init__.py b/ddmrp_exclude_moves_adu_calc/models/__init__.py new file mode 100644 index 000000000..b719bec35 --- /dev/null +++ b/ddmrp_exclude_moves_adu_calc/models/__init__.py @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- +# Copyright 2017 Eficent Business and IT Consulting Services S.L. +# (http://www.eficent.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from . import stock_location +from . import stock_move +from . import stock_warehouse_orderpoint diff --git a/ddmrp_exclude_moves_adu_calc/models/stock_location.py b/ddmrp_exclude_moves_adu_calc/models/stock_location.py new file mode 100644 index 000000000..765a86415 --- /dev/null +++ b/ddmrp_exclude_moves_adu_calc/models/stock_location.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +# Copyright 2017 Eficent Business and IT Consulting Services S.L. +# (http://www.eficent.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from openerp import fields, models + + +class StockLocation(models.Model): + _inherit = "stock.location" + + exclude_from_adu = fields.Boolean( + string='Exclude this location from ADU calculation', copy=False, + help="If this flag is set stock moves into this location will be " + "excluded from ADU calculation in the origin location buffer.") diff --git a/ddmrp_exclude_moves_adu_calc/models/stock_move.py b/ddmrp_exclude_moves_adu_calc/models/stock_move.py new file mode 100644 index 000000000..00a488aa6 --- /dev/null +++ b/ddmrp_exclude_moves_adu_calc/models/stock_move.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +# Copyright 2017 Eficent Business and IT Consulting Services S.L. +# (http://www.eficent.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from openerp import fields, models + + +class StockMove(models.Model): + _inherit = "stock.move" + + exclude_from_adu = fields.Boolean( + string='Exclude this move from ADU calculation', copy=False, + help="If this flag is set this stock move will be excluded from ADU " + "calculation") diff --git a/ddmrp_exclude_moves_adu_calc/models/stock_warehouse_orderpoint.py b/ddmrp_exclude_moves_adu_calc/models/stock_warehouse_orderpoint.py new file mode 100644 index 000000000..aab4842fe --- /dev/null +++ b/ddmrp_exclude_moves_adu_calc/models/stock_warehouse_orderpoint.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# Copyright 2017 Eficent Business and IT Consulting Services S.L. +# (http://www.eficent.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from openerp import api, models + + +class StockWarehouseOrderpoint(models.Model): + _inherit = "stock.warehouse.orderpoint" + + @api.model + def _exclude_past_moves_domain(self, locations): + return [('exclude_from_adu', '=', True), ('state', '=', 'done')] + + @api.model + def _past_moves_domain(self, date_from, locations): + + exclude_locs = self.env['stock.location'].search([( + 'exclude_from_adu', '=', True)]) + new_locs = self.env['stock.location'] + for loc in locations: + if loc not in exclude_locs: + new_locs += loc + res = super(StockWarehouseOrderpoint, + self)._past_moves_domain(date_from, new_locs) + exclude_moves = self.env['stock.move'].search( + self._exclude_past_moves_domain(new_locs)) + res.append(('id', 'not in', exclude_moves.ids)) + return res diff --git a/ddmrp_exclude_moves_adu_calc/static/description/icon.png b/ddmrp_exclude_moves_adu_calc/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/ddmrp_exclude_moves_adu_calc/tests/__init__.py b/ddmrp_exclude_moves_adu_calc/tests/__init__.py new file mode 100644 index 000000000..f8677f290 --- /dev/null +++ b/ddmrp_exclude_moves_adu_calc/tests/__init__.py @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +# © 2016 Eficent Business and IT Consulting Services S.L. +# (http://www.eficent.com) +# © 2016 Aleph Objects, Inc. (https://www.alephobjects.com/) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from . import test_ddmrp diff --git a/ddmrp_exclude_moves_adu_calc/tests/test_ddmrp.py b/ddmrp_exclude_moves_adu_calc/tests/test_ddmrp.py new file mode 100644 index 000000000..7f9076b00 --- /dev/null +++ b/ddmrp_exclude_moves_adu_calc/tests/test_ddmrp.py @@ -0,0 +1,164 @@ +# -*- coding: utf-8 -*- +# © 2016 Eficent Business and IT Consulting Services S.L. +# (http://www.eficent.com) +# © 2016 Aleph Objects, Inc. (https://www.alephobjects.com/) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +import openerp.tests.common as common +from openerp import fields +from datetime import datetime, timedelta + + +class TestDdmrp(common.TransactionCase): + + def setUp(self): + super(TestDdmrp, self).setUp() + + # Models + self.productModel = self.env['product.product'] + self.orderpointModel = self.env['stock.warehouse.orderpoint'] + self.pickingModel = self.env['stock.picking'] + self.quantModel = self.env['stock.quant'] + self.aducalcmethodModel = self.env['product.adu.calculation.method'] + self.locationModel = self.env['stock.location'] + self.make_procurement_orderpoint_model =\ + self.env['make.procurement.orderpoint'] + self.user_model = self.env['res.users'] + + # Refs + self.main_company = self.env.ref('base.main_company') + self.warehouse = self.env.ref('stock.warehouse0') + self.stock_location = self.env.ref('stock.stock_location_stock') + self.location_shelf1 = self.env.ref('stock.stock_location_components') + self.supplier_location = self.env.ref('stock.stock_location_suppliers') + self.customer_location = self.env.ref('stock.stock_location_customers') + self.uom_unit = self.env.ref('product.product_uom_unit') + self.buffer_profile_pur = self.env.ref( + 'ddmrp.stock_buffer_profile_replenish_purchased_short_low') + self.group_stock_manager = self.env.ref('stock.group_stock_manager') + + # Create users + self.user = self._create_user('user_1', + [self.group_stock_manager]) + + self.productA = self.productModel.create( + {'name': 'product A', + 'standard_price': 1, + 'type': 'product', + 'uom_id': self.uom_unit.id, + 'default_code': 'A', + }) + + self.inventory_loc = self.locationModel.create({ + 'usage': 'inventory', + 'name': 'Inventory', + 'company_id': self.main_company.id + }) + + self.binA = self.locationModel.create({ + 'usage': 'internal', + 'name': 'Bin A', + 'location_id': self.location_shelf1.id, + 'company_id': self.main_company.id + }) + + self.binB = self.locationModel.create({ + 'usage': 'internal', + 'name': 'Bin B', + 'location_id': self.location_shelf1.id, + 'company_id': self.main_company.id + }) + + self.locationModel._parent_store_compute() + + self.quant = self.quantModel.create( + {'location_id': self.binA.id, + 'company_id': self.main_company.id, + 'product_id': self.productA.id, + 'qty': 200.0}) + + def _create_user(self, login, groups): + """ Create a user.""" + group_ids = [group.id for group in groups] + user = \ + self.user_model.with_context({'no_reset_password': True}).create({ + 'name': 'Test User', + 'login': login, + 'password': 'demo', + 'email': 'test@yourcompany.com', + 'groups_id': [(6, 0, group_ids)] + }) + return user + + def create_pickingoutA(self, date_move, qty): + return self.pickingModel.sudo(self.user).create({ + 'picking_type_id': self.ref('stock.picking_type_out'), + 'location_id': self.binA.id, + 'location_dest_id': self.customer_location.id, + 'move_lines': [ + (0, 0, { + 'name': 'Test move', + 'product_id': self.productA.id, + 'date_expected': date_move, + 'date': date_move, + 'product_uom': self.productA.uom_id.id, + 'product_uom_qty': qty, + 'location_id': self.binA.id, + 'location_dest_id': self.customer_location.id, + })] + }) + + def create_pickingoutB(self, date_move, qty): + return self.pickingModel.sudo(self.user).create({ + 'picking_type_id': self.ref('stock.picking_type_out'), + 'location_id': self.binA.id, + 'location_dest_id': self.inventory_loc.id, + 'move_lines': [ + (0, 0, { + 'name': 'Test move', + 'product_id': self.productA.id, + 'date_expected': date_move, + 'date': date_move, + 'product_uom': self.productA.uom_id.id, + 'product_uom_qty': qty, + 'location_id': self.binA.id, + 'location_dest_id': self.customer_location.id, + })] + }) + + def test_adu_calculation_past_120_days_exclude_from_adu(self): + + method = self.env.ref('ddmrp.adu_calculation_method_past_120') + orderpointA = self.orderpointModel.create({ + 'buffer_profile_id': self.buffer_profile_pur.id, + 'product_id': self.productA.id, + 'location_id': self.stock_location.id, + 'warehouse_id': self.warehouse.id, + 'product_min_qty': 0.0, + 'product_max_qty': 0.0, + 'qty_multiple': 0.0, + 'dlt': 10, + 'adu_calculation_method': method.id, + 'adu_fixed': 4 + }) + self.orderpointModel.cron_ddmrp() + + self.assertEqual(orderpointA.adu, 0) + + pickingOuts = self.pickingModel + date_move = datetime.today() - timedelta(days=30) + pickingOut = self.create_pickingoutA(date_move, 60) + for move in pickingOut.move_lines: + move.exclude_from_adu = True + pickingOuts += pickingOut + date_move = datetime.today() - timedelta(days=60) + pickingOuts += self.create_pickingoutA(date_move, 60) + pickingOuts += self.create_pickingoutB(date_move, 60) + for picking in pickingOuts: + picking.action_confirm() + picking.action_assign() + picking.action_done() + + self.orderpointModel.cron_ddmrp() + to_assert_value = (60 + 60) / 120 + self.assertEqual(orderpointA.adu, to_assert_value) diff --git a/ddmrp_exclude_moves_adu_calc/views/stock_location_view.xml b/ddmrp_exclude_moves_adu_calc/views/stock_location_view.xml new file mode 100644 index 000000000..e15f21411 --- /dev/null +++ b/ddmrp_exclude_moves_adu_calc/views/stock_location_view.xml @@ -0,0 +1,17 @@ + + + + + + stock.location.form + stock.location + + + + + + + + + + diff --git a/ddmrp_exclude_moves_adu_calc/views/stock_move_view.xml b/ddmrp_exclude_moves_adu_calc/views/stock_move_view.xml new file mode 100644 index 000000000..d56858193 --- /dev/null +++ b/ddmrp_exclude_moves_adu_calc/views/stock_move_view.xml @@ -0,0 +1,17 @@ + + + + + + stock.move.form + stock.move + + + + + + + + + + From 77baefca6f2743e51cec474352a6c85a16cea74a Mon Sep 17 00:00:00 2001 From: Lois Rilo Date: Mon, 22 Jan 2018 17:18:11 +0100 Subject: [PATCH 02/17] [10.0][MIG] ddmrp_exclude_moves_adu_cal --- ddmrp_exclude_moves_adu_calc/README.rst | 17 +++++++------- ddmrp_exclude_moves_adu_calc/__init__.py | 2 -- .../{__openerp__.py => __manifest__.py} | 9 +++---- .../models/__init__.py | 2 -- .../models/stock_location.py | 7 +++--- .../models/stock_move.py | 7 +++--- .../models/stock_warehouse_orderpoint.py | 19 ++++++--------- .../static/description/icon.png | Bin 9455 -> 5000 bytes .../tests/__init__.py | 3 --- .../tests/test_ddmrp.py | 7 +++--- .../views/stock_location_view.xml | 22 ++++++++---------- .../views/stock_move_view.xml | 22 ++++++++---------- 12 files changed, 51 insertions(+), 66 deletions(-) rename ddmrp_exclude_moves_adu_calc/{__openerp__.py => __manifest__.py} (74%) diff --git a/ddmrp_exclude_moves_adu_calc/README.rst b/ddmrp_exclude_moves_adu_calc/README.rst index c0db5ee42..c454b3987 100644 --- a/ddmrp_exclude_moves_adu_calc/README.rst +++ b/ddmrp_exclude_moves_adu_calc/README.rst @@ -12,23 +12,22 @@ Average Dailiy Usage on an Orderpoint (Buffer), based on: * Locations * Specific stock moves - Usage ===== -Go to 'Configuration / Reordering Rules' and indicate a Procurement UoM. - - -.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas - :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/153/8.0 +You can exclude specific moves or all moves towards a specific location: +* Go to *Inventory > Reports > Stock Moves* and check the box *Exclude this + move from ADU calculation* for a specific move. +* Go to *Inventory > Configuration > WH Management > Locations* and check the + flag *Exclude this location from ADU calculation* for the desired locations. Bug Tracker =========== Bugs are tracked on `GitHub Issues -`_. In case of trouble, please +`_. In case of +trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed feedback. @@ -44,7 +43,7 @@ Contributors ------------ * Jordi Ballester Alomar - +* Lois Rilo Antelo Maintainer ---------- diff --git a/ddmrp_exclude_moves_adu_calc/__init__.py b/ddmrp_exclude_moves_adu_calc/__init__.py index e50f9b656..149f4e4fd 100644 --- a/ddmrp_exclude_moves_adu_calc/__init__.py +++ b/ddmrp_exclude_moves_adu_calc/__init__.py @@ -1,6 +1,4 @@ # -*- coding: utf-8 -*- -# Copyright 2017 Eficent Business and IT Consulting Services S.L. -# (http://www.eficent.com) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). from . import models diff --git a/ddmrp_exclude_moves_adu_calc/__openerp__.py b/ddmrp_exclude_moves_adu_calc/__manifest__.py similarity index 74% rename from ddmrp_exclude_moves_adu_calc/__openerp__.py rename to ddmrp_exclude_moves_adu_calc/__manifest__.py index e0a71ea24..dca1007ac 100644 --- a/ddmrp_exclude_moves_adu_calc/__openerp__.py +++ b/ddmrp_exclude_moves_adu_calc/__manifest__.py @@ -1,13 +1,13 @@ # -*- coding: utf-8 -*- -# Copyright 2017 Eficent Business and IT Consulting Services S.L. +# Copyright 2017-18 Eficent Business and IT Consulting Services S.L. # (http://www.eficent.com) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). { - "name": "DDMRP Exclude Moves ADU Calc", + "name": "DDMRP Exclude Moves ADU Calc", "summary": "Define additional rules to exclude certain moves from ADU " "calculation", - "version": "9.0.1.0.0", + "version": "10.0.1.0.0", "author": "Eficent," "Odoo Community Association (OCA)", "website": "https://www.odoo-community.org", @@ -15,7 +15,8 @@ "depends": ["ddmrp"], "data": [ "views/stock_move_view.xml", - "views/stock_location_view.xml"], + "views/stock_location_view.xml", + ], "license": "AGPL-3", 'installable': True, 'application': False, diff --git a/ddmrp_exclude_moves_adu_calc/models/__init__.py b/ddmrp_exclude_moves_adu_calc/models/__init__.py index b719bec35..d5e871fb2 100644 --- a/ddmrp_exclude_moves_adu_calc/models/__init__.py +++ b/ddmrp_exclude_moves_adu_calc/models/__init__.py @@ -1,6 +1,4 @@ # -*- coding: utf-8 -*- -# Copyright 2017 Eficent Business and IT Consulting Services S.L. -# (http://www.eficent.com) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). from . import stock_location diff --git a/ddmrp_exclude_moves_adu_calc/models/stock_location.py b/ddmrp_exclude_moves_adu_calc/models/stock_location.py index 765a86415..f89754399 100644 --- a/ddmrp_exclude_moves_adu_calc/models/stock_location.py +++ b/ddmrp_exclude_moves_adu_calc/models/stock_location.py @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- -# Copyright 2017 Eficent Business and IT Consulting Services S.L. +# Copyright 2017-18 Eficent Business and IT Consulting Services S.L. # (http://www.eficent.com) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). -from openerp import fields, models +from odoo import fields, models class StockLocation(models.Model): @@ -12,4 +12,5 @@ class StockLocation(models.Model): exclude_from_adu = fields.Boolean( string='Exclude this location from ADU calculation', copy=False, help="If this flag is set stock moves into this location will be " - "excluded from ADU calculation in the origin location buffer.") + "excluded from ADU calculation in the origin location buffer.", + ) diff --git a/ddmrp_exclude_moves_adu_calc/models/stock_move.py b/ddmrp_exclude_moves_adu_calc/models/stock_move.py index 00a488aa6..030824eed 100644 --- a/ddmrp_exclude_moves_adu_calc/models/stock_move.py +++ b/ddmrp_exclude_moves_adu_calc/models/stock_move.py @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- -# Copyright 2017 Eficent Business and IT Consulting Services S.L. +# Copyright 2017-18 Eficent Business and IT Consulting Services S.L. # (http://www.eficent.com) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). -from openerp import fields, models +from odoo import fields, models class StockMove(models.Model): @@ -12,4 +12,5 @@ class StockMove(models.Model): exclude_from_adu = fields.Boolean( string='Exclude this move from ADU calculation', copy=False, help="If this flag is set this stock move will be excluded from ADU " - "calculation") + "calculation", + ) diff --git a/ddmrp_exclude_moves_adu_calc/models/stock_warehouse_orderpoint.py b/ddmrp_exclude_moves_adu_calc/models/stock_warehouse_orderpoint.py index aab4842fe..4acfd0061 100644 --- a/ddmrp_exclude_moves_adu_calc/models/stock_warehouse_orderpoint.py +++ b/ddmrp_exclude_moves_adu_calc/models/stock_warehouse_orderpoint.py @@ -1,30 +1,25 @@ # -*- coding: utf-8 -*- -# Copyright 2017 Eficent Business and IT Consulting Services S.L. +# Copyright 2017-18 Eficent Business and IT Consulting Services S.L. # (http://www.eficent.com) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). -from openerp import api, models +from odoo import api, models class StockWarehouseOrderpoint(models.Model): _inherit = "stock.warehouse.orderpoint" @api.model - def _exclude_past_moves_domain(self, locations): + def _exclude_past_moves_domain(self): return [('exclude_from_adu', '=', True), ('state', '=', 'done')] @api.model def _past_moves_domain(self, date_from, locations): - - exclude_locs = self.env['stock.location'].search([( - 'exclude_from_adu', '=', True)]) - new_locs = self.env['stock.location'] - for loc in locations: - if loc not in exclude_locs: - new_locs += loc + new_locs = locations.filtered(lambda l: not l.exclude_from_adu) res = super(StockWarehouseOrderpoint, self)._past_moves_domain(date_from, new_locs) exclude_moves = self.env['stock.move'].search( - self._exclude_past_moves_domain(new_locs)) - res.append(('id', 'not in', exclude_moves.ids)) + self._exclude_past_moves_domain()) + if exclude_moves: + res.append(('id', 'not in', exclude_moves.ids)) return res diff --git a/ddmrp_exclude_moves_adu_calc/static/description/icon.png b/ddmrp_exclude_moves_adu_calc/static/description/icon.png index 3a0328b516c4980e8e44cdb63fd945757ddd132d..a0b0ed73ac91bdb4ca8c2269d6c63bb8588f5d6d 100644 GIT binary patch literal 5000 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 C40@jc literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I diff --git a/ddmrp_exclude_moves_adu_calc/tests/__init__.py b/ddmrp_exclude_moves_adu_calc/tests/__init__.py index f8677f290..4990ad14a 100644 --- a/ddmrp_exclude_moves_adu_calc/tests/__init__.py +++ b/ddmrp_exclude_moves_adu_calc/tests/__init__.py @@ -1,7 +1,4 @@ # -*- coding: utf-8 -*- -# © 2016 Eficent Business and IT Consulting Services S.L. -# (http://www.eficent.com) -# © 2016 Aleph Objects, Inc. (https://www.alephobjects.com/) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). from . import test_ddmrp diff --git a/ddmrp_exclude_moves_adu_calc/tests/test_ddmrp.py b/ddmrp_exclude_moves_adu_calc/tests/test_ddmrp.py index 7f9076b00..1cfdb9897 100644 --- a/ddmrp_exclude_moves_adu_calc/tests/test_ddmrp.py +++ b/ddmrp_exclude_moves_adu_calc/tests/test_ddmrp.py @@ -1,11 +1,10 @@ # -*- coding: utf-8 -*- -# © 2016 Eficent Business and IT Consulting Services S.L. +# Copyright 2016-18 Eficent Business and IT Consulting Services S.L. # (http://www.eficent.com) -# © 2016 Aleph Objects, Inc. (https://www.alephobjects.com/) +# Copyright 2016 Aleph Objects, Inc. (https://www.alephobjects.com/) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). -import openerp.tests.common as common -from openerp import fields +import odoo.tests.common as common from datetime import datetime, timedelta diff --git a/ddmrp_exclude_moves_adu_calc/views/stock_location_view.xml b/ddmrp_exclude_moves_adu_calc/views/stock_location_view.xml index e15f21411..384b90dc3 100644 --- a/ddmrp_exclude_moves_adu_calc/views/stock_location_view.xml +++ b/ddmrp_exclude_moves_adu_calc/views/stock_location_view.xml @@ -1,17 +1,15 @@ - + - - - stock.location.form - stock.location - - - - - + + stock.location.form + stock.location + + + + - + + - diff --git a/ddmrp_exclude_moves_adu_calc/views/stock_move_view.xml b/ddmrp_exclude_moves_adu_calc/views/stock_move_view.xml index d56858193..3602692ea 100644 --- a/ddmrp_exclude_moves_adu_calc/views/stock_move_view.xml +++ b/ddmrp_exclude_moves_adu_calc/views/stock_move_view.xml @@ -1,17 +1,15 @@ - + - - - stock.move.form - stock.move - - - - - + + stock.move.form + stock.move + + + + - + + - From e397b161142a8e3954b500a8e8918d131fb31857 Mon Sep 17 00:00:00 2001 From: Lois Rilo Date: Mon, 17 Sep 2018 16:32:28 +0200 Subject: [PATCH 03/17] [11.0][MIG] ddmrp_exclude_moves_adu_calc --- ddmrp_exclude_moves_adu_calc/README.rst | 88 +++- ddmrp_exclude_moves_adu_calc/__init__.py | 3 - ddmrp_exclude_moves_adu_calc/__manifest__.py | 6 +- .../models/__init__.py | 3 - .../models/stock_location.py | 1 - .../models/stock_move.py | 12 +- .../models/stock_warehouse_orderpoint.py | 3 +- .../readme/CONTRIBUTORS.rst | 2 + .../readme/DESCRIPTION.rst | 5 + .../readme/HISTORY.rst | 4 + ddmrp_exclude_moves_adu_calc/readme/USAGE.rst | 6 + .../static/description/icon.png | Bin 5000 -> 2440 bytes .../static/description/index.html | 451 ++++++++++++++++++ .../tests/__init__.py | 3 - .../tests/test_ddmrp.py | 11 +- .../views/stock_move_view.xml | 11 +- 16 files changed, 565 insertions(+), 44 deletions(-) create mode 100644 ddmrp_exclude_moves_adu_calc/readme/CONTRIBUTORS.rst create mode 100644 ddmrp_exclude_moves_adu_calc/readme/DESCRIPTION.rst create mode 100644 ddmrp_exclude_moves_adu_calc/readme/HISTORY.rst create mode 100644 ddmrp_exclude_moves_adu_calc/readme/USAGE.rst create mode 100644 ddmrp_exclude_moves_adu_calc/static/description/index.html diff --git a/ddmrp_exclude_moves_adu_calc/README.rst b/ddmrp_exclude_moves_adu_calc/README.rst index c454b3987..4b7da70f8 100644 --- a/ddmrp_exclude_moves_adu_calc/README.rst +++ b/ddmrp_exclude_moves_adu_calc/README.rst @@ -1,61 +1,107 @@ -.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg - :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html - :alt: License: AGPL-3 - ============================ DDMRP Exclude Moves ADU Calc ============================ +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fddmrp-lightgray.png?logo=github + :target: https://github.com/OCA/ddmrp/tree/11.0/ddmrp_exclude_moves_adu_calc + :alt: OCA/ddmrp +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/ddmrp-11-0/ddmrp-11-0-ddmrp_exclude_moves_adu_calc + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/255/11.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + This module adds new criteria to exclude moves from the calculation of the -Average Dailiy Usage on an Orderpoint (Buffer), based on: +Average Daily Usage (ADU) on a Buffer, based on: * Locations * Specific stock moves +**Table of contents** + +.. contents:: + :local: + Usage ===== You can exclude specific moves or all moves towards a specific location: -* Go to *Inventory > Reports > Stock Moves* and check the box *Exclude this - move from ADU calculation* for a specific move. +* Go to *Inventory > Reports > Stock Moves* and click on *Action > Exclude + from ADU* for a specific move or several. * Go to *Inventory > Configuration > WH Management > Locations* and check the flag *Exclude this location from ADU calculation* for the desired locations. +Changelog +========= + +11.0.1.0.0 (2018-09-17) +~~~~~~~~~~~~~~~~~~~~~~~ + +* Start of history. Migrated to OCA/ddmrp. + Bug Tracker =========== -Bugs are tracked on `GitHub Issues -`_. In case of -trouble, please -check there if your issue has already been reported. If you spotted it first, -help us smashing it by providing a detailed and welcomed feedback. +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. Credits ======= -Images ------- +Authors +~~~~~~~ -* Odoo Community Association: `Icon `_. +* Eficent Contributors ------------- +~~~~~~~~~~~~ * Jordi Ballester Alomar * Lois Rilo Antelo -Maintainer ----------- +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. .. image:: https://odoo-community.org/logo.png :alt: Odoo Community Association :target: https://odoo-community.org -This module is maintained by the OCA. - OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -To contribute to this module, please visit https://odoo-community.org. +.. |maintainer-jbeficent| image:: https://github.com/jbeficent.png?size=40px + :target: https://github.com/jbeficent + :alt: jbeficent +.. |maintainer-lreficent| image:: https://github.com/lreficent.png?size=40px + :target: https://github.com/lreficent + :alt: lreficent + +Current `maintainers `__: + +|maintainer-jbeficent| |maintainer-lreficent| + +This module is part of the `OCA/ddmrp `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/ddmrp_exclude_moves_adu_calc/__init__.py b/ddmrp_exclude_moves_adu_calc/__init__.py index 149f4e4fd..0650744f6 100644 --- a/ddmrp_exclude_moves_adu_calc/__init__.py +++ b/ddmrp_exclude_moves_adu_calc/__init__.py @@ -1,4 +1 @@ -# -*- coding: utf-8 -*- -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). - from . import models diff --git a/ddmrp_exclude_moves_adu_calc/__manifest__.py b/ddmrp_exclude_moves_adu_calc/__manifest__.py index dca1007ac..b3295e6da 100644 --- a/ddmrp_exclude_moves_adu_calc/__manifest__.py +++ b/ddmrp_exclude_moves_adu_calc/__manifest__.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2017-18 Eficent Business and IT Consulting Services S.L. # (http://www.eficent.com) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). @@ -7,10 +6,11 @@ "name": "DDMRP Exclude Moves ADU Calc", "summary": "Define additional rules to exclude certain moves from ADU " "calculation", - "version": "10.0.1.0.0", + "version": "11.0.1.0.0", "author": "Eficent," "Odoo Community Association (OCA)", - "website": "https://www.odoo-community.org", + "maintainers": ['jbeficent', 'lreficent'], + "website": "https://github.com/OCA/ddmrp", "category": "Warehouse Management", "depends": ["ddmrp"], "data": [ diff --git a/ddmrp_exclude_moves_adu_calc/models/__init__.py b/ddmrp_exclude_moves_adu_calc/models/__init__.py index d5e871fb2..4e195ba26 100644 --- a/ddmrp_exclude_moves_adu_calc/models/__init__.py +++ b/ddmrp_exclude_moves_adu_calc/models/__init__.py @@ -1,6 +1,3 @@ -# -*- coding: utf-8 -*- -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). - from . import stock_location from . import stock_move from . import stock_warehouse_orderpoint diff --git a/ddmrp_exclude_moves_adu_calc/models/stock_location.py b/ddmrp_exclude_moves_adu_calc/models/stock_location.py index f89754399..b73473b8a 100644 --- a/ddmrp_exclude_moves_adu_calc/models/stock_location.py +++ b/ddmrp_exclude_moves_adu_calc/models/stock_location.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2017-18 Eficent Business and IT Consulting Services S.L. # (http://www.eficent.com) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). diff --git a/ddmrp_exclude_moves_adu_calc/models/stock_move.py b/ddmrp_exclude_moves_adu_calc/models/stock_move.py index 030824eed..2af520671 100644 --- a/ddmrp_exclude_moves_adu_calc/models/stock_move.py +++ b/ddmrp_exclude_moves_adu_calc/models/stock_move.py @@ -1,9 +1,9 @@ -# -*- coding: utf-8 -*- # Copyright 2017-18 Eficent Business and IT Consulting Services S.L. # (http://www.eficent.com) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). -from odoo import fields, models +from odoo import api, fields, models, _ +from odoo.exceptions import UserError class StockMove(models.Model): @@ -14,3 +14,11 @@ class StockMove(models.Model): help="If this flag is set this stock move will be excluded from ADU " "calculation", ) + + @api.multi + def _toggle_exclude_from_adu(self): + if not self.env.user.has_group("stock.group_stock_manager"): + raise UserError(_( + "Only inventory managers are allowed perform this action.")) + for rec in self: + rec.exclude_from_adu = not rec.exclude_from_adu diff --git a/ddmrp_exclude_moves_adu_calc/models/stock_warehouse_orderpoint.py b/ddmrp_exclude_moves_adu_calc/models/stock_warehouse_orderpoint.py index 4acfd0061..52f35d4da 100644 --- a/ddmrp_exclude_moves_adu_calc/models/stock_warehouse_orderpoint.py +++ b/ddmrp_exclude_moves_adu_calc/models/stock_warehouse_orderpoint.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2017-18 Eficent Business and IT Consulting Services S.L. # (http://www.eficent.com) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). @@ -11,7 +10,7 @@ class StockWarehouseOrderpoint(models.Model): @api.model def _exclude_past_moves_domain(self): - return [('exclude_from_adu', '=', True), ('state', '=', 'done')] + return [('exclude_from_adu', '=', True)] @api.model def _past_moves_domain(self, date_from, locations): diff --git a/ddmrp_exclude_moves_adu_calc/readme/CONTRIBUTORS.rst b/ddmrp_exclude_moves_adu_calc/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..6efb8d10d --- /dev/null +++ b/ddmrp_exclude_moves_adu_calc/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* Jordi Ballester Alomar +* Lois Rilo Antelo diff --git a/ddmrp_exclude_moves_adu_calc/readme/DESCRIPTION.rst b/ddmrp_exclude_moves_adu_calc/readme/DESCRIPTION.rst new file mode 100644 index 000000000..4722f147e --- /dev/null +++ b/ddmrp_exclude_moves_adu_calc/readme/DESCRIPTION.rst @@ -0,0 +1,5 @@ +This module adds new criteria to exclude moves from the calculation of the +Average Daily Usage (ADU) on a Buffer, based on: + +* Locations +* Specific stock moves diff --git a/ddmrp_exclude_moves_adu_calc/readme/HISTORY.rst b/ddmrp_exclude_moves_adu_calc/readme/HISTORY.rst new file mode 100644 index 000000000..8a2818929 --- /dev/null +++ b/ddmrp_exclude_moves_adu_calc/readme/HISTORY.rst @@ -0,0 +1,4 @@ +11.0.1.0.0 (2018-09-17) +~~~~~~~~~~~~~~~~~~~~~~~ + +* Start of history. Migrated to OCA/ddmrp. diff --git a/ddmrp_exclude_moves_adu_calc/readme/USAGE.rst b/ddmrp_exclude_moves_adu_calc/readme/USAGE.rst new file mode 100644 index 000000000..bf322f5a8 --- /dev/null +++ b/ddmrp_exclude_moves_adu_calc/readme/USAGE.rst @@ -0,0 +1,6 @@ +You can exclude specific moves or all moves towards a specific location: + +* Go to *Inventory > Reports > Stock Moves* and click on *Action > Exclude + from ADU* for a specific move or several. +* Go to *Inventory > Configuration > WH Management > Locations* and check the + flag *Exclude this location from ADU calculation* for the desired locations. diff --git a/ddmrp_exclude_moves_adu_calc/static/description/icon.png b/ddmrp_exclude_moves_adu_calc/static/description/icon.png index a0b0ed73ac91bdb4ca8c2269d6c63bb8588f5d6d..f95fc7269c40d169477766bae2f39ae6eccee046 100644 GIT binary patch literal 2440 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 C40@jc diff --git a/ddmrp_exclude_moves_adu_calc/static/description/index.html b/ddmrp_exclude_moves_adu_calc/static/description/index.html new file mode 100644 index 000000000..03dd7dfe5 --- /dev/null +++ b/ddmrp_exclude_moves_adu_calc/static/description/index.html @@ -0,0 +1,451 @@ + + + + + + +DDMRP Exclude Moves ADU Calc + + + +
+

DDMRP Exclude Moves ADU Calc

+ + +

Beta License: AGPL-3 OCA/ddmrp Translate me on Weblate Try me on Runbot

+

This module adds new criteria to exclude moves from the calculation of the +Average Daily Usage (ADU) on a Buffer, based on:

+
    +
  • Locations
  • +
  • Specific stock moves
  • +
+

Table of contents

+ +
+

Usage

+

You can exclude specific moves or all moves towards a specific location:

+
    +
  • Go to Inventory > Reports > Stock Moves and click on Action > Exclude +from ADU for a specific move or several.
  • +
  • Go to Inventory > Configuration > WH Management > Locations and check the +flag Exclude this location from ADU calculation for the desired locations.
  • +
+
+
+

Changelog

+
+

11.0.1.0.0 (2018-09-17)

+
    +
  • Start of history. Migrated to OCA/ddmrp.
  • +
+
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Eficent
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

Current maintainers:

+

jbeficent lreficent

+

This module is part of the OCA/ddmrp project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/ddmrp_exclude_moves_adu_calc/tests/__init__.py b/ddmrp_exclude_moves_adu_calc/tests/__init__.py index 4990ad14a..408b62a92 100644 --- a/ddmrp_exclude_moves_adu_calc/tests/__init__.py +++ b/ddmrp_exclude_moves_adu_calc/tests/__init__.py @@ -1,4 +1 @@ -# -*- coding: utf-8 -*- -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). - from . import test_ddmrp diff --git a/ddmrp_exclude_moves_adu_calc/tests/test_ddmrp.py b/ddmrp_exclude_moves_adu_calc/tests/test_ddmrp.py index 1cfdb9897..94430e1a3 100644 --- a/ddmrp_exclude_moves_adu_calc/tests/test_ddmrp.py +++ b/ddmrp_exclude_moves_adu_calc/tests/test_ddmrp.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2016-18 Eficent Business and IT Consulting Services S.L. # (http://www.eficent.com) # Copyright 2016 Aleph Objects, Inc. (https://www.alephobjects.com/) @@ -74,7 +73,7 @@ def setUp(self): {'location_id': self.binA.id, 'company_id': self.main_company.id, 'product_id': self.productA.id, - 'qty': 200.0}) + 'quantity': 200.0}) def _create_user(self, login, groups): """ Create a user.""" @@ -125,7 +124,7 @@ def create_pickingoutB(self, date_move, qty): })] }) - def test_adu_calculation_past_120_days_exclude_from_adu(self): + def test_01_exclude_move_from_adu(self): method = self.env.ref('ddmrp.adu_calculation_method_past_120') orderpointA = self.orderpointModel.create({ @@ -140,7 +139,7 @@ def test_adu_calculation_past_120_days_exclude_from_adu(self): 'adu_calculation_method': method.id, 'adu_fixed': 4 }) - self.orderpointModel.cron_ddmrp() + self.orderpointModel.cron_ddmrp_adu() self.assertEqual(orderpointA.adu, 0) @@ -156,8 +155,10 @@ def test_adu_calculation_past_120_days_exclude_from_adu(self): for picking in pickingOuts: picking.action_confirm() picking.action_assign() + for line in picking.move_line_ids: + line.qty_done = 60 picking.action_done() - self.orderpointModel.cron_ddmrp() + self.orderpointModel.cron_ddmrp_adu() to_assert_value = (60 + 60) / 120 self.assertEqual(orderpointA.adu, to_assert_value) diff --git a/ddmrp_exclude_moves_adu_calc/views/stock_move_view.xml b/ddmrp_exclude_moves_adu_calc/views/stock_move_view.xml index 3602692ea..4b347ca5d 100644 --- a/ddmrp_exclude_moves_adu_calc/views/stock_move_view.xml +++ b/ddmrp_exclude_moves_adu_calc/views/stock_move_view.xml @@ -6,10 +6,19 @@ stock.move - + + + Exclude from ADU + + + code + records._toggle_exclude_from_adu() + + From d3a95d2e0baf05436ceba1575bf68b4645cf83c0 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Thu, 8 Nov 2018 10:56:17 +0000 Subject: [PATCH 04/17] [UPD] Update ddmrp_exclude_moves_adu_calc.pot --- .../i18n/ddmrp_exclude_moves_adu_calc.pot | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 ddmrp_exclude_moves_adu_calc/i18n/ddmrp_exclude_moves_adu_calc.pot diff --git a/ddmrp_exclude_moves_adu_calc/i18n/ddmrp_exclude_moves_adu_calc.pot b/ddmrp_exclude_moves_adu_calc/i18n/ddmrp_exclude_moves_adu_calc.pot new file mode 100644 index 000000000..6e6c5e5c2 --- /dev/null +++ b/ddmrp_exclude_moves_adu_calc/i18n/ddmrp_exclude_moves_adu_calc.pot @@ -0,0 +1,61 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * ddmrp_exclude_moves_adu_calc +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: ddmrp_exclude_moves_adu_calc +#: model:ir.actions.server,name:ddmrp_exclude_moves_adu_calc.action_server_mrp_production_request_refresh +msgid "Exclude from ADU" +msgstr "" + +#. module: ddmrp_exclude_moves_adu_calc +#: model:ir.model.fields,field_description:ddmrp_exclude_moves_adu_calc.field_stock_location_exclude_from_adu +msgid "Exclude this location from ADU calculation" +msgstr "" + +#. module: ddmrp_exclude_moves_adu_calc +#: model:ir.model.fields,field_description:ddmrp_exclude_moves_adu_calc.field_stock_move_exclude_from_adu +msgid "Exclude this move from ADU calculation" +msgstr "" + +#. module: ddmrp_exclude_moves_adu_calc +#: model:ir.model.fields,help:ddmrp_exclude_moves_adu_calc.field_stock_location_exclude_from_adu +msgid "If this flag is set stock moves into this location will be excluded from ADU calculation in the origin location buffer." +msgstr "" + +#. module: ddmrp_exclude_moves_adu_calc +#: model:ir.model.fields,help:ddmrp_exclude_moves_adu_calc.field_stock_move_exclude_from_adu +msgid "If this flag is set this stock move will be excluded from ADU calculation" +msgstr "" + +#. module: ddmrp_exclude_moves_adu_calc +#: model:ir.model,name:ddmrp_exclude_moves_adu_calc.model_stock_location +msgid "Inventory Locations" +msgstr "" + +#. module: ddmrp_exclude_moves_adu_calc +#: code:addons/ddmrp_exclude_moves_adu_calc/models/stock_move.py:21 +#, python-format +msgid "Only inventory managers are allowed perform this action." +msgstr "" + +#. module: ddmrp_exclude_moves_adu_calc +#: model:ir.model,name:ddmrp_exclude_moves_adu_calc.model_stock_warehouse_orderpoint +msgid "Stock Buffer" +msgstr "" + +#. module: ddmrp_exclude_moves_adu_calc +#: model:ir.model,name:ddmrp_exclude_moves_adu_calc.model_stock_move +msgid "Stock Move" +msgstr "" + From 6d6d7f96add424b0e29e01e9978b025fe20050e4 Mon Sep 17 00:00:00 2001 From: Lois Rilo Date: Wed, 28 Nov 2018 09:43:38 +0100 Subject: [PATCH 05/17] [11.0][FIX] ddmrp: restrict adu domains --- .../models/stock_warehouse_orderpoint.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ddmrp_exclude_moves_adu_calc/models/stock_warehouse_orderpoint.py b/ddmrp_exclude_moves_adu_calc/models/stock_warehouse_orderpoint.py index 52f35d4da..212b63086 100644 --- a/ddmrp_exclude_moves_adu_calc/models/stock_warehouse_orderpoint.py +++ b/ddmrp_exclude_moves_adu_calc/models/stock_warehouse_orderpoint.py @@ -13,10 +13,10 @@ def _exclude_past_moves_domain(self): return [('exclude_from_adu', '=', True)] @api.model - def _past_moves_domain(self, date_from, locations): + def _past_moves_domain(self, date_from, date_to, locations): new_locs = locations.filtered(lambda l: not l.exclude_from_adu) res = super(StockWarehouseOrderpoint, - self)._past_moves_domain(date_from, new_locs) + self)._past_moves_domain(date_from, date_to, new_locs) exclude_moves = self.env['stock.move'].search( self._exclude_past_moves_domain()) if exclude_moves: From 5a270ed47091961ab1f2de63c7fa4152f5667e56 Mon Sep 17 00:00:00 2001 From: Alexandre Fayolle Date: Tue, 11 Dec 2018 19:53:43 +0000 Subject: [PATCH 06/17] Added translation using Weblate (French) --- ddmrp_exclude_moves_adu_calc/i18n/fr.po | 61 +++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 ddmrp_exclude_moves_adu_calc/i18n/fr.po diff --git a/ddmrp_exclude_moves_adu_calc/i18n/fr.po b/ddmrp_exclude_moves_adu_calc/i18n/fr.po new file mode 100644 index 000000000..c9ea06ff6 --- /dev/null +++ b/ddmrp_exclude_moves_adu_calc/i18n/fr.po @@ -0,0 +1,61 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * ddmrp_exclude_moves_adu_calc +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" + +#. module: ddmrp_exclude_moves_adu_calc +#: model:ir.actions.server,name:ddmrp_exclude_moves_adu_calc.action_server_mrp_production_request_refresh +msgid "Exclude from ADU" +msgstr "" + +#. module: ddmrp_exclude_moves_adu_calc +#: model:ir.model.fields,field_description:ddmrp_exclude_moves_adu_calc.field_stock_location_exclude_from_adu +msgid "Exclude this location from ADU calculation" +msgstr "" + +#. module: ddmrp_exclude_moves_adu_calc +#: model:ir.model.fields,field_description:ddmrp_exclude_moves_adu_calc.field_stock_move_exclude_from_adu +msgid "Exclude this move from ADU calculation" +msgstr "" + +#. module: ddmrp_exclude_moves_adu_calc +#: model:ir.model.fields,help:ddmrp_exclude_moves_adu_calc.field_stock_location_exclude_from_adu +msgid "If this flag is set stock moves into this location will be excluded from ADU calculation in the origin location buffer." +msgstr "" + +#. module: ddmrp_exclude_moves_adu_calc +#: model:ir.model.fields,help:ddmrp_exclude_moves_adu_calc.field_stock_move_exclude_from_adu +msgid "If this flag is set this stock move will be excluded from ADU calculation" +msgstr "" + +#. module: ddmrp_exclude_moves_adu_calc +#: model:ir.model,name:ddmrp_exclude_moves_adu_calc.model_stock_location +msgid "Inventory Locations" +msgstr "" + +#. module: ddmrp_exclude_moves_adu_calc +#: code:addons/ddmrp_exclude_moves_adu_calc/models/stock_move.py:21 +#, python-format +msgid "Only inventory managers are allowed perform this action." +msgstr "" + +#. module: ddmrp_exclude_moves_adu_calc +#: model:ir.model,name:ddmrp_exclude_moves_adu_calc.model_stock_warehouse_orderpoint +msgid "Stock Buffer" +msgstr "" + +#. module: ddmrp_exclude_moves_adu_calc +#: model:ir.model,name:ddmrp_exclude_moves_adu_calc.model_stock_move +msgid "Stock Move" +msgstr "" From cbc147f75cc289480d494acd14e9ed271d1488d3 Mon Sep 17 00:00:00 2001 From: Lois Rilo Date: Mon, 10 Dec 2018 12:41:44 -0700 Subject: [PATCH 07/17] [11.0] ddmrp_exclude_moves_adu_calc: index exclude_from_adu --- ddmrp_exclude_moves_adu_calc/models/stock_move.py | 1 + 1 file changed, 1 insertion(+) diff --git a/ddmrp_exclude_moves_adu_calc/models/stock_move.py b/ddmrp_exclude_moves_adu_calc/models/stock_move.py index 2af520671..b56155f1e 100644 --- a/ddmrp_exclude_moves_adu_calc/models/stock_move.py +++ b/ddmrp_exclude_moves_adu_calc/models/stock_move.py @@ -13,6 +13,7 @@ class StockMove(models.Model): string='Exclude this move from ADU calculation', copy=False, help="If this flag is set this stock move will be excluded from ADU " "calculation", + index=True, ) @api.multi From 02e28880ad218030a25928c2936942d052544bf2 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Fri, 1 Mar 2019 15:24:36 +0000 Subject: [PATCH 08/17] [UPD] Update ddmrp_exclude_moves_adu_calc.pot --- .../i18n/ddmrp_exclude_moves_adu_calc.pot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ddmrp_exclude_moves_adu_calc/i18n/ddmrp_exclude_moves_adu_calc.pot b/ddmrp_exclude_moves_adu_calc/i18n/ddmrp_exclude_moves_adu_calc.pot index 6e6c5e5c2..be43a79e8 100644 --- a/ddmrp_exclude_moves_adu_calc/i18n/ddmrp_exclude_moves_adu_calc.pot +++ b/ddmrp_exclude_moves_adu_calc/i18n/ddmrp_exclude_moves_adu_calc.pot @@ -44,7 +44,7 @@ msgid "Inventory Locations" msgstr "" #. module: ddmrp_exclude_moves_adu_calc -#: code:addons/ddmrp_exclude_moves_adu_calc/models/stock_move.py:21 +#: code:addons/ddmrp_exclude_moves_adu_calc/models/stock_move.py:22 #, python-format msgid "Only inventory managers are allowed perform this action." msgstr "" From 5341beffd1db4da597cb6bee6ed9c9e0d6914bce Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Sun, 3 Mar 2019 15:27:26 +0000 Subject: [PATCH 09/17] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: ddmrp-11.0/ddmrp-11.0-ddmrp_exclude_moves_adu_calc Translate-URL: https://translation.odoo-community.org/projects/ddmrp-11-0/ddmrp-11-0-ddmrp_exclude_moves_adu_calc/ --- ddmrp_exclude_moves_adu_calc/i18n/fr.po | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/ddmrp_exclude_moves_adu_calc/i18n/fr.po b/ddmrp_exclude_moves_adu_calc/i18n/fr.po index c9ea06ff6..d97a4ad8b 100644 --- a/ddmrp_exclude_moves_adu_calc/i18n/fr.po +++ b/ddmrp_exclude_moves_adu_calc/i18n/fr.po @@ -1,6 +1,6 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * ddmrp_exclude_moves_adu_calc +# * ddmrp_exclude_moves_adu_calc # msgid "" msgstr "" @@ -31,12 +31,15 @@ msgstr "" #. module: ddmrp_exclude_moves_adu_calc #: model:ir.model.fields,help:ddmrp_exclude_moves_adu_calc.field_stock_location_exclude_from_adu -msgid "If this flag is set stock moves into this location will be excluded from ADU calculation in the origin location buffer." +msgid "" +"If this flag is set stock moves into this location will be excluded from ADU " +"calculation in the origin location buffer." msgstr "" #. module: ddmrp_exclude_moves_adu_calc #: model:ir.model.fields,help:ddmrp_exclude_moves_adu_calc.field_stock_move_exclude_from_adu -msgid "If this flag is set this stock move will be excluded from ADU calculation" +msgid "" +"If this flag is set this stock move will be excluded from ADU calculation" msgstr "" #. module: ddmrp_exclude_moves_adu_calc @@ -45,7 +48,7 @@ msgid "Inventory Locations" msgstr "" #. module: ddmrp_exclude_moves_adu_calc -#: code:addons/ddmrp_exclude_moves_adu_calc/models/stock_move.py:21 +#: code:addons/ddmrp_exclude_moves_adu_calc/models/stock_move.py:22 #, python-format msgid "Only inventory managers are allowed perform this action." msgstr "" From 01c3d4527644d759ac48c8f9923b28b307f3d0e4 Mon Sep 17 00:00:00 2001 From: Lois Rilo Date: Thu, 20 Jun 2019 15:20:35 +0200 Subject: [PATCH 10/17] [11.0][FIX] ddmrp_exclude_moves_adu_calc: fix test processing pickings always with today's date. --- .../tests/test_ddmrp.py | 32 +++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/ddmrp_exclude_moves_adu_calc/tests/test_ddmrp.py b/ddmrp_exclude_moves_adu_calc/tests/test_ddmrp.py index 94430e1a3..2839a3adf 100644 --- a/ddmrp_exclude_moves_adu_calc/tests/test_ddmrp.py +++ b/ddmrp_exclude_moves_adu_calc/tests/test_ddmrp.py @@ -1,4 +1,4 @@ -# Copyright 2016-18 Eficent Business and IT Consulting Services S.L. +# Copyright 2016-19 Eficent Business and IT Consulting Services S.L. # (http://www.eficent.com) # Copyright 2016 Aleph Objects, Inc. (https://www.alephobjects.com/) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). @@ -124,6 +124,14 @@ def create_pickingoutB(self, date_move, qty): })] }) + def _do_picking(self, picking, date): + picking.action_confirm() + picking.force_assign() + picking.move_lines.quantity_done = picking.move_lines.product_uom_qty + picking.action_done() + for move in picking.move_lines: + move.date = date + def test_01_exclude_move_from_adu(self): method = self.env.ref('ddmrp.adu_calculation_method_past_120') @@ -143,21 +151,19 @@ def test_01_exclude_move_from_adu(self): self.assertEqual(orderpointA.adu, 0) - pickingOuts = self.pickingModel + # Create, process and ignore a picking: date_move = datetime.today() - timedelta(days=30) - pickingOut = self.create_pickingoutA(date_move, 60) - for move in pickingOut.move_lines: + pick_excluded = self.create_pickingoutA(date_move, 60) + self._do_picking(pick_excluded, date_move) + for move in pick_excluded.move_lines: move.exclude_from_adu = True - pickingOuts += pickingOut + + # Create 2 outgoing picking (toward different locations): date_move = datetime.today() - timedelta(days=60) - pickingOuts += self.create_pickingoutA(date_move, 60) - pickingOuts += self.create_pickingoutB(date_move, 60) - for picking in pickingOuts: - picking.action_confirm() - picking.action_assign() - for line in picking.move_line_ids: - line.qty_done = 60 - picking.action_done() + pick_a = self.create_pickingoutA(date_move, 60) + self._do_picking(pick_a, date_move) + pick_b = self.create_pickingoutB(date_move, 60) + self._do_picking(pick_b, date_move) self.orderpointModel.cron_ddmrp_adu() to_assert_value = (60 + 60) / 120 From ba0efffa2812abf3ea8b7c4b22dfc4387cc04f75 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 29 Jul 2019 02:50:24 +0000 Subject: [PATCH 11/17] [UPD] README.rst --- ddmrp_exclude_moves_adu_calc/static/description/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ddmrp_exclude_moves_adu_calc/static/description/index.html b/ddmrp_exclude_moves_adu_calc/static/description/index.html index 03dd7dfe5..5dfce172c 100644 --- a/ddmrp_exclude_moves_adu_calc/static/description/index.html +++ b/ddmrp_exclude_moves_adu_calc/static/description/index.html @@ -3,7 +3,7 @@ - + DDMRP Exclude Moves ADU Calc