workarea 3.4.16 → 3.4.17
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +81 -0
- metadata +10 -579
- data/docs/Gemfile +0 -8
- data/docs/Gemfile.lock +0 -130
- data/docs/bin/middleman +0 -29
- data/docs/config.rb +0 -87
- data/docs/config.ru +0 -7
- data/docs/data/articles.yml +0 -157
- data/docs/package.json +0 -15
- data/docs/source/404.html.erb +0 -13
- data/docs/source/articles/access-routes-in-javascript.html.md +0 -33
- data/docs/source/articles/add-a-content-area.html.md +0 -169
- data/docs/source/articles/add-a-content-block-type.html.md +0 -334
- data/docs/source/articles/add-a-report.html.md +0 -202
- data/docs/source/articles/add-css-through-the-admin-ui.html.md +0 -30
- data/docs/source/articles/add-javascript-through-a-manifest.html.md +0 -367
- data/docs/source/articles/add-javascript-through-a-view.html.md +0 -80
- data/docs/source/articles/add-javascript-through-the-admin-ui.html.md +0 -30
- data/docs/source/articles/add-metrics.html.md +0 -58
- data/docs/source/articles/add-or-replace-a-pricing-calculator.html.md +0 -150
- data/docs/source/articles/add-remove-or-change-a-mongoid-validation.html.md +0 -147
- data/docs/source/articles/add-remove-or-change-a-product-template.html.md +0 -142
- data/docs/source/articles/add-remove-sort-and-group-storefront-search-filters.html.md +0 -483
- data/docs/source/articles/add-stylesheets-through-a-manifest.html.md +0 -276
- data/docs/source/articles/add-system-content.html.md +0 -138
- data/docs/source/articles/analytics-overview.html.md +0 -51
- data/docs/source/articles/analyze-storefront-search-results.html.md +0 -261
- data/docs/source/articles/api-overview.html.md +0 -35
- data/docs/source/articles/appending.html.md +0 -506
- data/docs/source/articles/application-document.html.md +0 -88
- data/docs/source/articles/automated-javascript-testing.html.md +0 -162
- data/docs/source/articles/b2b-overview.html.md +0 -64
- data/docs/source/articles/browser-and-device-support.html.md +0 -47
- data/docs/source/articles/change-product-placeholder-image.html.md +0 -39
- data/docs/source/articles/change-storefront-search-results.html.md +0 -283
- data/docs/source/articles/change-the-storefront-product-pricing-ui.html.md +0 -348
- data/docs/source/articles/change-the-storefront-search-filters-ui.html.md +0 -103
- data/docs/source/articles/checkout.html.md +0 -479
- data/docs/source/articles/commerce-model.html.md +0 -164
- data/docs/source/articles/configuration-for-hosting.html.md +0 -106
- data/docs/source/articles/configuration.html.md +0 -406
- data/docs/source/articles/configure-a-payment-gateway.html.md +0 -58
- data/docs/source/articles/configure-asset-storage.html.md +0 -29
- data/docs/source/articles/configure-asset-types.html.md +0 -18
- data/docs/source/articles/configure-contact-form-subjects-list.html.md +0 -24
- data/docs/source/articles/configure-imageoptim.html.md +0 -23
- data/docs/source/articles/configure-locales.html.md +0 -45
- data/docs/source/articles/configure-logins-and-authentication.html.md +0 -42
- data/docs/source/articles/configure-low-inventory-threshold.html.md +0 -26
- data/docs/source/articles/configure-product-image-sizes-and-processing.html.md +0 -28
- data/docs/source/articles/content.html.md +0 -554
- data/docs/source/articles/contentable.html.md +0 -41
- data/docs/source/articles/contribute-code.html.md +0 -69
- data/docs/source/articles/contribute-documentation.html.md +0 -60
- data/docs/source/articles/create-a-custom-discount.html.md +0 -234
- data/docs/source/articles/create-a-new-app.html.md +0 -131
- data/docs/source/articles/create-a-plugin.html.md +0 -19
- data/docs/source/articles/create-a-style-guide.html.md +0 -71
- data/docs/source/articles/create-a-theme.html.md +0 -134
- data/docs/source/articles/css-architectural-overview.html.md +0 -89
- data/docs/source/articles/customize-a-helper.html.md +0 -91
- data/docs/source/articles/decoration.html.md +0 -415
- data/docs/source/articles/define-and-configure-inventory-policies.html.md +0 -107
- data/docs/source/articles/documentation-style-guide.html.md +0 -48
- data/docs/source/articles/documentation.html.md +0 -54
- data/docs/source/articles/domain-modeling.html.md +0 -82
- data/docs/source/articles/error-pages.html.md.erb +0 -95
- data/docs/source/articles/extension-overview.html.md +0 -152
- data/docs/source/articles/favicon-support.html.md +0 -112
- data/docs/source/articles/feature-spec-helper-stylesheet.html.md +0 -25
- data/docs/source/articles/featurejs-and-feature-spec-helper.html.md +0 -20
- data/docs/source/articles/help-and-support.html.md +0 -34
- data/docs/source/articles/html-fragment-caching.html.md +0 -46
- data/docs/source/articles/http-caching.html.md +0 -43
- data/docs/source/articles/i18n.html.md +0 -35
- data/docs/source/articles/images-flow.html.md +0 -10
- data/docs/source/articles/index-storefront-search-documents.html.md +0 -104
- data/docs/source/articles/infrastructure.html.md +0 -46
- data/docs/source/articles/installing.html.md +0 -61
- data/docs/source/articles/integrate-a-payment-gateway.html.md +0 -124
- data/docs/source/articles/integrate-a-web-analytics-provider.html.md +0 -35
- data/docs/source/articles/integrate-an-inventory-management-system.html.md +0 -88
- data/docs/source/articles/integrating-with-other-software.html.md +0 -59
- data/docs/source/articles/inventory.html.md +0 -352
- data/docs/source/articles/javascript-coding-standards.html.md +0 -30
- data/docs/source/articles/javascript-modules.html.md +0 -174
- data/docs/source/articles/javascript-overview.html.md +0 -62
- data/docs/source/articles/javascript-reference-documentation.html.md +0 -51
- data/docs/source/articles/javascript-templates.html.md +0 -52
- data/docs/source/articles/low-level-caching.html.md +0 -25
- data/docs/source/articles/maintain-a-plugin.html.md +0 -12
- data/docs/source/articles/maintenance-policy.html.md +0 -79
- data/docs/source/articles/navigable.html.md +0 -51
- data/docs/source/articles/navigating-the-code.html.md +0 -149
- data/docs/source/articles/navigation.html.md +0 -386
- data/docs/source/articles/order-life-cycle.html.md +0 -546
- data/docs/source/articles/order-pricing.html.md +0 -389
- data/docs/source/articles/orders-and-items.html.md +0 -210
- data/docs/source/articles/orders.html.md +0 -66
- data/docs/source/articles/overriding.html.md +0 -155
- data/docs/source/articles/overview.html.md +0 -43
- data/docs/source/articles/plugins-overview.html.md +0 -12
- data/docs/source/articles/prerequisites-and-dependencies.html.md +0 -202
- data/docs/source/articles/products.html.md.erb +0 -1270
- data/docs/source/articles/progressive-web-application-support.html.md +0 -148
- data/docs/source/articles/rails-asset-manifests.html.md +0 -33
- data/docs/source/articles/rails-asset-view-helpers.html.md +0 -25
- data/docs/source/articles/reading-data.html.md +0 -10
- data/docs/source/articles/releasable.html.md +0 -37
- data/docs/source/articles/report-a-bug.html.md +0 -75
- data/docs/source/articles/ruby-coding-standards.html.md +0 -10
- data/docs/source/articles/run-sidekiq-in-a-local-environment.html.md +0 -40
- data/docs/source/articles/searching.html.md +0 -1005
- data/docs/source/articles/security-policy.html.md +0 -42
- data/docs/source/articles/seeds.html.md +0 -345
- data/docs/source/articles/shipping.html.md +0 -756
- data/docs/source/articles/sort-and-exclude-product-options.html.md +0 -47
- data/docs/source/articles/storefront-search-features.html.md +0 -568
- data/docs/source/articles/storefront-searches.html.md +0 -126
- data/docs/source/articles/style-guides.html.md +0 -21
- data/docs/source/articles/stylesheet-coding-standards.html.md +0 -24
- data/docs/source/articles/stylesheets-overview.html.md +0 -67
- data/docs/source/articles/swappable-list-data-structure.html.md +0 -81
- data/docs/source/articles/system-emails.html.md +0 -102
- data/docs/source/articles/taggable.html.md +0 -8
- data/docs/source/articles/test-a-credit-card-transaction.html.md +0 -16
- data/docs/source/articles/test-if-a-plugin-is-installed.html.md +0 -34
- data/docs/source/articles/testing.html.md +0 -914
- data/docs/source/articles/themes-overview.html.md +0 -155
- data/docs/source/articles/translate-administrable-content.html.md +0 -14
- data/docs/source/articles/translate-javascript-content.html.md +0 -16
- data/docs/source/articles/translate-or-customize-message-content.html.md +0 -29
- data/docs/source/articles/translate-or-customize-static-content.html.md +0 -30
- data/docs/source/articles/use-an-existing-workarea-app.html.md +0 -108
- data/docs/source/articles/view-models.html.md +0 -509
- data/docs/source/articles/views.html.md +0 -14
- data/docs/source/articles/workers.html.md +0 -613
- data/docs/source/articles/writing-data.html.md +0 -10
- data/docs/source/cli.html.md +0 -163
- data/docs/source/favicon.ico +0 -0
- data/docs/source/images/3-variants-1-option.png +0 -0
- data/docs/source/images/3-variants-3-options.png +0 -0
- data/docs/source/images/3-years-primary-image.png +0 -0
- data/docs/source/images/404-storefront-error-page.png +0 -0
- data/docs/source/images/404-system-content-admin.png +0 -0
- data/docs/source/images/404.jpg +0 -0
- data/docs/source/images/5-years-primary-image.png +0 -0
- data/docs/source/images/activity-dashboard.png +0 -0
- data/docs/source/images/activity-for-object.png +0 -0
- data/docs/source/images/activity-ui.png +0 -0
- data/docs/source/images/adding-captioned-image-block-custom-icon.png +0 -0
- data/docs/source/images/adding-captioned-image-block-default-icon.png +0 -0
- data/docs/source/images/admin-alerts-ui.png +0 -0
- data/docs/source/images/admin-category-range-filters.png +0 -0
- data/docs/source/images/admin-for-3-column-hero.png +0 -0
- data/docs/source/images/admin-help-index.png +0 -0
- data/docs/source/images/admin-help-ui.png +0 -0
- data/docs/source/images/admin-javascript.png +0 -0
- data/docs/source/images/admin-notification-for-deactivated-discount.png +0 -0
- data/docs/source/images/admin-notifications-ui.png +0 -0
- data/docs/source/images/admin-product-show-page.png +0 -0
- data/docs/source/images/admin-products-index-page.png +0 -0
- data/docs/source/images/admin-range-filters.png +0 -0
- data/docs/source/images/admin-style-guides-navigation.png +0 -0
- data/docs/source/images/after-re-seeding.png +0 -0
- data/docs/source/images/after-seeding-localhost-3000.png +0 -0
- data/docs/source/images/after-seeding.png +0 -0
- data/docs/source/images/arrow.svg +0 -1
- data/docs/source/images/arrow_white.svg +0 -1
- data/docs/source/images/aws-resource-map.png +0 -0
- data/docs/source/images/backordered-until-output-on-inventory-sku-card.png +0 -0
- data/docs/source/images/before-seeding-localhost-3000.png +0 -0
- data/docs/source/images/before-seeding.png +0 -0
- data/docs/source/images/browsing-workarea-versions-on-the-web.png +0 -0
- data/docs/source/images/bulk-asset-upload-on-assets-index-page.png +0 -0
- data/docs/source/images/bulk-asset-upload-while-editing-content.png +0 -0
- data/docs/source/images/bundle-show-workarea-core.png +0 -0
- data/docs/source/images/bundle-show-workarea.png +0 -0
- data/docs/source/images/calendar-for-backordered-until-field.png +0 -0
- data/docs/source/images/captioned-image-block-in-storefront.png +0 -0
- data/docs/source/images/captioned-image-content-block-storefront-component-style-guide.png +0 -0
- data/docs/source/images/cart-system-content-in-admin.png +0 -0
- data/docs/source/images/cart-system-content-in-storefront.png +0 -0
- data/docs/source/images/checkout-addresses-guest.png +0 -0
- data/docs/source/images/checkout-addresses-user.png +0 -0
- data/docs/source/images/checkout-confirmation.png +0 -0
- data/docs/source/images/checkout-flow-0.png +0 -0
- data/docs/source/images/checkout-flow-1.png +0 -0
- data/docs/source/images/checkout-flow-2.png +0 -0
- data/docs/source/images/checkout-flow-3.png +0 -0
- data/docs/source/images/checkout-flow-4.png +0 -0
- data/docs/source/images/checkout-payment-guest.png +0 -0
- data/docs/source/images/checkout-payment-user.png +0 -0
- data/docs/source/images/checkout-shipping.png +0 -0
- data/docs/source/images/color-picker-component-admin-style-guide.png +0 -0
- data/docs/source/images/color-picker-component-on-content-editing-screen.png +0 -0
- data/docs/source/images/commerce-model-carts-orders.png +0 -0
- data/docs/source/images/commerce-model-order-pricing.png +0 -0
- data/docs/source/images/commerce-model.png +0 -0
- data/docs/source/images/configuring-an-index-pattern-in-kibana.png +0 -0
- data/docs/source/images/content-block-presets.png +0 -0
- data/docs/source/images/content-search-customization.png +0 -0
- data/docs/source/images/country-with-region-data-in-address-form.png +0 -0
- data/docs/source/images/country-without-region-data-in-address-form.png +0 -0
- data/docs/source/images/create-content-block-preset-ui.png +0 -0
- data/docs/source/images/credit-card-icons.png +0 -0
- data/docs/source/images/css-added-through-admin.png +0 -0
- data/docs/source/images/css-admin-ui.png +0 -0
- data/docs/source/images/current-configuration-shown-in-admin-settings.png +0 -0
- data/docs/source/images/customer-impersonation-in-admin.png +0 -0
- data/docs/source/images/customer-impersonation-in-store-front.png +0 -0
- data/docs/source/images/date-filter-same-day.png +0 -0
- data/docs/source/images/developer-toolbar-in-store-front.png +0 -0
- data/docs/source/images/discounts-sorted-by-most-redeemed.png +0 -0
- data/docs/source/images/edit-help-article.png +0 -0
- data/docs/source/images/editing-content-for-search-customization.png +0 -0
- data/docs/source/images/editing-dynamic-captioned-image-block.png +0 -0
- data/docs/source/images/editing-product-fields-in-the-admin.png +0 -0
- data/docs/source/images/editing-search-system-content.png +0 -0
- data/docs/source/images/editing-static-captioned-image-block-custom-icon.png +0 -0
- data/docs/source/images/editing-static-captioned-image-block-default-icon.png +0 -0
- data/docs/source/images/external.svg +0 -1
- data/docs/source/images/favicon_16.png +0 -0
- data/docs/source/images/favicon_180.png +0 -0
- data/docs/source/images/favicon_32.png +0 -0
- data/docs/source/images/filters-all.png +0 -0
- data/docs/source/images/filters-control.png +0 -0
- data/docs/source/images/filters-custom.png +0 -0
- data/docs/source/images/filters-groups.png +0 -0
- data/docs/source/images/filters-material.png +0 -0
- data/docs/source/images/filters-omitted.png +0 -0
- data/docs/source/images/filters-pinned.png +0 -0
- data/docs/source/images/filters-range.png +0 -0
- data/docs/source/images/filters-sorted.png +0 -0
- data/docs/source/images/filters-wrapping-to-second-line-in-admin.png +0 -0
- data/docs/source/images/generic-product-template-images-no-options-selected.png +0 -0
- data/docs/source/images/generic-product-template-images-options-selected.png +0 -0
- data/docs/source/images/generic-template.png +0 -0
- data/docs/source/images/hosting.svg +0 -1
- data/docs/source/images/image-group-content-block-in-storefront.png +0 -0
- data/docs/source/images/images.svg +0 -1
- data/docs/source/images/import-export-screenshot.png +0 -0
- data/docs/source/images/invalid-display.png +0 -0
- data/docs/source/images/itcss.png +0 -0
- data/docs/source/images/kibana-dev-tools-console.png +0 -0
- data/docs/source/images/layout-content-admin-with-2-areas.png +0 -0
- data/docs/source/images/layout-content-admin-with-3-areas.png +0 -0
- data/docs/source/images/link-to-search-system-content.png +0 -0
- data/docs/source/images/logo.svg +0 -1
- data/docs/source/images/menu.svg +0 -2
- data/docs/source/images/mongo-replica-set.svg +0 -1
- data/docs/source/images/multi-column-hero-blocks.png +0 -0
- data/docs/source/images/option-selects-product-template-images-options-selected.png +0 -0
- data/docs/source/images/option-selects-template.png +0 -0
- data/docs/source/images/option-thumbnails-template.png +0 -0
- data/docs/source/images/order-item-total-price-diagram.png +0 -0
- data/docs/source/images/order-pricing-cart-example.png +0 -0
- data/docs/source/images/order-pricing-example-adjustments.png +0 -0
- data/docs/source/images/order-pricing-example-totals.png +0 -0
- data/docs/source/images/order-pricing-placed-order-example.png +0 -0
- data/docs/source/images/order-shipping-total-diagram.png +0 -0
- data/docs/source/images/order-show-with-multiple-tenders.png +0 -0
- data/docs/source/images/order-subtotal-price-diagram.png +0 -0
- data/docs/source/images/order-tax-total-diagram.png +0 -0
- data/docs/source/images/order-total-price-diagram.png +0 -0
- data/docs/source/images/order-total-value-diagram.png +0 -0
- data/docs/source/images/orders-dashboard-links.png +0 -0
- data/docs/source/images/oval.svg +0 -1
- data/docs/source/images/payment-icon-storefront-style-guide.png +0 -0
- data/docs/source/images/people-dashboard-links.png +0 -0
- data/docs/source/images/price-adjustments-diagram.png +0 -0
- data/docs/source/images/price-display-no-options.png +0 -0
- data/docs/source/images/price-display-options-selected.png +0 -0
- data/docs/source/images/pricing-calculators-diagram.png +0 -0
- data/docs/source/images/product-list-content-block-admin.png +0 -0
- data/docs/source/images/product-list-content-block-in-store-front.png +0 -0
- data/docs/source/images/promo-products-excluded-autocomplete-results-after.png +0 -0
- data/docs/source/images/promo-products-excluded-featured-category-results-after.png +0 -0
- data/docs/source/images/promo-products-excluded-recommendations-results-after.png +0 -0
- data/docs/source/images/promo-products-excluded-search-category-results-after.png +0 -0
- data/docs/source/images/promo-products-excluded-search-results-after.png +0 -0
- data/docs/source/images/promo-products-included-autocomplete-results-before.png +0 -0
- data/docs/source/images/promo-products-included-featured-category-results-before.png +0 -0
- data/docs/source/images/promo-products-included-recommendations-results-before.png +0 -0
- data/docs/source/images/promo-products-included-search-category-results-before.png +0 -0
- data/docs/source/images/promo-products-included-search-results-before.png +0 -0
- data/docs/source/images/rails-version-constraint.png +0 -0
- data/docs/source/images/re-enable-discount.png +0 -0
- data/docs/source/images/reading-data.svg +0 -1
- data/docs/source/images/readme-hero.png +0 -0
- data/docs/source/images/redesigned-customized-sort-for-search-results.png +0 -0
- data/docs/source/images/reviews-summary-above-share-buttons.png +0 -0
- data/docs/source/images/reviews-summary-below-product-name.png +0 -0
- data/docs/source/images/reviews-summary-below-share-buttons.png +0 -0
- data/docs/source/images/reviews-summary-removed.png +0 -0
- data/docs/source/images/rsa-fingerprint-for-stash.png +0 -0
- data/docs/source/images/ruby-version-constraint.png +0 -0
- data/docs/source/images/script-tag-added-through-admin.png +0 -0
- data/docs/source/images/search-analysis-admin-alternate-rendering.png +0 -0
- data/docs/source/images/search-analysis-admin.png +0 -0
- data/docs/source/images/search-quality-report.png +0 -0
- data/docs/source/images/search.svg +0 -1
- data/docs/source/images/searching-for-cart-system-content-in-admin.png +0 -0
- data/docs/source/images/searching-for-layout-system-content-in-admin.png +0 -0
- data/docs/source/images/seeded-admin.png +0 -0
- data/docs/source/images/seeds-from-plugins.png +0 -0
- data/docs/source/images/seo-metadata-automation-ui.png +0 -0
- data/docs/source/images/show-password-button.png +0 -0
- data/docs/source/images/storefront-autocomplete.png +0 -0
- data/docs/source/images/storefront-category-summary-content-block.png +0 -0
- data/docs/source/images/storefront-category.png +0 -0
- data/docs/source/images/storefront-product-after-overriding.png +0 -0
- data/docs/source/images/storefront-product-before-overriding.png +0 -0
- data/docs/source/images/storefront-product-browse-page.png +0 -0
- data/docs/source/images/storefront-product-recommendations.png +0 -0
- data/docs/source/images/storefront-product-show-page.png +0 -0
- data/docs/source/images/storefront-requests-and-search-requests.png +0 -0
- data/docs/source/images/storefront-search-request-handling.png +0 -0
- data/docs/source/images/storefront-search-response-creation.png +0 -0
- data/docs/source/images/storefront-search.png +0 -0
- data/docs/source/images/storefront-style-guides-navigation.png +0 -0
- data/docs/source/images/styles.css +0 -3
- data/docs/source/images/tax-categories-ui.png +0 -0
- data/docs/source/images/tax-rates-ui.png +0 -0
- data/docs/source/images/unpurchasable-product.png +0 -0
- data/docs/source/images/url-redirects-filtering.png +0 -0
- data/docs/source/images/utility-nav-area-in-admin.png +0 -0
- data/docs/source/images/utility-nav-area-in-storefront.png +0 -0
- data/docs/source/images/validation-message-in-storefront.png +0 -0
- data/docs/source/images/view-model-interface.png +0 -0
- data/docs/source/images/viewing-workarea-version-in-source.png +0 -0
- data/docs/source/images/workarea.svg +0 -1
- data/docs/source/images/worst-performing-searches-on-results-customization-page.png +0 -0
- data/docs/source/images/writing-data.svg +0 -1
- data/docs/source/index.html.erb +0 -166
- data/docs/source/javascripts/jquery.js +0 -2
- data/docs/source/javascripts/lunr.js +0 -7
- data/docs/source/javascripts/site.js +0 -299
- data/docs/source/javascripts/vendor/highlight.pack.js +0 -2
- data/docs/source/layouts/article.erb +0 -106
- data/docs/source/layouts/bare.erb +0 -46
- data/docs/source/layouts/layout.erb +0 -43
- data/docs/source/release-notes/workarea-3-0-0.html.md +0 -146
- data/docs/source/release-notes/workarea-3-0-1.html.md +0 -161
- data/docs/source/release-notes/workarea-3-0-10.html.md +0 -39
- data/docs/source/release-notes/workarea-3-0-11.html.md +0 -277
- data/docs/source/release-notes/workarea-3-0-12.html.md +0 -14
- data/docs/source/release-notes/workarea-3-0-13.html.md +0 -153
- data/docs/source/release-notes/workarea-3-0-14.html.md +0 -93
- data/docs/source/release-notes/workarea-3-0-15.html.md +0 -107
- data/docs/source/release-notes/workarea-3-0-16.html.md +0 -36
- data/docs/source/release-notes/workarea-3-0-17.html.md +0 -141
- data/docs/source/release-notes/workarea-3-0-18.html.md +0 -123
- data/docs/source/release-notes/workarea-3-0-19.html.md +0 -160
- data/docs/source/release-notes/workarea-3-0-2.html.md +0 -222
- data/docs/source/release-notes/workarea-3-0-20.html.md +0 -95
- data/docs/source/release-notes/workarea-3-0-21.html.md +0 -168
- data/docs/source/release-notes/workarea-3-0-22.html.md +0 -268
- data/docs/source/release-notes/workarea-3-0-23.html.md +0 -173
- data/docs/source/release-notes/workarea-3-0-24.html.md +0 -19
- data/docs/source/release-notes/workarea-3-0-25.html.md +0 -26
- data/docs/source/release-notes/workarea-3-0-26.html.md +0 -199
- data/docs/source/release-notes/workarea-3-0-27.html.md +0 -113
- data/docs/source/release-notes/workarea-3-0-28.html.md +0 -39
- data/docs/source/release-notes/workarea-3-0-29.html.md +0 -73
- data/docs/source/release-notes/workarea-3-0-3.html.md +0 -35
- data/docs/source/release-notes/workarea-3-0-30.html.md +0 -186
- data/docs/source/release-notes/workarea-3-0-31.html.md +0 -125
- data/docs/source/release-notes/workarea-3-0-32.html.md +0 -73
- data/docs/source/release-notes/workarea-3-0-33.html.md +0 -137
- data/docs/source/release-notes/workarea-3-0-34.html.md +0 -203
- data/docs/source/release-notes/workarea-3-0-35.html.md +0 -205
- data/docs/source/release-notes/workarea-3-0-36.html.md +0 -105
- data/docs/source/release-notes/workarea-3-0-37.html.md +0 -144
- data/docs/source/release-notes/workarea-3-0-38.html.md +0 -73
- data/docs/source/release-notes/workarea-3-0-39.html.md +0 -77
- data/docs/source/release-notes/workarea-3-0-4.html.md +0 -14
- data/docs/source/release-notes/workarea-3-0-40.html.md +0 -130
- data/docs/source/release-notes/workarea-3-0-41.html.md +0 -70
- data/docs/source/release-notes/workarea-3-0-42.html.md +0 -52
- data/docs/source/release-notes/workarea-3-0-43.html.md +0 -72
- data/docs/source/release-notes/workarea-3-0-44.html.md +0 -93
- data/docs/source/release-notes/workarea-3-0-45.html.md +0 -61
- data/docs/source/release-notes/workarea-3-0-46.html.md +0 -171
- data/docs/source/release-notes/workarea-3-0-47.html.md +0 -130
- data/docs/source/release-notes/workarea-3-0-48.html.md +0 -160
- data/docs/source/release-notes/workarea-3-0-49.html.md +0 -28
- data/docs/source/release-notes/workarea-3-0-5.html.md +0 -225
- data/docs/source/release-notes/workarea-3-0-50.html.md +0 -74
- data/docs/source/release-notes/workarea-3-0-51.html.md +0 -61
- data/docs/source/release-notes/workarea-3-0-52.html.md +0 -76
- data/docs/source/release-notes/workarea-3-0-53.html.md +0 -126
- data/docs/source/release-notes/workarea-3-0-54.html.md +0 -112
- data/docs/source/release-notes/workarea-3-0-55.html.md +0 -105
- data/docs/source/release-notes/workarea-3-0-56.html.md +0 -56
- data/docs/source/release-notes/workarea-3-0-57.html.md +0 -82
- data/docs/source/release-notes/workarea-3-0-58.html.md +0 -153
- data/docs/source/release-notes/workarea-3-0-59.html.md +0 -78
- data/docs/source/release-notes/workarea-3-0-6.html.md +0 -165
- data/docs/source/release-notes/workarea-3-0-60.html.md +0 -43
- data/docs/source/release-notes/workarea-3-0-61.html.md +0 -46
- data/docs/source/release-notes/workarea-3-0-62.html.md +0 -23
- data/docs/source/release-notes/workarea-3-0-63.html.md +0 -25
- data/docs/source/release-notes/workarea-3-0-64.html.md +0 -25
- data/docs/source/release-notes/workarea-3-0-65.html.md +0 -37
- data/docs/source/release-notes/workarea-3-0-7.html.md +0 -207
- data/docs/source/release-notes/workarea-3-0-8.html.md +0 -337
- data/docs/source/release-notes/workarea-3-0-9.html.md +0 -196
- data/docs/source/release-notes/workarea-3-1-0.html.md +0 -414
- data/docs/source/release-notes/workarea-3-1-1.html.md +0 -139
- data/docs/source/release-notes/workarea-3-1-10.html.md +0 -19
- data/docs/source/release-notes/workarea-3-1-11.html.md +0 -27
- data/docs/source/release-notes/workarea-3-1-12.html.md +0 -216
- data/docs/source/release-notes/workarea-3-1-13.html.md +0 -113
- data/docs/source/release-notes/workarea-3-1-14.html.md +0 -39
- data/docs/source/release-notes/workarea-3-1-15.html.md +0 -107
- data/docs/source/release-notes/workarea-3-1-16.html.md +0 -188
- data/docs/source/release-notes/workarea-3-1-17.html.md +0 -141
- data/docs/source/release-notes/workarea-3-1-18.html.md +0 -73
- data/docs/source/release-notes/workarea-3-1-19.html.md +0 -137
- data/docs/source/release-notes/workarea-3-1-2.html.md +0 -55
- data/docs/source/release-notes/workarea-3-1-20.html.md +0 -203
- data/docs/source/release-notes/workarea-3-1-21.html.md +0 -205
- data/docs/source/release-notes/workarea-3-1-22.html.md +0 -121
- data/docs/source/release-notes/workarea-3-1-23.html.md +0 -144
- data/docs/source/release-notes/workarea-3-1-24.html.md +0 -94
- data/docs/source/release-notes/workarea-3-1-25.html.md +0 -77
- data/docs/source/release-notes/workarea-3-1-26.html.md +0 -130
- data/docs/source/release-notes/workarea-3-1-27.html.md +0 -70
- data/docs/source/release-notes/workarea-3-1-28.html.md +0 -52
- data/docs/source/release-notes/workarea-3-1-29.html.md +0 -44
- data/docs/source/release-notes/workarea-3-1-3.html.md +0 -185
- data/docs/source/release-notes/workarea-3-1-30.html.md +0 -72
- data/docs/source/release-notes/workarea-3-1-31.html.md +0 -93
- data/docs/source/release-notes/workarea-3-1-32.html.md +0 -61
- data/docs/source/release-notes/workarea-3-1-33.html.md +0 -171
- data/docs/source/release-notes/workarea-3-1-34.html.md +0 -130
- data/docs/source/release-notes/workarea-3-1-35.html.md +0 -179
- data/docs/source/release-notes/workarea-3-1-36.html.md +0 -28
- data/docs/source/release-notes/workarea-3-1-37.html.md +0 -74
- data/docs/source/release-notes/workarea-3-1-38.html.md +0 -61
- data/docs/source/release-notes/workarea-3-1-39.html.md +0 -96
- data/docs/source/release-notes/workarea-3-1-4.html.md +0 -148
- data/docs/source/release-notes/workarea-3-1-40.html.md +0 -126
- data/docs/source/release-notes/workarea-3-1-41.html.md +0 -128
- data/docs/source/release-notes/workarea-3-1-42.html.md +0 -105
- data/docs/source/release-notes/workarea-3-1-43.html.md +0 -37
- data/docs/source/release-notes/workarea-3-1-44.html.md +0 -82
- data/docs/source/release-notes/workarea-3-1-45.html.md +0 -153
- data/docs/source/release-notes/workarea-3-1-46.html.md +0 -91
- data/docs/source/release-notes/workarea-3-1-47.html.md +0 -65
- data/docs/source/release-notes/workarea-3-1-48.html.md +0 -46
- data/docs/source/release-notes/workarea-3-1-49.html.md +0 -23
- data/docs/source/release-notes/workarea-3-1-5.html.md +0 -169
- data/docs/source/release-notes/workarea-3-1-50.html.md +0 -42
- data/docs/source/release-notes/workarea-3-1-51.html.md +0 -25
- data/docs/source/release-notes/workarea-3-1-52.html.md +0 -57
- data/docs/source/release-notes/workarea-3-1-6.html.md +0 -117
- data/docs/source/release-notes/workarea-3-1-7.html.md +0 -176
- data/docs/source/release-notes/workarea-3-1-8.html.md +0 -283
- data/docs/source/release-notes/workarea-3-1-9.html.md +0 -212
- data/docs/source/release-notes/workarea-3-2-0.html.md +0 -1705
- data/docs/source/release-notes/workarea-3-2-1.html.md +0 -216
- data/docs/source/release-notes/workarea-3-2-10.html.md +0 -237
- data/docs/source/release-notes/workarea-3-2-11.html.md +0 -121
- data/docs/source/release-notes/workarea-3-2-12.html.md +0 -145
- data/docs/source/release-notes/workarea-3-2-13.html.md +0 -138
- data/docs/source/release-notes/workarea-3-2-14.html.md +0 -77
- data/docs/source/release-notes/workarea-3-2-15.html.md +0 -130
- data/docs/source/release-notes/workarea-3-2-16.html.md +0 -111
- data/docs/source/release-notes/workarea-3-2-17.html.md +0 -52
- data/docs/source/release-notes/workarea-3-2-18.html.md +0 -44
- data/docs/source/release-notes/workarea-3-2-19.html.md +0 -72
- data/docs/source/release-notes/workarea-3-2-2.html.md +0 -145
- data/docs/source/release-notes/workarea-3-2-20.html.md +0 -93
- data/docs/source/release-notes/workarea-3-2-21.html.md +0 -61
- data/docs/source/release-notes/workarea-3-2-22.html.md +0 -154
- data/docs/source/release-notes/workarea-3-2-23.html.md +0 -130
- data/docs/source/release-notes/workarea-3-2-24.html.md +0 -200
- data/docs/source/release-notes/workarea-3-2-25.html.md +0 -28
- data/docs/source/release-notes/workarea-3-2-26.html.md +0 -94
- data/docs/source/release-notes/workarea-3-2-27.html.md +0 -61
- data/docs/source/release-notes/workarea-3-2-28.html.md +0 -96
- data/docs/source/release-notes/workarea-3-2-29.html.md +0 -126
- data/docs/source/release-notes/workarea-3-2-30.html.md +0 -112
- data/docs/source/release-notes/workarea-3-2-31.html.md +0 -105
- data/docs/source/release-notes/workarea-3-2-32.html.md +0 -56
- data/docs/source/release-notes/workarea-3-2-33.html.md +0 -82
- data/docs/source/release-notes/workarea-3-2-34.html.md +0 -153
- data/docs/source/release-notes/workarea-3-2-35.html.md +0 -91
- data/docs/source/release-notes/workarea-3-2-36.html.md +0 -118
- data/docs/source/release-notes/workarea-3-2-37.html.md +0 -46
- data/docs/source/release-notes/workarea-3-2-38.html.md +0 -23
- data/docs/source/release-notes/workarea-3-2-39.html.md +0 -42
- data/docs/source/release-notes/workarea-3-2-4.html.md +0 -109
- data/docs/source/release-notes/workarea-3-2-40.html.md +0 -25
- data/docs/source/release-notes/workarea-3-2-41.html.md +0 -90
- data/docs/source/release-notes/workarea-3-2-5.html.md +0 -186
- data/docs/source/release-notes/workarea-3-2-6.html.md +0 -173
- data/docs/source/release-notes/workarea-3-2-7.html.md +0 -89
- data/docs/source/release-notes/workarea-3-2-8.html.md +0 -137
- data/docs/source/release-notes/workarea-3-2-9.html.md +0 -219
- data/docs/source/release-notes/workarea-3-3-0.html.md +0 -1272
- data/docs/source/release-notes/workarea-3-3-1.html.md +0 -324
- data/docs/source/release-notes/workarea-3-3-10.html.md +0 -69
- data/docs/source/release-notes/workarea-3-3-11.html.md +0 -72
- data/docs/source/release-notes/workarea-3-3-12.html.md +0 -136
- data/docs/source/release-notes/workarea-3-3-13.html.md +0 -61
- data/docs/source/release-notes/workarea-3-3-14.html.md +0 -196
- data/docs/source/release-notes/workarea-3-3-15.html.md +0 -167
- data/docs/source/release-notes/workarea-3-3-16.html.md +0 -234
- data/docs/source/release-notes/workarea-3-3-17.html.md +0 -82
- data/docs/source/release-notes/workarea-3-3-18.html.md +0 -165
- data/docs/source/release-notes/workarea-3-3-19.html.md +0 -106
- data/docs/source/release-notes/workarea-3-3-2.html.md +0 -72
- data/docs/source/release-notes/workarea-3-3-20.html.md +0 -116
- data/docs/source/release-notes/workarea-3-3-21.html.md +0 -228
- data/docs/source/release-notes/workarea-3-3-22.html.md +0 -125
- data/docs/source/release-notes/workarea-3-3-23.html.md +0 -154
- data/docs/source/release-notes/workarea-3-3-24.html.md +0 -70
- data/docs/source/release-notes/workarea-3-3-25.html.md +0 -114
- data/docs/source/release-notes/workarea-3-3-26.html.md +0 -260
- data/docs/source/release-notes/workarea-3-3-27.html.md +0 -138
- data/docs/source/release-notes/workarea-3-3-28.html.md +0 -147
- data/docs/source/release-notes/workarea-3-3-29.html.md +0 -63
- data/docs/source/release-notes/workarea-3-3-3.html.md +0 -153
- data/docs/source/release-notes/workarea-3-3-30.html.md +0 -102
- data/docs/source/release-notes/workarea-3-3-31.html.md +0 -57
- data/docs/source/release-notes/workarea-3-3-32.html.md +0 -44
- data/docs/source/release-notes/workarea-3-3-33.html.md +0 -114
- data/docs/source/release-notes/workarea-3-3-34.html.md +0 -29
- data/docs/source/release-notes/workarea-3-3-4.html.md +0 -332
- data/docs/source/release-notes/workarea-3-3-5.html.md +0 -242
- data/docs/source/release-notes/workarea-3-3-6.html.md +0 -100
- data/docs/source/release-notes/workarea-3-3-7.html.md +0 -148
- data/docs/source/release-notes/workarea-3-3-8.html.md +0 -163
- data/docs/source/release-notes/workarea-3-3-9.html.md +0 -93
- data/docs/source/release-notes/workarea-3-4-0.html.md +0 -580
- data/docs/source/release-notes/workarea-3-4-1.html.md +0 -150
- data/docs/source/release-notes/workarea-3-4-10.html.md +0 -72
- data/docs/source/release-notes/workarea-3-4-11.html.md +0 -60
- data/docs/source/release-notes/workarea-3-4-12.html.md +0 -155
- data/docs/source/release-notes/workarea-3-4-15.html.md +0 -100
- data/docs/source/release-notes/workarea-3-4-16.html.md +0 -88
- data/docs/source/release-notes/workarea-3-4-2.html.md +0 -188
- data/docs/source/release-notes/workarea-3-4-3.html.md +0 -136
- data/docs/source/release-notes/workarea-3-4-4.html.md +0 -114
- data/docs/source/release-notes/workarea-3-4-5.html.md +0 -275
- data/docs/source/release-notes/workarea-3-4-6.html.md +0 -169
- data/docs/source/release-notes/workarea-3-4-7.html.md +0 -162
- data/docs/source/release-notes/workarea-3-4-8.html.md +0 -95
- data/docs/source/release-notes/workarea-3-4-9.html.md +0 -135
- data/docs/source/release-notes.html.md +0 -261
- data/docs/source/search.html.erb +0 -34
- data/docs/source/shared/_header.erb +0 -61
- data/docs/source/shared/_svgs.erb +0 -17
- data/docs/source/style_guide/index.html.erb +0 -382
- data/docs/source/stylesheets/_base.scss +0 -125
- data/docs/source/stylesheets/_components.scss +0 -669
- data/docs/source/stylesheets/_helpers.scss +0 -10
- data/docs/source/stylesheets/_opinions.scss +0 -42
- data/docs/source/stylesheets/_settings.scss +0 -56
- data/docs/source/stylesheets/_typography.scss +0 -119
- data/docs/source/stylesheets/site.css.scss +0 -14
- data/docs/source/stylesheets/vendor/_avalanche.scss +0 -328
- data/docs/source/stylesheets/vendor/_normalize.scss +0 -341
- data/docs/source/stylesheets/vendor/highlight/_tomorrow_night_blue.scss +0 -75
- data/docs/source/upgrade-guides/workarea-3-4-0.html.md +0 -152
- data/docs/source/upgrade-guides.html.md +0 -18
- data/docs/workarea_renderer.rb +0 -8
- data/docs/yarn.lock +0 -2522
@@ -1,479 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Checkout
|
3
|
-
excerpt: Explanation of checkout including modeling, flow, steps, and extension
|
4
|
-
---
|
5
|
-
|
6
|
-
Checkout
|
7
|
-
======================================================================
|
8
|
-
|
9
|
-
Checkout is the process that completes and records a transaction (a sale) between a shopper and the retailer.
|
10
|
-
Checkout gets the [order](orders.html), [shippings](shipping.html), and payment into the states necessary to place the order.
|
11
|
-
|
12
|
-
This doc first covers checkout from the perspective of models (modeling) and controller actions (flow).
|
13
|
-
Then it covers each step in more detail, including shared implementation.
|
14
|
-
The doc concludes with a brief explanation of checkout extension, such as changing a step or adding a new step.
|
15
|
-
|
16
|
-
|
17
|
-
Modeling
|
18
|
-
----------------------------------------------------------------------
|
19
|
-
|
20
|
-
Consider the example of a user checking out who is currently browsing `/checkout/addresses`.
|
21
|
-
Within the context of this web request in the Storefront, `current_checkout` provides an instance of `Workarea::Checkout`, initialized from `current_order` and (if available) `current_user`.
|
22
|
-
|
23
|
-
```ruby
|
24
|
-
current_checkout.class
|
25
|
-
# => Workarea::Checkout
|
26
|
-
|
27
|
-
current_checkout.order.present?
|
28
|
-
# => true
|
29
|
-
|
30
|
-
current_checkout.user.present?
|
31
|
-
# => false
|
32
|
-
```
|
33
|
-
|
34
|
-
The example above represents a _guest_ checkout (no user), which is currently _incomplete_, meaning the order cannot be placed.
|
35
|
-
|
36
|
-
```ruby
|
37
|
-
current_checkout.complete?
|
38
|
-
# => false
|
39
|
-
```
|
40
|
-
|
41
|
-
Checkout is completed through a series of steps.
|
42
|
-
Each of these steps is modeled by a class.
|
43
|
-
|
44
|
-
```ruby
|
45
|
-
puts current_checkout.steps
|
46
|
-
# Workarea::Checkout::Steps::Addresses
|
47
|
-
# Workarea::Checkout::Steps::Shipping
|
48
|
-
# Workarea::Checkout::Steps::Payment
|
49
|
-
```
|
50
|
-
|
51
|
-
As needed throughout checkout, a checkout step object is initialized.
|
52
|
-
A checkout step object is always initialized with a checkout instance.
|
53
|
-
|
54
|
-
```ruby
|
55
|
-
addresses_step = current_checkout.steps.first.new(current_checkout)
|
56
|
-
```
|
57
|
-
|
58
|
-
As the shopper progresses through checkout, each checkout request re-initializes the current checkout object and the object representing the current checkout step.
|
59
|
-
Each step of checkout _updates_ the checkout until the step is _complete_.
|
60
|
-
|
61
|
-
Each checkout step model therefore responds to `#update` and `#complete?`.
|
62
|
-
The `#update` method uses the given params to mutate and persist the underlying transactional models (i.e. order, shippings, payment).
|
63
|
-
The `#complete?` method determines if those transactional models are in the necessary states to continue to the next step of checkout (or place the order).
|
64
|
-
|
65
|
-
```ruby
|
66
|
-
# addresses step is incomplete
|
67
|
-
|
68
|
-
addresses_step.complete?
|
69
|
-
# => false
|
70
|
-
|
71
|
-
# collect params from the shopper and update the checkout
|
72
|
-
|
73
|
-
address_params = {
|
74
|
-
first_name: 'Ben',
|
75
|
-
last_name: 'Crouse',
|
76
|
-
street: '22 S 3rd St',
|
77
|
-
city: 'Philadelphia',
|
78
|
-
region: 'PA',
|
79
|
-
postal_code: '19106',
|
80
|
-
country: 'US',
|
81
|
-
phone_number: '2159251800'
|
82
|
-
}
|
83
|
-
|
84
|
-
addresses_step.update(
|
85
|
-
email: 'bcrouse@workarea.com',
|
86
|
-
shipping_address: address_params,
|
87
|
-
billing_address: address_params
|
88
|
-
)
|
89
|
-
|
90
|
-
# addresses step is now complete
|
91
|
-
|
92
|
-
addresses_step.complete?
|
93
|
-
# => true
|
94
|
-
```
|
95
|
-
|
96
|
-
This process of updating a step until it is complete is repeated until all steps of checkout are complete.
|
97
|
-
At that point, the checkout itself is considered complete, and the order can be placed.
|
98
|
-
|
99
|
-
```ruby
|
100
|
-
# query the checkout status
|
101
|
-
current_checkout.complete?
|
102
|
-
# => true
|
103
|
-
|
104
|
-
# place the order
|
105
|
-
current_checkout.place_order
|
106
|
-
# => true
|
107
|
-
```
|
108
|
-
|
109
|
-
The examples above illustrate the checkout process from the perspective of the checkout models.
|
110
|
-
However, in practice, shoppers check out via a series of web requests in the Storefront.
|
111
|
-
This flow is covered next.
|
112
|
-
|
113
|
-
|
114
|
-
Flow
|
115
|
-
----------------------------------------------------------------------
|
116
|
-
|
117
|
-
The checkout UI in the Storefront guides a shopper through a series of Storefront web requests, each of which collects the necessary data from the shopper to complete a particular step of checkout.
|
118
|
-
After all steps are complete, the order is placed, and the shopper is redirected to a view of the placed order.
|
119
|
-
|
120
|
-
The entire flow is illustrated in the following diagram.
|
121
|
-
The sections following the diagram provide additional details for each step.
|
122
|
-
|
123
|
-
![Checkout flow](../images/checkout-flow-0.png)
|
124
|
-
|
125
|
-
![Checkout flow](../images/checkout-flow-1.png)
|
126
|
-
|
127
|
-
![Checkout flow](../images/checkout-flow-2.png)
|
128
|
-
|
129
|
-
![Checkout flow](../images/checkout-flow-3.png)
|
130
|
-
|
131
|
-
![Checkout flow](../images/checkout-flow-4.png)
|
132
|
-
|
133
|
-
|
134
|
-
Entry Point
|
135
|
-
----------------------------------------------------------------------
|
136
|
-
|
137
|
-
The checkout entry point determines which step of checkout to initially present to the shopper.
|
138
|
-
|
139
|
-
It's possible for a checkout to be complete (`Checkout#complete?`) as soon as it is initialized.
|
140
|
-
In this case, data from the checkout's user and other sources are used to _autocomplete_ the checkout, and the shopper is redirected to the final step of checkout (payment and place order).
|
141
|
-
From there, the shopper can make changes to the current and previous checkout steps, or they can simply click "Place Order" to finish checking out.
|
142
|
-
|
143
|
-
If a checkout cannot be autocompleted (e.g. there is no user, or there isn't enough information stored on the user), the shopper is redirected to the addresses step to begin checkout.
|
144
|
-
|
145
|
-
|
146
|
-
### Code
|
147
|
-
|
148
|
-
Run the following command from your application/plugin root to list relevant code files for this step:
|
149
|
-
|
150
|
-
```bash
|
151
|
-
echo $(bundle show workarea-storefront)/app/controllers/workarea/storefront/checkouts_controller.rb
|
152
|
-
```
|
153
|
-
|
154
|
-
|
155
|
-
Step 1: Addresses
|
156
|
-
----------------------------------------------------------------------
|
157
|
-
|
158
|
-
The addresses step of checkout collects the shopper's email address, shipping address, and billing address.
|
159
|
-
Any or all of these may be pre-filled from data stored on the user.
|
160
|
-
The shipping and billing addresses may be entered as new addresses or selected from a menu of saved addresses.
|
161
|
-
The billing address may also be entered by choosing "Same as Shipping", which is selected by default.
|
162
|
-
|
163
|
-
Addresses step, guest checkout:
|
164
|
-
|
165
|
-
![Checkout addresses, guest checkout](../images/checkout-addresses-guest.png)
|
166
|
-
|
167
|
-
(
|
168
|
-
The screenshot above includes shipping to multiple addresses and address autocomplete.
|
169
|
-
These features are provided by plugins and are not covered in this doc.
|
170
|
-
)
|
171
|
-
|
172
|
-
Here is the addresses step as a returning user:
|
173
|
-
|
174
|
-
![Checkout addresses, returning user](../images/checkout-addresses-user.png)
|
175
|
-
|
176
|
-
|
177
|
-
### Routes
|
178
|
-
|
179
|
-
* `GET /checkout/addresses`
|
180
|
-
* `PATCH /checkout/addresses`
|
181
|
-
|
182
|
-
|
183
|
-
### `update` Params
|
184
|
-
|
185
|
-
* `:email`
|
186
|
-
* `:shipping_address`
|
187
|
-
* `:billing address`
|
188
|
-
|
189
|
-
|
190
|
-
### `complete?` Conditions
|
191
|
-
|
192
|
-
* Order is valid (`Order#valid?`)
|
193
|
-
* Payment address is present and valid (`Payment#address`, `Payment::Address#valid?`)
|
194
|
-
* If order requires shipping (`Order#requires_shipping?`), all shippings are shippable (`Shipping#shippable?`)
|
195
|
-
|
196
|
-
|
197
|
-
### Code
|
198
|
-
|
199
|
-
Run the following command from your application/plugin root to list relevant code files for this step:
|
200
|
-
|
201
|
-
```ruby
|
202
|
-
echo "
|
203
|
-
$(bundle show workarea-core)/app/models/workarea/checkout/steps/addresses.rb
|
204
|
-
$(bundle show workarea-core)/test/models/workarea/checkout/steps/addresses_test.rb
|
205
|
-
$(bundle show workarea-storefront)/app/controllers/workarea/storefront/checkout/addresses_controller.rb
|
206
|
-
$(bundle show workarea-storefront)/app/view_models/workarea/storefront/checkout/addresses_view_model.rb
|
207
|
-
$(bundle show workarea-storefront)/test/view_models/workarea/storefront/checkout/addresses_view_model_test.rb
|
208
|
-
$(bundle show workarea-storefront)/app/assets/javascripts/workarea/storefront/modules/address_region_fields.js
|
209
|
-
$(bundle show workarea-storefront)/app/assets/javascripts/workarea/storefront/modules/checkout_addresses_forms.js
|
210
|
-
$(bundle show workarea-storefront)/app/assets/javascripts/workarea/storefront/templates/saved_addresses_property.jst.ejs
|
211
|
-
$(bundle show workarea-storefront)/app/assets/javascripts/workarea/storefront/templates/same_as_shipping_button_property.jst.ejs
|
212
|
-
$(bundle show workarea-storefront)/app/views/workarea/storefront/checkouts/addresses.html.haml
|
213
|
-
$(bundle show workarea-storefront)/app/assets/stylesheets/workarea/storefront/components/_checkout_addresses.scss
|
214
|
-
"
|
215
|
-
```
|
216
|
-
|
217
|
-
|
218
|
-
Step 2: Shipping
|
219
|
-
----------------------------------------------------------------------
|
220
|
-
|
221
|
-
The shipping step of checkout collects the shopper's choice of shipping service and, optionally, shipping instructions.
|
222
|
-
A shipping service is always selected by default, but the shopper can change the shipping service if more than one is available.
|
223
|
-
Changing the service asynchronously updates the UI to reflect the effects on order pricing.
|
224
|
-
The shipping instructions field is a simple text field that is hidden by default.
|
225
|
-
|
226
|
-
The shipping step:
|
227
|
-
|
228
|
-
![Checkout shipping](../images/checkout-shipping.png)
|
229
|
-
|
230
|
-
(
|
231
|
-
The screenshot above includes shipping to multiple addresses, gift message, and gift wrapping.
|
232
|
-
These features are provided by plugins and are not covered in this doc.
|
233
|
-
)
|
234
|
-
|
235
|
-
|
236
|
-
### Routes
|
237
|
-
|
238
|
-
* `GET /checkout/shipping`
|
239
|
-
* `PATCH /checkout/shipping`
|
240
|
-
|
241
|
-
|
242
|
-
### `update` Params
|
243
|
-
|
244
|
-
* `:shipping_service`
|
245
|
-
* `:shipping_instructions`
|
246
|
-
|
247
|
-
|
248
|
-
### `complete?` Conditions
|
249
|
-
|
250
|
-
* Order is valid (`Order#valid?`)
|
251
|
-
* If order requires shipping (`Order#requires_shipping?`), first shipping is valid (`Shipping#valid?`)
|
252
|
-
|
253
|
-
|
254
|
-
### Code
|
255
|
-
|
256
|
-
Run the following command from your application/plugin root to list relevant code files for this step:
|
257
|
-
|
258
|
-
```ruby
|
259
|
-
echo "
|
260
|
-
$(bundle show workarea-core)/app/models/workarea/checkout/steps/shipping.rb
|
261
|
-
$(bundle show workarea-core)/test/models/workarea/checkout/steps/shipping_test.rb
|
262
|
-
$(bundle show workarea-core)/app/models/workarea/checkout/shipping_options.rb
|
263
|
-
$(bundle show workarea-core)/test/models/workarea/checkout/shipping_options_test.rb
|
264
|
-
$(bundle show workarea-storefront)/app/controllers/workarea/storefront/checkout/shipping_controller.rb
|
265
|
-
$(bundle show workarea-storefront)/app/view_models/workarea/storefront/checkout/shipping_view_model.rb
|
266
|
-
$(bundle show workarea-storefront)/app/assets/javascripts/workarea/storefront/modules/checkout_shipping_services.js
|
267
|
-
$(bundle show workarea-storefront)/app/views/workarea/storefront/checkouts/shipping.html.haml
|
268
|
-
$(bundle show workarea-storefront)/app/assets/stylesheets/workarea/storefront/components/_checkout_shipping.scss
|
269
|
-
"
|
270
|
-
```
|
271
|
-
|
272
|
-
|
273
|
-
Step 3: Payment & Place Order
|
274
|
-
----------------------------------------------------------------------
|
275
|
-
|
276
|
-
The third and final step of checkout collects payment and then places the order after the checkout is considered complete.
|
277
|
-
Payment may be the ID of a saved credit card, or it may be a new credit card (in which case the value of `:payment` is `'new_card'`, and the additional param `:credit_card` contains the credit card attributes; e.g. `:number`).
|
278
|
-
|
279
|
-
The payment step, guest checkout:
|
280
|
-
|
281
|
-
![Checkout payment, guest](../images/checkout-payment-guest.png)
|
282
|
-
|
283
|
-
(
|
284
|
-
The "Enter a Promo Code" button, shown above, reveals an additional promo code form, which is separate from the checkout form.
|
285
|
-
The form submits to `PATCH /cart/add_promo_code` and then returns the shopper to this step of checkout.
|
286
|
-
Therefore, although this form appears within the checkout UI, it is not part of checkout from a modeling and flow standpoint and isn't included in the discussions above.
|
287
|
-
|
288
|
-
The screenshot above also includes quoting, gift cards, and shipping to multiple addresses.
|
289
|
-
These features are provided by plugins and are not covered in this doc.
|
290
|
-
)
|
291
|
-
|
292
|
-
Here is the payment step as a returning user:
|
293
|
-
|
294
|
-
![Checkout payment, returning user](../images/checkout-payment-user.png)
|
295
|
-
|
296
|
-
Placing the order has various effects; some inline with the original web request, others deferred as background jobs.
|
297
|
-
Investigate the following Ruby API calls to see all the effects:
|
298
|
-
|
299
|
-
* `Order#place`
|
300
|
-
* `Checkout#place_order`
|
301
|
-
* `Checkout#place_order_side_effects`
|
302
|
-
* `Storefront::Checkout::PlaceOrderController#completed_place_order`
|
303
|
-
* `SaveUserOrderDetails#perform`
|
304
|
-
* `MarkDiscountsAsRedeemed#perform`
|
305
|
-
* `SaveOrderMetrics#perform`
|
306
|
-
|
307
|
-
For convenience, run the following command from your application/plugin root to list the source files where the above methods are defined:
|
308
|
-
|
309
|
-
```ruby
|
310
|
-
echo "
|
311
|
-
$(bundle show workarea-core)/app/models/workarea/order.rb
|
312
|
-
$(bundle show workarea-core)/app/models/workarea/checkout.rb
|
313
|
-
$(bundle show workarea-storefront)/app/controllers/workarea/storefront/checkout/place_order_controller.rb
|
314
|
-
$(bundle show workarea-core)/app/workers/workarea/save_user_order_details.rb
|
315
|
-
$(bundle show workarea-core)/app/workers/workarea/mark_discounts_as_redeemed.rb
|
316
|
-
$(bundle show workarea-core)/app/workers/workarea/save_order_metrics.rb
|
317
|
-
"
|
318
|
-
```
|
319
|
-
|
320
|
-
|
321
|
-
### Routes
|
322
|
-
|
323
|
-
* `GET /checkout/payment`
|
324
|
-
* `PATCH /checkout/place_order`
|
325
|
-
|
326
|
-
|
327
|
-
### `update` Params
|
328
|
-
|
329
|
-
* `:payment`
|
330
|
-
* `:credit_card`
|
331
|
-
|
332
|
-
|
333
|
-
### `complete?` Conditions
|
334
|
-
|
335
|
-
* Order is purchasable (`Order#purchasable?`)
|
336
|
-
* Payment is purchasable for the total price of the order (`Payment#purchasable?`, `Order#total_price`)
|
337
|
-
|
338
|
-
|
339
|
-
### Code
|
340
|
-
|
341
|
-
Run the following command from your application/plugin root to list relevant code files for this step:
|
342
|
-
|
343
|
-
```ruby
|
344
|
-
echo "
|
345
|
-
$(bundle show workarea-core)/app/models/workarea/checkout/steps/payment.rb
|
346
|
-
$(bundle show workarea-core)/test/models/workarea/checkout/steps/payment_test.rb
|
347
|
-
$(bundle show workarea-core)/app/models/workarea/checkout/credit_card_params.rb
|
348
|
-
$(bundle show workarea-storefront)/app/controllers/workarea/storefront/checkout/payment_controller.rb
|
349
|
-
$(bundle show workarea-storefront)/app/controllers/workarea/storefront/checkout/place_order_controller.rb
|
350
|
-
$(bundle show workarea-storefront)/app/view_models/workarea/storefront/checkout/payment_view_model.rb
|
351
|
-
$(bundle show workarea-storefront)/test/view_models/workarea/storefront/checkout/payment_view_model_test.rb
|
352
|
-
$(bundle show workarea-storefront)/app/assets/javascripts/workarea/storefront/modules/checkout_primary_payments.js
|
353
|
-
$(bundle show workarea-storefront)/app/views/workarea/storefront/checkouts/payment.html.haml
|
354
|
-
$(bundle show workarea-storefront)/app/assets/stylesheets/workarea/storefront/components/_checkout_payment.scss
|
355
|
-
"
|
356
|
-
```
|
357
|
-
|
358
|
-
|
359
|
-
Placed Order
|
360
|
-
----------------------------------------------------------------------
|
361
|
-
|
362
|
-
After the order is placed, the shopper is redirected to a view of the placed order.
|
363
|
-
If the shopper is an administrator with `:order` permissions, they are redirected to the placed order in the Admin.
|
364
|
-
Otherwise, the shopper is redirected to the _checkout confirmation_: a Storefront view of the placed order.
|
365
|
-
|
366
|
-
![Checkout confirmation](../images/checkout-confirmation.png)
|
367
|
-
|
368
|
-
If the checkout was a guest checkout, the checkout confirmation page includes a form which allows the shopper to create a user account.
|
369
|
-
If the shopper creates their account, a background job copies details from the checkout (e.g. addresses, payment) to their user account.
|
370
|
-
|
371
|
-
|
372
|
-
### Routes
|
373
|
-
|
374
|
-
* `GET /checkout/confirmation`
|
375
|
-
* `GET /admin/orders/:id`
|
376
|
-
|
377
|
-
|
378
|
-
### Code
|
379
|
-
|
380
|
-
Run the following command from your application/plugin root to list relevant code files for the Storefront checkout confirmation page:
|
381
|
-
|
382
|
-
```ruby
|
383
|
-
echo "
|
384
|
-
$(bundle show workarea-storefront)/app/controllers/workarea/storefront/checkout/place_order_controller.rb
|
385
|
-
$(bundle show workarea-storefront)/app/view_models/workarea/storefront/checkout/confirmation_view_model.rb
|
386
|
-
$(bundle show workarea-storefront)/app/views/workarea/storefront/checkouts/confirmation.html.haml
|
387
|
-
"
|
388
|
-
```
|
389
|
-
|
390
|
-
|
391
|
-
Shared Implementation
|
392
|
-
----------------------------------------------------------------------
|
393
|
-
|
394
|
-
The steps of checkout have a consistent "chrome" and therefore share some of their implementation.
|
395
|
-
This includes a checkout layout, a progress indicator, and the checkout summary which displays as an aside throughout checkout.
|
396
|
-
|
397
|
-
Run the following command from your application/plugin root to list the source files for the checkout shared implementation.
|
398
|
-
|
399
|
-
```ruby
|
400
|
-
echo "
|
401
|
-
$(bundle show workarea-core)/app/models/workarea/checkout.rb
|
402
|
-
$(bundle show workarea-core)/test/models/workarea/checkout_test.rb
|
403
|
-
$(bundle show workarea-core)/app/models/workarea/checkout/auto_complete.rb
|
404
|
-
$(bundle show workarea-core)/app/models/workarea/checkout/collect_payment.rb
|
405
|
-
$(bundle show workarea-core)/test/models/workarea/checkout/collect_payment_test.rb
|
406
|
-
$(bundle show workarea-core)/app/models/workarea/checkout/steps/base.rb
|
407
|
-
$(bundle show workarea-storefront)/app/controllers/workarea/storefront/checkouts_controller.rb
|
408
|
-
$(bundle show workarea-storefront)/app/controllers/workarea/storefront/current_checkout.rb
|
409
|
-
$(bundle show workarea-storefront)/app/view_models/workarea/storefront/checkout_content.rb
|
410
|
-
$(bundle show workarea-storefront)/app/view_models/workarea/storefront/cart_view_model.rb
|
411
|
-
$(bundle show workarea-storefront)/app/view_models/workarea/storefront/checkout/summary_view_model.rb
|
412
|
-
$(bundle show workarea-storefront)/test/view_models/workarea/storefront/checkout/summary_view_model_test.rb
|
413
|
-
$(bundle show workarea-storefront)/app/views/layouts/workarea/storefront/checkout.html.haml
|
414
|
-
$(bundle show workarea-storefront)/app/views/workarea/storefront/checkouts/_checkout_progress.html.haml
|
415
|
-
$(bundle show workarea-storefront)/app/views/workarea/storefront/checkouts/_summary.html.haml
|
416
|
-
$(bundle show workarea-storefront)/app/views/workarea/storefront/checkouts/summary.html.haml
|
417
|
-
$(bundle show workarea-storefront)/app/assets/stylesheets/workarea/storefront/components/_checkout_progress.scss
|
418
|
-
$(bundle show workarea-storefront)/app/assets/stylesheets/workarea/storefront/components/_checkout_step_summary.scss
|
419
|
-
$(bundle show workarea-storefront)/test/integration/workarea/storefront/checkout_side_effects_integration_test.rb
|
420
|
-
$(bundle show workarea-storefront)/test/integration/workarea/storefront/checkouts_integration_test.rb
|
421
|
-
$(bundle show workarea-storefront)/test/integration/workarea/storefront/checkout_with_pricing_override_integration_test.rb
|
422
|
-
$(bundle show workarea-storefront)/test/integration/workarea/storefront/current_checkout_integration_test.rb
|
423
|
-
$(bundle show workarea-storefront)/test/system/workarea/storefront/guest_checkout_system_test.rb
|
424
|
-
$(bundle show workarea-storefront)/test/system/workarea/storefront/logged_in_checkout_system_test.rb
|
425
|
-
"
|
426
|
-
```
|
427
|
-
|
428
|
-
|
429
|
-
Extension
|
430
|
-
----------------------------------------------------------------------
|
431
|
-
|
432
|
-
You can extend checkout, either to change an existing step or to add a new step (or otherwise change the steps/flow).
|
433
|
-
|
434
|
-
|
435
|
-
### Change an Existing Step
|
436
|
-
|
437
|
-
To change an existing step, [decorate](decoration.html) the models and/or extend the UI code using the appropriate [extension](extension.html) techniques.
|
438
|
-
If decorating the model, extend `#update` to change which params are expected for an update, and extend `#complete?` to change the conditions for step completion.
|
439
|
-
For UI changes, refer to the listings of source files in the step-specific sections above.
|
440
|
-
|
441
|
-
|
442
|
-
### Add a Step
|
443
|
-
|
444
|
-
You may need to add a step (or, in some unlikely scenarios remove or re-order steps).
|
445
|
-
To add a step, complete the following:
|
446
|
-
|
447
|
-
1. Define the new model
|
448
|
-
2. Add the model to the step configuration
|
449
|
-
3. Update the checkout flow by changing the relevant controller actions
|
450
|
-
4. Add supporting UI code
|
451
|
-
|
452
|
-
Add a new class definition for your checkout step model.
|
453
|
-
The class should inherit from `Checkout::Steps::Base` and implement `#update` and `#complete?`.
|
454
|
-
|
455
|
-
Within an initializer, modify `Workarea.config.checkout_steps` to include your new class, in the correct position relative to the existing steps.
|
456
|
-
This config value is a SwappableList.
|
457
|
-
For example:
|
458
|
-
|
459
|
-
```ruby
|
460
|
-
Workarea.config.checkout_steps.insert_after(
|
461
|
-
'Workarea::Checkout::Steps::Addresses',
|
462
|
-
'Workarea::Checkout::Steps::GiftOptions'
|
463
|
-
)
|
464
|
-
```
|
465
|
-
|
466
|
-
Decorate the specific controller actions that control the flow to and from your new step.
|
467
|
-
Refer to the following list of controller actions which control flow from step to step.
|
468
|
-
|
469
|
-
* `Storefront::CheckoutsController#new`
|
470
|
-
* `Storefront::Checkout::AddressesController#completed_addresses_step`
|
471
|
-
* `Storefront::Checkout::AddressesController#incomplete_addresses_step`
|
472
|
-
* `Storefront::Checkout::ShippingController#completed_shipping_step`
|
473
|
-
* `Storefront::Checkout::ShippingController#incomplete_shipping_step`
|
474
|
-
* `Storefront::Checkout::PlaceOrderController#incomplete_place_order`
|
475
|
-
* `Storefront::Checkout::PlaceOrderController#completed_place_order`
|
476
|
-
* `Storefront::Checkout::PlaceOrderController#finished_checkout_destination`
|
477
|
-
|
478
|
-
Finally, create any additional UI code that is necessary to complete your step (e.g. view, view model).
|
479
|
-
Refer to the lists of code in the step-specific sections above as reference.
|
@@ -1,164 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Commerce Model
|
3
|
-
excerpt: The following diagram is a model of commerce from Workarea's perspective.
|
4
|
-
---
|
5
|
-
|
6
|
-
Commerce Model
|
7
|
-
======================================================================
|
8
|
-
|
9
|
-
The following diagram is a model of _commerce_ from Workarea's perspective.
|
10
|
-
In this model, Workarea receives _catalog data_ as input and returns _order data_ as output.
|
11
|
-
Activity within Workarea is represented as a cycle of actions, some of which are completed by _administrators_ within the _Admin_; the rest by _shoppers_ within the _Storefront_.
|
12
|
-
|
13
|
-
(
|
14
|
-
Keep in mind this model is an abstraction of the Workarea system.
|
15
|
-
In practice, catalog and order data are not the only input/output, and actions within the system are non-linear and asynchronous.
|
16
|
-
)
|
17
|
-
|
18
|
-
![Commerce Model](../images/commerce-model.png)
|
19
|
-
|
20
|
-
|
21
|
-
Code Mappings
|
22
|
-
----------------------------------------------------------------------
|
23
|
-
|
24
|
-
Use this illustration of Workarea to improve your mental model of the system.
|
25
|
-
Keep this representation of Workarea in mind when reading Workarea code and documentation.
|
26
|
-
|
27
|
-
To help you in this regard, the following sections map the actions from the diagram to relevant _models_, _view models_, and _services_ within the base Workarea platform.
|
28
|
-
(These object types are those used to write to and read from the primary data store.)
|
29
|
-
|
30
|
-
Each section provides a command which you can run from the root of your application to list the pathnames of the relevant files within your version of Workarea.
|
31
|
-
|
32
|
-
|
33
|
-
### Admins Manage Catalog
|
34
|
-
|
35
|
-
```bash
|
36
|
-
echo "
|
37
|
-
$(bundle show workarea-core)/app/models/workarea/catalog/product.rb
|
38
|
-
$(bundle show workarea-core)/app/models/workarea/catalog/variant.rb
|
39
|
-
$(bundle show workarea-core)/app/models/workarea/catalog/product_image.rb
|
40
|
-
$(bundle show workarea-core)/app/models/workarea/pricing/sku.rb
|
41
|
-
$(bundle show workarea-core)/app/models/workarea/pricing/price.rb
|
42
|
-
$(bundle show workarea-core)/app/models/workarea/inventory/sku.rb
|
43
|
-
$(bundle show workarea-core)/app/models/workarea/shipping/sku.rb
|
44
|
-
$(bundle show workarea-core)/app/services/workarea/copy_product.rb
|
45
|
-
$(bundle show workarea-core)/app/models/workarea/shipping/service.rb
|
46
|
-
$(bundle show workarea-core)/app/models/workarea/shipping/rate.rb
|
47
|
-
$(bundle show workarea-core)/app/models/workarea/tax/category.rb
|
48
|
-
$(bundle show workarea-core)/app/models/workarea/tax/rate.rb
|
49
|
-
"
|
50
|
-
```
|
51
|
-
|
52
|
-
|
53
|
-
### Admins Merchandise Store
|
54
|
-
|
55
|
-
```bash
|
56
|
-
echo "
|
57
|
-
$(bundle show workarea-core)/app/models/workarea/release.rb
|
58
|
-
$(bundle show workarea-core)/app/models/workarea/release/changeset.rb
|
59
|
-
$(bundle show workarea-core)/app/models/workarea/catalog/category.rb
|
60
|
-
$(bundle show workarea-core)/app/models/workarea/product_rule.rb
|
61
|
-
$(bundle show workarea-core)/app/models/workarea/search/settings.rb
|
62
|
-
$(bundle show workarea-core)/app/models/workarea/search/customization.rb
|
63
|
-
$(bundle show workarea-core)/app/models/workarea/content.rb
|
64
|
-
$(bundle show workarea-core)/app/models/workarea/content/page.rb
|
65
|
-
$(bundle show workarea-core)/app/models/workarea/content/block.rb
|
66
|
-
$(bundle show workarea-core)/app/models/workarea/content/asset.rb
|
67
|
-
$(bundle show workarea-core)/app/models/workarea/navigation/redirect.rb
|
68
|
-
$(bundle show workarea-core)/app/models/workarea/navigation/taxon.rb
|
69
|
-
$(bundle show workarea-core)/app/models/workarea/navigation/menu.rb
|
70
|
-
$(bundle show workarea-core)/app/models/workarea/recommendation/settings.rb
|
71
|
-
$(bundle show workarea-core)/app/models/workarea/pricing/discount.rb
|
72
|
-
"
|
73
|
-
```
|
74
|
-
|
75
|
-
|
76
|
-
### Shoppers Search & Browse Products
|
77
|
-
|
78
|
-
```bash
|
79
|
-
echo "
|
80
|
-
$(bundle show workarea-storefront)/app/view_models/workarea/storefront/category_view_model.rb
|
81
|
-
$(bundle show workarea-storefront)/app/view_models/workarea/storefront/search_view_model.rb
|
82
|
-
$(bundle show workarea-storefront)/app/view_models/workarea/storefront/search_suggestion_view_model.rb
|
83
|
-
$(bundle show workarea-storefront)/app/view_models/workarea/storefront/page_view_model.rb
|
84
|
-
$(bundle show workarea-storefront)/app/view_models/workarea/storefront/content_view_model.rb
|
85
|
-
$(bundle show workarea-storefront)/app/view_models/workarea/storefront/menu_view_model.rb
|
86
|
-
$(bundle show workarea-storefront)/app/view_models/workarea/storefront/recommendations_view_model.rb
|
87
|
-
$(bundle show workarea-storefront)/app/view_models/workarea/storefront/product_view_model.rb
|
88
|
-
"
|
89
|
-
```
|
90
|
-
|
91
|
-
### Shoppers View Products
|
92
|
-
|
93
|
-
```bash
|
94
|
-
echo "
|
95
|
-
$(bundle show workarea-storefront)/app/view_models/workarea/storefront/product_view_model.rb
|
96
|
-
"
|
97
|
-
```
|
98
|
-
|
99
|
-
|
100
|
-
### Shoppers Create & Manage Carts
|
101
|
-
|
102
|
-
```bash
|
103
|
-
echo "
|
104
|
-
$(bundle show workarea-core)/app/models/workarea/order.rb
|
105
|
-
$(bundle show workarea-core)/app/models/workarea/order/item.rb
|
106
|
-
$(bundle show workarea-core)/app/models/workarea/pricing.rb
|
107
|
-
$(bundle show workarea-core)/app/models/workarea/price_adjustment.rb
|
108
|
-
$(bundle show workarea-core)/app/models/workarea/pricing/calculator.rb
|
109
|
-
$(bundle show workarea-storefront)/app/view_models/workarea/storefront/cart_view_model.rb
|
110
|
-
$(bundle show workarea-storefront)/app/view_models/workarea/storefront/cart_item_view_model.rb
|
111
|
-
"
|
112
|
-
```
|
113
|
-
|
114
|
-
### Shoppers Place Orders
|
115
|
-
|
116
|
-
```bash
|
117
|
-
echo "
|
118
|
-
$(bundle show workarea-core)/app/models/workarea/checkout.rb
|
119
|
-
$(bundle show workarea-core)/app/models/workarea/checkout/steps/base.rb
|
120
|
-
$(bundle show workarea-core)/app/models/workarea/payment.rb
|
121
|
-
$(bundle show workarea-core)/app/models/workarea/payment/transaction.rb
|
122
|
-
$(bundle show workarea-core)/app/models/workarea/inventory.rb
|
123
|
-
$(bundle show workarea-core)/app/models/workarea/inventory/transaction.rb
|
124
|
-
$(bundle show workarea-core)/app/models/workarea/inventory/transaction_item.rb
|
125
|
-
$(bundle show workarea-core)/app/models/workarea/shipping.rb
|
126
|
-
$(bundle show workarea-core)/app/models/workarea/shipping/service_selection.rb
|
127
|
-
$(bundle show workarea-storefront)/app/view_models/workarea/storefront/order_view_model.rb
|
128
|
-
$(bundle show workarea-storefront)/app/view_models/workarea/storefront/order_item_view_model.rb
|
129
|
-
$(bundle show workarea-core)/app/models/workarea/pricing/discount/redemption.rb
|
130
|
-
$(bundle show workarea-core)/app/services/workarea/create_fulfillment.rb
|
131
|
-
"
|
132
|
-
```
|
133
|
-
|
134
|
-
|
135
|
-
### Admins Manage Orders
|
136
|
-
|
137
|
-
```bash
|
138
|
-
echo "
|
139
|
-
$(bundle show workarea-core)/app/models/workarea/fulfillment.rb
|
140
|
-
$(bundle show workarea-core)/app/models/workarea/fulfillment/item.rb
|
141
|
-
$(bundle show workarea-core)/app/models/workarea/fulfillment/event.rb
|
142
|
-
$(bundle show workarea-core)/app/models/workarea/fulfillment/package.rb
|
143
|
-
$(bundle show workarea-core)/app/models/workarea/pricing/override.rb
|
144
|
-
$(bundle show workarea-core)/app/models/workarea/pricing/request.rb
|
145
|
-
$(bundle show workarea-core)/app/models/workarea/payment/refund.rb
|
146
|
-
$(bundle show workarea-core)/app/services/workarea/cancel_order.rb
|
147
|
-
$(bundle show workarea-core)/app/services/workarea/copy_order.rb
|
148
|
-
"
|
149
|
-
```
|
150
|
-
|
151
|
-
|
152
|
-
### Admins View Insights & Reports
|
153
|
-
|
154
|
-
```bash
|
155
|
-
echo "
|
156
|
-
$(bundle show workarea-core)/app/models/workarea/metrics/by_day.rb
|
157
|
-
$(bundle show workarea-core)/app/models/workarea/metrics/by_week.rb
|
158
|
-
$(bundle show workarea-core)/app/models/workarea/insights/base.rb
|
159
|
-
$(bundle show workarea-admin)/app/view_models/workarea/admin/insight_view_model.rb
|
160
|
-
$(bundle show workarea-admin)/app/view_models/workarea/admin/reports/insights_view_model.rb
|
161
|
-
$(bundle show workarea-core)/app/models/workarea/reports/export.rb
|
162
|
-
$(bundle show workarea-core)/app/services/workarea/export_report.rb
|
163
|
-
"
|
164
|
-
```
|