6.4 #101
@ -22,6 +22,7 @@ def register():
|
|||||||
calibration.CalibrationSample,
|
calibration.CalibrationSample,
|
||||||
configuration.Configuration,
|
configuration.Configuration,
|
||||||
diary.Diary,
|
diary.Diary,
|
||||||
|
contract.Cron,
|
||||||
contract.Contract,
|
contract.Contract,
|
||||||
contract.ContractMaintenanceServices,
|
contract.ContractMaintenanceServices,
|
||||||
contract.ContractEquipment,
|
contract.ContractEquipment,
|
||||||
|
34
contract.py
34
contract.py
@ -13,7 +13,17 @@ from trytond.modules.currency.fields import Monetary
|
|||||||
from trytond.modules.product import price_digits
|
from trytond.modules.product import price_digits
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
from datetime import timedelta
|
from datetime import timedelta, date
|
||||||
|
|
||||||
|
class Cron(metaclass=PoolMeta):
|
||||||
|
__name__ = 'ir.cron'
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def __setup__(cls):
|
||||||
|
super().__setup__()
|
||||||
|
cls.method.selection.append(
|
||||||
|
('optical_equipment.contract|contract_expiration', 'Contract Expiration'),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class Contract(Workflow, ModelSQL, ModelView):
|
class Contract(Workflow, ModelSQL, ModelView):
|
||||||
@ -93,6 +103,7 @@ class Contract(Workflow, ModelSQL, ModelView):
|
|||||||
cls._buttons.update({
|
cls._buttons.update({
|
||||||
'draft': {'invisible': Eval('state').in_(['draft','closed'])},
|
'draft': {'invisible': Eval('state').in_(['draft','closed'])},
|
||||||
'running': {'invisible': Eval('state').in_(['cancelled', 'running'])},
|
'running': {'invisible': Eval('state').in_(['cancelled', 'running'])},
|
||||||
|
'closed': {'invisible': True},
|
||||||
'cancelled': {'invisible': Eval('state').in_(['draft', 'cancelled'])}
|
'cancelled': {'invisible': Eval('state').in_(['draft', 'cancelled'])}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -121,6 +132,18 @@ class Contract(Workflow, ModelSQL, ModelView):
|
|||||||
else:
|
else:
|
||||||
raise UserError(gettext('optical_equipment.msg_not_sequence_equipment'))
|
raise UserError(gettext('optical_equipment.msg_not_sequence_equipment'))
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def contract_expiration(cls):
|
||||||
|
pool = Pool()
|
||||||
|
Contracts = pool.get('optical_equipment.contract')
|
||||||
|
|
||||||
|
contracts_to_expire = cls.search([('state', '=', 'running'),
|
||||||
|
('end_date', '<=', date.today())])
|
||||||
|
|
||||||
|
if contracts_to_expire != []:
|
||||||
|
for contract in contracts_to_expire:
|
||||||
|
cls.closed([contract])
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ModelView.button
|
@ModelView.button
|
||||||
@Workflow.transition('draft')
|
@Workflow.transition('draft')
|
||||||
@ -131,6 +154,15 @@ class Contract(Workflow, ModelSQL, ModelView):
|
|||||||
equipment.contract_history += (contract.id,)
|
equipment.contract_history += (contract.id,)
|
||||||
equipment.save()
|
equipment.save()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
@ModelView.button
|
||||||
|
@Workflow.transition('closed')
|
||||||
|
def closed(cls, contracts):
|
||||||
|
contract = contracts[0]
|
||||||
|
for equipment in contract.equipments:
|
||||||
|
equipment.state = "uncontrated"
|
||||||
|
equipment.save()
|
||||||
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ModelView.button
|
@ModelView.button
|
||||||
|
10
contract.xml
10
contract.xml
@ -70,6 +70,11 @@
|
|||||||
<field name="string">Run</field>
|
<field name="string">Run</field>
|
||||||
<field name="model" search="[('model', '=', 'optical_equipment.contract')]"/>
|
<field name="model" search="[('model', '=', 'optical_equipment.contract')]"/>
|
||||||
</record>
|
</record>
|
||||||
|
<record model="ir.model.button" id="contract_closed_button">
|
||||||
|
<field name="name">closed</field>
|
||||||
|
<field name="string">Closed</field>
|
||||||
|
<field name="model" search="[('model', '=', 'optical_equipment.contract')]"/>
|
||||||
|
</record>
|
||||||
<record model="ir.model.button" id="contract_cancelled_button">
|
<record model="ir.model.button" id="contract_cancelled_button">
|
||||||
<field name="name">cancelled</field>
|
<field name="name">cancelled</field>
|
||||||
<field name="string">Cancel</field>
|
<field name="string">Cancel</field>
|
||||||
@ -149,5 +154,10 @@
|
|||||||
action="act_contract_form"
|
action="act_contract_form"
|
||||||
sequence="30"
|
sequence="30"
|
||||||
id="menu_contract_form"/>
|
id="menu_contract_form"/>
|
||||||
|
<record model="ir.cron" id="cron_fe_delivery">
|
||||||
|
<field name="method">optical_equipment.contract|contract_expiration</field>
|
||||||
|
<field name="interval_number" eval="1"/>
|
||||||
|
<field name="interval_type">hours</field>
|
||||||
|
</record>
|
||||||
</data>
|
</data>
|
||||||
</tryton>
|
</tryton>
|
||||||
|
Loading…
Reference in New Issue
Block a user