From 4991caf00dce3402b9f44620aee766e70f79a15c Mon Sep 17 00:00:00 2001 From: Antonio Yamuta Date: Tue, 12 Jun 2018 08:43:01 -0700 Subject: [PATCH 01/30] [11.0] product_internal_reference_mandatory (#334) * [ADD] Module to set the internal reference of the product as required. --- product_code_mandatory/README.rst | 66 ++++++++++++++++++ product_code_mandatory/__init__.py | 16 +++++ product_code_mandatory/__manifest__.py | 19 +++++ product_code_mandatory/models/__init__.py | 4 ++ product_code_mandatory/models/product.py | 15 ++++ .../static/description/icon.png | Bin 0 -> 9455 bytes .../views/product_code_seq.xml | 11 +++ product_code_mandatory/views/product_view.xml | 26 +++++++ 8 files changed, 157 insertions(+) create mode 100644 product_code_mandatory/README.rst create mode 100644 product_code_mandatory/__init__.py create mode 100644 product_code_mandatory/__manifest__.py create mode 100644 product_code_mandatory/models/__init__.py create mode 100644 product_code_mandatory/models/product.py create mode 100644 product_code_mandatory/static/description/icon.png create mode 100644 product_code_mandatory/views/product_code_seq.xml create mode 100644 product_code_mandatory/views/product_view.xml diff --git a/product_code_mandatory/README.rst b/product_code_mandatory/README.rst new file mode 100644 index 000000000000..e264aaeb2210 --- /dev/null +++ b/product_code_mandatory/README.rst @@ -0,0 +1,66 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +====================== +Product Code Mandatory +====================== + +This module sets the field internal reference (default_code) of the product +as required. + +Usage +===== + +* Unable to save a product with an empty or blank internal reference. +* When creating more than one product variant from the template, a variant will be created + with a default value for default_code field. +* A pre_init_hook process is initiated when there exist records without an internal reference(default_code). + A default value is generated to populate empty field as a temporary value. + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/135/11.0 + +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 smash it by providing detailed and welcomed feedback. + +Credits +======= + +Images +------ + +* Odoo Community Association: `Icon `_. + +Contributors +------------ + +* Antonio Yamuta + +Funders +------- + +The development of this module has been financially supported by: + +* Open Source Integrators + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +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. + +To contribute to this module, please visit https://odoo-community.org. diff --git a/product_code_mandatory/__init__.py b/product_code_mandatory/__init__.py new file mode 100644 index 000000000000..c1430458d084 --- /dev/null +++ b/product_code_mandatory/__init__.py @@ -0,0 +1,16 @@ +# Copyright (C) 2018 - TODAY, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import models + + +def pre_init_product_code(cr): + cr.execute("""UPDATE product_template + SET default_code = 'DEFAULT' || nextval('ir_default_id_seq') + WHERE default_code is NULL + OR LENGTH(default_code) = 0""") + cr.execute("""UPDATE product_product + SET default_code = 'DEFAULT' || nextval('ir_default_id_seq') + WHERE default_code is NULL + OR LENGTH(default_code) = 0""") + return True diff --git a/product_code_mandatory/__manifest__.py b/product_code_mandatory/__manifest__.py new file mode 100644 index 000000000000..17c8541bbb7c --- /dev/null +++ b/product_code_mandatory/__manifest__.py @@ -0,0 +1,19 @@ +# Copyright (C) 2018 - TODAY, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Product Internal Reference as Required", + "summary": "Set Product Internal Reference as a required field", + "version": "11.0.1.0.0", + "license": "AGPL-3", + "author": "Open Source Integrators, Odoo Community Association (OCA)", + "category": "Product", + "website": "http://www.opensourceintegrators.com", + "depends": ["product"], + "data": [ + "views/product_view.xml", + "views/product_code_seq.xml", + ], + "pre_init_hook": 'pre_init_product_code', + "installable": True, +} diff --git a/product_code_mandatory/models/__init__.py b/product_code_mandatory/models/__init__.py new file mode 100644 index 000000000000..e2434221bf7b --- /dev/null +++ b/product_code_mandatory/models/__init__.py @@ -0,0 +1,4 @@ +# Copyright (C) 2018 - TODAY, Open Source Integrators License AGPL-3.0 +# or later (http://www.gnu.org/licenses/agpl). + +from . import product diff --git a/product_code_mandatory/models/product.py b/product_code_mandatory/models/product.py new file mode 100644 index 000000000000..1314f7a61ead --- /dev/null +++ b/product_code_mandatory/models/product.py @@ -0,0 +1,15 @@ +# Copyright (C) 2018 - TODAY, Open Source Integrators License AGPL-3.0 +# or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ProductProduct(models.Model): + _inherit = 'product.product' + + def _get_default_code(self): + res = self.env['ir.sequence'].next_by_code('product.default.code') + return res + + default_code = fields.Char('Internal Reference', index=True, + default=_get_default_code) diff --git a/product_code_mandatory/static/description/icon.png b/product_code_mandatory/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z z?n?eq1XP>p-IM$Z^C;2L3itnbJZAip*Zo0aw2bs8@(s^~*8T9go!%dHcAz2lM;`yp zD=7&xjFV$S&5uDaiScyD?B-i1ze`+CoRtz`Wn+Zl&#s4&}MO{@N!ufrzjG$B79)Y2d3tBk&)TxUTw@QS0TEL_?njX|@vq?Uz(nBFK5Pq7*xj#u*R&i|?7+6# z+|r_n#SW&LXhtheZdah{ZVoqwyT{D>MC3nkFF#N)xLi{p7J1jXlmVeb;cP5?e(=f# zuT7fvjSbjS781v?7{)-X3*?>tq?)Yd)~|1{BDS(pqC zC}~H#WXlkUW*H5CDOo<)#x7%RY)A;ShGhI5s*#cRDA8YgqG(HeKDx+#(ZQ?386dv! zlXCO)w91~Vw4AmOcATuV653fa9R$fyK8ul%rG z-wfS zihugoZyr38Im?Zuh6@RcF~t1anQu7>#lPpb#}4cOA!EM11`%f*07RqOVkmX{p~KJ9 z^zP;K#|)$`^Rb{rnHGH{~>1(fawV0*Z#)}M`m8-?ZJV<+e}s9wE# z)l&az?w^5{)`S(%MRzxdNqrs1n*-=jS^_jqE*5XDrA0+VE`5^*p3CuM<&dZEeCjoz zR;uu_H9ZPZV|fQq`Cyw4nscrVwi!fE6ciMmX$!_hN7uF;jjKG)d2@aC4ropY)8etW=xJvni)8eHi`H$%#zn^WJ5NLc-rqk|u&&4Z6fD_m&JfSI1Bvb?b<*n&sfl0^t z=HnmRl`XrFvMKB%9}>PaA`m-fK6a0(8=qPkWS5bb4=v?XcWi&hRY?O5HdulRi4?fN zlsJ*N-0Qw+Yic@s0(2uy%F@ib;GjXt01Fmx5XbRo6+n|pP(&nodMoap^z{~q ziEeaUT@Mxe3vJSfI6?uLND(CNr=#^W<1b}jzW58bIfyWTDle$mmS(|x-0|2UlX+9k zQ^EX7Nw}?EzVoBfT(-LT|=9N@^hcn-_p&sqG z&*oVs2JSU+N4ZD`FhCAWaS;>|wH2G*Id|?pa#@>tyxX`+4HyIArWDvVrX)2WAOQff z0qyHu&-S@i^MS-+j--!pr4fPBj~_8({~e1bfcl0wI1kaoN>mJL6KUPQm5N7lB(ui1 zE-o%kq)&djzWJ}ob<-GfDlkB;F31j-VHKvQUGQ3sp`CwyGJk_i!y^sD0fqC@$9|jO zOqN!r!8-p==F@ZVP=U$qSpY(gQ0)59P1&t@y?5rvg<}E+GB}26NYPp4f2YFQrQtot5mn3wu_qprZ=>Ig-$ zbW26Ws~IgY>}^5w`vTB(G`PTZaDiGBo5o(tp)qli|NeV( z@H_=R8V39rt5J5YB2Ky?4eJJ#b`_iBe2ot~6%7mLt5t8Vwi^Jy7|jWXqa3amOIoRb zOr}WVFP--DsS`1WpN%~)t3R!arKF^Q$e12KEqU36AWwnCBICpH4XCsfnyrHr>$I$4 z!DpKX$OKLWarN7nv@!uIA+~RNO)l$$w}p(;b>mx8pwYvu;dD_unryX_NhT8*Tj>BTrTTL&!?O+%Rv;b?B??gSzdp?6Uug9{ zd@V08Z$BdI?fpoCS$)t4mg4rT8Q_I}h`0d-vYZ^|dOB*Q^S|xqTV*vIg?@fVFSmMpaw0qtTRbx} z({Pg?#{2`sc9)M5N$*N|4;^t$+QP?#mov zGVC@I*lBVrOU-%2y!7%)fAKjpEFsgQc4{amtiHb95KQEwvf<(3T<9-Zm$xIew#P22 zc2Ix|App^>v6(3L_MCU0d3W##AB0M~3D00EWoKZqsJYT(#@w$Y_H7G22M~ApVFTRHMI_3be)Lkn#0F*V8Pq zc}`Cjy$bE;FJ6H7p=0y#R>`}-m4(0F>%@P|?7fx{=R^uFdISRnZ2W_xQhD{YuR3t< z{6yxu=4~JkeA;|(J6_nv#>Nvs&FuLA&PW^he@t(UwFFE8)|a!R{`E`K`i^ZnyE4$k z;(749Ix|oi$c3QbEJ3b~D_kQsPz~fIUKym($a_7dJ?o+40*OLl^{=&oq$<#Q(yyrp z{J-FAniyAw9tPbe&IhQ|a`DqFTVQGQ&Gq3!C2==4x{6EJwiPZ8zub-iXoUtkJiG{} zPaR&}_fn8_z~(=;5lD-aPWD3z8PZS@AaUiomF!G8I}Mf>e~0g#BelA-5#`cj;O5>N Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/product_code_mandatory/views/product_code_seq.xml b/product_code_mandatory/views/product_code_seq.xml new file mode 100644 index 000000000000..224fa46d933e --- /dev/null +++ b/product_code_mandatory/views/product_code_seq.xml @@ -0,0 +1,11 @@ + + + + + Productc Default Code Mandatory + product.default.code + DEFAULT- + 4 + + + diff --git a/product_code_mandatory/views/product_view.xml b/product_code_mandatory/views/product_view.xml new file mode 100644 index 000000000000..d01729f1fb89 --- /dev/null +++ b/product_code_mandatory/views/product_view.xml @@ -0,0 +1,26 @@ + + + + + product.template.only.form.code.mandatory.view + product.template + + + + {'invisible': [('product_variant_count', '>', 1)], + 'required': [('product_variant_count', '=', 1)]} + + + + + + product.normal.form.code.mandatory.view + product.product + + + + True + + + + From aa503f76fa4337270cb9b5a7ddb894eb17d69130 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Thu, 21 Jun 2018 18:21:09 +0000 Subject: [PATCH 02/30] [UPD] Update product_code_mandatory.pot --- .../i18n/product_code_mandatory.pot | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 product_code_mandatory/i18n/product_code_mandatory.pot diff --git a/product_code_mandatory/i18n/product_code_mandatory.pot b/product_code_mandatory/i18n/product_code_mandatory.pot new file mode 100644 index 000000000000..f67715231d59 --- /dev/null +++ b/product_code_mandatory/i18n/product_code_mandatory.pot @@ -0,0 +1,20 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_code_mandatory +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.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: product_code_mandatory +#: model:ir.model,name:product_code_mandatory.model_product_product +msgid "Product" +msgstr "" + From d1f86059559a199c13ea3b1acd0b7a00e1a9a5a5 Mon Sep 17 00:00:00 2001 From: Sudhir Arya Date: Tue, 4 Dec 2018 12:18:06 +0530 Subject: [PATCH 03/30] [MIG] Migrated product_code_mandatory to v12 --- product_code_mandatory/README.rst | 5 +++-- product_code_mandatory/__init__.py | 3 --- product_code_mandatory/__manifest__.py | 10 ++++++---- .../{views => data}/product_code_seq.xml | 5 +++-- product_code_mandatory/models/__init__.py | 3 --- product_code_mandatory/models/product.py | 3 +-- product_code_mandatory/readme/CONTRIBUTORS.rst | 2 ++ product_code_mandatory/readme/DESCRIPTION.rst | 2 ++ product_code_mandatory/readme/USAGE.rst | 9 +++++++++ product_code_mandatory/tests/__init__.py | 1 + .../tests/test_product_code.py | 17 +++++++++++++++++ product_code_mandatory/views/product_view.xml | 17 +++++++++-------- 12 files changed, 53 insertions(+), 24 deletions(-) rename product_code_mandatory/{views => data}/product_code_seq.xml (72%) create mode 100644 product_code_mandatory/readme/CONTRIBUTORS.rst create mode 100644 product_code_mandatory/readme/DESCRIPTION.rst create mode 100644 product_code_mandatory/readme/USAGE.rst create mode 100644 product_code_mandatory/tests/__init__.py create mode 100644 product_code_mandatory/tests/test_product_code.py diff --git a/product_code_mandatory/README.rst b/product_code_mandatory/README.rst index e264aaeb2210..7393cfd36738 100644 --- a/product_code_mandatory/README.rst +++ b/product_code_mandatory/README.rst @@ -14,13 +14,13 @@ Usage * Unable to save a product with an empty or blank internal reference. * When creating more than one product variant from the template, a variant will be created - with a default value for default_code field. + with a default value for default_code field. * A pre_init_hook process is initiated when there exist records without an internal reference(default_code). A default value is generated to populate empty field as a temporary value. .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/135/11.0 + :target: https://runbot.odoo-community.org/runbot/135/12.0 Bug Tracker =========== @@ -42,6 +42,7 @@ Contributors ------------ * Antonio Yamuta +* Sudhir Arya Funders ------- diff --git a/product_code_mandatory/__init__.py b/product_code_mandatory/__init__.py index c1430458d084..98feeb03b6c4 100644 --- a/product_code_mandatory/__init__.py +++ b/product_code_mandatory/__init__.py @@ -1,6 +1,3 @@ -# Copyright (C) 2018 - TODAY, Open Source Integrators -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). - from . import models diff --git a/product_code_mandatory/__manifest__.py b/product_code_mandatory/__manifest__.py index 17c8541bbb7c..bfdc375d3fbc 100644 --- a/product_code_mandatory/__manifest__.py +++ b/product_code_mandatory/__manifest__.py @@ -4,15 +4,17 @@ { "name": "Product Internal Reference as Required", "summary": "Set Product Internal Reference as a required field", - "version": "11.0.1.0.0", + "version": "12.0.1.0.0", "license": "AGPL-3", "author": "Open Source Integrators, Odoo Community Association (OCA)", "category": "Product", - "website": "http://www.opensourceintegrators.com", - "depends": ["product"], + "website": "https://github.com/OCA/product-attribute", + "depends": [ + "product", + ], "data": [ + "data/product_code_seq.xml", "views/product_view.xml", - "views/product_code_seq.xml", ], "pre_init_hook": 'pre_init_product_code', "installable": True, diff --git a/product_code_mandatory/views/product_code_seq.xml b/product_code_mandatory/data/product_code_seq.xml similarity index 72% rename from product_code_mandatory/views/product_code_seq.xml rename to product_code_mandatory/data/product_code_seq.xml index 224fa46d933e..95121f4a7517 100644 --- a/product_code_mandatory/views/product_code_seq.xml +++ b/product_code_mandatory/data/product_code_seq.xml @@ -1,11 +1,12 @@ - + - Productc Default Code Mandatory + Product Default Code Mandatory product.default.code DEFAULT- 4 + diff --git a/product_code_mandatory/models/__init__.py b/product_code_mandatory/models/__init__.py index e2434221bf7b..9649db77a159 100644 --- a/product_code_mandatory/models/__init__.py +++ b/product_code_mandatory/models/__init__.py @@ -1,4 +1 @@ -# Copyright (C) 2018 - TODAY, Open Source Integrators License AGPL-3.0 -# or later (http://www.gnu.org/licenses/agpl). - from . import product diff --git a/product_code_mandatory/models/product.py b/product_code_mandatory/models/product.py index 1314f7a61ead..e8f59b0a4f8b 100644 --- a/product_code_mandatory/models/product.py +++ b/product_code_mandatory/models/product.py @@ -8,8 +8,7 @@ class ProductProduct(models.Model): _inherit = 'product.product' def _get_default_code(self): - res = self.env['ir.sequence'].next_by_code('product.default.code') - return res + return self.env['ir.sequence'].next_by_code('product.default.code') default_code = fields.Char('Internal Reference', index=True, default=_get_default_code) diff --git a/product_code_mandatory/readme/CONTRIBUTORS.rst b/product_code_mandatory/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000000..bfde52f3cc0c --- /dev/null +++ b/product_code_mandatory/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* Antonio Yamuta +* Sudhir Arya diff --git a/product_code_mandatory/readme/DESCRIPTION.rst b/product_code_mandatory/readme/DESCRIPTION.rst new file mode 100644 index 000000000000..2c5007126431 --- /dev/null +++ b/product_code_mandatory/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This module sets the field internal reference (default_code) of the product +as required. diff --git a/product_code_mandatory/readme/USAGE.rst b/product_code_mandatory/readme/USAGE.rst new file mode 100644 index 000000000000..adb3cce07ca7 --- /dev/null +++ b/product_code_mandatory/readme/USAGE.rst @@ -0,0 +1,9 @@ +* Unable to save a product with an empty or blank internal reference. +* When creating more than one product variant from the template, a variant will be created + with a default value for default_code field. +* A pre_init_hook process is initiated when there exist records without an internal reference(default_code). + A default value is generated to populate empty field as a temporary value. + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/135/12.0 diff --git a/product_code_mandatory/tests/__init__.py b/product_code_mandatory/tests/__init__.py new file mode 100644 index 000000000000..fd357bf28010 --- /dev/null +++ b/product_code_mandatory/tests/__init__.py @@ -0,0 +1 @@ +from . import test_product_code diff --git a/product_code_mandatory/tests/test_product_code.py b/product_code_mandatory/tests/test_product_code.py new file mode 100644 index 000000000000..c9fb4bec2963 --- /dev/null +++ b/product_code_mandatory/tests/test_product_code.py @@ -0,0 +1,17 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo.tests.common import TransactionCase + + +class TestProductCode(TransactionCase): + + def setUp(self): + super(TestProductCode, self).setUp() + self.product_model = self.env['product.product'] + self.product = self.product_model.create({ + 'name': 'Test Product Code', + }) + + def test_product_code(self): + """Check Product Code""" + self.assertTrue(self.product.default_code, 'Product code is not set.') diff --git a/product_code_mandatory/views/product_view.xml b/product_code_mandatory/views/product_view.xml index d01729f1fb89..654e6236b2a4 100644 --- a/product_code_mandatory/views/product_view.xml +++ b/product_code_mandatory/views/product_view.xml @@ -1,26 +1,27 @@ - + - + product.template.only.form.code.mandatory.view product.template - + {'invisible': [('product_variant_count', '>', 1)], - 'required': [('product_variant_count', '=', 1)]} - + 'required': [('product_variant_count', '=', 1)]} + - + product.normal.form.code.mandatory.view product.product - + True - + + From cb1542b013fa972e70a823f4eb59a19cae7b336b Mon Sep 17 00:00:00 2001 From: oca-travis Date: Fri, 28 Feb 2020 07:04:40 +0000 Subject: [PATCH 04/30] [UPD] Update product_code_mandatory.pot --- .../i18n/product_code_mandatory.pot | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/product_code_mandatory/i18n/product_code_mandatory.pot b/product_code_mandatory/i18n/product_code_mandatory.pot index f67715231d59..e29d9a5a8469 100644 --- a/product_code_mandatory/i18n/product_code_mandatory.pot +++ b/product_code_mandatory/i18n/product_code_mandatory.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: <>\n" "Language-Team: \n" @@ -13,8 +13,18 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: product_code_mandatory +#: model:ir.model.fields,field_description:product_code_mandatory.field_product_product__default_code +msgid "Internal Reference" +msgstr "" + #. module: product_code_mandatory #: model:ir.model,name:product_code_mandatory.model_product_product msgid "Product" msgstr "" +#. module: product_code_mandatory +#: model:ir.model.fields,help:product_code_mandatory.field_product_product__default_code +msgid "Set to '/' and save if you want a new internal reference to be proposed." +msgstr "" + From fb0d7c4710d45198d55f1bb75162cf9793f2fd3c Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 28 Feb 2020 08:06:01 +0000 Subject: [PATCH 05/30] [UPD] README.rst --- product_code_mandatory/README.rst | 73 +-- .../static/description/index.html | 433 ++++++++++++++++++ 2 files changed, 480 insertions(+), 26 deletions(-) create mode 100644 product_code_mandatory/static/description/index.html diff --git a/product_code_mandatory/README.rst b/product_code_mandatory/README.rst index 7393cfd36738..1f61b0b16057 100644 --- a/product_code_mandatory/README.rst +++ b/product_code_mandatory/README.rst @@ -1,14 +1,38 @@ -.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png +====================================== +Product Internal Reference as Required +====================================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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 - -====================== -Product Code Mandatory -====================== +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fproduct--attribute-lightgray.png?logo=github + :target: https://github.com/OCA/product-attribute/tree/12.0/product_code_mandatory + :alt: OCA/product-attribute +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/product-attribute-12-0/product-attribute-12-0-product_code_mandatory + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/135/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| This module sets the field internal reference (default_code) of the product as required. +**Table of contents** + +.. contents:: + :local: + Usage ===== @@ -25,43 +49,40 @@ Usage 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 smash it by providing detailed and welcomed feedback. +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 ======= -Images ------- +Authors +~~~~~~~ -* Odoo Community Association: `Icon `_. +* Open Source Integrators Contributors ------------- +~~~~~~~~~~~~ * Antonio Yamuta * Sudhir Arya -Funders -------- - -The development of this module has been financially supported by: +Maintainers +~~~~~~~~~~~ -* Open Source Integrators - -Maintainer ----------- +This module is maintained by the OCA. .. image:: https://odoo-community.org/logo.png - :alt: Odoo Community Association - :target: https://odoo-community.org - -This module is maintained by the OCA. + :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. -To contribute to this module, please visit https://odoo-community.org. +This module is part of the `OCA/product-attribute `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/product_code_mandatory/static/description/index.html b/product_code_mandatory/static/description/index.html new file mode 100644 index 000000000000..649f33bf5810 --- /dev/null +++ b/product_code_mandatory/static/description/index.html @@ -0,0 +1,433 @@ + + + + + + +Product Internal Reference as Required + + + +
+

Product Internal Reference as Required

+ + +

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

+

This module sets the field internal reference (default_code) of the product +as required.

+

Table of contents

+ +
+

Usage

+
    +
  • Unable to save a product with an empty or blank internal reference.
  • +
  • When creating more than one product variant from the template, a variant will be created +with a default value for default_code field.
  • +
  • A pre_init_hook process is initiated when there exist records without an internal reference(default_code). +A default value is generated to populate empty field as a temporary value.
  • +
+Try me on Runbot +
+
+

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
  • +
+
+ +
+

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.

+

This module is part of the OCA/product-attribute project on GitHub.

+

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

+
+
+
+ + From 8e758fb309712b13f55b616d4da6bbac7fd04737 Mon Sep 17 00:00:00 2001 From: Pedro Castro Silva Date: Mon, 23 Mar 2020 12:16:55 +0000 Subject: [PATCH 06/30] Added translation using Weblate (Portuguese) --- product_code_mandatory/i18n/pt.po | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 product_code_mandatory/i18n/pt.po diff --git a/product_code_mandatory/i18n/pt.po b/product_code_mandatory/i18n/pt.po new file mode 100644 index 000000000000..ae7c74d15435 --- /dev/null +++ b/product_code_mandatory/i18n/pt.po @@ -0,0 +1,30 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_code_mandatory +# +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: product_code_mandatory +#: model:ir.model.fields,field_description:product_code_mandatory.field_product_product__default_code +msgid "Internal Reference" +msgstr "" + +#. module: product_code_mandatory +#: model:ir.model,name:product_code_mandatory.model_product_product +msgid "Product" +msgstr "" + +#. module: product_code_mandatory +#: model:ir.model.fields,help:product_code_mandatory.field_product_product__default_code +msgid "Set to '/' and save if you want a new internal reference to be proposed." +msgstr "" From 198fdbfe046e9058b22d2020b1359602c53c112f Mon Sep 17 00:00:00 2001 From: Pedro Castro Silva Date: Mon, 23 Mar 2020 12:17:19 +0000 Subject: [PATCH 07/30] Translated using Weblate (Portuguese) Currently translated at 100.0% (3 of 3 strings) Translation: product-attribute-12.0/product-attribute-12.0-product_code_mandatory Translate-URL: https://translation.odoo-community.org/projects/product-attribute-12-0/product-attribute-12-0-product_code_mandatory/pt/ --- product_code_mandatory/i18n/pt.po | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/product_code_mandatory/i18n/pt.po b/product_code_mandatory/i18n/pt.po index ae7c74d15435..3c7c2afabf21 100644 --- a/product_code_mandatory/i18n/pt.po +++ b/product_code_mandatory/i18n/pt.po @@ -6,25 +6,29 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2020-03-23 14:13+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 3.10\n" #. module: product_code_mandatory #: model:ir.model.fields,field_description:product_code_mandatory.field_product_product__default_code msgid "Internal Reference" -msgstr "" +msgstr "Referência Interna" #. module: product_code_mandatory #: model:ir.model,name:product_code_mandatory.model_product_product msgid "Product" -msgstr "" +msgstr "Produto" #. module: product_code_mandatory #: model:ir.model.fields,help:product_code_mandatory.field_product_product__default_code msgid "Set to '/' and save if you want a new internal reference to be proposed." msgstr "" +"Defina como '/' e guarde caso pretenda que uma nova referência interna seja " +"proposta." From 9c509b9cba898c11bd53cafd457ab566e00d40f0 Mon Sep 17 00:00:00 2001 From: Jaime Arroyo Date: Thu, 9 Jul 2020 12:46:30 +0200 Subject: [PATCH 08/30] [IMP] product_code_mandatory: black, isort, prettier --- product_code_mandatory/__init__.py | 12 ++++++++---- product_code_mandatory/__manifest__.py | 13 ++++--------- product_code_mandatory/data/product_code_seq.xml | 6 ++---- product_code_mandatory/models/product.py | 9 +++++---- product_code_mandatory/readme/USAGE.rst | 2 +- product_code_mandatory/tests/test_product_code.py | 9 +++------ product_code_mandatory/views/product_view.xml | 13 ++++++------- 7 files changed, 29 insertions(+), 35 deletions(-) diff --git a/product_code_mandatory/__init__.py b/product_code_mandatory/__init__.py index 98feeb03b6c4..1c1865a1dd0b 100644 --- a/product_code_mandatory/__init__.py +++ b/product_code_mandatory/__init__.py @@ -2,12 +2,16 @@ def pre_init_product_code(cr): - cr.execute("""UPDATE product_template + cr.execute( + """UPDATE product_template SET default_code = 'DEFAULT' || nextval('ir_default_id_seq') WHERE default_code is NULL - OR LENGTH(default_code) = 0""") - cr.execute("""UPDATE product_product + OR LENGTH(default_code) = 0""" + ) + cr.execute( + """UPDATE product_product SET default_code = 'DEFAULT' || nextval('ir_default_id_seq') WHERE default_code is NULL - OR LENGTH(default_code) = 0""") + OR LENGTH(default_code) = 0""" + ) return True diff --git a/product_code_mandatory/__manifest__.py b/product_code_mandatory/__manifest__.py index bfdc375d3fbc..039726156b34 100644 --- a/product_code_mandatory/__manifest__.py +++ b/product_code_mandatory/__manifest__.py @@ -4,18 +4,13 @@ { "name": "Product Internal Reference as Required", "summary": "Set Product Internal Reference as a required field", - "version": "12.0.1.0.0", + "version": "13.0.1.0.0", "license": "AGPL-3", "author": "Open Source Integrators, Odoo Community Association (OCA)", "category": "Product", "website": "https://github.com/OCA/product-attribute", - "depends": [ - "product", - ], - "data": [ - "data/product_code_seq.xml", - "views/product_view.xml", - ], - "pre_init_hook": 'pre_init_product_code', + "depends": ["product"], + "data": ["data/product_code_seq.xml", "views/product_view.xml"], + "pre_init_hook": "pre_init_product_code", "installable": True, } diff --git a/product_code_mandatory/data/product_code_seq.xml b/product_code_mandatory/data/product_code_seq.xml index 95121f4a7517..b388e14c2405 100644 --- a/product_code_mandatory/data/product_code_seq.xml +++ b/product_code_mandatory/data/product_code_seq.xml @@ -1,12 +1,10 @@ - + - Product Default Code Mandatory product.default.code DEFAULT- 4 - + - diff --git a/product_code_mandatory/models/product.py b/product_code_mandatory/models/product.py index e8f59b0a4f8b..ea6415717f98 100644 --- a/product_code_mandatory/models/product.py +++ b/product_code_mandatory/models/product.py @@ -5,10 +5,11 @@ class ProductProduct(models.Model): - _inherit = 'product.product' + _inherit = "product.product" def _get_default_code(self): - return self.env['ir.sequence'].next_by_code('product.default.code') + return self.env["ir.sequence"].next_by_code("product.default.code") - default_code = fields.Char('Internal Reference', index=True, - default=_get_default_code) + default_code = fields.Char( + "Internal Reference", index=True, default=_get_default_code + ) diff --git a/product_code_mandatory/readme/USAGE.rst b/product_code_mandatory/readme/USAGE.rst index adb3cce07ca7..e9a7b9fc7f74 100644 --- a/product_code_mandatory/readme/USAGE.rst +++ b/product_code_mandatory/readme/USAGE.rst @@ -1,5 +1,5 @@ * Unable to save a product with an empty or blank internal reference. -* When creating more than one product variant from the template, a variant will be created +* When creating more than one product variant from the template, a variant will be created with a default value for default_code field. * A pre_init_hook process is initiated when there exist records without an internal reference(default_code). A default value is generated to populate empty field as a temporary value. diff --git a/product_code_mandatory/tests/test_product_code.py b/product_code_mandatory/tests/test_product_code.py index c9fb4bec2963..6db56fce44c6 100644 --- a/product_code_mandatory/tests/test_product_code.py +++ b/product_code_mandatory/tests/test_product_code.py @@ -4,14 +4,11 @@ class TestProductCode(TransactionCase): - def setUp(self): super(TestProductCode, self).setUp() - self.product_model = self.env['product.product'] - self.product = self.product_model.create({ - 'name': 'Test Product Code', - }) + self.product_model = self.env["product.product"] + self.product = self.product_model.create({"name": "Test Product Code"}) def test_product_code(self): """Check Product Code""" - self.assertTrue(self.product.default_code, 'Product code is not set.') + self.assertTrue(self.product.default_code, "Product code is not set.") diff --git a/product_code_mandatory/views/product_view.xml b/product_code_mandatory/views/product_view.xml index 654e6236b2a4..648dd282b20e 100644 --- a/product_code_mandatory/views/product_view.xml +++ b/product_code_mandatory/views/product_view.xml @@ -1,27 +1,26 @@ - + - product.template.only.form.code.mandatory.view product.template - + - {'invisible': [('product_variant_count', '>', 1)], + {'invisible': [('product_variant_count', '>', 1)], 'required': [('product_variant_count', '=', 1)]} - product.normal.form.code.mandatory.view product.product - + True - From 3508f226c9e54b524ff2db75eb9bcd617fce0161 Mon Sep 17 00:00:00 2001 From: Jaime Arroyo Date: Thu, 9 Jul 2020 12:48:25 +0200 Subject: [PATCH 09/30] [13.0][MIG] product_code_mandatory --- product_code_mandatory/README.rst | 18 ++++---- product_code_mandatory/__manifest__.py | 2 +- .../static/description/index.html | 42 +++++-------------- 3 files changed, 20 insertions(+), 42 deletions(-) diff --git a/product_code_mandatory/README.rst b/product_code_mandatory/README.rst index 1f61b0b16057..7e5ef9ca0b58 100644 --- a/product_code_mandatory/README.rst +++ b/product_code_mandatory/README.rst @@ -1,6 +1,6 @@ -====================================== -Product Internal Reference as Required -====================================== +====================== +Product Code Mandatory +====================== .. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! @@ -14,13 +14,13 @@ Product Internal Reference as Required :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fproduct--attribute-lightgray.png?logo=github - :target: https://github.com/OCA/product-attribute/tree/12.0/product_code_mandatory + :target: https://github.com/OCA/product-attribute/tree/13.0/product_code_mandatory :alt: OCA/product-attribute .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/product-attribute-12-0/product-attribute-12-0-product_code_mandatory + :target: https://translation.odoo-community.org/projects/product-attribute-13-0/product-attribute-13-0-product_code_mandatory :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/135/12.0 + :target: https://runbot.odoo-community.org/runbot/135/13.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -37,7 +37,7 @@ Usage ===== * Unable to save a product with an empty or blank internal reference. -* When creating more than one product variant from the template, a variant will be created +* When creating more than one product variant from the template, a variant will be created with a default value for default_code field. * A pre_init_hook process is initiated when there exist records without an internal reference(default_code). A default value is generated to populate empty field as a temporary value. @@ -52,7 +52,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. @@ -83,6 +83,6 @@ 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. -This module is part of the `OCA/product-attribute `_ project on GitHub. +This module is part of the `OCA/product-attribute `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/product_code_mandatory/__manifest__.py b/product_code_mandatory/__manifest__.py index 039726156b34..ec7d3656fc67 100644 --- a/product_code_mandatory/__manifest__.py +++ b/product_code_mandatory/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { - "name": "Product Internal Reference as Required", + "name": "Product Code Mandatory", "summary": "Set Product Internal Reference as a required field", "version": "13.0.1.0.0", "license": "AGPL-3", diff --git a/product_code_mandatory/static/description/index.html b/product_code_mandatory/static/description/index.html index 649f33bf5810..51bcca2616e6 100644 --- a/product_code_mandatory/static/description/index.html +++ b/product_code_mandatory/static/description/index.html @@ -3,13 +3,13 @@ - -Product Internal Reference as Required + +Product Code Mandatory -
-

Product Internal Reference as Required

+
+

Product Code Mandatory

-

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

+

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

This module sets the field internal reference (default_code) of the product as required.

Table of contents

@@ -399,7 +377,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.

@@ -424,7 +402,7 @@

Maintainers

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.

-

This module is part of the OCA/product-attribute project on GitHub.

+

This module is part of the OCA/product-attribute project on GitHub.

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

From 043cdfbb03b80de071c0c3d937bfe3ccbedef697 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Sun, 19 Jul 2020 08:41:33 +0000 Subject: [PATCH 10/30] [UPD] Update product_code_mandatory.pot --- product_code_mandatory/i18n/product_code_mandatory.pot | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/product_code_mandatory/i18n/product_code_mandatory.pot b/product_code_mandatory/i18n/product_code_mandatory.pot index e29d9a5a8469..2807d2b6076a 100644 --- a/product_code_mandatory/i18n/product_code_mandatory.pot +++ b/product_code_mandatory/i18n/product_code_mandatory.pot @@ -1,12 +1,12 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * product_code_mandatory +# * product_code_mandatory # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 12.0\n" +"Project-Id-Version: Odoo Server 13.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" @@ -25,6 +25,6 @@ msgstr "" #. module: product_code_mandatory #: model:ir.model.fields,help:product_code_mandatory.field_product_product__default_code -msgid "Set to '/' and save if you want a new internal reference to be proposed." +msgid "" +"Set to '/' and save if you want a new internal reference to be proposed." msgstr "" - From 3126951d881fc2127b951e5d691497cb077803cf Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sun, 19 Jul 2020 09:25:34 +0000 Subject: [PATCH 11/30] [UPD] README.rst --- .../static/description/index.html | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/product_code_mandatory/static/description/index.html b/product_code_mandatory/static/description/index.html index 51bcca2616e6..1be3881f468c 100644 --- a/product_code_mandatory/static/description/index.html +++ b/product_code_mandatory/static/description/index.html @@ -3,13 +3,13 @@ - + Product Code Mandatory