summaryrefslogtreecommitdiff
path: root/addons/mrp/__init__.py
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/mrp/__init__.py
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/mrp/__init__.py')
-rw-r--r--addons/mrp/__init__.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/addons/mrp/__init__.py b/addons/mrp/__init__.py
new file mode 100644
index 00000000..2a4bc331
--- /dev/null
+++ b/addons/mrp/__init__.py
@@ -0,0 +1,42 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import models
+from . import wizard
+from . import report
+from . import controller
+
+from odoo import api, SUPERUSER_ID
+
+
+def _pre_init_mrp(cr):
+ """ Allow installing MRP in databases with large stock.move table (>1M records)
+ - Creating the computed+stored field stock_move.is_done is terribly slow with the ORM and
+ leads to "Out of Memory" crashes
+ """
+ cr.execute("""ALTER TABLE "stock_move" ADD COLUMN "is_done" bool;""")
+ cr.execute("""UPDATE stock_move
+ SET is_done=COALESCE(state in ('done', 'cancel'), FALSE);""")
+
+def _create_warehouse_data(cr, registry):
+ """ This hook is used to add a default manufacture_pull_id, manufacture
+ picking_type on every warehouse. It is necessary if the mrp module is
+ installed after some warehouses were already created.
+ """
+ env = api.Environment(cr, SUPERUSER_ID, {})
+ warehouse_ids = env['stock.warehouse'].search([('manufacture_pull_id', '=', False)])
+ warehouse_ids.write({'manufacture_to_resupply': True})
+
+def uninstall_hook(cr, registry):
+ env = api.Environment(cr, SUPERUSER_ID, {})
+ warehouses = env["stock.warehouse"].search([])
+ pbm_routes = warehouses.mapped("pbm_route_id")
+ warehouses.write({"pbm_route_id": False})
+ # Fail unlink means that the route is used somewhere (e.g. route_id on stock.rule). In this case
+ # we don't try to do anything.
+ try:
+ with env.cr.savepoint():
+ pbm_routes.unlink()
+ except:
+ pass
+