diff --git a/app/helpers/collection_time_helper.rb b/app/helpers/collection_time_helper.rb index bb6b7fef0..ea7601c70 100644 --- a/app/helpers/collection_time_helper.rb +++ b/app/helpers/collection_time_helper.rb @@ -39,10 +39,10 @@ module CollectionTimeHelper end def previous_collection_start_year - current_collection_start_year - 2 + current_collection_start_year - 1 end def previous_collection_start_date - current_collection_start_date - 2.year + current_collection_start_date - 1.year end end diff --git a/app/models/log.rb b/app/models/log.rb index 7c1a43fdb..b588e1269 100644 --- a/app/models/log.rb +++ b/app/models/log.rb @@ -106,11 +106,15 @@ class Log < ApplicationRecord end def collection_period_open? - return true + return false if older_than_previous_collection_year? + + form.new_logs_end_date > Time.zone.today end def collection_period_open_for_editing? - return true + return false if older_than_previous_collection_year? + + form.edit_end_date > Time.zone.today end def blank_invalid_non_setup_fields! @@ -203,7 +207,9 @@ private # Handle logs that are older than previous collection start date def older_than_previous_collection_year? - return false + return false unless startdate + + startdate < previous_collection_start_date end def plural_gender_for_person(person_num) diff --git a/app/models/validations/sales/setup_validations.rb b/app/models/validations/sales/setup_validations.rb index 667be1b06..d52af8f9b 100644 --- a/app/models/validations/sales/setup_validations.rb +++ b/app/models/validations/sales/setup_validations.rb @@ -3,7 +3,17 @@ module Validations::Sales::SetupValidations include CollectionTimeHelper def validate_saledate_collection_year(record) - return + return unless record.saledate && date_valid?("saledate", record) && FeatureToggle.saledate_collection_window_validation_enabled? + + first_collection_start_date = if record.saledate_was.present? + editable_collection_start_date + else + active_collection_start_date + end + + unless record.saledate.between?(first_collection_start_date, current_collection_end_date) + record.errors.add :saledate, saledate_validation_error_message + end end def validate_saledate_two_weeks(record) diff --git a/app/models/validations/setup_validations.rb b/app/models/validations/setup_validations.rb index 8c0dbb083..adfcfe861 100644 --- a/app/models/validations/setup_validations.rb +++ b/app/models/validations/setup_validations.rb @@ -3,7 +3,17 @@ module Validations::SetupValidations include CollectionTimeHelper def validate_startdate_setup(record) - return + return unless record.startdate && date_valid?("startdate", record) + + first_collection_start_date = if record.startdate_was.present? + editable_collection_start_date + else + active_collection_start_date + end + + unless record.startdate.between?(first_collection_start_date, current_collection_end_date) + record.errors.add :startdate, startdate_validation_error_message + end end def validate_organisation(record)