voucherify 0.5.1 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +64 -2
- data/examples/utils.rb +21 -0
- data/lib/voucherify/utils.rb +85 -0
- data/lib/voucherify/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aa1601ccbeefeb58cfa46de45babc383d27a6afe
|
4
|
+
data.tar.gz: 07448203a4f06daabf97e0e282f37971e7235d51
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 006a45e1b0042c58e9ac589c8f75385ea5186020b65bb60c695b7d3cd45adc7666c0837ba16afd096665136d14e8bce52bd8bb9e1f315289fd9feba3b565130a
|
7
|
+
data.tar.gz: d9e6cf8f30ef571f2297f3b3f2cd23278d77375b4e31d2bdc9eb4896e6a97bea2895137f25e7bb7f4460805d6756a51a412a186187b59379e6ce787a40bcf95f
|
data/README.md
CHANGED
@@ -381,7 +381,7 @@ voucherify.redeem({
|
|
381
381
|
|
382
382
|
##### 4. With customer id
|
383
383
|
|
384
|
-
If you already created a customer profile in Voucherify's database, whether it was implicitly by providing it to the `redeem` function or explicitly by invoking the [`customer.create`](#create-customer) method, you can identify your customer in following redemptions by a generated id (starting with `cust_`).
|
384
|
+
If you already created a customer profile in Voucherify's database, whether it was implicitly by providing it to the `redeem` function or explicitly by invoking the [`customer.create`](#create-customer) method, you can identify your customer in following redemptions by a generated id (starting with `cust_`).
|
385
385
|
|
386
386
|
```ruby
|
387
387
|
voucherify.redeem({
|
@@ -412,7 +412,7 @@ Filter parameters:
|
|
412
412
|
|
413
413
|
- limit (default: 100)
|
414
414
|
- page (default: 0)
|
415
|
-
- start_date (default: beginning of current month)
|
415
|
+
- start_date (default: beginning of current month)
|
416
416
|
- end_date (default: end of current month)
|
417
417
|
- result - Success | Failure-NotExist | Failure-Inactive
|
418
418
|
- customer - id or source_id
|
@@ -653,6 +653,67 @@ voucherify.delete_customer("cust_WGG615E92dhOHz7PV9Vo9gk9")
|
|
653
653
|
|
654
654
|
The response has empty body.
|
655
655
|
|
656
|
+
#### Utilities
|
657
|
+
|
658
|
+
These methods are used to help calculate prices and discounts.
|
659
|
+
|
660
|
+
```ruby
|
661
|
+
Utils.calculate_price(base_price, voucher, unit_price)
|
662
|
+
Utils.calculate_discount(base_price, voucher, unit_price)
|
663
|
+
```
|
664
|
+
|
665
|
+
Example:
|
666
|
+
|
667
|
+
```ruby
|
668
|
+
voucher = {
|
669
|
+
category: "New Customers",
|
670
|
+
type: "DISCOUNT_VOUCHER",
|
671
|
+
discount: {
|
672
|
+
percent_off: 10.0,
|
673
|
+
type: "PERCENT"
|
674
|
+
},
|
675
|
+
start_date: "2016-01-01T00:00:00Z",
|
676
|
+
expiration_date: "2016-12-31T23:59:59Z",
|
677
|
+
redemption: {
|
678
|
+
quantity: 1
|
679
|
+
}
|
680
|
+
}
|
681
|
+
```
|
682
|
+
```ruby
|
683
|
+
Utils.calculate_price(20.0, voucher, 0);
|
684
|
+
```
|
685
|
+
|
686
|
+
Result:
|
687
|
+
```ruby
|
688
|
+
18
|
689
|
+
```
|
690
|
+
|
691
|
+
Example:
|
692
|
+
|
693
|
+
```ruby
|
694
|
+
voucher = {
|
695
|
+
category: "New Customers",
|
696
|
+
type: "DISCOUNT_VOUCHER",
|
697
|
+
discount: {
|
698
|
+
amount_off: 7.0,
|
699
|
+
type: "AMOUNT"
|
700
|
+
},
|
701
|
+
start_date: "2016-01-01T00:00:00Z",
|
702
|
+
expiration_date: "2016-12-31T23:59:59Z",
|
703
|
+
redemption: {
|
704
|
+
quantity: 1
|
705
|
+
}
|
706
|
+
}
|
707
|
+
```
|
708
|
+
```ruby
|
709
|
+
Utils.calculate_discount(20.0, voucher, 0);
|
710
|
+
```
|
711
|
+
|
712
|
+
Result:
|
713
|
+
```ruby
|
714
|
+
7
|
715
|
+
```
|
716
|
+
|
656
717
|
## Development
|
657
718
|
|
658
719
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
@@ -664,6 +725,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
664
725
|
Bug reports and pull requests are welcome on GitHub at https://github.com/rspective/voucherify-ruby-sdk.
|
665
726
|
|
666
727
|
## Changelog
|
728
|
+
- **2016-07-05** - `0.6.0` - new utils module
|
667
729
|
- **2016-06-16** - `0.5.0` - unified naming convention
|
668
730
|
- **2016-06-12** - `0.4.0` - new customer sdk methods
|
669
731
|
- **2016-05-24** - `0.3.0` - new publish structure
|
data/examples/utils.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'voucherify/utils'
|
2
|
+
|
3
|
+
include Utils
|
4
|
+
|
5
|
+
discount = Utils.calculate_discount(20, {
|
6
|
+
discount: {
|
7
|
+
unit_off: 2.0,
|
8
|
+
type: 'UNIT'
|
9
|
+
}
|
10
|
+
}, 5)
|
11
|
+
|
12
|
+
print(discount)
|
13
|
+
|
14
|
+
discount = Utils.calculate_price(20, amount_voucher_object = {
|
15
|
+
discount: {
|
16
|
+
amount_off: 7.0,
|
17
|
+
type: 'AMOUNT'
|
18
|
+
}
|
19
|
+
})
|
20
|
+
|
21
|
+
print(discount)
|
@@ -0,0 +1,85 @@
|
|
1
|
+
module Utils
|
2
|
+
def round_money(value)
|
3
|
+
value.round(2)
|
4
|
+
end
|
5
|
+
|
6
|
+
def validate_percent_discount(discount)
|
7
|
+
if !(discount.is_a? Numeric) || !discount.between?(0, 100)
|
8
|
+
raise "Invalid voucher, percent discount should be between 0-100."
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def validate_amount_discount(discount)
|
13
|
+
if !(discount.is_a? Numeric) || discount < 0
|
14
|
+
raise "Invalid voucher, amount discount must be bigger than zero."
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def validate_unit_discount(discount)
|
19
|
+
if !(discount.is_a? Numeric) || discount < 0
|
20
|
+
raise "Invalid voucher, unit discount must be bigger than zero."
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def calculate_price(base_price, voucher, unit_price = nil)
|
25
|
+
if !voucher[:discount]
|
26
|
+
raise "Unsupported voucher type."
|
27
|
+
end
|
28
|
+
|
29
|
+
if voucher[:discount][:type] === 'PERCENT'
|
30
|
+
discount = voucher[:discount][:percent_off]
|
31
|
+
validate_percent_discount(discount);
|
32
|
+
price_discount = base_price * (discount / 100)
|
33
|
+
return round_money(base_price - price_discount)
|
34
|
+
|
35
|
+
elsif voucher[:discount][:type] === 'AMOUNT'
|
36
|
+
discount = voucher[:discount][:amount_off]
|
37
|
+
validate_amount_discount(discount)
|
38
|
+
new_price = base_price - discount
|
39
|
+
return round_money(new_price > 0 ? (new_price) : 0)
|
40
|
+
|
41
|
+
elsif voucher[:discount][:type] === 'UNIT'
|
42
|
+
if !unit_price
|
43
|
+
raise "Missing unit_price argument."
|
44
|
+
end
|
45
|
+
discount = voucher[:discount][:unit_off]
|
46
|
+
validate_unit_discount(discount)
|
47
|
+
new_price = base_price - unit_price * discount
|
48
|
+
return round_money(new_price > 0 ? (new_price) : 0)
|
49
|
+
|
50
|
+
else
|
51
|
+
raise "Unsupported discount type"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def calculate_discount(base_price, voucher, unit_price = nil)
|
56
|
+
if !voucher[:discount]
|
57
|
+
raise "Unsupported voucher type."
|
58
|
+
end
|
59
|
+
|
60
|
+
if voucher[:discount][:type] === 'PERCENT'
|
61
|
+
discount = voucher[:discount][:percent_off]
|
62
|
+
validate_percent_discount(discount);
|
63
|
+
price_discount = base_price * (discount / 100)
|
64
|
+
return round_money(price_discount)
|
65
|
+
|
66
|
+
elsif voucher[:discount][:type] === 'AMOUNT'
|
67
|
+
discount = voucher[:discount][:amount_off]
|
68
|
+
validate_amount_discount(discount)
|
69
|
+
new_price = base_price - discount
|
70
|
+
return round_money(new_price > 0 ? (discount) : (base_price))
|
71
|
+
|
72
|
+
elsif voucher[:discount][:type] === 'UNIT'
|
73
|
+
if !unit_price
|
74
|
+
raise "Missing unit_price argument."
|
75
|
+
end
|
76
|
+
discount = voucher[:discount][:unit_off]
|
77
|
+
validate_unit_discount(discount)
|
78
|
+
price_discount = unit_price * discount
|
79
|
+
return round_money(price_discount > base_price ? (base_price) : (price_discount))
|
80
|
+
|
81
|
+
else
|
82
|
+
raise "Unsupported discount type"
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
data/lib/voucherify/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: voucherify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- pawelrychlik
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-07-
|
11
|
+
date: 2016-07-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -81,7 +81,9 @@ files:
|
|
81
81
|
- bin/console
|
82
82
|
- bin/setup
|
83
83
|
- examples/customer.rb
|
84
|
+
- examples/utils.rb
|
84
85
|
- lib/voucherify.rb
|
86
|
+
- lib/voucherify/utils.rb
|
85
87
|
- lib/voucherify/version.rb
|
86
88
|
- voucherify.gemspec
|
87
89
|
homepage: https://github.com/rspective/voucherify-ruby-sdk/
|