From 520b5e7ed555ca4cd167c976ee8831b947dd2c9f Mon Sep 17 00:00:00 2001 From: OriolMForgeFlow Date: Wed, 29 Nov 2023 10:09:29 +0100 Subject: [PATCH 01/21] [ADD] edi_product_oca --- edi_product_oca/README.rst | 76 ++++ edi_product_oca/__init__.py | 1 + edi_product_oca/__manifest__.py | 17 + edi_product_oca/i18n/edi_product_oca.pot | 83 ++++ edi_product_oca/models/__init__.py | 2 + edi_product_oca/models/product_product.py | 9 + edi_product_oca/models/product_template.py | 9 + edi_product_oca/readme/CONTRIBUTORS.rst | 1 + edi_product_oca/readme/DESCRIPTION.rst | 1 + edi_product_oca/static/description/icon.png | Bin 0 -> 9455 bytes edi_product_oca/static/description/index.html | 421 ++++++++++++++++++ edi_product_oca/views/product_views.xml | 35 ++ 12 files changed, 655 insertions(+) create mode 100644 edi_product_oca/README.rst create mode 100644 edi_product_oca/__init__.py create mode 100644 edi_product_oca/__manifest__.py create mode 100644 edi_product_oca/i18n/edi_product_oca.pot create mode 100644 edi_product_oca/models/__init__.py create mode 100644 edi_product_oca/models/product_product.py create mode 100644 edi_product_oca/models/product_template.py create mode 100644 edi_product_oca/readme/CONTRIBUTORS.rst create mode 100644 edi_product_oca/readme/DESCRIPTION.rst create mode 100644 edi_product_oca/static/description/icon.png create mode 100644 edi_product_oca/static/description/index.html create mode 100644 edi_product_oca/views/product_views.xml diff --git a/edi_product_oca/README.rst b/edi_product_oca/README.rst new file mode 100644 index 000000000..610a8a487 --- /dev/null +++ b/edi_product_oca/README.rst @@ -0,0 +1,76 @@ +=========== +EDI Product +=========== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:9eb0e9359e040d5f63d6af40d6aeaaa5f9f04450c7fa6cc4a65b8000ba2c1057 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fedi--framework-lightgray.png?logo=github + :target: https://github.com/OCA/edi-framework/tree/16.0/edi_product_oca + :alt: OCA/edi-framework +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/edi-framework-16-0/edi-framework-16-0-edi_product_oca + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/edi-framework&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Provide basic configuration for products with EDI framework. + +**Table of contents** + +.. contents:: + :local: + +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 `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* ForgeFlow + +Contributors +~~~~~~~~~~~~ + +* Oriol Miranda + +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. + +This module is part of the `OCA/edi-framework `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/edi_product_oca/__init__.py b/edi_product_oca/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/edi_product_oca/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/edi_product_oca/__manifest__.py b/edi_product_oca/__manifest__.py new file mode 100644 index 000000000..53b8b46a5 --- /dev/null +++ b/edi_product_oca/__manifest__.py @@ -0,0 +1,17 @@ +# Copyright 2023 ForgeFlow S.L. (http://www.forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "EDI Product", + "summary": """ + EDI framework configuration and base logic for products""", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "author": "ForgeFlow, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/edi-framework", + "depends": [ + "product", + "edi_oca", + ], + "data": ["views/product_views.xml"], +} diff --git a/edi_product_oca/i18n/edi_product_oca.pot b/edi_product_oca/i18n/edi_product_oca.pot new file mode 100644 index 000000000..ad2ba93ee --- /dev/null +++ b/edi_product_oca/i18n/edi_product_oca.pot @@ -0,0 +1,83 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * edi_product_oca +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__edi_disable_auto +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__edi_disable_auto +msgid "Disable auto" +msgstr "" + +#. module: edi_product_oca +#: model_terms:ir.ui.view,arch_db:edi_product_oca.product_template_form_view +msgid "EDI" +msgstr "" + +#. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__origin_exchange_type_id +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__origin_exchange_type_id +msgid "EDI origin exchange type" +msgstr "" + +#. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__origin_exchange_record_id +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__origin_exchange_record_id +msgid "EDI origin record" +msgstr "" + +#. module: edi_product_oca +#: model:ir.model.fields,help:edi_product_oca.field_product_product__origin_exchange_record_id +#: model:ir.model.fields,help:edi_product_oca.field_product_template__origin_exchange_record_id +msgid "EDI record that originated this document." +msgstr "" + +#. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__edi_config +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__edi_config +msgid "Edi Config" +msgstr "" + +#. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__edi_has_form_config +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__edi_has_form_config +msgid "Edi Has Form Config" +msgstr "" + +#. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__exchange_record_ids +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__exchange_record_ids +msgid "Exchange Record" +msgstr "" + +#. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__exchange_record_count +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__exchange_record_count +msgid "Exchange Record Count" +msgstr "" + +#. module: edi_product_oca +#: model:ir.model,name:edi_product_oca.model_product_template +msgid "Product" +msgstr "" + +#. module: edi_product_oca +#: model:ir.model,name:edi_product_oca.model_product_product +msgid "Product Variant" +msgstr "" + +#. module: edi_product_oca +#: model:ir.model.fields,help:edi_product_oca.field_product_product__edi_disable_auto +#: model:ir.model.fields,help:edi_product_oca.field_product_template__edi_disable_auto +msgid "When marked, EDI automatic processing will be avoided" +msgstr "" diff --git a/edi_product_oca/models/__init__.py b/edi_product_oca/models/__init__.py new file mode 100644 index 000000000..18b37e853 --- /dev/null +++ b/edi_product_oca/models/__init__.py @@ -0,0 +1,2 @@ +from . import product_product +from . import product_template diff --git a/edi_product_oca/models/product_product.py b/edi_product_oca/models/product_product.py new file mode 100644 index 000000000..a411f920b --- /dev/null +++ b/edi_product_oca/models/product_product.py @@ -0,0 +1,9 @@ +# Copyright 2023 ForgeFlow S.L. (http://www.forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models + + +class ProductProduct(models.Model): + _name = "product.product" + _inherit = ["product.product", "edi.exchange.consumer.mixin"] diff --git a/edi_product_oca/models/product_template.py b/edi_product_oca/models/product_template.py new file mode 100644 index 000000000..ade61d91f --- /dev/null +++ b/edi_product_oca/models/product_template.py @@ -0,0 +1,9 @@ +# Copyright 2023 ForgeFlow S.L. (http://www.forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models + + +class ProductTemplate(models.Model): + _name = "product.template" + _inherit = ["product.template", "edi.exchange.consumer.mixin"] diff --git a/edi_product_oca/readme/CONTRIBUTORS.rst b/edi_product_oca/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..f63a57cf5 --- /dev/null +++ b/edi_product_oca/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Oriol Miranda diff --git a/edi_product_oca/readme/DESCRIPTION.rst b/edi_product_oca/readme/DESCRIPTION.rst new file mode 100644 index 000000000..42019c0ed --- /dev/null +++ b/edi_product_oca/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +Provide basic configuration for products with EDI framework. diff --git a/edi_product_oca/static/description/icon.png b/edi_product_oca/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/edi_product_oca/static/description/index.html b/edi_product_oca/static/description/index.html new file mode 100644 index 000000000..3af87ab69 --- /dev/null +++ b/edi_product_oca/static/description/index.html @@ -0,0 +1,421 @@ + + + + + + +EDI Product + + + +
+

EDI Product

+ + +

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

+

Provide basic configuration for products with EDI framework.

+

Table of contents

+ +
+

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.

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • ForgeFlow
  • +
+
+
+

Contributors

+ +
+
+

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/edi-framework project on GitHub.

+

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

+
+
+
+ + diff --git a/edi_product_oca/views/product_views.xml b/edi_product_oca/views/product_views.xml new file mode 100644 index 000000000..5aa3f6b47 --- /dev/null +++ b/edi_product_oca/views/product_views.xml @@ -0,0 +1,35 @@ + + + + product.template.form.view - edi_product_oca + product.template + + + + + + + + + + + +
+ +
+ +
+
+
From 6aece573da23717185fab7b0b41dab04db5d924c Mon Sep 17 00:00:00 2001 From: duongtq Date: Fri, 29 Dec 2023 16:52:22 +0700 Subject: [PATCH 02/21] [IMP] edi_product_oca: Plug EDI framework to product.packaging --- edi_product_oca/README.rst | 5 +-- edi_product_oca/__manifest__.py | 9 +++-- edi_product_oca/i18n/edi_product_oca.pot | 29 ++++++++++++++++ edi_product_oca/models/__init__.py | 1 + edi_product_oca/models/product_packaging.py | 9 +++++ edi_product_oca/readme/CONTRIBUTORS.rst | 1 + edi_product_oca/readme/DESCRIPTION.rst | 2 +- edi_product_oca/static/description/index.html | 6 ++-- .../views/product_packaging_views.xml | 34 +++++++++++++++++++ 9 files changed, 87 insertions(+), 9 deletions(-) create mode 100644 edi_product_oca/models/product_packaging.py create mode 100644 edi_product_oca/views/product_packaging_views.xml diff --git a/edi_product_oca/README.rst b/edi_product_oca/README.rst index 610a8a487..ace960a32 100644 --- a/edi_product_oca/README.rst +++ b/edi_product_oca/README.rst @@ -7,7 +7,7 @@ EDI Product !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:9eb0e9359e040d5f63d6af40d6aeaaa5f9f04450c7fa6cc4a65b8000ba2c1057 + !! source digest: sha256:182f81f8a3229e1fb48427be42405ac2358227e5e21e0639405ddfbedae20ffb !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png @@ -28,7 +28,7 @@ EDI Product |badge1| |badge2| |badge3| |badge4| |badge5| -Provide basic configuration for products with EDI framework. +Provide basic configuration for products and product packaging with EDI framework. **Table of contents** @@ -57,6 +57,7 @@ Contributors ~~~~~~~~~~~~ * Oriol Miranda +* Duong (Tran Quoc) Maintainers ~~~~~~~~~~~ diff --git a/edi_product_oca/__manifest__.py b/edi_product_oca/__manifest__.py index 53b8b46a5..0b332d84b 100644 --- a/edi_product_oca/__manifest__.py +++ b/edi_product_oca/__manifest__.py @@ -4,8 +4,8 @@ { "name": "EDI Product", "summary": """ - EDI framework configuration and base logic for products""", - "version": "16.0.1.0.0", + EDI framework configuration and base logic for products and products packaging""", + "version": "16.0.1.1.0", "license": "AGPL-3", "author": "ForgeFlow, Odoo Community Association (OCA)", "website": "https://github.com/OCA/edi-framework", @@ -13,5 +13,8 @@ "product", "edi_oca", ], - "data": ["views/product_views.xml"], + "data": [ + "views/product_views.xml", + "views/product_packaging_views.xml", + ], } diff --git a/edi_product_oca/i18n/edi_product_oca.pot b/edi_product_oca/i18n/edi_product_oca.pot index ad2ba93ee..6eed29623 100644 --- a/edi_product_oca/i18n/edi_product_oca.pot +++ b/edi_product_oca/i18n/edi_product_oca.pot @@ -14,53 +14,69 @@ msgstr "" "Plural-Forms: \n" #. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__edi_disable_auto #: model:ir.model.fields,field_description:edi_product_oca.field_product_product__edi_disable_auto #: model:ir.model.fields,field_description:edi_product_oca.field_product_template__edi_disable_auto msgid "Disable auto" msgstr "" #. module: edi_product_oca +#: model_terms:ir.ui.view,arch_db:edi_product_oca.product_packaging_form_view #: model_terms:ir.ui.view,arch_db:edi_product_oca.product_template_form_view msgid "EDI" msgstr "" #. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__origin_edi_endpoint_id +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__origin_edi_endpoint_id +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__origin_edi_endpoint_id +msgid "EDI origin endpoint" +msgstr "" + +#. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__origin_exchange_type_id #: model:ir.model.fields,field_description:edi_product_oca.field_product_product__origin_exchange_type_id #: model:ir.model.fields,field_description:edi_product_oca.field_product_template__origin_exchange_type_id msgid "EDI origin exchange type" msgstr "" #. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__origin_exchange_record_id #: model:ir.model.fields,field_description:edi_product_oca.field_product_product__origin_exchange_record_id #: model:ir.model.fields,field_description:edi_product_oca.field_product_template__origin_exchange_record_id msgid "EDI origin record" msgstr "" #. module: edi_product_oca +#: model:ir.model.fields,help:edi_product_oca.field_product_packaging__origin_exchange_record_id #: model:ir.model.fields,help:edi_product_oca.field_product_product__origin_exchange_record_id #: model:ir.model.fields,help:edi_product_oca.field_product_template__origin_exchange_record_id msgid "EDI record that originated this document." msgstr "" #. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__edi_config #: model:ir.model.fields,field_description:edi_product_oca.field_product_product__edi_config #: model:ir.model.fields,field_description:edi_product_oca.field_product_template__edi_config msgid "Edi Config" msgstr "" #. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__edi_has_form_config #: model:ir.model.fields,field_description:edi_product_oca.field_product_product__edi_has_form_config #: model:ir.model.fields,field_description:edi_product_oca.field_product_template__edi_has_form_config msgid "Edi Has Form Config" msgstr "" #. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__exchange_record_ids #: model:ir.model.fields,field_description:edi_product_oca.field_product_product__exchange_record_ids #: model:ir.model.fields,field_description:edi_product_oca.field_product_template__exchange_record_ids msgid "Exchange Record" msgstr "" #. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__exchange_record_count #: model:ir.model.fields,field_description:edi_product_oca.field_product_product__exchange_record_count #: model:ir.model.fields,field_description:edi_product_oca.field_product_template__exchange_record_count msgid "Exchange Record Count" @@ -71,12 +87,25 @@ msgstr "" msgid "Product" msgstr "" +#. module: edi_product_oca +#: model:ir.model,name:edi_product_oca.model_product_packaging +msgid "Product Packaging" +msgstr "" + #. module: edi_product_oca #: model:ir.model,name:edi_product_oca.model_product_product msgid "Product Variant" msgstr "" #. module: edi_product_oca +#: model:ir.model.fields,help:edi_product_oca.field_product_packaging__origin_edi_endpoint_id +#: model:ir.model.fields,help:edi_product_oca.field_product_product__origin_edi_endpoint_id +#: model:ir.model.fields,help:edi_product_oca.field_product_template__origin_edi_endpoint_id +msgid "Record generated via this endpoint" +msgstr "" + +#. module: edi_product_oca +#: model:ir.model.fields,help:edi_product_oca.field_product_packaging__edi_disable_auto #: model:ir.model.fields,help:edi_product_oca.field_product_product__edi_disable_auto #: model:ir.model.fields,help:edi_product_oca.field_product_template__edi_disable_auto msgid "When marked, EDI automatic processing will be avoided" diff --git a/edi_product_oca/models/__init__.py b/edi_product_oca/models/__init__.py index 18b37e853..e9bc8fca4 100644 --- a/edi_product_oca/models/__init__.py +++ b/edi_product_oca/models/__init__.py @@ -1,2 +1,3 @@ from . import product_product from . import product_template +from . import product_packaging diff --git a/edi_product_oca/models/product_packaging.py b/edi_product_oca/models/product_packaging.py new file mode 100644 index 000000000..8dbccec84 --- /dev/null +++ b/edi_product_oca/models/product_packaging.py @@ -0,0 +1,9 @@ +# Copyright 2024 Camptocamp SA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models + + +class ProductPackaging(models.Model): + _name = "product.packaging" + _inherit = ["product.packaging", "edi.exchange.consumer.mixin"] diff --git a/edi_product_oca/readme/CONTRIBUTORS.rst b/edi_product_oca/readme/CONTRIBUTORS.rst index f63a57cf5..55f3afbf2 100644 --- a/edi_product_oca/readme/CONTRIBUTORS.rst +++ b/edi_product_oca/readme/CONTRIBUTORS.rst @@ -1 +1,2 @@ * Oriol Miranda +* Duong (Tran Quoc) diff --git a/edi_product_oca/readme/DESCRIPTION.rst b/edi_product_oca/readme/DESCRIPTION.rst index 42019c0ed..5403d861b 100644 --- a/edi_product_oca/readme/DESCRIPTION.rst +++ b/edi_product_oca/readme/DESCRIPTION.rst @@ -1 +1 @@ -Provide basic configuration for products with EDI framework. +Provide basic configuration for products and product packaging with EDI framework. diff --git a/edi_product_oca/static/description/index.html b/edi_product_oca/static/description/index.html index 3af87ab69..848736ffe 100644 --- a/edi_product_oca/static/description/index.html +++ b/edi_product_oca/static/description/index.html @@ -1,4 +1,3 @@ - @@ -367,10 +366,10 @@

EDI Product

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:9eb0e9359e040d5f63d6af40d6aeaaa5f9f04450c7fa6cc4a65b8000ba2c1057 +!! source digest: sha256:182f81f8a3229e1fb48427be42405ac2358227e5e21e0639405ddfbedae20ffb !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

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

-

Provide basic configuration for products with EDI framework.

+

Provide basic configuration for products and product packaging with EDI framework.

Table of contents

diff --git a/edi_product_oca/views/product_packaging_views.xml b/edi_product_oca/views/product_packaging_views.xml new file mode 100644 index 000000000..25dee50ea --- /dev/null +++ b/edi_product_oca/views/product_packaging_views.xml @@ -0,0 +1,34 @@ + + + + product.packaging.form.view - edi_product_oca + product.packaging + + + + + + + + + + +
+ +
+
+
+
+
From 45649923ba84c3c8c26898ec5bc519319fa89fca Mon Sep 17 00:00:00 2001 From: Telmo Santos Date: Wed, 3 Apr 2024 13:27:32 +0200 Subject: [PATCH 03/21] [FIX] edi_product_oca: fix product template form --- edi_product_oca/README.rst | 2 +- edi_product_oca/__manifest__.py | 2 +- edi_product_oca/static/description/index.html | 2 +- edi_product_oca/views/product_views.xml | 4 ++++ 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/edi_product_oca/README.rst b/edi_product_oca/README.rst index ace960a32..ad33853ec 100644 --- a/edi_product_oca/README.rst +++ b/edi_product_oca/README.rst @@ -7,7 +7,7 @@ EDI Product !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:182f81f8a3229e1fb48427be42405ac2358227e5e21e0639405ddfbedae20ffb + !! source digest: sha256:8f49d35294d2a460c2a760795e6ae4db9f0b69301fe18c483bf7bc0c1177d5b1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/edi_product_oca/__manifest__.py b/edi_product_oca/__manifest__.py index 0b332d84b..6ab9419fc 100644 --- a/edi_product_oca/__manifest__.py +++ b/edi_product_oca/__manifest__.py @@ -5,7 +5,7 @@ "name": "EDI Product", "summary": """ EDI framework configuration and base logic for products and products packaging""", - "version": "16.0.1.1.0", + "version": "16.0.1.1.1", "license": "AGPL-3", "author": "ForgeFlow, Odoo Community Association (OCA)", "website": "https://github.com/OCA/edi-framework", diff --git a/edi_product_oca/static/description/index.html b/edi_product_oca/static/description/index.html index 848736ffe..c55ea712b 100644 --- a/edi_product_oca/static/description/index.html +++ b/edi_product_oca/static/description/index.html @@ -366,7 +366,7 @@

EDI Product

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:182f81f8a3229e1fb48427be42405ac2358227e5e21e0639405ddfbedae20ffb +!! source digest: sha256:8f49d35294d2a460c2a760795e6ae4db9f0b69301fe18c483bf7bc0c1177d5b1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

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

Provide basic configuration for products and product packaging with EDI framework.

diff --git a/edi_product_oca/views/product_views.xml b/edi_product_oca/views/product_views.xml index 5aa3f6b47..001cd31a1 100644 --- a/edi_product_oca/views/product_views.xml +++ b/edi_product_oca/views/product_views.xml @@ -5,6 +5,10 @@ product.template + + + + From 8d1a77e8547777a0852cf49b55ffe2090ad4fdeb Mon Sep 17 00:00:00 2001 From: mymage Date: Wed, 15 May 2024 06:48:10 +0000 Subject: [PATCH 04/21] Added translation using Weblate (Italian) --- edi_product_oca/i18n/edi_product_oca.pot | 14 +-- edi_product_oca/i18n/it.po | 118 +++++++++++++++++++++++ 2 files changed, 125 insertions(+), 7 deletions(-) create mode 100644 edi_product_oca/i18n/it.po diff --git a/edi_product_oca/i18n/edi_product_oca.pot b/edi_product_oca/i18n/edi_product_oca.pot index 6eed29623..d9357cef8 100644 --- a/edi_product_oca/i18n/edi_product_oca.pot +++ b/edi_product_oca/i18n/edi_product_oca.pot @@ -82,6 +82,13 @@ msgstr "" msgid "Exchange Record Count" msgstr "" +#. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__exchange_related_record_ids +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__exchange_related_record_ids +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__exchange_related_record_ids +msgid "Exchange Related Record" +msgstr "" + #. module: edi_product_oca #: model:ir.model,name:edi_product_oca.model_product_template msgid "Product" @@ -97,13 +104,6 @@ msgstr "" msgid "Product Variant" msgstr "" -#. module: edi_product_oca -#: model:ir.model.fields,help:edi_product_oca.field_product_packaging__origin_edi_endpoint_id -#: model:ir.model.fields,help:edi_product_oca.field_product_product__origin_edi_endpoint_id -#: model:ir.model.fields,help:edi_product_oca.field_product_template__origin_edi_endpoint_id -msgid "Record generated via this endpoint" -msgstr "" - #. module: edi_product_oca #: model:ir.model.fields,help:edi_product_oca.field_product_packaging__edi_disable_auto #: model:ir.model.fields,help:edi_product_oca.field_product_product__edi_disable_auto diff --git a/edi_product_oca/i18n/it.po b/edi_product_oca/i18n/it.po new file mode 100644 index 000000000..7519b9fc9 --- /dev/null +++ b/edi_product_oca/i18n/it.po @@ -0,0 +1,118 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * edi_product_oca +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-07-29 08:58+0000\n" +"Last-Translator: mymage \n" +"Language-Team: none\n" +"Language: it\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 5.6.2\n" + +#. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__edi_disable_auto +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__edi_disable_auto +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__edi_disable_auto +msgid "Disable auto" +msgstr "Disabilita automatico" + +#. module: edi_product_oca +#: model_terms:ir.ui.view,arch_db:edi_product_oca.product_packaging_form_view +#: model_terms:ir.ui.view,arch_db:edi_product_oca.product_template_form_view +msgid "EDI" +msgstr "EDI" + +#. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__origin_edi_endpoint_id +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__origin_edi_endpoint_id +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__origin_edi_endpoint_id +msgid "EDI origin endpoint" +msgstr "Endpoint origine EDI" + +#. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__origin_exchange_type_id +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__origin_exchange_type_id +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__origin_exchange_type_id +msgid "EDI origin exchange type" +msgstr "Tipo scambio origine EDI" + +#. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__origin_exchange_record_id +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__origin_exchange_record_id +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__origin_exchange_record_id +msgid "EDI origin record" +msgstr "Record origine EDI" + +#. module: edi_product_oca +#: model:ir.model.fields,help:edi_product_oca.field_product_packaging__origin_exchange_record_id +#: model:ir.model.fields,help:edi_product_oca.field_product_product__origin_exchange_record_id +#: model:ir.model.fields,help:edi_product_oca.field_product_template__origin_exchange_record_id +msgid "EDI record that originated this document." +msgstr "Record EDI che ha generato questo documento." + +#. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__edi_config +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__edi_config +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__edi_config +msgid "Edi Config" +msgstr "Configurazione EDI" + +#. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__edi_has_form_config +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__edi_has_form_config +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__edi_has_form_config +msgid "Edi Has Form Config" +msgstr "EDI ha una maschera di configurazione" + +#. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__exchange_record_ids +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__exchange_record_ids +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__exchange_record_ids +msgid "Exchange Record" +msgstr "Record di scambio" + +#. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__exchange_record_count +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__exchange_record_count +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__exchange_record_count +msgid "Exchange Record Count" +msgstr "Conteggio record di scambio" + +#. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__exchange_related_record_ids +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__exchange_related_record_ids +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__exchange_related_record_ids +msgid "Exchange Related Record" +msgstr "" + +#. module: edi_product_oca +#: model:ir.model,name:edi_product_oca.model_product_template +msgid "Product" +msgstr "Prodotto" + +#. module: edi_product_oca +#: model:ir.model,name:edi_product_oca.model_product_packaging +msgid "Product Packaging" +msgstr "Imballaggio prodotto" + +#. module: edi_product_oca +#: model:ir.model,name:edi_product_oca.model_product_product +msgid "Product Variant" +msgstr "Variante prodotto" + +#. module: edi_product_oca +#: model:ir.model.fields,help:edi_product_oca.field_product_packaging__edi_disable_auto +#: model:ir.model.fields,help:edi_product_oca.field_product_product__edi_disable_auto +#: model:ir.model.fields,help:edi_product_oca.field_product_template__edi_disable_auto +msgid "When marked, EDI automatic processing will be avoided" +msgstr "Quando selezionata, l'elaborazione EDI automatica verrà evitata" + +#~ msgid "Record generated via this endpoint" +#~ msgstr "Record generato attraverso questo endpoint" From 69f656f8bd86233dcd3e6fcd2d1606400a4624d0 Mon Sep 17 00:00:00 2001 From: mymage Date: Mon, 4 Aug 2025 11:27:11 +0000 Subject: [PATCH 05/21] Translated using Weblate (Italian) Currently translated at 100.0% (15 of 15 strings) Translation: edi-framework-16.0/edi-framework-16.0-edi_product_oca Translate-URL: https://translation.odoo-community.org/projects/edi-framework-16-0/edi-framework-16-0-edi_product_oca/it/ --- edi_product_oca/i18n/it.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/edi_product_oca/i18n/it.po b/edi_product_oca/i18n/it.po index 7519b9fc9..8ef58843a 100644 --- a/edi_product_oca/i18n/it.po +++ b/edi_product_oca/i18n/it.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-07-29 08:58+0000\n" +"PO-Revision-Date: 2025-08-04 14:25+0000\n" "Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" @@ -14,7 +14,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.6.2\n" +"X-Generator: Weblate 5.10.4\n" #. module: edi_product_oca #: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__edi_disable_auto @@ -90,7 +90,7 @@ msgstr "Conteggio record di scambio" #: model:ir.model.fields,field_description:edi_product_oca.field_product_product__exchange_related_record_ids #: model:ir.model.fields,field_description:edi_product_oca.field_product_template__exchange_related_record_ids msgid "Exchange Related Record" -msgstr "" +msgstr "Record relativo allo scambio" #. module: edi_product_oca #: model:ir.model,name:edi_product_oca.model_product_template From e35cfd6aec6efd3ad47b793f743f515408813007 Mon Sep 17 00:00:00 2001 From: davidbeckercbl Date: Fri, 26 Sep 2025 11:29:39 +0000 Subject: [PATCH 06/21] Added translation using Weblate (German) --- edi_product_oca/i18n/de.po | 115 +++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 edi_product_oca/i18n/de.po diff --git a/edi_product_oca/i18n/de.po b/edi_product_oca/i18n/de.po new file mode 100644 index 000000000..35746c207 --- /dev/null +++ b/edi_product_oca/i18n/de.po @@ -0,0 +1,115 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * edi_product_oca +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2025-09-26 15:44+0000\n" +"Last-Translator: davidbeckercbl \n" +"Language-Team: none\n" +"Language: de\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 5.10.4\n" + +#. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__edi_disable_auto +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__edi_disable_auto +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__edi_disable_auto +msgid "Disable auto" +msgstr "Automatik deaktivieren" + +#. module: edi_product_oca +#: model_terms:ir.ui.view,arch_db:edi_product_oca.product_packaging_form_view +#: model_terms:ir.ui.view,arch_db:edi_product_oca.product_template_form_view +msgid "EDI" +msgstr "EDI" + +#. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__origin_edi_endpoint_id +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__origin_edi_endpoint_id +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__origin_edi_endpoint_id +msgid "EDI origin endpoint" +msgstr "EDI-Ursprungs-Endpunkt" + +#. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__origin_exchange_type_id +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__origin_exchange_type_id +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__origin_exchange_type_id +msgid "EDI origin exchange type" +msgstr "EDI-Ursprungs-Austauschtyp" + +#. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__origin_exchange_record_id +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__origin_exchange_record_id +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__origin_exchange_record_id +msgid "EDI origin record" +msgstr "EDI-Ursprungsdatensatz" + +#. module: edi_product_oca +#: model:ir.model.fields,help:edi_product_oca.field_product_packaging__origin_exchange_record_id +#: model:ir.model.fields,help:edi_product_oca.field_product_product__origin_exchange_record_id +#: model:ir.model.fields,help:edi_product_oca.field_product_template__origin_exchange_record_id +msgid "EDI record that originated this document." +msgstr "EDI Datensatz, aus dem dieses Dokument erstellt wurde." + +#. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__edi_config +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__edi_config +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__edi_config +msgid "Edi Config" +msgstr "EDI Konfiguration" + +#. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__edi_has_form_config +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__edi_has_form_config +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__edi_has_form_config +msgid "Edi Has Form Config" +msgstr "EDI hat Formular-Konfiguration" + +#. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__exchange_record_ids +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__exchange_record_ids +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__exchange_record_ids +msgid "Exchange Record" +msgstr "Austauschdatensatz" + +#. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__exchange_record_count +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__exchange_record_count +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__exchange_record_count +msgid "Exchange Record Count" +msgstr "Anzahl Austauschdatensätze" + +#. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__exchange_related_record_ids +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__exchange_related_record_ids +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__exchange_related_record_ids +msgid "Exchange Related Record" +msgstr "Zugehöriger Austauschdatensatz" + +#. module: edi_product_oca +#: model:ir.model,name:edi_product_oca.model_product_template +msgid "Product" +msgstr "Produkt" + +#. module: edi_product_oca +#: model:ir.model,name:edi_product_oca.model_product_packaging +msgid "Product Packaging" +msgstr "Produktverpackung" + +#. module: edi_product_oca +#: model:ir.model,name:edi_product_oca.model_product_product +msgid "Product Variant" +msgstr "Produktvariante" + +#. module: edi_product_oca +#: model:ir.model.fields,help:edi_product_oca.field_product_packaging__edi_disable_auto +#: model:ir.model.fields,help:edi_product_oca.field_product_product__edi_disable_auto +#: model:ir.model.fields,help:edi_product_oca.field_product_template__edi_disable_auto +msgid "When marked, EDI automatic processing will be avoided" +msgstr "Wenn markiert, wird die automatische EDI-Verarbeitung vermieden" From dc36fecdb85c7b6b63bd80924b1259643552e7e8 Mon Sep 17 00:00:00 2001 From: Ricardoalso Date: Thu, 26 Feb 2026 14:16:33 +0100 Subject: [PATCH 07/21] [IMP] edi_product_oca: pre-commit execution --- edi_product_oca/README.rst | 23 ++++++++++--------- edi_product_oca/pyproject.toml | 3 +++ edi_product_oca/readme/CONTRIBUTORS.md | 2 ++ edi_product_oca/readme/CONTRIBUTORS.rst | 2 -- .../{DESCRIPTION.rst => DESCRIPTION.md} | 3 ++- edi_product_oca/static/description/index.html | 20 +++++++++------- .../views/product_packaging_views.xml | 12 +++++----- edi_product_oca/views/product_views.xml | 5 ++-- 8 files changed, 39 insertions(+), 31 deletions(-) create mode 100644 edi_product_oca/pyproject.toml create mode 100644 edi_product_oca/readme/CONTRIBUTORS.md delete mode 100644 edi_product_oca/readme/CONTRIBUTORS.rst rename edi_product_oca/readme/{DESCRIPTION.rst => DESCRIPTION.md} (77%) diff --git a/edi_product_oca/README.rst b/edi_product_oca/README.rst index ad33853ec..5950ca415 100644 --- a/edi_product_oca/README.rst +++ b/edi_product_oca/README.rst @@ -17,18 +17,19 @@ EDI Product :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fedi--framework-lightgray.png?logo=github - :target: https://github.com/OCA/edi-framework/tree/16.0/edi_product_oca + :target: https://github.com/OCA/edi-framework/tree/18.0/edi_product_oca :alt: OCA/edi-framework .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/edi-framework-16-0/edi-framework-16-0-edi_product_oca + :target: https://translation.odoo-community.org/projects/edi-framework-18-0/edi-framework-18-0-edi_product_oca :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/edi-framework&target_branch=16.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/edi-framework&target_branch=18.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| -Provide basic configuration for products and product packaging with EDI framework. +Provide basic configuration for products and product packaging with EDI +framework. **Table of contents** @@ -41,7 +42,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 to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -49,18 +50,18 @@ Credits ======= Authors -~~~~~~~ +------- * ForgeFlow Contributors -~~~~~~~~~~~~ +------------ -* Oriol Miranda -* Duong (Tran Quoc) +- Oriol Miranda +- Duong (Tran Quoc) Maintainers -~~~~~~~~~~~ +----------- This module is maintained by the OCA. @@ -72,6 +73,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/edi-framework `_ project on GitHub. +This module is part of the `OCA/edi-framework `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/edi_product_oca/pyproject.toml b/edi_product_oca/pyproject.toml new file mode 100644 index 000000000..4231d0ccc --- /dev/null +++ b/edi_product_oca/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/edi_product_oca/readme/CONTRIBUTORS.md b/edi_product_oca/readme/CONTRIBUTORS.md new file mode 100644 index 000000000..76cf72b67 --- /dev/null +++ b/edi_product_oca/readme/CONTRIBUTORS.md @@ -0,0 +1,2 @@ +- Oriol Miranda \ +- Duong (Tran Quoc) \ diff --git a/edi_product_oca/readme/CONTRIBUTORS.rst b/edi_product_oca/readme/CONTRIBUTORS.rst deleted file mode 100644 index 55f3afbf2..000000000 --- a/edi_product_oca/readme/CONTRIBUTORS.rst +++ /dev/null @@ -1,2 +0,0 @@ -* Oriol Miranda -* Duong (Tran Quoc) diff --git a/edi_product_oca/readme/DESCRIPTION.rst b/edi_product_oca/readme/DESCRIPTION.md similarity index 77% rename from edi_product_oca/readme/DESCRIPTION.rst rename to edi_product_oca/readme/DESCRIPTION.md index 5403d861b..06918307c 100644 --- a/edi_product_oca/readme/DESCRIPTION.rst +++ b/edi_product_oca/readme/DESCRIPTION.md @@ -1 +1,2 @@ -Provide basic configuration for products and product packaging with EDI framework. +Provide basic configuration for products and product packaging with EDI +framework. diff --git a/edi_product_oca/static/description/index.html b/edi_product_oca/static/description/index.html index c55ea712b..6e95ec654 100644 --- a/edi_product_oca/static/description/index.html +++ b/edi_product_oca/static/description/index.html @@ -8,10 +8,11 @@ /* :Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $ +:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. +Despite the name, some widely supported CSS2 features are used. See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to customize this style sheet. @@ -274,7 +275,7 @@ margin-left: 2em ; margin-right: 2em } -pre.code .ln { color: grey; } /* line numbers */ +pre.code .ln { color: gray; } /* line numbers */ pre.code, code { background-color: #eeeeee } pre.code .comment, code .comment { color: #5C6576 } pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } @@ -300,7 +301,7 @@ span.pre { white-space: pre } -span.problematic { +span.problematic, pre.problematic { color: red } span.section-subtitle { @@ -368,8 +369,9 @@

EDI Product

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:8f49d35294d2a460c2a760795e6ae4db9f0b69301fe18c483bf7bc0c1177d5b1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

-

Provide basic configuration for products and product packaging with EDI framework.

+

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

+

Provide basic configuration for products and product packaging with EDI +framework.

Table of contents

    @@ -387,7 +389,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 to smash it by providing a detailed and welcomed -feedback.

    +feedback.

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

@@ -408,11 +410,13 @@

Contributors

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.

-

This module is part of the OCA/edi-framework project on GitHub.

+

This module is part of the OCA/edi-framework project on GitHub.

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

diff --git a/edi_product_oca/views/product_packaging_views.xml b/edi_product_oca/views/product_packaging_views.xml index 25dee50ea..3f26ddf42 100644 --- a/edi_product_oca/views/product_packaging_views.xml +++ b/edi_product_oca/views/product_packaging_views.xml @@ -6,11 +6,11 @@ - - - - + + + +
@@ -29,6 +29,6 @@
-
- +
+ diff --git a/edi_product_oca/views/product_views.xml b/edi_product_oca/views/product_views.xml index 001cd31a1..a047b99a7 100644 --- a/edi_product_oca/views/product_views.xml +++ b/edi_product_oca/views/product_views.xml @@ -33,7 +33,6 @@ />
- - - + + From a6056a88f3cd5f7ca17c286d621780fbafdb62e2 Mon Sep 17 00:00:00 2001 From: Ricardoalso Date: Thu, 26 Feb 2026 14:16:33 +0100 Subject: [PATCH 08/21] [MIG] edi_product_oca: Migration to 18.0 --- edi_product_oca/README.rst | 8 ++++-- edi_product_oca/__manifest__.py | 7 ++--- edi_product_oca/i18n/edi_product_oca.pot | 9 ++++++- edi_product_oca/static/description/index.html | 26 ++++++++++++------- .../views/product_packaging_views.xml | 2 +- edi_product_oca/views/product_views.xml | 2 +- 6 files changed, 36 insertions(+), 18 deletions(-) diff --git a/edi_product_oca/README.rst b/edi_product_oca/README.rst index 5950ca415..2d11a2c73 100644 --- a/edi_product_oca/README.rst +++ b/edi_product_oca/README.rst @@ -1,3 +1,7 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + =========== EDI Product =========== @@ -7,13 +11,13 @@ EDI Product !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:8f49d35294d2a460c2a760795e6ae4db9f0b69301fe18c483bf7bc0c1177d5b1 + !! source digest: sha256:a5d2a242159e8137d9d6b6f8e2a694c0ffe6721d91b3759ddf20bdef54ad0eb6 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |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 +.. |badge2| 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 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fedi--framework-lightgray.png?logo=github diff --git a/edi_product_oca/__manifest__.py b/edi_product_oca/__manifest__.py index 6ab9419fc..50fbc6291 100644 --- a/edi_product_oca/__manifest__.py +++ b/edi_product_oca/__manifest__.py @@ -4,14 +4,15 @@ { "name": "EDI Product", "summary": """ - EDI framework configuration and base logic for products and products packaging""", - "version": "16.0.1.1.1", + EDI framework configuration and base logic + for products and products packaging""", + "version": "18.0.1.0.0", "license": "AGPL-3", "author": "ForgeFlow, Odoo Community Association (OCA)", "website": "https://github.com/OCA/edi-framework", "depends": [ "product", - "edi_oca", + "edi_endpoint_oca", ], "data": [ "views/product_views.xml", diff --git a/edi_product_oca/i18n/edi_product_oca.pot b/edi_product_oca/i18n/edi_product_oca.pot index d9357cef8..d1e8fd111 100644 --- a/edi_product_oca/i18n/edi_product_oca.pot +++ b/edi_product_oca/i18n/edi_product_oca.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 16.0\n" +"Project-Id-Version: Odoo Server 18.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -104,6 +104,13 @@ msgstr "" msgid "Product Variant" msgstr "" +#. module: edi_product_oca +#: model:ir.model.fields,help:edi_product_oca.field_product_packaging__origin_edi_endpoint_id +#: model:ir.model.fields,help:edi_product_oca.field_product_product__origin_edi_endpoint_id +#: model:ir.model.fields,help:edi_product_oca.field_product_template__origin_edi_endpoint_id +msgid "Record generated via this endpoint" +msgstr "" + #. module: edi_product_oca #: model:ir.model.fields,help:edi_product_oca.field_product_packaging__edi_disable_auto #: model:ir.model.fields,help:edi_product_oca.field_product_product__edi_disable_auto diff --git a/edi_product_oca/static/description/index.html b/edi_product_oca/static/description/index.html index 6e95ec654..280bab5c4 100644 --- a/edi_product_oca/static/description/index.html +++ b/edi_product_oca/static/description/index.html @@ -3,7 +3,7 @@ -EDI Product +README.rst -
-

EDI Product

+
+ + +Odoo Community Association + +
+

EDI Product

-

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

+

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

Provide basic configuration for products and product packaging with EDI framework.

Table of contents

@@ -385,7 +390,7 @@

EDI Product

-

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 @@ -393,22 +398,22 @@

Bug Tracker

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

-

Credits

+

Credits

-

Authors

+

Authors

  • ForgeFlow
-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -421,5 +426,6 @@

Maintainers

+
diff --git a/edi_product_oca/views/product_packaging_views.xml b/edi_product_oca/views/product_packaging_views.xml index 3f26ddf42..c6f4c4bc5 100644 --- a/edi_product_oca/views/product_packaging_views.xml +++ b/edi_product_oca/views/product_packaging_views.xml @@ -18,7 +18,7 @@ type="object" class="oe_stat_button" icon="fa-retweet" - attrs="{'invisible': [('exchange_record_count', '=', 0)]}" + invisible="exchange_record_count == 0" name="action_view_edi_records" > Date: Fri, 22 May 2026 13:23:07 +0300 Subject: [PATCH 09/21] [MIG] edi_product_oca: Migration to 19.0 --- edi_product_oca/README.rst | 10 +++--- edi_product_oca/__manifest__.py | 16 ++++++--- edi_product_oca/models/__init__.py | 2 +- edi_product_oca/models/product_packaging.py | 9 ----- edi_product_oca/models/uom_uom.py | 9 +++++ edi_product_oca/static/description/index.html | 6 ++-- .../views/product_packaging_views.xml | 34 ------------------- edi_product_oca/views/product_views.xml | 6 ---- edi_product_oca/views/uom_uom_views.xml | 28 +++++++++++++++ 9 files changed, 58 insertions(+), 62 deletions(-) delete mode 100644 edi_product_oca/models/product_packaging.py create mode 100644 edi_product_oca/models/uom_uom.py delete mode 100644 edi_product_oca/views/product_packaging_views.xml create mode 100644 edi_product_oca/views/uom_uom_views.xml diff --git a/edi_product_oca/README.rst b/edi_product_oca/README.rst index 2d11a2c73..aff4d59c6 100644 --- a/edi_product_oca/README.rst +++ b/edi_product_oca/README.rst @@ -21,13 +21,13 @@ EDI Product :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fedi--framework-lightgray.png?logo=github - :target: https://github.com/OCA/edi-framework/tree/18.0/edi_product_oca + :target: https://github.com/OCA/edi-framework/tree/19.0/edi_product_oca :alt: OCA/edi-framework .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/edi-framework-18-0/edi-framework-18-0-edi_product_oca + :target: https://translation.odoo-community.org/projects/edi-framework-19-0/edi-framework-19-0-edi_product_oca :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/edi-framework&target_branch=18.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/edi-framework&target_branch=19.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -46,7 +46,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 to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -77,6 +77,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/edi-framework `_ project on GitHub. +This module is part of the `OCA/edi-framework `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/edi_product_oca/__manifest__.py b/edi_product_oca/__manifest__.py index 50fbc6291..f4c40f4dd 100644 --- a/edi_product_oca/__manifest__.py +++ b/edi_product_oca/__manifest__.py @@ -5,17 +5,25 @@ "name": "EDI Product", "summary": """ EDI framework configuration and base logic - for products and products packaging""", - "version": "18.0.1.0.0", + for products and units of measure""", + "version": "19.0.1.0.0", "license": "AGPL-3", "author": "ForgeFlow, Odoo Community Association (OCA)", "website": "https://github.com/OCA/edi-framework", "depends": [ + # Odoo/core "product", - "edi_endpoint_oca", + # OCA/edi-framework + # Replaced ``edi_endpoint_oca`` dependency with ``edi_core_oca`` + # For version 18.0 without ``edi_endpoint_oca``, CI fails + # because ``origin_edi_endpoint_id`` is set up on product models + # while its related target ``edi.exchange.record.edi_endpoint_id`` is absent. + # A glue module similar to ``edi_sale_endpoint`` does not currently solve it. + # "edi_endpoint_oca", + "edi_core_oca", ], "data": [ "views/product_views.xml", - "views/product_packaging_views.xml", + "views/uom_uom_views.xml", ], } diff --git a/edi_product_oca/models/__init__.py b/edi_product_oca/models/__init__.py index e9bc8fca4..bbc641598 100644 --- a/edi_product_oca/models/__init__.py +++ b/edi_product_oca/models/__init__.py @@ -1,3 +1,3 @@ from . import product_product from . import product_template -from . import product_packaging +from . import uom_uom diff --git a/edi_product_oca/models/product_packaging.py b/edi_product_oca/models/product_packaging.py deleted file mode 100644 index 8dbccec84..000000000 --- a/edi_product_oca/models/product_packaging.py +++ /dev/null @@ -1,9 +0,0 @@ -# Copyright 2024 Camptocamp SA -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). - -from odoo import models - - -class ProductPackaging(models.Model): - _name = "product.packaging" - _inherit = ["product.packaging", "edi.exchange.consumer.mixin"] diff --git a/edi_product_oca/models/uom_uom.py b/edi_product_oca/models/uom_uom.py new file mode 100644 index 000000000..f732ebd1b --- /dev/null +++ b/edi_product_oca/models/uom_uom.py @@ -0,0 +1,9 @@ +# Copyright 2026 Camptocamp SA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models + + +class UomUom(models.Model): + _name = "uom.uom" + _inherit = ["uom.uom", "edi.exchange.consumer.mixin"] diff --git a/edi_product_oca/static/description/index.html b/edi_product_oca/static/description/index.html index 280bab5c4..6b17c3be7 100644 --- a/edi_product_oca/static/description/index.html +++ b/edi_product_oca/static/description/index.html @@ -374,7 +374,7 @@

EDI Product

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:a5d2a242159e8137d9d6b6f8e2a694c0ffe6721d91b3759ddf20bdef54ad0eb6 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

Provide basic configuration for products and product packaging with EDI framework.

Table of contents

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

+feedback.

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

@@ -421,7 +421,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/edi-framework project on GitHub.

+

This module is part of the OCA/edi-framework project on GitHub.

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

diff --git a/edi_product_oca/views/product_packaging_views.xml b/edi_product_oca/views/product_packaging_views.xml deleted file mode 100644 index c6f4c4bc5..000000000 --- a/edi_product_oca/views/product_packaging_views.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - product.packaging.form.view - edi_product_oca - product.packaging - - - - - - - - - - -
- -
-
-
-
-
diff --git a/edi_product_oca/views/product_views.xml b/edi_product_oca/views/product_views.xml index 8047201c7..51edbc3cb 100644 --- a/edi_product_oca/views/product_views.xml +++ b/edi_product_oca/views/product_views.xml @@ -5,11 +5,6 @@ product.template - - - - - @@ -17,7 +12,6 @@ -
+
+
+ + From e760fbffb65e7e2e46f238dbed1baa6fdf3eeb25 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Thu, 4 Jun 2026 09:34:39 +0000 Subject: [PATCH 10/21] [UPD] Update edi_product_oca.pot --- edi_product_oca/i18n/edi_product_oca.pot | 46 +++++++++++++++--------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/edi_product_oca/i18n/edi_product_oca.pot b/edi_product_oca/i18n/edi_product_oca.pot index d1e8fd111..97f1dd268 100644 --- a/edi_product_oca/i18n/edi_product_oca.pot +++ b/edi_product_oca/i18n/edi_product_oca.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 18.0\n" +"Project-Id-Version: Odoo Server 19.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -14,89 +14,103 @@ msgstr "" "Plural-Forms: \n" #. module: edi_product_oca -#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__edi_disable_auto #: model:ir.model.fields,field_description:edi_product_oca.field_product_product__edi_disable_auto #: model:ir.model.fields,field_description:edi_product_oca.field_product_template__edi_disable_auto +#: model:ir.model.fields,field_description:edi_product_oca.field_uom_uom__edi_disable_auto msgid "Disable auto" msgstr "" #. module: edi_product_oca -#: model_terms:ir.ui.view,arch_db:edi_product_oca.product_packaging_form_view +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__display_name +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__display_name +#: model:ir.model.fields,field_description:edi_product_oca.field_uom_uom__display_name +msgid "Display Name" +msgstr "" + +#. module: edi_product_oca #: model_terms:ir.ui.view,arch_db:edi_product_oca.product_template_form_view +#: model_terms:ir.ui.view,arch_db:edi_product_oca.uom_uom_form_view_inherit msgid "EDI" msgstr "" #. module: edi_product_oca -#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__origin_edi_endpoint_id #: model:ir.model.fields,field_description:edi_product_oca.field_product_product__origin_edi_endpoint_id #: model:ir.model.fields,field_description:edi_product_oca.field_product_template__origin_edi_endpoint_id +#: model:ir.model.fields,field_description:edi_product_oca.field_uom_uom__origin_edi_endpoint_id msgid "EDI origin endpoint" msgstr "" #. module: edi_product_oca -#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__origin_exchange_type_id #: model:ir.model.fields,field_description:edi_product_oca.field_product_product__origin_exchange_type_id #: model:ir.model.fields,field_description:edi_product_oca.field_product_template__origin_exchange_type_id +#: model:ir.model.fields,field_description:edi_product_oca.field_uom_uom__origin_exchange_type_id msgid "EDI origin exchange type" msgstr "" #. module: edi_product_oca -#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__origin_exchange_record_id #: model:ir.model.fields,field_description:edi_product_oca.field_product_product__origin_exchange_record_id #: model:ir.model.fields,field_description:edi_product_oca.field_product_template__origin_exchange_record_id +#: model:ir.model.fields,field_description:edi_product_oca.field_uom_uom__origin_exchange_record_id msgid "EDI origin record" msgstr "" #. module: edi_product_oca -#: model:ir.model.fields,help:edi_product_oca.field_product_packaging__origin_exchange_record_id #: model:ir.model.fields,help:edi_product_oca.field_product_product__origin_exchange_record_id #: model:ir.model.fields,help:edi_product_oca.field_product_template__origin_exchange_record_id +#: model:ir.model.fields,help:edi_product_oca.field_uom_uom__origin_exchange_record_id msgid "EDI record that originated this document." msgstr "" #. module: edi_product_oca -#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__edi_config #: model:ir.model.fields,field_description:edi_product_oca.field_product_product__edi_config #: model:ir.model.fields,field_description:edi_product_oca.field_product_template__edi_config +#: model:ir.model.fields,field_description:edi_product_oca.field_uom_uom__edi_config msgid "Edi Config" msgstr "" #. module: edi_product_oca -#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__edi_has_form_config #: model:ir.model.fields,field_description:edi_product_oca.field_product_product__edi_has_form_config #: model:ir.model.fields,field_description:edi_product_oca.field_product_template__edi_has_form_config +#: model:ir.model.fields,field_description:edi_product_oca.field_uom_uom__edi_has_form_config msgid "Edi Has Form Config" msgstr "" #. module: edi_product_oca -#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__exchange_record_ids #: model:ir.model.fields,field_description:edi_product_oca.field_product_product__exchange_record_ids #: model:ir.model.fields,field_description:edi_product_oca.field_product_template__exchange_record_ids +#: model:ir.model.fields,field_description:edi_product_oca.field_uom_uom__exchange_record_ids msgid "Exchange Record" msgstr "" #. module: edi_product_oca -#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__exchange_record_count #: model:ir.model.fields,field_description:edi_product_oca.field_product_product__exchange_record_count #: model:ir.model.fields,field_description:edi_product_oca.field_product_template__exchange_record_count +#: model:ir.model.fields,field_description:edi_product_oca.field_uom_uom__exchange_record_count msgid "Exchange Record Count" msgstr "" #. module: edi_product_oca -#: model:ir.model.fields,field_description:edi_product_oca.field_product_packaging__exchange_related_record_ids #: model:ir.model.fields,field_description:edi_product_oca.field_product_product__exchange_related_record_ids #: model:ir.model.fields,field_description:edi_product_oca.field_product_template__exchange_related_record_ids +#: model:ir.model.fields,field_description:edi_product_oca.field_uom_uom__exchange_related_record_ids msgid "Exchange Related Record" msgstr "" +#. module: edi_product_oca +#: model:ir.model.fields,field_description:edi_product_oca.field_product_product__id +#: model:ir.model.fields,field_description:edi_product_oca.field_product_template__id +#: model:ir.model.fields,field_description:edi_product_oca.field_uom_uom__id +msgid "ID" +msgstr "" + #. module: edi_product_oca #: model:ir.model,name:edi_product_oca.model_product_template msgid "Product" msgstr "" #. module: edi_product_oca -#: model:ir.model,name:edi_product_oca.model_product_packaging -msgid "Product Packaging" +#: model:ir.model,name:edi_product_oca.model_uom_uom +msgid "Product Unit of Measure" msgstr "" #. module: edi_product_oca @@ -105,15 +119,15 @@ msgid "Product Variant" msgstr "" #. module: edi_product_oca -#: model:ir.model.fields,help:edi_product_oca.field_product_packaging__origin_edi_endpoint_id #: model:ir.model.fields,help:edi_product_oca.field_product_product__origin_edi_endpoint_id #: model:ir.model.fields,help:edi_product_oca.field_product_template__origin_edi_endpoint_id +#: model:ir.model.fields,help:edi_product_oca.field_uom_uom__origin_edi_endpoint_id msgid "Record generated via this endpoint" msgstr "" #. module: edi_product_oca -#: model:ir.model.fields,help:edi_product_oca.field_product_packaging__edi_disable_auto #: model:ir.model.fields,help:edi_product_oca.field_product_product__edi_disable_auto #: model:ir.model.fields,help:edi_product_oca.field_product_template__edi_disable_auto +#: model:ir.model.fields,help:edi_product_oca.field_uom_uom__edi_disable_auto msgid "When marked, EDI automatic processing will be avoided" msgstr "" From c7f207e4cbe2de0fb371945dcf8540e7b89722a3 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 4 Jun 2026 09:37:47 +0000 Subject: [PATCH 11/21] [BOT] post-merge updates --- README.md | 1 + edi_product_oca/README.rst | 2 +- edi_product_oca/static/description/index.html | 2 +- setup/_metapackage/pyproject.toml | 3 ++- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 969da9b0b..25597f3dd 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ addon | version | maintainers | summary [edi_component_oca](edi_component_oca/) | 19.0.1.1.0 | simahawk etobella | Allow to use Connector as a source in EDI [edi_core_oca](edi_core_oca/) | 19.0.1.1.1 | simahawk etobella | Define backends, exchange types, exchange records, basic automation and views for handling EDI exchanges. [edi_endpoint_oca](edi_endpoint_oca/) | 19.0.1.1.1 | | Base module allowing configuration of custom endpoints for EDI framework. +[edi_product_oca](edi_product_oca/) | 19.0.1.0.0 | | EDI framework configuration and base logic for products and units of measure [edi_purchase_oca](edi_purchase_oca/) | 19.0.1.0.0 | | Define EDI Configuration for Purchase Orders [edi_queue_oca](edi_queue_oca/) | 19.0.1.0.0 | | Set Queue Jobs on EDI [edi_record_metadata_oca](edi_record_metadata_oca/) | 19.0.1.0.1 | simahawk | Allow to store metadata for related records. diff --git a/edi_product_oca/README.rst b/edi_product_oca/README.rst index aff4d59c6..6aab9403a 100644 --- a/edi_product_oca/README.rst +++ b/edi_product_oca/README.rst @@ -11,7 +11,7 @@ EDI Product !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:a5d2a242159e8137d9d6b6f8e2a694c0ffe6721d91b3759ddf20bdef54ad0eb6 + !! source digest: sha256:ee0de96b7491bf990f33e0a19289c7ab74afc38508a0a8ab27cb0699ad363f74 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/edi_product_oca/static/description/index.html b/edi_product_oca/static/description/index.html index 6b17c3be7..a29c0a12e 100644 --- a/edi_product_oca/static/description/index.html +++ b/edi_product_oca/static/description/index.html @@ -372,7 +372,7 @@

EDI Product

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:a5d2a242159e8137d9d6b6f8e2a694c0ffe6721d91b3759ddf20bdef54ad0eb6 +!! source digest: sha256:ee0de96b7491bf990f33e0a19289c7ab74afc38508a0a8ab27cb0699ad363f74 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

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

Provide basic configuration for products and product packaging with EDI diff --git a/setup/_metapackage/pyproject.toml b/setup/_metapackage/pyproject.toml index 629e575eb..cbbcbd4bf 100644 --- a/setup/_metapackage/pyproject.toml +++ b/setup/_metapackage/pyproject.toml @@ -1,10 +1,11 @@ [project] name = "odoo-addons-oca-edi-framework" -version = "19.0.20260603.0" +version = "19.0.20260604.0" dependencies = [ "odoo-addon-edi_component_oca==19.0.*", "odoo-addon-edi_core_oca==19.0.*", "odoo-addon-edi_endpoint_oca==19.0.*", + "odoo-addon-edi_product_oca==19.0.*", "odoo-addon-edi_purchase_oca==19.0.*", "odoo-addon-edi_queue_oca==19.0.*", "odoo-addon-edi_record_metadata_oca==19.0.*", From ef4ee65cab74f369c3d6036bf67ac92423b1ac7f Mon Sep 17 00:00:00 2001 From: Simone Orsi Date: Tue, 20 Jan 2026 17:35:55 +0100 Subject: [PATCH 12/21] edi_core: clarify quick exec usage Ignore quick_exec types when running automated actions via cron. We assume that quick exec records will be executed right away. You still have the possibility to enforce this using edi__force_generate ctx key. At the same time, make the usage more clear in the UI: quick exec is available only if you want to generate the output automatically. --- edi_core_oca/models/edi_backend.py | 9 ++++++ edi_core_oca/models/edi_exchange_record.py | 5 ++-- edi_core_oca/models/edi_exchange_type.py | 4 ++- edi_core_oca/tests/test_edi_backend_cron.py | 30 ++++++++++++++----- .../views/edi_exchange_type_views.xml | 10 +++++-- 5 files changed, 45 insertions(+), 13 deletions(-) diff --git a/edi_core_oca/models/edi_backend.py b/edi_core_oca/models/edi_backend.py index e6d4b9f6a..6b07c8c7c 100644 --- a/edi_core_oca/models/edi_backend.py +++ b/edi_core_oca/models/edi_backend.py @@ -384,6 +384,15 @@ def _output_new_records_domain(self, record_ids=None): ] if record_ids: domain.append(("id", "in", record_ids)) + # By default, it's pointless to consider records with quick_exec + # because they will be executed right away when created. + domain.append( + ( + "type_id.quick_exec", + "=", + self.env.context.get("edi__quick_exec", False), + ) + ) return domain def _output_pending_records_domain(self, skip_sent=True, record_ids=None): diff --git a/edi_core_oca/models/edi_exchange_record.py b/edi_core_oca/models/edi_exchange_record.py index ce150f044..65307acad 100644 --- a/edi_core_oca/models/edi_exchange_record.py +++ b/edi_core_oca/models/edi_exchange_record.py @@ -379,10 +379,11 @@ def _execute_next_action(self): # The backend already knows how to handle records # according to their direction and status. # Let it decide. + backend = self.backend_id.with_context(edi__quick_exec=True) if self.type_id.direction == "output": - self.backend_id._check_output_exchange_sync(record_ids=self.ids) + backend._check_output_exchange_sync(record_ids=self.ids) else: - self.backend_id._check_input_exchange_sync(record_ids=self.ids) + backend._check_input_exchange_sync(record_ids=self.ids) @api.constrains("backend_id", "type_id") def _constrain_backend(self): diff --git a/edi_core_oca/models/edi_exchange_type.py b/edi_core_oca/models/edi_exchange_type.py index d6a2cab96..ec3cc52ce 100644 --- a/edi_core_oca/models/edi_exchange_type.py +++ b/edi_core_oca/models/edi_exchange_type.py @@ -155,7 +155,9 @@ class EDIExchangeType(models.Model): quick_exec = fields.Boolean( string="Quick execution", help="When active, records of this type will be processed immediately " - "without waiting for the cron to pass by.", + "without waiting for the cron to pass by. " + "Requires auto generate flag to be active as well. " + "The cron will skip these records unless forced.", ) partner_ids = fields.Many2many( string="Enabled for partners", diff --git a/edi_core_oca/tests/test_edi_backend_cron.py b/edi_core_oca/tests/test_edi_backend_cron.py index 3e8f49147..88e3538d9 100644 --- a/edi_core_oca/tests/test_edi_backend_cron.py +++ b/edi_core_oca/tests/test_edi_backend_cron.py @@ -82,14 +82,8 @@ def test_exchange_generate_new_auto_skip_send(self): # TODO: test better? self.assertFalse(rec.ack_exchange_id) - @mute_logger(*LOGGERS) - def test_exchange_generate_new_auto_send(self): - self.exchange_type_out.exchange_file_auto_generate = True - # No content ready to be sent, will get the content and send it - for rec in self.records: - self.assertEqual(rec.edi_exchange_state, "new") - self.backend._cron_check_output_exchange_sync() - for rec in self.records: + def _test_generate_new_auto_send(self, records): + for rec in records: self.assertEqual(rec.edi_exchange_state, "output_sent") self.assertTrue( self.ExecutionAbstractModel.check_called_for(rec, "generate") @@ -99,6 +93,26 @@ def test_exchange_generate_new_auto_send(self): ) self.assertTrue(self.ExecutionAbstractModel.check_called_for(rec, "send")) + @mute_logger(*LOGGERS) + def test_exchange_generate_new_auto_send(self): + self.exchange_type_out.exchange_file_auto_generate = True + # No content ready to be sent, will get the content and send it + for rec in self.records: + self.assertEqual(rec.edi_exchange_state, "new") + self.backend._cron_check_output_exchange_sync() + self._test_generate_new_auto_send(self.records) + + @mute_logger(*LOGGERS) + def test_exchange_generate_new_quick_exec_skip_cron(self): + self.exchange_type_out.exchange_file_auto_generate = True + self.exchange_type_out.quick_exec = True + for rec in self.records: + self.assertEqual(rec.edi_exchange_state, "new") + # Records w/ quick exec should be skipped by the cron + self.backend._cron_check_output_exchange_sync() + for rec in self.records: + self.assertEqual(rec.edi_exchange_state, "new") + @mute_logger(*LOGGERS) def test_exchange_generate_output_ready_auto_send(self): # No content ready to be sent, will get the content and send it diff --git a/edi_core_oca/views/edi_exchange_type_views.xml b/edi_core_oca/views/edi_exchange_type_views.xml index e7f0be5e1..10f9805e3 100644 --- a/edi_core_oca/views/edi_exchange_type_views.xml +++ b/edi_core_oca/views/edi_exchange_type_views.xml @@ -43,11 +43,17 @@ - + + - From 2cf05de1bf50818f58fe618bc0d4937df4609f61 Mon Sep 17 00:00:00 2001 From: Hadrien Huvelle Date: Thu, 12 Mar 2026 10:02:37 +0100 Subject: [PATCH 13/21] [FIX] edi_core_oca: fix UnboundLocalError --- edi_core_oca/models/edi_backend.py | 1 + 1 file changed, 1 insertion(+) diff --git a/edi_core_oca/models/edi_backend.py b/edi_core_oca/models/edi_backend.py index 6b07c8c7c..ef4de42f3 100644 --- a/edi_core_oca/models/edi_backend.py +++ b/edi_core_oca/models/edi_backend.py @@ -448,6 +448,7 @@ def exchange_process(self, exchange_record): old_state = state = exchange_record.edi_exchange_state error = traceback = False message = None + res = None try: res = self._exchange_process(exchange_record) except self._swallable_exceptions() as err: From 09e3c556f7277e96e1475a399f32e7adbdd1ae30 Mon Sep 17 00:00:00 2001 From: Ricardoalso Date: Fri, 13 Feb 2026 10:12:47 +0100 Subject: [PATCH 14/21] [IMP] edi_core_oca: add backend-controlled auto-cleanup for exchange records Add configurable auto-archiving and auto-deletion of EDI exchange records per backend. This backend-specific settings that can be managed individually. Changes: - Add "Auto Cleanup" tab in backend form view for easy configuration - Add archive cron job that respect backend-specific retention policies - Add delete cron job that respect backend-specific retention policies - Add "Archived" filter to exchange record search view Benefits: - Each backend can have different retention policies - Setting fields to 0 (default value) disables the respective cleanup behavior - More flexible data retention management - Better control over storage and performance optimization The cron jobs iterate through backends with configured retention settings, applying appropriate cutoff values. chore(edi_core_oca): update documentation --- edi_core_oca/__manifest__.py | 2 ++ .../data/ir_cron_archive_old_edi_records.xml | 27 +++++++++++++++++++ ...r_cron_delete_old_archived_edi_records.xml | 27 +++++++++++++++++++ edi_core_oca/models/edi_backend.py | 12 +++++++++ edi_core_oca/models/edi_exchange_record.py | 1 + edi_core_oca/views/edi_backend_views.xml | 9 ++++++- .../views/edi_exchange_record_views.xml | 11 ++++++++ 7 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 edi_core_oca/data/ir_cron_archive_old_edi_records.xml create mode 100644 edi_core_oca/data/ir_cron_delete_old_archived_edi_records.xml diff --git a/edi_core_oca/__manifest__.py b/edi_core_oca/__manifest__.py index ebbc2617e..5a8e9a70b 100644 --- a/edi_core_oca/__manifest__.py +++ b/edi_core_oca/__manifest__.py @@ -27,6 +27,8 @@ "data/ir_actions_server.xml", "data/sequence.xml", "data/edi_configuration.xml", + "data/ir_cron_archive_old_edi_records.xml", + "data/ir_cron_delete_old_archived_edi_records.xml", "security/res_groups.xml", "security/ir_model_access.xml", "views/edi_backend_views.xml", diff --git a/edi_core_oca/data/ir_cron_archive_old_edi_records.xml b/edi_core_oca/data/ir_cron_archive_old_edi_records.xml new file mode 100644 index 000000000..b1e8dc78d --- /dev/null +++ b/edi_core_oca/data/ir_cron_archive_old_edi_records.xml @@ -0,0 +1,27 @@ + + + + Archive Old EDI Exchange Records + + code + +# Archive old EDI exchange records based on backend configuration +backends = env['edi.backend'].search([ + ('auto_archive_records_after_days', '>', 0) +]) +for backend in backends: + cutoff_date = datetime.datetime.now() - datetime.timedelta(days=backend.auto_archive_records_after_days) + records = model.search([ + ('backend_id', '=', backend.id), + ('create_date', '<', cutoff_date), + ('active', '=', True) + ], limit=10000, order="create_date asc") + if records: + records.action_archive() + + 1 + days + + + + diff --git a/edi_core_oca/data/ir_cron_delete_old_archived_edi_records.xml b/edi_core_oca/data/ir_cron_delete_old_archived_edi_records.xml new file mode 100644 index 000000000..05d05a111 --- /dev/null +++ b/edi_core_oca/data/ir_cron_delete_old_archived_edi_records.xml @@ -0,0 +1,27 @@ + + + + Delete Old Archived EDI Exchange Records + + code + +# Delete old archived EDI exchange records based on backend configuration +backends = env['edi.backend'].search([ + ('auto_delete_records_after_days', '>', 0) +]) +for backend in backends: + cutoff_date = datetime.datetime.now() - datetime.timedelta(days=backend.auto_delete_records_after_days) + records = model.search([ + ('backend_id', '=', backend.id), + ('create_date', '<', cutoff_date), + ('active', '=', False) + ], limit=100, order="create_date asc") + if records: + records.unlink() + + 3 + hours + + + + diff --git a/edi_core_oca/models/edi_backend.py b/edi_core_oca/models/edi_backend.py index ef4de42f3..6a065ae34 100644 --- a/edi_core_oca/models/edi_backend.py +++ b/edi_core_oca/models/edi_backend.py @@ -64,6 +64,18 @@ class EDIBackend(models.Model): ) active = fields.Boolean(default=True) company_id = fields.Many2one("res.company", string="Company") + auto_archive_records_after_days = fields.Integer( + string="Auto-archive records after (days)", + default=0, + help="Automatically archive EDI exchange records after X days. " + "Set to <= 0 to disable auto-archiving.", + ) + auto_delete_records_after_days = fields.Integer( + string="Auto-delete archived records after (days)", + default=0, + help="Automatically delete archived EDI exchange records after X days. " + "Set to <= 0 to disable auto-deletion.", + ) @property def exchange_record_model(self): diff --git a/edi_core_oca/models/edi_exchange_record.py b/edi_core_oca/models/edi_exchange_record.py index 65307acad..207464d39 100644 --- a/edi_core_oca/models/edi_exchange_record.py +++ b/edi_core_oca/models/edi_exchange_record.py @@ -145,6 +145,7 @@ class EDIExchangeRecord(models.Model): help="The record state can be rolled back manually in case of failure.", ) company_id = fields.Many2one("res.company", string="Company") + active = fields.Boolean(default=True) _identifier_uniq = models.Constraint( "unique(identifier)", "The identifier must be unique." diff --git a/edi_core_oca/views/edi_backend_views.xml b/edi_core_oca/views/edi_backend_views.xml index 2f557e0d3..5c4aea4f4 100644 --- a/edi_core_oca/views/edi_backend_views.xml +++ b/edi_core_oca/views/edi_backend_views.xml @@ -57,7 +57,14 @@ - + + + + + + + + diff --git a/edi_core_oca/views/edi_exchange_record_views.xml b/edi_core_oca/views/edi_exchange_record_views.xml index 137805ab9..3b1a3f529 100644 --- a/edi_core_oca/views/edi_exchange_record_views.xml +++ b/edi_core_oca/views/edi_exchange_record_views.xml @@ -265,6 +265,17 @@ help="Show all records created in the last 7 days" /> + + + From 080bf7bd7e8ec1f7a1507ae1ca19a0cd9ff3d3f6 Mon Sep 17 00:00:00 2001 From: Simone Orsi Date: Mon, 25 May 2026 10:08:30 +0200 Subject: [PATCH 15/21] [COV] edi_core_oca: add test cov for conf lookup Ensure the conf and the env on the record is loaded properly when the handler is initialized. --- edi_core_oca/tests/test_backend_base.py | 66 +++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/edi_core_oca/tests/test_backend_base.py b/edi_core_oca/tests/test_backend_base.py index 87219bea0..8e42f8203 100644 --- a/edi_core_oca/tests/test_backend_base.py +++ b/edi_core_oca/tests/test_backend_base.py @@ -12,6 +12,14 @@ class EDIBackendTestCaseBase(EDIBackendCommonTestCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.default_record = cls.backend.create_record( + "test_csv_input", + {"model": cls.partner._name, "res_id": cls.partner.id}, + ) + @classmethod def _setup_records(cls): # pylint:disable=missing-return super()._setup_records() @@ -96,3 +104,61 @@ def test_get_handler_no_handler(self): for action in ["receive", "input_validate", "process"]: with self.assertRaises(EDINotImplementedError): self.backend._get_exec_handler(record, action) + + # ---- conf / env_ctx resolution ------------------------------------------ + + def test_get_conf_for_record(self): + """`_get_conf_for_record` returns the action conf, or {} when missing.""" + self.exchange_type_in.advanced_settings_edit = ( + "execution_model:\n" + " receive:\n" + " env_ctx:\n" + " foo: bar\n" + " other_key: 1\n" + ) + record = self.default_record + # Action declared -> its conf + self.assertEqual( + self.backend._get_conf_for_record(record, "receive"), + {"env_ctx": {"foo": "bar"}, "other_key": 1}, + ) + # Action not declared -> empty + self.assertEqual(self.backend._get_conf_for_record(record, "process"), {}) + + def test_get_record_env_ctx(self): + """`_get_record_env_ctx` returns env_ctx for the action, else {}.""" + self.exchange_type_in.advanced_settings_edit = ( + "execution_model:\n" + " receive:\n" + " env_ctx:\n" + " foo: bar\n" + " flag: true\n" + " process:\n" + " other_key: 1\n" + ) + record = self.default_record + # Action with env_ctx -> mapping + self.assertEqual( + self.backend._get_record_env_ctx(record, "receive"), + {"foo": "bar", "flag": True}, + ) + # Action present but no env_ctx -> empty + self.assertEqual(self.backend._get_record_env_ctx(record, "process"), {}) + + def test_get_exec_handler_propagates_env_ctx(self): + """The handler returned by `_get_exec_handler` carries env_ctx keys.""" + self.exchange_type_in.advanced_settings_edit = ( + "execution_model:\n" + " receive:\n" + " env_ctx:\n" + " edi_test_marker: hello\n" + " edi_test_flag: true\n" + ) + record = self.default_record + handler = self.backend._get_exec_handler(record, "receive") + ctx = handler.__self__.env.context + self.assertEqual(ctx.get("edi_test_marker"), "hello") + self.assertEqual(ctx.get("edi_test_flag"), True) + # Action without env_ctx -> handler context not polluted + handler_proc = self.backend._get_exec_handler(record, "process") + self.assertNotIn("edi_test_marker", handler_proc.__self__.env.context) From 2499807d804c4fdefa6c1a68d729f4a9a5b5149b Mon Sep 17 00:00:00 2001 From: Simone Orsi Date: Thu, 28 May 2026 08:57:15 +0200 Subject: [PATCH 16/21] [IMP] edi_core_oca: type add action_view_exchange_records You can finally jump from a type to its existing records. --- edi_core_oca/models/edi_exchange_type.py | 32 ++++++++++++++++ edi_core_oca/tests/test_exchange_type.py | 37 +++++++++++++++++++ .../views/edi_exchange_type_views.xml | 14 +++++++ 3 files changed, 83 insertions(+) diff --git a/edi_core_oca/models/edi_exchange_type.py b/edi_core_oca/models/edi_exchange_type.py index ec3cc52ce..c8be3ebb6 100644 --- a/edi_core_oca/models/edi_exchange_type.py +++ b/edi_core_oca/models/edi_exchange_type.py @@ -147,6 +147,14 @@ class EDIExchangeType(models.Model): """, ) advanced_settings = Serialized(default={}, compute="_compute_advanced_settings") + exchange_record_ids = fields.One2many( + comodel_name="edi.exchange.record", + inverse_name="type_id", + ) + exchange_record_count = fields.Integer( + string="# Exchange Records", + compute="_compute_exchange_record_count", + ) rule_ids = fields.One2many( comodel_name="edi.exchange.type.rule", inverse_name="type_id", @@ -236,6 +244,17 @@ def _compute_ack_for_type_ids(self): for rec in self: rec.ack_for_type_ids = [x.id for x in by_type_id.get(rec.id, [])] + @api.depends("exchange_record_ids") + def _compute_exchange_record_count(self): + data = self.env["edi.exchange.record"]._read_group( + [("type_id", "in", self.ids)], + groupby=["type_id"], + aggregates=["__count"], + ) + mapped_data = {type_.id: count for type_, count in data} + for rec in self: + rec.exchange_record_count = mapped_data.get(rec.id, 0) + def get_settings(self): return self.advanced_settings @@ -327,3 +346,16 @@ def copy_data(self, default=None): default = dict(default or {}) default.setdefault("code", f"{self.code}_COPY_FIXME") return super().copy_data(default=default) + + def action_view_exchange_records(self): + self.ensure_one() + action = self.env["ir.actions.act_window"]._for_xml_id( + "edi_core_oca.act_open_edi_exchange_record_view" + ) + action["domain"] = [("type_id", "=", self.id)] + action["context"] = { + "default_type_id": self.id, + "default_backend_id": self.backend_id.id, + "search_default_type_id": self.id, + } + return action diff --git a/edi_core_oca/tests/test_exchange_type.py b/edi_core_oca/tests/test_exchange_type.py index 34b8bc958..2c1a11c28 100644 --- a/edi_core_oca/tests/test_exchange_type.py +++ b/edi_core_oca/tests/test_exchange_type.py @@ -167,3 +167,40 @@ def test_archive_rules(self): rule2.invalidate_recordset() self.assertFalse(rule1.active) self.assertFalse(rule2.active) + + def _create_exchange_record(self, exc_type): + return self.backend.create_record( + exc_type.code, + {"model": self.partner._name, "res_id": self.partner.id}, + ) + + def test_exchange_record_count(self): + exc_type = self.exchange_type_out + self.assertEqual(exc_type.exchange_record_count, 0) + rec1 = self._create_exchange_record(exc_type) + rec2 = self._create_exchange_record(exc_type) + # Record on a different type must not be counted + self._create_exchange_record(self.exchange_type_in) + self.assertEqual(exc_type.exchange_record_count, 2) + self.assertEqual(set(exc_type.exchange_record_ids.ids), {rec1.id, rec2.id}) + + def test_action_view_exchange_records(self): + exc_type = self.exchange_type_out + rec = self._create_exchange_record(exc_type) + action = exc_type.action_view_exchange_records() + self.assertEqual(action["type"], "ir.actions.act_window") + self.assertEqual(action["res_model"], "edi.exchange.record") + self.assertIn(("type_id", "=", exc_type.id), action["domain"]) + ctx = action["context"] + self.assertEqual(ctx.get("default_type_id"), exc_type.id) + self.assertEqual(ctx.get("default_backend_id"), exc_type.backend_id.id) + self.assertEqual(ctx.get("search_default_type_id"), exc_type.id) + # The action's domain must actually match the created exchange record + records = self.env[action["res_model"]].search(action["domain"]) + self.assertIn(rec, records) + + def test_action_view_exchange_records_requires_singleton(self): + with self.assertRaises(ValueError): + ( + self.exchange_type_out | self.exchange_type_in + ).action_view_exchange_records() diff --git a/edi_core_oca/views/edi_exchange_type_views.xml b/edi_core_oca/views/edi_exchange_type_views.xml index 10f9805e3..76bb21a4c 100644 --- a/edi_core_oca/views/edi_exchange_type_views.xml +++ b/edi_core_oca/views/edi_exchange_type_views.xml @@ -26,6 +26,20 @@ bg_color="bg-danger" invisible="active" /> +

+ +