From ea9227000608e3bb365e6adc60185de7cf70af7b Mon Sep 17 00:00:00 2001 From: valen Date: Mon, 14 Jun 2021 11:47:15 +0200 Subject: [PATCH 01/15] [ADD] Account Fiscal Position Partner Type --- .../__init__.py | 4 + .../__manifest__.py | 20 ++++ .../models/__init__.py | 6 + .../models/account_fiscal_position.py | 54 +++++++++ .../models/res_company.py | 19 +++ .../models/res_partner.py | 28 +++++ .../readme/CONFIGURE.rst | 4 + .../readme/CONTRIBUTORS.rst | 8 ++ .../readme/DESCRIPTION.rst | 1 + .../readme/USAGE.rst | 8 ++ .../static/description/icon.png | Bin 0 -> 9455 bytes .../tests/__init__.py | 4 + ...st_account_fiscal_position_partner_type.py | 109 ++++++++++++++++++ .../views/account_fiscal_position.xml | 20 ++++ .../views/res_company.xml | 17 +++ .../views/res_partner.xml | 20 ++++ 16 files changed, 322 insertions(+) create mode 100644 account_fiscal_position_partner_type/__init__.py create mode 100644 account_fiscal_position_partner_type/__manifest__.py create mode 100644 account_fiscal_position_partner_type/models/__init__.py create mode 100644 account_fiscal_position_partner_type/models/account_fiscal_position.py create mode 100644 account_fiscal_position_partner_type/models/res_company.py create mode 100644 account_fiscal_position_partner_type/models/res_partner.py create mode 100644 account_fiscal_position_partner_type/readme/CONFIGURE.rst create mode 100644 account_fiscal_position_partner_type/readme/CONTRIBUTORS.rst create mode 100644 account_fiscal_position_partner_type/readme/DESCRIPTION.rst create mode 100644 account_fiscal_position_partner_type/readme/USAGE.rst create mode 100644 account_fiscal_position_partner_type/static/description/icon.png create mode 100644 account_fiscal_position_partner_type/tests/__init__.py create mode 100644 account_fiscal_position_partner_type/tests/test_account_fiscal_position_partner_type.py create mode 100644 account_fiscal_position_partner_type/views/account_fiscal_position.xml create mode 100644 account_fiscal_position_partner_type/views/res_company.xml create mode 100644 account_fiscal_position_partner_type/views/res_partner.xml diff --git a/account_fiscal_position_partner_type/__init__.py b/account_fiscal_position_partner_type/__init__.py new file mode 100644 index 000000000..bfcf34154 --- /dev/null +++ b/account_fiscal_position_partner_type/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2021 Valentin Vinagre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import models diff --git a/account_fiscal_position_partner_type/__manifest__.py b/account_fiscal_position_partner_type/__manifest__.py new file mode 100644 index 000000000..359007145 --- /dev/null +++ b/account_fiscal_position_partner_type/__manifest__.py @@ -0,0 +1,20 @@ +# Copyright 2021 Valentín Vinagre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Account Fiscal Position Partner Type", + "version": "13.0.0.0.1", + "category": "Accounting & Finance", + "website": "https://github.com/OCA/account-fiscal-rule", + "author": "Sygel Technology," "Odoo Community Association (OCA)", + "license": "AGPL-3", + "application": False, + "installable": True, + "development_status": "Production/Stable", + "depends": ["account"], + "data": [ + "views/res_company.xml", + "views/res_partner.xml", + "views/account_fiscal_position.xml", + ], +} diff --git a/account_fiscal_position_partner_type/models/__init__.py b/account_fiscal_position_partner_type/models/__init__.py new file mode 100644 index 000000000..2c2df46f7 --- /dev/null +++ b/account_fiscal_position_partner_type/models/__init__.py @@ -0,0 +1,6 @@ +# Copyright 2021 Valentin Vinagre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import res_company +from . import res_partner +from . import account_fiscal_position diff --git a/account_fiscal_position_partner_type/models/account_fiscal_position.py b/account_fiscal_position_partner_type/models/account_fiscal_position.py new file mode 100644 index 000000000..92c01774d --- /dev/null +++ b/account_fiscal_position_partner_type/models/account_fiscal_position.py @@ -0,0 +1,54 @@ +# Copyright 2021 Valentin Vinagre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import api, fields, models +from odoo.osv import expression + + +class AccountFiscalPosition(models.Model): + _inherit = "account.fiscal.position" + + fiscal_position_type = fields.Selection( + selection=[("b2c", "End customer (B2C)"), ("b2b", "Company (B2B)")], + string="Type", + default=lambda self: self._default_fiscal_position_type(), + ) + + @api.model + def _default_fiscal_position_type(self): + return self.env.company.default_fiscal_position_type + + @api.model + def search(self, args, offset=0, limit=None, order=None, count=False): + if self.env.context.get("fiscal_position_type"): + args = expression.AND( + ( + args, + [ + ( + "fiscal_position_type", + "=", + self.env.context.get("fiscal_position_type", False), + ) + ], + ) + ) + return super().search( + args, offset=offset, limit=limit, order=order, count=count + ) + + @api.model + def get_fiscal_position(self, partner_id, delivery_id=None): + fiscal_type = False + if partner_id: + delivery = self.env["res.partner"].browse(delivery_id or partner_id) + # Only type has been configured + if ( + delivery.fiscal_position_type + and not delivery.property_account_position_id + ): + fiscal_type = delivery.fiscal_position_type + fp_id = super( + AccountFiscalPosition, self.with_context(fiscal_position_type=fiscal_type) + ).get_fiscal_position(partner_id=partner_id, delivery_id=delivery_id) + return fp_id diff --git a/account_fiscal_position_partner_type/models/res_company.py b/account_fiscal_position_partner_type/models/res_company.py new file mode 100644 index 000000000..d5d082860 --- /dev/null +++ b/account_fiscal_position_partner_type/models/res_company.py @@ -0,0 +1,19 @@ +# Copyright 2021 Valentin Vinagre +# 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" + + default_fiscal_position_type = fields.Selection( + selection="_selection_fiscal_position_type", + string="Default Partner Fiscal Position Type", + ) + + def _selection_fiscal_position_type(self): + field = "fiscal_position_type" + return self.env["account.fiscal.position"].fields_get(allfields=[field])[field][ + "selection" + ] diff --git a/account_fiscal_position_partner_type/models/res_partner.py b/account_fiscal_position_partner_type/models/res_partner.py new file mode 100644 index 000000000..83f879f09 --- /dev/null +++ b/account_fiscal_position_partner_type/models/res_partner.py @@ -0,0 +1,28 @@ +# Copyright 2021 Valentin Vinagre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import api, fields, models + + +class ResPartner(models.Model): + _inherit = "res.partner" + + fiscal_position_type = fields.Selection( + selection="_selection_fiscal_position_type", + string="Fiscal Position Type", + default=lambda self: self._default_fiscal_position_type(), + ) + + def _selection_fiscal_position_type(self): + field = "fiscal_position_type" + return self.env["account.fiscal.position"].fields_get(allfields=[field])[field][ + "selection" + ] + + @api.model + def _default_fiscal_position_type(self): + return self.env.company.default_fiscal_position_type + + @api.model + def _commercial_fields(self): + return super(ResPartner, self)._commercial_fields() + ["fiscal_position_type"] diff --git a/account_fiscal_position_partner_type/readme/CONFIGURE.rst b/account_fiscal_position_partner_type/readme/CONFIGURE.rst new file mode 100644 index 000000000..a3f8c16de --- /dev/null +++ b/account_fiscal_position_partner_type/readme/CONFIGURE.rst @@ -0,0 +1,4 @@ +User can configure the default value according to the system company going to: + +* Settings/Users & Companies/Companies. +* Changing the value of the "Default Partner Fiscal Position Type" field. diff --git a/account_fiscal_position_partner_type/readme/CONTRIBUTORS.rst b/account_fiscal_position_partner_type/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..6c2153127 --- /dev/null +++ b/account_fiscal_position_partner_type/readme/CONTRIBUTORS.rst @@ -0,0 +1,8 @@ +* `Sygel `_: + + * Harald Panten + * Valentin Vinagre + +* `Tecnativa `_: + + * Pedro M. Baeza diff --git a/account_fiscal_position_partner_type/readme/DESCRIPTION.rst b/account_fiscal_position_partner_type/readme/DESCRIPTION.rst new file mode 100644 index 000000000..6b7a103fc --- /dev/null +++ b/account_fiscal_position_partner_type/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module adds the concept of type applied to fiscal positions and partners. The idea is to categorize them for not applying fiscal positions that doesn't belong to the same type. diff --git a/account_fiscal_position_partner_type/readme/USAGE.rst b/account_fiscal_position_partner_type/readme/USAGE.rst new file mode 100644 index 000000000..180b91076 --- /dev/null +++ b/account_fiscal_position_partner_type/readme/USAGE.rst @@ -0,0 +1,8 @@ +Create a new partner and define the "Fiscal Position Type" field. + +Create a new Fiscal Position, with the following configuration: + +* 'Detect Automatically' -> checked. +* 'Fiscal Position Type' + +Create a new Sale/Invoice and select the partner. Remember that the system recalculates the fiscal position according to the shipping address. diff --git a/account_fiscal_position_partner_type/static/description/icon.png b/account_fiscal_position_partner_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/account_fiscal_position_partner_type/tests/__init__.py b/account_fiscal_position_partner_type/tests/__init__.py new file mode 100644 index 000000000..d486e3a9e --- /dev/null +++ b/account_fiscal_position_partner_type/tests/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2021 Valentin Vinagre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import test_account_fiscal_position_partner_type diff --git a/account_fiscal_position_partner_type/tests/test_account_fiscal_position_partner_type.py b/account_fiscal_position_partner_type/tests/test_account_fiscal_position_partner_type.py new file mode 100644 index 000000000..579bdd9d6 --- /dev/null +++ b/account_fiscal_position_partner_type/tests/test_account_fiscal_position_partner_type.py @@ -0,0 +1,109 @@ +# Copyright 2021 Valentin Vinagre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo.tests.common import SavepointCase + + +class TestAccountFiscalPositionPartnerType(SavepointCase): + @classmethod + def setUpClass(cls): + super(TestAccountFiscalPositionPartnerType, cls).setUpClass() + # MODELS + cls.res_partner_model = cls.env["res.partner"] + cls.account_move_model = cls.env["account.move"] + cls.fiscal_position_model = cls.env["account.fiscal.position"] + # INSTANCES + # Company + cls.company_main = cls.env.ref("base.main_company") + cls.company_main.default_fiscal_position_type = "b2b" + # Fiscal Positions + cls.fiscal_position_test = cls.fiscal_position_model.create( + { + "name": "Test", + "auto_apply": False, + "fiscal_position_type": False, + "sequence": 1, + } + ) + cls.fiscal_position_empty = cls.fiscal_position_model.create( + { + "name": "Empty", + "auto_apply": True, + "fiscal_position_type": False, + "sequence": 2, + } + ) + cls.fiscal_position_b2c = cls.fiscal_position_model.create( + { + "name": "b2c", + "auto_apply": True, + "fiscal_position_type": "b2c", + "sequence": 3, + } + ) + cls.fiscal_position_b2b = cls.fiscal_position_model.create( + { + "name": "b2b", + "auto_apply": True, + "fiscal_position_type": "b2b", + "sequence": 4, + } + ) + # Partners + cls.partner_01 = cls.env.ref("base.res_partner_1") + cls.partner_01.write({"fiscal_position_type": False}) + cls.partner_02 = cls.env.ref("base.res_partner_2") + cls.partner_02.write({"fiscal_position_type": "b2c"}) + cls.partner_03 = cls.env.ref("base.res_partner_3") + cls.partner_03.write({"fiscal_position_type": "b2b"}) + cls.partner_04 = cls.env.ref("base.res_partner_4") + cls.partner_04.write( + { + "fiscal_position_type": "b2b", + "property_account_position_id": cls.fiscal_position_test.id, + } + ) + cls.partner_05 = cls.env.ref("base.res_partner_10") + cls.partner_05.write({"fiscal_position_type": "b2b"}) + + @classmethod + def _invoice_sale_create(cls, partner): + invoice_id = cls.account_move_model.create( + { + "company_id": cls.company_main, + "partner_id": partner, + "type": "in_invoice", + } + ) + invoice_id._onchange_partner_id() + return invoice_id + + def test_01(self): + partner_id = self.res_partner_model.create({"name": "fiscal position test"}) + self.assertEqual(partner_id.fiscal_position_type, "b2b") + fiscal_position_id = self.fiscal_position_model.create( + {"name": "fiscal position test", "auto_apply": True} + ) + self.assertEqual(fiscal_position_id.fiscal_position_type, "b2b") + + def test_02(self): + invoice_01 = self._invoice_sale_create(self.partner_01) + self.assertEqual(invoice_01.fiscal_position_id, self.fiscal_position_empty) + invoice_02 = self._invoice_sale_create(self.partner_02) + self.assertEqual(invoice_02.fiscal_position_id, self.fiscal_position_b2c) + invoice_03 = self._invoice_sale_create(self.partner_03) + self.assertEqual(invoice_03.fiscal_position_id, self.fiscal_position_b2b) + invoice_04 = self._invoice_sale_create(self.partner_04) + self.assertEqual(invoice_04.fiscal_position_id, self.fiscal_position_test) + + def test_03(self): + fiscal_position_b2b_country = self.fiscal_position_model.create( + { + "name": "b2b with country", + "auto_apply": True, + "fiscal_position_type": "b2b", + "country_id": self.env.ref("base.us").id, + } + ) + invoice_05 = self._invoice_sale_create(self.partner_05) + self.assertEqual(invoice_05.fiscal_position_id, fiscal_position_b2b_country) diff --git a/account_fiscal_position_partner_type/views/account_fiscal_position.xml b/account_fiscal_position_partner_type/views/account_fiscal_position.xml new file mode 100644 index 000000000..ce1277310 --- /dev/null +++ b/account_fiscal_position_partner_type/views/account_fiscal_position.xml @@ -0,0 +1,20 @@ + + + + + view.account.position.form.fiscal.position.type + account.fiscal.position + + + + + + + + diff --git a/account_fiscal_position_partner_type/views/res_company.xml b/account_fiscal_position_partner_type/views/res_company.xml new file mode 100644 index 000000000..4e951a94c --- /dev/null +++ b/account_fiscal_position_partner_type/views/res_company.xml @@ -0,0 +1,17 @@ + + + + + view.company.form.fiscal.position.type + res.company + + + + + + + + diff --git a/account_fiscal_position_partner_type/views/res_partner.xml b/account_fiscal_position_partner_type/views/res_partner.xml new file mode 100644 index 000000000..031359081 --- /dev/null +++ b/account_fiscal_position_partner_type/views/res_partner.xml @@ -0,0 +1,20 @@ + + + + + view.partner.form.fiscal.position.type + res.partner + + + + + + + + From 1e6fafbf9c50fc1f5330f7f7626ff9016b2793f4 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Tue, 22 Jun 2021 18:21:29 +0000 Subject: [PATCH 02/15] [UPD] Update account_fiscal_position_partner_type.pot --- .../account_fiscal_position_partner_type.pot | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 account_fiscal_position_partner_type/i18n/account_fiscal_position_partner_type.pot diff --git a/account_fiscal_position_partner_type/i18n/account_fiscal_position_partner_type.pot b/account_fiscal_position_partner_type/i18n/account_fiscal_position_partner_type.pot new file mode 100644 index 000000000..1d0cb14eb --- /dev/null +++ b/account_fiscal_position_partner_type/i18n/account_fiscal_position_partner_type.pot @@ -0,0 +1,55 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_fiscal_position_partner_type +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.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: account_fiscal_position_partner_type +#: model:ir.model,name:account_fiscal_position_partner_type.model_res_company +msgid "Companies" +msgstr "" + +#. module: account_fiscal_position_partner_type +#: model:ir.model.fields.selection,name:account_fiscal_position_partner_type.selection__account_fiscal_position__fiscal_position_type__b2b +msgid "Company (B2B)" +msgstr "" + +#. module: account_fiscal_position_partner_type +#: model:ir.model,name:account_fiscal_position_partner_type.model_res_partner +msgid "Contact" +msgstr "" + +#. module: account_fiscal_position_partner_type +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_company__default_fiscal_position_type +msgid "Default Partner Fiscal Position Type" +msgstr "" + +#. module: account_fiscal_position_partner_type +#: model:ir.model.fields.selection,name:account_fiscal_position_partner_type.selection__account_fiscal_position__fiscal_position_type__b2c +msgid "End customer (B2C)" +msgstr "" + +#. module: account_fiscal_position_partner_type +#: model:ir.model,name:account_fiscal_position_partner_type.model_account_fiscal_position +msgid "Fiscal Position" +msgstr "" + +#. module: account_fiscal_position_partner_type +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_partner__fiscal_position_type +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_users__fiscal_position_type +msgid "Fiscal Position Type" +msgstr "" + +#. module: account_fiscal_position_partner_type +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_account_fiscal_position__fiscal_position_type +msgid "Type" +msgstr "" From 2ed8f8ffe8d0ef79efb53af256fe4faa1cb56659 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 22 Jun 2021 18:28:50 +0000 Subject: [PATCH 03/15] [UPD] README.rst --- .../README.rst | 100 ++++ .../static/description/index.html | 453 ++++++++++++++++++ 2 files changed, 553 insertions(+) create mode 100644 account_fiscal_position_partner_type/README.rst create mode 100644 account_fiscal_position_partner_type/static/description/index.html diff --git a/account_fiscal_position_partner_type/README.rst b/account_fiscal_position_partner_type/README.rst new file mode 100644 index 000000000..b96eea78f --- /dev/null +++ b/account_fiscal_position_partner_type/README.rst @@ -0,0 +1,100 @@ +==================================== +Account Fiscal Position Partner Type +==================================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png + :target: https://odoo-community.org/page/development-status + :alt: Production/Stable +.. |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%2Faccount--fiscal--rule-lightgray.png?logo=github + :target: https://github.com/OCA/account-fiscal-rule/tree/13.0/account_fiscal_position_partner_type + :alt: OCA/account-fiscal-rule +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/account-fiscal-rule-13-0/account-fiscal-rule-13-0-account_fiscal_position_partner_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/93/13.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds the concept of type applied to fiscal positions and partners. The idea is to categorize them for not applying fiscal positions that doesn't belong to the same type. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +User can configure the default value according to the system company going to: + +* Settings/Users & Companies/Companies. +* Changing the value of the "Default Partner Fiscal Position Type" field. + +Usage +===== + +Create a new partner and define the "Fiscal Position Type" field. + +Create a new Fiscal Position, with the following configuration: + +* 'Detect Automatically' -> checked. +* 'Fiscal Position Type' + +Create a new Sale/Invoice and select the partner. Remember that the system recalculates the fiscal position according to the shipping address. + +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 +~~~~~~~ + +* Sygel Technology + +Contributors +~~~~~~~~~~~~ + +* `Sygel `_: + + * Harald Panten + * Valentin Vinagre + +* `Tecnativa `_: + + * Pedro M. Baeza + +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/account-fiscal-rule `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/account_fiscal_position_partner_type/static/description/index.html b/account_fiscal_position_partner_type/static/description/index.html new file mode 100644 index 000000000..ab72102bc --- /dev/null +++ b/account_fiscal_position_partner_type/static/description/index.html @@ -0,0 +1,453 @@ + + + + + + +Account Fiscal Position Partner Type + + + +
+

Account Fiscal Position Partner Type

+ + +

Production/Stable License: AGPL-3 OCA/account-fiscal-rule Translate me on Weblate Try me on Runbot

+

This module adds the concept of type applied to fiscal positions and partners. The idea is to categorize them for not applying fiscal positions that doesn’t belong to the same type.

+

Table of contents

+ +
+

Configuration

+

User can configure the default value according to the system company going to:

+
    +
  • Settings/Users & Companies/Companies.
  • +
  • Changing the value of the “Default Partner Fiscal Position Type” field.
  • +
+
+
+

Usage

+

Create a new partner and define the “Fiscal Position Type” field.

+

Create a new Fiscal Position, with the following configuration:

+
    +
  • ‘Detect Automatically’ -> checked.
  • +
  • ‘Fiscal Position Type’
  • +
+

Create a new Sale/Invoice and select the partner. Remember that the system recalculates the fiscal position according to the shipping address.

+
+
+

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

+
    +
  • Sygel Technology
  • +
+
+
+

Contributors

+
    +
  • Sygel:

    +
    +
      +
    • Harald Panten
    • +
    • Valentin Vinagre
    • +
    +
    +
  • +
  • Tecnativa:

    +
    +
      +
    • Pedro M. Baeza
    • +
    +
    +
  • +
+
+
+

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/account-fiscal-rule project on GitHub.

+

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

+
+
+
+ + From 7d5bbdba8c09dfc6cf67d1ee14042e0f72d0f809 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Tue, 22 Jun 2021 20:42:29 +0200 Subject: [PATCH 04/15] [IMP] account_fiscal_position_partner_type: Proper version --- account_fiscal_position_partner_type/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/account_fiscal_position_partner_type/__manifest__.py b/account_fiscal_position_partner_type/__manifest__.py index 359007145..e87482cca 100644 --- a/account_fiscal_position_partner_type/__manifest__.py +++ b/account_fiscal_position_partner_type/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Account Fiscal Position Partner Type", - "version": "13.0.0.0.1", + "version": "13.0.1.0.0", "category": "Accounting & Finance", "website": "https://github.com/OCA/account-fiscal-rule", "author": "Sygel Technology," "Odoo Community Association (OCA)", From cda0905aecddfe8144d35dce69e2a29fe7ba05cd Mon Sep 17 00:00:00 2001 From: Vimal Patel Date: Thu, 24 Jun 2021 16:03:01 +0530 Subject: [PATCH 05/15] [MIG]account_fiscal_position_partner_type: module migrated into v14 --- .../__manifest__.py | 3 +- .../models/account_fiscal_position.py | 10 +-- .../models/res_partner.py | 6 +- ...st_account_fiscal_position_partner_type.py | 70 +++++++++---------- 4 files changed, 40 insertions(+), 49 deletions(-) diff --git a/account_fiscal_position_partner_type/__manifest__.py b/account_fiscal_position_partner_type/__manifest__.py index e87482cca..4db6d8a06 100644 --- a/account_fiscal_position_partner_type/__manifest__.py +++ b/account_fiscal_position_partner_type/__manifest__.py @@ -3,12 +3,11 @@ { "name": "Account Fiscal Position Partner Type", - "version": "13.0.1.0.0", + "version": "14.0.1.0.0", "category": "Accounting & Finance", "website": "https://github.com/OCA/account-fiscal-rule", "author": "Sygel Technology," "Odoo Community Association (OCA)", "license": "AGPL-3", - "application": False, "installable": True, "development_status": "Production/Stable", "depends": ["account"], diff --git a/account_fiscal_position_partner_type/models/account_fiscal_position.py b/account_fiscal_position_partner_type/models/account_fiscal_position.py index 92c01774d..9563b03ae 100644 --- a/account_fiscal_position_partner_type/models/account_fiscal_position.py +++ b/account_fiscal_position_partner_type/models/account_fiscal_position.py @@ -11,16 +11,12 @@ class AccountFiscalPosition(models.Model): fiscal_position_type = fields.Selection( selection=[("b2c", "End customer (B2C)"), ("b2b", "Company (B2B)")], string="Type", - default=lambda self: self._default_fiscal_position_type(), + default=lambda self: self.env.company.default_fiscal_position_type, ) - @api.model - def _default_fiscal_position_type(self): - return self.env.company.default_fiscal_position_type - @api.model def search(self, args, offset=0, limit=None, order=None, count=False): - if self.env.context.get("fiscal_position_type"): + if "fiscal_position_type" in self.env.context: args = expression.AND( ( args, @@ -28,7 +24,7 @@ def search(self, args, offset=0, limit=None, order=None, count=False): ( "fiscal_position_type", "=", - self.env.context.get("fiscal_position_type", False), + self.env.context["fiscal_position_type"], ) ], ) diff --git a/account_fiscal_position_partner_type/models/res_partner.py b/account_fiscal_position_partner_type/models/res_partner.py index 83f879f09..5bbd91735 100644 --- a/account_fiscal_position_partner_type/models/res_partner.py +++ b/account_fiscal_position_partner_type/models/res_partner.py @@ -10,7 +10,7 @@ class ResPartner(models.Model): fiscal_position_type = fields.Selection( selection="_selection_fiscal_position_type", string="Fiscal Position Type", - default=lambda self: self._default_fiscal_position_type(), + default=lambda self: self.env.company.default_fiscal_position_type, ) def _selection_fiscal_position_type(self): @@ -19,10 +19,6 @@ def _selection_fiscal_position_type(self): "selection" ] - @api.model - def _default_fiscal_position_type(self): - return self.env.company.default_fiscal_position_type - @api.model def _commercial_fields(self): return super(ResPartner, self)._commercial_fields() + ["fiscal_position_type"] diff --git a/account_fiscal_position_partner_type/tests/test_account_fiscal_position_partner_type.py b/account_fiscal_position_partner_type/tests/test_account_fiscal_position_partner_type.py index 579bdd9d6..1031c28ce 100644 --- a/account_fiscal_position_partner_type/tests/test_account_fiscal_position_partner_type.py +++ b/account_fiscal_position_partner_type/tests/test_account_fiscal_position_partner_type.py @@ -1,23 +1,22 @@ # Copyright 2021 Valentin Vinagre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from odoo.tests.common import SavepointCase +from odoo import fields +from odoo.tests import Form, common -class TestAccountFiscalPositionPartnerType(SavepointCase): - @classmethod - def setUpClass(cls): - super(TestAccountFiscalPositionPartnerType, cls).setUpClass() +class TestAccountFiscalPositionPartnerType(common.TransactionCase): + def setUp(self): + super(TestAccountFiscalPositionPartnerType, self).setUp() # MODELS - cls.res_partner_model = cls.env["res.partner"] - cls.account_move_model = cls.env["account.move"] - cls.fiscal_position_model = cls.env["account.fiscal.position"] + self.res_partner_model = self.env["res.partner"] + self.fiscal_position_model = self.env["account.fiscal.position"] # INSTANCES # Company - cls.company_main = cls.env.ref("base.main_company") - cls.company_main.default_fiscal_position_type = "b2b" + self.company_main = self.env.ref("base.main_company") + self.company_main.default_fiscal_position_type = "b2b" # Fiscal Positions - cls.fiscal_position_test = cls.fiscal_position_model.create( + self.fiscal_position_test = self.fiscal_position_model.create( { "name": "Test", "auto_apply": False, @@ -25,7 +24,7 @@ def setUpClass(cls): "sequence": 1, } ) - cls.fiscal_position_empty = cls.fiscal_position_model.create( + self.fiscal_position_empty = self.fiscal_position_model.create( { "name": "Empty", "auto_apply": True, @@ -33,7 +32,7 @@ def setUpClass(cls): "sequence": 2, } ) - cls.fiscal_position_b2c = cls.fiscal_position_model.create( + self.fiscal_position_b2c = self.fiscal_position_model.create( { "name": "b2c", "auto_apply": True, @@ -41,7 +40,7 @@ def setUpClass(cls): "sequence": 3, } ) - cls.fiscal_position_b2b = cls.fiscal_position_model.create( + self.fiscal_position_b2b = self.fiscal_position_model.create( { "name": "b2b", "auto_apply": True, @@ -50,33 +49,34 @@ def setUpClass(cls): } ) # Partners - cls.partner_01 = cls.env.ref("base.res_partner_1") - cls.partner_01.write({"fiscal_position_type": False}) - cls.partner_02 = cls.env.ref("base.res_partner_2") - cls.partner_02.write({"fiscal_position_type": "b2c"}) - cls.partner_03 = cls.env.ref("base.res_partner_3") - cls.partner_03.write({"fiscal_position_type": "b2b"}) - cls.partner_04 = cls.env.ref("base.res_partner_4") - cls.partner_04.write( + self.partner_01 = self.env.ref("base.res_partner_1") + self.partner_01.write({"fiscal_position_type": False}) + self.partner_02 = self.env.ref("base.res_partner_2") + self.partner_02.write({"fiscal_position_type": "b2c"}) + self.partner_03 = self.env.ref("base.res_partner_3") + self.partner_03.write({"fiscal_position_type": "b2b"}) + self.partner_04 = self.env.ref("base.res_partner_4") + self.partner_04.write( { "fiscal_position_type": "b2b", - "property_account_position_id": cls.fiscal_position_test.id, + "property_account_position_id": self.fiscal_position_test.id, } ) - cls.partner_05 = cls.env.ref("base.res_partner_10") - cls.partner_05.write({"fiscal_position_type": "b2b"}) + self.partner_05 = self.env.ref("base.res_partner_10") + self.partner_05.write({"fiscal_position_type": "b2b"}) - @classmethod - def _invoice_sale_create(cls, partner): - invoice_id = cls.account_move_model.create( - { - "company_id": cls.company_main, - "partner_id": partner, - "type": "in_invoice", - } + def _invoice_sale_create(self, partner): + invoice_form = Form( + self.env["account.move"].with_context( + default_move_type="out_invoice", default_company_id=self.company_main.id + ) ) - invoice_id._onchange_partner_id() - return invoice_id + invoice_form.invoice_date = fields.Date.today() + invoice_form.partner_id = partner + invoice = invoice_form.save() + + invoice._onchange_partner_id() + return invoice def test_01(self): partner_id = self.res_partner_model.create({"name": "fiscal position test"}) From d4512d0f3344ffb20dc58e97e0f36ffc0ef98087 Mon Sep 17 00:00:00 2001 From: Vimal Patel Date: Thu, 24 Jun 2021 17:21:05 +0530 Subject: [PATCH 06/15] [IMP]account_fiscal_position_partner_type: improved the code as per comment --- .../models/account_fiscal_position.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/account_fiscal_position_partner_type/models/account_fiscal_position.py b/account_fiscal_position_partner_type/models/account_fiscal_position.py index 9563b03ae..2d2715e22 100644 --- a/account_fiscal_position_partner_type/models/account_fiscal_position.py +++ b/account_fiscal_position_partner_type/models/account_fiscal_position.py @@ -16,7 +16,7 @@ class AccountFiscalPosition(models.Model): @api.model def search(self, args, offset=0, limit=None, order=None, count=False): - if "fiscal_position_type" in self.env.context: + if self.env.context.get("fiscal_position_type"): args = expression.AND( ( args, From c6345b48593ea6a58d368abbc428004e78170661 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Mon, 5 Jul 2021 08:14:30 +0000 Subject: [PATCH 07/15] [UPD] Update account_fiscal_position_partner_type.pot --- .../account_fiscal_position_partner_type.pot | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/account_fiscal_position_partner_type/i18n/account_fiscal_position_partner_type.pot b/account_fiscal_position_partner_type/i18n/account_fiscal_position_partner_type.pot index 1d0cb14eb..8df9ef826 100644 --- a/account_fiscal_position_partner_type/i18n/account_fiscal_position_partner_type.pot +++ b/account_fiscal_position_partner_type/i18n/account_fiscal_position_partner_type.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 13.0\n" +"Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -33,6 +33,13 @@ msgstr "" msgid "Default Partner Fiscal Position Type" msgstr "" +#. module: account_fiscal_position_partner_type +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_account_fiscal_position__display_name +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_company__display_name +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_partner__display_name +msgid "Display Name" +msgstr "" + #. module: account_fiscal_position_partner_type #: model:ir.model.fields.selection,name:account_fiscal_position_partner_type.selection__account_fiscal_position__fiscal_position_type__b2c msgid "End customer (B2C)" @@ -49,6 +56,20 @@ msgstr "" msgid "Fiscal Position Type" msgstr "" +#. module: account_fiscal_position_partner_type +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_account_fiscal_position__id +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_company__id +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_partner__id +msgid "ID" +msgstr "" + +#. module: account_fiscal_position_partner_type +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_account_fiscal_position____last_update +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_company____last_update +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_partner____last_update +msgid "Last Modified on" +msgstr "" + #. module: account_fiscal_position_partner_type #: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_account_fiscal_position__fiscal_position_type msgid "Type" From 1ea96ab3dd4dbdeb1bf8889c7dbd2580281eeeb6 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 5 Jul 2021 08:30:18 +0000 Subject: [PATCH 08/15] [UPD] README.rst --- account_fiscal_position_partner_type/README.rst | 10 +++++----- .../static/description/index.html | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/account_fiscal_position_partner_type/README.rst b/account_fiscal_position_partner_type/README.rst index b96eea78f..e2c1e3747 100644 --- a/account_fiscal_position_partner_type/README.rst +++ b/account_fiscal_position_partner_type/README.rst @@ -14,13 +14,13 @@ Account Fiscal Position Partner 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%2Faccount--fiscal--rule-lightgray.png?logo=github - :target: https://github.com/OCA/account-fiscal-rule/tree/13.0/account_fiscal_position_partner_type + :target: https://github.com/OCA/account-fiscal-rule/tree/14.0/account_fiscal_position_partner_type :alt: OCA/account-fiscal-rule .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/account-fiscal-rule-13-0/account-fiscal-rule-13-0-account_fiscal_position_partner_type + :target: https://translation.odoo-community.org/projects/account-fiscal-rule-14-0/account-fiscal-rule-14-0-account_fiscal_position_partner_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/93/13.0 + :target: https://runbot.odoo-community.org/runbot/93/14.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -58,7 +58,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. @@ -95,6 +95,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/account-fiscal-rule `_ project on GitHub. +This module is part of the `OCA/account-fiscal-rule `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/account_fiscal_position_partner_type/static/description/index.html b/account_fiscal_position_partner_type/static/description/index.html index ab72102bc..235f1e336 100644 --- a/account_fiscal_position_partner_type/static/description/index.html +++ b/account_fiscal_position_partner_type/static/description/index.html @@ -367,7 +367,7 @@

Account Fiscal Position Partner Type

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

Production/Stable License: AGPL-3 OCA/account-fiscal-rule Translate me on Weblate Try me on Runbot

+

Production/Stable License: AGPL-3 OCA/account-fiscal-rule Translate me on Weblate Try me on Runbot

This module adds the concept of type applied to fiscal positions and partners. The idea is to categorize them for not applying fiscal positions that doesn’t belong to the same type.

Table of contents

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

@@ -444,7 +444,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/account-fiscal-rule project on GitHub.

+

This module is part of the OCA/account-fiscal-rule project on GitHub.

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

From 173230b7979f25d3427e447ec213544208b4d654 Mon Sep 17 00:00:00 2001 From: Daniel Reis Date: Mon, 16 Aug 2021 18:53:59 +0000 Subject: [PATCH 09/15] Added translation using Weblate (Portuguese (Portugal)) --- .../i18n/pt_PT.po | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 account_fiscal_position_partner_type/i18n/pt_PT.po diff --git a/account_fiscal_position_partner_type/i18n/pt_PT.po b/account_fiscal_position_partner_type/i18n/pt_PT.po new file mode 100644 index 000000000..4c2ce782c --- /dev/null +++ b/account_fiscal_position_partner_type/i18n/pt_PT.po @@ -0,0 +1,77 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_fiscal_position_partner_type +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: pt_PT\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" + +#. module: account_fiscal_position_partner_type +#: model:ir.model,name:account_fiscal_position_partner_type.model_res_company +msgid "Companies" +msgstr "" + +#. module: account_fiscal_position_partner_type +#: model:ir.model.fields.selection,name:account_fiscal_position_partner_type.selection__account_fiscal_position__fiscal_position_type__b2b +msgid "Company (B2B)" +msgstr "" + +#. module: account_fiscal_position_partner_type +#: model:ir.model,name:account_fiscal_position_partner_type.model_res_partner +msgid "Contact" +msgstr "" + +#. module: account_fiscal_position_partner_type +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_company__default_fiscal_position_type +msgid "Default Partner Fiscal Position Type" +msgstr "" + +#. module: account_fiscal_position_partner_type +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_account_fiscal_position__display_name +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_company__display_name +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_partner__display_name +msgid "Display Name" +msgstr "" + +#. module: account_fiscal_position_partner_type +#: model:ir.model.fields.selection,name:account_fiscal_position_partner_type.selection__account_fiscal_position__fiscal_position_type__b2c +msgid "End customer (B2C)" +msgstr "" + +#. module: account_fiscal_position_partner_type +#: model:ir.model,name:account_fiscal_position_partner_type.model_account_fiscal_position +msgid "Fiscal Position" +msgstr "" + +#. module: account_fiscal_position_partner_type +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_partner__fiscal_position_type +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_users__fiscal_position_type +msgid "Fiscal Position Type" +msgstr "" + +#. module: account_fiscal_position_partner_type +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_account_fiscal_position__id +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_company__id +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_partner__id +msgid "ID" +msgstr "" + +#. module: account_fiscal_position_partner_type +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_account_fiscal_position____last_update +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_company____last_update +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_partner____last_update +msgid "Last Modified on" +msgstr "" + +#. module: account_fiscal_position_partner_type +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_account_fiscal_position__fiscal_position_type +msgid "Type" +msgstr "" From 25e742fe7f80a063b75a7135324fe2b15d28b188 Mon Sep 17 00:00:00 2001 From: Daniel Reis Date: Mon, 16 Aug 2021 18:57:45 +0000 Subject: [PATCH 10/15] Translated using Weblate (Portuguese (Portugal)) Currently translated at 100.0% (11 of 11 strings) Translation: account-fiscal-rule-14.0/account-fiscal-rule-14.0-account_fiscal_position_partner_type Translate-URL: https://translation.odoo-community.org/projects/account-fiscal-rule-14-0/account-fiscal-rule-14-0-account_fiscal_position_partner_type/pt_PT/ --- .../i18n/pt_PT.po | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/account_fiscal_position_partner_type/i18n/pt_PT.po b/account_fiscal_position_partner_type/i18n/pt_PT.po index 4c2ce782c..03b387ba5 100644 --- a/account_fiscal_position_partner_type/i18n/pt_PT.po +++ b/account_fiscal_position_partner_type/i18n/pt_PT.po @@ -6,72 +6,74 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2021-08-16 21:49+0000\n" +"Last-Translator: Daniel Reis \n" "Language-Team: none\n" "Language: pt_PT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.3.2\n" #. module: account_fiscal_position_partner_type #: model:ir.model,name:account_fiscal_position_partner_type.model_res_company msgid "Companies" -msgstr "" +msgstr "Empresas" #. module: account_fiscal_position_partner_type #: model:ir.model.fields.selection,name:account_fiscal_position_partner_type.selection__account_fiscal_position__fiscal_position_type__b2b msgid "Company (B2B)" -msgstr "" +msgstr "Empresa (B2B)" #. module: account_fiscal_position_partner_type #: model:ir.model,name:account_fiscal_position_partner_type.model_res_partner msgid "Contact" -msgstr "" +msgstr "Contato" #. module: account_fiscal_position_partner_type #: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_company__default_fiscal_position_type msgid "Default Partner Fiscal Position Type" -msgstr "" +msgstr "Posição Fiscal Predefinida para Parceiros" #. module: account_fiscal_position_partner_type #: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_account_fiscal_position__display_name #: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_company__display_name #: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_partner__display_name msgid "Display Name" -msgstr "" +msgstr "Nome Apresentado" #. module: account_fiscal_position_partner_type #: model:ir.model.fields.selection,name:account_fiscal_position_partner_type.selection__account_fiscal_position__fiscal_position_type__b2c msgid "End customer (B2C)" -msgstr "" +msgstr "Client Final (B2C)" #. module: account_fiscal_position_partner_type #: model:ir.model,name:account_fiscal_position_partner_type.model_account_fiscal_position msgid "Fiscal Position" -msgstr "" +msgstr "Posição Fiscal" #. module: account_fiscal_position_partner_type #: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_partner__fiscal_position_type #: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_users__fiscal_position_type msgid "Fiscal Position Type" -msgstr "" +msgstr "Tipo de Posição Fiscal" #. module: account_fiscal_position_partner_type #: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_account_fiscal_position__id #: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_company__id #: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_partner__id msgid "ID" -msgstr "" +msgstr "ID" #. module: account_fiscal_position_partner_type #: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_account_fiscal_position____last_update #: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_company____last_update #: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_partner____last_update msgid "Last Modified on" -msgstr "" +msgstr "Última Modificação em" #. module: account_fiscal_position_partner_type #: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_account_fiscal_position__fiscal_position_type msgid "Type" -msgstr "" +msgstr "Tipo" From 2f7b8b53d2d321e7337b28bf69597178ca49f332 Mon Sep 17 00:00:00 2001 From: manu Date: Tue, 4 Jan 2022 09:37:14 +0100 Subject: [PATCH 11/15] [MIG]account_fiscal_position_partner_type: Migration to 15.0 --- account_fiscal_position_partner_type/__manifest__.py | 2 +- account_fiscal_position_partner_type/models/res_partner.py | 1 - account_fiscal_position_partner_type/views/res_partner.xml | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/account_fiscal_position_partner_type/__manifest__.py b/account_fiscal_position_partner_type/__manifest__.py index 4db6d8a06..e1dc166a7 100644 --- a/account_fiscal_position_partner_type/__manifest__.py +++ b/account_fiscal_position_partner_type/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Account Fiscal Position Partner Type", - "version": "14.0.1.0.0", + "version": "15.0.1.0.0", "category": "Accounting & Finance", "website": "https://github.com/OCA/account-fiscal-rule", "author": "Sygel Technology," "Odoo Community Association (OCA)", diff --git a/account_fiscal_position_partner_type/models/res_partner.py b/account_fiscal_position_partner_type/models/res_partner.py index 5bbd91735..cca22e141 100644 --- a/account_fiscal_position_partner_type/models/res_partner.py +++ b/account_fiscal_position_partner_type/models/res_partner.py @@ -9,7 +9,6 @@ class ResPartner(models.Model): fiscal_position_type = fields.Selection( selection="_selection_fiscal_position_type", - string="Fiscal Position Type", default=lambda self: self.env.company.default_fiscal_position_type, ) diff --git a/account_fiscal_position_partner_type/views/res_partner.xml b/account_fiscal_position_partner_type/views/res_partner.xml index 031359081..1c899c618 100644 --- a/account_fiscal_position_partner_type/views/res_partner.xml +++ b/account_fiscal_position_partner_type/views/res_partner.xml @@ -12,7 +12,7 @@ From 05c5b029b88f47c8eef21526f823ba896812aa3a Mon Sep 17 00:00:00 2001 From: oca-ci Date: Fri, 7 Jan 2022 17:01:34 +0000 Subject: [PATCH 12/15] [UPD] Update account_fiscal_position_partner_type.pot --- .../account_fiscal_position_partner_type.pot | 23 +------------------ 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/account_fiscal_position_partner_type/i18n/account_fiscal_position_partner_type.pot b/account_fiscal_position_partner_type/i18n/account_fiscal_position_partner_type.pot index 8df9ef826..a14450fa7 100644 --- a/account_fiscal_position_partner_type/i18n/account_fiscal_position_partner_type.pot +++ b/account_fiscal_position_partner_type/i18n/account_fiscal_position_partner_type.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" +"Project-Id-Version: Odoo Server 15.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -33,13 +33,6 @@ msgstr "" msgid "Default Partner Fiscal Position Type" msgstr "" -#. module: account_fiscal_position_partner_type -#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_account_fiscal_position__display_name -#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_company__display_name -#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_partner__display_name -msgid "Display Name" -msgstr "" - #. module: account_fiscal_position_partner_type #: model:ir.model.fields.selection,name:account_fiscal_position_partner_type.selection__account_fiscal_position__fiscal_position_type__b2c msgid "End customer (B2C)" @@ -56,20 +49,6 @@ msgstr "" msgid "Fiscal Position Type" msgstr "" -#. module: account_fiscal_position_partner_type -#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_account_fiscal_position__id -#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_company__id -#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_partner__id -msgid "ID" -msgstr "" - -#. module: account_fiscal_position_partner_type -#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_account_fiscal_position____last_update -#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_company____last_update -#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_partner____last_update -msgid "Last Modified on" -msgstr "" - #. module: account_fiscal_position_partner_type #: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_account_fiscal_position__fiscal_position_type msgid "Type" From 788397b258e88be0af9a2466800bd4bdcc251c92 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 7 Jan 2022 17:04:28 +0000 Subject: [PATCH 13/15] [UPD] README.rst --- account_fiscal_position_partner_type/README.rst | 10 +++++----- .../static/description/index.html | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/account_fiscal_position_partner_type/README.rst b/account_fiscal_position_partner_type/README.rst index e2c1e3747..d0491e6c8 100644 --- a/account_fiscal_position_partner_type/README.rst +++ b/account_fiscal_position_partner_type/README.rst @@ -14,13 +14,13 @@ Account Fiscal Position Partner 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%2Faccount--fiscal--rule-lightgray.png?logo=github - :target: https://github.com/OCA/account-fiscal-rule/tree/14.0/account_fiscal_position_partner_type + :target: https://github.com/OCA/account-fiscal-rule/tree/15.0/account_fiscal_position_partner_type :alt: OCA/account-fiscal-rule .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/account-fiscal-rule-14-0/account-fiscal-rule-14-0-account_fiscal_position_partner_type + :target: https://translation.odoo-community.org/projects/account-fiscal-rule-15-0/account-fiscal-rule-15-0-account_fiscal_position_partner_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/93/14.0 + :target: https://runbot.odoo-community.org/runbot/93/15.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -58,7 +58,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. @@ -95,6 +95,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/account-fiscal-rule `_ project on GitHub. +This module is part of the `OCA/account-fiscal-rule `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/account_fiscal_position_partner_type/static/description/index.html b/account_fiscal_position_partner_type/static/description/index.html index 235f1e336..bb5ae5a80 100644 --- a/account_fiscal_position_partner_type/static/description/index.html +++ b/account_fiscal_position_partner_type/static/description/index.html @@ -367,7 +367,7 @@

Account Fiscal Position Partner Type

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

Production/Stable License: AGPL-3 OCA/account-fiscal-rule Translate me on Weblate Try me on Runbot

+

Production/Stable License: AGPL-3 OCA/account-fiscal-rule Translate me on Weblate Try me on Runbot

This module adds the concept of type applied to fiscal positions and partners. The idea is to categorize them for not applying fiscal positions that doesn’t belong to the same type.

Table of contents

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

@@ -444,7 +444,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/account-fiscal-rule project on GitHub.

+

This module is part of the OCA/account-fiscal-rule project on GitHub.

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

From 62db8d165ffcdaa863af2f876fa00686e64ad85c Mon Sep 17 00:00:00 2001 From: Rodrigo Date: Fri, 30 Dec 2022 00:25:56 +0100 Subject: [PATCH 14/15] [IMP] account_fiscal_position_partner_type: pre-commit stuff --- .../odoo/addons/account_fiscal_position_partner_type | 1 + setup/account_fiscal_position_partner_type/setup.py | 6 ++++++ 2 files changed, 7 insertions(+) create mode 120000 setup/account_fiscal_position_partner_type/odoo/addons/account_fiscal_position_partner_type create mode 100644 setup/account_fiscal_position_partner_type/setup.py diff --git a/setup/account_fiscal_position_partner_type/odoo/addons/account_fiscal_position_partner_type b/setup/account_fiscal_position_partner_type/odoo/addons/account_fiscal_position_partner_type new file mode 120000 index 000000000..4534e32db --- /dev/null +++ b/setup/account_fiscal_position_partner_type/odoo/addons/account_fiscal_position_partner_type @@ -0,0 +1 @@ +../../../../account_fiscal_position_partner_type \ No newline at end of file diff --git a/setup/account_fiscal_position_partner_type/setup.py b/setup/account_fiscal_position_partner_type/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/account_fiscal_position_partner_type/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) From 8738006fa356660b1a028e6ae0be5029706bc59e Mon Sep 17 00:00:00 2001 From: Rodrigo Date: Fri, 30 Dec 2022 01:19:19 +0100 Subject: [PATCH 15/15] [MIG] account_fiscal_position_partner_type: Migration to 16.0 --- .../__manifest__.py | 2 +- .../i18n/es.po | 57 +++++++++++++++++++ .../models/account_fiscal_position.py | 19 +++---- .../models/res_partner.py | 2 +- ...st_account_fiscal_position_partner_type.py | 43 +++++++------- 5 files changed, 90 insertions(+), 33 deletions(-) create mode 100644 account_fiscal_position_partner_type/i18n/es.po diff --git a/account_fiscal_position_partner_type/__manifest__.py b/account_fiscal_position_partner_type/__manifest__.py index e1dc166a7..347c817a7 100644 --- a/account_fiscal_position_partner_type/__manifest__.py +++ b/account_fiscal_position_partner_type/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Account Fiscal Position Partner Type", - "version": "15.0.1.0.0", + "version": "16.0.1.0.0", "category": "Accounting & Finance", "website": "https://github.com/OCA/account-fiscal-rule", "author": "Sygel Technology," "Odoo Community Association (OCA)", diff --git a/account_fiscal_position_partner_type/i18n/es.po b/account_fiscal_position_partner_type/i18n/es.po new file mode 100644 index 000000000..e088bc87b --- /dev/null +++ b/account_fiscal_position_partner_type/i18n/es.po @@ -0,0 +1,57 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_fiscal_position_partner_type +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-03-30 07:56+0000\n" +"PO-Revision-Date: 2023-03-30 07:56+0000\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: account_fiscal_position_partner_type +#: model:ir.model,name:account_fiscal_position_partner_type.model_res_company +msgid "Companies" +msgstr "Compañías" + +#. module: account_fiscal_position_partner_type +#: model:ir.model.fields.selection,name:account_fiscal_position_partner_type.selection__account_fiscal_position__fiscal_position_type__b2b +msgid "Company (B2B)" +msgstr "Compañía (B2B)" + +#. module: account_fiscal_position_partner_type +#: model:ir.model,name:account_fiscal_position_partner_type.model_res_partner +msgid "Contact" +msgstr "Contacto" + +#. module: account_fiscal_position_partner_type +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_company__default_fiscal_position_type +msgid "Default Partner Fiscal Position Type" +msgstr "Tipo posición fiscal cliente por defecto" + +#. module: account_fiscal_position_partner_type +#: model:ir.model.fields.selection,name:account_fiscal_position_partner_type.selection__account_fiscal_position__fiscal_position_type__b2c +msgid "End customer (B2C)" +msgstr "Consumidor final (B2C)" + +#. module: account_fiscal_position_partner_type +#: model:ir.model,name:account_fiscal_position_partner_type.model_account_fiscal_position +msgid "Fiscal Position" +msgstr "Posición fiscal" + +#. module: account_fiscal_position_partner_type +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_partner__fiscal_position_type +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_res_users__fiscal_position_type +msgid "Fiscal Position Type" +msgstr "Tipo posición fiscal" + +#. module: account_fiscal_position_partner_type +#: model:ir.model.fields,field_description:account_fiscal_position_partner_type.field_account_fiscal_position__fiscal_position_type +msgid "Type" +msgstr "Tipo" diff --git a/account_fiscal_position_partner_type/models/account_fiscal_position.py b/account_fiscal_position_partner_type/models/account_fiscal_position.py index 2d2715e22..e907e9ac7 100644 --- a/account_fiscal_position_partner_type/models/account_fiscal_position.py +++ b/account_fiscal_position_partner_type/models/account_fiscal_position.py @@ -15,11 +15,11 @@ class AccountFiscalPosition(models.Model): ) @api.model - def search(self, args, offset=0, limit=None, order=None, count=False): + def search(self, domain, offset=0, limit=None, order=None, count=False): if self.env.context.get("fiscal_position_type"): - args = expression.AND( + domain = expression.AND( ( - args, + domain, [ ( "fiscal_position_type", @@ -30,21 +30,20 @@ def search(self, args, offset=0, limit=None, order=None, count=False): ) ) return super().search( - args, offset=offset, limit=limit, order=order, count=count + domain, offset=offset, limit=limit, order=order, count=count ) @api.model - def get_fiscal_position(self, partner_id, delivery_id=None): + def _get_fiscal_position(self, partner, delivery=None): fiscal_type = False - if partner_id: - delivery = self.env["res.partner"].browse(delivery_id or partner_id) + if partner: + delivery = delivery or partner # Only type has been configured if ( delivery.fiscal_position_type and not delivery.property_account_position_id ): fiscal_type = delivery.fiscal_position_type - fp_id = super( + return super( AccountFiscalPosition, self.with_context(fiscal_position_type=fiscal_type) - ).get_fiscal_position(partner_id=partner_id, delivery_id=delivery_id) - return fp_id + )._get_fiscal_position(partner=partner, delivery=delivery) diff --git a/account_fiscal_position_partner_type/models/res_partner.py b/account_fiscal_position_partner_type/models/res_partner.py index cca22e141..3e5b3600b 100644 --- a/account_fiscal_position_partner_type/models/res_partner.py +++ b/account_fiscal_position_partner_type/models/res_partner.py @@ -20,4 +20,4 @@ def _selection_fiscal_position_type(self): @api.model def _commercial_fields(self): - return super(ResPartner, self)._commercial_fields() + ["fiscal_position_type"] + return super()._commercial_fields() + ["fiscal_position_type"] diff --git a/account_fiscal_position_partner_type/tests/test_account_fiscal_position_partner_type.py b/account_fiscal_position_partner_type/tests/test_account_fiscal_position_partner_type.py index 1031c28ce..b1c14c92c 100644 --- a/account_fiscal_position_partner_type/tests/test_account_fiscal_position_partner_type.py +++ b/account_fiscal_position_partner_type/tests/test_account_fiscal_position_partner_type.py @@ -6,17 +6,18 @@ class TestAccountFiscalPositionPartnerType(common.TransactionCase): - def setUp(self): - super(TestAccountFiscalPositionPartnerType, self).setUp() + @classmethod + def setUpClass(cls): + super().setUpClass() # MODELS - self.res_partner_model = self.env["res.partner"] - self.fiscal_position_model = self.env["account.fiscal.position"] + cls.res_partner_model = cls.env["res.partner"] + cls.fiscal_position_model = cls.env["account.fiscal.position"] # INSTANCES # Company - self.company_main = self.env.ref("base.main_company") - self.company_main.default_fiscal_position_type = "b2b" + cls.company_main = cls.env.ref("base.main_company") + cls.company_main.default_fiscal_position_type = "b2b" # Fiscal Positions - self.fiscal_position_test = self.fiscal_position_model.create( + cls.fiscal_position_test = cls.fiscal_position_model.create( { "name": "Test", "auto_apply": False, @@ -24,7 +25,7 @@ def setUp(self): "sequence": 1, } ) - self.fiscal_position_empty = self.fiscal_position_model.create( + cls.fiscal_position_empty = cls.fiscal_position_model.create( { "name": "Empty", "auto_apply": True, @@ -32,7 +33,7 @@ def setUp(self): "sequence": 2, } ) - self.fiscal_position_b2c = self.fiscal_position_model.create( + cls.fiscal_position_b2c = cls.fiscal_position_model.create( { "name": "b2c", "auto_apply": True, @@ -40,7 +41,7 @@ def setUp(self): "sequence": 3, } ) - self.fiscal_position_b2b = self.fiscal_position_model.create( + cls.fiscal_position_b2b = cls.fiscal_position_model.create( { "name": "b2b", "auto_apply": True, @@ -49,21 +50,21 @@ def setUp(self): } ) # Partners - self.partner_01 = self.env.ref("base.res_partner_1") - self.partner_01.write({"fiscal_position_type": False}) - self.partner_02 = self.env.ref("base.res_partner_2") - self.partner_02.write({"fiscal_position_type": "b2c"}) - self.partner_03 = self.env.ref("base.res_partner_3") - self.partner_03.write({"fiscal_position_type": "b2b"}) - self.partner_04 = self.env.ref("base.res_partner_4") - self.partner_04.write( + cls.partner_01 = cls.env.ref("base.res_partner_1") + cls.partner_01.write({"fiscal_position_type": False}) + cls.partner_02 = cls.env.ref("base.res_partner_2") + cls.partner_02.write({"fiscal_position_type": "b2c"}) + cls.partner_03 = cls.env.ref("base.res_partner_3") + cls.partner_03.write({"fiscal_position_type": "b2b"}) + cls.partner_04 = cls.env.ref("base.res_partner_4") + cls.partner_04.write( { "fiscal_position_type": "b2b", - "property_account_position_id": self.fiscal_position_test.id, + "property_account_position_id": cls.fiscal_position_test.id, } ) - self.partner_05 = self.env.ref("base.res_partner_10") - self.partner_05.write({"fiscal_position_type": "b2b"}) + cls.partner_05 = cls.env.ref("base.res_partner_10") + cls.partner_05.write({"fiscal_position_type": "b2b"}) def _invoice_sale_create(self, partner): invoice_form = Form(