diff --git a/configuration_equipment.py b/configuration_equipment.py
index faeaf33..a9e40dd 100644
--- a/configuration_equipment.py
+++ b/configuration_equipment.py
@@ -16,3 +16,6 @@ class Configuration(ModelSingleton, ModelSQL, ModelView):
agended_sequence = fields.Many2One('ir.sequence', "Agended Sequence",
domain=[('sequence_type', '=', Id('optical_equipment', 'sequence_type_agended'))
])
+ contract_sequence = fields.Many2One('ir.sequence', "Contract Sequence",
+ domain=[('sequence_type', '=', Id('optical_equipment', 'sequence_type_contract'))
+ ])
diff --git a/contract.py b/contract.py
index 1389dd0..0ff6091 100644
--- a/contract.py
+++ b/contract.py
@@ -15,12 +15,12 @@ import datetime
from datetime import timedelta
-class Contract(ModelSQL, ModelView):
+class Contract(Workflow, ModelSQL, ModelView):
'Contracts'
__name__ = 'optical_equipment.contract'
company = fields.Many2One(
- 'company.company', "Company", readonly=True, required=True, select=True,
+ 'company.company', "Company", required=True, select=True,
states={
'readonly': (Eval('state') != 'draft') | Eval('party', True),
},help="Make the subscription belong to the company.")
@@ -35,30 +35,34 @@ class Contract(ModelSQL, ModelView):
'readonly': Eval('state') != 'draft',
})
party = fields.Many2One(
- 'party.party', "Party", readonly=True, required=True,
- help="The party who subscribes.")
- contact = fields.Many2One('party.contact_mechanism', "Contact", readonly=True)
- invoice_address = fields.Many2One('party.address', 'Invoice Address', readonly=True,
- required=True, domain=[('party', '=', Eval('party'))])
- start_date = fields.Date("Start Date", readonly=True, required=False,)
- end_date = fields.Date(
- "End Date", readonly=True,
- domain=['OR',
- ('end_date', '>=', If(
- Bool(Eval('start_date')),
- Eval('start_date', datetime.date.min),
- datetime.date.min)),
- ('end_date', '=', None),
- ],
+ 'party.party', "Party", required=True,
states={
- 'readonly': Eval('state') != 'draft',
- }
- )
+ 'readonly': (Eval('state') != 'draft') | Eval('party', True),
+ },help="The party who subscribes.")
+ contact = fields.Many2One('party.contact_mechanism', "Contact", readonly=True, required=True)
+ invoice_address = fields.Many2One('party.address', 'Invoice Address',
+ required=True, domain=[('party', '=', Eval('party'))],
+ states={
+ 'readonly': (Eval('state') != 'draft') | Eval('party', True),
+ })
+ start_date = fields.Date("Start Date", required=True,)
+ end_date = fields.Date("End Date",
+ domain=['OR',
+ ('end_date', '>=', If(
+ Bool(Eval('start_date')),
+ Eval('start_date', datetime.date.min),
+ datetime.date.min)),
+ ('end_date', '=', None),
+ ],
+ states={
+ 'readonly': Eval('state') != 'draft',
+ })
maintenance_services = fields.Many2Many('optical_equipment_maintenance.service-equipment.contract',
'contract', 'maintenance_services', "Prorogues")
+ equipments = fields.Many2Many('optical_equipment.contract-optical_equipment.equipment', 'contract', 'equipment')
+ #equipments = fields.One2Many('optical_equipment.equipment', "contract_history", "Equipments")
state = fields.Selection([
('draft', "Draft"),
- ('quotation', "Quotation"),
('running', "Running"),
('closed', "Closed"),
('cancelled', "Cancelled"),
@@ -69,6 +73,16 @@ class Contract(ModelSQL, ModelView):
@classmethod
def __setup__(cls):
super(Contract, cls).__setup__()
+ cls._transitions = ({
+ ('draft', 'running'),
+ ('running', 'closed'),
+ ('running', 'cancelled'),
+ })
+ cls._buttons.update({
+ 'running': {'invisible': Eval('state').in_(['cancelled', 'running'])},
+ 'cancelled': {'invisible': Eval('state').in_(['draft', 'cancelled'])}
+ })
+
@staticmethod
def default_company():
@@ -78,6 +92,18 @@ class Contract(ModelSQL, ModelView):
def default_state():
return 'draft'
+ @classmethod
+ @ModelView.button
+ @Workflow.transition('running')
+ def running(cls, contracts):
+ pass
+
+ @classmethod
+ @ModelView.button
+ @Workflow.transition('cancelled')
+ def cancelled(cls, contracts):
+ pass
+
class ContractMaintenanceServices(ModelSQL):
diff --git a/contract.xml b/contract.xml
index 76c81f9..59f5a10 100644
--- a/contract.xml
+++ b/contract.xml
@@ -35,15 +35,6 @@
-
- Quotation
-
-
-
-
-
Running
@@ -93,7 +84,42 @@
Quotation
Are you sure you want to quote these subscription?
- -->
+ -->
+
+ running
+ Run
+
+
+
+ cancelled
+ Cancel
+
+
+
+ Contract Administration
+
+
+
+
+
+
+ Contract
+
+
+
+
+
+
+
+
+
+
+ Contract
+
+