From 5a730a3f72a02725165e0f61e7c63d4c99950782 Mon Sep 17 00:00:00 2001 From: David Beal Date: Fri, 10 Jan 2020 09:50:50 +0100 Subject: [PATCH 1/2] ADD module pos_default_partner --- pos_default_partner/README.rst | 80 ++++ pos_default_partner/__init__.py | 1 + pos_default_partner/__manifest__.py | 21 + pos_default_partner/models/__init__.py | 3 + pos_default_partner/models/company.py | 11 + pos_default_partner/models/config.py | 12 + pos_default_partner/models/pos_order.py | 17 + pos_default_partner/readme/CONFIGURE.rst | 1 + pos_default_partner/readme/CONTRIBUTORS.rst | 3 + pos_default_partner/readme/DESCRIPTION.rst | 1 + .../static/description/index.html | 430 ++++++++++++++++++ pos_default_partner/views/config_view.xml | 25 + 12 files changed, 605 insertions(+) create mode 100644 pos_default_partner/README.rst create mode 100644 pos_default_partner/__init__.py create mode 100644 pos_default_partner/__manifest__.py create mode 100644 pos_default_partner/models/__init__.py create mode 100644 pos_default_partner/models/company.py create mode 100644 pos_default_partner/models/config.py create mode 100644 pos_default_partner/models/pos_order.py create mode 100644 pos_default_partner/readme/CONFIGURE.rst create mode 100644 pos_default_partner/readme/CONTRIBUTORS.rst create mode 100644 pos_default_partner/readme/DESCRIPTION.rst create mode 100644 pos_default_partner/static/description/index.html create mode 100644 pos_default_partner/views/config_view.xml diff --git a/pos_default_partner/README.rst b/pos_default_partner/README.rst new file mode 100644 index 00000000..32e8e05c --- /dev/null +++ b/pos_default_partner/README.rst @@ -0,0 +1,80 @@ +============================= +Point Of Sale Default Partner +============================= + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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%2Fpos-lightgray.png?logo=github + :target: https://github.com/OCA/pos/tree/12.0/pos_default_partner + :alt: OCA/pos +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/pos-12-0/pos-12-0-pos_default_partner + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/184/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Define a default partner for Point Of Sale order on each company. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +Set default partner on POS settings + +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 +~~~~~~~ + +* Akretion + +Contributors +~~~~~~~~~~~~ + +* Akretion + + * David Beal + +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/pos `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/pos_default_partner/__init__.py b/pos_default_partner/__init__.py new file mode 100644 index 00000000..0650744f --- /dev/null +++ b/pos_default_partner/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/pos_default_partner/__manifest__.py b/pos_default_partner/__manifest__.py new file mode 100644 index 00000000..a6d0e071 --- /dev/null +++ b/pos_default_partner/__manifest__.py @@ -0,0 +1,21 @@ +# copyright 2020 Akretion David BEAL +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +{ + "name": "Point Of Sale Default Partner", + "summary": "Add a default customer in pos order", + "license": "AGPL-3", + "version": "12.0.1.0.0", + "author": "Akretion," + "Odoo Community Association (OCA)", + "maintainer": "Akretion", + "category": "Point of sale", + "depends": [ + "point_of_sale", + ], + "data": [ + "views/config_view.xml" + ], + "website": "https://github.com/OCA/pos", + "installable": True, +} diff --git a/pos_default_partner/models/__init__.py b/pos_default_partner/models/__init__.py new file mode 100644 index 00000000..f8c83388 --- /dev/null +++ b/pos_default_partner/models/__init__.py @@ -0,0 +1,3 @@ +from . import company +from . import config +from . import pos_order diff --git a/pos_default_partner/models/company.py b/pos_default_partner/models/company.py new file mode 100644 index 00000000..dca35f36 --- /dev/null +++ b/pos_default_partner/models/company.py @@ -0,0 +1,11 @@ +# copyright 2020 Akretion David BEAL +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import fields, models + + +class ResCompany(models.Model): + _inherit = "res.company" + + pos_default_partner_id = fields.Many2one( + comodel_name="res.partner", string="Default customer") diff --git a/pos_default_partner/models/config.py b/pos_default_partner/models/config.py new file mode 100644 index 00000000..f3a8481a --- /dev/null +++ b/pos_default_partner/models/config.py @@ -0,0 +1,12 @@ +# copyright 2020 Akretion David BEAL +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import fields, models + + +class ResConfigSettings(models.TransientModel): + _inherit = "res.config.settings" + + pos_default_partner_id = fields.Many2one( + comodel_name="res.partner", readonly=False, + related="company_id.pos_default_partner_id") diff --git a/pos_default_partner/models/pos_order.py b/pos_default_partner/models/pos_order.py new file mode 100644 index 00000000..5d2eac2c --- /dev/null +++ b/pos_default_partner/models/pos_order.py @@ -0,0 +1,17 @@ +# copyright 2020 Akretion David BEAL +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import api, models + + +class PosOrder(models.Model): + _inherit = "pos.order" + + @api.model + def create(self, vals): + if not vals.get("partner_id"): + company_id = vals.get("company_id") or self.env.user.company_id.id + partner = self.env["res.company"].browse(company_id).pos_default_partner_id + if partner: + vals["partner_id"] = partner.id + return super().create(vals) diff --git a/pos_default_partner/readme/CONFIGURE.rst b/pos_default_partner/readme/CONFIGURE.rst new file mode 100644 index 00000000..047aa92a --- /dev/null +++ b/pos_default_partner/readme/CONFIGURE.rst @@ -0,0 +1 @@ +Set default partner on POS settings diff --git a/pos_default_partner/readme/CONTRIBUTORS.rst b/pos_default_partner/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000..bb99f510 --- /dev/null +++ b/pos_default_partner/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* Akretion + + * David Beal diff --git a/pos_default_partner/readme/DESCRIPTION.rst b/pos_default_partner/readme/DESCRIPTION.rst new file mode 100644 index 00000000..aea9cc11 --- /dev/null +++ b/pos_default_partner/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +Define a default partner for Point Of Sale order on each company. diff --git a/pos_default_partner/static/description/index.html b/pos_default_partner/static/description/index.html new file mode 100644 index 00000000..7ef3c9e2 --- /dev/null +++ b/pos_default_partner/static/description/index.html @@ -0,0 +1,430 @@ + + + + + + +Point Of Sale Default Partner + + + +
+

Point Of Sale Default Partner

+ + +

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

+

Define a default partner for Point Of Sale order on each company.

+

Table of contents

+ +
+

Configuration

+

Set default partner on POS settings

+
+
+

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

+
    +
  • Akretion
  • +
+
+
+

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

+

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

+
+
+
+ + diff --git a/pos_default_partner/views/config_view.xml b/pos_default_partner/views/config_view.xml new file mode 100644 index 00000000..25592613 --- /dev/null +++ b/pos_default_partner/views/config_view.xml @@ -0,0 +1,25 @@ + + + + + + res.config.settings + + + +

POS customer

+
+
+
+
+
+
+
+
+
+ +
From 0f0508a737b0f03a0dac3eb361651484be084618 Mon Sep 17 00:00:00 2001 From: Jaime Arroyo Date: Thu, 2 Jul 2020 16:07:45 +0200 Subject: [PATCH 2/2] [IMP] pos_default_partner add continuation --- pos_default_partner/README.rst | 8 ++++- pos_default_partner/__manifest__.py | 2 +- pos_default_partner/models/__init__.py | 3 +- pos_default_partner/models/company.py | 11 ------- pos_default_partner/models/config.py | 12 ------- pos_default_partner/models/pos_config.py | 14 ++++++++ pos_default_partner/models/pos_order.py | 8 ++--- pos_default_partner/readme/CONFIGURE.rst | 3 +- pos_default_partner/readme/ROADMAP.rst | 1 + .../static/description/index.html | 28 +++++++++------- pos_default_partner/views/config_view.xml | 25 -------------- pos_default_partner/views/pos_config.xml | 33 +++++++++++++++++++ 12 files changed, 79 insertions(+), 69 deletions(-) delete mode 100644 pos_default_partner/models/company.py delete mode 100644 pos_default_partner/models/config.py create mode 100644 pos_default_partner/models/pos_config.py create mode 100644 pos_default_partner/readme/ROADMAP.rst delete mode 100644 pos_default_partner/views/config_view.xml create mode 100644 pos_default_partner/views/pos_config.xml diff --git a/pos_default_partner/README.rst b/pos_default_partner/README.rst index 32e8e05c..7307b41f 100644 --- a/pos_default_partner/README.rst +++ b/pos_default_partner/README.rst @@ -35,7 +35,13 @@ Define a default partner for Point Of Sale order on each company. Configuration ============= -Set default partner on POS settings +Go to Point of Sale's settings page and select a default customer for a +specific PoS configuration. + +Known issues / Roadmap +====================== + +Set the default customer also on the PoS UI. Bug Tracker =========== diff --git a/pos_default_partner/__manifest__.py b/pos_default_partner/__manifest__.py index a6d0e071..26274209 100644 --- a/pos_default_partner/__manifest__.py +++ b/pos_default_partner/__manifest__.py @@ -14,7 +14,7 @@ "point_of_sale", ], "data": [ - "views/config_view.xml" + 'views/pos_config.xml', ], "website": "https://github.com/OCA/pos", "installable": True, diff --git a/pos_default_partner/models/__init__.py b/pos_default_partner/models/__init__.py index f8c83388..7723e42a 100644 --- a/pos_default_partner/models/__init__.py +++ b/pos_default_partner/models/__init__.py @@ -1,3 +1,2 @@ -from . import company -from . import config from . import pos_order +from . import pos_config diff --git a/pos_default_partner/models/company.py b/pos_default_partner/models/company.py deleted file mode 100644 index dca35f36..00000000 --- a/pos_default_partner/models/company.py +++ /dev/null @@ -1,11 +0,0 @@ -# copyright 2020 Akretion David BEAL -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). - -from odoo import fields, models - - -class ResCompany(models.Model): - _inherit = "res.company" - - pos_default_partner_id = fields.Many2one( - comodel_name="res.partner", string="Default customer") diff --git a/pos_default_partner/models/config.py b/pos_default_partner/models/config.py deleted file mode 100644 index f3a8481a..00000000 --- a/pos_default_partner/models/config.py +++ /dev/null @@ -1,12 +0,0 @@ -# copyright 2020 Akretion David BEAL -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). - -from odoo import fields, models - - -class ResConfigSettings(models.TransientModel): - _inherit = "res.config.settings" - - pos_default_partner_id = fields.Many2one( - comodel_name="res.partner", readonly=False, - related="company_id.pos_default_partner_id") diff --git a/pos_default_partner/models/pos_config.py b/pos_default_partner/models/pos_config.py new file mode 100644 index 00000000..96f2df8b --- /dev/null +++ b/pos_default_partner/models/pos_config.py @@ -0,0 +1,14 @@ +# Copyright 2020 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class PosConfig(models.Model): + + _inherit = 'pos.config' + + default_partner_id = fields.Many2one( + comodel_name="res.partner", + string="Default Customer", + ) diff --git a/pos_default_partner/models/pos_order.py b/pos_default_partner/models/pos_order.py index 5d2eac2c..a6300bfa 100644 --- a/pos_default_partner/models/pos_order.py +++ b/pos_default_partner/models/pos_order.py @@ -9,9 +9,7 @@ class PosOrder(models.Model): @api.model def create(self, vals): - if not vals.get("partner_id"): - company_id = vals.get("company_id") or self.env.user.company_id.id - partner = self.env["res.company"].browse(company_id).pos_default_partner_id - if partner: - vals["partner_id"] = partner.id + session = self.env["pos.session"].browse(vals.get("session_id")) + if session.config_id.default_partner_id and not vals.get("partner_id"): + vals["partner_id"] = session.config_id.default_partner_id.id return super().create(vals) diff --git a/pos_default_partner/readme/CONFIGURE.rst b/pos_default_partner/readme/CONFIGURE.rst index 047aa92a..896aabcf 100644 --- a/pos_default_partner/readme/CONFIGURE.rst +++ b/pos_default_partner/readme/CONFIGURE.rst @@ -1 +1,2 @@ -Set default partner on POS settings +Go to Point of Sale's settings page and select a default customer for a +specific PoS configuration. diff --git a/pos_default_partner/readme/ROADMAP.rst b/pos_default_partner/readme/ROADMAP.rst new file mode 100644 index 00000000..44ddb1d9 --- /dev/null +++ b/pos_default_partner/readme/ROADMAP.rst @@ -0,0 +1 @@ +Set the default customer also on the PoS UI. diff --git a/pos_default_partner/static/description/index.html b/pos_default_partner/static/description/index.html index 7ef3c9e2..17522e7a 100644 --- a/pos_default_partner/static/description/index.html +++ b/pos_default_partner/static/description/index.html @@ -373,21 +373,27 @@ ul.auto-toc {

Configuration

-

Set default partner on POS settings

+

Go to Point of Sale’s settings page and select a default customer for a +specific PoS configuration.

+
+
+

Known issues / Roadmap

+

Set the default customer also on the PoS UI.

-

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 smashing it by providing a detailed and welcomed @@ -395,15 +401,15 @@ If you spotted it first, help us smashing it by providing a detailed and welcome

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

-

Credits

+

Credits

-

Authors

+

Authors

  • Akretion
-

Contributors

+

Contributors

  • Akretion

    @@ -415,7 +421,7 @@ If you spotted it first, help us smashing it by providing a detailed and welcome
-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association

OCA, or the Odoo Community Association, is a nonprofit organization whose diff --git a/pos_default_partner/views/config_view.xml b/pos_default_partner/views/config_view.xml deleted file mode 100644 index 25592613..00000000 --- a/pos_default_partner/views/config_view.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - res.config.settings - - - -

POS customer

-
-
-
-
-
-
- - - - - diff --git a/pos_default_partner/views/pos_config.xml b/pos_default_partner/views/pos_config.xml new file mode 100644 index 00000000..931ee620 --- /dev/null +++ b/pos_default_partner/views/pos_config.xml @@ -0,0 +1,33 @@ + + + + + + + pos.config.form (in pos_default_partner) + pos.config + + + +

Customers

+
+
+
+
+
+
+
+
+
+ + + +