spree_api 5.6.1 → 6.0.0.beta1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/LICENSE +28 -0
- data/Rakefile +1 -1
- data/app/controllers/concerns/spree/api/v3/address_params.rb +17 -0
- data/app/controllers/concerns/spree/api/v3/admin/product_listing.rb +46 -0
- data/app/controllers/concerns/spree/api/v3/admin/product_membership.rb +110 -0
- data/app/controllers/concerns/spree/api/v3/admin/receivable_actions.rb +68 -0
- data/app/controllers/concerns/spree/api/v3/admin/reporting_authorization.rb +27 -0
- data/app/controllers/concerns/spree/api/v3/admin/role_grant_guard.rb +69 -33
- data/app/controllers/concerns/spree/api/v3/admin/stock_receipt_actions.rb +86 -0
- data/app/controllers/concerns/spree/api/v3/admin/store_context.rb +97 -0
- data/app/controllers/concerns/spree/api/v3/admin/subclassed_resource.rb +12 -6
- data/app/controllers/concerns/spree/api/v3/admin/validation_details.rb +91 -0
- data/app/controllers/concerns/spree/api/v3/admin_authentication.rb +9 -5
- data/app/controllers/concerns/spree/api/v3/api_key_authentication.rb +41 -5
- data/app/controllers/concerns/spree/api/v3/authentication_strategies.rb +48 -0
- data/app/controllers/concerns/spree/api/v3/bulk_operations.rb +4 -6
- data/app/controllers/concerns/spree/api/v3/cart_resolvable.rb +52 -16
- data/app/controllers/concerns/spree/api/v3/company_address_writes.rb +37 -0
- data/app/controllers/concerns/spree/api/v3/current_password_confirmation.rb +41 -0
- data/app/controllers/concerns/spree/api/v3/direct_uploads.rb +35 -0
- data/app/controllers/concerns/spree/api/v3/error_handler.rb +53 -11
- data/app/controllers/concerns/spree/api/v3/idempotent.rb +10 -4
- data/app/controllers/concerns/spree/api/v3/items_payload.rb +54 -0
- data/app/controllers/concerns/spree/api/v3/jwt_authentication.rb +23 -3
- data/app/controllers/concerns/spree/api/v3/key_store_context.rb +31 -0
- data/app/controllers/concerns/spree/api/v3/locale_and_currency.rb +3 -3
- data/app/controllers/concerns/spree/api/v3/order_lock.rb +22 -3
- data/app/controllers/concerns/spree/api/v3/orders/claim_actions.rb +112 -0
- data/app/controllers/concerns/spree/api/v3/orders/delivery_actions.rb +105 -0
- data/app/controllers/concerns/spree/api/v3/orders/exchange_actions.rb +117 -0
- data/app/controllers/concerns/spree/api/v3/orders/fulfillment_actions.rb +157 -0
- data/app/controllers/concerns/spree/api/v3/orders/post_sale_actions.rb +76 -0
- data/app/controllers/concerns/spree/api/v3/orders/return_actions.rb +116 -0
- data/app/controllers/concerns/spree/api/v3/orders/shipping_label_actions.rb +128 -0
- data/app/controllers/concerns/spree/api/v3/params_normalizer.rb +7 -4
- data/app/controllers/concerns/spree/api/v3/permission_serialization.rb +42 -0
- data/app/controllers/concerns/spree/api/v3/rate_limit_headers.rb +40 -6
- data/app/controllers/concerns/spree/api/v3/scoped_authorization.rb +80 -26
- data/app/controllers/concerns/spree/api/v3/seller/auth_cookies.rb +62 -0
- data/app/controllers/concerns/spree/api/v3/seller/seller_context.rb +127 -0
- data/app/controllers/concerns/spree/api/v3/seller_authentication.rb +40 -0
- data/app/controllers/concerns/spree/api/v3/storefront_access.rb +38 -0
- data/app/controllers/concerns/spree/api/v3/streams_shipping_label.rb +37 -0
- data/app/controllers/concerns/spree/api/v3/tax_identifier_validation.rb +41 -0
- data/app/controllers/spree/api/v3/admin/admin_users_controller.rb +11 -14
- data/app/controllers/spree/api/v3/admin/allowed_origins_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/api_keys_controller.rb +16 -7
- data/app/controllers/spree/api/v3/admin/auth_controller.rb +138 -22
- data/app/controllers/spree/api/v3/admin/base_controller.rb +2 -0
- data/app/controllers/spree/api/v3/admin/catalog_assignments_controller.rb +27 -0
- data/app/controllers/spree/api/v3/admin/catalogs/base_controller.rb +29 -0
- data/app/controllers/spree/api/v3/admin/catalogs/order_minimums_controller.rb +40 -0
- data/app/controllers/spree/api/v3/admin/catalogs/products_controller.rb +107 -0
- data/app/controllers/spree/api/v3/admin/catalogs/quantity_rules_controller.rb +75 -0
- data/app/controllers/spree/api/v3/admin/catalogs_controller.rb +191 -0
- data/app/controllers/spree/api/v3/admin/categories/products_controller.rb +28 -41
- data/app/controllers/spree/api/v3/admin/categories_controller.rb +16 -7
- data/app/controllers/spree/api/v3/admin/channels_controller.rb +50 -2
- data/app/controllers/spree/api/v3/admin/claim_reasons_controller.rb +25 -0
- data/app/controllers/spree/api/v3/admin/claims_controller.rb +31 -0
- data/app/controllers/spree/api/v3/admin/collection_rules_controller.rb +40 -0
- data/app/controllers/spree/api/v3/admin/collections/products_controller.rb +101 -0
- data/app/controllers/spree/api/v3/admin/collections_controller.rb +56 -0
- data/app/controllers/spree/api/v3/admin/commission_lines_controller.rb +39 -0
- data/app/controllers/spree/api/v3/admin/commission_rates_controller.rb +174 -0
- data/app/controllers/spree/api/v3/admin/companies/addresses_controller.rb +65 -0
- data/app/controllers/spree/api/v3/admin/companies/base_controller.rb +29 -0
- data/app/controllers/spree/api/v3/admin/companies/invitations_controller.rb +56 -0
- data/app/controllers/spree/api/v3/admin/companies/memberships_controller.rb +66 -0
- data/app/controllers/spree/api/v3/admin/companies/tax_exemption_certificates_controller.rb +137 -0
- data/app/controllers/spree/api/v3/admin/companies/tax_identifiers_controller.rb +46 -0
- data/app/controllers/spree/api/v3/admin/companies_controller.rb +59 -0
- data/app/controllers/spree/api/v3/admin/concerns/external_references.rb +166 -0
- data/app/controllers/spree/api/v3/admin/consent_records_controller.rb +31 -0
- data/app/controllers/spree/api/v3/admin/countries_controller.rb +12 -4
- data/app/controllers/spree/api/v3/admin/custom_field_definitions_controller.rb +19 -4
- data/app/controllers/spree/api/v3/admin/custom_fields_controller.rb +5 -5
- data/app/controllers/spree/api/v3/admin/customer_groups_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/customers/addresses_controller.rb +4 -4
- data/app/controllers/spree/api/v3/admin/customers/base_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/customers/store_credits_controller.rb +2 -3
- data/app/controllers/spree/api/v3/admin/customers/tax_identifiers_controller.rb +43 -0
- data/app/controllers/spree/api/v3/admin/customers_controller.rb +190 -11
- data/app/controllers/spree/api/v3/admin/dashboard_controller.rb +24 -20
- data/app/controllers/spree/api/v3/admin/data_requests_controller.rb +60 -0
- data/app/controllers/spree/api/v3/admin/delivery_method_rules_controller.rb +54 -0
- data/app/controllers/spree/api/v3/admin/delivery_methods/rules_controller.rb +114 -0
- data/app/controllers/spree/api/v3/admin/delivery_methods_controller.rb +243 -0
- data/app/controllers/spree/api/v3/admin/delivery_profiles/origin_groups_controller.rb +80 -0
- data/app/controllers/spree/api/v3/admin/delivery_profiles_controller.rb +107 -0
- data/app/controllers/spree/api/v3/admin/delivery_zones_controller.rb +116 -0
- data/app/controllers/spree/api/v3/admin/digital_links_controller.rb +48 -0
- data/app/controllers/spree/api/v3/admin/direct_uploads_controller.rb +17 -3
- data/app/controllers/spree/api/v3/admin/exchanges_controller.rb +31 -0
- data/app/controllers/spree/api/v3/admin/exports_controller.rb +2 -2
- data/app/controllers/spree/api/v3/admin/gift_card_batches_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/gift_cards_controller.rb +3 -2
- data/app/controllers/spree/api/v3/admin/imports_controller.rb +71 -8
- data/app/controllers/spree/api/v3/admin/integrations_controller.rb +67 -0
- data/app/controllers/spree/api/v3/admin/invitation_acceptances_controller.rb +5 -5
- data/app/controllers/spree/api/v3/admin/invitations_controller.rb +5 -1
- data/app/controllers/spree/api/v3/admin/locales_controller.rb +3 -1
- data/app/controllers/spree/api/v3/admin/markets_controller.rb +9 -5
- data/app/controllers/spree/api/v3/admin/me_controller.rb +4 -30
- data/app/controllers/spree/api/v3/admin/media_controller.rb +88 -38
- data/app/controllers/spree/api/v3/admin/media_library_controller.rb +156 -0
- data/app/controllers/spree/api/v3/admin/option_types_controller.rb +1 -0
- data/app/controllers/spree/api/v3/admin/order_cancellation_reasons_controller.rb +25 -0
- data/app/controllers/spree/api/v3/admin/order_groups_controller.rb +43 -0
- data/app/controllers/spree/api/v3/admin/order_routing_rules_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/orders/claims_controller.rb +56 -0
- data/app/controllers/spree/api/v3/admin/orders/deliveries_controller.rb +66 -0
- data/app/controllers/spree/api/v3/admin/orders/discount_codes_controller.rb +86 -0
- data/app/controllers/spree/api/v3/admin/orders/discounts_controller.rb +99 -0
- data/app/controllers/spree/api/v3/admin/orders/exchanges_controller.rb +62 -0
- data/app/controllers/spree/api/v3/admin/orders/fees_controller.rb +83 -0
- data/app/controllers/spree/api/v3/admin/orders/fulfillments_controller.rb +45 -67
- data/app/controllers/spree/api/v3/admin/orders/items_controller.rb +40 -22
- data/app/controllers/spree/api/v3/admin/orders/labels_controller.rb +75 -0
- data/app/controllers/spree/api/v3/admin/orders/payments_controller.rb +36 -18
- data/app/controllers/spree/api/v3/admin/orders/refunds_controller.rb +39 -18
- data/app/controllers/spree/api/v3/admin/orders/returns_controller.rb +70 -0
- data/app/controllers/spree/api/v3/admin/orders/store_credits_controller.rb +2 -2
- data/app/controllers/spree/api/v3/admin/orders/tax_identifiers_controller.rb +41 -0
- data/app/controllers/spree/api/v3/admin/orders/tax_lines_controller.rb +32 -0
- data/app/controllers/spree/api/v3/admin/orders_controller.rb +157 -32
- data/app/controllers/spree/api/v3/admin/package_types_controller.rb +39 -0
- data/app/controllers/spree/api/v3/admin/password_resets_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/payment_methods_controller.rb +15 -4
- data/app/controllers/spree/api/v3/admin/payout_providers_controller.rb +27 -0
- data/app/controllers/spree/api/v3/admin/permissions_controller.rb +30 -0
- data/app/controllers/spree/api/v3/admin/policies_controller.rb +42 -0
- data/app/controllers/spree/api/v3/admin/price_lists/products_controller.rb +93 -0
- data/app/controllers/spree/api/v3/admin/price_lists_controller.rb +43 -29
- data/app/controllers/spree/api/v3/admin/prices_controller.rb +41 -4
- data/app/controllers/spree/api/v3/admin/product_types_controller.rb +93 -0
- data/app/controllers/spree/api/v3/admin/products/digital_assets_controller.rb +148 -0
- data/app/controllers/spree/api/v3/admin/products/variants_controller.rb +24 -3
- data/app/controllers/spree/api/v3/admin/products_controller.rb +149 -33
- data/app/controllers/spree/api/v3/admin/promotion_actions_controller.rb +6 -2
- data/app/controllers/spree/api/v3/admin/promotion_rules_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/promotions_controller.rb +1 -5
- data/app/controllers/spree/api/v3/admin/purchase_orders/stock_receipts_controller.rb +32 -0
- data/app/controllers/spree/api/v3/admin/purchase_orders_controller.rb +161 -0
- data/app/controllers/spree/api/v3/admin/refund_reasons_controller.rb +25 -0
- data/app/controllers/spree/api/v3/admin/reporting/saved_reports_controller.rb +45 -0
- data/app/controllers/spree/api/v3/admin/reporting_controller.rb +95 -0
- data/app/controllers/spree/api/v3/admin/resource_controller.rb +27 -10
- data/app/controllers/spree/api/v3/admin/return_reasons_controller.rb +25 -0
- data/app/controllers/spree/api/v3/admin/returns_controller.rb +31 -0
- data/app/controllers/spree/api/v3/admin/roles_controller.rb +50 -6
- data/app/controllers/spree/api/v3/admin/seller_payouts_controller.rb +83 -0
- data/app/controllers/spree/api/v3/admin/seller_requirement_submissions_controller.rb +139 -0
- data/app/controllers/spree/api/v3/admin/seller_requirements_controller.rb +115 -0
- data/app/controllers/spree/api/v3/admin/seller_transfers_controller.rb +36 -0
- data/app/controllers/spree/api/v3/admin/sellers/balances_controller.rb +44 -0
- data/app/controllers/spree/api/v3/admin/sellers/invitations_controller.rb +77 -0
- data/app/controllers/spree/api/v3/admin/sellers/payouts_controller.rb +107 -0
- data/app/controllers/spree/api/v3/admin/sellers/team_controller.rb +64 -0
- data/app/controllers/spree/api/v3/admin/sellers_controller.rb +197 -0
- data/app/controllers/spree/api/v3/admin/setup_controller.rb +231 -0
- data/app/controllers/spree/api/v3/admin/stock_levels_controller.rb +172 -0
- data/app/controllers/spree/api/v3/admin/stock_locations_controller.rb +3 -2
- data/app/controllers/spree/api/v3/admin/stock_movements_controller.rb +37 -0
- data/app/controllers/spree/api/v3/admin/stock_reservations_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/stock_transfers/stock_receipts_controller.rb +31 -0
- data/app/controllers/spree/api/v3/admin/stock_transfers_controller.rb +134 -38
- data/app/controllers/spree/api/v3/admin/store_controller.rb +65 -0
- data/app/controllers/spree/api/v3/admin/store_credits/events_controller.rb +47 -0
- data/app/controllers/spree/api/v3/admin/store_credits_controller.rb +87 -0
- data/app/controllers/spree/api/v3/admin/suppliers_controller.rb +30 -0
- data/app/controllers/spree/api/v3/admin/tags_controller.rb +2 -2
- data/app/controllers/spree/api/v3/admin/tax_categories_controller.rb +4 -0
- data/app/controllers/spree/api/v3/admin/tax_providers_controller.rb +25 -0
- data/app/controllers/spree/api/v3/admin/tax_rates_controller.rb +33 -0
- data/app/controllers/spree/api/v3/admin/tracking_carriers_controller.rb +33 -0
- data/app/controllers/spree/api/v3/admin/translatable_resources_controller.rb +37 -9
- data/app/controllers/spree/api/v3/admin/translations_controller.rb +10 -5
- data/app/controllers/spree/api/v3/admin/translations_coverage_controller.rb +150 -0
- data/app/controllers/spree/api/v3/admin/variants_controller.rb +11 -4
- data/app/controllers/spree/api/v3/admin/webhook_endpoints_controller.rb +1 -1
- data/app/controllers/spree/api/v3/base_controller.rb +59 -16
- data/app/controllers/spree/api/v3/resource_controller.rb +154 -38
- data/app/controllers/spree/api/v3/seller/auth_controller.rb +169 -0
- data/app/controllers/spree/api/v3/seller/balances_controller.rb +35 -0
- data/app/controllers/spree/api/v3/seller/base_controller.rb +25 -0
- data/app/controllers/spree/api/v3/seller/claim_reasons_controller.rb +20 -0
- data/app/controllers/spree/api/v3/seller/countries_controller.rb +38 -0
- data/app/controllers/spree/api/v3/seller/delivery_methods_controller.rb +265 -0
- data/app/controllers/spree/api/v3/seller/delivery_profiles_controller.rb +65 -0
- data/app/controllers/spree/api/v3/seller/delivery_zones_controller.rb +41 -0
- data/app/controllers/spree/api/v3/seller/direct_uploads_controller.rb +21 -0
- data/app/controllers/spree/api/v3/seller/exports_controller.rb +195 -0
- data/app/controllers/spree/api/v3/seller/import_rows_controller.rb +49 -0
- data/app/controllers/spree/api/v3/seller/imports_controller.rb +317 -0
- data/app/controllers/spree/api/v3/seller/invitation_acceptances_controller.rb +152 -0
- data/app/controllers/spree/api/v3/seller/invitations_controller.rb +71 -0
- data/app/controllers/spree/api/v3/seller/me_controller.rb +72 -0
- data/app/controllers/spree/api/v3/seller/onboarding_controller.rb +111 -0
- data/app/controllers/spree/api/v3/seller/order_cancellation_reasons_controller.rb +25 -0
- data/app/controllers/spree/api/v3/seller/orders/base_controller.rb +44 -0
- data/app/controllers/spree/api/v3/seller/orders/claims_controller.rb +45 -0
- data/app/controllers/spree/api/v3/seller/orders/deliveries_controller.rb +38 -0
- data/app/controllers/spree/api/v3/seller/orders/exchanges_controller.rb +50 -0
- data/app/controllers/spree/api/v3/seller/orders/fulfillments_controller.rb +79 -0
- data/app/controllers/spree/api/v3/seller/orders/labels_controller.rb +55 -0
- data/app/controllers/spree/api/v3/seller/orders/notes_controller.rb +82 -0
- data/app/controllers/spree/api/v3/seller/orders/returns_controller.rb +44 -0
- data/app/controllers/spree/api/v3/seller/orders_controller.rb +199 -0
- data/app/controllers/spree/api/v3/seller/package_types_controller.rb +100 -0
- data/app/controllers/spree/api/v3/seller/password_resets_controller.rb +155 -0
- data/app/controllers/spree/api/v3/seller/payouts_controller.rb +47 -0
- data/app/controllers/spree/api/v3/seller/policies_controller.rb +57 -0
- data/app/controllers/spree/api/v3/seller/product_types_controller.rb +35 -0
- data/app/controllers/spree/api/v3/seller/products_controller.rb +394 -0
- data/app/controllers/spree/api/v3/seller/profile_controller.rb +137 -0
- data/app/controllers/spree/api/v3/seller/reasons_controller.rb +45 -0
- data/app/controllers/spree/api/v3/seller/requirement_submissions_controller.rb +95 -0
- data/app/controllers/spree/api/v3/seller/resource_controller.rb +75 -0
- data/app/controllers/spree/api/v3/seller/return_reasons_controller.rb +20 -0
- data/app/controllers/spree/api/v3/seller/stock_locations_controller.rb +56 -0
- data/app/controllers/spree/api/v3/seller/tax_identifiers_controller.rb +48 -0
- data/app/controllers/spree/api/v3/seller/team_controller.rb +103 -0
- data/app/controllers/spree/api/v3/seller/tracking_carriers_controller.rb +35 -0
- data/app/controllers/spree/api/v3/seller/transfers_controller.rb +43 -0
- data/app/controllers/spree/api/v3/store/account/companies_controller.rb +42 -0
- data/app/controllers/spree/api/v3/store/auth_controller.rb +21 -34
- data/app/controllers/spree/api/v3/store/base_controller.rb +4 -0
- data/app/controllers/spree/api/v3/store/carts/discount_codes_controller.rb +24 -2
- data/app/controllers/spree/api/v3/store/carts/fulfillments_controller.rb +41 -15
- data/app/controllers/spree/api/v3/store/carts/items_controller.rb +53 -20
- data/app/controllers/spree/api/v3/store/carts/payment_sessions_controller.rb +36 -20
- data/app/controllers/spree/api/v3/store/carts/po_documents_controller.rb +111 -0
- data/app/controllers/spree/api/v3/store/carts/store_credits_controller.rb +2 -2
- data/app/controllers/spree/api/v3/store/carts/tax_identifiers_controller.rb +96 -0
- data/app/controllers/spree/api/v3/store/carts_controller.rb +57 -12
- data/app/controllers/spree/api/v3/store/categories_controller.rb +6 -3
- data/app/controllers/spree/api/v3/store/collections/products_controller.rb +59 -0
- data/app/controllers/spree/api/v3/store/collections_controller.rb +36 -0
- data/app/controllers/spree/api/v3/store/companies/addresses_controller.rb +81 -0
- data/app/controllers/spree/api/v3/store/companies/base_controller.rb +24 -0
- data/app/controllers/spree/api/v3/store/companies/invitations_controller.rb +50 -0
- data/app/controllers/spree/api/v3/store/companies/members_controller.rb +66 -0
- data/app/controllers/spree/api/v3/store/companies/orders_controller.rb +28 -0
- data/app/controllers/spree/api/v3/store/companies_controller.rb +47 -0
- data/app/controllers/spree/api/v3/store/company_invitations_controller.rb +90 -0
- data/app/controllers/spree/api/v3/store/countries_controller.rb +8 -6
- data/app/controllers/spree/api/v3/store/customer/addresses_controller.rb +3 -1
- data/app/controllers/spree/api/v3/store/customer/data_requests_controller.rb +78 -0
- data/app/controllers/spree/api/v3/store/customer/digital_links_controller.rb +52 -0
- data/app/controllers/spree/api/v3/store/customer/orders_controller.rb +6 -0
- data/app/controllers/spree/api/v3/store/customer/password_resets_controller.rb +7 -3
- data/app/controllers/spree/api/v3/store/customer/payment_setup_sessions_controller.rb +3 -3
- data/app/controllers/spree/api/v3/store/customer/store_credits_controller.rb +0 -3
- data/app/controllers/spree/api/v3/store/customer/tax_identifiers_controller.rb +91 -0
- data/app/controllers/spree/api/v3/store/customers_controller.rb +26 -31
- data/app/controllers/spree/api/v3/store/data_feeds_controller.rb +11 -0
- data/app/controllers/spree/api/v3/store/data_request_downloads_controller.rb +58 -0
- data/app/controllers/spree/api/v3/store/delivery_methods_controller.rb +108 -0
- data/app/controllers/spree/api/v3/store/digital_links_controller.rb +105 -0
- data/app/controllers/spree/api/v3/store/markets/countries_controller.rb +5 -9
- data/app/controllers/spree/api/v3/store/markets_controller.rb +4 -4
- data/app/controllers/spree/api/v3/store/newsletter_subscribers_controller.rb +8 -9
- data/app/controllers/spree/api/v3/store/orders/claims_controller.rb +94 -0
- data/app/controllers/spree/api/v3/store/orders/returns_controller.rb +116 -0
- data/app/controllers/spree/api/v3/store/orders/tax_identifiers_controller.rb +46 -0
- data/app/controllers/spree/api/v3/store/orders_controller.rb +12 -15
- data/app/controllers/spree/api/v3/store/products/filters_controller.rb +10 -3
- data/app/controllers/spree/api/v3/store/products_controller.rb +25 -6
- data/app/controllers/spree/api/v3/store/resource_controller.rb +2 -0
- data/app/controllers/spree/api/v3/store/sellers_controller.rb +43 -0
- data/app/controllers/spree/api/v3/store/wishlist_items_controller.rb +9 -6
- data/app/controllers/spree/api/v3/store/wishlists_controller.rb +3 -3
- data/app/controllers/spree/api/v3/webhooks/fulfillments_controller.rb +88 -0
- data/app/controllers/spree/api/v3/webhooks/payments_controller.rb +5 -2
- data/app/controllers/spree/api/v3/webhooks/payouts_controller.rb +61 -0
- data/app/models/spree/api/data_request_urls.rb +25 -0
- data/app/models/spree/api/digital_link_urls.rb +26 -0
- data/app/serializers/spree/api/v3/address_serializer.rb +17 -5
- data/app/serializers/spree/api/v3/admin/address_serializer.rb +27 -4
- data/app/serializers/spree/api/v3/admin/admin_user_serializer.rb +13 -10
- data/app/serializers/spree/api/v3/admin/api_key_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/admin/applied_promotion_serializer.rb +15 -0
- data/app/serializers/spree/api/v3/admin/cart_serializer.rb +34 -0
- data/app/serializers/spree/api/v3/admin/catalog_assignment_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/admin/catalog_order_minimum_serializer.rb +23 -0
- data/app/serializers/spree/api/v3/admin/catalog_price_serializer.rb +48 -0
- data/app/serializers/spree/api/v3/admin/catalog_price_tier_serializer.rb +23 -0
- data/app/serializers/spree/api/v3/admin/catalog_product_serializer.rb +57 -0
- data/app/serializers/spree/api/v3/admin/catalog_product_term_serializer.rb +38 -0
- data/app/serializers/spree/api/v3/admin/catalog_quantity_rule_serializer.rb +37 -0
- data/app/serializers/spree/api/v3/admin/catalog_serializer.rb +46 -0
- data/app/serializers/spree/api/v3/admin/category_serializer.rb +3 -2
- data/app/serializers/spree/api/v3/admin/channel_serializer.rb +15 -1
- data/app/serializers/spree/api/v3/admin/claim_line_item_serializer.rb +16 -0
- data/app/serializers/spree/api/v3/admin/claim_reason_serializer.rb +21 -0
- data/app/serializers/spree/api/v3/admin/claim_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/admin/collection_rule_serializer.rb +22 -0
- data/app/serializers/spree/api/v3/admin/collection_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/admin/commission_line_serializer.rb +67 -0
- data/app/serializers/spree/api/v3/admin/commission_rate_serializer.rb +69 -0
- data/app/serializers/spree/api/v3/admin/commission_rule_serializer.rb +61 -0
- data/app/serializers/spree/api/v3/admin/company_invitation_serializer.rb +15 -0
- data/app/serializers/spree/api/v3/admin/company_membership_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/admin/company_serializer.rb +37 -0
- data/app/serializers/spree/api/v3/admin/concerns/external_references_attribute.rb +33 -0
- data/app/serializers/spree/api/v3/admin/consent_record_serializer.rb +28 -0
- data/app/serializers/spree/api/v3/admin/country_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/admin/credit_card_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/admin/custom_field_definition_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/admin/custom_field_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/admin/customer_serializer.rb +23 -22
- data/app/serializers/spree/api/v3/admin/dashboard_counter_serializer.rb +24 -0
- data/app/serializers/spree/api/v3/admin/data_request_serializer.rb +36 -0
- data/app/serializers/spree/api/v3/admin/delivery_method_rule_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/admin/delivery_method_serializer.rb +66 -1
- data/app/serializers/spree/api/v3/admin/delivery_method_service_serializer.rb +15 -0
- data/app/serializers/spree/api/v3/admin/delivery_origin_group_serializer.rb +34 -0
- data/app/serializers/spree/api/v3/admin/delivery_profile_serializer.rb +65 -0
- data/app/serializers/spree/api/v3/admin/delivery_rate_serializer.rb +10 -1
- data/app/serializers/spree/api/v3/admin/delivery_serializer.rb +20 -0
- data/app/serializers/spree/api/v3/admin/delivery_zone_member_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/admin/delivery_zone_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/admin/digital_asset_serializer.rb +59 -0
- data/app/serializers/spree/api/v3/admin/discount_serializer.rb +3 -4
- data/app/serializers/spree/api/v3/admin/exchange_line_item_serializer.rb +16 -0
- data/app/serializers/spree/api/v3/admin/exchange_serializer.rb +35 -0
- data/app/serializers/spree/api/v3/admin/export_serializer.rb +20 -1
- data/app/serializers/spree/api/v3/admin/fee_serializer.rb +14 -0
- data/app/serializers/spree/api/v3/admin/freight_summary_line_serializer.rb +46 -0
- data/app/serializers/spree/api/v3/admin/freight_summary_serializer.rb +16 -0
- data/app/serializers/spree/api/v3/admin/fulfillment_item_serializer.rb +39 -0
- data/app/serializers/spree/api/v3/admin/fulfillment_serializer.rb +31 -9
- data/app/serializers/spree/api/v3/admin/gift_card_serializer.rb +2 -3
- data/app/serializers/spree/api/v3/admin/import_serializer.rb +15 -2
- data/app/serializers/spree/api/v3/admin/integration_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/admin/invitation_serializer.rb +4 -4
- data/app/serializers/spree/api/v3/admin/line_item_serializer.rb +19 -5
- data/app/serializers/spree/api/v3/admin/market_serializer.rb +5 -1
- data/app/serializers/spree/api/v3/admin/media_serializer.rb +50 -2
- data/app/serializers/spree/api/v3/admin/membership_product_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/admin/order_cancellation_reason_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/admin/order_group_serializer.rb +50 -0
- data/app/serializers/spree/api/v3/admin/order_routing_rule_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/admin/order_serializer.rb +131 -19
- data/app/serializers/spree/api/v3/admin/package_type_serializer.rb +53 -0
- data/app/serializers/spree/api/v3/admin/payment_method_serializer.rb +8 -2
- data/app/serializers/spree/api/v3/admin/payment_serializer.rb +6 -0
- data/app/serializers/spree/api/v3/admin/payment_split_serializer.rb +41 -0
- data/app/serializers/spree/api/v3/admin/permission_serializer.rb +39 -0
- data/app/serializers/spree/api/v3/admin/policy_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/admin/price_adjustment_tier_serializer.rb +22 -0
- data/app/serializers/spree/api/v3/admin/price_list_product_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/admin/price_list_serializer.rb +20 -8
- data/app/serializers/spree/api/v3/admin/price_rule_serializer.rb +2 -12
- data/app/serializers/spree/api/v3/admin/price_serializer.rb +3 -0
- data/app/serializers/spree/api/v3/admin/product_serializer.rb +54 -8
- data/app/serializers/spree/api/v3/admin/product_submission_serializer.rb +39 -0
- data/app/serializers/spree/api/v3/admin/product_type_custom_field_definition_serializer.rb +44 -0
- data/app/serializers/spree/api/v3/admin/product_type_serializer.rb +34 -0
- data/app/serializers/spree/api/v3/admin/promotion_action_serializer.rb +6 -12
- data/app/serializers/spree/api/v3/admin/promotion_rule_serializer.rb +17 -15
- data/app/serializers/spree/api/v3/admin/purchase_order_item_serializer.rb +80 -0
- data/app/serializers/spree/api/v3/admin/purchase_order_serializer.rb +94 -0
- data/app/serializers/spree/api/v3/admin/refund_reason_serializer.rb +27 -0
- data/app/serializers/spree/api/v3/admin/refund_serializer.rb +0 -5
- data/app/serializers/spree/api/v3/admin/reporting_result_serializer.rb +72 -0
- data/app/serializers/spree/api/v3/admin/return_line_item_serializer.rb +16 -0
- data/app/serializers/spree/api/v3/admin/return_reason_serializer.rb +21 -0
- data/app/serializers/spree/api/v3/admin/return_serializer.rb +59 -0
- data/app/serializers/spree/api/v3/admin/role_serializer.rb +24 -6
- data/app/serializers/spree/api/v3/admin/saved_report_serializer.rb +33 -0
- data/app/serializers/spree/api/v3/admin/seller_balance_serializer.rb +37 -0
- data/app/serializers/spree/api/v3/admin/seller_payout_serializer.rb +46 -0
- data/app/serializers/spree/api/v3/admin/seller_requirement_serializer.rb +68 -0
- data/app/serializers/spree/api/v3/admin/seller_requirement_status_serializer.rb +48 -0
- data/app/serializers/spree/api/v3/admin/seller_requirement_submission_serializer.rb +57 -0
- data/app/serializers/spree/api/v3/admin/seller_serializer.rb +92 -0
- data/app/serializers/spree/api/v3/admin/seller_team_member_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/admin/seller_transfer_serializer.rb +53 -0
- data/app/serializers/spree/api/v3/admin/shipping_label_serializer.rb +82 -0
- data/app/serializers/spree/api/v3/admin/state_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/admin/stock_level_serializer.rb +65 -0
- data/app/serializers/spree/api/v3/admin/stock_location_serializer.rb +20 -4
- data/app/serializers/spree/api/v3/admin/stock_movement_serializer.rb +116 -0
- data/app/serializers/spree/api/v3/admin/stock_receipt_item_serializer.rb +57 -0
- data/app/serializers/spree/api/v3/admin/stock_receipt_serializer.rb +49 -0
- data/app/serializers/spree/api/v3/admin/stock_reservation_serializer.rb +5 -5
- data/app/serializers/spree/api/v3/admin/stock_transfer_item_serializer.rb +57 -0
- data/app/serializers/spree/api/v3/admin/stock_transfer_serializer.rb +36 -16
- data/app/serializers/spree/api/v3/admin/store_credit_event_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/admin/store_credit_serializer.rb +42 -7
- data/app/serializers/spree/api/v3/admin/store_serializer.rb +63 -1
- data/app/serializers/spree/api/v3/admin/supplier_serializer.rb +39 -0
- data/app/serializers/spree/api/v3/admin/tax_exemption_certificate_serializer.rb +67 -0
- data/app/serializers/spree/api/v3/admin/tax_identifier_serializer.rb +43 -0
- data/app/serializers/spree/api/v3/admin/tax_line_serializer.rb +21 -0
- data/app/serializers/spree/api/v3/admin/tax_rate_serializer.rb +49 -0
- data/app/serializers/spree/api/v3/admin/variant_serializer.rb +49 -8
- data/app/serializers/spree/api/v3/applied_promotion_serializer.rb +23 -0
- data/app/serializers/spree/api/v3/base_serializer.rb +39 -2
- data/app/serializers/spree/api/v3/cart_serializer.rb +90 -12
- data/app/serializers/spree/api/v3/category_serializer.rb +3 -3
- data/app/serializers/spree/api/v3/claim_line_item_serializer.rb +50 -0
- data/app/serializers/spree/api/v3/claim_reason_serializer.rb +20 -0
- data/app/serializers/spree/api/v3/claim_serializer.rb +62 -0
- data/app/serializers/spree/api/v3/collection_serializer.rb +41 -0
- data/app/serializers/spree/api/v3/company_invitation_serializer.rb +28 -0
- data/app/serializers/spree/api/v3/company_membership_serializer.rb +28 -0
- data/app/serializers/spree/api/v3/company_serializer.rb +33 -0
- data/app/serializers/spree/api/v3/custom_field_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/customer_serializer.rb +9 -1
- data/app/serializers/spree/api/v3/data_request_event_serializer.rb +30 -0
- data/app/serializers/spree/api/v3/data_request_serializer.rb +40 -0
- data/app/serializers/spree/api/v3/delivery_method_serializer.rb +12 -2
- data/app/serializers/spree/api/v3/delivery_rate_serializer.rb +34 -17
- data/app/serializers/spree/api/v3/delivery_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/delivery_zone_member_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/delivery_zone_serializer.rb +13 -0
- data/app/serializers/spree/api/v3/digital_asset_serializer.rb +23 -0
- data/app/serializers/spree/api/v3/digital_link_serializer.rb +6 -2
- data/app/serializers/spree/api/v3/discount_serializer.rb +21 -7
- data/app/serializers/spree/api/v3/exchange_line_item_serializer.rb +53 -0
- data/app/serializers/spree/api/v3/exchange_serializer.rb +61 -0
- data/app/serializers/spree/api/v3/fee_serializer.rb +27 -0
- data/app/serializers/spree/api/v3/freight_summary_serializer.rb +38 -0
- data/app/serializers/spree/api/v3/fulfillment_serializer.rb +28 -15
- data/app/serializers/spree/api/v3/gift_card_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/import_row_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/import_serializer.rb +18 -4
- data/app/serializers/spree/api/v3/invitation_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/line_item_serializer.rb +18 -1
- data/app/serializers/spree/api/v3/market_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/{asset_serializer.rb → media_event_serializer.rb} +4 -4
- data/app/serializers/spree/api/v3/media_serializer.rb +48 -7
- data/app/serializers/spree/api/v3/newsletter_subscriber_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/option_type_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/order_group_serializer.rb +60 -0
- data/app/serializers/spree/api/v3/order_serializer.rb +58 -6
- data/app/serializers/spree/api/v3/payment_method_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/payment_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/payment_session_serializer.rb +10 -3
- data/app/serializers/spree/api/v3/payment_setup_session_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/policy_serializer.rb +7 -2
- data/app/serializers/spree/api/v3/product_filter_option_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/product_serializer.rb +42 -10
- data/app/serializers/spree/api/v3/product_type_serializer.rb +17 -0
- data/app/serializers/spree/api/v3/purchase_order_event_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/refund_serializer.rb +9 -3
- data/app/serializers/spree/api/v3/return_line_item_serializer.rb +42 -0
- data/app/serializers/spree/api/v3/return_reason_serializer.rb +20 -0
- data/app/serializers/spree/api/v3/return_serializer.rb +62 -0
- data/app/serializers/spree/api/v3/seller/balance_serializer.rb +35 -0
- data/app/serializers/spree/api/v3/seller/claim_line_item_serializer.rb +21 -0
- data/app/serializers/spree/api/v3/seller/claim_serializer.rb +25 -0
- data/app/serializers/spree/api/v3/seller/delivery_method_rule_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/seller/delivery_method_serializer.rb +59 -0
- data/app/serializers/spree/api/v3/seller/delivery_profile_serializer.rb +26 -0
- data/app/serializers/spree/api/v3/seller/delivery_rate_serializer.rb +35 -0
- data/app/serializers/spree/api/v3/seller/delivery_serializer.rb +17 -0
- data/app/serializers/spree/api/v3/seller/delivery_zone_serializer.rb +26 -0
- data/app/serializers/spree/api/v3/seller/exchange_line_item_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/seller/exchange_serializer.rb +30 -0
- data/app/serializers/spree/api/v3/seller/export_serializer.rb +44 -0
- data/app/serializers/spree/api/v3/seller/fulfillment_item_serializer.rb +43 -0
- data/app/serializers/spree/api/v3/seller/fulfillment_serializer.rb +76 -0
- data/app/serializers/spree/api/v3/seller/import_mapping_serializer.rb +20 -0
- data/app/serializers/spree/api/v3/seller/import_row_serializer.rb +17 -0
- data/app/serializers/spree/api/v3/seller/import_serializer.rb +77 -0
- data/app/serializers/spree/api/v3/seller/invitation_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/seller/media_serializer.rb +26 -0
- data/app/serializers/spree/api/v3/seller/order_line_item_serializer.rb +44 -0
- data/app/serializers/spree/api/v3/seller/order_serializer.rb +119 -0
- data/app/serializers/spree/api/v3/seller/package_type_serializer.rb +52 -0
- data/app/serializers/spree/api/v3/seller/payment_split_serializer.rb +34 -0
- data/app/serializers/spree/api/v3/seller/payout_serializer.rb +36 -0
- data/app/serializers/spree/api/v3/seller/policy_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/seller/product_serializer.rb +60 -0
- data/app/serializers/spree/api/v3/seller/product_submission_serializer.rb +30 -0
- data/app/serializers/spree/api/v3/seller/product_type_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/seller/profile_serializer.rb +77 -0
- data/app/serializers/spree/api/v3/seller/reason_serializer.rb +24 -0
- data/app/serializers/spree/api/v3/seller/requirement_custom_field_serializer.rb +36 -0
- data/app/serializers/spree/api/v3/seller/requirement_status_serializer.rb +62 -0
- data/app/serializers/spree/api/v3/seller/requirement_submission_serializer.rb +33 -0
- data/app/serializers/spree/api/v3/seller/return_line_item_serializer.rb +24 -0
- data/app/serializers/spree/api/v3/seller/return_serializer.rb +51 -0
- data/app/serializers/spree/api/v3/seller/shipping_label_serializer.rb +23 -0
- data/app/serializers/spree/api/v3/seller/stock_level_serializer.rb +27 -0
- data/app/serializers/spree/api/v3/seller/stock_location_serializer.rb +17 -0
- data/app/serializers/spree/api/v3/seller/tax_identifier_serializer.rb +15 -0
- data/app/serializers/spree/api/v3/seller/team_member_serializer.rb +22 -0
- data/app/serializers/spree/api/v3/seller/transfer_serializer.rb +49 -0
- data/app/serializers/spree/api/v3/seller/variant_serializer.rb +71 -0
- data/app/serializers/spree/api/v3/seller_serializer.rb +50 -0
- data/app/serializers/spree/api/v3/shipping_label_event_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/{stock_item_serializer.rb → stock_level_serializer.rb} +5 -5
- data/app/serializers/spree/api/v3/stock_location_serializer.rb +11 -7
- data/app/serializers/spree/api/v3/stock_movement_serializer.rb +8 -15
- data/app/serializers/spree/api/v3/stock_receipt_event_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/stock_transfer_serializer.rb +6 -6
- data/app/serializers/spree/api/v3/store_credit_event_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/supplier_event_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/tax_identifier_serializer.rb +15 -0
- data/app/serializers/spree/api/v3/tax_line_serializer.rb +37 -0
- data/app/serializers/spree/api/v3/variant_serializer.rb +52 -2
- data/app/serializers/spree/api/v3/wishlist_item_serializer.rb +6 -6
- data/app/serializers/spree/api/v3/wishlist_serializer.rb +1 -1
- data/app/services/spree/api/v3/filters_aggregator.rb +14 -12
- data/app/services/spree/webhooks/deliver_webhook.rb +62 -26
- data/app/subscribers/spree/webhook_event_subscriber.rb +9 -5
- data/config/brakeman.ignore +1 -1
- data/config/initializers/typelizer.rb +51 -4
- data/config/locales/en.yml +5 -0
- data/config/routes.rb +730 -22
- data/lib/spree/api/configuration.rb +2 -7
- data/lib/spree/api/dependencies.rb +173 -227
- data/lib/spree/api/openapi/schema_helper.rb +179 -13
- data/lib/spree/api/testing_support/v3/base.rb +45 -15
- data/lib/spree/api.rb +10 -4
- data/lib/typelizer/open_enums.rb +35 -0
- metadata +341 -27
- data/app/controllers/spree/api/v3/admin/orders/adjustments_controller.rb +0 -25
- data/app/controllers/spree/api/v3/admin/stock_items_controller.rb +0 -42
- data/app/controllers/spree/api/v3/admin/store_credit_categories_controller.rb +0 -21
- data/app/controllers/spree/api/v3/store/digitals_controller.rb +0 -38
- data/app/serializers/spree/api/v3/admin/adjustment_serializer.rb +0 -24
- data/app/serializers/spree/api/v3/admin/dashboard_analytics_serializer.rb +0 -143
- data/app/serializers/spree/api/v3/admin/reimbursement_serializer.rb +0 -15
- data/app/serializers/spree/api/v3/admin/return_authorization_serializer.rb +0 -19
- data/app/serializers/spree/api/v3/admin/stock_item_serializer.rb +0 -34
- data/app/serializers/spree/api/v3/admin/store_credit_category_serializer.rb +0 -19
- data/app/serializers/spree/api/v3/customer_return_serializer.rb +0 -17
- data/app/serializers/spree/api/v3/digital_serializer.rb +0 -17
- data/app/serializers/spree/api/v3/reimbursement_serializer.rb +0 -27
- data/app/serializers/spree/api/v3/report_serializer.rb +0 -34
- data/app/serializers/spree/api/v3/return_authorization_serializer.rb +0 -31
- data/app/serializers/spree/api/v3/return_item_serializer.rb +0 -53
- data/app/serializers/spree/api/v3/shipping_category_serializer.rb +0 -11
|
@@ -6,6 +6,7 @@ module Spree
|
|
|
6
6
|
typelize name: :string, url: :string, code: :string, api_url: :string,
|
|
7
7
|
preferred_storefront_url: [:string, nullable: true],
|
|
8
8
|
default_currency: :string, default_locale: :string,
|
|
9
|
+
default_country_code: [:string, nullable: true],
|
|
9
10
|
supported_currencies: [:string, multi: true],
|
|
10
11
|
supported_locales: [:string, multi: true],
|
|
11
12
|
available_locales: [:string, multi: true],
|
|
@@ -17,11 +18,38 @@ module Spree
|
|
|
17
18
|
preferred_send_consumer_transactional_emails: :boolean,
|
|
18
19
|
preferred_admin_locale: [:string, nullable: true],
|
|
19
20
|
preferred_timezone: :string,
|
|
20
|
-
preferred_weight_unit: :string,
|
|
21
|
+
preferred_weight_unit: [:string, enum: Spree::Variant::WEIGHT_UNITS],
|
|
21
22
|
preferred_unit_system: :string,
|
|
22
23
|
preferred_storefront_access: :string,
|
|
23
24
|
preferred_guest_checkout: :boolean,
|
|
25
|
+
preferred_company_field_enabled: :boolean,
|
|
26
|
+
preferred_address_requires_company: :boolean,
|
|
27
|
+
preferred_address_requires_phone: :boolean,
|
|
28
|
+
preferred_capture_method: :string,
|
|
29
|
+
preferred_track_inventory_levels: :boolean,
|
|
30
|
+
preferred_stock_reservations_enabled: :boolean,
|
|
31
|
+
preferred_low_stock_threshold: :number,
|
|
32
|
+
preferred_tax_using_ship_address: :boolean,
|
|
33
|
+
preferred_track_price_history: :boolean,
|
|
34
|
+
preferred_show_products_without_price: :boolean,
|
|
35
|
+
preferred_disable_sku_validation: :boolean,
|
|
24
36
|
preferred_order_routing_strategy: :string,
|
|
37
|
+
preferred_pricing_provider: :string,
|
|
38
|
+
preferred_inventory_provider: :string,
|
|
39
|
+
preferred_pricing_provider_failure_policy: :string,
|
|
40
|
+
preferred_inventory_provider_failure_policy: :string,
|
|
41
|
+
preferred_payout_provider: 'string | null',
|
|
42
|
+
preferred_default_payouts_schedule_interval: :string,
|
|
43
|
+
preferred_default_minimum_payout_amount: :number,
|
|
44
|
+
preferred_document_number_format: :string,
|
|
45
|
+
preferred_order_number_prefix: :string,
|
|
46
|
+
preferred_order_number_suffix: :string,
|
|
47
|
+
preferred_order_number_sequence_start: :number,
|
|
48
|
+
order_number_sequence_started: :boolean,
|
|
49
|
+
preferred_limit_digital_download_count: :boolean,
|
|
50
|
+
preferred_digital_asset_authorized_clicks: :number,
|
|
51
|
+
preferred_limit_digital_download_days: :boolean,
|
|
52
|
+
preferred_digital_asset_authorized_days: :number,
|
|
25
53
|
metadata: 'Record<string, unknown>'
|
|
26
54
|
|
|
27
55
|
attributes :metadata,
|
|
@@ -30,6 +58,7 @@ module Spree
|
|
|
30
58
|
:preferred_storefront_url,
|
|
31
59
|
:default_currency,
|
|
32
60
|
:default_locale,
|
|
61
|
+
:default_country_code,
|
|
33
62
|
:mail_from_address,
|
|
34
63
|
:customer_support_email,
|
|
35
64
|
:new_order_notifications_email,
|
|
@@ -40,9 +69,42 @@ module Spree
|
|
|
40
69
|
:preferred_unit_system,
|
|
41
70
|
:preferred_storefront_access,
|
|
42
71
|
:preferred_guest_checkout,
|
|
72
|
+
:preferred_company_field_enabled,
|
|
73
|
+
:preferred_address_requires_company,
|
|
74
|
+
:preferred_address_requires_phone,
|
|
75
|
+
:preferred_capture_method,
|
|
76
|
+
:preferred_track_inventory_levels,
|
|
77
|
+
:preferred_stock_reservations_enabled,
|
|
78
|
+
:preferred_low_stock_threshold,
|
|
79
|
+
:preferred_tax_using_ship_address,
|
|
80
|
+
:preferred_track_price_history,
|
|
81
|
+
:preferred_show_products_without_price,
|
|
82
|
+
:preferred_disable_sku_validation,
|
|
43
83
|
:preferred_order_routing_strategy,
|
|
84
|
+
:preferred_pricing_provider,
|
|
85
|
+
:preferred_inventory_provider,
|
|
86
|
+
:preferred_pricing_provider_failure_policy,
|
|
87
|
+
:preferred_inventory_provider_failure_policy,
|
|
88
|
+
:preferred_payout_provider,
|
|
89
|
+
:preferred_default_payouts_schedule_interval,
|
|
90
|
+
:preferred_default_minimum_payout_amount,
|
|
91
|
+
:preferred_document_number_format,
|
|
92
|
+
:preferred_order_number_prefix,
|
|
93
|
+
:preferred_order_number_suffix,
|
|
94
|
+
:preferred_order_number_sequence_start,
|
|
95
|
+
:preferred_limit_digital_download_count,
|
|
96
|
+
:preferred_digital_asset_authorized_clicks,
|
|
97
|
+
:preferred_limit_digital_download_days,
|
|
98
|
+
:preferred_digital_asset_authorized_days,
|
|
44
99
|
created_at: :iso8601, updated_at: :iso8601
|
|
45
100
|
|
|
101
|
+
# Once the counter has issued a number the starting value no longer
|
|
102
|
+
# applies, so the settings page can say that instead of accepting a
|
|
103
|
+
# value that does nothing.
|
|
104
|
+
attribute :order_number_sequence_started do |store|
|
|
105
|
+
Spree::NumberSequence.started?(store: store)
|
|
106
|
+
end
|
|
107
|
+
|
|
46
108
|
attribute :url, &:storefront_url
|
|
47
109
|
|
|
48
110
|
# The backend's own public URL — what a headless client sets as its
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# Admin-only: who the merchant buys from is never a storefront
|
|
6
|
+
# concern.
|
|
7
|
+
class SupplierSerializer < V3::BaseSerializer
|
|
8
|
+
typelize name: :string,
|
|
9
|
+
contact_name: 'string | null',
|
|
10
|
+
email: 'string | null',
|
|
11
|
+
phone: 'string | null',
|
|
12
|
+
notes: 'string | null',
|
|
13
|
+
address1: 'string | null',
|
|
14
|
+
address2: 'string | null',
|
|
15
|
+
city: 'string | null',
|
|
16
|
+
state_name: 'string | null',
|
|
17
|
+
state_code: 'string | null',
|
|
18
|
+
country_code: 'string | null',
|
|
19
|
+
postal_code: 'string | null',
|
|
20
|
+
purchase_orders_count: :number,
|
|
21
|
+
can_be_deleted: :boolean,
|
|
22
|
+
deleted_at: 'string | null',
|
|
23
|
+
metadata: 'Record<string, unknown>'
|
|
24
|
+
|
|
25
|
+
attributes :name, :contact_name, :email, :phone, :notes,
|
|
26
|
+
:address1, :address2, :city, :state_name, :state_code,
|
|
27
|
+
:country_code, :postal_code, :purchase_orders_count, :metadata,
|
|
28
|
+
created_at: :iso8601, updated_at: :iso8601, deleted_at: :iso8601
|
|
29
|
+
|
|
30
|
+
# Lets the dashboard hide the delete control rather than offer one
|
|
31
|
+
# the model will refuse.
|
|
32
|
+
attribute :can_be_deleted do |supplier|
|
|
33
|
+
supplier.can_be_deleted?
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# Admin-only: certificates are back-office evidence with no storefront
|
|
6
|
+
# surface, so there is no store serializer to extend.
|
|
7
|
+
class TaxExemptionCertificateSerializer < V3::BaseSerializer
|
|
8
|
+
typelize certificate_number: :string, reason_code: :string, status: [:string, enum: Spree::TaxExemptionCertificate.statuses, enum_type_name: 'TaxExemptionCertificateStatus'],
|
|
9
|
+
issuing_authority: [:string, nullable: true],
|
|
10
|
+
company_id: :string,
|
|
11
|
+
country_code: [:string, nullable: true], state_code: [:string, nullable: true],
|
|
12
|
+
active: :boolean, lapsed: :boolean, can_be_deleted: :boolean,
|
|
13
|
+
document_filename: [:string, nullable: true],
|
|
14
|
+
document_byte_size: ['number | null'],
|
|
15
|
+
document_url: [:string, nullable: true],
|
|
16
|
+
metadata: 'Record<string, unknown> | null'
|
|
17
|
+
|
|
18
|
+
attributes :certificate_number, :reason_code, :status, :issuing_authority, :metadata,
|
|
19
|
+
issued_at: :iso8601, expires_at: :iso8601, verified_at: :iso8601,
|
|
20
|
+
created_at: :iso8601, updated_at: :iso8601
|
|
21
|
+
|
|
22
|
+
attribute :company_id do |certificate|
|
|
23
|
+
certificate.company&.prefixed_id
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# The jurisdiction the certificate holds in, in the same vocabulary the
|
|
27
|
+
# tax lines use.
|
|
28
|
+
attributes :country_code, :state_code
|
|
29
|
+
|
|
30
|
+
# Whether it counts right now — the status alone can't say, since a
|
|
31
|
+
# verified certificate stops counting once its date passes.
|
|
32
|
+
attribute :active do |certificate|
|
|
33
|
+
certificate.verified? && !certificate.lapsed?
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
attribute :lapsed do |certificate|
|
|
37
|
+
certificate.lapsed?
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Lets the dashboard hide a delete the model will refuse.
|
|
41
|
+
attribute :can_be_deleted do |certificate|
|
|
42
|
+
certificate.can_be_deleted?
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
attribute :document_filename do |certificate|
|
|
46
|
+
certificate.document.blob&.filename&.to_s if certificate.document.attached?
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
attribute :document_byte_size do |certificate|
|
|
50
|
+
certificate.document.blob&.byte_size if certificate.document.attached?
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# Our own endpoint rather than a pre-signed URL: the controller streams
|
|
54
|
+
# the bytes, so admin auth runs on every download of a confidential
|
|
55
|
+
# document.
|
|
56
|
+
attribute :document_url do |certificate|
|
|
57
|
+
next nil unless certificate.document.attached?
|
|
58
|
+
|
|
59
|
+
Spree::Core::Engine.routes.url_helpers.download_api_v3_admin_company_tax_exemption_certificate_path(
|
|
60
|
+
company_id: certificate.company.prefixed_id, id: certificate.prefixed_id
|
|
61
|
+
)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
class TaxIdentifierSerializer < V3::TaxIdentifierSerializer
|
|
6
|
+
typelize validation_status: [:string, nullable: true, enum: Spree::TaxIdentifier::VALIDATION_STATUSES],
|
|
7
|
+
validated_at: [:string, nullable: true],
|
|
8
|
+
validation_evidence: ['Record<string, unknown>', nullable: true],
|
|
9
|
+
source: [:string, nullable: true, enum: Spree::TaxIdentifier::SOURCES],
|
|
10
|
+
validatable: :boolean,
|
|
11
|
+
customer_id: [:string, nullable: true],
|
|
12
|
+
cart_id: [:string, nullable: true],
|
|
13
|
+
order_id: [:string, nullable: true]
|
|
14
|
+
|
|
15
|
+
attributes :validation_status, :validation_evidence, :source,
|
|
16
|
+
validated_at: :iso8601, created_at: :iso8601, updated_at: :iso8601
|
|
17
|
+
|
|
18
|
+
# Whether this installation can check a number of this kind at all —
|
|
19
|
+
# what tells a nil verdict "not checked yet" apart from "nothing here
|
|
20
|
+
# knows how to ask".
|
|
21
|
+
attribute :validatable do |tax_identifier|
|
|
22
|
+
tax_identifier.validatable?
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# The owner, reported under the name of what it is, so a client can
|
|
26
|
+
# tell a customer's durable registration from a cart override or an
|
|
27
|
+
# order's snapshot without reading a type string.
|
|
28
|
+
attribute :customer_id do |tax_identifier|
|
|
29
|
+
tax_identifier.owner&.prefixed_id if tax_identifier.owner.is_a?(Spree.customer_class)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
attribute :cart_id do |tax_identifier|
|
|
33
|
+
tax_identifier.owner&.prefixed_id if tax_identifier.owner.is_a?(Spree::Cart)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
attribute :order_id do |tax_identifier|
|
|
37
|
+
tax_identifier.owner&.prefixed_id if tax_identifier.owner.is_a?(Spree::Order)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
class TaxLineSerializer < V3::TaxLineSerializer
|
|
6
|
+
typelize amount: [:string, nullable: false], display_amount: [:string, nullable: false],
|
|
7
|
+
provider_id: [:string, nullable: true], metadata: ['Record<string, unknown>', nullable: true],
|
|
8
|
+
taxability_reason: [:string, nullable: true], country_code: [:string, nullable: true],
|
|
9
|
+
state_code: [:string, nullable: true], data: ['Record<string, unknown>', nullable: true]
|
|
10
|
+
|
|
11
|
+
# The treatment and its jurisdiction stay admin-only: no surveyed
|
|
12
|
+
# platform shows a buyer a machine-readable tax reason, and `label`
|
|
13
|
+
# already covers what they need. `data` carries the provider's own
|
|
14
|
+
# breakdown, which is what an e-invoicing integration reads.
|
|
15
|
+
attributes :provider_id, :metadata, :taxability_reason, :country_code, :state_code, :data,
|
|
16
|
+
created_at: :iso8601, updated_at: :iso8601
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# Admin-only: tax rates are the internal provider's configuration, never
|
|
6
|
+
# customer-facing. What the customer sees is the label on a tax line.
|
|
7
|
+
class TaxRateSerializer < V3::BaseSerializer
|
|
8
|
+
typelize name: :string,
|
|
9
|
+
amount: :string,
|
|
10
|
+
amount_percentage: [:number, nullable: true],
|
|
11
|
+
included_in_price: :boolean,
|
|
12
|
+
show_rate_in_label: :boolean,
|
|
13
|
+
tax_category_id: [:string, nullable: true],
|
|
14
|
+
store_id: [:string, nullable: true],
|
|
15
|
+
country_code: [:string, nullable: true],
|
|
16
|
+
state_code: [:string, nullable: true],
|
|
17
|
+
metadata: ['Record<string, unknown>', nullable: true],
|
|
18
|
+
deleted_at: [:string, nullable: true]
|
|
19
|
+
|
|
20
|
+
attributes :name, :included_in_price, :show_rate_in_label, :metadata,
|
|
21
|
+
created_at: :iso8601, updated_at: :iso8601, deleted_at: :iso8601
|
|
22
|
+
|
|
23
|
+
attribute :amount do |tax_rate|
|
|
24
|
+
tax_rate.amount&.to_s
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# A real number, unlike the money-style `amount` string — this is a
|
|
28
|
+
# percentage for display, not an amount to round-trip exactly.
|
|
29
|
+
attribute :amount_percentage do |tax_rate|
|
|
30
|
+
tax_rate.amount_percentage&.to_f
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
attribute :tax_category_id do |tax_rate|
|
|
34
|
+
tax_rate.tax_category&.prefixed_id
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
attribute :store_id do |tax_rate|
|
|
38
|
+
tax_rate.store&.prefixed_id
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# The jurisdiction the rate taxes, as codes: a null country means every
|
|
42
|
+
# country, and a country with no state means the whole country. Read
|
|
43
|
+
# and written under the same two names.
|
|
44
|
+
attributes :country_code, :state_code
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -5,21 +5,38 @@ module Spree
|
|
|
5
5
|
# Admin API Variant Serializer
|
|
6
6
|
# Full variant data including admin-only fields
|
|
7
7
|
class VariantSerializer < V3::VariantSerializer
|
|
8
|
+
include Concerns::ExternalReferencesAttribute
|
|
9
|
+
|
|
8
10
|
|
|
9
11
|
typelize product_name: :string,
|
|
10
12
|
position: :number, tax_category_id: [:string, nullable: true],
|
|
11
13
|
cost_price: [:string, nullable: true], cost_currency: [:string, nullable: true],
|
|
12
14
|
barcode: [:string, nullable: true],
|
|
13
|
-
weight_unit: [:string, nullable: true], dimensions_unit: [:string, nullable: true],
|
|
14
15
|
available_stock: [:number, nullable: true],
|
|
15
16
|
reserved_quantity: :number, total_on_hand: [:number, nullable: true],
|
|
16
17
|
preorderable: :boolean, preorder_ships_at: [:string, nullable: true],
|
|
17
18
|
backorder_limit: [:number, nullable: true],
|
|
19
|
+
hs_code: [:string, nullable: true],
|
|
20
|
+
country_of_origin: [:string, nullable: true],
|
|
21
|
+
customs_description: [:string, nullable: true],
|
|
18
22
|
deleted_at: [:string, nullable: true],
|
|
23
|
+
delivery_profile_id: [:string, nullable: true],
|
|
24
|
+
minimum_order_quantity: ['number | null'], order_multiple: ['number | null'],
|
|
25
|
+
purchase_unit: [:string, nullable: true, enum: Spree::Variant::PURCHASE_UNITS],
|
|
26
|
+
carton_package_type_id: [:string, nullable: true],
|
|
27
|
+
carton_weight: [:string, nullable: true],
|
|
28
|
+
cartons_per_pallet: ['number | null'],
|
|
29
|
+
units_per_pallet: ['number | null'],
|
|
19
30
|
metadata: 'Record<string, unknown>'
|
|
20
31
|
|
|
32
|
+
# The last three override the store serializer's buyer-resolved
|
|
33
|
+
# values with the variant's OWN: a merchant edits what is stored on
|
|
34
|
+
# the row, not what some catalog resolves to for a buyer they are not.
|
|
21
35
|
attributes :metadata, :position, :cost_price, :cost_currency,
|
|
22
|
-
:barcode, :
|
|
36
|
+
:barcode, :backorder_limit,
|
|
37
|
+
:hs_code, :country_of_origin, :customs_description,
|
|
38
|
+
:minimum_order_quantity, :order_multiple, :purchase_unit,
|
|
39
|
+
:carton_weight, :cartons_per_pallet,
|
|
23
40
|
preorder_ships_at: :iso8601, deleted_at: :iso8601,
|
|
24
41
|
created_at: :iso8601, updated_at: :iso8601
|
|
25
42
|
|
|
@@ -31,8 +48,18 @@ module Spree
|
|
|
31
48
|
variant.tax_category&.prefixed_id
|
|
32
49
|
end
|
|
33
50
|
|
|
51
|
+
# Encoded from the foreign key: loading the carton row just to
|
|
52
|
+
# re-encode its id is a query per variant on the product listing.
|
|
53
|
+
attribute :carton_package_type_id do |variant|
|
|
54
|
+
Spree::PackageType.prefixed_id_for(variant.carton_package_type_id)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# How many units a full pallet holds — the far end of the packing
|
|
58
|
+
# chain, derived so a merchant sees it without doing the arithmetic.
|
|
59
|
+
attribute :units_per_pallet, &:units_per_pallet
|
|
60
|
+
|
|
34
61
|
# Physical pool minus already-allocated units. In 5.5 allocated_count
|
|
35
|
-
# is always 0, so this equals SUM(
|
|
62
|
+
# is always 0, so this equals SUM(stock_levels.count_on_hand).
|
|
36
63
|
attribute :available_stock do |variant|
|
|
37
64
|
variant.available_stock.to_i if variant.should_track_inventory?
|
|
38
65
|
end
|
|
@@ -50,6 +77,21 @@ module Spree
|
|
|
50
77
|
variant.product&.name
|
|
51
78
|
end
|
|
52
79
|
|
|
80
|
+
# How this variant ships — one answer, resolved on the model the same
|
|
81
|
+
# way the seller is. Writable: on a master product it names how this
|
|
82
|
+
# seller's row ships; on an owned product the write is a no-op, since
|
|
83
|
+
# every variant ships as the product does. The dashboard need not
|
|
84
|
+
# know which.
|
|
85
|
+
attribute :delivery_profile_id do |variant|
|
|
86
|
+
variant.resolved_delivery_profile&.prefixed_id
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
one :seller,
|
|
90
|
+
resource: proc { Spree.api.admin_seller_serializer },
|
|
91
|
+
if: proc { expand?('seller') } do |variant|
|
|
92
|
+
variant.resolved_seller
|
|
93
|
+
end
|
|
94
|
+
|
|
53
95
|
# Override inherited associations to use admin serializers
|
|
54
96
|
one :primary_media,
|
|
55
97
|
resource: proc { Spree.api.admin_media_serializer },
|
|
@@ -67,14 +109,13 @@ module Spree
|
|
|
67
109
|
resource: proc { Spree.api.admin_price_serializer },
|
|
68
110
|
if: proc { expand?('prices') }
|
|
69
111
|
|
|
70
|
-
many :
|
|
71
|
-
key: :custom_fields,
|
|
112
|
+
many :custom_fields,
|
|
72
113
|
resource: proc { Spree.api.admin_custom_field_serializer },
|
|
73
114
|
if: proc { expand?('custom_fields') }
|
|
74
115
|
|
|
75
|
-
many :
|
|
76
|
-
resource: proc { Spree.api.
|
|
77
|
-
if: proc { expand?('
|
|
116
|
+
many :stock_levels,
|
|
117
|
+
resource: proc { Spree.api.admin_stock_level_serializer },
|
|
118
|
+
if: proc { expand?('stock_levels') }
|
|
78
119
|
end
|
|
79
120
|
end
|
|
80
121
|
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
# Summary of promotions applied to a Cart or Order (serves the embedded
|
|
5
|
+
# `discounts` key). Distinct from DiscountSerializer, which serializes
|
|
6
|
+
# the typed Spree::Discount money rows.
|
|
7
|
+
class AppliedPromotionSerializer < BaseSerializer
|
|
8
|
+
typelize name: :string, description: [:string, nullable: true], code: [:string, nullable: true],
|
|
9
|
+
amount: [:string, nullable: true], display_amount: [:string, nullable: true], promotion_id: :string
|
|
10
|
+
|
|
11
|
+
attribute :promotion_id do |record|
|
|
12
|
+
record.promotion&.prefixed_id
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
attributes :name, :description, :code
|
|
16
|
+
|
|
17
|
+
# Nulled for gated (prices_hidden) guests so an applied discount can't
|
|
18
|
+
# leak the amount the cart/order totals already withhold.
|
|
19
|
+
money_attributes :amount, :display_amount
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -27,6 +27,17 @@ module Spree
|
|
|
27
27
|
end
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
+
# Plain decimal notation. BigDecimal renders 0.06 as "0.6e-1", which
|
|
31
|
+
# is what a client would otherwise print beside a unit.
|
|
32
|
+
#
|
|
33
|
+
# @param value [BigDecimal, Numeric, nil]
|
|
34
|
+
# @return [String, nil]
|
|
35
|
+
def decimal_string(value)
|
|
36
|
+
return if value.nil?
|
|
37
|
+
|
|
38
|
+
BigDecimal(value.to_s).to_s('F')
|
|
39
|
+
end
|
|
40
|
+
|
|
30
41
|
# Context accessors
|
|
31
42
|
def current_store
|
|
32
43
|
params[:store]
|
|
@@ -83,6 +94,13 @@ module Spree
|
|
|
83
94
|
end
|
|
84
95
|
end
|
|
85
96
|
|
|
97
|
+
# The variant a product leads with in the request's currency: the buy
|
|
98
|
+
# box winner, else the default variant. Resolved in the same currency
|
|
99
|
+
# `price_for` prices in, so the two never describe different rows.
|
|
100
|
+
def featured_variant(product)
|
|
101
|
+
product.featured_variant(currency: current_currency)
|
|
102
|
+
end
|
|
103
|
+
|
|
86
104
|
# Returns price for a variant using full Price List resolution
|
|
87
105
|
# This may return a price from a price list if applicable
|
|
88
106
|
# Memoized per variant to avoid duplicate queries
|
|
@@ -102,6 +120,25 @@ module Spree
|
|
|
102
120
|
)
|
|
103
121
|
end
|
|
104
122
|
|
|
123
|
+
# The buyer's effective purchasing rules for a variant — their
|
|
124
|
+
# catalogs' commercial terms resolved over the variant's own base
|
|
125
|
+
# rules. Read from the request context the same way price_for does,
|
|
126
|
+
# so a storefront gets the stepper matching the price it is quoted.
|
|
127
|
+
#
|
|
128
|
+
# The resolver is request-scoped, not instance-scoped: Alba builds a
|
|
129
|
+
# fresh serializer for every element of a collection, so a memo held
|
|
130
|
+
# here would reload each catalog's override rows once per row on the
|
|
131
|
+
# page. Resolving without the buyer's company would also answer from
|
|
132
|
+
# a different agreement than the one pricing the same page.
|
|
133
|
+
def quantity_rule_for(variant)
|
|
134
|
+
return Spree::QuantityRule.new if current_store.nil?
|
|
135
|
+
|
|
136
|
+
Spree::Current.quantity_rules_resolver_for(
|
|
137
|
+
company: Spree::Current.standing_company_for(current_user),
|
|
138
|
+
user: current_user
|
|
139
|
+
).call(variant)
|
|
140
|
+
end
|
|
141
|
+
|
|
105
142
|
# Returns the base price for a variant without Price List resolution
|
|
106
143
|
# This is the "original" price before any price list discounts
|
|
107
144
|
# Memoized per variant to avoid duplicate queries
|
|
@@ -119,9 +156,9 @@ module Spree
|
|
|
119
156
|
return nil if image.nil?
|
|
120
157
|
return nil unless image.respond_to?(:attached?) && image.attached?
|
|
121
158
|
|
|
122
|
-
# Handle Spree::
|
|
159
|
+
# Handle Spree::Media rows, which keep the file in `attachment`
|
|
123
160
|
# vs direct ActiveStorage attachments (like taxon.image)
|
|
124
|
-
attachment = image.is_a?(Spree::
|
|
161
|
+
attachment = image.is_a?(Spree::Media) ? image.attachment : image
|
|
125
162
|
Rails.application.routes.url_helpers.cdn_image_url(attachment)
|
|
126
163
|
end
|
|
127
164
|
end
|
|
@@ -7,7 +7,16 @@ module Spree
|
|
|
7
7
|
typelize number: :string, current_step: :string, completed_steps: 'string[]', token: :string, email: [:string, nullable: true],
|
|
8
8
|
customer_note: [:string, nullable: true], market_id: [:string, nullable: true], channel_id: [:string, nullable: true],
|
|
9
9
|
currency: :string, locale: [:string, nullable: true], total_quantity: :number,
|
|
10
|
-
|
|
10
|
+
coupon_code: [:string, nullable: true],
|
|
11
|
+
preferred_stock_location_id: [:string, nullable: true],
|
|
12
|
+
company_id: [:string, nullable: true], company_name: [:string, nullable: true],
|
|
13
|
+
po_number: [:string, nullable: true], po_number_required: :boolean,
|
|
14
|
+
po_document_filename: [:string, nullable: true],
|
|
15
|
+
po_document_byte_size: ['number | null'],
|
|
16
|
+
order_minimum: ['number | null'], order_minimum_shortfall: ['number | null'],
|
|
17
|
+
below_order_minimum: ['boolean | null'],
|
|
18
|
+
freight_summary: [:FreightSummary, nullable: true],
|
|
19
|
+
requirements: 'Array<{step: string, field: string, code: string, message: string}>',
|
|
11
20
|
item_total: [:string, nullable: true], display_item_total: [:string, nullable: true],
|
|
12
21
|
delivery_total: [:string, nullable: true], display_delivery_total: [:string, nullable: true],
|
|
13
22
|
adjustment_total: [:string, nullable: true], display_adjustment_total: [:string, nullable: true],
|
|
@@ -15,21 +24,17 @@ module Spree
|
|
|
15
24
|
tax_total: [:string, nullable: true], display_tax_total: [:string, nullable: true],
|
|
16
25
|
included_tax_total: [:string, nullable: true], display_included_tax_total: [:string, nullable: true],
|
|
17
26
|
additional_tax_total: [:string, nullable: true], display_additional_tax_total: [:string, nullable: true],
|
|
27
|
+
fee_total: [:string, nullable: true], display_fee_total: [:string, nullable: true],
|
|
18
28
|
store_credit_total: [:string, nullable: true], display_store_credit_total: [:string, nullable: true],
|
|
19
29
|
gift_card_total: [:string, nullable: true], display_gift_card_total: [:string, nullable: true],
|
|
20
30
|
covered_by_store_credit: :boolean,
|
|
21
31
|
total: [:string, nullable: true], display_total: [:string, nullable: true],
|
|
22
32
|
amount_due: [:string, nullable: true], display_amount_due: [:string, nullable: true],
|
|
23
33
|
shipping_eq_billing_address: :boolean,
|
|
24
|
-
warnings: 'Array<{code: string, message: string, line_item_id?: string, variant_id?: string}>',
|
|
34
|
+
warnings: 'Array<{code: string, message: string, line_item_id?: string, variant_id?: string, item_index?: number}>',
|
|
25
35
|
billing_address: { nullable: true }, shipping_address: { nullable: true },
|
|
26
36
|
gift_card: { nullable: true }, market: { nullable: true }
|
|
27
37
|
|
|
28
|
-
# Override ID to use cart_ prefix
|
|
29
|
-
attribute :id do |order|
|
|
30
|
-
"cart_#{Spree::PrefixedId::SQIDS.encode([order.id])}"
|
|
31
|
-
end
|
|
32
|
-
|
|
33
38
|
attribute :market_id do |order|
|
|
34
39
|
order.market&.prefixed_id
|
|
35
40
|
end
|
|
@@ -41,8 +46,40 @@ module Spree
|
|
|
41
46
|
order.channel&.prefixed_id
|
|
42
47
|
end
|
|
43
48
|
|
|
44
|
-
|
|
45
|
-
|
|
49
|
+
# Pickup selection — mirrors the writable param on cart update.
|
|
50
|
+
attribute :preferred_stock_location_id do |cart|
|
|
51
|
+
cart.preferred_stock_location&.prefixed_id
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Which company node the purchase is for — mirrors the writable
|
|
55
|
+
# `company_id` param. Read from the column, never re-resolved.
|
|
56
|
+
attribute :company_id do |cart|
|
|
57
|
+
cart.company&.prefixed_id
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
attribute :company_name do |cart|
|
|
61
|
+
cart.company&.name
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# The buyer's own purchase-order reference, and whether their company
|
|
65
|
+
# demands one — the storefront marks the field required from this
|
|
66
|
+
# rather than fetching the company to ask.
|
|
67
|
+
attribute :po_number_required do |cart|
|
|
68
|
+
cart.po_number_required?
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
attribute :po_document_filename do |cart|
|
|
72
|
+
cart.po_document.blob&.filename&.to_s if cart.po_document.attached?
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
attribute :po_document_byte_size do |cart|
|
|
76
|
+
cart.po_document.blob&.byte_size if cart.po_document.attached?
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# @deprecated `number` mirrors `id` (carts have no order-style
|
|
80
|
+
# number) — kept one release for 5.x clients; removed in 6.1.
|
|
81
|
+
attributes :number, :token, :email, :customer_note, :po_number,
|
|
82
|
+
:currency, :locale, :total_quantity, :warnings, :coupon_code
|
|
46
83
|
|
|
47
84
|
# Nulled for gated (prices_hidden) guests so the cart can't leak the
|
|
48
85
|
# prices that product/variant serializers already withhold.
|
|
@@ -53,7 +90,8 @@ module Spree
|
|
|
53
90
|
:additional_tax_total, :display_additional_tax_total, :total, :display_total,
|
|
54
91
|
:gift_card_total, :display_gift_card_total,
|
|
55
92
|
:amount_due, :display_amount_due,
|
|
56
|
-
:delivery_total, :display_delivery_total
|
|
93
|
+
:delivery_total, :display_delivery_total,
|
|
94
|
+
:fee_total, :display_fee_total
|
|
57
95
|
|
|
58
96
|
attribute :store_credit_total do |order|
|
|
59
97
|
order.total_applied_store_credit.to_s unless params[:hide_prices]
|
|
@@ -75,15 +113,55 @@ module Spree
|
|
|
75
113
|
order.completed_checkout_steps
|
|
76
114
|
end
|
|
77
115
|
|
|
116
|
+
# The order-minimum requirement names both amounts in its message, so
|
|
117
|
+
# it is dropped rather than redacted for a gated guest: a requirement
|
|
118
|
+
# with its numbers stripped tells them nothing they can act on.
|
|
78
119
|
attribute :requirements do |order|
|
|
79
|
-
Spree::Checkout::Requirements.new(order).call
|
|
120
|
+
requirements = Spree::Checkout::Requirements.new(order).call
|
|
121
|
+
next requirements unless params[:hide_prices]
|
|
122
|
+
|
|
123
|
+
requirements.reject { |requirement| requirement[:code] == 'order_minimum_not_met' }
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
# The order minimum in force for this buyer, or nil when their
|
|
127
|
+
# agreements state none. Exposed alongside the shortfall so a
|
|
128
|
+
# storefront can render "$180 to reach the $500 minimum" without
|
|
129
|
+
# doing the arithmetic or knowing where the number came from.
|
|
130
|
+
#
|
|
131
|
+
# Gated with the rest of the price surface: a threshold and a
|
|
132
|
+
# shortfall are amounts, and a storefront that hides prices from
|
|
133
|
+
# guests must not hand them "$180 short of $500" instead.
|
|
134
|
+
attribute :order_minimum do |order|
|
|
135
|
+
order.order_minimum_amount&.to_f unless params[:hide_prices]
|
|
80
136
|
end
|
|
81
137
|
|
|
138
|
+
attribute :order_minimum_shortfall do |order|
|
|
139
|
+
order.order_minimum_shortfall&.to_f unless params[:hide_prices]
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
attribute :below_order_minimum do |order|
|
|
143
|
+
order.below_order_minimum? unless params[:hide_prices]
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
# The shipment as a freight forwarder reads it: cartons, pallets,
|
|
147
|
+
# cubic meters, gross weight. Null for anything the store never
|
|
148
|
+
# measured that way, which is every retail cart.
|
|
149
|
+
#
|
|
150
|
+
# The totals are logistics rather than amounts, so they survive a
|
|
151
|
+
# storefront that hides prices; the per-line SKU and product name do
|
|
152
|
+
# not, being the catalog identity such a storefront exists to
|
|
153
|
+
# withhold.
|
|
154
|
+
one :freight_summary, resource: proc { Spree.api.freight_summary_serializer }
|
|
155
|
+
|
|
82
156
|
attribute :shipping_eq_billing_address do |order|
|
|
83
157
|
order.shipping_eq_billing_address?
|
|
84
158
|
end
|
|
85
159
|
|
|
86
|
-
many :discounts, resource: proc { Spree.api.
|
|
160
|
+
many :order_promotions, key: :discounts, resource: proc { Spree.api.applied_promotion_serializer }
|
|
161
|
+
# Itemized charges (duties, surcharges, COD, handling). Storefronts
|
|
162
|
+
# group and label these themselves — cross-border duty in particular
|
|
163
|
+
# has to be shown broken out rather than folded into a total.
|
|
164
|
+
many :fees, resource: proc { Spree.api.fee_serializer }
|
|
87
165
|
many :line_items, key: :items, resource: proc { Spree.api.line_item_serializer }
|
|
88
166
|
many :fulfillments, resource: proc { Spree.api.fulfillment_serializer }
|
|
89
167
|
many :payments, resource: proc { Spree.api.payment_serializer }
|