diff --git a/app/models/validations/sales/soft_validations.rb b/app/models/validations/sales/soft_validations.rb index 51326a2f4..fccd9bf83 100644 --- a/app/models/validations/sales/soft_validations.rb +++ b/app/models/validations/sales/soft_validations.rb @@ -68,6 +68,7 @@ module Validations::Sales::SoftValidations end def extra_borrowing_expected_but_not_reported? + return unless saledate && !form.start_year_after_2024? return unless extrabor && mortgage && deposit && value && discount extrabor != 1 && mortgage + deposit > value - value * discount / 100 diff --git a/spec/models/validations/sales/soft_validations_spec.rb b/spec/models/validations/sales/soft_validations_spec.rb index b64eb1bde..8ce602d36 100644 --- a/spec/models/validations/sales/soft_validations_spec.rb +++ b/spec/models/validations/sales/soft_validations_spec.rb @@ -267,69 +267,87 @@ RSpec.describe Validations::Sales::SoftValidations do end context "when validating extra borrowing" do - it "returns false if extrabor not present" do - record.mortgage = 50_000 - record.deposit = 40_000 - record.value = 100_000 - record.discount = 11 - expect(record) - .not_to be_extra_borrowing_expected_but_not_reported - end + context "when the log is for 2023" do + let(:record) { build(:sales_log, saledate: Time.zone.local(2023, 12, 1)) } + + it "returns false if extrabor not present" do + record.mortgage = 50_000 + record.deposit = 40_000 + record.value = 100_000 + record.discount = 11 + expect(record) + .not_to be_extra_borrowing_expected_but_not_reported + end - it "returns false if mortgage not present" do - record.extrabor = 2 - record.deposit = 40_000 - record.value = 100_000 - record.discount = 11 - expect(record) - .not_to be_extra_borrowing_expected_but_not_reported - end + it "returns false if mortgage not present" do + record.extrabor = 2 + record.deposit = 40_000 + record.value = 100_000 + record.discount = 11 + expect(record) + .not_to be_extra_borrowing_expected_but_not_reported + end - it "returns false if deposit not present" do - record.extrabor = 2 - record.mortgage = 50_000 - record.value = 100_000 - record.discount = 11 - expect(record) - .not_to be_extra_borrowing_expected_but_not_reported - end + it "returns false if deposit not present" do + record.extrabor = 2 + record.mortgage = 50_000 + record.value = 100_000 + record.discount = 11 + expect(record) + .not_to be_extra_borrowing_expected_but_not_reported + end - it "returns false if value not present" do - record.extrabor = 2 - record.mortgage = 50_000 - record.deposit = 40_000 - record.discount = 11 - expect(record) - .not_to be_extra_borrowing_expected_but_not_reported - end + it "returns false if value not present" do + record.extrabor = 2 + record.mortgage = 50_000 + record.deposit = 40_000 + record.discount = 11 + expect(record) + .not_to be_extra_borrowing_expected_but_not_reported + end - it "returns false if discount not present" do - record.extrabor = 2 - record.mortgage = 50_000 - record.deposit = 40_000 - record.value = 100_000 - expect(record) - .not_to be_extra_borrowing_expected_but_not_reported - end + it "returns false if discount not present" do + record.extrabor = 2 + record.mortgage = 50_000 + record.deposit = 40_000 + record.value = 100_000 + expect(record) + .not_to be_extra_borrowing_expected_but_not_reported + end - it "returns false if extra borrowing expected and reported" do - record.extrabor = 1 - record.mortgage = 50_000 - record.deposit = 40_000 - record.value = 100_000 - record.discount = 11 - expect(record) - .not_to be_extra_borrowing_expected_but_not_reported + it "returns false if extra borrowing expected and reported" do + record.extrabor = 1 + record.mortgage = 50_000 + record.deposit = 40_000 + record.value = 100_000 + record.discount = 11 + expect(record) + .not_to be_extra_borrowing_expected_but_not_reported + end + + it "returns true if extra borrowing expected but not reported" do + record.extrabor = 2 + record.mortgage = 50_000 + record.deposit = 40_000 + record.value = 100_000 + record.discount = 11 + expect(record) + .to be_extra_borrowing_expected_but_not_reported + end end - it "returns true if extra borrowing expected but not reported" do - record.extrabor = 2 - record.mortgage = 50_000 - record.deposit = 40_000 - record.value = 100_000 - record.discount = 11 - expect(record) - .to be_extra_borrowing_expected_but_not_reported + context "when the log is for 2024" do + let(:record) { build(:sales_log, saledate: Time.zone.local(2024, 12, 1)) } + + it "returns false for logs from 2024 onwards" do + record.extrabor = 2 + record.mortgage = 50_000 + record.deposit = 40_000 + record.value = 100_000 + record.discount = 11 + expect(record) + .not_to be_extra_borrowing_expected_but_not_reported + end end end end