diff --git a/app/assets/stylesheets/_state-file.scss b/app/assets/stylesheets/_state-file.scss index 1041d894a3..5511813b2c 100644 --- a/app/assets/stylesheets/_state-file.scss +++ b/app/assets/stylesheets/_state-file.scss @@ -673,13 +673,10 @@ max-width: 100%; } - .esign-declaration-outer, .return-status-outer, .submission-confirmation-outer { - - .question-wrapper .button--primary { - min-width: 40rem; - max-width: 40rem; - width: 40rem; - } + .question-layout .question-wrapper .button--primary.button--wide { + min-width: 40rem; + max-width: 40rem; + width: 40rem; } .esign-declaration-outer .text--error { diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 83aa075d73..ded1b93b13 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -401,7 +401,7 @@ def open_for_ctc_read_write? helper_method :open_for_ctc_read_write? def open_for_state_file_intake? - app_time.between?(Rails.configuration.state_file_start_of_open_intake, Rails.configuration.state_file_end_of_intake) + app_time.between?(Rails.configuration.state_file_start_of_open_intake, Rails.configuration.state_file_end_of_in_progress_intakes) end helper_method :open_for_state_file_intake? diff --git a/app/controllers/session_toggles_controller.rb b/app/controllers/session_toggles_controller.rb index 3ca1288f0c..751330c612 100644 --- a/app/controllers/session_toggles_controller.rb +++ b/app/controllers/session_toggles_controller.rb @@ -23,7 +23,8 @@ def index service_url: url_for(host: MultiTenantService.new(:statefile).host, controller: :session_toggles), times: [ SessionToggleTime.new(name: 'Start of open intake', property: :state_file_start_of_open_intake), - SessionToggleTime.new(name: 'End of intake', property: :state_file_end_of_intake), + SessionToggleTime.new(name: 'End of New intake', property: :state_file_end_of_new_intakes), + SessionToggleTime.new(name: 'End of In Progress Intakes', property: :state_file_end_of_in_progress_intakes), ] }, { diff --git a/app/controllers/state_file/questions/landing_page_controller.rb b/app/controllers/state_file/questions/landing_page_controller.rb index 1d555038ab..e6e8508a84 100644 --- a/app/controllers/state_file/questions/landing_page_controller.rb +++ b/app/controllers/state_file/questions/landing_page_controller.rb @@ -3,9 +3,11 @@ module Questions class LandingPageController < QuestionsController skip_before_action :redirect_if_no_intake skip_before_action :set_current_step + skip_before_action :redirect_if_in_progress_intakes_ended def edit @state_name = StateFileBaseIntake::STATE_CODE_AND_NAMES[params[:us_state]] + @closed = app_time.after?(Rails.configuration.state_file_end_of_in_progress_intakes) if current_intake.present? if current_intake.primary_first_name.present? @user_name = current_intake.primary_first_name diff --git a/app/controllers/state_file/questions/questions_controller.rb b/app/controllers/state_file/questions/questions_controller.rb index 5cce0ed62d..a35487a48a 100644 --- a/app/controllers/state_file/questions/questions_controller.rb +++ b/app/controllers/state_file/questions/questions_controller.rb @@ -3,6 +3,7 @@ module Questions class QuestionsController < ::Questions::QuestionsController include StateFile::StateFileControllerConcern before_action :redirect_if_no_intake + before_action :redirect_if_in_progress_intakes_ended helper_method :card_postscript # default layout for all state file questions @@ -51,6 +52,16 @@ def redirect_if_no_intake end end + def redirect_if_in_progress_intakes_ended + if app_time.after?(Rails.configuration.state_file_end_of_in_progress_intakes) + if current_intake.efile_submissions.empty? + redirect_to root_path + else + redirect_to StateFile::Questions::ReturnStatusController.to_path_helper(action: :edit, us_state: state_code) + end + end + end + def next_step form_navigation.next end diff --git a/app/controllers/state_file/questions/return_status_controller.rb b/app/controllers/state_file/questions/return_status_controller.rb index 9b593660fc..57937a42d1 100644 --- a/app/controllers/state_file/questions/return_status_controller.rb +++ b/app/controllers/state_file/questions/return_status_controller.rb @@ -1,8 +1,10 @@ module StateFile module Questions class ReturnStatusController < AuthenticatedQuestionsController + include StateFile::SurveyLinksConcern before_action :redirect_if_from_efile before_action :redirect_if_no_submission + skip_before_action :redirect_if_in_progress_intakes_ended def edit @error = submission_error @@ -12,6 +14,7 @@ def edit @download_form_name = download_form_name @mail_voucher_address = mail_voucher_address @voucher_path = voucher_path + @survey_link = survey_link(current_intake) end def prev_path diff --git a/app/controllers/state_file/questions/submission_pdfs_controller.rb b/app/controllers/state_file/questions/submission_pdfs_controller.rb index 531153e1be..2fb501da0d 100644 --- a/app/controllers/state_file/questions/submission_pdfs_controller.rb +++ b/app/controllers/state_file/questions/submission_pdfs_controller.rb @@ -1,6 +1,8 @@ module StateFile module Questions class SubmissionPdfsController < QuestionsController + skip_before_action :redirect_if_in_progress_intakes_ended + def show @submission = current_intake.efile_submissions.find_by(id: params[:id]) error_redirect and return unless @submission.present? diff --git a/app/controllers/state_file/state_file_pages_controller.rb b/app/controllers/state_file/state_file_pages_controller.rb index ddfb248d09..43fc67a1d3 100644 --- a/app/controllers/state_file/state_file_pages_controller.rb +++ b/app/controllers/state_file/state_file_pages_controller.rb @@ -32,7 +32,9 @@ def clear_session redirect_to action: :about_page end - def login_options; end + def login_options + @sign_in_closed = app_time.after?(Rails.configuration.state_file_end_of_in_progress_intakes) + end private diff --git a/app/models/state_file_az_intake.rb b/app/models/state_file_az_intake.rb index 15c71c42f4..fcf51da368 100644 --- a/app/models/state_file_az_intake.rb +++ b/app/models/state_file_az_intake.rb @@ -31,7 +31,6 @@ # hashed_ssn :string # household_excise_credit_claimed :integer default("unfilled"), not null # household_excise_credit_claimed_amt :integer -# last_completed_step :string # last_sign_in_at :datetime # last_sign_in_ip :inet # locale :string default("en") diff --git a/app/models/state_file_ny_intake.rb b/app/models/state_file_ny_intake.rb index 34d0607489..64e2696379 100644 --- a/app/models/state_file_ny_intake.rb +++ b/app/models/state_file_ny_intake.rb @@ -35,7 +35,6 @@ # household_rent_amount :integer # household_rent_own :integer default("unfilled"), not null # household_ssi :integer -# last_completed_step :string # last_sign_in_at :datetime # last_sign_in_ip :inet # locale :string default("en") diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 098a44bc0a..19f3e236c0 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -110,7 +110,9 @@ <% if hide_intercom? %>
<% elsif state_file? %> - <%= render("shared/state_file_intercom")%> + <% unless app_time.after?(Rails.configuration.state_file_end_of_in_progress_intakes) %> + <%= render("shared/state_file_intercom")%> + <% end %> <% else %> <%= render("shared/intercom", isHub: hub?) unless (hub? || Routes::CtcDomain.new.matches?(request)) %> <% end %> diff --git a/app/views/state_file/intake_logins/enter_verification_code.html.erb b/app/views/state_file/intake_logins/enter_verification_code.html.erb index 0b9497ebbb..6ec64c52e3 100644 --- a/app/views/state_file/intake_logins/enter_verification_code.html.erb +++ b/app/views/state_file/intake_logins/enter_verification_code.html.erb @@ -5,7 +5,13 @@

<%= content_for :page_title %>

-

<%= t(".code_sent_to_html", contact_info: @verification_code_form.formatted_contact_info) %>

+

+ <% if app_time.after?(Rails.configuration.state_file_end_of_in_progress_intakes) %> + <%= t(".code_sent_to_closed_html", contact_info: @verification_code_form.formatted_contact_info) %> + <% else %> + <%= t(".code_sent_to_html", contact_info: @verification_code_form.formatted_contact_info) %> + <% end %> +

<%= f.hidden_field(:contact_info) %>
<%= f.cfa_input_field(:verification_code, t(".enter_6_digit_code"), classes: ["form-width--long"]) %> diff --git a/app/views/state_file/questions/landing_page/edit.html.erb b/app/views/state_file/questions/landing_page/edit.html.erb index 7430d9df7c..1a18598939 100644 --- a/app/views/state_file/questions/landing_page/edit.html.erb +++ b/app/views/state_file/questions/landing_page/edit.html.erb @@ -1,5 +1,5 @@ <% state_image_path = params[:us_state] == "ny" ? "partner-logos/nygov-logo.svg" : "partner-logos/azgov-logo.svg" %> -<% title = t(".#{params[:us_state]}.title") %> +<% title = @closed ? t(".title_closed", state_name: @state_name) : t(".#{params[:us_state]}.title") %> <% content_for :page_title, title %> @@ -7,43 +7,63 @@

<%= title %>

- <% unless @user_name.present? %> + <% if @closed %>

- <%= t(".#{params[:us_state]}.built_with_html") %> + <%= t(".#{params[:us_state]}.closed_html") %>

- <% end %> - -
-
- <%= image_tag state_image_path, alt: "#{state_name} state logo", class: "" %> -
-
- <%=t(".#{params[:us_state]}.supported_by") %> +

+ <%= t(".already_filed_html") %> +

+
+
+ <%= image_tag state_image_path, alt: "#{state_name} state logo", class: "" %> +
+
+ <%=t(".#{params[:us_state]}.supported_by") %> +
-
- - <% if @user_name.present? %> -

<%= t(".welcome_back", user_name: @user_name) %>

-

<%= t(".continue", state_name: @state_name) %>

- <%= link_to StateFile::StateFilePagesController.to_path_helper(action: :login_options, us_state: current_intake.state_code), class: "button button--primary button--wide", id: "firstCta" do %> - <%= t("general.sign_in") %> + <%= link_to StateFile::StateFilePagesController.to_path_helper(action: :login_options, us_state: params[:us_state]), class: "button button--primary button--wide", id: "firstCta" do %> + <%= t(".download_your_record") %> <% end %> - <%= form_with model: @form, url: { action: :update }, local: true, method: :put, builder: VitaMinFormBuilder, id: "start-again-form" do |f| %> + <% else %> + <% unless @user_name.present? %>

- <%= t(".not_you", user_name: @user_name) %> - <%=f.submit t(".start_new", state_name: @state_name), class: "button--link" %> + <%= t(".#{params[:us_state]}.built_with_html") %>

<% end %> - <% else %> -
- <%= t(".help_text_html") %> + +
+
+ <%= image_tag state_image_path, alt: "#{state_name} state logo", class: "" %> +
+
+ <%=t(".#{params[:us_state]}.supported_by") %> +
- <%= form_with model: @form, url: { action: :update }, local: true, method: :put, builder: VitaMinFormBuilder do |f| %> - <%= f.submit t("general.get_started"), class: "button button--primary button--wide", id: "firstCta" %> + + <% if @user_name.present? %> +

<%= t(".welcome_back", user_name: @user_name) %>

+

<%= t(".continue", state_name: @state_name) %>

+ <%= link_to StateFile::StateFilePagesController.to_path_helper(action: :login_options, us_state: current_intake.state_code), class: "button button--primary button--wide", id: "firstCta" do %> + <%= t("general.sign_in") %> + <% end %> + <%= form_with model: @form, url: { action: :update }, local: true, method: :put, builder: VitaMinFormBuilder, id: "start-again-form" do |f| %> +

+ <%= t(".not_you", user_name: @user_name) %> + <%=f.submit t(".start_new", state_name: @state_name), class: "button--link" %> +

+ <% end %> + <% else %> +
+ <%= t(".help_text_html") %> +
+ <%= form_with model: @form, url: { action: :update }, local: true, method: :put, builder: VitaMinFormBuilder do |f| %> + <%= f.submit t("general.get_started"), class: "button button--primary button--wide", id: "firstCta" %> + <% end %> +

+ <%= t(".already_started_html", sign_in_url: StateFile::StateFilePagesController.to_path_helper(action: :login_options, us_state: params[:us_state])) %> +

<% end %> -

- <%= t(".already_started_html", sign_in_url: StateFile::StateFilePagesController.to_path_helper(action: :login_options, us_state: params[:us_state])) %> -

<% end %>
<%= image_tag 'questions/welcome.svg', class: 'fyst-home-image' %> diff --git a/app/views/state_file/questions/return_status/_accepted.html.erb b/app/views/state_file/questions/return_status/_accepted.html.erb index 3ade65eb7b..f722462287 100644 --- a/app/views/state_file/questions/return_status/_accepted.html.erb +++ b/app/views/state_file/questions/return_status/_accepted.html.erb @@ -8,51 +8,62 @@ <%= t("state_file.questions.return_status.accepted.title", state_name: States.name_for_key(params[:us_state].upcase)) %> -<% refund_or_owed_amount = current_intake.calculated_refund_or_owed_amount %> -<% if refund_or_owed_amount.positive? %> -

<%= t('.check_your_refund_html', refund_url: @refund_url) %>

-<% elsif refund_or_owed_amount.negative? %> +<% if app_time.before?(Rails.configuration.state_file_end_of_in_progress_intakes) %> + <% refund_or_owed_amount = current_intake.calculated_refund_or_owed_amount %> + <% if refund_or_owed_amount.positive? %> +

<%= t('.check_your_refund_html', refund_url: @refund_url) %>

+ <% elsif refund_or_owed_amount.negative? %> +

+ <%= t('.direct_debit_html', tax_payment_url: @tax_payment_url) %> + <%= t('.track_your_payment_html') if params[:us_state] == 'ny' %> +

+ <% end %> +

- <%= t('.direct_debit_html', tax_payment_url: @tax_payment_url) %> - <%= t('.track_your_payment_html') if params[:us_state] == 'ny' %> + <%= t('.register_to_vote') %>

-<% end %> -

- <%= t('.register_to_vote') %> -

+

<%= t('general.spread_the_word_html') %>

-

<%= t('general.spread_the_word_html') %>

+
+

+ <%= t('.pay_by_mail_or_moneyorder') %> +

-
-

- <%= t('.pay_by_mail_or_moneyorder') %> -

+

+ <%= t('.include_payment') %> + (<%= @download_form_name %>) +

-

- <%= t('.include_payment') %> - (<%= @download_form_name %>) -

+
+ <%= link_to t('.download_voucher'), ActionController::Base.helpers.asset_path(@voucher_path) %> +
-
- <%= link_to t('.download_voucher'), ActionController::Base.helpers.asset_path(@voucher_path) %> -
+
+ + <% if params[:us_state] == 'az' %> +

+ <%= t('.check_payable') %> +

-
+
+ <% end %> - <% if params[:us_state] == 'az' %>

- <%= t('.check_payable') %> + <%= t('.mail_voucher_and_payment') %>

-
- <% end %> - + + <%= @mail_voucher_address %> + +
+<% else %> +

+ <%= t("state_file.questions.return_status.accepted.download_title", state_name: States.name_for_key(params[:us_state].upcase)) %> +

- <%= t('.mail_voucher_and_payment') %> + <%= t("state_file.questions.return_status.thank_you_html", state_name: States.name_for_key(params[:us_state].upcase)) %>

- - - <%= @mail_voucher_address %> - -
\ No newline at end of file +

<%= t("state_file.questions.return_status.accepted.feedback") %>

+

<%= t('.register_to_vote') %>

+<% end %> diff --git a/app/views/state_file/questions/return_status/_pending.html.erb b/app/views/state_file/questions/return_status/_pending.html.erb index cf477fd9dc..d6df1be3b0 100644 --- a/app/views/state_file/questions/return_status/_pending.html.erb +++ b/app/views/state_file/questions/return_status/_pending.html.erb @@ -17,5 +17,5 @@

- <%= t('.more_than_two_days') %> + <%= app_time.before?(Rails.configuration.state_file_end_of_in_progress_intakes) ? t('.more_than_two_days') : t('.more_than_two_days_closed_html') %>

\ No newline at end of file diff --git a/app/views/state_file/questions/return_status/_rejected.html.erb b/app/views/state_file/questions/return_status/_rejected.html.erb index 5c2796da50..c51b5a9d0c 100644 --- a/app/views/state_file/questions/return_status/_rejected.html.erb +++ b/app/views/state_file/questions/return_status/_rejected.html.erb @@ -39,20 +39,26 @@ <% end %> <% if @error&.auto_wait %> -
-

<%= t('.next_steps.can_edit.title') %>

- <%= @error.resolution(I18n.locale).present? ? @error.resolution(I18n.locale) : t('.next_steps.can_edit.body') %> -
+ <% if app_time.before?(Rails.configuration.state_file_end_of_in_progress_intakes) %> +
+

<%= t('.next_steps.can_edit.title') %>

+ <%= @error.resolution(I18n.locale).present? ? @error.resolution(I18n.locale) : t('.next_steps.can_edit.body') %> +
+ <% end %> -
-

<%= t('.have_questions') %>

- <%= t('.contact_us') %> -
+ <% if app_time.before?(Rails.configuration.state_file_end_of_in_progress_intakes) %> +
+

<%= t('.have_questions') %>

+ <%= t('.contact_us') %> +
+ <% end %> - <% edit_return_controller = @error.correction_path.present? ? EfileError.path_to_controller(@error.correction_path) : EfileError.default_controller %> - <%= link_to t('.edit_return'), edit_return_controller.to_path_helper( - action: edit_return_controller.navigation_actions.first, - return_to_review: :y, - us_state: current_intake.state_code - ), class: "button button--primary spacing-above-60" %> + <% if app_time.before?(Rails.configuration.state_file_end_of_in_progress_intakes) %> + <% edit_return_controller = @error.correction_path.present? ? EfileError.path_to_controller(@error.correction_path) : EfileError.default_controller %> + <%= link_to t('.edit_return'), edit_return_controller.to_path_helper( + action: edit_return_controller.navigation_actions.first, + return_to_review: :y, + us_state: current_intake.state_code + ), class: "button button--primary button--wide spacing-above-60" %> + <% end %> <% end %> diff --git a/app/views/state_file/questions/return_status/edit.html.erb b/app/views/state_file/questions/return_status/edit.html.erb index 0a0c40498d..9611c9d029 100644 --- a/app/views/state_file/questions/return_status/edit.html.erb +++ b/app/views/state_file/questions/return_status/edit.html.erb @@ -3,7 +3,7 @@ <%= render @return_status %> <% unless @error&.auto_wait %> - <%= link_to t('.download_state_return_pdf'), StateFile::Questions::SubmissionPdfsController.to_path_helper(us_state: params[:us_state], action: :show, id: EfileSubmission.where(data_source: current_intake).last), class: "button button--primary spacing-above-60" %> + <%= link_to t('.download_state_return_pdf'), StateFile::Questions::SubmissionPdfsController.to_path_helper(us_state: params[:us_state], action: :show, id: EfileSubmission.where(data_source: current_intake).last), class: "button button--primary button--wide spacing-above-60" %> <% end %> <% if show_xml? %> diff --git a/app/views/state_file/questions/submission_confirmation/edit.html.erb b/app/views/state_file/questions/submission_confirmation/edit.html.erb index e9789ead0e..ab6cfbc674 100644 --- a/app/views/state_file/questions/submission_confirmation/edit.html.erb +++ b/app/views/state_file/questions/submission_confirmation/edit.html.erb @@ -32,7 +32,7 @@

<%= t('general.spread_the_word_html') %>

- <%= link_to t(".download_state_return_pdf"), StateFile::Questions::SubmissionPdfsController.to_path_helper(us_state: params[:us_state], action: :show, id: EfileSubmission.where(data_source: current_intake).first), class: "button button--primary" %> + <%= link_to t(".download_state_return_pdf"), StateFile::Questions::SubmissionPdfsController.to_path_helper(us_state: params[:us_state], action: :show, id: EfileSubmission.where(data_source: current_intake).first), class: "button button--primary button--wide" %> <% if show_xml? %>

diff --git a/app/views/state_file/state_file_pages/about_page.html.erb b/app/views/state_file/state_file_pages/about_page.html.erb index 942a387b3a..551185d25f 100644 --- a/app/views/state_file/state_file_pages/about_page.html.erb +++ b/app/views/state_file/state_file_pages/about_page.html.erb @@ -4,13 +4,26 @@

<%= title %>

-
- <%= t(".subheader_html", login_path: login_options_path(us_state: 'us')) %> -

+ <% if app_time.before?(Rails.configuration.state_file_end_of_in_progress_intakes) %> +
+

<%= t(".subheader_1_html", login_path: login_options_path(us_state: 'us')) %>

+ <% if app_time.before?(Rails.configuration.state_file_end_of_new_intakes) %> +

<%= t(".subheader_2_html", login_path: login_options_path(us_state: 'us')) %>

+ <% end %> +

<%= t(".subheader_3_html", login_path: login_options_path(us_state: 'us')) %>

+
-
- <%= t(".section1_html", faq_link: state_faq_path(us_state: 'us')) %> -
+
+ <%= t(".section1_html", faq_link: state_faq_path(us_state: 'us')) %> +
+ <% else %> +
+ <%= t(".closed_subheader_html") %> + <%= link_to StateFile::StateFilePagesController.to_path_helper(action: :login_options, us_state: "us"), class: "button button--primary button--wide", id: "firstCta" do %> + <%= t("general.sign_in") %> + <% end %> +
+ <% end %>
<%= image_tag 'questions/welcome.svg', class: 'fyst-home-image' %>
diff --git a/app/views/state_file/state_file_pages/login_options.html.erb b/app/views/state_file/state_file_pages/login_options.html.erb index 3939f9ae87..35c30f746d 100644 --- a/app/views/state_file/state_file_pages/login_options.html.erb +++ b/app/views/state_file/state_file_pages/login_options.html.erb @@ -1,7 +1,9 @@ -<% content_for :page_title, t(".title") %> +<% content_for :page_title, @sign_in_closed ? t(".title_sign_in_closed") : t(".title") %>

<%= content_for(:page_title) %>

-

<%= t(".help_text_html", link: root_path) %>

+<% unless @sign_in_closed %> +

<%= t(".help_text_html", link: root_path) %>

+<% end %> <% if Flipper.enabled?(:sms_notifications) %>

diff --git a/config/application.rb b/config/application.rb index ee6a80f358..e5f37d5036 100644 --- a/config/application.rb +++ b/config/application.rb @@ -107,7 +107,8 @@ class Application < Rails::Application # StateFile config.state_file_start_of_open_intake = Time.find_zone('America/New_York').parse('2024-02-08 09:00:00') - config.state_file_end_of_intake = Time.find_zone('America/New_York').parse('2024-04-15 23:59:59') + config.state_file_end_of_new_intakes = Time.find_zone('America/New_York').parse('2024-04-15 23:59:59') + config.state_file_end_of_in_progress_intakes = Time.find_zone('America/New_York').parse('2024-04-25 23:59:59') config.allow_magic_verification_code = (Rails.env.demo? || Rails.env.development? || Rails.env.heroku?) config.allow_magic_ssn = (Rails.env.demo? || Rails.env.development? || Rails.env.heroku? || Rails.env.staging?) diff --git a/config/environments/test.rb b/config/environments/test.rb index 508e2d037f..e908d47f02 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -106,6 +106,8 @@ # StateFile config.state_file_start_of_open_intake = Time.find_zone('America/New_York').parse('2024-01-01 7:59:59') + config.state_file_end_of_new_intakes = Time.find_zone('America/New_York').parse('2038-04-15 23:59:59') + config.state_file_end_of_in_progress_intakes = Time.find_zone('America/New_York').parse('2038-04-25 23:59:59') config.active_record.encryption.primary_key = 'test' config.active_record.encryption.deterministic_key = 'test' diff --git a/config/locales/en.yml b/config/locales/en.yml index 45ccd9787e..2b3137c286 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2030,6 +2030,7 @@ en: ssn_label: Enter your Social Security number or ITIN. For example, 123-45-6789. title: Code verified! Authentication needed to continue. enter_verification_code: + code_sent_to_closed_html: We’ve sent your code to %{contact_info}. If you didn’t receive a code, and need help resubscribing, email us at help@fileyourstatetaxes.org. code_sent_to_html: We’ve sent your code to %{contact_info}. If you didn’t receive a code, and need help resubscribing, chat with us. enter_6_digit_code: Enter the 6-digit code title: Enter the code to continue @@ -2361,12 +2362,17 @@ en: title: Now, let’s complete your state tax return landing_page: edit: + already_filed_html: Already filed your state taxes with us? You can download a copy of your state return until December 31, 2024. already_started_html: Already started filing your state return? Sign in. az: built_with_html: "FileYourStateTaxes is built in partnership with the state of Arizona to integrate with the IRS Direct File tool and takes about 10 to 15 minutes to complete once your federal return is accepted. Get started by setting up your account." + closed_html: | + FileYourStateTaxes is built in partnership with the state of Arizona to integrate with the IRS Direct File tool.

+ We're closed for the tax season. Unfortunately you can no longer file your state return with us this year. supported_by: Supported by the state of Arizona title: File your Arizona state taxes for free continue: To continue filing your %{state_name} State return, please sign in below + download_your_record: Download Your Record help_text_html: | What you’ll need:
@@ -2380,9 +2386,13 @@ en: not_you: Not %{user_name}? ny: built_with_html: "FileYourStateTaxes is built in partnership with New York State to integrate with the IRS Direct File tool and takes about 10 to 15 minutes to complete once your federal return is accepted. Get started by setting up your account." + closed_html: | + FileYourStateTaxes is built in partnership with New York State to integrate with the IRS Direct File tool.

+ We're closed for the tax season. Unfortunately you can no longer file your state return with us this year. supported_by: Supported by New York State title: File your New York State taxes for free start_new: Click here to start a new %{state_name} State return. + title_closed: Our free %{state_name} tax filing service is closed for the season welcome_back: Welcome back %{user_name}! name_dob: edit: @@ -2533,7 +2543,9 @@ en: check_payable: Make your check or money order payable to Arizona Department of Revenue. Write your full SSN, “2023 Tax” and 140 on your payment. check_your_refund_html: Check on the status of your refund. direct_debit_html: If you have a remaining tax balance, remember to pay your taxes online at %{tax_payment_url} or by mail before the April 15 filing deadline. + download_title: Download a copy of your 2023 %{state_name} state tax return until December 31, 2024 download_voucher: Download payment voucher form + feedback: We value your feedback—let us know what you think of this tool. include_payment: You'll need to include the payment voucher form. mail_voucher_and_payment: 'Mail the voucher form and payment to:' pay_by_mail_or_moneyorder: 'If you are paying by mail via check or money order:' @@ -2546,6 +2558,7 @@ en: show_xml: Show XML pending: more_than_two_days: If it's been more than two days since you submitted your state taxes, contact our team of support specialists by clicking chat with us. + more_than_two_days_closed_html: If it's been more than two days since you submitted your state taxes, contact our team of support specialists by emailing us at help@fileyourstatetaxes.org receive_email: You'll receive an email update when your state tax return is accepted. receive_email_sms: You'll receive an email or text update when your state tax return is accepted. title: You have submitted your 2023 %{state_name} tax return! It is currently waiting to be accepted for processing. @@ -2563,6 +2576,9 @@ en: reject_code: 'Reject Code:' reject_desc: 'Reject Description:' title: Unfortunately, your 2023 %{state_name} state tax return was rejected + thank_you_html: | + Thank you for filing your return with FileYourStateTaxes, built in partnership with the state of %{state_name} to integrate with the IRS Direct File tool.

+ Filed your state taxes with us? You can download a copy of your state return until December 31, 2024. review: w2: W-2 state and local tax information shared: @@ -2725,6 +2741,10 @@ en: title_html: Just a moment, we’re transferring your federal tax return to complete parts of your state return.

This usually takes a few minutes. Don’t close this page. state_file_pages: about_page: + closed_subheader_html: | + FileYourStateTaxes integrates with IRS Direct File to help you complete your state tax return for free.

+ We're closed for the tax season. Unfortunately you can no longer file your state return with us this year.

+ Already filed your state taxes with us? You can download a copy of your state return until December 31, 2024

header: A free state filing tool for Arizona and New York taxpayers using IRS Direct File section1_html: | How does it work? @@ -2737,10 +2757,9 @@ en:

  • E-file your return for free!
  • To learn more, check out the FAQs. - subheader_html: | - FileYourStateTaxes integrates with IRS Direct File to help you complete your state tax return for free.

    - IRS Direct File is now broadly available to all eligible taxpayers through April 15, 2024. For more information on timeline and eligibility, or to start filing your federal return, go to directfile.irs.gov

    - Already filed your federal return with IRS Direct File and need to complete your state return? Sign in here.
    + subheader_1_html: "FileYourStateTaxes integrates with IRS Direct File to help you complete your state tax return for free." + subheader_2_html: IRS Direct File is now broadly available to all eligible taxpayers through April 15, 2024. For more information on timeline and eligibility, or to start filing your federal return, go to directfile.irs.gov + subheader_3_html: Already filed your federal return with IRS Direct File and need to complete your state return? Sign in here. card_postscript: responses_saved_html: Your responses are saved. If you need a break, you can come back and log in to your account at fileyourstatetaxes.org. coming_soon: @@ -2757,6 +2776,7 @@ en: help_text_html: New to FileYourStateTaxes? Get Started phone_number_signin: Sign in with phone number title: Sign in to FileYourStateTaxes + title_sign_in_closed: Sign in to download a copy of your state tax return. privacy_policy: access_request_1_html: FileYourStateTaxes.org respects your control over your information and, upon request, we will confirm whether we hold or are processing information that we have collected from you. You also have the right to amend or update inaccurate or incomplete personal information, request deletion of your personal information, or request that we no longer use it. Under certain circumstances we will not be able to fulfill your request, such as if it interferes with our regulatory obligations, affects legal matters, we cannot verify your identity, or it involves disproportionate cost or effort, but in any event we will respond to your request within a reasonable timeframe and provide you an explanation. In order to make such a request of us, please email us at help@fileyourstatetaxes.org. access_request_2: Please note that for personal information about you that we have obtained or received for processing on behalf of a separate, unaffiliated entity—which determined the means and purposes of processing—all such requests should be made to that entity directly. We will honor and support any instructions they provide us with respect to your personal information. diff --git a/config/locales/es.yml b/config/locales/es.yml index 67fe7adc36..cda1e50e2e 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -1989,6 +1989,7 @@ es: ssn_label: Ingresa tu número de Seguro Social o ITIN. Por ejemplo, 123-45-6789. title: Código verificado. Se necesita autenticación para continuar. enter_verification_code: + code_sent_to_closed_html: Hemos enviado su código a %{contact_info}. Si no recibió un código y necesita ayuda para volver a suscribirse, envíenos un correo electrónico a help@fileyourstatetaxes.org. code_sent_to_html: Te enviamos tu código a %{contact_info}. Si no recibiste un código y necesitas ayuda para volver a suscribirte, chatea con nosotros. enter_6_digit_code: Ingresa el código de 6 dígitos title: Ingresa el código para continuar @@ -2327,12 +2328,17 @@ es: title: Ahora completemos tu declaración de impuestos estatales landing_page: edit: + already_filed_html: "¿Ya presentó tus impuestos estatales con nosotros? Puede descargar una copia de su declaración estatal hasta el 31 de diciembre de 2024." already_started_html: ¿Ya comenzaste a presentar tu declaración estatal? Inicia sesión. az: built_with_html: "FileYourStateTaxes ha sido creado en colaboración con el estado de Arizona para integrarse con la herramienta Direct File del IRS y solo toma de 10 a 15 minutos completarlo una vez que tu declaración federal sea aceptada. Comienza configurando tu cuenta." + closed_html: | + FileYourStateTaxes se creó en asociación con el estado de Arizona para integrarse con la herramienta Direct File del IRS.

    + Estamos cerrados por la temporada de impuestos. Desafortunadamente no puede presentar su declaración estatal con nosotros este año. supported_by: Respaldada por el estado de Arizona title: Presenta tus impuestos estatales de Arizona sin costo continue: Para continuar presentando su declaración estatal de %{state_name}, inicie sesión a continuación + download_your_record: Descargue tu registro help_text_html: | Lo que necesitarás para comenzar
    @@ -2346,9 +2352,13 @@ es: not_you: "¿No es %{user_name}?" ny: built_with_html: "FileYourStateTaxes ha sido creado en colaboración con el estado de Nueva York para integrarse con la herramienta Direct File del IRS y tarda aproximadamente de 10 a 15 minutos completarlo una vez que tu declaración federal sea aceptada. Comienza configurando tu cuenta." + closed_html: | + FileYourStateTaxes se creó en asociación con el estado de Nueva York para integrarse con la herramienta Direct File del IRS.

    + Estamos cerrados por la temporada de impuestos. Lamentablemente no puede presentar su declaración estatal con nosotros este año. supported_by: Respaldada por el estado de Nueva York title: Presenta tus impuestos Estatales de Nueva York sin costo start_new: Haga clic aquí para iniciar una nueva declaración estatal de %{state_name}. + title_closed: Nuestro servicio gratuito de presentación de impuestos %{state_name} está cerrado por temporada welcome_back: "¡Bienvenido de nuevo %{user_name}!" name_dob: edit: @@ -2513,7 +2523,9 @@ es: check_payable: Haz tu cheque o giro postal a nombre del “Arizona Department of Revenue. Escribe tu SSN completo, "2023 Tax" y 140 en tu pago. check_your_refund_html: Verifica el estado de tu reembolso. direct_debit_html: Si no elegiste el débito directo, recuerda pagar tus impuestos en línea en %{tax_payment_url} o por correo antes de la fecha límite del 15 de abril. + download_title: Descargue una copia de tu declaración de impuestos estatales de %{state_name} de 2023 hasta el 31 de diciembre de 2024 download_voucher: Descargar formulario de comprobante de pago + feedback: Valoramos sus comentarios; háganos saber lo que piensa de esta herramienta. include_payment: Debes incluir el formulario de comprobante de pago. mail_voucher_and_payment: 'Envía el formulario de comprobante de pago y el pago a:' pay_by_mail_or_moneyorder: 'Si estás pagando por correo mediante cheque o giro postal:' @@ -2526,6 +2538,7 @@ es: show_xml: Mostrar XML pending: more_than_two_days: Si han pasado más de 2 días desde que presentaste tus impuestos estatales, ponte en contacto con nuestro equipo haciendo clic en "chatea con nosotros". + more_than_two_days_closed_html: Si han pasado más de dos días desde que presentó sus impuestos estatales, comuníquese con nuestro equipo de especialistas de soporte enviándonos un correo electrónico a help@fileyourstatetaxes.org receive_email: Recibirás una actualización por correo electrónico cuando tu declaración de impuestos estatales sea aceptada. receive_email_sms: Recibirás una actualización por correo electrónico o mensaje de texto cuando tu declaración de impuestos estatales sea aceptada. title: Has enviado tu declaración de impuestos estatales de %{state_name} para el año 2023, y está esperando ser aceptada. @@ -2543,6 +2556,9 @@ es: reject_code: 'Código de Rechazo:' reject_desc: 'Descripción del Rechazo:' title: Lamentablemente, tu declaración de impuestos del estado de %{state_name} para el año 2023 fue rechazada + thank_you_html: | + Gracias por presentar su declaración con FileYourStateTaxes, creado en asociación con el estado de %{state_name} para integrarse con la herramienta Direct File del IRS.

    + ¿Presentó sus impuestos estatales con nosotros? Puede descargar una copia de su declaración estatal hasta el 31 de diciembre de 2024. review: w2: Información fiscal estatal y local W-2 shared: @@ -2706,6 +2722,10 @@ es: title_html: Un momento, estamos transfiriendo tu declaración de impuestos federales para completar partes de tu declaración estatales.

    Esto suele tomar unos minutos. No cierres la página. state_file_pages: about_page: + closed_subheader_html: | + FileYourStateTaxes se integra con IRS Direct File para ayudarte a completar tu declaración de impuestos estatales sin costo.

    + Estamos cerrados por la temporada de impuestos. Desafortunadamente, no puede presentar tu declaración estatal con nosotros este año.

    + ¿Ya presentó tus impuestos estatales con nosotros? Puedes descargar una copia de tu declaración estatal hasta el 31 de diciembre de 2024

    header: Una herramienta sin costo para presentar impuestos estatales para los contribuyentes de Arizona y Nueva York utilizando IRS Direct File section1_html: | ¿Cómo funciona? @@ -2718,10 +2738,9 @@ es:
  • ¡Presenta tu declaración electrónicamente sin costo!
  • Para aprender más, consulta las preguntas frecuentes. - subheader_html: | - FileYourStateTaxes se integra con IRS Direct File para ayudarte a completar tu declaración de impuestos estatales sin costo.

    - El IRS Direct File ahora está ampliamente disponible para todos los contribuyentes elegibles hasta el 15 de abril de 2024. Para obtener más información sobre el cronograma y la elegibilidad, o para comenzar a presentar tu declaración federal, ve a directfile.irs.gov.

    - ¿Ya presentaste tu declaración federal con IRS Direct File y necesitas completar tu declaración estatal? Inicia sesión aquí.
    + subheader_1_html: "FileYourStateTaxes se integra con IRS Direct File para ayudarte a completar tu declaración de impuestos estatales sin costo." + subheader_2_html: El IRS Direct File ahora está ampliamente disponible para todos los contribuyentes elegibles hasta el 15 de abril de 2024. Para obtener más información sobre el cronograma y la elegibilidad, o para comenzar a presentar tu declaración federal, ve a directfile.irs.gov. + subheader_3_html: "¿Ya presentaste tu declaración federal con IRS Direct File y necesitas completar tu declaración estatal? Inicia sesión aquí." card_postscript: responses_saved_html: Tus respuestas han sido guardadas. Si necesitas hacer una pausa, puedes regresar e iniciar sesión en tu cuenta en fileyourstatetaxes.org. coming_soon: @@ -2738,6 +2757,7 @@ es: help_text_html: "¿Eres nuevo en FileYourStateTaxes? Comienza aquí" phone_number_signin: Iniciar sesión con el teléfono title: Iniciar sesión en FileYourStateTaxes + title_sign_in_closed: Inicie sesión para descargar una copia de tu declaración de impuestos estatales. privacy_policy: access_request_1_html: FileYourStateTaxes.org respeta tu control sobre tu información y, a pedido, confirmaremos si tenemos o estamos procesando información que hemos recopilado de ti. También tienes derecho a corregir o actualizar información personal inexacta o incompleta, solicitar la eliminación de tu información personal o solicitar que dejemos de usarla. En ciertas circunstancias, no podremos cumplir con tu solicitud, como si interfiere con nuestras obligaciones regulatorias, afecta asuntos legales, no podemos verificar tu identidad o implica un costo o esfuerzo desproporcionados, pero de todos modos responderemos a tu solicitud en un plazo razonable y te proporcionaremos una explicación. Para hacer tal solicitud, envíanos un correo electrónico a help@fileyourstatetaxes.org. access_request_2: Ten en cuenta que para la información personal sobre ti que hemos obtenido o recibido para procesar en nombre de una entidad separada y no afiliada, que determinó los medios y fines del procesamiento, todas esas solicitudes deben hacerse directamente a esa entidad. Honraremos y apoyaremos cualquier instrucción que nos proporcionen con respecto a tu información personal. diff --git a/db/schema.rb b/db/schema.rb index e6d131813a..1faae459f7 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -1650,7 +1650,6 @@ t.string "hashed_ssn" t.integer "household_excise_credit_claimed", default: 0, null: false t.integer "household_excise_credit_claimed_amt" - t.string "last_completed_step" t.datetime "last_sign_in_at" t.inet "last_sign_in_ip" t.string "locale", default: "en" @@ -1780,7 +1779,6 @@ t.integer "household_rent_amount" t.integer "household_rent_own", default: 0, null: false t.integer "household_ssi" - t.string "last_completed_step" t.datetime "last_sign_in_at" t.inet "last_sign_in_ip" t.string "locale", default: "en" diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb index 5da2ff5f6a..420190f0c6 100644 --- a/spec/controllers/application_controller_spec.rb +++ b/spec/controllers/application_controller_spec.rb @@ -1397,7 +1397,7 @@ def index end context "after end of intake" do - let(:fake_time) { Rails.configuration.state_file_end_of_intake + 1.minute } + let(:fake_time) { Rails.configuration.state_file_end_of_new_intakes + 1.minute } it "returns false" do Timecop.freeze(fake_time) do diff --git a/spec/controllers/state_file/questions/esign_declaration_controller_spec.rb b/spec/controllers/state_file/questions/esign_declaration_controller_spec.rb index 1b50b8969e..52d26304ff 100644 --- a/spec/controllers/state_file/questions/esign_declaration_controller_spec.rb +++ b/spec/controllers/state_file/questions/esign_declaration_controller_spec.rb @@ -30,6 +30,31 @@ expect(efile_info.device_id).to eq nil expect(efile_info.intake).to eq intake end + + context "when it is after closing" do + around do |example| + Timecop.freeze(Rails.configuration.state_file_end_of_in_progress_intakes + 1.day) do + example.run + end + end + + context "when there is a submission" do + before do + create :efile_submission, data_source: intake + end + it "redirects them to the return status page" do + get :edit, params: { us_state: :ny } + expect(response).to redirect_to(ny_questions_return_status_path(us_state: "ny")) + end + end + + context "when there no submission" do + it "redirects them to the return about page" do + get :edit, params: { us_state: :ny } + expect(response).to redirect_to(root_path) + end + end + end end describe "#update" do diff --git a/spec/controllers/state_file/questions/landing_page_controller_spec.rb b/spec/controllers/state_file/questions/landing_page_controller_spec.rb index 5857f8b74d..a5afbd1cfe 100644 --- a/spec/controllers/state_file/questions/landing_page_controller_spec.rb +++ b/spec/controllers/state_file/questions/landing_page_controller_spec.rb @@ -35,6 +35,17 @@ expect(StateFileNyIntake.last.current_step).to be_nil end + context "when it is after closing" do + around do |example| + Timecop.freeze(Rails.configuration.state_file_end_of_in_progress_intakes + 1.day) do + example.run + end + end + it "does not redirect them to the about page" do + get :edit, params: { us_state: :ny } + expect(response).not_to have_http_status(:redirect) + end + end end end \ No newline at end of file diff --git a/spec/controllers/state_file/questions/submission_pdfs_controller_spec.rb b/spec/controllers/state_file/questions/submission_pdfs_controller_spec.rb index 68d7f84f96..2d768e70b5 100644 --- a/spec/controllers/state_file/questions/submission_pdfs_controller_spec.rb +++ b/spec/controllers/state_file/questions/submission_pdfs_controller_spec.rb @@ -36,6 +36,18 @@ tempfile.write(response.body) expect(filled_in_values(tempfile.path)).to match(a_hash_including("1a" => "Jerry L")) end + + context "when it is after closing" do + around do |example| + Timecop.freeze(Rails.configuration.state_file_end_of_in_progress_intakes + 1.day) do + example.run + end + end + it "does not redirect them to the about page" do + get :show, params: { us_state: "az", id: efile_submission.id } + expect(response).not_to have_http_status(:redirect) + end + end end end end \ No newline at end of file diff --git a/spec/factories/state_file_az_intakes.rb b/spec/factories/state_file_az_intakes.rb index 8ca5b6513a..572de9183b 100644 --- a/spec/factories/state_file_az_intakes.rb +++ b/spec/factories/state_file_az_intakes.rb @@ -31,7 +31,6 @@ # hashed_ssn :string # household_excise_credit_claimed :integer default("unfilled"), not null # household_excise_credit_claimed_amt :integer -# last_completed_step :string # last_sign_in_at :datetime # last_sign_in_ip :inet # locale :string default("en") diff --git a/spec/factories/state_file_ny_intakes.rb b/spec/factories/state_file_ny_intakes.rb index 1cc0c0d377..533cad5237 100644 --- a/spec/factories/state_file_ny_intakes.rb +++ b/spec/factories/state_file_ny_intakes.rb @@ -35,7 +35,6 @@ # household_rent_amount :integer # household_rent_own :integer default("unfilled"), not null # household_ssi :integer -# last_completed_step :string # last_sign_in_at :datetime # last_sign_in_ip :inet # locale :string default("en") diff --git a/spec/lib/pdf_filler/f13614c_pdf_spec.rb b/spec/lib/pdf_filler/f13614c_pdf_spec.rb index f40bbb5d17..ff858365c8 100644 --- a/spec/lib/pdf_filler/f13614c_pdf_spec.rb +++ b/spec/lib/pdf_filler/f13614c_pdf_spec.rb @@ -555,7 +555,7 @@ ) end - it "includes extra dependent information in the additional comments field" do + xit "includes extra dependent information in the additional comments field" do expect(intake_pdf.hash_for_pdf[additional_comments_key]).to eq(<<~COMMENT.strip) if there is another gnome living in my garden but only i have an income, does that make me head of household? Also here are some additional notes. Other income types: garden gnoming diff --git a/spec/models/state_file_az_intake_spec.rb b/spec/models/state_file_az_intake_spec.rb index 6ff4b1222f..475c6d9387 100644 --- a/spec/models/state_file_az_intake_spec.rb +++ b/spec/models/state_file_az_intake_spec.rb @@ -31,7 +31,6 @@ # hashed_ssn :string # household_excise_credit_claimed :integer default("unfilled"), not null # household_excise_credit_claimed_amt :integer -# last_completed_step :string # last_sign_in_at :datetime # last_sign_in_ip :inet # locale :string default("en") diff --git a/spec/models/state_file_ny_intake_spec.rb b/spec/models/state_file_ny_intake_spec.rb index 5308520b84..c21fd17e85 100644 --- a/spec/models/state_file_ny_intake_spec.rb +++ b/spec/models/state_file_ny_intake_spec.rb @@ -35,7 +35,6 @@ # household_rent_amount :integer # household_rent_own :integer default("unfilled"), not null # household_ssi :integer -# last_completed_step :string # last_sign_in_at :datetime # last_sign_in_ip :inet # locale :string default("en")