zuora_connect 1.4.4 → 1.4.5
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
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b71ed8ef8cd914b208e867b6e68873beb0f5de11
|
4
|
+
data.tar.gz: 68770c0e6a652a46c21e8b0fe8c6c095505324ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9211986730903e4e0e6ac0e32e7fc1555eb4459c1c96dbc2dac4ad3f8dfa37452deaedbb95fe9589412c97cf3b6c814284eeb10836f9880fd74d53c17b1f319
|
7
|
+
data.tar.gz: 28ed8d8df382e5c8398afd664b78d0dd0281419620b3e2d18221c372c7d580bdced516a2eb485c2e32e225e58aa36a0994e1f3183977f376f06873aaed7f9b6c
|
@@ -1,5 +1,6 @@
|
|
1
1
|
module ZuoraConnect
|
2
2
|
class AppInstanceBase < ActiveRecord::Base
|
3
|
+
default_scope {select(ZuoraConnect::AppInstance.column_names.delete_if {|x| ["catalog_mapping", "catalog"].include?(x) }) }
|
3
4
|
after_initialize :init
|
4
5
|
self.table_name = "zuora_connect_app_instances"
|
5
6
|
attr_accessor :options, :mode, :logins, :valid, :task_data, :last_refresh, :username, :password, :s3_client, :api_version
|
@@ -47,22 +48,39 @@ module ZuoraConnect
|
|
47
48
|
return self.catalog_updated_at.blank? || (self.catalog_updated_at < Time.now - 12.hours)
|
48
49
|
end
|
49
50
|
|
50
|
-
def catalog_lookup(entity_id: nil, object: :product, map_lower_objects: true)
|
51
|
+
def catalog_lookup(entity_id: nil, object: :product, object_id: nil, map_lower_objects: true)
|
51
52
|
entity_reference = entity_id.blank? ? 'Default' : entity_id
|
52
|
-
|
53
|
+
object_hierarchy = ZuoraConnect::AppInstance.unscoped.select("catalog_mapping -> '#{entity_reference}' as item").where(id: self.id).first.item[object_id]
|
54
|
+
|
53
55
|
case object
|
54
56
|
when :product
|
57
|
+
if object_id.blank?
|
58
|
+
stub_catalog = (ZuoraConnect::AppInstance.unscoped.select("catalog -> '#{entity_reference}' as item").where(id: self.id).first.item || {})
|
59
|
+
else
|
60
|
+
stub_catalog = (ZuoraConnect::AppInstance.unscoped.select("catalog #> '{#{entity_reference}, #{object_id}}' as item").where(id: self.id).first.item || {})
|
61
|
+
end
|
62
|
+
|
55
63
|
if !map_lower_objects
|
56
64
|
stub_catalog = stub_catalog.map{|k,v| [k,v.except("productRatePlans").merge({"productRatePlans" => v["productRatePlans"].map {|k,v| v.except("productRatePlanCharges").merge({"productRatePlanCharges" => v["productRatePlanCharges"].map {|k,v| v}})}})]}.to_h
|
57
65
|
end
|
58
66
|
when :rateplan
|
59
|
-
|
67
|
+
if object_id.blank?
|
68
|
+
stub_catalog = (ActiveRecord::Base.connection.execute("SELECT \"value\" #>'{productRatePlans}' as \"rateplan\" from \"public\".\"zuora_connect_app_instances\", json_each((\"public\".\"zuora_connect_app_instances\".\"catalog\"::json -> '#{entity_reference}')) AS e(key, value) WHERE \"id\" = #{self.id}") || {}).map {|rp| JSON.parse(rp["rateplan"])}.reduce({}, :merge)
|
69
|
+
else
|
70
|
+
stub_catalog = (ZuoraConnect::AppInstance.unscoped.select("catalog #> '{#{entity_reference}, #{object_hierarchy['productId']}, productRatePlans, #{object_id}}' as item").where(id: self.id).first.item || {})
|
71
|
+
end
|
60
72
|
|
61
73
|
if !map_lower_objects
|
62
74
|
stub_catalog = stub_catalog.map {|k,v| [k,v.except("productRatePlanCharges").merge({"productRatePlanCharges" => v["productRatePlanCharges"].map {|k,v| v}})]}.to_h
|
63
75
|
end
|
64
76
|
when :charge
|
65
|
-
|
77
|
+
if object_id.blank?
|
78
|
+
#Still Needs Fixing
|
79
|
+
stub_catalog = (ActiveRecord::Base.connection.execute("SELECT \"value\" #>'{productRatePlans}' as \"rateplan\" from \"public\".\"zuora_connect_app_instances\", json_each((\"public\".\"zuora_connect_app_instances\".\"catalog\"::json -> '#{entity_reference}')) AS e(key, value) WHERE \"id\" = #{self.id}") || {}).map {|rp| JSON.parse(rp["rateplan"])}.reduce({}, :merge)
|
80
|
+
stub_catalog = stub_catalog.map{|k,x| x["productRatePlanCharges"] }.reduce({}, :merge)
|
81
|
+
else
|
82
|
+
stub_catalog = (ZuoraConnect::AppInstance.unscoped.select("catalog #> '{#{entity_reference}, #{object_hierarchy['productId']}, productRatePlans, #{object_hierarchy['productRatePlanId']}, productRatePlanCharges, #{object_id}}' as item").where(id: self.id).first.item || {})
|
83
|
+
end
|
66
84
|
end
|
67
85
|
|
68
86
|
return stub_catalog
|
@@ -80,6 +98,7 @@ module ZuoraConnect
|
|
80
98
|
return results
|
81
99
|
end
|
82
100
|
|
101
|
+
|
83
102
|
def get_catalog(zuora_login: self.login_lookup.first, force_update: false, entity_id: nil)
|
84
103
|
entity_reference = entity_id.blank? ? 'Default' : entity_id
|
85
104
|
Rails.logger.debug("Fetching catalog for default") if entity_id.blank?
|
@@ -87,13 +106,20 @@ module ZuoraConnect
|
|
87
106
|
if catalog_outdated? || force_update
|
88
107
|
Rails.logger.debug("Fetch Catalog")
|
89
108
|
self.update_column(:catalog_updated_at, Time.now.utc)
|
90
|
-
products = zuora_login.client(entity_reference).get_catalog
|
91
|
-
|
92
|
-
|
93
|
-
|
109
|
+
products, catalog_mapping = zuora_login.client(entity_reference).get_catalog
|
110
|
+
|
111
|
+
# Update this entity
|
112
|
+
ActiveRecord::Base.connection.execute("UPDATE \"public\".\"zuora_connect_app_instances\" SET \"catalog\" = jsonb_set(\"catalog\", '{#{entity_reference}}', '#{products.to_json}') where \"id\" = #{self.id}")
|
113
|
+
|
114
|
+
# Update this entity mapping
|
115
|
+
ActiveRecord::Base.connection.execute("UPDATE \"public\".\"zuora_connect_app_instances\" SET \"catalog_mapping\" = jsonb_set(\"catalog_mapping\", '{#{entity_reference}}', '#{catalog_mapping.to_json}') where \"id\" = #{self.id}")
|
116
|
+
|
94
117
|
self.touch
|
95
118
|
end
|
96
|
-
|
119
|
+
|
120
|
+
# DO NOT RETURN CATALOG. THIS IS NOT SCALABLE WITH LARGE CATALOGS. USE THE
|
121
|
+
# return self.catalog[entity_reference]
|
122
|
+
return true
|
97
123
|
end
|
98
124
|
|
99
125
|
def new_session(session: self.data_lookup, username: self.access_token, password: self.refresh_token)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zuora_connect
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Connect Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-05-
|
11
|
+
date: 2017-05-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord-session_store
|
@@ -218,6 +218,7 @@ files:
|
|
218
218
|
- db/migrate/20110411200303_add_expiration_to_app_instance.rb
|
219
219
|
- db/migrate/20110413191512_add_new_api_token.rb
|
220
220
|
- db/migrate/20110503003602_add_catalog_data_to_app_instance.rb
|
221
|
+
- db/migrate/20110503003603_add_catalog_mappings_to_app_instance.rb
|
221
222
|
- lib/tasks/zuora_connect_tasks.rake
|
222
223
|
- lib/zuora_connect.rb
|
223
224
|
- lib/zuora_connect/configuration.rb
|