Compare commits

...

8 Commits

4 changed files with 20 additions and 12 deletions

View File

@@ -3,7 +3,7 @@
<br/>
<br/>
<%= link_to t(:label_create_estimate), "https://qbo.intuit.com/app/estimate?nameId=#{@customer.id}", target: :_blank, method: :get %>
<%= link_to t(:label_create_estimate), "https://qbo.intuit.com/app/estimate?nameId=#{@customer.id}", target: :_blank %>
<br/>
<br/>

View File

@@ -101,3 +101,4 @@ en:
notice_issue_not_found: "Issue not found"
customer_details: "Customer Details"
notice_error_project_nil: "The issue's project is nil, set project to: "
notice_error_tracker_nil: "The issue's tracker is nil, set tracker to: "

View File

@@ -14,7 +14,7 @@ Redmine::Plugin.register :redmine_qbo do
name 'Redmine QBO plugin'
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'
version '2026.2.3
version '2026.2.4'
url 'https://github.com/rickbarrette/redmine_qbo'
author_url 'https://barrettefabrication.com'
settings default: {empty: true}, partial: 'qbo/settings'

View File

@@ -15,16 +15,23 @@ module RedmineQbo
include IssuesHelper
# Check the new issue form for a valid project.
# 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
def controller_issues_new_before_save(context={})
if context[:issue].project.nil?
context[:issue].project = projects_for_select(context[:issue]).first
context[:controller].flash[:error] = I18n.t(:notice_error_project_nil) + context[:issue].project.to_s
end
# 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
def controller_issues_new_before_save(context={})
if context[:issue].project.nil?
context[:issue].project = projects_for_select(context[:issue]).first
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
end
return context
end
if context[:issue].tracker.nil?
context[:issue].tracker = trackers_for_select(context[:issue]).first
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
end
return context
end
# Edit Issue Form
# Here we build the required form components before passing them to a partial view formatting.