From 73f5b5e925b5328c78ad43176e14253b4d473661 Mon Sep 17 00:00:00 2001 From: Ashley Date: Tue, 28 Jan 2025 08:00:09 +0000 Subject: [PATCH 1/4] Added: create new sticker functionality for edge cases and migrated approvals without sticker records --- mooringlicensing/components/approvals/api.py | 71 ++++++++++++++++++- .../components/approvals/models.py | 25 +++++++ .../components/approvals/serializers.py | 7 ++ .../components/payments_ml/models.py | 8 ++- .../components/payments_ml/views.py | 45 ++++++++++-- .../common/create_new_sticker_modal.vue | 63 ++++++++++++++-- .../common/request_new_sticker_modal.vue | 4 +- .../src/components/common/table_approvals.vue | 45 +++++++++++- .../components/common/table_dcv_permits.vue | 6 +- .../0393_stickeractiondetail_approval.py | 19 +++++ 10 files changed, 270 insertions(+), 23 deletions(-) create mode 100644 mooringlicensing/migrations/0393_stickeractiondetail_approval.py diff --git a/mooringlicensing/components/approvals/api.py b/mooringlicensing/components/approvals/api.py index d979084f7..c616adaa0 100755 --- a/mooringlicensing/components/approvals/api.py +++ b/mooringlicensing/components/approvals/api.py @@ -545,6 +545,65 @@ def swap_moorings(self, request, *args, **kwargs): originated_approval.child_obj.swap_moorings(request, target_approval.child_obj) return Response() + @detail_route(methods=['POST'], detail=True) + @basic_exception_handler + def create_new_sticker(self, request, *args, **kwargs): + # external + approval = self.get_object() + details = request.data['details'] + + if approval.current_proposal: + v_details = approval.current_proposal.latest_vessel_details + v_ownership = approval.current_proposal.vessel_ownership + + if v_details and not v_ownership.end_date: + # Licence/Permit has a vessel + sticker_action_details = [] + + #only allow this if there are no sticker records associated with the approval + if Sticker.objects.filter(approval=obj).exclude(status__in=[Sticker.STICKER_STATUS_EXPIRED,Sticker.STICKER_STATUS_CANCELLED]).exists(): + raise serializers.ValidationError("This approval already has an active sticker record.") + + data = {} + today = datetime.now(pytz.timezone(settings.TIME_ZONE)).date() + + data['action'] = 'Create new sticker' + data['user'] = request.user.id + data['reason'] = details['reason'] + if is_internal(request): + data['waive_the_fee'] = request.data.get('waive_the_fee', False) + else: + data['waive_the_fee'] = False + #new address checkbox + data['change_sticker_address'] = request.data.get('change_sticker_address', False) + #address change (only applied if above True) + data['new_postal_address_line1'] = request.data.get('postal_address_line1','') + data['new_postal_address_line2'] = request.data.get('postal_address_line2','') + data['new_postal_address_line3'] = request.data.get('postal_address_line3','') + data['new_postal_address_locality'] = request.data.get('postal_address_locality','') + data['new_postal_address_state'] = request.data.get('postal_address_state','') + data['new_postal_address_country'] = request.data.get('postal_address_country','AU') + data['new_postal_address_postcode'] = request.data.get('postal_address_postcode','') + if data['change_sticker_address'] and '' in [ + data['new_postal_address_line1'], + data['new_postal_address_locality'], + data['new_postal_address_state'], + data['new_postal_address_country'], + data['new_postal_address_postcode'] + ]: + raise serializers.ValidationError("Required address details not provided") + + serializer = StickerActionDetailSerializer(data=data) + serializer.is_valid(raise_exception=True) + new_sticker_action_detail = serializer.save() + new_sticker_action_detail.approval = approval + new_sticker_action_detail.save() + sticker_action_details.append(new_sticker_action_detail.id) + + return Response({'sticker_action_detail_ids': sticker_action_details}) + else: + raise Exception('You cannot request a new sticker for the licence/permit without a vessel.') + @detail_route(methods=['POST'], detail=True) @basic_exception_handler def request_new_stickers(self, request, *args, **kwargs): @@ -578,7 +637,11 @@ def request_new_stickers(self, request, *args, **kwargs): data['user'] = request.user.id data['reason'] = details['reason'] data['date_of_lost_sticker'] = today.strftime('%d/%m/%Y') - data['waive_the_fee'] = request.data.get('waive_the_fee', False) + + if is_internal(request): + data['waive_the_fee'] = request.data.get('waive_the_fee', False) + else: + data['waive_the_fee'] = False #new address checkbox data['change_sticker_address'] = request.data.get('change_sticker_address', False) @@ -602,6 +665,7 @@ def request_new_stickers(self, request, *args, **kwargs): serializer = StickerActionDetailSerializer(data=data) serializer.is_valid(raise_exception=True) new_sticker_action_detail = serializer.save() + new_sticker_action_detail.approval = approval new_sticker_action_detail.sticker = sticker new_sticker_action_detail.save() sticker_action_details.append(new_sticker_action_detail.id) @@ -1753,7 +1817,10 @@ def request_replacement(self, request, *args, **kwargs): data['sticker'] = sticker.id data['action'] = 'Request replacement' data['user'] = request.user.id - data['waive_the_fee'] = request.data.get('waive_the_fee', False) + if is_internal(request): + data['waive_the_fee'] = request.data.get('waive_the_fee', False) + else: + data['waive_the_fee'] = False data['reason'] = request.data.get('details', {}).get('reason', '') serializer = StickerActionDetailSerializer(data=data) serializer.is_valid(raise_exception=True) diff --git a/mooringlicensing/components/approvals/models.py b/mooringlicensing/components/approvals/models.py index c05eae871..84beb0269 100755 --- a/mooringlicensing/components/approvals/models.py +++ b/mooringlicensing/components/approvals/models.py @@ -431,6 +431,17 @@ def postal_address_line2(self): return ret_value + @property + def postal_address_line3(self): + try: + ret_value = self.proposal_applicant.postal_address_line3 + except: + logger.error(f'Postal address line3 cannot be retrieved for the approval [{self}]') + return '' + + return ret_value + + @property def postal_address_state(self): try: @@ -470,6 +481,19 @@ def postal_address_postcode(self): return ret_value + @property + def postal_address_country(self): + try: + ret_value = self.proposal_applicant.postal_address_country + except: + logger.error(f'Postal address country cannot be retrieved for the approval [{self}]') + return '' + + if not ret_value: + logger.warning(f'Empty country found for the postal address of the Approval: [{self}].') + + return ret_value + @property def description(self): if hasattr(self, 'child_obj'): @@ -3676,6 +3700,7 @@ def vessel_applicable_length(self): class StickerActionDetail(models.Model): + approval = models.ForeignKey(Approval, blank=True, null=True, related_name='sticker_action_approval', on_delete=models.SET_NULL) sticker = models.ForeignKey(Sticker, blank=True, null=True, related_name='sticker_action_details', on_delete=models.SET_NULL) reason = models.TextField(blank=True) date_created = models.DateTimeField(blank=True, null=True, auto_now_add=True) diff --git a/mooringlicensing/components/approvals/serializers.py b/mooringlicensing/components/approvals/serializers.py index 10f4fdbc3..eb0070868 100755 --- a/mooringlicensing/components/approvals/serializers.py +++ b/mooringlicensing/components/approvals/serializers.py @@ -599,6 +599,7 @@ class ListApprovalSerializer(serializers.ModelSerializer): allowed_assessors_user = serializers.SerializerMethodField() stickers = serializers.SerializerMethodField() stickers_historical = serializers.SerializerMethodField() + has_sticker = serializers.SerializerMethodField() is_approver = serializers.SerializerMethodField() is_assessor = serializers.SerializerMethodField() vessel_regos = serializers.SerializerMethodField() @@ -641,6 +642,7 @@ class Meta: 'allowed_assessors_user', 'stickers', 'stickers_historical', + 'has_sticker', 'licence_document', 'authorised_user_summary_document', 'is_assessor', @@ -685,6 +687,7 @@ class Meta: 'allowed_assessors_user', 'stickers', 'stickers_historical', + 'has_sticker', 'licence_document', 'authorised_user_summary_document', 'is_assessor', @@ -719,6 +722,9 @@ def get_mooring_offered(self, obj): } return mooring + def get_has_sticker(self,obj): + return Sticker.objects.filter(approval=obj).exclude(status__in=[Sticker.STICKER_STATUS_EXPIRED,Sticker.STICKER_STATUS_CANCELLED]).exists() + def get_moorings(self, obj): links = [] request = self.context.get('request') @@ -1123,6 +1129,7 @@ class Meta: model = StickerActionDetail fields = ( 'id', + 'approval', 'sticker', 'reason', 'date_created', diff --git a/mooringlicensing/components/payments_ml/models.py b/mooringlicensing/components/payments_ml/models.py index 7214ccddf..6fe73c1c7 100644 --- a/mooringlicensing/components/payments_ml/models.py +++ b/mooringlicensing/components/payments_ml/models.py @@ -134,8 +134,12 @@ class StickerActionFee(Payment): def __str__(self): stickers = [] for sticker_action_detail in self.sticker_action_details.all(): - stickers.append(sticker_action_detail.sticker.number) - return 'Sticker(s): [{}] : Invoice {}'.format(','.join(stickers), self.invoice_reference) + if sticker_action_detail.sticker: + stickers.append(sticker_action_detail.sticker.number) + if stickers: + return 'Sticker(s): [{}] : Invoice {}'.format(','.join(stickers), self.invoice_reference) + else: + return 'New Sticker Invoice {}'.format(self.invoice_reference) class Meta: app_label = 'mooringlicensing' diff --git a/mooringlicensing/components/payments_ml/views.py b/mooringlicensing/components/payments_ml/views.py index 21c7e9bc1..718acd230 100644 --- a/mooringlicensing/components/payments_ml/views.py +++ b/mooringlicensing/components/payments_ml/views.py @@ -261,7 +261,7 @@ def post(self, request, *args, **kwargs): 'quantity': 1, } if not applicant: - applicant = sticker_action_detail.sticker.approval.applicant_obj + applicant = sticker_action_detail.approval.applicant_obj lines.append(line) @@ -316,7 +316,7 @@ def get(self, request, uuid, format=None): sticker_action_fee.invoice_reference = invoice.reference sticker_action_fee.save() - + if sticker_action_fee.payment_type == StickerActionFee.PAYMENT_TYPE_TEMPORARY: sticker_action_fee.payment_type = ApplicationFee.PAYMENT_TYPE_INTERNET sticker_action_fee.expiry_time = None @@ -324,9 +324,44 @@ def get(self, request, uuid, format=None): old_sticker_numbers = [] for sticker_action_detail in sticker_action_details.all(): - old_sticker = sticker_action_detail.sticker - new_sticker = old_sticker.request_replacement(Sticker.STICKER_STATUS_LOST, sticker_action_detail) - old_sticker_numbers.append(old_sticker.number) + if sticker_action_detail.sticker: + old_sticker = sticker_action_detail.sticker + new_sticker = old_sticker.request_replacement(Sticker.STICKER_STATUS_LOST, sticker_action_detail) + old_sticker_numbers.append(old_sticker.number) + else: + if sticker_action_detail.change_sticker_address: + # Create replacement sticker + new_sticker = Sticker.objects.create( + approval=sticker_action_detail.approval, + vessel_ownership=sticker_action_detail.approval.proposal.vessel_ownership, + fee_constructor=sticker_action_detail.approval.proposal.fee_constructor, + fee_season=sticker_action_detail.approval.latest_applied_season, + postal_address_line1 = sticker_action_detail.new_postal_address_line1, + postal_address_line2 = sticker_action_detail.new_postal_address_line2, + postal_address_line3 = sticker_action_detail.new_postal_address_line3, + postal_address_locality = sticker_action_detail.new_postal_address_locality, + postal_address_state = sticker_action_detail.new_postal_address_state, + postal_address_country = sticker_action_detail.new_postal_address_country, + postal_address_postcode = sticker_action_detail.new_postal_address_postcode, + ) + logger.info(f'New Sticker: [{new_sticker}] has been created for the approval with a new postal address: [{sticker_action_detail.approval}].') + else: + # Create replacement sticker + new_sticker = Sticker.objects.create( + approval=sticker_action_detail.approval, + vessel_ownership=sticker_action_detail.approval.current_proposal.vessel_ownership, + fee_constructor=sticker_action_detail.approval.current_proposal.fee_constructor, + fee_season=sticker_action_detail.approval.latest_applied_season, + postal_address_line1 = sticker_action_detail.approval.postal_address_line1, + postal_address_line2 = sticker_action_detail.approval.postal_address_line2, + postal_address_line3 = sticker_action_detail.approval.postal_address_line3, + postal_address_locality = sticker_action_detail.approval.postal_address_suburb, + postal_address_state = sticker_action_detail.approval.postal_address_state, + postal_address_country = sticker_action_detail.approval.postal_address_country, + postal_address_postcode = sticker_action_detail.approval.postal_address_postcode, + ) + logger.info(f'New Sticker: [{new_sticker}] has been created for the approval: [{sticker_action_detail.approval}].') + # Send email with the invoice send_sticker_replacement_email(request, old_sticker_numbers, new_sticker.approval, invoice.reference) diff --git a/mooringlicensing/frontend/mooringlicensing/src/components/common/create_new_sticker_modal.vue b/mooringlicensing/frontend/mooringlicensing/src/components/common/create_new_sticker_modal.vue index 8d59d3b33..e9a44e316 100755 --- a/mooringlicensing/frontend/mooringlicensing/src/components/common/create_new_sticker_modal.vue +++ b/mooringlicensing/frontend/mooringlicensing/src/components/common/create_new_sticker_modal.vue @@ -3,7 +3,7 @@
{{ errorString }} -
+
@@ -51,10 +51,20 @@
+
+ +
+ +
+
+
+ Waive the fee +
+ Sticker replacement cost ${{ total_fee }} @@ -79,9 +89,13 @@ export default { data:function () { let vm = this; return { - dcv_permit_id: null, + details: vm.getDefaultDetails(), + approval_id: null, isModalOpen:false, processing: false, + replacementFee: false, + fee_item: null, + waive_the_fee: false, countries: [], errors: false, mailed_date: null, @@ -96,11 +110,15 @@ export default { postal_address_postcode: '', } }, - watch: { + props:{ + is_internal: { + type: Boolean, + default: false, + } }, computed: { okButtonEnabled: function(){ - if(this.mailed_date){ + if (this.details.reason){ return true } return false @@ -112,14 +130,32 @@ export default { title: function() { return 'Create New Sticker' }, + total_fee: function() { + let vm = this + let amount = 0 + + if (!vm.waive_the_fee){ + amount = vm.fee_item.amount; + } + + return amount + }, }, methods:{ + getDefaultDetails: function(){ + return { + reason: '', + date_of_lost_sticker: null, + date_of_returned_sticker: null, + } + }, ok:function () { let vm =this; vm.errors = false vm.processing = true vm.$emit("sendData", { - "dcv_permit_id": vm.dcv_permit_id, + "waive_the_fee": vm.waive_the_fee, + "approval_id": vm.approval_id, "mailed_date": vm.mailed_date, "change_sticker_address": vm.change_sticker_address, "postal_address_line1": vm.postal_address_line1, @@ -129,16 +165,18 @@ export default { "postal_address_state": vm.postal_address_state, "postal_address_country": vm.postal_address_country, "postal_address_postcode": vm.postal_address_postcode, + "details": vm.details, }) }, cancel:function () { this.close(); }, close:function () { + this.details = this.getDefaultDetails() this.isModalOpen = false this.errors = false this.processing = false - this.dcv_permit_id = null + this.approval_id = null }, addEventListeners: function () { let vm = this; @@ -159,6 +197,18 @@ export default { vm.mailed_date = selected_date; }); }, + fetchData: function(){ + let vm = this + + vm.$http.get(api_endpoints.fee_item_sticker_replacement).then( + (response) => { + vm.fee_item = response.body + }, + (error) => { + console.log(error) + } + ) + }, fetchCountries: function () { let vm = this; vm.$http.get(api_endpoints.countries).then((response) => { @@ -170,6 +220,7 @@ export default { this.fetchCountries(); }, created:function () { + this.fetchData(); this.$nextTick(() => { this.addEventListeners(); }); diff --git a/mooringlicensing/frontend/mooringlicensing/src/components/common/request_new_sticker_modal.vue b/mooringlicensing/frontend/mooringlicensing/src/components/common/request_new_sticker_modal.vue index f1905e3d4..71f0ad4f8 100755 --- a/mooringlicensing/frontend/mooringlicensing/src/components/common/request_new_sticker_modal.vue +++ b/mooringlicensing/frontend/mooringlicensing/src/components/common/request_new_sticker_modal.vue @@ -180,9 +180,7 @@ export default { let vm = this let amount = 0 - if (vm.waive_the_fee){ - - } else { + if (!vm.waive_the_fee){ for (let sticker of this.stickers){ if (sticker.checked){ amount += vm.fee_item.amount diff --git a/mooringlicensing/frontend/mooringlicensing/src/components/common/table_approvals.vue b/mooringlicensing/frontend/mooringlicensing/src/components/common/table_approvals.vue index 19678af1c..f6e2ed2b4 100644 --- a/mooringlicensing/frontend/mooringlicensing/src/components/common/table_approvals.vue +++ b/mooringlicensing/frontend/mooringlicensing/src/components/common/table_approvals.vue @@ -86,6 +86,11 @@ :approvalId="approvalHistoryId" />
+ Request New Sticker
` - links += `Update Sticker Address
` + + if (!full.has_sticker) { + links += `Create New Sticker
` + } else { + links += `Request New Sticker
` + links += `Update Sticker Address
` + } } return links; @@ -843,6 +855,24 @@ export default { } ) }, + sendDataForCreateNewSticker: function(params){ + let vm = this + vm.$http.post(helpers.add_endpoint_json(api_endpoints.approvals, params.approval_id + '/create_new_sticker'), params).then( + res => { + helpers.post_and_redirect('/sticker_replacement_fee/', {'csrfmiddlewaretoken' : vm.csrf_token, 'data': JSON.stringify(res.body)}); + }, + err => { + vm.$refs.create_new_sticker_modal.processing = false + vm.$refs.create_new_sticker_modal.isModalOpen = false + vm.$refs.create_new_sticker_modal.replacementFee = false + swal({ + title: "Request New Sticker", + text: err.body, + type: "error", + }) + } + ) + }, sendDataForNewSticker: function(params){ let vm = this vm.$http.post(helpers.add_endpoint_json(api_endpoints.approvals, params.approval_id + '/request_new_stickers'), params).then( @@ -991,6 +1021,12 @@ export default { vm.surrenderApproval(id, approval_type_name); }); + vm.$refs.approvals_datatable.vmDataTable.on('click', 'a[data-create-new-sticker]', function(e) { + e.preventDefault(); + var id = $(this).attr('data-create-new-sticker'); + vm.createNewSticker(id); + }); + //External Request New Sticker listener vm.$refs.approvals_datatable.vmDataTable.on('click', 'a[data-request-new-sticker]', function(e) { e.preventDefault(); @@ -1136,6 +1172,11 @@ export default { this.$refs.approval_surrender.approval_type_name = approval_type_name this.$refs.approval_surrender.isModalOpen = true; }, + createNewSticker: function(approval_id){ + this.$refs.create_new_sticker_modal.approval_id = approval_id + this.$refs.create_new_sticker_modal.isModalOpen = true + this.$refs.create_new_sticker_modal.replacementFee = true + }, requestNewSticker: function(approval_id){ this.$refs.request_new_sticker_modal.approval_id = approval_id this.$refs.request_new_sticker_modal.isModalOpen = true diff --git a/mooringlicensing/frontend/mooringlicensing/src/components/common/table_dcv_permits.vue b/mooringlicensing/frontend/mooringlicensing/src/components/common/table_dcv_permits.vue index 96925c586..8ed33c695 100644 --- a/mooringlicensing/frontend/mooringlicensing/src/components/common/table_dcv_permits.vue +++ b/mooringlicensing/frontend/mooringlicensing/src/components/common/table_dcv_permits.vue @@ -375,10 +375,10 @@ export default { }, sendDataForCreateNewSticker: function(params){ let vm = this - vm.$http.post('/api/internal_dcv_permit/' + params.dcv_permit_id + '/create_new_sticker/', params).then( + vm.$http.post('/api/internal_dcv_permit/' + params.approval_id + '/create_new_sticker/', params).then( res => { // Retrieve the element clicked on - let elem_clicked = $("a[data-create-new-sticker='" + params.dcv_permit_id + "']") + let elem_clicked = $("a[data-create-new-sticker='" + params.approval_id + "']") // Retrieve the row index clicked on let row_index_clicked = elem_clicked.closest('tr').index() @@ -461,7 +461,7 @@ export default { }, createNewSticker: function(dcv_permit_id){ console.log('dcv_permit_id: ' + dcv_permit_id) - this.$refs.create_new_sticker_modal.dcv_permit_id = dcv_permit_id + this.$refs.create_new_sticker_modal.approval_id = dcv_permit_id this.$refs.create_new_sticker_modal.isModalOpen = true }, requestNewSticker: function(dcv_permit_id){ diff --git a/mooringlicensing/migrations/0393_stickeractiondetail_approval.py b/mooringlicensing/migrations/0393_stickeractiondetail_approval.py new file mode 100644 index 000000000..8cf11df65 --- /dev/null +++ b/mooringlicensing/migrations/0393_stickeractiondetail_approval.py @@ -0,0 +1,19 @@ +# Generated by Django 5.0.11 on 2025-01-28 05:02 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('mooringlicensing', '0392_proposal_reissue_vessel_properties'), + ] + + operations = [ + migrations.AddField( + model_name='stickeractiondetail', + name='approval', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='sticker_action_approval', to='mooringlicensing.approval'), + ), + ] From b684eb0ce5a9eca706c44e10062ad1a9146626ba Mon Sep 17 00:00:00 2001 From: Ashley Date: Tue, 28 Jan 2025 08:03:30 +0000 Subject: [PATCH 2/4] Update: fixed error --- mooringlicensing/components/approvals/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mooringlicensing/components/approvals/api.py b/mooringlicensing/components/approvals/api.py index c616adaa0..730b0d0df 100755 --- a/mooringlicensing/components/approvals/api.py +++ b/mooringlicensing/components/approvals/api.py @@ -561,7 +561,7 @@ def create_new_sticker(self, request, *args, **kwargs): sticker_action_details = [] #only allow this if there are no sticker records associated with the approval - if Sticker.objects.filter(approval=obj).exclude(status__in=[Sticker.STICKER_STATUS_EXPIRED,Sticker.STICKER_STATUS_CANCELLED]).exists(): + if Sticker.objects.filter(approval=approval).exclude(status__in=[Sticker.STICKER_STATUS_EXPIRED,Sticker.STICKER_STATUS_CANCELLED]).exists(): raise serializers.ValidationError("This approval already has an active sticker record.") data = {} From da49f94c9c1f999e934c00217ce0610417dccba9 Mon Sep 17 00:00:00 2001 From: Ashley Date: Tue, 28 Jan 2025 08:06:48 +0000 Subject: [PATCH 3/4] Update: post-test fix --- mooringlicensing/components/payments_ml/views.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mooringlicensing/components/payments_ml/views.py b/mooringlicensing/components/payments_ml/views.py index 718acd230..75c0877a0 100644 --- a/mooringlicensing/components/payments_ml/views.py +++ b/mooringlicensing/components/payments_ml/views.py @@ -333,8 +333,8 @@ def get(self, request, uuid, format=None): # Create replacement sticker new_sticker = Sticker.objects.create( approval=sticker_action_detail.approval, - vessel_ownership=sticker_action_detail.approval.proposal.vessel_ownership, - fee_constructor=sticker_action_detail.approval.proposal.fee_constructor, + vessel_ownership=sticker_action_detail.approval.current_proposal.vessel_ownership, + fee_constructor=sticker_action_detail.approval.current_proposal.fee_constructor, fee_season=sticker_action_detail.approval.latest_applied_season, postal_address_line1 = sticker_action_detail.new_postal_address_line1, postal_address_line2 = sticker_action_detail.new_postal_address_line2, From a00782df018f1713aab67e7323c21ec1c5a9900c Mon Sep 17 00:00:00 2001 From: Ashley Date: Tue, 28 Jan 2025 08:15:09 +0000 Subject: [PATCH 4/4] Update: adjusted wording of create new sticker to request new sticker for external users --- .../src/components/common/table_approvals.vue | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mooringlicensing/frontend/mooringlicensing/src/components/common/table_approvals.vue b/mooringlicensing/frontend/mooringlicensing/src/components/common/table_approvals.vue index f6e2ed2b4..b6bbbd066 100644 --- a/mooringlicensing/frontend/mooringlicensing/src/components/common/table_approvals.vue +++ b/mooringlicensing/frontend/mooringlicensing/src/components/common/table_approvals.vue @@ -487,7 +487,11 @@ export default { if (full.approval_type_dict.code != 'wla') { if (!full.has_sticker) { - links += `Create New Sticker
` + if (vm.is_internal) { + links += `Create New Sticker
` + } else { + links += `Request New Sticker
` + } } else { links += `Request New Sticker
` links += `Update Sticker Address
`