merchant_e_solutions 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/merchant_e_solutions.rb +6 -1
- data/lib/merchant_e_solutions/adjustment_record.rb +31 -0
- data/lib/merchant_e_solutions/adjustment_report.rb +21 -0
- data/lib/merchant_e_solutions/record.rb +7 -1
- data/lib/merchant_e_solutions/report.rb +19 -1
- data/lib/merchant_e_solutions/version.rb +1 -1
- data/spec/fixtures/adjustment_report.csv +3 -0
- data/spec/fixtures/{detail_report.csv → deposit_report.csv} +0 -0
- data/spec/lib/merchant_e_solutions/adjustment_record_spec.rb +39 -0
- data/spec/lib/merchant_e_solutions/adjustment_report_spec.rb +41 -0
- data/spec/lib/merchant_e_solutions/deposit_report_spec.rb +1 -1
- data/spec/lib/merchant_e_solutions/report_spec.rb +15 -0
- data/spec/lib/merchant_e_solutions_spec.rb +14 -0
- metadata +12 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 84550333afd6acc5e0b4f4eaca679cdf55a0ec41
|
4
|
+
data.tar.gz: 92d3ae4bc28465a85d3f109f938533b8aa8c4b7f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9f01b2763eaa5abbdc14b72fb1994083444faba8bccb95d4e9429d337b3e5ee91f4c31f5eacbf5c161ff24a1868b70634b96410134854596ed7cb7498daee577
|
7
|
+
data.tar.gz: 2226690b22c075426736a8ce4007296459a04c778efd28b3ea836ab599d447bfc3dd3b52b3183e98e34381ac11b7ac9b1f735204afec729e76b59cae94433e2f
|
data/lib/merchant_e_solutions.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
require 'merchant_e_solutions/configuration'
|
2
2
|
require 'merchant_e_solutions/report'
|
3
3
|
require 'merchant_e_solutions/request'
|
4
|
-
require 'merchant_e_solutions/
|
4
|
+
require 'merchant_e_solutions/adjustment_report'
|
5
5
|
require 'merchant_e_solutions/batch_detail_report'
|
6
6
|
require 'merchant_e_solutions/batch_summary_report'
|
7
|
+
require 'merchant_e_solutions/deposit_report'
|
7
8
|
require 'merchant_e_solutions/settlement_detail_report'
|
8
9
|
require 'merchant_e_solutions/settlement_summary_report'
|
9
10
|
|
@@ -33,6 +34,10 @@ module MerchantESolutions
|
|
33
34
|
def deposit_report(options = {})
|
34
35
|
DepositReport.new(options)
|
35
36
|
end
|
37
|
+
|
38
|
+
def adjustment_report(options = {})
|
39
|
+
AdjustmentReport.new(options)
|
40
|
+
end
|
36
41
|
end
|
37
42
|
|
38
43
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'merchant_e_solutions/record'
|
2
|
+
|
3
|
+
module MerchantESolutions
|
4
|
+
class AdjustmentRecord < Record
|
5
|
+
|
6
|
+
attr_reader :organization_id, :organization_name, :control_number, :incoming_date,
|
7
|
+
:card_number, :reference_id, :transaction_date, :transaction_amount,
|
8
|
+
:authorization_code, :adjustment_date, :adjustment_reference_number,
|
9
|
+
:reason, :first_time, :reason_code, :cb_reference_number, :terminal_id
|
10
|
+
|
11
|
+
|
12
|
+
def initialize(row)
|
13
|
+
@organization_id = row[0]
|
14
|
+
@organization_name = row[1]
|
15
|
+
@control_number = row[2]
|
16
|
+
@incoming_date = parse_date(row[3])
|
17
|
+
@card_number = row[4]
|
18
|
+
@reference_id = row[5]
|
19
|
+
@transaction_date = parse_date(row[6])
|
20
|
+
@transaction_amount = row[7]
|
21
|
+
@authorization_code = row[8]
|
22
|
+
@adjustment_date = parse_date(row[9])
|
23
|
+
@adjustment_reference_number = row[10]
|
24
|
+
@reason = row[11]
|
25
|
+
@first_time = parse_boolean(row[12])
|
26
|
+
@reason_code = row[13]
|
27
|
+
@cb_reference_number = row[14]
|
28
|
+
@terminal_id = row[15]
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'merchant_e_solutions/adjustment_record'
|
2
|
+
|
3
|
+
module MerchantESolutions
|
4
|
+
class AdjustmentReport < Report
|
5
|
+
|
6
|
+
|
7
|
+
private
|
8
|
+
|
9
|
+
def report_id
|
10
|
+
5
|
11
|
+
end
|
12
|
+
|
13
|
+
def report_type
|
14
|
+
1
|
15
|
+
end
|
16
|
+
|
17
|
+
def record_class
|
18
|
+
AdjustmentRecord
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -5,7 +5,13 @@ module MerchantESolutions
|
|
5
5
|
private
|
6
6
|
|
7
7
|
def parse_date(date)
|
8
|
-
|
8
|
+
if date && !date.empty?
|
9
|
+
Date.strptime(date, "%m/%d/%Y")
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def parse_boolean(string)
|
14
|
+
['y', 'yes'].include? string.downcase
|
9
15
|
end
|
10
16
|
|
11
17
|
end
|
@@ -5,7 +5,7 @@ module MerchantESolutions
|
|
5
5
|
attr_reader :records, :request
|
6
6
|
|
7
7
|
def initialize(params = {})
|
8
|
-
self.options = params
|
8
|
+
self.options = parse_params(params)
|
9
9
|
@request = Request.new(request_params)
|
10
10
|
parse_records(request.body)
|
11
11
|
end
|
@@ -47,5 +47,23 @@ module MerchantESolutions
|
|
47
47
|
records << record_class.new(csv)
|
48
48
|
end
|
49
49
|
end
|
50
|
+
|
51
|
+
def parse_params(params)
|
52
|
+
parse_out_date(params, "begin")
|
53
|
+
parse_out_date(params, "end")
|
54
|
+
|
55
|
+
params
|
56
|
+
end
|
57
|
+
|
58
|
+
def parse_out_date(params, type)
|
59
|
+
key = "#{type}_date"
|
60
|
+
if date = params.delete(key) || params.delete(key.to_sym)
|
61
|
+
params.merge!({
|
62
|
+
"#{type}Date.day" => date.day,
|
63
|
+
"#{type}Date.month" => (date.month - 1),
|
64
|
+
"#{type}Date.year" => date.year,
|
65
|
+
})
|
66
|
+
end
|
67
|
+
end
|
50
68
|
end
|
51
69
|
end
|
@@ -0,0 +1,3 @@
|
|
1
|
+
"Merchant Id","DBA Name","Control Number","Incoming Date","Card Number","Reference Number","Tran Date","Tran Amount","Auth Code","Adj Date","Adj Ref Num","Reason","First Time","Reason Code","CB Ref Num","Terminal ID"
|
2
|
+
44,"Hamazon",224,08/11/2014,654321xxxxxx1234,'1176620,07/27/2014,15.0,,"08/10/2013-","1176538","Fraud - Card Not Present Transaction",Y,UA02,802061219,""
|
3
|
+
44,"Hamazon",248,10/13/2014,123456xxxxxx4321,'16768007605410284,10/10/2014,40.0,03500P,"10/10/2013-","00001471124","No Cardholder Authorization",Y,4837,319290029,""
|
File without changes
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe MerchantESolutions::AdjustmentRecord do
|
4
|
+
describe "#initialize" do
|
5
|
+
subject { MerchantESolutions::AdjustmentRecord.new(csv_row) }
|
6
|
+
|
7
|
+
#"Merchant Id","DBA Name","Control Number","Incoming Date","Card Number","Reference Number","Tran Date","Tran Amount","Auth Code","Adj Date","Adj Ref Num","Reason","First Time","Reason Code","CB Ref Num","Terminal ID"
|
8
|
+
let(:csv_row) { [44, "Hamazon", 224, "08/11/2014", "654321xxxxxx1234", "'1176620", "07/27/2014", 15.0, 'aaa', "08/10/2013-", "1176538", "Fraud - Card Not Present Transaction", "Y", "UA02", 802061219, "b"] }
|
9
|
+
|
10
|
+
its(:organization_id) { should == 44 }
|
11
|
+
its(:organization_name) { should == "Hamazon" }
|
12
|
+
its(:control_number) { should == 224 }
|
13
|
+
it "parses out the incoming date" do
|
14
|
+
subject.incoming_date.day.should == 11
|
15
|
+
subject.incoming_date.month.should == 8
|
16
|
+
subject.incoming_date.year.should == 2014
|
17
|
+
end
|
18
|
+
its(:card_number) { "654321xxxxxx1234" }
|
19
|
+
its(:reference_id) { "1176620" }
|
20
|
+
it "parses out the transaction date" do
|
21
|
+
subject.transaction_date.day.should == 27
|
22
|
+
subject.transaction_date.month.should == 7
|
23
|
+
subject.transaction_date.year.should == 2014
|
24
|
+
end
|
25
|
+
its(:transaction_amount) { should == 15.0 }
|
26
|
+
its(:authorization_code) { 'aaa' }
|
27
|
+
it "parses out the adjustment date" do
|
28
|
+
subject.adjustment_date.day.should == 10
|
29
|
+
subject.adjustment_date.month.should == 8
|
30
|
+
subject.adjustment_date.year.should == 2013
|
31
|
+
end
|
32
|
+
its(:adjustment_reference_number) { should == '1176538' }
|
33
|
+
its(:reason) { should == "Fraud - Card Not Present Transaction" }
|
34
|
+
its(:first_time) { should == true }
|
35
|
+
its(:reason_code) { should == "UA02" }
|
36
|
+
its(:cb_reference_number) { should == 802061219 }
|
37
|
+
its(:terminal_id) { should == "b" }
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe MerchantESolutions::AdjustmentReport do
|
4
|
+
before { stub_net_http_requests }
|
5
|
+
|
6
|
+
describe "#initialize" do
|
7
|
+
let(:request) { double(:request, body: request_fixture('adjustment_report')) }
|
8
|
+
before { MerchantESolutions::Request.stub(:new).and_return(request) }
|
9
|
+
|
10
|
+
it "parses the body of the request as a CSV" do
|
11
|
+
report = MerchantESolutions::AdjustmentReport.new
|
12
|
+
|
13
|
+
report.records.size.should be > 0
|
14
|
+
|
15
|
+
report.records.each do |record|
|
16
|
+
record.should be_a MerchantESolutions::AdjustmentRecord
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "#request_params" do
|
22
|
+
let(:request_params) { MerchantESolutions::AdjustmentReport.new(options).request_params }
|
23
|
+
let(:options) { Hash.new }
|
24
|
+
|
25
|
+
it "knows its dsReportId" do
|
26
|
+
request_params[:dsReportId].should == 5
|
27
|
+
end
|
28
|
+
|
29
|
+
it "knows its reportType" do
|
30
|
+
request_params[:reportType].should == 1
|
31
|
+
end
|
32
|
+
|
33
|
+
context "when options are passed in" do
|
34
|
+
let(:options) { {test: 'params'} }
|
35
|
+
|
36
|
+
it "merges in the options" do
|
37
|
+
request_params[:test].should == 'params'
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -4,7 +4,7 @@ describe MerchantESolutions::DepositReport do
|
|
4
4
|
before { stub_net_http_requests }
|
5
5
|
|
6
6
|
describe "#initialize" do
|
7
|
-
let(:request) { double(:request, body: request_fixture('
|
7
|
+
let(:request) { double(:request, body: request_fixture('deposit_report')) }
|
8
8
|
before { MerchantESolutions::Request.stub(:new).and_return(request) }
|
9
9
|
|
10
10
|
it "parses the body of the request as a CSV" do
|
@@ -22,6 +22,21 @@ describe MerchantESolutions::Report do
|
|
22
22
|
|
23
23
|
TestSubReport.new
|
24
24
|
end
|
25
|
+
|
26
|
+
it "parses out a date into usable request params for start and end dates" do
|
27
|
+
begin_date = Date.parse('10/11/2012')
|
28
|
+
end_date = Date.parse('11/12/2013')
|
29
|
+
|
30
|
+
report = TestSubReport.new(begin_date: begin_date, end_date: end_date)
|
31
|
+
|
32
|
+
report.request_params["beginDate.day"].should == begin_date.day
|
33
|
+
report.request_params["beginDate.month"].should == (begin_date.month - 1)
|
34
|
+
report.request_params["beginDate.year"].should == begin_date.year
|
35
|
+
|
36
|
+
report.request_params["endDate.day"].should == end_date.day
|
37
|
+
report.request_params["endDate.month"].should == (end_date.month - 1)
|
38
|
+
report.request_params["endDate.year"].should == end_date.year
|
39
|
+
end
|
25
40
|
end
|
26
41
|
|
27
42
|
describe "#request_params" do
|
@@ -72,4 +72,18 @@ describe MerchantESolutions do
|
|
72
72
|
MerchantESolutions.deposit_report(options)
|
73
73
|
end
|
74
74
|
end
|
75
|
+
|
76
|
+
describe ".adjustment_report" do
|
77
|
+
it "returns an Instance of MerchantESolution::SettlementReport" do
|
78
|
+
MerchantESolutions.adjustment_report.should be_a MerchantESolutions::AdjustmentReport
|
79
|
+
end
|
80
|
+
|
81
|
+
it "passes all options directly through to the new SettlementReport" do
|
82
|
+
options = {hash: "with", any: "keys", and: "values"}
|
83
|
+
|
84
|
+
MerchantESolutions::AdjustmentReport.should_receive(:new).with(options)
|
85
|
+
|
86
|
+
MerchantESolutions.adjustment_report(options)
|
87
|
+
end
|
88
|
+
end
|
75
89
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: merchant_e_solutions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steve Ellis
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-10-
|
12
|
+
date: 2013-10-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -82,6 +82,8 @@ files:
|
|
82
82
|
- README.md
|
83
83
|
- Rakefile
|
84
84
|
- lib/merchant_e_solutions.rb
|
85
|
+
- lib/merchant_e_solutions/adjustment_record.rb
|
86
|
+
- lib/merchant_e_solutions/adjustment_report.rb
|
85
87
|
- lib/merchant_e_solutions/batch_detail_report.rb
|
86
88
|
- lib/merchant_e_solutions/batch_summary_report.rb
|
87
89
|
- lib/merchant_e_solutions/configuration.rb
|
@@ -96,10 +98,13 @@ files:
|
|
96
98
|
- lib/merchant_e_solutions/summary_record.rb
|
97
99
|
- lib/merchant_e_solutions/version.rb
|
98
100
|
- merchant_e_solutions.gemspec
|
101
|
+
- spec/fixtures/adjustment_report.csv
|
99
102
|
- spec/fixtures/batch_summary.csv
|
100
|
-
- spec/fixtures/
|
103
|
+
- spec/fixtures/deposit_report.csv
|
101
104
|
- spec/fixtures/settlement_detail.csv
|
102
105
|
- spec/fixtures/settlement_summary.csv
|
106
|
+
- spec/lib/merchant_e_solutions/adjustment_record_spec.rb
|
107
|
+
- spec/lib/merchant_e_solutions/adjustment_report_spec.rb
|
103
108
|
- spec/lib/merchant_e_solutions/batch_detail_report_spec.rb
|
104
109
|
- spec/lib/merchant_e_solutions/batch_summary_report_spec.rb
|
105
110
|
- spec/lib/merchant_e_solutions/deposit_record_spec.rb
|
@@ -137,10 +142,13 @@ signing_key:
|
|
137
142
|
specification_version: 4
|
138
143
|
summary: Wrapper for the Settlement Report API
|
139
144
|
test_files:
|
145
|
+
- spec/fixtures/adjustment_report.csv
|
140
146
|
- spec/fixtures/batch_summary.csv
|
141
|
-
- spec/fixtures/
|
147
|
+
- spec/fixtures/deposit_report.csv
|
142
148
|
- spec/fixtures/settlement_detail.csv
|
143
149
|
- spec/fixtures/settlement_summary.csv
|
150
|
+
- spec/lib/merchant_e_solutions/adjustment_record_spec.rb
|
151
|
+
- spec/lib/merchant_e_solutions/adjustment_report_spec.rb
|
144
152
|
- spec/lib/merchant_e_solutions/batch_detail_report_spec.rb
|
145
153
|
- spec/lib/merchant_e_solutions/batch_summary_report_spec.rb
|
146
154
|
- spec/lib/merchant_e_solutions/deposit_record_spec.rb
|