effective_qb_sync 1.3.3 → 1.3.7

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: df7032f4abbef9c241bd2eebf383aecfc6c6c918d006d60046799e90a200d294
4
- data.tar.gz: ccdfce8884cda0205388fc28f8d4d39da869d2556bb449eff7932552745cf0bd
3
+ metadata.gz: 5e1b10dc71838c8390bd6baff5fa2bcec970c0be67d3a799967b17cbb1e8490d
4
+ data.tar.gz: 38cea0b7beb53c3ebfcddda052ea3970514a3c9bfbc4d31d17b9e27194f0db26
5
5
  SHA512:
6
- metadata.gz: 9851e05ca234f5ed7d569d58534e1293a07142cbbfc5623da0a9451aec18691cd583094dab6071adcac2321055c7ad09820582e55e6010496114b03433a2a45b
7
- data.tar.gz: 550920e68a8d65c7a2aa22b75b618d3e472bdc288c885da6d2f125e1aee924873be7719ee3be1a1d9b4fdc1e1463df56ed11eef6d30c8bc6704f7847eaa0a946
6
+ metadata.gz: 653e25f22cd61bac1119dc50cf0abbc29109906ee8de741db7c75527f60db2f5278567d18a9e3fa70df376a042672487ddfeec0d262e6fbe0ed088367a212464
7
+ data.tar.gz: '019270eb08c5b8267676b7f94d01ae15150a7c3f34d643aa762a0c726833d5192a5ba791a352d550571d73d3510756c8d4eee6d6e79fe1526776473e5e66df3d'
@@ -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_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,20 @@ 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, order_ids: 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
+ if order_ids.present?
43
+ finished_orders = finished_orders.where(id: order_ids)
44
+ end
45
+
46
+ finished_orders.map { |order| Effective::QbRequest.new(order: order) }
37
47
  end
38
48
 
39
49
  # 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_orders_finished!(before: nil, order_ids: 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, order_ids: order_ids).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
@@ -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.3'.freeze
2
+ VERSION = '1.3.7'.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.3
4
+ version: 1.3.7
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-10-22 00:00:00.000000000 Z
11
+ date: 2022-01-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails