first push message
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
from odoo import api, fields, models
|
||||
|
||||
_KH_DIGITS = str.maketrans('0123456789', '០១២៣៤៥៦៧៨៩')
|
||||
_KH_MONTHS = [
|
||||
'មករា', 'កុម្ភៈ', 'មីនា', 'មេសា', 'ឧសភា', 'មិថុនា',
|
||||
'កក្កដា', 'សីហា', 'កញ្ញា', 'តុលា', 'វិច្ឆិកា', 'ធ្នូ',
|
||||
]
|
||||
|
||||
|
||||
class DocApprovalDocumentApproverCustom(models.Model):
|
||||
_inherit = 'xf.doc.approval.document.approver'
|
||||
|
||||
role = fields.Selection(
|
||||
string='តួនាទី',
|
||||
selection=[
|
||||
('reviewer', 'អ្នកពិនិត្យ និងផ្តល់យោបល់'),
|
||||
('approver', 'អ្នកអនុម័ត'),
|
||||
],
|
||||
default='approver',
|
||||
)
|
||||
state = fields.Selection(
|
||||
selection=[
|
||||
('to approve', 'មិនទាន់ពិនិត្យ'),
|
||||
('pending', 'រង់ចាំ'),
|
||||
('approved', 'បានអនុម័ត'),
|
||||
('rejected', 'បានបដិសេធ'),
|
||||
],
|
||||
)
|
||||
|
||||
sent_date = fields.Datetime(
|
||||
string='Review Date',
|
||||
readonly=True,
|
||||
)
|
||||
sent_date_kh = fields.Char(
|
||||
string='កាលបរិច្ឆេទ',
|
||||
compute='_compute_sent_date_kh',
|
||||
)
|
||||
|
||||
@api.depends('sent_date')
|
||||
def _compute_sent_date_kh(self):
|
||||
for rec in self:
|
||||
if rec.sent_date:
|
||||
dt = fields.Datetime.context_timestamp(rec, rec.sent_date)
|
||||
day = str(dt.day).translate(_KH_DIGITS)
|
||||
month = _KH_MONTHS[dt.month - 1]
|
||||
year = str(dt.year).translate(_KH_DIGITS)
|
||||
hour = str(dt.hour).translate(_KH_DIGITS)
|
||||
minute = str(dt.minute).zfill(2).translate(_KH_DIGITS)
|
||||
rec.sent_date_kh = f'{day} {month} {year} {hour}:{minute}'
|
||||
else:
|
||||
rec.sent_date_kh = False
|
||||
round = fields.Integer(
|
||||
string='Round',
|
||||
default=1,
|
||||
readonly=True,
|
||||
)
|
||||
notes_display = fields.Text(
|
||||
string='Notes (Visible)',
|
||||
compute='_compute_notes_display',
|
||||
)
|
||||
|
||||
@api.depends('notes', 'step', 'document_package_id.approver_ids.step',
|
||||
'document_package_id.approver_ids.user_id')
|
||||
def _compute_notes_display(self):
|
||||
current_uid = self.env.uid
|
||||
is_admin = self.env.user._is_admin()
|
||||
for record in self:
|
||||
if is_admin:
|
||||
record.notes_display = record.notes
|
||||
continue
|
||||
package = record.document_package_id
|
||||
# Find the current user's highest step in this document
|
||||
my_approvers = package.approver_ids.filtered(
|
||||
lambda a: a.user_id.id == current_uid
|
||||
)
|
||||
if not my_approvers:
|
||||
# Initiator or non-approver: see all notes
|
||||
record.notes_display = record.notes
|
||||
else:
|
||||
my_max_step = max(my_approvers.mapped('step'))
|
||||
# Show this row's note only if its step <= my step
|
||||
if record.step <= my_max_step:
|
||||
record.notes_display = record.notes
|
||||
else:
|
||||
record.notes_display = False
|
||||
|
||||
def action_approve(self):
|
||||
self.filtered(lambda a: not a.sent_date).write({'sent_date': fields.Datetime.now()})
|
||||
return super().action_approve()
|
||||
|
||||
def action_reject(self):
|
||||
self.filtered(lambda a: not a.sent_date).write({'sent_date': fields.Datetime.now()})
|
||||
return super().action_reject()
|
||||
Reference in New Issue
Block a user