Browse Source

Different approach to comparing dates

pull/2781/head
Manny Dinssa 7 months ago
parent
commit
0214d66bf1
  1. 11
      app/models/validations/sales/sale_information_validations.rb

11
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") record.errors.add :saledate, I18n.t("validations.sales.sale_information.saledate.must_be_after_hodate")
end 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 :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") 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 :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") record.errors.add :saledate, I18n.t("validations.sales.sale_information.saledate.must_be_less_than_3_years_from_hodate")
end end
@ -358,4 +358,11 @@ module Validations::Sales::SaleInformationValidations
(expected - actual).abs >= tolerance (expected - actual).abs >= tolerance
end end
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 end

Loading…
Cancel
Save