@ -0,0 +1,53 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU LESSER |
||||
|
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. |
||||
|
# |
||||
|
# 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 |
||||
|
# (LGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
from odoo import api, fields, models, _ |
||||
|
from odoo.exceptions import ValidationError |
||||
|
|
||||
|
|
||||
|
class AccountMove(models.Model): |
||||
|
"""Inherited model for checking the journal type in account.move.""" |
||||
|
_inherit = 'account.move' |
||||
|
|
||||
|
check_journal = fields.Boolean(string="Check Journal", |
||||
|
help="Compute field for check the current " |
||||
|
"record's journal type ", |
||||
|
compute="_compute_journal") |
||||
|
|
||||
|
def _compute_journal(self): |
||||
|
"""Compute field for showing validation error for restricted journal's |
||||
|
records""" |
||||
|
self.check_journal = True |
||||
|
for rec in self.line_ids: |
||||
|
if rec.full_reconcile_id: |
||||
|
payment = self.env['account.payment.register'].search( |
||||
|
[('id', '=', rec.full_reconcile_id.id)]) |
||||
|
if payment.journal_id.id in self.env.user.journal_ids.ids: |
||||
|
raise ValidationError(_('Restricted journals found.')) |
||||
|
if self.journal_id.id in self.env.user.journal_ids.ids: |
||||
|
raise ValidationError(_('Restricted journals found.')) |
||||
|
|
||||
|
@api.onchange('partner_id') |
||||
|
def _onchange_partner_id(self): |
||||
|
"""Function for hiding restricted journals from account.move.""" |
||||
|
if self.journal_id.id in self.env.user.journal_ids.ids: |
||||
|
self.journal_id = False |
||||
|
return super(AccountMove, self)._onchange_partner_id() |
@ -0,0 +1,62 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU LESSER |
||||
|
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. |
||||
|
# |
||||
|
# 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 |
||||
|
# (LGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
from odoo import api, models |
||||
|
|
||||
|
|
||||
|
class AccountPaymentRegister(models.TransientModel): |
||||
|
""" Adding allowed journal in functionality""" |
||||
|
|
||||
|
_inherit = 'account.payment.register' |
||||
|
|
||||
|
@api.depends('payment_type', 'company_id', 'can_edit_wizard') |
||||
|
def _compute_available_journal_ids(self): |
||||
|
""" |
||||
|
Check all available journals on register payment. |
||||
|
""" |
||||
|
for wizard in self: |
||||
|
if wizard.can_edit_wizard: |
||||
|
batch = wizard._get_batches()[0] |
||||
|
wizard.available_journal_ids = wizard._get_batch_available_journals( |
||||
|
batch) |
||||
|
else: |
||||
|
wizard.available_journal_ids = self.env[ |
||||
|
'account.journal'].search( |
||||
|
[('company_id', '=', wizard.company_id.id), |
||||
|
('type', 'in', ('bank', 'cash')), |
||||
|
('id', 'not in', self.env.user.journal_ids.ids)]) |
||||
|
|
||||
|
@api.model |
||||
|
def _get_batch_available_journals(self, batch_result): |
||||
|
""" Helper to compute the available journals based on the batch. |
||||
|
|
||||
|
:param batch_result: A batch returned by '_get_batches'. |
||||
|
:return: A recordset of account.journal. |
||||
|
""" |
||||
|
payment_type = batch_result['payment_values']['payment_type'] |
||||
|
company = batch_result['lines'].company_id |
||||
|
journals = self.env['account.journal'].search( |
||||
|
[('company_id', '=', company.id), ('type', 'in', ('bank', 'cash')), |
||||
|
('id', 'not in', self.env.user.journal_ids.ids)]) |
||||
|
if payment_type == 'inbound': |
||||
|
return journals.filtered('inbound_payment_method_line_ids') |
||||
|
else: |
||||
|
return journals.filtered('outbound_payment_method_line_ids') |
@ -1,7 +1,8 @@ |
|||||
<?xml version="1.0" encoding="utf-8"?> |
<?xml version="1.0" encoding="utf-8"?> |
||||
<odoo> |
<odoo> |
||||
|
<!-- New user group created for journal restriction--> |
||||
<record id="user_allowed_journal" model="res.groups"> |
<record id="user_allowed_journal" model="res.groups"> |
||||
<field name="name">Restrict Journals</field> |
<field name="name">Restrict Journals</field> |
||||
<field name="category_id" ref="base.module_category_usability"/> |
<field name="category_id" ref="base.module_category_usability"/> |
||||
</record> |
</record> |
||||
</odoo> |
</odoo> |
||||
|
Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 86 KiB |
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 87 KiB |
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 110 KiB |
After Width: | Height: | Size: 87 KiB |
After Width: | Height: | Size: 100 KiB |
After Width: | Height: | Size: 68 KiB |
After Width: | Height: | Size: 86 KiB |
After Width: | Height: | Size: 61 KiB |
After Width: | Height: | Size: 112 KiB |
After Width: | Height: | Size: 122 KiB |
After Width: | Height: | Size: 138 KiB |
After Width: | Height: | Size: 119 KiB |
After Width: | Height: | Size: 117 KiB |
After Width: | Height: | Size: 93 KiB |
Before Width: | Height: | Size: 152 KiB |
Before Width: | Height: | Size: 133 KiB |
Before Width: | Height: | Size: 86 KiB |
Before Width: | Height: | Size: 174 KiB |
Before Width: | Height: | Size: 112 KiB |
Before Width: | Height: | Size: 142 KiB |
Before Width: | Height: | Size: 107 KiB |
Before Width: | Height: | Size: 236 KiB |
After Width: | Height: | Size: 250 KiB |
After Width: | Height: | Size: 94 KiB |
After Width: | Height: | Size: 87 KiB |
@ -0,0 +1,16 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<odoo> |
||||
|
<!-- Added fields for check journal type --> |
||||
|
<record id="view_move_form" model="ir.ui.view"> |
||||
|
<field name="name">account.move.form.inherit.account.restrict.journal |
||||
|
</field> |
||||
|
<field name="model">account.move</field> |
||||
|
<field name="mode">extension</field> |
||||
|
<field name="inherit_id" ref="account.view_move_form"/> |
||||
|
<field name="arch" type="xml"> |
||||
|
<xpath expr="//field[@name='currency_id']" position="after"> |
||||
|
<field name="check_journal" invisible="1"/> |
||||
|
</xpath> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |