workarea-global_e 1.2.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 +7 -0
- data/.eslintrc.json +37 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +37 -0
- data/.github/ISSUE_TEMPLATE/documentation-request.md +17 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- data/.github/workflows/ci.yml +77 -0
- data/.gitignore +20 -0
- data/.rubocop.yml +2 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +261 -0
- data/Gemfile +16 -0
- data/README.md +39 -0
- data/Rakefile +59 -0
- data/app/assets/javascripts/workarea/storefront/global_e/modules/checkout_info_validator.js +122 -0
- data/app/assets/javascripts/workarea/storefront/global_e/modules/suppress_price_ranges.js +19 -0
- data/app/controllers/workarea/admin/country_exceptions_controller.rb +67 -0
- data/app/controllers/workarea/admin/fixed_prices_controller.rb +89 -0
- data/app/controllers/workarea/admin/orders_controller.decorator +6 -0
- data/app/controllers/workarea/storefront/application_controller.decorator +30 -0
- data/app/controllers/workarea/storefront/checkouts_controller.decorator +22 -0
- data/app/controllers/workarea/storefront/ge_checkouts_controller.rb +10 -0
- data/app/controllers/workarea/storefront/global_e_controller.rb +42 -0
- data/app/controllers/workarea/storefront/globale/api_controller.rb +108 -0
- data/app/controllers/workarea/storefront/globale/refund_controller.rb +65 -0
- data/app/controllers/workarea/storefront/users/logins_controller.decorator +13 -0
- data/app/helpers/workarea/admin/global_e_helpers.rb +28 -0
- data/app/models/workarea/address.decorator +11 -0
- data/app/models/workarea/catalog/product.decorator +14 -0
- data/app/models/workarea/fulfillment/status/partially_refunded.rb +13 -0
- data/app/models/workarea/fulfillment/status/refunded.rb +15 -0
- data/app/models/workarea/fulfillment.decorator +55 -0
- data/app/models/workarea/global_e/country_exception.rb +37 -0
- data/app/models/workarea/global_e/fixed_price.rb +93 -0
- data/app/models/workarea/global_e/order_api_events.rb +29 -0
- data/app/models/workarea/order/item.decorator +46 -0
- data/app/models/workarea/order/status/pending_global_e_fraud_check.rb +12 -0
- data/app/models/workarea/order.decorator +64 -0
- data/app/models/workarea/payment/status/global_e_appoved.rb +9 -0
- data/app/models/workarea/payment/status/pending_global_e_fraud_check.rb +9 -0
- data/app/models/workarea/payment/tender/global_e_payment.rb +16 -0
- data/app/models/workarea/payment.decorator +10 -0
- data/app/models/workarea/price_adjustment.decorator +13 -0
- data/app/models/workarea/price_adjustment_set.decorator +25 -0
- data/app/models/workarea/pricing/calculators/item_calculator.decorator +48 -0
- data/app/models/workarea/pricing/collection.decorator +90 -0
- data/app/models/workarea/pricing/discount/appliation_group.decorator +16 -0
- data/app/models/workarea/pricing/discount/international_item_proxy.rb +27 -0
- data/app/models/workarea/pricing/discount/international_order.rb +29 -0
- data/app/models/workarea/pricing/discount.decorator +65 -0
- data/app/models/workarea/pricing/price_distributor.decorator +37 -0
- data/app/models/workarea/pricing/request.decorator +17 -0
- data/app/models/workarea/pricing/sku.decorator +17 -0
- data/app/models/workarea/search/admin/order.decorator +11 -0
- data/app/models/workarea/shipping/sku.decorator +23 -0
- data/app/models/workarea/shipping.decorator +11 -0
- data/app/models/workarea/user.decorator +10 -0
- data/app/seeds/workarea/global_e_seeds.rb +66 -0
- data/app/services/workarea/create_fulfillment.decorator +12 -0
- data/app/services/workarea/global_e/address_details.rb +218 -0
- data/app/services/workarea/global_e/api/notify_order_refunded.rb +45 -0
- data/app/services/workarea/global_e/api/perform_order_payment.rb +46 -0
- data/app/services/workarea/global_e/api/remove_restricted_products.rb +28 -0
- data/app/services/workarea/global_e/api/send_order_to_merchant/item_pricer.rb +147 -0
- data/app/services/workarea/global_e/api/send_order_to_merchant/save_user.rb +59 -0
- data/app/services/workarea/global_e/api/send_order_to_merchant.rb +359 -0
- data/app/services/workarea/global_e/api/update_order_shipping_info.rb +38 -0
- data/app/services/workarea/global_e/api/update_order_status/canceled.rb +42 -0
- data/app/services/workarea/global_e/api/update_order_status.rb +28 -0
- data/app/services/workarea/global_e/attribute.rb +44 -0
- data/app/services/workarea/global_e/brand.rb +19 -0
- data/app/services/workarea/global_e/cart_user_details.rb +34 -0
- data/app/services/workarea/global_e/category.rb +19 -0
- data/app/services/workarea/global_e/checkout_cart_info.rb +358 -0
- data/app/services/workarea/global_e/custom_product_attribute.rb +19 -0
- data/app/services/workarea/global_e/discount.rb +215 -0
- data/app/services/workarea/global_e/merchant/brand.rb +21 -0
- data/app/services/workarea/global_e/merchant/category.rb +21 -0
- data/app/services/workarea/global_e/merchant/customer.rb +36 -0
- data/app/services/workarea/global_e/merchant/customer_details.rb +201 -0
- data/app/services/workarea/global_e/merchant/discount.rb +127 -0
- data/app/services/workarea/global_e/merchant/international_details.rb +296 -0
- data/app/services/workarea/global_e/merchant/order.rb +425 -0
- data/app/services/workarea/global_e/merchant/order_refund.rb +103 -0
- data/app/services/workarea/global_e/merchant/original_order.rb +28 -0
- data/app/services/workarea/global_e/merchant/parcel_tracking.rb +31 -0
- data/app/services/workarea/global_e/merchant/payment_details.rb +161 -0
- data/app/services/workarea/global_e/merchant/product.rb +222 -0
- data/app/services/workarea/global_e/merchant/refund_product.rb +69 -0
- data/app/services/workarea/global_e/merchant/response_info.rb +115 -0
- data/app/services/workarea/global_e/merchant_cart_product_attribute.rb +21 -0
- data/app/services/workarea/global_e/order_status.rb +20 -0
- data/app/services/workarea/global_e/order_status_details.rb +79 -0
- data/app/services/workarea/global_e/order_status_reason.rb +20 -0
- data/app/services/workarea/global_e/parcel.rb +53 -0
- data/app/services/workarea/global_e/product.rb +612 -0
- data/app/services/workarea/global_e/product_meta_data.rb +13 -0
- data/app/services/workarea/global_e/tracking_details.rb +23 -0
- data/app/services/workarea/global_e/update_order_dispatch_exception.rb +46 -0
- data/app/services/workarea/global_e/update_order_dispatch_request.rb +108 -0
- data/app/services/workarea/global_e/user_id_number_type.rb +21 -0
- data/app/services/workarea/global_e/users_details.rb +151 -0
- data/app/services/workarea/global_e/vat_category.rb +20 -0
- data/app/services/workarea/global_e/vat_rate_type.rb +27 -0
- data/app/services/workarea/save_order_analytics.decorator +18 -0
- data/app/view_models/workarea/admin/order_view_model.decorator +13 -0
- data/app/view_models/workarea/storefront/cart_view_model.decorator +7 -0
- data/app/view_models/workarea/storefront/order_item_view_model.decorator +16 -0
- data/app/view_models/workarea/storefront/order_view_model.decorator +45 -0
- data/app/view_models/workarea/storefront/product_view_model.decorator +35 -0
- data/app/views/workarea/admin/catalog_products/_country_exceptions_card.html.haml +31 -0
- data/app/views/workarea/admin/catalog_products/_global_e_attributes.html.haml +3 -0
- data/app/views/workarea/admin/catalog_products/_global_e_fields.html.haml +4 -0
- data/app/views/workarea/admin/country_exceptions/edit.html.haml +48 -0
- data/app/views/workarea/admin/country_exceptions/index.html.haml +47 -0
- data/app/views/workarea/admin/country_exceptions/new.html.haml +44 -0
- data/app/views/workarea/admin/fixed_prices/edit.html.haml +73 -0
- data/app/views/workarea/admin/fixed_prices/index.html.haml +55 -0
- data/app/views/workarea/admin/fixed_prices/new.html.haml +70 -0
- data/app/views/workarea/admin/orders/_global_e.html.haml +27 -0
- data/app/views/workarea/admin/orders/attributes.html.haml +131 -0
- data/app/views/workarea/admin/orders/global_e.html.haml +110 -0
- data/app/views/workarea/admin/orders/show.html.haml +27 -0
- data/app/views/workarea/admin/orders/tenders/_global_e_payment.html.haml +3 -0
- data/app/views/workarea/admin/pricing_skus/_cards.html.haml +98 -0
- data/app/views/workarea/storefront/cart_items/create.html.haml +71 -0
- data/app/views/workarea/storefront/carts/_pricing.html.haml +14 -0
- data/app/views/workarea/storefront/carts/show.html.haml +187 -0
- data/app/views/workarea/storefront/ge_checkouts/show.html.haml +1 -0
- data/app/views/workarea/storefront/global_e/_country_picker.html.haml +1 -0
- data/app/views/workarea/storefront/global_e/_head.html.haml +10 -0
- data/app/views/workarea/storefront/orders/_summary.html.haml +275 -0
- data/app/views/workarea/storefront/orders/tenders/_global_e_payment.html.haml +3 -0
- data/app/views/workarea/storefront/products/_pricing.html.haml +49 -0
- data/app/views/workarea/storefront/products/_restricted_item_text.html.haml +1 -0
- data/app/views/workarea/storefront/users/orders/_summary.html.haml +22 -0
- data/app/workers/workarea/global_e/update_order_dispatch.rb +28 -0
- data/app/workers/workarea/save_user_order_details.decorator +9 -0
- data/bin/rails +25 -0
- data/config/initializers/appends.rb +46 -0
- data/config/initializers/seeds.rb +1 -0
- data/config/initializers/workarea.rb +64 -0
- data/config/locales/en.yml +105 -0
- data/config/routes.rb +31 -0
- data/lib/workarea/global_e/engine.rb +10 -0
- data/lib/workarea/global_e/error.rb +8 -0
- data/lib/workarea/global_e/version.rb +5 -0
- data/lib/workarea/global_e.rb +58 -0
- data/script/admin_ci +5 -0
- data/script/ci +8 -0
- data/script/core_ci +5 -0
- data/script/plugins_ci +5 -0
- data/script/storefront_ci +5 -0
- data/test/dummy/.ruby-version +1 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/config/manifest.js +3 -0
- data/test/dummy/app/assets/images/.keep +0 -0
- data/test/dummy/app/assets/javascripts/application.js +14 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +2 -0
- data/test/dummy/app/controllers/concerns/.keep +0 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/jobs/application_job.rb +2 -0
- data/test/dummy/app/mailers/application_mailer.rb +4 -0
- data/test/dummy/app/models/concerns/.keep +0 -0
- data/test/dummy/app/views/layouts/application.html.erb +15 -0
- data/test/dummy/app/views/layouts/mailer.html.erb +13 -0
- data/test/dummy/app/views/layouts/mailer.text.erb +1 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/bin/setup +28 -0
- data/test/dummy/bin/update +28 -0
- data/test/dummy/bin/yarn +11 -0
- data/test/dummy/config/application.rb +23 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +52 -0
- data/test/dummy/config/environments/production.rb +83 -0
- data/test/dummy/config/environments/test.rb +45 -0
- data/test/dummy/config/initializers/application_controller_renderer.rb +8 -0
- data/test/dummy/config/initializers/assets.rb +14 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/content_security_policy.rb +25 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +5 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/workarea.rb +5 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +9 -0
- data/test/dummy/config/locales/en.yml +33 -0
- data/test/dummy/config/puma.rb +34 -0
- data/test/dummy/config/routes.rb +5 -0
- data/test/dummy/config/secrets.yml +18 -0
- data/test/dummy/config/spring.rb +6 -0
- data/test/dummy/config.ru +5 -0
- data/test/dummy/db/seeds.rb +2 -0
- data/test/dummy/lib/assets/.keep +0 -0
- data/test/dummy/log/.keep +0 -0
- data/test/factories/workarea/global_e_factories.rb +836 -0
- data/test/integration/workarea/admin/catalog_product_country_exceptions_integration_test.rb +81 -0
- data/test/integration/workarea/admin/global_e_jump_to_integration_test.rb +20 -0
- data/test/integration/workarea/admin/pricing_sku_fixed_prices_integration_test.rb +83 -0
- data/test/integration/workarea/storefront/global_e_api/receive_order_integration_test.rb +278 -0
- data/test/integration/workarea/storefront/global_e_api/receive_order_refund_integration_test.rb +25 -0
- data/test/integration/workarea/storefront/global_e_api/receive_payment_integration_test.rb +34 -0
- data/test/integration/workarea/storefront/global_e_api/receive_shipping_info_integration_test.rb +29 -0
- data/test/integration/workarea/storefront/global_e_api/remove_restricted_products_integration_test.rb +27 -0
- data/test/integration/workarea/storefront/global_e_api/update_order_status_integration_test.rb +29 -0
- data/test/integration/workarea/storefront/global_e_checkout_cart_info/fixed_pricing_test.rb +438 -0
- data/test/integration/workarea/storefront/global_e_checkout_cart_info/gift_card_test.rb +63 -0
- data/test/integration/workarea/storefront/global_e_checkout_cart_info_integration_test.rb +660 -0
- data/test/integration/workarea/storefront/global_e_checkouts_integration_test.rb +71 -0
- data/test/integration/workarea/storefront/users/global_e_logins_integration_test.rb +20 -0
- data/test/models/workarea/catalog/product_global_e_test.rb +13 -0
- data/test/models/workarea/fixed_pricing_test.rb +117 -0
- data/test/models/workarea/global_e/country_exception_test.rb +36 -0
- data/test/models/workarea/payment_test.decorator +31 -0
- data/test/models/workarea/pricing/calculators/item_calculator_fixed_prices_test.rb +83 -0
- data/test/models/workarea/pricing/collection_fixed_prices_test.rb +83 -0
- data/test/models/workarea/pricing/price_distributor_test.decorator +21 -0
- data/test/models/workarea/pricing/sku_fixed_price_test.rb +133 -0
- data/test/support/workarea/global_e_support.rb +18 -0
- data/test/system/workarea/admin/global_e_system_test.rb +21 -0
- data/test/system/workarea/storefront/global_e_cart_system_test.rb +48 -0
- data/test/system/workarea/storefront/global_e_order_history_system_test.rb +43 -0
- data/test/teaspoon_env.rb +6 -0
- data/test/test_helper.rb +9 -0
- data/test/view_models/workarea/admin/global_e_order_view_model_test.rb +22 -0
- data/test/workers/workarea/global_e/update_order_dispatch_test.rb +64 -0
- data/test/workers/workarea/global_e_save_user_order_details_test.rb +41 -0
- data/workarea-global_e.gemspec +16 -0
- metadata +293 -0
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
module Workarea
|
|
2
|
+
module GlobalE
|
|
3
|
+
module Merchant
|
|
4
|
+
class Order
|
|
5
|
+
attr_reader :hash
|
|
6
|
+
|
|
7
|
+
def initialize(hash)
|
|
8
|
+
@hash = hash
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def to_h
|
|
12
|
+
hash
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# @return [String]
|
|
16
|
+
#
|
|
17
|
+
def culture_code
|
|
18
|
+
hash["CultureCode"]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Unique identifier of the Merchant on Global-e.
|
|
22
|
+
#
|
|
23
|
+
# @return [String]
|
|
24
|
+
#
|
|
25
|
+
def merchant_guid
|
|
26
|
+
hash["MerchantGUID"]
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Global-e order unique identifier.
|
|
30
|
+
#
|
|
31
|
+
# @return [String]
|
|
32
|
+
#
|
|
33
|
+
def order_id
|
|
34
|
+
hash["OrderId"]
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Order unique identifier on the Merchant’s site returned from a
|
|
38
|
+
# previous call to SendOrderToMerchant method for this order.
|
|
39
|
+
#
|
|
40
|
+
# @return [String]
|
|
41
|
+
#
|
|
42
|
+
def merchant_order_id
|
|
43
|
+
hash["MerchantOrderId"]
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Identifier of the cart on the Merchant’s site originally specified in
|
|
47
|
+
# merchantCartToken argument for SendCart method for the cart converted
|
|
48
|
+
# to this order on Global-e.
|
|
49
|
+
#
|
|
50
|
+
# @return [String]
|
|
51
|
+
#
|
|
52
|
+
def cart_id
|
|
53
|
+
hash["CartId"]
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Cart hash originally specified in merchantCartHash argument for
|
|
57
|
+
# SendCart method for the cart converted to this order on Global-e.
|
|
58
|
+
#
|
|
59
|
+
# @return [String]
|
|
60
|
+
#
|
|
61
|
+
def cart_hash
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Code denoting the order status on the Merchant’s site (to be mapped on Global-e side).
|
|
65
|
+
#
|
|
66
|
+
# @return [String]
|
|
67
|
+
#
|
|
68
|
+
def status_code
|
|
69
|
+
hash["StatusCode"]
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# 3-char ISO currency code for the order being posted. By default this
|
|
73
|
+
# is set to the original Merchant’s currency.
|
|
74
|
+
#
|
|
75
|
+
# @return [String]
|
|
76
|
+
#
|
|
77
|
+
def currency_code
|
|
78
|
+
hash["CurrencyCode"]
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# CountryCoefficient rate applied to the prices in this order.
|
|
82
|
+
#
|
|
83
|
+
# @return [Float]
|
|
84
|
+
#
|
|
85
|
+
def price_coefficient_rate
|
|
86
|
+
hash["PriceCoefficientRate"]
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# Average conversion rate applied to the prices paid by the end customer,
|
|
90
|
+
# when calculating the prices paid by Global-e to the Merchant in the
|
|
91
|
+
# original Merchant’s currency. This rate includes “FX conversion” and
|
|
92
|
+
# “marketing rounding” factors.
|
|
93
|
+
#
|
|
94
|
+
# @return [Float]
|
|
95
|
+
#
|
|
96
|
+
def rounding_rate
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# Internal User identifier on the Merchant’s site originally specified
|
|
100
|
+
# in shippingDetails.UserId argument for SendCart method for the cart
|
|
101
|
+
# converted to this order on Global-e.
|
|
102
|
+
#
|
|
103
|
+
# @return [String]
|
|
104
|
+
#
|
|
105
|
+
def user_id
|
|
106
|
+
hash["UserId"]
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
# Code denoting the local shipping method selected from the list of
|
|
110
|
+
# available shipping options provided in shippingOptionsList argument
|
|
111
|
+
# for SendCart method for the cart converted to this order on Global-e.
|
|
112
|
+
#
|
|
113
|
+
# @return [String]
|
|
114
|
+
#
|
|
115
|
+
def shipping_method_code
|
|
116
|
+
hash ["ShippingMethodCode"]
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
# Indicates if the end customer’s cart must be cleared before this method
|
|
120
|
+
# finishes execution on the Merchant’s site.
|
|
121
|
+
#
|
|
122
|
+
# @return [Boolean]
|
|
123
|
+
#
|
|
124
|
+
def clear_cart
|
|
125
|
+
hash["ClearCart"]
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
# Indicates if the end customer has opted on Global-e checkout to receive
|
|
129
|
+
# emails from the Merchant.
|
|
130
|
+
#
|
|
131
|
+
# @return [Boolean]
|
|
132
|
+
#
|
|
133
|
+
def allow_mails_from_merchant
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
# Number of loyalty points spent for this purchase. The existing loyalty
|
|
137
|
+
# points handling procedure must be applied to the end customer’s user
|
|
138
|
+
# account. Therefore, “Loyalty points” type discount must not be applied
|
|
139
|
+
# to the order directly, but can be used for the display purposes
|
|
140
|
+
# elsewhere in the system (i.e in end user’s My Account page).
|
|
141
|
+
#
|
|
142
|
+
# @return [Float]
|
|
143
|
+
#
|
|
144
|
+
def loyalty_points_spend
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
# Number of loyalty points to be earned for this purchase by the end
|
|
148
|
+
# customer on the Merchant’s site, as specified in loyaltyPointsEarned
|
|
149
|
+
# argument for SendCart method for the cart converted to this order on
|
|
150
|
+
# Global-e.
|
|
151
|
+
#
|
|
152
|
+
# @return [Float]
|
|
153
|
+
#
|
|
154
|
+
def loyalty_points_earned
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
# Loyalty code applicable to the Merchant’s site entered by the end
|
|
158
|
+
# customer in Global-e checkout.
|
|
159
|
+
#
|
|
160
|
+
# @return [String]
|
|
161
|
+
#
|
|
162
|
+
def loyalty_code
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
# Indicates if the end customer has requested “Same Day Dispatch” on
|
|
166
|
+
# Global-e checkout.
|
|
167
|
+
#
|
|
168
|
+
# @return [Boolean]
|
|
169
|
+
#
|
|
170
|
+
def same_day_dispatch
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
# Cost of “Same Day Dispatch” option selected by the end customer on
|
|
174
|
+
# Global-e checkout, in the original Merchant’s currency.
|
|
175
|
+
#
|
|
176
|
+
# @return [Float]
|
|
177
|
+
#
|
|
178
|
+
def same_day_dispatch_cost
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
# Indicates if the end customer hasn’t been charged VAT in Global-e
|
|
182
|
+
# checkout, as specified in doNotChargeVAT argument for SendCart method
|
|
183
|
+
# for the cart converted to this order on Global-e.
|
|
184
|
+
#
|
|
185
|
+
# @return [Boolean]
|
|
186
|
+
#
|
|
187
|
+
def do_not_charge_vat
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
# Indicates if the Merchant offers free international shipping to the
|
|
191
|
+
# end customer, as specified in IsFreeShipping argument for SendCart
|
|
192
|
+
# method for the cart converted to this order on Global-e.
|
|
193
|
+
#
|
|
194
|
+
# @return [Boolean]
|
|
195
|
+
#
|
|
196
|
+
def is_free_shipping
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
# Merchant’s free shipping coupon code applied by the end customer,
|
|
200
|
+
# as specified in FreeShippingCouponCode argument for SendCart method
|
|
201
|
+
# for the cart converted to this order on Global-e.
|
|
202
|
+
#
|
|
203
|
+
# @return [String]
|
|
204
|
+
#
|
|
205
|
+
def free_shipping_coupon_code
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
# Code denoting the Merchant’s store specified by the customer for
|
|
209
|
+
# “ship to shop” shipping destination (to be mapped on Global-e side).
|
|
210
|
+
#
|
|
211
|
+
# @return [String]
|
|
212
|
+
#
|
|
213
|
+
def ship_to_store_code
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
# Comments text entered by the end customer in Global-e checkout.
|
|
217
|
+
#
|
|
218
|
+
# @return [String]
|
|
219
|
+
#
|
|
220
|
+
def customer_comments
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
# Indicates if the order should be handled as split order (i.e. without consolidation)
|
|
224
|
+
#
|
|
225
|
+
# @return [Boolean]
|
|
226
|
+
#
|
|
227
|
+
def is_split_order
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
# Onetime voucher code used to place the order
|
|
231
|
+
#
|
|
232
|
+
# @return [String]
|
|
233
|
+
#
|
|
234
|
+
def ot_voucher_code
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
# Currency of the onetime voucher code used to place the order
|
|
238
|
+
#
|
|
239
|
+
# @return [String]
|
|
240
|
+
#
|
|
241
|
+
def ot_currency_code
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
# Amount taken off the voucher when applicable
|
|
245
|
+
#
|
|
246
|
+
# @return [Float]
|
|
247
|
+
#
|
|
248
|
+
def ot_voucher_amount
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
# Code used on the merchant’s side to identify the web store, as
|
|
252
|
+
# specified in WebStoreCode argument for SendCart method for the cart
|
|
253
|
+
# converted to this order on Global-e.
|
|
254
|
+
#
|
|
255
|
+
# @return [String]
|
|
256
|
+
#
|
|
257
|
+
def web_store_code
|
|
258
|
+
end
|
|
259
|
+
|
|
260
|
+
# The list of products being purchased
|
|
261
|
+
#
|
|
262
|
+
# @return [Array<Workarea::GlobalE::Merchant::Product>]
|
|
263
|
+
#
|
|
264
|
+
def products
|
|
265
|
+
@products ||= hash["Products"].map { |p| Merchant::Product.new p }
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
# The list of discounts being applied to the order, according to the
|
|
269
|
+
# original list of discounts received in SendCart for this order, and to
|
|
270
|
+
# the Merchant shipping configuration on Global-e.
|
|
271
|
+
#
|
|
272
|
+
# @return [Array<Workarea::GlobalE::Merchant::Discount>]
|
|
273
|
+
#
|
|
274
|
+
def discounts
|
|
275
|
+
@discounts ||= hash["Discounts"].map { |d| Merchant::Discount.new d }
|
|
276
|
+
end
|
|
277
|
+
|
|
278
|
+
# The list of markups being applied to the order, according to the
|
|
279
|
+
# Merchant shipping configuration on Global-e. Effectively Markup is a
|
|
280
|
+
# “negative Discount”. The main use case for Markups is when end customer
|
|
281
|
+
# is charged in Global-e checkout, a flat shipping rate, which is higher
|
|
282
|
+
# than the shipping rate, calculated for the respective order. In this
|
|
283
|
+
# case, Global-e pays the difference to the merchant in the form of
|
|
284
|
+
# Markups applied to the order.
|
|
285
|
+
#
|
|
286
|
+
# Unlike Discounts, Markups may be only passed to the Merchant’s
|
|
287
|
+
# back-end ERP system for reconciliation purposes, and may not be
|
|
288
|
+
# displayed to the end customer.
|
|
289
|
+
#
|
|
290
|
+
# @return [Array<Workarea::GlobalE::Merchant::Discount>]
|
|
291
|
+
#
|
|
292
|
+
def markups
|
|
293
|
+
end
|
|
294
|
+
|
|
295
|
+
# The paying customer’s preferences (Global-e acts as a paying customer).
|
|
296
|
+
#
|
|
297
|
+
# @return [Workarea::GlobalE::Merchant::Customer]
|
|
298
|
+
#
|
|
299
|
+
def customer
|
|
300
|
+
@customer ||= Merchant::Customer.new hash["Customer"]
|
|
301
|
+
end
|
|
302
|
+
|
|
303
|
+
# Primary customer’s billing details. Primary customer denotes the paying
|
|
304
|
+
# (Global-e) customer unless Customer.IsEndCustomerPrimary is not
|
|
305
|
+
# set to TRUE. Note that all string attributes of end customer’s details
|
|
306
|
+
# are indicated in URL encoded form. Therefore, if
|
|
307
|
+
# Customer.IsEndCustomerPrimary is TRUE then all string attributes in
|
|
308
|
+
# PrimaryBilling are URL encoded.
|
|
309
|
+
#
|
|
310
|
+
# @return [Workarea::GlobalE::Merchant::CustomerDetails]
|
|
311
|
+
#
|
|
312
|
+
def primary_billing
|
|
313
|
+
@primary_billing ||= Merchant::CustomerDetails.new hash["PrimaryBilling"], url_encoded: customer.is_end_customer_primary
|
|
314
|
+
end
|
|
315
|
+
|
|
316
|
+
# Primary customer’s shipping details. Primary customer denotes the paying
|
|
317
|
+
# (Global-e) customer unless Customer.IsEndCustomerPrimary is not
|
|
318
|
+
# set to TRUE. Note that all string attributes of end customer’s details
|
|
319
|
+
# are indicated in URL encoded form. Therefore, if
|
|
320
|
+
# Customer.IsEndCustomerPrimary is TRUE then all string attributes in
|
|
321
|
+
# PrimaryShipping are URL encoded
|
|
322
|
+
#
|
|
323
|
+
# @return [Workarea::GlobalE::Merchant::CustomerDetails]
|
|
324
|
+
#
|
|
325
|
+
def primary_shipping
|
|
326
|
+
@primary_shipping ||= Merchant::CustomerDetails.new hash["PrimaryShipping"], url_encoded: customer.is_end_customer_primary
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
# The paying customer’s payment details.
|
|
330
|
+
#
|
|
331
|
+
# @return [Workarea::GlobalE::Merchant::PaymentDetails]
|
|
332
|
+
#
|
|
333
|
+
def payment_details
|
|
334
|
+
@payment_details ||= Merchant::PaymentDetails.new hash["PaymentDetails"]
|
|
335
|
+
end
|
|
336
|
+
|
|
337
|
+
# Secondary customer’s billing details. Secondary customer denotes the
|
|
338
|
+
# end customer who has placed the order with Global-e checkout unless
|
|
339
|
+
# Customer.IsEndCustomerPrimary is not set to TRUE. Note that all
|
|
340
|
+
# string attributes of end customer’s details are indicated in URL
|
|
341
|
+
# encoded form. Therefore, if Customer.IsEndCustomerPrimary is FALSE
|
|
342
|
+
# then all string attributes in SecondaryBilling are URL encoded.
|
|
343
|
+
#
|
|
344
|
+
# @return [Workarea::GlobalE::Merchant::CustomerDetails]
|
|
345
|
+
#
|
|
346
|
+
def secondary_billing
|
|
347
|
+
@secondary_billing ||= Merchant::CustomerDetails.new hash["SecondaryBilling"], url_encoded: !customer.is_end_customer_primary
|
|
348
|
+
end
|
|
349
|
+
|
|
350
|
+
# Secondary customer’s shipping details. Secondary customer denotes the
|
|
351
|
+
# end customer who has placed the order with Global-e checkout unless
|
|
352
|
+
# Customer.IsEndCustomerPrimary is not set to TRUE. Note that all string
|
|
353
|
+
# attributes of end customer’s details are indicated in URL
|
|
354
|
+
# encoded form. Therefore, if Customer.IsEndCustomerPrimary is FALSE
|
|
355
|
+
# then all string attributes in SecondaryShipping are URL encoded.
|
|
356
|
+
#
|
|
357
|
+
# @return [Workarea::GlobalE::Merchant::CustomerDetails]
|
|
358
|
+
#
|
|
359
|
+
def secondary_shipping
|
|
360
|
+
@secondary_shipping ||= Merchant::CustomerDetails.new hash["SecondaryShipping"], url_encoded: !customer.is_end_customer_primary
|
|
361
|
+
end
|
|
362
|
+
|
|
363
|
+
# Details referring to the end customer’s order placed on Global-e side.
|
|
364
|
+
# These details are applicable only to the Merchants dealing with
|
|
365
|
+
# international customers’ support themselves.
|
|
366
|
+
#
|
|
367
|
+
# @return [Workarea::GlobalE::Merchant::InternationalDetails]
|
|
368
|
+
#
|
|
369
|
+
def international_details
|
|
370
|
+
@international_details ||= Merchant::InternationalDetails.new hash["InternationalDetails"]
|
|
371
|
+
end
|
|
372
|
+
|
|
373
|
+
# The shipping price paid by the customer converted to the merchant’s
|
|
374
|
+
# currency. Total Shipping price reducing Order Discounts
|
|
375
|
+
# (InternationalDetails.DiscountedShippingPrice price converted to the
|
|
376
|
+
# merchant currency).
|
|
377
|
+
#
|
|
378
|
+
# @return [Float]
|
|
379
|
+
#
|
|
380
|
+
def discounted_shipping_price
|
|
381
|
+
hash["DiscountedShippingPrice"]
|
|
382
|
+
end
|
|
383
|
+
|
|
384
|
+
# Indicates if the prepayment option for duties and taxes was offered to
|
|
385
|
+
# the customer.
|
|
386
|
+
#
|
|
387
|
+
# @return [Boolean]
|
|
388
|
+
#
|
|
389
|
+
def pre_pay_offered
|
|
390
|
+
end
|
|
391
|
+
|
|
392
|
+
# Indicates if the order is replacement.
|
|
393
|
+
#
|
|
394
|
+
# @return [Boolean]
|
|
395
|
+
#
|
|
396
|
+
def is_replacement_order
|
|
397
|
+
end
|
|
398
|
+
|
|
399
|
+
# Details reffering to the original order if the current order is replacement.
|
|
400
|
+
#
|
|
401
|
+
# @return [Workarea::GlobalE::Merchant::OriginalOrder]
|
|
402
|
+
#
|
|
403
|
+
def original_order
|
|
404
|
+
end
|
|
405
|
+
|
|
406
|
+
# @return [Float]
|
|
407
|
+
#
|
|
408
|
+
def total_duties_and_taxes_price
|
|
409
|
+
hash["TotalDutiesAndTaxesPrice"]
|
|
410
|
+
end
|
|
411
|
+
|
|
412
|
+
# Contains clearance Fees (CCF), in the merchant currency.
|
|
413
|
+
# This amount is included in the TotalDutiesAndTaxesPrice but provided
|
|
414
|
+
# separately as well so it can be displayed independently or as part of
|
|
415
|
+
# the shipping cost, on the invoice.
|
|
416
|
+
#
|
|
417
|
+
# @return [Float]
|
|
418
|
+
#
|
|
419
|
+
def contains_clearance_fees_price
|
|
420
|
+
hash["CCFPrice"]
|
|
421
|
+
end
|
|
422
|
+
end
|
|
423
|
+
end
|
|
424
|
+
end
|
|
425
|
+
end
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
module Workarea
|
|
2
|
+
module GlobalE
|
|
3
|
+
module Merchant
|
|
4
|
+
class OrderRefund
|
|
5
|
+
attr_reader :hash
|
|
6
|
+
|
|
7
|
+
def initialize(hash)
|
|
8
|
+
@hash = hash
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def to_h
|
|
12
|
+
hash
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Unique identifier of the Merchant on Global-e.
|
|
16
|
+
#
|
|
17
|
+
# @return [String]
|
|
18
|
+
#
|
|
19
|
+
def merchant_guid
|
|
20
|
+
hash["MerchantGUID"]
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Global-e order unique identifier.
|
|
24
|
+
#
|
|
25
|
+
# @return [String]
|
|
26
|
+
#
|
|
27
|
+
def order_id
|
|
28
|
+
hash["OrderId"]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Order unique identifier on the Merchant’s site returned from a
|
|
32
|
+
# previous call to SendOrderToMerchant method for this order.
|
|
33
|
+
#
|
|
34
|
+
# @return [String]
|
|
35
|
+
#
|
|
36
|
+
def merchant_order_id
|
|
37
|
+
hash["MerchantOrderId"]
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Refund amount in original Merchant’s currency including the local
|
|
41
|
+
# Merchant’s VAT (currency is specified in CurrencyCode property of the
|
|
42
|
+
# respective Merchant.Order).
|
|
43
|
+
#
|
|
44
|
+
# @return [Float]
|
|
45
|
+
#
|
|
46
|
+
def original_total_refund_amount
|
|
47
|
+
hash["OriginalTotalRefundAmount"]
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Total refund amount in end customer’s currency used for this order’s
|
|
51
|
+
# payment (currency is specified in InternationalDetails.CurrencyCode
|
|
52
|
+
# property for the respective Merchant.Order).
|
|
53
|
+
#
|
|
54
|
+
# @return [Float]
|
|
55
|
+
#
|
|
56
|
+
def total_refund_amount
|
|
57
|
+
hash["TotalRefundAmount"]
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# Reason for the order refund
|
|
61
|
+
#
|
|
62
|
+
# @return [Workarea::GlobalE::Merchant::OrderRefundReason]
|
|
63
|
+
#
|
|
64
|
+
def refund_reason
|
|
65
|
+
@refund_reason ||= OrderRefundReason.new hash["RefundReason"]
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Comments for the order refund
|
|
69
|
+
#
|
|
70
|
+
# @return [String]
|
|
71
|
+
#
|
|
72
|
+
def refund_comments
|
|
73
|
+
hash["RefundComponent"]
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# List of RefundProduct objects for this order refund.
|
|
77
|
+
#
|
|
78
|
+
# @return [Array<Workarea::GlobalE::Merchant::RefundProduct>]
|
|
79
|
+
#
|
|
80
|
+
def products
|
|
81
|
+
@products ||= hash["Products"].map { |refund_product| RefundProduct.new refund_product }
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# Code used on the merchant’s side to identify the web store, as
|
|
85
|
+
# specified in WebStoreCode argument for SendCart method for the cart
|
|
86
|
+
# converted to this order on Global-e.
|
|
87
|
+
#
|
|
88
|
+
# @return [String]
|
|
89
|
+
#
|
|
90
|
+
def web_store_code
|
|
91
|
+
hash["WebStoreCode"]
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# List of RefundComponent objects for this order refund.
|
|
95
|
+
#
|
|
96
|
+
# @return [Array<Workarea::GlobalE::Merchant::RefundComponent>]
|
|
97
|
+
#
|
|
98
|
+
def components
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module Workarea
|
|
2
|
+
module GlobalE
|
|
3
|
+
module Merchant
|
|
4
|
+
class OriginalOrder
|
|
5
|
+
# Global-e order unique identifier for the Original order.
|
|
6
|
+
#
|
|
7
|
+
# @return [String]
|
|
8
|
+
#
|
|
9
|
+
def id
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# OrderId returned from SendOrderToMerchant call for the Original order.
|
|
13
|
+
#
|
|
14
|
+
# @return [String]
|
|
15
|
+
#
|
|
16
|
+
def merchant_order_id
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# InternalOrderId returned from SendOrderToMerchant call for the Original order.
|
|
20
|
+
#
|
|
21
|
+
# @return [String]
|
|
22
|
+
#
|
|
23
|
+
def merchant_internal_order_id
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module Workarea
|
|
2
|
+
module GlobalE
|
|
3
|
+
module Merchant
|
|
4
|
+
class ParcelTracking
|
|
5
|
+
|
|
6
|
+
# Tracking number used by the selected international shipping method
|
|
7
|
+
# for this parcel.
|
|
8
|
+
#
|
|
9
|
+
# @return [String]
|
|
10
|
+
#
|
|
11
|
+
def tracking_number
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Full tracking URL including ParcelTrackingNumber used by the selected
|
|
15
|
+
# international shipping method for this parcel.
|
|
16
|
+
#
|
|
17
|
+
# @return [String]
|
|
18
|
+
#
|
|
19
|
+
def tracking_url
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Parcel code
|
|
23
|
+
#
|
|
24
|
+
# @return [String]
|
|
25
|
+
#
|
|
26
|
+
def code
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|