-
-
Notifications
You must be signed in to change notification settings - Fork 305
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[MIG] l10n_it_account_stamp: Migration to 14.0
- Loading branch information
Showing
17 changed files
with
333 additions
and
278 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
======================================= | ||
Italian Localization - Imposta di bollo | ||
======================================= | ||
====================== | ||
ITA - Imposta di bollo | ||
====================== | ||
|
||
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
!! This file is generated by oca-gen-addon-readme !! | ||
|
@@ -14,13 +14,13 @@ Italian Localization - Imposta di bollo | |
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html | ||
:alt: License: LGPL-3 | ||
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fl10n--italy-lightgray.png?logo=github | ||
:target: https://github.com/OCA/l10n-italy/tree/12.0/l10n_it_account_stamp | ||
:target: https://github.com/OCA/l10n-italy/tree/14.0--add-14.0-mig-l10n_it_account_stamp/l10n_it_account_stamp | ||
:alt: OCA/l10n-italy | ||
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png | ||
:target: https://translation.odoo-community.org/projects/l10n-italy-12-0/l10n-italy-12-0-l10n_it_account_stamp | ||
:target: https://translation.odoo-community.org/projects/l10n-italy-14-0--add-14-0-mig-l10n_it_account_stamp/l10n-italy-14-0--add-14-0-mig-l10n_it_account_stamp-l10n_it_account_stamp | ||
:alt: Translate me on Weblate | ||
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png | ||
:target: https://runbot.odoo-community.org/runbot/122/12.0 | ||
:target: https://runbot.odoo-community.org/runbot/122/14.0--add-14.0-mig-l10n_it_account_stamp | ||
:alt: Try me on Runbot | ||
|
||
|badge1| |badge2| |badge3| |badge4| |badge5| | ||
|
@@ -53,7 +53,7 @@ Modalità manuale: | |
|
||
- andare sul prodotto "Imposta di bollo 2 euro" e deselezionare la casella "Calcolo automatico". | ||
|
||
- per ciascuna fattura, abilitare manualmente la casella di selezione "Imposta di bollo". | ||
- per ciascuna fattura, abilitare manualmente la casella di selezione "Imposta di bollo". L'applicabilità dell'imposta di bollo verrà calcolata in base alla somma degli imponibili relativi alle imposte selezionate. | ||
|
||
Impostare i conti di ricavo/costo nella scheda "Contabilità", generalmente ricavo="Debiti per bolli" e costo="Valori bollati". | ||
|
||
|
@@ -63,13 +63,13 @@ Automatic mode: | |
|
||
- Go to 'Tax Stamp 2 euro' product and configure 'Stamp taxes' (exemption taxes). | ||
|
||
- For each invoice, the base amount for each selected tax will be added up and used to determine the application of the account stamp. | ||
- For each invoice, the base amount for each selected tax will be added up and used to automatically determine the application of the account stamp. | ||
|
||
Manual mode: | ||
|
||
- Go to 'Tax Stamp 2 euro' product and deselect 'Auto-compute' checkbox. | ||
|
||
- For each invoice, manually enable 'Tax Stamp' checkbox. | ||
- For each invoice, manually enable 'Tax Stamp' checkbox. The base amount for each selected tax will be added up and used to determine the application of the account stamp. | ||
|
||
Also set income/expense accounts, typically income = 'Debiti per bolli' and expense = 'Valori bollati'. | ||
|
||
|
@@ -94,7 +94,7 @@ Bug Tracker | |
Bugs are tracked on `GitHub Issues <https://github.com/OCA/l10n-italy/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 <https://github.com/OCA/l10n-italy/issues/new?body=module:%20l10n_it_account_stamp%0Aversion:%2012.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_. | ||
`feedback <https://github.com/OCA/l10n-italy/issues/new?body=module:%20l10n_it_account_stamp%0Aversion:%2014.0--add-14.0-mig-l10n_it_account_stamp%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_. | ||
|
||
Do not contact contributors directly about support or help with technical issues. | ||
|
||
|
@@ -116,6 +116,8 @@ Contributors | |
* Ermanno Gnan | ||
* Enrico Ganzaroli | ||
* Sergio Zanchetta <https://github.com/primes2h> | ||
* Marco Colombo <https://github.com/TheMule71> | ||
* Gianmarco Conte <[email protected]> | ||
|
||
Maintainers | ||
~~~~~~~~~~~ | ||
|
@@ -130,6 +132,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-italy <https://github.com/OCA/l10n-italy/tree/12.0/l10n_it_account_stamp>`_ project on GitHub. | ||
This module is part of the `OCA/l10n-italy <https://github.com/OCA/l10n-italy/tree/14.0--add-14.0-mig-l10n_it_account_stamp/l10n_it_account_stamp>`_ project on GitHub. | ||
|
||
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,11 +2,12 @@ | |
# Copyright 2018 Enrico Ganzaroli ([email protected]) | ||
# Copyright 2018 Ermanno Gnan ([email protected]) | ||
# Copyright 2018 Lorenzo Battistini (https://github.com/eLBati) | ||
# Copyright 2018-2019 Sergio Zanchetta (https://github.com/primes2h) | ||
# Copyright 2018-2020 Sergio Zanchetta (https://github.com/primes2h) | ||
# Copyright 2021 Gianmarco Conte <[email protected]> | ||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). | ||
|
||
{ | ||
"name": "Italian Localization - Imposta di bollo", | ||
"name": "ITA - Imposta di bollo", | ||
"version": "14.0.1.0.0", | ||
"category": "Localization/Italy", | ||
"summary": "Gestione automatica dell'imposta di bollo", | ||
|
@@ -20,7 +21,7 @@ | |
], | ||
"data": [ | ||
"data/data.xml", | ||
"views/invoice_view.xml", | ||
"views/account_move_view.xml", | ||
"views/product_view.xml", | ||
"views/company_view.xml", | ||
], | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). | ||
|
||
from . import invoice | ||
from . import account_move | ||
from . import product | ||
from . import company |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,186 @@ | ||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). | ||
|
||
from odoo import _, api, fields, models | ||
from odoo.exceptions import Warning | ||
|
||
|
||
class AccountMove(models.Model): | ||
_inherit = "account.move" | ||
|
||
tax_stamp = fields.Boolean( | ||
"Tax Stamp", readonly=False, compute="_compute_tax_stamp", store=True | ||
) | ||
auto_compute_stamp = fields.Boolean( | ||
related="company_id.tax_stamp_product_id.auto_compute" | ||
) | ||
manually_apply_tax_stamp = fields.Boolean("Apply tax stamp") | ||
|
||
def is_tax_stamp_applicable(self): | ||
stamp_product_id = self.env.company.with_context( | ||
lang=self.partner_id.lang | ||
).tax_stamp_product_id | ||
if not stamp_product_id: | ||
raise Warning(_("Missing tax stamp product in company settings!")) | ||
total_tax_base = sum( | ||
( | ||
inv_tax.price_subtotal | ||
for inv_tax in self.line_ids.filtered( | ||
lambda line: line.tax_ids & stamp_product_id.stamp_apply_tax_ids | ||
) | ||
), | ||
0.0, | ||
) | ||
return total_tax_base >= stamp_product_id.stamp_apply_min_total_base | ||
|
||
@api.depends( | ||
"invoice_line_ids.price_subtotal", | ||
"line_ids.price_total", | ||
"currency_id", | ||
"company_id", | ||
"invoice_date", | ||
"move_type", | ||
"manually_apply_tax_stamp", | ||
"invoice_line_ids.tax_ids", | ||
) | ||
def _compute_tax_stamp(self): | ||
for invoice in self: | ||
invoice.tax_stamp = False | ||
if invoice.auto_compute_stamp: | ||
invoice.tax_stamp = invoice.is_tax_stamp_applicable() | ||
else: | ||
if invoice.manually_apply_tax_stamp: | ||
invoice.tax_stamp = True | ||
|
||
def add_tax_stamp_line(self): | ||
for inv in self: | ||
if not inv.tax_stamp: | ||
raise Warning(_("Tax stamp is not applicable")) | ||
stamp_product_id = self.env.company.with_context( | ||
lang=inv.partner_id.lang | ||
).tax_stamp_product_id | ||
if not stamp_product_id: | ||
raise Warning(_("Missing tax stamp product in company settings!")) | ||
for line in inv.invoice_line_ids: | ||
if line.product_id and line.product_id.is_stamp: | ||
raise Warning( | ||
_("Tax sss stamp line %s already present. " "Remove it first.") | ||
% line.name | ||
) | ||
stamp_account = stamp_product_id.property_account_income_id | ||
if not stamp_account: | ||
raise Warning( | ||
_("Missing account income configuration for" " %s") | ||
% stamp_product_id.name | ||
) | ||
invoice_line_vals = { | ||
"move_id": inv.id, | ||
"product_id": stamp_product_id.id, | ||
"name": stamp_product_id.description_sale, | ||
"sequence": 99999, | ||
"account_id": stamp_account.id, | ||
"price_unit": stamp_product_id.list_price, | ||
"quantity": 1, | ||
"product_uom_id": stamp_product_id.uom_id.id, | ||
"tax_ids": [(6, 0, stamp_product_id.taxes_id.ids)], | ||
"analytic_account_id": None, | ||
} | ||
inv.write({"invoice_line_ids": [(0, 0, invoice_line_vals)]}) | ||
|
||
def is_tax_stamp_line_present(self): | ||
for line in self.line_ids: | ||
if line.is_stamp_line: | ||
return True | ||
return False | ||
|
||
def is_tax_stamp_product_present(self): | ||
product_stamp = self.invoice_line_ids.filtered( | ||
lambda line: line.product_id.is_stamp | ||
) | ||
if product_stamp: | ||
return True | ||
return False | ||
|
||
def _build_tax_stamp_lines(self, product): | ||
if ( | ||
not product.property_account_income_id | ||
or not product.property_account_expense_id | ||
): | ||
raise Warning( | ||
_("Product %s must have income and expense accounts") % product.name | ||
) | ||
|
||
income_vals = { | ||
"name": _("Tax Stamp Income"), | ||
"is_stamp_line": True, | ||
"partner_id": self.partner_id.id, | ||
"account_id": product.property_account_income_id.id, | ||
"journal_id": self.journal_id.id, | ||
"date": self.invoice_date, | ||
"debit": 0, | ||
"credit": product.list_price, | ||
"exclude_from_invoice_tab": True, | ||
} | ||
if self.move_type == "out_refund": | ||
income_vals["debit"] = product.list_price | ||
income_vals["credit"] = 0 | ||
|
||
expense_vals = { | ||
"name": _("Tax Stamp Expense"), | ||
"is_stamp_line": True, | ||
"partner_id": self.partner_id.id, | ||
"account_id": product.property_account_expense_id.id, | ||
"journal_id": self.journal_id.id, | ||
"date": self.invoice_date, | ||
"debit": product.list_price, | ||
"credit": 0, | ||
"exclude_from_invoice_tab": True, | ||
} | ||
if self.move_type == "out_refund": | ||
income_vals["debit"] = 0 | ||
income_vals["credit"] = product.list_price | ||
|
||
return income_vals, expense_vals | ||
|
||
def _post(self, soft=True): | ||
res = super(AccountMove, self)._post(soft=soft) | ||
for inv in self: | ||
posted = False | ||
if ( | ||
inv.tax_stamp | ||
and not inv.is_tax_stamp_line_present() | ||
and not inv.is_tax_stamp_product_present() | ||
): | ||
if inv.state == "posted": | ||
posted = True | ||
inv.state = "draft" | ||
line_model = self.env["account.move.line"] | ||
stamp_product_id = self.env.company.with_context( | ||
lang=inv.partner_id.lang | ||
).tax_stamp_product_id | ||
if not stamp_product_id: | ||
raise Warning(_("Missing tax stamp product in company settings!")) | ||
income_vals, expense_vals = inv._build_tax_stamp_lines(stamp_product_id) | ||
income_vals["move_id"] = inv.id | ||
expense_vals["move_id"] = inv.id | ||
line_model.with_context(check_move_validity=False).create(income_vals) | ||
line_model.with_context(check_move_validity=False).create(expense_vals) | ||
if posted: | ||
inv.state = "posted" | ||
return res | ||
|
||
def button_draft(self): | ||
res = super(AccountMove, self).button_draft() | ||
for account_move in self: | ||
move_line_tax_stamp_ids = account_move.line_ids.filtered( | ||
lambda line: line.is_stamp_line | ||
) | ||
move_line_tax_stamp_ids.unlink() | ||
return res | ||
|
||
|
||
class AccountInvoiceLine(models.Model): | ||
_inherit = "account.move.line" | ||
|
||
is_stamp_line = fields.Boolean( | ||
readonly=True | ||
) # used only with automatic tax stamp active |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.