Commit 346e1c02 authored by John Red Medrano's avatar John Red Medrano

Merge branch 'RMSv2' of http://42.61.118.105:7990/scm/rms/api-main-service into red-develop

parents 44477674 1f78d80c
......@@ -164,7 +164,7 @@ class ForgotPassword(APIView):
created=date_now,
timeout_at=timeout_at
).save()
url = f"{settings.FRONT_END_URL}/forgot-password/reset"\
f"?token={TOKEN}"
......
......@@ -698,11 +698,9 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
action_body = request.data
id = action_body.get('id', False)
form_code = action_body.get('form_code', False)
# delegation = action_body.get('delegation', False)
action = action_body.get('action', False)
# level = action_body.get('level', False)
# next_level = int(level) + 1
remarks = action_body.get('remarks', False)
move_to_level = action_body.get('move_to_level', False)
# generate batchno history
batchno = get_max_batchno("batch")
......@@ -739,7 +737,7 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
new_instance
)
change_request.cr_routing_actions(new_instance, current_user)
change_request.cr_routing_actions(new_instance, current_user, move_to_level)
# ---------------- removed code
message = status_message_response(
200, 'success',
......
......@@ -208,6 +208,7 @@ def send_mail_vendor(requestor,
recipient = vendor_email
action_type = action
delegation_type = delegation
delegation_recipient = 'vendor'
admin = sender_email
args = [name, action_by, routing_level, status, cr_number, cr_name,
......@@ -276,11 +277,13 @@ def send_mail_requestor(current_user,
recipient = requestor_email
action_type = action
delegation_type = delegation
delegation_recipient = 'requestor'
admin = sender_email
args = [name, action_by, routing_level, status, cr_number, cr_name,
company_requestedto, department_requestedto, priority_level,
url, remarks, recipient, action_type, delegation_type, admin]
url, remarks, recipient, action_type, delegation_type,
delegation_recipient, admin]
main_threading(args, sender.routing_table_actions)
......@@ -292,6 +295,77 @@ def send_mail_requestor(current_user,
current_user, 'cms')
def send_mail_approver(current_user,
form_code,
delegation,
msg,
action,
remarks,
routing_level,
approver_code):
cr_link = f'{CR_FRONT_LINK}/{form_code}'
template_instance = get_template_instance(form_code)
cr_number = template_instance.requested_to_template_id
template_name = template_instance.requested_to_template_name
requested_to_company = template_instance.requested_to_company.code
requested_to_department = template_instance.requested_to_department.code
requested_by_user = template_instance.requested_by_user.code
requested_to_priority = template_instance.requested_to_priority
cr_status = template_instance.status
# receiver details --------------------------------------------------
approver_instance = get_account_details(approver_code)
approver_name = approver_instance.values_list('name', flat=True)[0]
approver_email = approver_instance.values_list('email', flat=True)[0]
approver_code = approver_instance.values_list('code', flat=True)[0]
# sender details --------------------------------------------------
sender_instance = get_account_details(current_user)
sender_email = sender_instance.values_list('email', flat=True)[0]
sender_name = sender_instance.values_list('name', flat=True)[0]
department = get_dept_details(requested_to_department)
dept_name = department.values_list('name', flat=True)[0]
company = get_companies_details(requested_to_company)
company_name = company.values_list('name', flat=True)[0]
# call sender email
name = approver_name
action_by = sender_name
routing_level = routing_level
status = cr_status
cr_number = cr_number
cr_name = template_name
company_requestedto = company_name
department_requestedto = dept_name
priority_level = requested_to_priority
url = cr_link
recipient = approver_email
action_type = action
delegation_type = delegation
delegation_recipient = 'approver'
admin = sender_email
args = [name, action_by, routing_level, status, cr_number, cr_name,
company_requestedto, department_requestedto, priority_level,
url, remarks, recipient, action_type, delegation_type,
delegation_recipient, admin]
main_threading(args, sender.routing_table_actions)
message = f"{sender_name} {msg} ({template_name})"
# create notification
notification_create(form_code, message, approver_code,
current_user, 'cms')
def next_approver_email(form_code, next_level):
cr_link = f'{CR_FRONT_LINK}/{form_code}'
template_instance = get_template_instance(form_code)
......@@ -352,11 +426,13 @@ def next_approver_email(form_code, next_level):
recipient = receiver_email
delegation_type = n_approver.delegation.name.lower()
delegation_recipient = 'None'
admin = sender_email
args = [name, cr_number, cr_name,
company_requestedto, department_requestedto, priority_level,
status, url, recipient, delegation_type, admin]
status, url, recipient, delegation_type,
delegation_recipient, admin]
main_threading(args, sender.routing_table_actions_required)
......@@ -731,11 +807,13 @@ def cancelled_user_trigger(form_code,
recipient = receiver_email
action_type = action
delegation_type = 'others'
delegation_recipient = 'None'
admin = sender_email
args = [name, action_by, routing_level, status, cr_number, cr_name,
company_requestedto, department_requestedto, priority_level,
url, remarks, recipient, action_type, delegation_type, admin]
url, remarks, recipient, action_type, delegation_type,
delegation_recipient, admin]
main_threading(args, sender.routing_table_actions)
......
......@@ -25,7 +25,8 @@ from app.applicationlayer.cms.utils_cr import (
reminder_trigger_save,
overdue_trigger_save,
reset_autoemail_tables,
cancelled_user_trigger
cancelled_user_trigger,
send_mail_approver
)
from app.applicationlayer.utils import model_to_dict
from app.entities import enums, models
......@@ -517,7 +518,7 @@ def update_form_header_status(form_code, status):
return True
def cr_routing_actions(approver_instance, current_user):
def cr_routing_actions(approver_instance, current_user, move_to_level):
form_code = approver_instance['form_code']
delegation = approver_instance['delegation']['name']
......@@ -562,12 +563,12 @@ def cr_routing_actions(approver_instance, current_user):
#save details for reminder trigger
reminder_trigger_save(form_code, date_now, date_now)
elif approver_instance['action'].lower() == 'revised':
elif approver_instance['action'].lower() == 'rejected':
# send email to vendor
if delegation.lower() == 'requestor':
notification_msg = REVISED_MESSAGE.split(';')[0]
notification_msg = VENDOR_REJECT_MESSAGE.split(';')[0]
# send reject email to vendor
send_mail_vendor(
......@@ -590,34 +591,94 @@ def cr_routing_actions(approver_instance, current_user):
else:
prev_vendor = check_vendor_level(
'prev', level, form_code)
# move_to_level
back_to_approver = models.ChangeRequestFormApprovers.objects.filter(
Q(form_code=form_code) &
Q(level=move_to_level) &
(~Q(action=None) | Q(delegation__name='Requestor'))
).first()
print(back_to_approver.delegation.name)
if prev_vendor.count() > 0:
if back_to_approver.delegation.name.lower() == 'requestor':
notification_msg = REVISED_MESSAGE.split(';')[0]
requestor_notification_msg = REQUESTOR_REJECT_MESSAGE.split(';')[0]
# SEND EMAIL AND NOTIF TO REQUESTOR
send_mail_requestor(
current_user, form_code, delegation,
requestor_notification_msg, action,
remarks, level
)
update_form_header_status(form_code, 'Rejected')
elif back_to_approver.delegation.name.lower() == 'vendor/implementor':
vendor_notification_msg = REVISED_MESSAGE.split(';')[0]
# send reject email to vendor
send_mail_vendor(
current_user, form_code, 'others',
notification_msg, action,
current_user, form_code, delegation,
vendor_notification_msg, action,
remarks, level
)
last_action_vendor = prev_vendor.last()
requestor_notification_msg = REQUESTOR_REJECT_MESSAGE.split(';')[0]
# SEND EMAIL AND NOTIF TO REQUESTOR
send_mail_requestor(
current_user, form_code, delegation,
requestor_notification_msg, action,
remarks, level
)
# reset selected vendor details
models.ChangeRequestFormApprovers.objects.filter(
code=last_action_vendor
Q(form_code=form_code) &
Q(level=int(move_to_level))
).update(
is_action=True,
action='Acknowledged',
action_date=datetime.now(),
date_sent=datetime.now()
)
)
else:
approver_code = back_to_approver.user.code
approver_notification_msg = REVISED_MESSAGE.split(';')[0]
send_mail_approver(
current_user, form_code, delegation,
approver_notification_msg, action, remarks,
level, approver_code
)
requestor_notification_msg = REQUESTOR_REJECT_MESSAGE.split(';')[0]
# SEND EMAIL AND NOTIF TO REQUESTOR
send_mail_requestor(
current_user, form_code, delegation,
requestor_notification_msg, action,
remarks, level
)
# level = last_action_vendor.level
# print(level)
# reset selected vendor details
models.ChangeRequestFormApprovers.objects.filter(
Q(form_code=form_code) &
Q(level=int(move_to_level))
).update(
is_action=True,
action=None,
action_date=None,
date_sent=datetime.now()
)
models.ChangeRequestFormApprovers.objects.filter(
Q(form_code=form_code) & Q(level__gte=int(level))
Q(form_code=form_code) & Q(level__gt=int(move_to_level))
).update(
is_action=False,
action=None,
......@@ -625,20 +686,6 @@ def cr_routing_actions(approver_instance, current_user):
action_date=None,
date_sent=None
)
elif approver_instance['action'].lower() == 'rejected':
update_form_header_status(form_code, 'Rejected')
# EMAIL CODE FOR REQUESTOR
requestor_notification_msg = REQUESTOR_REJECT_MESSAGE.split(';')[0]
# SEND EMAIL AND NOTIF TO REQUESTOR
send_mail_requestor(
current_user, form_code, delegation,
requestor_notification_msg, action,
remarks, level
)
elif approver_instance['action'].lower() == 'completed':
......
......@@ -13,7 +13,7 @@ def error_safe(function):
def wrap(request, *args, **kwargs):
stat = status.HTTP_500_INTERNAL_SERVER_ERROR
try:
return function(request, *args, **kwargs)
return function(request, *args, **kwargs)
# except 'DoesNotExist' as ex:
# print('ddd')
# stat = status.HTTP_404_NOT_FOUND
......
......@@ -243,7 +243,8 @@ def routing_table_actions(args):
recipient = args[11]
action_type = args[12]
delegation_type = args[13]
admin = args[14]
delegation_recipient = args[14]
admin = args[15]
if args[12].lower() == 'approved':
email_template = 'RMS-CRAPPROVED.html'
......@@ -258,20 +259,18 @@ def routing_table_actions(args):
email_template = 'RMS-CRACCEPTED.html'
subject = 'Resource Management System - Change Request Accepted'
elif args[12].lower() == 'rejected':
subject = 'Resource Management System - Change Request Rejected'
if args[13].lower() == 'requestor' or args[13].lower() == 'others':
email_template = 'RMS-CRREJECTED-VENDOR.html'
else:
if args[14].lower() == 'requestor':
subject = 'Resource Management System - Change Request Rejected'
email_template = 'RMS-CRREJECTED.html'
elif args[12].lower() == 'revised':
subject = 'Resource Management System - Action Required for Change Request'
email_template = 'RMS-CRREVISED.html'
elif args[14].lower() == 'vendor' or args[14].lower() == 'approver':
subject = 'Resource Management System - Action Required for Change Request'
email_template = 'RMS-CRREVISED.html'
elif args[12].lower() == 'cancelled':
subject = 'Resource Management System - Change Request Cancelled'
email_template = 'RMS-CRCANCELLED-USERTRIGGER.html'
F = open(os.path.join(settings.EMAIL_TEMPLATES_ROOT, email_template), 'r')
FC = F.read()
FC = FC.replace('{name}', name)
......@@ -285,15 +284,15 @@ def routing_table_actions(args):
FC = FC.replace('{priority_level}', priority_level)
FC = FC.replace('{url}', url)
if args[12].lower() == 'rejected' or args[12].lower() == 'revised':
if args[12].lower() == 'rejected':
FC = FC.replace('{remarks}', remarks)
if email_template == 'RMS-CRREJECTED-VENDOR.html':
if email_template == 'RMS-CRREVISED.html':
if args[13].lower() == 'requestor':
FC = FC.replace('{delegation}', 'requestor')
if args[14].lower() == 'vendor':
FC = FC.replace('{action_revise}', 'acknowledgement')
else:
FC = FC.replace('{delegation}', 'approver')
FC = FC.replace('{action_revise}', 'approval')
try:
send_mail(
......
......@@ -9,7 +9,7 @@
<h3 style="color:#888888;">Change Request Revision</h3><br>
<p>Dear {name},</p><br>
<p>A change request has been submitted for your acknowledgement to revise. Please see the details of the change request below.</p><br>
<p>A change request has been submitted for your {action_revise} to revise. Please see the details of the change request below.</p><br>
<b>Rejected By</b><br>{action_by}<br><br>
<b>Routing Level</b><br>{routing_level}<br><br>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment