From 89fd156c0170d72d17a58b0b3391971c8b351ffd Mon Sep 17 00:00:00 2001 From: geomer198 Date: Fri, 13 Oct 2023 13:57:03 +0400 Subject: [PATCH] [MIG] mrp_subcontracting_purchase: Adapt to OCA guidelines + initial work --- mrp_subcontracting_purchase/README.rst | 0 mrp_subcontracting_purchase/__init__.py | 1 - mrp_subcontracting_purchase/__manifest__.py | 25 +++++----- .../models/__init__.py | 1 - .../models/purchase_order.py | 21 +++++---- .../models/stock_picking.py | 47 +++++++++++-------- mrp_subcontracting_purchase/tests/__init__.py | 2 - .../tests/test_mrp_subcontracting_purchase.py | 40 +++++++++------- .../views/purchase_order_views.xml | 28 +++++++---- .../views/stock_picking_views.xml | 19 +++++--- .../odoo/addons/mrp_subcontracting_purchase | 1 + setup/mrp_subcontracting_purchase/setup.py | 6 +++ 12 files changed, 118 insertions(+), 73 deletions(-) create mode 100644 mrp_subcontracting_purchase/README.rst create mode 120000 setup/mrp_subcontracting_purchase/odoo/addons/mrp_subcontracting_purchase create mode 100644 setup/mrp_subcontracting_purchase/setup.py diff --git a/mrp_subcontracting_purchase/README.rst b/mrp_subcontracting_purchase/README.rst new file mode 100644 index 000000000..e69de29bb diff --git a/mrp_subcontracting_purchase/__init__.py b/mrp_subcontracting_purchase/__init__.py index dc5e6b693..d6210b128 100644 --- a/mrp_subcontracting_purchase/__init__.py +++ b/mrp_subcontracting_purchase/__init__.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. from . import models diff --git a/mrp_subcontracting_purchase/__manifest__.py b/mrp_subcontracting_purchase/__manifest__.py index 2e4ac2e70..283cc06bb 100644 --- a/mrp_subcontracting_purchase/__manifest__.py +++ b/mrp_subcontracting_purchase/__manifest__.py @@ -1,19 +1,20 @@ -# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. { - 'name': 'Purchase and Subcontracting Management', - 'version': '0.1', - 'category': 'Manufacturing/Purchase', - 'description': """ + "name": "Purchase and Subcontracting Management", + "version": "14.0.1.0.0", + "category": "Manufacturing/Purchase", + "summary": """ This bridge module adds some smart buttons between Purchase and Subcontracting """, - 'depends': ['mrp_subcontracting', 'purchase'], - 'data': [ - 'views/purchase_order_views.xml', - 'views/stock_picking_views.xml', + "author": "Odoo S.A., Odoo Community Association (OCA)", + "website": "https://github.com/OCA/manufacture", + "depends": ["mrp_subcontracting", "purchase"], + "data": [ + "views/purchase_order_views.xml", + "views/stock_picking_views.xml", ], - 'installable': True, - 'auto_install': True, - 'license': 'LGPL-3', + "installable": True, + "auto_install": True, + "license": "LGPL-3", } diff --git a/mrp_subcontracting_purchase/models/__init__.py b/mrp_subcontracting_purchase/models/__init__.py index eee25d6fe..00f4d8ade 100644 --- a/mrp_subcontracting_purchase/models/__init__.py +++ b/mrp_subcontracting_purchase/models/__init__.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. from . import stock_picking diff --git a/mrp_subcontracting_purchase/models/purchase_order.py b/mrp_subcontracting_purchase/models/purchase_order.py index 7283167c3..31323bbf2 100644 --- a/mrp_subcontracting_purchase/models/purchase_order.py +++ b/mrp_subcontracting_purchase/models/purchase_order.py @@ -1,25 +1,30 @@ -# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from odoo import models, fields, api +from odoo import api, fields, models class PurchaseOrder(models.Model): - _inherit = 'purchase.order' + _inherit = "purchase.order" subcontracting_resupply_picking_count = fields.Integer( - "Count of Subcontracting Resupply", compute='_compute_subcontracting_resupply_picking_count', - help="Count of Subcontracting Resupply for component") + "Count of Subcontracting Resupply", + compute="_compute_subcontracting_resupply_picking_count", + help="Count of Subcontracting Resupply for component", + ) - @api.depends('order_line.move_ids') + @api.depends("order_line.move_ids") def _compute_subcontracting_resupply_picking_count(self): for purchase in self: - purchase.subcontracting_resupply_picking_count = len(purchase._get_subcontracting_resupplies()) + purchase.subcontracting_resupply_picking_count = len( + purchase._get_subcontracting_resupplies() + ) def action_view_subcontracting_resupply(self): return self._get_action_view_picking(self._get_subcontracting_resupplies()) def _get_subcontracting_resupplies(self): - moves_subcontracted = self.order_line.move_ids.filtered(lambda m: m.is_subcontract) + moves_subcontracted = self.order_line.move_ids.filtered( + lambda m: m.is_subcontract + ) subcontracted_productions = moves_subcontracted.move_orig_ids.production_id return subcontracted_productions.picking_ids diff --git a/mrp_subcontracting_purchase/models/stock_picking.py b/mrp_subcontracting_purchase/models/stock_picking.py index e168034ec..5fdca7c0a 100644 --- a/mrp_subcontracting_purchase/models/stock_picking.py +++ b/mrp_subcontracting_purchase/models/stock_picking.py @@ -1,40 +1,49 @@ -# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from odoo import models, fields, api, _ +from odoo import _, api, fields, models class StockPicking(models.Model): - _inherit = 'stock.picking' + _inherit = "stock.picking" subcontracting_source_purchase_count = fields.Integer( - "Number of subcontracting PO Source", compute='_compute_subcontracting_source_purchase_count', - help="Number of subcontracting Purchase Order Source") + "Number of subcontracting PO Source", + compute="_compute_subcontracting_source_purchase_count", + help="Number of subcontracting Purchase Order Source", + ) - @api.depends('move_lines.move_dest_ids.raw_material_production_id') + @api.depends("move_lines.move_dest_ids.raw_material_production_id") def _compute_subcontracting_source_purchase_count(self): for picking in self: - picking.subcontracting_source_purchase_count = len(picking._get_subcontracting_source_purchase()) + picking.subcontracting_source_purchase_count = len( + picking._get_subcontracting_source_purchase() + ) def action_view_subcontracting_source_purchase(self): purchase_order_ids = self._get_subcontracting_source_purchase().ids action = { - 'res_model': 'purchase.order', - 'type': 'ir.actions.act_window', + "res_model": "purchase.order", + "type": "ir.actions.act_window", } if len(purchase_order_ids) == 1: - action.update({ - 'view_mode': 'form', - 'res_id': purchase_order_ids[0], - }) + action.update( + { + "view_mode": "form", + "res_id": purchase_order_ids[0], + } + ) else: - action.update({ - 'name': _("Source PO of %s", self.name), - 'domain': [('id', 'in', purchase_order_ids)], - 'view_mode': 'tree,form', - }) + action.update( + { + "name": _("Source PO of %s", self.name), + "domain": [("id", "in", purchase_order_ids)], + "view_mode": "tree,form", + } + ) return action def _get_subcontracting_source_purchase(self): - moves_subcontracted = self.move_lines.move_dest_ids.raw_material_production_id.move_finished_ids.move_dest_ids.filtered(lambda m: m.is_subcontract) + moves_subcontracted = self.move_lines.move_dest_ids.raw_material_production_id.move_finished_ids.move_dest_ids.filtered( # noqa + lambda m: m.is_subcontract + ) return moves_subcontracted.purchase_line_id.order_id diff --git a/mrp_subcontracting_purchase/tests/__init__.py b/mrp_subcontracting_purchase/tests/__init__.py index 5fb08a3fe..6296cfac6 100644 --- a/mrp_subcontracting_purchase/tests/__init__.py +++ b/mrp_subcontracting_purchase/tests/__init__.py @@ -1,3 +1 @@ -# -*- coding: utf-8 -*- - from . import test_mrp_subcontracting_purchase diff --git a/mrp_subcontracting_purchase/tests/test_mrp_subcontracting_purchase.py b/mrp_subcontracting_purchase/tests/test_mrp_subcontracting_purchase.py index cfd4f253b..ee8fa37a5 100644 --- a/mrp_subcontracting_purchase/tests/test_mrp_subcontracting_purchase.py +++ b/mrp_subcontracting_purchase/tests/test_mrp_subcontracting_purchase.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. from odoo import Command @@ -7,29 +6,38 @@ from odoo.addons.mrp_subcontracting.tests.common import TestMrpSubcontractingCom class MrpSubcontractingPurchaseTest(TestMrpSubcontractingCommon): - def test_count_smart_buttons(self): - resupply_sub_on_order_route = self.env['stock.location.route'].search([('name', '=', 'Resupply Subcontractor on Order')]) - (self.comp1 + self.comp2).write({'route_ids': [Command.link(resupply_sub_on_order_route.id)]}) + resupply_sub_on_order_route = self.env["stock.location.route"].search( + [("name", "=", "Resupply Subcontractor on Order")] + ) + (self.comp1 + self.comp2).write( + {"route_ids": [Command.link(resupply_sub_on_order_route.id)]} + ) # I create a draft Purchase Order for first in move for 10 kg at 50 euro - po = self.env['purchase.order'].create({ - 'partner_id': self.subcontractor_partner1.id, - 'order_line': [Command.create({ - 'name': 'finished', - 'product_id': self.finished.id, - 'product_qty': 1.0, - 'product_uom': self.finished.uom_id.id, - 'price_unit': 50.0} - )], - }) + po = self.env["purchase.order"].create( + { + "partner_id": self.subcontractor_partner1.id, + "order_line": [ + Command.create( + { + "name": "finished", + "product_id": self.finished.id, + "product_qty": 1.0, + "product_uom": self.finished.uom_id.id, + "price_unit": 50.0, + } + ) + ], + } + ) po.button_confirm() self.assertEqual(po.subcontracting_resupply_picking_count, 1) action1 = po.action_view_subcontracting_resupply() - picking = self.env[action1['res_model']].browse(action1['res_id']) + picking = self.env[action1["res_model"]].browse(action1["res_id"]) self.assertEqual(picking.subcontracting_source_purchase_count, 1) action2 = picking.action_view_subcontracting_source_purchase() - po_action2 = self.env[action2['res_model']].browse(action2['res_id']) + po_action2 = self.env[action2["res_model"]].browse(action2["res_id"]) self.assertEqual(po_action2, po) diff --git a/mrp_subcontracting_purchase/views/purchase_order_views.xml b/mrp_subcontracting_purchase/views/purchase_order_views.xml index 1c783b254..56125168a 100644 --- a/mrp_subcontracting_purchase/views/purchase_order_views.xml +++ b/mrp_subcontracting_purchase/views/purchase_order_views.xml @@ -1,16 +1,28 @@ - + - purchase.order.inherited.form.mrp.subcontracting.purchase + purchase.order.inherited.form.mrp.subcontracting.purchase purchase.order - + - - diff --git a/mrp_subcontracting_purchase/views/stock_picking_views.xml b/mrp_subcontracting_purchase/views/stock_picking_views.xml index 6b78a8823..7cca96dfa 100644 --- a/mrp_subcontracting_purchase/views/stock_picking_views.xml +++ b/mrp_subcontracting_purchase/views/stock_picking_views.xml @@ -1,16 +1,23 @@ - + stock.picking.inherited.form.mrp.subcontracting stock.picking - + - diff --git a/setup/mrp_subcontracting_purchase/odoo/addons/mrp_subcontracting_purchase b/setup/mrp_subcontracting_purchase/odoo/addons/mrp_subcontracting_purchase new file mode 120000 index 000000000..a29b7c095 --- /dev/null +++ b/setup/mrp_subcontracting_purchase/odoo/addons/mrp_subcontracting_purchase @@ -0,0 +1 @@ +../../../../mrp_subcontracting_purchase \ No newline at end of file diff --git a/setup/mrp_subcontracting_purchase/setup.py b/setup/mrp_subcontracting_purchase/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/mrp_subcontracting_purchase/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)