effective_qb_sync 1.3.2 → 1.3.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2eef5621d3a64765720af65734b135ba35bf5433a509c1ad39510b374a4ff95c
4
- data.tar.gz: 2f3c34d7e2b3dad8878666649d5e167f0433aedd26479e349a38edd0e304276b
3
+ metadata.gz: 7661088e53e1d6c02bb8ce7ae766d2253e742cee52900ff1f88b5dda913cc81d
4
+ data.tar.gz: 9d34f24a3e7d7765012f38476771ce3ff5ef9767349e63e2c74e544be50fe1a9
5
5
  SHA512:
6
- metadata.gz: b9ff3bd819af28527bfa88b784d2bc4667e0057924da6627c1f67a136f7efb0dc412ffa675aa29ba67d2d66147ad12378a269f558ea1799f8d9b0362e919746b
7
- data.tar.gz: cf82590efa8276942f285029fe46f45f04b90fa67aa951b05acc82c02bcb971a630c65439ce450515f63bc815e865003f4f8aabcefb08eac2623105c947daccf
6
+ metadata.gz: a939efae8b650ac173d0b7f5adaca44d6c23f2183faafae00df54775699744fe49db531393daf08f144a598879de956bc92c84076d666e13ccf48a5514a1fa02
7
+ data.tar.gz: 58cb299e4125fce20c337e25aa0e7339622f29ab1471caca5553c2be1bf135347ba711955f89aceebe8fd96ab5e091717e172732f82c519d55f1fec9d35c0532
@@ -52,14 +52,7 @@ module Admin
52
52
  def set_all_orders_finished
53
53
  Effective::QbTicket.transaction do
54
54
  begin
55
- @qb_ticket = Effective::QbTicket.new(state: 'Finished')
56
- @qb_ticket.qb_logs.build(message: 'Set all orders Finished')
57
- @qb_ticket.save!
58
-
59
- Effective::QbRequest.new_requests_for_unsynced_items.each do |qb_request|
60
- qb_request.qb_ticket = @qb_ticket
61
- qb_request.transition_to_finished
62
- end
55
+ Effective::QbTicket.set_all_orders_finished!
63
56
 
64
57
  flash[:success] = 'Successfully set all orders finished'
65
58
  rescue => e
@@ -9,20 +9,7 @@ class EffectiveQbSyncDatatable < Effective::Datatable
9
9
  qb_ticket.qb_requests.length
10
10
  end
11
11
 
12
- val :orders, sort: false, as: :obfuscated_id do |qb_ticket|
13
- qb_ticket.qb_requests.select { |qb_request| qb_request.order.present? }
14
- end.format do |requests|
15
- requests.map { |qb_request| link_to "##{qb_request.order.to_param}", effective_orders.admin_order_path(qb_request.order) }
16
- .join('<br>').html_safe
17
- end.search do |collection, term, column, sql_column|
18
- order = Effective::Order.where(id: search_term).first
19
-
20
- if order.present?
21
- collection.where(id: Effective::QbRequest.where(order_id: order.id).pluck(:qb_ticket_id))
22
- else
23
- collection.none
24
- end
25
- end
12
+ col :orders
26
13
 
27
14
  actions_col do |qb_ticket|
28
15
  dropdown_link_to 'Show', effective_qb_sync.admin_qb_sync_path(qb_ticket)
@@ -31,7 +18,7 @@ class EffectiveQbSyncDatatable < Effective::Datatable
31
18
  end
32
19
 
33
20
  collection do
34
- Effective::QbTicket.deep.all
21
+ Effective::QbTicket.deep.includes(:orders).all
35
22
  end
36
23
 
37
24
  end
@@ -30,10 +30,16 @@ module Effective
30
30
 
31
31
  # creates (does not persist) QbRequests for outstanding orders. The caller may choose to
32
32
  # persist a request when that request starts communicating with QuickBooks
33
- def self.new_requests_for_unsynced_items
33
+ def self.new_requests_for_unsynced_items(before: nil)
34
34
  finished_order_ids = Effective::QbRequest.where(state: 'Finished').pluck(:order_id)
35
- Effective::Order.purchased.includes(order_items: [:purchasable, :qb_order_item])
36
- .where.not(id: finished_order_ids).map { |order| Effective::QbRequest.new(order: order) }
35
+ finished_orders = Effective::Order.purchased.includes(order_items: [:purchasable, :qb_order_item]).where.not(id: finished_order_ids)
36
+
37
+ if before.present?
38
+ raise('expected before to be a date') unless before.respond_to?(:strftime)
39
+ finished_orders = finished_orders.where('purchased_at < ?', before)
40
+ end
41
+
42
+ finished_orders.map { |order| Effective::QbRequest.new(order: order) }
37
43
  end
38
44
 
39
45
  # Finds a QbRequest using response qb_xml. If the response could not be parsed, or if there was no
@@ -30,6 +30,19 @@ module Effective
30
30
 
31
31
  validates :state, inclusion: { in: STATES }
32
32
 
33
+ def self.set_all_orders_finished!(before: nil)
34
+ qb_ticket = Effective::QbTicket.new(state: 'Finished')
35
+ qb_ticket.qb_logs.build(message: 'Set all orders Finished')
36
+ qb_ticket.save!
37
+
38
+ Effective::QbRequest.new_requests_for_unsynced_items(before: before).each do |qb_request|
39
+ qb_request.qb_ticket = qb_ticket
40
+ qb_request.transition_to_finished
41
+ end
42
+
43
+ true
44
+ end
45
+
33
46
  def request_error!(error, atts={})
34
47
  self.error!(error, atts.reverse_merge(state: 'RequestError'))
35
48
  end
@@ -42,7 +55,7 @@ module Effective
42
55
  to: EffectiveQbSync.error_email,
43
56
  subject: "Quickbooks failed to synchronize order ##{qb_request.try(:order).try(:to_param) || 'unknown'}",
44
57
  template: 'qb_sync_error'
45
- ).public_send(EffectiveOrders.mailer[:deliver_method])
58
+ ).deliver_now
46
59
 
47
60
  update!(atts.reverse_merge(last_error: error))
48
61
  end
@@ -15,11 +15,16 @@
15
15
  %strong= Array(EffectiveQbSync.quickbooks_username).join('</strong> or <strong>').html_safe
16
16
  and password:
17
17
  %strong= Array(EffectiveQbSync.quickbooks_password).join('</strong> or <strong>').html_safe
18
+ - elsif EffectiveQbSync.quickbooks_username.blank? && EffectiveQbSync.quickbooks_password.present?
19
+ %li
20
+ Add a Quickbooks user any username, and password:
21
+ %strong= Array(EffectiveQbSync.quickbooks_password).join('</strong> or <strong>').html_safe
18
22
  - else
19
23
  %li
20
24
  (developer) Add a quickbooks_username and quickbooks_password to the config/initializers/effective_qb_sync.rb file
21
25
  %ul
22
26
  %li Add a Quickbooks user with that same username and password
27
+
23
28
  %li Access for user: "Selected areas of Quickbooks"
24
29
  %li Sales and Accounts Receivable "Selective Access - Create transactions only"
25
30
  %li Purchases and Accounts Payable "No Access"
@@ -1,3 +1,3 @@
1
1
  module EffectiveQbSync
2
- VERSION = '1.3.2'.freeze
2
+ VERSION = '1.3.6'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_qb_sync
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.3.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-25 00:00:00.000000000 Z
11
+ date: 2022-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails