Browse Source

combine similar validation methods

pull/3001/head
Carolyn 2 months ago
parent
commit
2af699a0bf
  1. 45
      app/models/validations/sales/financial_validations.rb

45
app/models/validations/sales/financial_validations.rb

@ -105,39 +105,36 @@ module Validations::Sales::FinancialValidations
end end
end end
def validate_equity_less_than_staircase_difference(record) def validate_staircase_difference(record)
return unless record.equity && record.stairbought && record.stairowned return unless record.equity && record.stairbought && record.stairowned
return unless record.saledate && record.form.start_year_2024_or_later? return unless record.saledate && record.form.start_year_2024_or_later?
if record.equity > record.stairowned - record.stairbought percentage_left = record.stairowned - record.stairbought - record.equity
if percentage_left.negative?
formatted_equity = sprintf("%g", record.equity) formatted_equity = sprintf("%g", record.equity)
joint_purchase_id = record.joint_purchase? ? "joint_purchase" : "not_joint_purchase" joint_purchase_id = record.joint_purchase? ? "joint_purchase" : "not_joint_purchase"
record.errors.add :equity, I18n.t("validations.sales.financial.equity.equity_over_stairowned_minus_stairbought.#{joint_purchase_id}", equity: formatted_equity, staircase_difference: record.stairowned - record.stairbought) record.errors.add :equity, I18n.t("validations.sales.financial.equity.equity_over_stairowned_minus_stairbought.#{joint_purchase_id}", equity: formatted_equity, staircase_difference: record.stairowned - record.stairbought)
record.errors.add :stairowned, I18n.t("validations.sales.financial.stairowned.equity_over_stairowned_minus_stairbought.#{joint_purchase_id}", equity: formatted_equity, staircase_difference: record.stairowned - record.stairbought) record.errors.add :stairowned, I18n.t("validations.sales.financial.stairowned.equity_over_stairowned_minus_stairbought.#{joint_purchase_id}", equity: formatted_equity, staircase_difference: record.stairowned - record.stairbought)
record.errors.add :stairbought, I18n.t("validations.sales.financial.stairbought.equity_over_stairowned_minus_stairbought.#{joint_purchase_id}", equity: formatted_equity, staircase_difference: record.stairowned - record.stairbought) record.errors.add :stairbought, I18n.t("validations.sales.financial.stairbought.equity_over_stairowned_minus_stairbought.#{joint_purchase_id}", equity: formatted_equity, staircase_difference: record.stairowned - record.stairbought)
end
end
def validate_staircase_difference_enough_for_numstair(record)
return unless record.equity && record.stairbought && record.stairowned && record.numstair
percentage_left = record.stairowned - record.stairbought - record.equity elsif record.numstair
return if percentage_left.negative? # In this case we show the validate_equity_less_than_staircase_difference validation # We must use the lowest possible percentage for a staircasing transaction of any saletype, any year since 1980
minimum_percentage_per_staircasing_transaction = 1
previous_staircasing_transactions = record.numstair - 1 previous_staircasing_transactions = record.numstair - 1
# We must use the lowest possible percentage for a staircasing transaction of any saletype, any year since 1980 if percentage_left < previous_staircasing_transactions * minimum_percentage_per_staircasing_transaction
minimum_percentage_per_staircasing_transaction = 1 equity_sum = sprintf("%g", record.stairowned - percentage_left + previous_staircasing_transactions * minimum_percentage_per_staircasing_transaction)
formatted_equity = sprintf("%g", record.equity)
if percentage_left < previous_staircasing_transactions * minimum_percentage_per_staircasing_transaction formatted_stairbought = sprintf("%g", record.stairbought)
equity_sum = sprintf("%g", record.stairowned - percentage_left + previous_staircasing_transactions * minimum_percentage_per_staircasing_transaction) formatted_stairowned = sprintf("%g", record.stairowned)
formatted_equity = sprintf("%g", record.equity)
formatted_stairbought = sprintf("%g", record.stairbought) record.errors.add :equity, I18n.t("validations.sales.financial.equity.more_than_stairowned_minus_stairbought_minus_prev_staircasing", equity: formatted_equity, bought: formatted_stairbought, numprevstair: previous_staircasing_transactions, equity_sum:, stair_total: formatted_stairowned)
formatted_stairowned = sprintf("%g", record.stairowned) record.errors.add :stairowned, I18n.t("validations.sales.financial.stairowned.less_than_stairbought_plus_equity_plus_prev_staircasing", equity: formatted_equity, bought: formatted_stairbought, numprevstair: previous_staircasing_transactions, equity_sum:, stair_total: formatted_stairowned)
record.errors.add :equity, I18n.t("validations.sales.financial.equity.more_than_stairowned_minus_stairbought_minus_prev_staircasing", equity: formatted_equity, bought: formatted_stairbought, numprevstair: previous_staircasing_transactions, equity_sum:, stair_total: formatted_stairowned) record.errors.add :stairbought, I18n.t("validations.sales.financial.stairbought.more_than_stairowned_minus_equity_minus_prev_staircasing", equity: formatted_equity, bought: formatted_stairbought, numprevstair: previous_staircasing_transactions, equity_sum:, stair_total: formatted_stairowned)
record.errors.add :stairowned, I18n.t("validations.sales.financial.stairowned.less_than_stairbought_plus_equity_plus_prev_staircasing", equity: formatted_equity, bought: formatted_stairbought, numprevstair: previous_staircasing_transactions, equity_sum:, stair_total: formatted_stairowned) record.errors.add :numstair, I18n.t("validations.sales.financial.numstair.too_high_for_stairowned_minus_stairbought_minus_equity", equity: formatted_equity, bought: formatted_stairbought, numprevstair: previous_staircasing_transactions, equity_sum:, stair_total: formatted_stairowned)
record.errors.add :stairbought, I18n.t("validations.sales.financial.stairbought.more_than_stairowned_minus_equity_minus_prev_staircasing", equity: formatted_equity, bought: formatted_stairbought, numprevstair: previous_staircasing_transactions, equity_sum:, stair_total: formatted_stairowned) end
record.errors.add :numstair, I18n.t("validations.sales.financial.numstair.too_high_for_stairowned_minus_stairbought_minus_equity", equity: formatted_equity, bought: formatted_stairbought, numprevstair: previous_staircasing_transactions, equity_sum:, stair_total: formatted_stairowned)
end end
end end

Loading…
Cancel
Save