diff --git a/equipment.py b/equipment.py index d52f335..58617fc 100644 --- a/equipment.py +++ b/equipment.py @@ -1,19 +1,27 @@ from collections import defaultdict from trytond.pool import Pool -from trytond.model import ModelSQL, ModelView, Unique, fields +from trytond.model import ( + Workflow, ModelSQL, ModelView, Unique, fields) from trytond.pyson import Eval from trytond.exceptions import UserError -class OpticalEquipment(ModelSQL, ModelView): +class OpticalEquipment(Workflow, ModelSQL, ModelView): 'Optical Equipment' __name__ = 'optical_equipment.equipment' code_readonly = fields.Function( fields.Boolean("Code Readonly"), 'get_code_readonly') + code = fields.Char( - "Code", select=True,states={ - 'readonly': Eval('code_readonly', False), - }) + "Code", select=True,states={'readonly': True }) + + state = fields.Selection([ + ('draft', "Draft"), + ('registred', "Registred"), + ('contrated', "Contrated") + ], "State", + required=True, readonly=True, sort=False) + company = fields.Many2One('company.company', "Company") location = fields.Many2One('stock.location', "Location") propietary = fields.Many2One('party.party', "Propietary") @@ -59,6 +67,14 @@ class OpticalEquipment(ModelSQL, ModelView): ('serial_unique', Unique(t, t.serial), 'optical_equipment.msg_serial_unique') ] + cls._transitions = ({ + ('draft', 'registred'), + ('registred', 'contrated'), + }) + cls._buttons.update({ + 'draft': {}, + 'registred': {}}) + def default_code_readonly(cls): pool = Pool() @@ -69,6 +85,10 @@ class OpticalEquipment(ModelSQL, ModelView): def get_code_readonly(self, name): return self.default_code_readonly() + @classmethod + def default_state(cls): + return 'draft' + @classmethod def _new_code(cls): pool = Pool() @@ -78,3 +98,15 @@ class OpticalEquipment(ModelSQL, ModelView): if sequence: return sequence.get() + @classmethod + @ModelView.button + @Workflow.transition('draft') + def draft(cls, equipments): + pass + #raise userError(str('draft')) + + @classmethod + @ModelView.button + @Workflow.transition('registred') + def registred(cls, equipments): + pass diff --git a/equipment.xml b/equipment.xml index 5d29471..4528483 100644 --- a/equipment.xml +++ b/equipment.xml @@ -15,11 +15,17 @@ name="Equipment" sequence="40" id="menu_equipment"/> + + + Equipments + optical_equipment.equipment + - + optical_equipment.equipment tree optical_equipment_tree @@ -30,19 +36,63 @@ optical_equipment_form - + - + - + - + + + + Draft + + + + + + + Registred + + + + + + + Contrated + + + + + + + All + + + + + + draft + Draft + + + + registred + Registred + + action="act_optical_equipment_form" + sequence="10" + id="menu_optical_equipment_form"/> + diff --git a/view/optical_equipment_form.xml b/view/optical_equipment_form.xml index 23fe8c5..20aed25 100644 --- a/view/optical_equipment_form.xml +++ b/view/optical_equipment_form.xml @@ -49,5 +49,10 @@ - + +