Browse Source

[FIX] Bug Fixed 'dynamic_accounts_report'

pull/213/head
Ajmal Cybro 3 years ago
parent
commit
63b19fca31
  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. 1
      dynamic_accounts_report/static/src/js/partner_ledger.js
  10. 2
      dynamic_accounts_report/static/src/xml/ageing.xml
  11. 32
      dynamic_accounts_report/static/src/xml/daybook.xml
  12. 30
      dynamic_accounts_report/static/src/xml/financial_reports_view.xml
  13. 32
      dynamic_accounts_report/static/src/xml/general_ledger_view.xml
  14. 25
      dynamic_accounts_report/static/src/xml/partner_ledger_view.xml
  15. 20
      dynamic_accounts_report/static/src/xml/trial_balance_view.xml
  16. 13
      dynamic_accounts_report/wizard/ageing.py
  17. 73
      dynamic_accounts_report/wizard/balance_sheet.py
  18. 76
      dynamic_accounts_report/wizard/cash_flow.py
  19. 47
      dynamic_accounts_report/wizard/daybook.py
  20. 67
      dynamic_accounts_report/wizard/general_ledger.py
  21. 44
      dynamic_accounts_report/wizard/partner_leadger.py
  22. 68
      dynamic_accounts_report/wizard/trial_balance.py

2
dynamic_accounts_report/__manifest__.py

@ -22,7 +22,7 @@
{
'name': 'Dynamic Financial Reports',
'version': '13.0.1.0.3',
'version': '13.0.1.0.5',
'category': 'Accounting',
'summary': """Dynamic Financial Reports with drill
down and filters Community Edition""",

5
dynamic_accounts_report/doc/RELEASE_NOTES.md

@ -21,5 +21,8 @@
#### UPDT
- Arabic Translation added
#### 05.02.2022
#### Version 13.0.1.0.4
#### 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"/>

1
dynamic_accounts_report/static/src/js/partner_ledger.js

@ -48,7 +48,6 @@ odoo.define('dynamic_accounts_report.partner_ledger', function (require) {
})
},
_onCalendarIconClick: function (ev) {
var $calendarInputGroup = $(ev.currentTarget);

2
dynamic_accounts_report/static/src/xml/ageing.xml

@ -219,7 +219,7 @@
<t t-name="AgeingFilterView">
<div class="row" style="margin-right: 10px; margin-left: 10px;">
<div class="row" style="margin-right: 10px; margin-left: 10px;">
<div class="sub_container_left" style="width:70%;">
<div class="report_print">
<button type="button" class="btn btn-primary" id="pdf"

32
dynamic_accounts_report/static/src/xml/daybook.xml

@ -30,8 +30,8 @@
</tr>
</thead>
<tbody style="width:100%;">
</tbody>
<!-- <tbody style="width:100%;">-->
<!-- </tbody>-->
<tbody>
<t t-foreach="report_lines" t-as="account">
<t t-set="common_id" t-value="0"/>
@ -166,9 +166,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>
@ -180,9 +196,21 @@
</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>

30
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']"
@ -65,6 +65,8 @@
<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>
<t t-set="common_id" t-value="'a'+account['id']"/>
</tr>
</t>
@ -170,8 +172,21 @@ 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>
@ -184,9 +199,22 @@ 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>

32
dynamic_accounts_report/static/src/xml/general_ledger_view.xml

@ -167,7 +167,7 @@
</div>
</div>
<label class="" for="date_to">End Date :</label>
<label class="" for="gen_date_to">End Date :</label>
<div class="input-group date" id="gen_date_to" data-target-input="nearest">
<input type="text" name="gen_date_to" class="form-control datetimepicker-input" data-target="#gen_date_to" t-att-name="prefix"/>
@ -190,9 +190,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>
@ -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,9 +193,22 @@
<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>
@ -207,9 +220,21 @@
</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>

20
dynamic_accounts_report/static/src/xml/trial_balance_view.xml

@ -254,9 +254,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">
<option t-attf-value="{{journal[0]}}">
<t t-esc="journal[1]"/>
</option>
<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>

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

@ -38,7 +38,6 @@ class BalanceSheetView(models.TransientModel):
@api.model
def view_report(self, option, tag):
r = self.env['dynamic.balance.sheet.report'].search(
[('id', '=', option[0])])
data = {
@ -60,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))
@ -116,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'])
@ -141,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
@ -168,6 +166,7 @@ class BalanceSheetView(models.TransientModel):
parent_list = list(set(parent_list))
final_report_lines = []
for rec in report_lines_move:
if rec['report_type'] != 'accounts':
if rec['r_id'] in parent_list:
@ -226,6 +225,7 @@ class BalanceSheetView(models.TransientModel):
rec['m_credit'] = "{:,.2f}".format(rec['credit']) + " " + symbol
rec['m_balance'] = "{:,.2f}".format(
rec['balance']) + " " + symbol
return {
'name': tag,
'type': 'ir.actions.client',
@ -296,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)
@ -309,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],
@ -467,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():

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,

67
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
journals = r.journal_ids
if title == 'General Ledger' or trans_title == 'General Ledger':
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,
@ -140,42 +145,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)

44
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([])
@ -296,7 +318,7 @@ class PartnerView(models.TransientModel):
params = (tuple(accounts.ids),) + tuple(where_params)
cr.execute(sql, params)
account_list = { x.id : {'name' : x.name, 'code': x.code} for x in accounts}
account_list = {x.id: {'name': x.name, 'code': x.code} for x in accounts}
for row in cr.dictfetchall():
balance = 0

68
dynamic_accounts_report/wizard/trial_balance.py

@ -1,8 +1,11 @@
import time
from odoo import fields, models, api
from odoo import fields, models, api, _
import io
import json
from odoo.http import request
from odoo.exceptions import AccessError, UserError, AccessDenied
try:
from odoo.tools.misc import xlsxwriter
except ImportError:
@ -22,10 +25,6 @@ class TrialView(models.TransientModel):
('not_zero', 'With balance is not equal to 0')],
string='Display Accounts', required=True, default='movement')
# target_move = fields.Selection([('posted', 'All Posted Entries'),
# ('all', 'All Entries')],
# string='Target Moves', required=True)
@api.model
def view_report(self, option):
r = self.env['account.trial.balance'].search([('id', '=', option[0])])
@ -78,24 +77,50 @@ class TrialView(models.TransientModel):
filters['company_id'] = ''
filters['journals_list'] = data.get('journals_list')
filters['company_name'] = data.get('company_name')
filters['target_move'] = data.get('target_move').capitalize()
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 = r.env.user.company_id
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
@ -105,6 +130,8 @@ class TrialView(models.TransientModel):
display_account = data['display_account']
journals = data['journals']
accounts = self.env['account.account'].search([])
if not accounts:
raise UserError(_("No Accounts Found! Please Add One"))
account_res = self._get_accounts(accounts, display_account, data)
debit_total = 0
debit_total = sum(x['debit'] for x in account_res)
@ -120,11 +147,13 @@ class TrialView(models.TransientModel):
@api.model
def create(self, vals):
vals['target_move'] = 'all'
vals['target_move'] = 'posted'
res = super(TrialView, self).create(vals)
return res
def write(self, vals):
if vals.get('target_move'):
vals.update({'target_move': vals.get('target_move').lower()})
if vals.get('journal_ids'):
vals.update({'journal_ids': [(6, 0, vals.get('journal_ids'))]})
if vals.get('journal_ids') == []:
@ -139,15 +168,15 @@ class TrialView(models.TransientModel):
tables, where_clause, where_params = self.env['account.move.line']._query_get()
tables = tables.replace('"', '')
if not tables:
tables = 'account_move_line LEFT JOIN account_move AS account_move_line__move_id ON (account_move_line.move_id = account_move_line__move_id.id) JOIN account_journal jrnl ON (account_move_line.journal_id=jrnl.id)'
tables = 'account_move_line'
wheres = [""]
if where_clause.strip():
wheres.append(where_clause.strip())
filters = " AND ".join(wheres)
if data['target_move'] == 'posted':
filters += " AND account_move_line__move_id.state = 'posted'"
filters += " AND account_move_line.parent_state = 'posted'"
else:
filters += " AND account_move_line__move_id.state in ('draft','posted')"
filters += " AND account_move_line.parent_state in ('draft','posted')"
if data.get('date_from'):
filters += " AND account_move_line.date >= '%s'" % data.get('date_from')
if data.get('date_to'):
@ -155,7 +184,7 @@ class TrialView(models.TransientModel):
if data['journals']:
filters += ' AND jrnl.id IN %s' % str(tuple(data['journals'].ids) + tuple([0]))
# tables += ' JOIN account_journal jrnl ON (account_move_line.journal_id=jrnl.id)'
tables += ' JOIN account_journal jrnl ON (account_move_line.journal_id=jrnl.id)'
# compute the balance, debit and credit for the provided accounts
request = (
"SELECT account_id AS id, SUM(debit) AS debit, SUM(credit) AS credit, (SUM(debit) - SUM(credit)) AS balance" + \
@ -203,11 +232,10 @@ class TrialView(models.TransientModel):
if where_clause.strip():
wheres.append(where_clause.strip())
filters = " AND ".join(wheres)
tables += ' JOIN account_move am ON (account_move_line.move_id=am.id)'
if data['target_move'] == 'posted':
filters += " AND am.state = 'posted'"
filters += " AND account_move_line.parent_state = 'posted'"
else:
filters += " AND am.state in ('draft','posted')"
filters += " AND account_move_line.parent_state in ('draft','posted')"
if data.get('date_from'):
filters += " AND account_move_line.date < '%s'" % data.get('date_from')
@ -254,7 +282,7 @@ class TrialView(models.TransientModel):
'border_color': 'black'})
txt = workbook.add_format({'font_size': '10px', 'border': 1})
txt_l = workbook.add_format({'font_size': '10px', 'border': 1, 'bold': True})
sheet.merge_range('A2:D3', self.env.user.company_id.name + ':' + ' Trial Balance', head)
sheet.merge_range('A2:D3', filters.get('company_name') + ':' + ' Trial Balance', head)
date_head = workbook.add_format({'align': 'center', 'bold': True,
'font_size': '10px'})
date_style = workbook.add_format({'align': 'center',

Loading…
Cancel
Save