Initial Port of customer statements
This commit is contained in:
committed by
Miquel Raïch
parent
1ffec3d4ee
commit
ad482b33d0
130
partner_statement/views/activity_statement.xml
Normal file
130
partner_statement/views/activity_statement.xml
Normal file
@@ -0,0 +1,130 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright 2018 Eficent Business and IT Consulting Services S.L.
|
||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
|
||||
<odoo>
|
||||
|
||||
<template id="partner_statement.activity_statement_document">
|
||||
<t t-call="web.external_layout">
|
||||
<t t-set="o" t-value="o.with_context({'lang': lang})"/>
|
||||
<t t-set="address">
|
||||
<address t-esc="o" t-options='{"widget": "contact", "fields": ["address", "name"], "no_marker": True}' />
|
||||
<div t-if="o.vat" class="mt16"><t t-esc="company.country_id.vat_label or 'Tax ID'"/>: <span t-field="o.partner_id.vat"/></div>
|
||||
</t>
|
||||
<div class="page">
|
||||
<h2 >Statement of Account</h2>
|
||||
<p>
|
||||
Date: <span t-esc="d['today']" /><br/>
|
||||
<t t-if="o.ref">Partner ref: <span t-field="o.ref"/></t>
|
||||
</p>
|
||||
|
||||
<t t-if="d['currencies']">
|
||||
<br/>
|
||||
<t t-foreach="d['currencies'].items()" t-as="currency">
|
||||
<t t-set="display_currency" t-value="Currencies[currency[0]]" />
|
||||
<t t-set="currency" t-value="currency[1]" />
|
||||
<p>
|
||||
<span t-esc="'' if account_type == 'receivable' else 'Supplier '"/>Statement between <span t-esc="d['start']" /> and <span t-esc="d['end']" /> in <span t-esc="display_currency.name"/>
|
||||
</p>
|
||||
<table class="table table-condensed table-statement">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Reference number</th>
|
||||
<th>Date</th>
|
||||
<th>Description</th>
|
||||
<th class="amount">Amount</th>
|
||||
<th class="amount">Balance</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td />
|
||||
<td>
|
||||
<span t-esc="d['start']"/>
|
||||
</td>
|
||||
<td>
|
||||
Balance Forward
|
||||
</td>
|
||||
<td />
|
||||
<td class="amount">
|
||||
<span t-esc="currency['balance_forward']" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr t-foreach="currency['lines']" t-as="line" t-att-class="'statement-blocked' if line['blocked'] else ''">
|
||||
|
||||
<td>
|
||||
<span t-esc="line['move_id']"/>
|
||||
</td>
|
||||
<td>
|
||||
<span t-esc="line['date']"/>
|
||||
</td>
|
||||
<td>
|
||||
<t t-if="line['name'] != '/'">
|
||||
<t t-if="not line['ref']">
|
||||
<span t-esc="line['name']"/>
|
||||
</t>
|
||||
<t t-if="line['ref'] and line['name']">
|
||||
<t t-if="line['name'] not in line['ref']">
|
||||
<span t-esc="line['name']"/>
|
||||
</t>
|
||||
<t t-if="line['ref'] not in line['name']">
|
||||
<span t-esc="line['ref']"/>
|
||||
</t>
|
||||
</t>
|
||||
</t>
|
||||
<t t-if="line['name'] == '/'">
|
||||
<span t-esc="line['ref']"/>
|
||||
</t>
|
||||
</td>
|
||||
<td class="amount">
|
||||
<span t-esc="line['amount']" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
|
||||
</td>
|
||||
<td class="amount">
|
||||
<span t-esc="line['balance']" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td />
|
||||
<td>
|
||||
<span t-esc="d['end']"/>
|
||||
</td>
|
||||
<td>
|
||||
Ending Balance
|
||||
</td>
|
||||
<td />
|
||||
<td class="amount">
|
||||
<span t-esc="currency['amount_due']" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<t t-call="partner_statement.aging_buckets" t-if="currency['buckets']" />
|
||||
</t>
|
||||
</t>
|
||||
<p t-if="d.get('no_entries')">
|
||||
<strong>The partner doesn't have due entries.</strong>
|
||||
</p>
|
||||
</div>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<template id="activity_statement">
|
||||
<t t-call="web.html_container">
|
||||
<t t-foreach="docs" t-as="o">
|
||||
<t t-set="d" t-value="data.get(o.id)" />
|
||||
<t t-call="partner_statement.activity_statement_document" t-lang="o.lang"/>
|
||||
</t>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<report id="action_print_activity_statement"
|
||||
model="res.partner"
|
||||
report_type="qweb-pdf"
|
||||
menu="False"
|
||||
string="Activity Statement"
|
||||
name="partner_statement.activity_statement"
|
||||
file="partner_statement.activity_statement"
|
||||
/>
|
||||
|
||||
</odoo>
|
||||
49
partner_statement/views/aging_buckets.xml
Normal file
49
partner_statement/views/aging_buckets.xml
Normal file
@@ -0,0 +1,49 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright 2018 Eficent Business and IT Consulting Services S.L.
|
||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
|
||||
<odoo>
|
||||
|
||||
<template id="aging_buckets">
|
||||
<p>
|
||||
Aging Report at <span t-esc="d['end']" /> in <span t-esc="display_currency.name"/>:
|
||||
</p>
|
||||
<table class="table table-sm table-statement">
|
||||
<thead>
|
||||
<tr>
|
||||
<t t-foreach="bucket_labels" t-as="bl">
|
||||
<th class="amount">
|
||||
<span t-esc="bl" />
|
||||
</th>
|
||||
</t>
|
||||
</tr>
|
||||
</thead>
|
||||
<t t-set="buckets" t-value="currency['buckets']" />
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="amount">
|
||||
<span t-esc="buckets.get('current', 0.0)" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
|
||||
</td>
|
||||
<td class="amount">
|
||||
<span t-esc="buckets.get('b_1_30', 0.0)" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
|
||||
</td>
|
||||
<td class="amount">
|
||||
<span t-esc="buckets.get('b_30_60', 0.0)" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
|
||||
</td>
|
||||
<td class="amount">
|
||||
<span t-esc="buckets.get('b_60_90', 0.0)" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
|
||||
</td>
|
||||
<td class="amount">
|
||||
<span t-esc="buckets.get('b_90_120', 0.0)" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
|
||||
</td>
|
||||
<td class="amount">
|
||||
<span t-esc="buckets.get('b_over_120', 0.0)" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
|
||||
</td>
|
||||
<td class="amount">
|
||||
<span t-esc="buckets.get('balance', 0.0)" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</template>
|
||||
|
||||
</odoo>
|
||||
12
partner_statement/views/assets.xml
Normal file
12
partner_statement/views/assets.xml
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright 2018 Eficent Business and IT Consulting Services S.L.
|
||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
|
||||
<odoo>
|
||||
|
||||
<template id="report_assets_common" name="oca_statements report assets" inherit_id="web.report_assets_common">
|
||||
<xpath expr="." position="inside">
|
||||
<link rel="stylesheet" href="/partner_statement/static/src/scss/layout_statement.scss" type="text/scss" />
|
||||
</xpath>
|
||||
</template>
|
||||
|
||||
</odoo>
|
||||
126
partner_statement/views/outstanding_statement.xml
Normal file
126
partner_statement/views/outstanding_statement.xml
Normal file
@@ -0,0 +1,126 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright 2018 Eficent Business and IT Consulting Services S.L.
|
||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
|
||||
<odoo>
|
||||
|
||||
<template id="partner_statement.outstanding_statement_document">
|
||||
<t t-call="web.external_layout">
|
||||
<t t-set="o" t-value="o.with_context({'lang': lang})"/>
|
||||
<t t-set="address">
|
||||
<address t-esc="o" t-options='{"widget": "contact", "fields": ["address", "name"], "no_marker": True}' />
|
||||
<div t-if="o.vat" class="mt16"><t t-esc="company.country_id.vat_label or 'Tax ID'"/>: <span t-field="o.partner_id.vat"/></div>
|
||||
</t>
|
||||
<div class="page">
|
||||
<h2 >Statement of Account</h2>
|
||||
<p>
|
||||
Date: <span t-esc="d['today']" /><br/>
|
||||
<t t-if="o.ref">Partner ref: <span t-field="o.ref"/></t>
|
||||
</p>
|
||||
|
||||
<t t-if="d['currencies']">
|
||||
<br/>
|
||||
<t t-foreach="d['currencies'].items()" t-as="currency">
|
||||
<t t-set="display_currency" t-value="Currencies[currency[0]]" />
|
||||
<t t-set="currency" t-value="currency[1]" />
|
||||
<p>
|
||||
<span t-esc="'' if account_type == 'receivable' else 'Supplier '"/>Statement up to <span t-esc="d['end']" /> in <span t-esc="display_currency.name"/>
|
||||
</p>
|
||||
<table class="table table-sm table-statement">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Reference number</th>
|
||||
<th>Date</th>
|
||||
<th>Due Date</th>
|
||||
<th>Description</th>
|
||||
<th class="amount">Original</th>
|
||||
<th class="amount">Open Amount</th>
|
||||
<th class="amount">Balance</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr t-foreach="currency['lines']" t-as="line" t-att-class="'statement-blocked' if line['blocked'] else ''">
|
||||
|
||||
<td>
|
||||
<span t-esc="line['move_id']"/>
|
||||
</td>
|
||||
<td>
|
||||
<span t-esc="line['date']"/>
|
||||
</td>
|
||||
<td>
|
||||
<span t-esc="line['date_maturity']"/>
|
||||
</td>
|
||||
<td>
|
||||
<t t-if="line['name'] != '/'">
|
||||
<t t-if="not line['ref']">
|
||||
<span t-esc="line['name']"/>
|
||||
</t>
|
||||
<t t-if="line['ref'] and line['name']">
|
||||
<t t-if="line['name'] not in line['ref']">
|
||||
<span t-esc="line['name']"/>
|
||||
</t>
|
||||
<t t-if="line['ref'] not in line['name']">
|
||||
<span t-esc="line['ref']"/>
|
||||
</t>
|
||||
</t>
|
||||
</t>
|
||||
<t t-if="line['name'] == '/'">
|
||||
<span t-esc="line['ref']"/>
|
||||
</t>
|
||||
</td>
|
||||
<td class="amount">
|
||||
<span t-esc="line['amount']" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
|
||||
</td>
|
||||
<td class="amount">
|
||||
<span t-esc="line['open_amount']" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
|
||||
</td>
|
||||
<td class="amount">
|
||||
<span t-esc="line['balance']" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td />
|
||||
<td>
|
||||
<span t-esc="d['end']"/>
|
||||
</td>
|
||||
<td>
|
||||
Ending Balance
|
||||
</td>
|
||||
<td />
|
||||
<td />
|
||||
<td />
|
||||
<td class="amount">
|
||||
<span t-esc="currency['amount_due']" t-options="{'widget': 'monetary', 'display_currency': display_currency}"/>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<t t-call="partner_statement.aging_buckets" t-if="currency['buckets']" />
|
||||
</t>
|
||||
</t>
|
||||
<p t-if="d.get('no_entries')">
|
||||
<strong>The partner doesn't have due entries.</strong>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<template id="outstanding_statement">
|
||||
<t t-call="web.html_container">
|
||||
<t t-foreach="docs" t-as="o">
|
||||
<t t-set="d" t-value="data.get(o.id)" />
|
||||
<t t-call="partner_statement.outstanding_statement_document" t-lang="o.lang"/>
|
||||
</t>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<report id="action_print_outstanding_statement"
|
||||
model="res.partner"
|
||||
report_type="qweb-pdf"
|
||||
menu="False"
|
||||
string="Outstanding Statement"
|
||||
name="partner_statement.outstanding_statement"
|
||||
file="partner_statement.outstanding_statement"
|
||||
/>
|
||||
</odoo>
|
||||
59
partner_statement/views/res_config_settings.xml
Normal file
59
partner_statement/views/res_config_settings.xml
Normal file
@@ -0,0 +1,59 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<record id="res_config_settings_view_form" model="ir.ui.view">
|
||||
<field name="name">res.config.settings.view.form (in partner_statement)</field>
|
||||
<field name="model">res.config.settings</field>
|
||||
<field name="priority" eval="40"/>
|
||||
<field name="inherit_id" ref="account.res_config_settings_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//div[@id='account_followup']" position="after">
|
||||
<div class="col-12 col-lg-6 o_setting_box">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="group_activity_statement" />
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="group_activity_statement"/>
|
||||
<div class="text-muted">
|
||||
Activity Statements show all transactions between two dates.
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': [('group_activity_statement', '=', False), ('group_outstanding_statement', '=', False)]}">
|
||||
<div class="row mt16">
|
||||
<label for="default_aging_type" class="col-lg-3 o_light_label"/>
|
||||
<field name="default_aging_type" />
|
||||
</div>
|
||||
<div >
|
||||
<field name="default_show_aging_buckets" class="oe_inline" />
|
||||
<label for="default_show_aging_buckets" class="o_light_label"/>
|
||||
</div>
|
||||
<div >
|
||||
<field name="default_filter_partners_non_due" class="oe_inline" />
|
||||
<label for="default_filter_partners_non_due" class="o_light_label"/>
|
||||
</div>
|
||||
<div >
|
||||
<field name="default_filter_negative_balances" class="oe_inline" />
|
||||
<label for="default_filter_negative_balances" class="o_light_label"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-6 o_setting_box">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="group_outstanding_statement" />
|
||||
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="group_outstanding_statement"/>
|
||||
<div class="text-muted">
|
||||
Outstanding Statements show all transactions up to a date.
|
||||
</div>
|
||||
<div class="text-muted" attrs="{'invisible': [('group_outstanding_statement', '=', False)]}">
|
||||
Please set defaults under Activity Statements.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user