odoo-addon-maintenance-purchase 16.0.1.0.0.3__py3-none-any.whl → 18.0.1.0.0.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (22) hide show
  1. odoo/addons/maintenance_purchase/README.rst +16 -13
  2. odoo/addons/maintenance_purchase/__manifest__.py +3 -3
  3. odoo/addons/maintenance_purchase/i18n/maintenance_purchase.pot +12 -1
  4. odoo/addons/maintenance_purchase/migrations/18.0.1.0.0/post-migration.py +20 -0
  5. odoo/addons/maintenance_purchase/models/__init__.py +1 -0
  6. odoo/addons/maintenance_purchase/models/maintenance_equipment.py +0 -1
  7. odoo/addons/maintenance_purchase/models/product_template.py +12 -0
  8. odoo/addons/maintenance_purchase/models/purchase_order.py +38 -52
  9. odoo/addons/maintenance_purchase/readme/CONTRIBUTORS.md +1 -0
  10. odoo/addons/maintenance_purchase/static/description/index.html +25 -17
  11. odoo/addons/maintenance_purchase/tests/test_purchase_order.py +6 -48
  12. odoo/addons/maintenance_purchase/views/maintenance_equipment.xml +5 -3
  13. odoo/addons/maintenance_purchase/views/product_template_view.xml +13 -0
  14. odoo/addons/maintenance_purchase/views/purchase_order.xml +2 -6
  15. {odoo_addon_maintenance_purchase-16.0.1.0.0.3.dist-info → odoo_addon_maintenance_purchase-18.0.1.0.0.2.dist-info}/METADATA +22 -19
  16. odoo_addon_maintenance_purchase-18.0.1.0.0.2.dist-info/RECORD +25 -0
  17. {odoo_addon_maintenance_purchase-16.0.1.0.0.3.dist-info → odoo_addon_maintenance_purchase-18.0.1.0.0.2.dist-info}/WHEEL +1 -1
  18. odoo_addon_maintenance_purchase-18.0.1.0.0.2.dist-info/top_level.txt +1 -0
  19. odoo/addons/maintenance_purchase/readme/CONTRIBUTORS.rst +0 -1
  20. odoo_addon_maintenance_purchase-16.0.1.0.0.3.dist-info/RECORD +0 -22
  21. odoo_addon_maintenance_purchase-16.0.1.0.0.3.dist-info/top_level.txt +0 -1
  22. /odoo/addons/maintenance_purchase/readme/{DESCRIPTION.rst → DESCRIPTION.md} +0 -0
@@ -1,29 +1,33 @@
1
+ .. image:: https://odoo-community.org/readme-banner-image
2
+ :target: https://odoo-community.org/get-involved?utm_source=readme
3
+ :alt: Odoo Community Association
4
+
1
5
  ====================
2
6
  Maintenance Purchase
3
7
  ====================
4
8
 
5
- ..
9
+ ..
6
10
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
7
11
  !! This file is generated by oca-gen-addon-readme !!
8
12
  !! changes will be overwritten. !!
9
13
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
10
- !! source digest: sha256:9b4e0b44d941b38aadf91a2912f84cf907a7e32f5e5573d36779fd044fa0f7f9
14
+ !! source digest: sha256:4081bc034b7ce0eb90fe184d22c1b65887263032ae7db862470be512e902124c
11
15
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
12
16
 
13
17
  .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
14
18
  :target: https://odoo-community.org/page/development-status
15
19
  :alt: Beta
16
- .. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
20
+ .. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
17
21
  :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
18
22
  :alt: License: AGPL-3
19
23
  .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmaintenance-lightgray.png?logo=github
20
- :target: https://github.com/OCA/maintenance/tree/16.0/maintenance_purchase
24
+ :target: https://github.com/OCA/maintenance/tree/18.0/maintenance_purchase
21
25
  :alt: OCA/maintenance
22
26
  .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
23
- :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_purchase
27
+ :target: https://translation.odoo-community.org/projects/maintenance-18-0/maintenance-18-0-maintenance_purchase
24
28
  :alt: Translate me on Weblate
25
29
  .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
26
- :target: https://runboat.odoo-community.org/builds?repo=OCA/maintenance&target_branch=16.0
30
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/maintenance&target_branch=18.0
27
31
  :alt: Try me on Runboat
28
32
 
29
33
  |badge1| |badge2| |badge3| |badge4| |badge5|
@@ -41,7 +45,7 @@ Bug Tracker
41
45
  Bugs are tracked on `GitHub Issues <https://github.com/OCA/maintenance/issues>`_.
42
46
  In case of trouble, please check there if your issue has already been reported.
43
47
  If you spotted it first, help us to smash it by providing a detailed and welcomed
44
- `feedback <https://github.com/OCA/maintenance/issues/new?body=module:%20maintenance_purchase%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
48
+ `feedback <https://github.com/OCA/maintenance/issues/new?body=module:%20maintenance_purchase%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
45
49
 
46
50
  Do not contact contributors directly about support or help with technical issues.
47
51
 
@@ -49,18 +53,17 @@ Credits
49
53
  =======
50
54
 
51
55
  Authors
52
- ~~~~~~~
56
+ -------
53
57
 
54
58
  * CreuBlanca
55
59
 
56
60
  Contributors
57
- ~~~~~~~~~~~~
61
+ ------------
58
62
 
59
- * Enric Tobella
60
- * Laurent Stukkens
63
+ - Enric Tobella
61
64
 
62
65
  Maintainers
63
- ~~~~~~~~~~~
66
+ -----------
64
67
 
65
68
  This module is maintained by the OCA.
66
69
 
@@ -72,6 +75,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
72
75
  mission is to support the collaborative development of Odoo features and
73
76
  promote its widespread use.
74
77
 
75
- This module is part of the `OCA/maintenance <https://github.com/OCA/maintenance/tree/16.0/maintenance_purchase>`_ project on GitHub.
78
+ This module is part of the `OCA/maintenance <https://github.com/OCA/maintenance/tree/18.0/maintenance_purchase>`_ project on GitHub.
76
79
 
77
80
  You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
@@ -5,17 +5,17 @@
5
5
  "name": "Maintenance Purchase",
6
6
  "summary": """
7
7
  Create Equipments with purchases""",
8
- "version": "16.0.1.0.0",
8
+ "version": "18.0.1.0.0",
9
9
  "license": "AGPL-3",
10
10
  "author": "CreuBlanca,Odoo Community Association (OCA)",
11
11
  "website": "https://github.com/OCA/maintenance",
12
12
  "depends": [
13
- "maintenance_account",
14
- "purchase_stock",
13
+ "purchase",
15
14
  ],
16
15
  "data": [
17
16
  "views/purchase_order.xml",
18
17
  "views/maintenance_equipment.xml",
18
+ "views/product_template_view.xml",
19
19
  ],
20
20
  "demo": [],
21
21
  }
@@ -4,7 +4,7 @@
4
4
  #
5
5
  msgid ""
6
6
  msgstr ""
7
- "Project-Id-Version: Odoo Server 16.0\n"
7
+ "Project-Id-Version: Odoo Server 18.0\n"
8
8
  "Report-Msgid-Bugs-To: \n"
9
9
  "Last-Translator: \n"
10
10
  "Language-Team: \n"
@@ -39,11 +39,22 @@ msgstr ""
39
39
  msgid "Maintenance Equipment"
40
40
  msgstr ""
41
41
 
42
+ #. module: maintenance_purchase
43
+ #: model:ir.model,name:maintenance_purchase.model_product_template
44
+ msgid "Product"
45
+ msgstr ""
46
+
42
47
  #. module: maintenance_purchase
43
48
  #: model:ir.model.fields,field_description:maintenance_purchase.field_maintenance_equipment__purchase_id
44
49
  msgid "Purchase"
45
50
  msgstr ""
46
51
 
52
+ #. module: maintenance_purchase
53
+ #: model:ir.model.fields,field_description:maintenance_purchase.field_product_product__purchase_equipment_category_id
54
+ #: model:ir.model.fields,field_description:maintenance_purchase.field_product_template__purchase_equipment_category_id
55
+ msgid "Purchase Equipment Category"
56
+ msgstr ""
57
+
47
58
  #. module: maintenance_purchase
48
59
  #: model:ir.model.fields,field_description:maintenance_purchase.field_maintenance_equipment__purchase_line_id
49
60
  msgid "Purchase Line"
@@ -0,0 +1,20 @@
1
+ # Copyright 2026 Tecnativa - Christian Ramos
2
+ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
3
+ from openupgradelib import openupgrade
4
+
5
+
6
+ @openupgrade.migrate()
7
+ def migrate(env, version):
8
+ # Bring the category data from maintenance_equipment_category to the product
9
+ if openupgrade.column_exists(
10
+ env.cr, "maintenance_equipment_category", "product_category_id"
11
+ ):
12
+ openupgrade.logged_query(
13
+ env.cr,
14
+ """
15
+ UPDATE product_template pt
16
+ SET equipment_category_id = mec.equipment_category_id
17
+ FROM maintenance_equipment_category mec
18
+ WHERE pt.categ_id = mec.product_category_id
19
+ AND pt.equipment_category_id IS NULL""",
20
+ )
@@ -1,2 +1,3 @@
1
1
  from . import maintenance_equipment
2
2
  from . import purchase_order
3
+ from . import product_template
@@ -5,7 +5,6 @@ from odoo import fields, models
5
5
 
6
6
 
7
7
  class MaintenanceEquipment(models.Model):
8
-
9
8
  _inherit = "maintenance.equipment"
10
9
 
11
10
  purchase_id = fields.Many2one(
@@ -0,0 +1,12 @@
1
+ # Copyright 2026 Tecnativa - Christian Ramos
2
+ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
3
+ from odoo import fields, models
4
+
5
+
6
+ class ProductTemplate(models.Model):
7
+ _inherit = "product.template"
8
+
9
+ purchase_equipment_category_id = fields.Many2one(
10
+ comodel_name="maintenance.equipment.category",
11
+ string="Purchase Equipment Category",
12
+ )
@@ -1,11 +1,10 @@
1
1
  # Copyright 2022 CreuBlanca
2
2
  # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
3
3
 
4
- from odoo import api, fields, models
4
+ from odoo import Command, api, fields, models
5
5
 
6
6
 
7
7
  class PurchaseOrder(models.Model):
8
-
9
8
  _inherit = "purchase.order"
10
9
 
11
10
  equipment_count = fields.Integer(compute="_compute_equipment_count")
@@ -25,8 +24,9 @@ class PurchaseOrder(models.Model):
25
24
  items = self.env["maintenance.equipment"].search(
26
25
  [("purchase_id", "=", self.id)]
27
26
  )
28
- action = self.env.ref("maintenance.hr_equipment_action")
29
- action_dict = action.sudo().read()[0]
27
+ action_dict = self.env["ir.actions.act_window"]._for_xml_id(
28
+ "maintenance.hr_equipment_action"
29
+ )
30
30
  if len(items) == 1:
31
31
  res = self.env.ref("maintenance.hr_equipment_view_form", False)
32
32
  action_dict["views"] = [(res and res.id or False, "form")]
@@ -37,29 +37,25 @@ class PurchaseOrder(models.Model):
37
37
  action_dict = {"type": "ir.actions.act_window_close"}
38
38
  return action_dict
39
39
 
40
+ def _get_lines_to_create_equipments(self):
41
+ return self.order_line.filtered(
42
+ lambda x: (
43
+ x.product_qty > len(x.equipment_ids)
44
+ and x.product_id
45
+ and x.equipment_category_id
46
+ )
47
+ )
48
+
40
49
  def button_approve(self, force=False):
41
50
  result = super().button_approve(force=force)
42
- equipment_model = self.env["maintenance.equipment"]
43
- for order in self.filtered(lambda po: po.state in ("purchase", "done")):
44
- for line in order.order_line.filtered(
45
- lambda x: (
46
- not x.equipment_ids
47
- and x.product_id
48
- and x.product_id.product_tmpl_id.maintenance_ok
49
- )
50
- ):
51
- if not line.equipment_category_id:
52
- line._set_equipment_category()
53
- # Create equipments
54
- limit = int(line.product_qty) + 1
55
- vals = line._prepare_equipment_vals()
56
- equipment_ids = []
57
- for _i in range(1, limit):
58
- equipment = equipment_model.create(vals)
59
- equipment_ids.append((4, equipment.id))
60
- line.equipment_ids = equipment_ids
51
+ self._create_equipments()
61
52
  return result
62
53
 
54
+ def _create_equipments(self):
55
+ for order in self.filtered(lambda po: po.state in ("purchase", "done")):
56
+ for line in order._get_lines_to_create_equipments():
57
+ line.create_equipments()
58
+
63
59
 
64
60
  class PurchaseOrderLine(models.Model):
65
61
  _inherit = "purchase.order.line"
@@ -71,8 +67,9 @@ class PurchaseOrderLine(models.Model):
71
67
  store=True,
72
68
  readonly=False,
73
69
  )
74
- equipment_ids = fields.Many2many(
70
+ equipment_ids = fields.One2many(
75
71
  comodel_name="maintenance.equipment",
72
+ inverse_name="purchase_line_id",
76
73
  string="Equipments",
77
74
  copy=False,
78
75
  )
@@ -81,12 +78,9 @@ class PurchaseOrderLine(models.Model):
81
78
  @api.depends("product_id")
82
79
  def _compute_equipment_category_id(self):
83
80
  for item in self:
84
- if (
85
- item.product_id.maintenance_ok
86
- and item.product_id.product_tmpl_id.categ_id.equipment_category_ids
87
- ):
88
- item.equipment_category_id = fields.first(
89
- item.product_id.product_tmpl_id.categ_id.equipment_category_ids
81
+ if item.product_id.product_tmpl_id.purchase_equipment_category_id:
82
+ item.equipment_category_id = (
83
+ item.product_id.product_tmpl_id.purchase_equipment_category_id
90
84
  )
91
85
  else:
92
86
  item.equipment_category_id = item.equipment_category_id
@@ -101,37 +95,29 @@ class PurchaseOrderLine(models.Model):
101
95
  for item in self:
102
96
  item.equipment_count = mapping.get(item.id, 0)
103
97
 
104
- def _prepare_equipment_category_vals(self):
105
- categ = self.product_id.product_tmpl_id.categ_id
106
- return {"name": categ.name, "product_category_id": categ.id}
98
+ def _qty_to_create_equipments(self):
99
+ return int(self.product_qty - len(self.equipment_ids))
107
100
 
108
- def _set_equipment_category(self):
109
- if not self.equipment_category_id:
110
- category_model = self.env["maintenance.equipment.category"].sudo()
111
- category = fields.first(
112
- self.product_id.product_tmpl_id.categ_id.equipment_category_ids
113
- )
114
- if not category:
115
- category = category_model.create(
116
- self._prepare_equipment_category_vals()
117
- )
118
- self.equipment_category_id = category.id
101
+ def create_equipments(self):
102
+ self.ensure_one()
103
+ equipment_model = self.env["maintenance.equipment"]
104
+ equipments = equipment_model.create(
105
+ [
106
+ self._prepare_equipment_vals()
107
+ for _ in range(self._qty_to_create_equipments())
108
+ ]
109
+ )
110
+ self.equipment_ids = [Command.link(eq.id) for eq in equipments]
111
+ return equipments
119
112
 
120
113
  def _prepare_equipment_vals(self):
121
114
  return {
122
115
  "purchase_line_id": self.id,
123
116
  "name": self.product_id.name,
124
- "product_id": self.product_id.id,
125
117
  "category_id": self.equipment_category_id.id,
126
118
  "assign_date": self.order_id.date_order,
127
119
  "effective_date": self.order_id.date_planned,
128
120
  "partner_id": self.order_id.partner_id.id,
129
121
  "partner_ref": self.order_id.partner_ref,
122
+ "company_id": self.order_id.company_id.id,
130
123
  }
131
-
132
- def _prepare_account_move_line(self, move=False):
133
- result = super()._prepare_account_move_line(move=move)
134
- result["equipment_ids"] = [
135
- (4, equipment.id) for equipment in self.equipment_ids
136
- ]
137
- return result
@@ -0,0 +1 @@
1
+ - Enric Tobella
@@ -1,18 +1,18 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
1
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
2
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
3
  <head>
5
4
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
5
  <meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
7
- <title>Maintenance Purchase</title>
6
+ <title>README.rst</title>
8
7
  <style type="text/css">
9
8
 
10
9
  /*
11
10
  :Author: David Goodger (goodger@python.org)
12
- :Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
11
+ :Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
13
12
  :Copyright: This stylesheet has been placed in the public domain.
14
13
 
15
14
  Default cascading style sheet for the HTML output of Docutils.
15
+ Despite the name, some widely supported CSS2 features are used.
16
16
 
17
17
  See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
18
18
  customize this style sheet.
@@ -275,7 +275,7 @@ pre.literal-block, pre.doctest-block, pre.math, pre.code {
275
275
  margin-left: 2em ;
276
276
  margin-right: 2em }
277
277
 
278
- pre.code .ln { color: grey; } /* line numbers */
278
+ pre.code .ln { color: gray; } /* line numbers */
279
279
  pre.code, code { background-color: #eeeeee }
280
280
  pre.code .comment, code .comment { color: #5C6576 }
281
281
  pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
@@ -301,7 +301,7 @@ span.option {
301
301
  span.pre {
302
302
  white-space: pre }
303
303
 
304
- span.problematic {
304
+ span.problematic, pre.problematic {
305
305
  color: red }
306
306
 
307
307
  span.section-subtitle {
@@ -360,16 +360,21 @@ ul.auto-toc {
360
360
  </style>
361
361
  </head>
362
362
  <body>
363
- <div class="document" id="maintenance-purchase">
364
- <h1 class="title">Maintenance Purchase</h1>
363
+ <div class="document">
365
364
 
365
+
366
+ <a class="reference external image-reference" href="https://odoo-community.org/get-involved?utm_source=readme">
367
+ <img alt="Odoo Community Association" src="https://odoo-community.org/readme-banner-image" />
368
+ </a>
369
+ <div class="section" id="maintenance-purchase">
370
+ <h1>Maintenance Purchase</h1>
366
371
  <!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
367
372
  !! This file is generated by oca-gen-addon-readme !!
368
373
  !! changes will be overwritten. !!
369
374
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
370
- !! source digest: sha256:9b4e0b44d941b38aadf91a2912f84cf907a7e32f5e5573d36779fd044fa0f7f9
375
+ !! source digest: sha256:4081bc034b7ce0eb90fe184d22c1b65887263032ae7db862470be512e902124c
371
376
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
372
- <p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/maintenance/tree/16.0/maintenance_purchase"><img alt="OCA/maintenance" src="https://img.shields.io/badge/github-OCA%2Fmaintenance-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_purchase"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/maintenance&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
377
+ <p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/license-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/maintenance/tree/18.0/maintenance_purchase"><img alt="OCA/maintenance" src="https://img.shields.io/badge/github-OCA%2Fmaintenance-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/maintenance-18-0/maintenance-18-0-maintenance_purchase"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/maintenance&amp;target_branch=18.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
373
378
  <p>Create Equipments when the purchase is validated.</p>
374
379
  <p><strong>Table of contents</strong></p>
375
380
  <div class="contents local topic" id="contents">
@@ -384,38 +389,41 @@ ul.auto-toc {
384
389
  </ul>
385
390
  </div>
386
391
  <div class="section" id="bug-tracker">
387
- <h1><a class="toc-backref" href="#toc-entry-1">Bug Tracker</a></h1>
392
+ <h2><a class="toc-backref" href="#toc-entry-1">Bug Tracker</a></h2>
388
393
  <p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/maintenance/issues">GitHub Issues</a>.
389
394
  In case of trouble, please check there if your issue has already been reported.
390
395
  If you spotted it first, help us to smash it by providing a detailed and welcomed
391
- <a class="reference external" href="https://github.com/OCA/maintenance/issues/new?body=module:%20maintenance_purchase%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
396
+ <a class="reference external" href="https://github.com/OCA/maintenance/issues/new?body=module:%20maintenance_purchase%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
392
397
  <p>Do not contact contributors directly about support or help with technical issues.</p>
393
398
  </div>
394
399
  <div class="section" id="credits">
395
- <h1><a class="toc-backref" href="#toc-entry-2">Credits</a></h1>
400
+ <h2><a class="toc-backref" href="#toc-entry-2">Credits</a></h2>
396
401
  <div class="section" id="authors">
397
- <h2><a class="toc-backref" href="#toc-entry-3">Authors</a></h2>
402
+ <h3><a class="toc-backref" href="#toc-entry-3">Authors</a></h3>
398
403
  <ul class="simple">
399
404
  <li>CreuBlanca</li>
400
405
  </ul>
401
406
  </div>
402
407
  <div class="section" id="contributors">
403
- <h2><a class="toc-backref" href="#toc-entry-4">Contributors</a></h2>
408
+ <h3><a class="toc-backref" href="#toc-entry-4">Contributors</a></h3>
404
409
  <ul class="simple">
405
410
  <li>Enric Tobella</li>
406
411
  </ul>
407
412
  </div>
408
413
  <div class="section" id="maintainers">
409
- <h2><a class="toc-backref" href="#toc-entry-5">Maintainers</a></h2>
414
+ <h3><a class="toc-backref" href="#toc-entry-5">Maintainers</a></h3>
410
415
  <p>This module is maintained by the OCA.</p>
411
- <a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
416
+ <a class="reference external image-reference" href="https://odoo-community.org">
417
+ <img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
418
+ </a>
412
419
  <p>OCA, or the Odoo Community Association, is a nonprofit organization whose
413
420
  mission is to support the collaborative development of Odoo features and
414
421
  promote its widespread use.</p>
415
- <p>This module is part of the <a class="reference external" href="https://github.com/OCA/maintenance/tree/16.0/maintenance_purchase">OCA/maintenance</a> project on GitHub.</p>
422
+ <p>This module is part of the <a class="reference external" href="https://github.com/OCA/maintenance/tree/18.0/maintenance_purchase">OCA/maintenance</a> project on GitHub.</p>
416
423
  <p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
417
424
  </div>
418
425
  </div>
419
426
  </div>
427
+ </div>
420
428
  </body>
421
429
  </html>
@@ -1,11 +1,11 @@
1
1
  # Copyright 2024 ACSONE SA/NV
2
2
  # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
3
3
 
4
- from odoo import Command
5
- from odoo.tests.common import TransactionCase
6
4
 
5
+ from odoo.addons.base.tests.common import BaseCommon
7
6
 
8
- class TestMaintenanceProject(TransactionCase):
7
+
8
+ class TestMaintenanceProject(BaseCommon):
9
9
  @classmethod
10
10
  def setUpClass(cls):
11
11
  super().setUpClass()
@@ -35,22 +35,11 @@ class TestMaintenanceProject(TransactionCase):
35
35
  cls.product_category01 = cls.ProductCategory.create(
36
36
  {
37
37
  "name": "My Product Category 1",
38
- "equipment_category_ids": [
39
- Command.set(
40
- [
41
- cls.maintenance_equipment_category1.id,
42
- cls.maintenance_equipment_category2.id,
43
- ]
44
- )
45
- ],
46
38
  }
47
39
  )
48
40
  cls.product_category02 = cls.ProductCategory.create(
49
41
  {
50
42
  "name": "My Product Category 2",
51
- "equipment_category_ids": [
52
- Command.set([cls.maintenance_equipment_category2.id])
53
- ],
54
43
  }
55
44
  )
56
45
  cls.product_order_maintenance = cls.ProductProduct.create(
@@ -64,8 +53,8 @@ class TestMaintenanceProject(TransactionCase):
64
53
  "purchase_method": "purchase",
65
54
  "default_code": "PROD_ORDER",
66
55
  "taxes_id": False,
67
- "maintenance_ok": True,
68
56
  "categ_id": cls.product_category01.id,
57
+ "purchase_equipment_category_id": cls.maintenance_equipment_category1.id, # noqa: E501
69
58
  }
70
59
  )
71
60
  cls.product_order_no_maintenance = cls.ProductProduct.create(
@@ -89,7 +78,7 @@ class TestMaintenanceProject(TransactionCase):
89
78
  "partner_id": cls.partner.id,
90
79
  }
91
80
  )
92
- PurchaseOrderLine = cls.PurchaseOrderLine.with_context(tracking_disable=True)
81
+ PurchaseOrderLine = cls.PurchaseOrderLine
93
82
  cls.purchase_line_order01 = PurchaseOrderLine.create(
94
83
  {
95
84
  "name": cls.product_order_maintenance.name,
@@ -145,7 +134,7 @@ class TestMaintenanceProject(TransactionCase):
145
134
  self.maintenance_equipment_category1,
146
135
  )
147
136
  self.assertFalse(self.purchase_line_order02.equipment_category_id)
148
- self.product_order_no_maintenance.product_tmpl_id.maintenance_ok = True
137
+ self.product_order_no_maintenance.product_tmpl_id.purchase_equipment_category_id = self.maintenance_equipment_category2 # noqa: E501
149
138
  self.assertFalse(self.purchase_line_order02.equipment_category_id)
150
139
  self.purchase_line_order02.product_id = self.product_order_maintenance
151
140
  self.purchase_line_order02.product_id = self.product_order_no_maintenance
@@ -153,37 +142,6 @@ class TestMaintenanceProject(TransactionCase):
153
142
  self.purchase_line_order02.equipment_category_id,
154
143
  self.maintenance_equipment_category2,
155
144
  )
156
- self.purchase_line_order01.equipment_ids.unlink()
157
- self.purchase_line_order01.equipment_category_id = False
158
- self.purchase_order.button_approve()
159
- self.assertEqual(
160
- self.purchase_line_order01.equipment_category_id,
161
- self.maintenance_equipment_category1,
162
- )
163
- self.purchase_line_order01.equipment_ids.unlink()
164
- self.purchase_line_order01.equipment_category_id = False
165
- product_category_withouth_equipement_category = self.ProductCategory.create(
166
- {
167
- "name": "My Product Category 2",
168
- }
169
- )
170
- self.purchase_line_order01.product_id.product_tmpl_id.categ_id = (
171
- product_category_withouth_equipement_category.id
172
- )
173
- self.purchase_order.button_approve()
174
- self.assertTrue(self.purchase_line_order01.equipment_category_id)
175
- self.assertNotEqual(
176
- self.purchase_line_order01.equipment_category_id,
177
- self.maintenance_equipment_category1,
178
- )
179
-
180
- def test_account_move_line(self):
181
- self.purchase_order.button_approve()
182
- self.purchase_order.action_create_invoice()
183
- self.assertEqual(
184
- self.purchase_order.order_line.equipment_ids,
185
- self.purchase_order.invoice_ids.line_ids.equipment_ids,
186
- )
187
145
 
188
146
  def test_action_view_equipments(self):
189
147
  action = self.purchase_order.action_view_equipments()
@@ -7,10 +7,12 @@
7
7
  <field name="model">maintenance.equipment</field>
8
8
  <field name="inherit_id" ref="maintenance.hr_equipment_view_form" />
9
9
  <field name="arch" type="xml">
10
- <xpath expr="//field[@name='serial_no']" position="after">
11
- <field name="purchase_id" />
10
+ <xpath
11
+ expr="//page[@name='product_information']//field[@name='serial_no']"
12
+ position="after"
13
+ >
14
+ <field name="purchase_id" groups="purchase.group_purchase_user" />
12
15
  </xpath>
13
16
  </field>
14
17
  </record>
15
-
16
18
  </odoo>
@@ -0,0 +1,13 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <odoo>
3
+ <record id="product_template_form_view" model="ir.ui.view">
4
+ <field name="name">product.template.common.form</field>
5
+ <field name="model">product.template</field>
6
+ <field name="inherit_id" ref="product.product_template_form_view" />
7
+ <field name="arch" type="xml">
8
+ <xpath expr="//field[@name='categ_id']" position="after">
9
+ <field name="purchase_equipment_category_id" />
10
+ </xpath>
11
+ </field>
12
+ </record>
13
+ </odoo>
@@ -2,7 +2,6 @@
2
2
  <!-- Copyright 2022 CreuBlanca
3
3
  License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
4
4
  <odoo>
5
-
6
5
  <record model="ir.ui.view" id="purchase_order_form_view">
7
6
  <field name="name">purchase.order.form (in maintenance_purchase)</field>
8
7
  <field name="model">purchase.order</field>
@@ -14,7 +13,7 @@
14
13
  type="object"
15
14
  class="oe_stat_button"
16
15
  icon="fa-cubes"
17
- attrs="{'invisible': [('equipment_count', '=', 0)]}"
16
+ invisible="not equipment_count"
18
17
  >
19
18
  <field
20
19
  string="Equipment(s)"
@@ -24,14 +23,11 @@
24
23
  </button>
25
24
  </xpath>
26
25
  <xpath
27
- expr="//notebook//field[@name='order_line']/tree/field[@name='product_qty']"
26
+ expr="//notebook//field[@name='order_line']/list/field[@name='product_qty']"
28
27
  position="before"
29
28
  >
30
29
  <field name="equipment_category_id" optional="hide" />
31
30
  </xpath>
32
31
  </field>
33
32
  </record>
34
-
35
-
36
-
37
33
  </odoo>
@@ -1,45 +1,49 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-maintenance_purchase
3
- Version: 16.0.1.0.0.3
3
+ Version: 18.0.1.0.0.2
4
+ Requires-Python: >=3.10
5
+ Requires-Dist: odoo==18.0.*
4
6
  Summary: Create Equipments with purchases
5
7
  Home-page: https://github.com/OCA/maintenance
8
+ License: AGPL-3
6
9
  Author: CreuBlanca,Odoo Community Association (OCA)
7
10
  Author-email: support@odoo-community.org
8
- License: AGPL-3
9
11
  Classifier: Programming Language :: Python
10
12
  Classifier: Framework :: Odoo
11
- Classifier: Framework :: Odoo :: 16.0
13
+ Classifier: Framework :: Odoo :: 18.0
12
14
  Classifier: License :: OSI Approved :: GNU Affero General Public License v3
13
- Requires-Python: >=3.10
14
- Requires-Dist: odoo-addon-maintenance-account<16.1dev,>=16.0dev
15
- Requires-Dist: odoo<16.1dev,>=16.0a
15
+ Description-Content-Type: text/x-rst
16
+
17
+ .. image:: https://odoo-community.org/readme-banner-image
18
+ :target: https://odoo-community.org/get-involved?utm_source=readme
19
+ :alt: Odoo Community Association
16
20
 
17
21
  ====================
18
22
  Maintenance Purchase
19
23
  ====================
20
24
 
21
- ..
25
+ ..
22
26
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
23
27
  !! This file is generated by oca-gen-addon-readme !!
24
28
  !! changes will be overwritten. !!
25
29
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
26
- !! source digest: sha256:9b4e0b44d941b38aadf91a2912f84cf907a7e32f5e5573d36779fd044fa0f7f9
30
+ !! source digest: sha256:4081bc034b7ce0eb90fe184d22c1b65887263032ae7db862470be512e902124c
27
31
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
28
32
 
29
33
  .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
30
34
  :target: https://odoo-community.org/page/development-status
31
35
  :alt: Beta
32
- .. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
36
+ .. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
33
37
  :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
34
38
  :alt: License: AGPL-3
35
39
  .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmaintenance-lightgray.png?logo=github
36
- :target: https://github.com/OCA/maintenance/tree/16.0/maintenance_purchase
40
+ :target: https://github.com/OCA/maintenance/tree/18.0/maintenance_purchase
37
41
  :alt: OCA/maintenance
38
42
  .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
39
- :target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_purchase
43
+ :target: https://translation.odoo-community.org/projects/maintenance-18-0/maintenance-18-0-maintenance_purchase
40
44
  :alt: Translate me on Weblate
41
45
  .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
42
- :target: https://runboat.odoo-community.org/builds?repo=OCA/maintenance&target_branch=16.0
46
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/maintenance&target_branch=18.0
43
47
  :alt: Try me on Runboat
44
48
 
45
49
  |badge1| |badge2| |badge3| |badge4| |badge5|
@@ -57,7 +61,7 @@ Bug Tracker
57
61
  Bugs are tracked on `GitHub Issues <https://github.com/OCA/maintenance/issues>`_.
58
62
  In case of trouble, please check there if your issue has already been reported.
59
63
  If you spotted it first, help us to smash it by providing a detailed and welcomed
60
- `feedback <https://github.com/OCA/maintenance/issues/new?body=module:%20maintenance_purchase%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
64
+ `feedback <https://github.com/OCA/maintenance/issues/new?body=module:%20maintenance_purchase%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
61
65
 
62
66
  Do not contact contributors directly about support or help with technical issues.
63
67
 
@@ -65,18 +69,17 @@ Credits
65
69
  =======
66
70
 
67
71
  Authors
68
- ~~~~~~~
72
+ -------
69
73
 
70
74
  * CreuBlanca
71
75
 
72
76
  Contributors
73
- ~~~~~~~~~~~~
77
+ ------------
74
78
 
75
- * Enric Tobella
76
- * Laurent Stukkens
79
+ - Enric Tobella
77
80
 
78
81
  Maintainers
79
- ~~~~~~~~~~~
82
+ -----------
80
83
 
81
84
  This module is maintained by the OCA.
82
85
 
@@ -88,6 +91,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
88
91
  mission is to support the collaborative development of Odoo features and
89
92
  promote its widespread use.
90
93
 
91
- This module is part of the `OCA/maintenance <https://github.com/OCA/maintenance/tree/16.0/maintenance_purchase>`_ project on GitHub.
94
+ This module is part of the `OCA/maintenance <https://github.com/OCA/maintenance/tree/18.0/maintenance_purchase>`_ project on GitHub.
92
95
 
93
96
  You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
@@ -0,0 +1,25 @@
1
+ odoo/addons/maintenance_purchase/README.rst,sha256=v6lU-znjnTw0gsSTt1qZ6GhMsqSO9HkjXQ-3Mz5KrmI,2968
2
+ odoo/addons/maintenance_purchase/__init__.py,sha256=X9EJGOE2GtZbS0G82PtSXmWSZ_R8jEM0rlJTDliQjp4,21
3
+ odoo/addons/maintenance_purchase/__manifest__.py,sha256=ZxlrtW9T03UkxG91HGt-WY1cITmvAX-AqnyXS38WHAQ,569
4
+ odoo/addons/maintenance_purchase/i18n/es.po,sha256=FaaoDY3xz3J33nf2uBlxSPyxKLHZeIbKojlULrMVso4,3346
5
+ odoo/addons/maintenance_purchase/i18n/fr.po,sha256=PoCvuCQqleocPrJgXiswo23bXOpMeatHTVgkNzC2mCw,2198
6
+ odoo/addons/maintenance_purchase/i18n/it.po,sha256=9YSpezbgzDY-FcCAFB1XvgvJllKIcTU4HgBmvQ-zaX0,3332
7
+ odoo/addons/maintenance_purchase/i18n/maintenance_purchase.pot,sha256=MbQSGaUVlOiWryIl8nB2z6o-pNoAi8PFc9hwAJz3fcg,2336
8
+ odoo/addons/maintenance_purchase/migrations/18.0.1.0.0/post-migration.py,sha256=2aGF4Fz0n0OwXXPSB-53KeQz5QkTy1M62ah82aT9Ne0,745
9
+ odoo/addons/maintenance_purchase/models/__init__.py,sha256=kTfI9WkVuXbIx2_jGoES9Eq5U800R_2rOnwXXo1ZYSo,96
10
+ odoo/addons/maintenance_purchase/models/maintenance_equipment.py,sha256=W-HtOK96kshAgIKnAQrx--C-L4v1HXytYESVdO1Wbks,498
11
+ odoo/addons/maintenance_purchase/models/product_template.py,sha256=as1SFLmMM8rfJ3KTq5ob4wm_jvsO2AfcAEOmHO1wdcY,381
12
+ odoo/addons/maintenance_purchase/models/purchase_order.py,sha256=Bf_80UgR9SBQNXrPuPSgQS_rBxwKegmTaiaUueY3Ydk,4400
13
+ odoo/addons/maintenance_purchase/readme/CONTRIBUTORS.md,sha256=subC7gWq_kRC_nJfLRfrI_IXlNoGgWaq9Es5qXuMa1w,16
14
+ odoo/addons/maintenance_purchase/readme/DESCRIPTION.md,sha256=9g_-7RtlHa57JH1IBwc9RIxOGBZ3v3Ahez-sSS4UW7E,50
15
+ odoo/addons/maintenance_purchase/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
16
+ odoo/addons/maintenance_purchase/static/description/index.html,sha256=qjiRAKEL-rdPE-RENEUGkZLnC5hMSPvZToeyl5cANNg,12247
17
+ odoo/addons/maintenance_purchase/tests/__init__.py,sha256=JsUwHLNgJAF-cd1UO-xTZ-iEVGBDxXXWqmMJ7UtDmzQ,34
18
+ odoo/addons/maintenance_purchase/tests/test_purchase_order.py,sha256=MgAt8Oqh7hN4f0iQSzf2x6rUujSYS7gX8HV6PPpXt4o,7107
19
+ odoo/addons/maintenance_purchase/views/maintenance_equipment.xml,sha256=FXa-UNFUFj8RcDlqJVcJemCmAmnNiC9TP0n6lRsijbI,728
20
+ odoo/addons/maintenance_purchase/views/product_template_view.xml,sha256=ievK1WbRVsKVARKVTcTqYsjWcRtn6Axz68VVTkTEEZQ,538
21
+ odoo/addons/maintenance_purchase/views/purchase_order.xml,sha256=bx37mk0BplKWh_IkrIPlGR8wFNwpPFtTW87SHUA_XjE,1312
22
+ odoo_addon_maintenance_purchase-18.0.1.0.0.2.dist-info/METADATA,sha256=1qLwgnJT221-nlNO8rMvKLTLJKPcGwVObka6qyX1eXM,3524
23
+ odoo_addon_maintenance_purchase-18.0.1.0.0.2.dist-info/WHEEL,sha256=ZhOvUsYhy81Dx67gN3TV0RchQWBIIzutDZaJODDg2Vo,81
24
+ odoo_addon_maintenance_purchase-18.0.1.0.0.2.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
25
+ odoo_addon_maintenance_purchase-18.0.1.0.0.2.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.45.1)
2
+ Generator: Whool 1.3
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1 +0,0 @@
1
- * Enric Tobella
@@ -1,22 +0,0 @@
1
- odoo/addons/maintenance_purchase/README.rst,sha256=pGlYaeYpieALmajf-Y6AKwlS8OCGwgiLNfT_dzAeHUI,2821
2
- odoo/addons/maintenance_purchase/__init__.py,sha256=X9EJGOE2GtZbS0G82PtSXmWSZ_R8jEM0rlJTDliQjp4,21
3
- odoo/addons/maintenance_purchase/__manifest__.py,sha256=9w17WBhLcfa4SJoOxuyOfUH3YbUzEf4T2Uq_DOCCvPM,563
4
- odoo/addons/maintenance_purchase/i18n/es.po,sha256=FaaoDY3xz3J33nf2uBlxSPyxKLHZeIbKojlULrMVso4,3346
5
- odoo/addons/maintenance_purchase/i18n/fr.po,sha256=PoCvuCQqleocPrJgXiswo23bXOpMeatHTVgkNzC2mCw,2198
6
- odoo/addons/maintenance_purchase/i18n/it.po,sha256=9YSpezbgzDY-FcCAFB1XvgvJllKIcTU4HgBmvQ-zaX0,3332
7
- odoo/addons/maintenance_purchase/i18n/maintenance_purchase.pot,sha256=7Hv1vdMsKfjELy7vmxvJhZ1eMrTBlc3suX97FXt5bf0,1894
8
- odoo/addons/maintenance_purchase/models/__init__.py,sha256=HaR2WahflhBcrchjiMYzQjtYcmtCDvX7frSd_WeksnI,65
9
- odoo/addons/maintenance_purchase/models/maintenance_equipment.py,sha256=IRMQWw6pWJaxbL2QCQIDVjPDaGplercFeyirUlOR7z0,499
10
- odoo/addons/maintenance_purchase/models/purchase_order.py,sha256=GWyHhZsO5Ji6ROdN63wZh3DiTblyRQYZTPkCrUsAmww,5205
11
- odoo/addons/maintenance_purchase/readme/CONTRIBUTORS.rst,sha256=GAYxzAZEN5wTBewMNx4PD2y_QoI-dzpokacQ9NnaEso,16
12
- odoo/addons/maintenance_purchase/readme/DESCRIPTION.rst,sha256=9g_-7RtlHa57JH1IBwc9RIxOGBZ3v3Ahez-sSS4UW7E,50
13
- odoo/addons/maintenance_purchase/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
14
- odoo/addons/maintenance_purchase/static/description/index.html,sha256=XFp2ZUdZjmQL6ZGofkKDORA9tOiWrj6cJrlTvIhmKX4,11986
15
- odoo/addons/maintenance_purchase/tests/__init__.py,sha256=JsUwHLNgJAF-cd1UO-xTZ-iEVGBDxXXWqmMJ7UtDmzQ,34
16
- odoo/addons/maintenance_purchase/tests/test_purchase_order.py,sha256=KI9TaSbKjM8QfdpeYKfDN-anp0a5agoxN12cg8LyAd0,8807
17
- odoo/addons/maintenance_purchase/views/maintenance_equipment.xml,sha256=RlKpIuwLNS1VIBeCP5in4gFOKqhjsstOWVqi4_PG8l8,611
18
- odoo/addons/maintenance_purchase/views/purchase_order.xml,sha256=WXazAvS--mP5Z70y9AHoAxfl5AwU530bEHAoa5cjPq4,1337
19
- odoo_addon_maintenance_purchase-16.0.1.0.0.3.dist-info/METADATA,sha256=t4MxGO-kpcb4B_tVXUg6zlEMU8S4CPfEzOU80cfZdA4,3412
20
- odoo_addon_maintenance_purchase-16.0.1.0.0.3.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
21
- odoo_addon_maintenance_purchase-16.0.1.0.0.3.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
22
- odoo_addon_maintenance_purchase-16.0.1.0.0.3.dist-info/RECORD,,