diff --git a/wildlifecompliance/components/sanction_outcome/api.py b/wildlifecompliance/components/sanction_outcome/api.py index 8000ecb47..ce56b0cd6 100644 --- a/wildlifecompliance/components/sanction_outcome/api.py +++ b/wildlifecompliance/components/sanction_outcome/api.py @@ -35,10 +35,12 @@ send_caution_notice, send_letter_of_advice, send_parking_infringement_without_offenders, \ send_remediation_action_submitted_notice, send_remediation_action_accepted_notice, \ send_remediation_action_request_amendment_mail, send_infringement_notice_issued_on_paper, \ - send_remediation_notice_issued_on_paper + send_remediation_notice_issued_on_paper, create_infringement_notice_ybw from wildlifecompliance.components.sanction_outcome.models import SanctionOutcome, RemediationAction, \ SanctionOutcomeCommsLogEntry, AllegedCommittedOffence, SanctionOutcomeUserAction, SanctionOutcomeCommsLogDocument, \ AmendmentRequestReason, SanctionOutcomeDocument, SanctionOutcomeDocumentAccessLog +from wildlifecompliance.components.sanction_outcome.pdf import create_remediation_notice_pdf, create_caution_notice_pdf, \ + create_letter_of_advice_pdf from wildlifecompliance.components.sanction_outcome.serializers import SanctionOutcomeSerializer, \ SaveSanctionOutcomeSerializer, SaveRemediationActionSerializer, SanctionOutcomeDatatableSerializer, \ UpdateAssignedToIdSerializer, SanctionOutcomeCommsLogEntrySerializer, SanctionOutcomeUserActionSerializer, \ @@ -1030,26 +1032,32 @@ def send_parking_infringement(self, request, instance=None, *args, **kwargs): try: with transaction.atomic(): instance = self.get_object() if not instance else instance - instance.endorse_parking_infringement() + # instance.endorse_parking_infringement() workflow_entry = self.add_comms_log(request, instance, workflow=True) + instance.endorse() + if not instance.issued_on_paper: + attachments = create_infringement_notice_ybw(instance, workflow_entry) + + # Log action + instance.log_user_action(SanctionOutcomeUserAction.ACTION_ENDORSE_AND_ISSUE.format(instance.lodgement_number), request) # Email to the offender, and bcc to the respoinsible officer, manager and infringement notice coordinators - inc_group = SanctionOutcome.get_compliance_permission_group(None, SanctionOutcome.WORKFLOW_ENDORSE) - inc_emails = [member.email for member in inc_group.members] - to_address = [instance.get_offender()[0].email, ] - cc = None - bcc = [instance.responsible_officer.email, request.user.email] + inc_emails - email_data = send_infringement_notice(to_address, instance, workflow_entry, request, cc, bcc) + # inc_group = SanctionOutcome.get_compliance_permission_group(None, SanctionOutcome.WORKFLOW_ENDORSE) + # inc_emails = [member.email for member in inc_group.members] + # to_address = [instance.get_offender()[0].email, ] + # cc = None + # bcc = [instance.responsible_officer.email, request.user.email] + inc_emails + # email_data = send_infringement_notice(to_address, instance, workflow_entry, request, cc, bcc) # Log the above email as a communication log entry - if email_data: - email_data['sanction_outcome'] = instance.id - serializer = SanctionOutcomeCommsLogEntrySerializer(instance=workflow_entry, data=email_data, partial=True) - serializer.is_valid(raise_exception=True) - serializer.save() + # if email_data: + # email_data['sanction_outcome'] = instance.id + # serializer = SanctionOutcomeCommsLogEntrySerializer(instance=workflow_entry, data=email_data, partial=True) + # serializer.is_valid(raise_exception=True) + # serializer.save() - instance.log_user_action(SanctionOutcomeUserAction.ACTION_ISSUE_PARKING_INFRINGEMENT.format(instance.lodgement_number, ', '.join(to_address)), request) + # instance.log_user_action(SanctionOutcomeUserAction.ACTION_ISSUE_PARKING_INFRINGEMENT.format(instance.lodgement_number, ', '.join(to_address)), request) return Response( # return_serializer.data, @@ -1121,7 +1129,7 @@ def extend_due_date(self, request, instance=None, *args, **kwargs): workflow_entry = instance.comms_logs.get(id=comms_log_id) else: workflow_entry = self.add_comms_log(request, instance, workflow=True) - workflow_entry.text = 'test katsu' + # workflow_entry.text = 'test katsu' workflow_entry.save() new_due_date = request.data.get('new_due_date', None) @@ -1216,74 +1224,77 @@ def workflow_action(self, request, instance=None, *args, **kwargs): email_data = send_decline_email(to_address, instance, workflow_entry, request, cc, bcc) elif workflow_type == SanctionOutcome.WORKFLOW_ENDORSE: - if instance.type in (SO_TYPE_LETTER_OF_ADVICE, SO_TYPE_CAUTION_NOTICE): - instance.endorse(request) + if instance.type == SO_TYPE_LETTER_OF_ADVICE: + instance.endorse() if not instance.issued_on_paper: - to_address = [instance.get_offender()[0].email, ] - cc = None - bcc = [member.email for member in instance.allocated_group.members] - if instance.type == SO_TYPE_CAUTION_NOTICE: - email_data = send_caution_notice(to_address, instance, workflow_entry, request, cc, bcc) - else: - email_data = send_letter_of_advice(to_address, instance, workflow_entry, request, cc, bcc) + pdf_file_name = 'letter_of_advice_{}_{}.pdf'.format(instance.lodgement_number, datetime.now().strftime("%Y%m%d%H%M%S")) + document = create_letter_of_advice_pdf(pdf_file_name, instance) # Action log for endorsement and issuance instance.log_user_action(SanctionOutcomeUserAction.ACTION_ENDORSE_AND_ISSUE.format(instance.lodgement_number), request) + instance.status = SanctionOutcome.STATUS_AWAITING_PRINT_AND_POST + instance.save() else: instance.log_user_action(SanctionOutcomeUserAction.ACTION_ENDORSE.format(instance.lodgement_number), request) + instance.status = SanctionOutcome.STATUS_CLOSED + instance.log_user_action(SanctionOutcomeUserAction.ACTION_CLOSE.format(instance.lodgement_number), request) + instance.save() - # close letter_of_advice/caution_notice - instance.status = SanctionOutcome.STATUS_CLOSED - instance.save() + elif instance.type == SO_TYPE_CAUTION_NOTICE: + instance.endorse() + if not instance.issued_on_paper: + pdf_file_name = 'caution_notice_{}_{}.pdf'.format(instance.lodgement_number, datetime.now().strftime("%Y%m%d%H%M%S")) + document = create_caution_notice_pdf(pdf_file_name, instance) - # Action log for closure of this instance - instance.log_user_action(SanctionOutcomeUserAction.ACTION_CLOSE.format(instance.lodgement_number), - request) - elif not instance.is_parking_offence or (instance.is_parking_offence and instance.offender): - instance.endorse(request) + # Action log for endorsement and issuance + instance.log_user_action(SanctionOutcomeUserAction.ACTION_ENDORSE_AND_ISSUE.format(instance.lodgement_number), request) + instance.status = SanctionOutcome.STATUS_AWAITING_PRINT_AND_POST + instance.save() + else: + instance.log_user_action(SanctionOutcomeUserAction.ACTION_ENDORSE.format(instance.lodgement_number), request) + instance.status = SanctionOutcome.STATUS_CLOSED + instance.log_user_action(SanctionOutcomeUserAction.ACTION_CLOSE.format(instance.lodgement_number), request) + instance.save() + elif instance.type == SO_TYPE_REMEDIATION_NOTICE: + instance.endorse() if not instance.issued_on_paper: - # Email to the offender, and bcc to the respoinsible officer, manager and infringement notice coordinators - inc_group = SanctionOutcome.get_compliance_permission_group(None, SanctionOutcome.WORKFLOW_ENDORSE) - inc_emails = [member.email for member in inc_group.members] - to_address = [instance.get_offender()[0].email, ] - cc = None - bcc = [instance.responsible_officer.email, request.user.email] + inc_emails - if instance.type == SO_TYPE_INFRINGEMENT_NOTICE: - email_data = send_infringement_notice(to_address, instance, workflow_entry, request, cc, bcc) + # email_data = send_remediation_notice(to_address, instance, workflow_entry, request, cc, bcc) + pdf_file_name = 'remediation_notice_{}_{}.pdf'.format(instance.lodgement_number, datetime.now().strftime( "%Y%m%d%H%M%S")) + document = create_remediation_notice_pdf(pdf_file_name, instance) + else: + # Nothing to do here. All done in the instance.endorse() method + pass + elif instance.type == SO_TYPE_INFRINGEMENT_NOTICE: + # This is Infringement Notice + if not instance.is_parking_offence or (instance.is_parking_offence and instance.offender): + instance.endorse() + if not instance.issued_on_paper: + attachments = create_infringement_notice_ybw(instance, workflow_entry) + + # Log action + instance.log_user_action(SanctionOutcomeUserAction.ACTION_ENDORSE_AND_ISSUE.format(instance.lodgement_number), request) else: - email_data = send_remediation_notice(to_address, instance, workflow_entry, request, cc, bcc) - - # Log action - instance.log_user_action(SanctionOutcomeUserAction.ACTION_ENDORSE_AND_ISSUE.format(instance.lodgement_number), request) + # Nothing to do here. All done in the instance.endorse() method + pass else: - # Email + # This is a parking infringement but no offenders are set + instance.send_to_inc() + inc_group = SanctionOutcome.get_compliance_permission_group(None, SanctionOutcome.WORKFLOW_ENDORSE) inc_emails = [member.email for member in inc_group.members] to_address = inc_emails - cc = [instance.responsible_officer.email,] - bcc = None - if instance.type == fanctionOutcome.TYPE_INFRINGEMENT_NOTICE: - email_data = send_infringement_notice_issued_on_paper(to_address, instance, workflow_entry, request, cc, bcc) - else: - email_data = send_remediation_notice_issued_on_paper(to_address, instance, workflow_entry, request, cc, bcc) + cc = [instance.responsible_officer.email, request.user.email] + bcc = [] + # Email to infringement notice coordinators + email_data = send_parking_infringement_without_offenders(to_address, instance, workflow_entry, request, cc, bcc) + + # Log action instance.log_user_action(SanctionOutcomeUserAction.ACTION_ENDORSE.format(instance.lodgement_number), request) else: - # This is a parking infringement but no offenders are set - instance.send_to_inc() - - inc_group = SanctionOutcome.get_compliance_permission_group(None, SanctionOutcome.WORKFLOW_ENDORSE) - inc_emails = [member.email for member in inc_group.members] - to_address = inc_emails - cc = [instance.responsible_officer.email, request.user.email] - bcc = [] - - # Email to infringement notice coordinators - email_data = send_parking_infringement_without_offenders(to_address, instance, workflow_entry, request, cc, bcc) - - # Log action - instance.log_user_action(SanctionOutcomeUserAction.ACTION_ENDORSE.format(instance.lodgement_number), request) + # Should not reach here + pass elif workflow_type == SanctionOutcome.WORKFLOW_RETURN_TO_OFFICER: if not reason: @@ -1340,6 +1351,9 @@ def workflow_action(self, request, instance=None, *args, **kwargs): bcc = None email_data = send_return_to_infringement_notice_coordinator_email(to_address, instance, workflow_entry, request, cc, bcc) + elif workflow_type == SanctionOutcome.WORKFLOW_MARK_DOCUMENT_POSTED: + instance.mark_document_posted(request) + else: # Should not reach here # instance.save() diff --git a/wildlifecompliance/components/sanction_outcome/email.py b/wildlifecompliance/components/sanction_outcome/email.py index 68f5560a5..efb756d77 100644 --- a/wildlifecompliance/components/sanction_outcome/email.py +++ b/wildlifecompliance/components/sanction_outcome/email.py @@ -8,7 +8,7 @@ from wildlifecompliance.components.main.email import prepare_attachments, _extract_email_headers from wildlifecompliance.components.sanction_outcome.pdf import create_infringement_notice_pdf, \ create_letter_of_advice_pdf, \ - create_caution_notice_pdf, create_remediation_notice_pdf_bytes + create_caution_notice_pdf, create_remediation_notice_pdf logger = logging.getLogger(__name__) @@ -300,7 +300,7 @@ def send_remediation_notice(to_address, sanction_outcome, workflow_entry, reques } pdf_file_name = 'remediation_notice_{}_{}.pdf'.format(sanction_outcome.lodgement_number, datetime.datetime.now().strftime("%Y%m%d%H%M%S")) - document = create_remediation_notice_pdf_bytes(pdf_file_name, sanction_outcome) + document = create_remediation_notice_pdf(pdf_file_name, sanction_outcome) # Attach files (files from the modal, and the PDF file generated above) attachments = prepare_attachments(workflow_entry.documents) diff --git a/wildlifecompliance/components/sanction_outcome/models.py b/wildlifecompliance/components/sanction_outcome/models.py index 271c2799b..757204e4e 100644 --- a/wildlifecompliance/components/sanction_outcome/models.py +++ b/wildlifecompliance/components/sanction_outcome/models.py @@ -54,6 +54,7 @@ class SanctionOutcome(models.Model): WORKFLOW_ESCALATE_FOR_WITHDRAWAL = 'escalate_for_withdrawal' # INC: infringement notice coordinator WORKFLOW_RETURN_TO_OFFICER = 'return_to_officer' WORKFLOW_RETURN_TO_INFRINGEMENT_NOTICE_COORDINATOR = 'return_to_infringement_notice_coordinator' + WORKFLOW_MARK_DOCUMENT_POSTED = 'mark_document_posted' WORKFLOW_CLOSE = 'close' PAYMENT_STATUS_PARTIALLY_PAID = 'partially_paid' @@ -71,6 +72,7 @@ class SanctionOutcome(models.Model): STATUS_DRAFT = 'draft' STATUS_AWAITING_ENDORSEMENT = 'awaiting_endorsement' STATUS_AWAITING_PAYMENT = 'awaiting_payment' + STATUS_AWAITING_PRINT_AND_POST = 'awaiting_print_and_post' STATUS_AWAITING_REVIEW = 'awaiting_review' STATUS_AWAITING_REMEDIATION_ACTIONS = 'awaiting_remediation_actions' STATUS_ESCALATED_FOR_WITHDRAWAL = 'escalated_for_withdrawal' @@ -99,6 +101,7 @@ class SanctionOutcome(models.Model): (STATUS_AWAITING_ENDORSEMENT, 'Awaiting Endorsement'), (STATUS_AWAITING_PAYMENT, 'Awaiting Payment'), # TODO: implement pending closuer of SanctionOutcome with type RemediationActions # This is pending closure status + (STATUS_AWAITING_PRINT_AND_POST, 'Awaiting Print and Post'), (STATUS_WITH_DOT, 'With Dep. of Transport'), (STATUS_AWAITING_ISSUANCE, 'Awaiting Issuance'), (STATUS_AWAITING_REVIEW, 'Awaiting Review'), @@ -374,6 +377,9 @@ def get_compliance_permission_group(regionDistrictId, workflow_type): elif workflow_type == SanctionOutcome.WORKFLOW_ENDORSE: codename = 'infringement_notice_coordinator' per_district = False + elif workflow_type == SanctionOutcome.WORKFLOW_MARK_DOCUMENT_POSTED: + codename = 'officer' + per_district = True elif workflow_type == SanctionOutcome.WORKFLOW_RETURN_TO_OFFICER: codename = 'officer' per_district = True @@ -497,32 +503,63 @@ def endorse_parking_infringement(self): self.allocated_group = new_group self.save() - def endorse(self, request): + def mark_document_posted(self, request): + if self.type == SO_TYPE_INFRINGEMENT_NOTICE: + self.status = SanctionOutcome.STATUS_AWAITING_PAYMENT + self.payment_status = SanctionOutcome.PAYMENT_STATUS_UNPAID + self.set_penalty_amounts() + self.create_due_dates() + new_group = SanctionOutcome.get_compliance_permission_group(self.regionDistrictId, SanctionOutcome.WORKFLOW_ENDORSE) + self.allocated_group = new_group + elif self.type == SO_TYPE_CAUTION_NOTICE: + self.status = SanctionOutcome.STATUS_CLOSED + elif self.type == SO_TYPE_LETTER_OF_ADVICE: + self.status = SanctionOutcome.STATUS_CLOSED + elif self.type == SO_TYPE_REMEDIATION_NOTICE: + self.status = SanctionOutcome.STATUS_AWAITING_REMEDIATION_ACTIONS + # new_group = SanctionOutcome.get_compliance_permission_group(self.regionDistrictId, SanctionOutcome.WORKFLOW_ENDORSE) + new_group = SanctionOutcome.get_compliance_permission_group(self.regionDistrictId, SanctionOutcome.WORKFLOW_RETURN_TO_OFFICER) + self.allocated_group = new_group + + self.save() + + def endorse(self): if self.type == SO_TYPE_INFRINGEMENT_NOTICE: if self.issued_on_paper: self.status = SanctionOutcome.STATUS_AWAITING_PAYMENT self.payment_status = SanctionOutcome.PAYMENT_STATUS_UNPAID self.set_penalty_amounts() self.create_due_dates() + new_group = SanctionOutcome.get_compliance_permission_group(self.regionDistrictId, + SanctionOutcome.WORKFLOW_ENDORSE) else: if self.is_issuable(raise_exception=True): self.confirm_date_time_issue(raise_exception=True) - self.status = SanctionOutcome.STATUS_AWAITING_PAYMENT - self.payment_status = SanctionOutcome.PAYMENT_STATUS_UNPAID - self.set_penalty_amounts() - self.create_due_dates() - new_group = SanctionOutcome.get_compliance_permission_group(self.regionDistrictId, SanctionOutcome.WORKFLOW_ENDORSE) + # self.status = SanctionOutcome.STATUS_AWAITING_PAYMENT + self.status = SanctionOutcome.STATUS_AWAITING_PRINT_AND_POST + # self.payment_status = SanctionOutcome.PAYMENT_STATUS_UNPAID + # self.set_penalty_amounts() + # self.create_due_dates() + new_group = SanctionOutcome.get_compliance_permission_group(self.regionDistrictId, + SanctionOutcome.WORKFLOW_MARK_DOCUMENT_POSTED) self.allocated_group = new_group - elif self.type in (SO_TYPE_CAUTION_NOTICE, SO_TYPE_LETTER_OF_ADVICE): - # print('In SanctionOutcome.endorse(): Should not reach here...') - # self.close(request) + elif self.type in SO_TYPE_CAUTION_NOTICE: + self.confirm_date_time_issue(raise_exception=True) + + elif self.type in SO_TYPE_LETTER_OF_ADVICE: self.confirm_date_time_issue(raise_exception=True) elif self.type == SO_TYPE_REMEDIATION_NOTICE: - self.status = SanctionOutcome.STATUS_AWAITING_REMEDIATION_ACTIONS - new_group = SanctionOutcome.get_compliance_permission_group(self.regionDistrictId, SanctionOutcome.WORKFLOW_RETURN_TO_OFFICER) - self.allocated_group = new_group + if self.issued_on_paper: + pass + # TODO: paper issued and endorsed + self.status = SanctionOutcome.STATUS_AWAITING_REMEDIATION_ACTIONS + else: + # self.status = SanctionOutcome.STATUS_AWAITING_REMEDIATION_ACTIONS + self.status = SanctionOutcome.STATUS_AWAITING_PRINT_AND_POST + new_group = SanctionOutcome.get_compliance_permission_group(self.regionDistrictId, SanctionOutcome.WORKFLOW_RETURN_TO_OFFICER) + self.allocated_group = new_group id_suffix = 1 for remediation_action in self.remediation_actions.all(): @@ -606,6 +643,7 @@ def return_to_infringement_notice_coordinator(self, request): self.log_user_action(SanctionOutcomeUserAction.ACTION_RETURN_TO_INFRINGEMENT_NOTICE_COORDINATOR.format(self.lodgement_number), request) self.save() + def retrieve_penalty_amounts_by_date(self): qs_aco = AllegedCommittedOffence.objects.filter(Q(sanction_outcome=self) & Q(included=True)) if qs_aco.count() != 1: # Only infringement notice can have penalty. Infringement notice can have only one alleged offence. diff --git a/wildlifecompliance/components/sanction_outcome/pdf.py b/wildlifecompliance/components/sanction_outcome/pdf.py index a904efdac..04f764f50 100644 --- a/wildlifecompliance/components/sanction_outcome/pdf.py +++ b/wildlifecompliance/components/sanction_outcome/pdf.py @@ -49,7 +49,7 @@ def create_letter_of_advice_pdf(filename, sanction_outcome): return document -def create_remediation_notice_pdf_bytes(filename, sanction_outcome): +def create_remediation_notice_pdf(filename, sanction_outcome): value = create_remediation_notice_pdf_contents(filename, sanction_outcome) content = ContentFile(value) diff --git a/wildlifecompliance/components/sanction_outcome/serializers.py b/wildlifecompliance/components/sanction_outcome/serializers.py index bac856c04..e1f380635 100644 --- a/wildlifecompliance/components/sanction_outcome/serializers.py +++ b/wildlifecompliance/components/sanction_outcome/serializers.py @@ -509,7 +509,6 @@ def get_user_action(self, obj): process_url = 'Process' view_payment_url = 'View Payment' if inv_ref else '' cc_payment_url = 'Pay' - record_payment_url = 'Record Payment' if inv_ref \ else 'Record Payment' diff --git a/wildlifecompliance/doctopdf.py b/wildlifecompliance/doctopdf.py index 7b5da65f8..dd1c8ef0a 100644 --- a/wildlifecompliance/doctopdf.py +++ b/wildlifecompliance/doctopdf.py @@ -55,6 +55,8 @@ def retrieve_context(sanction_outcome): 'offender_postcode': offender_postcode, 'offender_residential_address': offender_residential_address, 'offender_email': offender_email, + 'offender_phone_number': offender.phone_number, + 'offender_mobile_number': offender.mobile_number, 'registration_number': rego, 'offence_location': offence_location, 'offence_date': offence_date, diff --git a/wildlifecompliance/frontend/wildlifecompliance/src/components/internal/sanction_outcome/sanction_outcome.vue b/wildlifecompliance/frontend/wildlifecompliance/src/components/internal/sanction_outcome/sanction_outcome.vue index 849ca3901..c72dc4c5b 100644 --- a/wildlifecompliance/frontend/wildlifecompliance/src/components/internal/sanction_outcome/sanction_outcome.vue +++ b/wildlifecompliance/frontend/wildlifecompliance/src/components/internal/sanction_outcome/sanction_outcome.vue @@ -72,7 +72,7 @@
- Send Parking Infringement + Endorse Parking Infringement
@@ -140,6 +140,13 @@ +
+
+ + Mark Document Posted + +
+
@@ -494,6 +501,7 @@ export default { let vm = this; vm.STATUS_DRAFT = 'draft'; vm.STATUS_AWAITING_ENDORSEMENT = 'awaiting_endorsement'; + vm.STATUS_AWAITING_PRINT_AND_POST = 'awaiting_print_and_post'; vm.STATUS_AWAITING_REVIEW = 'awaiting_review'; vm.STATUS_AWAITING_AMENDMENT = 'awaiting_amendment'; vm.STATUS_AWAITING_PAYMENT = 'awaiting_payment'; @@ -998,6 +1006,15 @@ export default { } return visibility; }, + visibilityMarkDocumentPostedButton: function(){ + let visibility = false; + if (this.sanction_outcome.can_user_action){ + if (this.sanction_outcome.status.id === this.STATUS_AWAITING_PRINT_AND_POST){ + visibility = true; + } + } + return visibility; + }, visibilityEndorseButton: function() { //return true; let visibility = false; @@ -1077,6 +1094,10 @@ export default { this.$refs.send_parking_infringement.isModalOpen = true; }); }, + markDocumentPosted: function(){ + console.log('in markDocumentPosted') + + }, driverSelected: function(data) { console.log(data); this.setDriver(data); diff --git a/wildlifecompliance/frontend/wildlifecompliance/src/components/internal/sanction_outcome/sanction_outcome_dashboard.vue b/wildlifecompliance/frontend/wildlifecompliance/src/components/internal/sanction_outcome/sanction_outcome_dashboard.vue index 69ccb3301..d4f87184c 100644 --- a/wildlifecompliance/frontend/wildlifecompliance/src/components/internal/sanction_outcome/sanction_outcome_dashboard.vue +++ b/wildlifecompliance/frontend/wildlifecompliance/src/components/internal/sanction_outcome/sanction_outcome_dashboard.vue @@ -203,6 +203,7 @@ export default { searchable: true, orderable: true, mRender: function(data, type, full){ + console.log(full) if (full.type.id == 'remediation_notice'){ console.log(full); let num_total = 0; diff --git a/wildlifecompliance/frontend/wildlifecompliance/src/components/internal/sanction_outcome/sanction_outcome_modal.vue b/wildlifecompliance/frontend/wildlifecompliance/src/components/internal/sanction_outcome/sanction_outcome_modal.vue index 9d9644d63..2326adcc9 100644 --- a/wildlifecompliance/frontend/wildlifecompliance/src/components/internal/sanction_outcome/sanction_outcome_modal.vue +++ b/wildlifecompliance/frontend/wildlifecompliance/src/components/internal/sanction_outcome/sanction_outcome_modal.vue @@ -24,6 +24,17 @@
+
+
+ +
+
+
+ +
+
+
+
@@ -50,17 +61,6 @@
-
-
- -
-
-
- -
-
-
-
@@ -384,6 +384,8 @@ export default { { data: 'id', render: function(data, type, full) { + console.log('full: ') + console.log(full) let ret_line = ''; // Chenck if this alleged offence has already a connection to the current offender selected @@ -419,8 +421,13 @@ export default { // Should not reach here ret_line += ''; } else { + let disabled_str = '' + if (full.section_regulation.is_parking_offence){ + disabled_str = ' disabled ' + selected_str = '' + } //ret_line += ''; - ret_line += ''; + ret_line += ''; } } diff --git a/wildlifecompliance/frontend/wildlifecompliance/src/components/internal/sanction_outcome/sanction_outcome_workflow.vue b/wildlifecompliance/frontend/wildlifecompliance/src/components/internal/sanction_outcome/sanction_outcome_workflow.vue index 6fd790fb2..a3a91b6f3 100644 --- a/wildlifecompliance/frontend/wildlifecompliance/src/components/internal/sanction_outcome/sanction_outcome_workflow.vue +++ b/wildlifecompliance/frontend/wildlifecompliance/src/components/internal/sanction_outcome/sanction_outcome_workflow.vue @@ -112,6 +112,9 @@ export default { case 'withdraw_by_branch_manager': return "Withdraw"; break; + case 'mark_document_posted': + return "Mark Document Posted"; + break; default: return "---"; } diff --git a/wildlifecompliance/frontend/wildlifecompliance/src/components/internal/sanction_outcome/send_parking_infringement.vue b/wildlifecompliance/frontend/wildlifecompliance/src/components/internal/sanction_outcome/send_parking_infringement.vue index da4bb5bee..b70c695ef 100644 --- a/wildlifecompliance/frontend/wildlifecompliance/src/components/internal/sanction_outcome/send_parking_infringement.vue +++ b/wildlifecompliance/frontend/wildlifecompliance/src/components/internal/sanction_outcome/send_parking_infringement.vue @@ -4,6 +4,7 @@
+
@@ -130,7 +132,8 @@ export default { this.processingDetails = true; const response = await this.sendData(); this.close(); - this.$parent.loadSanctionOutcome({ sanction_outcome_id: this.$parent.sanction_outcome.id }); + //this.$parent.loadSanctionOutcome({ sanction_outcome_id: this.$parent.sanction_outcome.id }); + this.$router.push({ name: 'internal-sanction-outcome-dash' }); } catch (err){ this.processError(err); } finally { diff --git a/wildlifecompliance/static/wildlifecompliance/templates/Remediation-Notice.docx b/wildlifecompliance/static/wildlifecompliance/templates/Remediation-Notice.docx index 3118d7591..dbe979d2c 100644 Binary files a/wildlifecompliance/static/wildlifecompliance/templates/Remediation-Notice.docx and b/wildlifecompliance/static/wildlifecompliance/templates/Remediation-Notice.docx differ