mirror of
https://github.com/rickbarrette/redmine_qbo.git
synced 2026-02-13 09:13:58 -05:00
Compare commits
3 Commits
6e11e05a24
...
2026.2.6
| Author | SHA1 | Date | |
|---|---|---|---|
| 9cf72821b0 | |||
| 57adcce431 | |||
| 7fdb15f7e8 |
2
init.rb
2
init.rb
@@ -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.5'
|
version '2026.2.6'
|
||||||
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'
|
||||||
|
|||||||
@@ -14,28 +14,41 @@ module RedmineQbo
|
|||||||
|
|
||||||
include IssuesHelper
|
include IssuesHelper
|
||||||
|
|
||||||
# Check the new issue form for a valid project.
|
# Check the new issue form for a valid project.
|
||||||
# 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,
|
||||||
|
|||||||
Reference in New Issue
Block a user