Commit cfe98ce5 authored by Gladys Forte's avatar Gladys Forte

Merge pull request #520 in RMS/api-main-service from gladys-dev2 to RMSv2

* commit 'cd053dbd':
  reject new routing action
  new routing reject initial
parents c6f03a81 cd053dbd
...@@ -164,7 +164,7 @@ class ForgotPassword(APIView): ...@@ -164,7 +164,7 @@ class ForgotPassword(APIView):
created=date_now, created=date_now,
timeout_at=timeout_at timeout_at=timeout_at
).save() ).save()
url = f"{settings.FRONT_END_URL}/forgot-password/reset"\ url = f"{settings.FRONT_END_URL}/forgot-password/reset"\
f"?token={TOKEN}" f"?token={TOKEN}"
......
...@@ -694,11 +694,9 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet): ...@@ -694,11 +694,9 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
action_body = request.data action_body = request.data
id = action_body.get('id', False) id = action_body.get('id', False)
form_code = action_body.get('form_code', False) form_code = action_body.get('form_code', False)
# delegation = action_body.get('delegation', False)
action = action_body.get('action', False) action = action_body.get('action', False)
# level = action_body.get('level', False)
# next_level = int(level) + 1
remarks = action_body.get('remarks', False) remarks = action_body.get('remarks', False)
move_to_level = action_body.get('move_to_level', False)
# generate batchno history # generate batchno history
batchno = get_max_batchno("batch") batchno = get_max_batchno("batch")
...@@ -735,7 +733,7 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet): ...@@ -735,7 +733,7 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
new_instance 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 # ---------------- removed code
message = status_message_response( message = status_message_response(
200, 'success', 200, 'success',
......
...@@ -208,6 +208,7 @@ def send_mail_vendor(requestor, ...@@ -208,6 +208,7 @@ def send_mail_vendor(requestor,
recipient = vendor_email recipient = vendor_email
action_type = action action_type = action
delegation_type = delegation delegation_type = delegation
delegation_recipient = 'vendor'
admin = sender_email admin = sender_email
args = [name, action_by, routing_level, status, cr_number, cr_name, args = [name, action_by, routing_level, status, cr_number, cr_name,
...@@ -276,11 +277,84 @@ def send_mail_requestor(current_user, ...@@ -276,11 +277,84 @@ def send_mail_requestor(current_user,
recipient = requestor_email recipient = requestor_email
action_type = action action_type = action
delegation_type = delegation delegation_type = delegation
delegation_recipient = 'requestor'
admin = sender_email admin = sender_email
args = [name, action_by, routing_level, status, cr_number, cr_name, args = [name, action_by, routing_level, status, cr_number, cr_name,
company_requestedto, department_requestedto, priority_level, 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)
message = f"{sender_name} {msg} ({template_name})"
# create notification
notification_create(form_code, message, requestor_code,
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) main_threading(args, sender.routing_table_actions)
...@@ -352,11 +426,13 @@ def next_approver_email(form_code, next_level): ...@@ -352,11 +426,13 @@ def next_approver_email(form_code, next_level):
recipient = receiver_email recipient = receiver_email
delegation_type = n_approver.delegation.name.lower() delegation_type = n_approver.delegation.name.lower()
delegation_recipient = 'None'
admin = sender_email admin = sender_email
args = [name, cr_number, cr_name, args = [name, cr_number, cr_name,
company_requestedto, department_requestedto, priority_level, 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) main_threading(args, sender.routing_table_actions_required)
...@@ -731,11 +807,13 @@ def cancelled_user_trigger(form_code, ...@@ -731,11 +807,13 @@ def cancelled_user_trigger(form_code,
recipient = receiver_email recipient = receiver_email
action_type = action action_type = action
delegation_type = 'others' delegation_type = 'others'
delegation_recipient = 'None'
admin = sender_email admin = sender_email
args = [name, action_by, routing_level, status, cr_number, cr_name, args = [name, action_by, routing_level, status, cr_number, cr_name,
company_requestedto, department_requestedto, priority_level, 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) main_threading(args, sender.routing_table_actions)
......
...@@ -25,7 +25,8 @@ from app.applicationlayer.cms.utils_cr import ( ...@@ -25,7 +25,8 @@ from app.applicationlayer.cms.utils_cr import (
reminder_trigger_save, reminder_trigger_save,
overdue_trigger_save, overdue_trigger_save,
reset_autoemail_tables, reset_autoemail_tables,
cancelled_user_trigger cancelled_user_trigger,
send_mail_approver
) )
from app.applicationlayer.utils import model_to_dict from app.applicationlayer.utils import model_to_dict
from app.entities import enums, models from app.entities import enums, models
...@@ -517,7 +518,7 @@ def update_form_header_status(form_code, status): ...@@ -517,7 +518,7 @@ def update_form_header_status(form_code, status):
return True 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'] form_code = approver_instance['form_code']
delegation = approver_instance['delegation']['name'] delegation = approver_instance['delegation']['name']
...@@ -562,12 +563,12 @@ def cr_routing_actions(approver_instance, current_user): ...@@ -562,12 +563,12 @@ def cr_routing_actions(approver_instance, current_user):
#save details for reminder trigger #save details for reminder trigger
reminder_trigger_save(form_code, date_now, date_now) 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 # send email to vendor
if delegation.lower() == 'requestor': if delegation.lower() == 'requestor':
notification_msg = REVISED_MESSAGE.split(';')[0] notification_msg = VENDOR_REJECT_MESSAGE.split(';')[0]
# send reject email to vendor # send reject email to vendor
send_mail_vendor( send_mail_vendor(
...@@ -590,34 +591,82 @@ def cr_routing_actions(approver_instance, current_user): ...@@ -590,34 +591,82 @@ def cr_routing_actions(approver_instance, current_user):
else: else:
prev_vendor = check_vendor_level( # move_to_level
'prev', level, form_code)
if prev_vendor.count() > 0: back_to_approver = models.ChangeRequestFormApprovers.objects.filter(
Q(form_code=form_code) &
Q(level=move_to_level)
).first()
print(back_to_approver.delegation.name)
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( send_mail_vendor(
current_user, form_code, 'others', current_user, form_code, delegation,
notification_msg, action, vendor_notification_msg, action,
remarks, level 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( models.ChangeRequestFormApprovers.objects.filter(
code=last_action_vendor Q(form_code=form_code) &
Q(level=int(move_to_level))
).update( ).update(
is_action=True, is_action=True,
action='Acknowledged', action='Acknowledged',
action_date=datetime.now(), action_date=datetime.now(),
date_sent=datetime.now() date_sent=datetime.now()
) )
else:
# level = last_action_vendor.level approver_code = back_to_approver.user.code
# print(level)
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
)
models.ChangeRequestFormApprovers.objects.filter( 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( ).update(
is_action=False, is_action=False,
action=None, action=None,
...@@ -625,20 +674,6 @@ def cr_routing_actions(approver_instance, current_user): ...@@ -625,20 +674,6 @@ def cr_routing_actions(approver_instance, current_user):
action_date=None, action_date=None,
date_sent=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': elif approver_instance['action'].lower() == 'completed':
......
...@@ -13,7 +13,7 @@ def error_safe(function): ...@@ -13,7 +13,7 @@ def error_safe(function):
def wrap(request, *args, **kwargs): def wrap(request, *args, **kwargs):
stat = status.HTTP_500_INTERNAL_SERVER_ERROR stat = status.HTTP_500_INTERNAL_SERVER_ERROR
try: try:
return function(request, *args, **kwargs) return function(request, *args, **kwargs)
# except 'DoesNotExist' as ex: # except 'DoesNotExist' as ex:
# print('ddd') # print('ddd')
# stat = status.HTTP_404_NOT_FOUND # stat = status.HTTP_404_NOT_FOUND
......
...@@ -243,7 +243,8 @@ def routing_table_actions(args): ...@@ -243,7 +243,8 @@ def routing_table_actions(args):
recipient = args[11] recipient = args[11]
action_type = args[12] action_type = args[12]
delegation_type = args[13] delegation_type = args[13]
admin = args[14] delegation_recipient = args[14]
admin = args[15]
if args[12].lower() == 'approved': if args[12].lower() == 'approved':
email_template = 'RMS-CRAPPROVED.html' email_template = 'RMS-CRAPPROVED.html'
...@@ -258,20 +259,18 @@ def routing_table_actions(args): ...@@ -258,20 +259,18 @@ def routing_table_actions(args):
email_template = 'RMS-CRACCEPTED.html' email_template = 'RMS-CRACCEPTED.html'
subject = 'Resource Management System - Change Request Accepted' subject = 'Resource Management System - Change Request Accepted'
elif args[12].lower() == 'rejected': elif args[12].lower() == 'rejected':
subject = 'Resource Management System - Change Request Rejected' if args[14].lower() == 'requestor':
if args[13].lower() == 'requestor' or args[13].lower() == 'others': subject = 'Resource Management System - Change Request Rejected'
email_template = 'RMS-CRREJECTED-VENDOR.html'
else:
email_template = 'RMS-CRREJECTED.html' email_template = 'RMS-CRREJECTED.html'
elif args[12].lower() == 'revised': elif args[14].lower() == 'vendor' or args[14].lower() == 'approver':
subject = 'Resource Management System - Action Required for Change Request' subject = 'Resource Management System - Action Required for Change Request'
email_template = 'RMS-CRREVISED.html' email_template = 'RMS-CRREVISED.html'
elif args[12].lower() == 'cancelled': elif args[12].lower() == 'cancelled':
subject = 'Resource Management System - Change Request Cancelled' subject = 'Resource Management System - Change Request Cancelled'
email_template = 'RMS-CRCANCELLED-USERTRIGGER.html' email_template = 'RMS-CRCANCELLED-USERTRIGGER.html'
F = open(os.path.join(settings.EMAIL_TEMPLATES_ROOT, email_template), 'r') F = open(os.path.join(settings.EMAIL_TEMPLATES_ROOT, email_template), 'r')
FC = F.read() FC = F.read()
FC = FC.replace('{name}', name) FC = FC.replace('{name}', name)
...@@ -285,15 +284,15 @@ def routing_table_actions(args): ...@@ -285,15 +284,15 @@ def routing_table_actions(args):
FC = FC.replace('{priority_level}', priority_level) FC = FC.replace('{priority_level}', priority_level)
FC = FC.replace('{url}', url) 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) FC = FC.replace('{remarks}', remarks)
if email_template == 'RMS-CRREJECTED-VENDOR.html': if email_template == 'RMS-CRREVISED.html':
if args[13].lower() == 'requestor': if args[14].lower() == 'vendor':
FC = FC.replace('{delegation}', 'requestor') FC = FC.replace('{action_revise}', 'acknowledgement')
else: else:
FC = FC.replace('{delegation}', 'approver') FC = FC.replace('{action_revise}', 'approval')
try: try:
send_mail( send_mail(
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<h3 style="color:#888888;">Change Request Revision</h3><br> <h3 style="color:#888888;">Change Request Revision</h3><br>
<p>Dear {name},</p><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>Rejected By</b><br>{action_by}<br><br>
<b>Routing Level</b><br>{routing_level}<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