[ADD] Account_constraints module to implement accounting constraints that OpenERP doesn't wanted in the core.

This commit is contained in:
Joel Grand-Guillaume
2013-01-09 12:09:27 +01:00
parent 6a57ffde78
commit e13b4a37cb
3 changed files with 156 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Author Joel Grand-Guillaume. Copyright 2012 Camptocamp SA
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import account_constraints

View File

@@ -0,0 +1,50 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Author Joel Grand-Guillaume. Copyright 2012 Camptocamp SA
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
{
'name' : 'Account Contraints',
'version' : '1',
'depends' : [
'account',
],
'author' : 'Camptocamp',
'category': 'Generic Modules/Accounting',
'description': """
Add contraints in the accounting module of OpenERP to avoid bad usage by users that lead
to corrupted datas. This is based on our experiences and legal state of the art in other
software.
Summary of constraints are:
* Add a constraint on account move: you cannot pickup a date that is not in the fiscal year of the concerned period
* For manual entries when multicurrency:
a - Validation on the use of the 'Currency' and 'Currency Amount' fields as it is possible to enter one without the other
b - Validation to prevent a Credit amount with a positive 'Currency Amount', or a Debit with a negative 'Currency Amount'
* Add a check on entries that user cannot provide a secondary currency if the same than the company one.
""",
'website': 'http://www.camptocamp.com',
'init_xml': [],
'update_xml': [],
'demo_xml': [],
'installable': True,
'active': False,
}

View File

@@ -0,0 +1,85 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Author Joel Grand-Guillaume. Copyright 2012 Camptocamp SA
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import time
from openerp.osv import fields, osv
from openerp.tools.translate import _
class AccountMove(osv.osv):
_inherit = "account.move"
def _check_fiscal_year(self, cursor, user, ids):
for move in self.browse(cursor, user, ids):
date_start = move.period_id.fiscalyear_id.date_start
date_stop = move.period_id.fiscalyear_id.date_stop
if move.date < date_start or move.date > date_stop:
return False
return True
_constraints = [
(_check_fiscal_year,
'You cannot create entries with date not in the fiscal year of the chosen period',
['line_id','']),
]
class AccountMoveLine(osv.osv):
_inherit='account.move.line'
def _check_currency_and_amount(self, cr, uid, ids, context=None):
for l in self.browse(cr, uid, ids, context=context):
if (l.currency_id and not l.amount_currency) or (not l.currency_id and l.amount_currency):
return False
return True
def _check_currency_amount(self, cr, uid, ids, context=None):
for l in self.browse(cr, uid, ids, context=context):
if l.amount_currency:
if (l.amount_currency > 0.0 and l.credit > 0.0) or (l.amount_currency < 0.0 and l.debit > 0.0):
return False
return True
def _check_currency_company(self, cr, uid, ids, context=None):
for l in self.browse(cr, uid, ids, context=context):
if l.currency_id.id == l.company_id.currency_id.id:
return False
return True
_constraints = [
(
_check_currency_and_amount,
"You cannot create journal items with a secondary currency without recording \
both 'currency' and 'amount currency' field.",
['currency_id','amount_currency']
),
(
_check_currency_amount,
'The amount expressed in the secondary currency must be positif when journal item\
are debit and negatif when journal item are credit.',
['amount_currency']
),
(
_check_currency_company,
"You can't provide a secondary currency if the same than the company one." ,
['currency_id']
),
]