Transaction (delegation)

This commit is contained in:
eman 2024-12-31 02:09:30 +02:00
parent e44e43929e
commit 6ceb144f70
5 changed files with 36 additions and 2 deletions

View File

@ -93,6 +93,19 @@ class Entity(models.Model):
year_increment = fields.Boolean(string='Continue Increment every year?', help='''
Check if you want to continue incrementing in the start of every new year.
''', default=True)
delegate_employee_id = fields.Many2one('cm.entity')
from_date = fields.Datetime(string='Delegation From Date')
to_date = fields.Datetime(string='Delegation To Date')
to_delegate = fields.Boolean(string='To Delegate?', compute="_compute_to_delegate")
def _compute_to_delegate(self):
for rec in self:
rec.to_delegate = False
if rec.from_date and rec.to_date:
if rec.from_date < datetime.datetime.now() < rec.to_date:
rec.to_delegate = True
else:
rec.to_delegate = False
@api.onchange('department_id')
def onchange_department_id(self):

View File

@ -24,6 +24,10 @@ class InternalTransaction(models.Model):
required=False, default='unit')
to_ids = fields.Many2one(comodel_name='cm.entity', string='Send To')
delegate_employee_id = fields.Many2one('cm.entity', related='to_ids.delegate_employee_id')
from_date = fields.Datetime(string='Delegation From Date', related='to_ids.from_date')
to_date = fields.Datetime(string='Delegation To Date', related='to_ids.to_date')
to_delegate = fields.Boolean(string='To Delegate?', related='to_ids.to_delegate')
@api.onchange('type_sender')
def _onchange_type_sender(self):

View File

@ -24,7 +24,11 @@
<group>
<group>
<field name="type" required="True"/>
<field name="to_delegate" attrs="{'invisible':[('type','not in',['employee'])]}"/>
<field name="employee_id" attrs="{'invisible':[('type','not in',['employee'])]}"/>
<field name="delegate_employee_id" attrs="{'invisible':[('type','not in',['employee'])]}"/>
<field name="from_date" attrs="{'invisible':[('type','not in',['employee'])]}" readonly="1" force_save="1"/>
<field name="to_date" attrs="{'invisible':[('type','not in',['employee'])]}" readonly="1" force_save="1"/>
<field name="department_id" attrs="{'invisible': [('type','not in',['unit'])]}"/>
<field name="partner_id"
attrs="{'invisible': [('type','not in',['external'])]}"/>

View File

@ -109,6 +109,12 @@
<xpath expr="//field[@name='need_approve']" position="after">
<field name="current_is_forward_user" invisible="1"/>
</xpath>
<xpath expr="//field[@name='tran_tag']" position="after">
<field name="to_delegate"/>
<field name="delegate_employee_id"/>
<field name="from_date"/>
<field name="to_date"/>
</xpath>
</field>
</record>
@ -181,6 +187,10 @@
</xpath>
<xpath expr="//field[@name='to_ids']" position="after">
<field name="partner_id"/>
<field name="to_delegate"/>
<field name="delegate_employee_id"/>
<field name="from_date"/>
<field name="to_date"/>
</xpath>
<xpath expr="//field[@name='to_ids']" position="before">
<field name="type_sender" attrs="{'readonly':[('state','not in', ['draft'])]}"/>

View File

@ -15,8 +15,8 @@ class Leave(models.Model):
state = fields.Selection(selection=[('draft', 'Draft'), ('request', 'Request'), ('refuse', 'Refuse'),
('approve', 'Approved'), ('expired', 'Expired')], string='State',
default='draft')
from_date = fields.Date(string='From Date', default=fields.Date.today)
to_date = fields.Date(string='To Date')
from_date = fields.Datetime(string='From Date', default=fields.Datetime.now)
to_date = fields.Datetime(string='To Date')
employee_id = fields.Many2one(comodel_name='cm.entity', string='Employee',
default=lambda self: self.default_employee_id(), readonly=True)
alternative_employee_ids = fields.One2many('employee.leave.line', 'leave_id', string='Alternative Employees')
@ -87,6 +87,9 @@ class Leave(models.Model):
template_id = self.env.ref('exp_transaction_leave.email_template_delegation_accepted').id
for rec in self:
rec.state = 'approve'
rec.employee_id.from_date = rec.from_date
rec.employee_id.to_date = rec.to_date
rec.employee_id.delegate_employee_id = rec.alternative_employee_ids.employee_id.id
self.env['mail.template'].browse(template_id).send_mail(rec.id, force_send=True)
def action_expired(self):