2 changed files with 113 additions and 1 deletions
@ -0,0 +1,113 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# Copyright (C) 2017-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|||
# Author: Nikhil krishnan(<https://www.cybrosys.com>) |
|||
# you can modify it under the terms of the GNU LESSER |
|||
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. |
|||
# |
|||
# It is forbidden to publish, distribute, sublicense, or sell copies |
|||
# of the Software or modified copies of the Software. |
|||
# |
|||
# 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. |
|||
# |
|||
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE |
|||
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program. |
|||
# If not, see <https://www.gnu.org/licenses/>. |
|||
# |
|||
############################################################################## |
|||
|
|||
from odoo import fields, api, _, models |
|||
from odoo.exceptions import Warning |
|||
|
|||
|
|||
class AccountAccount(models.Model): |
|||
_inherit = 'account.account' |
|||
|
|||
@api.multi |
|||
def get_credit_debit_balance(self): |
|||
print "get_credit_debit_balance", self |
|||
for obj in self: |
|||
credit = 0 |
|||
debit = 0 |
|||
account_lines = self.env['account.move.line'].search([('account_id', '=', obj.id)]) |
|||
for line in account_lines: |
|||
credit += line.credit |
|||
debit += line.debit |
|||
obj.credit = credit |
|||
obj.debit = debit |
|||
obj.balance = debit - credit |
|||
|
|||
credit = fields.Float(string='Credit', compute='get_credit_debit_balance') |
|||
debit = fields.Float(string='Debit', compute='get_credit_debit_balance') |
|||
balance = fields.Float(string='Balance', compute='get_credit_debit_balance') |
|||
account_credit_limit = fields.Float(string='Credit Limit', Help="Credit Limit for this particular Account.") |
|||
|
|||
|
|||
class AccountMove(models.Model): |
|||
_inherit = "account.move" |
|||
|
|||
@api.model |
|||
def create(self, vals): |
|||
credit = 0 |
|||
debit = 0 |
|||
if "line_ids" in vals.keys(): |
|||
for line in vals['line_ids']: |
|||
if line[2]['credit']: |
|||
account = self.env['account.account'].browse(line[2]['account_id']) |
|||
account_lines = self.env['account.move.line'].search([('account_id', '=', account.id)]) |
|||
for lines in account_lines: |
|||
credit += lines.credit |
|||
debit += lines.debit |
|||
if account.account_credit_limit: |
|||
if (credit+line[2]['credit'] - debit) > account.account_credit_limit: |
|||
raise Warning(_('Limit will Exceed .! \n Making this transaction will exceed the limit ' |
|||
'defined for " %s " account') % account.name) |
|||
result = super(AccountMove, self).create(vals) |
|||
return result |
|||
|
|||
@api.multi |
|||
def write(self, vals): |
|||
if "line_ids" in vals.keys(): |
|||
for line in vals['line_ids']: |
|||
account_lines = self.env['account.move.line'].browse(line[1]) |
|||
if line[2]: |
|||
if 'account_id' in line[2]: |
|||
if line[2]['account_id']: |
|||
account = self.env['account.account'].browse(line[2]['account_id']) |
|||
if account.account_credit_limit: |
|||
if 'debit' in line[2]: |
|||
new_debit = line[2]['debit'] |
|||
else: |
|||
new_debit = account_lines.debit |
|||
if 'credit' in line[2]: |
|||
new_credit = line[2]['credit'] |
|||
else: |
|||
new_credit = account_lines.credit |
|||
if (account.credit + new_credit - new_debit - account.debit) > account.account_credit_limit: |
|||
raise Warning( |
|||
_('Limit will Exceed .! \n Making this transaction will exceed the limit ' |
|||
'defined for " %s " account') % account.name) |
|||
else: |
|||
account = account_lines.account_id |
|||
if account.account_credit_limit: |
|||
if 'debit' in line[2]: |
|||
if line[2]['debit']: |
|||
old_debit = account_lines.debit |
|||
if (account.credit - line[2]['debit'] - account.debit + old_debit) > account.account_credit_limit: |
|||
raise Warning( |
|||
_('Limit will Exceed .! \n Making this transaction will exceed the limit ' |
|||
'defined for " %s " account') % account.name) |
|||
if 'credit' in line[2]: |
|||
if line[2]['credit']: |
|||
old_credit = account_lines.credit |
|||
if (account.credit+line[2]['credit']-account.debit-old_credit) > account.account_credit_limit: |
|||
raise Warning( |
|||
_('Limit will Exceed .! \n Making this transaction will exceed the limit ' |
|||
'defined for " %s " account') % account.name) |
|||
result = super(AccountMove, self).write(vals) |
|||
return result |
Loading…
Reference in new issue