From b6773b949fcec90b9fd313b2e79200be99a3ac6a Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Sun, 1 Feb 2015 21:59:15 +0100 Subject: [PATCH] [ADD] account_invoice_currency: Migrated to 8.0 with new API --- .../account_invoice_currency/invoice.py | 173 ------------------ account_invoice_currency/README.rst | 30 +++ .../__init__.py | 3 +- .../__openerp__.py | 23 +-- .../i18n/account_invoice_currency.pot | 0 .../i18n/ca.po | 0 .../i18n/es.po | 2 +- .../i18n/pt.po | 0 .../i18n/pt_BR.po | 0 account_invoice_currency/models/__init__.py | 20 ++ .../models/account_invoice.py | 77 ++++++++ .../views}/account_invoice_view.xml | 0 12 files changed, 138 insertions(+), 190 deletions(-) delete mode 100644 __unported__/account_invoice_currency/invoice.py create mode 100644 account_invoice_currency/README.rst rename {__unported__/account_invoice_currency => account_invoice_currency}/__init__.py (92%) rename {__unported__/account_invoice_currency => account_invoice_currency}/__openerp__.py (70%) rename {__unported__/account_invoice_currency => account_invoice_currency}/i18n/account_invoice_currency.pot (100%) rename {__unported__/account_invoice_currency => account_invoice_currency}/i18n/ca.po (100%) rename {__unported__/account_invoice_currency => account_invoice_currency}/i18n/es.po (98%) rename {__unported__/account_invoice_currency => account_invoice_currency}/i18n/pt.po (100%) rename {__unported__/account_invoice_currency => account_invoice_currency}/i18n/pt_BR.po (100%) create mode 100644 account_invoice_currency/models/__init__.py create mode 100644 account_invoice_currency/models/account_invoice.py rename {__unported__/account_invoice_currency => account_invoice_currency/views}/account_invoice_view.xml (100%) diff --git a/__unported__/account_invoice_currency/invoice.py b/__unported__/account_invoice_currency/invoice.py deleted file mode 100644 index bd6c431f4..000000000 --- a/__unported__/account_invoice_currency/invoice.py +++ /dev/null @@ -1,173 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# Copyright (C) 2004-2011 -# Pexego Sistemas Informáticos. (http://pexego.es) All Rights Reserved -# Zikzakmedia S.L. (http://zikzakmedia.com) All Rights Reserved. -# -# 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.osv import fields -from openerp.osv import orm -import openerp.addons.decimal_precision as dp - - -class account_invoice(orm.Model): - """ - Inheritance of account invoice to add company currency amounts - """ - - _inherit = "account.invoice" - - def _get_invoice_line2(self, cr, uid, ids, context=None): - result = {} - for line in self.pool.get('account.invoice.line').browse( - cr, uid, ids, context=context): - result[line.invoice_id.id] = True - return result.keys() - - def _get_invoice_tax2(self, cr, uid, ids, context=None): - result = {} - for tax in self.pool.get('account.invoice.tax').browse( - cr, uid, ids, context=context): - result[tax.invoice_id.id] = True - return result.keys() - - def _cc_amount_all(self, cr, uid, ids, name, args, context=None): - res = {} - for invoice in self.browse(cr, uid, ids, context=context): - if invoice.company_id.currency_id == invoice.currency_id: - res[invoice.id] = { - 'cc_amount_untaxed': invoice.amount_untaxed, - 'cc_amount_tax': invoice.amount_tax, - 'cc_amount_total': invoice.amount_total, - } - else: - res[invoice.id] = { - 'cc_amount_untaxed': 0.0, - 'cc_amount_tax': 0.0, - 'cc_amount_total': 0.0, - } - - # It could be computed only in open or paid invoices with a - # generated account move - if invoice.move_id: - # Accounts to compute amount_untaxed - line_account = [] - for line in invoice.invoice_line: - if line.account_id.id not in line_account: - line_account.append(line.account_id.id) - - # Accounts to compute amount_tax - tax_account = [] - for line in invoice.tax_line: - if (line.account_id.id not in tax_account and - line.amount != 0): - tax_account.append(line.account_id.id) - - # The company currency amounts are the debit-credit - # amounts in the account moves - for line in invoice.move_id.line_id: - if line.account_id.id in line_account: - amt = line.debit - line.credit - res[invoice.id]['cc_amount_untaxed'] += amt - if line.account_id.id in tax_account: - amt = line.debit - line.credit - res[invoice.id]['cc_amount_tax'] += amt - if invoice.type in ('out_invoice', 'in_refund'): - res[invoice.id]['cc_amount_untaxed'] = \ - -res[invoice.id]['cc_amount_untaxed'] - res[invoice.id]['cc_amount_tax'] = \ - -res[invoice.id]['cc_amount_tax'] - res[invoice.id]['cc_amount_total'] = ( - res[invoice.id]['cc_amount_tax'] + - res[invoice.id]['cc_amount_untaxed'] - ) - return res - - _columns = { - 'cc_amount_untaxed': fields.function( - _cc_amount_all, - method=True, - digits_compute=dp.get_precision('Account'), - string='Company Cur. Untaxed', - help="Invoice untaxed amount in the company currency" - "(useful when invoice currency is different " - "from company currency).", - store={ - 'account.invoice': (lambda self, cr, uid, ids, c={}: ids, - ['invoice_line', - 'currency_id', - 'move_id'], - 20), - 'account.invoice.tax': (_get_invoice_tax2, None, 20), - 'account.invoice.line': (_get_invoice_line2, - ['price_unit', - 'invoice_line_tax_id', - 'quantity', 'discount'], - 20), - }, - multi='cc_all' - ), - - 'cc_amount_tax': fields.function( - _cc_amount_all, - method=True, - digits_compute=dp.get_precision('Account'), - string='Company Cur. Tax', - help="Invoice tax amount in the company currency " - "(useful when invoice currency is different " - "from company currency).", - store={ - 'account.invoice': (lambda self, cr, uid, ids, c={}: ids, - ['invoice_line', - 'currency_id', - 'move_id'], - 20), - 'account.invoice.tax': (_get_invoice_tax2, None, 20), - 'account.invoice.line': (_get_invoice_line2, - ['price_unit', - 'invoice_line_tax_id', - 'quantity', 'discount'], - 20), - }, - multi='cc_all' - ), - - 'cc_amount_total': fields.function( - _cc_amount_all, - method=True, - digits_compute=dp.get_precision('Account'), - string='Company Cur. Total', - help="Invoice total amount in the company currency " - "(useful when invoice currency is different from " - "company currency).", - store={ - 'account.invoice': (lambda self, cr, uid, ids, c={}: ids, - ['invoice_line', - 'currency_id', - 'move_id'], - 20), - 'account.invoice.tax': (_get_invoice_tax2, None, 20), - 'account.invoice.line': (_get_invoice_line2, - ['price_unit', - 'invoice_line_tax_id', - 'quantity', 'discount'], - 20), - }, - multi='cc_all'), - } diff --git a/account_invoice_currency/README.rst b/account_invoice_currency/README.rst new file mode 100644 index 000000000..49a0d8303 --- /dev/null +++ b/account_invoice_currency/README.rst @@ -0,0 +1,30 @@ +Account invoices in company currency +==================================== + +This module adds functional fields to show invoices in the company currency: +amount untaxed, amount taxed and amount total. + +These fields are shown in "Other information" tab in invoice form. + +Credits +======= + +Contributors +------------ + +* Jordi Esteve +* Joaquín Gutierrez +* Pedro M. Baeza + +Maintainer +---------- + +.. image:: http://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: http://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. \ No newline at end of file diff --git a/__unported__/account_invoice_currency/__init__.py b/account_invoice_currency/__init__.py similarity index 92% rename from __unported__/account_invoice_currency/__init__.py rename to account_invoice_currency/__init__.py index f6bc9890c..ad1603250 100644 --- a/__unported__/account_invoice_currency/__init__.py +++ b/account_invoice_currency/__init__.py @@ -2,7 +2,6 @@ ############################################################################## # # Copyright (C) 2004-2011 Zikzakmedia S.L. (http://zikzakmedia.com) -# All Rights Reserved. # # 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 @@ -18,4 +17,4 @@ # along with this program. If not, see . # ############################################################################## -from . import invoice +from . import models diff --git a/__unported__/account_invoice_currency/__openerp__.py b/account_invoice_currency/__openerp__.py similarity index 70% rename from __unported__/account_invoice_currency/__openerp__.py rename to account_invoice_currency/__openerp__.py index 740b039e6..6d3ea8708 100644 --- a/__unported__/account_invoice_currency/__openerp__.py +++ b/account_invoice_currency/__openerp__.py @@ -5,6 +5,7 @@ # Copyright (C) 2004-2011 Zikzakmedia S.L. (http://zikzakmedia.com) # Jordi Esteve # Copyright (c) 2013 Joaquin Gutierrez (http://www.gutierrezweb.es) +# Copyright (c) 2014-2015 Serv. Tecnol. Avanzados - Pedro M. Baeza # # 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 @@ -24,23 +25,17 @@ { 'name': "Company currency in invoices", 'version': "1.0", - 'author': "Zikzakmedia SL", - 'website': "http://www.zikzakmedia.com", + 'author': "Zikzakmedia SL, " + "Joaquín Gutierrez, " + "Serv. Tecnol. Avanzados - Pedro M. Baeza", + 'website': "http://www.zikzakmedia.com, " + "http://www.gutierrezweb.es, " + "http://www.serviciosbaeza.com", 'category': "Localisation / Accounting", - 'contributors': ['Joaquín Gutierrez'], - "description": """ -This Module adds functional fields to show invoice in the company currency -========================================================================== - -Amount Untaxed, Amount Tax and Amount Total invoice -fields in the company currency. -These fields are shown in "Other information" tab in invoice form. - """, 'license': "AGPL-3", 'depends': ["account"], 'data': [ - "account_invoice_view.xml" + "views/account_invoice_view.xml" ], - 'installable': False, - 'active': False, + 'installable': True, } diff --git a/__unported__/account_invoice_currency/i18n/account_invoice_currency.pot b/account_invoice_currency/i18n/account_invoice_currency.pot similarity index 100% rename from __unported__/account_invoice_currency/i18n/account_invoice_currency.pot rename to account_invoice_currency/i18n/account_invoice_currency.pot diff --git a/__unported__/account_invoice_currency/i18n/ca.po b/account_invoice_currency/i18n/ca.po similarity index 100% rename from __unported__/account_invoice_currency/i18n/ca.po rename to account_invoice_currency/i18n/ca.po diff --git a/__unported__/account_invoice_currency/i18n/es.po b/account_invoice_currency/i18n/es.po similarity index 98% rename from __unported__/account_invoice_currency/i18n/es.po rename to account_invoice_currency/i18n/es.po index 771caade6..4d0008fb1 100644 --- a/__unported__/account_invoice_currency/i18n/es.po +++ b/account_invoice_currency/i18n/es.po @@ -57,7 +57,7 @@ msgstr "" #. module: account_invoice_currency #: view:account.invoice:0 msgid "Amounts in company currency" -msgstr "Importes moneda empresa" +msgstr "Importes moneda compañía" #. module: account_invoice_currency #: model:ir.model,name:account_invoice_currency.model_account_invoice diff --git a/__unported__/account_invoice_currency/i18n/pt.po b/account_invoice_currency/i18n/pt.po similarity index 100% rename from __unported__/account_invoice_currency/i18n/pt.po rename to account_invoice_currency/i18n/pt.po diff --git a/__unported__/account_invoice_currency/i18n/pt_BR.po b/account_invoice_currency/i18n/pt_BR.po similarity index 100% rename from __unported__/account_invoice_currency/i18n/pt_BR.po rename to account_invoice_currency/i18n/pt_BR.po diff --git a/account_invoice_currency/models/__init__.py b/account_invoice_currency/models/__init__.py new file mode 100644 index 000000000..9b006a320 --- /dev/null +++ b/account_invoice_currency/models/__init__.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Copyright (C) 2004-2011 Zikzakmedia S.L. (http://zikzakmedia.com) +# +# 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 diff --git a/account_invoice_currency/models/account_invoice.py b/account_invoice_currency/models/account_invoice.py new file mode 100644 index 000000000..08d51a94a --- /dev/null +++ b/account_invoice_currency/models/account_invoice.py @@ -0,0 +1,77 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Copyright (C) 2004-2011 +# Pexego Sistemas Informáticos. (http://pexego.es) +# Zikzakmedia S.L. (http://zikzakmedia.com) +# +# 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, api +import openerp.addons.decimal_precision as dp + + +class AccountInvoice(models.Model): + _inherit = "account.invoice" + + @api.one + @api.depends('amount_total', 'amount_untaxed', 'amount_tax', + 'currency_id', 'move_id') + def _cc_amount_all(self): + if self.company_id.currency_id == self.currency_id: + self.cc_amount_untaxed = self.amount_untaxed + self.cc_amount_tax = self.amount_tax + self.cc_amount_total = self.amount_total + else: + self.cc_amount_untaxed = 0.0 + self.cc_amount_tax = 0.0 + self.cc_amount_total = 0.0 + # It could be computed only in open or paid invoices with a + # generated account move + if self.move_id: + # Accounts to compute amount_untaxed + line_accounts = set([x.account_id.id for x in + self.invoice_line]) + # Accounts to compute amount_tax + tax_accounts = set([x.account_id.id for x in + self.tax_line if x.amount != 0]) + # The company currency amounts are the debit-credit + # amounts in the account moves + for line in self.move_id.line_id: + if line.account_id.id in line_accounts: + self.cc_amount_untaxed += line.debit - line.credit + if line.account_id.id in tax_accounts: + self.cc_amount_tax += line.debit - line.credit + if self.type in ('out_invoice', 'in_refund'): + self.cc_amount_untaxed = -self.cc_amount_untaxed + self.cc_amount_tax = -self.cc_amount_tax + self.cc_amount_total = (self.cc_amount_tax + + self.cc_amount_untaxed) + + cc_amount_untaxed = fields.Float( + compute="_cc_amount_all", digits_compute=dp.get_precision('Account'), + string='Company Cur. Untaxed', + help="Invoice untaxed amount in the company currency (useful when " + "invoice currency is different from company currency).") + cc_amount_tax = fields.Float( + compute="_cc_amount_all", digits_compute=dp.get_precision('Account'), + string='Company Cur. Tax', + help="Invoice tax amount in the company currency (useful when invoice " + "currency is different from company currency).") + cc_amount_total = fields.Float( + compute="_cc_amount_all", digits_compute=dp.get_precision('Account'), + string='Company Cur. Total', + help="Invoice total amount in the company currency (useful when " + "invoice currency is different from company currency).") diff --git a/__unported__/account_invoice_currency/account_invoice_view.xml b/account_invoice_currency/views/account_invoice_view.xml similarity index 100% rename from __unported__/account_invoice_currency/account_invoice_view.xml rename to account_invoice_currency/views/account_invoice_view.xml