centaman 3.1.2 → 4.0.1

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
  SHA256:
3
- metadata.gz: 1100e1ece5b854e6151d03e89f775f7c102b3573c7cc031c46c8f8eb1050ad5f
4
- data.tar.gz: 0245d7675e9c500f1997b752f209b5df2e93b7b4a7ac32a1954d2654db022485
3
+ metadata.gz: 7311055cea87cef5bf2d6d28d2f8eb859f7a88bc8febfce4b6f6efe6a69a9a9d
4
+ data.tar.gz: f36658d112d887281f87e3922e57333007330c52373f3abd457a916f5e3a52d1
5
5
  SHA512:
6
- metadata.gz: b99539759b962659793845fde6d7679fb174b56454476b4a7e98a25304080d475481f7fede81727a695a7f25d4a171d1758e7c975fb4c85bf919d93670e3a59c
7
- data.tar.gz: b16531faf367954d1999786d87de8a39b5a42661961df428416ada9e95906075114f4ea7d3a9b4c402640a2bb93bc3d5c9f258be6b4e2da6b8ba9b8c9e788344
6
+ metadata.gz: 3dced37d4a7fe3f3c53f74052294f382c6ce317f97181d893bd2b7bf2d881995f9f2a6fa71dea112d06114e11bcf8072bb6466be2bdfbf09d04358df164edb1c
7
+ data.tar.gz: 4a17cd91245a53334dc044d9c583086984a3d64ad6112706f7c8258e47d2de6490107fe0c6e77512e4555791464e0a707c975e3ff865d44ac9218471ef3d87f9
@@ -3,7 +3,7 @@ require 'timeout'
3
3
  module Centaman
4
4
  #:nodoc:
5
5
  class Service < Wrapper
6
- DEFAULT_TIMEOUT_TIME = 20
6
+ DEFAULT_TIMEOUT_TIME = 15
7
7
 
8
8
  def after_init(args)
9
9
  # overwritten by subclasses
@@ -1,43 +1,51 @@
1
1
  module Centaman
2
2
  class Service::PurchaseMembership < Centaman::Service
3
3
  attr_reader :payment_reference, :order_info, :checkout_service, :coupon_service,
4
- :members, :memberships, :add_ons, :membership_type_id,
5
- :is_new, :purchaser_renewal, :coupon
4
+ :members, :add_ons, :membership_type_id, :memberships,
5
+ :is_new, :coupon, :has_card_discount, :join_date, :expiry_date, :purchaser_renewal
6
6
 
7
- def after_init(args)
7
+ def after_init(args={})
8
8
  @payment_reference = args[:payment_reference]
9
- @is_new = true
10
9
  @order_info = args[:order_info]
11
- @purchaser_renewal = order_info.is_renewal
10
+ @is_new = args.fetch(:is_new, false)
11
+ @has_card_discount = @order_info.fnbo_discount
12
12
  @checkout_service = args[:checkout_service]
13
13
  @coupon_service = args[:coupon_service]
14
14
  @membership_type_id = @order_info.membership_type_id
15
- @members = @order_info.members
15
+ @members = args.fetch(:members, [])
16
16
  @add_ons = @checkout_service.add_ons
17
17
  @memberships = []
18
18
  @coupon = @coupon_service.valid_coupon
19
- build_membership_request
19
+ @join_date = args.fetch(:join_date, nil)
20
+ @expiry_date = args.fetch(:expiry_date, nil)
21
+ @purchaser_renewal = args.fetch(:purchaser_renewal, false)
20
22
  end
21
23
 
22
24
  def endpoint
23
25
  "/member_services/Membership?isNew=#{is_new}"
24
26
  end
25
27
 
26
- def membership_payload(member_id, add_on)
28
+ def membership_payload(member, add_on)
29
+ p 'dates'
30
+ p join_date, expiry_date
27
31
  payload = {
28
- 'MemberCode': member_id,
32
+ 'MemberCode': member.id,
29
33
  'TypeCode': add_on.id,
30
34
  'Cost': add_on.cost,
31
- 'Tax': 0,
35
+ 'Tax': checkout_service.add_on_tax(add_on),
32
36
  'Paid': add_on.pay_price,
33
37
  'PackageID': membership_type_id,
34
- 'PurchaserRenewal': purchaser_renewal
35
- }
36
- coupon.present? ? payload.merge(coupon_args(add_on)) : payload
38
+ 'PurchaserRenewal': purchaser_renewal,
39
+ 'PaymentGatewayReference': payment_reference,
40
+ 'JoinDate': join_date,
41
+ 'ExpiryDate': expiry_date
42
+ }.compact
43
+ payload = coupon.present? ? payload.merge(coupon_args(add_on)) : payload
44
+ payload = has_card_discount ? payload.merge(card_discount_args(add_on)) : payload
37
45
  end
38
46
 
39
47
  def coupon_args(add_on)
40
- return empty_coupon_args unless coupon_service.coupon_applies(add_on)
48
+ return {} unless coupon_service.coupon_applies(add_on)
41
49
  {
42
50
  'Coupon': {
43
51
  "CouponCode": coupon.code,
@@ -47,6 +55,16 @@ module Centaman
47
55
  }
48
56
  end
49
57
 
58
+ def card_discount_args(add_on)
59
+ return {} unless add_on.add_on_type == 'primary'
60
+ {
61
+ 'CardDiscount': {
62
+ 'DiscountAmount': checkout_service.fnbo_amount,
63
+ 'StockID': checkout_service.fnbo_stock_id
64
+ }
65
+ }
66
+ end
67
+
50
68
  def empty_coupon_args
51
69
  {
52
70
  'Coupon': {
@@ -57,16 +75,51 @@ module Centaman
57
75
  }
58
76
  end
59
77
 
78
+ def empty_card_args
79
+ {
80
+ 'CardDiscount': {
81
+ 'DiscountAmount': 0,
82
+ 'StockID': nil
83
+ }
84
+ }
85
+ end
86
+
87
+ # def renewal_request
88
+ # p "build renewal_request"
89
+ # renewal_members.map do |m|
90
+ # order_info.add_ons_for_member(add_ons, m.member_type).each do |ao|
91
+ # @renewal_memberships << membership_payload(m, ao)
92
+ # end
93
+ # end
94
+ # @renewal_memberships = @renewal_memberships.uniq
95
+ # end
96
+
97
+ # def new_membership_request
98
+ # p "building new_membership_request"
99
+ # new_members.map do |m|
100
+ # order_info.add_ons_for_member(add_ons, m.member_type).each do |ao|
101
+ # @new_memberships << membership_payload(m, ao)
102
+ # end
103
+ # end
104
+ # @new_memberships = @new_memberships.uniq
105
+ # end
106
+
60
107
  def build_membership_request
108
+ p "build request"
61
109
  members.map do |m|
62
110
  order_info.add_ons_for_member(add_ons, m.member_type).each do |ao|
63
- @memberships << membership_payload(m.id, ao)
111
+ @memberships << membership_payload(m, ao)
64
112
  end
65
113
  end
114
+ @memberships
66
115
  end
67
116
 
68
117
  def options_hash
118
+ p "*** PAYLOAD ***"
119
+ p build_membership_request
69
120
  memberships.to_json
121
+ # p @new_memberships if is_new
122
+ # p @renewal_memberships if !is_new
70
123
  end
71
124
  end
72
125
  end
@@ -56,7 +56,6 @@ module Centaman
56
56
  'street1': address[:street_address],
57
57
  'street2': '',
58
58
  'suburb': address[:suburb],
59
- 'city': address[:suburb] || address[:city],
60
59
  'state': address[:state],
61
60
  'postcode': address[:zip],
62
61
  'country': address[:country],
@@ -1,3 +1,3 @@
1
1
  module Centaman
2
- VERSION = "3.1.2"
2
+ VERSION = "4.0.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: centaman
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.2
4
+ version: 4.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - francirp