diff --git a/cllc-public-app/ClientApp/src/app/app.component.html b/cllc-public-app/ClientApp/src/app/app.component.html index a42c6fc33c..682af9f253 100644 --- a/cllc-public-app/ClientApp/src/app/app.component.html +++ b/cllc-public-app/ClientApp/src/app/app.component.html @@ -38,7 +38,9 @@ -
+ + +
diff --git a/cllc-public-app/ClientApp/src/app/components/applications/application-renewal/application-renewal.component.html b/cllc-public-app/ClientApp/src/app/components/applications/application-renewal/application-renewal.component.html index 46f763c2f5..c3eb809591 100644 --- a/cllc-public-app/ClientApp/src/app/components/applications/application-renewal/application-renewal.component.html +++ b/cllc-public-app/ClientApp/src/app/components/applications/application-renewal/application-renewal.component.html @@ -470,6 +470,41 @@

APPLICATION CONTACT DETAILS

+

REFUND POLICY

+
+

+ Licence renewal fees are generally non-refundable. +

+ Refunds for licence renewal fees may be available if the: +

+
    +
  • The LCRB has made an error
  • +
  • Applicant has overpaid
  • +
+

+ Renewal fees must be paid in full for a licence to remain valid. +

+

+ Payment may appear on a credit card statement as:
+ "Liquor and Cannabis Re… Victoria BC" and other variations. +

+

+ + The LCRB investigates all credit card chargeback requests for fees and will dispute chargeback requests. A note will also be made on your LCRB account and there may be consequences for fraudulent requests. + +

+ + + + * + + I have read and understand the refund policy. + + + +
+

DECLARATIONS

diff --git a/cllc-public-app/ClientApp/src/app/components/applications/application-renewal/application-renewal.component.ts b/cllc-public-app/ClientApp/src/app/components/applications/application-renewal/application-renewal.component.ts index 1e9512d4fb..271c15361f 100644 --- a/cllc-public-app/ClientApp/src/app/components/applications/application-renewal/application-renewal.component.ts +++ b/cllc-public-app/ClientApp/src/app/components/applications/application-renewal/application-renewal.component.ts @@ -52,6 +52,7 @@ const ValidationErrorMap = { contactPersonPhone: "Please enter the business contact's 10-digit phone number", authorizedToSubmit: "Please affirm that you are authorized to submit the application", signatureAgreement: "Please affirm that all of the information provided for this application is true and complete", + readRefundPolicy: "Please affirm that you have read and understand the refund policy" }; @@ -242,6 +243,7 @@ export class ApplicationRenewalComponent extends FormBase implements OnInit { authorizedToSubmit: ["", [this.customRequiredCheckboxValidator()]], signatureAgreement: ["", [this.customRequiredCheckboxValidator()]], + readRefundPolicy: ["", [this.customRequiredCheckboxValidator()]], assignedLicence: this.fb.group({ id: [""], diff --git a/cllc-public-app/ClientApp/src/app/components/applications/application/application.component.html b/cllc-public-app/ClientApp/src/app/components/applications/application/application.component.html index 60cb02bd5f..43c42e0782 100644 --- a/cllc-public-app/ClientApp/src/app/components/applications/application/application.component.html +++ b/cllc-public-app/ClientApp/src/app/components/applications/application/application.component.html @@ -1516,7 +1516,26 @@

Discretion Request

- +
+
+
+

Supporting Documents

+
+

+ Proof of valid interest (lease or land title) is required - attach a copy when submitting the form. +

+ + + +
+
+
+

SERVICE AREAS

-
+
+
+
+

The sum of occupant loads across all service areas does not match the total occupant load entered in the total occupant load field.

+ +
+ +
+ * + I affirm that the combined service area capacity exceeds the total occupant load. + +
diff --git a/cllc-public-app/ClientApp/src/app/components/applications/application/application.component.scss b/cllc-public-app/ClientApp/src/app/components/applications/application/application.component.scss index b52dd73f72..6a687624a7 100644 --- a/cllc-public-app/ClientApp/src/app/components/applications/application/application.component.scss +++ b/cllc-public-app/ClientApp/src/app/components/applications/application/application.component.scss @@ -50,7 +50,15 @@ padding-left: 15px; margin-bottom: 20px; } + .text-red { + color: #ff0800; + } + .error-text { + color: #d8292f; + font-weight: 400; + line-height: 1.5; + } .warning-state { color: #ffc107; } diff --git a/cllc-public-app/ClientApp/src/app/components/applications/application/application.component.ts b/cllc-public-app/ClientApp/src/app/components/applications/application/application.component.ts index e7c770d343..c4ba22b560 100644 --- a/cllc-public-app/ClientApp/src/app/components/applications/application/application.component.ts +++ b/cllc-public-app/ClientApp/src/app/components/applications/application/application.component.ts @@ -88,7 +88,7 @@ export class ApplicationComponent extends FormBase implements OnInit { uploadedPartnershipAgreement: 0; uploadedOtherDocuments: 0; uploadedIndividualsWithLessThan10: 0; - proofofValidInterestDocuments: 0; + proofOfValidInterestDocuments: 0; dynamicsForm: DynamicsForm; autocompleteLocalGovernmemts: any[]; autocompletePoliceDurisdictions: any[]; @@ -107,7 +107,7 @@ export class ApplicationComponent extends FormBase implements OnInit { uploadedCentralSecuritiesRegisterDocuments: number = 0; tiedHouseExemptions: { jobNumber: string, displayName: string }[] = []; licenseToRemove: RelatedLicence; - + showOccupantLoadCheckBox: boolean = false; isHasPatioBackingFld: boolean = true; @@ -178,6 +178,8 @@ export class ApplicationComponent extends FormBase implements OnInit { applyAsIndigenousNation: [false], indigenousNationId: [{ value: null, disabled: true }, Validators.required], federalProducerNames: ['', Validators.required], + totalOccupantLoad: ['', Validators.required], + totalOccupantLoadExceed: [false, Validators.required], applicantType: ['', Validators.required], description1: [''], description2: [''], @@ -617,6 +619,8 @@ export class ApplicationComponent extends FormBase implements OnInit { if (!this.application.applicationType.serviceAreas) { this.form.get('serviceAreas').disable(); + this.form.get('totalOccupantLoad').disable(); + } if (!this.application.applicationType.outsideAreas) { this.form.get('outsideAreas').disable(); @@ -1114,12 +1118,19 @@ export class ApplicationComponent extends FormBase implements OnInit { } } - const serviceArea = ('areas' in this.form.get('serviceAreas').value) ? this.form.get('serviceAreas').value['areas'] : this.form.get('serviceAreas').value; + const serviceArea = ('areas' in this.form.get('serviceAreas').value) ? this.form.get('serviceAreas').value['areas'] : this.form.get('serviceAreas').value; + //if (this.showServiceArea() && serviceArea.length === 0 && (this.isLP() || ApplicationTypeNames.SpecialEventAreaEndorsement || ApplicationTypeNames.LoungeAreaEndorsment) ) { if (this.showServiceArea() && serviceArea.length === 0) { valid = false; this.validationMessages.push('At least one service area is required.'); + }else{ + if(!this.isOccupantLoadCorrect()){ + valid = false; + this.validationMessages.push('The sum of occupant loads across all service areas does not match the total occupant load entered in the total occupant load field.'); + } + } // optional for this application type @@ -1221,7 +1232,7 @@ export class ApplicationComponent extends FormBase implements OnInit { } } - if (this.application?.applicationType?.name === ApplicationTypeNames.DormancyReinstatement && (this.proofofValidInterestDocuments || 0) < 1) { + if (this.application?.applicationType?.name === ApplicationTypeNames.DormancyReinstatement && (this.proofOfValidInterestDocuments || 0) < 1) { valid = false; this.validationMessages.push('At least one proof of valid interest document is required.'); } @@ -1489,6 +1500,7 @@ export class ApplicationComponent extends FormBase implements OnInit { establishmentParcelId: 'Please enter the Parcel Identifier (format: 9 digits)', establishmentopeningdate: 'Please enter the store opening date', federalProducerNames: 'Please enter the name of federal producer', + totalOccupantLoad:'Please enter the total occupant load', hasValidInterest: 'Please enter a value for valid interest', indigenousNationId: 'Please select the Indigenous nation', isAlr: 'Please indicate ALR status', @@ -1771,4 +1783,25 @@ export class ApplicationComponent extends FormBase implements OnInit { this.licenseToRemove = assignedLicence; this.form.get("description1").patchValue(this.licenseToRemove.name); } + + validateInput(event:Event):void{ + const input = event.target as HTMLInputElement; + input.value = input.value.replace(/-/g,''); + } + + isOccupantLoadCorrect(): Boolean{ + const serviceArea = ('areas' in this.form.get('serviceAreas').value) ? this.form.get('serviceAreas').value['areas'] : this.form.get('serviceAreas').value; + let totalCapacity = serviceArea.reduce((sum,item)=> Number(sum+(+item.capacity)),0); + let totalOccupantLoad = this.form.get('totalOccupantLoad').value | 0; + const isExceeded:boolean = totalOccupantLoad>=totalCapacity + if(isExceeded){ + this.form.controls['totalOccupantLoadExceed'].enabled; + this.showOccupantLoadCheckBox = true; + }else{ + this.form.controls['totalOccupantLoadExceed'].disabled; + this.showOccupantLoadCheckBox = false; + + } + return this.form.get('totalOccupantLoadExceed').value === true || isExceeded; + } } diff --git a/cllc-public-app/ClientApp/src/app/components/applications/liquor-renewal/liquor-renewal.component.html b/cllc-public-app/ClientApp/src/app/components/applications/liquor-renewal/liquor-renewal.component.html index ceceb2901f..cd294ec64c 100644 --- a/cllc-public-app/ClientApp/src/app/components/applications/liquor-renewal/liquor-renewal.component.html +++ b/cllc-public-app/ClientApp/src/app/components/applications/liquor-renewal/liquor-renewal.component.html @@ -396,6 +396,41 @@

RENEWAL CONTACT DETAILS

+

REFUND POLICY

+
+

+ Licence renewal fees are generally non-refundable. +

+ Refunds for licence renewal fees may be available if the: +

+
    +
  • The LCRB has made an error
  • +
  • Applicant has overpaid
  • +
+

+ Renewal fees must be paid in full for a licence to remain valid. +

+

+ Payment may appear on a credit card statement as:
+ "Liquor and Cannabis Re… Victoria BC" and other variations. +

+

+ + The LCRB investigates all credit card chargeback requests for fees and will dispute chargeback requests. A note will also be made on your LCRB account and there may be consequences for fraudulent requests. + +

+ + + + * + + I have read and understand the refund policy. + + + +
+

DECLARATIONS

diff --git a/cllc-public-app/ClientApp/src/app/components/applications/liquor-renewal/liquor-renewal.component.ts b/cllc-public-app/ClientApp/src/app/components/applications/liquor-renewal/liquor-renewal.component.ts index 610f9101ea..ec38a24546 100644 --- a/cllc-public-app/ClientApp/src/app/components/applications/liquor-renewal/liquor-renewal.component.ts +++ b/cllc-public-app/ClientApp/src/app/components/applications/liquor-renewal/liquor-renewal.component.ts @@ -44,6 +44,7 @@ const ValidationErrorMap = { contactPersonPhone: "Please enter the business contact's 10-digit phone number", authorizedToSubmit: "Please affirm that you are authorized to submit the application", signatureAgreement: "Please affirm that all of the information provided for this application is true and complete", + readRefundPolicy: "Please affirm that you have read and understand the refund policy", ldbOrderTotals: "Please provide LDB Order Totals ($0 - $10,000,000)", ldbOrderTotalsConfirm: "Please confirm LDB Order Totals matches", @@ -142,7 +143,9 @@ export class LiquorRenewalComponent extends FormBase implements OnInit { authorizedToSubmit: ["", [this.customRequiredCheckboxValidator()]], signatureAgreement: ["", [this.customRequiredCheckboxValidator()]], - isManufacturedMinimum: ["", []] + isManufacturedMinimum: ["", []], + + readRefundPolicy: ["", [this.customRequiredCheckboxValidator()]], }); this.previousYear = (new Date().getFullYear() - 1).toString(); diff --git a/cllc-public-app/ClientApp/src/app/components/sep/drink-planner/drink-planner.component.html b/cllc-public-app/ClientApp/src/app/components/sep/drink-planner/drink-planner.component.html index d307f04877..4aa95cc020 100644 --- a/cllc-public-app/ClientApp/src/app/components/sep/drink-planner/drink-planner.component.html +++ b/cllc-public-app/ClientApp/src/app/components/sep/drink-planner/drink-planner.component.html @@ -55,13 +55,13 @@

Enter the number of each drink type appropriate for your event:

No. Servings - + No. Free Servings - + diff --git a/cllc-public-app/ClientApp/src/app/components/sep/drink-planner/drink-planner.component.ts b/cllc-public-app/ClientApp/src/app/components/sep/drink-planner/drink-planner.component.ts index 3266cffe81..b6ccfb0db3 100644 --- a/cllc-public-app/ClientApp/src/app/components/sep/drink-planner/drink-planner.component.ts +++ b/cllc-public-app/ClientApp/src/app/components/sep/drink-planner/drink-planner.component.ts @@ -201,7 +201,8 @@ export class DrinkPlannerComponent extends FormBase implements OnInit { } storageUnits(config: DrinkConfig): number { - const servings = this.servings(config); + //calculate free and paid servings + const servings: number = (this.form.get(config.group).value + this.form.get(config.group_free).value) || 0; const storageUnits = servings * config.servingSizeMl / config.storageSizeMl; return storageUnits > 0 && storageUnits < 1 ? 1 : storageUnits; } @@ -320,4 +321,12 @@ export class DrinkPlannerComponent extends FormBase implements OnInit { } return error; } + + + //validate input should only accept numbers + validateInput(event:Event):void{ + const input = event.target as HTMLInputElement; + input.value = input.value.replace(/-/g,''); + + } } diff --git a/cllc-public-app/ClientApp/src/app/components/sep/sep-application/summary/summary.component.html b/cllc-public-app/ClientApp/src/app/components/sep/sep-application/summary/summary.component.html index 0f1e7d89c7..bf4b6c3e43 100644 --- a/cllc-public-app/ClientApp/src/app/components/sep/sep-application/summary/summary.component.html +++ b/cllc-public-app/ClientApp/src/app/components/sep/sep-application/summary/summary.component.html @@ -112,11 +112,12 @@

{{application.policeDecisionBy?.name}}.

-
+ +

Your application was approved, however you did not pay for it before the event start date. Therefore, the permit @@ -452,6 +453,40 @@

LIQUOR QUANTITIES

+
+ + + + SPECIAL EVENT REFUND + + +

Generally, Permit fees are non-refundable. A cancelled event is not grounds for a refund.

+

Refunds for permit fees may be available if:

+
    +
  • The LCRB has made an error
  • +
  • You have overpaid
  • +
  • The event is cancelled due to exceptional circumstances such as a provincial state of emergency.
  • +
+ +

The LCRB investigates all credit card chargeback requests for fees and will dispute chargeback requests. A note will also be made on your LCRB account and there may be consequences for fraudulent requests.

+

Payment may appear on a credit card statement as:

+
    +
  • "Special Occasion licence"
  • +
  • "Special Occasio"
  • +
  • Other variations
  • +
+
+ + * + I have read and understand the refund policy. + +
+ Please affirm that you have read and understand the refund policy. +
+
+
+
+
@@ -460,21 +495,30 @@

LIQUOR QUANTITIES

Declaration

- -

I, {{contact?.name}}, certify that all of the information is true and complete to the best of my knowledge. I have read the terms and conditions of the permit, and if the application is approved, the permittee listed on the permit will be responsible for liquor service at the event.

- - -

By checking this box, I confirm that I have read, agree to and acknowledge the declaration. I also - certify that I am at least 19 years old and that no essential information has been concealed or - misrepresented on this application.

+ +

+ * + By checking this box, I confirm that I have read, agree to and acknowledge the declaration. I also + certify that I am at least 19 years old and that no essential information has been concealed or + misrepresented on this application. +

+
+ Please read and acknowledge the declaration before proceeding. +
+
@@ -488,7 +532,7 @@

Declaration

-
+
@@ -497,17 +541,25 @@

Declaration

Permits cannot be issued before or on the date that they are submitted.

+ + +
-

Application Approved!

- + padding: 20px; + background-color: #fcba19; + padding-bottom: 20px;"> +

Application Approved!

You must pay these fees to get a special event permit. If you do not pay these fees, your application will not be valid and a licence will not be issued for your event.

In the event that the information on this application is no longer correct or if you wish to make additional changes, you may contact the LCRB or withdraw your application up to 24 hours before the event begins.

+ +
+
+ Please affirm that you have read and understand the refund policy. +
diff --git a/cllc-public-app/ClientApp/src/app/components/sep/sep-application/summary/summary.component.scss b/cllc-public-app/ClientApp/src/app/components/sep/sep-application/summary/summary.component.scss index b287f47477..05e78596b0 100644 --- a/cllc-public-app/ClientApp/src/app/components/sep/sep-application/summary/summary.component.scss +++ b/cllc-public-app/ClientApp/src/app/components/sep/sep-application/summary/summary.component.scss @@ -42,6 +42,11 @@ } } } + .error-text { + color: #d8292f; + font-weight: 400; + line-height: 1.5; + } h4{ border-bottom: solid #e0e0e0 1px; diff --git a/cllc-public-app/ClientApp/src/app/components/sep/sep-application/summary/summary.component.ts b/cllc-public-app/ClientApp/src/app/components/sep/sep-application/summary/summary.component.ts index 66dce2b929..1d5b0b28cf 100644 --- a/cllc-public-app/ClientApp/src/app/components/sep/sep-application/summary/summary.component.ts +++ b/cllc-public-app/ClientApp/src/app/components/sep/sep-application/summary/summary.component.ts @@ -94,6 +94,10 @@ export class SummaryComponent implements OnInit { paymentTransactionMessage: string; loaded: boolean; savingToAPI: boolean; + isRefundPolicyChecked: boolean = false; + showRefundPolicyError:boolean = false; + isDeclarationChecked: boolean = false; + showDeclarationError: boolean = false; @Input() set localId(value: number) { this._appID = value; @@ -417,6 +421,13 @@ export class SummaryComponent implements OnInit { } async submitApplication(): Promise { + // check declaration + if(!this.isDeclarationChecked){ + this.showDeclarationError = true; + return; + } + + this.showDeclarationError = false; this.savingToAPI = true; const appData = await this.db.getSepApplication(this.localId); @@ -448,7 +459,12 @@ export class SummaryComponent implements OnInit { // present a confirmation dialog prior to the payment being processed. payNow() { - //this.submitApplication(); + this.validateRefundPolicyCheckbox(); + + if (!this.isRefundPolicyChecked) { + return; + } + // set dialogConfig settings const dialogConfig = { autoFocus: true, @@ -467,6 +483,9 @@ export class SummaryComponent implements OnInit { window.print(); } + validateRefundPolicyCheckbox() { + this.showRefundPolicyError = !this.isRefundPolicyChecked; + } } diff --git a/cllc-public-app/ClientApp/src/app/components/sep/starter-checklist/starter-checklist.component.html b/cllc-public-app/ClientApp/src/app/components/sep/starter-checklist/starter-checklist.component.html index a0853a5f88..13ef041a41 100644 --- a/cllc-public-app/ClientApp/src/app/components/sep/starter-checklist/starter-checklist.component.html +++ b/cllc-public-app/ClientApp/src/app/components/sep/starter-checklist/starter-checklist.component.html @@ -5,6 +5,11 @@

Application Checklist


+ Permit holder's responsibilities: + + Event Information:
  • Location, date, time & guest count
  • diff --git a/cllc-public-app/ClientApp/src/app/components/tables/capacity-table.component.html b/cllc-public-app/ClientApp/src/app/components/tables/capacity-table.component.html index dfdd771ee0..6322672149 100644 --- a/cllc-public-app/ClientApp/src/app/components/tables/capacity-table.component.html +++ b/cllc-public-app/ClientApp/src/app/components/tables/capacity-table.component.html @@ -13,6 +13,7 @@ [areaCategory]="areaCategory" [onDelete]="removeRow.bind(this)" [index]="i" [onRowChange]="onRowChange.bind(this)" [enabled]="enabled"> +