add workflow to equipments

This commit is contained in:
sinergia 2022-07-07 00:16:16 -05:00
parent 8910886374
commit 0fe894d10f
4 changed files with 102 additions and 15 deletions

View File

@ -1,19 +1,27 @@
from collections import defaultdict from collections import defaultdict
from trytond.pool import Pool 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.pyson import Eval
from trytond.exceptions import UserError from trytond.exceptions import UserError
class OpticalEquipment(ModelSQL, ModelView): class OpticalEquipment(Workflow, ModelSQL, ModelView):
'Optical Equipment' 'Optical Equipment'
__name__ = 'optical_equipment.equipment' __name__ = 'optical_equipment.equipment'
code_readonly = fields.Function( code_readonly = fields.Function(
fields.Boolean("Code Readonly"), 'get_code_readonly') fields.Boolean("Code Readonly"), 'get_code_readonly')
code = fields.Char( code = fields.Char(
"Code", select=True,states={ "Code", select=True,states={'readonly': True })
'readonly': Eval('code_readonly', False),
}) state = fields.Selection([
('draft', "Draft"),
('registred', "Registred"),
('contrated', "Contrated")
], "State",
required=True, readonly=True, sort=False)
company = fields.Many2One('company.company', "Company") company = fields.Many2One('company.company', "Company")
location = fields.Many2One('stock.location', "Location") location = fields.Many2One('stock.location', "Location")
propietary = fields.Many2One('party.party', "Propietary") propietary = fields.Many2One('party.party', "Propietary")
@ -59,6 +67,14 @@ class OpticalEquipment(ModelSQL, ModelView):
('serial_unique', Unique(t, t.serial), ('serial_unique', Unique(t, t.serial),
'optical_equipment.msg_serial_unique') 'optical_equipment.msg_serial_unique')
] ]
cls._transitions = ({
('draft', 'registred'),
('registred', 'contrated'),
})
cls._buttons.update({
'draft': {},
'registred': {}})
def default_code_readonly(cls): def default_code_readonly(cls):
pool = Pool() pool = Pool()
@ -69,6 +85,10 @@ class OpticalEquipment(ModelSQL, ModelView):
def get_code_readonly(self, name): def get_code_readonly(self, name):
return self.default_code_readonly() return self.default_code_readonly()
@classmethod
def default_state(cls):
return 'draft'
@classmethod @classmethod
def _new_code(cls): def _new_code(cls):
pool = Pool() pool = Pool()
@ -78,3 +98,15 @@ class OpticalEquipment(ModelSQL, ModelView):
if sequence: if sequence:
return sequence.get() 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

View File

@ -15,11 +15,17 @@
name="Equipment" name="Equipment"
sequence="40" sequence="40"
id="menu_equipment"/> id="menu_equipment"/>
<!--
<record model="ir.action.act_window" id="act_optical_equipment"> <record model="ir.action.act_window" id="act_optical_equipment">
<field name="name">Equipments</field> <field name="name">Equipments</field>
<field name="res_model">optical_equipment.equipment</field> <field name="res_model">optical_equipment.equipment</field>
</record> -->
<record model="ir.action.act_window" id="act_optical_equipment_form">
<field name="name">Equipments</field>
<field name="res_model">optical_equipment.equipment</field>
<field name="search_value"></field>
</record> </record>
<record model="ir.ui.view" id="optical_equipment_view_tree"> <record model="ir.ui.view" id="optical_equipment_view_tree">
<field name="model">optical_equipment.equipment</field> <field name="model">optical_equipment.equipment</field>
<field name="type">tree</field> <field name="type">tree</field>
<field name="name">optical_equipment_tree</field> <field name="name">optical_equipment_tree</field>
@ -30,19 +36,63 @@
<field name="name">optical_equipment_form</field> <field name="name">optical_equipment_form</field>
</record> </record>
<record model="ir.action.act_window.view" id="act_optical_equipment_view1"> <record model="ir.action.act_window.view" id="act_optical_equipment_view1">
<field name="sequence" eval="50"/> <field name="sequence" eval="10"/>
<field name="view" ref="optical_equipment_view_tree"/> <field name="view" ref="optical_equipment_view_tree"/>
<field name="act_window" ref="act_optical_equipment"/> <field name="act_window" ref="act_optical_equipment_form"/>
</record> </record>
<record model="ir.action.act_window.view" id="act_optical_equipment_view2"> <record model="ir.action.act_window.view" id="act_optical_equipment_view2">
<field name="sequence" eval="50"/> <field name="sequence" eval="20"/>
<field name="view" ref="optical_equipment_view_form"/> <field name="view" ref="optical_equipment_view_form"/>
<field name="act_window" ref="act_optical_equipment"/> <field name="act_window" ref="act_optical_equipment_form"/>
</record>
<record model="ir.action.act_window.domain" id="act_optical_equipment_form_domain_draft">
<field name="name">Draft</field>
<field name="sequence" eval="10"/>
<field name="domain"
eval="[('state', '=', 'draft')]"
pyson="1"/>
<field name="count" eval="True"/>
<field name="act_window" ref="act_optical_equipment_form"/>
</record>
<record model="ir.action.act_window.domain" id="act_optical_equipment_form_domain_registred">
<field name="name">Registred</field>
<field name="sequence" eval="20"/>
<field name="domain"
eval="[('state', '=', 'registred')]"
pyson="1"/>
<field name="count" eval="True"/>
<field name="act_window" ref="act_optical_equipment_form"/>
</record>
<record model="ir.action.act_window.domain" id="act_optical_equipment_form_domain_contrated">
<field name="name">Contrated</field>
<field name="sequence" eval="30"/>
<field name="domain"
eval="[('state', '=', 'contrated')]"
pyson="1"/>
<field name="count" eval="True"/>
<field name="act_window" ref="act_optical_equipment_form"/>
</record>
<record model="ir.action.act_window.domain" id="act_optical_equipment_form_domain_all">
<field name="name">All</field>
<field name="sequence" eval="9999"/>
<field name="domain"></field>
<field name="act_window" ref="act_optical_equipment_form"/>
</record>
<record model="ir.model.button" id="draft_equipment_button">
<field name="name">draft</field>
<field name="string">Draft</field>
<field name="model" search="[('model', '=', 'optical_equipment.equipment')]"/>
</record>
<record model="ir.model.button" id="registred_equipment_button">
<field name="name">registred</field>
<field name="string">Registred</field>
<field name="model" search="[('model', '=', 'optical_equipment.equipment')]"/>
</record> </record>
<menuitem parent="menu_equipment" <menuitem parent="menu_equipment"
action="act_optical_equipment" action="act_optical_equipment_form"
sequence="40" sequence="10"
id="menu_optical_equipment"/> id="menu_optical_equipment_form"/>
<record model="ir.ui.menu-res.group" <record model="ir.ui.menu-res.group"
id="menu_party_group_equipment_admin"> id="menu_party_group_equipment_admin">
<field name="menu" ref="menu_equipment"/> <field name="menu" ref="menu_equipment"/>

View File

@ -49,5 +49,10 @@
<field name="subscription_history"/> <field name="subscription_history"/>
</page> </page>
</notebook> </notebook>
<group col="2" colspan="2" id="button">
<button name="draft"/>
<button name="registred"/>
</group>
<label name="state"/>
<field name="state"/>
</form> </form>

View File

@ -1,6 +1,6 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of <!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. --> this repository contains the full copyright notices and license terms.-->
<tree> <tree>
<field name="code"/> <field name="code"/>
<field name="company"/> <field name="company"/>