6.4 #101

Merged
Rodia merged 54 commits from 6.4 into master 2023-07-29 21:13:59 -05:00
3 changed files with 44 additions and 1 deletions
Showing only changes of commit 65ac48edaa - Show all commits

View File

@ -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,

View File

@ -13,9 +13,19 @@ 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):
'Contracts' 'Contracts'
__name__ = 'optical_equipment.contract' __name__ = 'optical_equipment.contract'
@ -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

View File

@ -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>