Skip to content

Commit

Permalink
[MIG] l10n_it_corrispettivi: Migration to 14.0
Browse files Browse the repository at this point in the history
  • Loading branch information
tafaRU committed Nov 12, 2021
1 parent 978b679 commit 76ed5ea
Show file tree
Hide file tree
Showing 13 changed files with 290 additions and 375 deletions.
4 changes: 3 additions & 1 deletion l10n_it_corrispettivi/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ Authors

* Odoo Italian Community
* Agile Business Group
* AIR s.r.l.

Contributors
~~~~~~~~~~~~
Expand All @@ -106,6 +107,7 @@ Contributors
* Simone Rubino <[email protected]>
* Sergio Zanchetta <https://github.com/primes2h>
* Giovanni Serra <[email protected]>
* Kevin Poli <[email protected]>

Maintainers
~~~~~~~~~~~
Expand All @@ -120,6 +122,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_corrispettivi>`_ project on GitHub.
This module is part of the `AIR/l10n-italy <https://github.com/airsrl/l10n-italy/tree/14.0/l10n_it_corrispettivi>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
2 changes: 2 additions & 0 deletions l10n_it_corrispettivi/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@

from . import controllers
from . import models
from . import wizards

28 changes: 15 additions & 13 deletions l10n_it_corrispettivi/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,22 @@
# Copyright 2018-2019 Simone Rubino - Agile Business Group
# Copyright 2019 Sergio Zanchetta (Associazione PNLUG - Gruppo Odoo)
# Copyright 2020 Giovanni Serra - GSLab.it
# Copyright 2021 Kevin Poli - AIR s.r.l.
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl).
{
"name": "Italian Localization - Ricevute",
"version": "12.0.1.1.7",
"category": "Accounting & Finance",
"author": "Odoo Italian Community, Agile Business Group, "
"Odoo Community Association (OCA)",
"website": "https://github.com/OCA/l10n-italy" "l10n_it_corrispettivi",
"license": "LGPL-3",
"depends": ["account"],
"data": [
"data/account_journal_data.xml",
"views/account_report.xml",
"views/account_view.xml",
'name': 'Italian Localization - Ricevute',
'version': '14.0.1.0.0',
'category': 'Accounting & Finance',
'author': 'Odoo Italian Community,AIR s.r.l, Agile Business Group, '
'Odoo Community Association (OCA)',
'website': 'https://github.com/airsrl/l10n-italy/tree/14.0/'
'l10n_it_corrispettivi',
'license': 'LGPL-3',
'depends': ['account'],
'data': [
'data/account_journal_data.xml',
'views/account_report.xml',
'views/account_view.xml'
],
"installable": True,
'installable': True
}
6 changes: 4 additions & 2 deletions l10n_it_corrispettivi/controllers/main.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
# Copyright 2019 Simone Rubino
#Copyright 2021 Kevin Poli - AIR s.r.l.

from odoo.addons.portal.controllers.portal import CustomerPortal


class CorrispettiviPortal(CustomerPortal):

def _show_report(self, model, report_type, report_ref, download=False):
if model._name == "account.invoice" and model.corrispettivo:
report_ref = "l10n_it_corrispettivi.account_corrispettivi"
if model._name == 'account.move' and model.corrispettivo:
report_ref = 'l10n_it_corrispettivi.account_corrispettivi'
return super()._show_report(model, report_type, report_ref, download)
5 changes: 3 additions & 2 deletions l10n_it_corrispettivi/data/account_journal_data.xml
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2019 Simone Rubino
-->

<odoo noupdate="1">
<record id="corrispettivi_journal" model="account.journal">
<field name="name">Receipts Journal</field>
<field name="code">RICEV</field>
<field name="type">sale</field>
<field name="corrispettivi" eval="True" />
<field name="corrispettivi" eval="True"/>
<!-- Avoid being selected as default journal -->
<field name="sequence">20</field>
</record>
Expand Down
1 change: 1 addition & 0 deletions l10n_it_corrispettivi/models/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@

from . import account
138 changes: 72 additions & 66 deletions l10n_it_corrispettivi/models/account.py
Original file line number Diff line number Diff line change
@@ -1,136 +1,142 @@
# Copyright 2016 Lorenzo Battistini - Agile Business Group
# Copyright 2018 Simone Rubino - Agile Business Group
# Copyright 2021 Kevin Poli - AIR s.r.l.

from odoo import _, api, fields, models
from odoo import models, fields, api, _
from odoo.exceptions import UserError


class AccountInvoice(models.Model):
_inherit = "account.invoice"
class AccountJournal(models.Model):
_inherit = 'account.journal'

corrispettivi = fields.Boolean(string='Receipts')

@api.model
def get_corr_journal(self, company_id=None):
if not company_id:
company_id = self.env.user.company_id
corr_journal_id = self.search(
[('type', '=', 'sale'),
('corrispettivi', '=', True),
('company_id', '=', company_id.id)], limit=1)

if not corr_journal_id:
raise UserError(_('No journal found for receipts'))

return corr_journal_id


class AccountMove(models.Model):
_inherit = 'account.move'

@api.model
def _default_partner_id(self):
if not self._context.get("default_corrispettivi", False):
if not self._context.get('default_corrispettivi', False):
# If this is not a receipts (corrispettivi), do nothing
return False
return self.env.ref("base.public_user").partner_id.id
else:
try:
return self.env.ref('base.public_user').partner_id.id
except:
return False

@api.model
def _default_journal(self):
if not self._context.get("default_corrispettivi", False):
def _get_default_journal(self):
if not self._context.get('default_corrispettivi', False):
# If this is not a receipts (corrispettivi), do nothing
return super(AccountInvoice, self)._default_journal()
company_id = self._context.get("company_id", self.env.user.company_id)
return self.env["account.journal"].get_corr_journal(company_id)
return super(AccountMove, self)._get_default_journal()
company_id = self._context.get(
'company_id', self.env.user.company_id)
return self.env['account.journal'] \
.get_corr_journal(company_id)

partner_id = fields.Many2one(default=_default_partner_id)
journal_id = fields.Many2one(default=_get_default_journal)


# set default option on inherited field
corrispettivo = fields.Boolean(
string="Receipt", related="journal_id.corrispettivi", readonly=True, store=True
)
partner_id = fields.Many2one(default=_default_partner_id)
journal_id = fields.Many2one(default=_default_journal)
string='Receipt', related="journal_id.corrispettivi",store=True)

@api.onchange("company_id")
@api.onchange('company_id')
def onchange_company_id_corrispettivi(self):
if not self._context.get("default_corrispettivi", False):
if not self._context.get('default_corrispettivi', False):
# If this is not a receipts (corrispettivi), do nothing
return

self.set_corr_journal()

@api.onchange("partner_id", "fiscal_position_id")
@api.onchange('partner_id', 'fiscal_position_id')
def onchange_partner_id_corrispettivi(self):
if self.partner_id.use_corrispettivi or self.fiscal_position_id.corrispettivi:
if (
self.partner_id.use_corrispettivi or
self.fiscal_position_id.corrispettivi
):
self.set_corr_journal()
else:
self.journal_id = self._default_journal()
self.journal_id = self._get_default_journal()

@api.multi
def set_corr_journal(self):
for invoice in self:
invoice.journal_id = self.env["account.journal"].get_corr_journal(
invoice.company_id
)
invoice.journal_id = self.env['account.journal'] \
.get_corr_journal(invoice.company_id)

@api.multi
def corrispettivo_print(self):
""" Print the receipt and mark it as sent"""
""" Print the receipt """
self.ensure_one()
self.sent = True
return self.env.ref(
"l10n_it_corrispettivi.account_corrispettivi"
).report_action(self)
return self.env.ref('l10n_it_corrispettivi.account_corrispettivi') \
.report_action(self)


class AccountJournal(models.Model):
_inherit = "account.journal"
corrispettivi = fields.Boolean(string="Receipts")

@api.model
def get_corr_journal(self, company_id=None):
if not company_id:
company_id = self.env.user.company_id
corr_journal_id = self.search(
[
("type", "=", "sale"),
("corrispettivi", "=", True),
("company_id", "=", company_id.id),
],
limit=1,
)

if not corr_journal_id:
raise UserError(_("No journal found for receipts"))

return corr_journal_id


class AccountFiscalPosition(models.Model):
_inherit = "account.fiscal.position"
_inherit = 'account.fiscal.position'

corrispettivi = fields.Boolean(string="Receipts")
corrispettivi = fields.Boolean(string='Receipts')

@api.model
def get_corr_fiscal_pos(self, company_id=None):
if not company_id:
company_id = self.env.user.company_id
corr_fiscal_pos = self.search(
[
("company_id", "=", company_id.id),
("corrispettivi", "=", True),
('company_id', '=', company_id.id),
('corrispettivi', '=', True),
],
limit=1,
limit=1
)
if not corr_fiscal_pos:
# Fall back to fiscal positions without company
corr_fiscal_pos = self.search(
[
("company_id", "=", False),
("corrispettivi", "=", True),
('company_id', '=', False),
('corrispettivi', '=', True),
],
limit=1,
limit=1
)

return corr_fiscal_pos



class ResPartner(models.Model):
_inherit = "res.partner"
_inherit = 'res.partner'

use_corrispettivi = fields.Boolean(string="Use Receipts")
use_corrispettivi = fields.Boolean(string='Use Receipts')

@api.onchange("use_corrispettivi")
@api.onchange('use_corrispettivi')
def onchange_use_corrispettivi(self):
if self.use_corrispettivi:
# Partner is receipts, assign a receipts (corrispettivi)
# fiscal position only if there is none
if not self.property_account_position_id:
company = (
self.company_id or self.default_get(["company_id"])["company_id"]
)
self.property_account_position_id = self.env[
"account.fiscal.position"
].get_corr_fiscal_pos(company)
default=self.default_get(['parent_id'])['company_id']
company = self.company_id or default
self.property_account_position_id = \
self.env['account.fiscal.position'] \
.get_corr_fiscal_pos(company)
else:
# Unset the fiscal position only if it was receipts (corrispettivi)
if self.property_account_position_id.corrispettivi:
Expand Down
1 change: 1 addition & 0 deletions l10n_it_corrispettivi/tests/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@

from . import test_corrispettivi
Loading

0 comments on commit 76ed5ea

Please sign in to comment.