Class: Effective::QbTicket

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/effective/qb_ticket.rb

Constant Summary collapse

STATES =
['Ready', 'Authenticated', 'Processing', 'Finished', 'ConnectionError', 'RequestError']

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.set_orders_finished!(before: nil, order_ids: nil) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
# File 'app/models/effective/qb_ticket.rb', line 33

def self.set_orders_finished!(before: nil, order_ids: nil)
  qb_ticket = Effective::QbTicket.new(state: 'Finished')
  qb_ticket.qb_logs.build(message: 'Set all orders Finished')
  qb_ticket.save!

  Effective::QbRequest.new_requests_for_unsynced_items(before: before, order_ids: order_ids).each do |qb_request|
    qb_request.qb_ticket = qb_ticket
    qb_request.transition_to_finished
  end

  true
end

Instance Method Details

#error!(error, atts = {}) ⇒ Object

This is the entry point for a standard error.



51
52
53
54
55
56
57
58
59
60
61
# File 'app/models/effective/qb_ticket.rb', line 51

def error!(error, atts={})
  Effective::OrdersMailer.order_error(
    order: qb_request.try(:order),
    error: error,
    to: EffectiveQbSync.error_email,
    subject: "Quickbooks failed to synchronize order ##{qb_request.try(:order).try(:to_param) || 'unknown'}",
    template: 'qb_sync_error'
  ).deliver_now

  update!(atts.reverse_merge(last_error: error))
end

#log(message) ⇒ Object

persists a new log message to this ticket



64
65
66
# File 'app/models/effective/qb_ticket.rb', line 64

def log(message)
  qb_logs.create(message: message, qb_ticket: self)
end

#request_error!(error, atts = {}) ⇒ Object



46
47
48
# File 'app/models/effective/qb_ticket.rb', line 46

def request_error!(error, atts={})
  self.error!(error, atts.reverse_merge(state: 'RequestError'))
end