e_plat 1.0.0 → 1.1.0.pre.rc.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 +4 -4
- data/README.md +467 -413
- data/lib/e_plat/client.rb +9 -5
- data/lib/e_plat/mapping/base.rb +22 -3
- data/lib/e_plat/mapping/bigcommerce/v_3/order.rb +156 -156
- data/lib/e_plat/mapping/woocommerce/v_3/metafield.rb +39 -0
- data/lib/e_plat/mapping/woocommerce/v_3/order/billing_address.rb +79 -0
- data/lib/e_plat/mapping/woocommerce/v_3/order/line_item.rb +85 -0
- data/lib/e_plat/mapping/woocommerce/v_3/order/shipping_address.rb +71 -0
- data/lib/e_plat/mapping/woocommerce/v_3/order/shipping_line.rb +54 -0
- data/lib/e_plat/mapping/woocommerce/v_3/order.rb +189 -0
- data/lib/e_plat/mapping/woocommerce/v_3/product/image.rb +43 -0
- data/lib/e_plat/mapping/woocommerce/v_3/product/option.rb +45 -0
- data/lib/e_plat/mapping/woocommerce/v_3/product/variant/option_value.rb +40 -0
- data/lib/e_plat/mapping/woocommerce/v_3/product/variant.rb +188 -0
- data/lib/e_plat/mapping/woocommerce/v_3/product.rb +168 -0
- data/lib/e_plat/mapping/woocommerce/v_3/script_tag.rb +22 -0
- data/lib/e_plat/mapping/woocommerce/v_3/shop.rb +142 -0
- data/lib/e_plat/mapping/woocommerce/v_3/webhook.rb +52 -0
- data/lib/e_plat/paginated/woocommerce_pagination.rb +45 -0
- data/lib/e_plat/resource/attribute_interface.rb +7 -4
- data/lib/e_plat/resource/base.rb +12 -3
- data/lib/e_plat/resource/collection.rb +19 -2
- data/lib/e_plat/resource/concerns/aliases.rb +14 -6
- data/lib/e_plat/resource/concerns/metafieldable.rb +31 -10
- data/lib/e_plat/resource/concerns/overwrite_instance_methods.rb +1 -1
- data/lib/e_plat/resource/concerns/overwrite_request_methods.rb +12 -1
- data/lib/e_plat/resource/countable.rb +7 -0
- data/lib/e_plat/resource/order.rb +5 -0
- data/lib/e_plat/resource/paginated/link_headers.rb +1 -1
- data/lib/e_plat/resource/platform_specific/woocommerce/metafield.rb +41 -0
- data/lib/e_plat/resource/platform_specific/woocommerce/order/billing_address.rb +8 -0
- data/lib/e_plat/resource/platform_specific/woocommerce/order/line_item.rb +2 -0
- data/lib/e_plat/resource/platform_specific/woocommerce/order/shipping_address.rb +8 -0
- data/lib/e_plat/resource/platform_specific/woocommerce/order/shipping_line.rb +2 -0
- data/lib/e_plat/resource/platform_specific/woocommerce/order.rb +8 -0
- data/lib/e_plat/resource/platform_specific/woocommerce/product/image.rb +8 -0
- data/lib/e_plat/resource/platform_specific/woocommerce/product/option.rb +8 -0
- data/lib/e_plat/resource/platform_specific/woocommerce/product/variant/option_value.rb +10 -0
- data/lib/e_plat/resource/platform_specific/woocommerce/product/variant.rb +53 -0
- data/lib/e_plat/resource/platform_specific/woocommerce/product.rb +75 -0
- data/lib/e_plat/resource/platform_specific/woocommerce/script_tag.rb +5 -0
- data/lib/e_plat/resource/platform_specific/woocommerce/shop.rb +36 -0
- data/lib/e_plat/resource/platform_specific/woocommerce/webhook.rb +8 -0
- data/lib/e_plat/resource/product/variant.rb +2 -0
- data/lib/e_plat/utils/money.rb +32 -0
- data/lib/e_plat/version.rb +1 -1
- data/lib/e_plat.rb +9 -3
- metadata +32 -2
@@ -18,7 +18,7 @@ module EPlat
|
|
18
18
|
|
19
19
|
if arguments.second && arguments.second.is_a?(Hash) && arguments.second[:params]
|
20
20
|
arguments.second[:params].merge!(client.try("#{element_name}_default_request_args") || {})
|
21
|
-
arguments.second[:params] = mapping.via_native_attributes_where_possible(arguments.second[:params])
|
21
|
+
arguments.second[:params] = mapping.via_native_attributes_where_possible(arguments.second[:params], search: true)
|
22
22
|
else
|
23
23
|
arguments << {params: (client.try("#{element_name}_default_request_args") || {}) }
|
24
24
|
end
|
@@ -89,6 +89,7 @@ module EPlat
|
|
89
89
|
def delete(id, options = {})
|
90
90
|
client = EPlat::Current.e_plat_session
|
91
91
|
cached_shopify_webhook_warning if cached_shopify_webhook?
|
92
|
+
options[:force] = true if client.platform == :woocommerce
|
92
93
|
|
93
94
|
if client.platform_klass(self)
|
94
95
|
client.platform_klass(self).delete(id, options)
|
@@ -127,6 +128,16 @@ module EPlat
|
|
127
128
|
|
128
129
|
end
|
129
130
|
|
131
|
+
def initialize(attributes = {}, persisted = false)
|
132
|
+
EPlat::Base::PROTECTED_ATTRIBUTES.each do |protected_attr_key|
|
133
|
+
if attributes.key?(protected_attr_key)
|
134
|
+
new_key_name = self.class.mapping.protected_attributes_rename_on_initialize[protected_attr_key] || "#{EPlat::PROTECTED_PREFIX}#{protected_attr_key}"
|
135
|
+
attributes[new_key_name] = attributes.delete(protected_attr_key)
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
super
|
140
|
+
end
|
130
141
|
|
131
142
|
def collection_path(options = {})
|
132
143
|
options = options.merge client.try("#{element_name}_default_request_args") || {}
|
@@ -9,6 +9,9 @@ module EPlat
|
|
9
9
|
data =
|
10
10
|
if counts_via_graphql?
|
11
11
|
graphql_count
|
12
|
+
elsif counts_via_header?
|
13
|
+
raw_data = connection.get(collection_path, headers)
|
14
|
+
raw_data.headers[:x_wp_total].last.to_i
|
12
15
|
elsif counts_via_meta_data?
|
13
16
|
raw_data = connection.get(collection_path, headers)
|
14
17
|
data_hash = ActiveSupport::JSON.decode(raw_data.body)
|
@@ -39,6 +42,10 @@ module EPlat
|
|
39
42
|
self == EPlat::Product or self == EPlat::Shopify::Product
|
40
43
|
end
|
41
44
|
|
45
|
+
def counts_via_header?
|
46
|
+
client.woocommerce?
|
47
|
+
end
|
48
|
+
|
42
49
|
def counts_via_meta_data?
|
43
50
|
return false unless client.bigcommerce?
|
44
51
|
|
@@ -107,6 +107,9 @@ module EPlat
|
|
107
107
|
if client.bigcommerce?
|
108
108
|
self.status_id = 5
|
109
109
|
save
|
110
|
+
elsif client.woocommerce?
|
111
|
+
self.status = "cancelled"
|
112
|
+
save
|
110
113
|
else
|
111
114
|
load_attributes_from_response(post(:cancel, {}, options.to_json))
|
112
115
|
end
|
@@ -118,6 +121,8 @@ module EPlat
|
|
118
121
|
cancelled_at.present?
|
119
122
|
when :bigcommerce
|
120
123
|
status_id == 5
|
124
|
+
when :woocommerce
|
125
|
+
status == "cancelled"
|
121
126
|
end
|
122
127
|
end
|
123
128
|
|
@@ -11,7 +11,7 @@ module EPlat
|
|
11
11
|
def initialize(link_header)
|
12
12
|
links = parse_link_header(link_header)
|
13
13
|
|
14
|
-
@previous_link = links.find { |link| link.rel == :previous }
|
14
|
+
@previous_link = links.find { |link| link.rel == :previous || link.rel == :prev }
|
15
15
|
@next_link = links.find { |link| link.rel == :next }
|
16
16
|
end
|
17
17
|
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module EPlat::Woocommerce
|
2
|
+
class Metafield < EPlat::Metafield
|
3
|
+
# In WooCommerce, metafields are stored in the meta_data array
|
4
|
+
# with id, key, and value attributes
|
5
|
+
# WooCommerce metafields are always attached to a resource and don't have their own URLs
|
6
|
+
|
7
|
+
belongs_to :product, foreign_key: :owner_id, class_name: "EPlat::Woocommerce::Product"
|
8
|
+
belongs_to :order, foreign_key: :owner_id, class_name: "EPlat::Woocommerce::Order"
|
9
|
+
belongs_to :variant, foreign_key: :owner_id, class_name: "EPlat::Woocommerce::Product::Variant"
|
10
|
+
|
11
|
+
attr_accessor :product, :order, :variant
|
12
|
+
|
13
|
+
def destroy
|
14
|
+
return unless owner.present?
|
15
|
+
|
16
|
+
run_callbacks :destroy do
|
17
|
+
owner.meta_data = owner.meta_data.reject { _1.id == id }
|
18
|
+
owner.save
|
19
|
+
self.destroyed = true
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def owner
|
24
|
+
product || order || variant
|
25
|
+
end
|
26
|
+
|
27
|
+
def owner=(owner)
|
28
|
+
return if owner.nil?
|
29
|
+
|
30
|
+
case owner.class.name
|
31
|
+
when "EPlat::Woocommerce::Product"
|
32
|
+
@product = owner
|
33
|
+
when "EPlat::Woocommerce::Order"
|
34
|
+
@order = owner
|
35
|
+
when "EPlat::Woocommerce::Product::Variant"
|
36
|
+
@variant = owner
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
|
2
|
+
module EPlat::Woocommerce
|
3
|
+
class Order < EPlat::Order
|
4
|
+
has_one :shipping, class_name: EPlat::Woocommerce::Order::ShippingAddress
|
5
|
+
has_one :billing, class_name: EPlat::Woocommerce::Order::BillingAddress
|
6
|
+
has_many :meta_data, class_name: "EPlat::Woocommerce::Metafield"
|
7
|
+
end
|
8
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
module EPlat::Woocommerce
|
2
|
+
class Product
|
3
|
+
class Variant
|
4
|
+
class OptionValue < EPlat::Product::Variant::OptionValue
|
5
|
+
# WooCommerce option values come from the variant's attributes array
|
6
|
+
# Each attribute has { id, name, option } structure
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module EPlat::Woocommerce
|
2
|
+
class Product
|
3
|
+
class Variant < EPlat::Product::Variant
|
4
|
+
self.collection_name = "variations"
|
5
|
+
has_many :meta_data, class_name: "EPlat::Woocommerce::Metafield"
|
6
|
+
|
7
|
+
attr_accessor :_is_virtual
|
8
|
+
alias_method :new?, :_is_virtual
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def generate_virtual_variant(attributes)
|
12
|
+
instance = new attributes
|
13
|
+
instance._is_virtual = true
|
14
|
+
instance
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def save
|
19
|
+
if _is_virtual
|
20
|
+
EPlat.config.mute_woocommerce_variant_warnings || warn("updating product as this is a non-variant product. this variant is generated for interface purposes only")
|
21
|
+
|
22
|
+
pass_through_attributes = {}
|
23
|
+
product.common_product_variant_attributes.each do |attr|
|
24
|
+
next unless changed_attributes.key? attr
|
25
|
+
pass_through_attributes[attr] = send(attr)
|
26
|
+
end
|
27
|
+
|
28
|
+
pass_through_attributes = mapping.via_native_attributes_where_possible(pass_through_attributes)
|
29
|
+
pass_through_attributes.each do |attr, value|
|
30
|
+
product.send("#{attr}=", value)
|
31
|
+
end
|
32
|
+
|
33
|
+
if product.type == "variable" and product.variants.empty?
|
34
|
+
EPlat.config.mute_woocommerce_variant_warnings || warn("Variable product with no variants found, attributes like price can't be set without variants")
|
35
|
+
end
|
36
|
+
|
37
|
+
product.save
|
38
|
+
else
|
39
|
+
super
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def delete(id, options = {})
|
44
|
+
raise "EPlat: Can not delete _is_virtual variant" if _is_virtual
|
45
|
+
super
|
46
|
+
end
|
47
|
+
|
48
|
+
def exists?(id, options = {})
|
49
|
+
(_is_virtual) ? false : super
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
module EPlat::Woocommerce
|
2
|
+
class Product < EPlat::Product
|
3
|
+
has_many :meta_data, class_name: "EPlat::Woocommerce::Metafield"
|
4
|
+
|
5
|
+
def lazy_load_variants
|
6
|
+
# Woo products natively just return an array of ids under the 'variations' key
|
7
|
+
@variants_collection ||= EPlat::Product::Variant.find(
|
8
|
+
:all, from: "#{ client.url_prefix }products/#{id}/variations"
|
9
|
+
).presence || EPlat::Collection.new([generate_default_variant])
|
10
|
+
|
11
|
+
@variants_collection.each do |variant|
|
12
|
+
variant.product = self
|
13
|
+
variant.product_id = id
|
14
|
+
end
|
15
|
+
|
16
|
+
@variants_collection
|
17
|
+
end
|
18
|
+
|
19
|
+
def dup
|
20
|
+
self.class.new.tap do |resource|
|
21
|
+
resource.attributes = @attributes
|
22
|
+
resource.attributes.delete("id")
|
23
|
+
resource.prefix_options = @prefix_options
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
def common_product_variant_attributes
|
29
|
+
[
|
30
|
+
"body_html",
|
31
|
+
"name",
|
32
|
+
"description",
|
33
|
+
"permalink",
|
34
|
+
"sku",
|
35
|
+
"price",
|
36
|
+
"regular_price",
|
37
|
+
"sale_price",
|
38
|
+
"date_on_sale_from",
|
39
|
+
"date_on_sale_from_gmt",
|
40
|
+
"date_on_sale_to",
|
41
|
+
"date_on_sale_to_gmt",
|
42
|
+
"on_sale",
|
43
|
+
"status",
|
44
|
+
"purchasable",
|
45
|
+
"virtual",
|
46
|
+
"downloadable",
|
47
|
+
"downloads",
|
48
|
+
"download_limit",
|
49
|
+
"download_expiry",
|
50
|
+
"tax_status",
|
51
|
+
"tax_class",
|
52
|
+
"manage_stock",
|
53
|
+
"stock_quantity",
|
54
|
+
"stock_status",
|
55
|
+
"backorders",
|
56
|
+
"backorders_allowed",
|
57
|
+
"backordered",
|
58
|
+
"weight",
|
59
|
+
"dimensions",
|
60
|
+
"shipping_class",
|
61
|
+
"shipping_class_id",
|
62
|
+
"attributes",
|
63
|
+
"menu_order",
|
64
|
+
"meta_data"
|
65
|
+
]
|
66
|
+
end
|
67
|
+
|
68
|
+
private
|
69
|
+
|
70
|
+
def generate_default_variant
|
71
|
+
EPlat::Woocommerce::Product::Variant.generate_virtual_variant attributes.slice(*common_product_variant_attributes).merge(product_id: id, product: self)
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module EPlat::Woocommerce
|
2
|
+
class Shop < EPlat::Shop
|
3
|
+
class << self
|
4
|
+
# Custom find_single for WooCommerce, since it uses settings/general endpoint
|
5
|
+
def find_single(scope, options)
|
6
|
+
prefix_options, query_options = split_options(options[:params])
|
7
|
+
path = "#{client.url_prefix}settings/general"
|
8
|
+
|
9
|
+
# The response is an array, so we need to wrap it in a hash with a top-level key
|
10
|
+
response = connection.get(path, client.headers)
|
11
|
+
response_data = format.decode(response.body)
|
12
|
+
|
13
|
+
# Process response data to create a hash with expected structure
|
14
|
+
response_hash = {}
|
15
|
+
if response_data.is_a?(Array)
|
16
|
+
response_data.each do |setting|
|
17
|
+
key = setting["id"]
|
18
|
+
response_hash[key] = setting if key
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
instantiate_record(response_hash, prefix_options)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def lazy_load_weight_unit
|
27
|
+
return @lazy_load_weight_unit if @lazy_load_weight_unit
|
28
|
+
|
29
|
+
path = "#{client.url_prefix}settings/products/woocommerce_weight_unit"
|
30
|
+
response = connection.get(path, client.headers)
|
31
|
+
response_data = JSON.parse(response.body)
|
32
|
+
|
33
|
+
@lazy_load_weight_unit = response_data["value"] || response_data["default"]
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -40,6 +40,8 @@ module EPlat
|
|
40
40
|
def image_src(images=[]) # EPlat::Product::Image => string
|
41
41
|
if client.bigcommerce?
|
42
42
|
image_url
|
43
|
+
elsif client.woocommerce?
|
44
|
+
image&.src
|
43
45
|
elsif is_a?(EPlat::ShopifyWebhook::Product::Variant)
|
44
46
|
images.to_a.find{ |i| i.id == image_id }.try(:src)
|
45
47
|
elsif is_a?(EPlat::Shopify::Product::Variant)
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module EPlat
|
2
|
+
module Utils
|
3
|
+
class Money
|
4
|
+
include ActiveModel::Model
|
5
|
+
include ActionView::Helpers::NumberHelper
|
6
|
+
|
7
|
+
def self.string_to_coinage_int(money_string)
|
8
|
+
decimals_removed = ::ApplicationController.helpers.number_with_precision(money_string, precision: 2)
|
9
|
+
(decimals_removed.to_f*100).to_i
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.percent_discount_int(original_price, discounted_price)
|
13
|
+
return 0 if original_price.to_f.zero?
|
14
|
+
|
15
|
+
discount_amount = original_price.to_f - discounted_price.to_f
|
16
|
+
discount_percentage = (discount_amount / original_price.to_f)*100
|
17
|
+
discount_percentage.round
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.coinage_to_poundage_str(number)
|
21
|
+
::ApplicationController.helpers.number_with_precision( number.to_f/100, precision: 2).to_s
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.money_string_total(money_string, quantity)
|
25
|
+
coinage = string_to_coinage_int(money_string)
|
26
|
+
coinage_to_poundage_str(coinage*quantity.to_i)
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
data/lib/e_plat/version.rb
CHANGED
data/lib/e_plat.rb
CHANGED
@@ -24,8 +24,8 @@ module EPlat
|
|
24
24
|
extend Dry::Configurable
|
25
25
|
SUPPORTED_SHOPIFY_API_VERSIONS = ['2024_01', '2024_07', '2025_01']
|
26
26
|
SUPPORTED_BIGCOMMERCE_API_VERSIONS = ['3']
|
27
|
-
|
28
|
-
SUPPORTED_PLATFORMS = ["shopify", "bigcommerce"]
|
27
|
+
SUPPORTED_WOOCOMMERCE_API_VERSIONS = ['3']
|
28
|
+
SUPPORTED_PLATFORMS = ["shopify", "bigcommerce", "woocommerce"]
|
29
29
|
SUPPORTED_RESOURCES = [
|
30
30
|
"shop",
|
31
31
|
"product",
|
@@ -41,6 +41,7 @@ module EPlat
|
|
41
41
|
"webhook",
|
42
42
|
"metafield"
|
43
43
|
]
|
44
|
+
PROTECTED_PREFIX = "_protected_"
|
44
45
|
|
45
46
|
setting(:shopify_api_version, default: ENV['EPLAT_SHOPIFY_API_VERSION'] || "2025_01", constructor: ->(value) do
|
46
47
|
SUPPORTED_SHOPIFY_API_VERSIONS.include?(value.underscore) ? value.underscore : raise(ArgumentError, "Shopify API version #{value} is not supported")
|
@@ -51,10 +52,15 @@ module EPlat
|
|
51
52
|
SUPPORTED_BIGCOMMERCE_API_VERSIONS.include?(v) ? v : raise(ArgumentError, "Bigcommerce API version #{value} is not supported")
|
52
53
|
end)
|
53
54
|
|
54
|
-
setting(:woocommerce_api_version, default: "v3", constructor: ->(value)
|
55
|
+
setting(:woocommerce_api_version, default: ENV['EPLAT_WOOCOMMERCE_API_VERSION'] || "v3", constructor: ->(value) do
|
56
|
+
v = value.downcase.gsub("v", "")
|
57
|
+
SUPPORTED_WOOCOMMERCE_API_VERSIONS.include?(v) ? v : raise(ArgumentError, "WooCommerce API version #{value} is not supported")
|
58
|
+
end)
|
55
59
|
|
56
60
|
setting(:print_graphql_requests, default:ENV['EPLAT_PRINT_GRAPHQL_REQUESTS'] || false)
|
57
61
|
|
62
|
+
setting(:mute_woocommerce_variant_warnings, default: ENV['EPLAT_MUTE_WOOCOMMERCE_VARIANT_WARNINGS'] || false)
|
63
|
+
|
58
64
|
def self.api_display_name
|
59
65
|
apis = Struct.new(:shopify, :bigcommerce, :woocommerce)
|
60
66
|
apis.new(
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: e_plat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.1.0.pre.rc.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- oliwoodsuk
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-05-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -303,6 +303,21 @@ files:
|
|
303
303
|
- lib/e_plat/mapping/virtual_collection/base.rb
|
304
304
|
- lib/e_plat/mapping/virtual_collection/bigcommerce/order_line_items.rb
|
305
305
|
- lib/e_plat/mapping/virtual_collection/shopify/product/variant/option_value.rb
|
306
|
+
- lib/e_plat/mapping/woocommerce/v_3/metafield.rb
|
307
|
+
- lib/e_plat/mapping/woocommerce/v_3/order.rb
|
308
|
+
- lib/e_plat/mapping/woocommerce/v_3/order/billing_address.rb
|
309
|
+
- lib/e_plat/mapping/woocommerce/v_3/order/line_item.rb
|
310
|
+
- lib/e_plat/mapping/woocommerce/v_3/order/shipping_address.rb
|
311
|
+
- lib/e_plat/mapping/woocommerce/v_3/order/shipping_line.rb
|
312
|
+
- lib/e_plat/mapping/woocommerce/v_3/product.rb
|
313
|
+
- lib/e_plat/mapping/woocommerce/v_3/product/image.rb
|
314
|
+
- lib/e_plat/mapping/woocommerce/v_3/product/option.rb
|
315
|
+
- lib/e_plat/mapping/woocommerce/v_3/product/variant.rb
|
316
|
+
- lib/e_plat/mapping/woocommerce/v_3/product/variant/option_value.rb
|
317
|
+
- lib/e_plat/mapping/woocommerce/v_3/script_tag.rb
|
318
|
+
- lib/e_plat/mapping/woocommerce/v_3/shop.rb
|
319
|
+
- lib/e_plat/mapping/woocommerce/v_3/webhook.rb
|
320
|
+
- lib/e_plat/paginated/woocommerce_pagination.rb
|
306
321
|
- lib/e_plat/resource/attribute_interface.rb
|
307
322
|
- lib/e_plat/resource/base.rb
|
308
323
|
- lib/e_plat/resource/collection.rb
|
@@ -396,6 +411,20 @@ files:
|
|
396
411
|
- lib/e_plat/resource/platform_specific/shopify_webhook/script_tag.rb
|
397
412
|
- lib/e_plat/resource/platform_specific/shopify_webhook/shop.rb
|
398
413
|
- lib/e_plat/resource/platform_specific/shopify_webhook/webhook.rb
|
414
|
+
- lib/e_plat/resource/platform_specific/woocommerce/metafield.rb
|
415
|
+
- lib/e_plat/resource/platform_specific/woocommerce/order.rb
|
416
|
+
- lib/e_plat/resource/platform_specific/woocommerce/order/billing_address.rb
|
417
|
+
- lib/e_plat/resource/platform_specific/woocommerce/order/line_item.rb
|
418
|
+
- lib/e_plat/resource/platform_specific/woocommerce/order/shipping_address.rb
|
419
|
+
- lib/e_plat/resource/platform_specific/woocommerce/order/shipping_line.rb
|
420
|
+
- lib/e_plat/resource/platform_specific/woocommerce/product.rb
|
421
|
+
- lib/e_plat/resource/platform_specific/woocommerce/product/image.rb
|
422
|
+
- lib/e_plat/resource/platform_specific/woocommerce/product/option.rb
|
423
|
+
- lib/e_plat/resource/platform_specific/woocommerce/product/variant.rb
|
424
|
+
- lib/e_plat/resource/platform_specific/woocommerce/product/variant/option_value.rb
|
425
|
+
- lib/e_plat/resource/platform_specific/woocommerce/script_tag.rb
|
426
|
+
- lib/e_plat/resource/platform_specific/woocommerce/shop.rb
|
427
|
+
- lib/e_plat/resource/platform_specific/woocommerce/webhook.rb
|
399
428
|
- lib/e_plat/resource/product.rb
|
400
429
|
- lib/e_plat/resource/product/image.rb
|
401
430
|
- lib/e_plat/resource/product/option.rb
|
@@ -409,6 +438,7 @@ files:
|
|
409
438
|
- lib/e_plat/session.rb
|
410
439
|
- lib/e_plat/type_coercer.rb
|
411
440
|
- lib/e_plat/types.rb
|
441
|
+
- lib/e_plat/utils/money.rb
|
412
442
|
- lib/e_plat/version.rb
|
413
443
|
- lib/hash.rb
|
414
444
|
- lib/tasks/e_plat_tasks.rake
|