mirror of
https://github.com/rickbarrette/redmine_qbo.git
synced 2026-04-03 16:51:58 -04:00
Compare commits
11 Commits
b0e6236cee
...
2026.3.14
| Author | SHA1 | Date | |
|---|---|---|---|
| f73973a4e1 | |||
| 7cd388dbd4 | |||
| ee2ab04206 | |||
| 8a8c6f5fa0 | |||
| cc36bc16b4 | |||
| 874ec7c2dc | |||
| f3fe38cd57 | |||
| 977cbfe0e1 | |||
| 82712f361c | |||
| 4ae7d75478 | |||
| 8fb9d74277 |
5
Gemfile
5
Gemfile
@@ -4,10 +4,5 @@ gem 'quickbooks-ruby'
|
|||||||
gem 'oauth2'
|
gem 'oauth2'
|
||||||
gem 'roxml'
|
gem 'roxml'
|
||||||
gem 'will_paginate'
|
gem 'will_paginate'
|
||||||
gem 'jquery-ui-rails'
|
|
||||||
gem 'rexml'
|
gem 'rexml'
|
||||||
gem 'combine_pdf'
|
gem 'combine_pdf'
|
||||||
|
|
||||||
group :assets do
|
|
||||||
gem 'coffee-rails'
|
|
||||||
end
|
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 672 KiB After Width: | Height: | Size: 269 KiB |
@@ -48,7 +48,7 @@ class WebhookProcessJob < ActiveJob::Base
|
|||||||
Redmine::Hook.call_hook( :qbo_additional_entities ).each do |context|
|
Redmine::Hook.call_hook( :qbo_additional_entities ).each do |context|
|
||||||
next unless context
|
next unless context
|
||||||
Array(context).each do |entity|
|
Array(context).each do |entity|
|
||||||
jobs.push(entity)
|
entities.push(entity)
|
||||||
log "Added additional QBO entity #{entity}"
|
log "Added additional QBO entity #{entity}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<%= form_tag(customers_path, method: "get", id: "customer-search-form") do %>
|
<%= form_tag(customers_path, method: "get", id: "customer-search-form") do %>
|
||||||
<%= text_field_tag :search, params[:search], placeholder: t(:label_search_customers), autocomplete: "off" %>
|
<%= text_field_tag :search, params[:search], class: "customer-name", placeholder: t(:label_search_customers), autocomplete: "off", data: { autocomplete_url: "/customers/autocomplete" } %>
|
||||||
<%= submit_tag t(:label_search) %>
|
<%= submit_tag t(:label_search) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<%= button_to t(:label_new_customer), new_customer_path, method: :get%>
|
<%= button_to t(:label_new_customer), new_customer_path, method: :get%>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<% estimates.sort.reverse.each do |estimate| %>
|
<% estimates.sort.reverse.each do |estimate| %>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<%= check_box_tag "estimate_ids[]", estimate.id, false, onchange: "updateLink()", data: { url: estimates_path(estimate), text: "Estimate ##{estimate.to_s}" }, class: "estimate-checkbox appointment" %>
|
<%= check_box_tag "estimate_ids[]", estimate.id, false, onchange: "updateLink()", data: { url: estimate_path(estimate), text: "Estimate ##{estimate.to_s}" }, class: "estimate-checkbox appointment" %>
|
||||||
<b><%= link_to "##{estimate.doc_number}", estimate_path(estimate), target: :_blank %></b> <%= estimate.txn_date %>
|
<b><%= link_to "##{estimate.doc_number}", estimate_path(estimate), target: :_blank %></b> <%= estimate.txn_date %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -55,11 +55,11 @@
|
|||||||
|
|
||||||
select: function(event, ui) {
|
select: function(event, ui) {
|
||||||
$input.val(ui.item.value); // visible text
|
$input.val(ui.item.value); // visible text
|
||||||
$("#issue_customer_id").val(ui.item.id); // hidden ID
|
$("#customer_id").val(ui.item.id); // hidden ID
|
||||||
|
|
||||||
// trigger Redmine form update safely
|
// trigger Redmine form update safely
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
$("#issue_customer_id").trigger("change");
|
$("#customer_id").trigger("change");
|
||||||
}, 0);
|
}, 0);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@@ -68,7 +68,7 @@
|
|||||||
change: function(event, ui) {
|
change: function(event, ui) {
|
||||||
// clear hidden field if no valid selection
|
// clear hidden field if no valid selection
|
||||||
if (!ui.item && !$input.val()) {
|
if (!ui.item && !$input.val()) {
|
||||||
$("#issue_customer_id").val("");
|
$("#customer_id").val("");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -22,9 +22,9 @@ get 'employees/sync', to: 'employees#sync'
|
|||||||
post 'qbo/webhook', to: 'qbo#webhook'
|
post 'qbo/webhook', to: 'qbo#webhook'
|
||||||
|
|
||||||
# Estimate & Invoice PDF
|
# Estimate & Invoice PDF
|
||||||
get 'estimates/:id', to: 'estimate#show', as: :estimate
|
get 'estimates/:id', to: 'estimates#show', as: :estimate
|
||||||
get 'estimates/doc/', to: 'estimate#doc', as: :estimate_doc
|
get 'estimates/doc/', to: 'estimates#doc', as: :estimate_doc
|
||||||
get 'invoices/:id', to: 'invoice#show', as: :invoice
|
get 'invoices/:id', to: 'invoices#show', as: :invoice
|
||||||
|
|
||||||
#manual billing
|
#manual billing
|
||||||
get 'bill/:id', to: 'qbo#bill', as: :bill
|
get 'bill/:id', to: 'qbo#bill', as: :bill
|
||||||
|
|||||||
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.3.11'
|
version '2026.3.14'
|
||||||
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'
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ module RedmineQbo
|
|||||||
# Customer Name Text Box with database backed autocomplete
|
# Customer Name Text Box with database backed autocomplete
|
||||||
# onchange event will update the hidden customer_id field
|
# onchange event will update the hidden customer_id field
|
||||||
search_customer = f.text_field :customer,
|
search_customer = f.text_field :customer,
|
||||||
placeholder: l(:field_customer),
|
|
||||||
class: "customer-name",
|
class: "customer-name",
|
||||||
autocomplete: "off",
|
autocomplete: "off",
|
||||||
data: {
|
data: {
|
||||||
@@ -47,7 +46,7 @@ module RedmineQbo
|
|||||||
# 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: "customer_id",
|
||||||
onchange: js_path.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
|
||||||
|
|||||||
Reference in New Issue
Block a user