mirror of
https://github.com/OCA/account-financial-tools.git
synced 2025-02-02 12:47:26 +02:00
[13.0][add][account_move_line_used_currency]
This commit is contained in:
2
account_move_line_used_currency/__init__.py
Normal file
2
account_move_line_used_currency/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
from . import models
|
||||
from .init_hooks import pre_init_hook
|
||||
13
account_move_line_used_currency/__manifest__.py
Normal file
13
account_move_line_used_currency/__manifest__.py
Normal file
@@ -0,0 +1,13 @@
|
||||
# Copyright 2021 ForgeFlow, S.L.
|
||||
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
|
||||
{
|
||||
"name": "Account Move Line Amount Currency",
|
||||
"version": "13.0.1.0.0",
|
||||
"author": "ForgeFlow, Odoo Community Association (OCA)",
|
||||
"category": "Accounts",
|
||||
"license": "LGPL-3",
|
||||
"depends": ["account"],
|
||||
"data": ["views/account_move_line_view.xml"],
|
||||
"pre_init_hook": "pre_init_hook",
|
||||
"installable": True,
|
||||
}
|
||||
55
account_move_line_used_currency/init_hooks.py
Normal file
55
account_move_line_used_currency/init_hooks.py
Normal file
@@ -0,0 +1,55 @@
|
||||
# Copyright 2021 ForgeFlow, S.L.
|
||||
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
|
||||
import logging
|
||||
|
||||
try:
|
||||
from openupgradelib import openupgrade
|
||||
except Exception:
|
||||
from odoo.tools import sql as openupgrade
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def pre_init_hook(cr):
|
||||
_logger.info(
|
||||
"Pre-creating column amount_used_currency for table " "account_move_line"
|
||||
)
|
||||
if not openupgrade.column_exists(cr, "account_move_ine", "amount_used_currency"):
|
||||
cr.execute(
|
||||
"""
|
||||
ALTER TABLE account_move_line
|
||||
ADD COLUMN amount_used_currency float;
|
||||
COMMENT ON COLUMN account_move_line.amount_used_currency
|
||||
IS 'Amount (Used Currency)';
|
||||
"""
|
||||
)
|
||||
_logger.info("Pre-creating column used_currency_id for table account_move_line")
|
||||
if not openupgrade.column_exists(cr, "account_move_ine", "used_currency_id"):
|
||||
cr.execute(
|
||||
"""
|
||||
ALTER TABLE account_move_line
|
||||
ADD COLUMN used_currency_id INTEGER;
|
||||
COMMENT ON COLUMN account_move_line.used_currency_id
|
||||
IS 'Used Currency';
|
||||
"""
|
||||
)
|
||||
_logger.info(
|
||||
"Pre-computing the value of amount_used_currency "
|
||||
"and used_currency_id to speed up the installation"
|
||||
)
|
||||
cr.execute(
|
||||
"""
|
||||
UPDATE account_move_line
|
||||
SET amount_used_currency = balance,
|
||||
used_currency_id = company_currency_id
|
||||
WHERE currency_id IS NULL;
|
||||
"""
|
||||
)
|
||||
cr.execute(
|
||||
"""
|
||||
UPDATE account_move_line
|
||||
SET amount_used_currency = amount_currency,
|
||||
used_currency_id = currency_id
|
||||
WHERE currency_id IS NOT NULL;
|
||||
"""
|
||||
)
|
||||
1
account_move_line_used_currency/models/__init__.py
Normal file
1
account_move_line_used_currency/models/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from . import account_move_line
|
||||
39
account_move_line_used_currency/models/account_move_line.py
Normal file
39
account_move_line_used_currency/models/account_move_line.py
Normal file
@@ -0,0 +1,39 @@
|
||||
# Copyright 2021 ForgeFlow, S.L.
|
||||
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
|
||||
|
||||
from odoo import api, fields, models
|
||||
|
||||
|
||||
class AccountMoveLine(models.Model):
|
||||
_inherit = "account.move.line"
|
||||
|
||||
amount_used_currency = fields.Monetary(
|
||||
string="Amount (Used Currency)",
|
||||
compute="_compute_used_currency",
|
||||
store=True,
|
||||
help="This amount is the foreign amount currency, if used, and the "
|
||||
"company currency, if no foreign currency is used. It's purpose"
|
||||
"is to allow reporting on journal items combining foreign "
|
||||
"and company currencies.",
|
||||
)
|
||||
used_currency_id = fields.Many2one(
|
||||
"res.currency",
|
||||
string="Used Currency",
|
||||
compute="_compute_used_currency",
|
||||
store=True,
|
||||
help="Used currency of the journal item. It is the foreign currency, "
|
||||
"or the company currency, where the foreign currency has not "
|
||||
"been used.",
|
||||
)
|
||||
|
||||
@api.depends(
|
||||
"currency_id", "company_currency_id", "debit", "credit", "amount_currency"
|
||||
)
|
||||
def _compute_used_currency(self):
|
||||
for rec in self:
|
||||
if rec.currency_id:
|
||||
rec.amount_used_currency = rec.amount_currency
|
||||
rec.used_currency_id = rec.currency_id
|
||||
else:
|
||||
rec.amount_used_currency = rec.balance
|
||||
rec.used_currency_id = rec.company_currency_id
|
||||
3
account_move_line_used_currency/readme/CONTRIBUTORS.rst
Normal file
3
account_move_line_used_currency/readme/CONTRIBUTORS.rst
Normal file
@@ -0,0 +1,3 @@
|
||||
* `ForgeFlow <https://www.forgeflow.com>`_:
|
||||
|
||||
* Jordi Ballester Alomar
|
||||
15
account_move_line_used_currency/readme/DESCRIPTION.rst
Normal file
15
account_move_line_used_currency/readme/DESCRIPTION.rst
Normal file
@@ -0,0 +1,15 @@
|
||||
This module introduces to journal items two new fields:
|
||||
|
||||
* Amount (Used Currency)
|
||||
|
||||
* Used Currency
|
||||
|
||||
When the jounal item is expressed in foreign currency, those fields will be
|
||||
computed with the amount in foregign currency. Otherwise the company currency
|
||||
and balance in company currency is filled in.
|
||||
|
||||
Those fields are useful for reporting purposes. For example, in an
|
||||
intercompany context company A (that operates using USD) sells to company B
|
||||
(that operates using EUR) in EUR, and you want to be able to compare the
|
||||
balances in a common account across the two companies, using the same
|
||||
currency EUR.
|
||||
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!-- Copyright 2021 ForgeFlow, S.L.
|
||||
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). -->
|
||||
<odoo>
|
||||
<record id="view_move_line_form" model="ir.ui.view">
|
||||
<field name="name">account.move.line.form</field>
|
||||
<field name="model">account.move.line</field>
|
||||
<field name="inherit_id" ref="account.view_move_line_form" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="amount_currency" position="after">
|
||||
<field name="amount_used_currency" />
|
||||
<field name="used_currency_id" />
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_move_line_tree" model="ir.ui.view">
|
||||
<field name="name">account.move.line.tree</field>
|
||||
<field name="model">account.move.line</field>
|
||||
<field name="inherit_id" ref="account.view_move_line_tree" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="company_currency_id" position="after">
|
||||
<field
|
||||
name="amount_used_currency"
|
||||
groups="base.group_multi_currency"
|
||||
optional="hide"
|
||||
/>
|
||||
<field
|
||||
name="used_currency_id"
|
||||
groups="base.group_multi_currency"
|
||||
optional="hide"
|
||||
/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -0,0 +1 @@
|
||||
../../../../account_move_line_used_currency
|
||||
6
setup/account_move_line_used_currency/setup.py
Normal file
6
setup/account_move_line_used_currency/setup.py
Normal file
@@ -0,0 +1,6 @@
|
||||
import setuptools
|
||||
|
||||
setuptools.setup(
|
||||
setup_requires=['setuptools-odoo'],
|
||||
odoo_addon=True,
|
||||
)
|
||||
Reference in New Issue
Block a user