mirror of
https://github.com/OCA/account-financial-tools.git
synced 2025-02-02 12:47:26 +02:00
[ADD] Account_constraints module to implement accounting constraints that OpenERP doesn't wanted in the core.
This commit is contained in:
21
account_constraints/__init__.py
Normal file
21
account_constraints/__init__.py
Normal 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
|
||||||
50
account_constraints/__openerp__.py
Normal file
50
account_constraints/__openerp__.py
Normal 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,
|
||||||
|
}
|
||||||
85
account_constraints/account_constraints.py
Normal file
85
account_constraints/account_constraints.py
Normal 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']
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user