Stefan Rijnhart (Therp) has proposed merging lp:~therp-nl/banking-addons/ba70-bank_statement_tax into lp:banking-addons.
Requested reviews: Banking Addons Core Editors (banking-addons-team) For more details, see: https://code.launchpad.net/~therp-nl/banking-addons/ba70-bank_statement_tax/+merge/177376 Generalized forward port (does not depend on account_banking) of http://bazaar.launchpad.net/~therp-nl/banking-addons/ba61-apply_tax_from_statement_line/revision/162, with added support for fiscal positions. Thanks to BAS Solutions for funding part of the development! -- https://code.launchpad.net/~therp-nl/banking-addons/ba70-bank_statement_tax/+merge/177376 Your team Banking Addons Core Editors is requested to review the proposed merge of lp:~therp-nl/banking-addons/ba70-bank_statement_tax into lp:banking-addons.
=== added directory 'account_bank_statement_tax' === added file 'account_bank_statement_tax/__init__.py' --- account_bank_statement_tax/__init__.py 1970-01-01 00:00:00 +0000 +++ account_bank_statement_tax/__init__.py 2013-10-06 18:13:26 +0000 @@ -0,0 +1,1 @@ +import model === added file 'account_bank_statement_tax/__openerp__.py' --- account_bank_statement_tax/__openerp__.py 1970-01-01 00:00:00 +0000 +++ account_bank_statement_tax/__openerp__.py 2013-10-06 18:13:26 +0000 @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Copyright (C) 2012 - 2013 Therp BV (<http://therp.nl>). +# 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 <http://www.gnu.org/licenses/>. +# +############################################################################## + +{ + 'name': 'Apply a tax on bank statement lines', + 'version': '0.1', + 'license': 'AGPL-3', + 'author': 'Therp BV', + 'website': 'https://launchpad.net/banking-addons', + 'category': 'Banking addons', + 'depends': [ + 'account', + ], + 'data': [ + 'view/account_bank_statement.xml', + ], + 'description': ''' +Allow an (inclusive) tax to be set on a bank statement line. When the +statement is confirmed, the tax will be processed like a tax set on a +move line. + +This module is co-funded by BAS Solutions. + ''', + 'installable': True, +} === added directory 'account_bank_statement_tax/model' === added file 'account_bank_statement_tax/model/__init__.py' --- account_bank_statement_tax/model/__init__.py 1970-01-01 00:00:00 +0000 +++ account_bank_statement_tax/model/__init__.py 2013-10-06 18:13:26 +0000 @@ -0,0 +1,2 @@ +import account_bank_statement_line +import account_bank_statement === added file 'account_bank_statement_tax/model/account_bank_statement.py' --- account_bank_statement_tax/model/account_bank_statement.py 1970-01-01 00:00:00 +0000 +++ account_bank_statement_tax/model/account_bank_statement.py 2013-10-06 18:13:26 +0000 @@ -0,0 +1,109 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Copyright (C) 2012 - 2013 Therp BV (<http://therp.nl>). +# 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 <http://www.gnu.org/licenses/>. +# +############################################################################## + +from openerp.osv import orm +from openerp.tools import ustr + + +class AccountBankStatement(orm.Model): + _inherit = 'account.bank.statement' + + def get_tax_move_lines( + self, cr, uid, st_line, defaults, + company_currency_id, context=None): + """ + Process inclusive taxes on bank statement lines. + + @param st_line: browse record of the statement line + @param defaults: dictionary of default move line values. Usually + the same as the originating move line. + + return one or more serialized tax move lines and a set of values to + update the originating move line with, containing the new amount. + """ + + if not st_line.tax_id: + return False, False + tax_obj = self.pool.get('account.tax') + move_lines = [] + update_move_line = {} + base_amount = -defaults['credit'] or defaults['debit'] + tax_obj = self.pool.get('account.tax') + + fiscal_position = ( + st_line.partner_id.property_account_position + if st_line.partner_id and + st_line.partner_id.property_account_position + else False) + tax_ids = self.pool.get('account.fiscal.position').map_tax( + cr, uid, fiscal_position, [st_line.tax_id]) + taxes = tax_obj.browse(cr, uid, tax_ids, context=context) + + computed_taxes = tax_obj.compute_all( + cr, uid, taxes, base_amount, 1.00) + + for tax in computed_taxes['taxes']: + if tax['tax_code_id']: + if not update_move_line.get('tax_code_id'): + update_move_line['tax_code_id'] = tax['base_code_id'] + update_move_line['tax_amount'] = tax['base_sign'] * ( + computed_taxes.get('total', 0.0)) + # As the tax is inclusive, we need to correct the amount on the + # original move line + amount = computed_taxes.get('total', 0.0) + update_move_line['credit'] = ((amount < 0) and -amount) or 0.0 + update_move_line['debit'] = ((amount > 0) and amount) or 0.0 + + move_lines.append({ + 'move_id': defaults['move_id'], + 'name': defaults.get('name', '') + ' ' + ustr(tax['name'] or ''), + 'date': defaults.get('date', False), + 'partner_id': defaults.get('partner_id', False), + 'ref': defaults.get('ref', False), + 'statement_id': defaults.get('statement_id'), + 'tax_code_id': tax['tax_code_id'], + 'tax_amount': tax['tax_sign'] * tax.get('amount', 0.0), + 'account_id': tax.get('account_collected_id', defaults['account_id']), + 'credit': tax['amount'] < 0 and - tax['amount'] or 0.0, + 'debit': tax['amount'] > 0 and tax['amount'] or 0.0, + 'account_id': tax.get('account_collected_id', defaults['account_id']), + }) + + return move_lines, update_move_line + + def _prepare_bank_move_line( + self, cr, uid, st_line, move_id, amount, company_currency_id, + context=None): + """ + Overload of the original method from the account module. Create + the tax move lines. + """ + res = super(AccountBankStatement, self)._prepare_bank_move_line( + cr, uid, st_line, move_id, amount, company_currency_id, + context=context) + if st_line.tax_id: + tax_move_lines, counterpart_update_vals = self.get_tax_move_lines( + cr, uid, st_line, res, company_currency_id, context=context) + res.update(counterpart_update_vals) + for tax_move_line in tax_move_lines: + self.pool.get('account.move.line').create( + cr, uid, tax_move_line, context=context) + return res === added file 'account_bank_statement_tax/model/account_bank_statement_line.py' --- account_bank_statement_tax/model/account_bank_statement_line.py 1970-01-01 00:00:00 +0000 +++ account_bank_statement_tax/model/account_bank_statement_line.py 2013-10-06 18:13:26 +0000 @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Copyright (C) 2012 - 2013 Therp BV (<http://therp.nl>). +# 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 <http://www.gnu.org/licenses/>. +# +############################################################################## + +from openerp.osv import orm, fields + + +class AccountBankStatementLine(orm.Model): + _inherit = 'account.bank.statement.line' + + _columns = { + 'tax_id': fields.many2one( + 'account.tax', 'Tax', + domain=[('price_include','=', True)], + help="Apply an (inclusive) tax from the bank statement line", + ), + } === added directory 'account_bank_statement_tax/view' === added file 'account_bank_statement_tax/view/account_bank_statement.xml' --- account_bank_statement_tax/view/account_bank_statement.xml 1970-01-01 00:00:00 +0000 +++ account_bank_statement_tax/view/account_bank_statement.xml 2013-10-06 18:13:26 +0000 @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?> +<openerp> + <data> + <record id="view_bank_statement_form" model="ir.ui.view"> + <field name="name">Add tax to the embedded bank statement line form</field> + <field name="inherit_id" ref="account.view_bank_statement_form" /> + <field name="model">account.bank.statement</field> + <field name="arch" type="xml"> + <xpath expr="//field[@name='line_ids']/tree/field[@name='amount']" + position="after"> + <field name="tax_id" + domain="[('parent_id', '=', False), ('price_include', '=', True), ('type_tax_use', 'in', (amount and amount > 0 and ('sale', 'all') or ('purchase', 'all')))]" + /> + </xpath> + </field> + </record> + </data> +</openerp>
-- Mailing list: https://launchpad.net/~banking-addons-team Post to : [email protected] Unsubscribe : https://launchpad.net/~banking-addons-team More help : https://help.launchpad.net/ListHelp

