Skip to content

Commit 4354bf7

Browse files
committed
Merge remote-tracking branch 'origin/main' into GYR1-566-bug-crowd-restrict-editing-client-tax-returns-from-previous-years
2 parents fb23083 + e891f9b commit 4354bf7

31 files changed

+665
-163
lines changed

app/controllers/state_file/questions/md_permanently_disabled_controller.rb

+1-6
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,10 @@ module StateFile
22
module Questions
33
class MdPermanentlyDisabledController < QuestionsController
44
include ReturnToReviewConcern
5+
56
def self.show?(intake)
67
Flipper.enabled?(:show_retirement_ui) && intake.state_file1099_rs.length.positive?
78
end
8-
9-
private
10-
11-
def form_params
12-
params.require(:state_file_md_permanently_disabled_form).permit(:mfj_disability, :primary_disabled, :spouse_disabled, :proof_of_disability_submitted)
13-
end
149
end
1510
end
1611
end
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,50 @@
11
module StateFile
22
class MdPermanentlyDisabledForm < QuestionsForm
3-
set_attributes_for :intake, :primary_disabled, :spouse_disabled, :proof_of_disability_submitted
3+
set_attributes_for :intake, :mfj_disability, :primary_disabled, :spouse_disabled, :primary_proof_of_disability_submitted, :spouse_proof_of_disability_submitted
44

5-
attr_accessor :mfj_disability
6-
validates_presence_of :mfj_disability, if: -> { intake.filing_status_mfj?}
5+
validates_presence_of :mfj_disability, if: -> { intake.filing_status_mfj? }
76
validates :primary_disabled, inclusion: { in: %w[yes no], message: :blank }, unless: -> { intake.filing_status_mfj? }
8-
validates :proof_of_disability_submitted, inclusion: { in: %w[yes no], message: :blank }, if: :disability_selected?
9-
7+
validates :primary_proof_of_disability_submitted, inclusion: { in: %w[yes no], message: :blank }, if: :primary_requires_proof?
8+
validates :spouse_proof_of_disability_submitted, inclusion: { in: %w[yes no], message: :blank }, if: :spouse_requires_proof?
109

1110
def save
11+
attributes_to_save = attributes_for(:intake).except(:mfj_disability)
12+
if mfj_disability.present?
13+
attributes_to_save = case mfj_disability
14+
when "primary"
15+
attributes_to_save.merge(primary_disabled: "yes", spouse_disabled: "no")
16+
when "spouse"
17+
attributes_to_save.merge(primary_disabled: "no", spouse_disabled: "yes")
18+
when "both"
19+
attributes_to_save.merge(primary_disabled: "yes", spouse_disabled: "yes")
20+
when "none"
21+
attributes_to_save.merge(primary_disabled: "no", spouse_disabled: "no")
22+
end
23+
end
24+
25+
@intake.update(attributes_to_save)
26+
end
27+
28+
private
29+
30+
def proof_not_required?
1231
if intake.filing_status_mfj?
13-
case mfj_disability
14-
when "me"
15-
@intake.update(primary_disabled: "yes", spouse_disabled: "no", proof_of_disability_submitted: proof_of_disability_submitted)
16-
when "spouse"
17-
@intake.update(primary_disabled: "no", spouse_disabled: "yes", proof_of_disability_submitted: proof_of_disability_submitted)
18-
when "both"
19-
@intake.update(primary_disabled: "yes", spouse_disabled: "yes", proof_of_disability_submitted: proof_of_disability_submitted)
20-
when "none"
21-
@intake.update(primary_disabled: "no", spouse_disabled: "no", proof_of_disability_submitted: nil)
22-
end
23-
elsif primary_disabled == "no"
24-
@intake.update(
25-
primary_disabled: "no",
26-
proof_of_disability_submitted: nil
27-
)
32+
intake.primary_senior? && intake.spouse_senior?
2833
else
29-
@intake.update(attributes_for(:intake))
34+
intake.primary_senior?
3035
end
3136
end
3237

33-
private
38+
def primary_requires_proof?
39+
return false if proof_not_required?
40+
41+
mfj_disability.in?(%w[primary both]) || primary_disabled == "yes"
42+
end
43+
44+
def spouse_requires_proof?
45+
return false if proof_not_required?
3446

35-
def disability_selected?
36-
mfj_disability.in?(%w[me spouse both]) || primary_disabled == "yes"
47+
mfj_disability.in?(%w[spouse both])
3748
end
3849
end
3950
end

app/lib/efile/nj/nj1040_calculator.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,7 @@ def calculate_line_55
468468
return nil if @intake.state_file_w2s.empty? && @intake.state_file1099_rs.empty?
469469

470470
(
471-
@intake.state_file_w2s.sum(&:state_income_tax_amount) +
471+
@intake.state_file_w2s.sum{ |item| item.state_income_tax_amount || 0} +
472472
@intake.state_file1099_rs.sum(&:state_tax_withheld_amount)
473473
).round
474474
end

app/lib/submission_builder/state1099_r.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ def document
1111
if form1099r.payer_name.present?
1212
xml.PayerName do
1313
xml.BusinessNameLine1Txt sanitize_for_xml(form1099r.payer_name.tr('-', ' '), 75)
14+
xml.BusinessNameLine2Txt sanitize_for_xml(form1099r.payer_name2&.tr('-', ' '), 75) if form1099r.payer_name2.present?
1415
end
1516
xml.PayerUSAddress do
1617
xml.AddressLine1Txt sanitize_for_xml(form1099r.payer_address_line1, 35) if form1099r.payer_address_line1.present?
@@ -36,7 +37,7 @@ def document
3637
xml.F1099RStateLocalTaxGrp do
3738
xml.F1099RStateTaxGrp do
3839
xml.StateTaxWithheldAmt form1099r.state_tax_withheld_amount&.round
39-
xml.StateAbbreviationCd form1099r.state_code if form1099r.state_code.present?
40+
xml.StateAbbreviationCd form1099r.state_code || state_abbreviation
4041
xml.PayerStateIdNum form1099r.payer_state_identification_number if form1099r.payer_state_identification_number.present?
4142
xml.StateDistributionAmt form1099r.state_distribution_amount&.round
4243
end

app/models/df_1099r_accessor.rb

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ class Df1099rAccessor < DfXmlAccessor
22
SELECTORS = {
33
payer_name_control: "PayerNameControlTxt",
44
payer_name: "PayerName BusinessNameLine1Txt",
5+
payer_name2: "PayerName BusinessNameLine2Txt",
56
payer_address_line1: "PayerUSAddress AddressLine1Txt",
67
payer_address_line2: "PayerUSAddress AddressLine2Txt",
78
payer_city_name: "PayerUSAddress CityNm",

app/models/state_file1099_r.rb

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
# payer_city_name :string
1515
# payer_identification_number :string
1616
# payer_name :string
17+
# payer_name2 :string
1718
# payer_name_control :string
1819
# payer_state_code :string
1920
# payer_state_identification_number :string

app/models/state_file_md_intake.rb

+5-7
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,13 @@
6262
# primary_first_name :string
6363
# primary_last_name :string
6464
# primary_middle_initial :string
65+
# primary_proof_of_disability_submitted :integer default("unfilled"), not null
6566
# primary_signature :string
6667
# primary_signature_pin :text
6768
# primary_ssb_amount :decimal(12, 2) default(0.0), not null
6869
# primary_ssn :string
6970
# primary_student_loan_interest_ded_amount :decimal(12, 2) default(0.0), not null
7071
# primary_suffix :string
71-
# proof_of_disability_submitted :integer default("unfilled"), not null
7272
# raw_direct_file_data :text
7373
# raw_direct_file_intake_data :jsonb
7474
# referrer :string
@@ -85,6 +85,7 @@
8585
# spouse_first_name :string
8686
# spouse_last_name :string
8787
# spouse_middle_initial :string
88+
# spouse_proof_of_disability_submitted :integer default("unfilled"), not null
8889
# spouse_signature_pin :text
8990
# spouse_ssb_amount :decimal(12, 2) default(0.0), not null
9091
# spouse_ssn :string
@@ -130,7 +131,8 @@ class StateFileMdIntake < StateFileBaseIntake
130131
enum has_joint_account_holder: { unfilled: 0, yes: 1, no: 2 }, _prefix: :has_joint_account_holder
131132
enum primary_disabled: { unfilled: 0, yes: 1, no: 2 }, _prefix: :primary_disabled
132133
enum spouse_disabled: { unfilled: 0, yes: 1, no: 2 }, _prefix: :spouse_disabled
133-
enum proof_of_disability_submitted: { unfilled: 0, yes: 1, no: 2 }, _prefix: :proof_of_disability_submitted
134+
enum primary_proof_of_disability_submitted: { unfilled: 0, yes: 1, no: 2 }, _prefix: :primary_proof_of_disability_submitted
135+
enum spouse_proof_of_disability_submitted: { unfilled: 0, yes: 1, no: 2 }, _prefix: :spouse_proof_of_disability_submitted
134136

135137
def disqualifying_df_data_reason
136138
w2_states = direct_file_data.parsed_xml.css('W2StateLocalTaxGrp W2StateTaxGrp StateAbbreviationCd')
@@ -239,11 +241,7 @@ def allows_refund_amount_in_xml?
239241
end
240242

241243
def at_least_one_disabled_filer_with_proof?
242-
if filing_status_mfj?
243-
(primary_disabled_yes? || spouse_disabled_yes?) && proof_of_disability_submitted_yes?
244-
else
245-
primary_disabled_yes? && proof_of_disability_submitted_yes?
246-
end
244+
primary_proof_of_disability_submitted_yes? || spouse_proof_of_disability_submitted_yes?
247245
end
248246

249247
def qualifies_for_pension_exclusion?(filer)

app/views/state_file/questions/data_transfer_offboarding/edit.html.erb

+6-7
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,12 @@
1313
<p><%= vita_introduction %></p>
1414
<% end %>
1515
16-
<% vita_link = I18n.locale == :en ? StateFile::StateInformationService.vita_link_en(current_state_code) : StateFile::StateInformationService.vita_link_es(current_state_code) %>
17-
<% if vita_link.present? %>
18-
<p><%= link_to t("state_file.questions.eligible.faq_link"), state_faq_path(us_state: current_state_code) %></p>
19-
<%= link_to(vita_link, class: "button button--primary button--wide spacing-below-15", target: "_blank", rel: "noopener noreferrer") do %>
20-
<%= t('state_file.questions.eligible.vita_option.connect_to_vita') %>
21-
<% end %>
22-
<% end %>
16+
<% # i18n-tasks-use t('state_file.questions.eligible.vita_option.connect_to_vita.nj') # hint for the i18n linter that, yes, we are using this key (sometimes) %>
17+
<% vita_link_key = "state_file.questions.eligible.vita_option.connect_to_vita.#{current_state_code}" %>
18+
<% vita_link_href = StateFile::StateInformationService.send("vita_link_#{I18n.locale}", current_state_code) %>
19+
<% faq_link_href = state_faq_path(us_state: current_state_code) %>
20+
<% vita_link = t(vita_link_key, faq_link_href: faq_link_href, vita_link_href: vita_link_href, default: '') %>
21+
<%= vita_link.html_safe if vita_link.present? %>
2322
2423
<%= render 'state_file/questions/eligible/other_filing_options' %>
2524
<% end %>

app/views/state_file/questions/eligibility_offboarding/edit.html.erb

+6-7
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,12 @@
1616
<p><%= vita_introduction %></p>
1717
<% end %>
1818
19-
<% vita_link = I18n.locale == :en ? StateFile::StateInformationService.vita_link_en(current_state_code) : StateFile::StateInformationService.vita_link_es(current_state_code) %>
20-
<% if vita_link.present? %>
21-
<p><%= link_to t("state_file.questions.eligible.faq_link"), state_faq_path(us_state: current_state_code), target: "_blank", rel: "noopener noreferrer" %></p>
22-
<%= link_to(vita_link, class: "button button--primary button--wide spacing-below-25", target: "_blank", rel: "noopener noreferrer") do %>
23-
<%= t('state_file.questions.eligible.vita_option.connect_to_vita') %>
24-
<% end %>
25-
<% end %>
19+
<% # i18n-tasks-use t('state_file.questions.eligible.vita_option.connect_to_vita.nj') # hint for the i18n linter that, yes, we are using this key (sometimes) %>
20+
<% vita_link_key = "state_file.questions.eligible.vita_option.connect_to_vita.#{current_state_code}" %>
21+
<% vita_link_href = StateFile::StateInformationService.send("vita_link_#{I18n.locale}", current_state_code) %>
22+
<% faq_link_href = state_faq_path(us_state: current_state_code) %>
23+
<% vita_link = t(vita_link_key, faq_link_href: faq_link_href, vita_link_href: vita_link_href, default: '') %>
24+
<%= vita_link.html_safe if vita_link.present? %>
2625
2726
<%= render 'state_file/questions/eligible/other_filing_options' %>
2827

app/views/state_file/questions/federal_info/_df_1099r.html.erb

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<table>
88
<%= f.state_file_nested_xml_field :payer_name_control %>
99
<%= f.state_file_nested_xml_field :payer_name %>
10+
<%= f.state_file_nested_xml_field :payer_name2 %>
1011
<%= f.state_file_nested_xml_field :payer_address_line1 %>
1112
<%= f.state_file_nested_xml_field :payer_address_line2 %>
1213
<%= f.state_file_nested_xml_field :payer_city_name %>

app/views/state_file/questions/md_permanently_disabled/edit.html.erb

+38-7
Original file line numberDiff line numberDiff line change
@@ -12,24 +12,55 @@
1212
<div class="question-with-follow-up__question">
1313
<div class="white-group">
1414
<% if current_intake.filing_status_mfj? %>
15+
<% are_filers_under_65 = !(current_intake.primary_senior? && current_intake.spouse_senior?) %>
16+
<% primary_data_followup = are_filers_under_65 ? "#primary-disability-proof" : nil %>
17+
<% spouse_data_followup = are_filers_under_65 ? "#spouse-disability-proof" : nil %>
18+
<% both_data_followup = are_filers_under_65 ? "#both-disability-proof" : nil %>
19+
1520
<%= f.cfa_radio_set(:mfj_disability, collection: [
16-
{ value: "me", label: t(".yes_me"), input_html: { "data-follow-up": "#disability-proof" } },
17-
{ value: "spouse", label: t(".yes_spouse"), input_html: { "data-follow-up": "#disability-proof" } },
18-
{ value: "both", label: t(".yes_both"), input_html: { "data-follow-up": "#disability-proof" } },
21+
{ value: "primary", label: t(".yes_me"), input_html: { "data-follow-up": primary_data_followup } },
22+
{ value: "spouse", label: t(".yes_spouse"), input_html: { "data-follow-up": spouse_data_followup } },
23+
{ value: "both", label: t(".yes_both"), input_html: { "data-follow-up": both_data_followup } },
1924
{ value: "none", label: t(".no_neither") }
2025
]) %>
2126
<% else %>
27+
<% primary_data_followup = !current_intake.primary_senior? ? "#primary-disability-proof" : nil %>
2228
<%= f.cfa_radio_set(:primary_disabled, collection: [
23-
{ value: "yes", label: t("general.affirmative"), input_html: { "data-follow-up": "#disability-proof" } },
29+
{ value: "yes", label: t("general.affirmative"), input_html: { "data-follow-up": primary_data_followup } },
2430
{ value: "no", label: t("general.negative") }
2531
], legend_class: "sr-only") %>
2632
<% end %>
2733
</div>
2834
</div>
2935

30-
<div class="question-with-follow-up__follow-up" id="disability-proof">
36+
<div class="question-with-follow-up__follow-up" id="primary-disability-proof">
37+
<div class="white-group">
38+
<%= f.cfa_radio_set(:primary_proof_of_disability_submitted, label_text: t(".primary_proof_question_html"), collection: [
39+
{ value: "yes", label: t("general.affirmative") },
40+
{ value: "no", label: t("general.negative") },
41+
]) %>
42+
</div>
43+
</div>
44+
45+
<div class="question-with-follow-up__follow-up" id="spouse-disability-proof">
46+
<div class="white-group">
47+
<%= f.cfa_radio_set(:spouse_proof_of_disability_submitted, label_text: t(".spouse_proof_question_html"), collection: [
48+
{ value: "yes", label: t("general.affirmative") },
49+
{ value: "no", label: t("general.negative") },
50+
]) %>
51+
</div>
52+
</div>
53+
54+
<div class="question-with-follow-up__follow-up" id="both-disability-proof">
3155
<div class="white-group">
32-
<%= f.cfa_radio_set(:proof_of_disability_submitted, label_text: t(".proof_question"), collection: [
56+
<%= f.cfa_radio_set(:primary_proof_of_disability_submitted, label_text: t(".primary_proof_question_html"), collection: [
57+
{ value: "yes", label: t("general.affirmative") },
58+
{ value: "no", label: t("general.negative") },
59+
]) %>
60+
</div>
61+
62+
<div class="white-group">
63+
<%= f.cfa_radio_set(:spouse_proof_of_disability_submitted, label_text: t(".spouse_proof_question_html"), collection: [
3364
{ value: "yes", label: t("general.affirmative") },
3465
{ value: "no", label: t("general.negative") },
3566
]) %>
@@ -49,4 +80,4 @@
4980
<% end %>
5081
<%= f.continue %>
5182
<% end %>
52-
<% end %>
83+
<% end %>

app/views/state_file/questions/md_review/edit.html.erb

+7-3
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,13 @@
8080
<% else %>
8181
<p><%=current_intake.primary_disabled_yes? ? t("general.affirmative") : t("general.negative") %></p>
8282
<% end %>
83-
<% unless current_intake.proof_of_disability_submitted_unfilled? %>
84-
<p class="text--bold spacing-below-5"><%=t(".proof_of_disability") %></p>
85-
<p><%=current_intake.proof_of_disability_submitted_yes? ? t("general.affirmative") : t("general.negative") %></p>
83+
<% unless current_intake.primary_proof_of_disability_submitted_unfilled? %>
84+
<p class="text--bold spacing-below-5"><%=t(".primary_proof_of_disability") %></p>
85+
<p><%=current_intake.primary_proof_of_disability_submitted_yes? ? t("general.affirmative") : t("general.negative") %></p>
86+
<% end %>
87+
<% unless current_intake.spouse_proof_of_disability_submitted_unfilled? %>
88+
<p class="text--bold spacing-below-5"><%=t(".spouse_proof_of_disability") %></p>
89+
<p><%=current_intake.spouse_proof_of_disability_submitted_yes? ? t("general.affirmative") : t("general.negative") %></p>
8690
<% end %>
8791
<%= link_to t("general.review_and_edit"), StateFile::Questions::MdPermanentlyDisabledController.to_path_helper(return_to_review: "y"), class: "button--small" %>
8892
<span class="sr-only"><%= t(".disability_status") %></span>

app/views/state_file/questions/nc_review/edit.html.erb

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<% if followup.bailey_settlement_from_retirement_plan_yes? %>
2424
<li><%= t(".bailey_settlement_from_retirement_plan") %></li>
2525
<% end %>
26-
<% if !followup.bailey_settlement_from_retirement_plan_yes? && !followup.bailey_settlement_from_retirement_plan_yes? %>
26+
<% if !followup.bailey_settlement_from_retirement_plan_yes? && !followup.bailey_settlement_at_least_five_years_yes? %>
2727
<li><%= t(".none_apply") %></li>
2828
<% end %>
2929
<% elsif followup.income_source_uniformed_services? %>

0 commit comments

Comments
 (0)