override issues form to add passing @project to issues hook

This commit is contained in:
2026-02-11 19:31:01 -05:00
parent 11b9876d4f
commit 167385bb99
2 changed files with 104 additions and 3 deletions

View File

@@ -18,9 +18,11 @@ module RedmineQbo
# Here we build the required form components before passing them to a partial view formatting.
def view_issues_form_details_bottom(context={})
Rails.logger.debug "RedmineQbo::Hooks::IssuesHookListener.view_issues_form_details_bottom: Building form components for quickbooks customer, estimate, and invoice data"
Rails.logger.debug context[:issue].inspect
f = context[:form]
issue = context[:issue]
project = context[:project]
Rails.logger.debug issue.inspect
Rails.logger.debug project.inspect
# Customer Name Text Box with database backed autocomplete
# onchange event will update the hidden customer_id field
@@ -32,8 +34,18 @@ module RedmineQbo
value: '#issue_customer'
}
js_path = "updateIssueFrom('/issues/new.js', this)"
js_path = "updateIssueFrom('#{escape_javascript update_issue_form_path(issue.project, issue)}', this)" unless issue.new_record?
# We need to handle 3 cases for the onchange event of the customer name field:
# 1. New issue Withough project: /issues/new.js
# 2. New issue With project: /projects/rmt/issues/new.js
# 3. Existing issue: /issues/<ID>/edit.js
# The built in helper update_issue_form_path requires a project object to determine the correct path for new vs existing issues,
# but it doesn't work for issue.project when creating new issues not in a project i.e. http://redmine.domain.com/issues/new .
# So we need to figure out how to get a the @project from the controller calling the hook.
#
# If this is not handled correctly, it leads to a 422 error when creating a new issue and selecting a customer.
js_path = "updateIssueFrom('#{escape_javascript update_issue_form_path(project, issue)}', this)"
Rails.logger.debug js_path
# This hidden field is used for the customer ID for the issue
# the onchange event will reload the issue form via ajax to update the available estimates
customer_id = f.hidden_field :customer_id,