moved issue hooks into issue_patch

This commit is contained in:
2026-02-03 22:42:08 -05:00
parent 83fb20044d
commit c36f4c905b
2 changed files with 57 additions and 85 deletions

View File

@@ -1,36 +0,0 @@
#The MIT License (MIT)
#
#Copyright (c) 2016 - 2026 rick barrette
#
#Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
#
#The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
#
#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
module Hooks
class IssuesSaveHookListener < Redmine::Hook::ViewListener
# Called Before Issue Saved
def controller_issues_edit_before_save(context={})
return context[:issue].subject = context[:issue].subject.titleize
end
def controller_issues_new_before_save(context={})
return context[:issue].subject = context[:issue].subject.titleize
end
# Called After Issue Saved
def controller_issues_edit_after_save(context={})
issue = context[:issue]
begin
issue.bill_time if issue.status.is_closed?
rescue
# TODO flash[:error] = "Unable to bill, check QBO Auth"
end
end
end
end

View File

@@ -12,9 +12,9 @@ require_dependency 'issue'
module Patches
# Patches Redmine's Issues dynamically.
# Adds a relationships
# Adds relationships for customers, estimates, invoices, customer_tokens
# Adds before and after save hooks
module IssuePatch
def self.included(base) # :nodoc:
@@ -28,6 +28,8 @@ module Patches
belongs_to :customer_token, primary_key: :id
belongs_to :estimate, primary_key: :id
has_and_belongs_to_many :invoices
before_save :titlize_subject
after_save :bill_time
end
end
@@ -40,13 +42,13 @@ module Patches
# Create billable time entries
def bill_time
# Check to see if we have everything we need to bill the customer
logger.debug "QBO: Billing time for issue ##{id} - #{subject}"
return unless status.is_closed?
return if assigned_to.nil?
return unless Qbo.first
return unless customer
# Get unbilled time entries
Thread.new do
spent_time = time_entries.where(billed: [false, nil])
spent_hours ||= spent_time.sum(:hours) || 0
@@ -100,12 +102,18 @@ module Patches
end
end
end
end
# Create a shareable link for a customer
def share_token
CustomerToken.get_token self
end
# Titleize the subject before save
def titlize_subject
self.subject = self.subject.titleize
end
end
# Add module to Issue