From f482c45fa1e6854a8ebace4d483f72e7d91b4523 Mon Sep 17 00:00:00 2001 From: Simone Rubino Date: Mon, 14 Jan 2019 11:53:16 +0100 Subject: [PATCH 01/23] [ADD] website_sale_order_type (#253) --- website_sale_order_type/README.rst | 85 ++++ website_sale_order_type/__init__.py | 4 + website_sale_order_type/__manifest__.py | 19 + .../i18n/website_sale_order_type.pot | 20 + website_sale_order_type/models/__init__.py | 4 + website_sale_order_type/models/sale_order.py | 23 + .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 6 + website_sale_order_type/readme/USAGE.rst | 3 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 431 ++++++++++++++++++ website_sale_order_type/tests/__init__.py | 4 + .../tests/test_website_sale_order_type.py | 54 +++ 13 files changed, 654 insertions(+) create mode 100644 website_sale_order_type/README.rst create mode 100644 website_sale_order_type/__init__.py create mode 100644 website_sale_order_type/__manifest__.py create mode 100644 website_sale_order_type/i18n/website_sale_order_type.pot create mode 100644 website_sale_order_type/models/__init__.py create mode 100644 website_sale_order_type/models/sale_order.py create mode 100644 website_sale_order_type/readme/CONTRIBUTORS.rst create mode 100644 website_sale_order_type/readme/DESCRIPTION.rst create mode 100644 website_sale_order_type/readme/USAGE.rst create mode 100644 website_sale_order_type/static/description/icon.png create mode 100644 website_sale_order_type/static/description/index.html create mode 100644 website_sale_order_type/tests/__init__.py create mode 100644 website_sale_order_type/tests/test_website_sale_order_type.py diff --git a/website_sale_order_type/README.rst b/website_sale_order_type/README.rst new file mode 100644 index 0000000000..bebd2c89f8 --- /dev/null +++ b/website_sale_order_type/README.rst @@ -0,0 +1,85 @@ +======================= +Website sale order type +======================= + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fe--commerce-lightgray.png?logo=github + :target: https://github.com/OCA/e-commerce/tree/10.0/website_sale_order_type + :alt: OCA/e-commerce +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/e-commerce-10-0/e-commerce-10-0-website_sale_order_type + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/113/10.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows `sale_order_type `__ to work with website_sale. + +This module is useful for users having a sale order type defined in their Partner form: +when these users buy a product in the e-commerce, the sale order generated will have the same sale order type that is defined in their Partner form. + +Note that the sale order type is defined contact by contact and not at Company level. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +#. In the backend (Sales -> Customers) set a sale order type in any contact; +#. Log in with the associated user in the e-commerce website and buy a product; +#. Check that the created sale oder has the same sale order type that has been set in the contact. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Agile Business Group + +Contributors +~~~~~~~~~~~~ + +* Simone Rubino + +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/e-commerce `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/website_sale_order_type/__init__.py b/website_sale_order_type/__init__.py new file mode 100644 index 0000000000..b44d765940 --- /dev/null +++ b/website_sale_order_type/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import models diff --git a/website_sale_order_type/__manifest__.py b/website_sale_order_type/__manifest__.py new file mode 100644 index 0000000000..a7b27ba5d2 --- /dev/null +++ b/website_sale_order_type/__manifest__.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 Simone Rubino - Agile Business Group +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "Website sale order type", + "summary": "This module allows sale_order_type to work with website_sale.", + "version": "10.0.1.0.0", + "development_status": "Beta", + "category": "Website", + "website": "https://github.com/OCA/e-commerce/tree/" + "10.0/website_sale_order_type", + "author": "Agile Business Group, Odoo Community Association (OCA)", + "license": "AGPL-3", + "depends": [ + "website_sale", + "sale_order_type" + ], + "auto_install": True +} diff --git a/website_sale_order_type/i18n/website_sale_order_type.pot b/website_sale_order_type/i18n/website_sale_order_type.pot new file mode 100644 index 0000000000..7a26582e6e --- /dev/null +++ b/website_sale_order_type/i18n/website_sale_order_type.pot @@ -0,0 +1,20 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_sale_order_type +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.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: website_sale_order_type +#: model:ir.model,name:website_sale_order_type.model_sale_order +msgid "Sales Order" +msgstr "" + diff --git a/website_sale_order_type/models/__init__.py b/website_sale_order_type/models/__init__.py new file mode 100644 index 0000000000..936a98f598 --- /dev/null +++ b/website_sale_order_type/models/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import sale_order diff --git a/website_sale_order_type/models/sale_order.py b/website_sale_order_type/models/sale_order.py new file mode 100644 index 0000000000..2154f9e5b5 --- /dev/null +++ b/website_sale_order_type/models/sale_order.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 Simone Rubino - Agile Business Group +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import api, models + + +class SaleOrder(models.Model): + _inherit = 'sale.order' + + @api.multi + def _cart_update( + self, product_id=None, line_id=None, add_qty=0, set_qty=0, + attributes=None, **kwargs): + self.ensure_one() + res = super(SaleOrder, self)._cart_update( + product_id=product_id, line_id=line_id, + add_qty=add_qty, set_qty=set_qty, attributes=attributes, **kwargs) + if self.partner_id.sale_type: + self.type_id = self.partner_id.sale_type + self.onchange_type_id() + self.match_order_type() + return res diff --git a/website_sale_order_type/readme/CONTRIBUTORS.rst b/website_sale_order_type/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000000..a200b876a6 --- /dev/null +++ b/website_sale_order_type/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Simone Rubino diff --git a/website_sale_order_type/readme/DESCRIPTION.rst b/website_sale_order_type/readme/DESCRIPTION.rst new file mode 100644 index 0000000000..d364f3c6ce --- /dev/null +++ b/website_sale_order_type/readme/DESCRIPTION.rst @@ -0,0 +1,6 @@ +This module allows `sale_order_type `__ to work with website_sale. + +This module is useful for users having a sale order type defined in their Partner form: +when these users buy a product in the e-commerce, the sale order generated will have the same sale order type that is defined in their Partner form. + +Note that the sale order type is defined contact by contact and not at Company level. diff --git a/website_sale_order_type/readme/USAGE.rst b/website_sale_order_type/readme/USAGE.rst new file mode 100644 index 0000000000..8f0cd58bca --- /dev/null +++ b/website_sale_order_type/readme/USAGE.rst @@ -0,0 +1,3 @@ +#. In the backend (Sales -> Customers) set a sale order type in any contact; +#. Log in with the associated user in the e-commerce website and buy a product; +#. Check that the created sale oder has the same sale order type that has been set in the contact. diff --git a/website_sale_order_type/static/description/icon.png b/website_sale_order_type/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/website_sale_order_type/static/description/index.html b/website_sale_order_type/static/description/index.html new file mode 100644 index 0000000000..46e216fa61 --- /dev/null +++ b/website_sale_order_type/static/description/index.html @@ -0,0 +1,431 @@ + + + + + + +Website sale order type + + + +
+

Website sale order type

+ + +

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

+

This module allows sale_order_type to work with website_sale.

+

This module is useful for users having a sale order type defined in their Partner form: +when these users buy a product in the e-commerce, the sale order generated will have the same sale order type that is defined in their Partner form.

+

Note that the sale order type is defined contact by contact and not at Company level.

+

Table of contents

+ +
+

Usage

+
    +
  1. In the backend (Sales -> Customers) set a sale order type in any contact;
  2. +
  3. Log in with the associated user in the e-commerce website and buy a product;
  4. +
  5. Check that the created sale oder has the same sale order type that has been set in the contact.
  6. +
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • Agile Business Group
  • +
+
+
+

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/e-commerce project on GitHub.

+

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

+
+
+
+ + diff --git a/website_sale_order_type/tests/__init__.py b/website_sale_order_type/tests/__init__.py new file mode 100644 index 0000000000..88b286d8aa --- /dev/null +++ b/website_sale_order_type/tests/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import test_website_sale_order_type diff --git a/website_sale_order_type/tests/test_website_sale_order_type.py b/website_sale_order_type/tests/test_website_sale_order_type.py new file mode 100644 index 0000000000..68d1ce6e1d --- /dev/null +++ b/website_sale_order_type/tests/test_website_sale_order_type.py @@ -0,0 +1,54 @@ +# Copyright 2018 Simone Rubino - Agile Business Group +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from odoo import api +from odoo.tests import HttpCase + + +class TestFrontend(HttpCase): + + def setUp(self): + super(TestFrontend, self).setUp() + self.env = api.Environment(self.registry.test_cr, self.uid, {}) + self.sale_type_model = self.env['sale.order.type'] + + self.partner = self.env.ref('base.partner_root') + self.sale_type = self.create_sale_type() + + def create_sale_type(self): + self.sequence = self.env['ir.sequence'].create({ + 'name': 'Test Sales Order', + 'code': 'sale.order', + 'prefix': 'TSO', + 'padding': 3, + }) + self.journal = self.env['account.journal'].search( + [('type', '=', 'sale')], limit=1) + self.warehouse = self.env.ref('stock.stock_warehouse_shop0') + self.immediate_payment = self.env.ref( + 'account.account_payment_term_immediate') + self.sale_pricelist = self.env.ref('product.list0') + self.free_carrier = self.env.ref('stock.incoterm_FCA') + return self.sale_type_model.create({ + 'name': 'Test Sale Order Type', + 'sequence_id': self.sequence.id, + 'journal_id': self.journal.id, + 'warehouse_id': self.warehouse.id, + 'picking_policy': 'one', + 'payment_term_id': self.immediate_payment.id, + 'pricelist_id': self.sale_pricelist.id, + 'incoterm_id': self.free_carrier.id, + }) + + def test_website_sale_order_type(self): + self.partner.sale_type = self.sale_type + existing_orders = self.env['sale.order'].search([]) + # In frontend, create an order + tour_prefix = "odoo.__DEBUG__.services['web_tour.tour']" + self.phantom_js( + "/", + tour_prefix + ".run('shop_buy_product')", + tour_prefix + ".tours.shop_buy_product.ready", + login="admin") + created_order = self.env['sale.order'].search([ + ('id', 'not in', existing_orders.ids)]) + self.assertEqual(created_order.type_id, self.sale_type) From e64e5f864476f69066fd51d8838d969da1c56de9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Marques?= Date: Mon, 26 Oct 2020 08:05:04 +0000 Subject: [PATCH 02/23] [MIG] website_sale_order_type: Migration to 11.0 --- website_sale_order_type/__init__.py | 1 - website_sale_order_type/__manifest__.py | 4 ++-- website_sale_order_type/models/__init__.py | 1 - website_sale_order_type/models/sale_order.py | 1 - website_sale_order_type/readme/CONTRIBUTORS.rst | 4 ++++ website_sale_order_type/tests/__init__.py | 1 - 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/website_sale_order_type/__init__.py b/website_sale_order_type/__init__.py index b44d765940..31660d6a96 100644 --- a/website_sale_order_type/__init__.py +++ b/website_sale_order_type/__init__.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from . import models diff --git a/website_sale_order_type/__manifest__.py b/website_sale_order_type/__manifest__.py index a7b27ba5d2..f990ecfc12 100644 --- a/website_sale_order_type/__manifest__.py +++ b/website_sale_order_type/__manifest__.py @@ -1,10 +1,10 @@ -# -*- coding: utf-8 -*- # Copyright 2018 Simone Rubino - Agile Business Group +# Copyright 2020 Tecnativa - João Marques # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Website sale order type", "summary": "This module allows sale_order_type to work with website_sale.", - "version": "10.0.1.0.0", + "version": "11.0.1.0.0", "development_status": "Beta", "category": "Website", "website": "https://github.com/OCA/e-commerce/tree/" diff --git a/website_sale_order_type/models/__init__.py b/website_sale_order_type/models/__init__.py index 936a98f598..cbd69320b0 100644 --- a/website_sale_order_type/models/__init__.py +++ b/website_sale_order_type/models/__init__.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from . import sale_order diff --git a/website_sale_order_type/models/sale_order.py b/website_sale_order_type/models/sale_order.py index 2154f9e5b5..3f7f412796 100644 --- a/website_sale_order_type/models/sale_order.py +++ b/website_sale_order_type/models/sale_order.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2018 Simone Rubino - Agile Business Group # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). diff --git a/website_sale_order_type/readme/CONTRIBUTORS.rst b/website_sale_order_type/readme/CONTRIBUTORS.rst index a200b876a6..01ed86b848 100644 --- a/website_sale_order_type/readme/CONTRIBUTORS.rst +++ b/website_sale_order_type/readme/CONTRIBUTORS.rst @@ -1 +1,5 @@ * Simone Rubino + +* `Tecnativa `_: + + * João Marques diff --git a/website_sale_order_type/tests/__init__.py b/website_sale_order_type/tests/__init__.py index 88b286d8aa..e27813a1a7 100644 --- a/website_sale_order_type/tests/__init__.py +++ b/website_sale_order_type/tests/__init__.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from . import test_website_sale_order_type From b71669ed753d571bfea01511065314b12f292968 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Marques?= Date: Mon, 26 Oct 2020 12:20:36 +0000 Subject: [PATCH 03/23] [MIG] website_sale_order_type: Migration to 12.0 --- website_sale_order_type/README.rst | 22 ++++++++++++++----- website_sale_order_type/__manifest__.py | 6 ++--- website_sale_order_type/models/sale_order.py | 8 +++---- .../static/description/index.html | 18 +++++++++++---- .../tests/test_website_sale_order_type.py | 4 ++-- 5 files changed, 40 insertions(+), 18 deletions(-) diff --git a/website_sale_order_type/README.rst b/website_sale_order_type/README.rst index bebd2c89f8..fca8369b9f 100644 --- a/website_sale_order_type/README.rst +++ b/website_sale_order_type/README.rst @@ -14,13 +14,13 @@ Website sale order type :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fe--commerce-lightgray.png?logo=github - :target: https://github.com/OCA/e-commerce/tree/10.0/website_sale_order_type + :target: https://github.com/OCA/e-commerce/tree/12.0/website_sale_order_type :alt: OCA/e-commerce .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/e-commerce-10-0/e-commerce-10-0-website_sale_order_type + :target: https://translation.odoo-community.org/projects/e-commerce-12-0/e-commerce-12-0-website_sale_order_type :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/113/10.0 + :target: https://runbot.odoo-community.org/runbot/113/12.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -50,7 +50,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -67,6 +67,10 @@ Contributors * Simone Rubino +* `Tecnativa `_: + + * João Marques + Maintainers ~~~~~~~~~~~ @@ -80,6 +84,14 @@ 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/e-commerce `_ project on GitHub. +.. |maintainer-joao-p-marques| image:: https://github.com/joao-p-marques.png?size=40px + :target: https://github.com/joao-p-marques + :alt: joao-p-marques + +Current `maintainer `__: + +|maintainer-joao-p-marques| + +This module is part of the `OCA/e-commerce `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/website_sale_order_type/__manifest__.py b/website_sale_order_type/__manifest__.py index f990ecfc12..71ae7dbce2 100644 --- a/website_sale_order_type/__manifest__.py +++ b/website_sale_order_type/__manifest__.py @@ -4,11 +4,11 @@ { "name": "Website sale order type", "summary": "This module allows sale_order_type to work with website_sale.", - "version": "11.0.1.0.0", + "version": "12.0.1.0.0", "development_status": "Beta", "category": "Website", - "website": "https://github.com/OCA/e-commerce/tree/" - "10.0/website_sale_order_type", + "website": "https://github.com/OCA/e-commerce/", + "maintainers": ["joao-p-marques"], "author": "Agile Business Group, Odoo Community Association (OCA)", "license": "AGPL-3", "depends": [ diff --git a/website_sale_order_type/models/sale_order.py b/website_sale_order_type/models/sale_order.py index 3f7f412796..7e988f0143 100644 --- a/website_sale_order_type/models/sale_order.py +++ b/website_sale_order_type/models/sale_order.py @@ -15,8 +15,8 @@ def _cart_update( res = super(SaleOrder, self)._cart_update( product_id=product_id, line_id=line_id, add_qty=add_qty, set_qty=set_qty, attributes=attributes, **kwargs) - if self.partner_id.sale_type: - self.type_id = self.partner_id.sale_type - self.onchange_type_id() - self.match_order_type() + sale_type = (self.partner_id.sale_type or + self.partner_id.commercial_partner_id.sale_type) + if sale_type: + self.type_id = sale_type return res diff --git a/website_sale_order_type/static/description/index.html b/website_sale_order_type/static/description/index.html index 46e216fa61..671e57992e 100644 --- a/website_sale_order_type/static/description/index.html +++ b/website_sale_order_type/static/description/index.html @@ -367,7 +367,7 @@

Website sale order type

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

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

+

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

This module allows sale_order_type to work with website_sale.

This module is useful for users having a sale order type defined in their Partner form: when these users buy a product in the e-commerce, the sale order generated will have the same sale order type that is defined in their Partner form.

@@ -398,7 +398,7 @@

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -411,8 +411,16 @@

Authors

Contributors

+
@@ -422,7 +430,9 @@

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/e-commerce project on GitHub.

+

Current maintainer:

+

joao-p-marques

+

This module is part of the OCA/e-commerce project on GitHub.

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

diff --git a/website_sale_order_type/tests/test_website_sale_order_type.py b/website_sale_order_type/tests/test_website_sale_order_type.py index 68d1ce6e1d..2ed1185f05 100644 --- a/website_sale_order_type/tests/test_website_sale_order_type.py +++ b/website_sale_order_type/tests/test_website_sale_order_type.py @@ -11,7 +11,7 @@ def setUp(self): self.env = api.Environment(self.registry.test_cr, self.uid, {}) self.sale_type_model = self.env['sale.order.type'] - self.partner = self.env.ref('base.partner_root') + self.partner = self.env.ref('base.partner_admin') self.sale_type = self.create_sale_type() def create_sale_type(self): @@ -27,7 +27,7 @@ def create_sale_type(self): self.immediate_payment = self.env.ref( 'account.account_payment_term_immediate') self.sale_pricelist = self.env.ref('product.list0') - self.free_carrier = self.env.ref('stock.incoterm_FCA') + self.free_carrier = self.env.ref('account.incoterm_FCA') return self.sale_type_model.create({ 'name': 'Test Sale Order Type', 'sequence_id': self.sequence.id, From 51749d453b8d24e6078f8e93e7c4004fe298fecc Mon Sep 17 00:00:00 2001 From: Jairo Llopis Date: Fri, 6 Nov 2020 10:39:44 +0000 Subject: [PATCH 04/23] [FIX] website_sale_order_type: speed up tour Without this patch, it's easy that the tour fails randomly due to a timeout when generating the sales order report. These assets can take a long time, increasing when more addons are installed. In an integrated database, this patch makes the test go from this log: 2020-11-06 10:34:53,941 34 INFO devel werkzeug: 127.0.0.1 - - [06/Nov/2020 10:34:53] "POST /payment/transfer/feedback HTTP/1.1" 302 - 730 4.368 11.800 To this one: 2020-11-06 10:32:55,517 34 INFO devel werkzeug: 127.0.0.1 - - [06/Nov/2020 10:32:55] "POST /payment/transfer/feedback HTTP/1.1" 302 - 479 2.906 5.771 That's about 50% the time. In the same patch, I remove the `self.env` patch that was only needed for Odoo v11 and lower. --- .../tests/test_website_sale_order_type.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/website_sale_order_type/tests/test_website_sale_order_type.py b/website_sale_order_type/tests/test_website_sale_order_type.py index 2ed1185f05..59c9cde965 100644 --- a/website_sale_order_type/tests/test_website_sale_order_type.py +++ b/website_sale_order_type/tests/test_website_sale_order_type.py @@ -1,6 +1,5 @@ # Copyright 2018 Simone Rubino - Agile Business Group # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from odoo import api from odoo.tests import HttpCase @@ -8,7 +7,6 @@ class TestFrontend(HttpCase): def setUp(self): super(TestFrontend, self).setUp() - self.env = api.Environment(self.registry.test_cr, self.uid, {}) self.sale_type_model = self.env['sale.order.type'] self.partner = self.env.ref('base.partner_admin') @@ -42,6 +40,17 @@ def create_sale_type(self): def test_website_sale_order_type(self): self.partner.sale_type = self.sale_type existing_orders = self.env['sale.order'].search([]) + # Precreate SO report assets cache to avoid tour step timeouts + views = ( + "web.assets_common", + "web.report_assets_common", + "web.report_assets_pdf", + ) + for view in views: + self.env["ir.qweb"]._get_asset_nodes( + view, self.env.context, js=False) + self.env["ir.qweb"]._get_asset_nodes( + view, self.env.context, css=False) # In frontend, create an order tour_prefix = "odoo.__DEBUG__.services['web_tour.tour']" self.phantom_js( From e650473b04b16c3e1bc0dbca5fee8d305db47758 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Marques?= Date: Tue, 5 Jan 2021 13:51:20 +0000 Subject: [PATCH 05/23] [FIX] website_sale_order_type: simplify tour With the old tour, timeout problems started to occur, even with 7830084547e7df29c6dcd377dd4dc39a0319b594 This partially reverts that, and instead uses a simpler tour to test the creation of the SO. TT26399 --- website_sale_order_type/__manifest__.py | 3 ++ website_sale_order_type/demo/assets.xml | 10 ++++++ .../i18n/website_sale_order_type.pot | 4 +-- .../src/js/website_sale_order_type_tour.js | 32 +++++++++++++++++++ .../tests/test_website_sale_order_type.py | 17 ++-------- 5 files changed, 50 insertions(+), 16 deletions(-) create mode 100644 website_sale_order_type/demo/assets.xml create mode 100644 website_sale_order_type/static/src/js/website_sale_order_type_tour.js diff --git a/website_sale_order_type/__manifest__.py b/website_sale_order_type/__manifest__.py index 71ae7dbce2..0ea7a011f6 100644 --- a/website_sale_order_type/__manifest__.py +++ b/website_sale_order_type/__manifest__.py @@ -15,5 +15,8 @@ "website_sale", "sale_order_type" ], + "demo": [ + "demo/assets.xml" + ], "auto_install": True } diff --git a/website_sale_order_type/demo/assets.xml b/website_sale_order_type/demo/assets.xml new file mode 100644 index 0000000000..b10d3518f0 --- /dev/null +++ b/website_sale_order_type/demo/assets.xml @@ -0,0 +1,10 @@ + + + +