Module: RockRMS::Client::Transaction

Included in:
RockRMS::Client
Defined in:
lib/rock_rms/resources/transaction.rb

Constant Summary collapse

PATH =
'FinancialTransactions'.freeze

Instance Method Summary collapse

Instance Method Details

#create_transaction(authorized_person_id:, batch_id:, date:, funds:, payment_detail_id:, source_type_id: 10, transaction_code: nil, summary: nil, recurring_donation_id: nil, gateway_id: nil, transaction_type_value_id: 53) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/rock_rms/resources/transaction.rb', line 21

def create_transaction(
  authorized_person_id:,
  batch_id:,
  date:,
  funds:,
  payment_detail_id:,
  source_type_id: 10,
  transaction_code: nil,
  summary: nil,
  recurring_donation_id: nil,
  gateway_id: nil,
  transaction_type_value_id: 53        # contribution, registration
)

  options = {
    'AuthorizedPersonAliasId' => authorized_person_id,
    'ScheduledTransactionId' => recurring_donation_id,
    'BatchId' => batch_id,
    'FinancialGatewayId' => gateway_id,
    'FinancialPaymentDetailId' => payment_detail_id,
    'TransactionCode' => transaction_code,
    'TransactionDateTime' => date,
    'TransactionDetails'  => translate_funds(funds),
    'TransactionTypeValueId' => transaction_type_value_id,
    'SourceTypeValueId' => source_type_id, # website, kiosk, mobile app
    'Summary' => summary
  }
  post(transaction_path, options)
end

#delete_transaction(id) ⇒ Object



78
79
80
# File 'lib/rock_rms/resources/transaction.rb', line 78

def delete_transaction(id)
  delete(transaction_path(id))
end

#find_donations_by_giving_id(id, raw = false) ⇒ Object



11
12
13
14
# File 'lib/rock_rms/resources/transaction.rb', line 11

def find_donations_by_giving_id(id, raw = false)
  res = get("#{PATH}/GetByGivingId/#{id}?$expand=TransactionDetails")
  raw ? res : Response::Transaction.format(res)
end

#find_transaction(id) ⇒ Object



16
17
18
19
# File 'lib/rock_rms/resources/transaction.rb', line 16

def find_transaction(id)
  res = get(transaction_path(id))
  Response::Transaction.format(res)
end

#launch_transaction_workflow(id, workflow_type_id:, workflow_name:, attributes: {}) ⇒ Object



86
87
88
89
90
91
92
93
94
# File 'lib/rock_rms/resources/transaction.rb', line 86

def launch_transaction_workflow(
  id,
  workflow_type_id:,
  workflow_name:,
  attributes: {}
)
  query_string = "?workflowTypeId=#{workflow_type_id}&workflowName=#{workflow_name}"
  post(transaction_path + "/LaunchWorkflow/#{id}#{query_string}", attributes)
end

#list_transactions(options = {}) ⇒ Object



6
7
8
9
# File 'lib/rock_rms/resources/transaction.rb', line 6

def list_transactions(options = {})
  res = get(transaction_path, options)
  Response::Transaction.format(res)
end

#refund_transaction(id) ⇒ Object



82
83
84
# File 'lib/rock_rms/resources/transaction.rb', line 82

def refund_transaction(id)
  post(transaction_path + "/Refund/#{id}")
end

#update_transaction(id, batch_id: nil, summary: nil, recurring_donation_id: nil, gateway_id: nil, source_type_id: nil, transaction_code: nil, transaction_type_value_id: nil, authorized_person_id: nil, date: nil) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/rock_rms/resources/transaction.rb', line 51

def update_transaction(
  id,
  batch_id: nil,
  summary: nil,
  recurring_donation_id: nil,
  gateway_id: nil,
  source_type_id: nil,
  transaction_code: nil,
  transaction_type_value_id: nil,
  authorized_person_id: nil,
  date: nil
)
  options = {}

  options['Summary'] = summary  if summary
  options['BatchId'] = batch_id if batch_id
  options['FinancialGatewayId']      = gateway_id                if gateway_id
  options['ScheduledTransactionId']  = recurring_donation_id     if recurring_donation_id
  options['SourceTypeValueId']       = source_type_id            if source_type_id
  options['TransactionTypeValueId']  = transaction_type_value_id if transaction_type_value_id
  options['TransactionCode']         = transaction_code          if transaction_code
  options['AuthorizedPersonAliasId'] = authorized_person_id      if authorized_person_id
  options['TransactionDateTime']     = date                      if date

  patch(transaction_path(id), options)
end