spree_api 5.6.1 → 6.0.0.beta2
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 +20 -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 +18 -9
- 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 +164 -33
- 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 +239 -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 +66 -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 +74 -16
- data/app/controllers/spree/api/v3/resource_controller.rb +170 -39
- 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/actor_serializer.rb +28 -0
- 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 +15 -2
- 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 +28 -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 +34 -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 +46 -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 +126 -31
- 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 +6 -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 +58 -0
- data/app/serializers/spree/api/v3/admin/role_serializer.rb +24 -6
- data/app/serializers/spree/api/v3/admin/saved_report_serializer.rb +32 -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 +48 -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 +65 -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 +61 -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 +19 -19
- data/lib/spree/api/dependencies.rb +174 -227
- data/lib/spree/api/engine.rb +6 -0
- 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 +342 -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,39 @@ 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_always_include_confirm_step: :boolean,
|
|
26
|
+
preferred_company_field_enabled: :boolean,
|
|
27
|
+
preferred_address_requires_company: :boolean,
|
|
28
|
+
preferred_address_requires_phone: :boolean,
|
|
29
|
+
preferred_capture_method: :string,
|
|
30
|
+
preferred_track_inventory_levels: :boolean,
|
|
31
|
+
preferred_stock_reservations_enabled: :boolean,
|
|
32
|
+
preferred_low_stock_threshold: :number,
|
|
33
|
+
preferred_tax_using_ship_address: :boolean,
|
|
34
|
+
preferred_track_price_history: :boolean,
|
|
35
|
+
preferred_show_products_without_price: :boolean,
|
|
36
|
+
preferred_disable_sku_validation: :boolean,
|
|
24
37
|
preferred_order_routing_strategy: :string,
|
|
38
|
+
preferred_pricing_provider: :string,
|
|
39
|
+
preferred_inventory_provider: :string,
|
|
40
|
+
preferred_pricing_provider_failure_policy: :string,
|
|
41
|
+
preferred_inventory_provider_failure_policy: :string,
|
|
42
|
+
preferred_payout_provider: 'string | null',
|
|
43
|
+
preferred_default_payouts_schedule_interval: :string,
|
|
44
|
+
preferred_default_minimum_payout_amount: :number,
|
|
45
|
+
preferred_document_number_format: :string,
|
|
46
|
+
preferred_order_number_prefix: :string,
|
|
47
|
+
preferred_order_number_suffix: :string,
|
|
48
|
+
preferred_order_number_sequence_start: :number,
|
|
49
|
+
order_number_sequence_started: :boolean,
|
|
50
|
+
preferred_limit_digital_download_count: :boolean,
|
|
51
|
+
preferred_digital_asset_authorized_clicks: :number,
|
|
52
|
+
preferred_limit_digital_download_days: :boolean,
|
|
53
|
+
preferred_digital_asset_authorized_days: :number,
|
|
25
54
|
metadata: 'Record<string, unknown>'
|
|
26
55
|
|
|
27
56
|
attributes :metadata,
|
|
@@ -30,6 +59,7 @@ module Spree
|
|
|
30
59
|
:preferred_storefront_url,
|
|
31
60
|
:default_currency,
|
|
32
61
|
:default_locale,
|
|
62
|
+
:default_country_code,
|
|
33
63
|
:mail_from_address,
|
|
34
64
|
:customer_support_email,
|
|
35
65
|
:new_order_notifications_email,
|
|
@@ -40,9 +70,43 @@ module Spree
|
|
|
40
70
|
:preferred_unit_system,
|
|
41
71
|
:preferred_storefront_access,
|
|
42
72
|
:preferred_guest_checkout,
|
|
73
|
+
:preferred_always_include_confirm_step,
|
|
74
|
+
:preferred_company_field_enabled,
|
|
75
|
+
:preferred_address_requires_company,
|
|
76
|
+
:preferred_address_requires_phone,
|
|
77
|
+
:preferred_capture_method,
|
|
78
|
+
:preferred_track_inventory_levels,
|
|
79
|
+
:preferred_stock_reservations_enabled,
|
|
80
|
+
:preferred_low_stock_threshold,
|
|
81
|
+
:preferred_tax_using_ship_address,
|
|
82
|
+
:preferred_track_price_history,
|
|
83
|
+
:preferred_show_products_without_price,
|
|
84
|
+
:preferred_disable_sku_validation,
|
|
43
85
|
:preferred_order_routing_strategy,
|
|
86
|
+
:preferred_pricing_provider,
|
|
87
|
+
:preferred_inventory_provider,
|
|
88
|
+
:preferred_pricing_provider_failure_policy,
|
|
89
|
+
:preferred_inventory_provider_failure_policy,
|
|
90
|
+
:preferred_payout_provider,
|
|
91
|
+
:preferred_default_payouts_schedule_interval,
|
|
92
|
+
:preferred_default_minimum_payout_amount,
|
|
93
|
+
:preferred_document_number_format,
|
|
94
|
+
:preferred_order_number_prefix,
|
|
95
|
+
:preferred_order_number_suffix,
|
|
96
|
+
:preferred_order_number_sequence_start,
|
|
97
|
+
:preferred_limit_digital_download_count,
|
|
98
|
+
:preferred_digital_asset_authorized_clicks,
|
|
99
|
+
:preferred_limit_digital_download_days,
|
|
100
|
+
:preferred_digital_asset_authorized_days,
|
|
44
101
|
created_at: :iso8601, updated_at: :iso8601
|
|
45
102
|
|
|
103
|
+
# Once the counter has issued a number the starting value no longer
|
|
104
|
+
# applies, so the settings page can say that instead of accepting a
|
|
105
|
+
# value that does nothing.
|
|
106
|
+
attribute :order_number_sequence_started do |store|
|
|
107
|
+
Spree::NumberSequence.started?(store: store)
|
|
108
|
+
end
|
|
109
|
+
|
|
46
110
|
attribute :url, &:storefront_url
|
|
47
111
|
|
|
48
112
|
# 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,39 @@ module Spree
|
|
|
27
27
|
end
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
+
# Declares the wire form of an `acted_by` association: the actor's
|
|
31
|
+
# prefixed id, the kind of actor it is, and the expansion. Both
|
|
32
|
+
# halves read off the columns, so naming an actor costs no query and
|
|
33
|
+
# the id and the kind always describe the same row (see
|
|
34
|
+
# docs/plans/6.0-action-actors.md).
|
|
35
|
+
#
|
|
36
|
+
# Declare the matching `typelize` entries alongside, as with any
|
|
37
|
+
# other attribute.
|
|
38
|
+
def self.actor_attributes(*names)
|
|
39
|
+
names.each do |name|
|
|
40
|
+
attribute(:"#{name}_id") { |object| object.acted_by_prefixed_id(name) }
|
|
41
|
+
|
|
42
|
+
attribute(:"#{name}_type") do |object|
|
|
43
|
+
Spree::Base.polymorphic_api_type(object.acted_by_type(name))
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
one name,
|
|
47
|
+
resource: proc { Spree.api.admin_actor_serializer },
|
|
48
|
+
if: proc { expand?(name.to_s) }
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Plain decimal notation. BigDecimal renders 0.06 as "0.6e-1", which
|
|
53
|
+
# is what a client would otherwise print beside a unit.
|
|
54
|
+
#
|
|
55
|
+
# @param value [BigDecimal, Numeric, nil]
|
|
56
|
+
# @return [String, nil]
|
|
57
|
+
def decimal_string(value)
|
|
58
|
+
return if value.nil?
|
|
59
|
+
|
|
60
|
+
BigDecimal(value.to_s).to_s('F')
|
|
61
|
+
end
|
|
62
|
+
|
|
30
63
|
# Context accessors
|
|
31
64
|
def current_store
|
|
32
65
|
params[:store]
|
|
@@ -83,6 +116,13 @@ module Spree
|
|
|
83
116
|
end
|
|
84
117
|
end
|
|
85
118
|
|
|
119
|
+
# The variant a product leads with in the request's currency: the buy
|
|
120
|
+
# box winner, else the default variant. Resolved in the same currency
|
|
121
|
+
# `price_for` prices in, so the two never describe different rows.
|
|
122
|
+
def featured_variant(product)
|
|
123
|
+
product.featured_variant(currency: current_currency)
|
|
124
|
+
end
|
|
125
|
+
|
|
86
126
|
# Returns price for a variant using full Price List resolution
|
|
87
127
|
# This may return a price from a price list if applicable
|
|
88
128
|
# Memoized per variant to avoid duplicate queries
|
|
@@ -102,6 +142,25 @@ module Spree
|
|
|
102
142
|
)
|
|
103
143
|
end
|
|
104
144
|
|
|
145
|
+
# The buyer's effective purchasing rules for a variant — their
|
|
146
|
+
# catalogs' commercial terms resolved over the variant's own base
|
|
147
|
+
# rules. Read from the request context the same way price_for does,
|
|
148
|
+
# so a storefront gets the stepper matching the price it is quoted.
|
|
149
|
+
#
|
|
150
|
+
# The resolver is request-scoped, not instance-scoped: Alba builds a
|
|
151
|
+
# fresh serializer for every element of a collection, so a memo held
|
|
152
|
+
# here would reload each catalog's override rows once per row on the
|
|
153
|
+
# page. Resolving without the buyer's company would also answer from
|
|
154
|
+
# a different agreement than the one pricing the same page.
|
|
155
|
+
def quantity_rule_for(variant)
|
|
156
|
+
return Spree::QuantityRule.new if current_store.nil?
|
|
157
|
+
|
|
158
|
+
Spree::Current.quantity_rules_resolver_for(
|
|
159
|
+
company: Spree::Current.standing_company_for(current_user),
|
|
160
|
+
user: current_user
|
|
161
|
+
).call(variant)
|
|
162
|
+
end
|
|
163
|
+
|
|
105
164
|
# Returns the base price for a variant without Price List resolution
|
|
106
165
|
# This is the "original" price before any price list discounts
|
|
107
166
|
# Memoized per variant to avoid duplicate queries
|
|
@@ -119,9 +178,9 @@ module Spree
|
|
|
119
178
|
return nil if image.nil?
|
|
120
179
|
return nil unless image.respond_to?(:attached?) && image.attached?
|
|
121
180
|
|
|
122
|
-
# Handle Spree::
|
|
181
|
+
# Handle Spree::Media rows, which keep the file in `attachment`
|
|
123
182
|
# vs direct ActiveStorage attachments (like taxon.image)
|
|
124
|
-
attachment = image.is_a?(Spree::
|
|
183
|
+
attachment = image.is_a?(Spree::Media) ? image.attachment : image
|
|
125
184
|
Rails.application.routes.url_helpers.cdn_image_url(attachment)
|
|
126
185
|
end
|
|
127
186
|
end
|