mreficent
5 years ago
20 changed files with 855 additions and 649 deletions
-
38partner_statement/__manifest__.py
-
95partner_statement/report/activity_statement.py
-
55partner_statement/report/outstanding_statement.py
-
300partner_statement/report/report_statement_common.py
-
9partner_statement/security/statement_security.xml
-
6partner_statement/static/src/scss/layout_statement.scss
-
96partner_statement/tests/test_activity_statement.py
-
78partner_statement/tests/test_outstanding_statement.py
-
31partner_statement/tests/test_res_config_settings.py
-
228partner_statement/views/activity_statement.xml
-
43partner_statement/views/aging_buckets.xml
-
16partner_statement/views/assets.xml
-
221partner_statement/views/outstanding_statement.xml
-
64partner_statement/views/res_config_settings.xml
-
21partner_statement/wizard/activity_statement_wizard.py
-
11partner_statement/wizard/outstanding_statement_wizard.py
-
32partner_statement/wizard/res_config_settings.py
-
54partner_statement/wizard/statement_common.py
-
104partner_statement/wizard/statement_wizard.xml
@ -1,14 +1,11 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<?xml version="1.0" encoding="utf-8" ?> |
|||
<odoo> |
|||
|
|||
<record id="group_activity_statement" model="res.groups"> |
|||
<field name="name">Use activity statements</field> |
|||
<field name="category_id" ref="base.module_category_hidden"/> |
|||
<field name="category_id" ref="base.module_category_hidden" /> |
|||
</record> |
|||
|
|||
<record id="group_outstanding_statement" model="res.groups"> |
|||
<field name="name">Use outstanding statements</field> |
|||
<field name="category_id" ref="base.module_category_hidden"/> |
|||
<field name="category_id" ref="base.module_category_hidden" /> |
|||
</record> |
|||
|
|||
</odoo> |
@ -1,140 +1,172 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<?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="o" t-value="o.with_context({'lang': lang})" /> |
|||
<t t-set="address"> |
|||
<address t-esc="get_inv_addr(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.vat"/></div> |
|||
<address |
|||
t-esc="get_inv_addr(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.vat" /></div> |
|||
</t> |
|||
<div class="page"> |
|||
<h2 >Statement of Account</h2> |
|||
<h2>Statement of Account</h2> |
|||
<div id="informations" class="row mt32 mb32"> |
|||
<div class="col-3 bm-2"> |
|||
<strong>Date:</strong> |
|||
<p t-esc="d['today']" class="m-0"/> |
|||
<p t-esc="d['today']" class="m-0" /> |
|||
</div> |
|||
<div t-if="o.ref" class="col-3 bm-2"> |
|||
<strong>Partner Code:</strong> |
|||
<p t-field="o.ref" class="m-0" /> |
|||
</div> |
|||
</div> |
|||
|
|||
<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-if="account_type == 'payable'">Supplier </span>Statement between <span t-esc="d['start']" /> and <span t-esc="d['end']" /> in <span t-esc="display_currency.name"/> |
|||
<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-if="account_type == 'payable'" |
|||
>Supplier </span>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> |
|||
<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']"/> |
|||
<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'] 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-if="line['name'] == 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-if="line['name'] == line['ref']"> |
|||
<span t-esc="line['name']" /> |
|||
</t> |
|||
</t> |
|||
<t t-if="line['name'] == '/'"> |
|||
<span t-if="line['ref'] == 'Payment'">Payment</span> |
|||
<span t-else="" 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> |
|||
</t> |
|||
<t t-if="line['name'] == '/'"> |
|||
<span |
|||
t-if="line['ref'] == 'Payment'" |
|||
>Payment</span> |
|||
<span t-else="" 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> |
|||
<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> |
|||
<p t-if="d.get('no_entries')"> |
|||
<strong>The partner doesn't have due entries.</strong> |
|||
</p> |
|||
</div> |
|||
</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-call="partner_statement.activity_statement_document" |
|||
t-lang="o.lang" |
|||
/> |
|||
</t> |
|||
</t> |
|||
</template> |
|||
|
|||
<report id="action_print_activity_statement" |
|||
<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> |
@ -1,12 +1,18 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<?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"> |
|||
<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" /> |
|||
<link |
|||
rel="stylesheet" |
|||
href="/partner_statement/static/src/scss/layout_statement.scss" |
|||
type="text/scss" |
|||
/> |
|||
</xpath> |
|||
</template> |
|||
|
|||
</odoo> |
@ -1,136 +1,165 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<?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="o" t-value="o.with_context({'lang': lang})" /> |
|||
<t t-set="address"> |
|||
<address t-esc="get_inv_addr(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.vat"/></div> |
|||
<address |
|||
t-esc="get_inv_addr(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.vat" /></div> |
|||
</t> |
|||
<div class="page"> |
|||
<div class="oe_structure"/> |
|||
<h2 >Statement of Account</h2> |
|||
<div class="oe_structure" /> |
|||
<h2>Statement of Account</h2> |
|||
<div id="informations" class="row mt32 mb32"> |
|||
<div class="col-3 bm-2"> |
|||
<strong>Date:</strong> |
|||
<p t-esc="d['today']" class="m-0"/> |
|||
<p t-esc="d['today']" class="m-0" /> |
|||
</div> |
|||
<div t-if="o.ref" class="col-3 bm-2"> |
|||
<strong>Partner Code:</strong> |
|||
<p t-field="o.ref" class="m-0" /> |
|||
</div> |
|||
</div> |
|||
|
|||
<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"/> |
|||
<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']"/> |
|||
<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'] 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-if="line['ref'] == line['name']"> |
|||
<span t-esc="line['name']"/> |
|||
</t> |
|||
<t |
|||
t-if="line['ref'] not in line['name']" |
|||
> |
|||
<span t-esc="line['ref']" /> |
|||
</t> |
|||
<t t-if="line['ref'] == line['name']"> |
|||
<span t-esc="line['name']" /> |
|||
</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> |
|||
</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> |
|||
<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> |
|||
<p t-if="d.get('no_entries')"> |
|||
<strong>The partner doesn't have due entries.</strong> |
|||
</p> |
|||
</div> |
|||
|
|||
</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-call="partner_statement.outstanding_statement_document" |
|||
t-lang="o.lang" |
|||
/> |
|||
</t> |
|||
</t> |
|||
</template> |
|||
|
|||
<report id="action_print_outstanding_statement" |
|||
<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> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue