add cron for contract expiration
This commit is contained in:
parent
bbd7f691e4
commit
65ac48edaa
@ -22,6 +22,7 @@ def register():
|
||||
calibration.CalibrationSample,
|
||||
configuration.Configuration,
|
||||
diary.Diary,
|
||||
contract.Cron,
|
||||
contract.Contract,
|
||||
contract.ContractMaintenanceServices,
|
||||
contract.ContractEquipment,
|
||||
|
34
contract.py
34
contract.py
@ -13,9 +13,19 @@ from trytond.modules.currency.fields import Monetary
|
||||
from trytond.modules.product import price_digits
|
||||
|
||||
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):
|
||||
'Contracts'
|
||||
__name__ = 'optical_equipment.contract'
|
||||
@ -93,6 +103,7 @@ class Contract(Workflow, ModelSQL, ModelView):
|
||||
cls._buttons.update({
|
||||
'draft': {'invisible': Eval('state').in_(['draft','closed'])},
|
||||
'running': {'invisible': Eval('state').in_(['cancelled', 'running'])},
|
||||
'closed': {'invisible': True},
|
||||
'cancelled': {'invisible': Eval('state').in_(['draft', 'cancelled'])}
|
||||
})
|
||||
|
||||
@ -121,6 +132,18 @@ class Contract(Workflow, ModelSQL, ModelView):
|
||||
else:
|
||||
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
|
||||
@ModelView.button
|
||||
@Workflow.transition('draft')
|
||||
@ -131,6 +154,15 @@ class Contract(Workflow, ModelSQL, ModelView):
|
||||
equipment.contract_history += (contract.id,)
|
||||
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
|
||||
@ModelView.button
|
||||
|
10
contract.xml
10
contract.xml
@ -70,6 +70,11 @@
|
||||
<field name="string">Run</field>
|
||||
<field name="model" search="[('model', '=', 'optical_equipment.contract')]"/>
|
||||
</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">
|
||||
<field name="name">cancelled</field>
|
||||
<field name="string">Cancel</field>
|
||||
@ -149,5 +154,10 @@
|
||||
action="act_contract_form"
|
||||
sequence="30"
|
||||
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>
|
||||
</tryton>
|
||||
|
Loading…
Reference in New Issue
Block a user