centaman 3.1.2 → 4.0.1

Sign up to get free protection for your applications and to get access to all the features.
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