diff --git a/hmda/src/main/scala/hmda/validation/engine/2025/TsEngine2025.scala b/hmda/src/main/scala/hmda/validation/engine/2025/TsEngine2025.scala index 0e83ed1082..5eb354a4e9 100644 --- a/hmda/src/main/scala/hmda/validation/engine/2025/TsEngine2025.scala +++ b/hmda/src/main/scala/hmda/validation/engine/2025/TsEngine2025.scala @@ -2,7 +2,7 @@ package hmda.validation.engine import hmda.model.filing.ts.TransmittalSheet import hmda.validation.context.ValidationContext -import hmda.validation.rules.ts.syntactical.{ S300, S302 } +import hmda.validation.rules.ts.syntactical._ import hmda.validation.rules.ts.validity._ import hmda.validation.rules.ts.quality._2025._ // $COVERAGE-OFF$ @@ -10,7 +10,8 @@ private[engine] object TsEngine2025 extends ValidationEngine[TransmittalSheet] { override def syntacticalChecks(ctx: ValidationContext) = Vector( S300, - S302.withContext(ctx) + S302.withContext(ctx), + _2025.S303.withContext(ctx) ) override def validityChecks(ctx: ValidationContext) = Vector( diff --git a/hmda/src/main/scala/hmda/validation/engine/2026/TsEngine2026.scala b/hmda/src/main/scala/hmda/validation/engine/2026/TsEngine2026.scala index bcfd863b5f..ae75ae6a2d 100644 --- a/hmda/src/main/scala/hmda/validation/engine/2026/TsEngine2026.scala +++ b/hmda/src/main/scala/hmda/validation/engine/2026/TsEngine2026.scala @@ -2,7 +2,7 @@ package hmda.validation.engine import hmda.model.filing.ts.TransmittalSheet import hmda.validation.context.ValidationContext -import hmda.validation.rules.ts.syntactical.{ S300, S302 } +import hmda.validation.rules.ts.syntactical._ import hmda.validation.rules.ts.validity._ import hmda.validation.rules.ts.quality._2025._ // $COVERAGE-OFF$ @@ -10,7 +10,8 @@ private[engine] object TsEngine2026 extends ValidationEngine[TransmittalSheet] { override def syntacticalChecks(ctx: ValidationContext) = Vector( S300, - S302.withContext(ctx) + S302.withContext(ctx), + _2025.S303.withContext(ctx) ) override def validityChecks(ctx: ValidationContext) = Vector( diff --git a/hmda/src/main/scala/hmda/validation/rules/ts/quality/2025/Q303.scala b/hmda/src/main/scala/hmda/validation/rules/ts/quality/2025/Q303.scala index ec8828bde1..9859181c72 100644 --- a/hmda/src/main/scala/hmda/validation/rules/ts/quality/2025/Q303.scala +++ b/hmda/src/main/scala/hmda/validation/rules/ts/quality/2025/Q303.scala @@ -18,7 +18,6 @@ class Q303 private (institution: Institution) extends EditCheck[TransmittalSheet override def name: String = "Q303" override def apply(ts: TransmittalSheet): ValidationResult = - (ts.LEI.toLowerCase is equalTo(institution.LEI.toLowerCase)) and (ts.agency.code is equalTo(institution.agency.code)) and (ts.taxId is equalTo(institution.taxId.getOrElse(""))) } diff --git a/hmda/src/main/scala/hmda/validation/rules/ts/syntactical/2025/S303.scala b/hmda/src/main/scala/hmda/validation/rules/ts/syntactical/2025/S303.scala new file mode 100644 index 0000000000..06b5ad57f5 --- /dev/null +++ b/hmda/src/main/scala/hmda/validation/rules/ts/syntactical/2025/S303.scala @@ -0,0 +1,22 @@ +package hmda.validation.rules.ts.syntactical._2025 + +import hmda.model.filing.ts.TransmittalSheet +import hmda.model.institution.Institution +import hmda.validation.context.ValidationContext +import hmda.validation.dsl.PredicateCommon._ +import hmda.validation.dsl.PredicateSyntax._ +import hmda.validation.dsl.ValidationResult +import hmda.validation.rules.{EditCheck, IfInstitutionPresentIn} + +object S303 { + def withContext(ctx: ValidationContext): EditCheck[TransmittalSheet] = + IfInstitutionPresentIn(ctx) { new S303(_) } + +} + +class S303 private (institution: Institution) extends EditCheck[TransmittalSheet] { + override def name: String = "S303" + + override def apply(ts: TransmittalSheet): ValidationResult = + (ts.LEI.toLowerCase is equalTo(institution.LEI.toLowerCase)) +}