Browse Source

[UPDT] Index Updated

pull/164/head
Ajmal Cybro 4 years ago
parent
commit
e58c921bf4
  1. 48
      dynamic_financial_report/README.rst
  2. 3
      dynamic_financial_report/__init__.py
  3. 73
      dynamic_financial_report/__manifest__.py
  4. 1
      dynamic_financial_report/controllers/__init__.py
  5. 39
      dynamic_financial_report/controllers/main.py
  6. 15
      dynamic_financial_report/doc/changelog.md
  7. 7
      dynamic_financial_report/report/__init__.py
  8. 15
      dynamic_financial_report/report/ageing_partner.py
  9. 31
      dynamic_financial_report/report/bank_book.py
  10. 17
      dynamic_financial_report/report/cash_flow_report.py
  11. 18
      dynamic_financial_report/report/daybook_report.py
  12. 21
      dynamic_financial_report/report/financial_reports.py
  13. 32
      dynamic_financial_report/report/general_ledger.py
  14. 16
      dynamic_financial_report/report/partner_ledger.py
  15. 9
      dynamic_financial_report/security/ir.model.access.csv
  16. BIN
      dynamic_financial_report/static/description/banner.jpg
  17. BIN
      dynamic_financial_report/static/description/cybro_logo.png
  18. BIN
      dynamic_financial_report/static/description/icon.png
  19. BIN
      dynamic_financial_report/static/description/images/11.jpg
  20. BIN
      dynamic_financial_report/static/description/images/Accounting kit -2.png
  21. BIN
      dynamic_financial_report/static/description/images/BB_m.png
  22. BIN
      dynamic_financial_report/static/description/images/account_dynamic_report_banner.gif
  23. BIN
      dynamic_financial_report/static/description/images/accounting_kit_window.gif
  24. BIN
      dynamic_financial_report/static/description/images/auto_payroll_banner.png
  25. BIN
      dynamic_financial_report/static/description/images/bb_pdf.png
  26. BIN
      dynamic_financial_report/static/description/images/bb_xls.png
  27. BIN
      dynamic_financial_report/static/description/images/bs_m.png
  28. BIN
      dynamic_financial_report/static/description/images/bs_pdf.png
  29. BIN
      dynamic_financial_report/static/description/images/bs_xls.png
  30. BIN
      dynamic_financial_report/static/description/images/bud_banner.png
  31. BIN
      dynamic_financial_report/static/description/images/cb_m.png
  32. BIN
      dynamic_financial_report/static/description/images/cb_pdf.png
  33. BIN
      dynamic_financial_report/static/description/images/cb_xls.png
  34. BIN
      dynamic_financial_report/static/description/images/cf.png
  35. BIN
      dynamic_financial_report/static/description/images/cf_pdf.png
  36. BIN
      dynamic_financial_report/static/description/images/cf_xls.png
  37. BIN
      dynamic_financial_report/static/description/images/checked.png
  38. BIN
      dynamic_financial_report/static/description/images/crm_dashboard_banner.gif
  39. BIN
      dynamic_financial_report/static/description/images/cybrosys.png
  40. BIN
      dynamic_financial_report/static/description/images/db_m.png
  41. BIN
      dynamic_financial_report/static/description/images/db_pdf.png
  42. BIN
      dynamic_financial_report/static/description/images/db_xls.png
  43. BIN
      dynamic_financial_report/static/description/images/dynamic_banner.gif
  44. BIN
      dynamic_financial_report/static/description/images/dynamic_financial_reports.png
  45. BIN
      dynamic_financial_report/static/description/images/dynamic_gl.png
  46. BIN
      dynamic_financial_report/static/description/images/dynamic_tb.png
  47. BIN
      dynamic_financial_report/static/description/images/gl_journal.png
  48. BIN
      dynamic_financial_report/static/description/images/gl_pdf.png
  49. BIN
      dynamic_financial_report/static/description/images/gl_xlsx.png
  50. BIN
      dynamic_financial_report/static/description/images/hr_acc_cc_banner.png
  51. BIN
      dynamic_financial_report/static/description/images/mobile_service_shop_pro_banner.png
  52. BIN
      dynamic_financial_report/static/description/images/o_hrms_banner.gif
  53. BIN
      dynamic_financial_report/static/description/images/odoo11_magento_banner.jpg
  54. BIN
      dynamic_financial_report/static/description/images/pa_m.png
  55. BIN
      dynamic_financial_report/static/description/images/pa_pdf.png
  56. BIN
      dynamic_financial_report/static/description/images/pa_xls.png
  57. BIN
      dynamic_financial_report/static/description/images/pal_pdf.png
  58. BIN
      dynamic_financial_report/static/description/images/pal_xls.png
  59. BIN
      dynamic_financial_report/static/description/images/payroll_banner.gif
  60. BIN
      dynamic_financial_report/static/description/images/pl_m.png
  61. BIN
      dynamic_financial_report/static/description/images/pl_m1.png
  62. BIN
      dynamic_financial_report/static/description/images/pl_pdf.png
  63. BIN
      dynamic_financial_report/static/description/images/pl_xls.png
  64. BIN
      dynamic_financial_report/static/description/images/project_custome_gantt_banner.gif
  65. BIN
      dynamic_financial_report/static/description/images/report_maker_banner.gif
  66. BIN
      dynamic_financial_report/static/description/images/tb_gl.png
  67. BIN
      dynamic_financial_report/static/description/images/tb_pdf.png
  68. BIN
      dynamic_financial_report/static/description/images/tb_xlsx.png
  69. 1122
      dynamic_financial_report/static/description/index.html
  70. 52
      dynamic_financial_report/static/src/js/action_manager.js
  71. 558
      dynamic_financial_report/static/src/js/ageing_partner.js
  72. 527
      dynamic_financial_report/static/src/js/balance_sheet.js
  73. 995
      dynamic_financial_report/static/src/js/bank_book.js
  74. 368
      dynamic_financial_report/static/src/js/cash_flow.js
  75. 414
      dynamic_financial_report/static/src/js/daybook.js
  76. 876
      dynamic_financial_report/static/src/js/gl_tb.js
  77. 476
      dynamic_financial_report/static/src/js/partner_ledger.js
  78. 526
      dynamic_financial_report/static/src/js/profit_loss.js
  79. 377
      dynamic_financial_report/static/src/scss/dynamic_common_style.scss
  80. 292
      dynamic_financial_report/static/src/xml/al_views.xml
  81. 282
      dynamic_financial_report/static/src/xml/bank_book_view.xml
  82. 246
      dynamic_financial_report/static/src/xml/bs_template_views.xml
  83. 282
      dynamic_financial_report/static/src/xml/cash_book_view.xml
  84. 306
      dynamic_financial_report/static/src/xml/cash_flow.xml
  85. 239
      dynamic_financial_report/static/src/xml/db_lines.xml
  86. 287
      dynamic_financial_report/static/src/xml/partner_ledger_views.xml
  87. 246
      dynamic_financial_report/static/src/xml/profit_loss_template_views.xml
  88. 190
      dynamic_financial_report/static/src/xml/tb_view.xml
  89. 282
      dynamic_financial_report/static/src/xml/views.xml
  90. 211
      dynamic_financial_report/views/al_template.xml
  91. 194
      dynamic_financial_report/views/bank_book_pdf_template.xml
  92. 194
      dynamic_financial_report/views/cash_book_pdf_template.xml
  93. 254
      dynamic_financial_report/views/cashfl.xml
  94. 169
      dynamic_financial_report/views/db_templates.xml
  95. 179
      dynamic_financial_report/views/financial_report_qweb_pdf_template.xml
  96. 60
      dynamic_financial_report/views/general_ledger_view.xml
  97. 354
      dynamic_financial_report/views/gl_template.xml
  98. 70
      dynamic_financial_report/views/kit_menus.xml
  99. 24
      dynamic_financial_report/views/menu_dynamic_financial_reports.xml
  100. 203
      dynamic_financial_report/views/pl_template.xml

48
dynamic_financial_report/README.rst

@ -1,48 +0,0 @@
Dynamic Financial Reports
=========================
* Dynamic financial reports for Odoo 14 community editions
Installation
============
- www.odoo.com/documentation/14.0/setup/install.html
- Install our custom addon
License
-------
General Public License, Version 3 (LGPL v3).
(https://www.odoo.com/documentation/user/13.0/legal/licenses/licenses.html)
Company
-------
* 'Cybrosys Techno Solutions <https://cybrosys.com/>`__
Credits
-------
* Developer:
(v14) Mehjabin @ Cybrosys
(v14) Jibin @ Cybrosys
(v14) Sachin @ Cybrosys
(v14) Mily @ Cybrosys
(v14) Arunima @ Cybrosys
(v14) Aneesh @ Cybrosys
(v14) Sonu @ Cybrosys
(v14) Vaishnavi @ Cybrosys
Contacts
--------
* Mail Contact : odoo@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
==========
This module is maintained by Cybrosys Technologies.
For support and more information, please visit https://www.cybrosys.com
Further information
===================
HTML Description: `<static/description/index.html>`__

3
dynamic_financial_report/__init__.py

@ -1,3 +0,0 @@
from . import wizard
from . import report
from . import controllers

73
dynamic_financial_report/__manifest__.py

@ -1,73 +0,0 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2020-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
{
'name': 'Dynamic Financial Reports',
'version': '14.0.1.0.1',
'category': 'Accounting',
'summary': """Dynamic Financial Reports with drill
down and filters Community Edition""",
'description': "This module creates dynamic Accounting General Ledger, Trial Balance, Balance Sheet "
"Proft and Loss, Cash Flow Statements, Partner Ledger,"
"Partner Ageing, Day book"
"Bank book and Cash book reports in Odoo 14 community edition.",
'author': 'Cybrosys Techno Solutions',
'website': "https://www.cybrosys.com",
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'depends': ['base', 'base_accounting_kit'],
'data': [
'security/ir.model.access.csv',
'views/general_ledger_view.xml',
'views/gl_template.xml',
'wizard/dynamic_ledger_view.xml',
'views/templates.xml',
'views/pl_template.xml',
'wizard/partner_ledger_view.xml',
'views/al_template.xml',
'views/kit_menus.xml',
'wizard/dynamic_partner_ageing.xml',
'views/bank_book_pdf_template.xml',
'views/cash_book_pdf_template.xml',
'views/cashfl.xml',
'views/financial_report_qweb_pdf_template.xml',
'views/menu_dynamic_financial_reports.xml',
'views/db_templates.xml',
],
'qweb': [
'static/src/xml/views.xml',
'static/src/xml/tb_view.xml',
'static/src/xml/bs_template_views.xml',
'static/src/xml/profit_loss_template_views.xml',
'static/src/xml/partner_ledger_views.xml',
'static/src/xml/al_views.xml',
'static/src/xml/bank_book_view.xml',
'static/src/xml/cash_book_view.xml',
'static/src/xml/cash_flow.xml',
'static/src/xml/db_lines.xml',
],
'license': 'LGPL-3',
'images': ['static/description/banner.jpg'],
'installable': True,
'auto_install': False,
'application': True,
}

1
dynamic_financial_report/controllers/__init__.py

@ -1 +0,0 @@
from . import main

39
dynamic_financial_report/controllers/main.py

@ -1,39 +0,0 @@
# -*- coding: utf-8 -*-
import json
from odoo import http
from odoo.http import content_disposition, request
from odoo.addons.web.controllers.main import _serialize_exception
from odoo.tools import html_escape
class TBXLSXReportController(http.Controller):
@http.route('/xlsx_reports', type='http', auth='user', methods=['POST'], csrf=False)
def get_report_xlsx(self, model, options, output_format, token, report_data, report_name, dfr_data, **kw):
uid = request.session.uid
report_obj = request.env[model].with_user(uid)
dfr_data = dfr_data
options = options
try:
if output_format == 'xlsx':
response = request.make_response(
None,
headers=[
('Content-Type', 'application/vnd.ms-excel'),
('Content-Disposition', content_disposition(report_name + '.xlsx'))
]
)
report_obj.get_xlsx_report(options, response, report_data, dfr_data)
response.set_cookie('fileToken', token)
return response
except Exception as e:
se = _serialize_exception(e)
error = {
'code': 200,
'message': 'Odoo Server Error',
'data': se
}
return request.make_response(html_escape(json.dumps(error)))

15
dynamic_financial_report/doc/changelog.md

@ -1,15 +0,0 @@
## Module <dynamic_financial_report>
#### 29.03.2021
#### Version 14.0.1.0.0
#### ADD
- Initial commit for Odoo 14 dynamic financial reports
#### 04.04.2021
#### Version 14.0.1.0.1
#### UPDT
- Currency issue in trial balance

7
dynamic_financial_report/report/__init__.py

@ -1,7 +0,0 @@
from . import general_ledger
from . import financial_reports
from . import partner_ledger
from . import ageing_partner
from . import bank_book
from . import cash_flow_report
from . import daybook_report

15
dynamic_financial_report/report/ageing_partner.py

@ -1,15 +0,0 @@
from odoo import api, models
class InsReportAgeingPartner(models.AbstractModel):
_name = 'report.dynamic_financial_report.ageing_partner'
@api.model
def _get_report_values(self, docids, data=None):
""" fetch values for get pdf report"""
if self.env.context.get('js_report'):
if data.get('report_data'):
data.update({'account_data': data.get('report_data')[1],
'Filters': data.get('report_data')[0],
})
return data

31
dynamic_financial_report/report/bank_book.py

@ -1,31 +0,0 @@
# -*- coding: utf-8 -*-
import time
from odoo import api, models, _
from odoo.exceptions import UserError
class InsReportBankBook(models.AbstractModel):
_name = 'report.dynamic_financial_report.bank_book'
@api.model
def _get_report_values(self, docids, data=None):
if self.env.context.get('js_report'):
if data.get('report_data'):
data.update({'account_data': data.get('report_data')[1],
'Filters': data.get('report_data')[0],
})
return data
class InsReportCashBook(models.AbstractModel):
_name = 'report.dynamic_financial_report.cash_book'
@api.model
def _get_report_values(self, docids, data=None):
if self.env.context.get('js_report'):
if data.get('report_data'):
data.update({'account_data': data.get('report_data')[1],
'Filters': data.get('report_data')[0],
})
return data

17
dynamic_financial_report/report/cash_flow_report.py

@ -1,17 +0,0 @@
# -*- coding: utf-8 -*-
from odoo import api, models
class InsReportCashFlow(models.AbstractModel):
_name = 'report.dynamic_financial_report.cash_flow'
@api.model
def _get_report_values(self, docids, data=None):
if self.env.context.get('js_report'):
if data.get('report_data'):
data.update({'account_data': data.get('report_data')[1],
'Filters': data.get('report_data')[0],
})
return data

18
dynamic_financial_report/report/daybook_report.py

@ -1,18 +0,0 @@
# -*- coding: utf-8 -*-
from odoo import api, models, _
class InsReportDayBook(models.AbstractModel):
_name = 'report.dynamic_financial_report.dynamic_day_book'
@api.model
def _get_report_values(self, docids, data=None):
""" fetch values for get pdf report"""
if self.env.context.get('js_report'):
if data.get('report_data'):
data.update({'account_data': data.get('report_data')[1],
'Filters': data.get('report_data')[0],
'lines': data.get('report_data')[2],
})
return data

21
dynamic_financial_report/report/financial_reports.py

@ -1,21 +0,0 @@
# -*- coding: utf-8 -*-
import time
from odoo import api, models, _
from odoo.exceptions import UserError
class InsReportBalanceSheet(models.AbstractModel):
_name = 'report.dynamic_financial_report.balance_sheet'
@api.model
def _get_report_values(self, docids, data=None):
if self.env.context.get('js_report'):
if data.get('report_data'):
data.update({
'Filters': data.get('report_data')[0],
'account_data': data.get('report_data')[1],
'report_lines': data.get('report_data')[2],
'report_name': data.get('report_name')
})
return data

32
dynamic_financial_report/report/general_ledger.py

@ -1,32 +0,0 @@
# -*- coding: utf-8 -*-
import time
from odoo import api, models, _
from odoo.exceptions import UserError
class InsReportGeneralLedger(models.AbstractModel):
_name = 'report.dynamic_financial_report.general_ledger'
@api.model
def _get_report_values(self, docids, data=None):
if self.env.context.get('js_report'):
if data.get('report_data'):
data.update({'account_data': data.get('report_data')[1],
'Filters': data.get('report_data')[0],
})
return data
class InsReportTrialBalance(models.AbstractModel):
_name = 'report.dynamic_financial_report.trial_balance'
@api.model
def _get_report_values(self, docids, data=None):
if self.env.context.get('js_report'):
if data.get('report_data'):
data.update({'account_data': data.get('report_data')[1],
'Filters': data.get('report_data')[0],
'total': data.get('report_data')[2],
})
return data

16
dynamic_financial_report/report/partner_ledger.py

@ -1,16 +0,0 @@
# -*- coding: utf-8 -*-
from odoo import api, models
class InsReportPartnerLedger(models.AbstractModel):
_name = 'report.dynamic_financial_report.partner_ledger'
@api.model
def _get_report_values(self, docids, data=None):
if self.env.context.get('js_report'):
if data.get('report_data'):
data.update({'account_data': data.get('report_data')[1],
'Filters': data.get('report_data')[0],
})
return data

9
dynamic_financial_report/security/ir.model.access.csv

@ -1,9 +0,0 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_dynamic_general_ledger,access.dynamic.general.ledger,model_dynamic_general_ledger,base.group_user,1,1,1,1
access_dynamic_trial_balance,access.dynamic.trial.balance,model_dynamic_trial_balance,base.group_user,1,1,1,1
access_dynamic_balance_sheet,access.dynamic.balance.sheet,model_dynamic_balance_sheet,base.group_user,1,1,1,1
access_dynamic_partner_ledger,access.dynamic.partner.ledger,model_dynamic_partner_ledger,base.group_user,1,1,1,1
access_dynamic_ageing_partner,access.dynamic.ageing.partner,model_dynamic_ageing_partner,base.group_user,1,1,1,1
access_bank_book,access.dynamic.bank.book,model_dynamic_bank_book,base.group_user,1,1,1,1
access_dynamic_cash_flow,access.dynamic.cash.flow,model_dynamic_cash_flow,base.group_user,1,1,1,1
access_dynamic_day_book,access.dynamic.day.book,model_dynamic_day_book,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_dynamic_general_ledger access.dynamic.general.ledger model_dynamic_general_ledger base.group_user 1 1 1 1
3 access_dynamic_trial_balance access.dynamic.trial.balance model_dynamic_trial_balance base.group_user 1 1 1 1
4 access_dynamic_balance_sheet access.dynamic.balance.sheet model_dynamic_balance_sheet base.group_user 1 1 1 1
5 access_dynamic_partner_ledger access.dynamic.partner.ledger model_dynamic_partner_ledger base.group_user 1 1 1 1
6 access_dynamic_ageing_partner access.dynamic.ageing.partner model_dynamic_ageing_partner base.group_user 1 1 1 1
7 access_bank_book access.dynamic.bank.book model_dynamic_bank_book base.group_user 1 1 1 1
8 access_dynamic_cash_flow access.dynamic.cash.flow model_dynamic_cash_flow base.group_user 1 1 1 1
9 access_dynamic_day_book access.dynamic.day.book model_dynamic_day_book base.group_user 1 1 1 1

BIN
dynamic_financial_report/static/description/banner.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

BIN
dynamic_financial_report/static/description/cybro_logo.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

BIN
dynamic_financial_report/static/description/icon.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

BIN
dynamic_financial_report/static/description/images/11.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

BIN
dynamic_financial_report/static/description/images/Accounting kit -2.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 471 KiB

BIN
dynamic_financial_report/static/description/images/BB_m.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

BIN
dynamic_financial_report/static/description/images/account_dynamic_report_banner.gif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 328 KiB

BIN
dynamic_financial_report/static/description/images/accounting_kit_window.gif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 712 KiB

BIN
dynamic_financial_report/static/description/images/auto_payroll_banner.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 KiB

BIN
dynamic_financial_report/static/description/images/bb_pdf.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

BIN
dynamic_financial_report/static/description/images/bb_xls.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

BIN
dynamic_financial_report/static/description/images/bs_m.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

BIN
dynamic_financial_report/static/description/images/bs_pdf.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

BIN
dynamic_financial_report/static/description/images/bs_xls.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

BIN
dynamic_financial_report/static/description/images/bud_banner.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

BIN
dynamic_financial_report/static/description/images/cb_m.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

BIN
dynamic_financial_report/static/description/images/cb_pdf.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

BIN
dynamic_financial_report/static/description/images/cb_xls.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

BIN
dynamic_financial_report/static/description/images/cf.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

BIN
dynamic_financial_report/static/description/images/cf_pdf.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

BIN
dynamic_financial_report/static/description/images/cf_xls.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

BIN
dynamic_financial_report/static/description/images/checked.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

BIN
dynamic_financial_report/static/description/images/crm_dashboard_banner.gif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 KiB

BIN
dynamic_financial_report/static/description/images/cybrosys.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

BIN
dynamic_financial_report/static/description/images/db_m.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

BIN
dynamic_financial_report/static/description/images/db_pdf.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

BIN
dynamic_financial_report/static/description/images/db_xls.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

BIN
dynamic_financial_report/static/description/images/dynamic_banner.gif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 213 KiB

BIN
dynamic_financial_report/static/description/images/dynamic_financial_reports.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

BIN
dynamic_financial_report/static/description/images/dynamic_gl.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 115 KiB

BIN
dynamic_financial_report/static/description/images/dynamic_tb.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

BIN
dynamic_financial_report/static/description/images/gl_journal.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

BIN
dynamic_financial_report/static/description/images/gl_pdf.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 KiB

BIN
dynamic_financial_report/static/description/images/gl_xlsx.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

BIN
dynamic_financial_report/static/description/images/hr_acc_cc_banner.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

BIN
dynamic_financial_report/static/description/images/mobile_service_shop_pro_banner.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

BIN
dynamic_financial_report/static/description/images/o_hrms_banner.gif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

BIN
dynamic_financial_report/static/description/images/odoo11_magento_banner.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

BIN
dynamic_financial_report/static/description/images/pa_m.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

BIN
dynamic_financial_report/static/description/images/pa_pdf.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

BIN
dynamic_financial_report/static/description/images/pa_xls.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

BIN
dynamic_financial_report/static/description/images/pal_pdf.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

BIN
dynamic_financial_report/static/description/images/pal_xls.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

BIN
dynamic_financial_report/static/description/images/payroll_banner.gif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

BIN
dynamic_financial_report/static/description/images/pl_m.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

BIN
dynamic_financial_report/static/description/images/pl_m1.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

BIN
dynamic_financial_report/static/description/images/pl_pdf.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 KiB

BIN
dynamic_financial_report/static/description/images/pl_xls.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

BIN
dynamic_financial_report/static/description/images/project_custome_gantt_banner.gif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 342 KiB

BIN
dynamic_financial_report/static/description/images/report_maker_banner.gif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

BIN
dynamic_financial_report/static/description/images/tb_gl.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 KiB

BIN
dynamic_financial_report/static/description/images/tb_pdf.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

BIN
dynamic_financial_report/static/description/images/tb_xlsx.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

1122
dynamic_financial_report/static/description/index.html

File diff suppressed because it is too large

52
dynamic_financial_report/static/src/js/action_manager.js

@ -1,52 +0,0 @@
odoo.define('dynamic_financial_report.action_manager', function (require) {
"use strict";
/**
* The purpose of this file is to add the actions of type
* 'xlsx' to the ActionManager.
*/
var ActionManager = require('web.ActionManager');
var framework = require('web.framework');
var session = require('web.session');
ActionManager.include({
/**
* Executes actions of type 'ir.actions.report'.
*
* @private
* @param {Object} action the description of the action to execute
* @param {Object} options @see doAction for details
* @returns {Promise} resolved when the action has been executed
*/
_executexlsxReportDownloadAction: function (action) {
framework.blockUI();
var def = $.Deferred();
session.get_file({
url: '/xlsx_reports',
data: action.data,
success: def.resolve.bind(def),
error: (error) => this.call('crash_manager', 'rpc_error', error),
complete: framework.unblockUI,
});
return def;
},
/**
* Overrides to handle the 'ir.actions.report' actions.
*
* @override
* @private
*/
_handleAction: function (action, options) {
if (action.type === 'ir_actions_xlsx_download') {
return this._executexlsxReportDownloadAction(action, options);
}
return this._super.apply(this, arguments);
},
});
});

558
dynamic_financial_report/static/src/js/ageing_partner.js

@ -1,558 +0,0 @@
odoo.define('dynamic_financial_report.ageing_partner', function(require) {
'use strict';
var AbstractAction = require('web.AbstractAction');
var core = require('web.core');
var field_utils = require('web.field_utils');
var rpc = require('web.rpc');
var session = require('web.session');
var utils = require('web.utils');
var QWeb = core.qweb;
var _t = core._t;
var AgeingPartner = AbstractAction.extend({
template: 'AgeingPartner',
events: {
'click .al-line': 'get_move_lines',
'click .view-move': 'view_move',
'click #filter_apply_button': 'apply_filter',
'click #pdf': 'print_pdf',
'click #xlsx': 'print_xlsx',
},
init: function(view, code) {
this._super(view, code);
this.wizard = code.context.wizard | null;
this.session = session;
},
start: function() {
var self = this;
self.initial_render = true;
rpc.query({
model: 'dynamic.ageing.partner',
method: 'create',
args: [{
res_model: this.res_model
}]
}).then(function(res) {
self.wizard = res;
self.ledger_view(self.initial_render);
})
},
apply_filter: function(event) {
event.preventDefault();
var self = this;
self.initial_render = false;
var output = {};
output.type=false
output.partner_type=false
var partner_ids = [];
var partner_text = [];
var span_res = document.getElementById("partner_res")
var partner_list = $(".partners").select2('data')
for (var i = 0; i < partner_list.length; i++) {
if(partner_list[i].element[0].selected === true)
{partner_ids.push(parseInt(partner_list[i].id))
if(partner_text.includes(partner_list[i].text) === false)
{partner_text.push(partner_list[i].text)
}
span_res.value = partner_text
span_res.innerHTML=span_res.value;
}
}
if (partner_list.length == 0){
span_res.value = ""
span_res.innerHTML=""; }
output.partner_ids = partner_ids
var partner_category_ids = [];
var category_text = [];
var span_res = document.getElementById("category_res")
var category_list = $(".partner-tag").select2('data')
for (var i = 0; i < category_list.length; i++) {
if(category_list[i].element[0].selected === true)
{partner_category_ids.push(parseInt(category_list[i].id))
if(category_text.includes(category_list[i].text) === false)
{category_text.push(category_list[i].text)
}
span_res.value = category_text
span_res.innerHTML=span_res.value;
}
}
if (category_list.length == 0){
span_res.value = ""
span_res.innerHTML=""; }
output.partner_category_ids = partner_category_ids
if ($(".target-moves").length){
var target_res = document.getElementById("target_res")
output.target_moves = $(".target-moves")[1].value
target_res.value = $(".target-moves")[1].value
target_res.innerHTML=target_res.value;
if ($(".target-moves").value==""){
target_res.innerHTML="draft";
output.target_moves = "draft"
}
}
if ($(".partner-type").length){
var partner_type_res = document.getElementById("partner_type_res")
output.partner_type = $(".partner-type")[1].value
partner_type_res.value = $(".partner-type")[1].value
partner_type_res.innerHTML=partner_type_res.value;
if ($(".partner-type").value==""){
partner_type_res.innerHTML="customer";
output.partner_type = "customer"
}
}
if ($(".account").length){
var type_res = document.getElementById("type_res")
output.type = $(".account")[1].value
type_res.value = $(".account")[1].value
type_res.innerHTML=type_res.value;
if ($(".account").value==""){
type_res.innerHTML="receivable";
output.type = "receivable"
}
}
if ($("#as_on_date").val()) {
var dateObject = $("#as_on_date").datepicker("getDate");
var dateString = $.datepicker.formatDate("yy-mm-dd", dateObject);
output.as_on_date = dateString;
}
output.include_details = true;
rpc.query({
model: 'dynamic.ageing.partner',
method: 'write',
args: [
[self.wizard], output
],
}).then(function(res) {
self.ledger_view(self.initial_render);
});
},
print_pdf: function(e) {
e.preventDefault();
var self = this;
self._rpc({
model: 'dynamic.ageing.partner',
method: 'get_data',
args: [
[self.wizard]
],
}).then(function(data) {
var action = {
'type': 'ir.actions.report',
'report_type': 'qweb-pdf',
'report_name': 'dynamic_financial_report.ageing_partner',
'report_file': 'dynamic_financial_report.ageing_partner',
'data': {
'report_data': data
},
'context': {
'active_model': 'dynamic.ageing.partner',
'landscape': 1,
'js_report': true
},
'display_name': 'Ageing Partner Report',
};
return self.do_action(action);
});
},
print_xlsx: function() {
var self = this;
self._rpc({
model: 'dynamic.ageing.partner',
method: 'get_data',
args: [
[self.wizard]
],
}).then(function(data) {
var action = {
'type': 'ir_actions_xlsx_download',
'data': {
'model': 'dynamic.ageing.partner',
'options': JSON.stringify(data[1]),
'output_format': 'xlsx',
'report_data': JSON.stringify(data[0]),
'report_name': 'Partner Ageing',
'dfr_data': JSON.stringify(data),
},
};
return self.do_action(action);
});
},
ledger_view: function(initial_render = true) {
var self = this;
var node = self.$('.container-al-main');
var last;
while (last = node.lastChild) node.removeChild(last);
rpc.query({
model: 'dynamic.ageing.partner',
method: 'get_data',
args: [
[self.wizard]
],
}).then(function(datas) {
self.filter_data = datas[0]
self.account_data = datas[1]
_.each(self.account_data, function(account) {
var currency_format = {
currency_id: account.company_currency_id,
position: account.company_currency_position,
symbol: account.company_currency_symbol,
noSymbol: true,
};
if (currency_format.position == "before") {
if (account.total == 0) {
account.total = ' - '
} else {
account.total = currency_format.symbol + '&nbsp;' + account.total.toFixed(2) + '&nbsp;';
}
if (account.Not == 0) {
account.Not = ' - '
} else {
account.Not = currency_format.symbol + '&nbsp;' + account.Not.toFixed(2) + '&nbsp;';
}
if (account.value_20 == 0) {
account.value_20 = ' - '
} else {
account.value_20 = currency_format.symbol + '&nbsp;' + account.value_20.toFixed(2) + '&nbsp;';
}
if (account[2140] == 0) {
account[2140] = ' - '
} else {
account[2140] = currency_format.symbol + '&nbsp;' + account[2140].toFixed(2) + '&nbsp;';
}
if (account[4160] == 0) {
account[4160] = ' - '
} else {
account[4160] = currency_format.symbol + '&nbsp;' + account[4160].toFixed(2) + '&nbsp;';
}
if (account[6180] == 0) {
account[6180] = ' - '
} else {
account[6180] = currency_format.symbol + '&nbsp;' + account[6180].toFixed(2) + '&nbsp;';
}
if (account[81100] == 0) {
account[81100] = ' - '
} else {
account[81100] = currency_format.symbol + '&nbsp;' + account[81100].toFixed(2) + '&nbsp;';
}
if (account[100] == 0) {
account[100] = ' - '
} else {
account[100] = currency_format.symbol + '&nbsp;' + account[100].toFixed(2) + '&nbsp;';
}
} else {
if (account.total == 0) {
account.total = ' - '
} else {
account.total = account.total.toFixed(2) + '&nbsp;' + currency_id.symbol;
//
}
if (account.Not == 0) {
account.Not = ' - '
} else {
account.Not = account.Not.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (account.value_20 == 0) {
account.value_20 = ' - '
} else {
account.value_20 = account.value_20.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (account[2140] == 0) {
account[2140] = ' - '
} else {
account[2140] = account[2140].toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (account[4160] == 0) {
account[4160] = ' - '
} else {
account[4160] = account[4160].toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (account[6180] == 0) {
account[6180] = ' - '
} else {
account[6180] = account[6180].toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (account[81100] == 0) {
account[81100] = ' - '
} else {
account[81100] = account[81100].toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (account[100] == 0) {
account[100] = ' - '
} else {
account[100] = account[100].toFixed(2) + '&nbsp;' + currency_id.symbol;
}
}
});
if (initial_render) {
self.$('.al-filter').html(QWeb.render('FilterSection-al', {
filter_data: datas[0],
}));
self.$el.find('.account').select2({
placeholder: 'Select Account Type...',
});
self.$el.find('.partner-type').select2({
placeholder: 'Select Partner Type...',
});
self.$el.find('.partner-tag').select2({
placeholder: 'Select Partner Tag...',
});
self.$el.find('.partners').select2({
placeholder: 'Select Partners...',
});
self.$el.find('.target-moves').select2({
placeholder: 'Posted or All Entries...',
});
self.$el.find('#as_on_date').datepicker({
dateFormat: 'dd-mm-yy'
});
}
self.$('.container-al-main').html(QWeb.render('AgeingPartnerData', {
account_data: datas[1]
}));
});
},
al_lines_by_page: function(offset, account_id) {
var self = this;
return rpc.query({
model: 'dynamic.ageing.partner',
method: 'al_move_lines',
args: [self.wizard, offset, account_id],
})
},
get_move_lines: function(event) {
event.preventDefault();
var self = this;
var account_id = $(event.currentTarget).data('account-id');
var offset = 0;
var td = $(event.currentTarget).next('tr').find('td');
if (td.length == 1) {
self.al_lines_by_page(offset, account_id).then(function(datas) {
_.each(datas[2], function(data) {
var currency_format = {
currency_id: data.company_currency_id,
position: data.company_currency_position,
symbol: data.company_currency_symbol,
noSymbol: true,
};
if (currency_format.position == "before") {
if (data.range_0 == 0) {
data.range_0 = ' - '
} else {
data.range_0 = currency_format.symbol + data.range_0.toFixed(2) ;
}
if (data.range_1 == 0) {
data.range_1 = ' - '
} else {
data.range_1 = currency_format.symbol + data.range_1.toFixed(2) ;
}
if (data.range_2 == 0) {
data.range_2 = ' - '
} else {
data.range_2 = currency_format.symbol + data.range_2.toFixed(2) ;
}
if (data.range_3 == 0) {
data.range_3 = ' - '
} else {
data.range_3 = currency_format.symbol + data.range_3.toFixed(2) ;
}
if (data.range_4 == 0) {
data.range_4 = ' - '
} else {
data.range_4 = currency_format.symbol + data.range_4.toFixed(2) ;
}
if (data.range_5 == 0) {
data.range_5 = ' - '
} else {
data.range_5 = currency_format.symbol + data.range_5.toFixed(2) ;
}
if (data.range_6 == 0) {
data.range_6 = ' - '
} else {
data.range_6 = currency_format.symbol + data.range_6.toFixed(2) ;
}
} else {
if (data.range_0 == 0) {
data.range_0 = ' - '
} else {
data.range_0 = data.range_0.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (data.range_1 == 0) {
data.range_1 = ' - '
} else {
data.range_1 = data.range_1.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (data.range_2 == 0) {
data.range_2 = ' - '
} else {
data.range_2 = data.range_2.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (data.range_3 == 0) {
data.range_3 = ' - '
} else {
data.range_3 = data.range_3.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (data.range_4 == 0) {
data.range_4 = ' - '
} else {
data.range_4 = data.range_4.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (data.range_5 == 0) {
data.range_5 = ' - '
} else {
data.range_5 = data.range_5.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (data.range_6 == 0) {
data.range_6 = ' - '
} else {
data.range_6 = data.range_6.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
}
});
$(event.currentTarget).next('tr').find('td .al-table-div').remove();
$(event.currentTarget).next('tr').find('td ul').after(
QWeb.render('SubSection_al', {
count: datas[0],
offset: datas[1],
account_data: datas[2],
}))
$(event.currentTarget).next('tr').find('td ul li:first a').css({
'background-color': '#00ede8',
'font-weight': 'bold',
});
})
}
},
view_move: function(event) {
event.preventDefault();
var self = this;
var context = {};
var redirect_to_document = function(res_model, res_id, view_id) {
var action = {
type: 'ir.actions.act_window',
view_type: 'form',
view_mode: 'form',
res_model: res_model,
views: [
[view_id || false, 'form']
],
res_id: res_id,
target: 'current',
context: context,
};
return self.do_action(action);
};
rpc.query({
model: 'account.move',
method: 'search_read',
domain: [
['id', '=', $(event.currentTarget).data('move-id')]
],
fields: ['id'],
limit: 1,
})
.then(function(record) {
if (record.length > 0) {
redirect_to_document('account.move', record[0].id);
} else {
redirect_to_document('account.move', $(event.currentTarget).data('move-id'));
}
});
},
});
core.action_registry.add('dynamic.al', AgeingPartner);
});

527
dynamic_financial_report/static/src/js/balance_sheet.js

@ -1,527 +0,0 @@
odoo.define('dynamic_financial_report.balance_sheet', function(require) {
'use strict';
var AbstractAction = require('web.AbstractAction');
var core = require('web.core');
var field_utils = require('web.field_utils');
var rpc = require('web.rpc');
var session = require('web.session');
var utils = require('web.utils');
var QWeb = core.qweb;
var _t = core._t;
var BalanceSheet = AbstractAction.extend({
template: 'BalanceSheet',
events: {
'click .bs-line': 'get_move_lines',
'click .view-move': 'view_move',
'click #filter_apply_button': 'apply_filter',
'click #pdf': 'print_pdf',
'click #xlsx': 'print_xlsx',
'click .open-gl': 'get_gl',
},
init: function(view, code) {
this._super(view, code);
this.wizard = code.context.wizard | null;
this.session = session;
},
start: function() {
var self = this;
self.initial_render = true;
rpc.query({
model: 'dynamic.balance.sheet',
method: 'create',
args: [{
}]
}).then(function(res) {
self.wizard = res;
self.sheet_view(self.initial_render);
})
},
apply_filter: function(event) {
event.preventDefault();
var self = this;
self.initial_render = false;
var output = {};
var account_ids = [];
var account_text = [];
var account_res = document.getElementById("acc_res")
var account_list = $(".account").select2('data')
for (var i = 0; i < account_list.length; i++) {
if(account_list[i].element[0].selected === true){
account_ids.push(parseInt(account_list[i].id))
if(account_text.includes(account_list[i].text) === false){
account_text.push(account_list[i].text)
}
account_res.value = account_text
account_res.innerHTML=account_res.value;
}
}
if (account_list.length == 0){
account_res.value = ""
account_res.innerHTML="";
}
output.account_ids = account_ids
var journal_ids = [];
var journal_text = [];
var journal_res = document.getElementById("journal_res")
var journal_list = $(".journal").select2('data')
for (var i = 0; i < journal_list.length; i++) {
if(journal_list[i].element[0].selected === true){
journal_ids.push(parseInt(journal_list[i].id))
if(journal_text.includes(journal_list[i].text) === false){
journal_text.push(journal_list[i].text)
}
journal_res.value = journal_text
journal_res.innerHTML=journal_res.value;
}
}
if (journal_list.length == 0){
journal_res.value = ""
journal_res.innerHTML="";
}
output.journal_ids = journal_ids
var account_tag_ids = [];
var account_tag_text = [];
var account_tag_res = document.getElementById("acc_tag_res")
var account_tag_list = $(".account-tag").select2('data')
for (var i = 0; i < account_tag_list.length; i++) {
if(account_tag_list[i].element[0].selected === true){
account_tag_ids.push(parseInt(account_tag_list[i].id))
if(account_tag_text.includes(account_tag_list[i].text) === false){
account_tag_text.push(account_tag_list[i].text)
}
account_tag_res.value = account_tag_text
account_tag_res.innerHTML=account_tag_res.value;
}
}
if (account_tag_list.length == 0){
account_tag_res.value = ""
account_tag_res.innerHTML="";
}
output.account_tag_ids = account_tag_ids
var analytic_ids = [];
var analytic_text = [];
var span_res = document.getElementById("analic_res")
var analytic_list = $(".analytic").select2('data')
for (var i = 0; i < analytic_list.length; i++) {
if(analytic_list[i].element[0].selected === true){
analytic_ids.push(parseInt(analytic_list[i].id))
if(analytic_text.includes(analytic_list[i].text) === false){
analytic_text.push(analytic_list[i].text)
}
span_res.value = analytic_text
span_res.innerHTML=span_res.value;
}
}
if (analytic_list.length == 0){
span_res.value = ""
span_res.innerHTML="";
}
output.analytic_ids = analytic_ids
output.analytic_tag_ids = analytic_tag_ids
var analytic_tag_ids = [];
var analytic_tag_text = [];
var analytic_tag_res = document.getElementById("analic_tag_res")
var analytic_tag_list = $(".analytic-tag").select2('data')
for (var i = 0; i < analytic_tag_list.length; i++) {
if(analytic_tag_list[i].element[0].selected === true){
analytic_tag_ids.push(parseInt(analytic_tag_list[i].id))
if(analytic_tag_text.includes(analytic_tag_list[i].text) === false){
analytic_tag_text.push(analytic_tag_list[i].text)
}
analytic_tag_res.value = analytic_tag_text
analytic_tag_res.innerHTML=analytic_tag_res.value;
}
}
if (analytic_tag_list.length == 0){
analytic_tag_res.value = ""
analytic_tag_res.innerHTML="";
}
output.analytic_tag_ids = analytic_tag_ids
if ($("#date_from").val()) {
var dateObject = $("#date_from").datepicker("getDate");
var dateString = $.datepicker.formatDate("yy-mm-dd", dateObject);
output.date_from = dateString;
}
if ($("#date_to").val()) {
var dateObject = $("#date_to").datepicker("getDate");
var dateString = $.datepicker.formatDate("yy-mm-dd", dateObject);
output.date_to = dateString;
}
if ($(".entries").length) {
var post_res = document.getElementById("post_res")
output.entries = $(".entries")[1].value
post_res.value = $(".entries")[1].value
post_res.innerHTML=post_res.value;
if ($(".entries")[1].value == "") {
post_res.innerHTML="all";
}
}
output.include_details = true;
rpc.query({
model: 'dynamic.balance.sheet',
method: 'write',
args: [
[self.wizard], output
],
}).then(function(res) {
self.sheet_view(self.initial_render);
});
},
get_gl: function(e) {
var self = this;
var account_id = $(e.target).attr('data-account-id');
var options = {
account_ids: [account_id],
}
var action = {
type: 'ir.actions.client',
name: 'GL View',
tag: 'dynamic.gl',
target: 'new',
domain: [['account_ids','=', account_id]],
}
return this.do_action(action);
},
print_pdf: function(e) {
e.preventDefault();
var self = this;
var action_title = self._title
self._rpc({
model: 'dynamic.balance.sheet',
method: 'get_data',
args: [
[self.wizard], action_title
],
}).then(function(data) {
var action = {
'type': 'ir.actions.report',
'report_type': 'qweb-pdf',
'report_name': 'dynamic_financial_report.balance_sheet',
'report_file': 'dynamic_financial_report.balance_sheet',
'data': {
'report_data': data,
'report_name': 'Balance Sheet'
},
'context': {
'active_model': 'dynamic.balance.sheet',
'landscape': 1,
'js_report': true
},
'display_name': 'Balance Sheet',
};
return self.do_action(action);
});
},
print_xlsx: function() {
var self = this;
var action_title = self._title
self._rpc({
model: 'dynamic.balance.sheet',
method: 'get_data',
args: [
[self.wizard], action_title
],
}).then(function(data) {
var action = {
'type': 'ir_actions_xlsx_download',
'data': {
'model': 'dynamic.balance.sheet',
'options': 'Balance Sheet',
'output_format': 'xlsx',
'report_data': JSON.stringify(data[0]),
'report_name': 'Balance Sheet',
'dfr_data':JSON.stringify(data[2]),
},
};
return self.do_action(action);
});
},
sheet_view: function(initial_render = true) {
var self = this;
var action_title = self._title
var node = self.$('.container-bs-main');
var last;
while (last = node.lastChild) node.removeChild(last);
rpc.query({
model: 'dynamic.balance.sheet',
method: 'get_data',
args: [
[self.wizard], action_title
],
}).then(function(datas) {
self.filter_data = datas[0]
self.account_data = datas[1]
_.each(self.account_data, function(account) {
var currency_format = {
currency_id: account.company_currency_id,
position: account.company_currency_position,
symbol: account.company_currency_symbol,
noSymbol: true,
};
if (currency_format.position == "before") {
if (account.debit == 0) {
account.debit = ' - '
} else {
account.debit = currency_format.symbol + '&nbsp;' + account.debit.toFixed(2) + '&nbsp;';
}
if (account.credit == 0) {
account.credit = ' - '
} else {
account.credit = currency_format.symbol + '&nbsp;' + account.credit.toFixed(2) + '&nbsp;';
}
if (account.balance == 0) {
account.balance = ' - '
} else {
account.balance = currency_format.symbol + '&nbsp;' + account.balance.toFixed(2) + '&nbsp;';
}
} else {
if (account.debit == 0) {
account.debit = ' - '
} else {
account.debit = account.debit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (account.credit == 0) {
account.credit = ' - '
} else {
account.credit = account.credit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (account.balance == 0) {
account.balance = ' - '
} else {
account.balance = account.balance.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
}
});
if (initial_render) {
self.$('.bs-filter').html(QWeb.render('FilterSectionBS', {
filter_data: datas[0],
}));
self.$el.find('.journal').select2({
placeholder: 'Select Journal...',
});
self.$el.find('.account').select2({
placeholder: 'Select Account...',
});
self.$el.find('.account-tag').select2({
placeholder: 'Select Account Tag...',
});
self.$el.find('.analytic-tag').select2({
placeholder: 'Select Analytic Tag...',
});
self.$el.find('.analytic').select2({
placeholder: 'Select Analytic...',
});
self.$el.find('#date_from').datepicker({
dateFormat: 'dd-mm-yy'
});
self.$el.find('#date_to').datepicker({
dateFormat: 'dd-mm-yy'
});
self.$el.find('.entries').select2({
placeholder: 'Select Moves',
});
}
self.$('.container-bs-main').html(QWeb.render('BalanceSheetData', {
account_data: datas[1],
report_lines: datas[2]
}));
});
},
bs_lines_by_page: function(offset, account_id) {
var self = this;
return rpc.query({
model: 'dynamic.balance.sheet',
method: 'bs_move_lines',
args: [self.wizard, offset, account_id],
})
},
get_move_lines: function(event) {
event.preventDefault();
var self = this;
var account_id = $(event.currentTarget).data('account-id');
var offset = 0;
var td = $(event.currentTarget).next('tr').find('td');
if (td.length == 1) {
self.bs_lines_by_page(offset, account_id).then(function(datas) {
_.each(datas[2], function(data) {
var currency_format = {
currency_id: data.company_currency_id,
position: data.company_currency_position,
symbol: data.company_currency_symbol,
noSymbol: true,
};
if (currency_format.position == "before") {
if (data.debit == 0) {
data.debit = ' - '
} else {
data.debit = currency_format.symbol + '&nbsp;' + data.debit.toFixed(2) + '&nbsp;';
}
if (data.credit == 0) {
data.credit = ' - '
} else {
data.credit = currency_format.symbol + '&nbsp;' + data.credit.toFixed(2) + '&nbsp;';
}
if (data.balance == 0) {
data.balance = ' - '
} else {
data.balance = currency_format.symbol + '&nbsp;' + data.balance.toFixed(2) + '&nbsp;';
}
} else {
if (data.debit == 0) {
data.debit = ' - '
} else {
data.debit = data.debit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (data.credit == 0) {
data.credit = ' - '
} else {
data.credit = data.credit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (data.balance == 0) {
data.balance = ' - '
} else {
data.balance = data.balance.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
}
});
$(event.currentTarget).next('tr').find('td .bs-table-div').remove();
$(event.currentTarget).next('tr').find('td ul').after(
QWeb.render('SubSectionBS', {
count: datas[0],
offset: datas[1],
account_data: datas[2],
}))
$(event.currentTarget).next('tr').find('td ul li:first a').css({
'background-color': '#00ede8',
'font-weight': 'bold',
});
})
}
},
view_move: function(event) {
event.preventDefault();
var self = this;
var context = {};
var redirect_to_document = function(res_model, res_id, view_id) {
var action = {
type: 'ir.actions.act_window',
view_type: 'form',
view_mode: 'form',
res_model: res_model,
views: [
[view_id || false, 'form']
],
res_id: res_id,
target: 'current',
context: context,
};
return self.do_action(action);
};
rpc.query({
model: 'account.move',
method: 'search_read',
domain: [
['id', '=', $(event.currentTarget).data('move-id')]
],
fields: ['id'],
limit: 1,
})
.then(function(record) {
if (record.length > 0) {
redirect_to_document('account.move', record[0].id);
} else {
redirect_to_document('account.move', $(event.currentTarget).data('move-id'));
}
});
},
});
core.action_registry.add('dynamic.bs', BalanceSheet);
});

995
dynamic_financial_report/static/src/js/bank_book.js

@ -1,995 +0,0 @@
odoo.define('dynamic_financial_report.bank_book', function(require) {
'use strict';
var AbstractAction = require('web.AbstractAction');
var core = require('web.core');
var field_utils = require('web.field_utils');
var rpc = require('web.rpc');
var session = require('web.session');
var utils = require('web.utils');
var QWeb = core.qweb;
var _t = core._t;
var BankBook = AbstractAction.extend({
template: 'BankBook',
events: {
'click .bb-line': 'get_move_lines',
'click .view-move': 'view_move',
'click #filter_apply_button': 'apply_filter',
'click #pdf': 'print_pdf',
'click #xlsx': 'print_xlsx',
},
init: function(view, code) {
this._super(view, code);
this.wizard = code.context.wizard | null;
this.session = session;
},
start: function() {
var self = this;
self.initial_render = true;
rpc.query({
model: 'dynamic.bank.book',
method: 'create',
args: [{
}]
}).then(function(res) {
self.wizard = res;
self.bank_view(self.initial_render);
})
},
apply_filter: function(event) {
event.preventDefault();
var self = this;
self.initial_render = false;
var output = {};
var account_ids = [];
var account_text = [];
var account_res = document.getElementById("acc_res")
var account_list = $(".account").select2('data')
for (var i = 0; i < account_list.length; i++) {
if(account_list[i].element[0].selected === true){
account_ids.push(parseInt(account_list[i].id))
if(account_text.includes(account_list[i].text) === false){
account_text.push(account_list[i].text)
}
account_res.value = account_text
account_res.innerHTML=account_res.value;
}
}
if (account_list.length == 0){
account_res.value = ""
account_res.innerHTML="";
}
output.account_ids = account_ids
var journal_ids = [];
var journal_text = [];
var journal_res = document.getElementById("journal_res")
var journal_list = $(".journal").select2('data')
for (var i = 0; i < journal_list.length; i++) {
if(journal_list[i].element[0].selected === true){
journal_ids.push(parseInt(journal_list[i].id))
if(journal_text.includes(journal_list[i].text) === false){
journal_text.push(journal_list[i].text)
}
journal_res.value = journal_text
journal_res.innerHTML=journal_res.value;
}
}
if (journal_list.length == 0){
journal_res.value = ""
journal_res.innerHTML="";
}
output.journal_ids = journal_ids
var account_tag_ids = [];
var account_tag_text = [];
var account_tag_res = document.getElementById("acc_tag_res")
var account_tag_list = $(".account-tag").select2('data')
for (var i = 0; i < account_tag_list.length; i++) {
if(account_tag_list[i].element[0].selected === true){
account_tag_ids.push(parseInt(account_tag_list[i].id))
if(account_tag_text.includes(account_tag_list[i].text) === false){
account_tag_text.push(account_tag_list[i].text)
}
account_tag_res.value = account_tag_text
account_tag_res.innerHTML=account_tag_res.value;
}
}
if (account_tag_list.length == 0){
account_tag_res.value = ""
account_tag_res.innerHTML="";
}
output.account_tag_ids = account_tag_ids
var analytic_ids = [];
var analytic_text = [];
var span_res = document.getElementById("analic_res")
var analytic_list = $(".analytic").select2('data')
for (var i = 0; i < analytic_list.length; i++) {
if(analytic_list[i].element[0].selected === true){
analytic_ids.push(parseInt(analytic_list[i].id))
if(analytic_text.includes(analytic_list[i].text) === false){
analytic_text.push(analytic_list[i].text)
}
span_res.value = analytic_text
span_res.innerHTML=span_res.value;
}
}
if (analytic_list.length == 0){
span_res.value = ""
span_res.innerHTML="";
}
output.analytic_ids = analytic_ids
output.analytic_tag_ids = analytic_tag_ids
var analytic_tag_ids = [];
var analytic_tag_text = [];
var analytic_tag_res = document.getElementById("analic_tag_res")
var analytic_tag_list = $(".analytic-tag").select2('data')
for (var i = 0; i < analytic_tag_list.length; i++) {
if(analytic_tag_list[i].element[0].selected === true){
analytic_tag_ids.push(parseInt(analytic_tag_list[i].id))
if(analytic_tag_text.includes(analytic_tag_list[i].text) === false){
analytic_tag_text.push(analytic_tag_list[i].text)
}
analytic_tag_res.value = analytic_tag_text
analytic_tag_res.innerHTML=analytic_tag_res.value;
}
}
if (analytic_tag_list.length == 0){
analytic_tag_res.value = ""
analytic_tag_res.innerHTML="";
}
output.analytic_tag_ids = analytic_tag_ids
if ($("#date_from").val()) {
var dateObject = $("#date_from").datepicker("getDate");
var dateString = $.datepicker.formatDate("yy-mm-dd", dateObject);
output.date_from = dateString;
}
if ($("#date_to").val()) {
var dateObject = $("#date_to").datepicker("getDate");
var dateString = $.datepicker.formatDate("yy-mm-dd", dateObject);
output.date_to = dateString;
}
if ($(".entries").length) {
var post_res = document.getElementById("post_res")
output.entries = $(".entries")[1].value
post_res.value = $(".entries")[1].value
post_res.innerHTML=post_res.value;
if ($(".entries")[1].value == "") {
post_res.innerHTML="all";
}
}
output.include_details = true;
rpc.query({
model: 'dynamic.bank.book',
method: 'write',
args: [
[self.wizard], output
],
}).then(function(res) {
self.bank_view(self.initial_render);
});
},
print_pdf: function(e) {
e.preventDefault();
var self = this;
var action_title = self._title
self._rpc({
model: 'dynamic.bank.book',
method: 'get_data',
args: [
[self.wizard], action_title
],
}).then(function(data) {
var action = {
'type': 'ir.actions.report',
'report_type': 'qweb-pdf',
'report_name': 'dynamic_financial_report.bank_book',
'report_file': 'dynamic_financial_report.bank_book',
'data': {
'report_data': data
},
'context': {
'active_model': 'dynamic.bank.book',
'landscape': 1,
'js_report': true
},
'display_name': 'Bank Book',
};
return self.do_action(action);
});
},
print_xlsx: function() {
var self = this;
var action_title = self._title
self._rpc({
model: 'dynamic.bank.book',
method: 'get_data',
args: [
[self.wizard], action_title
],
}).then(function(data) {
var action = {
'type': 'ir_actions_xlsx_download',
'data': {
'model': 'dynamic.bank.book',
'options': JSON.stringify(data[1]),
'output_format': 'xlsx',
'report_data': JSON.stringify(data[0]),
'report_name': 'Bank Book',
'dfr_data': 'Bank Book',
},
};
return self.do_action(action);
});
},
bank_view: function(initial_render = true) {
var self = this;
var node = self.$('.container-bb-main');
var action_title = self._title
var last;
while (last = node.lastChild) node.removeChild(last);
rpc.query({
model: 'dynamic.bank.book',
method: 'get_data',
args: [
[self.wizard], action_title
],
}).then(function(datas) {
self.filter_data = datas[0]
self.account_data = datas[1]
_.each(self.account_data, function(account) {
var currency_format = {
currency_id: account.company_currency_id,
position: account.company_currency_position,
symbol: account.company_currency_symbol,
noSymbol: true,
};
if (currency_format.position == "before") {
if (account.debit == 0) {
account.debit = ' - '
} else {
account.debit = currency_format.symbol + '&nbsp;' + account.debit.toFixed(2) + '&nbsp;';
}
if (account.credit == 0) {
account.credit = ' - '
} else {
account.credit = currency_format.symbol + '&nbsp;' + account.credit.toFixed(2) + '&nbsp;';
}
if (account.balance == 0) {
account.balance = ' - '
} else {
account.balance = currency_format.symbol + '&nbsp;' + account.balance.toFixed(2) + '&nbsp;';
}
} else {
if (account.debit == 0) {
account.debit = ' - '
} else {
account.debit = account.debit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (account.credit == 0) {
account.credit = ' - '
} else {
account.credit = account.credit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (account.balance == 0) {
account.balance = ' - '
} else {
account.balance = account.balance.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
}
});
if (initial_render) {
self.$('.bb-filter').html(QWeb.render('FilterSectionBB', {
filter_data: datas[0],
}));
self.$el.find('.journal').select2({
placeholder: 'Select Journal...',
});
self.$el.find('.account').select2({
placeholder: 'Select Account...',
});
self.$el.find('.account-tag').select2({
placeholder: 'Select Account Tag...',
});
self.$el.find('.analytic-tag').select2({
placeholder: 'Select Analytic Tag...',
});
self.$el.find('.analytic').select2({
placeholder: 'Select Analytic...',
});
self.$el.find('#date_from').datepicker({
dateFormat: 'dd-mm-yy'
});
self.$el.find('#date_to').datepicker({
dateFormat: 'dd-mm-yy'
});
self.$el.find('.entries').select2({
placeholder: 'Select Moves',
});
}
self.$('.container-bb-main').html(QWeb.render('BankBookData', {
account_data: datas[1]
}));
});
},
bb_lines_by_page: function(offset, account_id) {
var self = this;
return rpc.query({
model: 'dynamic.bank.book',
method: 'bb_move_lines',
args: [self.wizard, offset, account_id],
})
},
get_move_lines: function(event) {
event.preventDefault();
var self = this;
var account_id = $(event.currentTarget).data('account-id');
var offset = 0;
var td = $(event.currentTarget).next('tr').find('td');
if (td.length == 1) {
self.bb_lines_by_page(offset, account_id).then(function(datas) {
_.each(datas[2], function(data) {
var currency_format = {
currency_id: data.company_currency_id,
position: data.company_currency_position,
symbol: data.company_currency_symbol,
noSymbol: true,
};
if (currency_format.position == "before") {
if (data.debit == 0) {
data.debit = ' - '
} else {
data.debit = currency_format.symbol + '&nbsp;' + data.debit.toFixed(2) + '&nbsp;';
}
if (data.credit == 0) {
data.credit = ' - '
} else {
data.credit = currency_format.symbol + '&nbsp;' + data.credit.toFixed(2) + '&nbsp;';
}
if (data.balance == 0) {
data.balance = ' - '
} else {
data.balance = currency_format.symbol + '&nbsp;' + data.balance.toFixed(2) + '&nbsp;';
}
} else {
if (data.debit == 0) {
data.debit = ' - '
} else {
data.debit = data.debit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (data.credit == 0) {
data.credit = ' - '
} else {
data.credit = data.credit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (data.balance == 0) {
data.balance = ' - '
} else {
data.balance = data.balance.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
}
});
$(event.currentTarget).next('tr').find('td .bb-table-div').remove();
$(event.currentTarget).next('tr').find('td ul').after(
QWeb.render('SubSectionBB', {
count: datas[0],
offset: datas[1],
account_data: datas[2],
}))
$(event.currentTarget).next('tr').find('td ul li:first a').css({
'background-color': '#00ede8',
'font-weight': 'bold',
});
})
}
},
view_move: function(event) {
event.preventDefault();
var self = this;
var context = {};
var redirect_to_document = function(res_model, res_id, view_id) {
var action = {
type: 'ir.actions.act_window',
view_type: 'form',
view_mode: 'form',
res_model: res_model,
views: [
[view_id || false, 'form']
],
res_id: res_id,
target: 'current',
context: context,
};
return self.do_action(action);
};
rpc.query({
model: 'account.move',
method: 'search_read',
domain: [
['id', '=', $(event.currentTarget).data('move-id')]
],
fields: ['id'],
limit: 1,
})
.then(function(record) {
if (record.length > 0) {
redirect_to_document('account.move', record[0].id);
} else {
redirect_to_document('account.move', $(event.currentTarget).data('move-id'));
}
});
},
});
var CashBook = AbstractAction.extend({
template: 'CashBook',
events: {
'click .cb-line': 'get_move_lines',
'click .view-move': 'view_move',
'click #filter_apply_button': 'apply_filter',
'click #pdf': 'print_pdf',
'click #xlsx': 'print_xlsx',
},
init: function(view, code) {
this._super(view, code);
this.wizard = code.context.wizard | null;
this.session = session;
},
start: function() {
var self = this;
self.initial_render = true;
rpc.query({
model: 'dynamic.bank.book',
method: 'create',
args: [{
}]
}).then(function(res) {
self.wizard = res;
self.cash_view(self.initial_render);
})
},
apply_filter: function(event) {
event.preventDefault();
var self = this;
self.initial_render = false;
var output = {};
var account_ids = [];
var account_text = [];
var account_res = document.getElementById("acc_res")
var account_list = $(".account").select2('data')
for (var i = 0; i < account_list.length; i++) {
if(account_list[i].element[0].selected === true){
account_ids.push(parseInt(account_list[i].id))
if(account_text.includes(account_list[i].text) === false){
account_text.push(account_list[i].text)
}
account_res.value = account_text
account_res.innerHTML=account_res.value;
}
}
if (account_list.length == 0){
account_res.value = ""
account_res.innerHTML="";
}
output.account_ids = account_ids
var journal_ids = [];
var journal_text = [];
var journal_res = document.getElementById("journal_res")
var journal_list = $(".journal").select2('data')
for (var i = 0; i < journal_list.length; i++) {
if(journal_list[i].element[0].selected === true){
journal_ids.push(parseInt(journal_list[i].id))
if(journal_text.includes(journal_list[i].text) === false){
journal_text.push(journal_list[i].text)
}
journal_res.value = journal_text
journal_res.innerHTML=journal_res.value;
}
}
if (journal_list.length == 0){
journal_res.value = ""
journal_res.innerHTML="";
}
output.journal_ids = journal_ids
var account_tag_ids = [];
var account_tag_text = [];
var account_tag_res = document.getElementById("acc_tag_res")
var account_tag_list = $(".account-tag").select2('data')
for (var i = 0; i < account_tag_list.length; i++) {
if(account_tag_list[i].element[0].selected === true){
account_tag_ids.push(parseInt(account_tag_list[i].id))
if(account_tag_text.includes(account_tag_list[i].text) === false){
account_tag_text.push(account_tag_list[i].text)
}
account_tag_res.value = account_tag_text
account_tag_res.innerHTML=account_tag_res.value;
}
}
if (account_tag_list.length == 0){
account_tag_res.value = ""
account_tag_res.innerHTML="";
}
output.account_tag_ids = account_tag_ids
var analytic_ids = [];
var analytic_text = [];
var span_res = document.getElementById("analic_res")
var analytic_list = $(".analytic").select2('data')
for (var i = 0; i < analytic_list.length; i++) {
if(analytic_list[i].element[0].selected === true){
analytic_ids.push(parseInt(analytic_list[i].id))
if(analytic_text.includes(analytic_list[i].text) === false){
analytic_text.push(analytic_list[i].text)
}
span_res.value = analytic_text
span_res.innerHTML=span_res.value;
}
}
if (analytic_list.length == 0){
span_res.value = ""
span_res.innerHTML="";
}
output.analytic_ids = analytic_ids
output.analytic_tag_ids = analytic_tag_ids
var analytic_tag_ids = [];
var analytic_tag_text = [];
var analytic_tag_res = document.getElementById("analic_tag_res")
var analytic_tag_list = $(".analytic-tag").select2('data')
for (var i = 0; i < analytic_tag_list.length; i++) {
if(analytic_tag_list[i].element[0].selected === true){
analytic_tag_ids.push(parseInt(analytic_tag_list[i].id))
if(analytic_tag_text.includes(analytic_tag_list[i].text) === false){
analytic_tag_text.push(analytic_tag_list[i].text)
}
analytic_tag_res.value = analytic_tag_text
analytic_tag_res.innerHTML=analytic_tag_res.value;
}
}
if (analytic_tag_list.length == 0){
analytic_tag_res.value = ""
analytic_tag_res.innerHTML="";
}
output.analytic_tag_ids = analytic_tag_ids
if ($("#date_from").val()) {
var dateObject = $("#date_from").datepicker("getDate");
var dateString = $.datepicker.formatDate("yy-mm-dd", dateObject);
output.date_from = dateString;
}
if ($("#date_to").val()) {
var dateObject = $("#date_to").datepicker("getDate");
var dateString = $.datepicker.formatDate("yy-mm-dd", dateObject);
output.date_to = dateString;
}
if ($(".entries").length) {
var post_res = document.getElementById("post_res")
output.entries = $(".entries")[1].value
post_res.value = $(".entries")[1].value
post_res.innerHTML=post_res.value;
if ($(".entries")[1].value == "") {
post_res.innerHTML="all";
}
}
output.include_details = true;
rpc.query({
model: 'dynamic.bank.book',
method: 'write',
args: [
[self.wizard], output
],
}).then(function(res) {
self.cash_view(self.initial_render);
});
},
print_pdf: function(e) {
e.preventDefault();
var self = this;
var action_title = self._title
self._rpc({
model: 'dynamic.bank.book',
method: 'get_data',
args: [
[self.wizard], action_title
],
}).then(function(data) {
var action = {
'type': 'ir.actions.report',
'report_type': 'qweb-pdf',
'report_name': 'dynamic_financial_report.cash_book',
'report_file': 'dynamic_financial_report.cash_book',
'data': {
'report_data': data
},
'context': {
'active_model': 'dynamic.bank.book',
'landscape': 1,
'js_report': true
},
'display_name': 'Cash Book',
};
return self.do_action(action);
});
},
print_xlsx: function() {
var self = this;
var action_title = self._title
self._rpc({
model: 'dynamic.bank.book',
method: 'get_data',
args: [
[self.wizard], action_title
],
}).then(function(data) {
var action = {
'type': 'ir_actions_xlsx_download',
'data': {
'model': 'dynamic.bank.book',
'options': JSON.stringify(data[1]),
'output_format': 'xlsx',
'report_data': JSON.stringify(data[0]),
'report_name': 'Cash Book',
'dfr_data': 'Cash Book',
},
};
return self.do_action(action);
});
},
cash_view: function(initial_render = true) {
var self = this;
var action_title = self._title
console.log("djhhdbkjd", action_title)
var node = self.$('.container-cb-main');
var last;
while (last = node.lastChild) node.removeChild(last);
rpc.query({
model: 'dynamic.bank.book',
method: 'get_data',
args: [
[self.wizard], action_title
],
}).then(function(datas) {
self.filter_data = datas[0]
self.account_data = datas[1]
_.each(self.account_data, function(account) {
var currency_format = {
currency_id: account.company_currency_id,
position: account.company_currency_position,
symbol: account.company_currency_symbol,
noSymbol: true,
};
if (currency_format.position == "before") {
if (account.debit == 0) {
account.debit = ' - '
} else {
account.debit = currency_format.symbol + '&nbsp;' + account.debit.toFixed(2) + '&nbsp;';
}
if (account.credit == 0) {
account.credit = ' - '
} else {
account.credit = currency_format.symbol + '&nbsp;' + account.credit.toFixed(2) + '&nbsp;';
}
if (account.balance == 0) {
account.balance = ' - '
} else {
account.balance = currency_format.symbol + '&nbsp;' + account.balance.toFixed(2) + '&nbsp;';
}
} else {
if (account.debit == 0) {
account.debit = ' - '
} else {
account.debit = account.debit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (account.credit == 0) {
account.credit = ' - '
} else {
account.credit = account.credit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (account.balance == 0) {
account.balance = ' - '
} else {
account.balance = account.balance.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
}
});
if (initial_render) {
self.$('.cb-filter').html(QWeb.render('FilterSectionCB', {
filter_data: datas[0],
}));
self.$el.find('.journal').select2({
placeholder: 'Select Journal...',
});
self.$el.find('.account').select2({
placeholder: 'Select Account...',
});
self.$el.find('.account-tag').select2({
placeholder: 'Select Account Tag...',
});
self.$el.find('.analytic-tag').select2({
placeholder: 'Select Analytic Tag...',
});
self.$el.find('.analytic').select2({
placeholder: 'Select Analytic...',
});
self.$el.find('#date_from').datepicker({
dateFormat: 'dd-mm-yy'
});
self.$el.find('#date_to').datepicker({
dateFormat: 'dd-mm-yy'
});
self.$el.find('.entries').select2({
placeholder: 'Select Moves',
});
}
self.$('.container-cb-main').html(QWeb.render('CashBookData', {
account_data: datas[1]
}));
});
},
cb_lines_by_page: function(offset, account_id) {
var self = this;
return rpc.query({
model: 'dynamic.bank.book',
method: 'bb_move_lines',
args: [self.wizard, offset, account_id],
})
},
get_move_lines: function(event) {
event.preventDefault();
var self = this;
var account_id = $(event.currentTarget).data('account-id');
var offset = 0;
var td = $(event.currentTarget).next('tr').find('td');
if (td.length == 1) {
self.cb_lines_by_page(offset, account_id).then(function(datas) {
_.each(datas[2], function(data) {
var currency_format = {
currency_id: data.company_currency_id,
position: data.company_currency_position,
symbol: data.company_currency_symbol,
noSymbol: true,
};
if (currency_format.position == "before") {
if (data.debit == 0) {
data.debit = ' - '
} else {
data.debit = currency_format.symbol + '&nbsp;' + data.debit.toFixed(2) + '&nbsp;';
}
if (data.credit == 0) {
data.credit = ' - '
} else {
data.credit = currency_format.symbol + '&nbsp;' + data.credit.toFixed(2) + '&nbsp;';
}
if (data.balance == 0) {
data.balance = ' - '
} else {
data.balance = currency_format.symbol + '&nbsp;' + data.balance.toFixed(2) + '&nbsp;';
}
} else {
if (data.debit == 0) {
data.debit = ' - '
} else {
data.debit = data.debit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (data.credit == 0) {
data.credit = ' - '
} else {
data.credit = data.credit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (data.balance == 0) {
data.balance = ' - '
} else {
data.balance = data.balance.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
}
});
$(event.currentTarget).next('tr').find('td .cb-table-div').remove();
$(event.currentTarget).next('tr').find('td ul').after(
QWeb.render('SubSectionCB', {
count: datas[0],
offset: datas[1],
account_data: datas[2],
}))
$(event.currentTarget).next('tr').find('td ul li:first a').css({
'background-color': '#00ede8',
'font-weight': 'bold',
});
})
}
},
view_move: function(event) {
event.preventDefault();
var self = this;
var context = {};
var redirect_to_document = function(res_model, res_id, view_id) {
var action = {
type: 'ir.actions.act_window',
view_type: 'form',
view_mode: 'form',
res_model: res_model,
views: [
[view_id || false, 'form']
],
res_id: res_id,
target: 'current',
context: context,
};
return self.do_action(action);
};
rpc.query({
model: 'account.move',
method: 'search_read',
domain: [
['id', '=', $(event.currentTarget).data('move-id')]
],
fields: ['id'],
limit: 1,
})
.then(function(record) {
if (record.length > 0) {
redirect_to_document('account.move', record[0].id);
} else {
redirect_to_document('account.move', $(event.currentTarget).data('move-id'));
}
});
},
});
core.action_registry.add('dynamic.bb', BankBook);
core.action_registry.add('dynamic.cb', CashBook);
});

368
dynamic_financial_report/static/src/js/cash_flow.js

@ -1,368 +0,0 @@
odoo.define('dynamic_financial_report.DynamicReports', function(require) {
'use strict';
var AbstractAction = require('web.AbstractAction');
var core = require('web.core');
var Dialog = require('web.Dialog');
var field_utils = require('web.field_utils');
var rpc = require('web.rpc');
var session = require('web.session');
var utils = require('web.utils');
var QWeb = core.qweb;
var _t = core._t;
var CashFlow = AbstractAction.extend({
template: 'CashFlow',
events: {
'click .cf-line': 'get_move_lines',
'click .view-move': 'view_move',
'click #filter_apply_button': 'apply_filter',
'click #pdf': 'print_pdf',
'click #xlsx': 'print_xlsx',
},
init: function(view, code) {
this._super(view, code);
this.wizard = code.context.wizard | null;
this.session = session;
},
start: function() {
var self = this;
self.initial_render = true;
rpc.query({
model: 'dynamic.cash.flow',
method: 'create',
args: [{
res_model: this.res_model
}]
}).then(function(res) {
self.wizard = res;
self.ledger_view(self.initial_render);
})
},
apply_filter: function(event) {
event.preventDefault();
var self = this;
self.initial_render = false;
var output = {};
output.reconciled=false;
output.type=false;
output.date_from=false;
output.date_to=false;
if ($(".level").length){
var level_res = document.getElementById("level_res")
output.level = $(".level")[1].value
level_res.value = $(".level")[1].value
level_res.innerHTML=level_res.value;
if ($(".level").value==""){
type_res.innerHTML="summary";
output.type = "Summary"
}
}
var journal_ids = [];
var journal_list = $(".journal").select2('data')
for (var i = 0; i < journal_list.length; i++) {
journal_ids.push(parseInt(journal_list[i].id))
}
output.journal_ids = journal_ids
var analytic_ids = [];
var analytic_list = $(".analytic").select2('data')
for (var i = 0; i < analytic_list.length; i++) {
analytic_ids.push(parseInt(analytic_list[i].id))
}
output.analytic_ids = analytic_ids
var analytic_tag_ids = [];
var analytic_tag_list = $(".analytic-tag").select2('data')
for (var i = 0; i < analytic_tag_list.length; i++) {
analytic_tag_ids.push(parseInt(analytic_tag_list[i].id))
}
output.analytic_tag_ids = analytic_tag_ids
if ($(".target-moves").length){
var target_res = document.getElementById("target_res")
output.target_moves = $(".target-moves")[1].value
target_res.value = $(".target-moves")[1].value
target_res.innerHTML=target_res.value;
if ($(".target-moves").value==""){
target_res.innerHTML="all";
output.target_moves = "all"
}
}
if ($("#date_from").val()) {
var dateObject = $("#date_from").datepicker("getDate");
var dateString = $.datepicker.formatDate("yy-mm-dd", dateObject);
output.date_from = dateString;
}
if ($("#date_to").val()) {
var dateObject = $("#date_to").datepicker("getDate");
var dateString = $.datepicker.formatDate("yy-mm-dd", dateObject);
output.date_to = dateString;
}
output.include_details = true;
rpc.query({
model: 'dynamic.cash.flow',
method: 'write',
args: [
[self.wizard], output
],
}).then(function(res) {
self.ledger_view(self.initial_render);
});
},
print_pdf: function(e) {
e.preventDefault();
var self = this;
self._rpc({
model: 'dynamic.cash.flow',
method: 'get_data',
args: [
[self.wizard]
],
}).then(function(data) {
var action = {
'type': 'ir.actions.report',
'report_type': 'qweb-pdf',
'report_name': 'dynamic_financial_report.cash_flow',
'report_file': 'dynamic_financial_report.cash_flow',
'data': {
'report_data': data
},
'context': {
'active_model': 'dynamic.cash.flow',
'landscape': 1,
'js_report': true
},
'display_name': 'Cash Flow',
};
return self.do_action(action);
});
},
print_xlsx: function() {
var self = this;
self._rpc({
model: 'dynamic.cash.flow',
method: 'get_data',
args: [
[self.wizard]
],
}).then(function(data) {
var action = {
'type': 'ir_actions_xlsx_download',
'data': {
'model': 'dynamic.cash.flow',
'options': JSON.stringify(data[1]),
'output_format': 'xlsx',
'report_data': JSON.stringify(data[0]),
'report_name': 'Cash Flow',
'dfr_data': JSON.stringify(data),
},
};
return self.do_action(action);
});
},
ledger_view: function(initial_render = true) {
var self = this;
var node = self.$('.container-cf-main');
var last;
while (last = node.lastChild) node.removeChild(last);
rpc.query({
model: 'dynamic.cash.flow',
method: 'get_data',
args: [
[self.wizard]
],
}).then(function(datas) {
self.filter_data = datas[0]
self.account_data = datas[1]
_.each(self.account_data.fetched_data, function(account) {
var currency_format = {
currency_id: datas[1].company_currency_id,
position: datas[1].company_currency_position,
symbol: datas[1].company_currency_symbol,
noSymbol: true,
};
if (currency_format.position == "before") {
if (account.total_credit == 0) {
account.total_credit = ' - '
} else {
account.total_credit = currency_format.symbol + '&nbsp;' + account.total_credit.toFixed(2) + '&nbsp;';
}
if (account.total_debit == 0) {
account.total_debit = ' - '
} else {
account.total_debit = currency_format.symbol + '&nbsp;' + account.total_debit.toFixed(2) + '&nbsp;';
}
if (account.total_balance == 0) {
account.total_balance = ' - '
} else {
account.total_balance = currency_format.symbol + '&nbsp;' + account.total_balance.toFixed(2) + '&nbsp;';
}
} else {if (account.total_credit == 0) {
account.total_credit = ' - '
} else {
account.total_credit = account.total_credit.toFixed(2) + '&nbsp;' + currency_format.symbol;
//
}
if (account.total_debit == 0) {
account.total_debit = ' - '
} else {
account.total_debit = account.total_debit.toFixed(2) + '&nbsp;' + currency_format.symbol;
}
if (account.total_balance == 0) {
account.total_balance = ' - '
} else {
account.total_balance = account.total_balance.toFixed(2) + '&nbsp;' + currency_format.symbol;
}
//
}
});
if (initial_render) {
self.$('.cf-filter').html(QWeb.render('FilterSectionCF', {
filter_data: datas[0],
}));
self.$el.find('.journal').select2({
placeholder: 'Select Journal...',
});
self.$el.find('.level').select2({
placeholder: 'Select Level...',
});
self.$el.find('.analytic-tag').select2({
placeholder: 'Select Analytic Tag...',
});
self.$el.find('.analytic').select2({
placeholder: 'Select Analytic...',
});
self.$el.find('#date_from').datepicker({
dateFormat: 'dd-mm-yy'
});
self.$el.find('#date_to').datepicker({
dateFormat: 'dd-mm-yy'
});
self.$el.find('.target-moves').select2({
placeholder: 'Posted or All Entries...',
});
}
self.$('.container-cf-main').html(QWeb.render('CashFlowData', {
account_data: datas[1].fetched_data,
level:datas[1].levels,
}));
});
},
get_move_lines: function(event) {
event.preventDefault();
var self = this;
var account_id = $(event.currentTarget).data('account-id');
var offset = 0;
var td = $(event.currentTarget).next('tr').find('td');
if (td.length == 1) {
rpc.query({
model: 'dynamic.cash.flow',
method: 'get_data',
args: [
[self.wizard]
],
}).then(function(datas) {
if(datas[1].levels== 'detailed'){
$(event.currentTarget).next('tr').find('td ul').after(
QWeb.render('SubSectionCF', {
count: 3,
offset: 0,
account_data: datas[1].journal_res,
level:datas[1].levels,
data_currency: datas[1],
line_id:parseInt(event.currentTarget.attributes[3].value),
}))
}else if(datas[1].levels== 'very' || datas[1].levels== false){
$(event.currentTarget).next('tr').find('td ul').after(
QWeb.render('ChildSubSectionCF', {
count: 3,
offset: 0,
account_data: datas[1].account_res,
level:datas[1].levels,
data_currency: datas[1],
line_id:parseInt(event.currentTarget.attributes[3].value),
}))
}
$(event.currentTarget).next('tr').find('td ul li:first a').css({
'background-color': '#00ede8',
'font-weight': 'bold',
});
})
}
},
view_move: function(event) {
event.preventDefault();
var self = this;
var context = {};
var redirect_to_document = function(res_model, res_id, view_id) {
var action = {
type: 'ir.actions.act_window',
view_type: 'form',
view_mode: 'form',
res_model: res_model,
views: [
[view_id || false, 'form']
],
res_id: res_id,
target: 'current',
context: context,
};
return self.do_action(action);
};
rpc.query({
model: 'account.move',
method: 'search_read',
domain: [
['id', '=', $(event.currentTarget).data('move-id')]
],
fields: ['id'],
limit: 1,
})
.then(function(record) {
if (record.length > 0) {
redirect_to_document('account.move', record[0].id);
} else {
redirect_to_document('account.move', $(event.currentTarget).data('move-id'));
}
});
},
});
core.action_registry.add('dynamic.cf', CashFlow);
return CashFlow;
});

414
dynamic_financial_report/static/src/js/daybook.js

@ -1,414 +0,0 @@
odoo.define('dynamic_financial_report.daybook', function(require) {
'use strict';
var AbstractAction = require('web.AbstractAction');
var core = require('web.core');
var field_utils = require('web.field_utils');
var rpc = require('web.rpc');
var session = require('web.session');
var utils = require('web.utils');
var QWeb = core.qweb;
var _t = core._t;
var DayBook = AbstractAction.extend({
template: 'DayBook',
events: {
'click .db-line': 'get_move_lines',
'click .view-move': 'view_move',
'click #filter_apply_button': 'apply_filter',
'click #pdf': 'print_pdf',
'click #xlsx': 'print_xlsx',
},
init: function(view, code) {
this._super(view, code);
this.wizard = code.context.wizard | null;
this.session = session;
},
start: function() {
var self = this;
self.initial_render = true;
rpc.query({
model: 'dynamic.day.book',
method: 'create',
args: [{
res_model: this.res_model
}]
}).then(function(res) {
self.wizard = res;
self.ledger_view(self.initial_render);
})
},
apply_filter: function(event) {
event.preventDefault();
var self = this;
self.initial_render = false;
var output = {};
output.date_from=false;
output.date_to=false;
var journal_ids = [];
var journal_text = [];
var span_res = document.getElementById("journal_res")
var journal_list = $(".journal").select2('data')
for (var i = 0; i < journal_list.length; i++) {
if(journal_list[i].element[0].selected === true)
{journal_ids.push(parseInt(journal_list[i].id))
if(journal_text.includes(journal_list[i].text) === false)
{journal_text.push(journal_list[i].text)
}
span_res.value = journal_text
span_res.innerHTML=span_res.value;
}
}
if (journal_list.length == 0){
span_res.value = ""
span_res.innerHTML=""; }
output.journal_ids = journal_ids
var account_ids = [];
var account_text = [];
var span_res = document.getElementById("account_res")
var account_list = $(".account").select2('data')
for (var i = 0; i < account_list.length; i++) {
if(account_list[i].element[0].selected === true)
{account_ids.push(parseInt(account_list[i].id))
if(account_text.includes(account_list[i].text) === false)
{account_text.push(account_list[i].text)
}
span_res.value = account_text
span_res.innerHTML=span_res.value;
}
}
if (account_list.length == 0){
span_res.value = ""
span_res.innerHTML=""; }
output.account_ids = account_ids
if ($(".entries").length){
var target_res = document.getElementById("target_res")
output.entries = $(".entries")[1].value
target_res.value = $(".entries")[1].value
target_res.innerHTML=target_res.value;
if ($(".entries").value==""){
target_res.innerHTML="all";
output.entries = "all"
}
}
if ($("#date_from").val()) {
var dateObject = $("#date_from").datepicker("getDate");
var dateString = $.datepicker.formatDate("yy-mm-dd", dateObject);
output.date_from = dateString;
}
if ($("#date_to").val()) {
var dateObject = $("#date_to").datepicker("getDate");
var dateString = $.datepicker.formatDate("yy-mm-dd", dateObject);
output.date_to = dateString;
}
output.include_details = true;
rpc.query({
model: 'dynamic.day.book',
method: 'write',
args: [
[self.wizard], output
],
}).then(function(res) {
self.ledger_view(self.initial_render);
});
},
print_pdf: function(e) {
e.preventDefault();
var self = this;
self._rpc({
model: 'dynamic.day.book',
method: 'get_data',
args: [
[self.wizard]
],
}).then(function(data) {
var action = {
'type': 'ir.actions.report',
'report_type': 'qweb-pdf',
'report_name': 'dynamic_financial_report.dynamic_day_book',
'report_file': 'dynamic_financial_report.dynamic_day_book',
'data': {
'report_data': data
},
'context': {
'active_model': 'dynamic.day.book',
'landscape': 1,
'js_report': true
},
'display_name': 'Day Book',
};
return self.do_action(action);
});
},
print_xlsx: function() {
var self = this;
self._rpc({
model: 'dynamic.day.book',
method: 'get_data',
args: [
[self.wizard]
],
}).then(function(data) {
var action = {
'type': 'ir_actions_xlsx_download',
'data': {
'model': 'dynamic.day.book',
'options': JSON.stringify(data[1]),
'output_format': 'xlsx',
'report_data': JSON.stringify((data[2][2])),
'report_name': 'Day Book',
'dfr_data':JSON.stringify(data[0]),
},
};
return self.do_action(action);
});
},
ledger_view: function(initial_render = true) {
var self = this;
var node = self.$('.container-db-main');
var last;
while (last = node.lastChild) node.removeChild(last);
rpc.query({
model: 'dynamic.day.book',
method: 'get_data',
args: [
[self.wizard]
],
}).then(function(datas) {
self.filter_data = datas[0]
self.account_data = datas[1]
_.each(self.account_data, function(account) {
var currency_format = {
currency_id: account.company_currency_id,
position: account.company_currency_position,
symbol: account.company_currency_symbol,
noSymbol: true,
};
if (currency_format.position == "before") {
if (account.debit == 0) {
account.debit = ' - '
} else {
account.debit = currency_format.symbol + '&nbsp;' + account.debit.toFixed(2) + '&nbsp;';
}
if (account.credit == 0) {
account.credit = ' - '
} else {
account.credit = currency_format.symbol + '&nbsp;' + account.credit.toFixed(2) + '&nbsp;';
}
if (account.balance == 0) {
account.balance = ' - '
} else {
account.balance = currency_format.symbol + '&nbsp;' + account.balance.toFixed(2) + '&nbsp;';
}
} else {
if (account.debit == 0) {
account.debit = ' - '
} else {
account.debit = account.debit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (account.credit == 0) {
account.credit = ' - '
} else {
account.credit = account.credit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (account.balance == 0) {
account.balance = ' - '
} else {
account.balance = account.balance.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
}
});
if (initial_render) {
self.$('.db-filter').html(QWeb.render('FilterSectiondb', {
filter_data: datas[0],
}));
self.$el.find('.journal').select2({
placeholder: 'Select Journal...',
});
self.$el.find('.account').select2({
placeholder: 'Select Account...',
});
self.$el.find('.entries').select2({
placeholder: 'Select Moves',
});
self.$el.find('#date_from').datepicker({
dateFormat: 'dd-mm-yy'
});
self.$el.find('#date_to').datepicker({
dateFormat: 'dd-mm-yy'
});
}
self.$('.container-db-main').html(QWeb.render('DayBookData', {
account_data: datas[1]
}));
});
},
db_lines_by_page: function(offset, account_id) {
var self = this;
return rpc.query({
model: 'dynamic.day.book',
method: 'db_move_lines',
args: [self.wizard, offset, account_id],
})
},
get_move_lines: function(event) {
event.preventDefault();
var self = this;
var account_id = $(event.currentTarget).data('account-id');
var date_id = $(event.currentTarget)[0].cells[0].innerText;
var offset = 0;
var td = $(event.currentTarget).next('tr').find('td');
if (td.length == 1) {
self.db_lines_by_page(offset, account_id).then(function(datas) {
_.each(datas[2], function(data) {
var currency_format = {
currency_id: data.company_currency_id,
position: data.company_currency_position,
symbol: data.company_currency_symbol,
noSymbol: true,
};
if (currency_format.position == "before") {
if (data.debit == 0) {
data.debit = ' - '
} else {
data.debit = currency_format.symbol + '&nbsp;' + data.debit.toFixed(2) + '&nbsp;';
}
if (data.credit == 0) {
data.credit = ' - '
} else {
data.credit = currency_format.symbol + '&nbsp;' + data.credit.toFixed(2) + '&nbsp;';
}
if (data.balance == 0) {
data.balance = ' - '
} else {
data.balance = currency_format.symbol + '&nbsp;' + data.balance.toFixed(2) + '&nbsp;';
}
} else {
if (data.debit == 0) {
data.debit = ' - '
} else {
data.debit = data.debit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (data.credit == 0) {
data.credit = ' - '
} else {
data.credit = data.credit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (data.balance == 0) {
data.balance = ' - '
} else {
data.balance = data.balance.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
}
});
$(event.currentTarget).next('tr').find('td .db-table-div').remove();
$(event.currentTarget).next('tr').find('td ul').after(
QWeb.render('SubSectiondb', {
count: datas[0],
offset: datas[1],
account_data: datas[2],
date_id: date_id.trim()
}));
$(event.currentTarget).next('tr').find('td ul li:first a').css({
'background-color': '#00ede8',
'font-weight': 'bold',
});
})
}
},
view_move: function(event) {
event.preventDefault();
var self = this;
var context = {};
var redirect_to_document = function(res_model, res_id, view_id) {
var action = {
type: 'ir.actions.act_window',
view_type: 'form',
view_mode: 'form',
res_model: res_model,
views: [
[view_id || false, 'form']
],
res_id: res_id,
target: 'current',
context: context,
};
return self.do_action(action);
};
rpc.query({
model: 'account.move',
method: 'search_read',
domain: [
['id', '=', $(event.currentTarget).data('move-id')]
],
fields: ['id'],
limit: 1,
})
.then(function(record) {
if (record.length > 0) {
redirect_to_document('account.move', record[0].id);
} else {
redirect_to_document('account.move', $(event.currentTarget).data('move-id'));
}
});
},
});
core.action_registry.add('dynamic.db', DayBook);
});

876
dynamic_financial_report/static/src/js/gl_tb.js

@ -1,876 +0,0 @@
odoo.define('dynamic_financial_report.DynamicReport', function(require) {
'use strict';
var AbstractAction = require('web.AbstractAction');
var core = require('web.core');
var field_utils = require('web.field_utils');
var rpc = require('web.rpc');
var session = require('web.session');
var utils = require('web.utils');
var QWeb = core.qweb;
var _t = core._t;
var GeneralLedger = AbstractAction.extend({
template: 'GeneralLedger',
events: {
'click .gl-line': 'get_move_lines',
'click .view-move': 'view_move',
'click #filter_apply_button': 'apply_filter',
'click #pdf': 'print_pdf',
'click #xlsx': 'print_xlsx',
},
init: function(view, code) {
this._super(view, code);
this.wizard = code.context.wizard | null;
this.session = session;
},
start: function() {
var self = this;
self.initial_render = true;
if (this.searchModel.config.domain.length != 0) {
rpc.query({
model: 'dynamic.general.ledger',
method: 'create',
args: [{
account_ids: [this.searchModel.config.domain[0][2]]
}]
}).then(function(res) {
self.wizard = res;
self.ledger_view(self.initial_render);
})
}else{
rpc.query({
model: 'dynamic.general.ledger',
method: 'create',
args: [{
}]
}).then(function(res) {
self.wizard = res;
self.ledger_view(self.initial_render);
})
}
},
apply_filter: function(event) {
event.preventDefault();
var self = this;
self.initial_render = false;
var output = {};
var account_ids = [];
var account_text = [];
var account_res = document.getElementById("acc_res")
var account_list = $(".account").select2('data')
for (var i = 0; i < account_list.length; i++) {
if(account_list[i].element[0].selected === true){
account_ids.push(parseInt(account_list[i].id))
if(account_text.includes(account_list[i].text) === false){
account_text.push(account_list[i].text)
}
account_res.value = account_text
account_res.innerHTML=account_res.value;
}
}
if (account_list.length == 0){
account_res.value = ""
account_res.innerHTML="";
}
output.account_ids = account_ids
var journal_ids = [];
var journal_text = [];
var journal_res = document.getElementById("journal_res")
var journal_list = $(".journal").select2('data')
for (var i = 0; i < journal_list.length; i++) {
if(journal_list[i].element[0].selected === true){
journal_ids.push(parseInt(journal_list[i].id))
if(journal_text.includes(journal_list[i].text) === false){
journal_text.push(journal_list[i].text)
}
journal_res.value = journal_text
journal_res.innerHTML=journal_res.value;
}
}
if (journal_list.length == 0){
journal_res.value = ""
journal_res.innerHTML="";
}
output.journal_ids = journal_ids
var account_tag_ids = [];
var account_tag_text = [];
var account_tag_res = document.getElementById("acc_tag_res")
var account_tag_list = $(".account-tag").select2('data')
for (var i = 0; i < account_tag_list.length; i++) {
if(account_tag_list[i].element[0].selected === true){
account_tag_ids.push(parseInt(account_tag_list[i].id))
if(account_tag_text.includes(account_tag_list[i].text) === false){
account_tag_text.push(account_tag_list[i].text)
}
account_tag_res.value = account_tag_text
account_tag_res.innerHTML=account_tag_res.value;
}
}
if (account_tag_list.length == 0){
account_tag_res.value = ""
account_tag_res.innerHTML="";
}
output.account_tag_ids = account_tag_ids
var analytic_ids = [];
var analytic_text = [];
var span_res = document.getElementById("analic_res")
var analytic_list = $(".analytic").select2('data')
for (var i = 0; i < analytic_list.length; i++) {
if(analytic_list[i].element[0].selected === true){
analytic_ids.push(parseInt(analytic_list[i].id))
if(analytic_text.includes(analytic_list[i].text) === false){
analytic_text.push(analytic_list[i].text)
}
span_res.value = analytic_text
span_res.innerHTML=span_res.value;
}
}
if (analytic_list.length == 0){
span_res.value = ""
span_res.innerHTML="";
}
output.analytic_ids = analytic_ids
output.analytic_tag_ids = analytic_tag_ids
var analytic_tag_ids = [];
var analytic_tag_text = [];
var analytic_tag_res = document.getElementById("analic_tag_res")
var analytic_tag_list = $(".analytic-tag").select2('data')
for (var i = 0; i < analytic_tag_list.length; i++) {
if(analytic_tag_list[i].element[0].selected === true){
analytic_tag_ids.push(parseInt(analytic_tag_list[i].id))
if(analytic_tag_text.includes(analytic_tag_list[i].text) === false){
analytic_tag_text.push(analytic_tag_list[i].text)
}
analytic_tag_res.value = analytic_tag_text
analytic_tag_res.innerHTML=analytic_tag_res.value;
}
}
if (analytic_tag_list.length == 0){
analytic_tag_res.value = ""
analytic_tag_res.innerHTML="";
}
output.analytic_tag_ids = analytic_tag_ids
if ($("#date_from").val()) {
var dateObject = $("#date_from").datepicker("getDate");
var dateString = $.datepicker.formatDate("yy-mm-dd", dateObject);
output.date_from = dateString;
}
if ($("#date_to").val()) {
var dateObject = $("#date_to").datepicker("getDate");
var dateString = $.datepicker.formatDate("yy-mm-dd", dateObject);
output.date_to = dateString;
}
if ($(".entries").length) {
var post_res = document.getElementById("post_res")
output.entries = $(".entries")[1].value
post_res.value = $(".entries")[1].value
post_res.innerHTML=post_res.value;
if ($(".entries")[1].value == "") {
post_res.innerHTML="all";
}
}
output.include_details = true;
rpc.query({
model: 'dynamic.general.ledger',
method: 'write',
args: [
[self.wizard], output
],
}).then(function(res) {
self.ledger_view(self.initial_render);
});
},
print_pdf: function(e) {
e.preventDefault();
var self = this;
self._rpc({
model: 'dynamic.general.ledger',
method: 'get_data',
args: [
[self.wizard]
],
}).then(function(data) {
var action = {
'type': 'ir.actions.report',
'report_type': 'qweb-pdf',
'report_name': 'dynamic_financial_report.general_ledger',
'report_file': 'dynamic_financial_report.general_ledger',
'data': {
'report_data': data
},
'context': {
'active_model': 'dynamic.general.ledger',
'landscape': 1,
'js_report': true
},
'display_name': 'General Ledger',
};
return self.do_action(action);
});
},
print_xlsx: function() {
var self = this;
self._rpc({
model: 'dynamic.general.ledger',
method: 'get_data',
args: [
[self.wizard]
],
}).then(function(data) {
var action = {
'type': 'ir_actions_xlsx_download',
'data': {
'model': 'dynamic.general.ledger',
'options': JSON.stringify(data[1]),
'output_format': 'xlsx',
'report_data': JSON.stringify(data[0]),
'report_name': 'General Ledger',
'dfr_data': JSON.stringify(data),
},
};
return self.do_action(action);
});
},
ledger_view: function(initial_render = true) {
var self = this;
var node = self.$('.container-gl-main');
var last;
while (last = node.lastChild) node.removeChild(last);
rpc.query({
model: 'dynamic.general.ledger',
method: 'get_data',
args: [
[self.wizard]
],
}).then(function(datas) {
self.filter_data = datas[0]
self.account_data = datas[1]
_.each(self.account_data, function(account) {
var currency_format = {
currency_id: account.company_currency_id,
position: account.company_currency_position,
symbol: account.company_currency_symbol,
noSymbol: true,
};
if (currency_format.position == "before") {
if (account.debit == 0) {
account.debit = ' - '
} else {
account.debit = currency_format.symbol + '&nbsp;' + account.debit.toFixed(2) + '&nbsp;';
}
if (account.credit == 0) {
account.credit = ' - '
} else {
account.credit = currency_format.symbol + '&nbsp;' + account.credit.toFixed(2) + '&nbsp;';
}
if (account.balance == 0) {
account.balance = ' - '
} else {
account.balance = currency_format.symbol + '&nbsp;' + account.balance.toFixed(2) + '&nbsp;';
}
} else {
if (account.debit == 0) {
account.debit = ' - '
} else {
account.debit = account.debit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (account.credit == 0) {
account.credit = ' - '
} else {
account.credit = account.credit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (account.balance == 0) {
account.balance = ' - '
} else {
account.balance = account.balance.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
}
});
if (initial_render) {
self.$('.gl-filter').html(QWeb.render('FilterSection', {
filter_data: datas[0],
}));
self.$el.find('.journal').select2({
placeholder: 'Select Journal...',
});
self.$el.find('.account').select2({
placeholder: 'Select Account...',
});
self.$el.find('.account-tag').select2({
placeholder: 'Select Account Tag...',
});
self.$el.find('.analytic-tag').select2({
placeholder: 'Select Analytic Tag...',
});
self.$el.find('.analytic').select2({
placeholder: 'Select Analytic...',
});
self.$el.find('#date_from').datepicker({
dateFormat: 'dd-mm-yy'
});
self.$el.find('#date_to').datepicker({
dateFormat: 'dd-mm-yy'
});
self.$el.find('.entries').select2({
placeholder: 'Select Moves',
});
}
self.$('.container-gl-main').html(QWeb.render('GeneralLedgerData', {
account_data: datas[1]
}));
});
},
gl_lines_by_page: function(offset, account_id) {
var self = this;
return rpc.query({
model: 'dynamic.general.ledger',
method: 'gl_move_lines',
args: [self.wizard, offset, account_id],
})
},
get_move_lines: function(event) {
event.preventDefault();
var self = this;
var account_id = $(event.currentTarget).data('account-id');
var offset = 0;
var td = $(event.currentTarget).next('tr').find('td');
if (td.length == 1) {
self.gl_lines_by_page(offset, account_id).then(function(datas) {
_.each(datas[2], function(data) {
var currency_format = {
currency_id: data.company_currency_id,
position: data.company_currency_position,
symbol: data.company_currency_symbol,
noSymbol: true,
};
if (currency_format.position == "before") {
if (data.debit == 0) {
data.debit = ' - '
} else {
data.debit = currency_format.symbol + '&nbsp;' + data.debit.toFixed(2) + '&nbsp;';
}
if (data.credit == 0) {
data.credit = ' - '
} else {
data.credit = currency_format.symbol + '&nbsp;' + data.credit.toFixed(2) + '&nbsp;';
}
if (data.balance == 0) {
data.balance = ' - '
} else {
data.balance = currency_format.symbol + '&nbsp;' + data.balance.toFixed(2) + '&nbsp;';
}
} else {
if (data.debit == 0) {
data.debit = ' - '
} else {
data.debit = data.debit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (data.credit == 0) {
data.credit = ' - '
} else {
data.credit = data.credit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (data.balance == 0) {
data.balance = ' - '
} else {
data.balance = data.balance.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
}
});
$(event.currentTarget).next('tr').find('td .gl-table-div').remove();
$(event.currentTarget).next('tr').find('td ul').after(
QWeb.render('SubSection', {
count: datas[0],
offset: datas[1],
account_data: datas[2],
}))
$(event.currentTarget).next('tr').find('td ul li:first a').css({
'background-color': '#00ede8',
'font-weight': 'bold',
});
})
}
},
view_move: function(event) {
event.preventDefault();
var self = this;
var context = {};
var redirect_to_document = function(res_model, res_id, view_id) {
var action = {
type: 'ir.actions.act_window',
view_type: 'form',
view_mode: 'form',
res_model: res_model,
views: [
[view_id || false, 'form']
],
res_id: res_id,
target: 'current',
context: context,
};
return self.do_action(action);
};
rpc.query({
model: 'account.move',
method: 'search_read',
domain: [
['id', '=', $(event.currentTarget).data('move-id')]
],
fields: ['id'],
limit: 1,
})
.then(function(record) {
if (record.length > 0) {
redirect_to_document('account.move', record[0].id);
} else {
redirect_to_document('account.move', $(event.currentTarget).data('move-id'));
}
});
},
});
var TrialBalance = AbstractAction.extend({
template: 'TrialBalance',
events: {
'click #filter_apply_button': 'apply_filter',
'click .open-gl': 'get_gl',
'click #pdf': 'print_pdf',
'click #xlsx': 'print_xlsx',
},
init: function(view, code) {
this._super(view, code);
this.wizard = code.context.wizard | null;
this.session = session;
},
start: function() {
var self = this;
self.initial_render = true;
rpc.query({
model: 'dynamic.trial.balance',
method: 'create',
args: [{
}]
}).then(function(res) {
self.wizard = res;
self.ledger_view(self.initial_render);
})
},
apply_filter: function(event) {
event.preventDefault();
var self = this;
self.initial_render = false;
var output = {};
var account_ids = [];
var journal_ids = [];
var journal_text = [];
var journal_res = document.getElementById("journal_res")
var journal_list = $(".journal").select2('data')
for (var i = 0; i < journal_list.length; i++) {
if(journal_list[i].element[0].selected === true){
journal_ids.push(parseInt(journal_list[i].id))
if(journal_text.includes(journal_list[i].text) === false){
journal_text.push(journal_list[i].text)
}
journal_res.value = journal_text
journal_res.innerHTML=journal_res.value;
}
}
if (journal_list.length == 0){
journal_res.value = ""
journal_res.innerHTML="";
}
output.journal_ids = journal_ids
var analytic_ids = [];
var analytic_text = [];
var span_res = document.getElementById("analic_res")
var analytic_list = $(".analytic").select2('data')
for (var i = 0; i < analytic_list.length; i++) {
if(analytic_list[i].element[0].selected === true){
analytic_ids.push(parseInt(analytic_list[i].id))
if(analytic_text.includes(analytic_list[i].text) === false){
analytic_text.push(analytic_list[i].text)
}
span_res.value = analytic_text
span_res.innerHTML=span_res.value;
}
}
if (analytic_list.length == 0){
span_res.value = ""
span_res.innerHTML="";
}
output.analytic_ids = analytic_ids
if ($("#date_from").val()) {
var dateObject = $("#date_from").datepicker("getDate");
var dateString = $.datepicker.formatDate("yy-mm-dd", dateObject);
output.date_from = dateString;
}
if ($("#date_to").val()) {
var dateObject = $("#date_to").datepicker("getDate");
var dateString = $.datepicker.formatDate("yy-mm-dd", dateObject);
output.date_to = dateString;
}
if ($(".entries").length) {
var post_res = document.getElementById("post_res")
output.entries = $(".entries")[1].value
post_res.value = $(".entries")[1].value
post_res.innerHTML=post_res.value;
if ($(".entries")[1].value == "") {
post_res.innerHTML="all";
output.entries = "all"
}
}
output.include_details = true;
rpc.query({
model: 'dynamic.trial.balance',
method: 'write',
args: [
self.wizard, output
],
}).then(function(res) {
self.ledger_view(self.initial_render);
});
var dropDown = document.getElementById("entries");
dropDown.value = "";
},
get_gl: function(e) {
var self = this;
var account_id = $(e.target).attr('data-account-id');
var options = {
account_ids: [account_id],
}
var action = {
type: 'ir.actions.client',
name: 'GL View',
tag: 'dynamic.gl',
target: 'new',
domain: [['account_ids','=', account_id]],
}
return this.do_action(action);
},
print_pdf: function(e) {
e.preventDefault();
var self = this;
self._rpc({
model: 'dynamic.trial.balance',
method: 'get_data',
args: [
[self.wizard]
],
}).then(function(data) {
var action = {
'type': 'ir.actions.report',
'report_type': 'qweb-pdf',
'report_name': 'dynamic_financial_report.trial_balance',
'report_file': 'dynamic_financial_report.trial_balance',
'data': {
'report_data': data
},
'context': {
'active_model': 'dynamic.trial.balance',
'landscape': 1,
'js_report': true
},
'display_name': 'Trial Balance',
};
return self.do_action(action);
});
},
print_xlsx: function() {
var self = this;
self._rpc({
model: 'dynamic.trial.balance',
method: 'get_data',
args: [
[self.wizard]
],
}).then(function(data) {
var action = {
'type': 'ir_actions_xlsx_download',
'data': {
'model': 'dynamic.trial.balance',
'options': JSON.stringify(data[1]),
'output_format': 'xlsx',
'report_data': JSON.stringify({"d1":JSON.stringify(data[2]) , "d2":JSON.stringify(data[0])}) ,
'report_name': 'Trial Balance',
'dfr_data': JSON.stringify(data),
},
};
return self.do_action(action);
});
},
ledger_view: function(initial_render = true) {
var self = this;
var node = self.$('.container-tb-main');
var last;
while (last = node.lastChild) node.removeChild(last);
rpc.query({
model: 'dynamic.trial.balance',
method: 'get_data',
args: [
[self.wizard]
],
}).then(function(datas) {
self.filter_data = datas[0]
self.account_data = datas[1]
if (datas[2].currency_details.length > 0){
var currency_format = {
currency_id: datas[2].currency_details[0].currency,
position: datas[2].currency_details[0].position,
symbol: datas[2].currency_details[0].symbol,
noSymbol: true,
};
if (currency_format.position == "before") {
if (datas[2].debit == 0) {
datas[2].debit = ' - '
} else {
datas[2].debit = currency_format.symbol + datas[2].debit.toFixed(2) ;
}
if (datas[2].credit == 0) {
datas[2].credit = ' - '
} else {
datas[2].credit = currency_format.symbol + datas[2].credit.toFixed(2) ;
}
}else{
if (datas[2].debit == 0) {
datas[2].debit = ' - '
} else {
datas[2].debit = datas[2].debit.toFixed(2) + currency_id.symbol;
}
if (datas[2].credit == 0) {
datas[2].credit = ' - '
} else {
datas[2].credit = datas[2].credit.toFixed(2) + currency_id.symbol;
}
}
}
_.each(self.account_data, function(account) {
var currency_format = {
currency_id: account.company_currency_id,
position: account.company_currency_position,
symbol: account.company_currency_symbol,
noSymbol: true,
};
for (var i = 0; i < account.lines.length; i++) {
if (account.lines[i].initial_bal == true){
if (currency_format.position == "before") {
if (account.lines[i].debit == 0) {
account.lines[i].debit = ' - '
} else {
account.lines[i].debit = currency_format.symbol + '&nbsp;' + account.lines[i].debit .toFixed(2) + '&nbsp;';
}
if (account.lines[i].credit == 0) {
account.lines[i].credit = ' - '
} else {
account.lines[i].credit = currency_format.symbol + '&nbsp;' + account.lines[i].credit .toFixed(2) + '&nbsp;';
}
}else{
if (account.lines[i].debit == 0) {
account.lines[i].debit = ' - '
} else {
account.lines[i].debit = account.lines[i].debit.toFixed(2) + '&nbsp;' + currency_format.symbol;
}
if (account.lines[i].credit == 0) {
account.lines[i].credit = ' - '
} else {
account.lines[i].credit = account.lines[i].credit.toFixed(2) + '&nbsp;' + currency_format.symbol;
}
}
}
}
if (currency_format.position == "before") {
if (account.debit == 0) {
account.debit = ' - '
} else {
account.debit = currency_format.symbol + '&nbsp;' + account.debit.toFixed(2) + '&nbsp;';
}
if (account.credit == 0) {
account.credit = ' - '
} else {
account.credit = currency_format.symbol + '&nbsp;' + account.credit.toFixed(2) + '&nbsp;';
}
if (account.balance == 0) {
account.balance = ' - '
} else {
account.balance = currency_format.symbol + '&nbsp;' + account.balance.toFixed(2) + '&nbsp;';
}
} else {
if (account.debit == 0) {
account.debit = ' - '
} else {
account.debit = account.debit.toFixed(2) + '&nbsp;' + currency_format.symbol;
}
if (account.credit == 0) {
account.credit = ' - '
} else {
account.credit = account.credit.toFixed(2) + '&nbsp;' + currency_format.symbol;
}
if (account.balance == 0) {
account.balance = ' - '
} else {
account.balance = account.balance.toFixed(2) + '&nbsp;' + currency_format.symbol;
}
}
});
if (initial_render) {
self.$('.tb-filter').html(QWeb.render('FilterSectionTB', {
filter_data: datas[0],
}));
self.$el.find('.journal').select2({
placeholder: 'Select Journal...',
});
self.$el.find('.analytic').select2({
placeholder: 'Select Analytic...',
});
self.$el.find('.entries').select2({
placeholder: 'Select Moves',
}).val('all').trigger('change');
self.$el.find('#date_from').datepicker({
dateFormat: 'dd-mm-yy'
});
self.$el.find('#date_to').datepicker({
dateFormat: 'dd-mm-yy'
});
}
self.$('.container-tb-main').html(QWeb.render('TrialBalanceData', {
account_data: datas[1],
filter : datas[0],
total_b : datas[2],
}));
});
},
});
core.action_registry.add('dynamic.gl', GeneralLedger);
core.action_registry.add('dynamic.tb', TrialBalance);
});

476
dynamic_financial_report/static/src/js/partner_ledger.js

@ -1,476 +0,0 @@
odoo.define('dynamic_financial_report.partner_ledger', function(require) {
'use strict';
var AbstractAction = require('web.AbstractAction');
var core = require('web.core');
var field_utils = require('web.field_utils');
var rpc = require('web.rpc');
var session = require('web.session');
var utils = require('web.utils');
var QWeb = core.qweb;
var _t = core._t;
var PartnerLedger = AbstractAction.extend({
template: 'PartnerLedger',
events: {
'click .pl-line': 'get_move_lines',
'click .view-move': 'view_move',
'click #filter_apply_button': 'apply_filter',
'click #pdf': 'print_pdf',
'click #xlsx': 'print_xlsx',
},
init: function(view, code) {
this._super(view, code);
this.wizard = code.context.wizard | null;
this.session = session;
},
start: function() {
var self = this;
self.initial_render = true;
rpc.query({
model: 'dynamic.partner.ledger',
method: 'create',
args: [{
res_model: this.res_model
}]
}).then(function(res) {
self.wizard = res;
self.ledger_view(self.initial_render);
})
},
apply_filter: function(event) {
event.preventDefault();
var self = this;
self.initial_render = false;
var output = {};
output.reconciled=false;
output.type=false;
output.date_from=false;
output.date_to=false;
var journal_ids = [];
var journal_text = [];
var span_res = document.getElementById("journal_res")
var journal_list = $(".journal").select2('data')
for (var i = 0; i < journal_list.length; i++) {
if(journal_list[i].element[0].selected === true){ journal_ids.push(parseInt(journal_list[i].id))
if(journal_text.includes(journal_list[i].text) === false){
journal_text.push(journal_list[i].text)
}
span_res.value = journal_text
span_res.innerHTML=span_res.value;
}
}
if (journal_list.length == 0){
span_res.value = ""
span_res.innerHTML=""; }
output.journal_ids = journal_ids
var partner_ids = [];
var partner_text = [];
var span_res = document.getElementById("partner_res")
var partner_list = $(".partner").select2('data')
for (var i = 0; i < partner_list.length; i++) {
if(partner_list[i].element[0].selected === true)
{partner_ids.push(parseInt(partner_list[i].id))
if(partner_text.includes(partner_list[i].text) === false)
{partner_text.push(partner_list[i].text)
}
span_res.value = partner_text
span_res.innerHTML=span_res.value;
}
}
if (partner_list.length == 0){
span_res.value = ""
span_res.innerHTML=""; }
output.partner_ids = partner_ids
var account_ids = [];
var account_text = [];
var span_res = document.getElementById("account_res")
var account_list = $(".account").select2('data')
for (var i = 0; i < account_list.length; i++) {
if(account_list[i].element[0].selected === true)
{account_ids.push(parseInt(account_list[i].id))
if(account_text.includes(account_list[i].text) === false)
{account_text.push(account_list[i].text)
}
span_res.value = account_text
span_res.innerHTML=span_res.value;
}
}
if (account_list.length == 0){
span_res.value = ""
span_res.innerHTML=""; }
output.account_ids = account_ids
var partner_category_ids = [];
var partner_category_text = [];
var span_res = document.getElementById("category_res")
var category_list = $(".category").select2('data')
for (var i = 0; i < category_list.length; i++) {
if(category_list[i].element[0].selected === true)
{partner_category_ids.push(parseInt(category_list[i].id))
if(partner_category_text.includes(category_list[i].text) === false)
{partner_category_text.push(category_list[i].text)
}
span_res.value = partner_category_text
span_res.innerHTML=span_res.value;
}
}
if (category_list.length == 0){
span_res.value = ""
span_res.innerHTML=""; }
output.partner_category_ids = partner_category_ids
if ($(".reconcile").length){
var reconciled_res = document.getElementById("reconciled_res")
output.reconciled = $(".reconcile")[1].value
reconciled_res.value = $(".reconcile")[1].value
reconciled_res.innerHTML=reconciled_res.value;
if ($(".reconcile").value==""){
reconciled_res.innerHTML="unreconciled";
output.reconciled = "unreconciled"
}
}
if ($(".type").length){
var type_res = document.getElementById("type_res")
output.type = $(".type")[1].value
type_res.value = $(".type")[1].value
type_res.innerHTML=type_res.value;
if ($(".type").value==""){
type_res.innerHTML="receivable";
output.type = "Receivable"
}
}
if ($(".target-moves").length){
var target_res = document.getElementById("target_res")
output.target_moves = $(".target-moves")[1].value
target_res.value = $(".target-moves")[1].value
target_res.innerHTML=target_res.value;
if ($(".target-moves").value==""){
target_res.innerHTML="all_entries";
output.target_moves = "all_entries"
}
}
if ($("#date_from").val()) {
var dateObject = $("#date_from").datepicker("getDate");
var dateString = $.datepicker.formatDate("yy-mm-dd", dateObject);
output.date_from = dateString;
}
if ($("#date_to").val()) {
var dateObject = $("#date_to").datepicker("getDate");
var dateString = $.datepicker.formatDate("yy-mm-dd", dateObject);
output.date_to = dateString;
}
output.include_details = true;
rpc.query({
model: 'dynamic.partner.ledger',
method: 'write',
args: [
[self.wizard], output
],
}).then(function(res) {
self.ledger_view(self.initial_render);
});
},
print_pdf: function(e) {
e.preventDefault();
var self = this;
self._rpc({
model: 'dynamic.partner.ledger',
method: 'get_data',
args: [
[self.wizard]
],
}).then(function(data) {
var action = {
'type': 'ir.actions.report',
'report_type': 'qweb-pdf',
'report_name': 'dynamic_financial_report.partner_ledger',
'report_file': 'dynamic_financial_report.partner_ledger',
'data': {
'report_data': data
},
'context': {
'active_model': 'dynamic.partner.ledger',
'landscape': 1,
'js_report': true
},
'display_name': 'Partner Ledger',
};
return self.do_action(action);
});
},
print_xlsx: function() {
var self = this;
self._rpc({
model: 'dynamic.partner.ledger',
method: 'get_data',
args: [
[self.wizard]
],
}).then(function(data) {
var action = {
'type': 'ir_actions_xlsx_download',
'data': {
'model': 'dynamic.partner.ledger',
'options': JSON.stringify(data[1]),
'output_format': 'xlsx',
'report_data': JSON.stringify(data[0]),
'report_name': 'Partner Ledger',
'dfr_data': JSON.stringify(data),
},
};
return self.do_action(action);
});
},
ledger_view: function(initial_render = true) {
var self = this;
var node = self.$('.container-pl-main');
var last;
while (last = node.lastChild) node.removeChild(last);
rpc.query({
model: 'dynamic.partner.ledger',
method: 'get_data',
args: [
[self.wizard]
],
}).then(function(datas) {
self.filter_data = datas[0]
self.account_data = datas[1]
_.each(self.account_data, function(account) {
var currency_format = {
currency_id: account.company_currency_id,
position: account.company_currency_position,
symbol: account.company_currency_symbol,
noSymbol: true,
};
if (currency_format.position == "before") {
if (account.debit == 0) {
account.debit = ' - '
} else {
account.debit = currency_format.symbol + '&nbsp;' + account.debit.toFixed(2) + '&nbsp;';
}
if (account.credit == 0) {
account.credit = ' - '
} else {
account.credit = currency_format.symbol + '&nbsp;' + account.credit.toFixed(2) + '&nbsp;';
}
if (account.balance == 0) {
account.balance = ' - '
} else {
account.balance = currency_format.symbol + '&nbsp;' + account.balance.toFixed(2) + '&nbsp;';
}
} else {
if (account.debit == 0) {
account.debit = ' - '
} else {
account.debit = account.debit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (account.credit == 0) {
account.credit = ' - '
} else {
account.credit = account.credit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (account.balance == 0) {
account.balance = ' - '
} else {
account.balance = account.balance.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
}
});
if (initial_render) {
self.$('.pl-filter').html(QWeb.render('FilterSectionPl', {
filter_data: datas[0],
}));
self.$el.find('.journal').select2({
placeholder: 'Select Journal...',
});
self.$el.find('.account').select2({
placeholder: 'Select Account...',
});
self.$el.find('.partner').select2({
placeholder: 'Select Partner...',
});
self.$el.find('.reconcile').select2({
placeholder: 'Select Reconciled status...',
});
self.$el.find('.target-moves').select2({
placeholder: 'Posted or All Entries...',
});
self.$el.find('.type').select2({
placeholder: 'Select Account...',
});
self.$el.find('.category').select2({
placeholder: 'Select Category...',
});
self.$el.find('#date_from').datepicker({
dateFormat: 'dd-mm-yy'
});
self.$el.find('#date_to').datepicker({
dateFormat: 'dd-mm-yy'
});
}
self.$('.container-pl-main').html(QWeb.render('PartnerLedgerData', {
account_data: datas[1]
}));
});
},
pl_lines_by_page: function(offset, account_id) {
var self = this;
return rpc.query({
model: 'dynamic.partner.ledger',
method: 'pl_move_lines',
args: [self.wizard, offset, account_id],
})
},
get_move_lines: function(event) {
event.preventDefault();
var self = this;
var account_id = $(event.currentTarget).data('account-id');
var offset = 0;
var td = $(event.currentTarget).next('tr').find('td');
if (td.length == 1) {
self.pl_lines_by_page(offset, account_id).then(function(datas) {
_.each(datas[2], function(data) {
var currency_format = {
currency_id: data.company_currency_id,
position: data.company_currency_position,
symbol: data.company_currency_symbol,
noSymbol: true,
};
if (currency_format.position == "before") {
if (data.debit == 0) {
data.debit = ' - '
} else {
data.debit = currency_format.symbol + '&nbsp;' + data.debit.toFixed(2) + '&nbsp;';
}
if (data.credit == 0) {
data.credit = ' - '
} else {
data.credit = currency_format.symbol + '&nbsp;' + data.credit.toFixed(2) + '&nbsp;';
}
if (data.balance == 0) {
data.balance = ' - '
} else {
data.balance = currency_format.symbol + '&nbsp;' + data.balance.toFixed(2) + '&nbsp;';
}
} else {
if (data.debit == 0) {
data.debit = ' - '
} else {
data.debit = data.debit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (data.credit == 0) {
data.credit = ' - '
} else {
data.credit = data.credit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (data.balance == 0) {
data.balance = ' - '
} else {
data.balance = data.balance.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
}
});
$(event.currentTarget).next('tr').find('td .pl-table-div').remove();
$(event.currentTarget).next('tr').find('td ul').after(
QWeb.render('SubSectionPl', {
count: datas[0],
offset: datas[1],
account_data: datas[2],
}))
$(event.currentTarget).next('tr').find('td ul li:first a').css({
'background-color': '#00ede8',
'font-weight': 'bold',
});
})
}
},
view_move: function(event) {
event.preventDefault();
var self = this;
var context = {};
var redirect_to_document = function(res_model, res_id, view_id) {
var action = {
type: 'ir.actions.act_window',
view_type: 'form',
view_mode: 'form',
res_model: res_model,
views: [
[view_id || false, 'form']
],
res_id: res_id,
target: 'current',
context: context,
};
return self.do_action(action);
};
rpc.query({
model: 'account.move',
method: 'search_read',
domain: [
['id', '=', $(event.currentTarget).data('move-id')]
],
fields: ['id'],
limit: 1,
})
.then(function(record) {
if (record.length > 0) {
redirect_to_document('account.move', record[0].id);
} else {
redirect_to_document('account.move', $(event.currentTarget).data('move-id'));
}
});
},
});
core.action_registry.add('dynamic.pl', PartnerLedger);
});

526
dynamic_financial_report/static/src/js/profit_loss.js

@ -1,526 +0,0 @@
odoo.define('dynamic_financial_report.profit_loss', function(require) {
'use strict';
var AbstractAction = require('web.AbstractAction');
var core = require('web.core');
var field_utils = require('web.field_utils');
var rpc = require('web.rpc');
var session = require('web.session');
var utils = require('web.utils');
var QWeb = core.qweb;
var _t = core._t;
var ProfitAndLoss = AbstractAction.extend({
template: 'ProfitAndLoss',
events: {
'click .pal-line': 'get_move_lines',
'click .view-move': 'view_move',
'click #filter_apply_button': 'apply_filter',
'click #pdf': 'print_pdf',
'click #xlsx': 'print_xlsx',
'click .open-gl': 'get_gl',
},
init: function(view, code) {
this._super(view, code);
this.wizard = code.context.wizard | null;
this.session = session;
},
start: function() {
var self = this;
self.initial_render = true;
rpc.query({
model: 'dynamic.balance.sheet',
method: 'create',
args: [{
}]
}).then(function(res) {
self.wizard = res;
self.sheet_view(self.initial_render);
})
},
apply_filter: function(event) {
event.preventDefault();
var self = this;
self.initial_render = false;
var output = {};
var account_ids = [];
var account_text = [];
var account_res = document.getElementById("acc_res")
var account_list = $(".account").select2('data')
for (var i = 0; i < account_list.length; i++) {
if(account_list[i].element[0].selected === true){
account_ids.push(parseInt(account_list[i].id))
if(account_text.includes(account_list[i].text) === false){
account_text.push(account_list[i].text)
}
account_res.value = account_text
account_res.innerHTML=account_res.value;
}
}
if (account_list.length == 0){
account_res.value = ""
account_res.innerHTML="";
}
output.account_ids = account_ids
var journal_ids = [];
var journal_text = [];
var journal_res = document.getElementById("journal_res")
var journal_list = $(".journal").select2('data')
for (var i = 0; i < journal_list.length; i++) {
if(journal_list[i].element[0].selected === true){
journal_ids.push(parseInt(journal_list[i].id))
if(journal_text.includes(journal_list[i].text) === false){
journal_text.push(journal_list[i].text)
}
journal_res.value = journal_text
journal_res.innerHTML=journal_res.value;
}
}
if (journal_list.length == 0){
journal_res.value = ""
journal_res.innerHTML="";
}
output.journal_ids = journal_ids
var account_tag_ids = [];
var account_tag_text = [];
var account_tag_res = document.getElementById("acc_tag_res")
var account_tag_list = $(".account-tag").select2('data')
for (var i = 0; i < account_tag_list.length; i++) {
if(account_tag_list[i].element[0].selected === true){
account_tag_ids.push(parseInt(account_tag_list[i].id))
if(account_tag_text.includes(account_tag_list[i].text) === false){
account_tag_text.push(account_tag_list[i].text)
}
account_tag_res.value = account_tag_text
account_tag_res.innerHTML=account_tag_res.value;
}
}
if (account_tag_list.length == 0){
account_tag_res.value = ""
account_tag_res.innerHTML="";
}
output.account_tag_ids = account_tag_ids
var analytic_ids = [];
var analytic_text = [];
var span_res = document.getElementById("analic_res")
var analytic_list = $(".analytic").select2('data')
for (var i = 0; i < analytic_list.length; i++) {
if(analytic_list[i].element[0].selected === true){
analytic_ids.push(parseInt(analytic_list[i].id))
if(analytic_text.includes(analytic_list[i].text) === false){
analytic_text.push(analytic_list[i].text)
}
span_res.value = analytic_text
span_res.innerHTML=span_res.value;
}
}
if (analytic_list.length == 0){
span_res.value = ""
span_res.innerHTML="";
}
output.analytic_ids = analytic_ids
output.analytic_tag_ids = analytic_tag_ids
var analytic_tag_ids = [];
var analytic_tag_text = [];
var analytic_tag_res = document.getElementById("analic_tag_res")
var analytic_tag_list = $(".analytic-tag").select2('data')
for (var i = 0; i < analytic_tag_list.length; i++) {
if(analytic_tag_list[i].element[0].selected === true){
analytic_tag_ids.push(parseInt(analytic_tag_list[i].id))
if(analytic_tag_text.includes(analytic_tag_list[i].text) === false){
analytic_tag_text.push(analytic_tag_list[i].text)
}
analytic_tag_res.value = analytic_tag_text
analytic_tag_res.innerHTML=analytic_tag_res.value;
}
}
if (analytic_tag_list.length == 0){
analytic_tag_res.value = ""
analytic_tag_res.innerHTML="";
}
output.analytic_tag_ids = analytic_tag_ids
if ($("#date_from").val()) {
var dateObject = $("#date_from").datepicker("getDate");
var dateString = $.datepicker.formatDate("yy-mm-dd", dateObject);
output.date_from = dateString;
}
if ($("#date_to").val()) {
var dateObject = $("#date_to").datepicker("getDate");
var dateString = $.datepicker.formatDate("yy-mm-dd", dateObject);
output.date_to = dateString;
}
if ($(".entries").length) {
var post_res = document.getElementById("post_res")
output.entries = $(".entries")[1].value
post_res.value = $(".entries")[1].value
post_res.innerHTML=post_res.value;
if ($(".entries")[1].value == "") {
post_res.innerHTML="all";
}
}
output.include_details = true;
rpc.query({
model: 'dynamic.balance.sheet',
method: 'write',
args: [
[self.wizard], output
],
}).then(function(res) {
self.sheet_view(self.initial_render);
});
},
get_gl: function(e) {
var self = this;
var account_id = $(e.target).attr('data-account-id');
var options = {
account_ids: [account_id],
}
var action = {
type: 'ir.actions.client',
name: 'GL View',
tag: 'dynamic.gl',
target: 'new',
domain: [['account_ids','=', account_id]],
}
return this.do_action(action);
},
print_pdf: function(e) {
e.preventDefault();
var self = this;
var action_title = self._title
self._rpc({
model: 'dynamic.balance.sheet',
method: 'get_data',
args: [
[self.wizard], action_title
],
}).then(function(data) {
var action = {
'type': 'ir.actions.report',
'report_type': 'qweb-pdf',
'report_name': 'dynamic_financial_report.balance_sheet',
'report_file': 'dynamic_financial_report.balance_sheet',
'data': {
'report_data': data,
'report_name': 'Profit and Loss'
},
'context': {
'active_model': 'dynamic.balance.sheet',
'landscape': 1,
'js_report': true
},
'display_name': 'Profit and Loss',
};
return self.do_action(action);
});
},
print_xlsx: function() {
var self = this;
var action_title = self._title
self._rpc({
model: 'dynamic.balance.sheet',
method: 'get_data',
args: [
[self.wizard],action_title
],
}).then(function(data) {
var action = {
'type': 'ir_actions_xlsx_download',
'data': {
'model': 'dynamic.balance.sheet',
'options': 'Profit and Loss',
'output_format': 'xlsx',
'report_data': JSON.stringify(data[0]),
'report_name': 'Profit and Loss',
'dfr_data':JSON.stringify(data[2]),
},
};
return self.do_action(action);
});
},
sheet_view: function(initial_render = true) {
var self = this;
var action_title = self._title
var node = self.$('.container-pal-main');
var last;
while (last = node.lastChild) node.removeChild(last);
rpc.query({
model: 'dynamic.balance.sheet',
method: 'get_data',
args: [
[self.wizard], action_title
],
}).then(function(datas) {
self.filter_data = datas[0]
self.account_data = datas[1]
_.each(self.account_data, function(account) {
var currency_format = {
currency_id: account.company_currency_id,
position: account.company_currency_position,
symbol: account.company_currency_symbol,
noSymbol: true,
};
if (currency_format.position == "before") {
if (account.debit == 0) {
account.debit = ' - '
} else {
account.debit = currency_format.symbol + '&nbsp;' + account.debit.toFixed(2) + '&nbsp;';
}
if (account.credit == 0) {
account.credit = ' - '
} else {
account.credit = currency_format.symbol + '&nbsp;' + account.credit.toFixed(2) + '&nbsp;';
}
if (account.balance == 0) {
account.balance = ' - '
} else {
account.balance = currency_format.symbol + '&nbsp;' + account.balance.toFixed(2) + '&nbsp;';
}
} else {
if (account.debit == 0) {
account.debit = ' - '
} else {
account.debit = account.debit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (account.credit == 0) {
account.credit = ' - '
} else {
account.credit = account.credit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (account.balance == 0) {
account.balance = ' - '
} else {
account.balance = account.balance.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
}
});
if (initial_render) {
self.$('.pal-filter').html(QWeb.render('FilterSectionPAL', {
filter_data: datas[0],
}));
self.$el.find('.journal').select2({
placeholder: 'Select Journal...',
});
self.$el.find('.account').select2({
placeholder: 'Select Account...',
});
self.$el.find('.account-tag').select2({
placeholder: 'Select Account Tag...',
});
self.$el.find('.analytic-tag').select2({
placeholder: 'Select Analytic Tag...',
});
self.$el.find('.analytic').select2({
placeholder: 'Select Analytic...',
});
self.$el.find('#date_from').datepicker({
dateFormat: 'dd-mm-yy'
});
self.$el.find('#date_to').datepicker({
dateFormat: 'dd-mm-yy'
});
self.$el.find('.entries').select2({
placeholder: 'Select Moves',
});
}
self.$('.container-pal-main').html(QWeb.render('ProfitAndLossData', {
account_data: datas[1],
report_lines: datas[2]
}));
});
},
pal_lines_by_page: function(offset, account_id) {
var self = this;
return rpc.query({
model: 'dynamic.balance.sheet',
method: 'bs_move_lines',
args: [self.wizard, offset, account_id],
})
},
get_move_lines: function(event) {
event.preventDefault();
var self = this;
var account_id = $(event.currentTarget).data('account-id');
var offset = 0;
var td = $(event.currentTarget).next('tr').find('td');
if (td.length == 1) {
self.pal_lines_by_page(offset, account_id).then(function(datas) {
_.each(datas[2], function(data) {
var currency_format = {
currency_id: data.company_currency_id,
position: data.company_currency_position,
symbol: data.company_currency_symbol,
noSymbol: true,
};
if (currency_format.position == "before") {
if (data.debit == 0) {
data.debit = ' - '
} else {
data.debit = currency_format.symbol + '&nbsp;' + data.debit.toFixed(2) + '&nbsp;';
}
if (data.credit == 0) {
data.credit = ' - '
} else {
data.credit = currency_format.symbol + '&nbsp;' + data.credit.toFixed(2) + '&nbsp;';
}
if (data.balance == 0) {
data.balance = ' - '
} else {
data.balance = currency_format.symbol + '&nbsp;' + data.balance.toFixed(2) + '&nbsp;';
}
} else {
if (data.debit == 0) {
data.debit = ' - '
} else {
data.debit = data.debit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (data.credit == 0) {
data.credit = ' - '
} else {
data.credit = data.credit.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
if (data.balance == 0) {
data.balance = ' - '
} else {
data.balance = data.balance.toFixed(2) + '&nbsp;' + currency_id.symbol;
}
}
});
$(event.currentTarget).next('tr').find('td .pal-table-div').remove();
$(event.currentTarget).next('tr').find('td ul').after(
QWeb.render('SubSectionPAL', {
count: datas[0],
offset: datas[1],
account_data: datas[2],
}))
$(event.currentTarget).next('tr').find('td ul li:first a').css({
'background-color': '#00ede8',
'font-weight': 'bold',
});
})
}
},
view_move: function(event) {
event.preventDefault();
var self = this;
var context = {};
var redirect_to_document = function(res_model, res_id, view_id) {
var action = {
type: 'ir.actions.act_window',
view_type: 'form',
view_mode: 'form',
res_model: res_model,
views: [
[view_id || false, 'form']
],
res_id: res_id,
target: 'current',
context: context,
};
return self.do_action(action);
};
rpc.query({
model: 'account.move',
method: 'search_read',
domain: [
['id', '=', $(event.currentTarget).data('move-id')]
],
fields: ['id'],
limit: 1,
})
.then(function(record) {
if (record.length > 0) {
redirect_to_document('account.move', record[0].id);
} else {
redirect_to_document('account.move', $(event.currentTarget).data('move-id'));
}
});
},
});
core.action_registry.add('dynamic.pal', ProfitAndLoss);
});

377
dynamic_financial_report/static/src/scss/dynamic_common_style.scss

@ -1,377 +0,0 @@
.gl-breadcrumb {
font-size: 18px;
}
.amt{
text-align: right;
}
.amd{
text-align: right;
width: 400px !important;
}
.py_cntrl_right{
max-width: 50%;
max-height: 50px;
}
.gl-breadcrumb li {
display: inline-block;
max-width: 100%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: top;
}
.py-control-div {
display: flex;
justify-content: space-between;
min-height: 30px;
}
.py-btn-primary{
color: #FFFFFF;
background-color: #00A09D;
border-color: #00A09D;
border-radius: 0px;
}
.py-btn-secondary{
color: #FFFFFF;
background-color: #00A0AD;
border-color: #00A09D;
border-radius: 3px;
}
.py-search-buttons{
display: block;
margin: auto 0px;
}
.py-search-btn-date,
.py-search-date-filter,
.py-search-journals,
.py-search-partners,
.py-search-entries,
.py-search-accounts,
.py-search-accounts-tag,
.py-search-analytics,
.py-search-analytic-tag,
.py-search-extra{
white-space: nowrap;
display: inline-block;
cursor: pointer;
user-select: none;
position: relative;
}
.dropdown-item{
display: block;
width: 100%;
clear: both;
font-weight: 400;
color: rgb(102, 102, 102);
text-align: inherit;
white-space: nowrap;
background-color: transparent;
padding: 0.25rem 1.5rem;
border-width: 0px;
border-style: initial;
border-color: initial;
border-image: initial;
position: relative;
}
.tl-breadcrumb {
font-size: 18px;
}
.tl-breadcrumb li {
display: inline-block;
max-width: 100%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: top;
}
.py-search-btn-date,
.py-search-date-filter,
.py-search-journals,
.py-search-partners,
.py-search-accounts,
.py-search-entries,
.py-search-accounts-tag,
.py-search-analytics,
.py-search-analytic-tag,
.py-search-extra{
white-space: nowrap;
display: inline-block;
cursor: pointer;
user-select: none;
position: relative;
}
.bs-section-first{
padding: 5px;
padding-top: 5px;
padding-left: 15px;
}
.bs-section{
padding: 5px;
padding-top: 25px;
padding-left: 15px;
}
.bs-sub-section{
padding-top: 25px;
}
.pl-breadcrumb {
font-size: 18px;
}
.pl-breadcrumb li {
display: inline-block;
max-width: 100%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: top;
}
.py-search-btn-date,
.py-search-date-filter,
.py-search-journals,
.py-search-partners,
.py-search-categories,
.py-search-reconciled,
.py-search-accounts,
.py-search-entries,
.py-search-accounts-tag,
.py-search-analytics,
.py-search-analytic-tag,
.py-search-extra{
white-space: nowrap;
display: inline-block;
cursor: pointer;
user-select: none;
position: relative;
}
.al-breadcrumb {
font-size: 18px;
}
.al-breadcrumb li {
display: inline-block;
max-width: 100%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: top;
}
.py-search-btn-date,
.py-search-date-filter,
.py-search-journals,
.py-search-partners,
.py-search-accounts,
.py-search-partner-type,
.py-search-analytics,
.py-search-partner-tag,
.py-search-entries,
.py-search-extra{
white-space: nowrap;
display: inline-block;
cursor: pointer;
user-select: none;
position: relative;
}
.cf-breadcrumb {
font-size: 18px;
}
.cf-breadcrumb li {
display: inline-block;
max-width: 100%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: top;
}
.py-search-btn-date,
.py-search-date-filter,
.py-search-journals,
.py-search-partners,
.py-search-categories,
.py-search-reconciled,
.py-search-accounts,
.py-search-accounts-tag,
.py-search-analytics,
.py-search-analytic-tag,
.py-search-extra{
white-space: nowrap;
display: inline-block;
cursor: pointer;
user-select: none;
position: relative;
}
.main {
border: 1px solid #efefef;
margin: 50px;
border-radius: 17px;
background: #fff;
padding: 2% 0 5%;
}
.thead {
border-bottom: 2px solid #bfbfbf;
background: #e8e8e8;
}
.thead tr {
height: 38px;
width: 100%;
}
.thead tr th {
border-bottom: 1px solid #e6e6e6;
font-weight:bold;
font-size:15px;
}
.header {
margin-bottom: 50px;
text-align: center;
}
.child_col1 {
width: 8%;
}
.parent-highlight {
background: #f5f5f5;
}
.parent-line {
background-image: linear-gradient(to bottom, #fcfcfc, #dedede);
cursor: pointer;
}
.parent-line:hover {
background-image: linear-gradient(to bottom, #fcfcfc, #cacaca);
}
.child_col2 {
width: 10%;
}
.child_col3 {
width: 10%;
}
.child_col4 {
width: 10%;
}
.categ td {
padding: 7px !important;
}
.filter_options {
border-bottom: 1px solid;
border-radius: 10px;
}
.entry_type {
margin: 20px;
}
.report_header {
text-align: center;
border-bottom: 1px solid #efefef;
}
.row_color {
background-color: #e4e4e4;
}
.main_report {
border: 1px solid #efefef;
margin: 50px;
border-radius: 17px;
background: #fff;
padding: 2% 0 5%;
}
.child-class td {
font-size: 12px !important;
cursor: pointer;
}
.child-row {
border-bottom: 1px solid #cacaca;
}
.child-row:hover {
background-color: #f5f5f5;
}
.bs-breadcrumb {
font-size: 18px;
}
.bs-breadcrumb li {
display: inline-block;
max-width: 100%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: top;
}
.pal-breadcrumb {
font-size: 18px;
}
.pal-breadcrumb li {
display: inline-block;
max-width: 100%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: top;
}
.db-breadcrumb {
font-size: 18px;
}
.db-breadcrumb li {
display: inline-block;
max-width: 100%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: top;
}
.py-search-btn-date,
.py-search-date-filter,
.py-search-journals,
.py-search-entries,
.py-search-accounts,
.py-search-extra{
white-space: nowrap;
display: inline-block;
cursor: pointer;
user-select: none;
position: relative;
}

292
dynamic_financial_report/static/src/xml/al_views.xml

@ -1,292 +0,0 @@
<templates xml:space="preserve">
<t t-name="AgeingPartner">
<div class="container-al">
<div>
<div class="al-filter"></div>
</div>
<div class="container-al-data">
<div class="container-al-main"/>
</div>
</div>
</t>
<t t-name="AgeingPartnerData">
<div>
<table cellspacing="0" width="100%">
<thead>
<tr>
<th colspan="2">Account</th>
<th class="amt">Not Due</th>
<th class="amt">0-20</th>
<th class="amt">21-40</th>
<th class="amt">41-60</th>
<th class="amt">61-80</th>
<th class="amt">81-100</th>
<th class="amt">100+</th>
<th class="amt">Total</th>
</tr>
</thead>
<tbody>
<t t-foreach="account_data" t-as="account">
<t t-set="common_id" t-value=""/>
<t t-if="account_data[account]['count']">
<tr style="border: 1.5px solid black;" class="al-line"
data-toggle="collapse"
t-att-data-account-id="account_data[account]['id']"
t-attf-data-target=".a{{account_data[account]['id']}}">
<td colspan="2" style="border: 0px solid black;">
<i class="fa fa-caret-down" role="img" aria-label="Unfolded" title="Unfolded"></i>
<span>
<t t-esc="account_data[account]['partner_name']"/>
</span>
</td>
<td class="amt" >
<t t-raw="account_data[account]['Not']"/>
</td>
<td class="amt" >
<t t-raw="account_data[account]['value_20']"/>
</td>
<td class="amt" >
<t t-raw="account_data[account]['2140']"/>
</td>
<td class="amt" >
<t t-raw="account_data[account]['4160']"/>
</td>
<td class="amt" >
<t t-raw="account_data[account]['6180']"/>
</td>
<td class="amt" >
<t t-raw="account_data[account]['81100']"/>
</td>
<td class="amt" >
<t t-raw="account_data[account]['100']"/>
</td>
<td class="amt" >
<t t-raw="account_data[account]['total']"/>
</td>
<!-- <td class="amt"></td>-->
<t t-set="common_id" t-value="'a'+account_data[account]['id']"/>
</tr>
</t>
<tr t-attf-class="collapse a{{account_data[account]['id']}}">
<td colspan="10">
<ul>
<t t-if="!account_data[account]['single_page']">
<t t-foreach="account_data[account]['pages']" t-as="i">
<t t-esc="i"/>
<li>
<a
t-att-data-page-number="i"
t-att-data-count="account_data[account]['count']"
t-att-data-account-id="account_data[account]['id']">
<t t-esc="i"/>
</a>
</li>
</t>
</t>
</ul>
</td>
</tr>
</t>
</tbody>
</table>
</div>
</t>
<t t-name="FilterSection-al">
<div class="py-control-div">
<ol class="al-breadcrumb">
<li>Partner Ageing</li>
</ol>
</div>
<div class="py-control-div">
<div class="py-cntrl-left">
<div class="py-ctrl-buttons">
<button type="button" class="btn py-btn-primary" id="pdf" action="print_pdf" style="position: relative;">Pint (PDF)</button>
<button type="button" class="btn py-btn-primary" id="xlsx" action="print_xlsx" style="position: relative;">Export (XLSX)</button>
</div>
</div>
<div class="py_cntrl_right">
<div class="py-search-buttons">
<button type="button" id="filter_apply_button" class="btn py-btn-secondary" action="apply_filter" style="position: relative;">Apply</button>
<div class="py-search-btn-date">
<a type="button" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
<span class="fa fa-calendar" title="Dates" role="img" aria-label="Dates"></span>
As On Date
</a>
<div class="dropdown-menu py-filters-menu" role="menu">
<div class="o_foldable_menu o_closed_menu o_account_report_search" data-filter="custom_filter_date">
<label class="custom-date" for="as_on_date">As On Date :</label>
<div class="form-group custom-date">
<div class="o_datepicker" aria-atomic="true" id="datepicker10" data-target-input="nearest">
<input type="text" id="as_on_date"></input>
<span class="o_datepicker_button"></span>
</div>
</div>
</div>
</div>
</div>
<div class="py-search-accounts">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Account Type:
</a>
<select class="dropdown-menu py-filters-menu account" name="states[]" multiple="multiple">
<option value="receivable">Receivable Accounts Only</option>
<option value="payable">Payable Accounts Only</option>
</select>
<span id="type_res"></span>
</div>
<div class="py-search-partner-type">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-filter"></span>
Partner Type:
</a>
<select class="dropdown-menu py-filters-menu partner-type" name="states[]" multiple="multiple">
<option value="customer">Customer Only</option>
<option value="supplier">Supplier Only</option>
</select>
<span id="partner_type_res"></span>
</div>
<div class="py-search-partners">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-users"></span>
Partners:
</a>
<select class="dropdown-menu py-filters-menu partners" name="states[]" multiple="multiple">
<t t-foreach="filter_data.partners_list" t-as="partners">
<option t-attf-value="{{partners[0]}}">
<t t-esc="partners[1]"/>
</option>
</t>
</select>
<span id="partner_res"></span>
</div>
<div class="py-search-partner-tag">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-filter"></span>
Partner Tag:
</a>
<select class="dropdown-menu py-filters-menu partner-tag" name="states[]" multiple="multiple">
<t t-foreach="filter_data.category_list" t-as="partner_tag">
<option t-attf-value="{{partner_tag[0]}}">
<t t-esc="partner_tag[1]"/>
</option>
</t>
</select>
<span id="category_res"></span>
</div>
<div class="py-search-targetmoves">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Target Moves:
</a>
<select class="dropdown-menu py-filters-menu target-moves" name="states[]" >
<option value="draft">All Entries</option>
<option value="posted">Posted</option>
</select>
<span id="target_res"></span>
</div>
</div>
</div>
</div>
</t>
<t t-name="SubSection_al">
<div class="al-table-div">
<table class="table table-sm o_main_table"
style="border: 0px solid black;display compact;">
<thead>
<tr style="">
<th>Entry Label</th>
<th>Due Date</th>
<th>Journal</th>
<th>Account</th>
<th class="text-right">Not Due</th>
<th class="text-right">0-20</th>
<th class="text-right">21-40</th>
<th class="text-right">41-60</th>
<th class="text-right">61-80</th>
<th class="text-right">81-100</th>
<th class="text-right" >100+</th>
</tr>
</thead>
<tbody>
<t t-foreach="account_data" t-as="account_line">
<t t-set="style" t-value="'font-style: italic;'"/>
<!-- </t>-->
<tr>
<td>
<t t-if="account_line.move_name">
<div class="dropdown dropdown-toggle">
<a data-toggle="dropdown" href="#">
<span class="caret"></span>
<span data-id="17">
<t t-esc="account_line.move_name"/>
</span>
</a>
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu">
<li>
<a class="view-move" tabindex="-1" href="#"
t-att-data-move-id="account_line.move_id">
View Source move
</a>
</li>
</ul>
</div>
</t>
</td>
<td>
<t t-esc="account_line.date_maturity"/>
</td>
<td>
<t t-esc="account_line.journal_name"/>
</td>
<td >
<span>
<t t-esc="account_line.account_code"/>
-
<t t-esc="account_line.account_name"/>
</span>
</td>
<td class="text-right"
>
<t t-esc="account_line.range_0"/>
</td>
<td class="text-right"
>
<t t-esc="account_line.range_1"/>
</td>
<td class="text-right"
>
<t t-esc="account_line.range_2"/>
</td>
<td class="text-right"
>
<t t-esc="account_line.range_3"/>
</td>
<td class="text-right"
>
<t t-esc="account_line.range_4"/>
</td>
<td class="text-right"
>
<t t-esc="account_line.range_5"/>
</td>
<td class="text-right"
>
<t t-esc="account_line.range_6"/>
</td>
</tr>
</t>
</tbody>
</table>
</div>
</t>
</templates>

282
dynamic_financial_report/static/src/xml/bank_book_view.xml

@ -1,282 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">
<t t-name="BankBook">
<div class="container-bb">
<div>
<div class="bb-filter"></div>
</div>
<div class="container-bb-data">
<div class="container-bb-main"></div>
</div>
</div>
</t>
<t t-name="BankBookData">
<div>
<table cellspacing="0" width="100%">
<thead>
<tr>
<th colspan="6">Account</th>
<th class="amt">Debit</th>
<th class="amt">Credit</th>
<th class="amt">Balance</th>
<th></th>
</tr>
</thead>
<tbody>
<t t-foreach="account_data" t-as="account">
<t t-set="common_id" t-value=""/>
<t t-if="account_data[account]['count']">
<tr style="border: 1.5px solid black;" class="bb-line"
data-toggle="collapse"
t-att-data-account-id="account_data[account]['id']"
t-attf-data-target=".a{{account_data[account]['id']}}">
<td colspan="6" style="border: 0px solid black;">
<i class="fa fa-caret-down" role="img" aria-label="Unfolded" title="Unfolded"></i>
<span>
<t t-esc="account_data[account]['code']"/>
-
<t t-esc="account_data[account]['name']"/>
</span>
</td>
<td class="amt">
<t t-raw="account_data[account]['debit']"/>
</td>
<td class="amt">
<t t-raw="account_data[account]['credit']"/>
</td>
<td class="amt">
<t t-raw="account_data[account]['balance']"/>
</td>
<td class="amt"></td>
<t t-set="common_id" t-value="'a'+account_data[account]['id']"/>
</tr>
</t>
<tr t-attf-class="collapse a{{account_data[account]['id']}}">
<td colspan="10">
<ul>
<t t-if="!account_data[account]['single_page']">
<t t-foreach="account_data[account]['pages']" t-as="i">
<li>
<a
t-att-data-page-number="i"
t-att-data-count="account_data[account]['count']"
t-att-data-account-id="account_data[account]['id']">
<t t-esc="i"/>
</a>
</li>
</t>
</t>
</ul>
</td>
</tr>
</t>
</tbody>
</table>
</div>
</t>
<t t-name="FilterSectionBB">
<div class="py-control-div">
<ol class="gl-breadcrumb">
<li>Bank Book</li>
</ol>
</div>
<div class="py-control-div">
<div class="py-cntrl-left">
<div class="py-ctrl-buttons">
<button type="button" class="btn py-btn-primary" id="pdf" action="print_pdf" style="position: relative;">Print (PDF)</button>
<button type="button" class="btn py-btn-primary" id="xlsx" action="print_xlsx" style="position: relative;">Export (XLSX)</button>
</div>
</div>
<div class="py_cntrl_right">
<div class="py-search-buttons">
<button type="button" id="filter_apply_button" class="btn py-btn-secondary" action="apply_filter" style="position: relative;">Apply</button>
<div class="py-search-btn-date">
<a type="button" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
<span class="fa fa-calendar" title="Dates" role="img" aria-label="Dates"></span>
Custom
</a>
<div class="dropdown-menu py-filters-menu" role="menu">
<div class="o_foldable_menu o_closed_menu o_account_report_search" data-filter="custom_filter_date">
<label class="custom-date" for="date_from">Start Date :</label>
<div class="form-group custom-date">
<div class="o_datepicker" aria-atomic="true" id="datepicker10" data-target-input="nearest">
<input type="text" id="date_from"></input>
<span class="o_datepicker_button"></span>
</div>
</div>
<label class="custom-date" for="date_to">End Date :</label>
<div class="form-group custom-date">
<div class="o_datepicker" aria-atomic="true" id="datepicker11" data-target-input="nearest">
<input type="text" id="date_to"></input>
<span class="o_datepicker_button"></span>
</div>
</div>
</div>
</div>
</div>
<div class="py-search-journals">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Journals:
</a>
<select class="dropdown-menu py-filters-menu journal" name="states[]" multiple="multiple">
<b role="menuitem" class="dropdown-item-text">
<t t-esc="filter_data.company_name"/>
</b>
<div role="separator" class="dropdown-divider"></div>
<t t-foreach="filter_data.journals_list" t-as="journal">
<option t-attf-value="{{journal[0]}}">
<t t-esc="journal[1]"/>
</option>
</t>
</select>
<span id="journal_res"></span>
</div>
<div class="py-search-accounts">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Accounts:
</a>
<select class="dropdown-menu py-filters-menu account" name="states[]" multiple="multiple">
<t t-foreach="filter_data.accounts_list" t-as="account">
<option t-attf-value="{{account[0]}}">
<t t-esc="account[1]"/>
</option>
</t>
</select>
<span id="acc_res"></span>
</div>
<div class="py-search-accounts-tag">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Account Tags:
</a>
<select class="dropdown-menu py-filters-menu account-tag" name="states[]" multiple="multiple">
<t t-foreach="filter_data.account_tag_list" t-as="account_tag">
<option t-attf-value="{{account_tag[0]}}">
<t t-esc="account_tag[1]"/>
</option>
</t>
</select>
<span id="acc_tag_res"></span>
</div>
<div class="py-search-analytics">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Analytic:
</a>
<select class="dropdown-menu py-filters-menu analytic" name="states[]" multiple="multiple">
<t t-foreach="filter_data.analytics_list" t-as="analytic">
<option t-attf-value="{{analytic[0]}}">
<t t-esc="analytic[1]"/>
</option>
</t>
</select>
<span id="analic_res"></span>
</div>
<div class="py-search-analytic-tag">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Analytic Tags:
</a>
<select class="dropdown-menu py-filters-menu analytic-tag" name="states[]" multiple="multiple">
<t t-foreach="filter_data.analytic_tag_list" t-as="analytic_tag">
<option t-attf-value="{{analytic_tag[0]}}">
<t t-esc="analytic_tag[1]"/>
</option>
</t>
</select>
<span id="analic_tag_res"></span>
</div>
<div class="py-search-entries">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-filter"></span>
Options:
</a>
<select id="entries" class="dropdown-menu py-filters-menu entries">
<option value="all">All Entries </option>
<option value="posted">Posted Entries</option>
</select>
<span id="post_res"></span>
</div>
</div>
</div>
</div>
</t>
<t t-name="SubSectionBB">
<div class="bb-table-div">
<table class="table table-sm o_main_table"
style="border: 0px solid black;display compact;">
<thead>
<tr style="">
<th>Date</th>
<th>JRNL</th>
<th>Partner</th>
<th>Move</th>
<th>Entry Label</th>
<th class="amt">Debit</th>
<th class="amt">Credit</th>
<th class="amt">Balance</th>
</tr>
</thead>
<tbody>
<t t-foreach="account_data" t-as="account_line">
<t t-set="style" t-value="''"/>
<t t-if="account_line.move_name == 'Initial Balance'">
<t t-set="style" t-value="'font-style: italic;'"/></t>
<t t-if="account_line.move_name == 'Ending Balance'">
<t t-set="style" t-value="'font-style: italic;'"/></t>
<tr>
<td>
<t t-if="account_line.ldate">
<div class="dropdown dropdown-toggle">
<a data-toggle="dropdown" href="#">
<span class="caret"></span>
<span data-id="17">
<t t-esc="account_line.ldate"/>
</span>
</a>
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu">
<li>
<a class="view-move" tabindex="-1" href="#"
t-att-data-move-id="account_line.move_id">
View Source move
</a>
</li>
</ul>
</div>
</t>
</td>
<td>
<t t-esc="account_line.lcode"/>
</td>
<td>
<t t-esc="account_line.partner_name"/>
</td>
<td t-att-style="style">
<t t-esc="account_line.move_name"/>
</td>
<td t-att-style="style">
<t t-esc="account_line.lname"/>
</td>
<td t-att-style="style" class="amt">
<t t-raw="account_line.debit"/>
</td>
<td t-att-style="style" class="amt">
<t t-raw="account_line.credit"/>
</td>
<td t-att-style="style" class="amt">
<t t-raw="account_line.balance"/>
</td>
</tr>
</t>
</tbody>
</table>
</div>
</t>
</templates>

246
dynamic_financial_report/static/src/xml/bs_template_views.xml

@ -1,246 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">
<t t-name="BalanceSheet">
<div class="container-bs">
<div>
<div class="bs-filter"></div>
</div>
<div class="container-bs-data">
<div class="container-bs-main"></div>
</div>
</div>
</t>
<t t-name="BalanceSheetData">
<div>
<table cellspacing="0" width="100%">
<thead>
<tr>
<th colspan="6" style="padding-top: 5px;"> </th>
<th style="text-align: right;padding-right: 50px; padding-top: 15px;">Debit</th>
<th style="text-align: right;padding-right: 50px; padding-top: 15px;">Credit</th>
<th style="text-align: right;padding-right: 50px; padding-top: 15px;">Balance</th>
<th></th>
</tr>
</thead>
<tbody>
<tr t-foreach="report_lines" t-as="a" style="border-bottom: double;">
<t t-if="a['level'] != 0">
<t t-if="a['code']">
<t t-foreach="account_data" t-as="account">
<t t-set="common_id" t-value=""/>
<t t-if="account_data[account]['count']">
<t t-if="account_data[account]['code'] == a['code']">
<tr style="border-bottom: 1px solid black;" class="bs-line"
data-toggle="collapse"
t-att-data-account-id="account_data[account]['id']"
t-attf-data-target=".a{{account_data[account]['id']}}">
<td colspan="6" style="border: 0px solid black; padding-left: 50px;">
<span>
<t t-esc="account_data[account]['code']"/>
-
<t t-esc="account_data[account]['name']"/>
</span>
<div class="py-search-btn-date">
<a type="button" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
</a>
<div class="dropdown-menu " role="menu">
<div class="o_foldable_menu o_closed_menu " >
<div class="form-group ">
<div class="" aria-atomic="true" id="" data-target-input="">
<li role="presentation">
<a role="menuitem" t-att-data-account-id="account_data[account]['id']" class="open-gl" >View General Ledger</a>
</li>
</div>
</div>
</div>
</div>
</div>
</td>
<td class="amt" style="text-align: right;padding-right: 50px;">
<t t-raw="account_data[account]['debit']"/>
</td>
<td class="amt" style="text-align: right;padding-right: 50px;">
<t t-raw="account_data[account]['credit']"/>
</td>
<td class="amt" style="text-align: right;padding-right: 50px;">
<t t-raw="account_data[account]['balance']"/>
</td>
<td class="amt"></td>
<t t-set="common_id" t-value="'a'+account_data[account]['id']"/>
</tr>
</t>
</t>
</t>
</t>
<t t-else="">
<t t-set="style" t-value="'padding: 5px;padding-left: 25px;'"/>
<t t-set="fr_head" t-value="'border-bottom: double;'"/>
<t t-set="fr_padding" t-value="'padding-top: 5px; text-align: right;padding-right: 50px;'"/>
<t t-if="a['level'] == 1">
<t t-set="style" t-value="'padding: 5px;padding-left: 15px;'"/>
</t>
<t t-if="a['level'] &gt; 2">
<t t-set="style" t-value="'padding: 5px;padding-left: 50px;'"/>
<t t-set="fr_head" t-value="'border-bottom: 1px solid black;'"/>
</t>
<t t-if="a['level'] &lt; 3">
<t t-set="style" t-value="'padding: 5px;padding-left: 15px;padding-top: 25px;'"/>
<t t-set="fr_padding" t-value="'padding-top: 25px; text-align: right;padding-right: 50px;'"/>
</t>
<tr t-att-style="fr_head">
<th colspan="6" t-att-style="style">
<t t-esc="a['name']"/>
</th>
<td t-att-style="fr_padding"><t t-esc="a['m_debit']"/></td>
<td t-att-style="fr_padding"><t t-esc="a['m_credit']" t-att-style="style"/></td>
<td t-att-style="fr_padding"><t t-esc="a['m_balance']" t-att-style="style"/></td>
</tr>
</t>
</t>
</tr>
</tbody>
</table>
</div>
</t>
<t t-name="FilterSectionBS">
<div class="py-control-div">
<ol class="bs-breadcrumb">
<li>Balance Sheet</li>
</ol>
</div>
<div class="py-control-div">
<div class="py-cntrl-left">
<div class="py-ctrl-buttons">
<button type="button" class="btn py-btn-primary" id="pdf" action="print_pdf" style="position: relative;">Print (PDF)</button>
<button type="button" class="btn py-btn-primary" id="xlsx" action="print_xlsx" style="position: relative;">Export (XLSX)</button>
</div>
</div>
<div class="py_cntrl_right">
<div class="py-search-buttons">
<button type="button" id="filter_apply_button" class="btn py-btn-secondary" action="apply_filter" style="position: relative;">Apply</button>
<div class="py-search-btn-date">
<a type="button" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
<span class="fa fa-calendar" title="Dates" role="img" aria-label="Dates"></span>
Custom
</a>
<div class="dropdown-menu py-filters-menu" role="menu">
<div class="o_foldable_menu o_closed_menu o_account_report_search" data-filter="custom_filter_date">
<label class="custom-date" for="date_from">Start Date :</label>
<div class="form-group custom-date">
<div class="o_datepicker" aria-atomic="true" id="datepicker10" data-target-input="nearest">
<input type="text" id="date_from"></input>
<span class="o_datepicker_button"></span>
</div>
</div>
<label class="custom-date" for="date_to">End Date :</label>
<div class="form-group custom-date">
<div class="o_datepicker" aria-atomic="true" id="datepicker11" data-target-input="nearest">
<input type="text" id="date_to"></input>
<span class="o_datepicker_button"></span>
</div>
</div>
</div>
</div>
</div>
<div class="py-search-journals">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Journals:
</a>
<select class="dropdown-menu py-filters-menu journal" name="states[]" multiple="multiple">
<b role="menuitem" class="dropdown-item-text">
<t t-esc="filter_data.company_name"/>
</b>
<div role="separator" class="dropdown-divider"></div>
<t t-foreach="filter_data.journals_list" t-as="journal">
<option t-attf-value="{{journal[0]}}">
<t t-esc="journal[1]"/>
</option>
</t>
</select>
<span id="journal_res"></span>
</div>
<div class="py-search-accounts">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Accounts:
</a>
<select class="dropdown-menu py-filters-menu account" name="states[]" multiple="multiple">
<t t-foreach="filter_data.accounts_list" t-as="account">
<option t-attf-value="{{account[0]}}">
<t t-esc="account[1]"/>
</option>
</t>
</select>
<span id="acc_res"></span>
</div>
<div class="py-search-accounts-tag">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Account Tags:
</a>
<select class="dropdown-menu py-filters-menu account-tag" name="states[]" multiple="multiple">
<t t-foreach="filter_data.account_tag_list" t-as="account_tag">
<option t-attf-value="{{account_tag[0]}}">
<t t-esc="account_tag[1]"/>
</option>
</t>
</select>
<span id="acc_tag_res"></span>
</div>
<div class="py-search-analytics">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Analytic:
</a>
<select class="dropdown-menu py-filters-menu analytic" name="states[]" multiple="multiple">
<t t-foreach="filter_data.analytics_list" t-as="analytic">
<option t-attf-value="{{analytic[0]}}">
<t t-esc="analytic[1]"/>
</option>
</t>
</select>
<span id="analic_res"></span>
</div>
<div class="py-search-analytic-tag">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Analytic Tags:
</a>
<select class="dropdown-menu py-filters-menu analytic-tag" name="states[]" multiple="multiple">
<t t-foreach="filter_data.analytic_tag_list" t-as="analytic_tag">
<option t-attf-value="{{analytic_tag[0]}}">
<t t-esc="analytic_tag[1]"/>
</option>
</t>
</select>
<span id="analic_tag_res"></span>
</div>
<div class="py-search-entries">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-filter"></span>
Options:
</a>
<select id="entries" class="dropdown-menu py-filters-menu entries">
<option value="all">All Entries </option>
<option value="posted">Posted Entries</option>
</select>
<span id="post_res"></span>
</div>
</div>
</div>
</div>
</t>
</templates>

282
dynamic_financial_report/static/src/xml/cash_book_view.xml

@ -1,282 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">
<t t-name="CashBook">
<div class="container-cb">
<div>
<div class="cb-filter"></div>
</div>
<div class="container-cb-data">
<div class="container-cb-main"></div>
</div>
</div>
</t>
<t t-name="CashBookData">
<div>
<table cellspacing="0" width="100%">
<thead>
<tr>
<th colspan="6">Account</th>
<th class="amt">Debit</th>
<th class="amt">Credit</th>
<th class="amt">Balance</th>
<th></th>
</tr>
</thead>
<tbody>
<t t-foreach="account_data" t-as="account">
<t t-set="common_id" t-value=""/>
<t t-if="account_data[account]['count']">
<tr style="border: 1.5px solid black;" class="cb-line"
data-toggle="collapse"
t-att-data-account-id="account_data[account]['id']"
t-attf-data-target=".a{{account_data[account]['id']}}">
<td colspan="6" style="border: 0px solid black;">
<i class="fa fa-caret-down" role="img" aria-label="Unfolded" title="Unfolded"></i>
<span>
<t t-esc="account_data[account]['code']"/>
-
<t t-esc="account_data[account]['name']"/>
</span>
</td>
<td class="amt">
<t t-raw="account_data[account]['debit']"/>
</td>
<td class="amt">
<t t-raw="account_data[account]['credit']"/>
</td>
<td class="amt">
<t t-raw="account_data[account]['balance']"/>
</td>
<td class="amt"></td>
<t t-set="common_id" t-value="'a'+account_data[account]['id']"/>
</tr>
</t>
<tr t-attf-class="collapse a{{account_data[account]['id']}}">
<td colspan="10">
<ul>
<t t-if="!account_data[account]['single_page']">
<t t-foreach="account_data[account]['pages']" t-as="i">
<li>
<a
t-att-data-page-number="i"
t-att-data-count="account_data[account]['count']"
t-att-data-account-id="account_data[account]['id']">
<t t-esc="i"/>
</a>
</li>
</t>
</t>
</ul>
</td>
</tr>
</t>
</tbody>
</table>
</div>
</t>
<t t-name="FilterSectionCB">
<div class="py-control-div">
<ol class="gl-breadcrumb">
<li>Cash Book</li>
</ol>
</div>
<div class="py-control-div">
<div class="py-cntrl-left">
<div class="py-ctrl-buttons">
<button type="button" class="btn py-btn-primary" id="pdf" action="print_pdf" style="position: relative;">Print (PDF)</button>
<button type="button" class="btn py-btn-primary" id="xlsx" action="print_xlsx" style="position: relative;">Export (XLSX)</button>
</div>
</div>
<div class="py_cntrl_right">
<div class="py-search-buttons">
<button type="button" id="filter_apply_button" class="btn py-btn-secondary" action="apply_filter" style="position: relative;">Apply</button>
<div class="py-search-btn-date">
<a type="button" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
<span class="fa fa-calendar" title="Dates" role="img" aria-label="Dates"></span>
Custom
</a>
<div class="dropdown-menu py-filters-menu" role="menu">
<div class="o_foldable_menu o_closed_menu o_account_report_search" data-filter="custom_filter_date">
<label class="custom-date" for="date_from">Start Date :</label>
<div class="form-group custom-date">
<div class="o_datepicker" aria-atomic="true" id="datepicker10" data-target-input="nearest">
<input type="text" id="date_from"></input>
<span class="o_datepicker_button"></span>
</div>
</div>
<label class="custom-date" for="date_to">End Date :</label>
<div class="form-group custom-date">
<div class="o_datepicker" aria-atomic="true" id="datepicker11" data-target-input="nearest">
<input type="text" id="date_to"></input>
<span class="o_datepicker_button"></span>
</div>
</div>
</div>
</div>
</div>
<div class="py-search-journals">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Journals:
</a>
<select class="dropdown-menu py-filters-menu journal" name="states[]" multiple="multiple">
<b role="menuitem" class="dropdown-item-text">
<t t-esc="filter_data.company_name"/>
</b>
<div role="separator" class="dropdown-divider"></div>
<t t-foreach="filter_data.journals_list" t-as="journal">
<option t-attf-value="{{journal[0]}}">
<t t-esc="journal[1]"/>
</option>
</t>
</select>
<span id="journal_res"></span>
</div>
<div class="py-search-accounts">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Accounts:
</a>
<select class="dropdown-menu py-filters-menu account" name="states[]" multiple="multiple">
<t t-foreach="filter_data.accounts_list" t-as="account">
<option t-attf-value="{{account[0]}}">
<t t-esc="account[1]"/>
</option>
</t>
</select>
<span id="acc_res"></span>
</div>
<div class="py-search-accounts-tag">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Account Tags:
</a>
<select class="dropdown-menu py-filters-menu account-tag" name="states[]" multiple="multiple">
<t t-foreach="filter_data.account_tag_list" t-as="account_tag">
<option t-attf-value="{{account_tag[0]}}">
<t t-esc="account_tag[1]"/>
</option>
</t>
</select>
<span id="acc_tag_res"></span>
</div>
<div class="py-search-analytics">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Analytic:
</a>
<select class="dropdown-menu py-filters-menu analytic" name="states[]" multiple="multiple">
<t t-foreach="filter_data.analytics_list" t-as="analytic">
<option t-attf-value="{{analytic[0]}}">
<t t-esc="analytic[1]"/>
</option>
</t>
</select>
<span id="analic_res"></span>
</div>
<div class="py-search-analytic-tag">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Analytic Tags:
</a>
<select class="dropdown-menu py-filters-menu analytic-tag" name="states[]" multiple="multiple">
<t t-foreach="filter_data.analytic_tag_list" t-as="analytic_tag">
<option t-attf-value="{{analytic_tag[0]}}">
<t t-esc="analytic_tag[1]"/>
</option>
</t>
</select>
<span id="analic_tag_res"></span>
</div>
<div class="py-search-entries">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-filter"></span>
Options:
</a>
<select id="entries" class="dropdown-menu py-filters-menu entries">
<option value="all">All Entries </option>
<option value="posted">Posted Entries</option>
</select>
<span id="post_res"></span>
</div>
</div>
</div>
</div>
</t>
<t t-name="SubSectionCB">
<div class="cb-table-div">
<table class="table table-sm o_main_table"
style="border: 0px solid black;display compact;">
<thead>
<tr style="">
<th>Date</th>
<th>JRNL</th>
<th>Partner</th>
<th>Move</th>
<th>Entry Label</th>
<th class="amt">Debit</th>
<th class="amt">Credit</th>
<th class="amt">Balance</th>
</tr>
</thead>
<tbody>
<t t-foreach="account_data" t-as="account_line">
<t t-set="style" t-value="''"/>
<t t-if="account_line.move_name == 'Initial Balance'">
<t t-set="style" t-value="'font-style: italic;'"/></t>
<t t-if="account_line.move_name == 'Ending Balance'">
<t t-set="style" t-value="'font-style: italic;'"/></t>
<tr>
<td>
<t t-if="account_line.ldate">
<div class="dropdown dropdown-toggle">
<a data-toggle="dropdown" href="#">
<span class="caret"></span>
<span data-id="17">
<t t-esc="account_line.ldate"/>
</span>
</a>
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu">
<li>
<a class="view-move" tabindex="-1" href="#"
t-att-data-move-id="account_line.move_id">
View Source move
</a>
</li>
</ul>
</div>
</t>
</td>
<td>
<t t-esc="account_line.lcode"/>
</td>
<td>
<t t-esc="account_line.partner_name"/>
</td>
<td t-att-style="style">
<t t-esc="account_line.move_name"/>
</td>
<td t-att-style="style">
<t t-esc="account_line.lname"/>
</td>
<td t-att-style="style" class="amt">
<t t-raw="account_line.debit"/>
</td>
<td t-att-style="style" class="amt">
<t t-raw="account_line.credit"/>
</td>
<td t-att-style="style" class="amt">
<t t-raw="account_line.balance"/>
</td>
</tr>
</t>
</tbody>
</table>
</div>
</t>
</templates>

306
dynamic_financial_report/static/src/xml/cash_flow.xml

@ -1,306 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">
<t t-name="CashFlow">
<div class="container-cf">
<div>
<div class="cf-filter"></div>
</div>
<div class="container-cf-data">
<div class="container-cf-main"></div>
</div>
</div>
</t>
<t t-name="CashFlowData">
<div>
<table cellspacing="0" width="100%">
<thead>
<tr>
<th colspan="6">Name</th>
<th class="amd">Cash In</th>
<th class="amd">Cash Out</th>
<th class="amd">Balance</th>
</tr>
</thead>
<tbody>
<t t-foreach="account_data" t-as="account">
<t t-set="common_id" t-value=""/>
<t t-if="(level=='detailed' or level=='very' or level==false )">
<tr style="border: .5px solid black;" class="cf-line"
data-toggle="collapse"
t-att-data-account-id="account['id']"
t-attf-data-target=".a{{account['id']}}">
<td colspan="6" style="border: 0px solid black;">
<i class="fa fa-caret-down" role="img" aria-label="Unfolded" title="Unfolded"></i>
<span>
<t t-if="account['month_part']">
<t t-esc="account['month_part']"/>
</t>
<t t-esc="account['code']"/>
<t t-esc="account['name']"/>
</span>
</td>
<td class="amd">
<t t-raw="account['total_debit']"/>
</td>
<td class="amd">
<t t-raw="account['total_credit']"/>
</td>
<td class="amd">
<t t-raw="account['total_balance']"/>
</td>
</tr>
</t>
<t t-else="">
<tr style="border: 1.5px solid black;" class=""
data-toggle="collapse"
t-att-data-account-id="account['id']"
t-attf-data-target=".a{{account['id']}}">
<td colspan="6" style="border: 0px solid black;">
<span>
<t t-if="account['month_part']">
<t t-esc="account['month_part']"/>
</t>
<t t-esc="account['code']"/>
<t t-esc="account['name']"/>
</span>
</td>
<td class="amd">
<t t-raw="account['total_debit']"/>
</td>
<td class="amd">
<t t-raw="account['total_credit']"/>
</td>
<td class="amd">
<t t-raw="account['total_balance']"/>
</td>
</tr>
</t>
<tr t-attf-class="collapse a{{account['id']}}">
<td colspan="10">
<ul>
</ul>
</td>
</tr>
</t>
</tbody>
</table>
</div>
</t>
<t t-name="SubSectionCF">
<!-- <div class="cf-table-div">-->
<table cellspacing="0" width="100%">
<thead>
<tr>
<th colspan="6">Name</th>
<th class="amd">Cash In</th>
<th class="amd">Cash Out</th>
<th class="amd">Balance</th>
</tr>
</thead>
<tbody>
<t t-foreach="account_data" t-as="data">
<t t-if="data.id == line_id">
<t t-foreach="data.journal_lines" t-as="account_line">
<t t-set="style" t-value="'font-style: italic;'"/>
<tr data-toggle=""
t-att-data-account-id="data.id"
t-attf-data-target=".a{{data.id}}">
<td colspan="6" style="border: 0px solid black;">
<t t-esc="account_line.name"/>
</td>
<t t-if="data_currency.company_currency_position == 'before'">
<td class="amd">
<t t-esc="data_currency.company_currency_symbol"/><t t-raw="account_line.total_debit"/>
</td>
<td class="amd">
<t t-esc="data_currency.company_currency_symbol"/><t t-raw="account_line.total_credit"/>
</td>
<td class="amd">
<t t-esc="data_currency.company_currency_symbol"/><t t-raw="account_line.balance"/>
</td>
</t>
<t t-if="data_currency.company_currency_position == 'after'">
<td class="amd">
<t t-raw="account_line.total_debit"/><t t-esc="data_currency.company_currency_symbol"/>
</td>
<td class="amd">
<t t-raw="account_line.total_credit"/><t t-esc="data_currency.company_currency_symbol"/>
</td>
<td class="amd">
<t t-raw="account_line.balance"/><t t-esc="data_currency.company_currency_symbol"/>
</td>
</t>
</tr>
</t>
</t>
</t>
</tbody>
</table>
<!-- </div>-->
</t>
<t t-name="ChildSubSectionCF">
<div class="c-cf-table-div">
<table cellspacing="1" width="100%">
<thead>
<t t-foreach="account_data" t-as="acc_data">
<t t-if="acc_data.id == line_id">
<t t-foreach="acc_data.journal_lines" t-as="data">
<tr style="">
<th colspan="6"><t t-esc="data.name"/> </th>
<t t-if="data_currency.company_currency_position == 'before'">
<th class="amd" style="left: 100px;"><t t-esc="data_currency.company_currency_symbol"/><t t-esc="data.total_debit"/></th>
<th class="amd"><t t-esc="data_currency.company_currency_symbol"/><t t-esc="data.total_credit"/></th>
<th class="amd"><t t-esc="data_currency.company_currency_symbol"/><t t-esc="data.total_balance"/></th>
</t>
<t t-if="data_currency.company_currency_position == 'after'">
<th class="amd" style="left: 100px;"><t t-esc="data.total_debit"/><t t-esc="data_currency.company_currency_symbol"/></th>
<th class="amd"><t t-esc="data.total_credit"/><t t-esc="data_currency.company_currency_symbol"/></th>
<th class="amd"><t t-esc="data.total_balance"/><t t-esc="data_currency.company_currency_symbol"/></th>
</t>
</tr>
<t t-foreach="acc_data.move_lines" t-as="account_line">
<t t-if="account_line.j_id == data.id">
<tr>
<td colspan="6">
<t t-esc="account_line.move_name"/>
</td>
<t t-if="data_currency.company_currency_position == 'before'">
<td class="amd">
<t t-esc="data_currency.company_currency_symbol"/>
<t t-raw="account_line.total_debit"/>
</td>
<td class="amd">
<t t-esc="data_currency.company_currency_symbol"/>
<t t-raw="account_line.total_credit"/>
</td>
<td class="amd">
<t t-esc="data_currency.company_currency_symbol"/>
<t t-raw="account_line.balance"/>
</td>
</t>
<t t-if="data_currency.company_currency_position == 'after'">
<td class="amd">
<t t-if="account_line.total_debit==0"/>
<t t-esc="data_currency.company_currency_symbol"/>
</td>
<td class="amd">
<t t-raw="account_line.total_credit"/>
<t t-esc="data_currency.company_currency_symbol"/>
</td>
<td class="amd">
<t t-raw="account_line.balance"/>
<t t-esc="data_currency.company_currency_symbol"/>
</td>
</t>
</tr>
</t>
</t>
<tr t-attf-class="collapse a{{data.id}}">
<td colspan=""></td>
</tr>
<!-- </t>-->
</t>
</t>
</t>
</thead>
</table>
</div>
</t>
<t t-name="FilterSectionCF">
<div class="py-control-div">
<span class="cf-breadcrumb">
<li>Cash Flow Statement</li>
</span>
</div>
<div class="py-control-div">
<div class="py-cntrl-left">
<div class="py-ctrl-buttons">
<button type="button" class="btn py-btn-primary" id="pdf" action="print_pdf" style="position: relative;">Print (PDF)</button>
<button type="button" class="btn py-btn-primary" id="xlsx" action="print_xlsx" style="position: relative;">Export (XLSX)</button>
</div>
</div>
<div class="py_cntrl_right">
<div class="py-search-buttons">
<button type="button" id="filter_apply_button" class="btn py-btn-secondary" action="apply_filter" style="position: relative;">Apply</button>
<div class="py-search-btn-date">
<a type="button" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
<span class="fa fa-calendar" title="Dates" role="img" aria-label="Dates"></span>
Custom
</a>
<div class="dropdown-menu py-filters-menu" role="menu">
<div class="o_foldable_menu o_closed_menu o_account_report_search" data-filter="custom_filter_date">
<label class="custom-date" for="date_from">Start Date :</label>
<div class="form-group custom-date">
<div class="o_datepicker" aria-atomic="true" id="datepicker10" data-target-input="nearest">
<input type="text" id="date_from"></input>
<span class="o_datepicker_button"></span>
</div>
</div>
<label class="custom-date" for="date_to">End Date :</label>
<div class="form-group custom-date">
<div class="o_datepicker" aria-atomic="true" id="datepicker11" data-target-input="nearest">
<input type="text" id="date_to"></input>
<span class="o_datepicker_button"></span>
</div>
</div>
</div>
</div>
</div>
<div class="py-search-journals">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Target Moves:
</a>
<select class="dropdown-menu py-filters-menu target-moves" name="states[]" >
<option value="all">All Entries</option>
<option value="posted">Posted</option>
</select>
<span id="target_res"> </span>
</div>
<div class="py-search-reconciled">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Level:
</a>
<select class="dropdown-menu py-filters-menu level" id="level" name="states[]" multiple="multiple">
<option value="summary">Summary</option>
<option value="consolidated">Consolidated</option>
<option value="detailed">Detailed</option>
<option value="very">Very Detailed</option>
</select>
<span id="level_res"> </span>
</div>
</div>
</div>
</div>
</t>
</templates>

239
dynamic_financial_report/static/src/xml/db_lines.xml

@ -1,239 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">
<t t-name="DayBook">
<div class="container-db">
<div>
<div class="db-filter"></div>
</div>
<div class="container-db-data">
<div class="container-db-main"></div>
</div>
</div>
</t>
<t t-name="DayBookData">
<div>
<table cellspacing="0" width="100%">
<thead>
<tr>
<th colspan="6">Date</th>
<th class="text-right" >Debit</th>
<th class="text-right">Credit</th>
<th class="text-right">Balance</th>
<th></th>
</tr>
</thead>
<tbody>
<t t-foreach="account_data" t-as="account">
<t t-set="common_id" t-value=""/>
<t t-if="account_data[account]['count']">
<tr style="border: 1.5px solid black;" class="db-line"
data-toggle="collapse"
t-att-data-account-id="account_data[account]['id']"
t-attf-data-target=".a{{account_data[account]['id']}}">
<td colspan="6" style="border: 0px solid black;">
<i class="fa fa-caret-down" role="img" aria-label="Unfolded" title="Unfolded"></i>
<span>
<t t-esc="account_data[account]['date']"/>
</span>
</td>
<td class="text-right" >
<t t-raw="account_data[account]['debit']"/>
</td>
<td class="text-right">
<t t-raw="account_data[account]['credit']"/>
</td>
<td class="text-right">
<t t-raw="account_data[account]['balance']"/>
</td>
<td class="amt"></td>
<t t-set="common_id" t-value="'a'+account_data[account]['id']"/>
</tr>
</t>
<tr t-attf-class="collapse a{{account_data[account]['id']}}">
<td colspan="10">
<ul>
<t t-if="!account_data[account]['single_page']">
<t t-foreach="account_data[account]['pages']" t-as="i">
<li>
<a
t-att-data-page-number="i"
t-att-data-count="account_data[account]['count']"
t-att-data-account-id="account_data[account]['id']">
<t t-esc="i"/>
</a>
</li>
</t>
</t>
</ul>
</td>
</tr>
</t>
</tbody>
</table>
</div>
</t>
<t t-name="FilterSectiondb">
<div class="py-control-div">
<ol class="db-breadcrumb">
<li>Day Book</li>
</ol>
</div>
<div class="py-control-div">
<div class="py-cntrl-left">
<div class="py-ctrl-buttons">
<button type="button" class="btn py-btn-primary" id="pdf" action="print_pdf"
style="position: relative;">Print (PDF)</button>
<button type="button" class="btn py-btn-primary" id="xlsx" action="print_xlsx"
style="position: relative;">Export (XLSX)</button>
</div>
</div>
<div class="py_cntrl_right">
<div class="py-search-buttons">
<button type="button" id="filter_apply_button" class="btn py-btn-secondary" action="apply_filter"
style="position: relative;">Apply</button>
<div class="py-search-btn-date">
<a type="button" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
<span class="fa fa-calendar" title="Dates" role="img" aria-label="Dates"></span>
Custom
</a>
<div class="dropdown-menu py-filters-menu" role="menu">
<div class="o_foldable_menu o_closed_menu o_account_report_search"
data-filter="custom_filter_date">
<label class="custom-date" for="date_from">Start Date :</label>
<div class="form-group custom-date">
<div class="o_datepicker" aria-atomic="true" id="datepicker10"
data-target-input="nearest">
<input type="text" id="date_from"></input>
<span class="o_datepicker_button"></span>
</div>
</div>
<label class="custom-date" for="date_to">End Date :</label>
<div class="form-group custom-date">
<div class="o_datepicker" aria-atomic="true" id="datepicker11"
data-target-input="nearest">
<input type="text" id="date_to"></input>
<span class="o_datepicker_button"></span>
</div>
</div>
</div>
</div>
</div>
<div class="py-search-journals">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Journals:
</a>
<select class="dropdown-menu py-filters-menu journal" name="states[]" multiple="multiple">
<t t-foreach="filter_data.journals_list" t-as="journal">
<option t-attf-value="{{journal[0]}}">
<t t-esc="journal[1]"/>
</option>
</t>
</select>
<span id="journal_res"></span>
</div>
<div class="py-search-accounts">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Accounts:
</a>
<select class="dropdown-menu py-filters-menu account" name="states[]" multiple="multiple">
<t t-foreach="filter_data.accounts_list" t-as="account">
<option t-attf-value="{{account[0]}}">
<t t-esc="account[1]"/>
</option>
</t>
</select>
<span id="account_res"></span>
</div>
<div class="py-search-entries">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-filter"/>
Target Moves: </a>
<select id="entries"
class="dropdown-menu py-filters-menu entries"
name="states[]">
<option value="all">All Entries </option>
<option value="posted">Posted Entries</option>
</select>
<span id="target_res"></span>
</div>
</div>
</div>
</div>
</t>
<t t-name="SubSectiondb">
<div class="db-table-div">
<table class="table table-sm o_main_table"
style="border: 0px solid black;display compact;">
<thead>
<tr style="">
<th>Date</th>
<th>JRNL</th>
<th>Partner</th>
<th>Move</th>
<th>Entry Label</th>
<th class="text-right">Debit</th>
<th class="text-right">Credit</th>
<th class="text-right">Balance</th>
</tr>
</thead>
<tbody>
<t t-foreach="account_data" t-as="account_line">
<t t-set="style" t-value="''"/>
<t t-if="account_line.move_name == 'Initial Balance'">
<t t-set="style" t-value="'font-style: italic;'"/></t>
<t t-if="account_line.move_name == 'Ending Balance'">
<t t-set="style" t-value="'font-style: italic;'"/></t>
<t t-if="date_id == account_line.ldate">
<tr>
<td>
<t t-if="account_line.ldate">
<div class="dropdown dropdown-toggle">
<a data-toggle="dropdown" href="#">
<span class="caret"></span>
<span data-id="17">
<t t-esc="account_line.ldate"/>
</span>
</a>
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu">
<li>
<a class="view-move" tabindex="-1" href="#"
t-att-data-move-id="account_line.move_id">
View Source move
</a>
</li>
</ul>
</div>
</t>
</td>
<td>
<t t-esc="account_line.lcode"/>
</td>
<td>
<t t-esc="account_line.partner_name"/>
</td>
<td t-att-style="style">
<t t-esc="account_line.move_name"/>
</td>
<td t-att-style="style" >
<t t-esc="account_line.lname"/>
</td>
<td t-att-style="style" class="text-right">
<t t-raw="account_line.debit"/>
</td>
<td t-att-style="style" class="text-right">
<t t-raw="account_line.credit"/>
</td>
<td t-att-style="style" class="text-right">
<t t-raw="account_line.balance"/>
</td>
</tr>
</t>
</t>
</tbody>
</table>
</div>
</t>
</templates>

287
dynamic_financial_report/static/src/xml/partner_ledger_views.xml

@ -1,287 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">
<t t-name="PartnerLedger">
<div class="container-pl">
<div>
<div class="pl-filter"></div>
</div>
<div class="container-pl-data">
<div class="container-pl-main"></div>
</div>
</div>
</t>
<t t-name="PartnerLedgerData">
<div>
<table cellspacing="0" width="100%">
<thead>
<tr>
<th colspan="6">Partner</th>
<th class = "text-right">Debit</th>
<th class = "text-right">Credit</th>
<th class = "text-right">Balance</th>
<th></th>
</tr>
</thead>
<tbody>
<t t-foreach="account_data" t-as="account">
<t t-set="common_id" t-value=""/>
<t t-if="account_data[account]['count']">
<tr style="border: 1.5px solid black;" class="pl-line"
data-toggle="collapse"
t-att-data-account-id="account_data[account]['id']"
t-attf-data-target=".a{{account_data[account]['id']}}">
<td colspan="6" style="border: 0px solid black;">
<i class="fa fa-caret-down" role="img" aria-label="Unfolded" title="Unfolded"></i>
<span>
<t t-esc="account_data[account]['name']"/>
</span>
</td>
<td class="amt">
<t t-raw="account_data[account]['debit']"/>
</td>
<td class="amt">
<t t-raw="account_data[account]['credit']"/>
</td>
<td class="amt">
<t t-raw="account_data[account]['balance']"/>
</td>
<td class="amt"></td>
<t t-set="common_id" t-value="'a'+account_data[account]['id']"/>
</tr>
</t>
<tr t-attf-class="collapse a{{account_data[account]['id']}}">
<td colspan="10">
<ul>
<t t-if="!account_data[account]['single_page']">
<t t-foreach="account_data[account]['pages']" t-as="i">
<li>
<a
t-att-data-page-number="i"
t-att-data-count="account_data[account]['count']"
t-att-data-account-id="account_data[account]['id']">
<t t-esc="i"/>
</a>
</li>
</t>
</t>
</ul>
</td>
</tr>
</t>
</tbody>
</table>
</div>
</t>
<t t-name="FilterSectionPl">
<div class="py-control-div">
<ol class="pl-breadcrumb">
<li>Partner Ledger</li>
</ol>
</div>
<div class="py-control-div">
<div class="py-cntrl-left">
<div class="py-ctrl-buttons">
<button type="button" class="btn py-btn-primary" id="pdf" action="print_pdf" style="position: relative;">Print (PDF)</button>
<button type="button" class="btn py-btn-primary" id="xlsx" action="print_xlsx" style="position: relative;">Export (XLSX)</button>
</div>
</div>
<div class="py_cntrl_right">
<div class="py-search-buttons">
<button type="button" id="filter_apply_button" class="btn py-btn-secondary" action="apply_filter" style="position: relative;">Apply</button>
<div class="py-search-btn-date">
<a type="button" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
<span class="fa fa-calendar" title="Dates" role="img" aria-label="Dates"></span>
Custom
</a>
<div class="dropdown-menu py-filters-menu" role="menu">
<div class="o_foldable_menu o_closed_menu o_account_report_search" data-filter="custom_filter_date">
<label class="custom-date" for="date_from">Start Date :</label>
<div class="form-group custom-date">
<div class="o_datepicker" aria-atomic="true" id="datepicker10" data-target-input="nearest">
<input type="text" id="date_from"></input>
<span class="o_datepicker_button"></span>
</div>
</div>
<label class="custom-date" for="date_to">End Date :</label>
<div class="form-group custom-date">
<div class="o_datepicker" aria-atomic="true" id="datepicker11" data-target-input="nearest">
<input type="text" id="date_to"></input>
<span class="o_datepicker_button"></span>
</div>
</div>
</div>
</div>
</div>
<div class="py-search-journals">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Journals:
</a>
<select class="dropdown-menu py-filters-menu journal" name="states[]" multiple="multiple">
<t t-foreach="filter_data.journals_list" t-as="journal">
<option t-attf-value="{{journal[0]}}">
<t t-esc="journal[1]"/>
</option>
</t>
</select>
<span id="journal_res"></span>
</div>
<div class="py-search-partners">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-users"></span>
Partners:
</a>
<select class="dropdown-menu py-filters-menu partner" name="states[]" multiple="multiple">
<t t-foreach="filter_data.partners_list" t-as="partner">
<option t-attf-value="{{partner[0]}}">
<t t-esc="partner[1]"/>
</option>
</t>
</select>
<span id="partner_res"></span>
</div>
<div class="py-search-reconciled">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Reconciliation Status:
</a>
<select class="dropdown-menu py-filters-menu reconcile" name="states[]" multiple="multiple">
<option value="unreconciled">Unreconciled</option>
</select>
<span id="reconciled_res"></span>
</div>
<div class="py-search-reconciled">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Acccount Type
</a>
<select class="dropdown-menu py-filters-menu type" name="states[]" multiple="multiple">
<option value="receivable">Receivable</option>
<option value="payable">Payable</option>
</select>
<span id="type_res"></span>
</div>
<div class="py-search-categories">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-filter"></span>
Partner tag:
</a>
<select class="dropdown-menu py-filters-menu category" name="states[]" multiple="multiple">
<t t-foreach="filter_data.category_list" t-as="category">
<option t-attf-value="{{category[0]}}">
<t t-esc="category[1]"/>
</option>
</t>
</select>
<span id="category_res"></span>
</div>
<div class="py-search-accounts">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Accounts:
</a>
<select class="dropdown-menu py-filters-menu account" name="states[]" multiple="multiple">
<t t-foreach="filter_data.accounts_list" t-as="account">
<option t-attf-value="{{account[0]}}">
<t t-esc="account[1]"/>
</option>
</t>
</select>
<span id="account_res"></span>
</div>
<div class="py-search-targetmoves">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Target Moves:
</a>
<select class="dropdown-menu py-filters-menu target-moves" name="states[]">
<option value="all_entries">All Entries</option>
<option value="posted_only">Posted Entries</option>
</select>
<span id="target_res"></span>
</div>
</div>
</div>
</div>
</t>
<t t-name="SubSectionPl">
<div class="pl-table-div">
<table class="table table-sm o_main_table"
style="border: 0px solid black;display compact;">
<thead>
<tr style="">
<th>Date</th>
<th>JRNL</th>
<th>Account</th>
<th>Move</th>
<th>Entry Label</th>
<th class="text-right">Debit</th>
<th class="text-right">Credit</th>
<th class="text-right">Balance</th>
</tr>
</thead>
<tbody>
<t t-foreach="account_data" t-as="account_line">
<t t-set="style" t-value="''"/>
<t t-if="account_line.move_name == 'Initial Balance'">
<t t-set="style" t-value="'font-style: italic;'"/></t>
<t t-if="account_line.move_name == 'Ending Balance'">
<t t-set="style" t-value="'font-style: italic;'"/></t>
<tr>
<td>
<t t-if="account_line.ldate">
<div class="dropdown dropdown-toggle">
<a data-toggle="dropdown" href="#">
<span class="caret"></span>
<span data-id="17">
<t t-esc="account_line.ldate"/>
</span>
</a>
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu">
<li>
<a class="view-move" tabindex="-1" href="#"
t-att-data-move-id="account_line.move_id">
View Source move
</a>
</li>
</ul>
</div>
</t>
</td>
<td>
<t t-esc="account_line.lcode"/>
</td>
<td>
<t t-esc="account_line.account_name"/>(<t t-esc="account_line.account_code"/>)
</td>
<td t-att-style="style">
<t t-esc="account_line.move_name"/>
</td>
<td t-att-style="style">
<t t-esc="account_line.lname"/>
</td>
<td t-att-style="style" class="text-right" >
<t t-raw="account_line.debit" style="text-align:right"/>
</td>
<td t-att-style="style" class="text-right">
<t t-raw="account_line.credit"/>
</td>
<td t-att-style="style" class="text-right">
<t t-raw="account_line.balance"/>
</td>
</tr>
</t>
</tbody>
</table>
</div>
</t>
</templates>

246
dynamic_financial_report/static/src/xml/profit_loss_template_views.xml

@ -1,246 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">
<t t-name="ProfitAndLoss">
<div class="container-pal">
<div>
<div class="pal-filter"></div>
</div>
<div class="container-pal-data">
<div class="container-pal-main"></div>
</div>
</div>
</t>
<t t-name="ProfitAndLossData">
<div>
<table cellspacing="0" width="100%">
<thead>
<tr>
<th colspan="6" style="padding-top: 5px;"> </th>
<th style="text-align: right;padding-right: 50px; padding-top: 15px;">Debit</th>
<th style="text-align: right;padding-right: 50px; padding-top: 15px;">Credit</th>
<th style="text-align: right;padding-right: 50px; padding-top: 15px;">Balance</th>
<th></th>
</tr>
</thead>
<tbody>
<tr t-foreach="report_lines" t-as="a" style="border-bottom: double;">
<t t-if="a['level'] != 0">
<t t-if="a['code']">
<t t-foreach="account_data" t-as="account">
<t t-set="common_id" t-value=""/>
<t t-if="account_data[account]['count']">
<t t-if="account_data[account]['code'] == a['code']">
<tr style="border-bottom: 1px solid black;" class="pal-line"
data-toggle="collapse"
t-att-data-account-id="account_data[account]['id']"
t-attf-data-target=".a{{account_data[account]['id']}}">
<td colspan="6" style="border: 0px solid black; padding-left: 50px;">
<span>
<t t-esc="account_data[account]['code']"/>
-
<t t-esc="account_data[account]['name']"/>
</span>
<div class="py-search-btn-date">
<a type="button" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
</a>
<div class="dropdown-menu " role="menu">
<div class="o_foldable_menu o_closed_menu " >
<div class="form-group ">
<div class="" aria-atomic="true" id="" data-target-input="">
<li role="presentation">
<a role="menuitem" t-att-data-account-id="account_data[account]['id']" class="open-gl" >View General Ledger</a>
</li>
</div>
</div>
</div>
</div>
</div>
</td>
<td class="amt" style="text-align: right;padding-right: 50px;">
<t t-raw="account_data[account]['debit']"/>
</td>
<td class="amt" style="text-align: right;padding-right: 50px;">
<t t-raw="account_data[account]['credit']"/>
</td>
<td class="amt" style="text-align: right;padding-right: 50px;">
<t t-raw="account_data[account]['balance']"/>
</td>
<td class="amt"></td>
<t t-set="common_id" t-value="'a'+account_data[account]['id']"/>
</tr>
</t>
</t>
</t>
</t>
<t t-else="">
<t t-set="style" t-value="'padding: 5px;padding-left: 25px;'"/>
<t t-set="fr_head" t-value="'border-bottom: double;'"/>
<t t-set="fr_padding" t-value="'padding-top: 5px; text-align: right;padding-right: 50px;'"/>
<t t-if="a['level'] == 1">
<t t-set="style" t-value="'padding: 5px;padding-left: 15px;'"/>
</t>
<t t-if="a['level'] &gt; 2">
<t t-set="style" t-value="'padding: 5px;padding-left: 50px;'"/>
<t t-set="fr_head" t-value="'border-bottom: 1px solid black;'"/>
</t>
<t t-if="a['level'] &lt; 3">
<t t-set="style" t-value="'padding: 5px;padding-left: 15px;padding-top: 25px;'"/>
<t t-set="fr_padding" t-value="'padding-top: 25px; text-align: right;padding-right: 50px;'"/>
</t>
<tr t-att-style="fr_head">
<th colspan="6" t-att-style="style">
<t t-esc="a['name']"/>
</th>
<td t-att-style="fr_padding"><t t-esc="a['m_debit']"/></td>
<td t-att-style="fr_padding"><t t-esc="a['m_credit']" t-att-style="style"/></td>
<td t-att-style="fr_padding"><t t-esc="a['m_balance']" t-att-style="style"/></td>
</tr>
</t>
</t>
</tr>
</tbody>
</table>
</div>
</t>
<t t-name="FilterSectionPAL">
<div class="py-control-div">
<ol class="pal-breadcrumb">
<li>Profit and Loss Report</li>
</ol>
</div>
<div class="py-control-div">
<div class="py-cntrl-left">
<div class="py-ctrl-buttons">
<button type="button" class="btn py-btn-primary" id="pdf" action="print_pdf" style="position: relative;">Print (PDF)</button>
<button type="button" class="btn py-btn-primary" id="xlsx" action="print_xlsx" style="position: relative;">Export (XLSX)</button>
</div>
</div>
<div class="py_cntrl_right">
<div class="py-search-buttons">
<button type="button" id="filter_apply_button" class="btn py-btn-secondary" action="apply_filter" style="position: relative;">Apply</button>
<div class="py-search-btn-date">
<a type="button" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
<span class="fa fa-calendar" title="Dates" role="img" aria-label="Dates"></span>
Custom
</a>
<div class="dropdown-menu py-filters-menu" role="menu">
<div class="o_foldable_menu o_closed_menu o_account_report_search" data-filter="custom_filter_date">
<label class="custom-date" for="date_from">Start Date :</label>
<div class="form-group custom-date">
<div class="o_datepicker" aria-atomic="true" id="datepicker10" data-target-input="nearest">
<input type="text" id="date_from"></input>
<span class="o_datepicker_button"></span>
</div>
</div>
<label class="custom-date" for="date_to">End Date :</label>
<div class="form-group custom-date">
<div class="o_datepicker" aria-atomic="true" id="datepicker11" data-target-input="nearest">
<input type="text" id="date_to"></input>
<span class="o_datepicker_button"></span>
</div>
</div>
</div>
</div>
</div>
<div class="py-search-journals">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Journals:
</a>
<select class="dropdown-menu py-filters-menu journal" name="states[]" multiple="multiple">
<b role="menuitem" class="dropdown-item-text">
<t t-esc="filter_data.company_name"/>
</b>
<div role="separator" class="dropdown-divider"></div>
<t t-foreach="filter_data.journals_list" t-as="journal">
<option t-attf-value="{{journal[0]}}">
<t t-esc="journal[1]"/>
</option>
</t>
</select>
<span id="journal_res"></span>
</div>
<div class="py-search-accounts">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Accounts:
</a>
<select class="dropdown-menu py-filters-menu account" name="states[]" multiple="multiple">
<t t-foreach="filter_data.accounts_list" t-as="account">
<option t-attf-value="{{account[0]}}">
<t t-esc="account[1]"/>
</option>
</t>
</select>
<span id="acc_res"></span>
</div>
<div class="py-search-accounts-tag">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Account Tags:
</a>
<select class="dropdown-menu py-filters-menu account-tag" name="states[]" multiple="multiple">
<t t-foreach="filter_data.account_tag_list" t-as="account_tag">
<option t-attf-value="{{account_tag[0]}}">
<t t-esc="account_tag[1]"/>
</option>
</t>
</select>
<span id="acc_tag_res"></span>
</div>
<div class="py-search-analytics">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Analytic:
</a>
<select class="dropdown-menu py-filters-menu analytic" name="states[]" multiple="multiple">
<t t-foreach="filter_data.analytics_list" t-as="analytic">
<option t-attf-value="{{analytic[0]}}">
<t t-esc="analytic[1]"/>
</option>
</t>
</select>
<span id="analic_res"></span>
</div>
<div class="py-search-analytic-tag">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Analytic Tags:
</a>
<select class="dropdown-menu py-filters-menu analytic-tag" name="states[]" multiple="multiple">
<t t-foreach="filter_data.analytic_tag_list" t-as="analytic_tag">
<option t-attf-value="{{analytic_tag[0]}}">
<t t-esc="analytic_tag[1]"/>
</option>
</t>
</select>
<span id="analic_tag_res"></span>
</div>
<div class="py-search-entries">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-filter"></span>
Options:
</a>
<select id="entries" class="dropdown-menu py-filters-menu entries">
<option value="all">All Entries </option>
<option value="posted">Posted Entries</option>
</select>
<span id="post_res"></span>
</div>
</div>
</div>
</div>
</t>
</templates>

190
dynamic_financial_report/static/src/xml/tb_view.xml

@ -1,190 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">
<t t-name="TrialBalance">
<div class="container-tb">
<div>
<div class="tb-filter"></div>
</div>
<div class="container-tb-data">
<div class="container-tb-main"></div>
</div>
</div>
</t>
<t t-name="TrialBalanceData">
<div>
<table cellspacing="0" width="100%">
<thead>
<tr>
<th colspan="6">Account</th>
<t t-if="filter['date_from']">
<th class="amt">Initial Debit</th>
<th class="amt">Initial Credit</th>
</t>
<th class="amt">Debit</th>
<th class="amt">Credit</th>
<th></th>
</tr>
</thead>
<tbody>
<t t-foreach="account_data" t-as="account">
<t t-set="common_id" t-value=""/>
<t t-if="account_data[account]['count']">
<tr style="border: 1.5px solid black;" class="gl-line"
data-toggle="collapse"
t-att-data-account-id="account_data[account]['id']"
t-attf-data-target=".a{{account_data[account]['id']}}">
<td colspan="6" style="border: 0px solid black;">
<span>
<t t-esc="account_data[account]['code']"/>
-
<t t-esc="account_data[account]['name']"/>
</span>
<div class="py-search-btn-date">
<a type="button" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
</a>
<div class="dropdown-menu " role="menu">
<div class="o_foldable_menu o_closed_menu " >
<div class="form-group ">
<div class="" aria-atomic="true" id="" data-target-input="">
<li role="presentation">
<a role="menuitem" t-att-data-account-id="account_data[account]['id']" class="open-gl" >View General Ledger</a>
</li>
</div>
</div>
</div>
</div>
</div>
</td>
<t t-if="filter['date_from']">
<t t-foreach="account_data[account]['lines']" t-as="line">
<t t-if="(line['initial_bal'] == true and line['move_name'] == 'Initial Balance')">
<td class="amt">
<t t-raw="line['debit']"/>
</td>
<td class="amt">
<t t-raw="line['credit']"/>
</td>
</t>
</t>
</t>
<td class="amt">
<t t-raw="account_data[account]['debit']"/>
</td>
<td class="amt">
<t t-raw="account_data[account]['credit']"/>
</td>
<t t-set="common_id" t-value="'a'+account_data[account]['id']"/>
</tr>
</t>
</t>
<td colspan="6" style="" class=""><strong>Total</strong></td>
<t t-if="filter['date_from']">
<td class="amt" style=""><strong></strong></td>
<td class="amt" style=""><strong></strong></td>
</t>
<td class="amt" style=""><strong><t t-esc="total_b['debit']"/></strong></td>
<td class="amt" style=""><strong><t t-esc="total_b['credit']"/></strong></td>
</tbody>
</table>
</div>
</t>
<t t-name="FilterSectionTB">
<div class="py-control-div">
<ol class="tl-breadcrumb">
<li>Trial Balance</li>
</ol>
</div>
<div class="py-control-div">
<div class="py-cntrl-left">
<div class="py-ctrl-buttons">
<button type="button" class="btn py-btn-primary" id="pdf" style="position: relative;">Print (PDF)</button>
<button type="button" class="btn py-btn-primary" id="xlsx" style="position: relative;">Export (XLSX)</button>
</div>
</div>
<div class="py_cntrl_right">
<div class="py-search-buttons">
<button type="button" id="filter_apply_button" class="btn py-btn-secondary" style="position: relative;">Apply</button>
<div class="py-search-btn-date">
<a type="button" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
<span class="fa fa-calendar" title="Dates" role="img" aria-label="Dates"></span>
Date Range
</a>
<div class="dropdown-menu py-filters-menu" role="menu">
<div class="o_foldable_menu o_closed_menu o_account_report_search" data-filter="custom_filter_date">
<label class="custom-date" for="date_from">Start Date :</label>
<div class="form-group custom-date">
<div class="o_datepicker" aria-atomic="true" id="datepicker10" data-target-input="nearest">
<input type="text" id="date_from"></input>
<span class="o_datepicker_button"></span>
</div>
</div>
<label class="custom-date" for="date_to">End Date :</label>
<div class="form-group custom-date">
<div class="o_datepicker" aria-atomic="true" id="datepicker11" data-target-input="nearest">
<input type="text" id="date_to"></input>
<span class="o_datepicker_button"></span>
</div>
</div>
</div>
</div>
</div>
<div class="py-search-journals">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Journals:
</a>
<select class="dropdown-menu py-filters-menu journal" name="states[]" multiple="multiple">
<b role="menuitem" class="dropdown-item-text">
<t t-esc="filter_data.company_name"/>
</b>
<div role="separator" class="dropdown-divider"></div>
<t t-foreach="filter_data.journals_list" t-as="journal">
<option t-attf-value="{{journal[0]}}">
<t t-esc="journal[1]"/>
</option>
</t>
</select>
<span id="journal_res"></span>
</div>
<div class="py-search-analytics">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Analytic:
</a>
<select class="dropdown-menu py-filters-menu analytic" name="states[]" multiple="multiple">
<t t-foreach="filter_data.analytics_list" t-as="analytic">
<option t-attf-value="{{analytic[0]}}">
<t t-esc="analytic[1]"/>
</option>
</t>
</select>
<span id="analic_res"></span>
</div>
<div class="py-search-entries">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-filter"></span>
Options:
</a>
<select id="entries" class="dropdown-menu py-filters-menu entries" name="states[]">
<option value="all">All Entries </option>
<option value="posted">Posted Entries</option>
</select>
<span id="post_res"></span>
</div>
</div>
</div>
</div>
</t>
</templates>

282
dynamic_financial_report/static/src/xml/views.xml

@ -1,282 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">
<t t-name="GeneralLedger">
<div class="container-gl">
<div>
<div class="gl-filter"></div>
</div>
<div class="container-gl-data">
<div class="container-gl-main"></div>
</div>
</div>
</t>
<t t-name="GeneralLedgerData">
<div>
<table cellspacing="0" width="100%">
<thead>
<tr>
<th colspan="6">Account</th>
<th class="amt">Debit</th>
<th class="amt">Credit</th>
<th class="amt">Balance</th>
<th></th>
</tr>
</thead>
<tbody>
<t t-foreach="account_data" t-as="account">
<t t-set="common_id" t-value=""/>
<t t-if="account_data[account]['count']">
<tr style="border: 1.5px solid black;" class="gl-line"
data-toggle="collapse"
t-att-data-account-id="account_data[account]['id']"
t-attf-data-target=".a{{account_data[account]['id']}}">
<td colspan="6" style="border: 0px solid black;">
<i class="fa fa-caret-down" role="img" aria-label="Unfolded" title="Unfolded"></i>
<span>
<t t-esc="account_data[account]['code']"/>
-
<t t-esc="account_data[account]['name']"/>
</span>
</td>
<td class="amt">
<t t-raw="account_data[account]['debit']"/>
</td>
<td class="amt">
<t t-raw="account_data[account]['credit']"/>
</td>
<td class="amt">
<t t-raw="account_data[account]['balance']"/>
</td>
<td class="amt"></td>
<t t-set="common_id" t-value="'a'+account_data[account]['id']"/>
</tr>
</t>
<tr t-attf-class="collapse a{{account_data[account]['id']}}">
<td colspan="10">
<ul>
<t t-if="!account_data[account]['single_page']">
<t t-foreach="account_data[account]['pages']" t-as="i">
<li>
<a
t-att-data-page-number="i"
t-att-data-count="account_data[account]['count']"
t-att-data-account-id="account_data[account]['id']">
<t t-esc="i"/>
</a>
</li>
</t>
</t>
</ul>
</td>
</tr>
</t>
</tbody>
</table>
</div>
</t>
<t t-name="FilterSection">
<div class="py-control-div">
<ol class="gl-breadcrumb">
<li>General Ledger</li>
</ol>
</div>
<div class="py-control-div">
<div class="py-cntrl-left">
<div class="py-ctrl-buttons">
<button type="button" class="btn py-btn-primary" id="pdf" action="print_pdf" style="position: relative;">Print (PDF)</button>
<button type="button" class="btn py-btn-primary" id="xlsx" action="print_xlsx" style="position: relative;">Export (XLSX)</button>
</div>
</div>
<div class="py_cntrl_right">
<div class="py-search-buttons">
<button type="button" id="filter_apply_button" class="btn py-btn-secondary" action="apply_filter" style="position: relative;">Apply</button>
<div class="py-search-btn-date">
<a type="button" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
<span class="fa fa-calendar" title="Dates" role="img" aria-label="Dates"></span>
Custom
</a>
<div class="dropdown-menu py-filters-menu" role="menu">
<div class="o_foldable_menu o_closed_menu o_account_report_search" data-filter="custom_filter_date">
<label class="custom-date" for="date_from">Start Date :</label>
<div class="form-group custom-date">
<div class="o_datepicker" aria-atomic="true" id="datepicker10" data-target-input="nearest">
<input type="text" id="date_from"></input>
<span class="o_datepicker_button"></span>
</div>
</div>
<label class="custom-date" for="date_to">End Date :</label>
<div class="form-group custom-date">
<div class="o_datepicker" aria-atomic="true" id="datepicker11" data-target-input="nearest">
<input type="text" id="date_to"></input>
<span class="o_datepicker_button"></span>
</div>
</div>
</div>
</div>
</div>
<div class="py-search-journals">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Journals:
</a>
<select class="dropdown-menu py-filters-menu journal" name="states[]" multiple="multiple">
<b role="menuitem" class="dropdown-item-text">
<t t-esc="filter_data.company_name"/>
</b>
<div role="separator" class="dropdown-divider"></div>
<t t-foreach="filter_data.journals_list" t-as="journal">
<option t-attf-value="{{journal[0]}}">
<t t-esc="journal[1]"/>
</option>
</t>
</select>
<span id="journal_res"></span>
</div>
<div class="py-search-accounts">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Accounts:
</a>
<select class="dropdown-menu py-filters-menu account" name="states[]" multiple="multiple">
<t t-foreach="filter_data.accounts_list" t-as="account">
<option t-attf-value="{{account[0]}}">
<t t-esc="account[1]"/>
</option>
</t>
</select>
<span id="acc_res"></span>
</div>
<div class="py-search-accounts-tag">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Account Tags:
</a>
<select class="dropdown-menu py-filters-menu account-tag" name="states[]" multiple="multiple">
<t t-foreach="filter_data.account_tag_list" t-as="account_tag">
<option t-attf-value="{{account_tag[0]}}">
<t t-esc="account_tag[1]"/>
</option>
</t>
</select>
<span id="acc_tag_res"></span>
</div>
<div class="py-search-analytics">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Analytic:
</a>
<select class="dropdown-menu py-filters-menu analytic" name="states[]" multiple="multiple">
<t t-foreach="filter_data.analytics_list" t-as="analytic">
<option t-attf-value="{{analytic[0]}}">
<t t-esc="analytic[1]"/>
</option>
</t>
</select>
<span id="analic_res"></span>
</div>
<div class="py-search-analytic-tag">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-book"></span>
Analytic Tags:
</a>
<select class="dropdown-menu py-filters-menu analytic-tag" name="states[]" multiple="multiple">
<t t-foreach="filter_data.analytic_tag_list" t-as="analytic_tag">
<option t-attf-value="{{analytic_tag[0]}}">
<t t-esc="analytic_tag[1]"/>
</option>
</t>
</select>
<span id="analic_tag_res"></span>
</div>
<div class="py-search-entries">
<a type="button" class="dropdown-toggle" data-toggle="dropdown">
<span class="fa fa-filter"></span>
Options:
</a>
<select id="entries" class="dropdown-menu py-filters-menu entries">
<option value="all">All Entries </option>
<option value="posted">Posted Entries</option>
</select>
<span id="post_res"></span>
</div>
</div>
</div>
</div>
</t>
<t t-name="SubSection">
<div class="gl-table-div">
<table class="table table-sm o_main_table"
style="border: 0px solid black;display compact;">
<thead>
<tr style="">
<th>Date</th>
<th>JRNL</th>
<th>Partner</th>
<th>Move</th>
<th>Entry Label</th>
<th class="amt">Debit</th>
<th class="amt">Credit</th>
<th class="amt">Balance</th>
</tr>
</thead>
<tbody>
<t t-foreach="account_data" t-as="account_line">
<t t-set="style" t-value="''"/>
<t t-if="account_line.move_name == 'Initial Balance'">
<t t-set="style" t-value="'font-style: italic;'"/></t>
<t t-if="account_line.move_name == 'Ending Balance'">
<t t-set="style" t-value="'font-style: italic;'"/></t>
<tr>
<td>
<t t-if="account_line.ldate">
<div class="dropdown dropdown-toggle">
<a data-toggle="dropdown" href="#">
<span class="caret"></span>
<span data-id="17">
<t t-esc="account_line.ldate"/>
</span>
</a>
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu">
<li>
<a class="view-move" tabindex="-1" href="#"
t-att-data-move-id="account_line.move_id">
View Source move
</a>
</li>
</ul>
</div>
</t>
</td>
<td>
<t t-esc="account_line.lcode"/>
</td>
<td>
<t t-esc="account_line.partner_name"/>
</td>
<td t-att-style="style">
<t t-esc="account_line.move_name"/>
</td>
<td t-att-style="style">
<t t-esc="account_line.lname"/>
</td>
<td t-att-style="style" class="amt">
<t t-raw="account_line.debit"/>
</td>
<td t-att-style="style" class="amt">
<t t-raw="account_line.credit"/>
</td>
<td t-att-style="style" class="amt">
<t t-raw="account_line.balance"/>
</td>
</tr>
</t>
</tbody>
</table>
</div>
</t>
</templates>

211
dynamic_financial_report/views/al_template.xml

@ -1,211 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="ageing_partner">
<t t-call="web.html_container">
<t t-call="web.internal_layout">
<div class="page">
<div class="oe_structure"/>
<h3><span t-esc="res_company.name"/>: Partner Ageing
</h3>
<br></br>
<div>
<div class="row mt32">
<div class="col-3">
<strong>As On Date:</strong>
<p t-esc="report_data[0]['as_on_date']"/>
</div>
<div class="col-3">
<strong>Partners: </strong>
<t t-foreach="report_data[0]['partners']"
t-as="data">
<t t-esc="data"/>
</t>
</div>
<div class="col-3">
<strong>Partner Tag: </strong>
<t t-foreach="report_data[0]['categories']"
t-as="data">
<t t-esc="data"/>
</t>
</div>
</div>
<br></br>
<div class="row mb32">
<div class="col-3">
<strong>Account Type:</strong>
<p t-esc="report_data[0]['type']"/>
</div>
<div class="col-3">
<strong>Partner Type:</strong>
<p t-esc="report_data[0]['partner_type']"/>
</div>
<div class="col-3">
<strong>Target Moves:</strong>
<p t-esc="report_data[0]['target_moves']"/>
</div>
</div>
<table class="table table-sm table-reports">
<thead>
<tr class="text-center">
<th style="text-align:left;" >Entry Label</th>
<th style="text-align:left;" >Due Date</th>
<th style="text-align:left;" >Journal</th>
<th style="text-align:left;" >Account</th>
<th style="text-align:right;" colspan="1">Not Due</th>
<th style="text-align:right;" colspan="1">0 - 20</th>
<th style="text-align:right;" colspan="1">21 - 40</th>
<th style="text-align:right;" colspan="1">41 - 60</th>
<th style="text-align:right;" colspan="1">61 - 80</th>
<th style="text-align:right;" colspan="2">81 - 100</th>
<th style="text-align:right;" colspan="2">100 +</th>
</tr>
</thead>
<tbody>
<t t-foreach="account_data" t-as="line">
<t t-if="account_data[line]['count']">
<tr style="border-bottom: 2px solid black;">
<td colspan="4">
<span style="color: white;" t-esc="'..'"/>
<strong>
<span t-esc="account_data[line]['partner_name']"/>
</strong>
</td>
<td class="text-right">
<strong>
<span t-esc="account_data[line]['Not']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</strong>
</td>
<td class="text-right">
<strong>
<span t-esc="account_data[line]['value_20']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</strong>
</td>
<td class="text-right">
<strong>
<span t-esc="account_data[line]['2140']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</strong>
</td>
<td class="text-right">
<strong>
<span t-esc="account_data[line]['4160']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</strong>
</td>
<td class="text-right">
<strong>
<span t-esc="account_data[line]['6180']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</strong>
</td>
<td class="text-right" colspan="2">
<strong>
<span t-esc="account_data[line]['81100']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</strong>
</td>
<td class="text-right">
<strong>
<span t-esc="account_data[line]['100']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</strong>
</td>
</tr>
<t t-foreach="account_data[line]['partner_move_lines'][2]" t-as="sub_line">
<tr>
<td style="text-align:left;">
<t t-esc="sub_line.get('move_name')"/>
</td >
<td style="text-align:left;">
<t t-esc="sub_line.get('date_maturity')"/>
</td>
<td style="text-align:left;">
<t t-esc="sub_line.get('journal_name')"/>
</td>
<td colspan="1" style="text-align:left;">
<t t-esc="sub_line.get('account_code')"/>
</td>
<td colspan="1" style="text-align:right;">
<t t-esc="sub_line.get('range_0')"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td colspan="1" style="text-align:right;">
<t t-esc="sub_line.get('range_1')"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td colspan="1" style="text-align:right;">
<t t-esc="sub_line.get('range_2')"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td colspan="1" style="text-align:right;">
<t t-esc="sub_line.get('range_3')"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td colspan="1" style="text-align:right;">
<t t-esc="sub_line.get('range_4')"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td colspan="2" style="text-align:right;">
<t t-esc="sub_line.get('range_5')"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td colspan="2" style="text-align:right;">
<t t-esc="sub_line.get('range_5')"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
</tr>
</t>
</t>
</t>
</tbody>
</table>
</div>
<br></br>
</div>
</t>
</t>
</template>
<report id="action_print_ageing_partner"
model="dynamic.ageing.partner"
report_type="qweb-pdf"
menu="False"
string="Partner Ageing"
name="dynamic_financial_report.ageing_partner"
file="dynamic_financial_report.ageing_partner"
/>
</odoo>

194
dynamic_financial_report/views/bank_book_pdf_template.xml

@ -1,194 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="dynamic_financial_report.bank_book">
<t t-call="web.html_container">
<t t-call="web.internal_layout">
<div class="page">
<div class="oe_structure"/>
<h3>
<span t-esc="res_company.name"/>
: Bank Book
</h3>
<div>
<span t-if="Filters.get('date_from')">
<strong>From:</strong>
<t t-esc="Filters['date_from']"/>
</span>
<span t-if="Filters.get('date_to')">
<strong>To:</strong>
<t t-esc="Filters['date_to']"/>
</span>
<div style="width:100%;">
<div style="text-align:centre;" class="row">
<div class="col-2">
<strong>Journals:</strong>
<t t-foreach="Filters['journals']"
t-as="ps">
<li>
<t t-esc="ps"/>
</li>
</t>
</div>
<div class="col-2">
<strong>Analytic:</strong>
<t t-foreach="Filters['analytics']"
t-as="ps">
<li>
<t t-esc="ps"/>
</li>
</t>
</div>
<div class="col-2">
<strong>Analytic Tag:</strong>
<t t-foreach="Filters['analytic_tags']"
t-as="ps">
<li>
<t t-esc="ps"/>
</li>
</t>
</div>
<div class="col-2">
<strong>Accounts:</strong>
<t t-foreach="Filters['accounts']"
t-as="ps">
<li>
<t t-esc="ps"/>
</li>
</t>
</div>
<div class="col-2">
<strong>Account Tags:</strong>
<t t-foreach="Filters['account_tags']"
t-as="ps">
<li>
<t t-esc="ps"/>
</li>
</t>
</div>
<div class="col-2">
<strong>Entries:</strong>
<!-- <t t-foreach="Filters['journals']" t-as="ps"> -->
<li>
<t t-esc="Filters['entries']"/>
</li>
<!-- </t> -->
</div>
</div>
</div>
<br/>
<table>
<thead>
<tr class="text-center">
<th style="text-align:left;">Date</th>
<th style="text-align:left;">Journal
</th>
<th style="text-align:left;">Partner
</th>
<th style="text-align:left;">Move</th>
<th style="text-align:left;">Reference
</th>
<th style="text-align:right;padding-bottom:10px;">
Debit
</th>
<th style="text-align:right">Credit</th>
<th style="text-align:right">Balance
</th>
</tr>
</thead>
<t t-foreach="account_data" t-as="line">
<t t-if="account_data[line]['count']">
<tr>
<td colspan="5">
<span style="color: white;"
t-esc="'..'"/>
<span t-esc="account_data[line]['name']"/>
</td>
<td class="text-right">
<span t-esc="account_data[line]['debit']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="account_data[line]['credit']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="account_data[line]['balance']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
</tr>
<t t-foreach="account_data[line]['lines']"
t-as="sub_line">
<t t-if="sub_line['initial_bal']">
<tr>
<td colspan="5"
class="text-right">
<span>Initial Balance
</span>
</td>
<td class="text-right">
<span t-esc="sub_line['debit']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="sub_line['credit']"
t-options="{'widgetaccount_data': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="sub_line['balance']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
</tr>
</t>
<t t-if="not sub_line['initial_bal'] and not sub_line['ending_bal']">
<tr>
<td>
<t t-esc="sub_line.get('ldate')"
t-options="{'widget': 'date'}"/>
</td>
<td>
<t t-esc="sub_line.get('lcode')"/>
</td>
<td>
<t t-esc="sub_line.get('partner_name')"/>
</td>
<td>
<t t-esc="sub_line.get('move_name')"/>
</td>
<td style="width:30%;">
<t t-esc="sub_line.get('lname')"/>
</td>
<td class="text-right">
<t t-esc="sub_line.get('debit')"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<t t-esc="sub_line.get('credit')"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<t t-esc="sub_line.get('balance')"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
</tr>
</t>
</t>
</t>
</t>
</table>
</div>
<br/>
</div>
</t>
</t>
</template>
<report id="action_print_bank_book"
model="dynamic.bank.book"
report_type="qweb-pdf"
menu="False"
string="Bank Book"
name="dynamic_financial_report.bank_book"
file="dynamic_financial_report.bank_book"
/>
</odoo>

194
dynamic_financial_report/views/cash_book_pdf_template.xml

@ -1,194 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="dynamic_financial_report.cash_book">
<t t-call="web.html_container">
<t t-call="web.internal_layout">
<div class="page">
<div class="oe_structure"/>
<h3>
<span t-esc="res_company.name"/>
: Cash Book
</h3>
<div>
<span t-if="Filters.get('date_from')">
<strong>From:</strong>
<t t-esc="Filters['date_from']"/>
</span>
<span t-if="Filters.get('date_to')">
<strong>To:</strong>
<t t-esc="Filters['date_to']"/>
</span>
<div style="width:100%;">
<div style="text-align:centre;" class="row">
<div class="col-2">
<strong>Journals:</strong>
<t t-foreach="Filters['journals']"
t-as="ps">
<li>
<t t-esc="ps"/>
</li>
</t>
</div>
<div class="col-2">
<strong>Analytic:</strong>
<t t-foreach="Filters['analytics']"
t-as="ps">
<li>
<t t-esc="ps"/>
</li>
</t>
</div>
<div class="col-2">
<strong>Analytic Tag:</strong>
<t t-foreach="Filters['analytic_tags']"
t-as="ps">
<li>
<t t-esc="ps"/>
</li>
</t>
</div>
<div class="col-2">
<strong>Accounts:</strong>
<t t-foreach="Filters['accounts']"
t-as="ps">
<li>
<t t-esc="ps"/>
</li>
</t>
</div>
<div class="col-2">
<strong>Account Tags:</strong>
<t t-foreach="Filters['account_tags']"
t-as="ps">
<li>
<t t-esc="ps"/>
</li>
</t>
</div>
<div class="col-2">
<strong>Entries:</strong>
<!-- <t t-foreach="Filters['journals']" t-as="ps"> -->
<li>
<t t-esc="Filters['entries']"/>
</li>
<!-- </t> -->
</div>
</div>
</div>
<br/>
<table>
<thead>
<tr class="text-center">
<th style="text-align:left;">Date</th>
<th style="text-align:left;">Journal
</th>
<th style="text-align:left;">Partner
</th>
<th style="text-align:left;">Move</th>
<th style="text-align:left;">Reference
</th>
<th style="text-align:right;padding-bottom:10px;">
Debit
</th>
<th style="text-align:right">Credit</th>
<th style="text-align:right">Balance
</th>
</tr>
</thead>
<t t-foreach="account_data" t-as="line">
<t t-if="account_data[line]['count']">
<tr>
<td colspan="5">
<span style="color: white;"
t-esc="'..'"/>
<span t-esc="account_data[line]['name']"/>
</td>
<td class="text-right">
<span t-esc="account_data[line]['debit']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="account_data[line]['credit']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="account_data[line]['balance']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
</tr>
<t t-foreach="account_data[line]['lines']"
t-as="sub_line">
<t t-if="sub_line['initial_bal']">
<tr>
<td colspan="5"
class="text-right">
<span>Initial Balance
</span>
</td>
<td class="text-right">
<span t-esc="sub_line['debit']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="sub_line['credit']"
t-options="{'widgetaccount_data': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="sub_line['balance']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
</tr>
</t>
<t t-if="not sub_line['initial_bal'] and not sub_line['ending_bal']">
<tr>
<td>
<t t-esc="sub_line.get('ldate')"
t-options="{'widget': 'date'}"/>
</td>
<td>
<t t-esc="sub_line.get('lcode')"/>
</td>
<td>
<t t-esc="sub_line.get('partner_name')"/>
</td>
<td>
<t t-esc="sub_line.get('move_name')"/>
</td>
<td style="width:30%;">
<t t-esc="sub_line.get('lname')"/>
</td>
<td class="text-right">
<t t-esc="sub_line.get('debit')"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<t t-esc="sub_line.get('credit')"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<t t-esc="sub_line.get('balance')"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
</tr>
</t>
</t>
</t>
</t>
</table>
</div>
<br/>
</div>
</t>
</t>
</template>
<report id="action_print_cash_book"
model="dynamic.bank.book"
report_type="qweb-pdf"
menu="False"
string="Cash Book"
name="dynamic_financial_report.cash_book"
file="dynamic_financial_report.cash_book"
/>
</odoo>

254
dynamic_financial_report/views/cashfl.xml

@ -1,254 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="dynamic_financial_report.cash_flow">
<t t-call="web.html_container">
<t t-call="web.internal_layout">
<div style="font-size:12px" class="col-4">
<b>Report Date :</b>
<span t-esc="context_timestamp(datetime.datetime.now()).strftime('%Y-%m-%d %H:%M')"/>
<span t-esc='today'/>
<br/>
<span t-esc='logged_users'/>
</div>
<div class="page">
<h4 style="padding-left:10px !important">Cash Flow statements</h4>
<div style="width:90%;margin:1px auto;font-size:12px" class="row mt32 mb32">
<div class="col-4">
<t t-if="report_data[0].get('target_moves')">
<p>
<strong>Target Moves:</strong>
<span t-esc="report_data[0]['target_moves']"/>
<br/>
<t t-if="report_data[1].get('levels')">
<strong>Level :</strong>
<span t-esc="report_data[1]['levels']"/>
</t>
</p>
</t>
</div>
<div class="col-4">
<p>
<t t-if="report_data[0].get('date_from')">
<strong>Date from :</strong>
<span t-esc="report_data[0].get('date_from')"/>
</t>
<br/>
<t t-if="report_data[0].get('date_to')">
<strong>Date to :</strong>
<span t-esc="report_data[0].get('date_to')"/>
</t>
</p>
</div>
</div>
<div>
<br></br>
<table style="width:90%;margin:2px auto;" class="table table-condensed">
<thead>
<tr style="font-size:13px; padding: 0.25rem !important;">
<th>Name</th>
<th class="text-right">Cash In</th>
<th class="text-right">Cash Out</th>
<th class="text-right">Balance</th>
</tr>
</thead>
<tbody style="font-size:12px" t-foreach="account_data['fetched_data']" t-as="fetch">
<tr t-if="account_data['levels' ] == 'summary'">
<td>
<span t-esc="fetch['month_part']"/>
</td>
<td class="text-right">
<span t-esc="fetch['total_debit']"
t-options="{'widget': 'monetary',
'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="fetch['total_credit']"
t-options="{'widget': 'monetary',
'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="fetch['total_balance']"
t-options="{'widget': 'monetary',
'display_currency': res_company.currency_id}"/>
</td>
</tr>
<tr style="font-size:13px" t-if="account_data['levels' ] == 'consolidated'">
<td>
<span t-esc="fetch['name']"/>
</td>
<td class="text-right">
<span t-esc="fetch['total_debit']"
t-options="{'widget': 'monetary',
'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="fetch['total_credit']"
t-options="{'widget': 'monetary',
'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="fetch['total_balance']"
t-options="{'widget': 'monetary',
'display_currency': res_company.currency_id}"/>
</td>
</tr>
</tbody>
<tbody style="font-size:12px" t-if="account_data['levels' ] == 'detailed' " t-foreach="account_data['journal_res']" t-as="res">
<tr t-if="fet['name'] == res['account']" t-foreach="account_data['fetched_data']" t-as="fet">
<td>
<strong>
<span t-esc="fet['code']"/>
<span t-esc="fet['name']"/>
</strong>
</td>
<td class="text-right">
<strong>
<span t-esc="fet['total_debit']"
t-options="{'widget': 'monetary',
'display_currency': res_company.currency_id}"/>
</strong>
</td>
<td class="text-right">
<strong>
<span t-esc="fet['total_credit']"
t-options="{'widget': 'monetary',
'display_currency': res_company.currency_id}"/>
</strong>
</td>
<td class="text-right">
<strong>
<span t-esc="fet['total_debit'] - fet['total_credit']"
t-options="{'widget': 'monetary',
'display_currency': res_company.currency_id}"/>
</strong>
</td>
<tr t-foreach="res['journal_lines']" t-as="mov">
<td style="padding-left:50px !important" class="text-left">
<span t-esc="mov['name']"/>
</td>
<td class="text-right">
<span t-esc="mov['total_debit']"
t-options="{'widget': 'monetary',
'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="mov['total_credit']"
t-options="{'widget': 'monetary',
'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="mov['total_debit'] - mov['total_credit']"
t-options="{'widget': 'monetary',
'display_currency': res_company.currency_id}"/>
</td>
</tr>
</tr>
</tbody>
<tbody style="font-size:12px" t-if="account_data['levels' ] == 'very' or account_data['levels' ] ==false " t-foreach="account_data['account_res']" t-as="res">
<tr t-if="fet['name'] == res['account']" t-foreach="account_data['fetched_data']" t-as="fet">
<td>
<strong>
<span t-esc="fet['code']"/>
<span t-esc="fet['name']"/>
</strong>
</td>
<td class="text-right">
<strong>
<span t-esc="fet['total_debit']"
t-options="{'widget': 'monetary',
'display_currency': res_company.currency_id}"/>
</strong>
</td>
<td class="text-right">
<strong>
<span t-esc="fet['total_credit']"
t-options="{'widget': 'monetary',
'display_currency': res_company.currency_id}"/>
</strong>
</td>
<td class="text-right">
<strong>
<span t-esc="fet['total_debit'] - fet['total_credit']"
t-options="{'widget': 'monetary',
'display_currency': res_company.currency_id}"/>
</strong>
</td>
<tr t-if="line['account_name'] == res['account']"
t-foreach="res['journal_lines']" t-as="line">
<td style="padding-left:20px !important" class="text-left">
<span t-esc="line['name']"/>
</td>
<td class="text-right">
<span t-esc="line['total_debit']"
t-options="{'widget': 'monetary',
'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="line['total_credit']"
t-options="{'widget': 'monetary',
'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="line['total_debit'] - line['total_credit']"
t-options="{'widget': 'monetary',
'display_currency': res_company.currency_id}"/>
</td>
<tr t-if="mov['name'] == line['name']" t-foreach="res['move_lines']"
t-as="mov">
<td style="padding-left:50px !important" class="text-left">
<span t-esc="mov['move_name']"/>
</td>
<td class="text-right">
<span t-esc="mov['total_debit']"
t-options="{'widget': 'monetary',
'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="mov['total_credit']"
t-options="{'widget': 'monetary',
'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="mov['total_debit'] - mov['total_credit']"
t-options="{'widget': 'monetary',
'display_currency': res_company.currency_id}"/>
</td>
</tr>
</tr>
</tr>
</tbody>
</table>
</div>
<br></br>
</div>
</t>
</t>
</template>
<report id="action_print_cash_flow"
model="dynamic.cash.flow"
report_type="qweb-pdf"
menu="False"
string="Cash Flow"
name="dynamic_financial_report.cash_flow"
file="dynamic_financial_report.cash_flow"
> </report>
</odoo>

169
dynamic_financial_report/views/db_templates.xml

@ -1,169 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="dynamic_financial_report.dynamic_day_book">
<t t-call="web.html_container">
<t t-call="web.internal_layout">
<div class="page">
<div class="oe_structure"/>
<h3><span t-esc="res_company.name"/>: Day Book
</h3>
<br></br>
<div>
<div class="row mt32">
<div class="col-3">
<span t-if="Filters.get('date_from')">
<strong>From:</strong>
<t t-esc="report_data[0]['date_from']"/>
</span>
</div>
<div class="col-3">
<span t-if="Filters.get('date_to')">
<strong>To:</strong>
<t t-esc="report_data[0]['date_to']"/>
</span>
</div>
</div>
<br></br>
<div class="row mb32">
<div class="col-3">
<strong>Journals: </strong>
<t t-foreach="report_data[0]['journals']"
t-as="data">
<t t-esc="data"/>
</t>
</div>
<div class="col-3">
<strong>Account: </strong>
<t t-foreach="report_data[0]['accounts']"
t-as="data">
<t t-esc="data"/>
</t>
</div>
<div class="col-3">
<strong>Target Moves:</strong>
<p t-esc="report_data[0]['entries']"/>
</div>
</div>
<table class="table table-sm table-reports">
<thead>
<tr class="text-center">
<th style="text-align:left;" >Date</th>
<th style="text-align:left;" >JRNL</th>
<th style="text-align:left;" >Partner</th>
<th style="text-align:left;" >Move</th>
<th style="text-align:left;" >Entry Label</th>
<th style="text-align:right;" colspan="1">Debit</th>
<th style="text-align:right;" colspan="2">Credit</th>
<th style="text-align:right;" colspan="2">Balance</th>
</tr>
</thead>
<tbody>
<t t-foreach="account_data" t-as="line">
<t t-if="account_data[line]['count']">
<tr style="border-bottom: 2px solid black;">
<td colspan="4">
<span style="color: white;" t-esc="'..'"/>
<strong>
<span t-esc="account_data[line]['date']"/>
</strong>
</td>
<td class="text-right" colspan="2">
<strong>
<span t-esc="account_data[line]['debit']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</strong>
</td>
<td class="text-right" colspan="2">
<strong>
<span t-esc="account_data[line]['credit']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</strong>
</td>
<td class="text-right" colspan="2">
<strong>
<span t-esc="account_data[line]['balance']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</strong>
</td>
</tr>
<br></br>
<!-- </t>-->
<t t-foreach="lines[2]" t-as="sub_line">
<t t-if="sub_line['ldate'] == account_data[line]['date']">
<tr>
<td style="text-align:left;">
<t t-esc="sub_line.get('ldate')"/>
</td >
<td style="text-align:left;">
<t t-esc="sub_line.get('lcode')"/>
</td>
<td style="text-align:left;">
<t t-esc="sub_line.get('partner_name')"/>
</td>
<td style="text-align:left;">
<t t-esc="sub_line.get('move_name')"/>
</td>
<td colspan="1" style="text-align:left;">
<t t-esc="sub_line.get('lname')"/>
</td>
<!--
">&ndash;&gt;-->
<td colspan="1" style="text-align:right;">
<t t-esc="sub_line.get('debit')"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td colspan="2" style="text-align:right;">
<t t-esc="sub_line.get('credit')"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td colspan="2" style="text-align:right;">
<t t-esc="sub_line.get('balance')"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
</tr>
</t>
</t>
</t>
</t>
</tbody>
</table>
</div>
<br></br>
</div>
</t>
</t>
</template>
<report id="action_print_day_book"
model="dynamic.day.book"
report_type="qweb-pdf"
menu="False"
string="Day Book"
name="dynamic_financial_report.dynamic_day_book"
file="dynamic_financial_report.dynamic_day_book"
/>
</odoo>

179
dynamic_financial_report/views/financial_report_qweb_pdf_template.xml

@ -1,179 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="dynamic_financial_report.balance_sheet">
<t t-call="web.html_container">
<t t-call="web.internal_layout">
<t t-set="data_report_margin_top" t-value="12"/>
<t t-set="data_report_header_spacing" t-value="9"/>
<t t-set="data_report_dpi" t-value="110"/>
<div class="page">
<h3><span t-esc="res_company.name"/>: <span t-esc="report_name"/>
</h3>
<div>
<span t-if="Filters.get('date_from')">
<strong> From:</strong>
<t t-esc="Filters['date_from']"/>
</span>
<span t-if="Filters.get('date_to')">
<strong>To:</strong>
<t t-esc="Filters['date_to']"/>
</span>
<div style="width:100%;">
<div style="text-align:centre;" class="row">
<div class="col-2">
<strong>Journals:</strong>
<t t-foreach="Filters['journals']" t-as="ps">
<li>
<t t-esc="ps"/>
</li>
</t>
</div>
<div class="col-2">
<strong>Analytic:</strong>
<t t-foreach="Filters['analytics']" t-as="ps">
<li>
<t t-esc="ps"/>
</li>
</t>
</div>
<div class="col-2">
<strong>Analytic Tag:</strong>
<t t-foreach="Filters['analytic_tags']" t-as="ps">
<li>
<t t-esc="ps"/>
</li>
</t>
</div>
<div class="col-2">
<strong>Accounts:</strong>
<t t-foreach="Filters['accounts']" t-as="ps">
<li>
<t t-esc="ps"/>
</li>
</t>
</div>
<div class="col-2">
<strong>Account Tags:</strong>
<t t-foreach="Filters['account_tags']" t-as="ps">
<li>
<t t-esc="ps"/>
</li>
</t>
</div>
<div class="col-2">
<strong>Entries:</strong>
<li>
<t t-esc="Filters['entries']"/>
</li>
</div>
</div>
</div>
</div>
<br></br>
<table class="table table-sm table-reports">
<thead>
<tr>
<th></th>
<th class="text-right">Debit</th>
<th class="text-right">Credit</th>
<th class="text-right">Balance</th>
</tr>
</thead>
<tbody>
<tr t-foreach="report_lines" t-as="a">
<t t-if="a['level'] != 0">
<t t-if="a.get('level') &gt; 2">
<t t-set="style" t-value="'font-weight: normal;'"/>
</t>
<t t-if="not a.get('level') &gt; 2">
<t t-set="style" t-value="'font-weight: bold;'"/>
</t>
<t t-if="a.get('code')">
<t t-foreach="account_data" t-as="line">
<t t-if="account_data[line]['count']">
<t t-if="account_data[line]['code'] == a.get('code')">
<tr>
<td>
<span style="color: white;" t-esc="'..' * a.get('level', 0) * 3"/>
<span t-att-style="style" t-esc="account_data[line]['name']"/>
</td>
<td class="text-right">
<span t-esc="account_data[line]['debit']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="account_data[line]['credit']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="account_data[line]['balance']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
</tr>
</t>
</t>
</t>
</t>
<t t-else="">
<td>
<span style="color: white;" t-esc="'..' * a.get('level', 0) * 3"/>
<span t-att-style="style" t-esc="a.get('name')"/>
</td>
<td class="text-right" style="white-space: text-nowrap;">
<span t-att-style="style" t-esc="a.get('debit')"
t-options="{'widget': 'monetary', 'display_currency': env.company.currency_id}"/>
</td>
<td class="text-right" style="white-space: text-nowrap;">
<span t-att-style="style" t-esc="a.get('credit')"
t-options="{'widget': 'monetary', 'display_currency': env.company.currency_id}"/>
</td>
<td class="text-right" style="white-space: text-nowrap;">
<span t-att-style="style" t-esc="a.get('balance')"
t-options="{'widget': 'monetary', 'display_currency': env.company.currency_id}"/>
</td>
</t>
</t>
</tr>
</tbody>
</table>
</div>
</t>
</t>
</template>
<record id="action_print_balance_sheet" model="ir.actions.report">
<field name="name">Financial Report</field>
<field name="model">dynamic.balance.sheet</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">dynamic_financial_report.balance_sheet</field>
<field name="report_file">dynamic_financial_report.balance_sheet</field>
</record>
</odoo>

60
dynamic_financial_report/views/general_ledger_view.xml

@ -1,60 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<menuitem id="account_dynamic_report" sequence="15"
name="Dynamic Reports" parent="account.menu_finance_reports"/>
<record id="ins_general_ledger_wizard_view" model="ir.ui.view">
<field name="name">dynamic.general.ledger.view</field>
<field name="model">dynamic.general.ledger</field>
<field name="arch" type="xml">
<form>
<group col="4">
<field name="company_id" groups="base.group_multi_company"/>
<field name="date_from"/>
<field name="date_to"/>
<field name="include_details"/>
</group>
<group col="2">
<field name="account_ids" widget="many2many_tags"
domain="[('company_id','=',company_id)]"
options="{'no_create_edit': True,'no_create': True, 'no_quick_create': True}"/>
<field name="account_tag_ids" widget="many2many_tags"
options="{'no_create_edit': True,'no_create': True, 'no_quick_create': True}"/>
<field name="journal_ids" widget="many2many_tags"
domain="[('company_id','=',company_id)]"
options="{'no_create_edit': True,'no_create': True, 'no_quick_create': True}"/>
<field name="analytic_ids" widget="many2many_tags"
domain="[('company_id','=',company_id)]"
options="{'no_create_edit': True,'no_create': True, 'no_quick_create': True}"/>
<field name="analytic_tag_ids" widget="many2many_tags"
domain="['|',('company_id','=',company_id),('company_id','=',False)]"
options="{'no_create_edit': True,'no_create': True, 'no_quick_create': True}"/>
</group>
</form>
</field>
</record>
<record id="ins_trial_balance_wizard_view" model="ir.ui.view">
<field name="name">dynamic.trial.balance.view</field>
<field name="model">dynamic.trial.balance</field>
<field name="arch" type="xml">
<form>
<group col="4">
<field name="company_id" groups="base.group_multi_company"/>
<field name="date_from"/>
<field name="date_to"/>
</group>
<group col="2">
<field name="analytic_ids" widget="many2many_tags"
domain="[('company_id','=',company_id)]"
options="{'no_create_edit': True,'no_create': True, 'no_quick_create': True}"/>
</group>
</form>
</field>
</record>
</odoo>

354
dynamic_financial_report/views/gl_template.xml

@ -1,354 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="dynamic_financial_report.general_ledger">
<t t-call="web.html_container">
<t t-call="web.internal_layout">
<div class="page">
<div class="oe_structure"/>
<h3><span t-esc="res_company.name"/>: General ledger
</h3>
<div>
<span t-if="Filters.get('date_from')">
<strong> From:</strong>
<t t-esc="Filters['date_from']"/>
</span>
<span t-if="Filters.get('date_to')">
<strong>To:</strong>
<t t-esc="Filters['date_to']"/>
</span>
<div style="width:100%;">
<div style="text-align:centre;" class="row">
<div class="col-2">
<strong>Journals:</strong>
<t t-foreach="Filters['journals']" t-as="ps">
<li>
<t t-esc="ps"/>
</li>
</t>
</div>
<div class="col-2">
<strong>Analytic:</strong>
<t t-foreach="Filters['analytics']" t-as="ps">
<li>
<t t-esc="ps"/>
</li>
</t>
</div>
<div class="col-2">
<strong>Analytic Tag:</strong>
<t t-foreach="Filters['analytic_tags']" t-as="ps">
<li>
<t t-esc="ps"/>
</li>
</t>
</div>
<div class="col-2">
<strong>Accounts:</strong>
<t t-foreach="Filters['accounts']" t-as="ps">
<li>
<t t-esc="ps"/>
</li>
</t>
</div>
<div class="col-2">
<strong>Account Tags:</strong>
<t t-foreach="Filters['account_tags']" t-as="ps">
<li>
<t t-esc="ps"/>
</li>
</t>
</div>
<div class="col-2">
<strong>Entries:</strong>
<!-- <t t-foreach="Filters['journals']" t-as="ps">-->
<li>
<t t-esc="Filters['entries']"/>
</li>
<!-- </t>-->
</div>
</div>
</div>
<br></br>
<table>
<thead>
<tr class="text-center">
<th style="text-align:left;">Date</th>
<th style="text-align:left;">Journal</th>
<th style="text-align:left;">Partner</th>
<th style="text-align:left;">Move</th>
<th style="text-align:left;">Reference</th>
<th style="text-align:right;padding-bottom:10px;">Debit</th>
<th style="text-align:right">Credit</th>
<th style="text-align:right">Balance</th>
</tr>
</thead>
<t t-foreach="account_data" t-as="line">
<t t-if="account_data[line]['count']">
<tr>
<td colspan="5">
<span style="color: white;" t-esc="'..'"/>
<span t-esc="account_data[line]['name']"/>
</td>
<td class="text-right">
<span t-esc="account_data[line]['debit']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="account_data[line]['credit']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="account_data[line]['balance']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
</tr>
<t t-foreach="account_data[line]['lines']" t-as="sub_line">
<t t-if="sub_line['initial_bal']">
<tr>
<td colspan="5" class="text-right">
<span>Initial Balance</span>
</td>
<td class="text-right">
<span t-esc="sub_line['debit']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="sub_line['credit']"
t-options="{'widgetaccount_data': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="sub_line['balance']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
</tr>
</t>
<t t-if="not sub_line['initial_bal'] and not sub_line['ending_bal']">
<tr>
<td>
<t t-esc="sub_line.get('ldate')" t-options='{"widget": "date"}'/>
</td>
<td>
<t t-esc="sub_line.get('lcode')"/>
</td>
<td>
<t t-esc="sub_line.get('partner_name')"/>
</td>
<td>
<t t-esc="sub_line.get('move_name')"/>
</td>
<td style="width:30%;">
<t t-esc="sub_line.get('lname')"/>
</td>
<td class="text-right">
<t t-esc="sub_line.get('debit')"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<t t-esc="sub_line.get('credit')"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<t t-esc="sub_line.get('balance')"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
</tr>
</t>
<t t-if="sub_line['ending_bal']">
<tr>
<td colspan="5" class="text-right">
<span>Ending Balance</span>
</td>
<td class="text-right">
<span t-esc="sub_line['debit']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="sub_line['credit']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="sub_line['balance']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
</tr>
</t>
</t>
</t>
</t>
</table>
</div>
<br></br>
</div>
</t>
</t>
</template>
<record id="action_print_general_ledger" model="ir.actions.report">
<field name="name">General Ledger</field>
<field name="model">dynamic.general.ledger</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">dynamic_financial_report.general_ledger</field>
<field name="report_file">dynamic_financial_report.general_ledger</field>
</record>
<template id="dynamic_financial_report.trial_balance">
<t t-call="web.html_container">
<t t-call="web.internal_layout">
<div class="page">
<div class="oe_structure"/>
<h3 style="text-align:centre;left:50%;"><span t-esc="res_company.name"/>: Trial Balance
</h3>
<span t-if="Filters.get('date_from')">
<strong> From:</strong>
<t t-esc="Filters['date_from']"/>
</span>
<span t-if="Filters.get('date_to')">
<strong>To:</strong>
<t t-esc="Filters['date_to']"/>
</span>
<div>
<div style="text-align:centre;left:50%;" class="row">
<div class="col-3">
<strong>Journals:</strong>
<t t-foreach="Filters['journals']" t-as="ps">
<li>
<t t-esc="ps"/>
</li>
</t>
</div>
<div class="col-3">
<strong>Analytic:</strong>
<t t-foreach="Filters['analytics']" t-as="ps">
<li>
<t t-esc="ps"/>
</li>
</t>
</div>
<div class="col-3">
<strong>Entries:</strong>
<!-- <t t-foreach="Filters['journals']" t-as="ps">-->
<li>
<t t-esc="Filters['entries']"/>
</li>
<!-- </t>-->
</div>
</div>
<br></br>
<table class="table table-sm table-reports">
<thead>
<tr>
<th style="text-align:left;">Code</th>
<th colspan="5">Account</th>
<t t-if="Filters.get('date_from')">
<th class="amt">Initial Debit</th>
<th class="amt">Initial Credit</th>
</t>
<th class="text-right">Debit</th>
<th class="text-right">Credit</th>
<!-- <th class="text-right">Balance</th>-->
</tr>
</thead>
<t t-foreach="account_data" t-as="line">
<t t-if="account_data[line]['count']">
<tr>
<td style="text-align:left;">
<span style="color: white;" t-esc="'..'"/>
<span t-esc="account_data[line]['code']"/>
</td>
<td colspan="5">
<span style="color: white;" t-esc="'..'"/>
<span t-esc="account_data[line]['name']"/>
</td>
<t t-if="Filters.get('date_from')">
<t t-foreach="account_data[line]['lines']" t-as="iline">
<t t-if="(iline['initial_bal'] == true and iline['move_name'] == 'Initial Balance')">
<td class="amt">
<t t-raw="iline['debit']" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="amt">
<t t-raw="iline['credit']" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
</t>
</t>
</t>
<td class="text-right">
<span t-esc="account_data[line]['debit']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="account_data[line]['credit']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<!-- <td class="text-right">-->
<!-- <span t-esc="account_data[line]['balance']"-->
<!-- t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>-->
<!-- </td>-->
</tr>
</t>
</t>
<td colspan="6" style="border-bottom: 1px solid ;" class="amt"><strong>Total</strong></td>
<t t-if="Filters.get('date_from')">
<td class="amt" style="border-bottom: 1px solid ;"><strong></strong></td>
<td class="amt" style="border-bottom: 1px solid ;"><strong></strong></td>
</t>
<!-- <t t-if="(credit > 0 || debit > 0 )">-->
<td class="text-right" style="border-bottom: 1px solid ;"><strong><t t-esc="total['debit']" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/></strong></td>
<td class="text-right" style="border-bottom: 1px solid;"><strong><t t-esc="total['credit']" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/></strong></td>
<!-- </t>-->
</table>
</div>
<br></br>
</div>
</t>
</t>
</template>
<record id="action_print_trial_balance" model="ir.actions.report">
<field name="name">Trial Balance</field>
<field name="model">dynamic.trial.balance</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">dynamic_financial_report.trial_balance</field>
<field name="report_file">dynamic_financial_report.trial_balance</field>
</record>
</odoo>

70
dynamic_financial_report/views/kit_menus.xml

@ -1,70 +0,0 @@
<odoo>
<record id="action_dynamic_day_book" model="ir.actions.client">
<field name="name">Day Book</field>
<field name="tag">dynamic.db</field>
</record>
<menuitem id="menu_day_book_report" sequence="60" action="action_dynamic_day_book"
name="Day Book" parent="dynamic_financial_report.account_dynamic_report"/>
<record id="action_dynamic_cash_flow" model="ir.actions.client">
<field name="name">Cash Flow Statement Reports</field>
<field name="tag">dynamic.cf</field>
</record>
<menuitem id="menu_cash_flow_report" sequence="60" action="action_dynamic_cash_flow"
name="Cash Flow Satement" parent="dynamic_financial_report.account_dynamic_report"/>
<record id="action_dynamic_bank_book" model="ir.actions.client">
<field name="name">Bank Book</field>
<field name="tag">dynamic.bb</field>
</record>
<menuitem id="menu_bank_book_report" sequence="60" action="action_dynamic_bank_book"
name="Bank Book" parent="account_dynamic_report" groups="account.group_account_user"/>
<record id="action_dynamic_cash_book" model="ir.actions.client">
<field name="name">Cash Book</field>
<field name="tag">dynamic.cb</field>
</record>
<menuitem id="menu_cash_book_report" sequence="60" action="action_dynamic_cash_book"
name="Cash Book" parent="account_dynamic_report" groups="account.group_account_user"/>
<record id="base_accounting_kit.menu_Balance_report" model="ir.ui.menu">
<field name="active" eval="False"/>
</record>
<record id="base_accounting_kit.menu_general_ledger" model="ir.ui.menu">
<field name="active" eval="False"/>
</record>
<record id="base_accounting_kit.menu_aged_trial_balance" model="ir.ui.menu">
<field name="active" eval="False"/>
</record>
<record id="base_accounting_kit.menu_partner_ledger" model="ir.ui.menu">
<field name="active" eval="False"/>
</record>
<record id="base_accounting_kit._account_financial_reports_balance_sheet" model="ir.ui.menu">
<field name="active" eval="False"/>
</record>
<record id="base_accounting_kit.account_financial_reports_profit_loss" model="ir.ui.menu">
<field name="active" eval="False"/>
</record>
<record id="base_accounting_kit.account_reports_daily_reports" model="ir.ui.menu">
<field name="active" eval="False"/>
</record>
<record id="base_accounting_kit.menu_account_cash_flow_report" model="ir.ui.menu">
<field name="active" eval="False"/>
</record>
</odoo>

24
dynamic_financial_report/views/menu_dynamic_financial_reports.xml

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="action_dynamic_balance_sheet" model="ir.actions.client">
<field name="name">Balance Sheet Report</field>
<field name="tag">dynamic.bs</field>
</record>
<record id="action_dynamic_profit_and_loss" model="ir.actions.client">
<field name="name">Profit and Loss Report</field>
<field name="tag">dynamic.pal</field>
</record>
<menuitem id="account_dynamic_report" sequence="15"
name="Dynamic Reports" parent="account.menu_finance_reports"/>
<menuitem id="menu__balance_sheet_report" sequence="60" action="action_dynamic_balance_sheet"
name="Balance Sheet" parent="account_dynamic_report" groups="account.group_account_user"/>
<menuitem id="menu_profit_and_loss_report" sequence="61" action="action_dynamic_profit_and_loss"
name="Profit and Loss" parent="account_dynamic_report" groups="account.group_account_user"/>
</data>
</odoo>

203
dynamic_financial_report/views/pl_template.xml

@ -1,203 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="partner_ledger">
<t t-call="web.html_container">
<t t-call="web.internal_layout">
<div class="page">
<h3><span t-esc="res_company.name"/>: Partner Ledger</h3>
<br></br>
<div class="row mt32">
<div class="col-2">
<strong>Partners:</strong>
<t t-foreach="report_data[0]['partners']"
t-as="data">
<t t-esc="data"/>
</t>
</div>
<div class="col-2">
<strong>Journals:</strong>
<t t-foreach="report_data[0]['journals']"
t-as="data">
<t t-esc="data"/>
</t>
</div>
<div class="col-2">
<strong>Partners Tag:</strong>
<t t-foreach="report_data[0]['categories']"
t-as="data">
<t t-esc="data"/>
</t>
</div>
<div class="col-2">
<strong>Account Type :</strong>
<p t-esc="report_data[0]['type']"/>
</div>
<div class="col-2">
<strong>Accounts:</strong>
<t t-foreach="report_data[0]['accounts']"
t-as="data">
<t t-esc="data"/>
</t>
</div>
<div class="col-2">
<strong>Target Moves:</strong>
<p t-esc="report_data[0]['target_moves']"/>
</div>
</div>
<div class="row mt32">
<t t-if="report_data[0].get('date_from')">
<div class="col-2">
<strong>From Date :</strong>
<p t-esc="report_data[0]['date_from']"/>
</div>
</t>
<t t-if="report_data[0].get('date_to')">
<div class="col-2">
<strong>To Date :</strong>
<p t-esc="report_data[0]['date_to']"/>
</div>
</t>
<t t-if="report_data[0].get('reconciled')">
<div class="col-2">
<strong>Reconciliation status :</strong>
<p t-esc="report_data[0]['reconciled']"/>
</div>
</t>
</div>
10:27
<t t-set="data_report_margin_top" t-value="0"/>
<table class="table table-sm table-reports" style="top:0px;">
<thead>
<tr class="text-center">
<th style="text-align:left;">Date</th>
<th style="text-align:left;">Journal</th>
<th style="text-align:left;">Account</th>
<th style="text-align:left;">Move</th>
<th style="text-align:left;">Reference</th>
<th style="text-align:right;">Debit</th>
<th style="text-align:right;">Credit</th>
<th style="text-align:right;">Balance</th>
</tr>
</thead>
<tbody>
<t t-foreach="account_data" t-as="line">
<t t-if="account_data[line]['count']">
<tr style="border-bottom: 2px solid black;">
<td colspan="5">
<span style="color: white;"
t-esc="'..'"/>
<strong>
<span t-esc="account_data[line]['name']"/>
</strong>
</td>
<td class="text-right">
<strong>
<span t-esc="account_data[line]['debit']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</strong>
</td>
<td class="text-right">
<strong>
<span t-esc="account_data[line]['credit']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</strong>
</td>
<td class="text-right">
<strong>
<span t-esc="account_data[line]['balance']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</strong>
</td>
</tr>
<t t-foreach="account_data[line]['lines']"
t-as="sub_line">
<t t-if="sub_line['initial_bal']">
<tr>
<td colspan="5"
class="text-right">
<span>Initial Balance</span>
</td>
<td class="text-right">
<span t-esc="sub_line['debit']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="sub_line['credit']"
t-options="{'widgetaccount_data': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="sub_line['balance']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
</tr>
</t>
<t t-if="not sub_line['initial_bal'] and not sub_line['ending_bal']">
<tr>
<td>
<t t-esc="sub_line.get('ldate')"
t-options='{"widget": "date"}'/>
</td>
<td>
<t t-esc="sub_line.get('lcode')"/>
</td>
<td>
<t t-esc="sub_line.get('account_code')"/>
</td>
<td>
<t t-esc="sub_line.get('move_name')"/>
</td>
<td style="width:30%;">
<t t-esc="sub_line.get('lname')"/>
</td>
<td class="text-right">
<t t-esc="sub_line.get('debit')"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<t t-esc="sub_line.get('credit')"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<t t-esc="sub_line.get('balance')"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
</tr>
</t>
<t t-if="sub_line['ending_bal']">
<tr>
<td colspan="5"
class="text-right">
<span>Ending Balance</span>
</td>
<td class="text-right">
<span t-esc="sub_line['debit']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="sub_line['credit']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
<td class="text-right">
<span t-esc="sub_line['balance']"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</td>
</tr>
</t>
</t>
</t>
</t>
</tbody>
</table>
</div>
</t>
</t>
</template>
<report id="action_print_partner_ledger"
model="dynamic.partner.ledger"
report_type="qweb-pdf"
menu="False"
string="Partner Ledger"
name="dynamic_financial_report.partner_ledger"
file="dynamic_financial_report.partner_ledger"
/>
</odoo>

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

Loading…
Cancel
Save