gotransverse-tract-api 0.3.4 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/lib/gotransverse-tract-api.rb +51 -1
  3. data/lib/gotransverse-tract-api/api_data.rb +259 -0
  4. data/lib/gotransverse-tract-api/billing_account/adjustment.rb +205 -5
  5. data/lib/gotransverse-tract-api/billing_account/billing_account.rb +146 -13
  6. data/lib/gotransverse-tract-api/billing_account/invoice.rb +2 -1
  7. data/lib/gotransverse-tract-api/billing_account/payment.rb +90 -9
  8. data/lib/gotransverse-tract-api/billing_account/refund.rb +15 -1
  9. data/lib/gotransverse-tract-api/order/order_item.rb +179 -7
  10. data/lib/gotransverse-tract-api/order/organization.rb +15 -1
  11. data/lib/gotransverse-tract-api/order/people.rb +14 -16
  12. data/lib/gotransverse-tract-api/order/sales_order.rb +253 -6
  13. data/lib/gotransverse-tract-api/service/service.rb +273 -24
  14. data/lib/gotransverse-tract-api/service/service_resource.rb +65 -7
  15. data/lib/gotransverse-tract-api/usage/usage_event.rb +58 -3
  16. data/lib/gotransverse-tract-api/usage/usage_main.rb +19 -0
  17. data/lib/gotransverse-tract-api/usage/usage_some.rb +24 -0
  18. data/lib/gotransverse-tract-api/version.rb +1 -1
  19. data/spec/gotransverse-tract-api/billing_account/adjustment_spec.rb +190 -0
  20. data/spec/gotransverse-tract-api/billing_account/billing_account_spec.rb +380 -0
  21. data/spec/gotransverse-tract-api/billing_account/invoice_spec.rb +43 -0
  22. data/spec/gotransverse-tract-api/billing_account/payment_spec.rb +104 -2
  23. data/spec/gotransverse-tract-api/billing_account/refund_spec.rb +30 -0
  24. data/spec/gotransverse-tract-api/order/order_item_spec.rb +169 -0
  25. data/spec/gotransverse-tract-api/order/organization_spec.rb +32 -0
  26. data/spec/gotransverse-tract-api/order/people_spec.rb +32 -0
  27. data/spec/gotransverse-tract-api/order/sales_order_spec.rb +209 -0
  28. data/spec/gotransverse-tract-api/service/service_resource_spec.rb +83 -0
  29. data/spec/gotransverse-tract-api/service/service_spec.rb +194 -0
  30. data/spec/gotransverse-tract-api/usage/usage_event_spec.rb +57 -0
  31. metadata +27 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 39273a34efe26729015c58794493d067d77fb5cd
4
- data.tar.gz: 86d2f3318800808d0652354d463fd0d5e8e74330
3
+ metadata.gz: 2262c8dfe32caf5a06afc9eb322a064301d141d6
4
+ data.tar.gz: 132028b0ab05e06d987d8af55f064d62892a46b2
5
5
  SHA512:
6
- metadata.gz: 62d15c95a86c9491350cbd04544c4016528eb72b73bad702eb0335554d99cc94b5ce49b393079f2004c177ed09a227001c175cfda5f565e19e208dceaa4815ce
7
- data.tar.gz: c006707b3070931745c4bbb891dc15189a0512647568df3867c862d56bc35937ee3ee21f3882c08e0f559659c2ff3ad2c62a492c8ec0d999ed3874eaf2e40bc0
6
+ metadata.gz: fcea9c7ea29d482546b744b97cc5acc94e7980b607c4987c3b525fb4a5bf031d2bb4a8897245d3fabf29b005de3182a1324114f280551180b10af31a79fd1997
7
+ data.tar.gz: 6eb53434e40f6de3291bfb89f93445730a0540c8bbd76e2f914cab9a86f9a33c69b3c0a30df6037f3599a76e945f7c9a91413431ccb525cfdcf5b900472e8a10
@@ -2,6 +2,7 @@ require "gotransverse-tract-api/version"
2
2
 
3
3
  require "gotransverse-tract-api/configuration"
4
4
  require "gotransverse-tract-api/hash"
5
+ require "gotransverse-tract-api/api_data"
5
6
 
6
7
  require "gotransverse-tract-api/billing_account/adjustment"
7
8
  require "gotransverse-tract-api/billing_account/adjustment_application"
@@ -155,7 +156,11 @@ module GoTransverseTractApi
155
156
  #
156
157
  def self.post_request_for(klass, api_params={}, request_body, command)
157
158
  api_url = GoTransverseTractApi.get_api_url_for(klass)
158
- api_url = "#{api_url}/#{command}"
159
+ if (api_params.empty?)
160
+ api_url = "#{api_url}/#{command}"
161
+ else
162
+ api_url = "#{api_url}/#{api_params[:eid]}/#{command}"
163
+ end
159
164
 
160
165
  self.call(klass, api_url, api_params, :post, request_body)
161
166
  end
@@ -172,6 +177,28 @@ module GoTransverseTractApi
172
177
  self.call(klass, api_url, api_params, :put, request_body.to_xml)
173
178
  end
174
179
 
180
+ #
181
+ # Generate XML for request body
182
+ #
183
+ # @param {hash} data
184
+ # @param (String} root element
185
+ #
186
+
187
+ def self.generateXML(data, root_elem)
188
+ tract_api_ver = GoTransverseTractApi::TARGET_API_VERSION
189
+ data[root_elem.to_sym][:xmlns] = "http://www.tractbilling.com/billing/#{tract_api_ver}/domain"
190
+
191
+ builder = Nokogiri::XML::Builder.new do|xml|
192
+ xml.send(root_elem,Hash[data[root_elem.to_sym]]) do
193
+ arr = []
194
+ arr << root_elem.to_sym
195
+ self.process_data(data, arr, xml)
196
+ end
197
+ end
198
+
199
+ builder.doc.root.to_xml
200
+ end
201
+
175
202
  private
176
203
 
177
204
  #
@@ -244,4 +271,27 @@ module GoTransverseTractApi
244
271
  hsh
245
272
  end
246
273
 
274
+ def self.process_data(data, arr, xml)
275
+ data.each do|key,val|
276
+ next if arr.include?(key)
277
+
278
+ if (val.is_a?Hash)
279
+ if (val.has_key?(:attributes))
280
+ xml.send(key, Hash[data[key][:attributes]]) do
281
+ arr << 'attributes'.to_sym
282
+ self.process_data(data[key],arr,xml)
283
+ end
284
+ else
285
+ xml.send(key, Hash[data[key]])
286
+ end
287
+ elsif (val.is_a?Array)
288
+ val.each do|item|
289
+ self.process_data(item,arr,xml)
290
+ end
291
+ else
292
+ xml.send(key, val)
293
+ end
294
+ end
295
+ end
296
+
247
297
  end
@@ -0,0 +1,259 @@
1
+ module GoTransverseTractApi
2
+ class ApiData
3
+
4
+ def payment_details(invoice, billing_account=nil)
5
+ data = {
6
+ applyPayment: {},
7
+ billingAccount: {
8
+ eid: invoice[:billing_account][:eid]
9
+ },
10
+ invoice: {
11
+ eid: invoice[:invoice][:eid]
12
+ },
13
+ payment: {
14
+ attributes: {
15
+ amount: invoice[:payment][:amount],
16
+ useRecurringPayment: invoice[:payment][:use_recurring_payment]
17
+ },
18
+ creditCardPayment: {
19
+ cardType: invoice[:payment][:credit_card_payment][:card_type],
20
+ cardHolderFirstName: invoice[:payment][:credit_card_payment][:card_holder_first_name],
21
+ cardHolderLastName: invoice[:payment][:credit_card_payment][:card_holder_last_name],
22
+ cardIdentifierNumber: invoice[:payment][:credit_card_payment][:card_identifier_number],
23
+ cardVerificationNumber: invoice[:payment][:credit_card_payment][:card_verification_number],
24
+ cardExpiration: invoice[:payment][:credit_card_payment][:card_expiration]
25
+ },
26
+ billingAccount: {
27
+ eid: invoice[:payment][:billing_account][:eid]
28
+ }
29
+ }
30
+ }
31
+
32
+ if(billing_account)
33
+ data[:payment][:creditCardPayment][:description] = invoice[:payment][:credit_card_payment][:description]
34
+ end
35
+ GoTransverseTractApi.generateXML(data, 'applyPayment')
36
+ end
37
+
38
+ # To suspend or deactivate the account
39
+ def shutdown(billing_account, eid, root_elem)
40
+ data = {
41
+ billingAccount: {eid: eid},
42
+ reason: {eid: billing_account[:reason][:eid]}
43
+ }
44
+
45
+ data[root_elem.to_sym] = {}
46
+
47
+ GoTransverseTractApi.generateXML(data, root_elem)
48
+ end
49
+
50
+ # Returns {Hash} a list of sales order details
51
+ def sales_order_details(sales_order)
52
+ so_details = {
53
+ attributes: {
54
+ referral: sales_order[:referral],
55
+ orderDate: sales_order[:order_date],
56
+ orderStatus: sales_order[:order_status]
57
+ },
58
+ orderItems: {
59
+ attributes: get_page_info(sales_order[:order_items]),
60
+ order_item: {
61
+ attributes: {
62
+ quantity: sales_order[:order_items][:order_item][:quantity]
63
+ },
64
+ products: get_products(sales_order)
65
+ }
66
+ },
67
+ billingAccount: get_billing_account(sales_order[:billing_account])
68
+ }
69
+
70
+ so_details
71
+ end
72
+
73
+ # Returns [Array] Products
74
+ def get_products(sales_order)
75
+ products = []
76
+
77
+ items = sales_order[:order_items][:order_item][:products]
78
+
79
+ (0..items.size - 1).each do|i|
80
+ products << {
81
+ product: {
82
+ attributes: {
83
+ name: items[i][:name],
84
+ description: items[i][:description],
85
+ shortDescription: items[i][:short_description],
86
+ productTypeCode: items[i][:product_type_code],
87
+ productState: items[i][:product_state],
88
+ requiresAgreement: items[i][:requires_agreement],
89
+ serialized: items[i][:serialized],
90
+ taxable: items[i][:taxable],
91
+ trial: items[i][:trial],
92
+ defaultQuantity: items[i][:default_quantity],
93
+ minServiceResources: items[i][:min_service_resources],
94
+ maxServiceResources: items[i][:max_service_resources],
95
+ trialOverride: items[i][:trial_override],
96
+ eid: items[i][:eid]
97
+ },
98
+ productPrices: {
99
+ attributes: get_page_info(items[i][:product_prices]),
100
+ productPrices: get_product_prices(items[i])
101
+ },
102
+ productCategory: {
103
+ name: items[i][:product_category][:name],
104
+ description: items[i][:product_category][:description],
105
+ status: items[i][:product_category][:status],
106
+ eid: items[i][:product_category][:eid]
107
+ },
108
+ actions: get_page_info(items[i][:actions]),
109
+ productUsageRules: get_page_info(items[i][:product_usage_rules])
110
+ }
111
+ }
112
+ end
113
+
114
+ products
115
+ end
116
+
117
+ # Returns [Array] Product Prices
118
+ def get_product_prices(product)
119
+ product_prices = []
120
+
121
+ count = product[:product_prices][:total_elements].to_i
122
+
123
+ (0..count - 1).each do|i|
124
+ product_price = product[:product_prices][:productprices][i]
125
+
126
+ product_prices << {
127
+ productPrice: {
128
+ attributes: {
129
+ fromDate: product_price[:from_date],
130
+ priceOverride: product_price[:price_override],
131
+ type: product_price[:type],
132
+ recurringPaymentRequired: product_price[:recurring_payment_required],
133
+ eid: product_price[:eid]
134
+ },
135
+ priceRanges: {
136
+ attributes: get_page_info(product_price[:price_ranges]),
137
+ priceRanges: get_price_ranges(product_price)
138
+ }
139
+ }
140
+ }
141
+ end
142
+
143
+ product_prices
144
+ end
145
+
146
+ # Returns [Array] Price Ranges
147
+ def get_price_ranges(product_price)
148
+ price_ranges = []
149
+
150
+ count = product_price[:price_ranges][:total_elements].to_i
151
+
152
+ (0..count - 1).each do|i|
153
+ price_range = product_price[:price_ranges][:priceranges][i]
154
+
155
+ price_ranges << {
156
+ priceRange: {
157
+ quantityBeginRange: price_range[:quantity_begin_range],
158
+ price: price_range[:price],
159
+ level: price_range[:level],
160
+ eid: price_range[:eid]
161
+ }
162
+ }
163
+ end
164
+
165
+ price_ranges
166
+ end
167
+
168
+ def get_page_info(category)
169
+ {
170
+ pageNumber: category[:page_number],
171
+ pageSize: category[:page_size],
172
+ totalElements: category[:total_elements],
173
+ elementCount: category[:element_count],
174
+ totalPages: category[:total_pages]
175
+ }
176
+ end
177
+
178
+ def get_billing_account(billing_account)
179
+ ba_details = {
180
+ attributes: {
181
+ accountNum: billing_account[:account_num],
182
+ billType: billing_account[:bill_type],
183
+ automaticRecurringPayment: billing_account[:automatic_recurring_payment],
184
+ status: billing_account[:status],
185
+ pendingChargesTotal: billing_account[:pending_charges_total],
186
+ balance: billing_account[:balance],
187
+ startDate: billing_account[:start_date],
188
+ taxExempt: billing_account[:tax_exempt],
189
+ eid: billing_account[:eid]
190
+ },
191
+ dailyBillCycle: {
192
+ name: billing_account[:daily_bill_cycle][:name],
193
+ startDate: billing_account[:daily_bill_cycle][:start_date],
194
+ endDate: billing_account[:daily_bill_cycle][:end_date],
195
+ billCycleType: billing_account[:daily_bill_cycle][:bill_cycle_type],
196
+ autoBill: billing_account[:daily_bill_cycle][:auto_bill],
197
+ usePaymentTerm: billing_account[:daily_bill_cycle][:use_payment_term],
198
+ status: billing_account[:daily_bill_cycle][:status],
199
+ eid: billing_account[:daily_bill_cycle][:eid]
200
+ },
201
+ person: {
202
+ attributes: {
203
+ firstName: billing_account[:person][:first_name],
204
+ lastName: billing_account[:person][:last_name],
205
+ eid: billing_account[:person][:eid]
206
+ },
207
+ addresses: get_addresses(billing_account[:person])
208
+ },
209
+ billingAccountCategory: {
210
+ type: billing_account[:billing_account_category][:type],
211
+ description: billing_account[:billing_account_category][:description],
212
+ status: billing_account[:billing_account_category][:status],
213
+ eid: billing_account[:billing_account_category][:eid]
214
+ },
215
+ paymentTerm: {
216
+ name: billing_account[:payment_term][:name],
217
+ termDays: billing_account[:payment_term][:term_days],
218
+ graceDays: billing_account[:payment_term][:grace_days],
219
+ eid: billing_account[:payment_term][:eid]
220
+ }
221
+ }
222
+
223
+ ba_details
224
+ end
225
+
226
+ def get_addresses(entity)
227
+ addresses = {
228
+ attributes: {},
229
+ emailAddress: {
230
+ purpose: entity[:addresses][:email_address][:purpose],
231
+ email: entity[:addresses][:email_address][:email],
232
+ eid: entity[:addresses][:email_address][:eid] || ''
233
+ },
234
+ postalAddress: {
235
+ purpose: entity[:addresses][:postal_address][:purpose],
236
+ country: entity[:addresses][:postal_address][:country],
237
+ city: entity[:addresses][:postal_address][:city],
238
+ regionOrState: entity[:addresses][:postal_address][:region_or_state],
239
+ attention: entity[:addresses][:postal_address][:attention],
240
+ postalCode: entity[:addresses][:postal_address][:postal_code],
241
+ line1: entity[:addresses][:postal_address][:line1],
242
+ eid: entity[:addresses][:postal_address][:eid] || ''
243
+ },
244
+ telecomAddress: {
245
+ dialingPrefix: entity[:addresses][:telecom_address][:dialing_prefix],
246
+ countryCode: entity[:addresses][:telecom_address][:country_code],
247
+ areaCode: entity[:addresses][:telecom_address][:area_code],
248
+ number: entity[:addresses][:telecom_address][:number],
249
+ extension: entity[:addresses][:telecom_address][:extension],
250
+ purpose: entity[:addresses][:telecom_address][:purpose],
251
+ eid: entity[:addresses][:telecom_address][:eid] || ''
252
+ }
253
+ }
254
+
255
+ addresses.each{|k,v| v.delete_if{|tags,data| data == ''}}
256
+ end
257
+
258
+ end
259
+ end
@@ -53,7 +53,17 @@ module GoTransverseTractApi
53
53
  # @param {Hash} adjustment
54
54
  #
55
55
  def post eid, adjustment
56
- GoTransverseTractApi.post_request_for(self, {eid: eid}, adjustment, "post")
56
+ data = {
57
+ :postAdjustment => {},
58
+ :adjustment => {
59
+ :attributes => {
60
+ eid: adjustment[:eid]
61
+ }
62
+ }
63
+ }
64
+
65
+ xml_data = GoTransverseTractApi.generateXML(data, 'postAdjustment')
66
+ GoTransverseTractApi.post_request_for(self, {eid: eid}, xml_data, "post")
57
67
  end
58
68
 
59
69
  #
@@ -61,7 +71,15 @@ module GoTransverseTractApi
61
71
  # @param {Hash} adjustment
62
72
  #
63
73
  def reverse eid, adjustment
64
- GoTransverseTractApi.post_request_for(self, {eid: eid}, adjustment, "reverse")
74
+ data = {
75
+ :reverseAdjustment => {
76
+ :fullAmount => adjustment[:full_amount]
77
+ },
78
+ :adjustment => make_adjustment(adjustment)
79
+ }
80
+
81
+ xml_data = GoTransverseTractApi.generateXML(data, 'reverseAdjustment')
82
+ GoTransverseTractApi.post_request_for(self, {eid: eid}, xml_data, "reverse")
65
83
  end
66
84
 
67
85
  #
@@ -69,7 +87,23 @@ module GoTransverseTractApi
69
87
  # @param {Hash} adjustment
70
88
  #
71
89
  def add_invoice_application eid, adjustment
72
- GoTransverseTractApi.post_request_for(self, {eid: eid}, adjustment, "addInvoiceApplication")
90
+
91
+ account_adjustment = make_adjustment(adjustment)
92
+
93
+ data = {
94
+ :addInvoiceApplicationToAdjustment => {},
95
+ :adjustment => account_adjustment,
96
+ :invoiceAdjustmentApplication => {
97
+ :attributes => {
98
+ :amount => adjustment[:invoice_adjustment_application][:amount]
99
+ },
100
+ :accountAdjustment => account_adjustment,
101
+ :invoice => get_invoice(adjustment, account_adjustment)
102
+ }
103
+ }
104
+
105
+ xml_data = GoTransverseTractApi.generateXML(data, 'addInvoiceApplicationToAdjustment')
106
+ GoTransverseTractApi.post_request_for(self, {eid: eid}, xml_data, "addInvoiceApplication")
73
107
  end
74
108
 
75
109
  #
@@ -77,14 +111,180 @@ module GoTransverseTractApi
77
111
  # @param {Hash} adjustment
78
112
  #
79
113
  def reverse_invoice_application eid, adjustment
80
- GoTransverseTractApi.post_request_for(self, {eid: eid}, adjustment, "reverseInvoiceApplication")
114
+
115
+ account_adjustment = make_adjustment(adjustment)
116
+
117
+ data = {
118
+ :reverseInvoiceApplicationFromAdjustment => {},
119
+ :adjustment => account_adjustment,
120
+ :invoiceAdjustmentApplication => {
121
+ :attributes => {
122
+ :reversed => adjustment[:invoice_adjustment_application][:reversed],
123
+ :appliedOn => adjustment[:invoice_adjustment_application][:applied_on],
124
+ :amount => adjustment[:invoice_adjustment_application][:amount],
125
+ eid: adjustment[:invoice_adjustment_application][:eid]
126
+ },
127
+ :accountAdjustment => {
128
+ :attributes => {
129
+ :occurredOn => adjustment[:occurred_on],
130
+ :amount => adjustment[:amount],
131
+ :description => adjustment[:description],
132
+ :invoiced => adjustment[:invoice_adjustment_application][:account_adjustment][:invoiced],
133
+ :credit => adjustment[:invoice_adjustment_application][:account_adjustment][:credit],
134
+ :status => adjustment[:invoice_adjustment_application][:account_adjustment][:status],
135
+ :type => adjustment[:type],
136
+ :posted_on => adjustment[:invoice_adjustment_application][:account_adjustment][:posted_on],
137
+ :posted_by => adjustment[:invoice_adjustment_application][:account_adjustment][:posted_by],
138
+ :manualInvoiceApplication => adjustment[:manual_invoice_application],
139
+ eid: adjustment[:eid]
140
+ },
141
+ :billingAccount => account_adjustment[:billingAccount],
142
+ :reason => account_adjustment[:reason],
143
+ :adjustmentApplications => account_adjustment[:billingAccount][:services]
144
+ },
145
+ :invoice => get_invoice(adjustment, account_adjustment)
146
+ }
147
+ }
148
+
149
+ xml_data = GoTransverseTractApi.generateXML(data, 'reverseInvoiceApplicationFromAdjustment')
150
+ GoTransverseTractApi.post_request_for(self, {eid: eid}, xml_data, "reverseInvoiceApplication")
81
151
  end
82
152
 
83
153
  #
84
154
  # @param {Hash} adjustment
85
155
  #
86
156
  def create_adjustment adjustment
87
- GoTransverseTractApi.post_request_for(self, {}, adjustment, "")
157
+
158
+ data = {
159
+ :adjustment => {
160
+ :occurredOn => adjustment[:occurred_on],
161
+ :amount => adjustment[:amount],
162
+ :description => adjustment[:description],
163
+ :type => adjustment[:type],
164
+ :credit => adjustment[:credit],
165
+ :posted => adjustment[:posted]
166
+ },
167
+ :billingAccount => {
168
+ eid: adjustment[:billing_account][:eid]
169
+ },
170
+ :reason => {
171
+ eid: adjustment[:reason][:eid]
172
+ }
173
+ }
174
+
175
+ xml_data = GoTransverseTractApi.generateXML(data, 'adjustment')
176
+ GoTransverseTractApi.post_request_for(self, {}, xml_data, "")
177
+ end
178
+
179
+ private
180
+
181
+ def get_invoice (adjustment, account_adjustment)
182
+ {
183
+ :attributes => {
184
+ :invoiceNum => adjustment[:invoice_adjustment_application][:invoice][:invoice_num],
185
+ :amount => adjustment[:invoice_adjustment_application][:invoice][:amount],
186
+ :pdfPath => adjustment[:invoice_adjustment_application][:invoice][:pdf_path],
187
+ :occurredOn => adjustment[:invoice_adjustment_application][:invoice][:occurred_on],
188
+ :dueDate => adjustment[:invoice_adjustment_application][:invoice][:due_date],
189
+ :amountToPay => adjustment[:invoice_adjustment_application][:invoice][:amount_to_pay],
190
+ :lateFeeCharged => adjustment[:invoice_adjustment_application][:invoice][:late_fee_charged],
191
+ :status => adjustment[:invoice_adjustment_application][:invoice][:status],
192
+ :usageCsvPath => adjustment[:invoice_adjustment_application][:invoice][:usage_csv_path],
193
+ eid: adjustment[:invoice_adjustment_application][:invoice][:eid]
194
+ },
195
+ :billingAccount => account_adjustment[:billingAccount],
196
+ :billCycle => account_adjustment[:billingAccount][:dailyBillCycle],
197
+ :invoiceItems => account_adjustment[:billingAccount][:services]
198
+ }
199
+ end
200
+
201
+ def make_adjustment adjustment
202
+ adjustment = {
203
+ :attributes => {
204
+ :occurredOn => adjustment[:occurred_on],
205
+ :amount => adjustment[:amount],
206
+ :description => adjustment[:description],
207
+ :invoiced => adjustment[:invoiced],
208
+ :credit => adjustment[:credit],
209
+ :status => adjustment[:status],
210
+ :type => adjustment[:type],
211
+ :manualInvoiceApplication => adjustment[:manual_invoice_application],
212
+ eid: adjustment[:eid]
213
+ },
214
+ :billingAccount => {
215
+ :attributes => {
216
+ :accountNum => adjustment[:billing_account][:account_num],
217
+ :billType => adjustment[:billing_account][:bill_type],
218
+ :automaticRecurringPayment => adjustment[:billing_account][:automatic_recurring_payment],
219
+ :status => adjustment[:billing_account][:status],
220
+ :pendingChargesTotal => adjustment[:billing_account][:pending_charges_total],
221
+ :balance => adjustment[:billing_account][:balance],
222
+ :startDate => adjustment[:billing_account][:start_date],
223
+ :taxExempt => adjustment[:billing_account][:tax_exempt],
224
+ eid: adjustment[:billing_account][:eid]
225
+ },
226
+ :dailyBillCycle => {
227
+ :name => adjustment[:billing_account][:daily_bill_cycle][:name],
228
+ :startDate => adjustment[:billing_account][:daily_bill_cycle][:start_date],
229
+ :endDate => adjustment[:billing_account][:daily_bill_cycle][:end_date],
230
+ :billCycleType => adjustment[:billing_account][:daily_bill_cycle][:bill_cycle_type],
231
+ :autoBill => adjustment[:billing_account][:daily_bill_cycle][:auto_bill],
232
+ :usePaymentTerm => adjustment[:billing_account][:daily_bill_cycle][:use_payment_term],
233
+ :status => adjustment[:billing_account][:daily_bill_cycle][:status],
234
+ eid: adjustment[:billing_account][:daily_bill_cycle][:eid]
235
+ },
236
+ :person => {
237
+ :attributes => {
238
+ :firstName => adjustment[:billing_account][:person][:first_name],
239
+ :lastName => adjustment[:billing_account][:person][:last_name],
240
+ eid: adjustment[:billing_account][:person][:eid]
241
+ },
242
+ :addresses => {
243
+ :attributes => {},
244
+ :postalAddress => {
245
+ :purpose => adjustment[:billing_account][:person][:addresses][:postal_address][:purpose],
246
+ :country => adjustment[:billing_account][:person][:addresses][:postal_address][:country],
247
+ :city => adjustment[:billing_account][:person][:addresses][:postal_address][:city],
248
+ :regionOrState => adjustment[:billing_account][:person][:addresses][:postal_address][:region_or_state],
249
+ :postalCode => adjustment[:billing_account][:person][:addresses][:postal_address][:postal_code],
250
+ :line1 => adjustment[:billing_account][:person][:addresses][:postal_address][:line1],
251
+ eid: adjustment[:billing_account][:person][:addresses][:postal_address][:eid]
252
+ },
253
+ :emailAddress => {
254
+ :purpose => adjustment[:billing_account][:person][:addresses][:email_address][:purpose],
255
+ :email => adjustment[:billing_account][:person][:addresses][:email_address][:email],
256
+ eid: adjustment[:billing_account][:person][:addresses][:email_address][:eid]
257
+ }
258
+ }
259
+ },
260
+ :billingAccountCategory => {
261
+ :type => adjustment[:billing_account][:billing_account_category][:type],
262
+ :description => adjustment[:billing_account][:billing_account_category][:description],
263
+ :status => adjustment[:billing_account][:billing_account_category][:status],
264
+ eid: adjustment[:billing_account][:billing_account_category][:eid]
265
+ },
266
+ :services => {
267
+ :pageNumber => adjustment[:billing_account][:services][:page_number],
268
+ :pageSize => adjustment[:billing_account][:services][:page_size],
269
+ :totalElements => adjustment[:billing_account][:services][:total_elements],
270
+ :elementCount => adjustment[:billing_account][:services][:element_count],
271
+ :totalPages => adjustment[:billing_account][:services][:total_pages]
272
+ },
273
+ :paymentTerm => {
274
+ :name => adjustment[:billing_account][:payment_term][:name],
275
+ :termDays => adjustment[:billing_account][:payment_term][:term_days],
276
+ :graceDays => adjustment[:billing_account][:payment_term][:grace_days],
277
+ eid: adjustment[:billing_account][:payment_term][:eid]
278
+ }
279
+ },
280
+ :reason => {
281
+ :name => adjustment[:reason][:name],
282
+ :description => adjustment[:reason][:description],
283
+ :status => adjustment[:reason][:status],
284
+ :creditOnly => adjustment[:reason][:credit_only],
285
+ eid: adjustment[:reason][:eid]
286
+ }
287
+ }
88
288
  end
89
289
 
90
290
  end