zuora_connect 1.4.4 → 1.4.5
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
|
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
|