Browse Source

Jul 29 : [ADD] Initial Commit 'legal_case_management'

pull/268/head
Shijin V 2 years ago
parent
commit
90cfabfab7
  1. 49
      legal_case_management/README.rst
  2. 25
      legal_case_management/__init__.py
  3. 73
      legal_case_management/__manifest__.py
  4. 23
      legal_case_management/controllers/__init__.py
  5. 56
      legal_case_management/controllers/legal_case_management.py
  6. 75
      legal_case_management/controllers/portal.py
  7. 12
      legal_case_management/data/case_register_menu.xml
  8. 24
      legal_case_management/data/ir_sequence_data.xml
  9. 7
      legal_case_management/doc/RELEASE_NOTES.md
  10. 31
      legal_case_management/models/__init__.py
  11. 30
      legal_case_management/models/account_move.py
  12. 44
      legal_case_management/models/case_category.py
  13. 317
      legal_case_management/models/case_registration.py
  14. 34
      legal_case_management/models/case_sitting.py
  15. 32
      legal_case_management/models/case_victim.py
  16. 33
      legal_case_management/models/hr_employee.py
  17. 53
      legal_case_management/models/legal_court.py
  18. 78
      legal_case_management/models/legal_evidence.py
  19. 65
      legal_case_management/models/legal_trial.py
  20. 31
      legal_case_management/models/res_partner.py
  21. 25
      legal_case_management/report/__init__.py
  22. 43
      legal_case_management/report/case_registration_form_report.py
  23. 83
      legal_case_management/report/case_registration_form_report_templates.xml
  24. 271
      legal_case_management/report/case_registration_report.py
  25. 47
      legal_case_management/report/case_registration_reports.xml
  26. 76
      legal_case_management/report/case_registration_templates.xml
  27. 35
      legal_case_management/report/legal_evidence_report.py
  28. 50
      legal_case_management/report/legal_evidence_templates.xml
  29. 36
      legal_case_management/report/legal_trial_report.py
  30. 47
      legal_case_management/report/legal_trial_report_templates.xml
  31. 40
      legal_case_management/security/ir.model.access.csv
  32. 26
      legal_case_management/security/legal_case_management_groups.xml
  33. 64
      legal_case_management/security/legal_case_management_security.xml
  34. BIN
      legal_case_management/static/description/assets/icons/check.png
  35. BIN
      legal_case_management/static/description/assets/icons/chevron.png
  36. BIN
      legal_case_management/static/description/assets/icons/cogs.png
  37. BIN
      legal_case_management/static/description/assets/icons/consultation.png
  38. BIN
      legal_case_management/static/description/assets/icons/ecom-black.png
  39. BIN
      legal_case_management/static/description/assets/icons/education-black.png
  40. BIN
      legal_case_management/static/description/assets/icons/hotel-black.png
  41. BIN
      legal_case_management/static/description/assets/icons/license.png
  42. BIN
      legal_case_management/static/description/assets/icons/lifebuoy.png
  43. BIN
      legal_case_management/static/description/assets/icons/manufacturing-black.png
  44. BIN
      legal_case_management/static/description/assets/icons/pos-black.png
  45. BIN
      legal_case_management/static/description/assets/icons/puzzle.png
  46. BIN
      legal_case_management/static/description/assets/icons/restaurant-black.png
  47. BIN
      legal_case_management/static/description/assets/icons/service-black.png
  48. BIN
      legal_case_management/static/description/assets/icons/trading-black.png
  49. BIN
      legal_case_management/static/description/assets/icons/training.png
  50. BIN
      legal_case_management/static/description/assets/icons/update.png
  51. BIN
      legal_case_management/static/description/assets/icons/user.png
  52. BIN
      legal_case_management/static/description/assets/icons/wrench.png
  53. BIN
      legal_case_management/static/description/assets/misc/categories.png
  54. BIN
      legal_case_management/static/description/assets/misc/check-box.png
  55. BIN
      legal_case_management/static/description/assets/misc/compass.png
  56. BIN
      legal_case_management/static/description/assets/misc/corporate.png
  57. BIN
      legal_case_management/static/description/assets/misc/customer-support.png
  58. BIN
      legal_case_management/static/description/assets/misc/cybrosys-logo.png
  59. BIN
      legal_case_management/static/description/assets/misc/features.png
  60. BIN
      legal_case_management/static/description/assets/misc/logo.png
  61. BIN
      legal_case_management/static/description/assets/misc/pictures.png
  62. BIN
      legal_case_management/static/description/assets/misc/pie-chart.png
  63. BIN
      legal_case_management/static/description/assets/misc/right-arrow.png
  64. BIN
      legal_case_management/static/description/assets/misc/star.png
  65. BIN
      legal_case_management/static/description/assets/misc/support.png
  66. BIN
      legal_case_management/static/description/assets/misc/whatsapp.png
  67. BIN
      legal_case_management/static/description/assets/modules/l1.png
  68. BIN
      legal_case_management/static/description/assets/modules/l2.png
  69. BIN
      legal_case_management/static/description/assets/modules/l3.png
  70. BIN
      legal_case_management/static/description/assets/modules/l4.png
  71. BIN
      legal_case_management/static/description/assets/modules/l5.png
  72. BIN
      legal_case_management/static/description/assets/modules/l6.png
  73. BIN
      legal_case_management/static/description/assets/screenshots/hero.gif
  74. BIN
      legal_case_management/static/description/assets/screenshots/legal6.png
  75. BIN
      legal_case_management/static/description/assets/screenshots/legal_1.1.png
  76. BIN
      legal_case_management/static/description/assets/screenshots/legal_1.png
  77. BIN
      legal_case_management/static/description/assets/screenshots/legal_2.png
  78. BIN
      legal_case_management/static/description/assets/screenshots/legal_3.png
  79. BIN
      legal_case_management/static/description/assets/screenshots/legal_4.1.png
  80. BIN
      legal_case_management/static/description/assets/screenshots/legal_4.png
  81. BIN
      legal_case_management/static/description/assets/screenshots/legal_5.png
  82. BIN
      legal_case_management/static/description/assets/screenshots/legal_7.png
  83. BIN
      legal_case_management/static/description/banner.png
  84. BIN
      legal_case_management/static/description/icon.png
  85. 682
      legal_case_management/static/description/index.html
  86. 17
      legal_case_management/views/account_move_views.xml
  87. 13
      legal_case_management/views/case_category_views.xml
  88. 132
      legal_case_management/views/case_register_portal_template.xml
  89. 145
      legal_case_management/views/case_register_template.xml
  90. 246
      legal_case_management/views/case_registration_views.xml
  91. 29
      legal_case_management/views/hr_employee_views.xml
  92. 150
      legal_case_management/views/legal_case_management_menus.xml
  93. 198
      legal_case_management/views/legal_case_page_template.xml
  94. 14
      legal_case_management/views/legal_court_views.xml
  95. 66
      legal_case_management/views/legal_evidence_views.xml
  96. 53
      legal_case_management/views/legal_trial_views.xml
  97. 16
      legal_case_management/views/res_partner_views.xml
  98. 26
      legal_case_management/views/thanks_template.xml
  99. 24
      legal_case_management/wizard/__init__.py
  100. 64
      legal_case_management/wizard/full_settlement.py

49
legal_case_management/README.rst

@ -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>`__

25
legal_case_management/__init__.py

@ -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

73
legal_case_management/__manifest__.py

@ -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
}

23
legal_case_management/controllers/__init__.py

@ -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

56
legal_case_management/controllers/legal_case_management.py

@ -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")

75
legal_case_management/controllers/portal.py

@ -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)

12
legal_case_management/data/case_register_menu.xml

@ -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>

24
legal_case_management/data/ir_sequence_data.xml

@ -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>

7
legal_case_management/doc/RELEASE_NOTES.md

@ -0,0 +1,7 @@
## Module <legal_case_management>
#### 27.07.2023
#### Version 16.0.1.0.0
#### ADD
- Initial commit for Legal Case Management

31
legal_case_management/models/__init__.py

@ -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

30
legal_case_management/models/account_move.py

@ -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')

44
legal_case_management/models/case_category.py

@ -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"))

317
legal_case_management/models/case_registration.py

@ -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}"
}

34
legal_case_management/models/case_sitting.py

@ -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')

32
legal_case_management/models/case_victim.py

@ -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')

33
legal_case_management/models/hr_employee.py

@ -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')

53
legal_case_management/models/legal_court.py

@ -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"))

78
legal_case_management/models/legal_evidence.py

@ -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)])

65
legal_case_management/models/legal_trial.py

@ -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"))

31
legal_case_management/models/res_partner.py

@ -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")

25
legal_case_management/report/__init__.py

@ -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

43
legal_case_management/report/case_registration_form_report.py

@ -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
}

83
legal_case_management/report/case_registration_form_report_templates.xml

@ -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>

271
legal_case_management/report/case_registration_report.py

@ -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()
}

47
legal_case_management/report/case_registration_reports.xml

@ -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>

76
legal_case_management/report/case_registration_templates.xml

@ -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>

35
legal_case_management/report/legal_evidence_report.py

@ -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
}

50
legal_case_management/report/legal_evidence_templates.xml

@ -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>

36
legal_case_management/report/legal_trial_report.py

@ -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,
}

47
legal_case_management/report/legal_trial_report_templates.xml

@ -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>

40
legal_case_management/security/ir.model.access.csv

@ -0,0 +1,40 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_legal_evidence_admin,access.legal.evidence.admin,model_legal_evidence,legal_case_management.legal_case_management_group_admin,1,1,1,1
access_legal_evidence_lawyer,access.legal.evidence.lawyer,model_legal_evidence,legal_case_management.legal_case_management_group_lawyer,1,1,1,0
access_legal_evidence_clerk,access.legal.evidence.clerk,model_legal_evidence,legal_case_management.legal_case_management_group_clerk,1,0,0,0
access_legal_trial_admin,access.legal.trial.admin,model_legal_trial,legal_case_management.legal_case_management_group_admin,1,1,1,1
access_legal_trial_lawyer,access.legal.trial.lawyer,model_legal_trial,legal_case_management.legal_case_management_group_lawyer,1,1,1,0
access_legal_trial_admin_clerk,access.legal.trial.admin_clerk,model_legal_trial,legal_case_management.legal_case_management_group_clerk,1,0,0,0
access_legal_court_admin,access.legal.court.admin,model_legal_court,legal_case_management.legal_case_management_group_admin,1,1,1,1
access_legal_court_lawyer,access.legal.court.lawyer,model_legal_court,legal_case_management.legal_case_management_group_lawyer,1,1,0,0
access_legal_court_clerk,access.legal.court.clerk,model_legal_court,legal_case_management.legal_case_management_group_clerk,1,0,0,0
access_case_category_admin,access.case.category.admin,model_case_category,legal_case_management.legal_case_management_group_admin,1,1,1,1
access_case_category_lawyer,access.case.category.lawyer,model_case_category,legal_case_management.legal_case_management_group_lawyer,1,1,1,0
access_case_category_clerk,access.case.category.clerk,model_case_category,legal_case_management.legal_case_management_group_clerk,1,0,0,0
access_case_registration_admin,access.case.registration.admin,model_case_registration,legal_case_management.legal_case_management_group_admin,1,1,1,1
access_case_registration_lawyer,access.case.registration.lawyer,model_case_registration,legal_case_management.legal_case_management_group_lawyer,1,1,0,0
access_case_registration_clerk,access.case.registration.clerk,model_case_registration,legal_case_management.legal_case_management_group_clerk,1,0,0,0
access_case_sitting_admin,access.case.sitting.admin,model_case_sitting,legal_case_management.legal_case_management_group_admin,1,1,1,1
access_case_sitting_lawyer,access.case.sitting.lawyer,model_case_sitting,legal_case_management.legal_case_management_group_lawyer,1,1,1,1
access_case_sitting_clerk,access.case.sitting.clerk,model_case_sitting,legal_case_management.legal_case_management_group_clerk,1,0,0,0
access_case_victim_admin,access.case.victim.admin,model_case_victim,legal_case_management.legal_case_management_group_admin,1,1,1,1
access_case_victim_lawyer,access.case.victim.lawyer,model_case_victim,legal_case_management.legal_case_management_group_lawyer,1,1,1,1
access_case_victim_clerk,access.case.victim.clerk,model_case_victim,legal_case_management.legal_case_management_group_clerk,1,0,0,0
access_invoice_payment_admin,access.invoice.payment.admin,model_invoice_payment,legal_case_management.legal_case_management_group_admin,1,1,1,1
access_invoice_payment_lawyer,access.invoice.payment.lawyer,model_invoice_payment,legal_case_management.legal_case_management_group_lawyer,1,1,1,1
access_invoice_payment_clerk,access.invoice.payment.clerk,model_invoice_payment,legal_case_management.legal_case_management_group_clerk,1,0,0,0
access_full_settlement_admin,access.full.settlement.admin,model_full_settlement,legal_case_management.legal_case_management_group_admin,1,1,1,1
access_full_settlement_lawyer,access.full.settlement.lawyer,model_full_settlement,legal_case_management.legal_case_management_group_lawyer,1,1,1,1
access_full_settlement_clerk,access.full.settlement.clerk,model_full_settlement,legal_case_management.legal_case_management_group_clerk,1,0,0,0
access_legal_case_report,access.legal.case.report,model_legal_case_report,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_legal_evidence_admin access.legal.evidence.admin model_legal_evidence legal_case_management.legal_case_management_group_admin 1 1 1 1
3 access_legal_evidence_lawyer access.legal.evidence.lawyer model_legal_evidence legal_case_management.legal_case_management_group_lawyer 1 1 1 0
4 access_legal_evidence_clerk access.legal.evidence.clerk model_legal_evidence legal_case_management.legal_case_management_group_clerk 1 0 0 0
5 access_legal_trial_admin access.legal.trial.admin model_legal_trial legal_case_management.legal_case_management_group_admin 1 1 1 1
6 access_legal_trial_lawyer access.legal.trial.lawyer model_legal_trial legal_case_management.legal_case_management_group_lawyer 1 1 1 0
7 access_legal_trial_admin_clerk access.legal.trial.admin_clerk model_legal_trial legal_case_management.legal_case_management_group_clerk 1 0 0 0
8 access_legal_court_admin access.legal.court.admin model_legal_court legal_case_management.legal_case_management_group_admin 1 1 1 1
9 access_legal_court_lawyer access.legal.court.lawyer model_legal_court legal_case_management.legal_case_management_group_lawyer 1 1 0 0
10 access_legal_court_clerk access.legal.court.clerk model_legal_court legal_case_management.legal_case_management_group_clerk 1 0 0 0
11 access_case_category_admin access.case.category.admin model_case_category legal_case_management.legal_case_management_group_admin 1 1 1 1
12 access_case_category_lawyer access.case.category.lawyer model_case_category legal_case_management.legal_case_management_group_lawyer 1 1 1 0
13 access_case_category_clerk access.case.category.clerk model_case_category legal_case_management.legal_case_management_group_clerk 1 0 0 0
14 access_case_registration_admin access.case.registration.admin model_case_registration legal_case_management.legal_case_management_group_admin 1 1 1 1
15 access_case_registration_lawyer access.case.registration.lawyer model_case_registration legal_case_management.legal_case_management_group_lawyer 1 1 0 0
16 access_case_registration_clerk access.case.registration.clerk model_case_registration legal_case_management.legal_case_management_group_clerk 1 0 0 0
17 access_case_sitting_admin access.case.sitting.admin model_case_sitting legal_case_management.legal_case_management_group_admin 1 1 1 1
18 access_case_sitting_lawyer access.case.sitting.lawyer model_case_sitting legal_case_management.legal_case_management_group_lawyer 1 1 1 1
19 access_case_sitting_clerk access.case.sitting.clerk model_case_sitting legal_case_management.legal_case_management_group_clerk 1 0 0 0
20 access_case_victim_admin access.case.victim.admin model_case_victim legal_case_management.legal_case_management_group_admin 1 1 1 1
21 access_case_victim_lawyer access.case.victim.lawyer model_case_victim legal_case_management.legal_case_management_group_lawyer 1 1 1 1
22 access_case_victim_clerk access.case.victim.clerk model_case_victim legal_case_management.legal_case_management_group_clerk 1 0 0 0
23 access_invoice_payment_admin access.invoice.payment.admin model_invoice_payment legal_case_management.legal_case_management_group_admin 1 1 1 1
24 access_invoice_payment_lawyer access.invoice.payment.lawyer model_invoice_payment legal_case_management.legal_case_management_group_lawyer 1 1 1 1
25 access_invoice_payment_clerk access.invoice.payment.clerk model_invoice_payment legal_case_management.legal_case_management_group_clerk 1 0 0 0
26 access_full_settlement_admin access.full.settlement.admin model_full_settlement legal_case_management.legal_case_management_group_admin 1 1 1 1
27 access_full_settlement_lawyer access.full.settlement.lawyer model_full_settlement legal_case_management.legal_case_management_group_lawyer 1 1 1 1
28 access_full_settlement_clerk access.full.settlement.clerk model_full_settlement legal_case_management.legal_case_management_group_clerk 1 0 0 0
29 access_legal_case_report access.legal.case.report model_legal_case_report base.group_user 1 1 1 1

26
legal_case_management/security/legal_case_management_groups.xml

@ -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>

64
legal_case_management/security/legal_case_management_security.xml

@ -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>

BIN
legal_case_management/static/description/assets/icons/check.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
legal_case_management/static/description/assets/icons/chevron.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

BIN
legal_case_management/static/description/assets/icons/cogs.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
legal_case_management/static/description/assets/icons/consultation.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
legal_case_management/static/description/assets/icons/ecom-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

BIN
legal_case_management/static/description/assets/icons/education-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

BIN
legal_case_management/static/description/assets/icons/hotel-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

BIN
legal_case_management/static/description/assets/icons/license.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
legal_case_management/static/description/assets/icons/lifebuoy.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
legal_case_management/static/description/assets/icons/manufacturing-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

BIN
legal_case_management/static/description/assets/icons/pos-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

BIN
legal_case_management/static/description/assets/icons/puzzle.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

BIN
legal_case_management/static/description/assets/icons/restaurant-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

BIN
legal_case_management/static/description/assets/icons/service-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

BIN
legal_case_management/static/description/assets/icons/trading-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

BIN
legal_case_management/static/description/assets/icons/training.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

BIN
legal_case_management/static/description/assets/icons/update.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
legal_case_management/static/description/assets/icons/user.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

BIN
legal_case_management/static/description/assets/icons/wrench.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
legal_case_management/static/description/assets/misc/categories.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
legal_case_management/static/description/assets/misc/check-box.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
legal_case_management/static/description/assets/misc/compass.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
legal_case_management/static/description/assets/misc/corporate.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
legal_case_management/static/description/assets/misc/customer-support.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
legal_case_management/static/description/assets/misc/cybrosys-logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
legal_case_management/static/description/assets/misc/features.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

BIN
legal_case_management/static/description/assets/misc/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
legal_case_management/static/description/assets/misc/pictures.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
legal_case_management/static/description/assets/misc/pie-chart.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
legal_case_management/static/description/assets/misc/right-arrow.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

BIN
legal_case_management/static/description/assets/misc/star.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
legal_case_management/static/description/assets/misc/support.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
legal_case_management/static/description/assets/misc/whatsapp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
legal_case_management/static/description/assets/modules/l1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
legal_case_management/static/description/assets/modules/l2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
legal_case_management/static/description/assets/modules/l3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

BIN
legal_case_management/static/description/assets/modules/l4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

BIN
legal_case_management/static/description/assets/modules/l5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

BIN
legal_case_management/static/description/assets/modules/l6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
legal_case_management/static/description/assets/screenshots/hero.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 381 KiB

BIN
legal_case_management/static/description/assets/screenshots/legal6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

BIN
legal_case_management/static/description/assets/screenshots/legal_1.1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

BIN
legal_case_management/static/description/assets/screenshots/legal_1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

BIN
legal_case_management/static/description/assets/screenshots/legal_2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

BIN
legal_case_management/static/description/assets/screenshots/legal_3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

BIN
legal_case_management/static/description/assets/screenshots/legal_4.1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

BIN
legal_case_management/static/description/assets/screenshots/legal_4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

BIN
legal_case_management/static/description/assets/screenshots/legal_5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

BIN
legal_case_management/static/description/assets/screenshots/legal_7.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

BIN
legal_case_management/static/description/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

BIN
legal_case_management/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

682
legal_case_management/static/description/index.html

@ -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 &amp; 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 -->

17
legal_case_management/views/account_move_views.xml

@ -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>

13
legal_case_management/views/case_category_views.xml

@ -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>

132
legal_case_management/views/case_register_portal_template.xml

@ -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>

145
legal_case_management/views/case_register_template.xml

@ -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>

246
legal_case_management/views/case_registration_views.xml

@ -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>

29
legal_case_management/views/hr_employee_views.xml

@ -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>

150
legal_case_management/views/legal_case_management_menus.xml

@ -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>

198
legal_case_management/views/legal_case_page_template.xml

@ -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&amp;model=%s&amp;id=%s&amp;' % (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>

14
legal_case_management/views/legal_court_views.xml

@ -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>

66
legal_case_management/views/legal_evidence_views.xml

@ -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>

53
legal_case_management/views/legal_trial_views.xml

@ -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>

16
legal_case_management/views/res_partner_views.xml

@ -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>

26
legal_case_management/views/thanks_template.xml

@ -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>

24
legal_case_management/wizard/__init__.py

@ -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

64
legal_case_management/wizard/full_settlement.py

@ -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,
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save