From 8a9f083a69ef3799af63e84acc23f3b5096c4ff5 Mon Sep 17 00:00:00 2001 From: osi-scampbell Date: Fri, 4 Jan 2019 15:43:12 -0700 Subject: [PATCH 01/21] [ADD] stock_production_lot_warranty --- stock_production_lot_warranty/README.rst | 21 +++++++++++ stock_production_lot_warranty/__init__.py | 3 ++ stock_production_lot_warranty/__manifest__.py | 25 +++++++++++++ .../models/__init__.py | 6 ++++ .../models/stock_production_lot.py | 36 +++++++++++++++++++ .../readme/CONFIGURE.rst | 8 +++++ .../readme/CONTRIBUTORS.rst | 2 ++ .../readme/CREDITS.rst | 4 +++ .../readme/DESCRIPTION.rst | 4 +++ .../readme/USAGE.rst | 7 ++++ .../views/stock_production_lot.xml | 15 ++++++++ 11 files changed, 131 insertions(+) create mode 100644 stock_production_lot_warranty/README.rst create mode 100644 stock_production_lot_warranty/__init__.py create mode 100644 stock_production_lot_warranty/__manifest__.py create mode 100644 stock_production_lot_warranty/models/__init__.py create mode 100644 stock_production_lot_warranty/models/stock_production_lot.py create mode 100644 stock_production_lot_warranty/readme/CONFIGURE.rst create mode 100644 stock_production_lot_warranty/readme/CONTRIBUTORS.rst create mode 100644 stock_production_lot_warranty/readme/CREDITS.rst create mode 100644 stock_production_lot_warranty/readme/DESCRIPTION.rst create mode 100644 stock_production_lot_warranty/readme/USAGE.rst create mode 100644 stock_production_lot_warranty/views/stock_production_lot.xml diff --git a/stock_production_lot_warranty/README.rst b/stock_production_lot_warranty/README.rst new file mode 100644 index 000000000..21cd7854d --- /dev/null +++ b/stock_production_lot_warranty/README.rst @@ -0,0 +1,21 @@ +**This file is going to be generated by oca-gen-addon-readme.** + +*Manual changes will be overwritten.* + +Please provide content in the ``readme`` directory: + +* **DESCRIPTION.rst** (required) +* INSTALL.rst (optional) +* CONFIGURE.rst (optional) +* **USAGE.rst** (optional, highly recommended) +* DEVELOP.rst (optional) +* ROADMAP.rst (optional) +* HISTORY.rst (optional, recommended) +* **CONTRIBUTORS.rst** (optional, highly recommended) +* CREDITS.rst (optional) + +Content of this README will also be drawn from the addon manifest, +from keys such as name, authors, maintainers, development_status, +and license. + +A good, one sentence summary in the manifest is also highly recommended. diff --git a/stock_production_lot_warranty/__init__.py b/stock_production_lot_warranty/__init__.py new file mode 100644 index 000000000..69f7babdf --- /dev/null +++ b/stock_production_lot_warranty/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import models diff --git a/stock_production_lot_warranty/__manifest__.py b/stock_production_lot_warranty/__manifest__.py new file mode 100644 index 000000000..e585d1bf0 --- /dev/null +++ b/stock_production_lot_warranty/__manifest__.py @@ -0,0 +1,25 @@ +# Copyright (C) 2018 - TODAY, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Warranty Date on Lot/Serial Numbers', + 'summary': 'Add warranty date to stock production lot', + 'version': '11.0.0.0.1', + 'license': 'AGPL-3', + 'author': 'Open Source Integrators, Odoo Community Association (OCA)', + 'category': 'Stock', + 'website': 'https://github.com/OCA/rma', + 'depends': [ + 'product_warranty', + 'stock', + ], + 'data': [ + 'views/stock_production_lot.xml', + ], + 'application': False, + 'development_status': 'Beta', + 'maintainers': [ + 'osi-scampbell', + 'max3903', + ] +} diff --git a/stock_production_lot_warranty/models/__init__.py b/stock_production_lot_warranty/models/__init__.py new file mode 100644 index 000000000..45eb3ad2b --- /dev/null +++ b/stock_production_lot_warranty/models/__init__.py @@ -0,0 +1,6 @@ +# Copyright (C) 2018 - TODAY, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import ( + stock_production_lot +) diff --git a/stock_production_lot_warranty/models/stock_production_lot.py b/stock_production_lot_warranty/models/stock_production_lot.py new file mode 100644 index 000000000..7fa366611 --- /dev/null +++ b/stock_production_lot_warranty/models/stock_production_lot.py @@ -0,0 +1,36 @@ +# Copyright (C) 2018 - TODAY, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models, api +from dateutil.relativedelta import relativedelta +from datetime import datetime, timedelta + + +class StockProductionLot(models.Model): + _inherit = 'stock.production.lot' + + warranty_exp_date = fields.Date(string='Warranty Expiration Date') + + @api.onchange('product_id') + def _onchange_product_id(self): + if self.product_id: + if (self.product_id.product_tmpl_id.warranty_type and + self.product_id.product_tmpl_id.warranty): + today_date = datetime.now() + if self.product_id.product_tmpl_id.warranty_type == 'day': + time = (today_date + + timedelta(days=self.product_id. + product_tmpl_id.warranty)) + elif self.product_id.product_tmpl_id.warranty_type == 'week': + time = (today_date + + timedelta(weeks=self.product_id. + product_tmpl_id.warranty)) + elif self.product_id.product_tmpl_id.warranty_type == 'month': + time = (today_date + + relativedelta(months=+self.product_id. + product_tmpl_id.warranty)) + elif self.product_id.product_tmpl_id.warranty_type == 'year': + time = (today_date + + relativedelta(years=+self.product_id. + product_tmpl_id.warranty)) + self.warranty_exp_date = time diff --git a/stock_production_lot_warranty/readme/CONFIGURE.rst b/stock_production_lot_warranty/readme/CONFIGURE.rst new file mode 100644 index 000000000..39a9d0fe2 --- /dev/null +++ b/stock_production_lot_warranty/readme/CONFIGURE.rst @@ -0,0 +1,8 @@ +To configure this module: + +* Go to Inventory > Configuration > Settings +* Activate the traceability +* Go to Inventory > Master Data > Products +* Create or select a product and set the warranty +* Go to the Inventory tab in the Logistics section +* Set the warranty duration diff --git a/stock_production_lot_warranty/readme/CONTRIBUTORS.rst b/stock_production_lot_warranty/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..484c2429b --- /dev/null +++ b/stock_production_lot_warranty/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* Steve Campbell +* Maxime Chambreuil diff --git a/stock_production_lot_warranty/readme/CREDITS.rst b/stock_production_lot_warranty/readme/CREDITS.rst new file mode 100644 index 000000000..54d7b7a0f --- /dev/null +++ b/stock_production_lot_warranty/readme/CREDITS.rst @@ -0,0 +1,4 @@ +This module has been financially supported by: + +* Pavlov Media +* Open Source Integrators diff --git a/stock_production_lot_warranty/readme/DESCRIPTION.rst b/stock_production_lot_warranty/readme/DESCRIPTION.rst new file mode 100644 index 000000000..c3ceb9edb --- /dev/null +++ b/stock_production_lot_warranty/readme/DESCRIPTION.rst @@ -0,0 +1,4 @@ +Odoo does not provide the warranty information on the serial number of a product. + +This module allows you to compute the warranty expiration date of a serialized +product based on the warranty duration. diff --git a/stock_production_lot_warranty/readme/USAGE.rst b/stock_production_lot_warranty/readme/USAGE.rst new file mode 100644 index 000000000..3bcbead51 --- /dev/null +++ b/stock_production_lot_warranty/readme/USAGE.rst @@ -0,0 +1,7 @@ +To use this module, + +* Go to Inventory > Master Data > Lot/Serial Numbers +* Create a new serial number and select a product +* The Warranty Expiration Date is automatically computed based on today + the + warranty duration from the select product +* You can overwrite the computed date with your own value. diff --git a/stock_production_lot_warranty/views/stock_production_lot.xml b/stock_production_lot_warranty/views/stock_production_lot.xml new file mode 100644 index 000000000..37dcab837 --- /dev/null +++ b/stock_production_lot_warranty/views/stock_production_lot.xml @@ -0,0 +1,15 @@ + + + + + stock.production.lot + + + + + + + + + From 2a402c5cab358a362d1965bec0a0d4b64666ff53 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 15 Jan 2019 15:45:19 +0000 Subject: [PATCH 02/21] [UPD] README.rst --- stock_production_lot_warranty/README.rst | 130 ++++- .../static/description/index.html | 458 ++++++++++++++++++ 2 files changed, 572 insertions(+), 16 deletions(-) create mode 100644 stock_production_lot_warranty/static/description/index.html diff --git a/stock_production_lot_warranty/README.rst b/stock_production_lot_warranty/README.rst index 21cd7854d..2b4d00d28 100644 --- a/stock_production_lot_warranty/README.rst +++ b/stock_production_lot_warranty/README.rst @@ -1,21 +1,119 @@ -**This file is going to be generated by oca-gen-addon-readme.** +=================================== +Warranty Date on Lot/Serial Numbers +=================================== -*Manual changes will be overwritten.* +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -Please provide content in the ``readme`` directory: +.. |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%2Frma-lightgray.png?logo=github + :target: https://github.com/OCA/rma/tree/11.0/stock_production_lot_warranty + :alt: OCA/rma +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/rma-11-0/rma-11-0-stock_production_lot_warranty + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/145/11.0 + :alt: Try me on Runbot -* **DESCRIPTION.rst** (required) -* INSTALL.rst (optional) -* CONFIGURE.rst (optional) -* **USAGE.rst** (optional, highly recommended) -* DEVELOP.rst (optional) -* ROADMAP.rst (optional) -* HISTORY.rst (optional, recommended) -* **CONTRIBUTORS.rst** (optional, highly recommended) -* CREDITS.rst (optional) +|badge1| |badge2| |badge3| |badge4| |badge5| -Content of this README will also be drawn from the addon manifest, -from keys such as name, authors, maintainers, development_status, -and license. +Odoo does not provide the warranty information on the serial number of a product. -A good, one sentence summary in the manifest is also highly recommended. +This module allows you to compute the warranty expiration date of a serialized +product based on the warranty duration. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +To configure this module: + +* Go to Inventory > Configuration > Settings +* Activate the traceability +* Go to Inventory > Master Data > Products +* Create or select a product and set the warranty +* Go to the Inventory tab in the Logistics section +* Set the warranty duration + +Usage +===== + +To use this module, + +* Go to Inventory > Master Data > Lot/Serial Numbers +* Create a new serial number and select a product +* The Warranty Expiration Date is automatically computed based on today + the + warranty duration from the select product +* You can overwrite the computed date with your own value. + +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 +~~~~~~~ + +* Open Source Integrators + +Contributors +~~~~~~~~~~~~ + +* Steve Campbell +* Maxime Chambreuil + +Other credits +~~~~~~~~~~~~~ + +This module has been financially supported by: + +* Pavlov Media +* Open Source Integrators + +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-osi-scampbell| image:: https://github.com/osi-scampbell.png?size=40px + :target: https://github.com/osi-scampbell + :alt: osi-scampbell +.. |maintainer-max3903| image:: https://github.com/max3903.png?size=40px + :target: https://github.com/max3903 + :alt: max3903 + +Current `maintainers `__: + +|maintainer-osi-scampbell| |maintainer-max3903| + +This module is part of the `OCA/rma `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/stock_production_lot_warranty/static/description/index.html b/stock_production_lot_warranty/static/description/index.html new file mode 100644 index 000000000..35f071e88 --- /dev/null +++ b/stock_production_lot_warranty/static/description/index.html @@ -0,0 +1,458 @@ + + + + + + +Warranty Date on Lot/Serial Numbers + + + +
+

Warranty Date on Lot/Serial Numbers

+ + +

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

+

Odoo does not provide the warranty information on the serial number of a product.

+

This module allows you to compute the warranty expiration date of a serialized +product based on the warranty duration.

+

Table of contents

+ +
+

Configuration

+

To configure this module:

+
    +
  • Go to Inventory > Configuration > Settings
  • +
  • Activate the traceability
  • +
  • Go to Inventory > Master Data > Products
  • +
  • Create or select a product and set the warranty
  • +
  • Go to the Inventory tab in the Logistics section
  • +
  • Set the warranty duration
  • +
+
+
+

Usage

+

To use this module,

+
    +
  • Go to Inventory > Master Data > Lot/Serial Numbers
  • +
  • Create a new serial number and select a product
  • +
  • The Warranty Expiration Date is automatically computed based on today + the +warranty duration from the select product
  • +
  • You can overwrite the computed date with your own value.
  • +
+
+
+

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

+
    +
  • Open Source Integrators
  • +
+
+ +
+

Other credits

+

This module has been financially supported by:

+ +
+
+

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:

+

osi-scampbell max3903

+

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

+

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

+
+
+
+ + From 016d41532e05eea8803901eb9d7c8fd8b9ce2763 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 3 Apr 2019 03:17:55 +0000 Subject: [PATCH 03/21] [ADD] icon.png --- .../static/description/icon.png | Bin 0 -> 9455 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 stock_production_lot_warranty/static/description/icon.png diff --git a/stock_production_lot_warranty/static/description/icon.png b/stock_production_lot_warranty/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 From ce805c6773d91f3cf124cb4b512a9d89c3a4235d Mon Sep 17 00:00:00 2001 From: Murtuza Saleh Date: Tue, 23 Apr 2019 15:05:04 +0530 Subject: [PATCH 04/21] [WIP][MIG][12.0] stock_production_lot_warranty --- stock_production_lot_warranty/README.rst | 9 ++-- stock_production_lot_warranty/__manifest__.py | 4 +- .../models/__init__.py | 1 - .../models/stock_production_lot.py | 52 +++++++++++-------- .../readme/CONTRIBUTORS.rst | 1 + .../static/description/index.html | 5 +- .../views/stock_production_lot.xml | 4 +- 7 files changed, 43 insertions(+), 33 deletions(-) diff --git a/stock_production_lot_warranty/README.rst b/stock_production_lot_warranty/README.rst index 2b4d00d28..118fb89e6 100644 --- a/stock_production_lot_warranty/README.rst +++ b/stock_production_lot_warranty/README.rst @@ -14,13 +14,13 @@ Warranty Date on Lot/Serial Numbers :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Frma-lightgray.png?logo=github - :target: https://github.com/OCA/rma/tree/11.0/stock_production_lot_warranty + :target: https://github.com/OCA/rma/tree/12.0/stock_production_lot_warranty :alt: OCA/rma .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/rma-11-0/rma-11-0-stock_production_lot_warranty + :target: https://translation.odoo-community.org/projects/rma-12-0/rma-12-0-stock_production_lot_warranty :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/145/11.0 + :target: https://runbot.odoo-community.org/runbot/145/12.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -81,6 +81,7 @@ Contributors * Steve Campbell * Maxime Chambreuil +* Serpent Consulting Services Pvt. Ltd. Other credits ~~~~~~~~~~~~~ @@ -114,6 +115,6 @@ Current `maintainers `__: |maintainer-osi-scampbell| |maintainer-max3903| -This module is part of the `OCA/rma `_ project on GitHub. +This module is part of the `OCA/rma `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/stock_production_lot_warranty/__manifest__.py b/stock_production_lot_warranty/__manifest__.py index e585d1bf0..f78add05f 100644 --- a/stock_production_lot_warranty/__manifest__.py +++ b/stock_production_lot_warranty/__manifest__.py @@ -4,7 +4,7 @@ { 'name': 'Warranty Date on Lot/Serial Numbers', 'summary': 'Add warranty date to stock production lot', - 'version': '11.0.0.0.1', + 'version': '12.0.1.0.0', 'license': 'AGPL-3', 'author': 'Open Source Integrators, Odoo Community Association (OCA)', 'category': 'Stock', @@ -16,7 +16,7 @@ 'data': [ 'views/stock_production_lot.xml', ], - 'application': False, + 'installable': True, 'development_status': 'Beta', 'maintainers': [ 'osi-scampbell', diff --git a/stock_production_lot_warranty/models/__init__.py b/stock_production_lot_warranty/models/__init__.py index 45eb3ad2b..3e187a924 100644 --- a/stock_production_lot_warranty/models/__init__.py +++ b/stock_production_lot_warranty/models/__init__.py @@ -1,4 +1,3 @@ -# Copyright (C) 2018 - TODAY, Open Source Integrators # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from . import ( diff --git a/stock_production_lot_warranty/models/stock_production_lot.py b/stock_production_lot_warranty/models/stock_production_lot.py index 7fa366611..ddb58d5df 100644 --- a/stock_production_lot_warranty/models/stock_production_lot.py +++ b/stock_production_lot_warranty/models/stock_production_lot.py @@ -1,9 +1,10 @@ # Copyright (C) 2018 - TODAY, Open Source Integrators # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import fields, models, api -from dateutil.relativedelta import relativedelta from datetime import datetime, timedelta +from dateutil.relativedelta import relativedelta +from odoo import api, fields, models +from odoo.tools import DEFAULT_SERVER_DATE_FORMAT class StockProductionLot(models.Model): @@ -13,24 +14,29 @@ class StockProductionLot(models.Model): @api.onchange('product_id') def _onchange_product_id(self): - if self.product_id: - if (self.product_id.product_tmpl_id.warranty_type and - self.product_id.product_tmpl_id.warranty): - today_date = datetime.now() - if self.product_id.product_tmpl_id.warranty_type == 'day': - time = (today_date + - timedelta(days=self.product_id. - product_tmpl_id.warranty)) - elif self.product_id.product_tmpl_id.warranty_type == 'week': - time = (today_date + - timedelta(weeks=self.product_id. - product_tmpl_id.warranty)) - elif self.product_id.product_tmpl_id.warranty_type == 'month': - time = (today_date + - relativedelta(months=+self.product_id. - product_tmpl_id.warranty)) - elif self.product_id.product_tmpl_id.warranty_type == 'year': - time = (today_date + - relativedelta(years=+self.product_id. - product_tmpl_id.warranty)) - self.warranty_exp_date = time + self.warranty_exp_date = False + if self.product_id and \ + self.product_id.product_tmpl_id.warranty_type and \ + self.product_id.product_tmpl_id.warranty: + warranty_type = self.product_id.product_tmpl_id.warranty_type + if warranty_type == 'day': + time = (datetime.now() + + timedelta(days=self.product_id. + product_tmpl_id.warranty)).strftime( + DEFAULT_SERVER_DATE_FORMAT) + elif warranty_type == 'week': + time = (datetime.now() + + timedelta(weeks=self.product_id. + product_tmpl_id.warranty)).strftime( + DEFAULT_SERVER_DATE_FORMAT) + elif warranty_type == 'month': + time = (datetime.now() + + relativedelta(months=+self.product_id. + product_tmpl_id.warranty)).strftime( + DEFAULT_SERVER_DATE_FORMAT) + elif warranty_type == 'year': + time = (datetime.now() + + relativedelta(years=+self.product_id. + product_tmpl_id.warranty)).strftime( + DEFAULT_SERVER_DATE_FORMAT) + self.warranty_exp_date = time diff --git a/stock_production_lot_warranty/readme/CONTRIBUTORS.rst b/stock_production_lot_warranty/readme/CONTRIBUTORS.rst index 484c2429b..d2767f989 100644 --- a/stock_production_lot_warranty/readme/CONTRIBUTORS.rst +++ b/stock_production_lot_warranty/readme/CONTRIBUTORS.rst @@ -1,2 +1,3 @@ * Steve Campbell * Maxime Chambreuil +* Serpent Consulting Services Pvt. Ltd. diff --git a/stock_production_lot_warranty/static/description/index.html b/stock_production_lot_warranty/static/description/index.html index 35f071e88..02c6ce00e 100644 --- a/stock_production_lot_warranty/static/description/index.html +++ b/stock_production_lot_warranty/static/description/index.html @@ -367,7 +367,7 @@

Warranty Date on Lot/Serial Numbers

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

Odoo does not provide the warranty information on the serial number of a product.

This module allows you to compute the warranty expiration date of a serialized product based on the warranty duration.

@@ -430,6 +430,7 @@

Contributors

@@ -449,7 +450,7 @@

Maintainers

promote its widespread use.

Current maintainers:

osi-scampbell max3903

-

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

+

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

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

diff --git a/stock_production_lot_warranty/views/stock_production_lot.xml b/stock_production_lot_warranty/views/stock_production_lot.xml index 37dcab837..f8e4939b4 100644 --- a/stock_production_lot_warranty/views/stock_production_lot.xml +++ b/stock_production_lot_warranty/views/stock_production_lot.xml @@ -1,4 +1,4 @@ - + @@ -7,7 +7,9 @@ + + From 5485a5505a95964f167bb128a544cff1c8cd685d Mon Sep 17 00:00:00 2001 From: oca-travis Date: Mon, 22 Jun 2020 16:11:00 +0000 Subject: [PATCH 05/21] [UPD] Update stock_production_lot_warranty.pot --- .../i18n/stock_production_lot_warranty.pot | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 stock_production_lot_warranty/i18n/stock_production_lot_warranty.pot diff --git a/stock_production_lot_warranty/i18n/stock_production_lot_warranty.pot b/stock_production_lot_warranty/i18n/stock_production_lot_warranty.pot new file mode 100644 index 000000000..664764c94 --- /dev/null +++ b/stock_production_lot_warranty/i18n/stock_production_lot_warranty.pot @@ -0,0 +1,25 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_production_lot_warranty +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.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: stock_production_lot_warranty +#: model:ir.model,name:stock_production_lot_warranty.model_stock_production_lot +msgid "Lot/Serial" +msgstr "" + +#. module: stock_production_lot_warranty +#: model:ir.model.fields,field_description:stock_production_lot_warranty.field_stock_production_lot__warranty_exp_date +msgid "Warranty Expiration Date" +msgstr "" + From 0f123c8d16bcc844bbf96684ce3786f31b118515 Mon Sep 17 00:00:00 2001 From: Fernando Colus Date: Wed, 22 Jul 2020 16:46:31 +0000 Subject: [PATCH 06/21] Added translation using Weblate (Portuguese (Brazil)) --- stock_production_lot_warranty/i18n/pt_BR.po | 25 +++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 stock_production_lot_warranty/i18n/pt_BR.po diff --git a/stock_production_lot_warranty/i18n/pt_BR.po b/stock_production_lot_warranty/i18n/pt_BR.po new file mode 100644 index 000000000..e0cd499ca --- /dev/null +++ b/stock_production_lot_warranty/i18n/pt_BR.po @@ -0,0 +1,25 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_production_lot_warranty +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: pt_BR\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: stock_production_lot_warranty +#: model:ir.model,name:stock_production_lot_warranty.model_stock_production_lot +msgid "Lot/Serial" +msgstr "" + +#. module: stock_production_lot_warranty +#: model:ir.model.fields,field_description:stock_production_lot_warranty.field_stock_production_lot__warranty_exp_date +msgid "Warranty Expiration Date" +msgstr "" From b4a2432f021bceecd7b482f13d714fbf310a8e61 Mon Sep 17 00:00:00 2001 From: Fernando Colus Date: Wed, 22 Jul 2020 16:46:46 +0000 Subject: [PATCH 07/21] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (2 of 2 strings) Translation: rma-12.0/rma-12.0-stock_production_lot_warranty Translate-URL: https://translation.odoo-community.org/projects/rma-12-0/rma-12-0-stock_production_lot_warranty/pt_BR/ --- stock_production_lot_warranty/i18n/pt_BR.po | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/stock_production_lot_warranty/i18n/pt_BR.po b/stock_production_lot_warranty/i18n/pt_BR.po index e0cd499ca..cd8e0d94b 100644 --- a/stock_production_lot_warranty/i18n/pt_BR.po +++ b/stock_production_lot_warranty/i18n/pt_BR.po @@ -6,20 +6,22 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2020-07-22 18:19+0000\n" +"Last-Translator: Fernando Colus \n" "Language-Team: none\n" "Language: pt_BR\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" +"X-Generator: Weblate 3.10\n" #. module: stock_production_lot_warranty #: model:ir.model,name:stock_production_lot_warranty.model_stock_production_lot msgid "Lot/Serial" -msgstr "" +msgstr "Lote/Serial" #. module: stock_production_lot_warranty #: model:ir.model.fields,field_description:stock_production_lot_warranty.field_stock_production_lot__warranty_exp_date msgid "Warranty Expiration Date" -msgstr "" +msgstr "Data de Término da Garantia" From 369d736bc285a8fa479accc4d8ff0e955094b20f Mon Sep 17 00:00:00 2001 From: Pedro Castro Silva Date: Thu, 11 Mar 2021 18:38:11 +0000 Subject: [PATCH 08/21] Added translation using Weblate (Portuguese) --- stock_production_lot_warranty/i18n/pt.po | 25 ++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 stock_production_lot_warranty/i18n/pt.po diff --git a/stock_production_lot_warranty/i18n/pt.po b/stock_production_lot_warranty/i18n/pt.po new file mode 100644 index 000000000..3613f9ea1 --- /dev/null +++ b/stock_production_lot_warranty/i18n/pt.po @@ -0,0 +1,25 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_production_lot_warranty +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: pt\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: stock_production_lot_warranty +#: model:ir.model,name:stock_production_lot_warranty.model_stock_production_lot +msgid "Lot/Serial" +msgstr "" + +#. module: stock_production_lot_warranty +#: model:ir.model.fields,field_description:stock_production_lot_warranty.field_stock_production_lot__warranty_exp_date +msgid "Warranty Expiration Date" +msgstr "" From 73878b2596225e9476a5d973ef50822cd712b535 Mon Sep 17 00:00:00 2001 From: Pedro Castro Silva Date: Thu, 11 Mar 2021 18:38:50 +0000 Subject: [PATCH 09/21] Translated using Weblate (Portuguese) Currently translated at 100.0% (2 of 2 strings) Translation: rma-12.0/rma-12.0-stock_production_lot_warranty Translate-URL: https://translation.odoo-community.org/projects/rma-12-0/rma-12-0-stock_production_lot_warranty/pt/ --- stock_production_lot_warranty/i18n/pt.po | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/stock_production_lot_warranty/i18n/pt.po b/stock_production_lot_warranty/i18n/pt.po index 3613f9ea1..0a2ca040a 100644 --- a/stock_production_lot_warranty/i18n/pt.po +++ b/stock_production_lot_warranty/i18n/pt.po @@ -6,20 +6,22 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2021-03-11 20:45+0000\n" +"Last-Translator: Pedro Castro Silva \n" "Language-Team: none\n" "Language: pt\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" +"X-Generator: Weblate 4.3.2\n" #. module: stock_production_lot_warranty #: model:ir.model,name:stock_production_lot_warranty.model_stock_production_lot msgid "Lot/Serial" -msgstr "" +msgstr "Lote/Série" #. module: stock_production_lot_warranty #: model:ir.model.fields,field_description:stock_production_lot_warranty.field_stock_production_lot__warranty_exp_date msgid "Warranty Expiration Date" -msgstr "" +msgstr "Data de Expiração da Garantia" From d42c06da486ac1becf2310f6fcb3aadb18d1fc38 Mon Sep 17 00:00:00 2001 From: Chanakya Soni Date: Wed, 16 Jun 2021 19:44:35 +0530 Subject: [PATCH 10/21] [14.0][FIX] Travis. --- stock_production_lot_warranty/__manifest__.py | 36 ++++++------ .../models/__init__.py | 4 +- .../models/stock_production_lot.py | 56 ++++++++++--------- .../views/stock_production_lot.xml | 9 ++- 4 files changed, 53 insertions(+), 52 deletions(-) diff --git a/stock_production_lot_warranty/__manifest__.py b/stock_production_lot_warranty/__manifest__.py index f78add05f..c6c30bebe 100644 --- a/stock_production_lot_warranty/__manifest__.py +++ b/stock_production_lot_warranty/__manifest__.py @@ -2,24 +2,24 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { - 'name': 'Warranty Date on Lot/Serial Numbers', - 'summary': 'Add warranty date to stock production lot', - 'version': '12.0.1.0.0', - 'license': 'AGPL-3', - 'author': 'Open Source Integrators, Odoo Community Association (OCA)', - 'category': 'Stock', - 'website': 'https://github.com/OCA/rma', - 'depends': [ - 'product_warranty', - 'stock', + "name": "Warranty Date on Lot/Serial Numbers", + "summary": "Add warranty date to stock production lot", + "version": "14.0.1.0.0", + "license": "AGPL-3", + "author": "Open Source Integrators, Odoo Community Association (OCA)", + "category": "Stock", + "website": "https://github.com/OCA/rma", + "depends": [ + "product_warranty", + "stock", ], - 'data': [ - 'views/stock_production_lot.xml', + "data": [ + "views/stock_production_lot.xml", + ], + "installable": True, + "development_status": "Beta", + "maintainers": [ + "osi-scampbell", + "max3903", ], - 'installable': True, - 'development_status': 'Beta', - 'maintainers': [ - 'osi-scampbell', - 'max3903', - ] } diff --git a/stock_production_lot_warranty/models/__init__.py b/stock_production_lot_warranty/models/__init__.py index 3e187a924..dad7ec540 100644 --- a/stock_production_lot_warranty/models/__init__.py +++ b/stock_production_lot_warranty/models/__init__.py @@ -1,5 +1,3 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from . import ( - stock_production_lot -) +from . import stock_production_lot diff --git a/stock_production_lot_warranty/models/stock_production_lot.py b/stock_production_lot_warranty/models/stock_production_lot.py index ddb58d5df..aa5a80735 100644 --- a/stock_production_lot_warranty/models/stock_production_lot.py +++ b/stock_production_lot_warranty/models/stock_production_lot.py @@ -2,41 +2,45 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from datetime import datetime, timedelta + from dateutil.relativedelta import relativedelta + from odoo import api, fields, models from odoo.tools import DEFAULT_SERVER_DATE_FORMAT class StockProductionLot(models.Model): - _inherit = 'stock.production.lot' + _inherit = "stock.production.lot" - warranty_exp_date = fields.Date(string='Warranty Expiration Date') + warranty_exp_date = fields.Date(string="Warranty Expiration Date") - @api.onchange('product_id') + @api.onchange("product_id") def _onchange_product_id(self): self.warranty_exp_date = False - if self.product_id and \ - self.product_id.product_tmpl_id.warranty_type and \ - self.product_id.product_tmpl_id.warranty: + if ( + self.product_id + and self.product_id.product_tmpl_id.warranty_type + and self.product_id.product_tmpl_id.warranty + ): warranty_type = self.product_id.product_tmpl_id.warranty_type - if warranty_type == 'day': - time = (datetime.now() + - timedelta(days=self.product_id. - product_tmpl_id.warranty)).strftime( - DEFAULT_SERVER_DATE_FORMAT) - elif warranty_type == 'week': - time = (datetime.now() + - timedelta(weeks=self.product_id. - product_tmpl_id.warranty)).strftime( - DEFAULT_SERVER_DATE_FORMAT) - elif warranty_type == 'month': - time = (datetime.now() + - relativedelta(months=+self.product_id. - product_tmpl_id.warranty)).strftime( - DEFAULT_SERVER_DATE_FORMAT) - elif warranty_type == 'year': - time = (datetime.now() + - relativedelta(years=+self.product_id. - product_tmpl_id.warranty)).strftime( - DEFAULT_SERVER_DATE_FORMAT) + if warranty_type == "day": + time = ( + datetime.now() + + timedelta(days=self.product_id.product_tmpl_id.warranty) + ).strftime(DEFAULT_SERVER_DATE_FORMAT) + elif warranty_type == "week": + time = ( + datetime.now() + + timedelta(weeks=self.product_id.product_tmpl_id.warranty) + ).strftime(DEFAULT_SERVER_DATE_FORMAT) + elif warranty_type == "month": + time = ( + datetime.now() + + relativedelta(months=+self.product_id.product_tmpl_id.warranty) + ).strftime(DEFAULT_SERVER_DATE_FORMAT) + elif warranty_type == "year": + time = ( + datetime.now() + + relativedelta(years=+self.product_id.product_tmpl_id.warranty) + ).strftime(DEFAULT_SERVER_DATE_FORMAT) self.warranty_exp_date = time diff --git a/stock_production_lot_warranty/views/stock_production_lot.xml b/stock_production_lot_warranty/views/stock_production_lot.xml index f8e4939b4..b83f2f3a8 100644 --- a/stock_production_lot_warranty/views/stock_production_lot.xml +++ b/stock_production_lot_warranty/views/stock_production_lot.xml @@ -1,14 +1,13 @@ - + stock.production.lot - + - + - + From 195ce938063e29170b9e3eaf7afc9288481f7e0e Mon Sep 17 00:00:00 2001 From: Chanakya Soni Date: Wed, 16 Jun 2021 19:49:06 +0530 Subject: [PATCH 11/21] [14.0][MIG] stock_production_lot_warranty. --- stock_production_lot_warranty/__manifest__.py | 15 ++++-------- stock_production_lot_warranty/i18n/pt.po | 2 +- stock_production_lot_warranty/i18n/pt_BR.po | 2 +- .../i18n/stock_production_lot_warranty.pot | 2 +- .../models/__init__.py | 1 - .../models/stock_production_lot.py | 2 ++ .../tests/__init__.py | 4 ++++ .../tests/test_product_lot_warranty.py | 24 +++++++++++++++++++ 8 files changed, 37 insertions(+), 15 deletions(-) create mode 100644 stock_production_lot_warranty/tests/__init__.py create mode 100644 stock_production_lot_warranty/tests/test_product_lot_warranty.py diff --git a/stock_production_lot_warranty/__manifest__.py b/stock_production_lot_warranty/__manifest__.py index c6c30bebe..f8e310f3a 100644 --- a/stock_production_lot_warranty/__manifest__.py +++ b/stock_production_lot_warranty/__manifest__.py @@ -1,4 +1,5 @@ # Copyright (C) 2018 - TODAY, Open Source Integrators +# Copyright (C) 2021 Serpent Consulting Services # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { @@ -9,17 +10,9 @@ "author": "Open Source Integrators, Odoo Community Association (OCA)", "category": "Stock", "website": "https://github.com/OCA/rma", - "depends": [ - "product_warranty", - "stock", - ], - "data": [ - "views/stock_production_lot.xml", - ], + "depends": ["product_warranty", "stock"], + "data": ["views/stock_production_lot.xml"], "installable": True, "development_status": "Beta", - "maintainers": [ - "osi-scampbell", - "max3903", - ], + "maintainers": ["osi-scampbell", "max3903"], } diff --git a/stock_production_lot_warranty/i18n/pt.po b/stock_production_lot_warranty/i18n/pt.po index 0a2ca040a..2287256de 100644 --- a/stock_production_lot_warranty/i18n/pt.po +++ b/stock_production_lot_warranty/i18n/pt.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 12.0\n" +"Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: 2021-03-11 20:45+0000\n" "Last-Translator: Pedro Castro Silva \n" diff --git a/stock_production_lot_warranty/i18n/pt_BR.po b/stock_production_lot_warranty/i18n/pt_BR.po index cd8e0d94b..79b108816 100644 --- a/stock_production_lot_warranty/i18n/pt_BR.po +++ b/stock_production_lot_warranty/i18n/pt_BR.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 12.0\n" +"Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: 2020-07-22 18:19+0000\n" "Last-Translator: Fernando Colus \n" diff --git a/stock_production_lot_warranty/i18n/stock_production_lot_warranty.pot b/stock_production_lot_warranty/i18n/stock_production_lot_warranty.pot index 664764c94..341d85f5a 100644 --- a/stock_production_lot_warranty/i18n/stock_production_lot_warranty.pot +++ b/stock_production_lot_warranty/i18n/stock_production_lot_warranty.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 12.0\n" +"Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: <>\n" "Language-Team: \n" diff --git a/stock_production_lot_warranty/models/__init__.py b/stock_production_lot_warranty/models/__init__.py index dad7ec540..d45f1fe83 100644 --- a/stock_production_lot_warranty/models/__init__.py +++ b/stock_production_lot_warranty/models/__init__.py @@ -1,3 +1,2 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). - from . import stock_production_lot diff --git a/stock_production_lot_warranty/models/stock_production_lot.py b/stock_production_lot_warranty/models/stock_production_lot.py index aa5a80735..2d2c46440 100644 --- a/stock_production_lot_warranty/models/stock_production_lot.py +++ b/stock_production_lot_warranty/models/stock_production_lot.py @@ -1,4 +1,5 @@ # Copyright (C) 2018 - TODAY, Open Source Integrators +# Copyright (C) 2021 Serpent Consulting Services # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from datetime import datetime, timedelta @@ -23,6 +24,7 @@ def _onchange_product_id(self): and self.product_id.product_tmpl_id.warranty ): warranty_type = self.product_id.product_tmpl_id.warranty_type + time = False if warranty_type == "day": time = ( datetime.now() diff --git a/stock_production_lot_warranty/tests/__init__.py b/stock_production_lot_warranty/tests/__init__.py new file mode 100644 index 000000000..01c923daa --- /dev/null +++ b/stock_production_lot_warranty/tests/__init__.py @@ -0,0 +1,4 @@ +# Copyright (C) 2021 Open Source Integrators +# Copyright (C) 2021 Serpent Consulting Services +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from . import test_product_lot_warranty diff --git a/stock_production_lot_warranty/tests/test_product_lot_warranty.py b/stock_production_lot_warranty/tests/test_product_lot_warranty.py new file mode 100644 index 000000000..f386f6ca5 --- /dev/null +++ b/stock_production_lot_warranty/tests/test_product_lot_warranty.py @@ -0,0 +1,24 @@ +# Copyright (C) 2021 Open Source Integrators +# Copyright (C) 2021 Serpent Consulting Services +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from odoo.tests import common +from datetime import datetime, timedelta + + +class TestProductLotWarranty(common.TransactionCase): + def test_productlot_warranty(self): + company1 = self.env["res.company"].create({ + "name": "Test company1" + }) + product1 = self.env["product.product"].create({ + "name": "TestProduct", + "warranty_type": "day", + "warranty": 5, + }) + production_lot = self.env["stock.production.lot"].create({ + "product_id": product1.id, + "company_id": company1.id + }) + production_lot._onchange_product_id() + self.assertEqual(production_lot.warranty_exp_date, + (datetime.now() + timedelta(days=5)).date()) From c08e644be88cb5a20a71c98e4c470f39363483df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Alix?= Date: Fri, 22 Jul 2022 10:38:26 +0200 Subject: [PATCH 12/21] [IMP] stock_production_lot_warranty: black, isort, prettier --- .../tests/test_product_lot_warranty.py | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/stock_production_lot_warranty/tests/test_product_lot_warranty.py b/stock_production_lot_warranty/tests/test_product_lot_warranty.py index f386f6ca5..fa665cf3b 100644 --- a/stock_production_lot_warranty/tests/test_product_lot_warranty.py +++ b/stock_production_lot_warranty/tests/test_product_lot_warranty.py @@ -1,24 +1,26 @@ # Copyright (C) 2021 Open Source Integrators # Copyright (C) 2021 Serpent Consulting Services # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo.tests import common from datetime import datetime, timedelta +from odoo.tests import common + class TestProductLotWarranty(common.TransactionCase): def test_productlot_warranty(self): - company1 = self.env["res.company"].create({ - "name": "Test company1" - }) - product1 = self.env["product.product"].create({ - "name": "TestProduct", - "warranty_type": "day", - "warranty": 5, - }) - production_lot = self.env["stock.production.lot"].create({ - "product_id": product1.id, - "company_id": company1.id - }) + company1 = self.env["res.company"].create({"name": "Test company1"}) + product1 = self.env["product.product"].create( + { + "name": "TestProduct", + "warranty_type": "day", + "warranty": 5, + } + ) + production_lot = self.env["stock.production.lot"].create( + {"product_id": product1.id, "company_id": company1.id} + ) production_lot._onchange_product_id() - self.assertEqual(production_lot.warranty_exp_date, - (datetime.now() + timedelta(days=5)).date()) + self.assertEqual( + production_lot.warranty_exp_date, + (datetime.now() + timedelta(days=5)).date(), + ) From 86cccdc5325c6274605c46852d8c752e3ad57a66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Alix?= Date: Fri, 22 Jul 2022 10:46:26 +0200 Subject: [PATCH 13/21] [MIG] stock_production_lot_warranty: Migration to 15.0 --- stock_production_lot_warranty/__manifest__.py | 2 +- stock_production_lot_warranty/readme/CONFIGURE.rst | 2 +- stock_production_lot_warranty/readme/USAGE.rst | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/stock_production_lot_warranty/__manifest__.py b/stock_production_lot_warranty/__manifest__.py index f8e310f3a..1ade4a9b6 100644 --- a/stock_production_lot_warranty/__manifest__.py +++ b/stock_production_lot_warranty/__manifest__.py @@ -5,7 +5,7 @@ { "name": "Warranty Date on Lot/Serial Numbers", "summary": "Add warranty date to stock production lot", - "version": "14.0.1.0.0", + "version": "15.0.1.0.0", "license": "AGPL-3", "author": "Open Source Integrators, Odoo Community Association (OCA)", "category": "Stock", diff --git a/stock_production_lot_warranty/readme/CONFIGURE.rst b/stock_production_lot_warranty/readme/CONFIGURE.rst index 39a9d0fe2..9be297db0 100644 --- a/stock_production_lot_warranty/readme/CONFIGURE.rst +++ b/stock_production_lot_warranty/readme/CONFIGURE.rst @@ -2,7 +2,7 @@ To configure this module: * Go to Inventory > Configuration > Settings * Activate the traceability -* Go to Inventory > Master Data > Products +* Go to Inventory > Products > Products * Create or select a product and set the warranty * Go to the Inventory tab in the Logistics section * Set the warranty duration diff --git a/stock_production_lot_warranty/readme/USAGE.rst b/stock_production_lot_warranty/readme/USAGE.rst index 3bcbead51..221c994a8 100644 --- a/stock_production_lot_warranty/readme/USAGE.rst +++ b/stock_production_lot_warranty/readme/USAGE.rst @@ -1,6 +1,6 @@ To use this module, -* Go to Inventory > Master Data > Lot/Serial Numbers +* Go to Inventory > Products > Lot/Serial Numbers * Create a new serial number and select a product * The Warranty Expiration Date is automatically computed based on today + the warranty duration from the select product From 40908d4930874f4aa149802b1bbced3f4e1a1c3b Mon Sep 17 00:00:00 2001 From: oca-ci Date: Tue, 26 Jul 2022 07:16:34 +0000 Subject: [PATCH 14/21] [UPD] Update stock_production_lot_warranty.pot --- .../i18n/stock_production_lot_warranty.pot | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/stock_production_lot_warranty/i18n/stock_production_lot_warranty.pot b/stock_production_lot_warranty/i18n/stock_production_lot_warranty.pot index 341d85f5a..83f1fa456 100644 --- a/stock_production_lot_warranty/i18n/stock_production_lot_warranty.pot +++ b/stock_production_lot_warranty/i18n/stock_production_lot_warranty.pot @@ -1,12 +1,12 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * stock_production_lot_warranty +# * stock_production_lot_warranty # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" +"Project-Id-Version: Odoo Server 15.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: <>\n" +"Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,4 +22,3 @@ msgstr "" #: model:ir.model.fields,field_description:stock_production_lot_warranty.field_stock_production_lot__warranty_exp_date msgid "Warranty Expiration Date" msgstr "" - From fab8eaf914e20916e23241cd1d9c3efb50b60cd1 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 26 Jul 2022 07:19:48 +0000 Subject: [PATCH 15/21] [UPD] README.rst --- stock_production_lot_warranty/README.rst | 14 +++++++------- .../static/description/index.html | 10 +++++----- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/stock_production_lot_warranty/README.rst b/stock_production_lot_warranty/README.rst index 118fb89e6..f0fe70b61 100644 --- a/stock_production_lot_warranty/README.rst +++ b/stock_production_lot_warranty/README.rst @@ -14,13 +14,13 @@ Warranty Date on Lot/Serial Numbers :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Frma-lightgray.png?logo=github - :target: https://github.com/OCA/rma/tree/12.0/stock_production_lot_warranty + :target: https://github.com/OCA/rma/tree/15.0/stock_production_lot_warranty :alt: OCA/rma .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/rma-12-0/rma-12-0-stock_production_lot_warranty + :target: https://translation.odoo-community.org/projects/rma-15-0/rma-15-0-stock_production_lot_warranty :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/145/12.0 + :target: https://runbot.odoo-community.org/runbot/145/15.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -42,7 +42,7 @@ To configure this module: * Go to Inventory > Configuration > Settings * Activate the traceability -* Go to Inventory > Master Data > Products +* Go to Inventory > Products > Products * Create or select a product and set the warranty * Go to the Inventory tab in the Logistics section * Set the warranty duration @@ -52,7 +52,7 @@ Usage To use this module, -* Go to Inventory > Master Data > Lot/Serial Numbers +* Go to Inventory > Products > Lot/Serial Numbers * Create a new serial number and select a product * The Warranty Expiration Date is automatically computed based on today + the warranty duration from the select product @@ -64,7 +64,7 @@ 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 `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -115,6 +115,6 @@ Current `maintainers `__: |maintainer-osi-scampbell| |maintainer-max3903| -This module is part of the `OCA/rma `_ project on GitHub. +This module is part of the `OCA/rma `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/stock_production_lot_warranty/static/description/index.html b/stock_production_lot_warranty/static/description/index.html index 02c6ce00e..a8b204142 100644 --- a/stock_production_lot_warranty/static/description/index.html +++ b/stock_production_lot_warranty/static/description/index.html @@ -367,7 +367,7 @@

Warranty Date on Lot/Serial Numbers

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

Odoo does not provide the warranty information on the serial number of a product.

This module allows you to compute the warranty expiration date of a serialized product based on the warranty duration.

@@ -392,7 +392,7 @@

Configuration

  • Go to Inventory > Configuration > Settings
  • Activate the traceability
  • -
  • Go to Inventory > Master Data > Products
  • +
  • Go to Inventory > Products > Products
  • Create or select a product and set the warranty
  • Go to the Inventory tab in the Logistics section
  • Set the warranty duration
  • @@ -402,7 +402,7 @@

    Configuration

    Usage

    To use this module,

      -
    • Go to Inventory > Master Data > Lot/Serial Numbers
    • +
    • Go to Inventory > Products > Lot/Serial Numbers
    • Create a new serial number and select a product
    • The Warranty Expiration Date is automatically computed based on today + the warranty duration from the select product
    • @@ -414,7 +414,7 @@

      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.

      +feedback.

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

      @@ -450,7 +450,7 @@

      Maintainers

      promote its widespread use.

      Current maintainers:

      osi-scampbell max3903

      -

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

      +

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

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

      From dfc3bf6fb74afeb86d540f28a1d46592b358f568 Mon Sep 17 00:00:00 2001 From: Florent Xicluna Date: Wed, 22 Feb 2023 16:34:41 +0100 Subject: [PATCH 16/21] [IMP] stock_production_lot_warranty: re-usable _get_warranty_exp_date --- .../models/stock_production_lot.py | 47 +++++--------- .../tests/test_product_lot_warranty.py | 64 +++++++++++++++++-- 2 files changed, 75 insertions(+), 36 deletions(-) diff --git a/stock_production_lot_warranty/models/stock_production_lot.py b/stock_production_lot_warranty/models/stock_production_lot.py index 2d2c46440..1e1262dfe 100644 --- a/stock_production_lot_warranty/models/stock_production_lot.py +++ b/stock_production_lot_warranty/models/stock_production_lot.py @@ -2,12 +2,11 @@ # Copyright (C) 2021 Serpent Consulting Services # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from datetime import datetime, timedelta - from dateutil.relativedelta import relativedelta from odoo import api, fields, models -from odoo.tools import DEFAULT_SERVER_DATE_FORMAT + +DELTA_TYPES = ("day", "week", "month", "year") class StockProductionLot(models.Model): @@ -15,34 +14,18 @@ class StockProductionLot(models.Model): warranty_exp_date = fields.Date(string="Warranty Expiration Date") + def _get_warranty_exp_date(self, start_date=None): + if not start_date: + start_date = fields.Date.context_today(self) + elif hasattr(start_date, "astimezone"): + # Datetime object, convert to date + start_date = fields.Date.context_today(self, timestamp=start_date) + delta_type = self.product_id.product_tmpl_id.warranty_type + duration = self.product_id.product_tmpl_id.warranty + if not duration or delta_type not in DELTA_TYPES: + return False + return start_date + relativedelta(**{f"{delta_type}s": duration}) + @api.onchange("product_id") def _onchange_product_id(self): - self.warranty_exp_date = False - if ( - self.product_id - and self.product_id.product_tmpl_id.warranty_type - and self.product_id.product_tmpl_id.warranty - ): - warranty_type = self.product_id.product_tmpl_id.warranty_type - time = False - if warranty_type == "day": - time = ( - datetime.now() - + timedelta(days=self.product_id.product_tmpl_id.warranty) - ).strftime(DEFAULT_SERVER_DATE_FORMAT) - elif warranty_type == "week": - time = ( - datetime.now() - + timedelta(weeks=self.product_id.product_tmpl_id.warranty) - ).strftime(DEFAULT_SERVER_DATE_FORMAT) - elif warranty_type == "month": - time = ( - datetime.now() - + relativedelta(months=+self.product_id.product_tmpl_id.warranty) - ).strftime(DEFAULT_SERVER_DATE_FORMAT) - elif warranty_type == "year": - time = ( - datetime.now() - + relativedelta(years=+self.product_id.product_tmpl_id.warranty) - ).strftime(DEFAULT_SERVER_DATE_FORMAT) - self.warranty_exp_date = time + self.warranty_exp_date = self._get_warranty_exp_date() diff --git a/stock_production_lot_warranty/tests/test_product_lot_warranty.py b/stock_production_lot_warranty/tests/test_product_lot_warranty.py index fa665cf3b..620c0b1dc 100644 --- a/stock_production_lot_warranty/tests/test_product_lot_warranty.py +++ b/stock_production_lot_warranty/tests/test_product_lot_warranty.py @@ -3,24 +3,80 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from datetime import datetime, timedelta +import psycopg2 + from odoo.tests import common class TestProductLotWarranty(common.TransactionCase): - def test_productlot_warranty(self): - company1 = self.env["res.company"].create({"name": "Test company1"}) - product1 = self.env["product.product"].create( + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.company1 = cls.env["res.company"].create({"name": "Test company1"}) + cls.product1 = cls.env["product.product"].create( { "name": "TestProduct", "warranty_type": "day", "warranty": 5, } ) + + def test_productlot_warranty(self): production_lot = self.env["stock.production.lot"].create( - {"product_id": product1.id, "company_id": company1.id} + {"product_id": self.product1.id, "company_id": self.company1.id} ) production_lot._onchange_product_id() self.assertEqual( production_lot.warranty_exp_date, (datetime.now() + timedelta(days=5)).date(), ) + + def test_productlot_no_product(self): + # s.p.lot "product_id" is required=True + with self.assertRaises(psycopg2.IntegrityError): + self.env["stock.production.lot"].create( + {"product_id": False, "company_id": self.company1.id} + ) + + def test_productlot_no_warranty_type(self): + # product.template "warranty_type" is required=True + with self.assertRaises(psycopg2.IntegrityError): + self.env["product.product"].create( + { + "name": "TestProduct", + "warranty_type": False, + "warranty": 5, + } + ) + + def test_productlot_no_warranty(self): + product2 = self.env["product.product"].create( + { + "name": "TestProduct", + "warranty_type": "week", + "warranty": 0, + } + ) + production_lot = self.env["stock.production.lot"].create( + {"product_id": product2.id, "company_id": self.company1.id} + ) + production_lot._onchange_product_id() + self.assertFalse(production_lot.warranty_exp_date) + + def test_get_warranty_exp_date(self): + production_lot = self.env["stock.production.lot"].create( + {"product_id": self.product1.id, "company_id": self.company1.id} + ) + timestamp = datetime.now() - timedelta(days=3) + self.assertEqual( + production_lot._get_warranty_exp_date(), + (datetime.now() + timedelta(days=5)).date(), + ) + self.assertEqual( + production_lot._get_warranty_exp_date(timestamp), + (datetime.now() + timedelta(days=2)).date(), + ) + self.assertEqual( + production_lot._get_warranty_exp_date(timestamp.date()), + (datetime.now() + timedelta(days=2)).date(), + ) From 33d0ffc211c8694ad7ed1906a1bfa99c7f0da50f Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 3 Jul 2023 08:28:57 +0000 Subject: [PATCH 17/21] stock_production_lot_warranty 15.0.1.1.0 --- stock_production_lot_warranty/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stock_production_lot_warranty/__manifest__.py b/stock_production_lot_warranty/__manifest__.py index 1ade4a9b6..ac2ceadfe 100644 --- a/stock_production_lot_warranty/__manifest__.py +++ b/stock_production_lot_warranty/__manifest__.py @@ -5,7 +5,7 @@ { "name": "Warranty Date on Lot/Serial Numbers", "summary": "Add warranty date to stock production lot", - "version": "15.0.1.0.0", + "version": "15.0.1.1.0", "license": "AGPL-3", "author": "Open Source Integrators, Odoo Community Association (OCA)", "category": "Stock", From aa4802354b9c01a5567332813ba9ae25aaca6af0 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sun, 3 Sep 2023 16:05:39 +0000 Subject: [PATCH 18/21] [UPD] README.rst --- stock_production_lot_warranty/README.rst | 15 +++--- .../static/description/index.html | 48 ++++++++++--------- 2 files changed, 34 insertions(+), 29 deletions(-) diff --git a/stock_production_lot_warranty/README.rst b/stock_production_lot_warranty/README.rst index f0fe70b61..ebba2a26d 100644 --- a/stock_production_lot_warranty/README.rst +++ b/stock_production_lot_warranty/README.rst @@ -2,10 +2,13 @@ Warranty Date on Lot/Serial Numbers =================================== -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:d6965242ba21cd047683380ad7586c6f7e079d0d79f794726198d318c6a5fe08 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Warranty Date on Lot/Serial Numbers .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/rma-15-0/rma-15-0-stock_production_lot_warranty :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/145/15.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/rma&target_branch=15.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| Odoo does not provide the warranty information on the serial number of a product. @@ -63,7 +66,7 @@ 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 +If you spotted it first, help us to smash it by providing a detailed and welcomed `feedback `_. Do not contact contributors directly about support or help with technical issues. diff --git a/stock_production_lot_warranty/static/description/index.html b/stock_production_lot_warranty/static/description/index.html index a8b204142..8979e5f6d 100644 --- a/stock_production_lot_warranty/static/description/index.html +++ b/stock_production_lot_warranty/static/description/index.html @@ -1,20 +1,20 @@ - + - + Warranty Date on Lot/Serial Numbers -
      -

      Warranty Date on Lot/Serial Numbers

      +
      + + +Odoo Community Association + +
      +

      Warranty Date on Lot/Serial Numbers

      -

      Beta License: AGPL-3 OCA/rma Translate me on Weblate Try me on Runboat

      -

      Odoo does not provide the warranty information on the serial number of a product.

      -

      This module allows you to compute the warranty expiration date of a serialized -product based on the warranty duration.

      +

      Beta License: AGPL-3 OCA/rma Translate me on Weblate Try me on Runboat

      +

      Odoo does not provide the warranty information on the serial number of a +product.

      +

      This module allows you to compute the warranty expiration date of a +serialized product based on the warranty duration.

      Table of contents

        @@ -389,7 +395,7 @@

        Warranty Date on Lot/Serial Numbers

      -

      Configuration

      +

      Configuration

      To configure this module:

      • Go to Inventory > Configuration > Settings
      • @@ -401,34 +407,34 @@

        Configuration

      -

      Usage

      +

      Usage

      To use this module,

      • Go to Inventory > Products > Lot/Serial Numbers
      • Create a new serial number and select a product
      • -
      • The Warranty Expiration Date is automatically computed based on today + the -warranty duration from the select product
      • +
      • The Warranty Expiration Date is automatically computed based on today ++ the warranty duration from the select product
      • You can overwrite the computed date with your own value.
      -

      Bug Tracker

      +

      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 to smash it by providing a detailed and welcomed -feedback.

      +feedback.

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

      -

      Credits

      +

      Credits

      -

      Authors

      +

      Authors

      • Open Source Integrators
      -

      Other credits

      +

      Other credits

      This module has been financially supported by:

      -

      Maintainers

      +

      Maintainers

      This module is maintained by the OCA.

      -Odoo Community Association + +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:

      osi-scampbell max3903

      -

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

      +

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

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

      +
      diff --git a/stock_production_lot_warranty/views/stock_production_lot.xml b/stock_production_lot_warranty/views/stock_production_lot.xml index b83f2f3a8..856d195f3 100644 --- a/stock_production_lot_warranty/views/stock_production_lot.xml +++ b/stock_production_lot_warranty/views/stock_production_lot.xml @@ -1,6 +1,5 @@ - stock.production.lot @@ -12,5 +11,4 @@ - From 189a053c69a9f102f66fe1a323c7415000ae94be Mon Sep 17 00:00:00 2001 From: Marina Alapont Date: Fri, 16 Jan 2026 16:56:02 +0100 Subject: [PATCH 21/21] [MIG] stock_production_lot_warranty: Migration to 19.0 --- stock_production_lot_warranty/__manifest__.py | 2 +- .../models/stock_production_lot.py | 2 +- .../tests/test_product_lot_warranty.py | 10 +++++----- .../views/stock_production_lot.xml | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/stock_production_lot_warranty/__manifest__.py b/stock_production_lot_warranty/__manifest__.py index ac2ceadfe..7516a918d 100644 --- a/stock_production_lot_warranty/__manifest__.py +++ b/stock_production_lot_warranty/__manifest__.py @@ -5,7 +5,7 @@ { "name": "Warranty Date on Lot/Serial Numbers", "summary": "Add warranty date to stock production lot", - "version": "15.0.1.1.0", + "version": "19.0.1.1.0", "license": "AGPL-3", "author": "Open Source Integrators, Odoo Community Association (OCA)", "category": "Stock", diff --git a/stock_production_lot_warranty/models/stock_production_lot.py b/stock_production_lot_warranty/models/stock_production_lot.py index 1e1262dfe..2a38eaeec 100644 --- a/stock_production_lot_warranty/models/stock_production_lot.py +++ b/stock_production_lot_warranty/models/stock_production_lot.py @@ -10,7 +10,7 @@ class StockProductionLot(models.Model): - _inherit = "stock.production.lot" + _inherit = "stock.lot" warranty_exp_date = fields.Date(string="Warranty Expiration Date") diff --git a/stock_production_lot_warranty/tests/test_product_lot_warranty.py b/stock_production_lot_warranty/tests/test_product_lot_warranty.py index 620c0b1dc..5cf125f6e 100644 --- a/stock_production_lot_warranty/tests/test_product_lot_warranty.py +++ b/stock_production_lot_warranty/tests/test_product_lot_warranty.py @@ -22,7 +22,7 @@ def setUpClass(cls): ) def test_productlot_warranty(self): - production_lot = self.env["stock.production.lot"].create( + production_lot = self.env["stock.lot"].create( {"product_id": self.product1.id, "company_id": self.company1.id} ) production_lot._onchange_product_id() @@ -32,9 +32,9 @@ def test_productlot_warranty(self): ) def test_productlot_no_product(self): - # s.p.lot "product_id" is required=True + # stock.lot "product_id" is required=True with self.assertRaises(psycopg2.IntegrityError): - self.env["stock.production.lot"].create( + self.env["stock.lot"].create( {"product_id": False, "company_id": self.company1.id} ) @@ -57,14 +57,14 @@ def test_productlot_no_warranty(self): "warranty": 0, } ) - production_lot = self.env["stock.production.lot"].create( + production_lot = self.env["stock.lot"].create( {"product_id": product2.id, "company_id": self.company1.id} ) production_lot._onchange_product_id() self.assertFalse(production_lot.warranty_exp_date) def test_get_warranty_exp_date(self): - production_lot = self.env["stock.production.lot"].create( + production_lot = self.env["stock.lot"].create( {"product_id": self.product1.id, "company_id": self.company1.id} ) timestamp = datetime.now() - timedelta(days=3) diff --git a/stock_production_lot_warranty/views/stock_production_lot.xml b/stock_production_lot_warranty/views/stock_production_lot.xml index 856d195f3..3aaa2fa3e 100644 --- a/stock_production_lot_warranty/views/stock_production_lot.xml +++ b/stock_production_lot_warranty/views/stock_production_lot.xml @@ -1,7 +1,7 @@ - stock.production.lot + stock.lot