Browse Source

[UPDT] Dynamic report update

pull/298/head
Ajmal Cybro 3 years ago
parent
commit
86579191d3
  1. 2
      dynamic_accounts_report/__manifest__.py
  2. 5
      dynamic_accounts_report/doc/RELEASE_NOTES.md
  3. 1472
      dynamic_accounts_report/i18n/de_CH.po
  4. 1473
      dynamic_accounts_report/i18n/es_AR.po
  5. 1471
      dynamic_accounts_report/i18n/fr_BE.po
  6. 1472
      dynamic_accounts_report/i18n/uk_UA.po
  7. 4
      dynamic_accounts_report/report/cash_flow_report.xml
  8. 2
      dynamic_accounts_report/report/financial_report_template.xml
  9. 2
      dynamic_accounts_report/report/trial_balance.xml
  10. 1
      dynamic_accounts_report/static/src/js/ageing.js
  11. 9
      dynamic_accounts_report/static/src/js/general_ledger.js
  12. 2
      dynamic_accounts_report/static/src/js/trial_balance.js
  13. 28
      dynamic_accounts_report/static/src/xml/daybook.xml
  14. 28
      dynamic_accounts_report/static/src/xml/financial_reports_view.xml
  15. 30
      dynamic_accounts_report/static/src/xml/general_ledger_view.xml
  16. 25
      dynamic_accounts_report/static/src/xml/partner_ledger_view.xml
  17. 14
      dynamic_accounts_report/static/src/xml/trial_balance_view.xml
  18. 13
      dynamic_accounts_report/wizard/ageing.py
  19. 73
      dynamic_accounts_report/wizard/balance_sheet.py
  20. 1
      dynamic_accounts_report/wizard/balance_sheet_config.py
  21. 76
      dynamic_accounts_report/wizard/cash_flow.py
  22. 47
      dynamic_accounts_report/wizard/daybook.py
  23. 65
      dynamic_accounts_report/wizard/general_ledger.py
  24. 42
      dynamic_accounts_report/wizard/partner_leadger.py
  25. 38
      dynamic_accounts_report/wizard/trial_balance.py

2
dynamic_accounts_report/__manifest__.py

@ -22,7 +22,7 @@
{
'name': 'Dynamic Financial Reports',
'version': '14.0.1.2.5',
'version': '14.0.1.2.6',
'category': 'Accounting',
'live_test_url': 'https://www.youtube.com/watch?v=gVQi9q9Rs-E&t=5s',
'summary': """Dynamic Financial Reports with drill

5
dynamic_accounts_report/doc/RELEASE_NOTES.md

@ -36,3 +36,8 @@
#### Version 14.0.1.2.5
#### UPDT
- Arabic Translation added
#### 01.02.2022
#### Version 14.0.1.2.6
#### UPDT AND BUGFIX
- Multi-company and Translation Update and Bugfix

1472
dynamic_accounts_report/i18n/de_CH.po

File diff suppressed because it is too large

1473
dynamic_accounts_report/i18n/es_AR.po

File diff suppressed because it is too large

1471
dynamic_accounts_report/i18n/fr_BE.po

File diff suppressed because it is too large

1472
dynamic_accounts_report/i18n/uk_UA.po

File diff suppressed because it is too large

4
dynamic_accounts_report/report/cash_flow_report.xml

@ -112,7 +112,7 @@
</tbody>
<tbody style="font-size:12px" t-if="Filters['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">
<tr t-if="fet['id'] == res['id']" t-foreach="account_data['fetched_data']" t-as="fet">
<td>
<strong>
<span t-esc="fet['code']"/>
@ -163,7 +163,7 @@
</tr>
</tbody>
<tbody style="font-size:12px" t-if="Filters['levels' ] == 'very' or Filters['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">
<tr t-if="fet['id'] == res['id']" t-foreach="account_data['fetched_data']" t-as="fet">
<td>
<strong>
<span t-esc="fet['code']"/>

2
dynamic_accounts_report/report/financial_report_template.xml

@ -100,7 +100,7 @@
</t>
<t t-if="a.get('code')">
<t t-foreach="account_data" t-as="line">
<t t-if="line['code'] == a.get('code')">
<t t-if="line['id'] == a.get('account')">
<tr>
<td>
<span style="color: white;" t-esc="'..' * a.get('level', 0) * 3"/>

2
dynamic_accounts_report/report/trial_balance.xml

@ -1,7 +1,5 @@
<odoo>
<template id="dynamic_accounts_report.trial_balance">
<t t-call="web.html_container">
<t t-call="web.internal_layout">

1
dynamic_accounts_report/static/src/js/ageing.js

@ -24,7 +24,6 @@ odoo.define('dynamic_accounts_report.ageing', function (require) {
'click .gl-line': 'show_drop_down',
'click .view-account-move': 'view_acc_move',
'mousedown div.input-group.date[data-target-input="nearest"]': '_onCalendarIconClick',
},
init: function(parent, action) {

9
dynamic_accounts_report/static/src/js/general_ledger.js

@ -358,7 +358,6 @@ odoo.define('dynamic_cash_flow_statements.general_ledger', function (require) {
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++) {
@ -379,8 +378,7 @@ odoo.define('dynamic_cash_flow_statements.general_ledger', function (require) {
}
filter_data_selected.account_ids = account_ids
if (self._title == "General Ledger"){
var journal_ids = [];
var journal_text = [];
var journal_res = document.getElementById("journal_res")
@ -404,6 +402,9 @@ odoo.define('dynamic_cash_flow_statements.general_ledger', function (require) {
}
filter_data_selected.journal_ids = journal_ids
}
var analytic_ids = []
var analytic_text = [];
var analytic_res = document.getElementById("analytic_res")
@ -426,7 +427,6 @@ odoo.define('dynamic_cash_flow_statements.general_ledger', function (require) {
}
filter_data_selected.analytic_ids = analytic_ids
var analytic_tag_ids = []
var analytic_tag_text = [];
var analytic_tag_res = document.getElementById("analytic_tag_res")
@ -467,6 +467,7 @@ odoo.define('dynamic_cash_flow_statements.general_ledger', function (require) {
filter_data_selected.date_to = moment(this.$el.find('.datetimepicker-input[name="gen_date_to"]').val(), time.getLangDateFormat()).locale('en').format('YYYY-MM-DD');
}
if ($(".target_move").length) {
var post_res = document.getElementById("post_res")
filter_data_selected.target_move = $(".target_move")[1].value

2
dynamic_accounts_report/static/src/js/trial_balance.js

@ -89,6 +89,8 @@ odoo.define('dynamic_cash_flow_statements.trial', function (require) {
method: 'view_report',
args: [[this.wizard_id]],
}).then(function(datas) {
_.each(datas['report_lines'], function(rep_lines) {
rep_lines.debit = self.format_currency(datas['currency'],rep_lines.debit);
rep_lines.credit = self.format_currency(datas['currency'],rep_lines.credit);

28
dynamic_accounts_report/static/src/xml/daybook.xml

@ -166,10 +166,26 @@
<select class="dropdown-menu journals" name="states[]" multiple="multiple">
<div role="separator" class="dropdown-divider"></div>
<t t-foreach="filter_data.journals_list" t-as="journal">
<t t-if="journal[0]=='divider'">
<div role="separator" class="dropdown-divider"/>
<option disabled="disabled" role="menuitem" t-attf-value="{{journal[0]}}">
<t t-esc="journal[1]"/>
</option>
<div role="separator" class="dropdown-divider"/>
</t>
<t t-else="">
<option t-attf-value="{{journal[0]}}">
<t t-esc="journal[1]"/>
</option>
</t>
</t>
</select>
<span id="journal_res"></span>
</div>
@ -180,10 +196,22 @@
</a>
<select class="dropdown-menu account" name="states[]" multiple="multiple">
<t t-foreach="filter_data.accounts_list" t-as="account">
<t t-if="account[0]=='divider'">
<div role="separator" class="dropdown-divider"/>
<option disabled="disabled" role="menuitem" t-attf-value="{{account[0]}}">
<t t-esc="account[1]"/>
</option>
<div role="separator" class="dropdown-divider"/>
</t>
<t t-else="">
<option t-attf-value="{{account[0]}}">
<t t-esc="account[1]"/>
</option>
</t>
</t>
</select>
<span id="acc_res"></span>
</div>

28
dynamic_accounts_report/static/src/xml/financial_reports_view.xml

@ -33,7 +33,7 @@
<t t-set="common_id" t-value="0"/>
<t t-if="account['code'] == a['code']">
<t t-if="account['id'] == a['account']">
<tr style="border: 1.5px solid black;" class="gl-line"
data-toggle="collapse"
t-att-data-account-id="account['id']"
@ -172,9 +172,22 @@ Journals:
<select class="dropdown-menu journals" name="states[]" multiple="multiple">
<div role="separator" class="dropdown-divider"></div>
<t t-foreach="filter_data.journals_list" t-as="journal">
<t t-if="journal[0]=='divider'">
<div role="separator" class="dropdown-divider"/>
<option disabled="disabled" role="menuitem" t-attf-value="{{journal[0]}}">
<t t-esc="journal[1]"/>
</option>
<div role="separator" class="dropdown-divider"/>
</t>
<t t-else="">
<option t-attf-value="{{journal[0]}}"><t t-esc="journal[1]"/>
</option>
</t>
</t>
</select>
<span id="journal_res"></span>
</div>
@ -186,10 +199,23 @@ Journals:
</a>
<select class="dropdown-menu account" name="states[]" multiple="multiple">
<t t-foreach="filter_data.accounts_list" t-as="account">
<t t-if="account[0]=='divider'">
<div role="separator" class="dropdown-divider"/>
<option disabled="disabled" role="menuitem" t-attf-value="{{account[0]}}">
<t t-esc="account[1]"/>
</option>
<div role="separator" class="dropdown-divider"/>
</t>
<t t-else="">
<option t-attf-value="{{account[0]}}">
<t t-esc="account[1]"/>
</option>
</t>
</t>
</select>
<span id="acc_res"></span>
</div>

30
dynamic_accounts_report/static/src/xml/general_ledger_view.xml

@ -190,10 +190,25 @@
<select class="dropdown-menu journals" name="states[]" multiple="multiple">
<div role="separator" class="dropdown-divider"></div>
<t t-foreach="filter_data.journals_list" t-as="journal">
<t t-if="journal[0]=='divider'">
<div role="separator" class="dropdown-divider"/>
<option disabled="disabled" role="menuitem" t-attf-value="{{journal[0]}}">
<t t-esc="journal[1]"/>
</option>
<div role="separator" class="dropdown-divider"/>
</t>
<t t-else="">
<option t-attf-value="{{journal[0]}}">
<t t-esc="journal[1]"/>
</option>
</t>
</t>
</select>
<span id="journal_res"></span>
</div>
@ -206,9 +221,24 @@
</a>
<select class="dropdown-menu account" name="states[]" multiple="multiple">
<t t-foreach="filter_data.accounts_list" t-as="account">
<t t-if="account[0]=='divider'">
<div role="separator" class="dropdown-divider"/>
<option disabled="disabled" role="menuitem" t-attf-value="{{account[0]}}">
<t t-esc="account[1]"/>
</option>
<div role="separator" class="dropdown-divider"/>
</t>
<t t-else="">
<option t-attf-value="{{account[0]}}">
<t t-esc="account[1]"/>
</option>
</t>
</t>
</select>
<span id="acc_res"></span>

25
dynamic_accounts_report/static/src/xml/partner_ledger_view.xml

@ -193,10 +193,23 @@
<select class="dropdown-menu journals" name="states[]" multiple="multiple">
<div role="separator" class="dropdown-divider"></div>
<t t-foreach="filter_data.journals_list" t-as="journal">
<t t-if="journal[0]=='divider'">
<div role="separator" class="dropdown-divider"/>
<option disabled="disabled" role="menuitem" t-attf-value="{{journal[0]}}">
<t t-esc="journal[1]"/>
</option>
<div role="separator" class="dropdown-divider"/>
</t>
<t t-else="">
<option t-attf-value="{{journal[0]}}">
<t t-esc="journal[1]"/>
</option>
</t>
</t>
</select>
<span id="journal_res"></span>
</div>
@ -207,10 +220,22 @@
</a>
<select class="dropdown-menu account" name="states[]" multiple="multiple">
<t t-foreach="filter_data.accounts_list" t-as="account">
<t t-if="account[0]=='divider'">
<div role="separator" class="dropdown-divider"/>
<option disabled="disabled" role="menuitem" t-attf-value="{{account[0]}}">
<t t-esc="account[1]"/>
</option>
<div role="separator" class="dropdown-divider"/>
</t>
<t t-else="">
<option t-attf-value="{{account[0]}}">
<t t-esc="account[1]"/>
</option>
</t>
</t>
</select>
<span id="account_res"></span>

14
dynamic_accounts_report/static/src/xml/trial_balance_view.xml

@ -254,10 +254,24 @@
<select class="dropdown-menu journals" name="states[]" multiple="multiple">
<div role="separator" class="dropdown-divider"></div>
<t t-foreach="filter_data.journals_list" t-as="journal">
<t t-if="journal[0]=='divider'">
<div role="separator" class="dropdown-divider"/>
<option disabled="disabled" role="menuitem" t-attf-value="{{journal[0]}}">
<t t-esc="journal[1]"/>
</option>
<div role="separator" class="dropdown-divider"/>
</t>
<t t-else="">
<option t-attf-value="{{journal[0]}}">
<t t-esc="journal[1]"/>
</option>
</t>
</t>
</select>
<span id="journal_res"></span>
</div>

13
dynamic_accounts_report/wizard/ageing.py

@ -109,8 +109,8 @@ class AgeingView(models.TransientModel):
def get_filter_data(self, option):
r = self.env['account.partner.ageing'].search([('id', '=', option[0])])
default_filters = {}
company_id = self.env.company
company_domain = [('company_id', '=', company_id.id)]
company_id = self.env.companies
company_domain = [('company_id', 'in', company_id.ids)]
partner = r.partner_ids if r.partner_ids else self.env[
'res.partner'].search([])
categories = r.partner_category_ids if r.partner_category_ids \
@ -119,14 +119,14 @@ class AgeingView(models.TransientModel):
filter_dict = {
'partners': r.partner_ids.ids,
'partner_tags': r.partner_category_ids.ids,
'company_id': company_id.id,
'company_id': company_id.ids,
'date_from': r.date_from,
'target_move': r.target_move,
'result_selection': r.result_selection,
'partners_list': [(p.id, p.name) for p in partner],
'category_list': [(c.id, c.name) for c in categories],
'company_name': company_id and company_id.name,
'company_name': ', '.join(self.env.companies.mapped('name')),
}
filter_dict.update(default_filters)
return filter_dict
@ -210,7 +210,9 @@ class AgeingView(models.TransientModel):
user_currency = user_company.currency_id
ResCurrency = self.env['res.currency'].with_context(date=date_from)
company_ids = self._context.get('company_ids') or [user_company.id]
# company_ids = self._context.get('company_ids') or [user_company.id]
company_ids = self.env.companies.ids
move_state = ['draft', 'posted']
if target_move == 'posted':
move_state = ['posted']
@ -226,7 +228,6 @@ class AgeingView(models.TransientModel):
if reconciled_after_date:
reconciliation_clause = '(l.reconciled IS FALSE OR l.id IN %s)'
arg_list += (tuple(reconciled_after_date),)
arg_list += (date_from, tuple(company_ids),)
partner_list = '(l.partner_id IS NOT NULL)'
if partners:

73
dynamic_accounts_report/wizard/balance_sheet.py

@ -59,8 +59,8 @@ class BalanceSheetView(models.TransientModel):
'date_to': r.date_to,
})
company_id = self.env.company
company_domain = [('company_id', '=', company_id.id)]
company_ids = self.env.companies.ids
company_domain = [('company_id', 'in', company_ids)]
if r.account_tag_ids:
company_domain.append(
('tag_ids', 'in', r.account_tag_ids.ids))
@ -83,10 +83,8 @@ class BalanceSheetView(models.TransientModel):
new_records = list(filter(filter_code, records['Accounts']))
records['Accounts'] = new_records
trans_tag = self.env['ir.translation'].search([('value', '=', tag), ('module', '=', 'dynamic_accounts_report')],
limit=1).src
if trans_tag:
tag_upd = trans_tag
else:
@ -95,7 +93,6 @@ class BalanceSheetView(models.TransientModel):
account_report_id = self.env['account.financial.report'].with_context(lang='en_US').search([
('name', 'ilike', tag_upd)])
new_data = {'id': self.id, 'date_from': False,
'enable_filter': True,
'debit_credit': True,
@ -118,19 +115,18 @@ class BalanceSheetView(models.TransientModel):
move_lines_dict = {}
for rec in records['Accounts']:
move_line_accounts.append(rec['code'])
move_lines_dict[rec['code']] = {}
move_lines_dict[rec['code']]['debit'] = rec['debit']
move_lines_dict[rec['code']]['credit'] = rec['credit']
move_lines_dict[rec['code']]['balance'] = rec['balance']
move_line_accounts.append(rec['id'])
move_lines_dict[rec['id']] = {}
move_lines_dict[rec['id']]['debit'] = rec['debit']
move_lines_dict[rec['id']]['credit'] = rec['credit']
move_lines_dict[rec['id']]['balance'] = rec['balance']
report_lines_move = []
parent_list = []
def filter_movelines_parents(obj):
for each in obj:
if each['report_type'] == 'accounts':
if each['code'] in move_line_accounts:
if each['account'] in move_line_accounts:
report_lines_move.append(each)
parent_list.append(each['p_id'])
@ -143,10 +139,10 @@ class BalanceSheetView(models.TransientModel):
for rec in report_lines_move:
if rec['report_type'] == 'accounts':
if rec['code'] in move_line_accounts:
rec['debit'] = move_lines_dict[rec['code']]['debit']
rec['credit'] = move_lines_dict[rec['code']]['credit']
rec['balance'] = move_lines_dict[rec['code']]['balance']
if rec['account'] in move_line_accounts:
rec['debit'] = move_lines_dict[rec['account']]['debit']
rec['credit'] = move_lines_dict[rec['account']]['credit']
rec['balance'] = move_lines_dict[rec['account']]['balance']
parent_list = list(set(parent_list))
max_level = 0
@ -300,10 +296,11 @@ class BalanceSheetView(models.TransientModel):
r = self.env['dynamic.balance.sheet.report'].search(
[('id', '=', option[0])])
default_filters = {}
company_id = self.env.company
company_domain = [('company_id', '=', company_id.id)]
journals = r.journal_ids if r.journal_ids else self.env[
'account.journal'].search(company_domain)
company_ids = self.env.companies.ids
company_domain = [('company_id', 'in', company_ids)]
company_names = ', '.join(self.env.companies.mapped('name'))
journal_ids = r.journal_ids if r.journal_ids else self.env[
'account.journal'].search(company_domain, order="company_id, name")
analytics = self.analytic_ids if self.analytic_ids else self.env[
'account.analytic.account'].search(
company_domain)
@ -313,27 +310,48 @@ class BalanceSheetView(models.TransientModel):
analytic_tags = self.analytic_tag_ids if self.analytic_tag_ids else \
self.env[
'account.analytic.tag'].sudo().search(
['|', ('company_id', '=', company_id.id),
['|', ('company_id', 'in', company_ids),
('company_id', '=', False)])
if r.account_tag_ids:
company_domain.append(
('tag_ids', 'in', r.account_tag_ids.ids))
accounts = self.account_ids if self.account_ids else self.env[
'account.account'].search(company_domain)
accounts_ids = self.account_ids if self.account_ids else self.env[
'account.account'].search(company_domain, order="company_id, name")
journals = []
o_company = False
for j in journal_ids:
if j.company_id != o_company:
journals.append(('divider', j.company_id.name))
o_company = j.company_id
journals.append((j.id, j.name, j.code))
accounts = []
o_company = False
for j in accounts_ids:
if j.company_id != o_company:
accounts.append(('divider', j.company_id.name))
o_company = j.company_id
accounts.append((j.id, j.name))
filter_dict = {
'journal_ids': r.journal_ids.ids,
'account_ids': r.account_ids.ids,
'analytic_ids': r.analytic_ids.ids,
'company_id': company_id.id,
'company_id': company_ids,
'date_from': r.date_from,
'date_to': r.date_to,
'target_move': r.target_move,
'journals_list': [(j.id, j.name, j.code) for j in journals],
'accounts_list': [(a.id, a.name) for a in accounts],
'journals_list': journals,
'accounts_list': accounts,
'analytic_list': [(anl.id, anl.name) for anl in analytics],
'company_name': company_id and company_id.name,
'company_name': company_names,
'analytic_tag_ids': r.analytic_tag_ids.ids,
'analytic_tag_list': [(anltag.id, anltag.name) for anltag in
analytic_tags],
@ -471,6 +489,7 @@ class BalanceSheetView(models.TransientModel):
params = tuple(where_params)
else:
params = (tuple(accounts.ids),) + tuple(where_params)
cr.execute(sql, params)
for row in cr.dictfetchall():

1
dynamic_accounts_report/wizard/balance_sheet_config.py

@ -39,7 +39,6 @@ class BalanceSheet(models.TransientModel):
item['level'] = set_report_level(item)
data['journal_items'] = journal_items
data['report_lines'] = report_lines
return data
def _compute_account_balance(self, accounts):

76
dynamic_accounts_report/wizard/cash_flow.py

@ -107,22 +107,22 @@ class AccountCasgFlow(models.TransientModel):
def get_filter_data(self, option):
r = self.env['account.cash.flow'].search([('id', '=', option[0])])
default_filters = {}
company_id = self.env.company
company_domain = [('company_id', '=', company_id.id)]
company_id = self.env.companies
company_domain = [('company_id', 'in', company_id.ids)]
journals = r.journal_ids if r.journal_ids else self.env['account.journal'].search(company_domain)
accounts = self.account_ids if self.account_ids else self.env['account.account'].search(company_domain)
filter_dict = {
'journal_ids': r.journal_ids.ids,
'account_ids': self.account_ids.ids,
'company_id': company_id.id,
'company_id': company_id.ids,
'date_from': r.date_from,
'date_to': r.date_to,
'levels': r.levels,
'target_move': r.target_move,
'journals_list': [(j.id, j.name, j.code) for j in journals],
'accounts_list': [(a.id, a.name) for a in accounts],
'company_name': company_id and company_id.name,
'company_name': ', '.join(self.env.companies.mapped('name')),
}
filter_dict.update(default_filters)
return filter_dict
@ -140,11 +140,11 @@ class AccountCasgFlow(models.TransientModel):
account_res = []
journal_res = []
fetched = []
account_type_id = self.env.ref('account.data_account_type_liquidity').id
model = self.env.context.get('active_model')
if data.get('levels') == 'summary':
state = """ WHERE am.state = 'posted' """ if data.get('target_move') == 'posted' else ''
state = """ AND am.state = 'posted' """ if data.get('target_move') == 'Posted' else ''
state2 = ' AND aml.company_id IN %s' % str(tuple(self.env.companies.ids) + tuple([0]))
query3 = """SELECT to_char(am.date, 'Month') as month_part, extract(YEAR from am.date) as year_part,
sum(aml.debit) AS total_debit, sum(aml.credit) AS total_credit,
sum(aml.balance) AS total_balance FROM (SELECT am.date, am.id, am.state FROM account_move as am
@ -154,11 +154,11 @@ class AccountCasgFlow(models.TransientModel):
WHERE am.date BETWEEN '""" + str(
data.get('date_from')) + """' and '""" + str(
data.get('date_to')) + """' AND aat.id='""" + str(
account_type_id) + """' ) am
account_type_id) + """' """ + state + state2 +""") am
LEFT JOIN account_move_line aml ON aml.move_id = am.id
LEFT JOIN account_account aa ON aa.id = aml.account_id
LEFT JOIN account_account_type aat ON aat.id = aa.user_type_id
""" + state + """GROUP BY month_part,year_part"""
GROUP BY month_part,year_part"""
cr = self._cr
cr.execute(query3)
fetched_data = cr.dictfetchall()
@ -166,7 +166,9 @@ class AccountCasgFlow(models.TransientModel):
account_type_id = self.env.ref(
'account.data_account_type_liquidity').id
state = """AND am.state = 'posted' """ if data.get(
'target_move') == 'posted' else ''
'target_move') == 'Posted' else """AND am.state in ('draft','posted') """
state2 = ' AND aml.company_id IN %s' % str(tuple(self.env.companies.ids) + tuple([0]))
sql = """SELECT DISTINCT aa.id, aa.name,aa.code, sum(aml.debit) AS total_debit,
sum(aml.credit) AS total_credit,sum(aml.balance) AS total_balance
FROM (SELECT am.* FROM account_move as am
@ -176,7 +178,7 @@ class AccountCasgFlow(models.TransientModel):
WHERE am.date BETWEEN '""" + str(
data.get('date_from')) + """' and '""" + str(
data.get('date_to')) + """' AND aat.id='""" + str(
account_type_id) + """' """ + state + """) am
account_type_id) + """' """ + state + state2 +""") am
LEFT JOIN account_move_line aml ON aml.move_id = am.id
LEFT JOIN account_account aa ON aa.id = aml.account_id
LEFT JOIN account_account_type aat ON aat.id = aa.user_type_id
@ -188,7 +190,9 @@ class AccountCasgFlow(models.TransientModel):
account_type_id = self.env.ref(
'account.data_account_type_liquidity').id
state = """AND am.state = 'posted' """ if data.get(
'target_move') == 'posted' else ''
'target_move') == 'Posted' else """AND am.state in ('draft','posted') """
state2 = ' AND aml.company_id IN %s' % str(tuple(self.env.companies.ids) + tuple([0]))
sql = """SELECT DISTINCT aa.id, aa.name,aa.code, sum(aml.debit) AS total_debit,
sum(aml.credit) AS total_credit,sum(aml.balance) AS total_balance
FROM (SELECT am.* FROM account_move as am
@ -198,7 +202,7 @@ class AccountCasgFlow(models.TransientModel):
WHERE am.date BETWEEN '""" + str(
data.get('date_from')) + """' and '""" + str(
data.get('date_to')) + """' AND aat.id='""" + str(
account_type_id) + """' """ + state + """) am
account_type_id) + """' """ + state + state2 + """) am
LEFT JOIN account_move_line aml ON aml.move_id = am.id
LEFT JOIN account_account aa ON aa.id = aml.account_id
LEFT JOIN account_account_type aat ON aat.id = aa.user_type_id
@ -210,7 +214,9 @@ class AccountCasgFlow(models.TransientModel):
account_type_id = self.env.ref(
'account.data_account_type_liquidity').id
state = """AND am.state = 'posted' """ if data.get(
'target_move') == 'posted' else ''
'target_move') == 'Posted' else """AND am.state in ('draft','posted') """
state2 = ' AND aml.company_id IN %s' % str(tuple(self.env.companies.ids) + tuple([0]))
sql = """SELECT DISTINCT aa.id, aa.name,aa.code, sum(aml.debit) AS total_debit,
sum(aml.credit) AS total_credit,sum(aml.balance) AS total_balance
FROM (SELECT am.* FROM account_move as am
@ -220,7 +226,7 @@ class AccountCasgFlow(models.TransientModel):
WHERE am.date BETWEEN '""" + str(
data.get('date_from')) + """' and '""" + str(
data.get('date_to')) + """' AND aat.id='""" + str(
account_type_id) + """' """ + state + """) am
account_type_id) + """' """ + state + state2 + """) am
LEFT JOIN account_move_line aml ON aml.move_id = am.id
LEFT JOIN account_account aa ON aa.id = aml.account_id
LEFT JOIN account_account_type aat ON aat.id = aa.user_type_id
@ -233,7 +239,9 @@ class AccountCasgFlow(models.TransientModel):
account_type_id = self.env.ref(
'account.data_account_type_liquidity').id
state = """AND am.state = 'posted' """ if data.get(
'target_move') == 'posted' else ''
'target_move') == 'Posted' else """AND am.state in ('draft','posted') """
state2 = ' AND aml.company_id IN %s' % str(tuple(self.env.companies.ids) + tuple([0]))
sql = """SELECT DISTINCT aa.id, aa.name,aa.code, sum(aml.debit) AS total_debit,
sum(aml.credit) AS total_credit,sum(aml.balance) AS total_balance
FROM (SELECT am.* FROM account_move as am
@ -243,7 +251,7 @@ class AccountCasgFlow(models.TransientModel):
WHERE am.date BETWEEN '""" + str(
data.get('date_from')) + """' and '""" + str(
data.get('date_to')) + """' AND aat.id='""" + str(
account_type_id) + """' """ + state + """) am
account_type_id) + """' """ + state + state2 + """) am
LEFT JOIN account_move_line aml ON aml.move_id = am.id
LEFT JOIN account_account aa ON aa.id = aml.account_id
LEFT JOIN account_account_type aat ON aat.id = aa.user_type_id
@ -253,7 +261,8 @@ class AccountCasgFlow(models.TransientModel):
fetched_data = cr.dictfetchall()
elif data.get('levels') == 'consolidated':
state = """ WHERE am.state = 'posted' """ if data.get('target_move') == 'posted' else ''
state = """ AND am.state = 'posted' """ if data.get('target_move') == 'Posted' else ''
state2 = ' AND aml.company_id IN %s' % str(tuple(self.env.companies.ids) + tuple([0]))
query2 = """SELECT aat.name, sum(aml.debit) AS total_debit, sum(aml.credit) AS total_credit,
sum(aml.balance) AS total_balance FROM ( SELECT am.id, am.state FROM account_move as am
LEFT JOIN account_move_line aml ON aml.move_id = am.id
@ -261,16 +270,17 @@ class AccountCasgFlow(models.TransientModel):
LEFT JOIN account_account_type aat ON aat.id = aa.user_type_id
WHERE am.date BETWEEN '""" + str(data.get('date_from')) + """' and '""" + str(
data.get('date_to')) + """' AND aat.id='""" + str(
account_type_id) + """' ) am
account_type_id) + """' """ + state + state2 + """) am
LEFT JOIN account_move_line aml ON aml.move_id = am.id
LEFT JOIN account_account aa ON aa.id = aml.account_id
LEFT JOIN account_account_type aat ON aat.id = aa.user_type_id
""" + state + """GROUP BY aat.name"""
GROUP BY aat.name"""
cr = self._cr
cr.execute(query2)
fetched_data = cr.dictfetchall()
elif data.get('levels') == 'detailed':
state = """ WHERE am.state = 'posted' """ if data.get('target_move') == 'posted' else ''
state = """AND am.state = 'posted' """ if data.get('target_move') == 'Posted' else """AND am.state in ('draft','posted') """
state2 = ' AND aml.company_id IN %s' % str(tuple(self.env.companies.ids) + tuple([0]))
query1 = """SELECT aa.id,aa.name,aa.code, sum(aml.debit) AS total_debit, sum(aml.credit) AS total_credit,
sum(aml.balance) AS total_balance FROM (SELECT am.id, am.state FROM account_move as am
LEFT JOIN account_move_line aml ON aml.move_id = am.id
@ -279,11 +289,11 @@ class AccountCasgFlow(models.TransientModel):
WHERE am.date BETWEEN '""" + str(
data.get('date_from')) + """' and '""" + str(
data.get('date_to')) + """' AND aat.id='""" + str(
account_type_id) + """' ) am
account_type_id) + """' """ + state + state2 + """) am
LEFT JOIN account_move_line aml ON aml.move_id = am.id
LEFT JOIN account_account aa ON aa.id = aml.account_id
LEFT JOIN account_account_type aat ON aat.id = aa.user_type_id
""" + state + """GROUP BY aa.name, aa.code, aa.id"""
GROUP BY aa.name, aa.code, aa.id"""
cr = self._cr
cr.execute(query1)
fetched_data = cr.dictfetchall()
@ -295,7 +305,9 @@ class AccountCasgFlow(models.TransientModel):
else:
account_type_id = self.env.ref(
'account.data_account_type_liquidity').id
state = """AND am.state = 'posted' """ if data.get('target_move') == 'posted' else ''
state = """AND am.state = 'posted' """ if data.get('target_move') == 'Posted' else """AND am.state in ('draft','posted') """
state2 = ' AND aml.company_id IN %s' % str(tuple(self.env.companies.ids) + tuple([0]))
# filter = " AND aml.parent_state in ('draft','posted')"
sql = """SELECT DISTINCT aa.id, aa.name,aa.code, sum(aml.debit) AS total_debit,
sum(aml.credit) AS total_credit,sum(aml.balance) AS total_balance
FROM (SELECT am.* FROM account_move as am
@ -305,7 +317,7 @@ class AccountCasgFlow(models.TransientModel):
WHERE am.date BETWEEN '""" + str(
data.get('date_from')) + """' and '""" + str(
data.get('date_to')) + """' AND aat.id='""" + str(
account_type_id) + """' """ + state + """) am
account_type_id) + """' """ + state + state2 +""") am
LEFT JOIN account_move_line aml ON aml.move_id = am.id
LEFT JOIN account_account aa ON aa.id = aml.account_id
LEFT JOIN account_account_type aat ON aat.id = aa.user_type_id
@ -339,7 +351,8 @@ class AccountCasgFlow(models.TransientModel):
def _get_lines(self, account, data):
account_type_id = self.env.ref(
'account.data_account_type_liquidity').id
state = """AND am.state = 'posted' """ if data.get('target_move') == 'posted' else ''
state = """AND am.state = 'posted' """ if data.get('target_move') == 'Posted' else """AND am.state in ('draft','posted') """
state2 = ' AND aml.company_id IN %s' % str(tuple(self.env.companies.ids) + tuple([0]))
query = """SELECT aml.account_id,aj.id as j_id,aj.name,am.id, am.name as move_name, sum(aml.debit) AS total_debit,
sum(aml.credit) AS total_credit, COALESCE(SUM(aml.debit - aml.credit),0) AS balance FROM (SELECT am.* FROM account_move as am
LEFT JOIN account_move_line aml ON aml.move_id = am.id
@ -348,7 +361,7 @@ class AccountCasgFlow(models.TransientModel):
WHERE am.date BETWEEN '""" + str(
data.get('date_from')) + """' and '""" + str(
data.get('date_to')) + """' AND aat.id='""" + str(
account_type_id) + """' """ + state + """) am
account_type_id) + """' """ + state + state2 + """) am
LEFT JOIN account_move_line aml ON aml.move_id = am.id
LEFT JOIN account_account aa ON aa.id = aml.account_id
LEFT JOIN account_journal aj ON aj.id = am.journal_id
@ -367,7 +380,7 @@ class AccountCasgFlow(models.TransientModel):
WHERE am.date BETWEEN '""" + str(
data.get('date_from')) + """' and '""" + str(
data.get('date_to')) + """' AND aat.id='""" + str(
account_type_id) + """' """ + state + """) am
account_type_id) + """' """ + state + state2 + """) am
LEFT JOIN account_move_line aml ON aml.move_id = am.id
LEFT JOIN account_account aa ON aa.id = aml.account_id
LEFT JOIN account_journal aj ON aj.id = am.journal_id
@ -392,7 +405,8 @@ class AccountCasgFlow(models.TransientModel):
account_type_id = self.env.ref(
'account.data_account_type_liquidity').id
offset_count = offset * fetch_range
state = """AND am.state = 'posted' """ if data.get('target_move') == 'posted' else ''
state = """AND am.state = 'posted' """ if data.get('target_move') == 'Posted' else """AND am.state in ('draft','posted') """
state2 = ' AND aml.company_id IN %s' % str(tuple(self.env.companies.ids) + tuple([0]))
sql2 = """SELECT aa.name as account_name, aj.name, sum(aml.debit) AS total_debit,
sum(aml.credit) AS total_credit, COALESCE(SUM(aml.debit - aml.credit),0) AS balance FROM (SELECT am.* FROM account_move as am
LEFT JOIN account_move_line aml ON aml.move_id = am.id
@ -401,7 +415,7 @@ class AccountCasgFlow(models.TransientModel):
WHERE am.date BETWEEN '""" + str(
data.get('date_from')) + """' and '""" + str(
data.get('date_to')) + """' AND aat.id='""" + str(
account_type_id) + """' """ + state + """) am
account_type_id) + """' """ + state + state2 + """) am
LEFT JOIN account_move_line aml ON aml.move_id = am.id
LEFT JOIN account_account aa ON aa.id = aml.account_id
LEFT JOIN account_journal aj ON aj.id = am.journal_id
@ -553,7 +567,7 @@ class AccountCasgFlow(models.TransientModel):
for j_rec in journal_res_list:
if data['levels'] == 'detailed':
for k in fetched_data_list:
if k['name'] == j_rec['account']:
if k['id'] == j_rec['id']:
sheet.write(row_num + 1, col_num, str(k['code']) + str(k['name']), txt_bold)
sheet.write(row_num + 1, col_num + 1, str(k['total_debit']) + str(currency_symbol), amount_bold)
sheet.write(row_num + 1, col_num + 2, str(k['total_credit']) + str(currency_symbol), amount_bold)
@ -572,7 +586,7 @@ class AccountCasgFlow(models.TransientModel):
for j_rec in account_res_list:
if data['levels'] == 'very':
for k in fetched_data_list:
if k['name'] == j_rec['account']:
if k['id'] == j_rec['id']:
sheet.write(row_num + 1, col_num, str(k['code']) + str(k['name']), txt_bold)
sheet.write(row_num + 1, col_num + 1, str(k['total_debit']) + str(currency_symbol), amount_bold)
sheet.write(row_num + 1, col_num + 2, str(k['total_credit']) + str(currency_symbol), amount_bold)

47
dynamic_accounts_report/wizard/daybook.py

@ -89,25 +89,45 @@ class AgeingView(models.TransientModel):
def get_filter_data(self, option):
r = self.env['account.day.book'].search([('id', '=', option[0])])
default_filters = {}
company_id = self.env.company
company_domain = [('company_id', '=', company_id.id)]
journals = self.journal_ids if self.journal_ids else self.env[
'account.journal'].search(company_domain)
accounts = self.account_ids if self.account_ids else self.env[
'account.account'].search(company_domain)
company_id = self.env.companies
company_domain = [('company_id', 'in', company_id.ids)]
# journals = self.journal_ids if self.journal_ids else self.env[
# 'account.journal'].search(company_domain)
# accounts = self.account_ids if self.account_ids else self.env[
# 'account.account'].search(company_domain)
journal_ids = self.journal_ids if self.journal_ids else self.env['account.journal'].search(company_domain, order="company_id, name")
accounts_ids = self.account_ids if self.account_ids else self.env['account.account'].search(company_domain, order="company_id, name")
journals = []
o_company = False
for j in journal_ids:
if j.company_id != o_company:
journals.append(('divider', j.company_id.name))
o_company = j.company_id
journals.append((j.id, j.name, j.code))
accounts = []
o_company = False
for j in accounts_ids:
if j.company_id != o_company:
accounts.append(('divider', j.company_id.name))
o_company = j.company_id
accounts.append((j.id, j.name))
filter_dict = {
'journal_ids': self.journal_ids.ids,
'account_ids': self.account_ids.ids,
'company_id': company_id.id,
'company_id': company_id.ids,
'date_from': r.date_from,
'date_to':r.date_to,
'target_move': r.target_move,
'journals_list': [(j.id, j.name, j.code) for j in journals],
'accounts_list': [(a.id, a.name) for a in accounts],
'journals_list': journals,
'accounts_list': accounts,
'company_name': company_id and company_id.name,
'company_name': ', '.join(self.env.companies.mapped('name')),
}
filter_dict.update(default_filters)
return filter_dict
@ -181,12 +201,15 @@ class AgeingView(models.TransientModel):
move_line = self.env['account.move.line']
tables, where_clause, where_params = move_line._query_get()
wheres = [""]
companies = self.env.companies.ids
companies.append(0)
target_move = "AND l.company_id in %s" % str(tuple(companies))
if where_clause.strip():
wheres.append(where_clause.strip())
if form_data['target_move'] == 'posted':
target_move = "AND m.state = 'posted'"
target_move += " AND m.state = 'posted'"
else:
target_move = ''
target_move += """AND m.state in ('draft','posted') """
sql = ('''
SELECT l.id AS lid,m.id AS move_id, acc.name as accname, l.account_id AS account_id, l.date AS ldate, j.code AS lcode, l.currency_id,
l.amount_currency, l.ref AS lref, l.name AS lname, COALESCE(l.debit,0) AS debit, COALESCE(l.credit,0) AS credit,

65
dynamic_accounts_report/wizard/general_ledger.py

@ -43,18 +43,23 @@ class GeneralView(models.TransientModel):
r = self.env['account.general.ledger'].search([('id', '=', option[0])])
new_title = ''
trans_title = self.env['ir.translation'].search([('value', '=', title), ('module', '=', 'dynamic_accounts_report')], limit=1).src
company_id = self.env.companies.ids
if r.journal_ids:
journals = r.journal_ids
else:
journals = self.env['account.journal'].search([('company_id', 'in', company_id)])
if title == 'General Ledger' or trans_title == 'General Ledger':
if r.journal_ids:
journals = r.journal_ids
else:
journals = self.env['account.journal'].search([('company_id', 'in', company_id)])
new_title = title
if title == 'Bank Book' or trans_title == 'Bank Book':
journals = self.env['account.journal'].search([('type', '=', 'bank')],
limit=1)
journals = self.env['account.journal'].search([('type', '=', 'bank'), ('company_id', 'in', company_id)])
new_title = title
if title == 'Cash Book' or trans_title == 'Cash Book':
journals = self.env['account.journal'].search([('type', '=', 'cash')],
limit=1)
journals = self.env['account.journal'].search([('type', '=', 'cash'), ('company_id', 'in', company_id)])
new_title = title
r.write({
'titles': new_title,
@ -78,7 +83,6 @@ class GeneralView(models.TransientModel):
data.update({
'date_to': r.date_to,
})
filters = self.get_filter(option)
records = self._get_report_values(data)
currency = self._get_currency()
@ -140,42 +144,72 @@ class GeneralView(models.TransientModel):
def get_filter_data(self, option):
r = self.env['account.general.ledger'].search([('id', '=', option[0])])
default_filters = {}
company_id = self.env.company
company_domain = [('company_id', '=', company_id.id)]
journals = r.journal_ids if r.journal_ids else self.env['account.journal'].search(company_domain)
accounts = self.account_ids if self.account_ids else self.env['account.account'].search(company_domain)
company_id = self.env.companies
company_domain = [('company_id', 'in', company_id.ids)]
account_tags = r.account_tag_ids if r.account_tag_ids else self.env[
'account.account.tag'].search([])
analytics = r.analytic_ids if r.analytic_ids else self.env['account.analytic.account'].search(
company_domain)
analytic_tags = r.analytic_tag_ids if r.analytic_tag_ids else self.env[
'account.analytic.tag'].search([])
journal_ids = r.journal_ids if r.journal_ids else self.env['account.journal'].search(company_domain, order="company_id, name")
accounts_ids = self.account_ids if self.account_ids else self.env['account.account'].search(company_domain, order="company_id, name")
journals = []
o_company = False
for j in journal_ids:
if j.company_id != o_company:
journals.append(('divider', j.company_id.name))
o_company = j.company_id
journals.append((j.id, j.name, j.code))
accounts = []
o_company = False
for j in accounts_ids:
if j.company_id != o_company:
accounts.append(('divider', j.company_id.name))
o_company = j.company_id
accounts.append((j.id, j.name))
filter_dict = {
'journal_ids': r.journal_ids.ids,
'analytic_ids': r.analytic_ids.ids,
'analytic_tag_ids': r.analytic_tag_ids.ids,
'account_ids': r.account_ids.ids,
'account_tag_ids': r.account_tag_ids.ids,
'company_id': company_id.id,
'company_id': company_id.ids,
'date_from': r.date_from,
'date_to': r.date_to,
'target_move': r.target_move,
'journals_list': [(j.id, j.name, j.code) for j in journals],
'accounts_list': [(a.id, a.name) for a in accounts],
# 'journals_list': [(j.id, j.name, j.code) for j in journals],
'journals_list': journals,
# 'accounts_list': [(a.id, a.name) for a in accounts],
'accounts_list': accounts,
'account_tag_list': [(a.id, a.name) for a in account_tags],
'analytic_list': [(anl.id, anl.name) for anl in analytics],
'analytic_tag_list': [(anltag.id, anltag.name) for anltag in analytic_tags],
'company_name': company_id and company_id.name,
'company_name': ', '.join(self.env.companies.mapped('name')),
}
filter_dict.update(default_filters)
return filter_dict
def _get_report_values(self, data):
docs = data['model']
display_account = data['display_account']
init_balance = True
journals = data['journals']
accounts = self.env['account.account'].search([])
if not journals:
raise UserError(_("No journals Found! Please Add One"))
company_id = self.env.companies
company_domain = [('company_id', 'in', company_id.ids)]
accounts = self.env['account.account'].search(company_domain)
if not accounts:
raise UserError(_("No Accounts Found! Please Add One"))
account_res = self._get_accounts(accounts, init_balance, display_account, data)
@ -334,7 +368,6 @@ class GeneralView(models.TransientModel):
params = tuple(where_params)
else:
params = (tuple(accounts.ids),) + tuple(where_params)
cr.execute(sql, params)
for row in cr.dictfetchall():

42
dynamic_accounts_report/wizard/partner_leadger.py

@ -132,10 +132,11 @@ class PartnerView(models.TransientModel):
def get_filter_data(self, option):
r = self.env['account.partner.ledger'].search([('id', '=', option[0])])
default_filters = {}
company_id = self.env.company
company_domain = [('company_id', '=', company_id.id)]
journals = r.journal_ids if r.journal_ids else self.env['account.journal'].search(company_domain)
accounts = self.account_ids if self.account_ids else self.env['account.account'].search(company_domain)
company_id = self.env.companies.ids
company_domain = [('company_id', 'in', company_id)]
journal_ids = r.journal_ids if r.journal_ids else self.env['account.journal'].search(company_domain, order="company_id, name")
accounts_ids = self.account_ids if self.account_ids else self.env['account.account'].search(company_domain, order="company_id, name")
partner = r.partner_ids if r.partner_ids else self.env[
'res.partner'].search([])
@ -144,16 +145,36 @@ class PartnerView(models.TransientModel):
account_types = r.account_type_ids if r.account_type_ids \
else self.env['account.account.type'].search([('type', 'in', ('receivable', 'payable'))])
journals = []
o_company = False
for j in journal_ids:
if j.company_id != o_company:
journals.append(('divider', j.company_id.name))
o_company = j.company_id
journals.append((j.id, j.name, j.code))
accounts = []
o_company = False
for j in accounts_ids:
if j.company_id != o_company:
accounts.append(('divider', j.company_id.name))
o_company = j.company_id
accounts.append((j.id, j.name))
filter_dict = {
'journal_ids': r.journal_ids.ids,
'account_ids': r.account_ids.ids,
'company_id': company_id.id,
'company_id': company_id,
'date_from': r.date_from,
'date_to': r.date_to,
'target_move': r.target_move,
'journals_list': [(j.id, j.name, j.code) for j in journals],
'accounts_list': [(a.id, a.name) for a in accounts],
'company_name': company_id and company_id.name,
'journals_list': journals,
'accounts_list': accounts,
# 'company_name': company_id and company_id.name,
'company_name': ', '.join(self.env.companies.mapped('name')),
'partners': r.partner_ids.ids,
'reconciled': r.reconciled,
'account_type': r.account_type_ids.ids,
@ -170,11 +191,12 @@ class PartnerView(models.TransientModel):
docs = data['model']
display_account = data['display_account']
init_balance = True
company_id = self.env.companies.ids
accounts = self.env['account.account'].search([('user_type_id.type', 'in', ('receivable', 'payable')),
('company_id', '=', self.env.company.id)])
('company_id', 'in', company_id)])
if data['account_type']:
accounts = self.env['account.account'].search(
[('user_type_id.id', 'in', data['account_type'].ids),('company_id', '=', self.env.company.id)])
[('user_type_id.id', 'in', data['account_type'].ids),('company_id', 'in', company_id)])
partners = self.env['res.partner'].search([])

38
dynamic_accounts_report/wizard/trial_balance.py

@ -3,6 +3,7 @@ from odoo import fields, models, api, _
import io
import json
from odoo.http import request
from odoo.exceptions import AccessError, UserError, AccessDenied
try:
@ -80,21 +81,46 @@ class TrialView(models.TransientModel):
return filters
def get_current_company_value(self):
cookies_cids = [int(r) for r in request.httprequest.cookies.get('cids').split(",")] \
if request.httprequest.cookies.get('cids') \
else [request.env.user.company_id.id]
for company_id in cookies_cids:
if company_id not in self.env.user.company_ids.ids:
cookies_cids.remove(company_id)
if not cookies_cids:
cookies_cids = [self.env.company.id]
if len(cookies_cids) == 1:
cookies_cids.append(0)
return cookies_cids
def get_filter_data(self, option):
r = self.env['account.trial.balance'].search([('id', '=', option[0])])
default_filters = {}
company_id = self.env.company
company_domain = [('company_id', '=', company_id.id)]
journals = r.journal_ids if r.journal_ids else self.env['account.journal'].search(company_domain)
company_id = self.env.companies.ids
company_domain = [('company_id', 'in', company_id)]
journal_ids = r.journal_ids if r.journal_ids else self.env['account.journal'].search(company_domain, order="company_id, name")
journals = []
o_company = False
for j in journal_ids:
if j.company_id != o_company:
journals.append(('divider', j.company_id.name))
o_company = j.company_id
journals.append((j.id, j.name, j.code))
filter_dict = {
'journal_ids': r.journal_ids.ids,
'company_id': company_id.id,
'company_id': company_id,
'date_from': r.date_from,
'date_to': r.date_to,
'target_move': r.target_move,
'journals_list': [(j.id, j.name, j.code) for j in journals],
'company_name': company_id and company_id.name,
'journals_list': journals,
# 'journals_list': [(j.id, j.name, j.code) for j in journals],
'company_name': ', '.join(self.env.companies.mapped('name')),
}
filter_dict.update(default_filters)
return filter_dict

Loading…
Cancel
Save