Merge PR #1346 into 17.0

Signed-off-by pedrobaeza
This commit is contained in:
OCA-git-bot
2024-10-25 17:53:21 +00:00
19 changed files with 603 additions and 0 deletions

103
mrp_repair_order/README.rst Normal file
View File

@@ -0,0 +1,103 @@
================
MRP Repair Order
================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:59abcf10a982af23fbe8da15d6de94dd3effa113217ed9dd9cfb22614b3d8618
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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%2Fmanufacture-lightgray.png?logo=github
:target: https://github.com/OCA/manufacture/tree/17.0/mrp_repair_order
:alt: OCA/manufacture
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/manufacture-17-0/manufacture-17-0-mrp_repair_order
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/manufacture&target_branch=17.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module allows to create a repair order from manufacturing order
when that one is done. One repair only is linked to the one
manufacturing order.
**Table of contents**
.. contents::
:local:
Usage
=====
To use this module, you need to:
Create a manufacturing order:
1. Go to Manufacture > Manufacturing Orders .
2. Create new manufacturing order and produce that.
3. Create a repair order from the header button called "Create Repair
Order"
You can access from manufacturing order to repair order directly with a
smart button and the same backwards.
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/manufacture/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/manufacture/issues/new?body=module:%20mrp_repair_order%0Aversion:%2017.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
-------
* Antoni Marroig
Contributors
------------
- [APSL-Nagarro](https://apsl.tech):
- Antoni Marroig <amarroig@apsl.net>
Maintainers
-----------
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
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.
.. |maintainer-peluko00| image:: https://github.com/peluko00.png?size=40px
:target: https://github.com/peluko00
:alt: peluko00
Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-peluko00|
This module is part of the `OCA/manufacture <https://github.com/OCA/manufacture/tree/17.0/mrp_repair_order>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View File

@@ -0,0 +1,3 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from . import models

View File

@@ -0,0 +1,16 @@
# Copyright 2024 Antoni Marroig(APSL-Nagarro)<amarroig@apsl.net>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
"name": "MRP Repair Order",
"summary": "Create repair order from manufacturing order",
"version": "17.0.1.0.0",
"category": "Manufacturing",
"website": "https://github.com/OCA/manufacture",
"author": "Antoni Marroig, Odoo Community Association (OCA)",
"maintainers": ["peluko00"],
"license": "AGPL-3",
"application": False,
"installable": True,
"depends": ["mrp", "repair"],
"data": ["views/mrp_production_views.xml", "views/repair_views.xml"],
}

View File

@@ -0,0 +1,54 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mrp_repair_order
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-09-06 06:24+0000\n"
"PO-Revision-Date: 2024-09-06 06:24+0000\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: mrp_repair_order
#: model_terms:ir.ui.view,arch_db:mrp_repair_order.view_repair_order_form_inherit
msgid "<span class=\"o_stat_text\">Manufacturing order</span>"
msgstr "<span class=\"o_stat_text\">Ordre de Fabricació</span>"
#. module: mrp_repair_order
#: model_terms:ir.ui.view,arch_db:mrp_repair_order.view_mrp_production_form_inherit
msgid "<span class=\"o_stat_text\">Repair order</span>"
msgstr "<span class=\"o_stat_text\">Ordre de Reparació</span>"
#. module: mrp_repair_order
#. odoo-python
#: code:addons/mrp_repair_order/models/mrp.py:0
#: model_terms:ir.ui.view,arch_db:mrp_repair_order.view_mrp_production_form_inherit
#, python-format
msgid "Create Repair Order"
msgstr "Crear Ordre de Reparació"
#. module: mrp_repair_order
#: model:ir.model.fields,field_description:mrp_repair_order.field_repair_order__mrp_ids
msgid "Manufacting Orders"
msgstr "Ordres de fabricació"
#. module: mrp_repair_order
#: model:ir.model,name:mrp_repair_order.model_mrp_production
msgid "Production Order"
msgstr "Ordre de producció"
#. module: mrp_repair_order
#: model:ir.model.fields,field_description:mrp_repair_order.field_mrp_production__repair_id
msgid "Repair"
msgstr "Reparació"
#. module: mrp_repair_order
#: model:ir.model,name:mrp_repair_order.model_repair_order
msgid "Repair Order"
msgstr "Ordre de reparació"

View File

@@ -0,0 +1,54 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mrp_repair_order
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-09-06 06:25+0000\n"
"PO-Revision-Date: 2024-09-06 06:25+0000\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: mrp_repair_order
#: model_terms:ir.ui.view,arch_db:mrp_repair_order.view_repair_order_form_inherit
msgid "<span class=\"o_stat_text\">Manufacturing order</span>"
msgstr "<span class=\"o_stat_text\">Orden de Fabricación</span>"
#. module: mrp_repair_order
#: model_terms:ir.ui.view,arch_db:mrp_repair_order.view_mrp_production_form_inherit
msgid "<span class=\"o_stat_text\">Repair order</span>"
msgstr "<span class=\"o_stat_text\">Orden de Reparación</span>"
#. module: mrp_repair_order
#. odoo-python
#: code:addons/mrp_repair_order/models/mrp.py:0
#: model_terms:ir.ui.view,arch_db:mrp_repair_order.view_mrp_production_form_inherit
#, python-format
msgid "Create Repair Order"
msgstr "Crear Orden de Reparación"
#. module: mrp_repair_order
#: model:ir.model.fields,field_description:mrp_repair_order.field_repair_order__mrp_ids
msgid "Manufacting Orders"
msgstr "Órdenes de fabricación"
#. module: mrp_repair_order
#: model:ir.model,name:mrp_repair_order.model_mrp_production
msgid "Production Order"
msgstr "Orden de producción"
#. module: mrp_repair_order
#: model:ir.model.fields,field_description:mrp_repair_order.field_mrp_production__repair_id
msgid "Repair"
msgstr "Reparación"
#. module: mrp_repair_order
#: model:ir.model,name:mrp_repair_order.model_repair_order
msgid "Repair Order"
msgstr "Orden de reparación"

View File

@@ -0,0 +1,4 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from . import mrp
from . import repair

View File

@@ -0,0 +1,35 @@
# Copyright 2024 Antoni Marroig(APSL-Nagarro)<amarroig@apsl.net>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import _, fields, models
class MRPProduction(models.Model):
_inherit = "mrp.production"
repair_id = fields.Many2one("repair.order")
def action_create_repair_order(self):
self.ensure_one()
action = self.env["ir.actions.act_window"]._for_xml_id(
"repair.action_repair_order_form"
)
action["view_mode"] = "form"
action["views"] = [(False, "form")]
action["target"] = "new"
action["name"] = _("Create Repair Order")
action["context"] = {
"default_product_id": self.product_id.id,
"default_product_qty": self.product_qty,
"default_mrp_ids": [self.id],
}
return action
def action_view_mrp_production_repair_orders(self):
return {
"type": "ir.actions.act_window",
"view_mode": "form",
"res_model": "repair.order",
"res_id": self.repair_id.id,
}

View File

@@ -0,0 +1,18 @@
# Copyright 2024 Antoni Marroig(APSL-Nagarro)<amarroig@apsl.net>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import fields, models
class RepairOrder(models.Model):
_inherit = "repair.order"
mrp_ids = fields.One2many("mrp.production", "repair_id", "Manufacting Orders")
def action_view_repair_manufacturing_order(self):
return {
"type": "ir.actions.act_window",
"view_mode": "form",
"res_model": "mrp.production",
"res_id": self.mrp_ids.id,
}

View File

@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"

View File

@@ -0,0 +1,2 @@
- \[APSL-Nagarro\](<https://apsl.tech>):
- Antoni Marroig \<<amarroig@apsl.net>\>

View File

@@ -0,0 +1,3 @@
This module allows to create a repair order from manufacturing order
when that one is done. One repair only is linked to the one
manufacturing order.

View File

@@ -0,0 +1,11 @@
To use this module, you need to:
Create a manufacturing order:
1. Go to Manufacture \> Manufacturing Orders .
2. Create new manufacturing order and produce that.
3. Create a repair order from the header button called "Create Repair
Order"
You can access from manufacturing order to repair order directly with a
smart button and the same backwards.

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 45 KiB

View File

@@ -0,0 +1,124 @@
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan">Module name</h2>
<p>This module was written to extend the functionality of ... to support ... and allow you to ...</p>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan">Installation</h2>
</div>
<div class="oe_span6">
<p class="oe_mt32">To install this module, you need to:
<ul>
<li>...</li>
</ul>
</p>
</div>
<div class="oe_span6">
<div class="oe_demo oe_picture oe_screenshot">
<a href="https://www.odoo.com/saas_master/demo?lang=en_US&module=crm">
<img src="crm_sc_01.png">
</a>
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan">Configuration</h2>
</div>
<div class="oe_span6">
<p class="oe_mt32">To configure this module, you need to:
<ul>
<li>...</li>
</ul>
</p>
</div>
<div class="oe_span6">
<div class="oe_demo oe_picture oe_screenshot">
<a href="https://www.odoo.com/saas_master/demo?lang=en_US&module=crm">
<img src="crm_sc_01.png">
</a>
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan">Usage</h2>
</div>
<div class="oe_span6">
<p class="oe_mt32">To use this module, you need to:
<ul>
<li>...</li>
</ul>
</p>
<p class="oe_mt32">For further information, please visit:
<ul>
<li><a href="https://www.odoo.com/forum/help-1">https://www.odoo.com/forum/help-1</a></li>
</ul>
</p>
</div>
<div class="oe_span6">
<div class="oe_demo oe_picture oe_screenshot">
<a href="https://www.odoo.com/saas_master/demo?lang=en_US&module=crm">
<img src="crm_sc_01.png">
</a>
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan">Known issues / Roadmap</h2>
</div>
<div class="oe_span6">
<p class="oe_mt32">
<ul>
<li>...</li>
</ul>
</p>
</div>
<div class="oe_span6">
<div class="oe_demo oe_picture oe_screenshot">
<a href="https://www.odoo.com/saas_master/demo?lang=en_US&module=crm">
<img src="crm_sc_01.png">
</a>
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row">
<div class="oe_span12">
<h2 class="oe_slogan">Credits</h2>
</div>
<div class="oe_span12">
<h3>Contributors</h3>
<ul>
<li>Firstname Lastname &lt;<a href="mailto:email.address@example.com">email.address@example.com</a>&gt;</li>
</ul>
</div>
<div class="oe_span12">
<h3>Maintainer</h3>
<p>
This module is maintained by the OCA.<br/>
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.<br/>
To contribute to this module, please visit <a href="http://odoo-community.org">http://odoo-community.org</a>.<br/>
<a href="http://odoo-community.org"><img class="oe_picture oe_centered" src="http://odoo-community.org/logo.png"></a>
</p>
</div>
</div>
</section>

View File

@@ -0,0 +1,2 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from . import test_mrp_repair_order

View File

@@ -0,0 +1,30 @@
# Copyright 2024 Antoni Marroig(APSL-Nagarro)<amarroig@apsl.net>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo.tests.common import Form, TransactionCase
class MRPRepairOrderTest(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.mrp_order = cls.env["mrp.production"].create(
{
"product_id": cls.env.ref("product.product_delivery_01").id,
"product_qty": 2,
}
)
def test_create_repair_order_from_mrp(self):
repair_form = Form(
self.env["repair.order"].with_context(
default_mrp_id=self.mrp_order.id,
default_product_qty=self.mrp_order.product_qty,
default_product_id=self.mrp_order.product_id.id,
default_mrp_ids=[self.mrp_order.id],
)
)
repair_order = repair_form.save()
self.assertEqual(self.mrp_order.repair_id, repair_order)
self.assertEqual(self.mrp_order.repair_id.product_id, repair_order.product_id)
self.assertEqual(self.mrp_order.repair_id.product_qty, repair_order.product_qty)

View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- # Copyright 2024 Antoni Marroig(APSL-Nagarro)<amarroig@apsl.net>
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="view_mrp_production_form_inherit" model="ir.ui.view">
<field name="name">mrp.production.form.inherit</field>
<field name="model">mrp.production</field>
<field name="inherit_id" ref="mrp.mrp_production_form_view" />
<field name="arch" type="xml">
<xpath expr="//button[@name='button_unplan']" position="before">
<button
name="action_create_repair_order"
invisible="state != 'done' or repair_id"
string="Create Repair Order"
type="object"
class="oe_highlight"
data-hotkey="q"
/>
</xpath>
<xpath expr="//button[@name='action_view_mo_delivery']" position="after">
<field name="repair_id" readonly="1" invisible="1" />
<button
class="oe_stat_button"
name="action_view_mrp_production_repair_orders"
type="object"
icon="fa-wrench"
invisible="not repair_id"
>
<div class="o_field_widget o_stat_info">
<span class="o_stat_text">Repair order</span>
</div>
</button>
</xpath>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- # Copyright 2024 Antoni Marroig(APSL-Nagarro)<amarroig@apsl.net>
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="view_repair_order_form_inherit" model="ir.ui.view">
<field name="name">repair.order.form.inherit</field>
<field name="model">repair.order</field>
<field name="inherit_id" ref="repair.view_repair_order_form" />
<field name="arch" type="xml">
<xpath expr="//button[@name='action_view_sale_order']" position="before">
<field name="mrp_ids" readonly="1" invisible="1" />
<button
class="oe_stat_button"
name="action_view_repair_manufacturing_order"
type="object"
icon="fa-industry"
invisible="not mrp_ids"
>
<div class="o_field_widget o_stat_info">
<span class="o_stat_text">Manufacturing order</span>
</div>
</button>
</xpath>
</field>
</record>
</odoo>