diff --git a/package-lock.json b/package-lock.json index 6e6b98278..83bfcf673 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "business-create-ui", - "version": "5.6.42", + "version": "5.7.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "business-create-ui", - "version": "5.6.42", + "version": "5.7.0", "dependencies": { "@babel/compat-data": "^7.21.5", "@bcrs-shared-components/approval-type": "1.0.19", diff --git a/package.json b/package.json index d4a6caa44..5d9ae62fd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "business-create-ui", - "version": "5.6.42", + "version": "5.7.0", "private": true, "appName": "Create UI", "sbcName": "SBC Common Components", diff --git a/src/App.vue b/src/App.vue index cd7cbd6c8..122a846e9 100644 --- a/src/App.vue +++ b/src/App.vue @@ -250,10 +250,10 @@ import * as Views from '@/views' // Mixins, interfaces, etc import { CommonMixin, DateMixin, FilingTemplateMixin, NameRequestMixin } from '@/mixins' import { AccountInformationIF, AddressIF, BreadcrumbIF, BusinessWarningIF, CompletingPartyIF, - ConfirmDialogType, EmptyFees, FeesIF, FilingDataIF, NameRequestIF, OrgInformationIF, PartyIF, ResourceIF, + ConfirmDialogType, EmptyFees, FeesIF, FilingDataIF, OrgInformationIF, PartyIF, ResourceIF, StepIF } from '@/interfaces' -import { AmalgamationRegResources, DissolutionResources, IncorporationResources, RegistrationResources, - RestorationResources, getEntityDashboardBreadcrumb, getMyBusinessRegistryBreadcrumb, +import { AmalgamationRegResources, AmalgamationShortResources, DissolutionResources, IncorporationResources, + RegistrationResources, RestorationResources, getEntityDashboardBreadcrumb, getMyBusinessRegistryBreadcrumb, getRegistryDashboardBreadcrumb, getSbcStaffDashboardBreadcrumb, getStaffDashboardBreadcrumb } from '@/resources' import { AuthServices, LegalServices, PayServices } from '@/services/' @@ -295,7 +295,9 @@ export default class App extends Mixins(CommonMixin, DateMixin, FilingTemplateMi @Getter(useStore) getUserLastName!: string @Getter(useStore) getUserEmail!: string @Getter(useStore) getUserPhone!: string - @Getter(useStore) isAmalgamationFiling!: boolean + // @Getter(useStore) isAmalgamationFilingHorizontal!: boolean + // @Getter(useStore) isAmalgamationFilingRegular!: boolean + // @Getter(useStore) isAmalgamationFilingVertical!: boolean @Getter(useStore) isDissolutionFiling!: boolean @Getter(useStore) isIncorporationFiling!: boolean @Getter(useStore) isMobile!: boolean @@ -320,7 +322,7 @@ export default class App extends Mixins(CommonMixin, DateMixin, FilingTemplateMi @Action(useStore) setLastAddressChangeDate!: (x: string) => void @Action(useStore) setLastAnnualReportDate!: (x: string) => void @Action(useStore) setLastDirectorChangeDate!: (x: string) => void - @Action(useStore) setNameRequest!: (x: NameRequestIF) => void + // @Action(useStore) setNameRequest!: (x: NameRequestIF) => void @Action(useStore) setParties!: (x: Array) => void @Action(useStore) setResources!: (x: ResourceIF) => void @Action(useStore) setUserAddress!: (x: AddressIF) => void @@ -733,6 +735,12 @@ export default class App extends Mixins(CommonMixin, DateMixin, FilingTemplateMi if (this.$route.meta.filingType !== this.getFilingType) { switch (this.getFilingType) { case FilingTypes.AMALGAMATION_APPLICATION: + // *** TODO: need to check filing subtype and route accordingly + + // isAmalgamationFilingHorizontal + // isAmalgamationFilingRegular + // isAmalgamationFilingVertical + this.$router.push(RouteNames.AMALG_REG_INFORMATION).catch(() => {}) return case FilingTypes.DISSOLUTION: @@ -884,6 +892,14 @@ export default class App extends Mixins(CommonMixin, DateMixin, FilingTemplateMi let resources: ResourceIF switch (this.getFilingType) { case FilingTypes.AMALGAMATION_APPLICATION: + // *** TODO: need to check filing subtype and create draft and set resources accordingly + + // isAmalgamationFilingHorizontal + // isAmalgamationFilingRegular + // isAmalgamationFilingVertical + + // AmalgamationShortResources + draftFiling = { ...this.buildAmalgamationFiling(), ...draftFiling diff --git a/src/enums/routeNames.ts b/src/enums/routeNames.ts index 4d4447fc2..405e6af01 100644 --- a/src/enums/routeNames.ts +++ b/src/enums/routeNames.ts @@ -41,4 +41,11 @@ export enum RouteNames { AMALG_REG_PEOPLE_ROLES = 'amalg-reg-people-roles', AMALG_REG_REVIEW_CONFIRM = 'amalg-reg-review-confirm', AMALG_REG_SHARE_STRUCTURE = 'amalg-reg-share-structure', + + // Amalgamation (short) route names + AMALG_SHORT_BUSINESS_INFO = 'amalg-short-business-info', + AMALG_SHORT_INFORMATION = 'amalg-short-information', + AMALG_SHORT_PEOPLE_ROLES = 'amalg-short-people-roles', + AMALG_SHORT_REVIEW_CONFIRM = 'amalg-short-review-confirm', + AMALG_SHORT_SHARE_STRUCTURE = 'amalg-short-share-structure', } diff --git a/src/enums/views.ts b/src/enums/views.ts index 29fe23d8c..ab23a162f 100644 --- a/src/enums/views.ts +++ b/src/enums/views.ts @@ -6,13 +6,20 @@ export enum Views { SIGN_IN = 'signin', SIGN_OUT = 'signout', - // Amalgamation views + // Amalgamation (regular) views AMALGAMATION_REG_BUSINESS_INFO = 'amalg-reg-business-info', AMALGAMATION_REG_INFORMATION = 'amalg-reg-information', AMALGAMATION_REG_PEOPLE_ROLES = 'amalg-reg-people-roles', AMALGAMATION_REG_REVIEW_CONFIRM = 'amalg-reg-review-confirm', AMALGAMATION_REG_SHARE_STRUCTURE = 'amalg-reg-share-structure', + // Amalgamation (short) views + AMALGAMATION_SHORT_BUSINESS_INFO = 'amalg-short-business-info', + AMALGAMATION_SHORT_INFORMATION = 'amalg-short-information', + AMALGAMATION_SHORT_PEOPLE_ROLES = 'amalg-short-people-roles', + AMALGAMATION_SHORT_REVIEW_CONFIRM = 'amalg-short-review-confirm', + AMALGAMATION_SHORT_SHARE_STRUCTURE = 'amalg-short-share-structure', + // Dissolution views DISSOLUTION_AFFIDAVIT = 'dissolution-affidavit', DISSOLUTION_DEFINE_DISSOLUTION = 'dissolution-define-dissolution', diff --git a/src/interfaces/resource-interfaces/resource-interface.ts b/src/interfaces/resource-interfaces/resource-interface.ts index 6c3d7fa3d..a47829d32 100644 --- a/src/interfaces/resource-interfaces/resource-interface.ts +++ b/src/interfaces/resource-interfaces/resource-interface.ts @@ -6,6 +6,7 @@ import { import { CorpTypeCd } from '@bcrs-shared-components/corp-type-module' /** Amalgamation (regular) resource interface. */ +// *** TODO: do we need another interface for short amalgamations? export interface AmalgamationRegResourceIF { entityType: CorpTypeCd displayName: string diff --git a/src/mixins/amalgamation-mixin.ts b/src/mixins/amalgamation-mixin.ts index 8ea7be459..12883d8d8 100644 --- a/src/mixins/amalgamation-mixin.ts +++ b/src/mixins/amalgamation-mixin.ts @@ -16,6 +16,8 @@ export default class AmalgamationMixin extends Vue { @Getter(useStore) getAmalgamatingBusinesses!: AmalgamatingBusinessIF[] @Getter(useStore) getCurrentDate!: string @Getter(useStore) isAmalgamationFilingHorizontal!: boolean + @Getter(useStore) isAmalgamationFilingRegular!: boolean + @Getter(useStore) isAmalgamationFilingVertical!: boolean @Getter(useStore) isRoleStaff!: boolean @Getter(useStore) isTypeBcCcc!: boolean @Getter(useStore) isTypeBcUlcCompany!: boolean diff --git a/src/resources/AmalgamationShort/BC.ts b/src/resources/AmalgamationShort/BC.ts new file mode 100644 index 000000000..3fbb3f6ee --- /dev/null +++ b/src/resources/AmalgamationShort/BC.ts @@ -0,0 +1,77 @@ +import { AmalgamationRegResourceIF } from '@/interfaces' +import { FilingCodes, RuleIds } from '@/enums' +import { AmalgamationShortSteps } from './steps' +import { CorpTypeCd, GetCorpFullDescription } from '@bcrs-shared-components/corp-type-module' + +export const AmalgamationShortResourceBc: AmalgamationRegResourceIF = { + entityType: CorpTypeCd.BC_COMPANY, + displayName: GetCorpFullDescription(CorpTypeCd.BC_COMPANY), + steps: AmalgamationShortSteps, + filingData: [{ + entityType: CorpTypeCd.BC_COMPANY, + filingTypeCode: FilingCodes.AMALGAMATION_REGULAR + }], + peopleAndRoles: { + header: '1. Add People to your Application', + blurb: `Add the people who will have a role in the amalgamated business. A person can be + both the Completing Party and a Director.`, + helpSection: null, + rules: [ + { + id: RuleIds.NUM_COMPLETING_PARTY, + text: 'The Completing Party', + test: (num) => { return (num === 1) } + }, + { + id: RuleIds.NUM_DIRECTORS, + text: 'At least one Director', + test: (num) => { return (num >= 1) } + } + ] + }, + shareClasses: { + countMinimum: 1 + }, + incorporationArticles: { + articles: '
BC LTD Articles.', // Line break is required to prevent tooltip from splitting the screen. + articlesTooltip: 'Articles should outline the rules and procedures for corporate matters such as holding ' + + 'meetings, issuing and transferring shares, and duties of directors and officers.' + }, + incorporationAgreement: { + helpSection: [ + { + header: 'What is the sample Incorporation Agreement and Company Articles?', + helpText: [ + `The sample Incorporation Agreement and Company Articles is a template that you can use to create an + incorporation agreement and articles for your company. It uses all the standard provisions by legislation. + There are three types of samples depending on if you're incorporating a Limited Company, a Benefit Company, + or a Community Contribution Company.`, + `If you would like to customize any other provisions in the Articles, you cannot use these samples. + We recommend seeking professional assistance from a lawyer or accountant to help you prepare your articles.` + ] + } + ], + article: 'bc_limited_company_incorporation_agreement.pdf', + documents: [ + { + code: 'sample', + description: 'The sample Incorporation Agreement and Articles ' + + 'has been completed and a copy has been added to the company\'s record book.' + }, + { + code: 'custom', + description: 'The custom Incorporation Agreement and custom Articles ' + + 'has been completed and a copy has been added to the company\'s record book.' + } + ] + }, + reviewAndConfirm: { + completingPartyStatement: { + certifyStatements: [], + certifyClause: `Note: It is an offence to make a false or misleading statement in respect + of a material fact in a record submitted to the Corporate Registry for filing. + See section 427 of the Business Corporations Act.`, + entityDisplay: null + } + } +} diff --git a/src/resources/AmalgamationShort/BEN.ts b/src/resources/AmalgamationShort/BEN.ts new file mode 100644 index 000000000..e0dec7de9 --- /dev/null +++ b/src/resources/AmalgamationShort/BEN.ts @@ -0,0 +1,113 @@ +import { AmalgamationRegResourceIF } from '@/interfaces' +import { FilingCodes, RuleIds } from '@/enums' +import { AmalgamationShortSteps } from './steps' +import { CorpTypeCd, GetCorpFullDescription } from '@bcrs-shared-components/corp-type-module' + +export const AmalgamationShortResourceBen: AmalgamationRegResourceIF = { + entityType: CorpTypeCd.BENEFIT_COMPANY, + displayName: GetCorpFullDescription(CorpTypeCd.BENEFIT_COMPANY), + steps: AmalgamationShortSteps, + filingData: [{ + entityType: CorpTypeCd.BENEFIT_COMPANY, + filingTypeCode: FilingCodes.AMALGAMATION_REGULAR + }], + peopleAndRoles: { + header: '1. Add People to your Application', + blurb: `Add the people who will have a role in the amalgamated business. A person can be + both the Completing Party and a Director.`, + helpSection: null, + rules: [ + { + id: RuleIds.NUM_COMPLETING_PARTY, + text: 'The Completing Party', + test: (num) => { return (num === 1) } + }, + { + id: RuleIds.NUM_DIRECTORS, + text: 'At least one Director', + test: (num) => { return (num >= 1) } + } + ] + }, + shareClasses: { + countMinimum: 1 + }, + incorporationArticles: { + articles: 'Benefit Company Articles', + articlesTooltip: 'The Articles for a Benefit Company must state the benefits the company intends to provide to ' + + 'society, as well as outlining the rules and procedures for corporate matters such as holding meetings, ' + + 'issuing and transferring shares, and duties of directors and officers.', + provisions: ' benefit provision', + provisionTooltip: 'Clauses in the Articles which specify the public benefits to be promoted by the Benefit ' + + 'Company and the company\'s commitment to promote those benefits and to conduct business in a responsible and ' + + 'sustainable manner.' + }, + incorporationAgreement: { + helpSection: [ + { + header: 'What is the sample Incorporation Agreement and Benefit Company Articles?', + helpText: [ + `The sample Incorporation Agreement and Benefit Company Articles is a template that you can use + to create an incorporation agreement and articles for your company. It uses all the standard + provisions suggested by legislation and also includes a place to specify the company's benefit + provision.`, + `If you would like to customize any other provisions in the Articles, you cannot use this sample. We + recommend seeking professional assistance from a lawyer or accountant to help you prepare your Articles.` + ] + }, + { + header: 'What is a Benefit Provision?', + helpText: [ + `A Benefit Provision is a statement by the company of its public benefits and its commitments to promote + those public benefits and to conduct business in a responsible and sustainable manner.`, + 'A Benefit Company must include a benefit provision in its Articles.' + ] + }, + { + header: 'Can I use the sample Incorporation Agreement and Benefit Company Articles?' + }, + { + header: 'You can use the sample Articles if:', + icon: 'mdi-check', + iconColor: 'green darken-2', + statements: [ + `There are no special rights or restrictions attached to any class or series of shares in + the corporation’s authorized share structure.`, + 'You do not wish to change any of the standard provisions in the sample Articles.' + ] + }, + { + header: 'You cannot use the sample Articles if:', + icon: 'mdi-close', + iconColor: 'red', + statements: [ + `There are special rights or restrictions attached to any class or series of shares in the corporation's + authorized share structure.`, + 'You wish to change any of the standard provisions in the sample Articles.' + ] + } + ], + article: 'benefit_company_incorporation_agreement.pdf', + documents: [ + { + code: 'sample', + description: 'The sample Incorporation Agreement and Articles containing a benefit provision ' + + 'has been completed and a copy has been added to the company\'s record book.' + }, + { + code: 'custom', + description: 'The custom Incorporation Agreement and custom Articles containing a benefit provision ' + + 'has been completed and a copy has been added to the company\'s record book.' + } + ] + }, + reviewAndConfirm: { + completingPartyStatement: { + certifyStatements: [], + certifyClause: `Note: It is an offence to make a false or misleading statement in respect + of a material fact in a record submitted to the Corporate Registry for filing. + See section 427 of the Business Corporations Act.`, + entityDisplay: null + } + } +} diff --git a/src/resources/AmalgamationShort/CC.ts b/src/resources/AmalgamationShort/CC.ts new file mode 100644 index 000000000..d99397dd5 --- /dev/null +++ b/src/resources/AmalgamationShort/CC.ts @@ -0,0 +1,88 @@ +import { AmalgamationRegResourceIF } from '@/interfaces' +import { FilingCodes, RuleIds } from '@/enums' +import { AmalgamationShortSteps } from './steps' +import { CorpTypeCd, GetCorpFullDescription } from '@bcrs-shared-components/corp-type-module' + +export const AmalgamationShortResourceCc: AmalgamationRegResourceIF = { + entityType: CorpTypeCd.BC_CCC, + displayName: GetCorpFullDescription(CorpTypeCd.BC_CCC), + steps: AmalgamationShortSteps, + filingData: [{ + entityType: CorpTypeCd.BC_CCC, + filingTypeCode: FilingCodes.AMALGAMATION_REGULAR + }], + peopleAndRoles: { + header: '1. Add People to your Application', + blurb: `Add the people who will have a role in the amalgamated business. A person can be + both the Completing Party and a Director.`, + helpSection: null, + rules: [ + { + id: RuleIds.NUM_COMPLETING_PARTY, + text: 'The Completing Party', + test: (num) => { return (num === 1) } + }, + { + id: RuleIds.NUM_DIRECTORS, + text: 'At least three Directors', + test: (num) => { return (num >= 3) } + } + ] + }, + shareClasses: { + countMinimum: 1 + }, + incorporationArticles: { + articles: 'Community Contribution Company Articles', + articlesTooltip: 'The Articles for a Community Contribution Company must include the following statements “This ' + + 'company is a community contribution company, and, as such, has purposes beneficial to society. This company is ' + + 'restricted, in accordance with Part 2.2 of the Business Corporations Act, in its ability to pay dividends and ' + + 'to distribute its assets on dissolution or otherwise.” Articles should also outline the rules and procedures ' + + 'for corporate matters such as holding meetings, issuing and transferring shares, and duties of directors ' + + 'and officers.', + provisions: 'community provision', + provisionTooltip: 'A clause in the Articles which communicates the liability statement required by the Business ' + + 'Corporations Act 51.11.' + }, + incorporationAgreement: { + helpSection: [ + { + header: 'What is the sample Incorporation Agreement and Company Articles?', + helpText: [ + `The sample Incorporation Agreement and Company Articles is a template that you can use to create an + Incorporation Agreement and articles for your company. It uses all the standard provisions by legislation. + There are three types of samples depending on if you're incorporating a Limited Company, a Benefit Company, + Unlimited Liability Company, or a Community Contribution Company.`, + `If you would like to customize any other provisions in the Articles, you cannot use these samples. + We recommend seeking professional assistance from a lawyer or accountant to help you prepare your articles.` + ] + }, + { + header: 'What is a Community Provision?', + helpText: [ + `A Community Provision is a statement by the company of its benefits to society and its restrictions in its + ability to pay dividends and distribute assets.`, + `A Community Contribution Company must include a community provision in its Articles.` + ] + } + ], + article: 'community_contribution_company_incorporation_agreement.pdf', + documents: [ + { + code: 'custom', + description: 'The custom Incorporation Agreement and custom Articles containing the community' + + ' provision required by the Business Corporations Act 51.911 has been completed and a copy has been added' + + ' to the company\'s record book.' + } + ] + }, + reviewAndConfirm: { + completingPartyStatement: { + certifyStatements: [], + certifyClause: `Note: It is an offence to make a false or misleading statement in respect + of a material fact in a record submitted to the Corporate Registry for filing. + See section 427 of the Business Corporations Act.`, + entityDisplay: null + } + } +} diff --git a/src/resources/AmalgamationShort/ULC.ts b/src/resources/AmalgamationShort/ULC.ts new file mode 100644 index 000000000..a702b0806 --- /dev/null +++ b/src/resources/AmalgamationShort/ULC.ts @@ -0,0 +1,87 @@ +import { AmalgamationRegResourceIF } from '@/interfaces' +import { FilingCodes, RuleIds } from '@/enums' +import { AmalgamationShortSteps } from './steps' +import { CorpTypeCd, GetCorpFullDescription } from '@bcrs-shared-components/corp-type-module' + +export const AmalgamationShortResourceUlc: AmalgamationRegResourceIF = { + entityType: CorpTypeCd.BC_ULC_COMPANY, + displayName: GetCorpFullDescription(CorpTypeCd.BC_ULC_COMPANY), + steps: AmalgamationShortSteps, + filingData: [{ + entityType: CorpTypeCd.BC_ULC_COMPANY, + filingTypeCode: FilingCodes.AMALGAMATION_REGULAR + }], + peopleAndRoles: { + header: '1. Add People to your Application', + blurb: `Add the people who will have a role in the amalgamated business. A person can be + both the Completing Party and a Director.`, + helpSection: null, + rules: [ + { + id: RuleIds.NUM_COMPLETING_PARTY, + text: 'The Completing Party', + test: (num) => { return (num === 1) } + }, + { + id: RuleIds.NUM_DIRECTORS, + text: 'At least one Director', + test: (num) => { return (num >= 1) } + } + ] + }, + shareClasses: { + countMinimum: 1 + }, + incorporationArticles: { + articles: 'Unlimited Liability Company Articles', + articlesTooltip: 'The Articles for an Unlimited Liability Company must include the following statement: “The ' + + 'shareholders of this company are jointly and severally liable to satisfy the debts and liabilities of this ' + + 'company to the extent provided in section 51.3 of the Business Corporations Act.” Articles should also outline ' + + 'the rules and procedures for corporate matters such as holding meetings, issuing and transferring shares, and ' + + 'duties of directors and officers.', + provisions: 'liability provision', + provisionTooltip: 'A clause in the Articles which communicates the liability statement required by the Business ' + + 'Corporations Act 51.11.' + }, + incorporationAgreement: { + helpSection: [ + { + header: 'What is the sample Incorporation Agreement and Company Articles?', + helpText: [ + `The sample Incorporation Agreement and Company Articles is a template that you can use to create an + incorporation agreement and articles for your company. It uses all the standard provisions by legislation. + There are three types of samples depending on if you're incorporating a Limited Company, a Benefit Company, + or a Community Contribution Company.`, + `If you would like to customize any other provisions in the Articles, you cannot use these samples. + We recommend seeking professional assistance from a lawyer or accountant to help you prepare your articles.` + ] + }, + { + header: 'What is a Liability Provision?', + helpText: [ + `A Liability Provision is a statement by the company of the shareholders joint liability to satisfy all debts + and liabilities of the company.`, + 'An Unlimited Liability Company must include a Liability Provision in its Articles.' + ] + } + ], + article: 'unlimited_liability_company_incorporation_agreement.pdf', + documents: [ + { + code: 'custom', + description: 'The custom Incorporation Agreement and custom Articles containing the liability' + + ' provision required by the Business Corporations Act 51.11 has been completed and a copy has been added' + + ' to the company\'s record book.' + } + ] + }, + reviewAndConfirm: { + completingPartyStatement: { + certifyStatements: [], + certifyClause: `Note: It is an offence to make a false or misleading statement in respect + of a material fact in a record submitted to the Corporate Registry for filing. + See section 427 of the Business Corporations Act.`, + entityDisplay: null + } + } +} diff --git a/src/resources/AmalgamationShort/index.ts b/src/resources/AmalgamationShort/index.ts new file mode 100644 index 000000000..9c794c663 --- /dev/null +++ b/src/resources/AmalgamationShort/index.ts @@ -0,0 +1,4 @@ +export * from './BC' +export * from './BEN' +export * from './CC' +export * from './ULC' diff --git a/src/resources/AmalgamationShort/steps.ts b/src/resources/AmalgamationShort/steps.ts new file mode 100644 index 000000000..f9db2dae4 --- /dev/null +++ b/src/resources/AmalgamationShort/steps.ts @@ -0,0 +1,49 @@ +import { RouteNames, Views } from '@/enums' + +/** + * The amalgamation (short) steps object. + * Currently used for BC, BEN, CC and ULC. + */ +export const AmalgamationShortSteps = [ + { + id: 'step-1-btn', + step: 1, + icon: 'mdi-domain-plus', + text: 'Amalgamation\nInformation', + to: RouteNames.AMALG_SHORT_INFORMATION, + component: Views.AMALGAMATION_SHORT_INFORMATION + }, + { + id: 'step-2-btn', + step: 2, + icon: 'mdi-domain', + text: 'Amalgamated Business\nInformation', + to: RouteNames.AMALG_SHORT_BUSINESS_INFO, + component: Views.AMALGAMATION_SHORT_BUSINESS_INFO + }, + { + id: 'step-3-btn', + step: 3, + icon: 'mdi-account-multiple-plus', + text: 'Add People\nand Roles', + to: RouteNames.AMALG_SHORT_PEOPLE_ROLES, + component: Views.AMALGAMATION_SHORT_PEOPLE_ROLES + + }, + { + id: 'step-4-btn', + step: 4, + icon: 'mdi-sitemap', + text: 'Create Share\nStructure', + to: RouteNames.AMALG_REG_SHARE_STRUCTURE, + component: Views.AMALGAMATION_SHORT_SHARE_STRUCTURE + }, + { + id: 'step-5-btn', + step: 5, + icon: 'mdi-text-box-check-outline', + text: 'Review\nand Confirm', + to: RouteNames.AMALG_REG_REVIEW_CONFIRM, + component: Views.AMALGAMATION_SHORT_REVIEW_CONFIRM + } +] diff --git a/src/resources/index.ts b/src/resources/index.ts index c3b907b19..f27555d56 100644 --- a/src/resources/index.ts +++ b/src/resources/index.ts @@ -13,6 +13,13 @@ import { AmalgamationRegResourceUlc } from './AmalgamationRegular/' +import { + AmalgamationShortResourceBc, + AmalgamationShortResourceBen, + AmalgamationShortResourceCc, + AmalgamationShortResourceUlc +} from './AmalgamationShort/' + import { DissolutionResourceBc, DissolutionResourceBen, @@ -50,6 +57,13 @@ export const AmalgamationRegResources: Array = [ AmalgamationRegResourceUlc ] +export const AmalgamationShortResources: Array = [ + AmalgamationShortResourceBc, + AmalgamationShortResourceBen, + AmalgamationShortResourceCc, + AmalgamationShortResourceUlc +] + export const DissolutionResources: Array = [ DissolutionResourceBc, DissolutionResourceBen, diff --git a/src/router/routes.ts b/src/router/routes.ts index 52699884a..8f9b998d5 100644 --- a/src/router/routes.ts +++ b/src/router/routes.ts @@ -1,5 +1,14 @@ -import { AmalgamationTypes, FilingTypes, RouteNames } from '@/enums' +import { RouteNames } from '@/enums' import * as Views from '@/views' +import { + AmalgamationRegularRoutes, + AmalgamationShortRoutes, + DissolutionFirmRoutes, + DissolutionRoutes, + IncorporationRoutes, + RegistrationRoutes, + RestorationRoutes +} from './routes/index' export const routes = [ { @@ -20,252 +29,13 @@ export const routes = [ requiresAuth: false } }, - { - path: '/incorporation-define-company', - name: RouteNames.INCORPORATION_DEFINE_COMPANY, - component: Views.IncorporationDefineCompany, - meta: { - step: 1, - requiresAuth: true, - filingType: FilingTypes.INCORPORATION_APPLICATION - } - }, - { - path: '/incorporation-people-roles', - name: RouteNames.INCORPORATION_PEOPLE_ROLES, - component: Views.IncorporationPeopleRoles, - meta: { - step: 2, - requiresAuth: true, - filingType: FilingTypes.INCORPORATION_APPLICATION - } - }, - { - path: '/incorporation-share-structure', - name: RouteNames.INCORPORATION_SHARE_STRUCTURE, - component: Views.IncorporationShareStructure, - meta: { - step: 3, - requiresAuth: true, - filingType: FilingTypes.INCORPORATION_APPLICATION - } - }, - { - path: '/incorporation-rules', - name: RouteNames.INCORPORATION_RULES, - component: Views.IncorporationRules, - meta: { - step: 3, - requiresAuth: true, - filingType: FilingTypes.INCORPORATION_APPLICATION - } - }, - { - path: '/incorporation-agreement', - name: RouteNames.INCORPORATION_AGREEMENT, - component: Views.IncorporationAgreement, - meta: { - step: 4, - requiresAuth: true, - filingType: FilingTypes.INCORPORATION_APPLICATION - } - }, - { - path: '/incorporation-memorandum', - name: RouteNames.INCORPORATION_MEMORANDUM, - component: Views.IncorporationMemorandum, - meta: { - step: 4, - requiresAuth: true, - filingType: FilingTypes.INCORPORATION_APPLICATION - } - }, - { - path: '/incorporation-review-confirm', - name: RouteNames.INCORPORATION_REVIEW_CONFIRM, - component: Views.IncorporationReviewConfirm, - meta: { - step: 5, - requiresAuth: true, - filingType: FilingTypes.INCORPORATION_APPLICATION - } - }, - { - path: '/dissolution-define-dissolution', - name: RouteNames.DISSOLUTION_DEFINE_DISSOLUTION, - component: Views.DissolutionDefineDissolution, - meta: { - step: 1, - requiresAuth: true, - filingType: FilingTypes.DISSOLUTION - } - }, - { - path: '/dissolution-resolution', - name: RouteNames.DISSOLUTION_RESOLUTION, - component: Views.DissolutionResolution, - meta: { - step: 2, - requiresAuth: true, - filingType: FilingTypes.DISSOLUTION - } - }, - { - path: '/dissolution-affidavit', - name: RouteNames.DISSOLUTION_AFFIDAVIT, - component: Views.DissolutionAffidavit, - meta: { - step: 3, - requiresAuth: true, - filingType: FilingTypes.DISSOLUTION - } - }, - { - path: '/dissolution-review-confirm', - name: RouteNames.DISSOLUTION_REVIEW_CONFIRM, - component: Views.DissolutionReviewConfirm, - meta: { - step: 4, - requiresAuth: true, - filingType: FilingTypes.DISSOLUTION - } - }, - { - path: '/registration-define-business', - name: RouteNames.REGISTRATION_DEFINE_BUSINESS, - component: Views.RegistrationDefineBusiness, - meta: { - step: 1, - requiresAuth: true, - filingType: FilingTypes.REGISTRATION - } - }, - { - path: '/registration-people-roles', - name: RouteNames.REGISTRATION_PEOPLE_ROLES, - component: Views.RegistrationPeopleRoles, - meta: { - step: 2, - requiresAuth: true, - filingType: FilingTypes.REGISTRATION - } - }, - { - path: '/registration-review-confirm', - name: RouteNames.REGISTRATION_REVIEW_CONFIRM, - component: Views.RegistrationReviewConfirm, - meta: { - step: 3, - requiresAuth: true, - filingType: FilingTypes.REGISTRATION - } - }, - { - path: '/dissolution-firm', - name: RouteNames.DISSOLUTION_FIRM, - component: Views.DissolutionFirm, - meta: { - step: 1, - requiresAuth: true, - filingType: FilingTypes.DISSOLUTION, - noStepper: true // hide stepper for this route/filing type - } - }, - { - path: '/restoration-business-name', - name: RouteNames.RESTORATION_BUSINESS_NAME, - component: Views.RestorationBusinessName, - meta: { - step: 1, - requiresAuth: true, - filingType: FilingTypes.RESTORATION - } - }, - { - path: '/restoration-applicant-information', - name: RouteNames.RESTORATION_APPLICANT_INFORMATION, - component: Views.RestorationApplicantInformation, - meta: { - step: 2, - requiresAuth: true, - filingType: FilingTypes.RESTORATION - } - }, - { - path: '/restoration-business-information', - name: RouteNames.RESTORATION_BUSINESS_INFORMATION, - component: Views.RestorationBusinessInformation, - meta: { - step: 3, - requiresAuth: true, - filingType: FilingTypes.RESTORATION - } - }, - { - path: '/restoration-review-confirm', - name: RouteNames.RESTORATION_REVIEW_CONFIRM, - component: Views.RestorationReviewConfirm, - meta: { - step: 4, - requiresAuth: true, - filingType: FilingTypes.RESTORATION - } - }, - { - path: '/amalg-reg-information', - name: RouteNames.AMALG_REG_INFORMATION, - component: Views.AmalgRegInformation, - meta: { - step: 1, - requiresAuth: true, - filingType: FilingTypes.AMALGAMATION_APPLICATION, - filingSubType: AmalgamationTypes.REGULAR - } - }, - { - path: '/amalg-reg-business-info', - name: RouteNames.AMALG_REG_BUSINESS_INFO, - component: Views.AmalgRegBusinessInfo, - meta: { - step: 2, - requiresAuth: true, - filingType: FilingTypes.AMALGAMATION_APPLICATION, - filingSubType: AmalgamationTypes.REGULAR - } - }, - { - path: '/amalg-reg-people-roles', - name: RouteNames.AMALG_REG_PEOPLE_ROLES, - component: Views.AmalgRegPeopleRoles, - meta: { - step: 3, - requiresAuth: true, - filingType: FilingTypes.AMALGAMATION_APPLICATION, - filingSubType: AmalgamationTypes.REGULAR - } - }, - { - path: '/amalg-reg-share-structure', - name: RouteNames.AMALG_REG_SHARE_STRUCTURE, - component: Views.AmalgRegShareStructure, - meta: { - step: 4, - requiresAuth: true, - filingType: FilingTypes.AMALGAMATION_APPLICATION, - filingSubType: AmalgamationTypes.REGULAR - } - }, - { - path: '/amalg-reg-review-confirm', - name: RouteNames.AMALG_REG_REVIEW_CONFIRM, - component: Views.AmalgRegReviewConfirm, - meta: { - step: 5, - requiresAuth: true, - filingType: FilingTypes.AMALGAMATION_APPLICATION, - filingSubType: AmalgamationTypes.REGULAR - } - }, + ...AmalgamationRegularRoutes, + ...AmalgamationShortRoutes, + ...DissolutionFirmRoutes, + ...DissolutionRoutes, + ...IncorporationRoutes, + ...RegistrationRoutes, + ...RestorationRoutes, { // default/fallback route // must be last diff --git a/src/router/routes/amalgamation-regular-routes.ts b/src/router/routes/amalgamation-regular-routes.ts new file mode 100644 index 000000000..f2a244470 --- /dev/null +++ b/src/router/routes/amalgamation-regular-routes.ts @@ -0,0 +1,60 @@ +import { AmalgamationTypes, FilingTypes, RouteNames } from '@/enums' +import * as Views from '@/views' + +export const AmalgamationRegularRoutes = [ + { + path: '/amalg-reg-information', + name: RouteNames.AMALG_REG_INFORMATION, + component: Views.AmalgRegInformation, + meta: { + step: 1, + requiresAuth: true, + filingType: FilingTypes.AMALGAMATION_APPLICATION, + filingSubType: AmalgamationTypes.REGULAR + } + }, + { + path: '/amalg-reg-business-info', + name: RouteNames.AMALG_REG_BUSINESS_INFO, + component: Views.AmalgRegBusinessInfo, + meta: { + step: 2, + requiresAuth: true, + filingType: FilingTypes.AMALGAMATION_APPLICATION, + filingSubType: AmalgamationTypes.REGULAR + } + }, + { + path: '/amalg-reg-people-roles', + name: RouteNames.AMALG_REG_PEOPLE_ROLES, + component: Views.AmalgRegPeopleRoles, + meta: { + step: 3, + requiresAuth: true, + filingType: FilingTypes.AMALGAMATION_APPLICATION, + filingSubType: AmalgamationTypes.REGULAR + } + }, + { + path: '/amalg-reg-share-structure', + name: RouteNames.AMALG_REG_SHARE_STRUCTURE, + component: Views.AmalgRegShareStructure, + meta: { + step: 4, + requiresAuth: true, + filingType: FilingTypes.AMALGAMATION_APPLICATION, + filingSubType: AmalgamationTypes.REGULAR + } + }, + { + path: '/amalg-reg-review-confirm', + name: RouteNames.AMALG_REG_REVIEW_CONFIRM, + component: Views.AmalgRegReviewConfirm, + meta: { + step: 5, + requiresAuth: true, + filingType: FilingTypes.AMALGAMATION_APPLICATION, + filingSubType: AmalgamationTypes.REGULAR + } + } +] diff --git a/src/router/routes/amalgamation-short-routes.ts b/src/router/routes/amalgamation-short-routes.ts new file mode 100644 index 000000000..5280f81fe --- /dev/null +++ b/src/router/routes/amalgamation-short-routes.ts @@ -0,0 +1,61 @@ +import { AmalgamationTypes, FilingTypes, RouteNames } from '@/enums' +import * as Views from '@/views' + +export const AmalgamationShortRoutes = [ + { + path: '/amalg-short-information', + name: RouteNames.AMALG_SHORT_INFORMATION, + component: Views.AmalgRegInformation, + meta: { + step: 1, + requiresAuth: true, + filingType: FilingTypes.AMALGAMATION_APPLICATION, + // *** TODO: use or remove Filing Sub Type ??? + filingSubType: AmalgamationTypes.HORIZONTAL + } + }, + { + path: '/amalg-short-business-info', + name: RouteNames.AMALG_SHORT_BUSINESS_INFO, + component: Views.AmalgRegBusinessInfo, + meta: { + step: 2, + requiresAuth: true, + filingType: FilingTypes.AMALGAMATION_APPLICATION, + filingSubType: AmalgamationTypes.HORIZONTAL + } + }, + { + path: '/amalg-short-people-roles', + name: RouteNames.AMALG_SHORT_PEOPLE_ROLES, + component: Views.AmalgRegPeopleRoles, + meta: { + step: 3, + requiresAuth: true, + filingType: FilingTypes.AMALGAMATION_APPLICATION, + filingSubType: AmalgamationTypes.HORIZONTAL + } + }, + { + path: '/amalg-short-share-structure', + name: RouteNames.AMALG_SHORT_SHARE_STRUCTURE, + component: Views.AmalgRegShareStructure, + meta: { + step: 4, + requiresAuth: true, + filingType: FilingTypes.AMALGAMATION_APPLICATION, + filingSubType: AmalgamationTypes.HORIZONTAL + } + }, + { + path: '/amalg-short-review-confirm', + name: RouteNames.AMALG_SHORT_REVIEW_CONFIRM, + component: Views.AmalgRegReviewConfirm, + meta: { + step: 5, + requiresAuth: true, + filingType: FilingTypes.AMALGAMATION_APPLICATION, + filingSubType: AmalgamationTypes.HORIZONTAL + } + } +] diff --git a/src/router/routes/dissolution-routes.ts b/src/router/routes/dissolution-routes.ts new file mode 100644 index 000000000..ae489690e --- /dev/null +++ b/src/router/routes/dissolution-routes.ts @@ -0,0 +1,59 @@ +import { FilingTypes, RouteNames } from '@/enums' +import * as Views from '@/views' + +export const DissolutionRoutes = [ + { + path: '/dissolution-define-dissolution', + name: RouteNames.DISSOLUTION_DEFINE_DISSOLUTION, + component: Views.DissolutionDefineDissolution, + meta: { + step: 1, + requiresAuth: true, + filingType: FilingTypes.DISSOLUTION + } + }, + { + path: '/dissolution-resolution', + name: RouteNames.DISSOLUTION_RESOLUTION, + component: Views.DissolutionResolution, + meta: { + step: 2, + requiresAuth: true, + filingType: FilingTypes.DISSOLUTION + } + }, + { + path: '/dissolution-affidavit', + name: RouteNames.DISSOLUTION_AFFIDAVIT, + component: Views.DissolutionAffidavit, + meta: { + step: 3, + requiresAuth: true, + filingType: FilingTypes.DISSOLUTION + } + }, + { + path: '/dissolution-review-confirm', + name: RouteNames.DISSOLUTION_REVIEW_CONFIRM, + component: Views.DissolutionReviewConfirm, + meta: { + step: 4, + requiresAuth: true, + filingType: FilingTypes.DISSOLUTION + } + } +] + +export const DissolutionFirmRoutes = [ + { + path: '/dissolution-firm', + name: RouteNames.DISSOLUTION_FIRM, + component: Views.DissolutionFirm, + meta: { + step: 1, + requiresAuth: true, + filingType: FilingTypes.DISSOLUTION, + noStepper: true // hide stepper for this route/filing type + } + } +] diff --git a/src/router/routes/incorporation-routes.ts b/src/router/routes/incorporation-routes.ts new file mode 100644 index 000000000..de33f682b --- /dev/null +++ b/src/router/routes/incorporation-routes.ts @@ -0,0 +1,75 @@ +import { FilingTypes, RouteNames } from '@/enums' +import * as Views from '@/views' + +export const IncorporationRoutes = [ + { + path: '/incorporation-define-company', + name: RouteNames.INCORPORATION_DEFINE_COMPANY, + component: Views.IncorporationDefineCompany, + meta: { + step: 1, + requiresAuth: true, + filingType: FilingTypes.INCORPORATION_APPLICATION + } + }, + { + path: '/incorporation-people-roles', + name: RouteNames.INCORPORATION_PEOPLE_ROLES, + component: Views.IncorporationPeopleRoles, + meta: { + step: 2, + requiresAuth: true, + filingType: FilingTypes.INCORPORATION_APPLICATION + } + }, + { + path: '/incorporation-share-structure', + name: RouteNames.INCORPORATION_SHARE_STRUCTURE, + component: Views.IncorporationShareStructure, + meta: { + step: 3, + requiresAuth: true, + filingType: FilingTypes.INCORPORATION_APPLICATION + } + }, + { + path: '/incorporation-rules', + name: RouteNames.INCORPORATION_RULES, + component: Views.IncorporationRules, + meta: { + step: 3, + requiresAuth: true, + filingType: FilingTypes.INCORPORATION_APPLICATION + } + }, + { + path: '/incorporation-agreement', + name: RouteNames.INCORPORATION_AGREEMENT, + component: Views.IncorporationAgreement, + meta: { + step: 4, + requiresAuth: true, + filingType: FilingTypes.INCORPORATION_APPLICATION + } + }, + { + path: '/incorporation-memorandum', + name: RouteNames.INCORPORATION_MEMORANDUM, + component: Views.IncorporationMemorandum, + meta: { + step: 4, + requiresAuth: true, + filingType: FilingTypes.INCORPORATION_APPLICATION + } + }, + { + path: '/incorporation-review-confirm', + name: RouteNames.INCORPORATION_REVIEW_CONFIRM, + component: Views.IncorporationReviewConfirm, + meta: { + step: 5, + requiresAuth: true, + filingType: FilingTypes.INCORPORATION_APPLICATION + } + } +] diff --git a/src/router/routes/index.ts b/src/router/routes/index.ts new file mode 100644 index 000000000..fc1f88ebd --- /dev/null +++ b/src/router/routes/index.ts @@ -0,0 +1,6 @@ +export * from './amalgamation-regular-routes' +export * from './amalgamation-short-routes' +export * from './dissolution-routes' +export * from './incorporation-routes' +export * from './registration-route' +export * from './restoration-routes' diff --git a/src/router/routes/registration-route.ts b/src/router/routes/registration-route.ts new file mode 100644 index 000000000..a16aa69b5 --- /dev/null +++ b/src/router/routes/registration-route.ts @@ -0,0 +1,35 @@ +import { FilingTypes, RouteNames } from '@/enums' +import * as Views from '@/views' + +export const RegistrationRoutes = [ + { + path: '/registration-define-business', + name: RouteNames.REGISTRATION_DEFINE_BUSINESS, + component: Views.RegistrationDefineBusiness, + meta: { + step: 1, + requiresAuth: true, + filingType: FilingTypes.REGISTRATION + } + }, + { + path: '/registration-people-roles', + name: RouteNames.REGISTRATION_PEOPLE_ROLES, + component: Views.RegistrationPeopleRoles, + meta: { + step: 2, + requiresAuth: true, + filingType: FilingTypes.REGISTRATION + } + }, + { + path: '/registration-review-confirm', + name: RouteNames.REGISTRATION_REVIEW_CONFIRM, + component: Views.RegistrationReviewConfirm, + meta: { + step: 3, + requiresAuth: true, + filingType: FilingTypes.REGISTRATION + } + } +] diff --git a/src/router/routes/restoration-routes.ts b/src/router/routes/restoration-routes.ts new file mode 100644 index 000000000..0a6c02bfa --- /dev/null +++ b/src/router/routes/restoration-routes.ts @@ -0,0 +1,45 @@ +import { FilingTypes, RouteNames } from '@/enums' +import * as Views from '@/views' + +export const RestorationRoutes = [ + { + path: '/restoration-business-name', + name: RouteNames.RESTORATION_BUSINESS_NAME, + component: Views.RestorationBusinessName, + meta: { + step: 1, + requiresAuth: true, + filingType: FilingTypes.RESTORATION + } + }, + { + path: '/restoration-applicant-information', + name: RouteNames.RESTORATION_APPLICANT_INFORMATION, + component: Views.RestorationApplicantInformation, + meta: { + step: 2, + requiresAuth: true, + filingType: FilingTypes.RESTORATION + } + }, + { + path: '/restoration-business-information', + name: RouteNames.RESTORATION_BUSINESS_INFORMATION, + component: Views.RestorationBusinessInformation, + meta: { + step: 3, + requiresAuth: true, + filingType: FilingTypes.RESTORATION + } + }, + { + path: '/restoration-review-confirm', + name: RouteNames.RESTORATION_REVIEW_CONFIRM, + component: Views.RestorationReviewConfirm, + meta: { + step: 4, + requiresAuth: true, + filingType: FilingTypes.RESTORATION + } + } +] diff --git a/src/store/store.ts b/src/store/store.ts index caf6ca9d6..fe9eed760 100644 --- a/src/store/store.ts +++ b/src/store/store.ts @@ -69,9 +69,10 @@ import { ValidationDetailIF } from '@/interfaces' -// Possible to move getters / actions into seperate files: +// It's possible to move getters / actions into seperate files: // https://github.com/vuejs/pinia/issues/802#issuecomment-1018780409 -// Not sure if I'd recommend that though. +// Not sure if that's a good idea though. + export const useStore = defineStore('store', { state: (): StateIF => ({ resourceModel, stateModel }), getters: { @@ -89,17 +90,26 @@ export const useStore = defineStore('store', { /** Whether the current filing is a Regular Amalgamation. */ isAmalgamationFilingRegular (): boolean { - return (this.getAmalgamationType === AmalgamationTypes.REGULAR) + return ( + this.isAmalgamationFiling && + this.getAmalgamationType === AmalgamationTypes.REGULAR + ) }, /** Whether the current filing is a Horizontal Amalgamation. */ isAmalgamationFilingHorizontal (): boolean { - return (this.getAmalgamationType === AmalgamationTypes.HORIZONTAL) + return ( + this.isAmalgamationFiling && + this.getAmalgamationType === AmalgamationTypes.HORIZONTAL + ) }, /** Whether the current filing is a Vertical Amalgamation. */ isAmalgamationFilingVertical (): boolean { - return (this.getAmalgamationType === AmalgamationTypes.VERTICAL) + return ( + this.isAmalgamationFiling && + this.getAmalgamationType === AmalgamationTypes.VERTICAL + ) }, /** Whether the current filing is an Incorporation Application. */ diff --git a/src/views/AmalgamationShort/BusinessInfo.vue b/src/views/AmalgamationShort/BusinessInfo.vue new file mode 100644 index 000000000..a1577828b --- /dev/null +++ b/src/views/AmalgamationShort/BusinessInfo.vue @@ -0,0 +1,235 @@ + + + + + diff --git a/src/views/AmalgamationShort/Information.vue b/src/views/AmalgamationShort/Information.vue new file mode 100644 index 000000000..17b7a11e3 --- /dev/null +++ b/src/views/AmalgamationShort/Information.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/src/views/AmalgamationShort/PeopleRoles.vue b/src/views/AmalgamationShort/PeopleRoles.vue new file mode 100644 index 000000000..28342996a --- /dev/null +++ b/src/views/AmalgamationShort/PeopleRoles.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/src/views/AmalgamationShort/ReviewConfirm.vue b/src/views/AmalgamationShort/ReviewConfirm.vue new file mode 100644 index 000000000..7ed4807f7 --- /dev/null +++ b/src/views/AmalgamationShort/ReviewConfirm.vue @@ -0,0 +1,395 @@ + + + + + diff --git a/src/views/AmalgamationShort/ShareStructure.vue b/src/views/AmalgamationShort/ShareStructure.vue new file mode 100644 index 000000000..f0e1a34ee --- /dev/null +++ b/src/views/AmalgamationShort/ShareStructure.vue @@ -0,0 +1,393 @@ + + + + +