Browse Source

[IMP] account_financial_report: open_items

* added option "show_partner_details"
pull/660/head
Joan Sisquella 5 years ago
parent
commit
2477566483
  1. 19
      account_financial_report/report/open_items.py
  2. 37
      account_financial_report/report/open_items_xlsx.py
  3. 15
      account_financial_report/report/templates/general_ledger.xml
  4. 251
      account_financial_report/report/templates/open_items.xml
  5. 5
      account_financial_report/wizard/open_items_wizard.py
  6. 1
      account_financial_report/wizard/open_items_wizard_view.xml

19
account_financial_report/report/open_items.py

@ -259,6 +259,19 @@ class OpenItemsReport(models.AbstractModel):
'amount_residual'] 'amount_residual']
return total_amount return total_amount
@api.model
def _get_open_items_no_partners(self, open_items_move_lines_data):
new_open_items = {}
for acc_id in open_items_move_lines_data.keys():
new_open_items[acc_id] = {}
move_lines = []
for prt_id in open_items_move_lines_data[acc_id]:
for move_line in open_items_move_lines_data[acc_id][prt_id]:
move_lines += [move_line]
move_lines = sorted(move_lines, key=lambda k: (k['date']))
new_open_items[acc_id] = move_lines
return new_open_items
@api.multi @api.multi
def _get_report_values(self, docids, data): def _get_report_values(self, docids, data):
wizard_id = data['wizard_id'] wizard_id = data['wizard_id']
@ -270,6 +283,7 @@ class OpenItemsReport(models.AbstractModel):
date_at_object = datetime.strptime(date_at, '%Y-%m-%d').date() date_at_object = datetime.strptime(date_at, '%Y-%m-%d').date()
date_from = data['date_from'] date_from = data['date_from']
target_move = data['target_move'] target_move = data['target_move']
show_partner_details = data['show_partner_details']
move_lines_data, partners_data, journals_data, accounts_data, \ move_lines_data, partners_data, journals_data, accounts_data, \
open_items_move_lines_data = self._get_data( open_items_move_lines_data = self._get_data(
@ -277,11 +291,16 @@ class OpenItemsReport(models.AbstractModel):
target_move, company_id, date_from) target_move, company_id, date_from)
total_amount = self._calculate_amounts(open_items_move_lines_data) total_amount = self._calculate_amounts(open_items_move_lines_data)
if not show_partner_details:
open_items_move_lines_data = self._get_open_items_no_partners(
open_items_move_lines_data
)
return{ return{
'doc_ids': [wizard_id], 'doc_ids': [wizard_id],
'doc_model': 'open.items.report.wizard', 'doc_model': 'open.items.report.wizard',
'docs': self.env['open.items.report.wizard'].browse(wizard_id), 'docs': self.env['open.items.report.wizard'].browse(wizard_id),
'foreign_currency': data['foreign_currency'], 'foreign_currency': data['foreign_currency'],
'show_partner_details': data['show_partner_details'],
'company_name': company.display_name, 'company_name': company.display_name,
'currency_name': company.currency_id.name, 'currency_name': company.currency_id.name,
'date_at': date_at_object.strftime("%d/%m/%Y"), 'date_at': date_at_object.strftime("%d/%m/%Y"),

37
account_financial_report/report/open_items_xlsx.py

@ -93,6 +93,7 @@ class OpenItemsXslx(models.AbstractModel):
accounts_data = res_data['accounts_data'] accounts_data = res_data['accounts_data']
partners_data = res_data['partners_data'] partners_data = res_data['partners_data']
total_amount = res_data['total_amount'] total_amount = res_data['total_amount']
show_partner_details = res_data['show_partner_details']
for account_id in Open_items.keys(): for account_id in Open_items.keys():
# Write account title # Write account title
self.write_array_title(accounts_data[account_id]['code'] + ' - ' + self.write_array_title(accounts_data[account_id]['code'] + ' - ' +
@ -100,26 +101,34 @@ class OpenItemsXslx(models.AbstractModel):
# For each partner # For each partner
if Open_items[account_id]: if Open_items[account_id]:
for partner_id in Open_items[account_id]:
type_object = 'partner'
# Write partner title
self.write_array_title(partners_data[partner_id]['name'])
if show_partner_details:
for partner_id in Open_items[account_id]:
type_object = 'partner'
# Write partner title
self.write_array_title(partners_data[partner_id]['name'])
# Display array header for move lines
self.write_array_header()
# Display account move lines
for line in Open_items[account_id][partner_id]:
self.write_line_from_dict(line)
# Display ending balance line for partner
self.write_ending_balance_from_dict(
partners_data[partner_id], type_object, total_amount,
account_id, partner_id)
# Line break
self.row_pos += 1
else:
# Display array header for move lines # Display array header for move lines
self.write_array_header() self.write_array_header()
# Display account move lines # Display account move lines
for line in Open_items[account_id][partner_id]:
for line in Open_items[account_id]:
self.write_line_from_dict(line) self.write_line_from_dict(line)
# Display ending balance line for partner
self.write_ending_balance_from_dict(
partners_data[partner_id], type_object, total_amount,
account_id, partner_id)
# Line break
self.row_pos += 1
# Display ending balance line for account # Display ending balance line for account
type_object = 'account' type_object = 'account'
self.write_ending_balance_from_dict(accounts_data[account_id], self.write_ending_balance_from_dict(accounts_data[account_id],

15
account_financial_report/report/templates/general_ledger.xml

@ -68,16 +68,15 @@
<t t-set="type" t-value='"partner_type"'/> <t t-set="type" t-value='"partner_type"'/>
</t> </t>
<!-- Display account footer -->
<t t-if="not filter_partner_ids">
<t t-call="account_financial_report.report_general_ledger_ending_cumul">
<t t-set="account_or_partner_object" t-value="account"/>
<t t-set="type" t-value='"account_type"'/>
</t>
</t>
</div> </div>
</t> </t>
<!-- Display account footer -->
<t t-if="not filter_partner_ids">
<t t-call="account_financial_report.report_general_ledger_ending_cumul">
<t t-set="account_or_partner_object" t-value="account"/>
<t t-set="type" t-value='"account_type"'/>
</t>
</t>
</t> </t>
</div> </div>
</t> </t>

251
account_financial_report/report/templates/open_items.xml

@ -25,7 +25,6 @@
<t t-call="account_financial_report.report_open_items_filters"/> <t t-call="account_financial_report.report_open_items_filters"/>
<t t-foreach="Open_Items.keys()" t-as="account_id"> <t t-foreach="Open_Items.keys()" t-as="account_id">
<div class="page_break">
<!-- Display account header --> <!-- Display account header -->
<div class="act_as_table list_table" style="margin-top: 10px;" /> <div class="act_as_table list_table" style="margin-top: 10px;" />
<div class="account_title" <div class="account_title"
@ -34,34 +33,45 @@
- -
<span t-esc="accounts_data[account_id]['name']"/> <span t-esc="accounts_data[account_id]['name']"/>
</div> </div>
<t t-if="not show_partner_details">
<div class="act_as_table data_table" style="width: 100%;">
<t t-call="account_financial_report.report_open_items_lines_header"/>
<!-- Display account partners -->
<t t-foreach="Open_Items[account_id]" t-as="partner_id" >
<!-- Display account move lines -->
<t t-foreach="Open_Items[account_id]" t-as="line" >
<t t-call="account_financial_report.report_open_items_lines"/>
</t>
</div>
</t>
<t t-if="show_partner_details">
<div class="page_break"> <div class="page_break">
<!-- Display partner header -->
<div class="act_as_caption account_title">
<span t-esc="partners_data[partner_id]['name']"/>
</div>
<!-- Display partner move lines -->
<t t-call="account_financial_report.report_open_items_lines"/>
<!-- Display partner footer -->
<t t-call="account_financial_report.report_open_items_ending_cumul">
<t t-set="account_or_partner_id" t-value="partners_data[partner_id]"/>
<t t-set="currency_id" t-value="accounts_data[account_id]['currency_name']"/>
<t t-set="type" t-value='"partner_type"'/>
<!-- Display account partners -->
<t t-foreach="Open_Items[account_id]" t-as="partner_id" >
<div class="act_as_caption account_title">
<span t-esc="partners_data[partner_id]['name']"/>
</div>
<div class="act_as_table data_table" style="width: 100%;">
<!-- Display partner header -->
<t t-call="account_financial_report.report_open_items_lines_header"/>
<!-- Display partner move lines -->
<t t-foreach="Open_Items[account_id][partner_id]" t-as="line" >
<t t-call="account_financial_report.report_open_items_lines"/>
</t>
</div>
<t t-call="account_financial_report.report_open_items_ending_cumul">
<t t-set="account_or_partner_id" t-value="partners_data[partner_id]"/>
<t t-set="currency_id" t-value="accounts_data[account_id]['currency_name']"/>
<t t-set="type" t-value='"partner_type"'/>
</t>
</t> </t>
</div> </div>
</t> </t>
<!-- Display account footer --> <!-- Display account footer -->
<t t-call="account_financial_report.report_open_items_ending_cumul"> <t t-call="account_financial_report.report_open_items_ending_cumul">
<t t-set="account_or_partner_id" t-value="accounts_data[account_id]"/> <t t-set="account_or_partner_id" t-value="accounts_data[account_id]"/>
<t t-set="currency_id" t-value="accounts_data[account_id]['currency_name']"/> <t t-set="currency_id" t-value="accounts_data[account_id]['currency_name']"/>
<t t-set="type" t-value='"account_type"'/> <t t-set="type" t-value='"account_type"'/>
</t> </t>
</div>
</t> </t>
</div> </div>
</template> </template>
@ -89,119 +99,116 @@
</div> </div>
</template> </template>
<template id="account_financial_report.report_open_items_lines">
<div class="act_as_table data_table" style="width: 100%;">
<!-- Display table headers for lines -->
<div class="act_as_thead">
<div class="act_as_row labels">
<!--## date-->
<div class="act_as_cell first_column" style="width: 5.51%;">
Date</div>
<!--## move-->
<div class="act_as_cell" style="width: 9.76%;">Entry</div>
<!--## journal-->
<div class="act_as_cell" style="width: 4.78%;">Journal</div>
<!--## account code-->
<div class="act_as_cell" style="width: 5.38%;">Account</div>
<!--## partner-->
<div class="act_as_cell" style="width: 15.07%;">Partner
</div>
<!--## ref - label-->
<div class="act_as_cell" style="width: 24.5%;">Ref -
Label</div>
<!--## date_due-->
<div class="act_as_cell" style="width: 6.47%;">Due
date</div>
<!--## amount_total_due-->
<div class="act_as_cell" style="width: 6.57%;">Original
</div>
<!--## amount_residual-->
<div class="act_as_cell" style="width: 6.57%;">Residual</div>
<t t-if="foreign_currency">
<!--## currency_name-->
<div class="act_as_cell" style="width: 2.25%;">Cur.</div>
<!--## amount_total_due_currency-->
<div class="act_as_cell amount" style="width: 6.57%;">Cur. Original</div>
<!--## amount_residual_currency-->
<div class="act_as_cell amount" style="width: 6.57%;">Cur. Residual</div>
</t>
<template id="account_financial_report.report_open_items_lines_header">
<!-- Display table headers for lines -->
<div class="act_as_thead">
<div class="act_as_row labels">
<!--## date-->
<div class="act_as_cell first_column" style="width: 5.51%;">
Date</div>
<!--## move-->
<div class="act_as_cell" style="width: 9.76%;">Entry</div>
<!--## journal-->
<div class="act_as_cell" style="width: 4.78%;">Journal</div>
<!--## account code-->
<div class="act_as_cell" style="width: 5.38%;">Account</div>
<!--## partner-->
<div class="act_as_cell" style="width: 15.07%;">Partner
</div> </div>
<!--## ref - label-->
<div class="act_as_cell" style="width: 24.5%;">Ref -
Label</div>
<!--## date_due-->
<div class="act_as_cell" style="width: 6.47%;">Due
date</div>
<!--## amount_total_due-->
<div class="act_as_cell" style="width: 6.57%;">Original
</div>
<!--## amount_residual-->
<div class="act_as_cell" style="width: 6.57%;">Residual</div>
<t t-if="foreign_currency">
<!--## currency_name-->
<div class="act_as_cell" style="width: 2.25%;">Cur.</div>
<!--## amount_total_due_currency-->
<div class="act_as_cell amount" style="width: 6.57%;">Cur. Original</div>
<!--## amount_residual_currency-->
<div class="act_as_cell amount" style="width: 6.57%;">Cur. Residual</div>
</t>
</div> </div>
</div>
</template>
<!-- Display each lines -->
<t t-foreach="Open_Items[account_id][partner_id]" t-as="line" >
<!-- # lines or centralized lines -->
<div class="act_as_row lines">
<!--## date-->
<div class="act_as_cell left">
<span t-raw="line['date']"/>
</div>
<!--## move-->
<div class="act_as_cell left">
<t t-set="res_model" t-value="'account.move'"/>
<span>
<a t-att-data-active-id="line['move_id']"
t-att-data-res-model="res_model"
class="o_account_financial_reports_web_action"
style="color: black;">
<t t-esc="line['move_name']"/>
</a>
</span>
</div>
<!--## journal-->
<div class="act_as_cell left">
<span t-esc="line['journal']"/>
</div>
<!--## account code-->
<div class="act_as_cell left">
<span t-esc="line['account']"/>
</div>
<!--## partner-->
<div class="act_as_cell left">
<template id="account_financial_report.report_open_items_lines">
<!-- # lines or centralized lines -->
<div class="act_as_row lines">
<!--## date-->
<div class="act_as_cell left">
<span t-raw="line['date']"/>
</div>
<!--## move-->
<div class="act_as_cell left">
<t t-set="res_model" t-value="'account.move'"/>
<span>
<a t-att-data-active-id="line['move_id']"
t-att-data-res-model="res_model"
class="o_account_financial_reports_web_action"
style="color: black;">
<t t-esc="line['move_name']"/>
</a>
</span>
</div>
<!--## journal-->
<div class="act_as_cell left">
<span t-esc="line['journal']"/>
</div>
<!--## account code-->
<div class="act_as_cell left">
<span t-esc="line['account']"/>
</div>
<!--## partner-->
<div class="act_as_cell left">
<!-- <span t-if="line.get('partner_id', False)" t-esc="line['partner_id']"/>--> <!-- <span t-if="line.get('partner_id', False)" t-esc="line['partner_id']"/>-->
<span t-esc="line['partner_name']"/>
</div>
<!--## ref - label-->
<div class="act_as_cell left">
<span t-esc="line['ref']"/>
</div>
<!--## date_due-->
<div class="act_as_cell left">
<span t-esc="line['date_maturity']"/>
<span t-esc="line['partner_name']"/>
</div>
<!--## ref - label-->
<div class="act_as_cell left">
<span t-esc="line['ref']"/>
</div>
<!--## date_due-->
<div class="act_as_cell left">
<span t-esc="line['date_maturity']"/>
</div>
<!--## amount_total_due-->
<div class="act_as_cell amount">
<span t-if="line.get('original', False)" t-esc="line['original']" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</div>
<!--## amount_residual-->
<div class="act_as_cell amount">
<span t-esc="line['amount_residual']" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
</div>
<t t-if="foreign_currency">
<t t-if="line['currency_id']">
<!--## currency_name-->
<div class="act_as_cell amount">
<span t-esc="line['currency_name']"/>
</div> </div>
<!--## amount_total_due-->
<!--## amount_total_due_currency-->
<div class="act_as_cell amount"> <div class="act_as_cell amount">
<span t-if="line.get('original', False)" t-esc="line['original']" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
<span t-esc="line['amount_currency']"/>
</div> </div>
<!--## amount_residual-->
<!--## amount_residual_currency-->
<div class="act_as_cell amount"> <div class="act_as_cell amount">
<span t-esc="line['amount_residual']" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
<span t-esc="line['amount_residual_currency']"/>
</div> </div>
<t t-if="foreign_currency">
<t t-if="line['currency_id']">
<!--## currency_name-->
<div class="act_as_cell amount">
<span t-esc="line['currency_name']"/>
</div>
<!--## amount_total_due_currency-->
<div class="act_as_cell amount">
<span t-esc="line['amount_currency']"/>
</div>
<!--## amount_residual_currency-->
<div class="act_as_cell amount">
<span t-esc="line['amount_residual_currency']"/>
</div>
</t>
<t t-if="not line['currency_id']">
<!--## currency_name-->
<div class="act_as_cell"/>
<!--## amount_total_due_currency-->
<div class="act_as_cell"/>
<!--## amount_residual_currency-->
<div class="act_as_cell"/>
</t>
</t>
</div>
</t>
<t t-if="not line['currency_id']">
<!--## currency_name-->
<div class="act_as_cell"/>
<!--## amount_total_due_currency-->
<div class="act_as_cell"/>
<!--## amount_residual_currency-->
<div class="act_as_cell"/>
</t>
</t> </t>
</div> </div>
</template> </template>

5
account_financial_report/wizard/open_items_wizard.py

@ -53,6 +53,10 @@ class OpenItemsReportWizard(models.TransientModel):
'will display initial and final balance in that currency.', 'will display initial and final balance in that currency.',
default=lambda self: self._default_foreign_currency(), default=lambda self: self._default_foreign_currency(),
) )
show_partner_details = fields.Boolean(
string='Show Partner Details',
default=True,
)
def _default_foreign_currency(self): def _default_foreign_currency(self):
return self.env.user.has_group('base.group_multi_currency') return self.env.user.has_group('base.group_multi_currency')
@ -135,6 +139,7 @@ class OpenItemsReportWizard(models.TransientModel):
'only_posted_moves': self.target_move == 'posted', 'only_posted_moves': self.target_move == 'posted',
'hide_account_at_0': self.hide_account_at_0, 'hide_account_at_0': self.hide_account_at_0,
'foreign_currency': self.foreign_currency, 'foreign_currency': self.foreign_currency,
'show_partner_details': self.show_partner_details,
'company_id': self.company_id.id, 'company_id': self.company_id.id,
'target_move': self.target_move, 'target_move': self.target_move,
'account_ids': self.account_ids.ids, 'account_ids': self.account_ids.ids,

1
account_financial_report/wizard/open_items_wizard_view.xml

@ -17,6 +17,7 @@
</group> </group>
<group name="other_filters"> <group name="other_filters">
<field name="target_move" widget="radio"/> <field name="target_move" widget="radio"/>
<field name="show_partner_details"/>
<field name="hide_account_at_0"/> <field name="hide_account_at_0"/>
<field name="foreign_currency"/> <field name="foreign_currency"/>
</group> </group>

Loading…
Cancel
Save