gotransverse-tract-api 0.15.0 → 0.16.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3747047d9067f773dc326918d902bc2a0c6288af
4
- data.tar.gz: 73208d4e051fee1c7a277c49c7c5febb4af723af
3
+ metadata.gz: ade70bd9064241aa193a7f6345ae4fb9e599287e
4
+ data.tar.gz: d6d307631ac9f0311d180550a2fc0686660db8fb
5
5
  SHA512:
6
- metadata.gz: c4a3a20084987c5d168b24b50d9f6e818384f232decb27aa3e8277ef6baed1ad37cd5579723db2aa3f60323b1cf1a39f3b9a05c24881935f566f6ccbd72d95f6
7
- data.tar.gz: 9e2b582598fed4ec0f83452234783a6fe9c9b9bc2391c1a27921a6305e020ab22a1037d6b9d804120ea2611b307f4160c30fc92c5487e30285e273e7cec6e41b
6
+ metadata.gz: 1c415d8bebd84fd852659a4ba1f249feaaf158721c874be40aadebcd60964b22ddfdeabbd8a88942d969e9630c480856bd55571e6e1fd0bdeb3feb4f2deed46c
7
+ data.tar.gz: eb997a8f6b129821c0e87856ee94b8d95bfe6c9a1998437b846cce0f7d20d297d69a97352f808973e58e2a2e925d920e9f9118f92709f6c3a5e5eee57fc14e80
@@ -385,13 +385,42 @@ module GoTransverseTractApi
385
385
  # @param {Hash} billing_account
386
386
  #
387
387
  def create_billing_account billing_account
388
- data = {
388
+ bill_cycle = {}
389
+ recurring_payments = {}
390
+
391
+ bill_type = {
389
392
  billingAccount: {
390
393
  billType: billing_account[:bill_type]
391
- },
392
- dailyBillCycle: {
393
- eid: billing_account[:daily_bill_cycle][:eid]
394
- },
394
+ }
395
+ }
396
+
397
+ if(billing_account.has_key?(:daily_bill_cycle))
398
+ bill_cycle = {
399
+ dailyBillCycle: {
400
+ eid: billing_account[:daily_bill_cycle][:eid]
401
+ }
402
+ }
403
+ elsif(billing_account.has_key?(:monthly_bill_cycle))
404
+ bill_cycle = {
405
+ monthlyBillCycle: {
406
+ eid: billing_account[:monthly_bill_cycle][:eid]
407
+ }
408
+ }
409
+ elsif(billing_account.has_key?(:quarterly_bill_cycle))
410
+ bill_cycle = {
411
+ quarterlyBillCycle: {
412
+ eid: billing_account[:quarterly_bill_cycle][:eid]
413
+ }
414
+ }
415
+ elsif(billing_account.has_key?(:yearly_bill_cycle))
416
+ bill_cycle = {
417
+ yearlyBillCycle: {
418
+ eid: billing_account[:yearly_bill_cycle][:eid]
419
+ }
420
+ }
421
+ end
422
+
423
+ data = {
395
424
  organization: {
396
425
  attributes: {
397
426
  name: billing_account[:organization][:name]
@@ -406,6 +435,23 @@ module GoTransverseTractApi
406
435
  eid: billing_account[:payment_term][:eid]
407
436
  }
408
437
  }
438
+
439
+ if(billing_account.has_key?(:recurring_payments))
440
+ recurring_payments = {
441
+ recurringPayments: {
442
+ attributes: {},
443
+ recurringPayment: {
444
+ attributes: {},
445
+ referencedCreditCardPaymentMethod: {
446
+ referenceKey: billing_account[:recurring_payments][:recurring_payment][:referenced_credit_card_payment_method][:reference_key]
447
+ }
448
+ }
449
+ }
450
+ }
451
+ end
452
+
453
+ data = GoTransverseTractApi::ApiData.new.compact(bill_type.merge bill_cycle.merge data.merge recurring_payments)
454
+
409
455
  xml_data = GoTransverseTractApi.generateXML(data, 'billingAccount')
410
456
  GoTransverseTractApi.post_request_for(self, {}, xml_data, "")
411
457
  end
@@ -227,6 +227,8 @@ module GoTransverseTractApi
227
227
  #
228
228
 
229
229
  def self.get_order_item(order_item)
230
+
231
+ # The following order item keys are optional in TRACT system
230
232
  if order_item.has_key?(:price_list)
231
233
  price_list = Product::PriceList.get_price_list(order_item[:price_list])
232
234
  end
@@ -259,6 +261,10 @@ module GoTransverseTractApi
259
261
  agreement_configuration = AgreementConfiguration.get_agreement_conf(order_item[:agreement_configuration])
260
262
  end
261
263
 
264
+ if order_item.has_key?(:selected_agreement)
265
+ selected_agreement = Agreement.get_selected_agreement(order_item[:selected_agreement])
266
+ end
267
+
262
268
  if order_item.has_key?(:onetime_product_price)
263
269
  # We can add later this one as a separate class for getting all other attributes
264
270
  onetime_product_price = {
@@ -268,6 +274,13 @@ module GoTransverseTractApi
268
274
  }
269
275
  end
270
276
 
277
+ # The parent orderItems may have child orderItems
278
+ if order_item.has_key?(:order_items)
279
+ order_items = {
280
+ attributes: {},
281
+ orderItem: GoTransverseTractApi::ApiData.new.get_order_items(order_item[:order_items][:order_item])
282
+ }
283
+ end
271
284
 
272
285
  orderItem = {
273
286
  attributes: {
@@ -286,8 +299,9 @@ module GoTransverseTractApi
286
299
  onetimeProductPrice: onetime_product_price,
287
300
  customFieldValues: custom_field_values,
288
301
  product: Product::Product.get_product_info(order_item[:product]),
302
+ orderItems: order_items,
289
303
  priceList: price_list,
290
- selectedAgreement: Agreement.get_selected_agreement(order_item[:selected_agreement]),
304
+ selectedAgreement: selected_agreement,
291
305
  serviceResources: service_resources,
292
306
  inventoryItem: inventory_item,
293
307
  agreementConfiguration: agreement_configuration,
@@ -1,6 +1,6 @@
1
1
  module GoTransverseTractApi
2
2
 
3
- VERSION = "0.15.0"
3
+ VERSION = "0.16.0"
4
4
  TARGET_API_VERSION = "1.29"
5
5
 
6
6
  end
@@ -180,26 +180,58 @@ module GoTransverseTractApi
180
180
  end
181
181
  end
182
182
 
183
- context ".create_billing_account" do
184
- it "creates a billing account" do
185
- data = {
186
- bill_type: 'NONE',
187
- daily_bill_cycle: { eid:'38' },
188
- organization: {
189
- name: 'LMH Services',
190
- addresses: addresses.delete_if{|k,v| k == :telecom_address}
191
- },
192
- billing_account_category: {
193
- eid: '6'
194
- },
195
- payment_term: {
196
- name: 'Immediate',
197
- eid: '8'
183
+ describe ".create_billing_account" do
184
+ context "for daily bill cycle" do
185
+ it "creates a billing account" do
186
+ data = {
187
+ bill_type: 'NONE',
188
+ daily_bill_cycle: { eid:'38' },
189
+ organization: {
190
+ name: 'LMH Services',
191
+ addresses: addresses.delete_if{|k,v| k == :telecom_address}
192
+ },
193
+ billing_account_category: {
194
+ eid: '6'
195
+ },
196
+ payment_term: {
197
+ name: 'Immediate',
198
+ eid: '8'
199
+ }
200
+ }
201
+
202
+ allow(subject).to receive(:create_billing_account).with(data).and_return(response)
203
+ expect(subject.create_billing_account(data)).to eq(response)
204
+ end
205
+ end
206
+
207
+ context "for monthly bill cycle" do
208
+ it "creates a billing account" do
209
+ data = {
210
+ bill_type: 'EMAIL',
211
+ monthly_bill_cycle: { eid:'38' },
212
+ organization: {
213
+ name: 'LMH Services',
214
+ addresses: addresses.delete_if{|k,v| k == :telecom_address}
215
+ },
216
+ billing_account_category: {
217
+ eid: '6'
218
+ },
219
+ payment_term: {
220
+ name: 'Immediate',
221
+ eid: '8'
222
+ },
223
+ recurring_payments: {
224
+ recurring_payment: {
225
+ referenced_credit_card_payment_method: {
226
+ reference_key: '2342gjg224g24h1khk1rweyf93'
227
+ }
228
+ }
229
+ }
198
230
  }
199
- }
200
231
 
201
- allow(subject).to receive(:create_billing_account).with(data).and_return(response)
202
- expect(subject.create_billing_account(data)).to eq(response)
232
+ allow(subject).to receive(:create_billing_account).with(data).and_return(response)
233
+ expect(subject.create_billing_account(data)).to eq(response)
234
+ end
203
235
  end
204
236
  end
205
237
 
@@ -340,24 +372,70 @@ module GoTransverseTractApi
340
372
  }
341
373
  }
342
374
  }
343
- it "creates a draft sales order without a promo code for the billing account" do
344
- allow(subject).to receive(:create_draft_order).with(eid, data).and_return(response)
345
- expect(subject.create_draft_order(eid, data)).to eq(response)
375
+
376
+ let(:soi_data) { {
377
+ sales_order: {
378
+ referral: '',
379
+ order_date: '2016-01-28T172213',
380
+ order_status: 'DRAFT',
381
+ custom_field_values: {
382
+ custom_field_value: {
383
+ value: 'ST',
384
+ custom_field: {eid: '26'}
385
+ }
386
+ },
387
+ order_items: {
388
+ order_item: {
389
+ recurring_unit_price: '0.00',
390
+ quantity: '1',
391
+ sequence: '1',
392
+ description: 'Data Subscription',
393
+ product: { eid: '111' },
394
+ recurring_product_price: { eid: '294' },
395
+ order_items: {
396
+ order_item: {
397
+ recurring_unit_price: '0.10',
398
+ quantity: '1500',
399
+ sequence: '2',
400
+ description: 'LAP',
401
+ product: { eid: '110' },
402
+ recurring_product_price: { eid: '301' }
403
+ }
404
+ }
405
+ }
406
+ },
407
+ billing_account: { eid: eid }
408
+ }
409
+ }
410
+ }
411
+
412
+ context "when SOI upsell products" do
413
+ it "creates a draft sales order without a promo code for the billing account" do
414
+ allow(subject).to receive(:create_draft_order).with(eid, soi_data).and_return(response)
415
+ expect(subject.create_draft_order(eid, soi_data)).to eq(response)
416
+ end
346
417
  end
347
418
 
348
- it "creates a draft sales order with promo code for the billing account" do
349
- promo_code = {
350
- discount_configurations: {
351
- discount_configuration: {
352
- discount_identifier: { eid:'35' }
419
+ context "when no SOI upsell products" do
420
+ it "creates a draft sales order without a promo code for the billing account" do
421
+ allow(subject).to receive(:create_draft_order).with(eid, data).and_return(response)
422
+ expect(subject.create_draft_order(eid, data)).to eq(response)
423
+ end
424
+
425
+ it "creates a draft sales order with promo code for the billing account" do
426
+ promo_code = {
427
+ discount_configurations: {
428
+ discount_configuration: {
429
+ discount_identifier: { eid:'35' }
430
+ }
353
431
  }
354
432
  }
355
- }
356
433
 
357
- [0,1].each { |i| data[:sales_order][:order_items][:order_item][i].merge! promo_code }
434
+ [0,1].each { |i| data[:sales_order][:order_items][:order_item][i].merge! promo_code }
358
435
 
359
- allow(subject).to receive(:create_draft_order).with(eid, data).and_return(response)
360
- expect(subject.create_draft_order(eid, data)).to eq(response)
436
+ allow(subject).to receive(:create_draft_order).with(eid, data).and_return(response)
437
+ expect(subject.create_draft_order(eid, data)).to eq(response)
438
+ end
361
439
  end
362
440
  end
363
441
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gotransverse-tract-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.0
4
+ version: 0.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julien DeFrance
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-05-18 00:00:00.000000000 Z
12
+ date: 2016-06-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -259,7 +259,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
259
259
  version: '0'
260
260
  requirements: []
261
261
  rubyforge_project:
262
- rubygems_version: 2.4.5.1
262
+ rubygems_version: 2.4.8
263
263
  signing_key:
264
264
  specification_version: 4
265
265
  summary: A ruby gem allowing developers to conveniently integrate with GoTransverse's