Compare commits

...

3 Commits

2 changed files with 23 additions and 7 deletions

View File

@@ -14,7 +14,7 @@ Redmine::Plugin.register :redmine_qbo do
name 'Redmine QBO plugin' name 'Redmine QBO plugin'
author 'Rick Barrette' author 'Rick Barrette'
description 'A pluging for Redmine to connect with QuickBooks Online to create Time Activity Entries for billable hours logged when an Issue is closed' description 'A pluging for Redmine to connect with QuickBooks Online to create Time Activity Entries for billable hours logged when an Issue is closed'
version '2026.2.4' version '2026.2.5'
url 'https://github.com/rickbarrette/redmine_qbo' url 'https://github.com/rickbarrette/redmine_qbo'
author_url 'https://barrettefabrication.com' author_url 'https://barrettefabrication.com'
settings default: {empty: true}, partial: 'qbo/settings' settings default: {empty: true}, partial: 'qbo/settings'

View File

@@ -18,24 +18,37 @@ module RedmineQbo
# This is added to help prevent 422 unprocessable entity errors when creating an issue # This is added to help prevent 422 unprocessable entity errors when creating an issue
# See https://github.com/redmine/redmine/blob/84483d63828d0cb2efbf5bd786a2f0d22e34c93d/app/controllers/issues_controller.rb#L179 # See https://github.com/redmine/redmine/blob/84483d63828d0cb2efbf5bd786a2f0d22e34c93d/app/controllers/issues_controller.rb#L179
def controller_issues_new_before_save(context={}) def controller_issues_new_before_save(context={})
Rails.logger.debug "RedmineQbo::Hooks::IssuesHookListener.controller_issues_new_before_save: Checking for nil project or tracker"
Rails.logger.debug context[:params].inspect
Rails.logger.debug context[:issue].inspect
Rails.logger.debug context[:issue].project
Rails.logger.debug context[:issue].tracker
error = ""
if context[:issue].project.nil? if context[:issue].project.nil?
context[:issue].project = projects_for_select(context[:issue]).first context[:issue].project ||= projects_for_select(context[:issue]).first
Rails.logger.error I18n.t(:notice_error_project_nil) + context[:issue].project.to_s Rails.logger.error I18n.t(:notice_error_project_nil) + context[:issue].project.to_s
context[:controller].flash[:error] = I18n.t(:notice_error_project_nil) + context[:issue].project.to_s error = I18n.t(:notice_error_project_nil) + context[:issue].project.to_s
end end
if context[:issue].tracker.nil? if context[:issue].tracker.nil?
context[:issue].tracker = trackers_for_select(context[:issue]).first context[:issue].tracker ||= trackers_for_select(context[:issue]).first
Rails.logger.error I18n.t(:notice_error_tracker_nil) + context[:issue].tracker.to_s Rails.logger.error I18n.t(:notice_error_tracker_nil) + context[:issue].tracker.to_s
context[:controller].flash[:error] = I18n.t(:notice_error_tracker_nil) + context[:issue].tracker.to_s error << "\n"
error << I18n.t(:notice_error_tracker_nil) + context[:issue].tracker.to_s
end end
context[:controller].flash[:error] = error unless error.blank?
Rails.logger.debug error unless error.blank?
return context return context
end end
# Edit Issue Form # Edit Issue Form
# Here we build the required form components before passing them to a partial view formatting. # Here we build the required form components before passing them to a partial view formatting.
def view_issues_form_details_bottom(context={}) 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] f = context[:form]
issue = context[:issue] issue = context[:issue]
@@ -49,11 +62,14 @@ module RedmineQbo
value: '#issue_customer' 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?
# This hidden field is used for the customer ID for the issue # 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 # the onchange event will reload the issue form via ajax to update the available estimates
customer_id = f.hidden_field :customer_id, customer_id = f.hidden_field :customer_id,
id: "issue_customer_id", id: "issue_customer_id",
onchange: "updateIssueFrom('#{escape_javascript update_issue_form_path(issue.project, issue)}', this)".html_safe onchange: js_path.html_safe
# Generate the drop down list of quickbooks estimates owned by the selected customer # Generate the drop down list of quickbooks estimates owned by the selected customer
select_estimate = f.select :estimate_id, select_estimate = f.select :estimate_id,