From ad92defba64f80b9a9de9e78e82f353debb54d43 Mon Sep 17 00:00:00 2001 From: Pedro Castro Silva Date: Fri, 2 Oct 2015 12:55:02 +0100 Subject: [PATCH 01/58] Initial submission to OCA --- l10n_pt_vat/README.rst | 34 ++++++ l10n_pt_vat/__init__.py | 4 + l10n_pt_vat/__openerp__.py | 40 +++++++ l10n_pt_vat/data/vat_adjustment_norm.xml | 100 ++++++++++++++++++ l10n_pt_vat/models/__init__.py | 24 +++++ l10n_pt_vat/models/account_invoice.py | 31 ++++++ l10n_pt_vat/models/vat_adjustment_norm.py | 71 +++++++++++++ l10n_pt_vat/security/ir.model.access.csv | 3 + l10n_pt_vat/static/description/icon.png | Bin 0 -> 3019 bytes l10n_pt_vat/views/account_invoice_view.xml | 42 ++++++++ .../views/vat_adjustment_norm_view.xml | 76 +++++++++++++ 11 files changed, 425 insertions(+) create mode 100644 l10n_pt_vat/README.rst create mode 100644 l10n_pt_vat/__init__.py create mode 100644 l10n_pt_vat/__openerp__.py create mode 100644 l10n_pt_vat/data/vat_adjustment_norm.xml create mode 100644 l10n_pt_vat/models/__init__.py create mode 100644 l10n_pt_vat/models/account_invoice.py create mode 100644 l10n_pt_vat/models/vat_adjustment_norm.py create mode 100644 l10n_pt_vat/security/ir.model.access.csv create mode 100644 l10n_pt_vat/static/description/icon.png create mode 100644 l10n_pt_vat/views/account_invoice_view.xml create mode 100644 l10n_pt_vat/views/vat_adjustment_norm_view.xml diff --git a/l10n_pt_vat/README.rst b/l10n_pt_vat/README.rst new file mode 100644 index 00000000..a552be99 --- /dev/null +++ b/l10n_pt_vat/README.rst @@ -0,0 +1,34 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :alt: License: AGPL-3 + +Portugal - VAT +=================================== + +This modules extends the base localization modules with a few VAT specific functions that are required by the Portuguese Tax Authorities, including: + +* The use of pre-defined legally accepted reasons for issuing credit notes, as required for fields 40/41 of the VAT statement (Portaria nº 255/2013). + + +Credits +======== + +Contributors +------------ + +- Pedro Castro Silva (Sossia) +- Odoo Community Association (OCA) + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit http://odoo-community.org. diff --git a/l10n_pt_vat/__init__.py b/l10n_pt_vat/__init__.py new file mode 100644 index 00000000..77bbdbd3 --- /dev/null +++ b/l10n_pt_vat/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- + +from . import models + diff --git a/l10n_pt_vat/__openerp__.py b/l10n_pt_vat/__openerp__.py new file mode 100644 index 00000000..5970514d --- /dev/null +++ b/l10n_pt_vat/__openerp__.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Odoo, Open Source Management Solution +# Copyright (C) 2014- Sossia, Lda. () +# Copyright (C) 2004 OpenERP SA () +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +{ + "name": "Portugal - IVA", + "version": "0.2", + "depends": ['account', 'base_vat'], + "author": "Sossia, Odoo Community Association (OCA)", + "summary": "Portuguese VAT requirements extensions", + "website": "http://www.sossia.pt", + "category": "Accounting & Finance", + "data": [ + "security/ir.model.access.csv", + "data/vat_adjustment_norm.xml", + "views/vat_adjustment_norm_view.xml", + "views/account_invoice_view.xml", + ], + "installable": True, + "auto_install": False, + "application": False, +} diff --git a/l10n_pt_vat/data/vat_adjustment_norm.xml b/l10n_pt_vat/data/vat_adjustment_norm.xml new file mode 100644 index 00000000..1c5c4a08 --- /dev/null +++ b/l10n_pt_vat/data/vat_adjustment_norm.xml @@ -0,0 +1,100 @@ + + + + + + + Art. 78º, nº 2 + + + + Art. 78º, nº 3 + + + + + Art. 78º, nº 4 + + + + Art. 78º, nº 6 + + + + + Art. 78º, nº 7, alínea a) + + + + + Art. 78º, nº 7, alínea b) + + + + + Art. 78º, nº 7, alínea c) + + + + + Art. 78º, nº 7, alínea d) + + + + + Art. 78º, nº 8, alínea b) + + + + Art. 78º, nº 8, alínea c) + + + + Art. 78º, nº 8, alínea d) + + + + + Art. 78º, nº 8, alínea e) + + + + Art. 78º, nº 12 + + + + Art. 78º-A, nº 2, alínea a) + + + + Art. 78º-A, nº 4, alínea a) + + + + Art. 78º-A, nº 4, alínea b) + + + + Art. 78º-A, nº 4, alínea c) + + + + Art. 78º-A, nº 4, alínea d) + + + + Art. 78º-B, nº 4 + + + + Art. 78º-C, nº 1 + + + + Art. 78º-C, nº 3 + + + + diff --git a/l10n_pt_vat/models/__init__.py b/l10n_pt_vat/models/__init__.py new file mode 100644 index 00000000..bcaa4a81 --- /dev/null +++ b/l10n_pt_vat/models/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Odoo, Open Source Management Solution +# Copyright (C) 2014- Sossia, Lda. () +# Copyright (C) 2004 OpenERP SA () +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +from . import account_invoice +from . import vat_adjustment_norm diff --git a/l10n_pt_vat/models/account_invoice.py b/l10n_pt_vat/models/account_invoice.py new file mode 100644 index 00000000..9e46aff4 --- /dev/null +++ b/l10n_pt_vat/models/account_invoice.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Copyright (C) 2014- Sossia, Lda. () +# Copyright (C) 2004 OpenERP SA () +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +from openerp import models, fields + + +class AccountInvoice(models.Model): + _inherit = 'account.invoice' + + # VAT Adjustment Norm (Fields 40/41 of the VAT Statement) + vat_adjustment_norm_id = fields.Many2one( + 'account.vat.adjustment_norm', + string='VAT Adjustment Norm',) diff --git a/l10n_pt_vat/models/vat_adjustment_norm.py b/l10n_pt_vat/models/vat_adjustment_norm.py new file mode 100644 index 00000000..5f8dd241 --- /dev/null +++ b/l10n_pt_vat/models/vat_adjustment_norm.py @@ -0,0 +1,71 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Odoo, Open Source Management Solution +# Copyright (C) 2014- Sossia, Lda. () +# Copyright (C) 2004 OpenERP SA () +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +from openerp import api, models, fields +from openerp import exceptions + +# +# VAT Adjustment Norm (Fields 40/41 of the VAT Statement) +# + + +class account_vat_adjustment_norm(models.Model): + _name = "account.vat.adjustment_norm" + _description = "VAT Adjustment Norm" + + name = fields.Char( + string='Name', + required=True) + + active = fields.Boolean( + string='Active', + help="If the active field is set to False, it " + "will allow you to hide the adjustment norm without removing it.") + + note = fields.Text( + string='Description', + translate=True) + + out_refunds = fields.Boolean( + string='Use on company refunds', + help="If True, it will allow you to apply the adjustment" + "norm to your company refunds.") + + in_refunds = fields.Boolean( + string='Use on third party refunds', + help="If True, it will allow you to apply the adjustment" + "norm to third party companies refunds.") + + _defaults = { + 'active': True, + } + + @api.multi + def unlink(self): + inv_obj = self.env['account.invoice'] + rule_ranges = inv_obj.search( + [('vat_adjustment_norm_id', 'in', self.ids)]) + if rule_ranges: + raise exceptions.Warning("Couldn't delete the adjustment norms" + "because they are still referenced in" + "refunds.") + return super(account_vat_adjustment_norm, self).unlink() diff --git a/l10n_pt_vat/security/ir.model.access.csv b/l10n_pt_vat/security/ir.model.access.csv new file mode 100644 index 00000000..cf44198a --- /dev/null +++ b/l10n_pt_vat/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_account_vat_adjustment_norm,account.vat.adjustment_norm,model_account_vat_adjustment_norm,account.group_account_user,1,0,0,0 +access_account_vat_adjustment_norm_manager,account.vat.adjustment_norm,model_account_vat_adjustment_norm,account.group_account_manager,1,1,1,1 diff --git a/l10n_pt_vat/static/description/icon.png b/l10n_pt_vat/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..67ed24357f8e5c84b9cf23ee8753e27f85b6cabf GIT binary patch literal 3019 zcmV;+3pDhJP)Q_IH4n@={*P-&rV44(2*#=@-0LEL{K~HsQv%b=lGJe=D>%eswUPJQeP^*{42O zvpt3HANU=HPnrrFfw4B;iLEU#XhIw92wCDW*u==ArmkT{!j)Sj`TES<3&|M=v$IPN zq5RyF7g_@>#s*xhtga(nrCHiSBBK*zvzBZ=3(JX)FD?M%0?tRpTqd>R2GX4*rrx2a zEeeUja4+r)2LR7&aS(?3nCaO}@$-9sVuBhWePjxB#?^t*;T^f91{}B4bM zZ#J-pnGOO)QCR)q%mEfd2j5tvrt45bv-43WN{EcZ{ zCjfx+C>u0OTac2L2~enj_+g}W0000Zn>hf6svCfWE4MM�YM#JOBXybq5?jlK?#q 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 N002ovPDHLkV1jV0npFS* literal 0 HcmV?d00001 diff --git a/l10n_pt_vat/views/account_invoice_view.xml b/l10n_pt_vat/views/account_invoice_view.xml new file mode 100644 index 00000000..b4dbbae8 --- /dev/null +++ b/l10n_pt_vat/views/account_invoice_view.xml @@ -0,0 +1,42 @@ + + + + + + + Account Invoice + account.invoice + + + + + + + + + + + + + + Account Invoice + account.invoice + + + + + + + + + + + + + + + diff --git a/l10n_pt_vat/views/vat_adjustment_norm_view.xml b/l10n_pt_vat/views/vat_adjustment_norm_view.xml new file mode 100644 index 00000000..f5a2104b --- /dev/null +++ b/l10n_pt_vat/views/vat_adjustment_norm_view.xml @@ -0,0 +1,76 @@ + + + + + + + + account.vat.adjustment_norm.search + account.vat.adjustment_norm + + + + + + + + + account.vat.adjustment_norm.tree + account.vat.adjustment_norm + child_ids + 100 + + + + + + + + + account.vat.adjustment_norm.form + account.vat.adjustment_norm + +
+ + + + + + + + + +
+
+
+ + VAT Adjustment Norm + account.vat.adjustment_norm + form + tree,form + + + + + VAT Adjustment Norms + account.vat.adjustment_norm + form + tree,form + + + + + + + + +
+
+ + From c93074d05a169322ff6c082d90aeed9c0164429a Mon Sep 17 00:00:00 2001 From: Pedro Castro Silva Date: Mon, 12 Oct 2015 18:16:48 +0100 Subject: [PATCH 02/58] [FIX] all the modifications that Daniel Reis kindly suggested --- l10n_pt_vat/README.rst | 2 +- l10n_pt_vat/__init__.py | 1 - l10n_pt_vat/__openerp__.py | 3 +- l10n_pt_vat/data/vat_adjustment_norm.xml | 76 +++++----- l10n_pt_vat/models/__init__.py | 1 - l10n_pt_vat/models/vat_adjustment_norm.py | 7 +- l10n_pt_vat/views/account_invoice_view.xml | 64 ++++----- .../views/vat_adjustment_norm_view.xml | 130 +++++++++--------- 8 files changed, 139 insertions(+), 145 deletions(-) diff --git a/l10n_pt_vat/README.rst b/l10n_pt_vat/README.rst index a552be99..8ea4ce04 100644 --- a/l10n_pt_vat/README.rst +++ b/l10n_pt_vat/README.rst @@ -16,7 +16,7 @@ Contributors ------------ - Pedro Castro Silva (Sossia) -- Odoo Community Association (OCA) + Maintainer ---------- diff --git a/l10n_pt_vat/__init__.py b/l10n_pt_vat/__init__.py index 77bbdbd3..cde864ba 100644 --- a/l10n_pt_vat/__init__.py +++ b/l10n_pt_vat/__init__.py @@ -1,4 +1,3 @@ # -*- coding: utf-8 -*- from . import models - diff --git a/l10n_pt_vat/__openerp__.py b/l10n_pt_vat/__openerp__.py index 5970514d..6e00248d 100644 --- a/l10n_pt_vat/__openerp__.py +++ b/l10n_pt_vat/__openerp__.py @@ -3,7 +3,6 @@ # # Odoo, Open Source Management Solution # Copyright (C) 2014- Sossia, Lda. () -# Copyright (C) 2004 OpenERP SA () # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as @@ -22,7 +21,7 @@ { "name": "Portugal - IVA", - "version": "0.2", + "version": "8.0.0.0.2", "depends": ['account', 'base_vat'], "author": "Sossia, Odoo Community Association (OCA)", "summary": "Portuguese VAT requirements extensions", diff --git a/l10n_pt_vat/data/vat_adjustment_norm.xml b/l10n_pt_vat/data/vat_adjustment_norm.xml index 1c5c4a08..803c14fe 100644 --- a/l10n_pt_vat/data/vat_adjustment_norm.xml +++ b/l10n_pt_vat/data/vat_adjustment_norm.xml @@ -6,95 +6,95 @@ VAT Adjustment Norm (Fields 40/41 of the VAT Statement) --> - Art. 78º, nº 2 + Art. 78º, nº 2 - Art. 78º, nº 3 + Art. 78º, nº 3 - Art. 78º, nº 4 + Art. 78º, nº 4 - Art. 78º, nº 6 + Art. 78º, nº 6 - Art. 78º, nº 7, alínea a) + Art. 78º, nº 7, alínea a) - Art. 78º, nº 7, alínea b) + Art. 78º, nº 7, alínea b) - Art. 78º, nº 7, alínea c) + Art. 78º, nº 7, alínea c) - Art. 78º, nº 7, alínea d) + Art. 78º, nº 7, alínea d) - Art. 78º, nº 8, alínea b) + Art. 78º, nº 8, alínea b) - Art. 78º, nº 8, alínea c) + Art. 78º, nº 8, alínea c) - - Art. 78º, nº 8, alínea d) - + + Art. 78º, nº 8, alínea d) + - - Art. 78º, nº 8, alínea e) + + Art. 78º, nº 8, alínea e) - - Art. 78º, nº 12 - + + Art. 78º, nº 12 + - - Art. 78º-A, nº 2, alínea a) - + + Art. 78º-A, nº 2, alínea a) + - - Art. 78º-A, nº 4, alínea a) + + Art. 78º-A, nº 4, alínea a) - - Art. 78º-A, nº 4, alínea b) + + Art. 78º-A, nº 4, alínea b) - - Art. 78º-A, nº 4, alínea c) + + Art. 78º-A, nº 4, alínea c) - - Art. 78º-A, nº 4, alínea d) + + Art. 78º-A, nº 4, alínea d) - - Art. 78º-B, nº 4 - + + Art. 78º-B, nº 4 + - - Art. 78º-C, nº 1 - + + Art. 78º-C, nº 1 + - - Art. 78º-C, nº 3 - + + Art. 78º-C, nº 3 + diff --git a/l10n_pt_vat/models/__init__.py b/l10n_pt_vat/models/__init__.py index bcaa4a81..91e02c69 100644 --- a/l10n_pt_vat/models/__init__.py +++ b/l10n_pt_vat/models/__init__.py @@ -3,7 +3,6 @@ # # Odoo, Open Source Management Solution # Copyright (C) 2014- Sossia, Lda. () -# Copyright (C) 2004 OpenERP SA () # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/l10n_pt_vat/models/vat_adjustment_norm.py b/l10n_pt_vat/models/vat_adjustment_norm.py index 5f8dd241..858f499a 100644 --- a/l10n_pt_vat/models/vat_adjustment_norm.py +++ b/l10n_pt_vat/models/vat_adjustment_norm.py @@ -23,12 +23,9 @@ from openerp import api, models, fields from openerp import exceptions -# -# VAT Adjustment Norm (Fields 40/41 of the VAT Statement) -# - - class account_vat_adjustment_norm(models.Model): + "VAT Adjustment Norm (Fields 40/41 of the VAT Statement)" + _name = "account.vat.adjustment_norm" _description = "VAT Adjustment Norm" diff --git a/l10n_pt_vat/views/account_invoice_view.xml b/l10n_pt_vat/views/account_invoice_view.xml index b4dbbae8..f46c2bfe 100644 --- a/l10n_pt_vat/views/account_invoice_view.xml +++ b/l10n_pt_vat/views/account_invoice_view.xml @@ -2,39 +2,39 @@ - - - Account Invoice - account.invoice - - - - - - - - - - + + + Account Invoice + account.invoice + + + + + + + + + + - - - Account Invoice - account.invoice - - - - - - - - - - + + + Account Invoice + account.invoice + + + + + + + + + + diff --git a/l10n_pt_vat/views/vat_adjustment_norm_view.xml b/l10n_pt_vat/views/vat_adjustment_norm_view.xml index f5a2104b..8ab0491b 100644 --- a/l10n_pt_vat/views/vat_adjustment_norm_view.xml +++ b/l10n_pt_vat/views/vat_adjustment_norm_view.xml @@ -2,73 +2,73 @@ - - - - account.vat.adjustment_norm.search - account.vat.adjustment_norm - - - - - - - - - account.vat.adjustment_norm.tree - account.vat.adjustment_norm - child_ids - 100 - - - - - - - - - account.vat.adjustment_norm.form - account.vat.adjustment_norm - -
- - - - - - - - - -
-
-
- - VAT Adjustment Norm - account.vat.adjustment_norm - form - tree,form - - - - - VAT Adjustment Norms - account.vat.adjustment_norm - form - tree,form - - - + + + + account.vat.adjustment_norm.search + account.vat.adjustment_norm + + + + + + + + + account.vat.adjustment_norm.tree + account.vat.adjustment_norm + child_ids + 100 + + + + + + + + + account.vat.adjustment_norm.form + account.vat.adjustment_norm + +
+ + + + + + + + + +
+
+
+ + VAT Adjustment Norm + account.vat.adjustment_norm + form + tree,form + + - + + VAT Adjustment Norms + account.vat.adjustment_norm + form + tree,form + + + - + + +
From 7c037114f0032d4ab190706b7f804bc07220bbb2 Mon Sep 17 00:00:00 2001 From: Pedro Castro Silva Date: Mon, 12 Oct 2015 19:38:32 +0100 Subject: [PATCH 03/58] [FIX] replace deprecated col attribute --- l10n_pt_vat/views/vat_adjustment_norm_view.xml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/l10n_pt_vat/views/vat_adjustment_norm_view.xml b/l10n_pt_vat/views/vat_adjustment_norm_view.xml index 8ab0491b..ed1849fb 100644 --- a/l10n_pt_vat/views/vat_adjustment_norm_view.xml +++ b/l10n_pt_vat/views/vat_adjustment_norm_view.xml @@ -31,14 +31,16 @@ account.vat.adjustment_norm
- - - - - - - + + + + + + + + +
From 0d8570ae2204e2a3571f1e3b7e35840a346eb085 Mon Sep 17 00:00:00 2001 From: Pedro Castro Silva Date: Tue, 13 Oct 2015 09:41:31 +0100 Subject: [PATCH 04/58] test_flake8 cleaning --- l10n_pt_vat/__openerp__.py | 33 ++++++++++++----------- l10n_pt_vat/models/vat_adjustment_norm.py | 2 +- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/l10n_pt_vat/__openerp__.py b/l10n_pt_vat/__openerp__.py index 6e00248d..1130c59e 100644 --- a/l10n_pt_vat/__openerp__.py +++ b/l10n_pt_vat/__openerp__.py @@ -20,20 +20,21 @@ ############################################################################## { - "name": "Portugal - IVA", - "version": "8.0.0.0.2", - "depends": ['account', 'base_vat'], - "author": "Sossia, Odoo Community Association (OCA)", - "summary": "Portuguese VAT requirements extensions", - "website": "http://www.sossia.pt", - "category": "Accounting & Finance", - "data": [ - "security/ir.model.access.csv", - "data/vat_adjustment_norm.xml", - "views/vat_adjustment_norm_view.xml", - "views/account_invoice_view.xml", - ], - "installable": True, - "auto_install": False, - "application": False, + "name": "Portugal - IVA", + "version": "8.0.0.0.2", + "license": "AGPL-3", + "depends": ['account', 'base_vat'], + "author": "Sossia, Odoo Community Association (OCA)", + "summary": "Portuguese VAT requirements extensions", + "website": "http://www.sossia.pt", + "category": "Accounting & Finance", + "data": [ + "security/ir.model.access.csv", + "data/vat_adjustment_norm.xml", + "views/vat_adjustment_norm_view.xml", + "views/account_invoice_view.xml", + ], + "installable": True, + "auto_install": False, + "application": False, } diff --git a/l10n_pt_vat/models/vat_adjustment_norm.py b/l10n_pt_vat/models/vat_adjustment_norm.py index 858f499a..213f04fc 100644 --- a/l10n_pt_vat/models/vat_adjustment_norm.py +++ b/l10n_pt_vat/models/vat_adjustment_norm.py @@ -23,7 +23,7 @@ from openerp import api, models, fields from openerp import exceptions -class account_vat_adjustment_norm(models.Model): +class AccountVATAdjustmentNorm(models.Model): "VAT Adjustment Norm (Fields 40/41 of the VAT Statement)" _name = "account.vat.adjustment_norm" From 6416bd4b86a1115f0ba82aec163bf9017b3ef9e1 Mon Sep 17 00:00:00 2001 From: Pedro Castro Silva Date: Tue, 13 Oct 2015 10:46:30 +0100 Subject: [PATCH 05/58] test_flake8 cleaning --- l10n_pt_vat/__openerp__.py | 34 +++++++++++------------ l10n_pt_vat/models/vat_adjustment_norm.py | 4 +-- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/l10n_pt_vat/__openerp__.py b/l10n_pt_vat/__openerp__.py index 1130c59e..ab0d69ca 100644 --- a/l10n_pt_vat/__openerp__.py +++ b/l10n_pt_vat/__openerp__.py @@ -20,21 +20,21 @@ ############################################################################## { - "name": "Portugal - IVA", - "version": "8.0.0.0.2", - "license": "AGPL-3", - "depends": ['account', 'base_vat'], - "author": "Sossia, Odoo Community Association (OCA)", - "summary": "Portuguese VAT requirements extensions", - "website": "http://www.sossia.pt", - "category": "Accounting & Finance", - "data": [ - "security/ir.model.access.csv", - "data/vat_adjustment_norm.xml", - "views/vat_adjustment_norm_view.xml", - "views/account_invoice_view.xml", - ], - "installable": True, - "auto_install": False, - "application": False, + "name": "Portugal - IVA", + "version": "8.0.0.0.2", + "license": "AGPL-3", + "depends": ['account', 'base_vat'], + "author": "Sossia, Odoo Community Association (OCA)", + "summary": "Portuguese VAT requirements extensions", + "website": "http://www.sossia.pt", + "category": "Accounting & Finance", + "data": [ + "security/ir.model.access.csv", + "data/vat_adjustment_norm.xml", + "views/vat_adjustment_norm_view.xml", + "views/account_invoice_view.xml", + ], + "installable": True, + "auto_install": False, + "application": False, } diff --git a/l10n_pt_vat/models/vat_adjustment_norm.py b/l10n_pt_vat/models/vat_adjustment_norm.py index 213f04fc..9a68d92f 100644 --- a/l10n_pt_vat/models/vat_adjustment_norm.py +++ b/l10n_pt_vat/models/vat_adjustment_norm.py @@ -24,7 +24,7 @@ from openerp import exceptions class AccountVATAdjustmentNorm(models.Model): - "VAT Adjustment Norm (Fields 40/41 of the VAT Statement)" + "Support fields 40/41 of the VAT Statement)" _name = "account.vat.adjustment_norm" _description = "VAT Adjustment Norm" @@ -65,4 +65,4 @@ def unlink(self): raise exceptions.Warning("Couldn't delete the adjustment norms" "because they are still referenced in" "refunds.") - return super(account_vat_adjustment_norm, self).unlink() + return super(AccountVATAdjustmentNorm, self).unlink() From 4b206d933f32d68b39b6fd12d3c0538f2f094912 Mon Sep 17 00:00:00 2001 From: Pedro Castro Silva Date: Tue, 13 Oct 2015 11:20:34 +0100 Subject: [PATCH 06/58] test_flake8 cleaning --- l10n_pt_vat/models/vat_adjustment_norm.py | 1 + 1 file changed, 1 insertion(+) diff --git a/l10n_pt_vat/models/vat_adjustment_norm.py b/l10n_pt_vat/models/vat_adjustment_norm.py index 9a68d92f..4a893178 100644 --- a/l10n_pt_vat/models/vat_adjustment_norm.py +++ b/l10n_pt_vat/models/vat_adjustment_norm.py @@ -23,6 +23,7 @@ from openerp import api, models, fields from openerp import exceptions + class AccountVATAdjustmentNorm(models.Model): "Support fields 40/41 of the VAT Statement)" From 73afeb65a8de4e5efd044a05ccdb3f72a3961a3c Mon Sep 17 00:00:00 2001 From: Pedro Castro Silva Date: Fri, 30 Oct 2015 02:17:06 +0000 Subject: [PATCH 07/58] [FIX] minor adjustments --- l10n_pt_vat/data/vat_adjustment_norm.xml | 4 ++-- l10n_pt_vat/models/account_invoice.py | 3 ++- l10n_pt_vat/models/vat_adjustment_norm.py | 16 +--------------- l10n_pt_vat/views/account_invoice_view.xml | 6 ++---- l10n_pt_vat/views/vat_adjustment_norm_view.xml | 5 ++--- 5 files changed, 9 insertions(+), 25 deletions(-) diff --git a/l10n_pt_vat/data/vat_adjustment_norm.xml b/l10n_pt_vat/data/vat_adjustment_norm.xml index 803c14fe..bc78bb04 100644 --- a/l10n_pt_vat/data/vat_adjustment_norm.xml +++ b/l10n_pt_vat/data/vat_adjustment_norm.xml @@ -1,5 +1,5 @@ - + @@ -37,6 +37,4 @@
- - - + diff --git a/l10n_pt_vat/views/vat_adjustment_norm_view.xml b/l10n_pt_vat/views/vat_adjustment_norm_view.xml index ed1849fb..503a1338 100644 --- a/l10n_pt_vat/views/vat_adjustment_norm_view.xml +++ b/l10n_pt_vat/views/vat_adjustment_norm_view.xml @@ -1,5 +1,5 @@ - + @@ -73,6 +73,5 @@ sequence="30"/> - - + From 0fe456f7378464fe098554d2b913472893477d40 Mon Sep 17 00:00:00 2001 From: Pedro Castro Silva Date: Fri, 30 Oct 2015 03:50:57 +0000 Subject: [PATCH 08/58] [FIX] minor adjustments --- l10n_pt_vat/data/vat_adjustment_norm.xml | 4 ++-- l10n_pt_vat/models/vat_adjustment_norm.py | 3 +-- l10n_pt_vat/views/account_invoice_view.xml | 4 ++-- l10n_pt_vat/views/vat_adjustment_norm_view.xml | 5 ++--- 4 files changed, 7 insertions(+), 9 deletions(-) diff --git a/l10n_pt_vat/data/vat_adjustment_norm.xml b/l10n_pt_vat/data/vat_adjustment_norm.xml index bc78bb04..803c14fe 100644 --- a/l10n_pt_vat/data/vat_adjustment_norm.xml +++ b/l10n_pt_vat/data/vat_adjustment_norm.xml @@ -1,5 +1,5 @@ - + @@ -37,4 +37,4 @@
- + diff --git a/l10n_pt_vat/views/vat_adjustment_norm_view.xml b/l10n_pt_vat/views/vat_adjustment_norm_view.xml index 503a1338..e19cf41a 100644 --- a/l10n_pt_vat/views/vat_adjustment_norm_view.xml +++ b/l10n_pt_vat/views/vat_adjustment_norm_view.xml @@ -1,5 +1,5 @@ - + @@ -73,5 +73,4 @@ sequence="30"/> - - + From 19d6c7d346936c81ef707124c5df1823ab0925f5 Mon Sep 17 00:00:00 2001 From: Pedro Castro Silva Date: Wed, 18 Nov 2015 15:11:52 +0000 Subject: [PATCH 09/58] portuguese translation --- l10n_pt_vat/README.rst | 2 +- l10n_pt_vat/__openerp__.py | 8 +- l10n_pt_vat/i18n/l10n_pt_vat.pot | 109 ++++++++++++++++++++++ l10n_pt_vat/i18n/pt.po | 109 ++++++++++++++++++++++ l10n_pt_vat/models/vat_adjustment_norm.py | 4 +- 5 files changed, 225 insertions(+), 7 deletions(-) create mode 100644 l10n_pt_vat/i18n/l10n_pt_vat.pot create mode 100644 l10n_pt_vat/i18n/pt.po diff --git a/l10n_pt_vat/README.rst b/l10n_pt_vat/README.rst index 8ea4ce04..60353ef4 100644 --- a/l10n_pt_vat/README.rst +++ b/l10n_pt_vat/README.rst @@ -15,7 +15,7 @@ Credits Contributors ------------ -- Pedro Castro Silva (Sossia) +- Pedro Castro Silva (`Sossia `_) Maintainer diff --git a/l10n_pt_vat/__openerp__.py b/l10n_pt_vat/__openerp__.py index ab0d69ca..34026077 100644 --- a/l10n_pt_vat/__openerp__.py +++ b/l10n_pt_vat/__openerp__.py @@ -21,18 +21,18 @@ { "name": "Portugal - IVA", - "version": "8.0.0.0.2", + "version": "8.0.0.0.3", "license": "AGPL-3", "depends": ['account', 'base_vat'], "author": "Sossia, Odoo Community Association (OCA)", "summary": "Portuguese VAT requirements extensions", - "website": "http://www.sossia.pt", - "category": "Accounting & Finance", + "website": "https://github.com/OCA/l10n-portugal", + "category": "Localisation/Europe", "data": [ "security/ir.model.access.csv", "data/vat_adjustment_norm.xml", "views/vat_adjustment_norm_view.xml", - "views/account_invoice_view.xml", + "views/account_invoice_view.xml", ], "installable": True, "auto_install": False, diff --git a/l10n_pt_vat/i18n/l10n_pt_vat.pot b/l10n_pt_vat/i18n/l10n_pt_vat.pot new file mode 100644 index 00000000..11fb8d66 --- /dev/null +++ b/l10n_pt_vat/i18n/l10n_pt_vat.pot @@ -0,0 +1,109 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * l10n_pt_vat +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-11-18 15:02+0000\n" +"PO-Revision-Date: 2015-11-18 15:02+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: l10n_pt_vat +#: field:account.vat.adjustment_norm,active:0 +msgid "Active" +msgstr "" + +#. module: l10n_pt_vat +#: field:account.vat.adjustment_norm,create_uid:0 +msgid "Created by" +msgstr "" + +#. module: l10n_pt_vat +#: field:account.vat.adjustment_norm,create_date:0 +msgid "Created on" +msgstr "" + +#. module: l10n_pt_vat +#: field:account.vat.adjustment_norm,note:0 +msgid "Description" +msgstr "" + +#. module: l10n_pt_vat +#: field:account.vat.adjustment_norm,id:0 +msgid "ID" +msgstr "" + +#. module: l10n_pt_vat +#: help:account.vat.adjustment_norm,in_refunds:0 +msgid "If True, it will allow you to apply the adjustment norm to third party companies refunds." +msgstr "" + +#. module: l10n_pt_vat +#: help:account.vat.adjustment_norm,out_refunds:0 +msgid "If True, it will allow you to apply the adjustment norm to your company refunds." +msgstr "" + +#. module: l10n_pt_vat +#: help:account.vat.adjustment_norm,active:0 +msgid "If the active field is set to False, it will allow you to hide the adjustment norm without removing it." +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model,name:l10n_pt_vat.model_account_invoice +msgid "Invoice" +msgstr "" + +#. module: l10n_pt_vat +#: field:account.vat.adjustment_norm,write_uid:0 +msgid "Last Updated by" +msgstr "" + +#. module: l10n_pt_vat +#: field:account.vat.adjustment_norm,write_date:0 +msgid "Last Updated on" +msgstr "" + +#. module: l10n_pt_vat +#: view:account.vat.adjustment_norm:l10n_pt_vat.vat_adjustment_norm_view_form +msgid "Legal Norm (ex: Art. 78º, nº 8, alínea b)) ..." +msgstr "" + +#. module: l10n_pt_vat +#: field:account.vat.adjustment_norm,name:0 +msgid "Name" +msgstr "" + +#. module: l10n_pt_vat +#: field:account.vat.adjustment_norm,out_refunds:0 +msgid "Use on company refunds" +msgstr "" + +#. module: l10n_pt_vat +#: field:account.vat.adjustment_norm,in_refunds:0 +msgid "Use on third party refunds" +msgstr "" + +#. module: l10n_pt_vat +#: field:account.invoice,vat_adjustment_norm_id:0 +#: view:account.vat.adjustment_norm:l10n_pt_vat.vat_adjustment_norm_view_form +#: view:account.vat.adjustment_norm:l10n_pt_vat.vat_adjustment_norm_view_search +#: view:account.vat.adjustment_norm:l10n_pt_vat.vat_adjustment_norm_view_tree +#: model:ir.actions.act_window,name:l10n_pt_vat.action_vat_adjustment_norm_form +#: model:ir.model,name:l10n_pt_vat.model_account_vat_adjustment_norm +#: model:ir.ui.menu,name:l10n_pt_vat.menu_action_vat_adjustment_norm_form +msgid "VAT Adjustment Norm" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.actions.act_window,name:l10n_pt_vat.vat_adjustment_norm_action_list +#: model:ir.ui.menu,name:l10n_pt_vat.menu_action_vat_adjustment_norm_list +msgid "VAT Adjustment Norms" +msgstr "" + diff --git a/l10n_pt_vat/i18n/pt.po b/l10n_pt_vat/i18n/pt.po new file mode 100644 index 00000000..28010030 --- /dev/null +++ b/l10n_pt_vat/i18n/pt.po @@ -0,0 +1,109 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * l10n_pt_vat +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-11-18 15:02+0000\n" +"PO-Revision-Date: 2015-11-18 15:02+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: l10n_pt_vat +#: field:account.vat.adjustment_norm,active:0 +msgid "Active" +msgstr "Ativo" + +#. module: l10n_pt_vat +#: field:account.vat.adjustment_norm,create_uid:0 +msgid "Created by" +msgstr "Criado por" + +#. module: l10n_pt_vat +#: field:account.vat.adjustment_norm,create_date:0 +msgid "Created on" +msgstr "Criado em" + +#. module: l10n_pt_vat +#: field:account.vat.adjustment_norm,note:0 +msgid "Description" +msgstr "Descrição" + +#. module: l10n_pt_vat +#: field:account.vat.adjustment_norm,id:0 +msgid "ID" +msgstr "ID" + +#. module: l10n_pt_vat +#: help:account.vat.adjustment_norm,in_refunds:0 +msgid "If True, it will allow you to apply the adjustment norm to third party companies refunds." +msgstr "Se assinalado, poderá aplicar a norma de regularização a notas de crédito de terceiros" + +#. module: l10n_pt_vat +#: help:account.vat.adjustment_norm,out_refunds:0 +msgid "If True, it will allow you to apply the adjustment norm to your company refunds." +msgstr "Se assinalado, poderá aplicar a norma de regularização às suas notas de crédito" + +#. module: l10n_pt_vat +#: help:account.vat.adjustment_norm,active:0 +msgid "If the active field is set to False, it will allow you to hide the adjustment norm without removing it." +msgstr "Se o campo Ativo não estiver assinalado, poderá esconder a norma de regularização sem a remover." + +#. module: l10n_pt_vat +#: model:ir.model,name:l10n_pt_vat.model_account_invoice +msgid "Invoice" +msgstr "Fatura" + +#. module: l10n_pt_vat +#: field:account.vat.adjustment_norm,write_uid:0 +msgid "Last Updated by" +msgstr "Atualizado pela últ. vez por" + +#. module: l10n_pt_vat +#: field:account.vat.adjustment_norm,write_date:0 +msgid "Last Updated on" +msgstr "Atualizado pela últ. vez em" + +#. module: l10n_pt_vat +#: view:account.vat.adjustment_norm:l10n_pt_vat.vat_adjustment_norm_view_form +msgid "Legal Norm (ex: Art. 78º, nº 8, alínea b)) ..." +msgstr "Norma de Regularização Legal (ex: Art. 78º, nº 8, alínea b)) ..." + +#. module: l10n_pt_vat +#: field:account.vat.adjustment_norm,name:0 +msgid "Name" +msgstr "Nome" + +#. module: l10n_pt_vat +#: field:account.vat.adjustment_norm,out_refunds:0 +msgid "Use on company refunds" +msgstr "Utilizar em notas de crédito próprias" + +#. module: l10n_pt_vat +#: field:account.vat.adjustment_norm,in_refunds:0 +msgid "Use on third party refunds" +msgstr "Utilizar em notas de crédito de terceiros" + +#. module: l10n_pt_vat +#: field:account.invoice,vat_adjustment_norm_id:0 +#: view:account.vat.adjustment_norm:l10n_pt_vat.vat_adjustment_norm_view_form +#: view:account.vat.adjustment_norm:l10n_pt_vat.vat_adjustment_norm_view_search +#: view:account.vat.adjustment_norm:l10n_pt_vat.vat_adjustment_norm_view_tree +#: model:ir.actions.act_window,name:l10n_pt_vat.action_vat_adjustment_norm_form +#: model:ir.model,name:l10n_pt_vat.model_account_vat_adjustment_norm +#: model:ir.ui.menu,name:l10n_pt_vat.menu_action_vat_adjustment_norm_form +msgid "VAT Adjustment Norm" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.actions.act_window,name:l10n_pt_vat.vat_adjustment_norm_action_list +#: model:ir.ui.menu,name:l10n_pt_vat.menu_action_vat_adjustment_norm_list +msgid "VAT Adjustment Norms" +msgstr "" + diff --git a/l10n_pt_vat/models/vat_adjustment_norm.py b/l10n_pt_vat/models/vat_adjustment_norm.py index 737ccf9f..a0fad23f 100644 --- a/l10n_pt_vat/models/vat_adjustment_norm.py +++ b/l10n_pt_vat/models/vat_adjustment_norm.py @@ -45,10 +45,10 @@ class AccountVATAdjustmentNorm(models.Model): out_refunds = fields.Boolean( string='Use on company refunds', - help="If True, it will allow you to apply the adjustment" + help="If True, it will allow you to apply the adjustment " "norm to your company refunds.") in_refunds = fields.Boolean( string='Use on third party refunds', - help="If True, it will allow you to apply the adjustment" + help="If True, it will allow you to apply the adjustment " "norm to third party companies refunds.") From 0d2e29f77f79b746fb85aab54b3146fa763165b2 Mon Sep 17 00:00:00 2001 From: Pedro Castro Silva Date: Wed, 18 Nov 2015 17:28:57 +0000 Subject: [PATCH 10/58] [FIX] new module category --- l10n_pt_vat/__openerp__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/l10n_pt_vat/__openerp__.py b/l10n_pt_vat/__openerp__.py index 34026077..e7511db2 100644 --- a/l10n_pt_vat/__openerp__.py +++ b/l10n_pt_vat/__openerp__.py @@ -27,7 +27,7 @@ "author": "Sossia, Odoo Community Association (OCA)", "summary": "Portuguese VAT requirements extensions", "website": "https://github.com/OCA/l10n-portugal", - "category": "Localisation/Europe", + "category": "Localization/Portugal", "data": [ "security/ir.model.access.csv", "data/vat_adjustment_norm.xml", From 559ecf62d2cc1ebf59e0a829faf4756885b6f82e Mon Sep 17 00:00:00 2001 From: Pedro Castro Silva Date: Wed, 18 Nov 2015 18:53:38 +0000 Subject: [PATCH 11/58] module category correction --- l10n_pt_vat/__openerp__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/l10n_pt_vat/__openerp__.py b/l10n_pt_vat/__openerp__.py index e7511db2..102ea0c2 100644 --- a/l10n_pt_vat/__openerp__.py +++ b/l10n_pt_vat/__openerp__.py @@ -27,7 +27,7 @@ "author": "Sossia, Odoo Community Association (OCA)", "summary": "Portuguese VAT requirements extensions", "website": "https://github.com/OCA/l10n-portugal", - "category": "Localization/Portugal", + "category": "Localisation/Portugal", "data": [ "security/ir.model.access.csv", "data/vat_adjustment_norm.xml", From c5d77118adce0a8ab2f5bf675c3d98d38792ed52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul=20=28ACSONE=29?= Date: Fri, 15 Jun 2018 23:26:00 +0200 Subject: [PATCH 12/58] remove obsolete .pot files [ci skip] --- l10n_pt_vat/i18n/l10n_pt_vat.pot | 109 ------------------------------- 1 file changed, 109 deletions(-) delete mode 100644 l10n_pt_vat/i18n/l10n_pt_vat.pot diff --git a/l10n_pt_vat/i18n/l10n_pt_vat.pot b/l10n_pt_vat/i18n/l10n_pt_vat.pot deleted file mode 100644 index 11fb8d66..00000000 --- a/l10n_pt_vat/i18n/l10n_pt_vat.pot +++ /dev/null @@ -1,109 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * l10n_pt_vat -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 8.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-11-18 15:02+0000\n" -"PO-Revision-Date: 2015-11-18 15:02+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: l10n_pt_vat -#: field:account.vat.adjustment_norm,active:0 -msgid "Active" -msgstr "" - -#. module: l10n_pt_vat -#: field:account.vat.adjustment_norm,create_uid:0 -msgid "Created by" -msgstr "" - -#. module: l10n_pt_vat -#: field:account.vat.adjustment_norm,create_date:0 -msgid "Created on" -msgstr "" - -#. module: l10n_pt_vat -#: field:account.vat.adjustment_norm,note:0 -msgid "Description" -msgstr "" - -#. module: l10n_pt_vat -#: field:account.vat.adjustment_norm,id:0 -msgid "ID" -msgstr "" - -#. module: l10n_pt_vat -#: help:account.vat.adjustment_norm,in_refunds:0 -msgid "If True, it will allow you to apply the adjustment norm to third party companies refunds." -msgstr "" - -#. module: l10n_pt_vat -#: help:account.vat.adjustment_norm,out_refunds:0 -msgid "If True, it will allow you to apply the adjustment norm to your company refunds." -msgstr "" - -#. module: l10n_pt_vat -#: help:account.vat.adjustment_norm,active:0 -msgid "If the active field is set to False, it will allow you to hide the adjustment norm without removing it." -msgstr "" - -#. module: l10n_pt_vat -#: model:ir.model,name:l10n_pt_vat.model_account_invoice -msgid "Invoice" -msgstr "" - -#. module: l10n_pt_vat -#: field:account.vat.adjustment_norm,write_uid:0 -msgid "Last Updated by" -msgstr "" - -#. module: l10n_pt_vat -#: field:account.vat.adjustment_norm,write_date:0 -msgid "Last Updated on" -msgstr "" - -#. module: l10n_pt_vat -#: view:account.vat.adjustment_norm:l10n_pt_vat.vat_adjustment_norm_view_form -msgid "Legal Norm (ex: Art. 78º, nº 8, alínea b)) ..." -msgstr "" - -#. module: l10n_pt_vat -#: field:account.vat.adjustment_norm,name:0 -msgid "Name" -msgstr "" - -#. module: l10n_pt_vat -#: field:account.vat.adjustment_norm,out_refunds:0 -msgid "Use on company refunds" -msgstr "" - -#. module: l10n_pt_vat -#: field:account.vat.adjustment_norm,in_refunds:0 -msgid "Use on third party refunds" -msgstr "" - -#. module: l10n_pt_vat -#: field:account.invoice,vat_adjustment_norm_id:0 -#: view:account.vat.adjustment_norm:l10n_pt_vat.vat_adjustment_norm_view_form -#: view:account.vat.adjustment_norm:l10n_pt_vat.vat_adjustment_norm_view_search -#: view:account.vat.adjustment_norm:l10n_pt_vat.vat_adjustment_norm_view_tree -#: model:ir.actions.act_window,name:l10n_pt_vat.action_vat_adjustment_norm_form -#: model:ir.model,name:l10n_pt_vat.model_account_vat_adjustment_norm -#: model:ir.ui.menu,name:l10n_pt_vat.menu_action_vat_adjustment_norm_form -msgid "VAT Adjustment Norm" -msgstr "" - -#. module: l10n_pt_vat -#: model:ir.actions.act_window,name:l10n_pt_vat.vat_adjustment_norm_action_list -#: model:ir.ui.menu,name:l10n_pt_vat.menu_action_vat_adjustment_norm_list -msgid "VAT Adjustment Norms" -msgstr "" - From 53d93782e8b141bf268db1789c95082f031382ad Mon Sep 17 00:00:00 2001 From: Daniel Reis Date: Tue, 4 Feb 2020 23:57:43 +0000 Subject: [PATCH 13/58] [MIG] Migrate to 12.0 --- l10n_pt_vat/README.rst | 45 ++---- l10n_pt_vat/__init__.py | 2 - l10n_pt_vat/__manifest__.py | 20 +++ l10n_pt_vat/__openerp__.py | 40 ----- l10n_pt_vat/data/vat_adjustment_norm.xml | 152 +++++++++--------- l10n_pt_vat/models/__init__.py | 21 --- l10n_pt_vat/models/account_invoice.py | 35 ++-- l10n_pt_vat/models/vat_adjustment_norm.py | 49 ++---- l10n_pt_vat/readme/CONTRIBUTORS.rst | 2 + l10n_pt_vat/readme/DESCRIPTION.rst | 3 + l10n_pt_vat/readme/USAGE.rst | 1 + l10n_pt_vat/views/account_invoice_view.xml | 75 ++++----- .../views/vat_adjustment_norm_view.xml | 134 ++++++++------- 13 files changed, 238 insertions(+), 341 deletions(-) create mode 100644 l10n_pt_vat/__manifest__.py delete mode 100644 l10n_pt_vat/__openerp__.py create mode 100644 l10n_pt_vat/readme/CONTRIBUTORS.rst create mode 100644 l10n_pt_vat/readme/DESCRIPTION.rst create mode 100644 l10n_pt_vat/readme/USAGE.rst diff --git a/l10n_pt_vat/README.rst b/l10n_pt_vat/README.rst index 60353ef4..21cd7854 100644 --- a/l10n_pt_vat/README.rst +++ b/l10n_pt_vat/README.rst @@ -1,34 +1,21 @@ -.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg - :alt: License: AGPL-3 +**This file is going to be generated by oca-gen-addon-readme.** -Portugal - VAT -=================================== +*Manual changes will be overwritten.* -This modules extends the base localization modules with a few VAT specific functions that are required by the Portuguese Tax Authorities, including: +Please provide content in the ``readme`` directory: -* The use of pre-defined legally accepted reasons for issuing credit notes, as required for fields 40/41 of the VAT statement (Portaria nº 255/2013). +* **DESCRIPTION.rst** (required) +* INSTALL.rst (optional) +* CONFIGURE.rst (optional) +* **USAGE.rst** (optional, highly recommended) +* DEVELOP.rst (optional) +* ROADMAP.rst (optional) +* HISTORY.rst (optional, recommended) +* **CONTRIBUTORS.rst** (optional, highly recommended) +* CREDITS.rst (optional) +Content of this README will also be drawn from the addon manifest, +from keys such as name, authors, maintainers, development_status, +and license. -Credits -======== - -Contributors ------------- - -- Pedro Castro Silva (`Sossia `_) - - -Maintainer ----------- - -.. image:: https://odoo-community.org/logo.png - :alt: Odoo Community Association - :target: https://odoo-community.org - -This module is maintained by the OCA. - -OCA, or the Odoo Community Association, is a nonprofit organization whose -mission is to support the collaborative development of Odoo features and -promote its widespread use. - -To contribute to this module, please visit http://odoo-community.org. +A good, one sentence summary in the manifest is also highly recommended. diff --git a/l10n_pt_vat/__init__.py b/l10n_pt_vat/__init__.py index cde864ba..0650744f 100644 --- a/l10n_pt_vat/__init__.py +++ b/l10n_pt_vat/__init__.py @@ -1,3 +1 @@ -# -*- coding: utf-8 -*- - from . import models diff --git a/l10n_pt_vat/__manifest__.py b/l10n_pt_vat/__manifest__.py new file mode 100644 index 00000000..67fd50d1 --- /dev/null +++ b/l10n_pt_vat/__manifest__.py @@ -0,0 +1,20 @@ +# Copyright (C) 2014- Sossia, Lda. () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "Portugal - IVA", + "version": "12.0.0.0.0", + "license": "AGPL-3", + "depends": ["account", "l10n_pt"], + "author": "Sossia, Odoo Community Association (OCA)", + "summary": "Portuguese VAT requirements extensions", + "website": "https://github.com/OCA/l10n-portugal", + "category": "Localisation/Portugal", + "data": [ + "security/ir.model.access.csv", + "data/vat_adjustment_norm.xml", + "views/vat_adjustment_norm_view.xml", + "views/account_invoice_view.xml", + ], + "installable": True, + "auto_install": True, +} diff --git a/l10n_pt_vat/__openerp__.py b/l10n_pt_vat/__openerp__.py deleted file mode 100644 index 102ea0c2..00000000 --- a/l10n_pt_vat/__openerp__.py +++ /dev/null @@ -1,40 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# Odoo, Open Source Management Solution -# Copyright (C) 2014- Sossia, Lda. () -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -{ - "name": "Portugal - IVA", - "version": "8.0.0.0.3", - "license": "AGPL-3", - "depends": ['account', 'base_vat'], - "author": "Sossia, Odoo Community Association (OCA)", - "summary": "Portuguese VAT requirements extensions", - "website": "https://github.com/OCA/l10n-portugal", - "category": "Localisation/Portugal", - "data": [ - "security/ir.model.access.csv", - "data/vat_adjustment_norm.xml", - "views/vat_adjustment_norm_view.xml", - "views/account_invoice_view.xml", - ], - "installable": True, - "auto_install": False, - "application": False, -} diff --git a/l10n_pt_vat/data/vat_adjustment_norm.xml b/l10n_pt_vat/data/vat_adjustment_norm.xml index 803c14fe..f2c0ca02 100644 --- a/l10n_pt_vat/data/vat_adjustment_norm.xml +++ b/l10n_pt_vat/data/vat_adjustment_norm.xml @@ -1,100 +1,96 @@ - - - - + - Art. 78º, nº 2 - + Art. 78º, nº 2 + - Art. 78º, nº 3 - - + Art. 78º, nº 3 + + - Art. 78º, nº 4 - + Art. 78º, nº 4 + - Art. 78º, nº 6 - - + Art. 78º, nº 6 + + - Art. 78º, nº 7, alínea a) - - + Art. 78º, nº 7, alínea a) + + - Art. 78º, nº 7, alínea b) - - + Art. 78º, nº 7, alínea b) + + - Art. 78º, nº 7, alínea c) - - + Art. 78º, nº 7, alínea c) + + - Art. 78º, nº 7, alínea d) - - + Art. 78º, nº 7, alínea d) + + - Art. 78º, nº 8, alínea b) - + Art. 78º, nº 8, alínea b) + - Art. 78º, nº 8, alínea c) - - - - Art. 78º, nº 8, alínea d) - - - - - Art. 78º, nº 8, alínea e) - - - - Art. 78º, nº 12 - - - - Art. 78º-A, nº 2, alínea a) - - - - Art. 78º-A, nº 4, alínea a) - - - - Art. 78º-A, nº 4, alínea b) - - - - Art. 78º-A, nº 4, alínea c) - - - - Art. 78º-A, nº 4, alínea d) - - - - Art. 78º-B, nº 4 - - - - Art. 78º-C, nº 1 - - - - Art. 78º-C, nº 3 - - - - + Art. 78º, nº 8, alínea c) + +
+ + Art. 78º, nº 8, alínea d) + + + + + Art. 78º, nº 8, alínea e) + + + + Art. 78º, nº 12 + + + + Art. 78º-A, nº 2, alínea a) + + + + Art. 78º-A, nº 4, alínea a) + + + + Art. 78º-A, nº 4, alínea b) + + + + Art. 78º-A, nº 4, alínea c) + + + + Art. 78º-A, nº 4, alínea d) + + + + Art. 78º-B, nº 4 + + + + Art. 78º-C, nº 1 + + + + Art. 78º-C, nº 3 + + + diff --git a/l10n_pt_vat/models/__init__.py b/l10n_pt_vat/models/__init__.py index 91e02c69..c98aeb26 100644 --- a/l10n_pt_vat/models/__init__.py +++ b/l10n_pt_vat/models/__init__.py @@ -1,23 +1,2 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# Odoo, Open Source Management Solution -# Copyright (C) 2014- Sossia, Lda. () -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - from . import account_invoice from . import vat_adjustment_norm diff --git a/l10n_pt_vat/models/account_invoice.py b/l10n_pt_vat/models/account_invoice.py index 7eb78fed..ce5a0bc8 100644 --- a/l10n_pt_vat/models/account_invoice.py +++ b/l10n_pt_vat/models/account_invoice.py @@ -1,32 +1,15 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# Copyright (C) 2014- Sossia, Lda. () -# Copyright (C) 2004 OpenERP SA () -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# Copyright (C) 2014- Sossia, Lda. () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from openerp import models, fields +from odoo import models, fields class AccountInvoice(models.Model): - _inherit = 'account.invoice' + _inherit = "account.invoice" - # VAT Adjustment Norm (Fields 40/41 of the VAT Statement) vat_adjustment_norm_id = fields.Many2one( - 'account.vat.adjustment_norm', - string='VAT Adjustment Norm', - ondelete='restrict') + "account.vat.adjustment_norm", + string="VAT Adjustment Norm", + ondelete="restrict", + help="Fields 40/41 of the VAT Statement", + ) diff --git a/l10n_pt_vat/models/vat_adjustment_norm.py b/l10n_pt_vat/models/vat_adjustment_norm.py index a0fad23f..574d7d39 100644 --- a/l10n_pt_vat/models/vat_adjustment_norm.py +++ b/l10n_pt_vat/models/vat_adjustment_norm.py @@ -1,24 +1,5 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# Odoo, Open Source Management Solution -# Copyright (C) 2014- Sossia, Lda. () -# Copyright (C) 2004 OpenERP SA () -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# Copyright (C) 2014- Sossia, Lda. () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from openerp import models, fields @@ -29,26 +10,20 @@ class AccountVATAdjustmentNorm(models.Model): _name = "account.vat.adjustment_norm" _description = "VAT Adjustment Norm" - name = fields.Char( - string='Name', - required=True) - + name = fields.Char(required=True) active = fields.Boolean( - string='Active', default=True, help="If the active field is set to False, it " - "will allow you to hide the adjustment norm without removing it.") - - note = fields.Text( - string='Description', - translate=True) - + "will allow you to hide the adjustment norm without removing it.", + ) + note = fields.Text(string="Description", translate=True) out_refunds = fields.Boolean( - string='Use on company refunds', + string="Use on company refunds", help="If True, it will allow you to apply the adjustment " - "norm to your company refunds.") - + "norm to your company refunds.", + ) in_refunds = fields.Boolean( - string='Use on third party refunds', + string="Use on third party refunds", help="If True, it will allow you to apply the adjustment " - "norm to third party companies refunds.") + "norm to third party companies refunds.", + ) diff --git a/l10n_pt_vat/readme/CONTRIBUTORS.rst b/l10n_pt_vat/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000..c95b1d1c --- /dev/null +++ b/l10n_pt_vat/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* Daniel Reis (dreis@opensourceintegrators.com) +* Pedro Castro Silva (`Sossia `_) diff --git a/l10n_pt_vat/readme/DESCRIPTION.rst b/l10n_pt_vat/readme/DESCRIPTION.rst new file mode 100644 index 00000000..bde04af5 --- /dev/null +++ b/l10n_pt_vat/readme/DESCRIPTION.rst @@ -0,0 +1,3 @@ +This modules extends the base localization modules with a few VAT specific functions that are required by the Portuguese Tax Authorities, including: + +* The use of pre-defined legally accepted reasons for issuing credit notes, as required for fields 40/41 of the VAT statement (Portaria nº 255/2013). diff --git a/l10n_pt_vat/readme/USAGE.rst b/l10n_pt_vat/readme/USAGE.rst new file mode 100644 index 00000000..ea255611 --- /dev/null +++ b/l10n_pt_vat/readme/USAGE.rst @@ -0,0 +1 @@ +On an Invoice, the VAT adjustment reason is available for selection. diff --git a/l10n_pt_vat/views/account_invoice_view.xml b/l10n_pt_vat/views/account_invoice_view.xml index 64b31339..3f3c49a8 100644 --- a/l10n_pt_vat/views/account_invoice_view.xml +++ b/l10n_pt_vat/views/account_invoice_view.xml @@ -1,40 +1,41 @@ - - - + - - - Account Invoice - account.invoice - - - - - - - - - - + + + Account Invoice + account.invoice + + - - - Account Invoice - account.invoice - - - - - - - - - - + + + + + + - - +
+
+ + + + Account Invoice + account.invoice + + + + + + + + + + + + + + diff --git a/l10n_pt_vat/views/vat_adjustment_norm_view.xml b/l10n_pt_vat/views/vat_adjustment_norm_view.xml index e19cf41a..eaa75b88 100644 --- a/l10n_pt_vat/views/vat_adjustment_norm_view.xml +++ b/l10n_pt_vat/views/vat_adjustment_norm_view.xml @@ -1,76 +1,68 @@ - - - + - - - - account.vat.adjustment_norm.search - account.vat.adjustment_norm - - - - - - - - - account.vat.adjustment_norm.tree - account.vat.adjustment_norm - child_ids - 100 - - - - - - - - - account.vat.adjustment_norm.form - account.vat.adjustment_norm - -
- - - - - - - - - - - -
-
-
- - VAT Adjustment Norm - account.vat.adjustment_norm - form - tree,form - - + + + + account.vat.adjustment_norm.search + account.vat.adjustment_norm + - - VAT Adjustment Norms - account.vat.adjustment_norm - form - tree,form - - - + + + + - + + - + + account.vat.adjustment_norm.tree + account.vat.adjustment_norm + child_ids + 100 + -
-
+ + + + + +
+
+ + + account.vat.adjustment_norm.form + account.vat.adjustment_norm + + +
+ + + + + + + + + + + +
+ +
+
+ + + VAT Adjustment Norms + account.vat.adjustment_norm + tree,form + + + + + From 56d5da277e8d91f7e5adbd7e3d3ec149f44e58c7 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sat, 3 Oct 2020 17:04:54 +0000 Subject: [PATCH 14/58] [UPD] README.rst --- l10n_pt_vat/README.rst | 92 ++++- l10n_pt_vat/static/description/index.html | 428 ++++++++++++++++++++++ 2 files changed, 504 insertions(+), 16 deletions(-) create mode 100644 l10n_pt_vat/static/description/index.html diff --git a/l10n_pt_vat/README.rst b/l10n_pt_vat/README.rst index 21cd7854..8efe37fc 100644 --- a/l10n_pt_vat/README.rst +++ b/l10n_pt_vat/README.rst @@ -1,21 +1,81 @@ -**This file is going to be generated by oca-gen-addon-readme.** +============== +Portugal - IVA +============== -*Manual changes will be overwritten.* +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -Please provide content in the ``readme`` directory: +.. |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%2Fl10n--portugal-lightgray.png?logo=github + :target: https://github.com/OCA/l10n-portugal/tree/12.0/l10n_pt_vat + :alt: OCA/l10n-portugal +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/l10n-portugal-12-0/l10n-portugal-12-0-l10n_pt_vat + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/171/12.0 + :alt: Try me on Runbot -* **DESCRIPTION.rst** (required) -* INSTALL.rst (optional) -* CONFIGURE.rst (optional) -* **USAGE.rst** (optional, highly recommended) -* DEVELOP.rst (optional) -* ROADMAP.rst (optional) -* HISTORY.rst (optional, recommended) -* **CONTRIBUTORS.rst** (optional, highly recommended) -* CREDITS.rst (optional) +|badge1| |badge2| |badge3| |badge4| |badge5| -Content of this README will also be drawn from the addon manifest, -from keys such as name, authors, maintainers, development_status, -and license. +This modules extends the base localization modules with a few VAT specific functions that are required by the Portuguese Tax Authorities, including: -A good, one sentence summary in the manifest is also highly recommended. +* The use of pre-defined legally accepted reasons for issuing credit notes, as required for fields 40/41 of the VAT statement (Portaria nº 255/2013). + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +On an Invoice, the VAT adjustment reason is available for selection. + +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 +~~~~~~~ + +* Sossia + +Contributors +~~~~~~~~~~~~ + +* Daniel Reis (dreis@opensourceintegrators.com) +* Pedro Castro Silva (`Sossia `_) + +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/l10n-portugal `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/l10n_pt_vat/static/description/index.html b/l10n_pt_vat/static/description/index.html new file mode 100644 index 00000000..8e1899f0 --- /dev/null +++ b/l10n_pt_vat/static/description/index.html @@ -0,0 +1,428 @@ + + + + + + +Portugal - IVA + + + +
+

Portugal - IVA

+ + +

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

+

This modules extends the base localization modules with a few VAT specific functions that are required by the Portuguese Tax Authorities, including:

+
    +
  • The use of pre-defined legally accepted reasons for issuing credit notes, as required for fields 40/41 of the VAT statement (Portaria nº 255/2013).
  • +
+

Table of contents

+ +
+

Usage

+

On an Invoice, the VAT adjustment reason is available for selection.

+
+
+

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

+
    +
  • Sossia
  • +
+
+
+

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

+

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

+
+
+
+ + From 4892a4c9f9ddcf87e2e3a019d58df0c1c878941c Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sat, 3 Oct 2020 17:04:54 +0000 Subject: [PATCH 15/58] l10n_pt_vat 12.0.0.1.0 --- l10n_pt_vat/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/l10n_pt_vat/__manifest__.py b/l10n_pt_vat/__manifest__.py index 67fd50d1..6cd6a90e 100644 --- a/l10n_pt_vat/__manifest__.py +++ b/l10n_pt_vat/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Portugal - IVA", - "version": "12.0.0.0.0", + "version": "12.0.0.1.0", "license": "AGPL-3", "depends": ["account", "l10n_pt"], "author": "Sossia, Odoo Community Association (OCA)", From 0f6532378cd05d979e82f5d00ae9781ed8d04a23 Mon Sep 17 00:00:00 2001 From: Daniel Reis Date: Thu, 27 May 2021 20:52:28 +0100 Subject: [PATCH 16/58] [IMP] l10n_pt_vat: black, isort, prettier --- l10n_pt_vat/models/account_invoice.py | 2 +- l10n_pt_vat/models/vat_adjustment_norm.py | 2 +- l10n_pt_vat/views/account_invoice_view.xml | 20 +++++++++++------- .../views/vat_adjustment_norm_view.xml | 21 +++++++++++-------- 4 files changed, 26 insertions(+), 19 deletions(-) diff --git a/l10n_pt_vat/models/account_invoice.py b/l10n_pt_vat/models/account_invoice.py index ce5a0bc8..45c110a8 100644 --- a/l10n_pt_vat/models/account_invoice.py +++ b/l10n_pt_vat/models/account_invoice.py @@ -1,7 +1,7 @@ # Copyright (C) 2014- Sossia, Lda. () # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo import models, fields +from odoo import fields, models class AccountInvoice(models.Model): diff --git a/l10n_pt_vat/models/vat_adjustment_norm.py b/l10n_pt_vat/models/vat_adjustment_norm.py index 574d7d39..60b91edc 100644 --- a/l10n_pt_vat/models/vat_adjustment_norm.py +++ b/l10n_pt_vat/models/vat_adjustment_norm.py @@ -1,7 +1,7 @@ # Copyright (C) 2014- Sossia, Lda. () # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from openerp import models, fields +from openerp import fields, models class AccountVATAdjustmentNorm(models.Model): diff --git a/l10n_pt_vat/views/account_invoice_view.xml b/l10n_pt_vat/views/account_invoice_view.xml index 3f3c49a8..01d4ea98 100644 --- a/l10n_pt_vat/views/account_invoice_view.xml +++ b/l10n_pt_vat/views/account_invoice_view.xml @@ -4,15 +4,17 @@ Account Invoice account.invoice - + - + @@ -23,15 +25,17 @@ Account Invoice account.invoice - + - + diff --git a/l10n_pt_vat/views/vat_adjustment_norm_view.xml b/l10n_pt_vat/views/vat_adjustment_norm_view.xml index eaa75b88..7cd40a6c 100644 --- a/l10n_pt_vat/views/vat_adjustment_norm_view.xml +++ b/l10n_pt_vat/views/vat_adjustment_norm_view.xml @@ -8,8 +8,8 @@ - - + + @@ -23,8 +23,8 @@ - - + + @@ -38,13 +38,16 @@
- - - - + + + + - +
From 2ae590ca7bc39245d486339df3bd25ac080fd5d4 Mon Sep 17 00:00:00 2001 From: Daniel Reis Date: Sat, 3 Oct 2020 21:31:16 +0100 Subject: [PATCH 17/58] [ADD] l10n_pt_vat: Portuguese VAT taxes --- l10n_pt_vat/__manifest__.py | 1 + l10n_pt_vat/data/account_tax.xml | 150 +++++++++++++++++++++++++++++++ 2 files changed, 151 insertions(+) create mode 100644 l10n_pt_vat/data/account_tax.xml diff --git a/l10n_pt_vat/__manifest__.py b/l10n_pt_vat/__manifest__.py index 6cd6a90e..aaadd75f 100644 --- a/l10n_pt_vat/__manifest__.py +++ b/l10n_pt_vat/__manifest__.py @@ -12,6 +12,7 @@ "data": [ "security/ir.model.access.csv", "data/vat_adjustment_norm.xml", + "data/account_tax.xml", "views/vat_adjustment_norm_view.xml", "views/account_invoice_view.xml", ], diff --git a/l10n_pt_vat/data/account_tax.xml b/l10n_pt_vat/data/account_tax.xml new file mode 100644 index 00000000..68a61e57 --- /dev/null +++ b/l10n_pt_vat/data/account_tax.xml @@ -0,0 +1,150 @@ + + + + + VAT Regular + sale + 23 + + + VAT Intermediate + sale + 13 + + + VAT Reduced + sale + 6 + + + VAT + sale + 0 + + + + + 23% VAT Regular Mainland + sale + 23 + + + 22% VAT Regular Madeira + sale + 22 + + + 18% VAT Regular Azores + sale + 18 + + + 13% VAT Regular Mainland + sale + 13 + + + 12% VAT Regular Mainland + sale + 12 + + + 9% VAT Regular Mainland + sale + 9 + + + 6% VAT Regular Mainland + sale + 6 + + + 5% VAT Regular Mainland + sale + 5 + + + 4% VAT Regular Mainland + sale + 4 + + + + + PT Mainland + True + True + + True + 1000 + 8999 + + + PT Madeira + True + True + + True + 9000 + 9499 + + + PT Azores + True + True + + True + 9500 + 9999 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From df199a1bf55c97b7b7561dcc688c24698918935d Mon Sep 17 00:00:00 2001 From: Daniel Reis Date: Fri, 28 May 2021 10:31:06 +0100 Subject: [PATCH 18/58] [MIG] l10n_pt_vat: port to 14.0 --- l10n_pt_vat/__manifest__.py | 4 +- l10n_pt_vat/models/__init__.py | 2 +- .../{account_invoice.py => account_move.py} | 7 +-- l10n_pt_vat/models/vat_adjustment_norm.py | 21 +++++++- ...-Aduaneira-ATA-420x420.png:Zone.Identifier | 4 ++ l10n_pt_vat/static/description/icon.png | Bin 3019 -> 69199 bytes l10n_pt_vat/views/account_invoice_view.xml | 45 ------------------ l10n_pt_vat/views/account_move_view.xml | 24 ++++++++++ 8 files changed, 55 insertions(+), 52 deletions(-) rename l10n_pt_vat/models/{account_invoice.py => account_move.py} (59%) create mode 100644 l10n_pt_vat/static/description/Autoridade-tributaria-e-Aduaneira-ATA-420x420.png:Zone.Identifier delete mode 100644 l10n_pt_vat/views/account_invoice_view.xml create mode 100644 l10n_pt_vat/views/account_move_view.xml diff --git a/l10n_pt_vat/__manifest__.py b/l10n_pt_vat/__manifest__.py index aaadd75f..f274f124 100644 --- a/l10n_pt_vat/__manifest__.py +++ b/l10n_pt_vat/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Portugal - IVA", - "version": "12.0.0.1.0", + "version": "14.0.0.1.0", "license": "AGPL-3", "depends": ["account", "l10n_pt"], "author": "Sossia, Odoo Community Association (OCA)", @@ -14,7 +14,7 @@ "data/vat_adjustment_norm.xml", "data/account_tax.xml", "views/vat_adjustment_norm_view.xml", - "views/account_invoice_view.xml", + "views/account_move_view.xml", ], "installable": True, "auto_install": True, diff --git a/l10n_pt_vat/models/__init__.py b/l10n_pt_vat/models/__init__.py index c98aeb26..6b81d055 100644 --- a/l10n_pt_vat/models/__init__.py +++ b/l10n_pt_vat/models/__init__.py @@ -1,2 +1,2 @@ -from . import account_invoice +from . import account_move from . import vat_adjustment_norm diff --git a/l10n_pt_vat/models/account_invoice.py b/l10n_pt_vat/models/account_move.py similarity index 59% rename from l10n_pt_vat/models/account_invoice.py rename to l10n_pt_vat/models/account_move.py index 45c110a8..5818c0ab 100644 --- a/l10n_pt_vat/models/account_invoice.py +++ b/l10n_pt_vat/models/account_move.py @@ -1,11 +1,12 @@ -# Copyright (C) 2014- Sossia, Lda. () +# Copyright (C) 2014 Sossia, Lda. () +# Copyright (C) 2021 Open SOurce Integrators () # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from odoo import fields, models -class AccountInvoice(models.Model): - _inherit = "account.invoice" +class AccountMove(models.Model): + _inherit = "account.move" vat_adjustment_norm_id = fields.Many2one( "account.vat.adjustment_norm", diff --git a/l10n_pt_vat/models/vat_adjustment_norm.py b/l10n_pt_vat/models/vat_adjustment_norm.py index 60b91edc..d2625998 100644 --- a/l10n_pt_vat/models/vat_adjustment_norm.py +++ b/l10n_pt_vat/models/vat_adjustment_norm.py @@ -1,7 +1,8 @@ # Copyright (C) 2014- Sossia, Lda. () +# Copyright (C) 2021 Open SOurce Integrators () # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from openerp import fields, models +from odoo import api, fields, models class AccountVATAdjustmentNorm(models.Model): @@ -27,3 +28,21 @@ class AccountVATAdjustmentNorm(models.Model): help="If True, it will allow you to apply the adjustment " "norm to third party companies refunds.", ) + move_type = fields.Selection( + selection=[ + ("out_refund", "Customer Credit Note"), + ("in_refund", "Vendor Credit Note"), + ], + compute="_compute_move_type", + store=True, + ) + + @api.depends("out_refunds", "in_refunds") + def _compute_move_type(self): + for norm in self: + if norm.out_refunds: + norm.move_type = "out_refund" + elif norm.in_refunds: + norm.move_type = "in_refund" + else: + norm.move_type = False diff --git a/l10n_pt_vat/static/description/Autoridade-tributaria-e-Aduaneira-ATA-420x420.png:Zone.Identifier b/l10n_pt_vat/static/description/Autoridade-tributaria-e-Aduaneira-ATA-420x420.png:Zone.Identifier new file mode 100644 index 00000000..e71467da --- /dev/null +++ b/l10n_pt_vat/static/description/Autoridade-tributaria-e-Aduaneira-ATA-420x420.png:Zone.Identifier @@ -0,0 +1,4 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=https://www.google.pt/ +HostUrl=https://static.computerworld.com.pt/media/2015/05/Autoridade-tributaria-e-Aduaneira-ATA-420x420.png diff --git a/l10n_pt_vat/static/description/icon.png b/l10n_pt_vat/static/description/icon.png index 67ed24357f8e5c84b9cf23ee8753e27f85b6cabf..8d80177998627f4ceb5821d72b0d7f5995ed456d 100644 GIT binary patch literal 69199 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 z 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 literal 3019 zcmV;+3pDhJP)Q_IH4n@={*P-&rV44(2*#=@-0LEL{K~HsQv%b=lGJe=D>%eswUPJQeP^*{42O zvpt3HANU=HPnrrFfw4B;iLEU#XhIw92wCDW*u==ArmkT{!j)Sj`TES<3&|M=v$IPN zq5RyF7g_@>#s*xhtga(nrCHiSBBK*zvzBZ=3(JX)FD?M%0?tRpTqd>R2GX4*rrx2a zEeeUja4+r)2LR7&aS(?3nCaO}@$-9sVuBhWePjxB#?^t*;T^f91{}B4bM zZ#J-pnGOO)QCR)q%mEfd2j5tvrt45bv-43WN{EcZ{ zCjfx+C>u0OTac2L2~enj_+g}W0000Zn>hf6svCfWE4MM�YM#JOBXybq5?jlK?#q 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 N002ovPDHLkV1jV0npFS* diff --git a/l10n_pt_vat/views/account_invoice_view.xml b/l10n_pt_vat/views/account_invoice_view.xml deleted file mode 100644 index 01d4ea98..00000000 --- a/l10n_pt_vat/views/account_invoice_view.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - Account Invoice - account.invoice - - - - - - - - - - - - - - - - Account Invoice - account.invoice - - - - - - - - - - - - - - diff --git a/l10n_pt_vat/views/account_move_view.xml b/l10n_pt_vat/views/account_move_view.xml new file mode 100644 index 00000000..4a5152c1 --- /dev/null +++ b/l10n_pt_vat/views/account_move_view.xml @@ -0,0 +1,24 @@ + + + + Invoice: add l10_pt + account.move + + + + + + + + + + + + + + + From de2ec154c7e7ae78d8f0b7aee819aa9730184cae Mon Sep 17 00:00:00 2001 From: Daniel Reis Date: Fri, 28 May 2021 12:33:14 +0100 Subject: [PATCH 19/58] [FIX] l10n_pt_vat: fix fiscal position data --- l10n_pt_vat/data/account_tax.xml | 170 ++++++++++++++++-------- l10n_pt_vat/views/account_move_view.xml | 1 + 2 files changed, 119 insertions(+), 52 deletions(-) diff --git a/l10n_pt_vat/data/account_tax.xml b/l10n_pt_vat/data/account_tax.xml index 68a61e57..d99d906a 100644 --- a/l10n_pt_vat/data/account_tax.xml +++ b/l10n_pt_vat/data/account_tax.xml @@ -17,134 +17,200 @@ 6 - VAT + VAT Exempt sale 0 - - - - 23% VAT Regular Mainland + + VAT Exempt EU sale - 23 + 0 - - 22% VAT Regular Madeira + + VAT Exempt Others sale - 22 + 0 - - 18% VAT Regular Azores + + + + + IVA22 sale - 18 + 22 - - 13% VAT Regular Mainland + + IVA18 sale - 13 + 18 - - 12% VAT Regular Mainland + + + IVA12 sale 12 - - 9% VAT Regular Mainland + + IVA9 sale 9 - - 6% VAT Regular Mainland - sale - 6 - - - 5% VAT Regular Mainland + + + IVA5 sale 5 - - 4% VAT Regular Mainland + + IVA4 sale 4 - + + PT Mainland True True - True 1000 8999 PT Madeira + 1 True True - True 9000 9499 PT Azores + 1 True True - True 9500 9999 - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/l10n_pt_vat/views/account_move_view.xml b/l10n_pt_vat/views/account_move_view.xml index 4a5152c1..519c2ba5 100644 --- a/l10n_pt_vat/views/account_move_view.xml +++ b/l10n_pt_vat/views/account_move_view.xml @@ -1,5 +1,6 @@ + Invoice: add l10_pt account.move From dcab83b1668eef1e5700560cd8bf9b0e692a45f0 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Mon, 31 May 2021 09:31:23 +0000 Subject: [PATCH 20/58] [UPD] Update l10n_pt_vat.pot --- l10n_pt_vat/i18n/l10n_pt_vat.pot | 147 +++++++++++++++++++++++++++++++ l10n_pt_vat/i18n/pt.po | 115 +++++++++++++++++------- 2 files changed, 230 insertions(+), 32 deletions(-) create mode 100644 l10n_pt_vat/i18n/l10n_pt_vat.pot diff --git a/l10n_pt_vat/i18n/l10n_pt_vat.pot b/l10n_pt_vat/i18n/l10n_pt_vat.pot new file mode 100644 index 00000000..7b393ef0 --- /dev/null +++ b/l10n_pt_vat/i18n/l10n_pt_vat.pot @@ -0,0 +1,147 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * l10n_pt_vat +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.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: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__active +msgid "Active" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__create_uid +msgid "Created by" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__create_date +msgid "Created on" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields.selection,name:l10n_pt_vat.selection__account_vat_adjustment_norm__move_type__out_refund +msgid "Customer Credit Note" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__note +msgid "Description" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move__display_name +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__display_name +msgid "Display Name" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,help:l10n_pt_vat.field_account_bank_statement_line__vat_adjustment_norm_id +#: model:ir.model.fields,help:l10n_pt_vat.field_account_move__vat_adjustment_norm_id +#: model:ir.model.fields,help:l10n_pt_vat.field_account_payment__vat_adjustment_norm_id +msgid "Fields 40/41 of the VAT Statement" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move__id +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__id +msgid "ID" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,help:l10n_pt_vat.field_account_vat_adjustment_norm__in_refunds +msgid "" +"If True, it will allow you to apply the adjustment norm to third party " +"companies refunds." +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,help:l10n_pt_vat.field_account_vat_adjustment_norm__out_refunds +msgid "" +"If True, it will allow you to apply the adjustment norm to your company " +"refunds." +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,help:l10n_pt_vat.field_account_vat_adjustment_norm__active +msgid "" +"If the active field is set to False, it will allow you to hide the " +"adjustment norm without removing it." +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model,name:l10n_pt_vat.model_account_move +msgid "Journal Entry" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move____last_update +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm____last_update +msgid "Last Modified on" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__write_date +msgid "Last Updated on" +msgstr "" + +#. module: l10n_pt_vat +#: model_terms:ir.ui.view,arch_db:l10n_pt_vat.vat_adjustment_norm_view_form +msgid "Legal Norm (ex: Art. 78º, nº 8, alínea b)) ..." +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__move_type +msgid "Move Type" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__name +msgid "Name" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__out_refunds +msgid "Use on company refunds" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__in_refunds +msgid "Use on third party refunds" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model,name:l10n_pt_vat.model_account_vat_adjustment_norm +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_bank_statement_line__vat_adjustment_norm_id +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move__vat_adjustment_norm_id +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_payment__vat_adjustment_norm_id +#: model_terms:ir.ui.view,arch_db:l10n_pt_vat.vat_adjustment_norm_view_form +#: model_terms:ir.ui.view,arch_db:l10n_pt_vat.vat_adjustment_norm_view_search +#: model_terms:ir.ui.view,arch_db:l10n_pt_vat.vat_adjustment_norm_view_tree +msgid "VAT Adjustment Norm" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.actions.act_window,name:l10n_pt_vat.vat_adjustment_norm_action +#: model:ir.ui.menu,name:l10n_pt_vat.menu_action_vat_adjustment_norm +msgid "VAT Adjustment Norms" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields.selection,name:l10n_pt_vat.selection__account_vat_adjustment_norm__move_type__in_refund +msgid "Vendor Credit Note" +msgstr "" diff --git a/l10n_pt_vat/i18n/pt.po b/l10n_pt_vat/i18n/pt.po index 28010030..deb34489 100644 --- a/l10n_pt_vat/i18n/pt.po +++ b/l10n_pt_vat/i18n/pt.po @@ -1,6 +1,6 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * l10n_pt_vat +# * l10n_pt_vat # msgid "" msgstr "" @@ -10,100 +10,151 @@ msgstr "" "PO-Revision-Date: 2015-11-18 15:02+0000\n" "Last-Translator: <>\n" "Language-Team: \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" #. module: l10n_pt_vat -#: field:account.vat.adjustment_norm,active:0 +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__active msgid "Active" msgstr "Ativo" #. module: l10n_pt_vat -#: field:account.vat.adjustment_norm,create_uid:0 +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__create_uid msgid "Created by" msgstr "Criado por" #. module: l10n_pt_vat -#: field:account.vat.adjustment_norm,create_date:0 +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__create_date msgid "Created on" msgstr "Criado em" #. module: l10n_pt_vat -#: field:account.vat.adjustment_norm,note:0 +#: model:ir.model.fields.selection,name:l10n_pt_vat.selection__account_vat_adjustment_norm__move_type__out_refund +msgid "Customer Credit Note" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__note msgid "Description" msgstr "Descrição" #. module: l10n_pt_vat -#: field:account.vat.adjustment_norm,id:0 +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move__display_name +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__display_name +msgid "Display Name" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,help:l10n_pt_vat.field_account_bank_statement_line__vat_adjustment_norm_id +#: model:ir.model.fields,help:l10n_pt_vat.field_account_move__vat_adjustment_norm_id +#: model:ir.model.fields,help:l10n_pt_vat.field_account_payment__vat_adjustment_norm_id +msgid "Fields 40/41 of the VAT Statement" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move__id +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__id msgid "ID" msgstr "ID" #. module: l10n_pt_vat -#: help:account.vat.adjustment_norm,in_refunds:0 -msgid "If True, it will allow you to apply the adjustment norm to third party companies refunds." -msgstr "Se assinalado, poderá aplicar a norma de regularização a notas de crédito de terceiros" +#: model:ir.model.fields,help:l10n_pt_vat.field_account_vat_adjustment_norm__in_refunds +msgid "" +"If True, it will allow you to apply the adjustment norm to third party " +"companies refunds." +msgstr "" +"Se assinalado, poderá aplicar a norma de regularização a notas de crédito de " +"terceiros" #. module: l10n_pt_vat -#: help:account.vat.adjustment_norm,out_refunds:0 -msgid "If True, it will allow you to apply the adjustment norm to your company refunds." -msgstr "Se assinalado, poderá aplicar a norma de regularização às suas notas de crédito" +#: model:ir.model.fields,help:l10n_pt_vat.field_account_vat_adjustment_norm__out_refunds +msgid "" +"If True, it will allow you to apply the adjustment norm to your company " +"refunds." +msgstr "" +"Se assinalado, poderá aplicar a norma de regularização às suas notas de " +"crédito" #. module: l10n_pt_vat -#: help:account.vat.adjustment_norm,active:0 -msgid "If the active field is set to False, it will allow you to hide the adjustment norm without removing it." -msgstr "Se o campo Ativo não estiver assinalado, poderá esconder a norma de regularização sem a remover." +#: model:ir.model.fields,help:l10n_pt_vat.field_account_vat_adjustment_norm__active +msgid "" +"If the active field is set to False, it will allow you to hide the " +"adjustment norm without removing it." +msgstr "" +"Se o campo Ativo não estiver assinalado, poderá esconder a norma de " +"regularização sem a remover." + +#. module: l10n_pt_vat +#: model:ir.model,name:l10n_pt_vat.model_account_move +msgid "Journal Entry" +msgstr "" #. module: l10n_pt_vat -#: model:ir.model,name:l10n_pt_vat.model_account_invoice -msgid "Invoice" -msgstr "Fatura" +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move____last_update +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm____last_update +#, fuzzy +msgid "Last Modified on" +msgstr "Atualizado pela últ. vez em" #. module: l10n_pt_vat -#: field:account.vat.adjustment_norm,write_uid:0 +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__write_uid msgid "Last Updated by" msgstr "Atualizado pela últ. vez por" #. module: l10n_pt_vat -#: field:account.vat.adjustment_norm,write_date:0 +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__write_date msgid "Last Updated on" msgstr "Atualizado pela últ. vez em" #. module: l10n_pt_vat -#: view:account.vat.adjustment_norm:l10n_pt_vat.vat_adjustment_norm_view_form +#: model_terms:ir.ui.view,arch_db:l10n_pt_vat.vat_adjustment_norm_view_form msgid "Legal Norm (ex: Art. 78º, nº 8, alínea b)) ..." msgstr "Norma de Regularização Legal (ex: Art. 78º, nº 8, alínea b)) ..." #. module: l10n_pt_vat -#: field:account.vat.adjustment_norm,name:0 +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__move_type +msgid "Move Type" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__name msgid "Name" msgstr "Nome" #. module: l10n_pt_vat -#: field:account.vat.adjustment_norm,out_refunds:0 +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__out_refunds msgid "Use on company refunds" msgstr "Utilizar em notas de crédito próprias" #. module: l10n_pt_vat -#: field:account.vat.adjustment_norm,in_refunds:0 +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__in_refunds msgid "Use on third party refunds" msgstr "Utilizar em notas de crédito de terceiros" #. module: l10n_pt_vat -#: field:account.invoice,vat_adjustment_norm_id:0 -#: view:account.vat.adjustment_norm:l10n_pt_vat.vat_adjustment_norm_view_form -#: view:account.vat.adjustment_norm:l10n_pt_vat.vat_adjustment_norm_view_search -#: view:account.vat.adjustment_norm:l10n_pt_vat.vat_adjustment_norm_view_tree -#: model:ir.actions.act_window,name:l10n_pt_vat.action_vat_adjustment_norm_form #: model:ir.model,name:l10n_pt_vat.model_account_vat_adjustment_norm -#: model:ir.ui.menu,name:l10n_pt_vat.menu_action_vat_adjustment_norm_form +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_bank_statement_line__vat_adjustment_norm_id +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move__vat_adjustment_norm_id +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_payment__vat_adjustment_norm_id +#: model_terms:ir.ui.view,arch_db:l10n_pt_vat.vat_adjustment_norm_view_form +#: model_terms:ir.ui.view,arch_db:l10n_pt_vat.vat_adjustment_norm_view_search +#: model_terms:ir.ui.view,arch_db:l10n_pt_vat.vat_adjustment_norm_view_tree msgid "VAT Adjustment Norm" msgstr "" #. module: l10n_pt_vat -#: model:ir.actions.act_window,name:l10n_pt_vat.vat_adjustment_norm_action_list -#: model:ir.ui.menu,name:l10n_pt_vat.menu_action_vat_adjustment_norm_list +#: model:ir.actions.act_window,name:l10n_pt_vat.vat_adjustment_norm_action +#: model:ir.ui.menu,name:l10n_pt_vat.menu_action_vat_adjustment_norm msgid "VAT Adjustment Norms" msgstr "" +#. module: l10n_pt_vat +#: model:ir.model.fields.selection,name:l10n_pt_vat.selection__account_vat_adjustment_norm__move_type__in_refund +msgid "Vendor Credit Note" +msgstr "" + +#~ msgid "Invoice" +#~ msgstr "Fatura" From e9d73275978669b1221837efbd4d094fbf9be40a Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 31 May 2021 09:40:05 +0000 Subject: [PATCH 21/58] [UPD] README.rst --- l10n_pt_vat/README.rst | 10 +++++----- l10n_pt_vat/static/description/index.html | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/l10n_pt_vat/README.rst b/l10n_pt_vat/README.rst index 8efe37fc..4ffffaf9 100644 --- a/l10n_pt_vat/README.rst +++ b/l10n_pt_vat/README.rst @@ -14,13 +14,13 @@ Portugal - IVA :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fl10n--portugal-lightgray.png?logo=github - :target: https://github.com/OCA/l10n-portugal/tree/12.0/l10n_pt_vat + :target: https://github.com/OCA/l10n-portugal/tree/14.0/l10n_pt_vat :alt: OCA/l10n-portugal .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/l10n-portugal-12-0/l10n-portugal-12-0-l10n_pt_vat + :target: https://translation.odoo-community.org/projects/l10n-portugal-14-0/l10n-portugal-14-0-l10n_pt_vat :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/171/12.0 + :target: https://runbot.odoo-community.org/runbot/171/14.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -45,7 +45,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. @@ -76,6 +76,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/l10n-portugal `_ project on GitHub. +This module is part of the `OCA/l10n-portugal `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/l10n_pt_vat/static/description/index.html b/l10n_pt_vat/static/description/index.html index 8e1899f0..93a565e5 100644 --- a/l10n_pt_vat/static/description/index.html +++ b/l10n_pt_vat/static/description/index.html @@ -367,7 +367,7 @@

Portugal - IVA

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

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

+

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

This modules extends the base localization modules with a few VAT specific functions that are required by the Portuguese Tax Authorities, including:

  • The use of pre-defined legally accepted reasons for issuing credit notes, as required for fields 40/41 of the VAT statement (Portaria nº 255/2013).
  • @@ -394,7 +394,7 @@

    Bug Tracker

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

    +feedback.

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

    @@ -419,7 +419,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/l10n-portugal project on GitHub.

    +

    This module is part of the OCA/l10n-portugal project on GitHub.

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

    From a5ae7a8c03dbff8c98e075f2b173aeaa803d0bfc Mon Sep 17 00:00:00 2001 From: Daniel Reis Date: Fri, 4 Jun 2021 11:36:34 +0100 Subject: [PATCH 22/58] [IMP] l10n_pt_vat: add exempt reasons and fiscal zones --- l10n_pt_vat/__manifest__.py | 13 +++++-- .../account.l10n_pt.vat.exempt.reason.csv | 19 ++++++++++ l10n_pt_vat/data/account_tax.xml | 11 ++++++ l10n_pt_vat/models/__init__.py | 3 ++ l10n_pt_vat/models/account_journal.py | 12 ++++++ l10n_pt_vat/models/account_move.py | 34 ++++++++++++++++- l10n_pt_vat/models/account_tax.py | 13 +++++++ .../models/l10n_pt_vat_exempt_reason.py | 37 +++++++++++++++++++ l10n_pt_vat/readme/CONFIGURATION.rst | 4 ++ l10n_pt_vat/readme/CONTRIBUTORS.rst | 5 ++- l10n_pt_vat/readme/USAGE.rst | 4 ++ l10n_pt_vat/security/ir.model.access.csv | 1 + l10n_pt_vat/views/account_journal_view.xml | 21 +++++++++++ l10n_pt_vat/views/account_move_view.xml | 12 ++++-- l10n_pt_vat/views/account_tax_view.xml | 12 ++++++ .../views/l10n_pt_vat_exempt_reason_view.xml | 15 ++++++++ 16 files changed, 206 insertions(+), 10 deletions(-) create mode 100644 l10n_pt_vat/data/account.l10n_pt.vat.exempt.reason.csv create mode 100644 l10n_pt_vat/models/account_journal.py create mode 100644 l10n_pt_vat/models/account_tax.py create mode 100644 l10n_pt_vat/models/l10n_pt_vat_exempt_reason.py create mode 100644 l10n_pt_vat/readme/CONFIGURATION.rst create mode 100644 l10n_pt_vat/views/account_journal_view.xml create mode 100644 l10n_pt_vat/views/account_tax_view.xml create mode 100644 l10n_pt_vat/views/l10n_pt_vat_exempt_reason_view.xml diff --git a/l10n_pt_vat/__manifest__.py b/l10n_pt_vat/__manifest__.py index f274f124..e47aa17d 100644 --- a/l10n_pt_vat/__manifest__.py +++ b/l10n_pt_vat/__manifest__.py @@ -1,20 +1,25 @@ -# Copyright (C) 2014- Sossia, Lda. () +# Copyright (C) 2021 Open Source Integrators () +# Copyright (C) 2014 Sossia, Lda. () # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Portugal - IVA", "version": "14.0.0.1.0", "license": "AGPL-3", "depends": ["account", "l10n_pt"], - "author": "Sossia, Odoo Community Association (OCA)", + "author": "Open Source Integrators, Sossia, Odoo Community Association (OCA)", "summary": "Portuguese VAT requirements extensions", "website": "https://github.com/OCA/l10n-portugal", "category": "Localisation/Portugal", "data": [ "security/ir.model.access.csv", - "data/vat_adjustment_norm.xml", + "data/account.l10n_pt.vat.exempt.reason.csv", "data/account_tax.xml", - "views/vat_adjustment_norm_view.xml", + "data/vat_adjustment_norm.xml", + "views/account_journal_view.xml", "views/account_move_view.xml", + "views/account_tax_view.xml", + "views/l10n_pt_vat_exempt_reason_view.xml", + "views/vat_adjustment_norm_view.xml", ], "installable": True, "auto_install": True, diff --git a/l10n_pt_vat/data/account.l10n_pt.vat.exempt.reason.csv b/l10n_pt_vat/data/account.l10n_pt.vat.exempt.reason.csv new file mode 100644 index 00000000..e2082254 --- /dev/null +++ b/l10n_pt_vat/data/account.l10n_pt.vat.exempt.reason.csv @@ -0,0 +1,19 @@ +id,code,name,note +M01,M01,Artigo 16.º n.º 6 do CIVA,Artigo 16.º n.º 6 alíneas a) a d) do CIVA +M02,M02,"Artigo 6.º do Decreto-Lei n.º 198/90, de 19 de Junho ", +M03,M03,Exigibilidade de caixa,"Decreto-Lei n.º 204/97, de 9 de Agosto Decreto-Lei n.º 418/99, de 21 de Outubro Lei n.º 15/2009, de 1 de Abril " +M04,M04,Isento Artigo 13.º do CIVA, +M05,M05,Isento Artigo 14.º do CIVA, +M06,M06,Isento Artigo 15.º do CIVA, +M07,M07,Isento Artigo 9.º do CIVA, +M08,M08,IVA - Autoliquidação,"Artigo 2.º n.º 1 alínea i), j) ou l) do CIVA Artigo 6.º do CIVA Decreto-Lei n.º 21/2007, de 29 de Janeiro Decreto-Lei n.º 362/99, de 16 de Setembro" +M09,M09,IVA - Não confere direito a dedução,"Artigo 60.º CIVA Artigo 72.º n.º 4 do CIVA " +M10,M10,IVA - Regime de isenção,Artigo 53.º do CIVA +M11,M11,Regime particular do tabaco,"Decreto-Lei n.º 346/85, de 23 de Agosto " +M12,M12,Regime da margem de lucro - Agências de viagens,"Decreto-Lei n.º 221/85, de 3 de Julho " +M13,M13,Regime da margem de lucro - Bens em segunda mão,"Decreto-Lei n.º 199/96, de 18 de Outubro " +M14,M14,Regime da margem de lucro - Objectos de arte,"Decreto-Lei n.º 199/96, de 18 de Outubro " +M15,M15,Regime da margem de lucro - Objectos de colecção e antiguidades,"Decreto-Lei n.º 199/96, de 18 de Outubro " +M16,M16,Isento Artigo 14.º do RITI, +M20,M20,IVA - Regime forfetário,Artigo 59.º-B do CIVA +M99,M99,"Não sujeito, não tributado","Outras situações de não liquidação do imposto (exemplos: artigo 2.º, n.º 2; artigo 3.º, n.º 4, 6 e 7; artigo 4.º, n.º 5, todos do CIVA). " diff --git a/l10n_pt_vat/data/account_tax.xml b/l10n_pt_vat/data/account_tax.xml index d99d906a..e7dcca92 100644 --- a/l10n_pt_vat/data/account_tax.xml +++ b/l10n_pt_vat/data/account_tax.xml @@ -33,38 +33,49 @@ + IVA22 sale 22 + PT-MA IVA18 sale 18 + PT-AC IVA12 sale 12 + PT-MA IVA9 sale 9 + PT-AC IVA5 sale 5 + PT-MA IVA4 sale 4 + PT-AC diff --git a/l10n_pt_vat/models/__init__.py b/l10n_pt_vat/models/__init__.py index 6b81d055..3057c8c8 100644 --- a/l10n_pt_vat/models/__init__.py +++ b/l10n_pt_vat/models/__init__.py @@ -1,2 +1,5 @@ +from . import l10n_pt_vat_exempt_reason +from . import account_journal from . import account_move +from . import account_tax from . import vat_adjustment_norm diff --git a/l10n_pt_vat/models/account_journal.py b/l10n_pt_vat/models/account_journal.py new file mode 100644 index 00000000..89932a05 --- /dev/null +++ b/l10n_pt_vat/models/account_journal.py @@ -0,0 +1,12 @@ +# Copyright (C) 2021 Open SOurce Integrators () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class AccountJournal(models.Model): + _inherit = "account.journal" + + l10npt_vat_exempt_reason = fields.Many2one( + "account.l10n_pt.vat.exempt.reason", string="VAT Exempt Reason" + ) diff --git a/l10n_pt_vat/models/account_move.py b/l10n_pt_vat/models/account_move.py index 5818c0ab..c8e36e90 100644 --- a/l10n_pt_vat/models/account_move.py +++ b/l10n_pt_vat/models/account_move.py @@ -2,7 +2,7 @@ # Copyright (C) 2021 Open SOurce Integrators () # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo import fields, models +from odoo import _, api, exceptions, fields, models class AccountMove(models.Model): @@ -14,3 +14,35 @@ class AccountMove(models.Model): ondelete="restrict", help="Fields 40/41 of the VAT Statement", ) + l10npt_vat_exempt_reason = fields.Many2one( + "account.l10n_pt.vat.exempt.reason", + string="VAT Exempt Reason", + compute="_compute_l10npt_vat_exempt_reason", + store=True, + readonly=False, + ) + + @api.depends("journal_id", "company_id") + def _compute_l10npt_vat_exempt_reason(self): + for invoice in self.filtered( + lambda x: x.country_code == "PT" and x.is_sale_document() + ): + invoice.l10npt_vat_exempt_reason = ( + invoice.journal_id.l10npt_vat_exempt_reason + ) + + @api.constrains("l10npt_vat_exempt_reason") + def _constrain_l10npt_vat_exempt_reason(self): + """ + VAT Exemption reason is required if an exempt tax is used + """ + for invoice in self.filtered( + lambda x: x.country_code == "PT" and x.is_sale_document() + ): + exempt_lines = invoice.invoice_line_ids.filtered( + lambda x: not x.tax_ids.filtered("amount") + ) + if exempt_lines and not invoice.l10npt_vat_exempt_reason: + raise exceptions.ValidationError( + _("A tax exemption reason must be provided.") + ) diff --git a/l10n_pt_vat/models/account_tax.py b/l10n_pt_vat/models/account_tax.py new file mode 100644 index 00000000..759c747b --- /dev/null +++ b/l10n_pt_vat/models/account_tax.py @@ -0,0 +1,13 @@ +# Copyright (C) 2021 Open SOurce Integrators () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class AccountTax(models.Model): + _inherit = "account.tax" + + l10n_pt_fiscal_zone = fields.Selection( + [("PT", "Portugal Continental"), ("PT-AC", "Açores"), ("PT-MA", "Madeira")], + string="Fiscal Zone", + ) diff --git a/l10n_pt_vat/models/l10n_pt_vat_exempt_reason.py b/l10n_pt_vat/models/l10n_pt_vat_exempt_reason.py new file mode 100644 index 00000000..e0809541 --- /dev/null +++ b/l10n_pt_vat/models/l10n_pt_vat_exempt_reason.py @@ -0,0 +1,37 @@ +# Copyright (C) 2021 Open Source Integrators () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models +from odoo.osv import expression + + +class VatExemptReason(models.Model): + _name = "account.l10n_pt.vat.exempt.reason" + _description = "VAT Exemption Reason" + _order = "code" + + name = fields.Char(required=True, translate=True) + code = fields.Char(required=True) + active = fields.Boolean(default=True) + note = fields.Text(string="Description") + + def name_get(self): + return [(x.id, "[%s] %s" % (x.code, x.name)) for x in self] + + @api.model + def _name_search( + self, name, args=None, operator="ilike", limit=100, name_get_uid=None + ): + """ + Returns a list of tuples containing id, name, as internally it is called {def name_get} + result format: {[(id, name), (id, name), ...]} + """ + args = args or [] + if operator == "ilike" and not (name or "").strip(): + domain = [] + else: + connector = "&" if operator in expression.NEGATIVE_TERM_OPERATORS else "|" + domain = [connector, ("code", operator, name), ("name", operator, name)] + return self._search( + expression.AND([domain, args]), limit=limit, access_rights_uid=name_get_uid + ) diff --git a/l10n_pt_vat/readme/CONFIGURATION.rst b/l10n_pt_vat/readme/CONFIGURATION.rst new file mode 100644 index 00000000..10c2726f --- /dev/null +++ b/l10n_pt_vat/readme/CONFIGURATION.rst @@ -0,0 +1,4 @@ +On Accounting Taxes, the "Fiscal Zone" can be set, to identify the VAT zone: +Continental Portugal, Madeira or Azores. + +A default VAT exception reason can be set on the Sales journal. diff --git a/l10n_pt_vat/readme/CONTRIBUTORS.rst b/l10n_pt_vat/readme/CONTRIBUTORS.rst index c95b1d1c..c4868862 100644 --- a/l10n_pt_vat/readme/CONTRIBUTORS.rst +++ b/l10n_pt_vat/readme/CONTRIBUTORS.rst @@ -1,2 +1,5 @@ -* Daniel Reis (dreis@opensourceintegrators.com) * Pedro Castro Silva (`Sossia `_) + +* `Open Source Integrators `_ + + * Daniel Reis (dreis@opensourceintegrators.com) diff --git a/l10n_pt_vat/readme/USAGE.rst b/l10n_pt_vat/readme/USAGE.rst index ea255611..439967c3 100644 --- a/l10n_pt_vat/readme/USAGE.rst +++ b/l10n_pt_vat/readme/USAGE.rst @@ -1 +1,5 @@ On an Invoice, the VAT adjustment reason is available for selection. + +The Fiscal Position can be used to automatically map VAT tax level +(regular, intermediate, reduced or exempt) to the actual tax percentages, +according to the client's region (Portugal, European Union, or others). diff --git a/l10n_pt_vat/security/ir.model.access.csv b/l10n_pt_vat/security/ir.model.access.csv index cf44198a..c6400e86 100644 --- a/l10n_pt_vat/security/ir.model.access.csv +++ b/l10n_pt_vat/security/ir.model.access.csv @@ -1,3 +1,4 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_account_vat_adjustment_norm,account.vat.adjustment_norm,model_account_vat_adjustment_norm,account.group_account_user,1,0,0,0 access_account_vat_adjustment_norm_manager,account.vat.adjustment_norm,model_account_vat_adjustment_norm,account.group_account_manager,1,1,1,1 +access_account_vat_exempt_reason,account.l10n_pt.vat.exempt.reason,model_account_l10n_pt_vat_exempt_reason,account.group_account_user,1,0,0,0 diff --git a/l10n_pt_vat/views/account_journal_view.xml b/l10n_pt_vat/views/account_journal_view.xml new file mode 100644 index 00000000..b0f482ac --- /dev/null +++ b/l10n_pt_vat/views/account_journal_view.xml @@ -0,0 +1,21 @@ + + + + Account Journal: add l10_pt_vat + account.journal + + + + + + + + + + + + + diff --git a/l10n_pt_vat/views/account_move_view.xml b/l10n_pt_vat/views/account_move_view.xml index 519c2ba5..ddc33dd8 100644 --- a/l10n_pt_vat/views/account_move_view.xml +++ b/l10n_pt_vat/views/account_move_view.xml @@ -9,14 +9,18 @@ - - +
    + + - +
    diff --git a/l10n_pt_vat/views/account_tax_view.xml b/l10n_pt_vat/views/account_tax_view.xml new file mode 100644 index 00000000..6c01553d --- /dev/null +++ b/l10n_pt_vat/views/account_tax_view.xml @@ -0,0 +1,12 @@ + + + Account Tax: add Fiscal Zone + account.tax + + + + + + + + diff --git a/l10n_pt_vat/views/l10n_pt_vat_exempt_reason_view.xml b/l10n_pt_vat/views/l10n_pt_vat_exempt_reason_view.xml new file mode 100644 index 00000000..2d8389ce --- /dev/null +++ b/l10n_pt_vat/views/l10n_pt_vat_exempt_reason_view.xml @@ -0,0 +1,15 @@ + + + + VAT Exempt Reason List + account.l10n_pt.vat.exempt.reason + + + + + + + + + + From fe085e0003ee5f2345f2b5aec40cebbd524110a6 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Sat, 12 Jun 2021 18:53:13 +0000 Subject: [PATCH 23/58] [UPD] Update l10n_pt_vat.pot --- l10n_pt_vat/i18n/l10n_pt_vat.pot | 160 +++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) diff --git a/l10n_pt_vat/i18n/l10n_pt_vat.pot b/l10n_pt_vat/i18n/l10n_pt_vat.pot index 7b393ef0..edc5eea2 100644 --- a/l10n_pt_vat/i18n/l10n_pt_vat.pot +++ b/l10n_pt_vat/i18n/l10n_pt_vat.pot @@ -14,16 +14,45 @@ msgstr "" "Plural-Forms: \n" #. module: l10n_pt_vat +#: code:addons/l10n_pt_vat/models/account_move.py:0 +#, python-format +msgid "A tax exemption reason must be provided." +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__active #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__active msgid "Active" msgstr "" #. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M01 +msgid "Artigo 16.º n.º 6 do CIVA" +msgstr "" + +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M02 +msgid "Artigo 6.º do Decreto-Lei n.º 198/90, de 19 de Junho " +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields.selection,name:l10n_pt_vat.selection__account_tax__l10n_pt_fiscal_zone__pt-ac +msgid "Açores" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__code +msgid "Code" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__create_uid #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__create_uid msgid "Created by" msgstr "" #. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__create_date #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__create_date msgid "Created on" msgstr "" @@ -34,16 +63,25 @@ msgid "Customer Credit Note" msgstr "" #. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__note #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__note msgid "Description" msgstr "" #. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_journal__display_name +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__display_name #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move__display_name +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_tax__display_name #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__display_name msgid "Display Name" msgstr "" +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M03 +msgid "Exigibilidade de caixa" +msgstr "" + #. module: l10n_pt_vat #: model:ir.model.fields,help:l10n_pt_vat.field_account_bank_statement_line__vat_adjustment_norm_id #: model:ir.model.fields,help:l10n_pt_vat.field_account_move__vat_adjustment_norm_id @@ -52,11 +90,39 @@ msgid "Fields 40/41 of the VAT Statement" msgstr "" #. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_tax__l10n_pt_fiscal_zone +msgid "Fiscal Zone" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_journal__id +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__id #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move__id +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_tax__id #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__id msgid "ID" msgstr "" +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M08 +msgid "IVA - Autoliquidação" +msgstr "" + +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M09 +msgid "IVA - Não confere direito a dedução" +msgstr "" + +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M10 +msgid "IVA - Regime de isenção" +msgstr "" + +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M20 +msgid "IVA - Regime forfetário" +msgstr "" + #. module: l10n_pt_vat #: model:ir.model.fields,help:l10n_pt_vat.field_account_vat_adjustment_norm__in_refunds msgid "" @@ -78,23 +144,58 @@ msgid "" "adjustment norm without removing it." msgstr "" +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M04 +msgid "Isento Artigo 13.º do CIVA" +msgstr "" + +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M05 +msgid "Isento Artigo 14.º do CIVA" +msgstr "" + +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M16 +msgid "Isento Artigo 14.º do RITI" +msgstr "" + +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M06 +msgid "Isento Artigo 15.º do CIVA" +msgstr "" + +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M07 +msgid "Isento Artigo 9.º do CIVA" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model,name:l10n_pt_vat.model_account_journal +msgid "Journal" +msgstr "" + #. module: l10n_pt_vat #: model:ir.model,name:l10n_pt_vat.model_account_move msgid "Journal Entry" msgstr "" #. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_journal____last_update +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason____last_update #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move____last_update +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_tax____last_update #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm____last_update msgid "Last Modified on" msgstr "" #. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__write_uid #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__write_uid msgid "Last Updated by" msgstr "" #. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__write_date #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__write_date msgid "Last Updated on" msgstr "" @@ -104,16 +205,62 @@ msgstr "" msgid "Legal Norm (ex: Art. 78º, nº 8, alínea b)) ..." msgstr "" +#. module: l10n_pt_vat +#: model:ir.model.fields.selection,name:l10n_pt_vat.selection__account_tax__l10n_pt_fiscal_zone__pt-ma +msgid "Madeira" +msgstr "" + #. module: l10n_pt_vat #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__move_type msgid "Move Type" msgstr "" #. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__name #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__name msgid "Name" msgstr "" +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M99 +msgid "Não sujeito, não tributado" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields.selection,name:l10n_pt_vat.selection__account_tax__l10n_pt_fiscal_zone__pt +msgid "Portugal Continental" +msgstr "" + +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M12 +msgid "Regime da margem de lucro - Agências de viagens" +msgstr "" + +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M13 +msgid "Regime da margem de lucro - Bens em segunda mão" +msgstr "" + +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M14 +msgid "Regime da margem de lucro - Objectos de arte" +msgstr "" + +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M15 +msgid "Regime da margem de lucro - Objectos de colecção e antiguidades" +msgstr "" + +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M11 +msgid "Regime particular do tabaco" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model,name:l10n_pt_vat.model_account_tax +msgid "Tax" +msgstr "" + #. module: l10n_pt_vat #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__out_refunds msgid "Use on company refunds" @@ -141,6 +288,19 @@ msgstr "" msgid "VAT Adjustment Norms" msgstr "" +#. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_bank_statement_line__l10npt_vat_exempt_reason +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_journal__l10npt_vat_exempt_reason +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move__l10npt_vat_exempt_reason +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_payment__l10npt_vat_exempt_reason +msgid "VAT Exempt Reason" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model,name:l10n_pt_vat.model_account_l10n_pt_vat_exempt_reason +msgid "VAT Exemption Reason" +msgstr "" + #. module: l10n_pt_vat #: model:ir.model.fields.selection,name:l10n_pt_vat.selection__account_vat_adjustment_norm__move_type__in_refund msgid "Vendor Credit Note" From 2dc106d41fa8d317776ab958d3ef9282f0ba7d98 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sat, 12 Jun 2021 18:57:03 +0000 Subject: [PATCH 24/58] [UPD] README.rst --- l10n_pt_vat/README.rst | 10 +++++++++- l10n_pt_vat/static/description/index.html | 13 ++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/l10n_pt_vat/README.rst b/l10n_pt_vat/README.rst index 4ffffaf9..d53805dc 100644 --- a/l10n_pt_vat/README.rst +++ b/l10n_pt_vat/README.rst @@ -39,6 +39,10 @@ Usage On an Invoice, the VAT adjustment reason is available for selection. +The Fiscal Position can be used to automatically map VAT tax level +(regular, intermediate, reduced or exempt) to the actual tax percentages, +according to the client's region (Portugal, European Union, or others). + Bug Tracker =========== @@ -55,14 +59,18 @@ Credits Authors ~~~~~~~ +* Open Source Integrators * Sossia Contributors ~~~~~~~~~~~~ -* Daniel Reis (dreis@opensourceintegrators.com) * Pedro Castro Silva (`Sossia `_) +* `Open Source Integrators `_ + + * Daniel Reis (dreis@opensourceintegrators.com) + Maintainers ~~~~~~~~~~~ diff --git a/l10n_pt_vat/static/description/index.html b/l10n_pt_vat/static/description/index.html index 93a565e5..bb0828c1 100644 --- a/l10n_pt_vat/static/description/index.html +++ b/l10n_pt_vat/static/description/index.html @@ -388,6 +388,9 @@

    Portugal - IVA

    Usage

    On an Invoice, the VAT adjustment reason is available for selection.

    +

    The Fiscal Position can be used to automatically map VAT tax level +(regular, intermediate, reduced or exempt) to the actual tax percentages, +according to the client’s region (Portugal, European Union, or others).

    Bug Tracker

    @@ -402,14 +405,22 @@

    Credits

    Authors

      +
    • Open Source Integrators
    • Sossia

    Contributors

    +
    From d8d534c7377d3bf7991435df72c39a83e080e410 Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Sat, 12 Jun 2021 18:57:13 +0000 Subject: [PATCH 25/58] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: l10n-portugal-14.0/l10n-portugal-14.0-l10n_pt_vat Translate-URL: https://translation.odoo-community.org/projects/l10n-portugal-14-0/l10n-portugal-14-0-l10n_pt_vat/ --- l10n_pt_vat/i18n/pt.po | 160 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) diff --git a/l10n_pt_vat/i18n/pt.po b/l10n_pt_vat/i18n/pt.po index deb34489..5fed2f7e 100644 --- a/l10n_pt_vat/i18n/pt.po +++ b/l10n_pt_vat/i18n/pt.po @@ -17,16 +17,45 @@ msgstr "" "Plural-Forms: \n" #. module: l10n_pt_vat +#: code:addons/l10n_pt_vat/models/account_move.py:0 +#, python-format +msgid "A tax exemption reason must be provided." +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__active #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__active msgid "Active" msgstr "Ativo" #. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M01 +msgid "Artigo 16.º n.º 6 do CIVA" +msgstr "" + +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M02 +msgid "Artigo 6.º do Decreto-Lei n.º 198/90, de 19 de Junho " +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields.selection,name:l10n_pt_vat.selection__account_tax__l10n_pt_fiscal_zone__pt-ac +msgid "Açores" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__code +msgid "Code" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__create_uid #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__create_uid msgid "Created by" msgstr "Criado por" #. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__create_date #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__create_date msgid "Created on" msgstr "Criado em" @@ -37,16 +66,25 @@ msgid "Customer Credit Note" msgstr "" #. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__note #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__note msgid "Description" msgstr "Descrição" #. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_journal__display_name +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__display_name #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move__display_name +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_tax__display_name #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__display_name msgid "Display Name" msgstr "" +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M03 +msgid "Exigibilidade de caixa" +msgstr "" + #. module: l10n_pt_vat #: model:ir.model.fields,help:l10n_pt_vat.field_account_bank_statement_line__vat_adjustment_norm_id #: model:ir.model.fields,help:l10n_pt_vat.field_account_move__vat_adjustment_norm_id @@ -55,11 +93,39 @@ msgid "Fields 40/41 of the VAT Statement" msgstr "" #. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_tax__l10n_pt_fiscal_zone +msgid "Fiscal Zone" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_journal__id +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__id #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move__id +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_tax__id #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__id msgid "ID" msgstr "ID" +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M08 +msgid "IVA - Autoliquidação" +msgstr "" + +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M09 +msgid "IVA - Não confere direito a dedução" +msgstr "" + +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M10 +msgid "IVA - Regime de isenção" +msgstr "" + +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M20 +msgid "IVA - Regime forfetário" +msgstr "" + #. module: l10n_pt_vat #: model:ir.model.fields,help:l10n_pt_vat.field_account_vat_adjustment_norm__in_refunds msgid "" @@ -87,24 +153,59 @@ msgstr "" "Se o campo Ativo não estiver assinalado, poderá esconder a norma de " "regularização sem a remover." +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M04 +msgid "Isento Artigo 13.º do CIVA" +msgstr "" + +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M05 +msgid "Isento Artigo 14.º do CIVA" +msgstr "" + +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M16 +msgid "Isento Artigo 14.º do RITI" +msgstr "" + +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M06 +msgid "Isento Artigo 15.º do CIVA" +msgstr "" + +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M07 +msgid "Isento Artigo 9.º do CIVA" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model,name:l10n_pt_vat.model_account_journal +msgid "Journal" +msgstr "" + #. module: l10n_pt_vat #: model:ir.model,name:l10n_pt_vat.model_account_move msgid "Journal Entry" msgstr "" #. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_journal____last_update +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason____last_update #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move____last_update +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_tax____last_update #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm____last_update #, fuzzy msgid "Last Modified on" msgstr "Atualizado pela últ. vez em" #. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__write_uid #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__write_uid msgid "Last Updated by" msgstr "Atualizado pela últ. vez por" #. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__write_date #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__write_date msgid "Last Updated on" msgstr "Atualizado pela últ. vez em" @@ -114,16 +215,62 @@ msgstr "Atualizado pela últ. vez em" msgid "Legal Norm (ex: Art. 78º, nº 8, alínea b)) ..." msgstr "Norma de Regularização Legal (ex: Art. 78º, nº 8, alínea b)) ..." +#. module: l10n_pt_vat +#: model:ir.model.fields.selection,name:l10n_pt_vat.selection__account_tax__l10n_pt_fiscal_zone__pt-ma +msgid "Madeira" +msgstr "" + #. module: l10n_pt_vat #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__move_type msgid "Move Type" msgstr "" #. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__name #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__name msgid "Name" msgstr "Nome" +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M99 +msgid "Não sujeito, não tributado" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model.fields.selection,name:l10n_pt_vat.selection__account_tax__l10n_pt_fiscal_zone__pt +msgid "Portugal Continental" +msgstr "" + +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M12 +msgid "Regime da margem de lucro - Agências de viagens" +msgstr "" + +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M13 +msgid "Regime da margem de lucro - Bens em segunda mão" +msgstr "" + +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M14 +msgid "Regime da margem de lucro - Objectos de arte" +msgstr "" + +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M15 +msgid "Regime da margem de lucro - Objectos de colecção e antiguidades" +msgstr "" + +#. module: l10n_pt_vat +#: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M11 +msgid "Regime particular do tabaco" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model,name:l10n_pt_vat.model_account_tax +msgid "Tax" +msgstr "" + #. module: l10n_pt_vat #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__out_refunds msgid "Use on company refunds" @@ -151,6 +298,19 @@ msgstr "" msgid "VAT Adjustment Norms" msgstr "" +#. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_bank_statement_line__l10npt_vat_exempt_reason +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_journal__l10npt_vat_exempt_reason +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move__l10npt_vat_exempt_reason +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_payment__l10npt_vat_exempt_reason +msgid "VAT Exempt Reason" +msgstr "" + +#. module: l10n_pt_vat +#: model:ir.model,name:l10n_pt_vat.model_account_l10n_pt_vat_exempt_reason +msgid "VAT Exemption Reason" +msgstr "" + #. module: l10n_pt_vat #: model:ir.model.fields.selection,name:l10n_pt_vat.selection__account_vat_adjustment_norm__move_type__in_refund msgid "Vendor Credit Note" From 1470e0b8b74dd82a4f58e2eddf90d9d9751cc4d7 Mon Sep 17 00:00:00 2001 From: Daniel Reis Date: Tue, 15 Jun 2021 11:48:24 +0100 Subject: [PATCH 26/58] [FIX] l10n_pt_vat: updatable Taxes and Fiscal Positions --- l10n_pt_vat/data/account_tax.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/l10n_pt_vat/data/account_tax.xml b/l10n_pt_vat/data/account_tax.xml index e7dcca92..6deb0d9c 100644 --- a/l10n_pt_vat/data/account_tax.xml +++ b/l10n_pt_vat/data/account_tax.xml @@ -1,4 +1,4 @@ - + From 7cdda88d8d1851a74fe5640c8a844320e032483e Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 16 Jun 2021 08:09:37 +0000 Subject: [PATCH 27/58] l10n_pt_vat 14.0.0.2.0 --- l10n_pt_vat/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/l10n_pt_vat/__manifest__.py b/l10n_pt_vat/__manifest__.py index e47aa17d..024bcea3 100644 --- a/l10n_pt_vat/__manifest__.py +++ b/l10n_pt_vat/__manifest__.py @@ -3,7 +3,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Portugal - IVA", - "version": "14.0.0.1.0", + "version": "14.0.0.2.0", "license": "AGPL-3", "depends": ["account", "l10n_pt"], "author": "Open Source Integrators, Sossia, Odoo Community Association (OCA)", From 1c22f8fc3d8413d3a31956e09405554ec569a048 Mon Sep 17 00:00:00 2001 From: Daniel Reis Date: Mon, 5 Jul 2021 09:44:30 +0100 Subject: [PATCH 28/58] [FIX] l10n_pt_vat: fix islands VAT taxes, only set exemption reason when having exempt taxes --- l10n_pt_vat/__manifest__.py | 2 +- l10n_pt_vat/data/account_tax.xml | 64 +----------------------------- l10n_pt_vat/models/account_move.py | 38 +++++++++++++----- 3 files changed, 31 insertions(+), 73 deletions(-) diff --git a/l10n_pt_vat/__manifest__.py b/l10n_pt_vat/__manifest__.py index 024bcea3..e47aa17d 100644 --- a/l10n_pt_vat/__manifest__.py +++ b/l10n_pt_vat/__manifest__.py @@ -3,7 +3,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Portugal - IVA", - "version": "14.0.0.2.0", + "version": "14.0.0.1.0", "license": "AGPL-3", "depends": ["account", "l10n_pt"], "author": "Open Source Integrators, Sossia, Odoo Community Association (OCA)", diff --git a/l10n_pt_vat/data/account_tax.xml b/l10n_pt_vat/data/account_tax.xml index 6deb0d9c..fdc4e1d1 100644 --- a/l10n_pt_vat/data/account_tax.xml +++ b/l10n_pt_vat/data/account_tax.xml @@ -21,6 +21,8 @@ sale 0 + + VAT Exempt EU sale @@ -32,7 +34,6 @@ 0 - - - PT Mainland - True - True - - 1000 - 8999 - - - PT Madeira - 1 - True - True - - 9000 - 9499 - - - PT Azores - 1 - True - True - - 9500 - 9999 - @@ -127,38 +99,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/l10n_pt_vat/models/account_move.py b/l10n_pt_vat/models/account_move.py index c8e36e90..a914998c 100644 --- a/l10n_pt_vat/models/account_move.py +++ b/l10n_pt_vat/models/account_move.py @@ -14,6 +14,9 @@ class AccountMove(models.Model): ondelete="restrict", help="Fields 40/41 of the VAT Statement", ) + l10npt_has_tax_exempt_lines = fields.Boolean( + compute="_compute_l10npt_has_tax_exempt_lines" + ) l10npt_vat_exempt_reason = fields.Many2one( "account.l10n_pt.vat.exempt.reason", string="VAT Exempt Reason", @@ -22,19 +25,33 @@ class AccountMove(models.Model): readonly=False, ) - @api.depends("journal_id", "company_id") - def _compute_l10npt_vat_exempt_reason(self): - for invoice in self.filtered( - lambda x: x.country_code == "PT" and x.is_sale_document() - ): - invoice.l10npt_vat_exempt_reason = ( - invoice.journal_id.l10npt_vat_exempt_reason + @api.depends("country_code", "move_type", "invoice_line_ids.tax_ids") + def _compute_l10npt_has_tax_exempt_lines(self): + for invoice in self: + invoice.l10npt_has_tax_exempt_lines = ( + invoice.country_code == "PT" + and invoice.is_sale_document() + and invoice.invoice_line_ids.filtered( + lambda x: not x.tax_ids.filtered("amount") + ) ) - @api.constrains("l10npt_vat_exempt_reason") - def _constrain_l10npt_vat_exempt_reason(self): + @api.depends( + "l10npt_has_tax_exempt_lines", "journal_id", "company_id", "amount_total" + ) + def _compute_l10npt_vat_exempt_reason(self): + for invoice in self: + if ( + invoice.l10npt_has_tax_exempt_lines + and not invoice.l10npt_vat_exempt_reason + ): + invoice.l10npt_vat_exempt_reason = ( + invoice.journal_id.l10npt_vat_exempt_reason + ) + + def action_post(self): """ - VAT Exemption reason is required if an exempt tax is used + VAT Exemption reason is required if there are lines without tax """ for invoice in self.filtered( lambda x: x.country_code == "PT" and x.is_sale_document() @@ -46,3 +63,4 @@ def _constrain_l10npt_vat_exempt_reason(self): raise exceptions.ValidationError( _("A tax exemption reason must be provided.") ) + return super().action_post() From e3bf0bbb1474304f2b4346d9f43eebb09fe773f5 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Mon, 5 Jul 2021 12:26:46 +0000 Subject: [PATCH 29/58] [UPD] Update l10n_pt_vat.pot --- l10n_pt_vat/i18n/l10n_pt_vat.pot | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/l10n_pt_vat/i18n/l10n_pt_vat.pot b/l10n_pt_vat/i18n/l10n_pt_vat.pot index edc5eea2..1cc5558b 100644 --- a/l10n_pt_vat/i18n/l10n_pt_vat.pot +++ b/l10n_pt_vat/i18n/l10n_pt_vat.pot @@ -179,6 +179,13 @@ msgstr "" msgid "Journal Entry" msgstr "" +#. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_bank_statement_line__l10npt_has_tax_exempt_lines +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move__l10npt_has_tax_exempt_lines +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_payment__l10npt_has_tax_exempt_lines +msgid "L10Npt Has Tax Exempt Lines" +msgstr "" + #. module: l10n_pt_vat #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_journal____last_update #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason____last_update From 8409c39a1e42ba3f03ef11f8e85fd6b7a5ece6f2 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 5 Jul 2021 12:49:12 +0000 Subject: [PATCH 30/58] l10n_pt_vat 14.0.0.2.0 --- l10n_pt_vat/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/l10n_pt_vat/__manifest__.py b/l10n_pt_vat/__manifest__.py index e47aa17d..024bcea3 100644 --- a/l10n_pt_vat/__manifest__.py +++ b/l10n_pt_vat/__manifest__.py @@ -3,7 +3,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Portugal - IVA", - "version": "14.0.0.1.0", + "version": "14.0.0.2.0", "license": "AGPL-3", "depends": ["account", "l10n_pt"], "author": "Open Source Integrators, Sossia, Odoo Community Association (OCA)", From 706fc957d46600d51117f4b0dd9c6d0c606dbab8 Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Mon, 5 Jul 2021 12:49:19 +0000 Subject: [PATCH 31/58] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: l10n-portugal-14.0/l10n-portugal-14.0-l10n_pt_vat Translate-URL: https://translation.odoo-community.org/projects/l10n-portugal-14-0/l10n-portugal-14-0-l10n_pt_vat/ --- l10n_pt_vat/i18n/pt.po | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/l10n_pt_vat/i18n/pt.po b/l10n_pt_vat/i18n/pt.po index 5fed2f7e..048fc6c0 100644 --- a/l10n_pt_vat/i18n/pt.po +++ b/l10n_pt_vat/i18n/pt.po @@ -188,6 +188,13 @@ msgstr "" msgid "Journal Entry" msgstr "" +#. module: l10n_pt_vat +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_bank_statement_line__l10npt_has_tax_exempt_lines +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move__l10npt_has_tax_exempt_lines +#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_payment__l10npt_has_tax_exempt_lines +msgid "L10Npt Has Tax Exempt Lines" +msgstr "" + #. module: l10n_pt_vat #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_journal____last_update #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason____last_update From f9a147d1255852105e83ed3518de6d600915bb45 Mon Sep 17 00:00:00 2001 From: Daniel Reis Date: Fri, 9 Jul 2021 11:04:38 +0100 Subject: [PATCH 32/58] [FIX] l10_pt_vat: remove tax configuration from tax tables (should be in templates) --- l10n_pt_vat/__manifest__.py | 3 +- l10n_pt_vat/data/account_tax.xml | 167 -------------------------- l10n_pt_vat/models/account_journal.py | 2 +- l10n_pt_vat/models/account_tax.py | 1 + l10n_pt_vat/readme/CONFIGURATION.rst | 4 +- l10n_pt_vat/readme/USAGE.rst | 4 - 6 files changed, 6 insertions(+), 175 deletions(-) delete mode 100644 l10n_pt_vat/data/account_tax.xml diff --git a/l10n_pt_vat/__manifest__.py b/l10n_pt_vat/__manifest__.py index 024bcea3..18072ca1 100644 --- a/l10n_pt_vat/__manifest__.py +++ b/l10n_pt_vat/__manifest__.py @@ -9,11 +9,10 @@ "author": "Open Source Integrators, Sossia, Odoo Community Association (OCA)", "summary": "Portuguese VAT requirements extensions", "website": "https://github.com/OCA/l10n-portugal", - "category": "Localisation/Portugal", + "category": "Accounting/Localizations", "data": [ "security/ir.model.access.csv", "data/account.l10n_pt.vat.exempt.reason.csv", - "data/account_tax.xml", "data/vat_adjustment_norm.xml", "views/account_journal_view.xml", "views/account_move_view.xml", diff --git a/l10n_pt_vat/data/account_tax.xml b/l10n_pt_vat/data/account_tax.xml deleted file mode 100644 index fdc4e1d1..00000000 --- a/l10n_pt_vat/data/account_tax.xml +++ /dev/null @@ -1,167 +0,0 @@ - - - - - VAT Regular - sale - 23 - - - VAT Intermediate - sale - 13 - - - VAT Reduced - sale - 6 - - - VAT Exempt - sale - 0 - - - - - VAT Exempt EU - sale - 0 - - - VAT Exempt Others - sale - 0 - - - - - - IVA22 - sale - 22 - PT-MA - - - IVA18 - sale - 18 - PT-AC - - - - IVA12 - sale - 12 - PT-MA - - - IVA9 - sale - 9 - PT-AC - - - - IVA5 - sale - 5 - PT-MA - - - IVA4 - sale - 4 - PT-AC - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/l10n_pt_vat/models/account_journal.py b/l10n_pt_vat/models/account_journal.py index 89932a05..c69ad354 100644 --- a/l10n_pt_vat/models/account_journal.py +++ b/l10n_pt_vat/models/account_journal.py @@ -1,4 +1,4 @@ -# Copyright (C) 2021 Open SOurce Integrators () +# Copyright (C) 2021 Open Source Integrators () # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from odoo import fields, models diff --git a/l10n_pt_vat/models/account_tax.py b/l10n_pt_vat/models/account_tax.py index 759c747b..5a478a00 100644 --- a/l10n_pt_vat/models/account_tax.py +++ b/l10n_pt_vat/models/account_tax.py @@ -10,4 +10,5 @@ class AccountTax(models.Model): l10n_pt_fiscal_zone = fields.Selection( [("PT", "Portugal Continental"), ("PT-AC", "Açores"), ("PT-MA", "Madeira")], string="Fiscal Zone", + default="PT", ) diff --git a/l10n_pt_vat/readme/CONFIGURATION.rst b/l10n_pt_vat/readme/CONFIGURATION.rst index 10c2726f..66711f33 100644 --- a/l10n_pt_vat/readme/CONFIGURATION.rst +++ b/l10n_pt_vat/readme/CONFIGURATION.rst @@ -1,4 +1,6 @@ On Accounting Taxes, the "Fiscal Zone" can be set, to identify the VAT zone: Continental Portugal, Madeira or Azores. -A default VAT exception reason can be set on the Sales journal. +The default VAT Exemption reason can be set on the Sales Journal: + +- Go to *Accounting/Invoicing > Configuration > Accounting / Journals* diff --git a/l10n_pt_vat/readme/USAGE.rst b/l10n_pt_vat/readme/USAGE.rst index 439967c3..ea255611 100644 --- a/l10n_pt_vat/readme/USAGE.rst +++ b/l10n_pt_vat/readme/USAGE.rst @@ -1,5 +1 @@ On an Invoice, the VAT adjustment reason is available for selection. - -The Fiscal Position can be used to automatically map VAT tax level -(regular, intermediate, reduced or exempt) to the actual tax percentages, -according to the client's region (Portugal, European Union, or others). From 2c4db2a8b4084c69f15b7e6e205218479c8c2c32 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 26 Jul 2021 10:10:39 +0000 Subject: [PATCH 33/58] [UPD] README.rst --- l10n_pt_vat/README.rst | 4 ---- l10n_pt_vat/static/description/index.html | 3 --- 2 files changed, 7 deletions(-) diff --git a/l10n_pt_vat/README.rst b/l10n_pt_vat/README.rst index d53805dc..1bcde522 100644 --- a/l10n_pt_vat/README.rst +++ b/l10n_pt_vat/README.rst @@ -39,10 +39,6 @@ Usage On an Invoice, the VAT adjustment reason is available for selection. -The Fiscal Position can be used to automatically map VAT tax level -(regular, intermediate, reduced or exempt) to the actual tax percentages, -according to the client's region (Portugal, European Union, or others). - Bug Tracker =========== diff --git a/l10n_pt_vat/static/description/index.html b/l10n_pt_vat/static/description/index.html index bb0828c1..e4fcffce 100644 --- a/l10n_pt_vat/static/description/index.html +++ b/l10n_pt_vat/static/description/index.html @@ -388,9 +388,6 @@

    Portugal - IVA

    Usage

    On an Invoice, the VAT adjustment reason is available for selection.

    -

    The Fiscal Position can be used to automatically map VAT tax level -(regular, intermediate, reduced or exempt) to the actual tax percentages, -according to the client’s region (Portugal, European Union, or others).

    Bug Tracker

    From 96e9fa2632d5692a5f945848b8d83fc2c65a714a Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 26 Jul 2021 10:10:39 +0000 Subject: [PATCH 34/58] l10n_pt_vat 14.0.1.0.0 --- l10n_pt_vat/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/l10n_pt_vat/__manifest__.py b/l10n_pt_vat/__manifest__.py index 18072ca1..1b2152f7 100644 --- a/l10n_pt_vat/__manifest__.py +++ b/l10n_pt_vat/__manifest__.py @@ -3,7 +3,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Portugal - IVA", - "version": "14.0.0.2.0", + "version": "14.0.1.0.0", "license": "AGPL-3", "depends": ["account", "l10n_pt"], "author": "Open Source Integrators, Sossia, Odoo Community Association (OCA)", From ac8d4565d5600f529e20b52e20ab132a3c5b3b2d Mon Sep 17 00:00:00 2001 From: Daniel Reis Date: Tue, 3 Aug 2021 09:12:10 +0000 Subject: [PATCH 35/58] Translated using Weblate (Portuguese) Currently translated at 61.5% (32 of 52 strings) Translation: l10n-portugal-14.0/l10n-portugal-14.0-l10n_pt_vat Translate-URL: https://translation.odoo-community.org/projects/l10n-portugal-14-0/l10n-portugal-14-0-l10n_pt_vat/pt/ --- l10n_pt_vat/i18n/pt.po | 50 +++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/l10n_pt_vat/i18n/pt.po b/l10n_pt_vat/i18n/pt.po index 048fc6c0..e9f43643 100644 --- a/l10n_pt_vat/i18n/pt.po +++ b/l10n_pt_vat/i18n/pt.po @@ -7,14 +7,15 @@ msgstr "" "Project-Id-Version: Odoo Server 8.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-11-18 15:02+0000\n" -"PO-Revision-Date: 2015-11-18 15:02+0000\n" -"Last-Translator: <>\n" +"PO-Revision-Date: 2021-08-03 11:49+0000\n" +"Last-Translator: Daniel Reis \n" "Language-Team: \n" -"Language: \n" +"Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Plural-Forms: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.3.2\n" #. module: l10n_pt_vat #: code:addons/l10n_pt_vat/models/account_move.py:0 @@ -41,12 +42,12 @@ msgstr "" #. module: l10n_pt_vat #: model:ir.model.fields.selection,name:l10n_pt_vat.selection__account_tax__l10n_pt_fiscal_zone__pt-ac msgid "Açores" -msgstr "" +msgstr "Açores" #. module: l10n_pt_vat #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__code msgid "Code" -msgstr "" +msgstr "Código" #. module: l10n_pt_vat #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__create_uid @@ -63,7 +64,7 @@ msgstr "Criado em" #. module: l10n_pt_vat #: model:ir.model.fields.selection,name:l10n_pt_vat.selection__account_vat_adjustment_norm__move_type__out_refund msgid "Customer Credit Note" -msgstr "" +msgstr "Nota de Crédito de Cliente" #. module: l10n_pt_vat #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__note @@ -78,24 +79,24 @@ msgstr "Descrição" #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_tax__display_name #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__display_name msgid "Display Name" -msgstr "" +msgstr "Nome a Exibir" #. module: l10n_pt_vat #: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M03 msgid "Exigibilidade de caixa" -msgstr "" +msgstr "Exigibilidade de caixa" #. module: l10n_pt_vat #: model:ir.model.fields,help:l10n_pt_vat.field_account_bank_statement_line__vat_adjustment_norm_id #: model:ir.model.fields,help:l10n_pt_vat.field_account_move__vat_adjustment_norm_id #: model:ir.model.fields,help:l10n_pt_vat.field_account_payment__vat_adjustment_norm_id msgid "Fields 40/41 of the VAT Statement" -msgstr "" +msgstr "Campo 40/41 da Declaração de IVA" #. module: l10n_pt_vat #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_tax__l10n_pt_fiscal_zone msgid "Fiscal Zone" -msgstr "" +msgstr "Zona Fiscal" #. module: l10n_pt_vat #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_journal__id @@ -133,7 +134,7 @@ msgid "" "companies refunds." msgstr "" "Se assinalado, poderá aplicar a norma de regularização a notas de crédito de " -"terceiros" +"terceiros." #. module: l10n_pt_vat #: model:ir.model.fields,help:l10n_pt_vat.field_account_vat_adjustment_norm__out_refunds @@ -142,7 +143,7 @@ msgid "" "refunds." msgstr "" "Se assinalado, poderá aplicar a norma de regularização às suas notas de " -"crédito" +"crédito." #. module: l10n_pt_vat #: model:ir.model.fields,help:l10n_pt_vat.field_account_vat_adjustment_norm__active @@ -181,12 +182,12 @@ msgstr "" #. module: l10n_pt_vat #: model:ir.model,name:l10n_pt_vat.model_account_journal msgid "Journal" -msgstr "" +msgstr "Diário" #. module: l10n_pt_vat #: model:ir.model,name:l10n_pt_vat.model_account_move msgid "Journal Entry" -msgstr "" +msgstr "Lançamento de Diário" #. module: l10n_pt_vat #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_bank_statement_line__l10npt_has_tax_exempt_lines @@ -201,9 +202,8 @@ msgstr "" #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move____last_update #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_tax____last_update #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm____last_update -#, fuzzy msgid "Last Modified on" -msgstr "Atualizado pela últ. vez em" +msgstr "Última Modificação em" #. module: l10n_pt_vat #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__write_uid @@ -230,7 +230,7 @@ msgstr "" #. module: l10n_pt_vat #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__move_type msgid "Move Type" -msgstr "" +msgstr "Tipo de Lançamento" #. module: l10n_pt_vat #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__name @@ -246,7 +246,7 @@ msgstr "" #. module: l10n_pt_vat #: model:ir.model.fields.selection,name:l10n_pt_vat.selection__account_tax__l10n_pt_fiscal_zone__pt msgid "Portugal Continental" -msgstr "" +msgstr "Portugal Continental" #. module: l10n_pt_vat #: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M12 @@ -276,7 +276,7 @@ msgstr "" #. module: l10n_pt_vat #: model:ir.model,name:l10n_pt_vat.model_account_tax msgid "Tax" -msgstr "" +msgstr "Imposto" #. module: l10n_pt_vat #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__out_refunds @@ -297,13 +297,13 @@ msgstr "Utilizar em notas de crédito de terceiros" #: model_terms:ir.ui.view,arch_db:l10n_pt_vat.vat_adjustment_norm_view_search #: model_terms:ir.ui.view,arch_db:l10n_pt_vat.vat_adjustment_norm_view_tree msgid "VAT Adjustment Norm" -msgstr "" +msgstr "Norma de Regularização de IVA" #. module: l10n_pt_vat #: model:ir.actions.act_window,name:l10n_pt_vat.vat_adjustment_norm_action #: model:ir.ui.menu,name:l10n_pt_vat.menu_action_vat_adjustment_norm msgid "VAT Adjustment Norms" -msgstr "" +msgstr "Normas de Regularização de IVA" #. module: l10n_pt_vat #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_bank_statement_line__l10npt_vat_exempt_reason @@ -311,17 +311,17 @@ msgstr "" #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move__l10npt_vat_exempt_reason #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_payment__l10npt_vat_exempt_reason msgid "VAT Exempt Reason" -msgstr "" +msgstr "Motivo de Isenção de IVA" #. module: l10n_pt_vat #: model:ir.model,name:l10n_pt_vat.model_account_l10n_pt_vat_exempt_reason msgid "VAT Exemption Reason" -msgstr "" +msgstr "Motivo de Isenção de IVA" #. module: l10n_pt_vat #: model:ir.model.fields.selection,name:l10n_pt_vat.selection__account_vat_adjustment_norm__move_type__in_refund msgid "Vendor Credit Note" -msgstr "" +msgstr "Nota de Crédito de Fornecedor" #~ msgid "Invoice" #~ msgstr "Fatura" From dbca9dfc6029639f221f74aff38b55ac8b7ad034 Mon Sep 17 00:00:00 2001 From: Daniel Reis Date: Fri, 24 Sep 2021 11:07:26 +0000 Subject: [PATCH 36/58] Translated using Weblate (Portuguese) Currently translated at 67.3% (35 of 52 strings) Translation: l10n-portugal-14.0/l10n-portugal-14.0-l10n_pt_vat Translate-URL: https://translation.odoo-community.org/projects/l10n-portugal-14-0/l10n-portugal-14-0-l10n_pt_vat/pt/ --- l10n_pt_vat/i18n/pt.po | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/l10n_pt_vat/i18n/pt.po b/l10n_pt_vat/i18n/pt.po index e9f43643..39423552 100644 --- a/l10n_pt_vat/i18n/pt.po +++ b/l10n_pt_vat/i18n/pt.po @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Odoo Server 8.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-11-18 15:02+0000\n" -"PO-Revision-Date: 2021-08-03 11:49+0000\n" +"PO-Revision-Date: 2021-09-24 13:34+0000\n" "Last-Translator: Daniel Reis \n" "Language-Team: \n" "Language: pt\n" @@ -21,7 +21,7 @@ msgstr "" #: code:addons/l10n_pt_vat/models/account_move.py:0 #, python-format msgid "A tax exemption reason must be provided." -msgstr "" +msgstr "O motivo de isenção é obrigatório." #. module: l10n_pt_vat #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__active @@ -31,13 +31,14 @@ msgstr "Ativo" #. module: l10n_pt_vat #: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M01 +#, fuzzy msgid "Artigo 16.º n.º 6 do CIVA" -msgstr "" +msgstr "Artigo 16.º n.º 6 do CIVA" #. module: l10n_pt_vat #: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M02 msgid "Artigo 6.º do Decreto-Lei n.º 198/90, de 19 de Junho " -msgstr "" +msgstr "Artigo 6.º do Decreto-Lei n.º 198/90, de 19 de Junho " #. module: l10n_pt_vat #: model:ir.model.fields.selection,name:l10n_pt_vat.selection__account_tax__l10n_pt_fiscal_zone__pt-ac @@ -110,7 +111,7 @@ msgstr "ID" #. module: l10n_pt_vat #: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M08 msgid "IVA - Autoliquidação" -msgstr "" +msgstr "IVA - Autoliquidação" #. module: l10n_pt_vat #: model:account.l10n_pt.vat.exempt.reason,name:l10n_pt_vat.M09 From 995b9cd43d92f2249030ebb60184e9c672383d84 Mon Sep 17 00:00:00 2001 From: Daniel Reis Date: Thu, 10 Mar 2022 18:17:53 +0000 Subject: [PATCH 37/58] [FIX] l10n_pt_vat: tax exempt computation ignore section lines --- l10n_pt_vat/models/account_move.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/l10n_pt_vat/models/account_move.py b/l10n_pt_vat/models/account_move.py index a914998c..beba7f1d 100644 --- a/l10n_pt_vat/models/account_move.py +++ b/l10n_pt_vat/models/account_move.py @@ -25,14 +25,14 @@ class AccountMove(models.Model): readonly=False, ) - @api.depends("country_code", "move_type", "invoice_line_ids.tax_ids") + @api.depends("country_code", "move_type", "invoice_line_ids") def _compute_l10npt_has_tax_exempt_lines(self): for invoice in self: - invoice.l10npt_has_tax_exempt_lines = ( + invoice.l10npt_has_tax_exempt_lines = bool( invoice.country_code == "PT" and invoice.is_sale_document() and invoice.invoice_line_ids.filtered( - lambda x: not x.tax_ids.filtered("amount") + lambda x: not x.display_type and not x.tax_ids.filtered("amount") ) ) From 721c6d4f51495f4c6fd31da6d198b43084fe1aa5 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 14 Mar 2022 07:30:50 +0000 Subject: [PATCH 38/58] l10n_pt_vat 14.0.1.0.1 --- l10n_pt_vat/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/l10n_pt_vat/__manifest__.py b/l10n_pt_vat/__manifest__.py index 1b2152f7..27c077ae 100644 --- a/l10n_pt_vat/__manifest__.py +++ b/l10n_pt_vat/__manifest__.py @@ -3,7 +3,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Portugal - IVA", - "version": "14.0.1.0.0", + "version": "14.0.1.0.1", "license": "AGPL-3", "depends": ["account", "l10n_pt"], "author": "Open Source Integrators, Sossia, Odoo Community Association (OCA)", From fe5ca9a64061be621e0651e0156f711194ea0012 Mon Sep 17 00:00:00 2001 From: heliaktiv Date: Mon, 25 Jul 2022 16:54:13 +0530 Subject: [PATCH 39/58] [MIG] l10n_pt_vat: Migration to 15.0 --- l10n_pt_vat/__manifest__.py | 2 +- l10n_pt_vat/data/vat_adjustment_norm.xml | 190 +++++++++--------- l10n_pt_vat/i18n/l10n_pt_vat.pot | 2 +- l10n_pt_vat/i18n/pt.po | 2 +- l10n_pt_vat/views/account_journal_view.xml | 4 - l10n_pt_vat/views/account_move_view.xml | 4 - .../views/l10n_pt_vat_exempt_reason_view.xml | 2 - .../views/vat_adjustment_norm_view.xml | 16 +- 8 files changed, 100 insertions(+), 122 deletions(-) diff --git a/l10n_pt_vat/__manifest__.py b/l10n_pt_vat/__manifest__.py index 27c077ae..38086714 100644 --- a/l10n_pt_vat/__manifest__.py +++ b/l10n_pt_vat/__manifest__.py @@ -3,7 +3,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Portugal - IVA", - "version": "14.0.1.0.1", + "version": "15.0.1.0.0", "license": "AGPL-3", "depends": ["account", "l10n_pt"], "author": "Open Source Integrators, Sossia, Odoo Community Association (OCA)", diff --git a/l10n_pt_vat/data/vat_adjustment_norm.xml b/l10n_pt_vat/data/vat_adjustment_norm.xml index f2c0ca02..5ae596ba 100644 --- a/l10n_pt_vat/data/vat_adjustment_norm.xml +++ b/l10n_pt_vat/data/vat_adjustment_norm.xml @@ -1,96 +1,96 @@ - - - - Art. 78º, nº 2 - - - - Art. 78º, nº 3 - - - - - Art. 78º, nº 4 - - - - Art. 78º, nº 6 - - - - - Art. 78º, nº 7, alínea a) - - - - - Art. 78º, nº 7, alínea b) - - - - - Art. 78º, nº 7, alínea c) - - - - - Art. 78º, nº 7, alínea d) - - - - - Art. 78º, nº 8, alínea b) - - - - Art. 78º, nº 8, alínea c) - - - - Art. 78º, nº 8, alínea d) - - - - - Art. 78º, nº 8, alínea e) - - - - Art. 78º, nº 12 - - - - Art. 78º-A, nº 2, alínea a) - - - - Art. 78º-A, nº 4, alínea a) - - - - Art. 78º-A, nº 4, alínea b) - - - - Art. 78º-A, nº 4, alínea c) - - - - Art. 78º-A, nº 4, alínea d) - - - - Art. 78º-B, nº 4 - - - - Art. 78º-C, nº 1 - - - - Art. 78º-C, nº 3 - - + + + + Art. 78º, nº 2 + + + + Art. 78º, nº 3 + + + + + Art. 78º, nº 4 + + + + Art. 78º, nº 6 + + + + + Art. 78º, nº 7, alínea a) + + + + + Art. 78º, nº 7, alínea b) + + + + + Art. 78º, nº 7, alínea c) + + + + + Art. 78º, nº 7, alínea d) + + + + + Art. 78º, nº 8, alínea b) + + + + Art. 78º, nº 8, alínea c) + + + + Art. 78º, nº 8, alínea d) + + + + + Art. 78º, nº 8, alínea e) + + + + Art. 78º, nº 12 + + + + Art. 78º-A, nº 2, alínea a) + + + + Art. 78º-A, nº 4, alínea a) + + + + Art. 78º-A, nº 4, alínea b) + + + + Art. 78º-A, nº 4, alínea c) + + + + Art. 78º-A, nº 4, alínea d) + + + + Art. 78º-B, nº 4 + + + + Art. 78º-C, nº 1 + + + + Art. 78º-C, nº 3 + + diff --git a/l10n_pt_vat/i18n/l10n_pt_vat.pot b/l10n_pt_vat/i18n/l10n_pt_vat.pot index 1cc5558b..ebed16ff 100644 --- a/l10n_pt_vat/i18n/l10n_pt_vat.pot +++ b/l10n_pt_vat/i18n/l10n_pt_vat.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" diff --git a/l10n_pt_vat/i18n/pt.po b/l10n_pt_vat/i18n/pt.po index 39423552..027e36c3 100644 --- a/l10n_pt_vat/i18n/pt.po +++ b/l10n_pt_vat/i18n/pt.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 8.0\n" +"Project-Id-Version: Odoo Server 15.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-11-18 15:02+0000\n" "PO-Revision-Date: 2021-09-24 13:34+0000\n" diff --git a/l10n_pt_vat/views/account_journal_view.xml b/l10n_pt_vat/views/account_journal_view.xml index b0f482ac..c4f7504e 100644 --- a/l10n_pt_vat/views/account_journal_view.xml +++ b/l10n_pt_vat/views/account_journal_view.xml @@ -1,11 +1,9 @@ - Account Journal: add l10_pt_vat account.journal - - - diff --git a/l10n_pt_vat/views/account_move_view.xml b/l10n_pt_vat/views/account_move_view.xml index ddc33dd8..a5c0a62c 100644 --- a/l10n_pt_vat/views/account_move_view.xml +++ b/l10n_pt_vat/views/account_move_view.xml @@ -1,12 +1,10 @@ - Invoice: add l10_pt account.move -
    @@ -22,8 +20,6 @@ />
    -
    -
    diff --git a/l10n_pt_vat/views/l10n_pt_vat_exempt_reason_view.xml b/l10n_pt_vat/views/l10n_pt_vat_exempt_reason_view.xml index 2d8389ce..0ce295d9 100644 --- a/l10n_pt_vat/views/l10n_pt_vat_exempt_reason_view.xml +++ b/l10n_pt_vat/views/l10n_pt_vat_exempt_reason_view.xml @@ -1,5 +1,4 @@ - VAT Exempt Reason List account.l10n_pt.vat.exempt.reason @@ -11,5 +10,4 @@ - diff --git a/l10n_pt_vat/views/vat_adjustment_norm_view.xml b/l10n_pt_vat/views/vat_adjustment_norm_view.xml index 7cd40a6c..f750f85f 100644 --- a/l10n_pt_vat/views/vat_adjustment_norm_view.xml +++ b/l10n_pt_vat/views/vat_adjustment_norm_view.xml @@ -1,41 +1,33 @@ - account.vat.adjustment_norm.search account.vat.adjustment_norm - - - account.vat.adjustment_norm.tree account.vat.adjustment_norm child_ids 100 - - + - - account.vat.adjustment_norm.form account.vat.adjustment_norm - -
    + -
    - VAT Adjustment Norms account.vat.adjustment_norm tree,form - -
    From 7276bcb3cd488da21987d1e46f0f02aae8197d29 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Wed, 10 Aug 2022 20:16:51 +0000 Subject: [PATCH 40/58] [UPD] Update l10n_pt_vat.pot --- l10n_pt_vat/i18n/l10n_pt_vat.pot | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/l10n_pt_vat/i18n/l10n_pt_vat.pot b/l10n_pt_vat/i18n/l10n_pt_vat.pot index ebed16ff..a57bf6fc 100644 --- a/l10n_pt_vat/i18n/l10n_pt_vat.pot +++ b/l10n_pt_vat/i18n/l10n_pt_vat.pot @@ -69,10 +69,7 @@ msgid "Description" msgstr "" #. module: l10n_pt_vat -#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_journal__display_name #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__display_name -#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move__display_name -#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_tax__display_name #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__display_name msgid "Display Name" msgstr "" @@ -95,10 +92,7 @@ msgid "Fiscal Zone" msgstr "" #. module: l10n_pt_vat -#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_journal__id #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__id -#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move__id -#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_tax__id #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__id msgid "ID" msgstr "" @@ -187,10 +181,7 @@ msgid "L10Npt Has Tax Exempt Lines" msgstr "" #. module: l10n_pt_vat -#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_journal____last_update #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason____last_update -#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move____last_update -#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_tax____last_update #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm____last_update msgid "Last Modified on" msgstr "" @@ -283,9 +274,7 @@ msgstr "" #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_bank_statement_line__vat_adjustment_norm_id #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move__vat_adjustment_norm_id #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_payment__vat_adjustment_norm_id -#: model_terms:ir.ui.view,arch_db:l10n_pt_vat.vat_adjustment_norm_view_form #: model_terms:ir.ui.view,arch_db:l10n_pt_vat.vat_adjustment_norm_view_search -#: model_terms:ir.ui.view,arch_db:l10n_pt_vat.vat_adjustment_norm_view_tree msgid "VAT Adjustment Norm" msgstr "" From cbec286267749871d64d1929706a9c703b9f356d Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 10 Aug 2022 20:19:13 +0000 Subject: [PATCH 41/58] [UPD] README.rst --- l10n_pt_vat/README.rst | 10 +++++----- l10n_pt_vat/static/description/index.html | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/l10n_pt_vat/README.rst b/l10n_pt_vat/README.rst index 1bcde522..1509dc70 100644 --- a/l10n_pt_vat/README.rst +++ b/l10n_pt_vat/README.rst @@ -14,13 +14,13 @@ Portugal - IVA :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fl10n--portugal-lightgray.png?logo=github - :target: https://github.com/OCA/l10n-portugal/tree/14.0/l10n_pt_vat + :target: https://github.com/OCA/l10n-portugal/tree/15.0/l10n_pt_vat :alt: OCA/l10n-portugal .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/l10n-portugal-14-0/l10n-portugal-14-0-l10n_pt_vat + :target: https://translation.odoo-community.org/projects/l10n-portugal-15-0/l10n-portugal-15-0-l10n_pt_vat :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/171/14.0 + :target: https://runbot.odoo-community.org/runbot/171/15.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -45,7 +45,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. @@ -80,6 +80,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/l10n-portugal `_ project on GitHub. +This module is part of the `OCA/l10n-portugal `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/l10n_pt_vat/static/description/index.html b/l10n_pt_vat/static/description/index.html index e4fcffce..f4f06945 100644 --- a/l10n_pt_vat/static/description/index.html +++ b/l10n_pt_vat/static/description/index.html @@ -367,7 +367,7 @@

    Portugal - IVA

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

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

    +

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

    This modules extends the base localization modules with a few VAT specific functions that are required by the Portuguese Tax Authorities, including:

    • The use of pre-defined legally accepted reasons for issuing credit notes, as required for fields 40/41 of the VAT statement (Portaria nº 255/2013).
    • @@ -394,7 +394,7 @@

      Bug Tracker

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

      +feedback.

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

    @@ -427,7 +427,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/l10n-portugal project on GitHub.

    +

    This module is part of the OCA/l10n-portugal project on GitHub.

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

    From 759a173b50547f9f570152d24e9e710a05d3ac9c Mon Sep 17 00:00:00 2001 From: Francisco Martins Date: Thu, 3 Nov 2022 09:42:09 +0000 Subject: [PATCH 42/58] [IMP] l10n_pt_vat: pre-commit stuff --- l10n_pt_vat/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/l10n_pt_vat/__manifest__.py b/l10n_pt_vat/__manifest__.py index 38086714..1d824c93 100644 --- a/l10n_pt_vat/__manifest__.py +++ b/l10n_pt_vat/__manifest__.py @@ -3,7 +3,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Portugal - IVA", - "version": "15.0.1.0.0", + "version": "16.0.1.0.0", "license": "AGPL-3", "depends": ["account", "l10n_pt"], "author": "Open Source Integrators, Sossia, Odoo Community Association (OCA)", From 5edbe314ddc8d17f8fbb4ef13f820ef357c007a5 Mon Sep 17 00:00:00 2001 From: Francisco Martins Date: Thu, 3 Nov 2022 09:51:30 +0000 Subject: [PATCH 43/58] [MIG] l10n_pt_vat: Migration to 16.0 --- l10n_pt_vat/views/account_move_view.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/l10n_pt_vat/views/account_move_view.xml b/l10n_pt_vat/views/account_move_view.xml index a5c0a62c..e43f3401 100644 --- a/l10n_pt_vat/views/account_move_view.xml +++ b/l10n_pt_vat/views/account_move_view.xml @@ -15,7 +15,8 @@
    From ea94993d9602c6ba65e12d3d311825f7f893bd45 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Wed, 28 Dec 2022 15:28:51 +0000 Subject: [PATCH 44/58] [UPD] Update l10n_pt_vat.pot --- l10n_pt_vat/i18n/l10n_pt_vat.pot | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/l10n_pt_vat/i18n/l10n_pt_vat.pot b/l10n_pt_vat/i18n/l10n_pt_vat.pot index a57bf6fc..5b437469 100644 --- a/l10n_pt_vat/i18n/l10n_pt_vat.pot +++ b/l10n_pt_vat/i18n/l10n_pt_vat.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 15.0\n" +"Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -14,6 +14,7 @@ msgstr "" "Plural-Forms: \n" #. module: l10n_pt_vat +#. odoo-python #: code:addons/l10n_pt_vat/models/account_move.py:0 #, python-format msgid "A tax exemption reason must be provided." From a23e414b5a2e2b581084c5acc2f8c1120db327d4 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 28 Dec 2022 15:31:53 +0000 Subject: [PATCH 45/58] [UPD] README.rst --- l10n_pt_vat/README.rst | 10 +++++----- l10n_pt_vat/static/description/index.html | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/l10n_pt_vat/README.rst b/l10n_pt_vat/README.rst index 1509dc70..5061b980 100644 --- a/l10n_pt_vat/README.rst +++ b/l10n_pt_vat/README.rst @@ -14,13 +14,13 @@ Portugal - IVA :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fl10n--portugal-lightgray.png?logo=github - :target: https://github.com/OCA/l10n-portugal/tree/15.0/l10n_pt_vat + :target: https://github.com/OCA/l10n-portugal/tree/16.0/l10n_pt_vat :alt: OCA/l10n-portugal .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/l10n-portugal-15-0/l10n-portugal-15-0-l10n_pt_vat + :target: https://translation.odoo-community.org/projects/l10n-portugal-16-0/l10n-portugal-16-0-l10n_pt_vat :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/171/15.0 + :target: https://runbot.odoo-community.org/runbot/171/16.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -45,7 +45,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. @@ -80,6 +80,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/l10n-portugal `_ project on GitHub. +This module is part of the `OCA/l10n-portugal `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/l10n_pt_vat/static/description/index.html b/l10n_pt_vat/static/description/index.html index f4f06945..ab38966a 100644 --- a/l10n_pt_vat/static/description/index.html +++ b/l10n_pt_vat/static/description/index.html @@ -367,7 +367,7 @@

    Portugal - IVA

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

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

    +

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

    This modules extends the base localization modules with a few VAT specific functions that are required by the Portuguese Tax Authorities, including:

    • The use of pre-defined legally accepted reasons for issuing credit notes, as required for fields 40/41 of the VAT statement (Portaria nº 255/2013).
    • @@ -394,7 +394,7 @@

      Bug Tracker

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

      +feedback.

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

      @@ -427,7 +427,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/l10n-portugal project on GitHub.

      +

      This module is part of the OCA/l10n-portugal project on GitHub.

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

      From 840841f2c97bb1c3faac43fa94e33d1a5bb34c93 Mon Sep 17 00:00:00 2001 From: Weblate Date: Wed, 28 Dec 2022 15:36:15 +0000 Subject: [PATCH 46/58] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: l10n-portugal-16.0/l10n-portugal-16.0-l10n_pt_vat Translate-URL: https://translation.odoo-community.org/projects/l10n-portugal-16-0/l10n-portugal-16-0-l10n_pt_vat/ --- l10n_pt_vat/i18n/pt.po | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/l10n_pt_vat/i18n/pt.po b/l10n_pt_vat/i18n/pt.po index 027e36c3..c66eb7bb 100644 --- a/l10n_pt_vat/i18n/pt.po +++ b/l10n_pt_vat/i18n/pt.po @@ -18,6 +18,7 @@ msgstr "" "X-Generator: Weblate 4.3.2\n" #. module: l10n_pt_vat +#. odoo-python #: code:addons/l10n_pt_vat/models/account_move.py:0 #, python-format msgid "A tax exemption reason must be provided." @@ -74,10 +75,7 @@ msgid "Description" msgstr "Descrição" #. module: l10n_pt_vat -#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_journal__display_name #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__display_name -#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move__display_name -#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_tax__display_name #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__display_name msgid "Display Name" msgstr "Nome a Exibir" @@ -100,10 +98,7 @@ msgid "Fiscal Zone" msgstr "Zona Fiscal" #. module: l10n_pt_vat -#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_journal__id #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason__id -#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move__id -#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_tax__id #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm__id msgid "ID" msgstr "ID" @@ -198,10 +193,7 @@ msgid "L10Npt Has Tax Exempt Lines" msgstr "" #. module: l10n_pt_vat -#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_journal____last_update #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_l10n_pt_vat_exempt_reason____last_update -#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move____last_update -#: model:ir.model.fields,field_description:l10n_pt_vat.field_account_tax____last_update #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_vat_adjustment_norm____last_update msgid "Last Modified on" msgstr "Última Modificação em" @@ -294,9 +286,7 @@ msgstr "Utilizar em notas de crédito de terceiros" #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_bank_statement_line__vat_adjustment_norm_id #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_move__vat_adjustment_norm_id #: model:ir.model.fields,field_description:l10n_pt_vat.field_account_payment__vat_adjustment_norm_id -#: model_terms:ir.ui.view,arch_db:l10n_pt_vat.vat_adjustment_norm_view_form #: model_terms:ir.ui.view,arch_db:l10n_pt_vat.vat_adjustment_norm_view_search -#: model_terms:ir.ui.view,arch_db:l10n_pt_vat.vat_adjustment_norm_view_tree msgid "VAT Adjustment Norm" msgstr "Norma de Regularização de IVA" From 394611b43309664651647a97b4f9df6bfab3c4e8 Mon Sep 17 00:00:00 2001 From: Daniel Reis Date: Wed, 28 Dec 2022 18:50:27 +0000 Subject: [PATCH 47/58] [REF] l10n_pt_vat: update development status --- l10n_pt_vat/__manifest__.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/l10n_pt_vat/__manifest__.py b/l10n_pt_vat/__manifest__.py index 1d824c93..a8154b0e 100644 --- a/l10n_pt_vat/__manifest__.py +++ b/l10n_pt_vat/__manifest__.py @@ -5,11 +5,13 @@ "name": "Portugal - IVA", "version": "16.0.1.0.0", "license": "AGPL-3", - "depends": ["account", "l10n_pt"], "author": "Open Source Integrators, Sossia, Odoo Community Association (OCA)", "summary": "Portuguese VAT requirements extensions", "website": "https://github.com/OCA/l10n-portugal", "category": "Accounting/Localizations", + "maintainers": ["dreispt"], + "development_status": "Production/Stable", + "depends": ["account", "l10n_pt"], "data": [ "security/ir.model.access.csv", "data/account.l10n_pt.vat.exempt.reason.csv", From 8bf20cf4c4a9101249a308d65120a325c83bb877 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 29 Dec 2022 12:19:44 +0000 Subject: [PATCH 48/58] [UPD] README.rst --- l10n_pt_vat/README.rst | 12 ++++++++++-- l10n_pt_vat/static/description/index.html | 4 +++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/l10n_pt_vat/README.rst b/l10n_pt_vat/README.rst index 5061b980..91c53035 100644 --- a/l10n_pt_vat/README.rst +++ b/l10n_pt_vat/README.rst @@ -7,9 +7,9 @@ Portugal - IVA !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png +.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png :target: https://odoo-community.org/page/development-status - :alt: Beta + :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 @@ -80,6 +80,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. +.. |maintainer-dreispt| image:: https://github.com/dreispt.png?size=40px + :target: https://github.com/dreispt + :alt: dreispt + +Current `maintainer `__: + +|maintainer-dreispt| + This module is part of the `OCA/l10n-portugal `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/l10n_pt_vat/static/description/index.html b/l10n_pt_vat/static/description/index.html index ab38966a..f175af1a 100644 --- a/l10n_pt_vat/static/description/index.html +++ b/l10n_pt_vat/static/description/index.html @@ -367,7 +367,7 @@

      Portugal - IVA

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

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

      +

      Production/Stable License: AGPL-3 OCA/l10n-portugal Translate me on Weblate Try me on Runbot

      This modules extends the base localization modules with a few VAT specific functions that are required by the Portuguese Tax Authorities, including:

      • The use of pre-defined legally accepted reasons for issuing credit notes, as required for fields 40/41 of the VAT statement (Portaria nº 255/2013).
      • @@ -427,6 +427,8 @@

        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.

        +

        Current maintainer:

        +

        dreispt

        This module is part of the OCA/l10n-portugal project on GitHub.

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

        From 6f07aef21f96a7631ef8663ba990bf8de6593550 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sun, 3 Sep 2023 13:52:23 +0000 Subject: [PATCH 49/58] [UPD] README.rst --- l10n_pt_vat/README.rst | 15 +++++---- l10n_pt_vat/static/description/index.html | 40 ++++++++++++----------- 2 files changed, 30 insertions(+), 25 deletions(-) diff --git a/l10n_pt_vat/README.rst b/l10n_pt_vat/README.rst index 91c53035..55ec394b 100644 --- a/l10n_pt_vat/README.rst +++ b/l10n_pt_vat/README.rst @@ -2,10 +2,13 @@ Portugal - IVA ============== -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:012fa46c7a2c8d6b6b8f9ebe39a877bd13e702a20614c46601fe298222e6f5ba + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Portugal - IVA .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/l10n-portugal-16-0/l10n-portugal-16-0-l10n_pt_vat :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/171/16.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/l10n-portugal&target_branch=16.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This modules extends the base localization modules with a few VAT specific functions that are required by the Portuguese Tax Authorities, including: @@ -44,7 +47,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 +If you spotted it first, help us to smash it by providing a detailed and welcomed `feedback `_. Do not contact contributors directly about support or help with technical issues. diff --git a/l10n_pt_vat/static/description/index.html b/l10n_pt_vat/static/description/index.html index f175af1a..254b3d10 100644 --- a/l10n_pt_vat/static/description/index.html +++ b/l10n_pt_vat/static/description/index.html @@ -1,20 +1,20 @@ - + - + Portugal - IVA