@ -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>`__ |
|||
|
@ -1,3 +0,0 @@ |
|||
from . import wizard |
|||
from . import report |
|||
from . import controllers |
@ -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 +0,0 @@ |
|||
from . import main |
@ -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))) |
@ -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 |
|||
|
|||
|
|||
|
|||
|
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
|
Before Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 471 KiB |
Before Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 328 KiB |
Before Width: | Height: | Size: 712 KiB |
Before Width: | Height: | Size: 93 KiB |
Before Width: | Height: | Size: 54 KiB |
Before Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 111 KiB |
Before Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 71 KiB |
Before Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 213 KiB |
Before Width: | Height: | Size: 82 KiB |
Before Width: | Height: | Size: 115 KiB |
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 61 KiB |
Before Width: | Height: | Size: 129 KiB |
Before Width: | Height: | Size: 82 KiB |
Before Width: | Height: | Size: 96 KiB |
Before Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 89 KiB |
Before Width: | Height: | Size: 112 KiB |
Before Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 96 KiB |
Before Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 93 KiB |
Before Width: | Height: | Size: 106 KiB |
Before Width: | Height: | Size: 342 KiB |
Before Width: | Height: | Size: 112 KiB |
Before Width: | Height: | Size: 114 KiB |
Before Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 28 KiB |
@ -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); |
|||
}, |
|||
|
|||
|
|||
}); |
|||
|
|||
}); |
@ -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 + ' ' + account.total.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (account.Not == 0) { |
|||
account.Not = ' - ' |
|||
|
|||
} else { |
|||
account.Not = currency_format.symbol + ' ' + account.Not.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (account.value_20 == 0) { |
|||
account.value_20 = ' - ' |
|||
|
|||
} else { |
|||
account.value_20 = currency_format.symbol + ' ' + account.value_20.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (account[2140] == 0) { |
|||
account[2140] = ' - ' |
|||
|
|||
} else { |
|||
account[2140] = currency_format.symbol + ' ' + account[2140].toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (account[4160] == 0) { |
|||
account[4160] = ' - ' |
|||
|
|||
} else { |
|||
account[4160] = currency_format.symbol + ' ' + account[4160].toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (account[6180] == 0) { |
|||
account[6180] = ' - ' |
|||
|
|||
} else { |
|||
account[6180] = currency_format.symbol + ' ' + account[6180].toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (account[81100] == 0) { |
|||
account[81100] = ' - ' |
|||
|
|||
} else { |
|||
account[81100] = currency_format.symbol + ' ' + account[81100].toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (account[100] == 0) { |
|||
account[100] = ' - ' |
|||
|
|||
} else { |
|||
account[100] = currency_format.symbol + ' ' + account[100].toFixed(2) + ' '; |
|||
|
|||
} |
|||
} else { |
|||
|
|||
if (account.total == 0) { |
|||
account.total = ' - ' |
|||
} else { |
|||
account.total = account.total.toFixed(2) + ' ' + currency_id.symbol; |
|||
//
|
|||
} |
|||
if (account.Not == 0) { |
|||
account.Not = ' - ' |
|||
|
|||
} else { |
|||
account.Not = account.Not.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (account.value_20 == 0) { |
|||
account.value_20 = ' - ' |
|||
} else { |
|||
account.value_20 = account.value_20.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (account[2140] == 0) { |
|||
account[2140] = ' - ' |
|||
} else { |
|||
account[2140] = account[2140].toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (account[4160] == 0) { |
|||
account[4160] = ' - ' |
|||
} else { |
|||
account[4160] = account[4160].toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (account[6180] == 0) { |
|||
account[6180] = ' - ' |
|||
} else { |
|||
account[6180] = account[6180].toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (account[81100] == 0) { |
|||
account[81100] = ' - ' |
|||
} else { |
|||
account[81100] = account[81100].toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (account[100] == 0) { |
|||
account[100] = ' - ' |
|||
} else { |
|||
account[100] = account[100].toFixed(2) + ' ' + 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) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (data.range_1 == 0) { |
|||
data.range_1 = ' - ' |
|||
|
|||
} else { |
|||
data.range_1 = data.range_1.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (data.range_2 == 0) { |
|||
data.range_2 = ' - ' |
|||
} else { |
|||
data.range_2 = data.range_2.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (data.range_3 == 0) { |
|||
data.range_3 = ' - ' |
|||
} else { |
|||
data.range_3 = data.range_3.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (data.range_4 == 0) { |
|||
data.range_4 = ' - ' |
|||
} else { |
|||
data.range_4 = data.range_4.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (data.range_5 == 0) { |
|||
data.range_5 = ' - ' |
|||
} else { |
|||
data.range_5 = data.range_5.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (data.range_6 == 0) { |
|||
data.range_6 = ' - ' |
|||
} else { |
|||
data.range_6 = data.range_6.toFixed(2) + ' ' + 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); |
|||
|
|||
}); |
@ -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 + ' ' + account.debit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (account.credit == 0) { |
|||
account.credit = ' - ' |
|||
|
|||
} else { |
|||
account.credit = currency_format.symbol + ' ' + account.credit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (account.balance == 0) { |
|||
account.balance = ' - ' |
|||
|
|||
} else { |
|||
account.balance = currency_format.symbol + ' ' + account.balance.toFixed(2) + ' '; |
|||
|
|||
} |
|||
} else { |
|||
|
|||
if (account.debit == 0) { |
|||
account.debit = ' - ' |
|||
} else { |
|||
account.debit = account.debit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (account.credit == 0) { |
|||
account.credit = ' - ' |
|||
|
|||
} else { |
|||
account.credit = account.credit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (account.balance == 0) { |
|||
account.balance = ' - ' |
|||
} else { |
|||
account.balance = account.balance.toFixed(2) + ' ' + 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 + ' ' + data.debit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (data.credit == 0) { |
|||
data.credit = ' - ' |
|||
|
|||
} else { |
|||
data.credit = currency_format.symbol + ' ' + data.credit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (data.balance == 0) { |
|||
data.balance = ' - ' |
|||
|
|||
} else { |
|||
data.balance = currency_format.symbol + ' ' + data.balance.toFixed(2) + ' '; |
|||
|
|||
} |
|||
} else { |
|||
if (data.debit == 0) { |
|||
data.debit = ' - ' |
|||
} else { |
|||
data.debit = data.debit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (data.credit == 0) { |
|||
data.credit = ' - ' |
|||
|
|||
} else { |
|||
data.credit = data.credit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (data.balance == 0) { |
|||
data.balance = ' - ' |
|||
} else { |
|||
data.balance = data.balance.toFixed(2) + ' ' + 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); |
|||
|
|||
}); |
@ -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 + ' ' + account.debit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (account.credit == 0) { |
|||
account.credit = ' - ' |
|||
|
|||
} else { |
|||
account.credit = currency_format.symbol + ' ' + account.credit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (account.balance == 0) { |
|||
account.balance = ' - ' |
|||
|
|||
} else { |
|||
account.balance = currency_format.symbol + ' ' + account.balance.toFixed(2) + ' '; |
|||
|
|||
} |
|||
} else { |
|||
|
|||
if (account.debit == 0) { |
|||
account.debit = ' - ' |
|||
} else { |
|||
account.debit = account.debit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (account.credit == 0) { |
|||
account.credit = ' - ' |
|||
|
|||
} else { |
|||
account.credit = account.credit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (account.balance == 0) { |
|||
account.balance = ' - ' |
|||
} else { |
|||
account.balance = account.balance.toFixed(2) + ' ' + 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 + ' ' + data.debit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (data.credit == 0) { |
|||
data.credit = ' - ' |
|||
|
|||
} else { |
|||
data.credit = currency_format.symbol + ' ' + data.credit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (data.balance == 0) { |
|||
data.balance = ' - ' |
|||
|
|||
} else { |
|||
data.balance = currency_format.symbol + ' ' + data.balance.toFixed(2) + ' '; |
|||
|
|||
} |
|||
} else { |
|||
if (data.debit == 0) { |
|||
data.debit = ' - ' |
|||
} else { |
|||
data.debit = data.debit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (data.credit == 0) { |
|||
data.credit = ' - ' |
|||
|
|||
} else { |
|||
data.credit = data.credit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (data.balance == 0) { |
|||
data.balance = ' - ' |
|||
} else { |
|||
data.balance = data.balance.toFixed(2) + ' ' + 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 + ' ' + account.debit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (account.credit == 0) { |
|||
account.credit = ' - ' |
|||
|
|||
} else { |
|||
account.credit = currency_format.symbol + ' ' + account.credit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (account.balance == 0) { |
|||
account.balance = ' - ' |
|||
|
|||
} else { |
|||
account.balance = currency_format.symbol + ' ' + account.balance.toFixed(2) + ' '; |
|||
|
|||
} |
|||
} else { |
|||
|
|||
if (account.debit == 0) { |
|||
account.debit = ' - ' |
|||
} else { |
|||
account.debit = account.debit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (account.credit == 0) { |
|||
account.credit = ' - ' |
|||
|
|||
} else { |
|||
account.credit = account.credit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (account.balance == 0) { |
|||
account.balance = ' - ' |
|||
} else { |
|||
account.balance = account.balance.toFixed(2) + ' ' + 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 + ' ' + data.debit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (data.credit == 0) { |
|||
data.credit = ' - ' |
|||
|
|||
} else { |
|||
data.credit = currency_format.symbol + ' ' + data.credit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (data.balance == 0) { |
|||
data.balance = ' - ' |
|||
|
|||
} else { |
|||
data.balance = currency_format.symbol + ' ' + data.balance.toFixed(2) + ' '; |
|||
|
|||
} |
|||
} else { |
|||
if (data.debit == 0) { |
|||
data.debit = ' - ' |
|||
} else { |
|||
data.debit = data.debit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (data.credit == 0) { |
|||
data.credit = ' - ' |
|||
|
|||
} else { |
|||
data.credit = data.credit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (data.balance == 0) { |
|||
data.balance = ' - ' |
|||
} else { |
|||
data.balance = data.balance.toFixed(2) + ' ' + 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); |
|||
|
|||
}); |
@ -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 + ' ' + account.total_credit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (account.total_debit == 0) { |
|||
account.total_debit = ' - ' |
|||
|
|||
} else { |
|||
account.total_debit = currency_format.symbol + ' ' + account.total_debit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (account.total_balance == 0) { |
|||
account.total_balance = ' - ' |
|||
|
|||
} else { |
|||
account.total_balance = currency_format.symbol + ' ' + account.total_balance.toFixed(2) + ' '; |
|||
|
|||
} |
|||
|
|||
|
|||
|
|||
} else {if (account.total_credit == 0) { |
|||
account.total_credit = ' - ' |
|||
} else { |
|||
account.total_credit = account.total_credit.toFixed(2) + ' ' + currency_format.symbol; |
|||
//
|
|||
} |
|||
if (account.total_debit == 0) { |
|||
account.total_debit = ' - ' |
|||
|
|||
} else { |
|||
account.total_debit = account.total_debit.toFixed(2) + ' ' + currency_format.symbol; |
|||
|
|||
} |
|||
if (account.total_balance == 0) { |
|||
account.total_balance = ' - ' |
|||
} else { |
|||
account.total_balance = account.total_balance.toFixed(2) + ' ' + 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; |
|||
|
|||
|
|||
}); |
@ -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 + ' ' + account.debit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (account.credit == 0) { |
|||
account.credit = ' - ' |
|||
|
|||
} else { |
|||
account.credit = currency_format.symbol + ' ' + account.credit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (account.balance == 0) { |
|||
account.balance = ' - ' |
|||
|
|||
} else { |
|||
account.balance = currency_format.symbol + ' ' + account.balance.toFixed(2) + ' '; |
|||
|
|||
} |
|||
} else { |
|||
|
|||
if (account.debit == 0) { |
|||
account.debit = ' - ' |
|||
} else { |
|||
account.debit = account.debit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (account.credit == 0) { |
|||
account.credit = ' - ' |
|||
|
|||
} else { |
|||
account.credit = account.credit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (account.balance == 0) { |
|||
account.balance = ' - ' |
|||
} else { |
|||
account.balance = account.balance.toFixed(2) + ' ' + 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 + ' ' + data.debit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (data.credit == 0) { |
|||
data.credit = ' - ' |
|||
|
|||
} else { |
|||
data.credit = currency_format.symbol + ' ' + data.credit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (data.balance == 0) { |
|||
data.balance = ' - ' |
|||
|
|||
} else { |
|||
data.balance = currency_format.symbol + ' ' + data.balance.toFixed(2) + ' '; |
|||
|
|||
} |
|||
} else { |
|||
if (data.debit == 0) { |
|||
data.debit = ' - ' |
|||
} else { |
|||
data.debit = data.debit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (data.credit == 0) { |
|||
data.credit = ' - ' |
|||
|
|||
} else { |
|||
data.credit = data.credit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (data.balance == 0) { |
|||
data.balance = ' - ' |
|||
} else { |
|||
data.balance = data.balance.toFixed(2) + ' ' + 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); |
|||
|
|||
}); |
@ -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 + ' ' + account.debit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (account.credit == 0) { |
|||
account.credit = ' - ' |
|||
|
|||
} else { |
|||
account.credit = currency_format.symbol + ' ' + account.credit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (account.balance == 0) { |
|||
account.balance = ' - ' |
|||
|
|||
} else { |
|||
account.balance = currency_format.symbol + ' ' + account.balance.toFixed(2) + ' '; |
|||
|
|||
} |
|||
} else { |
|||
|
|||
if (account.debit == 0) { |
|||
account.debit = ' - ' |
|||
} else { |
|||
account.debit = account.debit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (account.credit == 0) { |
|||
account.credit = ' - ' |
|||
|
|||
} else { |
|||
account.credit = account.credit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (account.balance == 0) { |
|||
account.balance = ' - ' |
|||
} else { |
|||
account.balance = account.balance.toFixed(2) + ' ' + 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 + ' ' + data.debit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (data.credit == 0) { |
|||
data.credit = ' - ' |
|||
|
|||
} else { |
|||
data.credit = currency_format.symbol + ' ' + data.credit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (data.balance == 0) { |
|||
data.balance = ' - ' |
|||
|
|||
} else { |
|||
data.balance = currency_format.symbol + ' ' + data.balance.toFixed(2) + ' '; |
|||
|
|||
} |
|||
} else { |
|||
if (data.debit == 0) { |
|||
data.debit = ' - ' |
|||
} else { |
|||
data.debit = data.debit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (data.credit == 0) { |
|||
data.credit = ' - ' |
|||
|
|||
} else { |
|||
data.credit = data.credit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (data.balance == 0) { |
|||
data.balance = ' - ' |
|||
} else { |
|||
data.balance = data.balance.toFixed(2) + ' ' + 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 + ' ' + account.lines[i].debit .toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (account.lines[i].credit == 0) { |
|||
account.lines[i].credit = ' - ' |
|||
} else { |
|||
account.lines[i].credit = currency_format.symbol + ' ' + account.lines[i].credit .toFixed(2) + ' '; |
|||
|
|||
} |
|||
|
|||
}else{ |
|||
|
|||
if (account.lines[i].debit == 0) { |
|||
account.lines[i].debit = ' - ' |
|||
} else { |
|||
account.lines[i].debit = account.lines[i].debit.toFixed(2) + ' ' + currency_format.symbol; |
|||
|
|||
} |
|||
if (account.lines[i].credit == 0) { |
|||
account.lines[i].credit = ' - ' |
|||
} else { |
|||
account.lines[i].credit = account.lines[i].credit.toFixed(2) + ' ' + currency_format.symbol; |
|||
|
|||
} |
|||
|
|||
|
|||
} |
|||
|
|||
|
|||
} |
|||
} |
|||
if (currency_format.position == "before") { |
|||
|
|||
if (account.debit == 0) { |
|||
account.debit = ' - ' |
|||
} else { |
|||
account.debit = currency_format.symbol + ' ' + account.debit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (account.credit == 0) { |
|||
account.credit = ' - ' |
|||
|
|||
} else { |
|||
account.credit = currency_format.symbol + ' ' + account.credit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (account.balance == 0) { |
|||
account.balance = ' - ' |
|||
|
|||
} else { |
|||
account.balance = currency_format.symbol + ' ' + account.balance.toFixed(2) + ' '; |
|||
|
|||
} |
|||
} else { |
|||
|
|||
if (account.debit == 0) { |
|||
account.debit = ' - ' |
|||
} else { |
|||
account.debit = account.debit.toFixed(2) + ' ' + currency_format.symbol; |
|||
|
|||
} |
|||
if (account.credit == 0) { |
|||
account.credit = ' - ' |
|||
|
|||
} else { |
|||
account.credit = account.credit.toFixed(2) + ' ' + currency_format.symbol; |
|||
|
|||
} |
|||
if (account.balance == 0) { |
|||
account.balance = ' - ' |
|||
} else { |
|||
account.balance = account.balance.toFixed(2) + ' ' + 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); |
|||
|
|||
}); |
@ -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 + ' ' + account.debit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (account.credit == 0) { |
|||
account.credit = ' - ' |
|||
|
|||
} else { |
|||
account.credit = currency_format.symbol + ' ' + account.credit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (account.balance == 0) { |
|||
account.balance = ' - ' |
|||
|
|||
} else { |
|||
account.balance = currency_format.symbol + ' ' + account.balance.toFixed(2) + ' '; |
|||
|
|||
} |
|||
} else { |
|||
|
|||
if (account.debit == 0) { |
|||
account.debit = ' - ' |
|||
} else { |
|||
account.debit = account.debit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (account.credit == 0) { |
|||
account.credit = ' - ' |
|||
|
|||
} else { |
|||
account.credit = account.credit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (account.balance == 0) { |
|||
account.balance = ' - ' |
|||
} else { |
|||
account.balance = account.balance.toFixed(2) + ' ' + 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 + ' ' + data.debit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (data.credit == 0) { |
|||
data.credit = ' - ' |
|||
|
|||
} else { |
|||
data.credit = currency_format.symbol + ' ' + data.credit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (data.balance == 0) { |
|||
data.balance = ' - ' |
|||
|
|||
} else { |
|||
data.balance = currency_format.symbol + ' ' + data.balance.toFixed(2) + ' '; |
|||
|
|||
} |
|||
} else { |
|||
if (data.debit == 0) { |
|||
data.debit = ' - ' |
|||
} else { |
|||
data.debit = data.debit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (data.credit == 0) { |
|||
data.credit = ' - ' |
|||
|
|||
} else { |
|||
data.credit = data.credit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (data.balance == 0) { |
|||
data.balance = ' - ' |
|||
} else { |
|||
data.balance = data.balance.toFixed(2) + ' ' + 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); |
|||
|
|||
}); |
@ -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 + ' ' + account.debit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (account.credit == 0) { |
|||
account.credit = ' - ' |
|||
|
|||
} else { |
|||
account.credit = currency_format.symbol + ' ' + account.credit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (account.balance == 0) { |
|||
account.balance = ' - ' |
|||
|
|||
} else { |
|||
account.balance = currency_format.symbol + ' ' + account.balance.toFixed(2) + ' '; |
|||
|
|||
} |
|||
} else { |
|||
|
|||
if (account.debit == 0) { |
|||
account.debit = ' - ' |
|||
} else { |
|||
account.debit = account.debit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (account.credit == 0) { |
|||
account.credit = ' - ' |
|||
|
|||
} else { |
|||
account.credit = account.credit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (account.balance == 0) { |
|||
account.balance = ' - ' |
|||
} else { |
|||
account.balance = account.balance.toFixed(2) + ' ' + 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 + ' ' + data.debit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (data.credit == 0) { |
|||
data.credit = ' - ' |
|||
|
|||
} else { |
|||
data.credit = currency_format.symbol + ' ' + data.credit.toFixed(2) + ' '; |
|||
|
|||
} |
|||
if (data.balance == 0) { |
|||
data.balance = ' - ' |
|||
|
|||
} else { |
|||
data.balance = currency_format.symbol + ' ' + data.balance.toFixed(2) + ' '; |
|||
|
|||
} |
|||
} else { |
|||
if (data.debit == 0) { |
|||
data.debit = ' - ' |
|||
} else { |
|||
data.debit = data.debit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (data.credit == 0) { |
|||
data.credit = ' - ' |
|||
|
|||
} else { |
|||
data.credit = data.credit.toFixed(2) + ' ' + currency_id.symbol; |
|||
|
|||
} |
|||
if (data.balance == 0) { |
|||
data.balance = ' - ' |
|||
} else { |
|||
data.balance = data.balance.toFixed(2) + ' ' + 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); |
|||
|
|||
}); |
@ -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; |
|||
} |
@ -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> |
@ -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> |
@ -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'] > 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'] < 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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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'] > 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'] < 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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
|||
<!-- |
|||
">–>--> |
|||
|
|||
<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> |
@ -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') > 2"> |
|||
<t t-set="style" t-value="'font-weight: normal;'"/> |
|||
</t> |
|||
<t t-if="not a.get('level') > 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> |
@ -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> |
@ -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> |
@ -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> |
|||
|
@ -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> |
@ -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> |