mirror of
https://github.com/OCA/contract.git
synced 2025-02-13 17:57:24 +02:00
[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:
39
contract/views/abstract_contract_line.xml
Normal file
39
contract/views/abstract_contract_line.xml
Normal 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>
|
||||
@@ -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>
|
||||
|
||||
28
contract/views/contract_line.xml
Normal file
28
contract/views/contract_line.xml
Normal 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>
|
||||
@@ -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'}"
|
||||
17
contract/views/contract_template_line.xml
Normal file
17
contract/views/contract_template_line.xml
Normal 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>
|
||||
Reference in New Issue
Block a user