diff --git a/alcs-frontend/src/app/features/application/boundary-amendment/edit-boundary-amendment-dialog/edit-boundary-amendment-dialog.component.ts b/alcs-frontend/src/app/features/application/boundary-amendment/edit-boundary-amendment-dialog/edit-boundary-amendment-dialog.component.ts
index d978067bcd..43737e1cb5 100644
--- a/alcs-frontend/src/app/features/application/boundary-amendment/edit-boundary-amendment-dialog/edit-boundary-amendment-dialog.component.ts
+++ b/alcs-frontend/src/app/features/application/boundary-amendment/edit-boundary-amendment-dialog/edit-boundary-amendment-dialog.component.ts
@@ -55,8 +55,8 @@ export class EditBoundaryAmendmentDialogComponent implements OnInit {
this.loadComponents();
- const currentYear = moment().year();
- for (let i = currentYear; i >= 1974; i--) {
+ const nextYear = moment().year() + 1;
+ for (let i = nextYear; i >= 1974; i--) {
this.years.push(i.toString(10));
}
}
diff --git a/alcs-frontend/src/app/features/search/search.component.html b/alcs-frontend/src/app/features/search/search.component.html
index de78eb202a..09ce1cb997 100644
--- a/alcs-frontend/src/app/features/search/search.component.html
+++ b/alcs-frontend/src/app/features/search/search.component.html
@@ -37,6 +37,7 @@
File Details
[fileTypeData]="portalStatusDataService"
(fileTypeChange)="onPortalStatusChange($event)"
[preExpanded]="['With ALC']"
+ onclick="event.preventDefault()"
/>
@@ -47,6 +48,7 @@ File Details
#fileTypeDropDown
[fileTypeData]="fileTypeService"
(fileTypeChange)="onFileTypeChange($event)"
+ onclick="event.preventDefault()"
/>
diff --git a/services/apps/alcs/src/alcs/search/search.controller.ts b/services/apps/alcs/src/alcs/search/search.controller.ts
index 475ff7cc19..17dc930f17 100644
--- a/services/apps/alcs/src/alcs/search/search.controller.ts
+++ b/services/apps/alcs/src/alcs/search/search.controller.ts
@@ -222,7 +222,7 @@ export class SearchController {
}
@Post('/advanced/application-status')
- @UserRoles(...ROLES_ALLOWED_APPLICATIONS)
+ @UserRoles(...ROLES_ALLOWED_SEARCH)
async advancedSearchApplicationStatus(@Body() fileNumbers: string[]): Promise {
const queryRunner = this.dataSource.createQueryRunner('slave');
@@ -241,7 +241,7 @@ export class SearchController {
}
@Post('/advanced/noi-status')
- @UserRoles(...ROLES_ALLOWED_APPLICATIONS)
+ @UserRoles(...ROLES_ALLOWED_SEARCH)
async advancedSearchNoiStatus(@Body() fileNumbers: string[]): Promise {
const queryRunner = this.dataSource.createQueryRunner('slave');
@@ -260,7 +260,7 @@ export class SearchController {
}
@Post('/advanced/notification-status')
- @UserRoles(...ROLES_ALLOWED_APPLICATIONS)
+ @UserRoles(...ROLES_ALLOWED_SEARCH)
async advancedSearchNotificationStatus(@Body() fileNumbers: string[]): Promise {
const queryRunner = this.dataSource.createQueryRunner('slave');
diff --git a/services/apps/alcs/src/providers/typeorm/migrations/1734644882049-create_bond_conditions_where_missing.ts b/services/apps/alcs/src/providers/typeorm/migrations/1734644882049-create_bond_conditions_where_missing.ts
new file mode 100644
index 0000000000..63a5c3d8e9
--- /dev/null
+++ b/services/apps/alcs/src/providers/typeorm/migrations/1734644882049-create_bond_conditions_where_missing.ts
@@ -0,0 +1,77 @@
+import { MigrationInterface, QueryRunner } from 'typeorm';
+
+export class CreateBondConditionsWhereMissing1734644882049 implements MigrationInterface {
+ public async up(queryRunner: QueryRunner): Promise {
+ // Applications
+ queryRunner.query(`
+ insert into
+ alcs.application_decision_condition (
+ audit_created_by,
+ decision_uuid,
+ security_amount,
+ type_code
+ )
+ select
+ distinct 'oats_etl' as audit_created_by,
+ ad."uuid" as decision_uuid,
+ oaad.security_amt as security_amount,
+ 'BOND' as type_code
+ from
+ alcs.application_decision ad
+ join alcs.application_decision_condition adc on ad.uuid = adc.decision_uuid
+ right join oats.oats_alr_appl_decisions oaad on oaad.alr_appl_decision_id = ad.oats_alr_appl_decision_id
+ where
+ ad."uuid" not in (
+ select
+ adc.decision_uuid
+ from
+ alcs.application_decision_condition adc
+ where
+ adc.type_code = 'BOND'
+ )
+ and adc.security_amount > 0
+ and ad.audit_created_by = 'oats_etl'
+ and (
+ oaad.security_amt = adc.security_amount
+ or adc.security_amount is null
+ ) on conflict ("uuid") do nothing;
+ `);
+
+ // NOI's
+ queryRunner.query(`
+ insert into
+ alcs.notice_of_intent_decision_condition (
+ audit_created_by,
+ decision_uuid,
+ security_amount,
+ type_code
+ )
+ select
+ distinct 'oats_etl' as audit_created_by,
+ noid."uuid" as decision_uuid,
+ oaad.security_amt as security_amount,
+ 'BOND' as type_code
+ from
+ alcs.notice_of_intent_decision noid
+ join alcs.notice_of_intent_decision_condition noidc on noid.uuid = noidc.decision_uuid
+ right join oats.oats_alr_appl_decisions oaad on oaad.alr_appl_decision_id = noid.oats_alr_appl_decision_id
+ where
+ noid."uuid" not in (
+ select
+ noidc.decision_uuid
+ from
+ alcs.notice_of_intent_decision_condition noidc
+ where
+ noidc.type_code = 'BOND'
+ )
+ and noidc.security_amount > 0
+ and noid.audit_created_by = 'oats_etl'
+ and (
+ oaad.security_amt = noidc.security_amount
+ or noidc.security_amount is null
+ ) on conflict ("uuid") do nothing;
+ `);
+ }
+
+ public async down(queryRunner: QueryRunner): Promise {}
+}
diff --git a/services/apps/alcs/src/providers/typeorm/migrations/1734645250139-nullify_security_amounts_for_non_bond_conditions.ts b/services/apps/alcs/src/providers/typeorm/migrations/1734645250139-nullify_security_amounts_for_non_bond_conditions.ts
new file mode 100644
index 0000000000..8c8e9dd885
--- /dev/null
+++ b/services/apps/alcs/src/providers/typeorm/migrations/1734645250139-nullify_security_amounts_for_non_bond_conditions.ts
@@ -0,0 +1,27 @@
+import { MigrationInterface, QueryRunner } from 'typeorm';
+
+export class NullifySecurityAmountsForNonBondConditions1734645250139 implements MigrationInterface {
+ public async up(queryRunner: QueryRunner): Promise {
+ // Apps
+ queryRunner.query(`
+ update
+ alcs.application_decision_condition
+ set
+ security_amount = null
+ where
+ type_code <> 'BOND';
+ `);
+
+ // NOI's
+ queryRunner.query(`
+ update
+ alcs.notice_of_intent_decision_condition
+ set
+ security_amount = null
+ where
+ type_code <> 'BOND';
+ `);
+ }
+
+ public async down(queryRunner: QueryRunner): Promise {}
+}
diff --git a/services/apps/alcs/src/providers/typeorm/migrations/1734646226612-disable_security_amount_for_all_non_bond_condition_types.ts b/services/apps/alcs/src/providers/typeorm/migrations/1734646226612-disable_security_amount_for_all_non_bond_condition_types.ts
new file mode 100644
index 0000000000..a02c023154
--- /dev/null
+++ b/services/apps/alcs/src/providers/typeorm/migrations/1734646226612-disable_security_amount_for_all_non_bond_condition_types.ts
@@ -0,0 +1,29 @@
+import { MigrationInterface, QueryRunner } from 'typeorm';
+
+export class DisableSecurityAmountForAllNonBondConditionTypes1734646226612 implements MigrationInterface {
+ public async up(queryRunner: QueryRunner): Promise {
+ // Apps
+ queryRunner.query(`
+ update
+ alcs.application_decision_condition_type
+ set
+ is_security_amount_checked = false,
+ is_security_amount_required = false
+ where
+ code <> 'BOND';
+ `);
+
+ // NOI's
+ queryRunner.query(`
+ update
+ alcs.notice_of_intent_decision_condition_type
+ set
+ is_security_amount_checked = false,
+ is_security_amount_required = false
+ where
+ code <> 'BOND';
+ `);
+ }
+
+ public async down(queryRunner: QueryRunner): Promise {}
+}
diff --git a/services/apps/alcs/src/providers/typeorm/migrations/1734646507149-enable_required_secuity_amount_for_bond_condition_type.ts b/services/apps/alcs/src/providers/typeorm/migrations/1734646507149-enable_required_secuity_amount_for_bond_condition_type.ts
new file mode 100644
index 0000000000..ab3df7dfc5
--- /dev/null
+++ b/services/apps/alcs/src/providers/typeorm/migrations/1734646507149-enable_required_secuity_amount_for_bond_condition_type.ts
@@ -0,0 +1,29 @@
+import { MigrationInterface, QueryRunner } from 'typeorm';
+
+export class EnableRequiredSecuityAmountForBondConditionType1734646507149 implements MigrationInterface {
+ public async up(queryRunner: QueryRunner): Promise {
+ // Apps
+ queryRunner.query(`
+ update
+ alcs.application_decision_condition_type
+ set
+ is_security_amount_checked = true,
+ is_security_amount_required = true
+ where
+ code = 'BOND';
+ `);
+
+ // NOI's
+ queryRunner.query(`
+ update
+ alcs.notice_of_intent_decision_condition_type
+ set
+ is_security_amount_checked = true,
+ is_security_amount_required = true
+ where
+ code = 'BOND';
+ `);
+ }
+
+ public async down(queryRunner: QueryRunner): Promise {}
+}