[IMP] - Make recurrence mechanism on contract line

Make recurrence mechanism on contract line and some other refactoring

[FIX] - Keep contract_cron on account_analytic_account model

contract_cron defined with no_update option.
Changing it, will cause issue to past version installation.

[IMP] - Fix recurring_next_date default value

recurring_next_date should have start_date as default value in prepaid policy
and start_date + invoicing_interval if postpaid

[FIX] - Fix test check no journal

[IMP] - Return created invoices on recurring_create_invoice

[IMP] - Specific process to compute recurring_next_date for  monthly-last-day

fixes: #198

[ADD] - Add Post-migration script to bring recurrence info from contract to contract lines

[ADD] - Add search filter based on date_end and recurring_next_date

 - not_finished filter in contract search view
 - finished filter in contract search view
 - Next Invoice group by in contract search view

[ADD] - Add unit tests

- cases to compute first recurring next date
- contract recurring_next_date
- contract date_end

[IMP] - Improve Unit tests
This commit is contained in:
sbejaoui
2018-10-30 18:50:41 +01:00
parent e9daa5b781
commit b979a4a342
22 changed files with 1312 additions and 948 deletions

View File

@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="account_abstract_analytic_contract_line_view_form" model="ir.ui.view">
<field name="name">Account Abstract Analytic Contract Line Form View</field>
<field name="model">account.abstract.analytic.contract.line</field>
<field name="arch" type="xml">
<form>
<group>
<field name="product_id"/>
<field name="name"/>
<field name="quantity" colspan="2"/>
<field name="uom_id" colspan="2"/>
<field name="automatic_price"/>
<field name="specific_price" invisible="1"/>
<field name="price_unit"
attrs="{'readonly': [('automatic_price', '=', True)]}"
colspan="2"/>
<field name="discount" colspan="2"/>
</group>
<group name="recurrence_info">
<group>
<field name="recurring_invoicing_type"/>
</group>
<group>
<label for="recurring_interval"/>
<div>
<field name="recurring_interval"
class="oe_inline"/>
<field name="recurring_rule_type"
class="oe_inline"/>
</div>
</group>
</group>
</form>
</field>
</record>
</odoo>

View File

@@ -48,35 +48,16 @@
attrs="{'required': [('recurring_invoices', '=', True)]}"
/>
<field name="pricelist_id"/>
<field name="company_id" groups="base.group_multi_company"/>
<label for="recurring_interval"/>
<div>
<field name="recurring_interval"
class="oe_inline"
attrs="{'required': [('recurring_invoices', '=', True)]}"
/>
<field name="recurring_rule_type"
class="oe_inline"
attrs="{'required': [('recurring_invoices', '=', True)]}"
/>
</div>
<field name="recurring_invoicing_type"
attrs="{'required': [('recurring_invoices', '=', True)]}"
/>
<field name="date_start"
attrs="{'required': [('recurring_invoices', '=', True)]}"
/>
<field name="recurring_next_date"/>
<field name="date_end"/>
<field name="recurring_next_date"
attrs="{'required': [('recurring_invoices', '=', True)]}"
/>
<field name="company_id" groups="base.group_multi_company"/>
</group>
<label for="recurring_invoice_line_ids"
attrs="{'invisible': [('recurring_invoices','=',False)]}"
/>
<div attrs="{'invisible': [('recurring_invoices','=',False)]}">
<field name="recurring_invoice_line_ids">
<tree string="Account Analytic Lines" editable="bottom">
<tree string="Account Analytic Lines">
<field name="sequence" widget="handle" />
<field name="product_id"/>
<field name="name"/>
@@ -87,6 +68,12 @@
<field name="specific_price" invisible="1"/>
<field name="discount" groups="base.group_no_one" />
<field name="price_subtotal"/>
<field name="recurring_interval" invisible="1"/>
<field name="recurring_rule_type" invisible="1"/>
<field name="recurring_invoicing_type" invisible="1"/>
<field name="date_start" required="1"/>
<field name="date_end"/>
<field name="recurring_next_date" required="1"/>
</tree>
</field>
</div>
@@ -155,9 +142,6 @@
<field name="partner_id" position="before">
<field name="journal_id" groups="account.group_account_user"/>
</field>
<field name="partner_id" position="after">
<field name="recurring_next_date" invisible="not context.get('is_contract', False)"/>
</field>
</field>
</record>

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="account_analytic_invoice_line_view_form" model="ir.ui.view">
<field name="name">account.analytic.invoice.line.form</field>
<field name="model">account.analytic.invoice.line</field>
<field name="inherit_id"
ref="account_abstract_analytic_contract_line_view_form"/>
<field name="mode">primary</field>
<field name="arch" type="xml">
<xpath expr="//form" position="attributes">
<attribute name="string">Contract Line</attribute>
</xpath>
<xpath expr="//group[@name='recurrence_info']" position="inside">
<group>
<field name="date_start" required="1"/>
</group>
<group>
<field name="date_end"/>
</group>
<group>
<field name="recurring_next_date"/>
</group>
</xpath>
</field>
</record>
</odoo>

View File

@@ -16,24 +16,10 @@
<field name="pricelist_id" />
<field name="company_id" options="{'no_create': True}" groups="base.group_multi_company"/>
</group>
<group name="group_main_right">
<field name="recurring_invoicing_type" />
<label for="recurring_interval" />
<div>
<field name="recurring_interval"
class="oe_inline"
required="True"
/>
<field name="recurring_rule_type"
class="oe_inline"
required="True"
/>
</div>
</group>
</group>
<group name="group_invoice_lines" string="Invoice Lines">
<field name="recurring_invoice_line_ids" nolabel="1">
<tree string="Account Analytic Lines" editable="bottom">
<tree string="Account Analytic Lines">
<field name="sequence" widget="handle" />
<field name="product_id" />
<field name="name" />
@@ -44,6 +30,9 @@
<field name="specific_price" invisible="1"/>
<field name="discount" groups="base.group_no_one" />
<field name="price_subtotal" />
<field name="recurring_rule_type" invisible="1"/>
<field name="recurring_interval" invisible="1"/>
<field name="recurring_invoicing_type" invisible="1"/>
</tree>
</field>
</group>
@@ -64,9 +53,6 @@
<tree string="Contract Templates">
<field name="name" />
<field name="contract_type" />
<field name="recurring_rule_type" />
<field name="recurring_interval" />
<field name="recurring_invoicing_type" />
<field name="pricelist_id" />
</tree>
</field>
@@ -79,23 +65,12 @@
<search string="Contract Templates">
<field name="name" />
<field name="contract_type" />
<field name="recurring_rule_type" />
<field name="recurring_interval" />
<field name="recurring_invoicing_type" />
<field name="pricelist_id" />
<field name="journal_id" />
<filter name="contract_type"
string="Contract Type"
context="{'group_by': 'contract_type'}"
/>
<filter name="recurring_rule_type"
string="Recurrence"
context="{'group_by': 'recurring_rule_type'}"
/>
<filter name="recurring_invoicing_type"
string="Invoicing type"
context="{'group_by': 'recurring_invoicing_type'}"
/>
<filter name="pricelist_id"
string="Pricelist"
context="{'group_by': 'pricelist_id'}"

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="account_analytic_contract_line_view_form" model="ir.ui.view">
<field name="name">account.analytic.contract.line.form</field>
<field name="model">account.analytic.contract.line</field>
<field name="inherit_id"
ref="account_abstract_analytic_contract_line_view_form"/>
<field name="mode">primary</field>
<field name="arch" type="xml">
<xpath expr="//form" position="attributes">
<attribute name="string">Contract Line Template</attribute>
</xpath>
</field>
</record>
</odoo>