Commit ac916bcd authored by Gladys Forte's avatar Gladys Forte

refactor actions code

parent bfaed074
...@@ -495,100 +495,6 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet): ...@@ -495,100 +495,6 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
except Exception as e: except Exception as e:
return Response(e, return Response(e,
status=status.HTTP_500_INTERNAL_SERVER_ERROR) status=status.HTTP_500_INTERNAL_SERVER_ERROR)
@transaction.atomic()
@action(
methods=['PATCH'], detail=True,
url_path='re_route', url_name='re_route'
)
def re_route(self, request, *args, **kwargs):
# generate batchno history
batchno = get_max_batchno("batch")
# partial update
partial = kwargs.pop('partial', True)
instance = self.get_object()
form_code = kwargs['form_code']
status_update = {"status": 'Pending'}
serializer = self.get_serializer(instance,
data=status_update,
partial=partial)
serializer.is_valid(raise_exception=True)
old_instance = model_to_dict(instance)
self.perform_update(serializer)
form_header = get_object_or_404(models.ChangeRequestFormHeader,
pk=instance.id)
new_instance = model_to_dict(form_header)
# save history in form header
crhistory_save(
batchno,
enums.CREnum.REROUTE.value,
enums.CREnum.UPDATE.value,
enums.CREntitiesEnum.CR_FRM_HEADER.value,
form_code,
old_instance,
new_instance
)
approver_data = []
# get all approvers of form
approvers = models.ChangeRequestFormApprovers.objects.filter(
form_code=form_code)
for approver in approvers:
approver_add = {
'id': approver.id,
'action': None,
'remarks': None,
'date_sent': None,
'action_date': None,
'is_action': False
}
approver_data.append(approver_add)
change_request.form_add_edit_delete(
approver_data,
models.ChangeRequestFormApprovers,
enums.CREntitiesEnum.CR_FRM_APPROVER.value,
ChangeRequestFormApproversSerializer,
partial,
self,
form_code,
batchno,
enums.CREnum.REROUTE.value
)
min_level = models.ChangeRequestFormApprovers.objects.filter(
form_code=form_code
).aggregate(Min('level'))
min_level = min_level.get('level__min')
next_approver_email(form_code, min_level)
# update next approver details
models.ChangeRequestFormApprovers.objects.filter(
Q(form_code=form_code) & Q(level=int(min_level))
).update(
date_sent=datetime.now()
)
message = status_message_response(
200, 'success',
'Change request form successfully re routed',
serializer.data
)
return Response(message, status=status.HTTP_200_OK)
@transaction.atomic() @transaction.atomic()
@action( @action(
...@@ -690,15 +596,13 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet): ...@@ -690,15 +596,13 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
def actions(self, request, *args, **kwargs): def actions(self, request, *args, **kwargs):
current_user = self.request.user.code current_user = self.request.user.code
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) # delegation = action_body.get('delegation', False)
action = action_body.get('action', False) action = action_body.get('action', False)
level = action_body.get('level', False) # level = action_body.get('level', False)
next_level = int(level) + 1 # next_level = int(level) + 1
remarks = action_body.get('remarks', False) remarks = action_body.get('remarks', False)
# generate batchno history # generate batchno history
...@@ -736,249 +640,251 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet): ...@@ -736,249 +640,251 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
new_instance new_instance
) )
if action.lower() == 'approved': change_request.cr_routing_actions(new_instance, current_user)
# if action.lower() == 'approved':
the_next_vendor = models.ChangeRequestFormApprovers.objects.filter( # the_next_vendor = models.ChangeRequestFormApprovers.objects.filter(
form_code=form_code, level=int(next_level), # form_code=form_code, level=int(next_level),
delegation='Vendor/Implementor' # delegation='Vendor/Implementor'
).first() # ).first()
if the_next_vendor: # if the_next_vendor:
the_last_vendor = models.ChangeRequestFormApprovers.objects.filter( # the_last_vendor = models.ChangeRequestFormApprovers.objects.filter(
form_code=form_code, delegation='Vendor/Implementor' # form_code=form_code, delegation='Vendor/Implementor'
).order_by('level').last() # ).order_by('level').last()
if the_next_vendor == the_last_vendor: # if the_next_vendor == the_last_vendor:
models.ChangeRequestFormHeader.objects.filter( # models.ChangeRequestFormHeader.objects.filter(
form_code=form_code # form_code=form_code
).update(status='Approved') # ).update(status='Approved')
# NOTIF MSG FOR REQUESTOR # # NOTIF MSG FOR REQUESTOR
requestor_notification_msg = REQUESTOR_MESSAGE.split(';')[0] # requestor_notification_msg = REQUESTOR_MESSAGE.split(';')[0]
# NOTIF MSG FOR NEXT APPROVER # # NOTIF MSG FOR NEXT APPROVER
notification_msg = APPROVER_MESSAGE.split(';')[0] # notification_msg = APPROVER_MESSAGE.split(';')[0]
# SEND EMAIL AND NOTIF TO REQUESTOR # # SEND EMAIL AND NOTIF TO REQUESTOR
send_mail_requestor( # send_mail_requestor(
current_user, form_code, delegation, # current_user, form_code, delegation,
requestor_notification_msg, action, # requestor_notification_msg, action,
remarks, level # remarks, level
) # )
next_approver_email(form_code, next_level) # next_approver_email(form_code, next_level)
date_now = datetime.now() # date_now = datetime.now()
# update next approver details # # update next approver details
models.ChangeRequestFormApprovers.objects.filter( # models.ChangeRequestFormApprovers.objects.filter(
Q(form_code=form_code) & Q(level=int(next_level)) # Q(form_code=form_code) & Q(level=int(next_level))
).update( # ).update(
date_sent=date_now, # date_sent=date_now,
is_action=True # is_action=True
) # )
# update current approver details # # update current approver details
models.ChangeRequestFormApprovers.objects.filter( # models.ChangeRequestFormApprovers.objects.filter(
Q(form_code=form_code) & Q(level=int(level)) # Q(form_code=form_code) & Q(level=int(level))
).update( # ).update(
is_action=False # is_action=False
) # )
reminder_trigger_save(form_code, date_now, # reminder_trigger_save(form_code, date_now,
approver_instance.date_sent) # approver_instance.date_sent)
elif action.lower() == 'rejected': # elif action.lower() == 'rejected':
# send email to vendor # # send email to vendor
if delegation.lower() == 'requestor': # if delegation.lower() == 'requestor':
notification_msg = VENDOR_REJECT_MESSAGE.split(';')[0] # notification_msg = VENDOR_REJECT_MESSAGE.split(';')[0]
send_mail_vendor( # send_mail_vendor(
current_user, form_code, delegation, # current_user, form_code, delegation,
notification_msg, action, # notification_msg, action,
remarks, level # remarks, level
) # )
prev_level = int(level) - 1
# reset last vendor details
models.ChangeRequestFormApprovers.objects.filter(
Q(form_code=form_code) &
Q(level=int(prev_level))
).update(
is_action=True,
action='Acknowledged',
action_date=datetime.now(),
date_sent=datetime.now()
)
else:
prev_vendor = models.ChangeRequestFormApprovers.objects.filter( # prev_level = int(level) - 1
Q(form_code=form_code) & # # reset last vendor details
Q(action='Completed') & # models.ChangeRequestFormApprovers.objects.filter(
Q(delegation='Vendor/Implementor') & # Q(form_code=form_code) &
Q(level__lte=int(level)) # Q(level=int(prev_level))
) # ).update(
# is_action=True,
if not prev_vendor.count() > 0: # action='Acknowledged',
# action_date=datetime.now(),
# date_sent=datetime.now()
# )
# else:
# prev_vendor = models.ChangeRequestFormApprovers.objects.filter(
# Q(form_code=form_code) &
# Q(action='Completed') &
# Q(delegation='Vendor/Implementor') &
# Q(level__lte=int(level))
# )
# if not prev_vendor.count() > 0:
models.ChangeRequestFormHeader.objects.filter( # models.ChangeRequestFormHeader.objects.filter(
form_code=form_code # form_code=form_code
).update(status='Rejected') # ).update(status='Rejected')
# EMAIL CODE FOR REQUESTOR # # EMAIL CODE FOR REQUESTOR
requestor_notification_msg = REQUESTOR_REJECT_MESSAGE.split(';')[0] # requestor_notification_msg = REQUESTOR_REJECT_MESSAGE.split(';')[0]
# SEND EMAIL AND NOTIF TO REQUESTOR # # SEND EMAIL AND NOTIF TO REQUESTOR
send_mail_requestor( # send_mail_requestor(
current_user, form_code, delegation, # current_user, form_code, delegation,
requestor_notification_msg, action, # requestor_notification_msg, action,
remarks, level # remarks, level
) # )
else: # else:
# EMAIL CODE FOR REQUESTOR # # EMAIL CODE FOR REQUESTOR
requestor_notification_msg = REQUESTOR_REJECT_MESSAGE.split(';')[0] # requestor_notification_msg = REQUESTOR_REJECT_MESSAGE.split(';')[0]
# SEND EMAIL AND NOTIF TO REQUESTOR # # SEND EMAIL AND NOTIF TO REQUESTOR
send_mail_requestor( # send_mail_requestor(
current_user, form_code, delegation, # current_user, form_code, delegation,
requestor_notification_msg, action, # requestor_notification_msg, action,
remarks, level # remarks, level
) # )
notification_msg = VENDOR_REJECT_MESSAGE.split(';')[0] # notification_msg = VENDOR_REJECT_MESSAGE.split(';')[0]
send_mail_vendor( # send_mail_vendor(
current_user, form_code, 'others', # current_user, form_code, 'others',
notification_msg, action, # notification_msg, action,
remarks, level # remarks, level
) # )
last_action_vendor = prev_vendor.last() # last_action_vendor = prev_vendor.last()
models.ChangeRequestFormApprovers.objects.filter( # models.ChangeRequestFormApprovers.objects.filter(
code=last_action_vendor # code=last_action_vendor
).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()
) # )
level = last_action_vendor.level + 1 # level = last_action_vendor.level + 1
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__gte=int(level))
).update( # ).update(
is_action=False, # is_action=False,
action=None, # action=None,
remarks=None, # remarks=None,
action_date=None, # action_date=None,
date_sent=None # date_sent=None
) # )
elif action.lower() == 'completed': # elif action.lower() == 'completed':
the_last_vendor = models.ChangeRequestFormApprovers.objects.filter( # the_last_vendor = models.ChangeRequestFormApprovers.objects.filter(
form_code=form_code, delegation='Vendor/Implementor' # form_code=form_code, delegation='Vendor/Implementor'
).order_by('level').last() # ).order_by('level').last()
if (current_user == the_last_vendor.user.code and # if (current_user == the_last_vendor.user.code and
level == the_last_vendor.level): # level == the_last_vendor.level):
models.ChangeRequestFormHeader.objects.filter( # models.ChangeRequestFormHeader.objects.filter(
form_code=form_code # form_code=form_code
).update(status='Approved') # ).update(status='Approved')
else: # else:
the_next_vendor = models.ChangeRequestFormApprovers.objects.filter( # the_next_vendor = models.ChangeRequestFormApprovers.objects.filter(
form_code=form_code, level=int(next_level), # form_code=form_code, level=int(next_level),
delegation='Vendor/Implementor' # delegation='Vendor/Implementor'
).first() # ).first()
if the_next_vendor: # if the_next_vendor:
if the_next_vendor.user.code == the_last_vendor.user.code: # if the_next_vendor.user.code == the_last_vendor.user.code:
models.ChangeRequestFormHeader.objects.filter( # models.ChangeRequestFormHeader.objects.filter(
form_code=form_code # form_code=form_code
).update(status='Approved') # ).update(status='Approved')
else: # else:
models.ChangeRequestFormHeader.objects.filter( # models.ChangeRequestFormHeader.objects.filter(
form_code=form_code # form_code=form_code
).update(status='Pending') # ).update(status='Pending')
next_approver_email(form_code, next_level) # next_approver_email(form_code, next_level)
models.ChangeRequestFormApprovers.objects.filter( # models.ChangeRequestFormApprovers.objects.filter(
Q(level=int(next_level)) # Q(level=int(next_level))
).update( # ).update(
date_sent=datetime.now(), # date_sent=datetime.now(),
is_action=True # is_action=True
) # )
# update current approver details # # update current approver details
models.ChangeRequestFormApprovers.objects.filter( # models.ChangeRequestFormApprovers.objects.filter(
Q(form_code=form_code) & Q(level=int(level)) # Q(form_code=form_code) & Q(level=int(level))
).update( # ).update(
is_action=False # is_action=False
) # )
# EMAIL CODE FOR REQUESTOR # # EMAIL CODE FOR REQUESTOR
requestor_notification_msg = REQUESTOR_COMPLETION_MESSAGE.split(';')[0] # requestor_notification_msg = REQUESTOR_COMPLETION_MESSAGE.split(';')[0]
send_mail_requestor( # send_mail_requestor(
current_user, form_code, delegation, # current_user, form_code, delegation,
requestor_notification_msg, action, # requestor_notification_msg, action,
remarks, level # remarks, level
) # )
elif action.lower() == 'acknowledged': # elif action.lower() == 'acknowledged':
# EMAIL CODE FOR REQUESTOR # # EMAIL CODE FOR REQUESTOR
requestor_notification_msg = REQUESTOR_ACKNOWLEDGE_MESSAGE.split(';')[0] # requestor_notification_msg = REQUESTOR_ACKNOWLEDGE_MESSAGE.split(';')[0]
send_mail_requestor( # send_mail_requestor(
current_user, form_code, delegation, # current_user, form_code, delegation,
requestor_notification_msg, action, # requestor_notification_msg, action,
remarks, level # remarks, level
) # )
elif action.lower() == 'accepted': # elif action.lower() == 'accepted':
models.ChangeRequestFormHeader.objects.filter( # models.ChangeRequestFormHeader.objects.filter(
form_code=form_code # form_code=form_code
).update(status='Completed & Accepted') # ).update(status='Completed & Accepted')
# EMAIL CODE FOR VENDOR # # EMAIL CODE FOR VENDOR
requestor_notification_msg = VENDOR_ACCEPTANCE_MESSAGE.split(';')[0] # requestor_notification_msg = VENDOR_ACCEPTANCE_MESSAGE.split(';')[0]
send_mail_vendor( # send_mail_vendor(
current_user, form_code, delegation, # current_user, form_code, delegation,
requestor_notification_msg, action, # requestor_notification_msg, action,
remarks, level # remarks, level
) # )
# update is_action for current level # # update is_action for current level
models.ChangeRequestFormApprovers.objects.filter( # models.ChangeRequestFormApprovers.objects.filter(
Q(form_code=form_code) & Q(level=int(level)) # Q(form_code=form_code) & Q(level=int(level))
).update( # ).update(
is_action=False # is_action=False
) # )
elif action.lower() == 'cancelled': # elif action.lower() == 'cancelled':
# changed form status to cancelled # # changed form status to cancelled
models.ChangeRequestFormHeader.objects.filter( # models.ChangeRequestFormHeader.objects.filter(
form_code=form_code).update(status='Cancelled') # form_code=form_code).update(status='Cancelled')
# update is_action for current level # # update is_action for current level
models.ChangeRequestFormApprovers.objects.filter( # models.ChangeRequestFormApprovers.objects.filter(
Q(form_code=form_code) & Q(level=int(level)) # Q(form_code=form_code) & Q(level=int(level))
).update( # ).update(
is_action=False # is_action=False
) # )
reset_autoemail_tables(form_code) # reset_autoemail_tables(form_code)
message = status_message_response( message = status_message_response(
200, 'success', 200, 'success',
...@@ -1227,6 +1133,8 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet): ...@@ -1227,6 +1133,8 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
next_approver_email(form_code, min_level) next_approver_email(form_code, min_level)
date_now = datetime.now()
# update next approver details # update next approver details
models.ChangeRequestFormApprovers.objects.filter( models.ChangeRequestFormApprovers.objects.filter(
Q(form_code=form_code) & Q(level=int(min_level)) Q(form_code=form_code) & Q(level=int(min_level))
...@@ -1237,6 +1145,10 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet): ...@@ -1237,6 +1145,10 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
# save details for overdue and auto cancellation # save details for overdue and auto cancellation
overdue_trigger_save(form_code) overdue_trigger_save(form_code)
# save details for reminder for first approver
reminder_trigger_save(form_code, date_now,
date_now)
serializer = self.get_serializer(instance) serializer = self.get_serializer(instance)
...@@ -1549,16 +1461,22 @@ class ChangeRequestFormPost(APIView): ...@@ -1549,16 +1461,22 @@ class ChangeRequestFormPost(APIView):
next_approver_email(frm_id, min_level) next_approver_email(frm_id, min_level)
date_now = datetime.now()
# update next approver details # update next approver details
models.ChangeRequestFormApprovers.objects.filter( models.ChangeRequestFormApprovers.objects.filter(
Q(form_code=frm_id) & Q(level=int(min_level)) Q(form_code=frm_id) & Q(level=int(min_level))
).update( ).update(
date_sent=datetime.now(), date_sent=date_now,
is_action=True is_action=True
) )
# save details for overdue and auto cancellation # save details for overdue and auto cancellation
overdue_trigger_save(frm_id) overdue_trigger_save(frm_id)
# save details for reminder for first approver
reminder_trigger_save(frm_id, date_now,
date_now)
message = { message = {
'code': 201, 'code': 201,
......
...@@ -20,7 +20,7 @@ REALTIMESERVER_IP = settings.REALTIMESERVER_IP ...@@ -20,7 +20,7 @@ REALTIMESERVER_IP = settings.REALTIMESERVER_IP
def model_to_dict(instance): def model_to_dict(instance):
try: try:
mySerializer = copy.deepcopy(DynamicSerializer) mySerializer = copy.deepcopy(DynamicSerializer)
mySerializer.Meta.model = instance.__class__ mySerializer.Meta.model = instance.__class__
return mySerializer(instance).data return mySerializer(instance).data
......
...@@ -13,14 +13,33 @@ from django.http import Http404 ...@@ -13,14 +13,33 @@ from django.http import Http404
from django.db.models import Q from django.db.models import Q
from app.applicationlayer.cms.utils_cr import ( from app.applicationlayer.cms.utils_cr import (
number_generator, crhistory_save, entity_log_bulk, number_generator,
crhistory_log_bulk_delete crhistory_save,
entity_log_bulk,
crhistory_log_bulk_delete,
send_mail_requestor,
next_approver_email,
send_mail_vendor,
crhistory_create_save,
reminder_trigger_save,
overdue_trigger_save,
reset_autoemail_tables
) )
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
from app.applicationlayer.utils import log_save, CustomPagination from app.applicationlayer.utils import log_save, CustomPagination
from app.applicationlayer.cms.template import serializers from app.applicationlayer.cms.template import serializers
from django.db.models import Min from django.db.models import Min
from django.conf import settings
APPROVER_MESSAGE = settings.APPROVER_MESSAGE
REQUESTOR_MESSAGE = settings.REQUESTOR_MESSAGE
REQUESTOR_REJECT_MESSAGE = settings.REQUESTOR_REJECT_MESSAGE
VENDOR_ACKNOWLEDGE_MESSAGE = settings.VENDOR_ACKNOWLEDGE_MESSAGE
REQUESTOR_ACKNOWLEDGE_MESSAGE = settings.REQUESTOR_ACKNOWLEDGE_MESSAGE
REQUESTOR_COMPLETION_MESSAGE = settings.REQUESTOR_COMPLETION_MESSAGE
VENDOR_ACCEPTANCE_MESSAGE = settings.VENDOR_ACCEPTANCE_MESSAGE
VENDOR_REJECT_MESSAGE = settings.VENDOR_REJECT_MESSAGE
def list_by_user(user_id_number): def list_by_user(user_id_number):
...@@ -443,7 +462,9 @@ def check_vendor_level(position, routing_level, form_code): ...@@ -443,7 +462,9 @@ def check_vendor_level(position, routing_level, form_code):
form_code=form_code, form_code=form_code,
level=int(routing_level), level=int(routing_level),
delegation='Vendor/Implementor' delegation='Vendor/Implementor'
) ).first()
return query
elif position == 'last': elif position == 'last':
...@@ -451,6 +472,8 @@ def check_vendor_level(position, routing_level, form_code): ...@@ -451,6 +472,8 @@ def check_vendor_level(position, routing_level, form_code):
form_code=form_code, form_code=form_code,
delegation='Vendor/Implementor' delegation='Vendor/Implementor'
).order_by('level').last() ).order_by('level').last()
return query
elif position == 'prev': elif position == 'prev':
...@@ -458,9 +481,265 @@ def check_vendor_level(position, routing_level, form_code): ...@@ -458,9 +481,265 @@ def check_vendor_level(position, routing_level, form_code):
Q(form_code=form_code) & Q(form_code=form_code) &
Q(action='Completed') & Q(action='Completed') &
Q(delegation='Vendor/Implementor') & Q(delegation='Vendor/Implementor') &
Q(level__lte=int(level)) Q(level__lte=int(routing_level))
)
return query
def update_form_approver(form_code, level, apprv_type, date_now):
if apprv_type == 'next':
# update next approver details
models.ChangeRequestFormApprovers.objects.filter(
Q(form_code=form_code) & Q(level=int(level))
).update(
date_sent=date_now,
is_action=True
)
elif apprv_type == 'current':
# update current approver details
models.ChangeRequestFormApprovers.objects.filter(
Q(form_code=form_code) & Q(level=int(level))
).update(
is_action=False
)
def update_form_header_status(form_code, status):
models.ChangeRequestFormHeader.objects.filter(
form_code=form_code
).update(status=status)
return True
def cr_routing_actions(approver_instance, current_user):
form_code = approver_instance['form_code']
delegation = approver_instance['delegation']
action = approver_instance['action'].lower()
level = approver_instance['level']
next_level = int(approver_instance['level']) + 1
remarks = approver_instance['remarks']
if approver_instance['action'].lower() == 'approved':
the_next_vendor = check_vendor_level(
'next', next_level, form_code)
if the_next_vendor:
the_last_vendor = check_vendor_level(
'last', level, form_code)
# changed form status to Approved
if the_next_vendor == the_last_vendor:
update_form_header_status(form_code, 'Approved')
# NOTIF MSG FOR REQUESTOR
requestor_notification_msg = REQUESTOR_MESSAGE.split(';')[0]
# SEND EMAIL AND NOTIF TO REQUESTOR
send_mail_requestor(
current_user, form_code, delegation,
requestor_notification_msg, action,
remarks, level
)
next_approver_email(form_code, next_level)
date_now = datetime.now()
# update next approver details
update_form_approver(form_code, next_level, 'next', date_now)
# update current approver details
update_form_approver(form_code, level, 'current', date_now)
#save details for reminder trigger
reminder_trigger_save(form_code, date_now, date_now)
elif approver_instance['action'].lower() == 'rejected':
# send email to vendor
if delegation.lower() == 'requestor':
notification_msg = VENDOR_REJECT_MESSAGE.split(';')[0]
# send reject email to vendor
send_mail_vendor(
current_user, form_code, delegation,
notification_msg, action,
remarks, level
)
prev_level = int(level) + 1
# reset last vendor details
models.ChangeRequestFormApprovers.objects.filter(
Q(form_code=form_code) &
Q(level=int(prev_level))
).update(
is_action=True,
action='Acknowledged',
action_date=datetime.now(),
date_sent=datetime.now()
)
else:
prev_vendor = check_vendor_level(
'prev', level, form_code)
if not prev_vendor.count() > 0:
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
)
else:
# 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
) )
# def cr_routing_actions(approver_instance): notification_msg = VENDOR_REJECT_MESSAGE.split(';')[0]
send_mail_vendor(
current_user, form_code, 'others',
notification_msg, action,
remarks, level
)
last_action_vendor = prev_vendor.last()
models.ChangeRequestFormApprovers.objects.filter(
code=last_action_vendor
).update(
is_action=True,
action='Acknowledged',
action_date=datetime.now(),
date_sent=datetime.now()
)
level = last_action_vendor.level + 1
models.ChangeRequestFormApprovers.objects.filter(
Q(form_code=form_code) & Q(level__gte=int(level))
).update(
is_action=False,
action=None,
remarks=None,
action_date=None,
date_sent=None
)
elif approver_instance['action'].lower() == 'completed':
the_last_vendor = check_vendor_level(
'last', level, form_code)
if (current_user == the_last_vendor.user.code and
level == the_last_vendor.level):
update_form_header_status(form_code, 'Approved')
else:
the_next_vendor = check_vendor_level(
'next', next_level, form_code)
if the_next_vendor:
if the_next_vendor.user.code == the_last_vendor.user.code:
update_form_header_status(form_code, 'Approved')
else:
update_form_header_status(form_code, 'Pending')
next_approver_email(form_code, next_level)
date_now = datetime.now()
# update next approver details
update_form_approver(form_code, next_level, 'next', date_now)
# update current approver details
update_form_approver(form_code, level, 'current', date_now)
# EMAIL CODE FOR REQUESTOR
requestor_notification_msg = REQUESTOR_COMPLETION_MESSAGE.split(';')[0]
send_mail_requestor(
current_user, form_code, delegation,
requestor_notification_msg, action,
remarks, level
)
elif action.lower() == 'acknowledged':
# EMAIL CODE FOR REQUESTOR
requestor_notification_msg = REQUESTOR_ACKNOWLEDGE_MESSAGE.split(';')[0]
send_mail_requestor(
current_user, form_code, delegation,
requestor_notification_msg, action,
remarks, level
)
elif action.lower() == 'accepted':
update_form_header_status(form_code, 'Completed & Accepted')
# EMAIL CODE FOR VENDOR
requestor_notification_msg = VENDOR_ACCEPTANCE_MESSAGE.split(';')[0]
send_mail_vendor(
current_user, form_code, delegation,
requestor_notification_msg, action,
remarks, level
)
# update current approver details
update_form_approver(form_code, level, 'current', date_now)
elif action.lower() == 'cancelled':
# changed form status to cancelled
update_form_header_status(form_code, 'Cancelled')
# update is_action for current level
update_form_approver(form_code, level, 'current', date_now)
reset_autoemail_tables(form_code)
return True
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