[IMP] account_financial_report: open_items
* added option "show_partner_details"pull/939/head
parent
8f1c150c39
commit
0f523bf92a
|
@ -324,6 +324,20 @@ class OpenItemsReport(models.AbstractModel):
|
|||
total_amount[account_id]["residual"] += move_line["amount_residual"]
|
||||
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
|
||||
def _get_report_values(self, docids, data):
|
||||
wizard_id = data["wizard_id"]
|
||||
company = self.env["res.company"].browse(data["company_id"])
|
||||
|
@ -334,6 +348,7 @@ class OpenItemsReport(models.AbstractModel):
|
|||
date_at_object = datetime.strptime(date_at, "%Y-%m-%d").date()
|
||||
date_from = data["date_from"]
|
||||
target_move = data["target_move"]
|
||||
show_partner_details = data["show_partner_details"]
|
||||
|
||||
(
|
||||
move_lines_data,
|
||||
|
@ -346,11 +361,16 @@ class OpenItemsReport(models.AbstractModel):
|
|||
)
|
||||
|
||||
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 {
|
||||
"doc_ids": [wizard_id],
|
||||
"doc_model": "open.items.report.wizard",
|
||||
"docs": self.env["open.items.report.wizard"].browse(wizard_id),
|
||||
"foreign_currency": data["foreign_currency"],
|
||||
"show_partner_details": data["show_partner_details"],
|
||||
"company_name": company.display_name,
|
||||
"currency_name": company.currency_id.name,
|
||||
"date_at": date_at_object.strftime("%d/%m/%Y"),
|
||||
|
|
|
@ -109,6 +109,7 @@ class OpenItemsXslx(models.AbstractModel):
|
|||
accounts_data = res_data["accounts_data"]
|
||||
partners_data = res_data["partners_data"]
|
||||
total_amount = res_data["total_amount"]
|
||||
show_partner_details = res_data["show_partner_details"]
|
||||
for account_id in Open_items.keys():
|
||||
# Write account title
|
||||
self.write_array_title(
|
||||
|
@ -119,30 +120,38 @@ class OpenItemsXslx(models.AbstractModel):
|
|||
|
||||
# For each partner
|
||||
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
|
||||
self.write_array_header()
|
||||
|
||||
# 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)
|
||||
|
||||
# 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
|
||||
type_object = "account"
|
||||
self.write_ending_balance_from_dict(
|
||||
|
|
|
@ -85,20 +85,20 @@
|
|||
/>
|
||||
<t t-set="type" t-value='"partner_type"' />
|
||||
</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>
|
||||
</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>
|
||||
</div>
|
||||
</t>
|
||||
|
|
|
@ -28,26 +28,48 @@
|
|||
<!-- Display filters -->
|
||||
<t t-call="account_financial_report.report_open_items_filters" />
|
||||
<t t-foreach="Open_Items.keys()" t-as="account_id">
|
||||
<div class="page_break">
|
||||
<!-- Display account header -->
|
||||
<div class="act_as_table list_table" style="margin-top: 10px;" />
|
||||
<div class="account_title" style="width: 100%;">
|
||||
<!-- Display account header -->
|
||||
<div class="act_as_table list_table" style="margin-top: 10px;" />
|
||||
<div class="account_title" style="width: 100%;">
|
||||
<span t-esc="accounts_data[account_id]['code']" />
|
||||
-
|
||||
<span t-esc="accounts_data[account_id]['name']" />
|
||||
</div>
|
||||
<!-- Display account partners -->
|
||||
<t t-foreach="Open_Items[account_id]" t-as="partner_id">
|
||||
<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-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 move lines -->
|
||||
<t t-foreach="Open_Items[account_id]" t-as="line">
|
||||
<t
|
||||
t-call="account_financial_report.report_open_items_lines"
|
||||
/>
|
||||
<!-- Display partner footer -->
|
||||
</t>
|
||||
</div>
|
||||
</t>
|
||||
<t t-if="show_partner_details">
|
||||
<div class="page_break">
|
||||
<!-- 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"
|
||||
>
|
||||
|
@ -61,21 +83,21 @@
|
|||
/>
|
||||
<t t-set="type" t-value='"partner_type"' />
|
||||
</t>
|
||||
</div>
|
||||
</t>
|
||||
<!-- Display account footer -->
|
||||
<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="currency_id"
|
||||
t-value="accounts_data[account_id]['currency_name']"
|
||||
/>
|
||||
<t t-set="type" t-value='"account_type"' />
|
||||
</t>
|
||||
</div>
|
||||
</t>
|
||||
</div>
|
||||
</t>
|
||||
<!-- Display account footer -->
|
||||
<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="currency_id"
|
||||
t-value="accounts_data[account_id]['currency_name']"
|
||||
/>
|
||||
<t t-set="type" t-value='"account_type"' />
|
||||
</t>
|
||||
</t>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -101,133 +123,130 @@
|
|||
</div>
|
||||
</div>
|
||||
</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>
|
||||
<!--## 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>
|
||||
<!-- 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">
|
||||
<!-- <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']" />
|
||||
</div>
|
||||
<!--## amount_total_due-->
|
||||
</div>
|
||||
</template>
|
||||
<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-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-if="line.get('original', False)"
|
||||
t-esc="line['original']"
|
||||
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"
|
||||
/>
|
||||
<span t-esc="line['currency_name']" />
|
||||
</div>
|
||||
<!--## amount_residual-->
|
||||
<!--## amount_total_due_currency-->
|
||||
<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_currency']" />
|
||||
</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>
|
||||
<!--## 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>
|
||||
</template>
|
||||
|
|
|
@ -178,6 +178,7 @@ class OpenItemsReportWizard(models.TransientModel):
|
|||
"only_posted_moves": self.target_move == "posted",
|
||||
"hide_account_at_0": self.hide_account_at_0,
|
||||
"foreign_currency": self.foreign_currency,
|
||||
"show_partner_details": self.show_partner_details,
|
||||
"company_id": self.company_id.id,
|
||||
"target_move": self.target_move,
|
||||
"account_ids": self.account_ids.ids,
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
</group>
|
||||
<group name="other_filters">
|
||||
<field name="target_move" widget="radio" />
|
||||
<field name="show_partner_details" />
|
||||
<field name="hide_account_at_0" />
|
||||
<field name="foreign_currency" />
|
||||
</group>
|
||||
|
|
Loading…
Reference in New Issue