mirror of
https://github.com/OCA/contract.git
synced 2025-02-13 17:57:24 +02:00
[12.0][IMP] - Add strat/stop wizard to contract line
[12.0][IMP] - Add pause button to contract line [IMP] - Add state filed in contract line form [FIX] - stop don't change date_end for finished contract line [IMP] - Change contract line buttons visibility Add renewal process with termination notice [FIX] - don't consider stop_date If it is after the contract line end_date [IMP] - consider more cases in stop_plan_successor [IMP] - cancel upcoming line on stop [IMP] - Chnage next invoice date on un-cancel [IMP] - Post message in contract on contract line actions [IMP] - check contract line overlap
This commit is contained in:
1
contract/wizards/__init__.py
Normal file
1
contract/wizards/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from . import contract_line_wizard
|
||||
48
contract/wizards/contract_line_wizard.py
Normal file
48
contract/wizards/contract_line_wizard.py
Normal file
@@ -0,0 +1,48 @@
|
||||
# Copyright 2018 ACSONE SA/NV
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import api, fields, models
|
||||
|
||||
|
||||
class AccountAnalyticInvoiceLineWizard(models.TransientModel):
|
||||
|
||||
_name = 'account.analytic.invoice.line.wizard'
|
||||
_description = 'Contract Line Wizard'
|
||||
|
||||
date_start = fields.Date(string='Date Start')
|
||||
date_end = fields.Date(string='Date End')
|
||||
recurring_next_date = fields.Date(string='Next Invoice Date')
|
||||
is_auto_renew = fields.Boolean(string="Auto Renew", default=False)
|
||||
contract_line_id = fields.Many2one(
|
||||
comodel_name="account.analytic.invoice.line",
|
||||
string="Contract Line",
|
||||
required=True,
|
||||
)
|
||||
|
||||
@api.multi
|
||||
def stop(self):
|
||||
for wizard in self:
|
||||
wizard.contract_line_id.stop(wizard.date_end)
|
||||
return True
|
||||
|
||||
@api.multi
|
||||
def plan_successor(self):
|
||||
for wizard in self:
|
||||
wizard.contract_line_id.plan_successor(
|
||||
wizard.date_start, wizard.date_end, wizard.is_auto_renew
|
||||
)
|
||||
return True
|
||||
|
||||
@api.multi
|
||||
def stop_plan_successor(self):
|
||||
for wizard in self:
|
||||
wizard.contract_line_id.stop_plan_successor(
|
||||
wizard.date_start, wizard.date_end, wizard.is_auto_renew
|
||||
)
|
||||
return True
|
||||
|
||||
@api.multi
|
||||
def uncancel(self):
|
||||
for wizard in self:
|
||||
wizard.contract_line_id.uncancel(wizard.recurring_next_date)
|
||||
return True
|
||||
99
contract/wizards/contract_line_wizard.xml
Normal file
99
contract/wizards/contract_line_wizard.xml
Normal file
@@ -0,0 +1,99 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright 2018 ACSONE SA/NV
|
||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
|
||||
|
||||
<odoo>
|
||||
|
||||
<record model="ir.ui.view" id="contract_line_wizard_stop_form_view">
|
||||
<field name="name">contract.line.stop.wizard.form (in contract)</field>
|
||||
<field name="model">account.analytic.invoice.line.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<group>
|
||||
<field name="contract_line_id" invisible="True"/>
|
||||
<field string="Stop Date" name="date_end" required="True"/>
|
||||
</group>
|
||||
<footer>
|
||||
<button name="stop"
|
||||
string="Validate"
|
||||
class="btn-primary"
|
||||
type="object"/>
|
||||
<button string="Cancel"
|
||||
class="btn-default"
|
||||
special="cancel"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="contract_line_wizard_plan_successor_form_view">
|
||||
<field name="name">contract.line.plan_successor.wizard.form (in contract)</field>
|
||||
<field name="model">account.analytic.invoice.line.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<group>
|
||||
<field name="contract_line_id" invisible="True"/>
|
||||
<field name="date_start" required="True"/>
|
||||
<field name="date_end" attrs="{'required': [('is_auto_renew', '=', True)]}"/>
|
||||
<field name="is_auto_renew"/>
|
||||
</group>
|
||||
<footer>
|
||||
<button name="plan_successor"
|
||||
string="Validate"
|
||||
class="btn-primary"
|
||||
type="object"/>
|
||||
<button string="Cancel"
|
||||
class="btn-default"
|
||||
special="cancel"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="contract_line_wizard_stop_plan_successor_form_view">
|
||||
<field name="name">contract.line.stop_plan_successor.wizard.form (in contract)</field>
|
||||
<field name="model">account.analytic.invoice.line.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<group>
|
||||
<field name="contract_line_id" invisible="True"/>
|
||||
<field string="Suspension Start Date" name="date_start" required="True"/>
|
||||
<field string="Suspension End Date" name="date_end" required="True"/>
|
||||
<field name="is_auto_renew" invisible="1"/>
|
||||
</group>
|
||||
<footer>
|
||||
<button name="stop_plan_successor"
|
||||
string="Validate"
|
||||
class="btn-primary"
|
||||
type="object"/>
|
||||
<button string="Cancel"
|
||||
class="btn-default"
|
||||
special="cancel"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="contract_line_wizard_uncancel_form_view">
|
||||
<field name="name">contract.line.stop_plan_successor.wizard.form (in contract)</field>
|
||||
<field name="model">account.analytic.invoice.line.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<group>
|
||||
<field name="contract_line_id" invisible="True"/>
|
||||
<field name="recurring_next_date" required="True"/>
|
||||
</group>
|
||||
<footer>
|
||||
<button name="uncancel"
|
||||
string="Validate"
|
||||
class="btn-primary"
|
||||
type="object"/>
|
||||
<button string="Cancel"
|
||||
class="btn-default"
|
||||
special="cancel"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user