@ -0,0 +1,49 @@ |
|||||
|
.. image:: https://img.shields.io/badge/licence-LGPL--3-blue.svg |
||||
|
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html |
||||
|
:alt: License: LGPL-3 |
||||
|
|
||||
|
Legal Case Management |
||||
|
======================= |
||||
|
This module helps to manage all process of a legal case management firm. |
||||
|
In this way we can register a case and add their evidence, trial and payment also. |
||||
|
Assign the lawyers based on the wages and per case |
||||
|
|
||||
|
Configuration |
||||
|
============= |
||||
|
The user should be added to the security group: Admin(Settings/Users/Other/Case Management) inorder to get access to the new menu. |
||||
|
|
||||
|
Company |
||||
|
------- |
||||
|
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__ |
||||
|
|
||||
|
License |
||||
|
------- |
||||
|
General Public License, Version 3 (LGPL v3). |
||||
|
(https://www.odoo.com/documentation/user/16.0/legal/licenses/licenses.html) |
||||
|
|
||||
|
Credits |
||||
|
------- |
||||
|
Developer: LAJINA K V @cybrosys, |
||||
|
MOHAMMED DILSHAD TK @cybrosys |
||||
|
|
||||
|
Contacts |
||||
|
-------- |
||||
|
* Mail Contact : odoo@cybrosys.com |
||||
|
* Website : https://cybrosys.com |
||||
|
|
||||
|
Bug Tracker |
||||
|
----------- |
||||
|
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. |
||||
|
|
||||
|
Maintainer |
||||
|
========== |
||||
|
.. image:: https://cybrosys.com/images/logo.png |
||||
|
:target: https://cybrosys.com |
||||
|
|
||||
|
This module is maintained by Cybrosys Technologies. |
||||
|
|
||||
|
For support and more information, please visit `Our Website <https://cybrosys.com/>`__ |
||||
|
|
||||
|
Further information |
||||
|
=================== |
||||
|
HTML Description: `<static/description/index.html>`__ |
@ -0,0 +1,25 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################### |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: LAJINA.K.V (odoo@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 . import controllers |
||||
|
from . import models |
||||
|
from . import report |
||||
|
from . import wizard |
@ -0,0 +1,73 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################### |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: LAJINA.K.V (odoo@cybrosys.com) |
||||
|
# MOHAMMED DILSHAD TK (odoo@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/>. |
||||
|
# |
||||
|
############################################################################### |
||||
|
{ |
||||
|
'name': "Legal Case Management", |
||||
|
'version': '16.0.1.0.0', |
||||
|
'category': 'Industries', |
||||
|
'author': 'Cybrosys Techno Solutions', |
||||
|
'company': 'Cybrosys Techno Solutions', |
||||
|
'maintainer': 'Cybrosys Techno Solutions', |
||||
|
'website': 'https://www.cybrosys.com', |
||||
|
'summary': 'Legal Case Management for odoo 16. This module will helps ' |
||||
|
'to manage a legal case management firm. This will allows to ' |
||||
|
'manage all details of case sucha as evidence, trial and overall' |
||||
|
' payment of a case', |
||||
|
'description': 'This module helps to manage all process of a legal case' |
||||
|
' management firm.In this way we can register a case and add' |
||||
|
'their evidence, trial and payment also. Assign the lawyers' |
||||
|
' based on the wages and per case ', |
||||
|
'depends': ['base', 'hr', 'contacts', 'account', 'website', 'mail'], |
||||
|
'data': [ |
||||
|
'security/legal_case_management_groups.xml', |
||||
|
'security/legal_case_management_security.xml', |
||||
|
'security/ir.model.access.csv', |
||||
|
'data/case_register_menu.xml', |
||||
|
'data/ir_sequence_data.xml', |
||||
|
'wizard/invoice_payment_views.xml', |
||||
|
'wizard/full_settlement_views.xml', |
||||
|
'wizard/legal_case_report_views.xml', |
||||
|
'views/legal_case_management_menus.xml', |
||||
|
'report/case_registration_reports.xml', |
||||
|
'report/case_registration_templates.xml', |
||||
|
'report/case_registration_form_report_templates.xml', |
||||
|
'report/legal_evidence_templates.xml', |
||||
|
'report/legal_trial_report_templates.xml', |
||||
|
'views/case_registration_views.xml', |
||||
|
'views/hr_employee_views.xml', |
||||
|
'views/res_partner_views.xml', |
||||
|
'views/legal_evidence_views.xml', |
||||
|
'views/legal_trial_views.xml', |
||||
|
'views/legal_court_views.xml', |
||||
|
'views/case_category_views.xml', |
||||
|
'views/case_register_portal_template.xml', |
||||
|
'views/case_register_template.xml', |
||||
|
'views/account_move_views.xml', |
||||
|
'views/thanks_template.xml', |
||||
|
'views/legal_case_page_template.xml' |
||||
|
], |
||||
|
'images': ['static/description/banner.png'], |
||||
|
'license': 'LGPL-3', |
||||
|
'installable': True, |
||||
|
'auto_install': False, |
||||
|
'application': True |
||||
|
} |
@ -0,0 +1,23 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################### |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: Lajina (odoo@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 . import legal_case_management |
||||
|
from . import portal |
@ -0,0 +1,56 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################### |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: Lajina (odoo@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/>. |
||||
|
# |
||||
|
############################################################################### |
||||
|
import base64 |
||||
|
|
||||
|
from odoo import http |
||||
|
from odoo.http import request |
||||
|
|
||||
|
|
||||
|
class LegalCaseController(http.Controller): |
||||
|
"""Legal Case Controller""" |
||||
|
@http.route('/legal/case/register', type="http", auth="user", website=True) |
||||
|
def legal_case_register(self): |
||||
|
""" Returns Case Registration Form""" |
||||
|
return request.render( |
||||
|
'legal_case_management.legal_case_register_view') |
||||
|
|
||||
|
@http.route('/submit/create/case', type='http', website=True, auth='user') |
||||
|
def create_case_register(self, **kw): |
||||
|
"""Creation of Cases""" |
||||
|
attached_files = request.httprequest.files.getlist('attachments') |
||||
|
case = request.env['case.registration'].sudo().create({ |
||||
|
'client_id': request.env.user.partner_id.id, |
||||
|
'email': request.env.user.partner_id.email, |
||||
|
'contact_no': kw['contact'], |
||||
|
'description': kw['description'], |
||||
|
'case_category_id': int(kw['case_category']), |
||||
|
'company_id': request.env.company.id, |
||||
|
}) |
||||
|
for attachment in attached_files: |
||||
|
request.env['ir.attachment'].sudo().create({ |
||||
|
'name': attachment.filename, |
||||
|
'res_model': 'case.registration', |
||||
|
'res_id': case.id, |
||||
|
'type': 'binary', |
||||
|
'datas': base64.b64encode(attachment.read()) |
||||
|
}) |
||||
|
return request.render("legal_case_management.thanks_page") |
@ -0,0 +1,75 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################### |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: Lajina (odoo@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.addons.portal.controllers.portal import CustomerPortal |
||||
|
|
||||
|
from odoo import http |
||||
|
from odoo.http import request |
||||
|
|
||||
|
|
||||
|
class PortalLegalCase(CustomerPortal): |
||||
|
"""Customer Portal""" |
||||
|
|
||||
|
def _prepare_home_portal_values(self, counters): |
||||
|
"""Returns the portal values""" |
||||
|
values = super()._prepare_home_portal_values(counters) |
||||
|
if 'case_count' in counters: |
||||
|
values['case_count'] = request.env[ |
||||
|
'case.registration'].sudo().search_count( |
||||
|
[('state', '!=', 'invoiced'), |
||||
|
('client_id.id', '=', request.env.user.partner_id.id)]) \ |
||||
|
if request.env['case.registration'].sudo(). \ |
||||
|
check_access_rights('read', raise_exception=False) else 0 |
||||
|
return values |
||||
|
|
||||
|
@http.route('/my/legal/case', |
||||
|
type='http', auth="user", website=True) |
||||
|
def legal_cases(self): |
||||
|
"""Returns the case Records""" |
||||
|
records = request.env['case.registration'].sudo(). \ |
||||
|
search([('client_id', '=', request.env.user.partner_id.id)]) |
||||
|
values = { |
||||
|
'records': records, |
||||
|
'page_name': 'case' |
||||
|
} |
||||
|
return request.render( |
||||
|
"legal_case_management.portal_my_legal_case_requests", |
||||
|
values) |
||||
|
|
||||
|
@http.route(['/my/cases/<int:case_id>'], type='http', auth="public", |
||||
|
website=True) |
||||
|
def portal_my_details_detail(self, case_id): |
||||
|
""" Returns the Portal details""" |
||||
|
case_record = request.env['case.registration'].sudo().browse(case_id) |
||||
|
evidences = request.env['legal.evidence'].sudo().search( |
||||
|
[('client_id', '=', case_record.client_id.id), |
||||
|
('case_id', '=', case_record.id)]) |
||||
|
trials = request.env['legal.trial'].sudo().search( |
||||
|
[('client_id', '=', case_record.client_id.id), |
||||
|
('case_id', '=', case_record.id)]) |
||||
|
records = { |
||||
|
'case_record': case_record, |
||||
|
'evidence': evidences, |
||||
|
'trial': trials, |
||||
|
'page_name': 'case' |
||||
|
} |
||||
|
return request.render("legal_case_management.portal_legal_case_page", |
||||
|
records) |
@ -0,0 +1,12 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<odoo> |
||||
|
<data noupdate="1"> |
||||
|
<!-- Website Menu For Case Registration--> |
||||
|
<record id="menu_case_register" model="website.menu"> |
||||
|
<field name="name">Legal Case</field> |
||||
|
<field name="url">/legal/case/register</field> |
||||
|
<field name="parent_id" ref="website.main_menu"/> |
||||
|
<field name="sequence" type="int">30</field> |
||||
|
</record> |
||||
|
</data> |
||||
|
</odoo> |
@ -0,0 +1,24 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<odoo> |
||||
|
<!-- Generate Sequence Numbers For Case Registration, Evidence And Trial--> |
||||
|
<data noupdate="1"> |
||||
|
<record id="sequence_case_registration" model="ir.sequence"> |
||||
|
<field name="name">Case Sequence</field> |
||||
|
<field name="code">case_registration</field> |
||||
|
<field name="prefix">CASE000</field> |
||||
|
<field name="company_id" eval="False"/> |
||||
|
</record> |
||||
|
<record id="sequence_case_evidence" model="ir.sequence"> |
||||
|
<field name="name">Case Evidence Sequence</field> |
||||
|
<field name="code">case_evidence</field> |
||||
|
<field name="prefix">EV000</field> |
||||
|
<field name="company_id" eval="False"/> |
||||
|
</record> |
||||
|
<record id="sequence_legal_trial" model="ir.sequence"> |
||||
|
<field name="name">Legal Case Sequence</field> |
||||
|
<field name="code">legal_trial</field> |
||||
|
<field name="prefix">TR000</field> |
||||
|
<field name="company_id" eval="False"/> |
||||
|
</record> |
||||
|
</data> |
||||
|
</odoo> |
@ -0,0 +1,7 @@ |
|||||
|
## Module <legal_case_management> |
||||
|
|
||||
|
#### 27.07.2023 |
||||
|
#### Version 16.0.1.0.0 |
||||
|
#### ADD |
||||
|
|
||||
|
- Initial commit for Legal Case Management |
@ -0,0 +1,31 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################### |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: MOHAMMED DILSHAD TK (odoo@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 . import account_move |
||||
|
from . import case_category |
||||
|
from . import case_registration |
||||
|
from . import case_sitting |
||||
|
from . import case_victim |
||||
|
from . import hr_employee |
||||
|
from . import legal_court |
||||
|
from . import legal_evidence |
||||
|
from . import legal_trial |
||||
|
from . import res_partner |
@ -0,0 +1,30 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################### |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: MOHAMMED DILSHAD TK (odoo@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 fields, models |
||||
|
|
||||
|
|
||||
|
class AccountMove(models.Model): |
||||
|
"""Inherit account move""" |
||||
|
_inherit = 'account.move' |
||||
|
|
||||
|
case_ref = fields.Char(readonly=True, string='Case Reference', |
||||
|
help='It is used to identify the case reference') |
@ -0,0 +1,44 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################### |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: MOHAMMED DILSHAD TK (odoo@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 UserError |
||||
|
|
||||
|
|
||||
|
class CaseCategory(models.Model): |
||||
|
"""Create case category""" |
||||
|
_name = 'case.category' |
||||
|
_description = 'Case Category' |
||||
|
|
||||
|
name = fields.Char("Case Category", required=True, |
||||
|
help='Name of the case category') |
||||
|
|
||||
|
@api.ondelete(at_uninstall=False) |
||||
|
def _unlink_except_draft_or_cancel(self): |
||||
|
""" Prevent the deletion of a case category if it is used in any |
||||
|
cases. """ |
||||
|
cases = self.sudo().env['case.registration'].search_count([ |
||||
|
('case_category_id', 'in', self.ids), |
||||
|
('state', 'not in', ['draft']) |
||||
|
]) |
||||
|
if cases: |
||||
|
raise UserError(_("You can not delete a case category," |
||||
|
" because it is used in case")) |
@ -0,0 +1,317 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################### |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: MOHAMMED DILSHAD TK (odoo@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 UserError, ValidationError |
||||
|
|
||||
|
|
||||
|
class CaseRegistration(models.Model): |
||||
|
"""Case registration and invoice for trials and case""" |
||||
|
_name = 'case.registration' |
||||
|
_inherit = ['mail.thread', 'mail.activity.mixin'] |
||||
|
_description = 'Case Register' |
||||
|
|
||||
|
name = fields.Char('Case No', readonly=True, default=lambda self: _('New'), |
||||
|
help='Case number') |
||||
|
client_id = fields.Many2one('res.partner', string='Client', required=True, |
||||
|
help='Clients in the law firm') |
||||
|
email = fields.Char(related="client_id.email", required=True, string='Email', |
||||
|
help='Email of client', readonly=False) |
||||
|
contact_no = fields.Char(related="client_id.phone", required=True, |
||||
|
string='Contact No', readonly=False) |
||||
|
payment_method = fields.Selection(selection=[ |
||||
|
('trial', "Per Trial"), |
||||
|
('case', "Per Case"), |
||||
|
('out_of_court', "Out of Court")], string='Payment Method', |
||||
|
states={'draft': [('invisible', True)]}) |
||||
|
lawyer_wage = fields.Char(invisible=True) |
||||
|
lawyer_id = fields.Many2one('hr.employee', string='Lawyer', |
||||
|
domain=[('is_lawyer', '=', True), |
||||
|
('parent_id', '=', False)], |
||||
|
help="Lawyers in the law firm") |
||||
|
lawyer_unavailable = fields.Boolean(default=False) |
||||
|
junior_lawyer_id = fields.Many2one('hr.employee', string='Junior Lawyer', |
||||
|
help='Juniors lawyers in the law firm') |
||||
|
court_id = fields.Many2one('legal.court', string='Court', |
||||
|
help="Name of courts") |
||||
|
court_no_required = fields.Boolean(help='Makes court as Not required field', |
||||
|
default=True) |
||||
|
judge_id = fields.Many2one(related='court_id.judge_id', string='Judge', |
||||
|
store=True, help="Available judges") |
||||
|
register_date = fields.Date('Registration Date', required=True, |
||||
|
default=fields.Date.today, |
||||
|
help='Case registration date') |
||||
|
start_date = fields.Date('Start Date', default=fields.Date.today) |
||||
|
end_date = fields.Date('End Date') |
||||
|
case_category_id = fields.Many2one('case.category', 'Case Category', |
||||
|
required=True, |
||||
|
help="Category of case") |
||||
|
description = fields.Html('Description', required=True, |
||||
|
help="Case Details") |
||||
|
opposition_name = fields.Char('Name', help="Name of Opposite Party") |
||||
|
opposite_lawyer = fields.Char('Lawyer', help="Name of opposite Lawyer") |
||||
|
opp_party_contact = fields.Char('Contact No') |
||||
|
victim_ids = fields.One2many('case.victim', 'registration_id', |
||||
|
help="List of Victims") |
||||
|
sitting_detail_ids = fields.One2many('case.sitting', 'case_id') |
||||
|
evidence_count = fields.Integer(compute='_compute_evidence_count', |
||||
|
help="Count of evidence") |
||||
|
case_attachment_count = fields.Integer( |
||||
|
compute='_compute_case_attachment_count', |
||||
|
help="Count of attachments") |
||||
|
trial_count = fields.Integer(compute='_compute_trial_count', |
||||
|
help="Count of trials") |
||||
|
invoice_count = fields.Integer(compute='_compute_invoice_count', |
||||
|
help="Count of Invoices") |
||||
|
state = fields.Selection( |
||||
|
[('draft', 'Draft'), ('in_progress', 'In Progress'), |
||||
|
('invoiced', 'Invoiced'), ('reject', 'Reject'), |
||||
|
('won', 'Won'), ('lost', 'Lost'), ('cancel', 'Cancel')], |
||||
|
string='State', default='draft') |
||||
|
company_id = fields.Many2one("res.company", string="Company", |
||||
|
default=lambda self: self.env.company, |
||||
|
readonly=True) |
||||
|
|
||||
|
@api.onchange('payment_method') |
||||
|
def _onchange_payment_method(self): |
||||
|
"""Court not required based on, |
||||
|
- if payment method = out of court |
||||
|
- if invoice through full settlement""" |
||||
|
if self.payment_method == 'out_of_court': |
||||
|
self.court_no_required = False |
||||
|
else: |
||||
|
self.court_no_required = True |
||||
|
|
||||
|
@api.onchange('lawyer_id') |
||||
|
def _onchange_lawyer_id(self): |
||||
|
"""lawyer unavailable warning and lists his juniors""" |
||||
|
cases = self.sudo().search( |
||||
|
[('lawyer_id', '=', self.lawyer_id.id), ('state', '!=', 'draft'), |
||||
|
('id', '!=', self._origin.id)]) |
||||
|
self.lawyer_id.not_available = False |
||||
|
self.lawyer_unavailable = False |
||||
|
if self.lawyer_id: |
||||
|
for case in cases: |
||||
|
if case.end_date and case.end_date <= fields.Date.today(): |
||||
|
self.lawyer_id.not_available = False |
||||
|
self.lawyer_unavailable = False |
||||
|
else: |
||||
|
self.lawyer_id.not_available = True |
||||
|
self.lawyer_unavailable = True |
||||
|
break |
||||
|
if self.lawyer_unavailable: |
||||
|
return { |
||||
|
'warning': { |
||||
|
'title': 'Lawyer Unavailable', |
||||
|
'message': 'The selected lawyer is unavailable ' |
||||
|
'at this time.' |
||||
|
'You can choose his juniors.', |
||||
|
}, |
||||
|
'domain': { |
||||
|
'junior_lawyer_id': [('parent_id', '=', |
||||
|
self.lawyer_id.id), |
||||
|
('is_lawyer', '=', True)], |
||||
|
}, |
||||
|
} |
||||
|
|
||||
|
@api.ondelete(at_uninstall=False) |
||||
|
def _unlink_except_draft_or_cancel(self): |
||||
|
""" Records can be deleted only draft and cancel state""" |
||||
|
case_records = self.filtered( |
||||
|
lambda x: x.state not in ['draft', 'cancel']) |
||||
|
if case_records: |
||||
|
raise UserError(_( |
||||
|
"You can not delete a Approved Case." |
||||
|
" You must first cancel it.")) |
||||
|
|
||||
|
def action_full_settlement(self): |
||||
|
"""Returns the full settlement view""" |
||||
|
self.court_no_required = False |
||||
|
return { |
||||
|
'type': 'ir.actions.act_window', |
||||
|
'res_model': 'full.settlement', |
||||
|
'view_mode': 'form', |
||||
|
'target': 'new', |
||||
|
'context': {'default_case_id': self.id} |
||||
|
} |
||||
|
|
||||
|
def action_cancel(self): |
||||
|
"""State changed to cancel""" |
||||
|
self.write({'state': 'cancel'}) |
||||
|
self.lawyer_id.not_available = False |
||||
|
self.end_date = fields.Date.today() |
||||
|
|
||||
|
def action_reset_to_draft(self): |
||||
|
""" Stage reset to draft""" |
||||
|
self.write({'state': 'draft'}) |
||||
|
|
||||
|
def action_confirm(self): |
||||
|
"""Confirmation of Cases""" |
||||
|
if self.name == 'New': |
||||
|
self.name = self.env['ir.sequence']. \ |
||||
|
next_by_code('case_registration') or 'New' |
||||
|
self.state = 'in_progress' |
||||
|
|
||||
|
def action_reject(self): |
||||
|
"""Rejection of Cases""" |
||||
|
self.write({'state': 'reject'}) |
||||
|
|
||||
|
def validation_case_registration(self): |
||||
|
"""Show Validation Until The Lawyer Details are Filled""" |
||||
|
if not self.lawyer_id: |
||||
|
raise ValidationError(_( |
||||
|
"""Please assign a lawyer for the case""" |
||||
|
)) |
||||
|
|
||||
|
def action_invoice(self): |
||||
|
"""button method to show invoice wizard""" |
||||
|
if not self.payment_method: |
||||
|
raise ValidationError(_( |
||||
|
"""Please select a payment method for create invoice""" |
||||
|
)) |
||||
|
if self.payment_method == 'case': |
||||
|
self.lawyer_wage = self.lawyer_id.wage_per_case |
||||
|
elif self.payment_method == 'trial': |
||||
|
self.lawyer_wage = self.lawyer_id.wage_per_trial |
||||
|
else: |
||||
|
self.lawyer_wage = '' |
||||
|
self.validation_case_registration() |
||||
|
return { |
||||
|
'name': 'Create Invoice', |
||||
|
'type': 'ir.actions.act_window', |
||||
|
'res_model': 'invoice.payment', |
||||
|
'view_mode': 'form', |
||||
|
'target': 'new', |
||||
|
'context': {'default_case_id': self.id, |
||||
|
'default_cost': self.lawyer_wage} |
||||
|
} |
||||
|
|
||||
|
def action_evidence(self): |
||||
|
"""Button to add evidence""" |
||||
|
return { |
||||
|
'type': 'ir.actions.act_window', |
||||
|
'name': 'Evidence', |
||||
|
'view_mode': 'form', |
||||
|
'res_model': 'legal.evidence', |
||||
|
'context': {'default_case_id': self.id, |
||||
|
'default_client_id': self.client_id.id} |
||||
|
} |
||||
|
|
||||
|
def get_attachments(self): |
||||
|
"""Show attachments in smart tab which added in chatter""" |
||||
|
return { |
||||
|
'type': 'ir.actions.act_window', |
||||
|
'name': 'Attachment', |
||||
|
'view_mode': 'kanban,form', |
||||
|
'res_model': 'ir.attachment', |
||||
|
'domain': [('res_id', '=', self.id), |
||||
|
('res_model', '=', self._name)], |
||||
|
'context': {'create': False} |
||||
|
} |
||||
|
|
||||
|
def _compute_case_attachment_count(self): |
||||
|
"""Compute the count of attachments""" |
||||
|
for attachment in self: |
||||
|
attachment.case_attachment_count = self.env['ir.attachment']. \ |
||||
|
sudo().search_count([('res_id', '=', self.id), |
||||
|
('res_model', '=', self._name)]) |
||||
|
|
||||
|
def action_won(self): |
||||
|
"""Changed to won state""" |
||||
|
self.state = 'won' |
||||
|
self.end_date = fields.Date.today() |
||||
|
self.lawyer_id.not_available = False |
||||
|
|
||||
|
def action_lost(self): |
||||
|
"""Changed to lost state""" |
||||
|
self.state = 'lost' |
||||
|
self.end_date = fields.Date.today() |
||||
|
self.lawyer_id.not_available = False |
||||
|
|
||||
|
def _compute_evidence_count(self): |
||||
|
"""Computes the count of evidence""" |
||||
|
for case in self: |
||||
|
case.evidence_count = case.env['legal.evidence'].search_count( |
||||
|
[('client_id', '=', self.client_id.id), |
||||
|
('case_id', '=', self.id)]) |
||||
|
|
||||
|
def _compute_trial_count(self): |
||||
|
"""Compute the count of trials""" |
||||
|
for case in self: |
||||
|
case.trial_count = case.env['legal.trial']. \ |
||||
|
search_count([('client_id', '=', self.client_id.id), |
||||
|
('case_id', '=', self.id)]) |
||||
|
|
||||
|
def action_trial(self): |
||||
|
"""Button to add trial""" |
||||
|
self.validation_case_registration() |
||||
|
return { |
||||
|
'type': 'ir.actions.act_window', |
||||
|
'name': 'Trial', |
||||
|
'view_mode': 'form', |
||||
|
'res_model': 'legal.trial', |
||||
|
'context': {'default_case_id': self.id, |
||||
|
'default_client_id': self.client_id.id} |
||||
|
} |
||||
|
|
||||
|
def _compute_invoice_count(self): |
||||
|
"""Calculate the count of invoices""" |
||||
|
for inv in self: |
||||
|
inv.invoice_count = self.env['account.move'].search_count( |
||||
|
[('case_ref', '=', self.name)]) |
||||
|
|
||||
|
def get_invoice(self): |
||||
|
"""Get the corresponding invoices""" |
||||
|
return { |
||||
|
'name': 'Case Invoice', |
||||
|
'type': 'ir.actions.act_window', |
||||
|
'view_mode': 'tree,form', |
||||
|
'res_model': 'account.move', |
||||
|
'domain': [('case_ref', '=', self.name)], |
||||
|
} |
||||
|
|
||||
|
def get_evidence(self): |
||||
|
"""Returns the evidences""" |
||||
|
evidence_ids_list = self.env['legal.evidence']. \ |
||||
|
search([('client_id', '=', self.client_id.id), |
||||
|
('case_id', '=', self.id)]).ids |
||||
|
return { |
||||
|
'type': 'ir.actions.act_window', |
||||
|
'name': 'Evidence', |
||||
|
'view_mode': 'tree,form', |
||||
|
'res_model': 'legal.evidence', |
||||
|
'domain': [('id', 'in', evidence_ids_list)], |
||||
|
'context': "{'create': False}" |
||||
|
} |
||||
|
|
||||
|
def get_trial(self): |
||||
|
"""Returns the Trials""" |
||||
|
trial_ids_list = self.env['legal.trial']. \ |
||||
|
search([('client_id', '=', self.client_id.id), |
||||
|
('case_id', '=', self.id)]).ids |
||||
|
return { |
||||
|
'type': 'ir.actions.act_window', |
||||
|
'name': 'Trial', |
||||
|
'view_mode': 'tree,form', |
||||
|
'res_model': 'legal.trial', |
||||
|
'domain': [('id', 'in', trial_ids_list)], |
||||
|
'context': "{'create': False}" |
||||
|
} |
@ -0,0 +1,34 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################### |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: MOHAMMED DILSHAD TK (odoo@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 fields, models |
||||
|
|
||||
|
|
||||
|
class CaseSitting(models.Model): |
||||
|
"""Create case sitting""" |
||||
|
_name = 'case.sitting' |
||||
|
_description = 'Case Sitting"' |
||||
|
|
||||
|
date = fields.Date('Date', help='Date') |
||||
|
details = fields.Text('Details', help='Details of sittings') |
||||
|
contact = fields.Char('Contact', help="Name of contact person") |
||||
|
done = fields.Boolean('Done', help="Is the sitting is completed or not") |
||||
|
case_id = fields.Many2one('case.registration', string='Connecting Field') |
@ -0,0 +1,32 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################### |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: MOHAMMED DILSHAD TK (odoo@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 fields, models |
||||
|
|
||||
|
|
||||
|
class CaseVictim(models.Model): |
||||
|
"""Create victim""" |
||||
|
_name = 'case.victim' |
||||
|
_description = 'Case Victim' |
||||
|
|
||||
|
name = fields.Char('Name', help='Victim Name') |
||||
|
contact = fields.Char('Contact No', help='Contact') |
||||
|
registration_id = fields.Many2one('case.registration') |
@ -0,0 +1,33 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################### |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: MOHAMMED DILSHAD TK (odoo@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 fields, models |
||||
|
|
||||
|
|
||||
|
class HrEmployee(models.Model): |
||||
|
"""To create lawyers""" |
||||
|
_inherit = 'hr.employee' |
||||
|
|
||||
|
is_lawyer = fields.Boolean("Is Lawyer", help='Is this employee is a lawyer') |
||||
|
wage_per_trial = fields.Integer("Wage Per Trial", help='Wage per trial') |
||||
|
wage_per_case = fields.Integer("Wage Per Case", help='Wage per Case') |
||||
|
not_available = fields.Boolean('Not Available', default=False, |
||||
|
help='Lawyer Unavailable') |
@ -0,0 +1,53 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################### |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: MOHAMMED DILSHAD TK (odoo@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 UserError |
||||
|
|
||||
|
|
||||
|
class LegalCourt(models.Model): |
||||
|
"""Creation of legal court""" |
||||
|
_name = 'legal.court' |
||||
|
_description = 'legal court' |
||||
|
|
||||
|
name = fields.Char("Name", required=True, help='Name') |
||||
|
judge_id = fields.Many2one('res.partner', |
||||
|
domain="[('is_judge', '=', True)," |
||||
|
"('judge_unavailable', '=',False)]", |
||||
|
string='Judge', |
||||
|
help='Judges are available in the court') |
||||
|
|
||||
|
@api.onchange('judge_id') |
||||
|
def _onchange_judge_id(self): |
||||
|
"""get judges""" |
||||
|
self.judge_id.is_judge = True |
||||
|
self.judge_id.judge_unavailable = True |
||||
|
|
||||
|
@api.ondelete(at_uninstall=False) |
||||
|
def _unlink_except_draft_or_cancel(self): |
||||
|
""" Prevent the deletion of a court if it is used in any cases. """ |
||||
|
cases = self.sudo().env['case.registration'].search_count([ |
||||
|
('court_id', 'in', self.ids), |
||||
|
('state', 'not in', ['draft']) |
||||
|
]) |
||||
|
if cases: |
||||
|
raise UserError(_("You can not delete a court, " |
||||
|
"because it is used in case")) |
@ -0,0 +1,78 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################### |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: LAJINA.K.V (odoo@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 UserError |
||||
|
|
||||
|
|
||||
|
class LegalEvidence(models.Model): |
||||
|
"""Creation of legal evidence""" |
||||
|
_name = 'legal.evidence' |
||||
|
_description = 'legal evidence' |
||||
|
_inherit = ['mail.thread', 'mail.activity.mixin'] |
||||
|
|
||||
|
name = fields.Char('Reference', copy=False, readonly=True, |
||||
|
default=lambda x: _('New')) |
||||
|
case_id = fields.Many2one("case.registration", "Case", |
||||
|
help='Name for cases', |
||||
|
required=True, |
||||
|
domain="[('state', 'not in'," |
||||
|
"['won', 'lost','invoiced'])]") |
||||
|
in_favor_id = fields.Many2one("res.partner", string="In Favor", |
||||
|
help=' Name of in favor for the evidence', |
||||
|
required=True) |
||||
|
client_id = fields.Many2one(related="case_id.client_id", string="Client", |
||||
|
help='Clients for the evidence') |
||||
|
description = fields.Text(help='Description of evidence') |
||||
|
attachment_count = fields.Integer(compute='_compute_attachment_count', |
||||
|
help="Count of attachments") |
||||
|
|
||||
|
@api.model |
||||
|
def create(self, vals): |
||||
|
"""Generate Sequence For Evidence""" |
||||
|
if vals.get('name', 'New') == 'New': |
||||
|
vals['name'] = self.env['ir.sequence'].next_by_code( |
||||
|
'case_evidence') or 'New' |
||||
|
return super(LegalEvidence, self).create(vals) |
||||
|
|
||||
|
@api.ondelete(at_uninstall=False) |
||||
|
def _unlink_except_draft_or_cancel(self): |
||||
|
""" Records can't be deleted""" |
||||
|
raise UserError(_("You can not delete a evidence")) |
||||
|
|
||||
|
def get_evidence_attachments(self): |
||||
|
"""Get the corresponding attachments of evidence""" |
||||
|
return { |
||||
|
'type': 'ir.actions.act_window', |
||||
|
'name': 'Attachments', |
||||
|
'view_mode': 'kanban,form', |
||||
|
'res_model': 'ir.attachment', |
||||
|
'domain': [('res_id', '=', self.id), |
||||
|
('res_model', '=', self._name)], |
||||
|
'context': "{'create': False}" |
||||
|
} |
||||
|
|
||||
|
def _compute_attachment_count(self): |
||||
|
"""Compute the count of attachments""" |
||||
|
for attachment in self: |
||||
|
attachment.attachment_count = self.env['ir.attachment']. \ |
||||
|
sudo().search_count([('res_id', '=', self.id), |
||||
|
('res_model', '=', self._name)]) |
@ -0,0 +1,65 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################### |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: LAJINA.K.V (odoo@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 UserError |
||||
|
|
||||
|
|
||||
|
class LegalTrial(models.Model): |
||||
|
"""Creation of legal trial""" |
||||
|
_name = 'legal.trial' |
||||
|
_inherit = ['mail.thread', 'mail.activity.mixin'] |
||||
|
_description = 'Legal Trial' |
||||
|
|
||||
|
name = fields.Char("Name", readonly=True, default=lambda self: _('New'), |
||||
|
help='Trial number') |
||||
|
case_id = fields.Many2one('case.registration', string="Case", |
||||
|
help='Corresponding case', |
||||
|
required=True, |
||||
|
domain="[('state', 'not in'," |
||||
|
"['won', 'lost', 'invoiced'])]") |
||||
|
client_id = fields.Many2one(related="case_id.client_id", string="Client", |
||||
|
readonly=False, required=True, |
||||
|
help='Clients') |
||||
|
trial_date = fields.Datetime("Trial Date", help='Date for trial', |
||||
|
required=True) |
||||
|
judge_id = fields.Many2one(related="case_id.judge_id", string="Judge", |
||||
|
readonly=False, help="Judge for " |
||||
|
"corresponding case") |
||||
|
court_id = fields.Many2one(related="case_id.court_id", string="Court", |
||||
|
readonly=False, help="Court for " |
||||
|
"corresponding case") |
||||
|
description = fields.Html() |
||||
|
is_invoiced = fields.Boolean('is invoiced', help="Is trial invoiced", |
||||
|
default=False) |
||||
|
|
||||
|
@api.model |
||||
|
def create(self, vals): |
||||
|
"""Generate Sequence For Evidence""" |
||||
|
if vals.get('name', 'New') == 'New': |
||||
|
vals['name'] = self.env['ir.sequence'].next_by_code( |
||||
|
'legal_trial') or 'New' |
||||
|
return super(LegalTrial, self).create(vals) |
||||
|
|
||||
|
@api.ondelete(at_uninstall=False) |
||||
|
def _unlink_except_draft_or_cancel(self): |
||||
|
""" Records can't be deleted""" |
||||
|
raise UserError(_("You can not delete a trial")) |
@ -0,0 +1,31 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################### |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: LAJINA.K.V (odoo@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 fields, models |
||||
|
|
||||
|
|
||||
|
class ResPartner(models.Model): |
||||
|
"""Inherit res partner""" |
||||
|
_inherit = 'res.partner' |
||||
|
|
||||
|
is_judge = fields.Boolean('Is Judge', help='Is he a Judge') |
||||
|
judge_unavailable = fields.Boolean(default=False, |
||||
|
help="Check the availability of judge") |
@ -0,0 +1,25 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################### |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: LAJINA.K.V (odoo@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 . import case_registration_form_report |
||||
|
from . import case_registration_report |
||||
|
from . import legal_evidence_report |
||||
|
from . import legal_trial_report |
@ -0,0 +1,43 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################### |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: LAJINA.K.V (odoo@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 models |
||||
|
|
||||
|
|
||||
|
class LegalCasePdfDocumentReport(models.AbstractModel): |
||||
|
"""Case registration report""" |
||||
|
_name = 'report.legal_case_management.report_case_register_document' |
||||
|
_description = "Report For Case Registration" |
||||
|
|
||||
|
def _get_report_values(self, docids, data=None): |
||||
|
"""Return the Report Values""" |
||||
|
case_record = self.env['case.registration'].browse(docids) |
||||
|
evidences = self.env['legal.evidence']. \ |
||||
|
search([('client_id', '=', case_record.client_id.id), |
||||
|
('case_id', '=', case_record.id)]) |
||||
|
trials = self.env['legal.trial']. \ |
||||
|
search([('client_id', '=', case_record.client_id.id), |
||||
|
('case_id', '=', case_record.id)]) |
||||
|
return { |
||||
|
'case_record': case_record, |
||||
|
'evidence': evidences, |
||||
|
'trial': trials |
||||
|
} |
@ -0,0 +1,83 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- Report Template For Case registration form --> |
||||
|
<template id="report_case_register_document"> |
||||
|
<t t-call="web.html_container"> |
||||
|
<t t-call="web.external_layout"> |
||||
|
<div> |
||||
|
<t t-set="address"> |
||||
|
<span class="fw-bold">Client Details</span> |
||||
|
<br/> |
||||
|
<div t-field="case_record.client_id" |
||||
|
t-options='{"widget": "contact", "fields": ["address", "name"], "no_marker": True}'/> |
||||
|
<p t-if="case_record.client_id.vat"> |
||||
|
<t |
||||
|
t-out="case_record.company_id.account_fiscal_country_id.vat_label or 'Tax ID'"/> |
||||
|
: |
||||
|
<span t-field="case_record.client_id.vat"/> |
||||
|
</p> |
||||
|
</t> |
||||
|
</div> |
||||
|
<br/> |
||||
|
<div class="page"> |
||||
|
<div class="oe_structure"/> |
||||
|
<div class="text-center"> |
||||
|
<h2>Legal Case Report</h2> |
||||
|
</div> |
||||
|
<h2 class="mt-16"> |
||||
|
<span>Case :</span> |
||||
|
<span t-field="case_record.name"/> |
||||
|
</h2> |
||||
|
<table class="table table-bordered" |
||||
|
style="table-layout: fixed;"> |
||||
|
<thead> |
||||
|
<tr style="font-size: 22px;font-weight:bold;"> |
||||
|
<th t-if="case_record.case_category_id">Case |
||||
|
Category |
||||
|
</th> |
||||
|
<th t-if="case_record.lawyer_id">Lawyer</th> |
||||
|
<th t-if="evidence">Evidence</th> |
||||
|
<th t-if="trial">Trial</th> |
||||
|
<th t-if="case_record.evidence_count">Evidence |
||||
|
Count |
||||
|
</th> |
||||
|
<th t-if="case_record.trial_count">Trial Count |
||||
|
</th> |
||||
|
<th t-if="case_record.state">State</th> |
||||
|
</tr> |
||||
|
</thead> |
||||
|
<tr style="font-size: 20px;"> |
||||
|
<td t-if="case_record.case_category_id"> |
||||
|
<span t-field="case_record.case_category_id"/> |
||||
|
</td> |
||||
|
<td t-if="case_record.lawyer_id"> |
||||
|
<span t-field="case_record.lawyer_id.name"/> |
||||
|
</td> |
||||
|
<td t-if="evidence"> |
||||
|
<t t-foreach="evidence" t-as="evidence"> |
||||
|
<span t-field="evidence.name"/> |
||||
|
</t> |
||||
|
</td> |
||||
|
<td t-if="trial"> |
||||
|
<t t-foreach="trial" t-as="trial"> |
||||
|
<span t-field="trial.name"/> |
||||
|
</t> |
||||
|
</td> |
||||
|
<td t-if="case_record.evidence_count"> |
||||
|
<span t-field="case_record.evidence_count"/> |
||||
|
</td> |
||||
|
<td t-if="case_record.trial_count"> |
||||
|
<span t-field="case_record.trial_count"/> |
||||
|
</td> |
||||
|
<td t-if="case_record.state"> |
||||
|
<t t-esc="dict (case_record.fields_get |
||||
|
(allfields = ['state']) ['state'] |
||||
|
['selection']) [case_record.state]"/> |
||||
|
</td> |
||||
|
</tr> |
||||
|
</table> |
||||
|
</div> |
||||
|
</t> |
||||
|
</t> |
||||
|
</template> |
||||
|
</odoo> |
@ -0,0 +1,271 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################### |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: LAJINA.K.V (odoo@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 models |
||||
|
|
||||
|
|
||||
|
class LegalCasePdfReport(models.AbstractModel): |
||||
|
"""Report of module""" |
||||
|
_name = 'report.legal_case_management.report_legal_case_details' |
||||
|
_description = "Report For Case Registration" |
||||
|
|
||||
|
def _get_report_values(self, docids, data=None): |
||||
|
"""Get data to the pdf""" |
||||
|
query = """select case_reg.name as case_name,case_reg.start_date as start_date, |
||||
|
case_reg.end_date as end_date, res_client.name as client, |
||||
|
lawyer.name as lawyer, court.name as court,res_judge.name as judge, |
||||
|
INITCAP(case_reg.payment_method) as payment_method, INITCAP(case_reg.state) as state from case_registration case_reg |
||||
|
LEFT JOIN res_partner res_client ON case_reg.client_id = res_client.id |
||||
|
LEFT JOIN res_partner res_judge |
||||
|
ON case_reg.judge_id= res_judge.id LEFT JOIN |
||||
|
hr_employee lawyer ON lawyer.id = case_reg.lawyer_id LEFT JOIN |
||||
|
legal_court court ON case_reg.court_id = court.id""" |
||||
|
if data['lawyer_id'] and data['client_id'] and data['court_id'] \ |
||||
|
and data['judge_id'] and data['start_date'] and data['end_date'] \ |
||||
|
and data['payment_method'] and data['state']: |
||||
|
query += f""" WHERE lawyer.name = '%s' AND res_client.name='%s' AND |
||||
|
court.name ='%s' AND res_judge.name = '%s' AND |
||||
|
case_reg.start_date = '%s' AND |
||||
|
case_reg.end_date = '%s' AND |
||||
|
case_reg.payment_method = '%s' |
||||
|
AND case_reg.state = '%s' """ \ |
||||
|
% (data['lawyer_id'], data['client_id'], data['court_id'], |
||||
|
data['judge_id'], data['start_date'], data['end_date'], |
||||
|
data['payment_method'], data['state']) |
||||
|
elif data['lawyer_id'] and data['client_id'] and data['court_id'] \ |
||||
|
and data['judge_id'] and data['start_date'] and \ |
||||
|
data['end_date'] and data['payment_method']: |
||||
|
query += f""" WHERE lawyer.name = '%s' AND res_client.name='%s' AND |
||||
|
court.name ='%s' AND res_judge.name = '%s' AND |
||||
|
case_reg.start_date = '%s' AND case_reg.end_date = '%s' |
||||
|
AND case_reg.payment_method = '%s' """ \ |
||||
|
% (data['lawyer_id'], data['client_id'], data['court_id'], |
||||
|
data['judge_id'], data['start_date'], data['end_date'], |
||||
|
data['payment_method']) |
||||
|
elif data['lawyer_id'] and data['client_id'] and data['court_id'] \ |
||||
|
and data['judge_id'] and data['start_date'] and data['end_date']: |
||||
|
query += f""" WHERE lawyer.name = '%s' AND res_client.name='%s' AND |
||||
|
court.name ='%s' AND res_judge.name = '%s' AND |
||||
|
case_reg.start_date = '%s' AND |
||||
|
case_reg.end_date = '%s' """ % (data['lawyer_id'], |
||||
|
data['client_id'], |
||||
|
data['court_id'], |
||||
|
data['judge_id'], |
||||
|
data['start_date'], |
||||
|
data['end_date']) |
||||
|
elif data['lawyer_id'] and data['client_id'] and data['court_id'] \ |
||||
|
and data['judge_id'] and data['start_date']: |
||||
|
query += f""" WHERE lawyer.name = '%s' AND res_client.name='%s' AND |
||||
|
court.name ='%s' AND res_judge.name = '%s' AND |
||||
|
case_reg.start_date = '%s'""" % (data['lawyer_id'], |
||||
|
data['client_id'], |
||||
|
data['court_id'], |
||||
|
data['judge_id'], |
||||
|
data['start_date']) |
||||
|
elif data['lawyer_id'] and data['client_id'] and data['court_id'] \ |
||||
|
and data['judge_id']: |
||||
|
query += f""" WHERE lawyer.name = '%s' AND res_client.name='%s' AND |
||||
|
court.name ='%s' AND res_judge.name = '%s'""" \ |
||||
|
% (data['lawyer_id'], |
||||
|
data['client_id'], |
||||
|
data['court_id'], |
||||
|
data['judge_id']) |
||||
|
|
||||
|
elif data['lawyer_id'] and data['client_id'] and data['court_id']: |
||||
|
query += f""" WHERE lawyer.name = '%s' AND res_client.name='%s' AND |
||||
|
court.name ='%s'""" % (data['lawyer_id'], |
||||
|
data['client_id'], |
||||
|
data['court_id']) |
||||
|
elif data['lawyer_id'] and data['client_id'] and data['judge_id']: |
||||
|
query += f""" WHERE lawyer.name = '%s' AND res_client.name='%s' AND |
||||
|
res_judge.name ='%s'""" % (data['lawyer_id'], |
||||
|
data['client_id'], |
||||
|
data['judge_id']) |
||||
|
|
||||
|
elif data['lawyer_id'] and data['client_id'] and data['start_date']: |
||||
|
query += f""" WHERE lawyer.name = '%s' AND res_client.name='%s' AND |
||||
|
case_reg.start_date ='%s'""" \ |
||||
|
% (data['lawyer_id'], data['client_id'], |
||||
|
data['start_date']) |
||||
|
elif data['lawyer_id'] and data['client_id'] and data['end_date']: |
||||
|
query += f""" WHERE lawyer.name = '%s' AND res_client.name='%s' AND |
||||
|
case_reg.end_date ='%s'""" \ |
||||
|
% (data['lawyer_id'], data['client_id'], |
||||
|
data['start_date']) |
||||
|
elif data['lawyer_id'] and data['client_id'] and data['payment_method']: |
||||
|
query += f""" WHERE lawyer.name = '%s' AND res_client.name='%s' AND |
||||
|
case_reg.payment_method ='%s'""" \ |
||||
|
% (data['lawyer_id'], data['client_id'], |
||||
|
data['payment_method']) |
||||
|
elif data['lawyer_id'] and data['client_id'] and data['state']: |
||||
|
query += f""" WHERE lawyer.name = '%s' AND res_client.name='%s' AND |
||||
|
case_reg.state ='%s'""" % (data['lawyer_id'], |
||||
|
data['client_id'], |
||||
|
data['state']) |
||||
|
elif data['lawyer_id'] and data['client_id']: |
||||
|
query += f""" WHERE lawyer.name ='%s' AND |
||||
|
res_client.name='%s'""" % (data['lawyer_id'], |
||||
|
data['client_id']) |
||||
|
elif data['lawyer_id'] and data['judge_id']: |
||||
|
query += f""" WHERE lawyer.name ='%s' AND |
||||
|
res_judge.name='%s'""" % (data['lawyer_id'], |
||||
|
data['judge_id']) |
||||
|
|
||||
|
elif data['lawyer_id'] and data['court_id']: |
||||
|
query += f""" WHERE lawyer.name ='%s' AND |
||||
|
court.name='%s'""" % (data['lawyer_id'], |
||||
|
data['court_id']) |
||||
|
elif data['lawyer_id'] and data['start_date']: |
||||
|
query += f""" WHERE lawyer.name ='%s' AND |
||||
|
case_reg.start_date='%s'""" \ |
||||
|
% (data['lawyer_id'], data['start_date']) |
||||
|
elif data['lawyer_id'] and data['end_date']: |
||||
|
query += f""" WHERE lawyer.name ='%s' AND |
||||
|
case_reg.end_date='%s'""" \ |
||||
|
% (data['lawyer_id'], data['end_date']) |
||||
|
elif data['lawyer_id'] and data['payment_method']: |
||||
|
query += f""" WHERE lawyer.name ='%s' AND |
||||
|
case_reg.payment_method='%s'""" \ |
||||
|
% (data['lawyer_id'], data['payment_method']) |
||||
|
elif data['lawyer_id'] and data['state']: |
||||
|
query += f""" WHERE lawyer.name ='%s' AND |
||||
|
case_reg.state='%s'""" % (data['lawyer_id'], |
||||
|
data['state']) |
||||
|
elif data['client_id'] and data['judge_id']: |
||||
|
query += f""" WHERE res_client.name ='%s' AND |
||||
|
res_judge.name='%s'""" % (data['client_id'], |
||||
|
data['judge_id']) |
||||
|
elif data['client_id'] and data['court_id']: |
||||
|
query += f""" WHERE res_client.name ='%s' AND |
||||
|
court.name='%s'""" % (data['client_id'], |
||||
|
data['court_id']) |
||||
|
elif data['client_id'] and data['start_date']: |
||||
|
query += f""" WHERE res_client.name ='%s' AND |
||||
|
case_reg.start_date='%s'""" % (data['client_id'], |
||||
|
data['start_date']) |
||||
|
elif data['client_id'] and data['end_date']: |
||||
|
query += f""" WHERE res_client.name ='%s' AND |
||||
|
case_reg.end_date='%s'""" % (data['client_id'], |
||||
|
data['end_date']) |
||||
|
elif data['client_id'] and data['payment_method']: |
||||
|
query += f""" WHERE res_client.name ='%s' AND |
||||
|
case_reg.payment_method='%s'""" \ |
||||
|
% (data['client_id'], data['payment_method']) |
||||
|
elif data['client_id'] and data['state']: |
||||
|
query += f""" WHERE res_client.name ='%s' AND |
||||
|
case_reg.state='%s'""" % (data['client_id'], |
||||
|
data['state']) |
||||
|
elif data['judge_id'] and data['court_id']: |
||||
|
query += f""" WHERE res_judge.name ='%s' AND |
||||
|
court.name='%s'""" % (data['judge_id'], |
||||
|
data['court_id']) |
||||
|
elif data['judge_id'] and data['start_date']: |
||||
|
query += f""" WHERE res_judge.name ='%s' AND |
||||
|
case_reg.start_date='%s'""" \ |
||||
|
% (data['judge_id'], data['start_date']) |
||||
|
elif data['judge_id'] and data['end_date']: |
||||
|
query += f""" WHERE res_judge.name ='%s' AND |
||||
|
case_reg.end_date='%s'""" % (data['judge_id'], |
||||
|
data['end_date']) |
||||
|
elif data['judge_id'] and data['payment_method']: |
||||
|
query += f""" WHERE res_judge.name ='%s' AND |
||||
|
case_reg.payment_method='%s'""" \ |
||||
|
% (data['judge_id'], data['payment_method']) |
||||
|
elif data['judge_id'] and data['state']: |
||||
|
query += f""" WHERE res_judge.name ='%s' AND |
||||
|
case_reg.state='%s'""" % (data['judge_id'], |
||||
|
data['state']) |
||||
|
elif data['court_id'] and data['start_date']: |
||||
|
query += f""" WHERE court.name ='%s' AND |
||||
|
case_reg.start_date='%s'""" \ |
||||
|
% (data['court_id'], data['start_date']) |
||||
|
elif data['court_id'] and data['end_date']: |
||||
|
query += f""" WHERE court.name ='%s' AND |
||||
|
case_reg.end_date='%s'""" \ |
||||
|
% (data['court_id'], data['end_date']) |
||||
|
elif data['court_id'] and data['payment_method']: |
||||
|
query += f""" WHERE court.name ='%s' AND |
||||
|
case_reg.payment_method='%s'""" \ |
||||
|
% (data['court_id'], data['payment_method']) |
||||
|
elif data['court_id'] and data['state']: |
||||
|
query += f""" WHERE court.name ='%s' AND |
||||
|
case_reg.state='%s'""" % (data['court_id'], |
||||
|
data['state']) |
||||
|
elif data['start_date'] and data['end_date']: |
||||
|
query += f""" WHERE case_reg.start_date ='%s' AND |
||||
|
case_reg.end_date='%s'""" \ |
||||
|
% (data['start_date'], data['end_date']) |
||||
|
elif data['start_date'] and data['payment_method']: |
||||
|
query += f""" WHERE case_reg.start_date ='%s' AND |
||||
|
case_reg.payment_method='%s'""" \ |
||||
|
% (data['start_date'], data['payment_method']) |
||||
|
elif data['start_date'] and data['state']: |
||||
|
query += f""" WHERE case_reg.start_date ='%s' AND |
||||
|
case_reg.state='%s'""" \ |
||||
|
% (data['start_date'], data['state']) |
||||
|
elif data['start_date'] and data['payment_method']: |
||||
|
query += f""" WHERE case_reg.start_date ='%s' AND |
||||
|
case_reg.payment_method='%s'""" \ |
||||
|
% (data['start_date'], data['payment_method']) |
||||
|
elif data['end_date'] and data['payment_method']: |
||||
|
query += f""" WHERE case_reg.end_date ='%s' AND |
||||
|
case_reg.payment_method='%s'""" \ |
||||
|
% (data['end_date'], data['payment_method']) |
||||
|
elif data['end_date'] and data['state']: |
||||
|
query += f""" WHERE case_reg.end_date ='%s' AND |
||||
|
case_reg.state='%s'""" % (data['end_date'], |
||||
|
data['state']) |
||||
|
elif data['payment_method'] and data['state']: |
||||
|
query += f""" WHERE case_reg.payment_method='%s' AND |
||||
|
case_reg.state='%s'""" % (data['payment_method'], |
||||
|
data['state']) |
||||
|
elif data['lawyer_id']: |
||||
|
query += f""" WHERE lawyer.name ='%s' """ \ |
||||
|
% (data['lawyer_id']) |
||||
|
|
||||
|
elif data['client_id']: |
||||
|
query += f""" WHERE res_client.name ='%s' """ \ |
||||
|
% (data['client_id']) |
||||
|
|
||||
|
elif data['judge_id']: |
||||
|
query += f""" WHERE res_judge.name ='%s' """ \ |
||||
|
% (data['judge_id']) |
||||
|
|
||||
|
elif data['court_id']: |
||||
|
query += f""" WHERE court.name ='%s' """ \ |
||||
|
% (data['court_id']) |
||||
|
elif data['start_date']: |
||||
|
query += f""" WHERE case_reg.start_date ='%s' """ \ |
||||
|
% (data['start_date']) |
||||
|
elif data['end_date']: |
||||
|
query += f""" WHERE case_reg.end_date ='%s' """ \ |
||||
|
% (data['end_date']) |
||||
|
elif data['payment_method']: |
||||
|
query += f""" WHERE case_reg.payment_method ='%s' """ \ |
||||
|
% (data['payment_method']) |
||||
|
elif data['state']: |
||||
|
query += f""" WHERE case_reg.state ='%s' """ \ |
||||
|
% (data['state']) |
||||
|
self.env.cr.execute(query) |
||||
|
return { |
||||
|
'data': data, |
||||
|
'docs': self.env.cr.dictfetchall() |
||||
|
} |
@ -0,0 +1,47 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<odoo> |
||||
|
<!-- Actions For Pdf Report--> |
||||
|
<record id="legal_case_wizard_action_report" model="ir.actions.report"> |
||||
|
<field name="name">Legal Case Report</field> |
||||
|
<field name="model">legal.case.report</field> |
||||
|
<field name="report_type">qweb-pdf</field> |
||||
|
<field name="report_name">legal_case_management.report_legal_case_details</field> |
||||
|
<field name="report_file">legal_case_management.report_legal_case_details</field> |
||||
|
<field name="binding_model_id" ref="model_legal_case_report"/> |
||||
|
<field name="binding_type">report</field> |
||||
|
</record> |
||||
|
<record id="case_registration_action_report" model="ir.actions.report"> |
||||
|
<field name="name">Case Report</field> |
||||
|
<field name="model">case.registration</field> |
||||
|
<field name="report_type">qweb-pdf</field> |
||||
|
<field name="report_name">legal_case_management.report_case_register_document |
||||
|
</field> |
||||
|
<field name="report_file">legal_case_management.report_case_register_document |
||||
|
</field> |
||||
|
<field name="binding_model_id" ref="model_case_registration"/> |
||||
|
<field name="binding_view_types">form</field> |
||||
|
<field name="binding_type">report</field> |
||||
|
</record> |
||||
|
<record id="legal_evidence_action_report" model="ir.actions.report"> |
||||
|
<field name="name">Evidence Report</field> |
||||
|
<field name="model">legal.evidence</field> |
||||
|
<field name="report_type">qweb-pdf</field> |
||||
|
<field name="report_name">legal_case_management.report_case_evidence_document |
||||
|
</field> |
||||
|
<field name="report_file">legal_case_management.report_case_evidence_document |
||||
|
</field> |
||||
|
<field name="binding_model_id" ref="model_legal_evidence"/> |
||||
|
<field name="binding_type">report</field> |
||||
|
<field name="binding_view_types">form</field> |
||||
|
</record> |
||||
|
<record id="legal_trial_action_report" model="ir.actions.report"> |
||||
|
<field name="name">Trial Report</field> |
||||
|
<field name="model">legal.trial</field> |
||||
|
<field name="report_type">qweb-pdf</field> |
||||
|
<field name="report_name">legal_case_management.report_case_trial_document</field> |
||||
|
<field name="report_file">legal_case_management.report_case_trial_document</field> |
||||
|
<field name="binding_model_id" ref="model_legal_trial"/> |
||||
|
<field name="binding_type">report</field> |
||||
|
<field name="binding_view_types">form</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,76 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- Report Template For Case Registration Details--> |
||||
|
<template id="report_legal_case_details"> |
||||
|
<t t-call="web.html_container"> |
||||
|
<t t-call="web.external_layout"> |
||||
|
<div class="page"> |
||||
|
<div class="text-center"> |
||||
|
<h2>Legal Case Report</h2> |
||||
|
</div> |
||||
|
<br/> |
||||
|
<br/> |
||||
|
<t t-set="i" t-value="1"/> |
||||
|
<t t-if="docs"> |
||||
|
<table class="table table-bordered" |
||||
|
style="table-layout: fixed"> |
||||
|
<thead> |
||||
|
<th>Sl.No</th> |
||||
|
<th>Case No</th> |
||||
|
<th t-if="client_id">Client</th> |
||||
|
<th t-if="lawyer_id">Lawyer</th> |
||||
|
<th t-if="court_id">Court</th> |
||||
|
<th t-if="judge_id">Judge</th> |
||||
|
<th t-if="start_date">Start Date</th> |
||||
|
<th t-if="end_date">End Date</th> |
||||
|
<th t-if="payment_method">Payment Method</th> |
||||
|
<th t-if="state">State</th> |
||||
|
</thead> |
||||
|
<t t-foreach="docs" t-as="case"> |
||||
|
<tr> |
||||
|
<td> |
||||
|
|
||||
|
<t t-set="i" t-value="i+1"/> |
||||
|
</td> |
||||
|
<td> |
||||
|
<span t-esc="case['case_name']"/> |
||||
|
</td> |
||||
|
<td t-if="client_id"> |
||||
|
<span t-esc="case['client']"/> |
||||
|
</td> |
||||
|
<td t-if="lawyer_id"> |
||||
|
<span t-esc="case['lawyer']"/> |
||||
|
</td> |
||||
|
<td t-if="court_id"> |
||||
|
<span t-esc="case['court']"/> |
||||
|
</td> |
||||
|
<td t-if="judge_id"> |
||||
|
<span t-esc="case['judge']"/> |
||||
|
</td> |
||||
|
<td t-if="start_date"> |
||||
|
<span t-esc="case['start_date']"/> |
||||
|
</td> |
||||
|
<td t-if="end_date"> |
||||
|
<span t-esc="case['end_date']"/> |
||||
|
</td> |
||||
|
<td t-if="payment_method"> |
||||
|
<span t-esc="case['payment_method']"/> |
||||
|
</td> |
||||
|
<td t-if="state"> |
||||
|
<span t-esc="case['state']"/> |
||||
|
</td> |
||||
|
</tr> |
||||
|
</t> |
||||
|
</table> |
||||
|
</t> |
||||
|
<t t-else=""> |
||||
|
<div style="text-align: center;color:#ff0000; |
||||
|
font-size:50px; font-weight:bold"> |
||||
|
No Records |
||||
|
</div> |
||||
|
</t> |
||||
|
</div> |
||||
|
</t> |
||||
|
</t> |
||||
|
</template> |
||||
|
</odoo> |
@ -0,0 +1,35 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################### |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: LAJINA.K.V (odoo@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 models |
||||
|
|
||||
|
|
||||
|
class LegalCasePdfDocumentEvidenceReport(models.AbstractModel): |
||||
|
"""Evidence report""" |
||||
|
_name = 'report.legal_case_management.report_case_evidence_document' |
||||
|
_description = "Report For Evidence" |
||||
|
|
||||
|
def _get_report_values(self, docids, data=None): |
||||
|
"""Return the Report Values For Evidence""" |
||||
|
evidence_record = self.env['legal.evidence'].browse(docids) |
||||
|
return { |
||||
|
'evidence': evidence_record |
||||
|
} |
@ -0,0 +1,50 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- Report Template For Evidence For Case--> |
||||
|
<template id="report_case_evidence_document"> |
||||
|
<t t-call="web.html_container"> |
||||
|
<t t-call="web.external_layout"> |
||||
|
<div class="page"> |
||||
|
<div class="oe_structure"/> |
||||
|
<div class="text-center"> |
||||
|
<h2>Case Evidence Report</h2> |
||||
|
</div> |
||||
|
</div> |
||||
|
<br/> |
||||
|
<h2 class="mt-16"> |
||||
|
<span>Evidence #</span> |
||||
|
<span t-esc="evidence.name"/> |
||||
|
</h2> |
||||
|
<table class="table table-bordered" |
||||
|
style="table-layout: fixed;"> |
||||
|
<thead> |
||||
|
<tr style="font-size: 22px;font-weight:bold;"> |
||||
|
<th t-if="evidence.case_id.name">Case</th> |
||||
|
<th t-if="evidence.client_id.name">Client</th> |
||||
|
<th t-if="evidence.in_favor_id.name">In Favor</th> |
||||
|
<th t-if="evidence.description">Description</th> |
||||
|
<th t-if="evidence.case_id.state">State</th> |
||||
|
</tr> |
||||
|
</thead> |
||||
|
<tr style="font-size: 20px;"> |
||||
|
<td t-if="evidence.case_id.name"> |
||||
|
<span t-esc="evidence.case_id.name"/> |
||||
|
</td> |
||||
|
<td t-if="evidence.client_id.name"> |
||||
|
<span t-field="evidence.client_id.name"/> |
||||
|
</td> |
||||
|
<td t-if="evidence.in_favor_id.name"> |
||||
|
<span t-field="evidence.in_favor_id.name"/> |
||||
|
</td> |
||||
|
<td t-if="evidence.description"> |
||||
|
<span t-field="evidence.description"/> |
||||
|
</td> |
||||
|
<td t-if="evidence.case_id.state"> |
||||
|
<span t-field="evidence.case_id.state"/> |
||||
|
</td> |
||||
|
</tr> |
||||
|
</table> |
||||
|
</t> |
||||
|
</t> |
||||
|
</template> |
||||
|
</odoo> |
@ -0,0 +1,36 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################### |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: LAJINA.K.V (odoo@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 models |
||||
|
|
||||
|
|
||||
|
class LegalCasePdfDocumentTrialReport(models.AbstractModel): |
||||
|
"""Trial Report""" |
||||
|
_name = 'report.legal_case_management.report_case_trial_document' |
||||
|
_description = "Report For Trial" |
||||
|
|
||||
|
def _get_report_values(self, docids, data=None): |
||||
|
"""Return the Report Values""" |
||||
|
trial_record = self.env['legal.trial'].browse(docids) |
||||
|
|
||||
|
return { |
||||
|
'trial': trial_record, |
||||
|
} |
@ -0,0 +1,47 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!--Template For Trials For Case --> |
||||
|
<template id="report_case_trial_document"> |
||||
|
<t t-call="web.html_container"> |
||||
|
<t t-call="web.external_layout"> |
||||
|
<div class="page"> |
||||
|
<div class="oe_structure"/> |
||||
|
|
||||
|
<div class="text-center"> |
||||
|
<h2>Case Trial Report</h2> |
||||
|
</div> |
||||
|
</div> |
||||
|
<br/> |
||||
|
<h2 class="mt-16"> |
||||
|
<span>Trial #</span> |
||||
|
<span t-esc="trial.name"/> |
||||
|
</h2> |
||||
|
<table class="table table-bordered" |
||||
|
style="table-layout: fixed;"> |
||||
|
<thead> |
||||
|
<tr style="font-size: 22px;font-weight:bold;"> |
||||
|
<th t-if="trial.case_id.name">Case</th> |
||||
|
<th t-if="trial.client_id.name">Client</th> |
||||
|
<th t-if="trial.trial_date">Trial Date</th> |
||||
|
<th t-if="trial.case_id.state">State</th> |
||||
|
</tr> |
||||
|
</thead> |
||||
|
<tr style="font-size: 20px;"> |
||||
|
<td t-if="trial.case_id.name"> |
||||
|
<span t-esc="trial.case_id.name"/> |
||||
|
</td> |
||||
|
<td t-if="trial.client_id.name"> |
||||
|
<span t-field="trial.client_id.name"/> |
||||
|
</td> |
||||
|
<td t-if="trial.trial_date"> |
||||
|
<span t-field="trial.trial_date"/> |
||||
|
</td> |
||||
|
<td t-if="trial.case_id.state"> |
||||
|
<span t-field="trial.case_id.state"/> |
||||
|
</td> |
||||
|
</tr> |
||||
|
</table> |
||||
|
</t> |
||||
|
</t> |
||||
|
</template> |
||||
|
</odoo> |
|
@ -0,0 +1,26 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<record id="module_category_legal_case_management" |
||||
|
model="ir.module.category"> |
||||
|
<field name="name">Case Management</field> |
||||
|
<field name="description">Legal Case Management</field> |
||||
|
<field name="sequence">120</field> |
||||
|
</record> |
||||
|
<!-- Groups --> |
||||
|
<record id="legal_case_management_group_clerk" model="res.groups"> |
||||
|
<field name="name">Clerk</field> |
||||
|
<field name="category_id" ref="module_category_legal_case_management"/> |
||||
|
</record> |
||||
|
<record id="legal_case_management_group_lawyer" model="res.groups"> |
||||
|
<field name="name">Lawyer</field> |
||||
|
<field name="category_id" ref="module_category_legal_case_management"/> |
||||
|
<field name="implied_ids" |
||||
|
eval="[(4, ref('legal_case_management.legal_case_management_group_clerk'))]"/> |
||||
|
</record> |
||||
|
<record id="legal_case_management_group_admin" model="res.groups"> |
||||
|
<field name="name">Admin</field> |
||||
|
<field name="category_id" ref="module_category_legal_case_management"/> |
||||
|
<field name="implied_ids" |
||||
|
eval="[(4, ref('legal_case_management.legal_case_management_group_lawyer'))]"/> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,64 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- Access rights For company of case registration model--> |
||||
|
<record id="case_registration_rule_company" model="ir.rule"> |
||||
|
<field name="name">Legal Case: multi-company</field> |
||||
|
<field name="model_id" ref="model_case_registration"/> |
||||
|
<field name="domain_force"> |
||||
|
['|',('company_id','=',False),('company_id', 'in', company_ids)] |
||||
|
</field> |
||||
|
</record> |
||||
|
<!--Access Rights For Admin of case registration model --> |
||||
|
<record id="case_registration_rule_admin" model="ir.rule"> |
||||
|
<field name="name">Admin All Document only view Rule</field> |
||||
|
<field name="model_id" ref="model_case_registration"/> |
||||
|
<field name="domain_force">[(1,'=',1)]</field> |
||||
|
<field name="groups" |
||||
|
eval="[(4, ref('legal_case_management.legal_case_management_group_admin'))]"/> |
||||
|
</record> |
||||
|
<!--Access Rights For Lawyer of case registration model--> |
||||
|
<record id="case_registration_rule_lawyer" model="ir.rule"> |
||||
|
<field name="name">Own Case view Rule</field> |
||||
|
<field name="model_id" ref="model_case_registration"/> |
||||
|
<field name="domain_force">[('lawyer_id.user_id','=',user.id)] |
||||
|
</field> |
||||
|
<field name="groups" |
||||
|
eval="[(4, ref('legal_case_management.legal_case_management_group_lawyer'))]"/> |
||||
|
</record> |
||||
|
<!--Access Rights for Admin of legal evidence model--> |
||||
|
<record id="legal_evidence_rule_admin" model="ir.rule"> |
||||
|
<field name="name">Admin All Document only view Rule</field> |
||||
|
<field name="model_id" ref="model_legal_evidence"/> |
||||
|
<field name="domain_force">[(1,'=',1)]</field> |
||||
|
<field name="groups" |
||||
|
eval="[(4, ref('legal_case_management.legal_case_management_group_admin'))]"/> |
||||
|
</record> |
||||
|
<!--Access Rights For Lawyer of legal evidence model--> |
||||
|
<record id="legal_evidence_rule_lawyer" model="ir.rule"> |
||||
|
<field name="name">Own Evidence view Rule</field> |
||||
|
<field name="model_id" ref="model_legal_evidence"/> |
||||
|
<field name="domain_force"> |
||||
|
[('case_id.lawyer_id.user_id','=',user.id)] |
||||
|
</field> |
||||
|
<field name="groups" |
||||
|
eval="[(4, ref('legal_case_management.legal_case_management_group_lawyer'))]"/> |
||||
|
</record> |
||||
|
<!--Access Rights For Admin of legal trial model--> |
||||
|
<record id="legal_trial_rule_admin" model="ir.rule"> |
||||
|
<field name="name">Admin All Document only view Rule</field> |
||||
|
<field name="model_id" ref="model_legal_trial"/> |
||||
|
<field name="domain_force">[(1,'=',1)]</field> |
||||
|
<field name="groups" |
||||
|
eval="[(4, ref('legal_case_management.legal_case_management_group_admin'))]"/> |
||||
|
</record> |
||||
|
<!--Access Rights For Lawyer of legal trial model--> |
||||
|
<record id="legal_trial_rule_lawyer" model="ir.rule"> |
||||
|
<field name="name">Own Trial view Rule</field> |
||||
|
<field name="model_id" ref="model_legal_trial"/> |
||||
|
<field name="domain_force"> |
||||
|
[('case_id.lawyer_id.user_id','=',user.id)] |
||||
|
</field> |
||||
|
<field name="groups" |
||||
|
eval="[(4, ref('legal_case_management.legal_case_management_group_lawyer'))]"/> |
||||
|
</record> |
||||
|
</odoo> |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 310 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 576 B |
After Width: | Height: | Size: 733 B |
After Width: | Height: | Size: 911 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 673 B |
After Width: | Height: | Size: 878 B |
After Width: | Height: | Size: 653 B |
After Width: | Height: | Size: 905 B |
After Width: | Height: | Size: 839 B |
After Width: | Height: | Size: 427 B |
After Width: | Height: | Size: 627 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 988 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 4.4 KiB |
After Width: | Height: | Size: 589 B |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 967 B |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 5.0 KiB |
After Width: | Height: | Size: 76 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 82 KiB |
After Width: | Height: | Size: 82 KiB |
After Width: | Height: | Size: 72 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 381 KiB |
After Width: | Height: | Size: 149 KiB |
After Width: | Height: | Size: 99 KiB |
After Width: | Height: | Size: 142 KiB |
After Width: | Height: | Size: 104 KiB |
After Width: | Height: | Size: 133 KiB |
After Width: | Height: | Size: 96 KiB |
After Width: | Height: | Size: 135 KiB |
After Width: | Height: | Size: 85 KiB |
After Width: | Height: | Size: 125 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 20 KiB |
@ -0,0 +1,682 @@ |
|||||
|
<div style="background-color: #714B67; min-height: 600px; width: 100%; padding: 15px; position: relative;"> |
||||
|
<!-- TITLE BAR --> |
||||
|
<div |
||||
|
style="border-bottom: 1px solid #875A7B; padding: 15px; display: flex; justify-content: space-between; align-items: center;"> |
||||
|
<img src="assets/misc/cybrosys-logo.png" width="42" height="42" |
||||
|
style="width: 42px; height: 42px;"/> |
||||
|
<div> |
||||
|
<div style="color: #7C7BAD; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;" |
||||
|
class="mr-2"> |
||||
|
<i class="fa fa-check mr-1"></i>Community |
||||
|
</div> |
||||
|
<div style="color: #7C7BAD; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;" |
||||
|
class="mr-2"> |
||||
|
<i class="fa fa-check mr-1"></i>Enterprise |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- END OF TITLE BAR --> |
||||
|
|
||||
|
<!-- APP HERO --> |
||||
|
<h1 style="color: #FFFFFF; font-weight: bolder; font-size: 50px; text-align: center; margin-top: 50px;"> |
||||
|
Legal Case Management</h1> |
||||
|
<p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;"> |
||||
|
This module helps to manage a legal case management firm</p> |
||||
|
<!-- END OF APP HERO --> |
||||
|
<img src="assets/screenshots/hero.gif" |
||||
|
style="width: 75%; height: auto; position: absolute; margin-left: auto; margin-right: auto; top: 45%; left: 12%; right: auto;"/> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
<!-- NAVIGATION SECTION --> |
||||
|
<div class="d-flex align-items-center" |
||||
|
style="border-bottom: 2px solid #714B67; padding: 15px 0px; margin-top: 300px;"> |
||||
|
<div class="d-flex justify-content-center align-items-center mr-2" |
||||
|
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |
||||
|
<img src="assets/misc/compass.png"/> |
||||
|
</div> |
||||
|
<h2 class="mt-2" |
||||
|
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |
||||
|
Explore This |
||||
|
Module</h2> |
||||
|
</div> |
||||
|
<div class="row my-4" style="font-family: 'Montserrat', sans-serif;"> |
||||
|
<div class="col-sm-12 col-md-6 my-3"> |
||||
|
<a href="#overview"> |
||||
|
<div class="d-flex justify-content-between align-items-center" |
||||
|
style="background-color: #f5f5f5; padding: 30px; width: 100%;"> |
||||
|
<div> |
||||
|
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Overview</span> |
||||
|
<span |
||||
|
style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">Learn |
||||
|
more about this |
||||
|
module</span> |
||||
|
</div> |
||||
|
<img src="assets/misc/right-arrow.png" width="36" height="36"/> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div class="col-sm-12 col-md-6 my-3"> |
||||
|
<a href="#features"> |
||||
|
<div class="d-flex justify-content-between align-items-center" |
||||
|
style="background-color: #f5f5f5; padding: 30px; width: 100%;"> |
||||
|
<div> |
||||
|
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Features</span> |
||||
|
<span |
||||
|
style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View |
||||
|
features of this |
||||
|
module</span> |
||||
|
</div> |
||||
|
<img src="assets/misc/right-arrow.png" width="36" height="36"/> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div class="col-sm-12 col-md-6 my-3"> |
||||
|
<a href="#screenshots"> |
||||
|
<div class="d-flex justify-content-between align-items-center" |
||||
|
style="background-color: #f5f5f5; padding: 30px; width: 100%;"> |
||||
|
<div> |
||||
|
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Screenshots</span> |
||||
|
<span |
||||
|
style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View |
||||
|
screenshots for this |
||||
|
module</span> |
||||
|
</div> |
||||
|
<img src="assets/misc/right-arrow.png" width="36" height="36"/> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- END OF NAVIGATION SECTION --> |
||||
|
|
||||
|
<!-- OVERVIEW SECTION --> |
||||
|
<div class="d-flex align-items-center" |
||||
|
style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="overview"> |
||||
|
<div class="d-flex justify-content-center align-items-center mr-2" |
||||
|
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |
||||
|
<img src="assets/misc/pie-chart.png"/> |
||||
|
</div> |
||||
|
<h2 class="mt-2" |
||||
|
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |
||||
|
Overview |
||||
|
</h2> |
||||
|
</div> |
||||
|
<div class="row" |
||||
|
style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;"> |
||||
|
<div class="col-sm-12 py-4"> |
||||
|
This module helps to manage a legal case management firm.Set different access rights for the module. |
||||
|
You can create invoices for different payment methods.If the lawyer is busy with other case, user can assign junior lawyers |
||||
|
for particular case. |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- END OF OVERVIEW SECTION --> |
||||
|
|
||||
|
<!-- FEATURES SECTION --> |
||||
|
<div class="d-flex align-items-center" |
||||
|
style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="features"> |
||||
|
<div class="d-flex justify-content-center align-items-center mr-2" |
||||
|
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |
||||
|
<img src="assets/misc/features.png"/> |
||||
|
</div> |
||||
|
<h2 class="mt-2" |
||||
|
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |
||||
|
Features |
||||
|
</h2> |
||||
|
</div> |
||||
|
<div class="row" |
||||
|
style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;"> |
||||
|
<div class="col-sm-12 col-md-6"> |
||||
|
<div class="d-flex align-items-center" |
||||
|
style="margin-top: 40px; margin-bottom: 40px"> |
||||
|
<img src="assets/misc/check-box.png" class="mr-2"/> |
||||
|
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Different access rights for admin,lawyer and clerk</span> |
||||
|
</div> |
||||
|
<div class="d-flex align-items-center" |
||||
|
style="margin-top: 40px; margin-bottom: 40px"> |
||||
|
<img src="assets/misc/check-box.png" class="mr-2"/> |
||||
|
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Creation of lawyers and their wages for trial and case</span> |
||||
|
</div> |
||||
|
<div class="d-flex align-items-center" |
||||
|
style="margin-top: 40px; margin-bottom: 40px"> |
||||
|
<img src="assets/misc/check-box.png" class="mr-2"/> |
||||
|
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Case registration through form</span> |
||||
|
</div> |
||||
|
<div class="d-flex align-items-center" |
||||
|
style="margin-top: 40px; margin-bottom: 40px"> |
||||
|
<img src="assets/misc/check-box.png" class="mr-2"/> |
||||
|
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Adding Evidence ,Trial and attachment for corresponding cases</span> |
||||
|
</div> |
||||
|
<div class="d-flex align-items-center" |
||||
|
style="margin-top: 30px; margin-bottom: 30px"> |
||||
|
<img src="assets/misc/check-box.png" class="mr-2"/> |
||||
|
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Invoicing For trial, case, out of court and full settlement</span> |
||||
|
</div> |
||||
|
<div class="d-flex align-items-center" |
||||
|
style="margin-top: 30px; margin-bottom: 30px"> |
||||
|
<img src="assets/misc/check-box.png" class="mr-2"/> |
||||
|
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">If the lawyers are busy with other cases, user can assign junior lawyers</span> |
||||
|
</div> |
||||
|
<div class="d-flex align-items-center" |
||||
|
style="margin-top: 30px; margin-bottom: 30px"> |
||||
|
<img src="assets/misc/check-box.png" class="mr-2"/> |
||||
|
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Case registration through portal</span> |
||||
|
</div> |
||||
|
<div class="d-flex align-items-center" |
||||
|
style="margin-top: 30px; margin-bottom: 30px"> |
||||
|
<img src="assets/misc/check-box.png" class="mr-2"/> |
||||
|
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Portal users can see the corresponding case details</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- END OF FEATURES SECTION --> |
||||
|
|
||||
|
<!-- SCREENSHOTS SECTION --> |
||||
|
<div class="d-flex align-items-center" |
||||
|
style="border-bottom: 2px solid #714B67; padding: 15px 0px;" |
||||
|
id="screenshots"> |
||||
|
<div class="d-flex justify-content-center align-items-center mr-2" |
||||
|
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |
||||
|
<img src="assets/misc/pictures.png"/> |
||||
|
</div> |
||||
|
<h2 class="mt-2" |
||||
|
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |
||||
|
Screenshots |
||||
|
</h2> |
||||
|
</div> |
||||
|
<div class="row"> |
||||
|
<div class="col-sm-12"> |
||||
|
|
||||
|
<div style="display: block; margin: 30px auto;"> |
||||
|
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
||||
|
Different access rights for admin,lawyer and clerk</h3> |
||||
|
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"> |
||||
|
Go to Settings -> Users -> You can select different access rights for users</p> |
||||
|
<img src="assets/screenshots/legal_1.png" class="img-thumbnail"> |
||||
|
</div> |
||||
|
<div style="display: block; margin: 30px auto;"> |
||||
|
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
||||
|
Create Lawyers and set wages for case and trial</h3> |
||||
|
<img src="assets/screenshots/legal_1.1.png" class="img-thumbnail"> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
<div style="display: block; margin: 30px auto;"> |
||||
|
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
||||
|
Case registration through form</h3> |
||||
|
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"> |
||||
|
You can register case with giving following details</p> |
||||
|
<img src="assets/screenshots/legal_2.png" class="img-thumbnail"> |
||||
|
</div> |
||||
|
|
||||
|
<div style="display: block; margin: 30px auto;"> |
||||
|
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
||||
|
Adding Evidence ,Trial and attachment for corresponding cases</h3> |
||||
|
<img src="assets/screenshots/legal_3.png" class="img-thumbnail"> |
||||
|
</div> |
||||
|
|
||||
|
<div style="display: block; margin: 30px auto;"> |
||||
|
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
||||
|
Invoicing For trial, case, out of court and full settlement</h3> |
||||
|
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"> |
||||
|
1.Select the payment method of case</p> |
||||
|
<img src="assets/screenshots/legal_4.png" class="img-thumbnail"> |
||||
|
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"> |
||||
|
2.Invoice for corresponding payment method </p> |
||||
|
<img src="assets/screenshots/legal_4.1.png" class="img-thumbnail"> |
||||
|
</div> |
||||
|
<div style="display: block; margin: 30px auto;"> |
||||
|
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
||||
|
If the lawyers are busy with other cases, user can assign junior lawyer</h3> |
||||
|
<img src="assets/screenshots/legal_5.png" class="img-thumbnail"> |
||||
|
</div> |
||||
|
<div style="display: block; margin: 30px auto;"> |
||||
|
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
||||
|
Case registration through portal </h3> |
||||
|
<img src="assets/screenshots/legal6.png" class="img-thumbnail"> |
||||
|
</div> |
||||
|
<div style="display: block; margin: 30px auto;"> |
||||
|
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
||||
|
Portal users can see the corresponding case details </h3> |
||||
|
<img src="assets/screenshots/legal_7.png" class="img-thumbnail"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- END OF SCREENSHOTS SECTION --> |
||||
|
|
||||
|
<!-- RELATED PRODUCTS --> |
||||
|
<div class="d-flex align-items-center" |
||||
|
style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> |
||||
|
<div class="d-flex justify-content-center align-items-center mr-2" |
||||
|
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |
||||
|
<img src="assets/misc/categories.png"/> |
||||
|
</div> |
||||
|
<h2 class="mt-2" |
||||
|
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |
||||
|
Related |
||||
|
Products |
||||
|
</h2> |
||||
|
</div> |
||||
|
<div class="row"> |
||||
|
<div class="col-sm-12"> |
||||
|
<div id="demo1" class="row carousel slide" data-ride="carousel"> |
||||
|
<!-- The slideshow --> |
||||
|
<div class="carousel-inner" style="padding: 30px;"> |
||||
|
<div class="carousel-item" style="min-height: 198.656px;"> |
||||
|
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" |
||||
|
style="float:left"> |
||||
|
<a href="https://apps.odoo.com/apps/modules/16.0/website_repeat_sale/" |
||||
|
target="_blank"> |
||||
|
<div style="border-radius:10px"> |
||||
|
<img class="img img-responsive center-block" |
||||
|
style="border-radius: 0px;" |
||||
|
src="assets/modules/l1.png"> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" |
||||
|
style="float:left"> |
||||
|
<a href="https://apps.odoo.com/apps/modules/16.0/woo_commerce/" |
||||
|
target="_blank"> |
||||
|
<div style="border-radius:10px"> |
||||
|
<img class="img img-responsive center-block" |
||||
|
style="border-radius: 0px;" |
||||
|
src="assets/modules/l2.png"> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" |
||||
|
style="float:left"> |
||||
|
<a href="https://apps.odoo.com/apps/modules/16.0/shopify_odoo_connector/" |
||||
|
target="_blank"> |
||||
|
<div style="border-radius:10px"> |
||||
|
<img class="img img-responsive center-block" |
||||
|
style="border-radius: 0px;" |
||||
|
src="assets/modules/l3.png"> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="carousel-item active" |
||||
|
style="min-height: 198.656px;"> |
||||
|
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" |
||||
|
style="float:left"> |
||||
|
<a href="https://apps.odoo.com/apps/modules/16.0/odoo_dynamic_dashboard/" |
||||
|
target="_blank"> |
||||
|
<div style="border-radius:10px"> |
||||
|
<img class="img img-responsive center-block" |
||||
|
style="border-radius: 0px;" |
||||
|
src="assets/modules/l4.png"> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" |
||||
|
style="float:left"> |
||||
|
<a href="https://apps.odoo.com/apps/modules/16.0/custom_gantt_view/" |
||||
|
target="_blank"> |
||||
|
<div style="border-radius:10px"> |
||||
|
<img class="img img-responsive center-block" |
||||
|
style="border-radius: 0px;" |
||||
|
src="assets/modules/l5.png"> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" |
||||
|
style="float:left"> |
||||
|
<a href="https://apps.odoo.com/apps/modules/16.0/pos_credit_limit/" |
||||
|
target="_blank"> |
||||
|
<div style="border-radius:10px"> |
||||
|
<img class="img img-responsive center-block" |
||||
|
style="border-radius: 0px;" |
||||
|
src="assets/modules/l6.png"> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- Left and right controls --> |
||||
|
<a class="carousel-control-prev" href="#demo1" data-slide="prev" |
||||
|
style="width:35px; color:#000"> <span |
||||
|
class="carousel-control-prev-icon"><i |
||||
|
class="fa fa-chevron-left" |
||||
|
style="font-size:24px"></i></span> |
||||
|
</a> <a class="carousel-control-next" href="#demo1" |
||||
|
data-slide="next" style="width:35px; color:#000"> |
||||
|
<span class="carousel-control-next-icon"><i |
||||
|
class="fa fa-chevron-right" |
||||
|
style="font-size:24px"></i></span> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- END OF RELATED PRODUCTS --> |
||||
|
|
||||
|
<!-- OUR SERVICES --> |
||||
|
|
||||
|
<div class="d-flex align-items-center" |
||||
|
style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> |
||||
|
<div class="d-flex justify-content-center align-items-center mr-2" |
||||
|
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |
||||
|
<img src="assets/misc/star.png"/> |
||||
|
</div> |
||||
|
<h2 class="mt-2" |
||||
|
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |
||||
|
Our Services |
||||
|
</h2> |
||||
|
</div> |
||||
|
|
||||
|
<div class="container my-5"> |
||||
|
<div class="row"> |
||||
|
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
||||
|
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
||||
|
style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
||||
|
<img src="assets/icons/cogs.png" class="img-responsive" |
||||
|
height="48px" width="48px"> |
||||
|
</div> |
||||
|
<h6 class="text-center" |
||||
|
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
||||
|
Odoo |
||||
|
Customization</h6> |
||||
|
</div> |
||||
|
|
||||
|
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
||||
|
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
||||
|
style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
||||
|
<img src="assets/icons/wrench.png" class="img-responsive" |
||||
|
height="48px" width="48px"> |
||||
|
</div> |
||||
|
<h6 class="text-center" |
||||
|
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
||||
|
Odoo |
||||
|
Implementation</h6> |
||||
|
</div> |
||||
|
|
||||
|
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
||||
|
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
||||
|
style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
||||
|
<img src="assets/icons/lifebuoy.png" class="img-responsive" |
||||
|
height="48px" width="48px"> |
||||
|
</div> |
||||
|
<h6 class="text-center" |
||||
|
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
||||
|
Odoo |
||||
|
Support</h6> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
||||
|
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
||||
|
style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
||||
|
<img src="assets/icons/user.png" class="img-responsive" |
||||
|
height="48px" width="48px"> |
||||
|
</div> |
||||
|
<h6 class="text-center" |
||||
|
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
||||
|
Hire |
||||
|
Odoo |
||||
|
Developer</h6> |
||||
|
</div> |
||||
|
|
||||
|
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
||||
|
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
||||
|
style="background-color: #54a0ff !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
||||
|
<img src="assets/icons/puzzle.png" class="img-responsive" |
||||
|
height="48px" width="48px"> |
||||
|
</div> |
||||
|
<h6 class="text-center" |
||||
|
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
||||
|
Odoo |
||||
|
Integration</h6> |
||||
|
</div> |
||||
|
|
||||
|
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
||||
|
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
||||
|
style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
||||
|
<img src="assets/icons/update.png" class="img-responsive" |
||||
|
height="48px" width="48px"> |
||||
|
</div> |
||||
|
<h6 class="text-center" |
||||
|
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
||||
|
Odoo |
||||
|
Migration</h6> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
||||
|
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
||||
|
style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
||||
|
<img src="assets/icons/consultation.png" class="img-responsive" |
||||
|
height="48px" width="48px"> |
||||
|
</div> |
||||
|
<h6 class="text-center" |
||||
|
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
||||
|
Odoo |
||||
|
Consultancy</h6> |
||||
|
</div> |
||||
|
|
||||
|
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
||||
|
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
||||
|
style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
||||
|
<img src="assets/icons/training.png" class="img-responsive" |
||||
|
height="48px" width="48px"> |
||||
|
</div> |
||||
|
<h6 class="text-center" |
||||
|
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
||||
|
Odoo |
||||
|
Implementation</h6> |
||||
|
</div> |
||||
|
|
||||
|
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
||||
|
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
||||
|
style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
||||
|
<img src="assets/icons/license.png" class="img-responsive" |
||||
|
height="48px" width="48px"> |
||||
|
</div> |
||||
|
<h6 class="text-center" |
||||
|
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
||||
|
Odoo |
||||
|
Licensing Consultancy</h6> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
<!-- END OF END OF OUR SERVICES --> |
||||
|
|
||||
|
<!-- OUR INDUSTRIES --> |
||||
|
|
||||
|
<div class="d-flex align-items-center" |
||||
|
style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> |
||||
|
<div class="d-flex justify-content-center align-items-center mr-2" |
||||
|
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |
||||
|
<img src="assets/misc/corporate.png"/> |
||||
|
</div> |
||||
|
<h2 class="mt-2" |
||||
|
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |
||||
|
Our |
||||
|
Industries |
||||
|
</h2> |
||||
|
</div> |
||||
|
|
||||
|
<div class="container my-5"> |
||||
|
<div class="row"> |
||||
|
<div class="col-lg-3"> |
||||
|
<div class="my-4 d-flex flex-column justify-content-center" |
||||
|
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |
||||
|
<img src="assets/icons/trading-black.png" |
||||
|
class="img-responsive mb-3" height="48px" width="48px"> |
||||
|
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
||||
|
Trading |
||||
|
</h5> |
||||
|
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
||||
|
Easily procure |
||||
|
and |
||||
|
sell your products</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="col-lg-3"> |
||||
|
<div class="my-4 d-flex flex-column justify-content-center" |
||||
|
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |
||||
|
<img src="assets/icons/pos-black.png" |
||||
|
class="img-responsive mb-3" height="48px" width="48px"> |
||||
|
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
||||
|
POS |
||||
|
</h5> |
||||
|
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
||||
|
Easy |
||||
|
configuration |
||||
|
and convivial experience</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="col-lg-3"> |
||||
|
<div class="my-4 d-flex flex-column justify-content-center" |
||||
|
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |
||||
|
<img src="assets/icons/education-black.png" |
||||
|
class="img-responsive mb-3" height="48px" width="48px"> |
||||
|
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
||||
|
Education |
||||
|
</h5> |
||||
|
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
||||
|
A platform for |
||||
|
educational management</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="col-lg-3"> |
||||
|
<div class="my-4 d-flex flex-column justify-content-center" |
||||
|
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |
||||
|
<img src="assets/icons/manufacturing-black.png" |
||||
|
class="img-responsive mb-3" height="48px" |
||||
|
width="48px"> |
||||
|
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
||||
|
Manufacturing |
||||
|
</h5> |
||||
|
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
||||
|
Plan, track and |
||||
|
schedule your operations</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="col-lg-3"> |
||||
|
<div class="my-4 d-flex flex-column justify-content-center" |
||||
|
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |
||||
|
<img src="assets/icons/ecom-black.png" |
||||
|
class="img-responsive mb-3" height="48px" width="48px"> |
||||
|
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
||||
|
E-commerce & Website |
||||
|
</h5> |
||||
|
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
||||
|
Mobile |
||||
|
friendly, |
||||
|
awe-inspiring product pages</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="col-lg-3"> |
||||
|
<div class="my-4 d-flex flex-column justify-content-center" |
||||
|
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |
||||
|
<img src="assets/icons/service-black.png" |
||||
|
class="img-responsive mb-3" height="48px" width="48px"> |
||||
|
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
||||
|
Service Management |
||||
|
</h5> |
||||
|
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
||||
|
Keep track of |
||||
|
services and invoice</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="col-lg-3"> |
||||
|
<div class="my-4 d-flex flex-column justify-content-center" |
||||
|
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |
||||
|
<img src="assets/icons/restaurant-black.png" |
||||
|
class="img-responsive mb-3" height="48px" width="48px"> |
||||
|
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
||||
|
Restaurant |
||||
|
</h5> |
||||
|
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
||||
|
Run your bar or |
||||
|
restaurant methodically</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="col-lg-3"> |
||||
|
<div class="my-4 d-flex flex-column justify-content-center" |
||||
|
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |
||||
|
<img src="assets/icons/hotel-black.png" |
||||
|
class="img-responsive mb-3" height="48px" width="48px"> |
||||
|
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
||||
|
Hotel Management |
||||
|
</h5> |
||||
|
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
||||
|
An |
||||
|
all-inclusive |
||||
|
hotel management application</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<!-- END OF END OF OUR INDUSTRIES --> |
||||
|
|
||||
|
<!-- SUPPORT --> |
||||
|
<div class="d-flex align-items-center" |
||||
|
style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> |
||||
|
<div class="d-flex justify-content-center align-items-center mr-2" |
||||
|
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |
||||
|
<img src="assets/misc/customer-support.png"/> |
||||
|
</div> |
||||
|
<h2 class="mt-2" |
||||
|
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |
||||
|
Support |
||||
|
</h2> |
||||
|
</div> |
||||
|
<div class="container mt-5"> |
||||
|
<div class="row"> |
||||
|
<div class="col-sm-12 col-md-6"> |
||||
|
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;"> |
||||
|
<div class="mr-4" |
||||
|
style="background-color: #714B67; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;"> |
||||
|
<img src="assets/misc/support.png" height="48" width="48" |
||||
|
style="width: 42px; height: 42px;"/> |
||||
|
</div> |
||||
|
<div> |
||||
|
<h4>Need Help?</h4> |
||||
|
<p style="line-height: 100%;">Got questions or need help? |
||||
|
Get in touch.</p> |
||||
|
<a href="mailto:odoo@cybrosys.com"> |
||||
|
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;"> |
||||
|
odoo@cybrosys.com</p> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-sm-12 col-md-6"> |
||||
|
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;"> |
||||
|
<div class="mr-4" |
||||
|
style="background-color: #2AC44D; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;"> |
||||
|
<img src="assets/misc/whatsapp.png" height="52" width="52" |
||||
|
style="width: 52px; height: 52px;"/> |
||||
|
</div> |
||||
|
<div> |
||||
|
<h4>WhatsApp</h4> |
||||
|
<p style="line-height: 100%;">Say hi to us on WhatsApp!</p> |
||||
|
<a href="https://api.whatsapp.com/send?phone=918606827707"> |
||||
|
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;"> |
||||
|
+91 86068 |
||||
|
27707</p> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="row"> |
||||
|
<div class="col-sm-12 my-5 d-flex justify-content-center align-items-center"> |
||||
|
<img src="assets/misc/logo.png" width="144" height="31" |
||||
|
style="width:144px; height: 31px; margin-top: 40px;"/> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- END OF SUPPORT --> |
@ -0,0 +1,17 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- Form View For Invoice --> |
||||
|
<record id="account_move_view_form" model="ir.ui.view"> |
||||
|
<field name="name"> |
||||
|
account.move.view.form.inherit.legal.case.management |
||||
|
</field> |
||||
|
<field name="model">account.move</field> |
||||
|
<field name="inherit_id" ref="account.view_move_form"/> |
||||
|
<field name="arch" type="xml"> |
||||
|
<xpath expr="//group/group[@id='header_left_group']" |
||||
|
position="inside"> |
||||
|
<field name="case_ref"/> |
||||
|
</xpath> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,13 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- Tree View For Case Category --> |
||||
|
<record id="case_category_view_tree" model="ir.ui.view"> |
||||
|
<field name="name">case.category.tree</field> |
||||
|
<field name="model">case.category</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<tree editable="bottom"> |
||||
|
<field name="name"/> |
||||
|
</tree> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,132 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<odoo> |
||||
|
<!-- Template For Case registration in Portal View--> |
||||
|
<template id="portal_my_home_legal_case" name="Legal Cases" |
||||
|
customize_show="True" inherit_id="portal.portal_my_home"> |
||||
|
<xpath expr="//div[hasclass('o_portal_docs')]" position="inside"> |
||||
|
<t t-call="portal.portal_docs_entry"> |
||||
|
<t t-set="title">Legal Case</t> |
||||
|
<t t-set="url" t-value="'/my/legal/case'"/> |
||||
|
<t t-set="placeholder_count" t-value="'case_count'"/> |
||||
|
</t> |
||||
|
</xpath> |
||||
|
</template> |
||||
|
<template id="portal_my_legal_case_requests" |
||||
|
name="Portal My Cse Details"> |
||||
|
<t t-call="portal.portal_layout"> |
||||
|
<t t-set="breadcrumbs_searchbar" t-value="True"/> |
||||
|
<t t-call="portal.portal_searchbar"> |
||||
|
<t t-set="title">My Cases</t> |
||||
|
</t> |
||||
|
<t t-call="portal.portal_table"> |
||||
|
<thead> |
||||
|
<tr class="active"> |
||||
|
<th>Case #</th> |
||||
|
<th>Date</th> |
||||
|
<th class='d-none d-md-table-cell'>Details</th> |
||||
|
<th>Status</th> |
||||
|
</tr> |
||||
|
</thead> |
||||
|
<tbody> |
||||
|
<t t-foreach="records" t-as="case"> |
||||
|
<tr> |
||||
|
<td> |
||||
|
<a t-attf-href="/my/cases/#{case.id}?{{ keep_query() }}" |
||||
|
t-att-title="case.name"> |
||||
|
<t t-esc="case.name"/> |
||||
|
</a> |
||||
|
</td> |
||||
|
<td> |
||||
|
<t t-esc="case.register_date"/> |
||||
|
</td> |
||||
|
<td> |
||||
|
<t t-esc="case.description"/> |
||||
|
</td> |
||||
|
<td> |
||||
|
<t t-if="case.state=='draft'"> |
||||
|
<span class="badge rounded-pill text-bg-info"> |
||||
|
<i class="fa fa-fw fa-clock-o" |
||||
|
aria-label="Opened" title="Opened" |
||||
|
role="img"/> |
||||
|
<span class="d-none d-md-inline">Draft |
||||
|
</span> |
||||
|
</span> |
||||
|
</t> |
||||
|
<t t-if="case.state=='in_progress'"> |
||||
|
<span class="badge rounded-pill text-bg-success"> |
||||
|
<i class="fa fa-fw fa-check" |
||||
|
aria-label="In Progress" title="Paid" |
||||
|
role="img"/> |
||||
|
<span class="d-none d-md-inline">In |
||||
|
Progress |
||||
|
</span> |
||||
|
</span> |
||||
|
</t> |
||||
|
<t t-if="case.state=='invoiced'"> |
||||
|
<span class="badge rounded-pill text-bg-success"> |
||||
|
<i class="fa fa-fw fa-check" |
||||
|
aria-label="Reversed" |
||||
|
title="Invoiced" role="img"/> |
||||
|
<span class="d-none d-md-inline"> |
||||
|
Invoiced |
||||
|
</span> |
||||
|
</span> |
||||
|
</t> |
||||
|
<t t-if="case.state=='reject'"> |
||||
|
<span class="badge rounded-pill text-bg-success"> |
||||
|
<i class="fa fa-fw fa-check" |
||||
|
aria-label="Reversed" |
||||
|
title="Invoiced" role="img"/> |
||||
|
<span class="d-none d-md-inline"> |
||||
|
Invoiced |
||||
|
</span> |
||||
|
</span> |
||||
|
</t> |
||||
|
<t t-if="case.state=='won'"> |
||||
|
<span class="badge rounded-pill text-bg-success"> |
||||
|
<i class="fa fa-fw fa-check" |
||||
|
aria-label="Reversed" |
||||
|
title="Invoiced" role="img"/> |
||||
|
<span class="d-none d-md-inline"> |
||||
|
Won |
||||
|
</span> |
||||
|
</span> |
||||
|
</t> |
||||
|
<t t-if="case.state=='lost'"> |
||||
|
<span class="badge rounded-pill text-bg-danger"> |
||||
|
<i class="fa fa-fw fa-check" |
||||
|
aria-label="Reversed" |
||||
|
title="Lost" role="img"/> |
||||
|
<span class="d-none d-md-inline"> |
||||
|
Lost |
||||
|
</span> |
||||
|
</span> |
||||
|
</t> |
||||
|
<t t-if="case.state=='cancel'"> |
||||
|
<span class="badge rounded-pill text-bg-warning"> |
||||
|
<i class="fa fa-fw fa-remove" |
||||
|
aria-label="Cancelled" |
||||
|
title="Cancelled" role="img"/> |
||||
|
<span class="d-none d-md-inline"> |
||||
|
Cancelled |
||||
|
</span> |
||||
|
</span> |
||||
|
</t> |
||||
|
</td> |
||||
|
</tr> |
||||
|
</t> |
||||
|
</tbody> |
||||
|
</t> |
||||
|
</t> |
||||
|
</template> |
||||
|
<template id="portal_my_home_menu_legal_case" |
||||
|
name="Portal layout : Legal menu entries" |
||||
|
inherit_id="portal.portal_breadcrumbs"> |
||||
|
<xpath expr="//ol[hasclass('o_portal_submenu')]" position="inside"> |
||||
|
<li t-if="page_name == 'case'" class="breadcrumb-item"> |
||||
|
<a t-attf-href="/my/legal/case?{{ keep_query() }}">Legal Cases |
||||
|
</a> |
||||
|
</li> |
||||
|
</xpath> |
||||
|
</template> |
||||
|
</odoo> |
@ -0,0 +1,145 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<odoo> |
||||
|
<!-- Template for the legal case registration view --> |
||||
|
<template id="legal_case_register_view"> |
||||
|
<t t-call="website.layout"> |
||||
|
<t t-set="case_categories" |
||||
|
t-value="request.env['case.category'].sudo().search([])"/> |
||||
|
<div id="wrap" class="oe_structure oe_empty"> |
||||
|
<section class="s_website_form" data-vcss="001" |
||||
|
data-snippet="s_website_form"> |
||||
|
<div class="s_col_no_bgcolor container s_allow_columns"> |
||||
|
<div class="container"> |
||||
|
<br/> |
||||
|
<h3 style="margin-left:200px;">Case Registration |
||||
|
</h3> |
||||
|
<br/> |
||||
|
</div> |
||||
|
<div class="container mt-4 mb-5"> |
||||
|
<form role="form" |
||||
|
action="/submit/create/case" |
||||
|
method="post" enctype="multipart/form-data"> |
||||
|
<input type="hidden" name="csrf_token" |
||||
|
t-att-value="request.csrf_token()"/> |
||||
|
<!-- Case Details field --> |
||||
|
<div class="mb-0 py-2 col-12 s_website_form_field |
||||
|
s_website_form_custom s_website_form_required" |
||||
|
data-type="char" data-name="Field"> |
||||
|
<div class="row s_col_no_resize s_col_no_bgcolor"> |
||||
|
<label class="col-form-label col-sm-auto |
||||
|
s_website_form_label" |
||||
|
style="width: 200px" |
||||
|
for="description" |
||||
|
required="True"> |
||||
|
<span class="s_website_form_label_content"> |
||||
|
Case Details |
||||
|
</span> |
||||
|
</label> |
||||
|
<div class="col-sm"> |
||||
|
<textarea id="description" |
||||
|
type="text" |
||||
|
class="form-control |
||||
|
s_website_form_input" |
||||
|
name="description" |
||||
|
required="True"/> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- Case Category field --> |
||||
|
<div class="mb-0 py-2 col-12 |
||||
|
s_website_form_field s_website_form_custom |
||||
|
s_website_form_required" |
||||
|
data-type="char" data-name="Field"> |
||||
|
<div class="row s_col_no_resize s |
||||
|
_col_no_bgcolor"> |
||||
|
<label class="col-form-label |
||||
|
col-sm-auto s_website_form_label" |
||||
|
style="width: 200px" |
||||
|
for="description"> |
||||
|
<span class="s_website_form_label_content"> |
||||
|
Case Category |
||||
|
</span> |
||||
|
</label> |
||||
|
<div class="col-sm"> |
||||
|
<select class="form-control s_website_form_input" |
||||
|
name="case_category" |
||||
|
required="True"> |
||||
|
<t t-foreach="case_categories" |
||||
|
t-as="category"> |
||||
|
<option t-att-value="category.id"> |
||||
|
<t t-esc="category.name"/> |
||||
|
</option> |
||||
|
</t> |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- Attachments field --> |
||||
|
<div class="mb-0 py-2 col-12 s_website_form_field |
||||
|
s_website_form_custom s_website_form_required" |
||||
|
data-type="char" data-name="Field"> |
||||
|
<div class="row s_col_no_resize s_col_no_bgcolor"> |
||||
|
<label class="col-form-label col-sm-auto |
||||
|
s_website_form_label" |
||||
|
style="width: 200px" |
||||
|
for="description"> |
||||
|
<span class="s_website_form_label_content"> |
||||
|
Attachments |
||||
|
</span> |
||||
|
</label> |
||||
|
<div class="col-sm"> |
||||
|
<input class="file" |
||||
|
type="file" |
||||
|
name="attachments" |
||||
|
multiple="true" |
||||
|
data-show-upload="true" |
||||
|
data-show-caption="true" |
||||
|
accept="image/*,application/pdf,video/*"/> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="mb-0 py-2 col-12 s_website_form_field |
||||
|
s_website_form_custom s_website_form_required" |
||||
|
data-type="char" data-name="Field"> |
||||
|
<div class="row s_col_no_resize s_col_no_bgcolor"> |
||||
|
<label class="col-form-label col-sm-auto |
||||
|
s_website_form_label" |
||||
|
style="width: 200px" |
||||
|
for="description"> |
||||
|
<span class="s_website_form_label_content"> |
||||
|
Contact No |
||||
|
</span> |
||||
|
</label> |
||||
|
<div class="col-sm"> |
||||
|
<input id="description" type="text" |
||||
|
class="form-control |
||||
|
s_website_form_input" |
||||
|
name="contact" |
||||
|
required="True" |
||||
|
/> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- Submit Button --> |
||||
|
<div class="mb-0 py-2 col-12 s_website_form_field |
||||
|
s_website_form_custom s_website_form_required" |
||||
|
data-type="char" data-name="Field"> |
||||
|
<div class="form-group col-12 |
||||
|
s_website_form_submit" |
||||
|
data-name="Submit Button"> |
||||
|
<div style="width: 200px;" |
||||
|
class="s_website_form_label"/> |
||||
|
<button type="submit" id="upload" |
||||
|
class="btn btn-primary upload"> |
||||
|
Submit |
||||
|
</button> |
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
</div> |
||||
|
</t> |
||||
|
</template> |
||||
|
</odoo> |
@ -0,0 +1,246 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- Tree View For Case Registration --> |
||||
|
<record id="case_registration_view_tree" model="ir.ui.view"> |
||||
|
<field name="name">case.registration.tree</field> |
||||
|
<field name="model">case.registration</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<tree> |
||||
|
<field name="name"/> |
||||
|
<field name="client_id"/> |
||||
|
<field name="lawyer_id" optional="hide"/> |
||||
|
<field name="court_id"/> |
||||
|
<field name="state" |
||||
|
decoration-success="state == 'in progress' or state == 'won'" |
||||
|
decoration-info="state == 'draft'" widget="badge"/> |
||||
|
</tree> |
||||
|
</field> |
||||
|
</record> |
||||
|
<!-- Kanban View For Case registration--> |
||||
|
<record id="case_registration_view_kanban" model="ir.ui.view"> |
||||
|
<field name="name">case.registration.kanban</field> |
||||
|
<field name="model">case.registration</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<kanban> |
||||
|
<field name="name"/> |
||||
|
<field name="client_id"/> |
||||
|
<field name="lawyer_id"/> |
||||
|
<field name="state"/> |
||||
|
<templates> |
||||
|
<t t-name="kanban-box"> |
||||
|
<div t-attf-class="oe_kanban_card oe_kanban_global_click"> |
||||
|
<div class="oe_kanban_details"> |
||||
|
<ul type="none"> |
||||
|
<li> |
||||
|
<strong class="o_kanban_record_title"> |
||||
|
<span> |
||||
|
<field name="name"/> |
||||
|
</span> |
||||
|
</strong> |
||||
|
</li> |
||||
|
<li> |
||||
|
<strong class="o_kanban_record_subtitle"> |
||||
|
Client: |
||||
|
<field name="client_id"/> |
||||
|
</strong> |
||||
|
</li> |
||||
|
<li> |
||||
|
<strong class="o_kanban_record_subtitle"> |
||||
|
Lawyer: |
||||
|
<field name="lawyer_id"/> |
||||
|
</strong> |
||||
|
</li> |
||||
|
<li> |
||||
|
<field name="state" |
||||
|
decoration-success="state == 'in progress' |
||||
|
or state == 'won'" |
||||
|
decoration-info="state == 'draft'" |
||||
|
widget="badge"/> |
||||
|
</li> |
||||
|
</ul> |
||||
|
</div> |
||||
|
</div> |
||||
|
</t> |
||||
|
</templates> |
||||
|
</kanban> |
||||
|
</field> |
||||
|
</record> |
||||
|
<!-- Form view For Case Registration --> |
||||
|
<record id="case_registration_view_form" model="ir.ui.view"> |
||||
|
<field name="name">case.registration.view.form</field> |
||||
|
<field name="model">case.registration</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form> |
||||
|
<header> |
||||
|
<field name="state" widget="statusbar" |
||||
|
statusbar_visible="draft,in_progress,invoiced"/> |
||||
|
<button name="action_confirm" |
||||
|
string="Confirm" type="object" |
||||
|
class="oe_highlight" states="draft"/> |
||||
|
<button name="action_reject" string="Reject" type="object" |
||||
|
class="oe_highlight" states="draft"/> |
||||
|
<button name="action_evidence" string="Evidence" |
||||
|
type="object" |
||||
|
class="oe_highlight" states="in_progress"/> |
||||
|
<button name="action_trial" string="Trial" type="object" |
||||
|
class="oe_highlight" states="in_progress"/> |
||||
|
<button name="action_invoice" |
||||
|
string="Create Invoice" type="object" |
||||
|
class="oe_highlight" states="in_progress"/> |
||||
|
<button name="action_full_settlement" |
||||
|
string="Full Settlement" type="object" |
||||
|
class="btn-secondary" states="in_progress"/> |
||||
|
<button name="action_won" |
||||
|
string="Won" type="object" |
||||
|
class="oe_highlight" states="invoiced"/> |
||||
|
<button name="action_lost" |
||||
|
string="Lost" type="object" |
||||
|
class="btn-secondary" states="invoiced"/> |
||||
|
<button name="action_cancel" |
||||
|
string="Cancel" type="object" |
||||
|
class="btn-secondary" states="in_progress"/> |
||||
|
<button name="action_reset_to_draft" |
||||
|
string="Reset To Draft" type="object" |
||||
|
class="oe_highlight" states="cancel"/> |
||||
|
</header> |
||||
|
<sheet> |
||||
|
<div name="button_box" position="inside"> |
||||
|
<button name="get_attachments" type="object" |
||||
|
class="oe_stat_button" |
||||
|
icon="fa-paperclip"> |
||||
|
<div class="o_field_widget o_stat_info"> |
||||
|
<span class="o_stat_value"> |
||||
|
<field name="case_attachment_count"/> |
||||
|
</span> |
||||
|
<span class="o_stat_text">Attachment</span> |
||||
|
</div> |
||||
|
</button> |
||||
|
<button name="get_invoice" type="object" |
||||
|
class="oe_stat_button" |
||||
|
icon="fa-pencil-square-o" |
||||
|
attrs="{'invisible':[('state','=','draft')]}"> |
||||
|
<div class="o_field_widget o_stat_info"> |
||||
|
<span class="o_stat_value"> |
||||
|
<field name="invoice_count"/> |
||||
|
</span> |
||||
|
<span class="o_stat_text">Invoice</span> |
||||
|
</div> |
||||
|
</button> |
||||
|
<button name="get_evidence" type="object" |
||||
|
class="oe_stat_button" |
||||
|
icon="fa-eye" |
||||
|
attrs="{'invisible':[('state','=','draft')]}"> |
||||
|
<div class="o_field_widget o_stat_info"> |
||||
|
<span class="o_stat_value"> |
||||
|
<field name="evidence_count"/> |
||||
|
</span> |
||||
|
<span class="o_stat_text">Evidence</span> |
||||
|
</div> |
||||
|
</button> |
||||
|
<button name="get_trial" type="object" |
||||
|
class="oe_stat_button" |
||||
|
icon="fa-gavel" |
||||
|
attrs="{'invisible':[('state','=','draft')]}"> |
||||
|
<div class="o_field_widget o_stat_info"> |
||||
|
<span class="o_stat_value"> |
||||
|
<field name="trial_count"/> |
||||
|
</span> |
||||
|
<span class="o_stat_text">Trial</span> |
||||
|
</div> |
||||
|
</button> |
||||
|
</div> |
||||
|
<group> |
||||
|
<h1> |
||||
|
<field name="name" placeholder="Case No"/> |
||||
|
</h1> |
||||
|
</group> |
||||
|
<group> |
||||
|
<group> |
||||
|
<field name="client_id"/> |
||||
|
<field name="email"/> |
||||
|
<field name="company_id"/> |
||||
|
</group> |
||||
|
<group> |
||||
|
<field name="start_date" |
||||
|
attrs="{'readonly':[('state', 'in', ['won', 'lost', 'cancel'])]}"/> |
||||
|
<field name="end_date" readonly="1" |
||||
|
attrs="{'invisible':[('state', 'in', ['invoiced', 'in_progress', 'draft'])]}"/> |
||||
|
<field name="contact_no"/> |
||||
|
<field name="payment_method" |
||||
|
attrs="{'invisible':[('state','=','draft')]}"/> |
||||
|
<field name="register_date" |
||||
|
attrs="{'invisible':[ ('state','!=','draft')]}"/> |
||||
|
</group> |
||||
|
</group> |
||||
|
<notebook> |
||||
|
<page string="Description"> |
||||
|
<field name="description"/> |
||||
|
</page> |
||||
|
<page string="Case Details"> |
||||
|
<group> |
||||
|
<group> |
||||
|
<field name="lawyer_unavailable" |
||||
|
invisible="1"/> |
||||
|
<field name="lawyer_id" |
||||
|
attrs="{'invisible':[('state','=','draft')]}" |
||||
|
options="{'no_create': True}"/> |
||||
|
<field name="junior_lawyer_id" |
||||
|
attrs="{'invisible':['|', ('state','=','draft'), ('lawyer_unavailable','=',False)]}" |
||||
|
options="{'no_create': True}"/> |
||||
|
<field name="case_category_id"/> |
||||
|
</group> |
||||
|
<group> |
||||
|
<field name="court_no_required" |
||||
|
invisible="1"/> |
||||
|
<field name="court_id" attrs="{'required':[('court_no_required','!=',False), ('state', '!=', 'draft')], |
||||
|
'invisible': [('state', '=', 'draft')]}" |
||||
|
options="{'no_create': True}"/> |
||||
|
<field name="judge_id" |
||||
|
attrs="{'invisible':[('state','=','draft')]}" |
||||
|
options="{'no_create': True, 'no_open': True}"/> |
||||
|
</group> |
||||
|
</group> |
||||
|
</page> |
||||
|
<page string="Oppositions" |
||||
|
attrs="{'invisible': [('state', '=', 'draft')]}"> |
||||
|
<group> |
||||
|
<group> |
||||
|
<field name="opposition_name"/> |
||||
|
<field name="opp_party_contact"/> |
||||
|
</group> |
||||
|
<group> |
||||
|
<field name="opposite_lawyer"/> |
||||
|
</group> |
||||
|
</group> |
||||
|
</page> |
||||
|
<page string="Victim" |
||||
|
attrs="{'invisible':[('state','=','draft')]}"> |
||||
|
<field name="victim_ids"> |
||||
|
<tree editable="bottom"> |
||||
|
<field name="name"/> |
||||
|
<field name="contact"/> |
||||
|
</tree> |
||||
|
</field> |
||||
|
</page> |
||||
|
<page string="Sittings" |
||||
|
attrs="{'invisible':[('state','=','draft')]}"> |
||||
|
<field name="sitting_detail_ids"> |
||||
|
<tree editable="bottom"> |
||||
|
<field name="details"/> |
||||
|
<field name="contact"/> |
||||
|
<field name="date"/> |
||||
|
<field name="done"/> |
||||
|
</tree> |
||||
|
</field> |
||||
|
</page> |
||||
|
</notebook> |
||||
|
</sheet> |
||||
|
<div class="oe_chatter"> |
||||
|
<field name="message_follower_ids"/> |
||||
|
<field name="activity_ids"/> |
||||
|
<field name="message_ids"/> |
||||
|
</div> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,29 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<odoo> |
||||
|
<!-- Form View For Employee Form --> |
||||
|
<record id="view_employee_form" model="ir.ui.view"> |
||||
|
<field name="name">hr.employee.view.form.inherit.legal.case.management |
||||
|
</field> |
||||
|
<field name="model">hr.employee</field> |
||||
|
<field name="inherit_id" ref="hr.view_employee_form"/> |
||||
|
<field name="arch" type="xml"> |
||||
|
<xpath expr="//group/group[2]/field[@name='coach_id']" |
||||
|
position="after"> |
||||
|
<field name="is_lawyer"/> |
||||
|
</xpath> |
||||
|
<xpath expr="//notebook/page[@name='hr_settings']" |
||||
|
position="after"> |
||||
|
<page name="lawyer" string="Lawyer" |
||||
|
attrs="{'invisible':[('is_lawyer','=',False)]}"> |
||||
|
<group> |
||||
|
<field name="not_available"/> |
||||
|
</group> |
||||
|
<group string="Wages"> |
||||
|
<field name="wage_per_trial"/> |
||||
|
<field name="wage_per_case"/> |
||||
|
</group> |
||||
|
</page> |
||||
|
</xpath> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,150 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<odoo> |
||||
|
<!-- Actions --> |
||||
|
<record id="res_partner_action" model="ir.actions.act_window"> |
||||
|
<field name="name">Clients</field> |
||||
|
<field name="res_model">res.partner</field> |
||||
|
<field name="type">ir.actions.act_window</field> |
||||
|
<field name="view_mode">kanban,tree,form</field> |
||||
|
</record> |
||||
|
<record id="hr_employee_action" model="ir.actions.act_window"> |
||||
|
<field name="name">Employees</field> |
||||
|
<field name="res_model">hr.employee</field> |
||||
|
<field name="type">ir.actions.act_window</field> |
||||
|
<field name="view_mode">kanban,tree,form</field> |
||||
|
</record> |
||||
|
<record id="hr_employee_lawyer_action" model="ir.actions.act_window"> |
||||
|
<field name="name">Lawyers</field> |
||||
|
<field name="res_model">hr.employee</field> |
||||
|
<field name="type">ir.actions.act_window</field> |
||||
|
<field name="view_mode">kanban,tree,form</field> |
||||
|
<field name="domain">[('is_lawyer','!=',False)]</field> |
||||
|
<field name="context">{'default_is_lawyer': True}</field> |
||||
|
<field name="help" type="html"> |
||||
|
<p class="o_view_nocontent_smiling_face"> |
||||
|
No data yet! |
||||
|
</p> |
||||
|
<p> |
||||
|
Create New Lawyer |
||||
|
</p> |
||||
|
</field> |
||||
|
</record> |
||||
|
<record id="legal_evidence_action" model="ir.actions.act_window"> |
||||
|
<field name="name">Evidence</field> |
||||
|
<field name="res_model">legal.evidence</field> |
||||
|
<field name="type">ir.actions.act_window</field> |
||||
|
<field name="view_mode">tree,form</field> |
||||
|
<field name="help" type="html"> |
||||
|
<p class="o_view_nocontent_smiling_face"> |
||||
|
No data yet! |
||||
|
</p> |
||||
|
<p> |
||||
|
Create New Evidences |
||||
|
</p> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="legal_trial_action" model="ir.actions.act_window"> |
||||
|
<field name="name">Trial</field> |
||||
|
<field name="res_model">legal.trial</field> |
||||
|
<field name="type">ir.actions.act_window</field> |
||||
|
<field name="view_mode">tree,form</field> |
||||
|
<field name="help" type="html"> |
||||
|
<p class="o_view_nocontent_smiling_face"> |
||||
|
No data yet! |
||||
|
</p> |
||||
|
<p> |
||||
|
Create New Trials |
||||
|
</p> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="case_registration_action" model="ir.actions.act_window"> |
||||
|
<field name="name">Register Case</field> |
||||
|
<field name="res_model">case.registration</field> |
||||
|
<field name="view_mode">tree,form,kanban</field> |
||||
|
<field name="help" type="html"> |
||||
|
<p class="o_view_nocontent_smiling_face"> |
||||
|
No data yet! |
||||
|
</p> |
||||
|
<p> |
||||
|
Register New Case |
||||
|
</p> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="legal_court_action" model="ir.actions.act_window"> |
||||
|
<field name="name">Court</field> |
||||
|
<field name="res_model">legal.court</field> |
||||
|
<field name="view_mode">tree,form</field> |
||||
|
<field name="help" type="html"> |
||||
|
<p class="o_view_nocontent_smiling_face"> |
||||
|
No data yet! |
||||
|
</p> |
||||
|
<p> |
||||
|
Create New Court |
||||
|
</p> |
||||
|
</field> |
||||
|
</record> |
||||
|
<record id="legal_report_wizard_action" model="ir.actions.act_window"> |
||||
|
<field name="name">Case Category</field> |
||||
|
<field name="res_model">legal.case.report</field> |
||||
|
<field name="view_mode">form</field> |
||||
|
</record> |
||||
|
<record id="case_category_action" model="ir.actions.act_window"> |
||||
|
<field name="name">Case Category</field> |
||||
|
<field name="res_model">case.category</field> |
||||
|
<field name="view_mode">tree,form</field> |
||||
|
<field name="help" type="html"> |
||||
|
<p class="o_view_nocontent_smiling_face"> |
||||
|
No data yet! |
||||
|
</p> |
||||
|
<p> |
||||
|
Create New Case Category |
||||
|
</p> |
||||
|
</field> |
||||
|
</record> |
||||
|
<!-- Menus And Sub Menus--> |
||||
|
<menuitem id="legal_case_management_root" name="Legal Case Management" |
||||
|
groups="legal_case_management.legal_case_management_group_clerk,legal_case_management_group_lawyer,legal_case_management_group_admin"/> |
||||
|
|
||||
|
<menuitem id="menu_legal_case" name="Operations" |
||||
|
parent="legal_case_management_root" |
||||
|
groups="legal_case_management.legal_case_management_group_clerk,legal_case_management_group_lawyer,legal_case_management_group_admin" |
||||
|
sequence="2"/> |
||||
|
<menuitem id="case_registration_menu_action" name="Register Case" |
||||
|
parent="menu_legal_case" |
||||
|
sequence="1" |
||||
|
action="case_registration_action"/> |
||||
|
<menuitem id="menu_evidence" name="Evidence" parent="menu_legal_case" |
||||
|
sequence="2" action="legal_evidence_action"/> |
||||
|
<menuitem id="menu_trial" name="Trial" parent="menu_legal_case" sequence="3" |
||||
|
action="legal_trial_action"/> |
||||
|
|
||||
|
<menuitem id="menu_master_data" name="Master Data" |
||||
|
parent="legal_case_management_root" |
||||
|
groups="legal_case_management.legal_case_management_group_admin" |
||||
|
sequence="3"/> |
||||
|
<menuitem id="menu_customers" name="Clients" parent="menu_master_data" |
||||
|
sequence="2" action="res_partner_action"/> |
||||
|
<menuitem id="menu_employees" name="Office Staffs" parent="menu_master_data" |
||||
|
sequence="3" |
||||
|
action="hr_employee_action"/> |
||||
|
<menuitem id="menu_lawyers" name="Lawyers" parent="menu_master_data" |
||||
|
sequence="1" action="hr_employee_lawyer_action"/> |
||||
|
|
||||
|
<menuitem id="menu_legal_case_reporting" name="Reporting" |
||||
|
parent="legal_case_management_root" |
||||
|
groups="legal_case_management.legal_case_management_group_admin" |
||||
|
action="legal_case_report_action" sequence="4"/> |
||||
|
|
||||
|
<menuitem id="configuration_menu" name="Configuration" |
||||
|
parent="legal_case_management_root" |
||||
|
groups="legal_case_management.legal_case_management_group_admin" |
||||
|
sequence="5"/> |
||||
|
<menuitem id="court_menu_action" name="Court" parent="configuration_menu" |
||||
|
sequence="1" action="legal_court_action"/> |
||||
|
<menuitem id="case_category_menu_action" name="Case Category" |
||||
|
parent="configuration_menu" sequence="4" |
||||
|
action="case_category_action"/> |
||||
|
</odoo> |
@ -0,0 +1,198 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- Template For Portal View For Case Registration--> |
||||
|
<template id="portal_legal_case_page" name="Case Portal Template" |
||||
|
inherit_id="portal.portal_sidebar" primary="True"> |
||||
|
<xpath expr="//div[hasclass('o_portal_sidebar')]" position="inside"> |
||||
|
<t t-set="o_portal_fullwidth_alert"> |
||||
|
<t t-call="portal.portal_back_in_edit_mode"> |
||||
|
<t t-set="url" t-value="'/my/cases/#'"/> |
||||
|
</t> |
||||
|
</t> |
||||
|
<div class="row mt16 o_portal_sale_sidebar"> |
||||
|
<t t-set="o_portal_fullwidth_alert"> |
||||
|
<t t-call="portal.portal_back_in_edit_mode"> |
||||
|
<t t-set="backend_url" |
||||
|
t-value="'/web#return_label=Website&model=%s&id=%s&' % (case_record._name, case_record.id)"/> |
||||
|
</t> |
||||
|
</t> |
||||
|
<div id="case_content" |
||||
|
class="col-12 col-lg justify-content-end"> |
||||
|
<div t-attf-class="card #{'pb-5' if report_type == 'pdf' else ''}" |
||||
|
id="portal_sale_content"> |
||||
|
<div t-call="legal_case_management.case_portal_content"/> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div id="legal_case_communication" |
||||
|
class="mt-4"> |
||||
|
<h2>History</h2> |
||||
|
<t t-call="portal.message_thread"> |
||||
|
<t t-set="object" |
||||
|
t-value="case_record"/> |
||||
|
</t> |
||||
|
</div> |
||||
|
</div> |
||||
|
</xpath> |
||||
|
</template> |
||||
|
<!-- Template For Case Details in Portal View--> |
||||
|
<template id="case_portal_content" name="Payslip Portal Content"> |
||||
|
<div id="introduction" class="pb-2 pt-3 card-header bg-white"> |
||||
|
<h2 class="my-0"> |
||||
|
<t t-out="case_record.name"/> |
||||
|
</h2> |
||||
|
</div> |
||||
|
<div class="card-body"> |
||||
|
<!-- Informations --> |
||||
|
<div id="informations"> |
||||
|
<div class="row" id="so_date"> |
||||
|
<div class="mb-3 col-6"> |
||||
|
<strong>Register Date:</strong> |
||||
|
|
||||
|
<span t-field="case_record.start_date" |
||||
|
t-options='{"widget": "date"}'/> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="row" id="invoicing_shipping_address"> |
||||
|
<div class="col-lg-6"> |
||||
|
<strong class="d-block mb-1"> |
||||
|
|
||||
|
Client Details: |
||||
|
</strong> |
||||
|
<address t-field="case_record.client_id" |
||||
|
t-options='{"widget": "contact", "fields": ["address", "name"], "no_marker": True}'/> |
||||
|
</div> |
||||
|
<div id="lawyer_details" |
||||
|
class="col-lg-6"> |
||||
|
<t t-if="case_record.lawyer_id"> |
||||
|
<strong class="d-block mb-1"> |
||||
|
Lawyer: |
||||
|
</strong> |
||||
|
<address t-field="case_record.lawyer_id.name"/> |
||||
|
</t> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<section id="details" style="page-break-inside: auto;" class="mt32"> |
||||
|
<h3 id="details">Case Details</h3> |
||||
|
<table t-att-data-order-id="case_record.id" |
||||
|
class="table table-sm"> |
||||
|
<thead class="bg-100"> |
||||
|
<tr> |
||||
|
<th class="text-start" id="product_name_header"> |
||||
|
Case Category |
||||
|
</th> |
||||
|
<th class="text-start" id="product_name_header"> |
||||
|
Case Details |
||||
|
</th> |
||||
|
<th class="text-start" id="product_name_header"> |
||||
|
Contact Number |
||||
|
</th> |
||||
|
<t t-if="evidence"> |
||||
|
<th class="text-start" id="product_name_header"> |
||||
|
Evidence |
||||
|
</th> |
||||
|
</t> |
||||
|
<t t-if="trial"> |
||||
|
<th class="text-start" id="product_name_header"> |
||||
|
Trial |
||||
|
</th> |
||||
|
</t> |
||||
|
<th class="text-start" id="product_name_header"> |
||||
|
State |
||||
|
</th> |
||||
|
</tr> |
||||
|
</thead> |
||||
|
<tbody class="sale_tbody"> |
||||
|
<tr> |
||||
|
<td> |
||||
|
<span t-field="case_record.case_category_id.name"/> |
||||
|
</td> |
||||
|
<td> |
||||
|
<span t-field="case_record.description"/> |
||||
|
</td> |
||||
|
<td> |
||||
|
<span t-field="case_record.contact_no"/> |
||||
|
</td> |
||||
|
<t t-if="evidence"> |
||||
|
<t t-foreach="evidence" t-as="evidence"> |
||||
|
<td> |
||||
|
<span t-field="evidence.name"/> |
||||
|
</td> |
||||
|
<br/> |
||||
|
</t> |
||||
|
</t> |
||||
|
<t t-if="evidence"> |
||||
|
<t t-foreach="trial" t-as="trial"> |
||||
|
<td> |
||||
|
<span t-field="trial.name"/> |
||||
|
</td> |
||||
|
</t> |
||||
|
</t> |
||||
|
<td> |
||||
|
<t t-if="case_record.state=='draft'"> |
||||
|
<span class="badge rounded-pill text-bg-info"> |
||||
|
<i class="fa fa-fw fa-clock-o" |
||||
|
aria-label="Opened" title="Opened" |
||||
|
role="img"/> |
||||
|
<span class="d-none d-md-inline">Draft |
||||
|
</span> |
||||
|
</span> |
||||
|
</t> |
||||
|
<t t-if="case_record.state=='in_progress'"> |
||||
|
<span class="badge rounded-pill text-bg-success"> |
||||
|
<i class="fa fa-fw fa-check" |
||||
|
aria-label="In Progress" title="Paid" |
||||
|
role="img"/> |
||||
|
<span class="d-none d-md-inline">In |
||||
|
Progress |
||||
|
</span> |
||||
|
</span> |
||||
|
</t> |
||||
|
<t t-if="case_record=='invoiced'"> |
||||
|
<span class="badge rounded-pill text-bg-success"> |
||||
|
<i class="fa fa-fw fa-check" |
||||
|
aria-label="Reversed" |
||||
|
title="Invoiced" role="img"/> |
||||
|
<span class="d-none d-md-inline"> |
||||
|
Invoiced |
||||
|
</span> |
||||
|
</span> |
||||
|
</t> |
||||
|
<t t-if="case_record.state=='won'"> |
||||
|
<span class="badge rounded-pill text-bg-success"> |
||||
|
<i class="fa fa-fw fa-check" |
||||
|
aria-label="Reversed" |
||||
|
title="Invoiced" role="img"/> |
||||
|
<span class="d-none d-md-inline"> |
||||
|
Won |
||||
|
</span> |
||||
|
</span> |
||||
|
</t> |
||||
|
<t t-if="case_record.state=='lost'"> |
||||
|
<span class="badge rounded-pill text-bg-danger"> |
||||
|
<i class="fa fa-fw fa-check" |
||||
|
aria-label="Reversed" |
||||
|
title="Lost" role="img"/> |
||||
|
<span class="d-none d-md-inline"> |
||||
|
Lost |
||||
|
</span> |
||||
|
</span> |
||||
|
</t> |
||||
|
<t t-if="case_record.state=='cancel'"> |
||||
|
<span class="badge rounded-pill text-bg-warning"> |
||||
|
<i class="fa fa-fw fa-remove" |
||||
|
aria-label="Cancelled" |
||||
|
title="Cancelled" role="img"/> |
||||
|
<span class="d-none d-md-inline"> |
||||
|
Cancelled |
||||
|
</span> |
||||
|
</span> |
||||
|
</t> |
||||
|
</td> |
||||
|
</tr> |
||||
|
</tbody> |
||||
|
</table> |
||||
|
</section> |
||||
|
</div> |
||||
|
</template> |
||||
|
</odoo> |
@ -0,0 +1,14 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- Tree view For Court --> |
||||
|
<record id="legal_court_view_tree" model="ir.ui.view"> |
||||
|
<field name="name">legal.court.tree</field> |
||||
|
<field name="model">legal.court</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<tree editable="bottom"> |
||||
|
<field name="name"/> |
||||
|
<field name="judge_id"/> |
||||
|
</tree> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,66 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<odoo> |
||||
|
<!-- From View For Evidence--> |
||||
|
<record id="legal_evidence_view_form" model="ir.ui.view"> |
||||
|
<field name="name">legal.evidence.view.form</field> |
||||
|
<field name="model">legal.evidence</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Evidence"> |
||||
|
<sheet> |
||||
|
<div name="button_box" position="inside"> |
||||
|
<button name="get_evidence_attachments" type="object" |
||||
|
class="oe_stat_button" |
||||
|
icon="fa-paperclip"> |
||||
|
<div class="o_field_widget o_stat_info"> |
||||
|
<span class="o_stat_value"> |
||||
|
<field name="attachment_count"/> |
||||
|
</span> |
||||
|
<span class="o_stat_text">Attachments</span> |
||||
|
</div> |
||||
|
</button> |
||||
|
</div> |
||||
|
<div class="oe_title"> |
||||
|
<h1> |
||||
|
<field name="name"/> |
||||
|
</h1> |
||||
|
</div> |
||||
|
<group> |
||||
|
<group> |
||||
|
<field name="case_id" |
||||
|
options="{'no_create': True}"/> |
||||
|
<field name="client_id"/> |
||||
|
</group> |
||||
|
<group> |
||||
|
<field name="in_favor_id"/> |
||||
|
</group> |
||||
|
</group> |
||||
|
<notebook> |
||||
|
<page string="Description" name="evidence_description"> |
||||
|
<field name="description" |
||||
|
placeholder="description"/> |
||||
|
</page> |
||||
|
</notebook> |
||||
|
</sheet> |
||||
|
<div class="oe_chatter"> |
||||
|
<field name="message_follower_ids" widget="mail_followers"/> |
||||
|
<field name="activity_ids"/> |
||||
|
<field name="message_ids" widget="mail_thread"/> |
||||
|
</div> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
<!-- Tree View For Evidence --> |
||||
|
<record id="legal_evidence_view_tree" model="ir.ui.view"> |
||||
|
<field name="name">Evidence</field> |
||||
|
<field name="model">legal.evidence</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<tree> |
||||
|
<field name="name"/> |
||||
|
<field name="in_favor_id"/> |
||||
|
<field name="client_id"/> |
||||
|
<field name="case_id"/> |
||||
|
<field name="description" optional="hide"/> |
||||
|
</tree> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,53 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<odoo> |
||||
|
<!-- Form View For Trial--> |
||||
|
<record id="legal_trial_view_form" model="ir.ui.view"> |
||||
|
<field name="name">Trial</field> |
||||
|
<field name="model">legal.trial</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Trial"> |
||||
|
<sheet> |
||||
|
<div class="oe_title"> |
||||
|
<h1> |
||||
|
<field name="name"/> |
||||
|
</h1> |
||||
|
</div> |
||||
|
<group> |
||||
|
<group> |
||||
|
<field name="case_id" |
||||
|
options="{'no_create': True}"/> |
||||
|
<field name="client_id"/> |
||||
|
<field name="judge_id"/> |
||||
|
</group> |
||||
|
<group> |
||||
|
<field name="trial_date"/> |
||||
|
<field name="court_id"/> |
||||
|
<field name="is_invoiced" invisible="1"/> |
||||
|
</group> |
||||
|
</group> |
||||
|
<notebook> |
||||
|
<page string="Description" name="trial_description"> |
||||
|
<field name="description" |
||||
|
placeholder="description"/> |
||||
|
</page> |
||||
|
</notebook> |
||||
|
</sheet> |
||||
|
<div class="oe_chatter"> |
||||
|
<field name="message_follower_ids" widget="mail_followers"/> |
||||
|
<field name="activity_ids"/> |
||||
|
<field name="message_ids" widget="mail_thread"/> |
||||
|
</div> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
<!-- Tree View For Trial --> |
||||
|
<record id="legal_trial_view_tree" model="ir.ui.view"> |
||||
|
<field name="name">Trial</field> |
||||
|
<field name="model">legal.trial</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<tree> |
||||
|
<field name="name"/> |
||||
|
</tree> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,16 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- Form View For Res Partner--> |
||||
|
<record id="res_partner_view_form" model="ir.ui.view"> |
||||
|
<field name="name">res.partner.view.form.inherit.legal.case.management |
||||
|
</field> |
||||
|
<field name="model">res.partner</field> |
||||
|
<field name="inherit_id" ref="base.view_partner_form"/> |
||||
|
<field name="arch" type="xml"> |
||||
|
<xpath expr="//field[@name='vat']" position="after"> |
||||
|
<field name="is_judge"/> |
||||
|
<field name="judge_unavailable" invisible="1"/> |
||||
|
</xpath> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,26 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<odoo> |
||||
|
<!-- Template For Thanks Page--> |
||||
|
<template id="thanks_page"> |
||||
|
<t t-call="website.layout"> |
||||
|
<div id="wrap"> |
||||
|
<div class="container"> |
||||
|
<h1>Thanks!</h1> |
||||
|
<div class="row"> |
||||
|
<div class="col-lg-8"> |
||||
|
<div class="alert alert-success" |
||||
|
role="status"> |
||||
|
Your Case has been |
||||
|
registered |
||||
|
successfully. |
||||
|
</div> |
||||
|
<p> |
||||
|
We will get back to you shortly |
||||
|
</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</t> |
||||
|
</template> |
||||
|
</odoo> |
@ -0,0 +1,24 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################### |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: LAJINA.K.V (odoo@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 . import full_settlement |
||||
|
from . import invoice_payment |
||||
|
from . import legal_case_report |
@ -0,0 +1,64 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################### |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: LAJINA.K.V (odoo@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 fields, models |
||||
|
|
||||
|
|
||||
|
class FullSettlement(models.TransientModel): |
||||
|
""" Full Settlement""" |
||||
|
_name = 'full.settlement' |
||||
|
_description = 'Full Settlement' |
||||
|
|
||||
|
case_id = fields.Many2one('case.registration', string='Case', readonly=True, |
||||
|
help='Reference for case ') |
||||
|
client_id = fields.Many2one(related='case_id.client_id', string='Client', |
||||
|
help='Client for particular case') |
||||
|
lawyer_id = fields.Many2one(related='case_id.lawyer_id', string='Lawyer', |
||||
|
readonly=True, |
||||
|
help='Lawyer for particular case') |
||||
|
date = fields.Date('Invoice Date', default=fields.Date.today, readonly=True, |
||||
|
help='Today date') |
||||
|
cost = fields.Char('Amount', help='Invoice Amount') |
||||
|
|
||||
|
def print_invoice(self): |
||||
|
"""Print invoice""" |
||||
|
if self.cost: |
||||
|
account_move_id = self.env["account.move"].create([{ |
||||
|
'move_type': 'out_invoice', |
||||
|
'invoice_date': self.date, |
||||
|
'partner_id': self.client_id.id, |
||||
|
'case_ref': self.case_id.name, |
||||
|
}]) |
||||
|
account_move_id.invoice_line_ids.create([{ |
||||
|
'name': 'Complete Settlement', |
||||
|
'quantity': 1, |
||||
|
'price_unit': self.cost, |
||||
|
'move_id': account_move_id.id |
||||
|
}]) |
||||
|
self.case_id.state = 'invoiced' |
||||
|
return { |
||||
|
'name': "Journal Entry", |
||||
|
'type': 'ir.actions.act_window', |
||||
|
'res_model': 'account.move', |
||||
|
'context': {'create': False}, |
||||
|
'view_mode': 'form', |
||||
|
'res_id': account_move_id.id, |
||||
|
} |