istox 0.2.3.pre.50 → 0.2.5.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: 8a37094ad3d7261ff966de95b57241e7fadd5163e4f25303b2ebcfd69f5ebc4b
4
- data.tar.gz: 7bd37b3b0d4bb6c19d4765bf3892c8f3df0199436313d2c1ae04ba36f72e7bda
3
+ metadata.gz: 34d26a89afe540d3c4721977cd2c3b984a1939c61908b093a088f4b305d5d3d8
4
+ data.tar.gz: ce16f6edd95e844ff75529b2357ab547aee8a405928f28d8f887e12b391d2343
5
5
  SHA512:
6
- metadata.gz: b79144b9db5b31db8bcdc18f9b6d3abf27115c1ee110c308b0bd2cea4ac07d4a992df03b88234eb30fc299746bcfebb360521c096bb6a198164a36920e05cd5a
7
- data.tar.gz: dcd974e74516be719fbccba077de410935140b213cabe31a9266c2261df84c358f14a87f4ae2a650f892be83249f98dcf89515dee53489f83989ecefc86db016
6
+ metadata.gz: f9f3ef739d924c25fd558a52467570a28946ee2dc50b670f7765dce021ccaf020420b185c9584646d16c4ea525dd378ce0a73c4479616208004ca6ee1b0191b4
7
+ data.tar.gz: b727597605be43b084c247667db0294fcf0e4f90d65b84cf333a945aa55c8a57cd59fe133ecdc708de7c7e3681155d396bc0220307826ba8da41f9431ed04982
data/.gitignore CHANGED
File without changes
data/.rubocop.yml CHANGED
File without changes
data/.solargraph.yml CHANGED
File without changes
data/CODE_OF_CONDUCT.md CHANGED
File without changes
data/Gemfile CHANGED
File without changes
data/README.md CHANGED
File without changes
data/Rakefile CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -131,7 +131,7 @@ module Istox
131
131
  next unless ce.present?
132
132
 
133
133
  copy_email_data = email_data.clone
134
- log.info "Checking copy email data #{copy_email_data.inspect}"
134
+
135
135
  # if it is just email to cc
136
136
  if ce.is_a? String
137
137
  copy_email_data[:email] = ce
@@ -148,10 +148,8 @@ module Istox
148
148
  next unless ce[:email].present?
149
149
 
150
150
  copy_email_data[:email] = ce[:email]
151
- log.info "Checking copy email data after assigning #{copy_email_data.inspect}"
152
- log.info "Checking ce #{ce[:params].inspect}"
153
-
154
- copy_email_data = copy_email_data.merge(ce[:params])
151
+ copy_email_data[:sid] = ce[:sid]
152
+ copy_email_data = copy_email_data.merge(ce[:params]) if ce[:params].present?
155
153
  end
156
154
 
157
155
  copy_email_data.delete(:copy_emails)
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -14,7 +14,11 @@ module Istox
14
14
 
15
15
  message = JSON.generate(message) unless message.is_a? String
16
16
 
17
- sns_client.publish(topic_arn: topic_arn || ENV.fetch('SNS_CLIENT_TOPIC', ''), message: message)
17
+ topic = topic_arn || ENV.fetch('SNS_CLIENT_TOPIC', '')
18
+
19
+ log.info("Publishing SNS to topic: #{topic} with message: #{message}")
20
+
21
+ sns_client.publish(topic_arn: topic, message: message)
18
22
 
19
23
  log.info('Publish to SNS successfully.')
20
24
  rescue StandardError => e
File without changes
File without changes
File without changes
@@ -73,6 +73,11 @@ module Istox
73
73
  end
74
74
 
75
75
  def ytm(date, ex_coupon_date: nil, price: 100, fees: 0, approximation_error: DEFAULT_APPROXIMATION_ERROR)
76
+ if !is_zero_coupon? && price == @face_value && date <= @start_date
77
+ # for non zero coupon bond, if price is face value and date is at or before start date
78
+ # YTM is simply the coupon rate
79
+ return @coupon
80
+ end
76
81
  ytm_down, ytm_up = ytm_limits(price, date, ex_coupon_date: ex_coupon_date, fees: fees)
77
82
  approximate_ytm(ytm_down, ytm_up, price, date, ex_coupon_date: ex_coupon_date, fees: fees, approximation_error: approximation_error)
78
83
  end
@@ -185,7 +190,7 @@ module Istox
185
190
  if @pay_accrued_interest
186
191
  # accrued interest + face value discounted to the current date
187
192
  discounted_accrued_interest = 0
188
- if ex_coupon_date.nil? || ex_coupon_date == @maturity_date
193
+ if ex_coupon_date.nil? || date < ex_coupon_date
189
194
  discounted_accrued_interest = @coupon*@face_value*accrued_interest_factor*discount_factor
190
195
  end
191
196
  discounted_face_value = @face_value*discount_factor
@@ -193,7 +198,7 @@ module Istox
193
198
  return price
194
199
  else
195
200
  discounted_last_coupon = 0
196
- if ex_coupon_date.nil? || ex_coupon_date == @maturity_date
201
+ if ex_coupon_date.nil? || date < ex_coupon_date
197
202
  discounted_last_coupon = @coupon*@face_value/@coupon_frequency*discount_factor
198
203
  end
199
204
  discounted_face_value = @face_value*discount_factor
@@ -292,6 +297,8 @@ module Istox
292
297
  previous_coupon_date = @coupon_payment_dates.last
293
298
  end
294
299
  end
300
+
301
+ return previous_coupon_date
295
302
  end
296
303
 
297
304
  def first_coupon_factor
data/lib/istox/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Istox
2
- VERSION = '0.2.3-50'.freeze
2
+ VERSION = '0.2.5.1'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: istox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3.pre.50
4
+ version: 0.2.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Siong Leng
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-04-08 00:00:00.000000000 Z
11
+ date: 2021-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: amazing_print
@@ -494,7 +494,6 @@ files:
494
494
  - lib/istox.rb
495
495
  - lib/istox/constants/error.rb
496
496
  - lib/istox/consumers/blockchain_status_handler.rb
497
- - lib/istox/helpers/_tmp_07f8e7bcecafce66_common_helper.rb.rb
498
497
  - lib/istox/helpers/blockchain_service.rb
499
498
  - lib/istox/helpers/bunny_boot.rb
500
499
  - lib/istox/helpers/common_helper.rb
@@ -543,11 +542,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
543
542
  version: '0'
544
543
  required_rubygems_version: !ruby/object:Gem::Requirement
545
544
  requirements:
546
- - - ">"
545
+ - - ">="
547
546
  - !ruby/object:Gem::Version
548
- version: 1.3.1
547
+ version: '0'
549
548
  requirements: []
550
- rubygems_version: 3.2.11
549
+ rubygems_version: 3.0.6
551
550
  signing_key:
552
551
  specification_version: 4
553
552
  summary: istox backend shared gem
@@ -1,67 +0,0 @@
1
- module Istox
2
- module CommonHelper
3
- def self.to_datetime(input)
4
- return nil if input.blank?
5
-
6
- begin
7
- is_numeric = true if Integer input
8
- rescue StandardError
9
- false
10
- end
11
-
12
- # is unix timestamp
13
- is_numeric ? Time.at(input.to_i).to_datetime : Time.parse(input)
14
- end
15
-
16
- def self.to_boolean(input)
17
- !(input.blank? || input.to_s.downcase == 'false' || input.to_s.downcase == '0')
18
- end
19
-
20
- def self.to_open_struct(model)
21
- return nil if model.nil?
22
-
23
- if model.is_a?(Array)
24
- model.map do |item|
25
- hash = deep_to_h(item).deep_transform_keys { |key| key.to_s.underscore.to_sym }
26
- to_recursive_ostruct(hash)
27
- end
28
- else
29
- hash = deep_to_h(model).deep_transform_keys { |key| key.to_s.underscore.to_sym }
30
- to_recursive_ostruct(hash)
31
- end
32
- end
33
-
34
- def self.to_recursive_ostruct(obj)
35
- if obj.is_a?(Hash)
36
- ::Istox::MyOpenStruct.new(obj.map { |key, val| [key, to_recursive_ostruct(val)] }.to_h)
37
- elsif obj.is_a?(Array)
38
- obj.map { |o| to_recursive_ostruct(o) }
39
- elsif obj.is_a?(OpenStruct)
40
- ::Istox::MyOpenStruct.new(obj)
41
- else # Assumed to be a primitive value
42
- obj
43
- end
44
- end
45
-
46
- def self.deep_to_h(obj)
47
- if obj.is_a?(Array)
48
- obj.map { |r| deep_to_h(r) }
49
- elsif obj.is_a?(OpenStruct) || obj.is_a?(Hash) || (obj.methods.include?(:to_h) && obj.present?)
50
- obj.to_h.transform_values do |v|
51
- if v.is_a?(OpenStruct) || v.is_a?(Array)
52
- deep_to_h(v)
53
- else
54
- v
55
- end
56
- end
57
- else
58
- obj
59
- end
60
- end
61
-
62
- def self.get_currency_decimal(currency)
63
- return 0 if currency&.downcase == 'jpy'
64
-
65
- 2 end
66
- end
67
- end