mirror of
https://github.com/rickbarrette/redmine_qbo.git
synced 2026-04-02 08:21:57 -04:00
Updated manual sync to to allow full or partial sync
This commit is contained in:
@@ -46,9 +46,13 @@ class QboController < ApplicationController
|
|||||||
redirect_to issue || root_path, flash: { error: e.message }
|
redirect_to issue || root_path, flash: { error: e.message }
|
||||||
end
|
end
|
||||||
|
|
||||||
# Manual sync endpoint to trigger a full synchronization of QuickBooks entities with the local database. Enqueues all relevant sync jobs and redirects to the home page with a notice that syncing has started.
|
# Manual sync endpoint to trigger synchronization of QuickBooks entities
|
||||||
|
# with the local database. Supports full or partial sync depending on
|
||||||
|
# the `full_sync` boolean parameter.
|
||||||
def sync
|
def sync
|
||||||
QboSyncDispatcher.full_sync!
|
full_sync = ActiveModel::Type::Boolean.new.cast(params[:full_sync])
|
||||||
|
QboSyncDispatcher.sync!(full_sync: full_sync)
|
||||||
|
|
||||||
redirect_to :home, flash: { notice: I18n.t(:label_syncing) }
|
redirect_to :home, flash: { notice: I18n.t(:label_syncing) }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -17,9 +17,17 @@ class QboSyncDispatcher
|
|||||||
Employee
|
Employee
|
||||||
].freeze
|
].freeze
|
||||||
|
|
||||||
# Dispatches all synchronization jobs to perform a full sync of QuickBooks entities with the local database. Each job is enqueued with the `full_sync` flag set to true.
|
# Dispatches all synchronization jobs to perform a full sync of QuickBooks entities with the local database.
|
||||||
def self.full_sync!
|
# Each job is enqueued with the `full_sync` flag set to true.
|
||||||
|
def self.sync!(full_sync: false)
|
||||||
|
log "Manual Sync initated for #{full_sync ? "full sync" : "incremental sync"}"
|
||||||
|
enque_jobs full_sync: full_sync
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
# Dynamically enques all sync jobs
|
||||||
|
def self.enque_jobs(full_sync: full_sync)
|
||||||
jobs = SYNC_JOBS.dup
|
jobs = SYNC_JOBS.dup
|
||||||
|
|
||||||
# Allow other plugins to add addtional sync jobs via Hooks
|
# Allow other plugins to add addtional sync jobs via Hooks
|
||||||
@@ -29,11 +37,9 @@ class QboSyncDispatcher
|
|||||||
log "Added additionals QBO Sync Job for #{context.to_s}"
|
log "Added additionals QBO Sync Job for #{context.to_s}"
|
||||||
end
|
end
|
||||||
|
|
||||||
jobs.each { |job| QboSyncJob.perform_later(entity: job, full_sync: true) }
|
jobs.each { |job| QboSyncJob.perform_later(entity: job, full_sync: full_sync) }
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
def self.log(msg)
|
def self.log(msg)
|
||||||
Rails.logger.info "[QboSyncDispatcher] #{msg}"
|
Rails.logger.info "[QboSyncDispatcher] #{msg}"
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -3,3 +3,4 @@
|
|||||||
<%= 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%>
|
||||||
|
<%= button_to(t(:label_sync), qbo_sync_path, method: :get) if User.current.admin?%>
|
||||||
|
|||||||
@@ -107,5 +107,5 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
|||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<b><%=t(:label_last_sync)%> </b> <%= Qbo.last_sync if Qbo.exists? %> <%= link_to t(:label_sync_now), qbo_sync_path %>
|
<b><%=t(:label_last_sync)%> </b> <%= Qbo.last_sync if Qbo.exists? %> <%= link_to t(:label_sync_now), qbo_sync_path(full_sync: true) %>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user