diff --git a/app/models/validations/sales/sale_information_validations.rb b/app/models/validations/sales/sale_information_validations.rb index 417cc527d..add8b7acb 100644 --- a/app/models/validations/sales/sale_information_validations.rb +++ b/app/models/validations/sales/sale_information_validations.rb @@ -12,10 +12,10 @@ module Validations::Sales::SaleInformationValidations record.errors.add :saledate, I18n.t("validations.sales.sale_information.saledate.must_be_after_hodate") end - if record.saledate - record.hodate >= 5.years && record.form.start_year_2025_or_later? + if date_difference_in_years?(record.hodate, record.saledate, 5) && record.form.start_year_2025_or_later? record.errors.add :hodate, I18n.t("validations.sales.sale_information.hodate.must_be_less_than_5_years_from_saledate") record.errors.add :saledate, I18n.t("validations.sales.sale_information.saledate.must_be_less_than_5_years_from_hodate") - elsif record.saledate - record.hodate >= 3.years && record.startdate.year <= 2024 + elsif date_difference_in_years?(record.hodate, record.saledate, 3) && record.startdate.year <= 2024 record.errors.add :hodate, I18n.t("validations.sales.sale_information.hodate.must_be_less_than_3_years_from_saledate") record.errors.add :saledate, I18n.t("validations.sales.sale_information.saledate.must_be_less_than_3_years_from_hodate") end @@ -358,4 +358,11 @@ module Validations::Sales::SaleInformationValidations (expected - actual).abs >= tolerance end end + + def date_difference_in_years?(start_date, end_date, year) + year_difference = (end_date.year - start_date.year).abs + same_day_and_month = start_date.day == end_date.day && start_date.month == end_date.month + + (end_date - start_date).abs >= year.years || (same_day_and_month && year_difference == year) + end end