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
|
@@ -2,38 +2,101 @@ module Spree
|
|
|
2
2
|
module Api
|
|
3
3
|
module V3
|
|
4
4
|
module Admin
|
|
5
|
-
#
|
|
6
|
-
#
|
|
7
|
-
#
|
|
5
|
+
# Stock moving between two of the merchant's own warehouses.
|
|
6
|
+
#
|
|
7
|
+
# `create` persists a draft; nothing moves until the transfer is marked
|
|
8
|
+
# in transit. Receiving from a supplier is a
|
|
9
|
+
# {Spree::Api::V3::Admin::PurchaseOrdersController} order, not a
|
|
10
|
+
# transfer with a missing source.
|
|
11
|
+
#
|
|
12
|
+
# Every status change is its own member action rather than a PATCH that
|
|
13
|
+
# mass-assigns `status`, because each one is a workflow with its own
|
|
14
|
+
# arguments — receiving carries the quantities the warehouse counted,
|
|
15
|
+
# cancelling carries what happens to units already in flight.
|
|
8
16
|
class StockTransfersController < ResourceController
|
|
9
|
-
|
|
17
|
+
include Spree::Api::V3::Admin::ReceivableActions
|
|
10
18
|
|
|
11
|
-
|
|
12
|
-
authorize!(:create, model_class)
|
|
19
|
+
scoped_resource :stock
|
|
13
20
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
21
|
+
# The base registers this for show/update/destroy; a second
|
|
22
|
+
# `before_action :set_resource` replaces that registration rather than
|
|
23
|
+
# adding to it, so those three are listed again here.
|
|
24
|
+
before_action :set_resource, only: [:show, :update, :destroy, :mark_ready, :mark_in_transit, :mark_draft, :close, :cancel]
|
|
18
25
|
|
|
19
|
-
|
|
20
|
-
|
|
26
|
+
# DELETE /api/v3/admin/stock_transfers/:id
|
|
27
|
+
#
|
|
28
|
+
# A draft is the only transfer a merchant may throw away: past that
|
|
29
|
+
# it describes a box that physically exists, which is cancelled
|
|
30
|
+
# rather than deleted.
|
|
31
|
+
#
|
|
32
|
+
# Really deleted, not stamped. Soft deletion exists for the upgrade
|
|
33
|
+
# task's converted receives, whose numbers have to stay findable; a
|
|
34
|
+
# draft nobody sent has nothing to preserve, and `destroy` would
|
|
35
|
+
# hard-delete its lines regardless (they are not paranoid), leaving a
|
|
36
|
+
# soft-deleted row that could never be restored intact.
|
|
37
|
+
def destroy
|
|
38
|
+
unless @resource.draft?
|
|
21
39
|
return render_error(
|
|
22
|
-
code: '
|
|
23
|
-
message: Spree.t('stock_transfer.errors.
|
|
40
|
+
code: 'invalid_status',
|
|
41
|
+
message: Spree.t('stock_transfer.errors.only_draft_can_be_deleted'),
|
|
24
42
|
status: :unprocessable_content
|
|
25
43
|
)
|
|
26
44
|
end
|
|
27
45
|
|
|
28
|
-
@resource
|
|
29
|
-
|
|
30
|
-
|
|
46
|
+
authorize_resource!(@resource, :destroy)
|
|
47
|
+
@resource.really_destroy!
|
|
48
|
+
head :no_content
|
|
49
|
+
end
|
|
31
50
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
51
|
+
# PATCH /api/v3/admin/stock_transfers/:id/mark_ready
|
|
52
|
+
def mark_ready
|
|
53
|
+
result = Spree.stock_transfer_mark_ready_workflow.call(stock_transfer: @resource)
|
|
54
|
+
return render_result_error(result) unless result.success?
|
|
55
|
+
|
|
56
|
+
render json: serialize_resource(result.value)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# PATCH /api/v3/admin/stock_transfers/:id/mark_in_transit
|
|
60
|
+
def mark_in_transit
|
|
61
|
+
result = Spree.stock_transfer_mark_in_transit_workflow.call(
|
|
62
|
+
stock_transfer: @resource,
|
|
63
|
+
force: params[:force].to_b
|
|
64
|
+
)
|
|
65
|
+
return render_result_error(result) unless result.success?
|
|
66
|
+
|
|
67
|
+
render json: serialize_resource(result.value)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# PATCH /api/v3/admin/stock_transfers/:id/mark_draft
|
|
71
|
+
def mark_draft
|
|
72
|
+
result = Spree.stock_transfer_mark_draft_workflow.call(stock_transfer: @resource)
|
|
73
|
+
return render_result_error(result) unless result.success?
|
|
74
|
+
|
|
75
|
+
render json: serialize_resource(result.value)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# PATCH /api/v3/admin/stock_transfers/:id/close
|
|
79
|
+
#
|
|
80
|
+
# Deliveries are recorded through the nested stock receipts; this is
|
|
81
|
+
# for units that left the source and are not going to turn up.
|
|
82
|
+
def close
|
|
83
|
+
result = Spree.stock_transfer_close_workflow.call(stock_transfer: @resource, reason: params[:reason])
|
|
84
|
+
return render_result_error(result) unless result.success?
|
|
85
|
+
|
|
86
|
+
render json: serialize_resource(result.value)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# PATCH /api/v3/admin/stock_transfers/:id/cancel
|
|
90
|
+
def cancel
|
|
91
|
+
result = Spree.stock_transfer_cancel_workflow.call(
|
|
92
|
+
stock_transfer: @resource,
|
|
93
|
+
on_in_transit: params[:on_in_transit],
|
|
94
|
+
reason: params[:reason],
|
|
95
|
+
canceler: try_spree_current_user
|
|
96
|
+
)
|
|
97
|
+
return render_result_error(result) unless result.success?
|
|
98
|
+
|
|
99
|
+
render json: serialize_resource(result.value)
|
|
37
100
|
end
|
|
38
101
|
|
|
39
102
|
protected
|
|
@@ -47,27 +110,60 @@ module Spree
|
|
|
47
110
|
end
|
|
48
111
|
|
|
49
112
|
def collection_includes
|
|
50
|
-
[:source_location, :destination_location]
|
|
113
|
+
[:source_location, :destination_location, line_includes]
|
|
51
114
|
end
|
|
52
115
|
|
|
53
|
-
|
|
116
|
+
def create_workflow
|
|
117
|
+
Spree.stock_transfer_create_workflow
|
|
118
|
+
end
|
|
54
119
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
120
|
+
def update_workflow
|
|
121
|
+
Spree.stock_transfer_update_workflow
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def create_workflow_arguments
|
|
125
|
+
{
|
|
126
|
+
store: current_store,
|
|
127
|
+
source_location: stock_location_from(:source_location_id),
|
|
128
|
+
destination_location: stock_location_from(:destination_location_id),
|
|
129
|
+
items: items_from_params(:quantity_shipped) || [],
|
|
130
|
+
reference: params[:reference],
|
|
131
|
+
notes: params[:notes],
|
|
132
|
+
created_by: try_spree_current_user
|
|
133
|
+
}
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def update_workflow_arguments
|
|
137
|
+
{
|
|
138
|
+
stock_transfer: @resource,
|
|
139
|
+
attributes: editable_attributes,
|
|
140
|
+
items: items_from_params(:quantity_shipped)
|
|
141
|
+
}
|
|
142
|
+
end
|
|
66
143
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
144
|
+
# Only what mass assignment may safely carry. The two warehouses are
|
|
145
|
+
# resolved through the store instead, since an id the payload names
|
|
146
|
+
# has to be proved to belong here.
|
|
147
|
+
def resource_permitted_attributes
|
|
148
|
+
[:reference, :notes, { metadata: {} }]
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
# A transfer's status transitions are its own actions, so `update`
|
|
152
|
+
# only ever edits the document — and its two ends are objects the
|
|
153
|
+
# store handed us, never ids the payload asserted.
|
|
154
|
+
def editable_attributes
|
|
155
|
+
attributes = permitted_params.to_h.symbolize_keys
|
|
156
|
+
attributes[:source_location] = stock_location_from(:source_location_id) if params.key?(:source_location_id)
|
|
157
|
+
if params.key?(:destination_location_id)
|
|
158
|
+
attributes[:destination_location] = stock_location_from(:destination_location_id)
|
|
70
159
|
end
|
|
160
|
+
attributes
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
# The listing and the detail page both read a transfer's totals off
|
|
164
|
+
# its lines.
|
|
165
|
+
def scope_includes
|
|
166
|
+
[line_includes]
|
|
71
167
|
end
|
|
72
168
|
end
|
|
73
169
|
end
|
|
@@ -5,6 +5,15 @@ module Spree
|
|
|
5
5
|
class StoreController < Admin::BaseController
|
|
6
6
|
scoped_resource :settings
|
|
7
7
|
|
|
8
|
+
# Reading the current store is shell data — the dashboard needs the
|
|
9
|
+
# name, logo, timezone, currency and locales to render anything at
|
|
10
|
+
# all, so every signed-in staff member can read it regardless of
|
|
11
|
+
# their permissions. Secret keys still need `read_settings`: a
|
|
12
|
+
# scope-limited integration has no business reading operational
|
|
13
|
+
# settings (support/notification emails, routing) it wasn't granted.
|
|
14
|
+
# Writing always requires `write_settings`.
|
|
15
|
+
skip_scope_check! only: :show, jwt_only: true
|
|
16
|
+
|
|
8
17
|
# GET /api/v3/admin/store
|
|
9
18
|
def show
|
|
10
19
|
authorize! :show, current_store
|
|
@@ -22,8 +31,38 @@ module Spree
|
|
|
22
31
|
end
|
|
23
32
|
end
|
|
24
33
|
|
|
34
|
+
# GET /api/v3/admin/store/data_sources
|
|
35
|
+
#
|
|
36
|
+
# The pricing and inventory engines this store can choose between,
|
|
37
|
+
# with whether each is usable — a provider whose integration is not
|
|
38
|
+
# connected is listed but not selectable, so the dashboard can say
|
|
39
|
+
# why rather than hiding it.
|
|
40
|
+
def data_sources
|
|
41
|
+
authorize! :show, current_store
|
|
42
|
+
|
|
43
|
+
render json: {
|
|
44
|
+
data: {
|
|
45
|
+
pricing_providers: describe(Spree.pricing_providers),
|
|
46
|
+
inventory_providers: describe(Spree.inventory_providers),
|
|
47
|
+
failure_policies: Spree::ProviderFailurePolicy::VALUES
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
end
|
|
51
|
+
|
|
25
52
|
private
|
|
26
53
|
|
|
54
|
+
def describe(provider_classes)
|
|
55
|
+
provider_classes.map do |provider_class|
|
|
56
|
+
{
|
|
57
|
+
key: provider_class.key,
|
|
58
|
+
name: provider_class.provider_name,
|
|
59
|
+
integration_class: provider_class.integration_class,
|
|
60
|
+
integration_type: provider_class.integration_class.presence&.safe_constantize&.api_type,
|
|
61
|
+
available: provider_class.available_for_store?(current_store)
|
|
62
|
+
}
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
27
66
|
def serialize_store
|
|
28
67
|
serializer_class.new(current_store, params: serializer_params).to_h
|
|
29
68
|
end
|
|
@@ -42,7 +81,33 @@ module Spree
|
|
|
42
81
|
:preferred_storefront_access,
|
|
43
82
|
:preferred_storefront_url,
|
|
44
83
|
:preferred_guest_checkout,
|
|
84
|
+
:preferred_company_field_enabled,
|
|
85
|
+
:preferred_address_requires_company,
|
|
86
|
+
:preferred_address_requires_phone,
|
|
87
|
+
:preferred_capture_method,
|
|
88
|
+
# @deprecated Superseded by preferred_capture_method; the model
|
|
89
|
+
# maps them onto it. Removed in 6.1.
|
|
90
|
+
:preferred_auto_capture,
|
|
91
|
+
:preferred_auto_capture_on_dispatch,
|
|
92
|
+
:preferred_track_inventory_levels,
|
|
93
|
+
:preferred_stock_reservations_enabled,
|
|
94
|
+
:preferred_low_stock_threshold,
|
|
95
|
+
:preferred_tax_using_ship_address,
|
|
96
|
+
:preferred_track_price_history,
|
|
97
|
+
:preferred_show_products_without_price,
|
|
98
|
+
:preferred_disable_sku_validation,
|
|
45
99
|
:preferred_order_routing_strategy,
|
|
100
|
+
:preferred_pricing_provider,
|
|
101
|
+
:preferred_inventory_provider,
|
|
102
|
+
:preferred_pricing_provider_failure_policy,
|
|
103
|
+
:preferred_inventory_provider_failure_policy,
|
|
104
|
+
:preferred_payout_provider,
|
|
105
|
+
:preferred_default_payouts_schedule_interval,
|
|
106
|
+
:preferred_default_minimum_payout_amount,
|
|
107
|
+
:preferred_document_number_format,
|
|
108
|
+
:preferred_order_number_prefix,
|
|
109
|
+
:preferred_order_number_suffix,
|
|
110
|
+
:preferred_order_number_sequence_start,
|
|
46
111
|
:mail_from_address,
|
|
47
112
|
:customer_support_email,
|
|
48
113
|
:new_order_notifications_email,
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
module StoreCredits
|
|
6
|
+
# A store credit's ledger: how its balance got to where it is.
|
|
7
|
+
# Read-only — events are written by the credit itself as it is
|
|
8
|
+
# allocated, authorized, captured, voided and credited back.
|
|
9
|
+
class EventsController < ResourceController
|
|
10
|
+
scoped_resource :store_credits
|
|
11
|
+
|
|
12
|
+
protected
|
|
13
|
+
|
|
14
|
+
def model_class
|
|
15
|
+
Spree::StoreCreditEvent
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def serializer_class
|
|
19
|
+
Spree.api.admin_store_credit_event_serializer
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def parent_association
|
|
23
|
+
:store_credit_events
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# A ledger reads newest first unless the caller asks otherwise.
|
|
27
|
+
def apply_collection_sort(collection)
|
|
28
|
+
return super if sort_param.present?
|
|
29
|
+
|
|
30
|
+
collection.reverse_chronological
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# The parent credit is resolved through the store's own credits,
|
|
34
|
+
# so a credit belonging to another store 404s rather than leaking
|
|
35
|
+
# its ledger.
|
|
36
|
+
def set_parent
|
|
37
|
+
@parent = current_store.store_credits.
|
|
38
|
+
accessible_by(current_ability, parent_ability_action).
|
|
39
|
+
find_by_prefix_id!(params[:store_credit_id])
|
|
40
|
+
authorize_parent!(@parent)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# Cross-customer view of what the store owes in prepaid balances.
|
|
6
|
+
#
|
|
7
|
+
# Read-only by design: a credit always belongs to one customer, and
|
|
8
|
+
# issuing, editing and deleting one stays nested under that customer
|
|
9
|
+
# (`Customers::StoreCreditsController`). This list is for seeing,
|
|
10
|
+
# filtering and auditing across all of them.
|
|
11
|
+
class StoreCreditsController < ResourceController
|
|
12
|
+
scoped_resource :store_credits
|
|
13
|
+
|
|
14
|
+
protected
|
|
15
|
+
|
|
16
|
+
def model_class
|
|
17
|
+
Spree::StoreCredit
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def serializer_class
|
|
21
|
+
Spree.api.admin_store_credit_serializer
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Not `:originator`: the serializer encodes its id from the columns
|
|
25
|
+
# rather than loading the record, so preloading a polymorphic
|
|
26
|
+
# association would fire one query per originator kind on the page
|
|
27
|
+
# and discard every row it returned.
|
|
28
|
+
def collection_includes
|
|
29
|
+
[:customer, :created_by]
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Pagination metadata plus the outstanding balance, one row per
|
|
33
|
+
# currency, summed over the same filtered scope the page came from —
|
|
34
|
+
# so a customer filter answers "this customer's balance" and no
|
|
35
|
+
# filter answers "the store's liability".
|
|
36
|
+
def collection_meta(_collection)
|
|
37
|
+
super.merge(totals: currency_totals)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
private
|
|
41
|
+
|
|
42
|
+
# @return [Array<Hash>] one entry per currency present in the
|
|
43
|
+
# filtered scope, ordered by currency.
|
|
44
|
+
def currency_totals
|
|
45
|
+
base = scope
|
|
46
|
+
table = Spree::StoreCredit.arel_table
|
|
47
|
+
# Summed over the matching ids rather than over the joined rows: a
|
|
48
|
+
# filter reaching through a `has_many` would match a credit once per
|
|
49
|
+
# joined row and count its amount that many times, overstating what
|
|
50
|
+
# the store owes.
|
|
51
|
+
# Without the sort key: the subquery only supplies ids, so carrying
|
|
52
|
+
# the page's ORDER BY (and any join it needs) buys nothing.
|
|
53
|
+
filtered = base.ransack(ransack_params.except('s')).result.select(:id)
|
|
54
|
+
rows = base.where(id: filtered).
|
|
55
|
+
reorder(nil).
|
|
56
|
+
order(:currency).
|
|
57
|
+
group(:currency).
|
|
58
|
+
pluck(
|
|
59
|
+
:currency,
|
|
60
|
+
table[:amount].sum,
|
|
61
|
+
table[:amount_used].sum,
|
|
62
|
+
table[:amount_authorized].sum
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
rows.map do |currency, amount, used, authorized|
|
|
66
|
+
# `SUM` answers an Integer on a whole-number total, and these
|
|
67
|
+
# totals render beside rows that serialize decimal strings — so
|
|
68
|
+
# "50" must not appear against their "50.0".
|
|
69
|
+
figures = {
|
|
70
|
+
amount: amount.to_d,
|
|
71
|
+
amount_used: used.to_d,
|
|
72
|
+
amount_authorized: authorized.to_d
|
|
73
|
+
}
|
|
74
|
+
figures[:amount_remaining] =
|
|
75
|
+
figures[:amount] - figures[:amount_used] - figures[:amount_authorized]
|
|
76
|
+
|
|
77
|
+
displays = figures.transform_keys { |name| :"display_#{name}" }.
|
|
78
|
+
transform_values { |value| Spree::Money.new(value, currency: currency).to_s }
|
|
79
|
+
|
|
80
|
+
{ currency: currency }.merge(figures.transform_values(&:to_s)).merge(displays)
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# The merchant's supplier address book. Buying goods in is its own
|
|
6
|
+
# permission resource: `write_stock` moves the stock you have, and must
|
|
7
|
+
# not also mean "may place orders with suppliers".
|
|
8
|
+
class SuppliersController < ResourceController
|
|
9
|
+
scoped_resource :purchasing
|
|
10
|
+
|
|
11
|
+
protected
|
|
12
|
+
|
|
13
|
+
def model_class
|
|
14
|
+
Spree::Supplier
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def serializer_class
|
|
18
|
+
Spree.api.admin_supplier_serializer
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def resource_permitted_attributes
|
|
22
|
+
[:name, :contact_name, :email, :phone, :notes,
|
|
23
|
+
:address1, :address2, :city, :state_name, :state_code,
|
|
24
|
+
:country_code, :postal_code, { metadata: {} }]
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -19,7 +19,7 @@ module Spree
|
|
|
19
19
|
{
|
|
20
20
|
'Spree::Product' => 'read_products',
|
|
21
21
|
'Spree::Order' => 'read_orders',
|
|
22
|
-
Spree.
|
|
22
|
+
Spree.customer_class.to_s => 'read_customers'
|
|
23
23
|
}
|
|
24
24
|
end
|
|
25
25
|
|
|
@@ -99,7 +99,7 @@ module Spree
|
|
|
99
99
|
# Sourced from `Spree.taggable_types` (registered in
|
|
100
100
|
# `Spree::Core::Engine`'s after_initialize block). Apps extend the
|
|
101
101
|
# list in an initializer without overriding this controller:
|
|
102
|
-
# Spree.taggable_types << 'MyApp::
|
|
102
|
+
# Spree.taggable_types << 'MyApp::Seller'
|
|
103
103
|
def allowed_taggable_types
|
|
104
104
|
Spree.taggable_types
|
|
105
105
|
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# Which tax engines this installation can point a market at, and what
|
|
6
|
+
# each of them cannot do. Discovery rather than CRUD: providers are
|
|
7
|
+
# classes registered in code, not rows — so there is no serializer, and
|
|
8
|
+
# each class describes itself (`to_api_hash`), the same shape
|
|
9
|
+
# `/promotion_rules/types` and `/collection_rules/types` use.
|
|
10
|
+
#
|
|
11
|
+
# The capability list is the point — a merchant selling into US states
|
|
12
|
+
# needs to be told at configuration time that the built-in engine has no
|
|
13
|
+
# local-tax data, rather than discovering it from a tax bill.
|
|
14
|
+
class TaxProvidersController < BaseController
|
|
15
|
+
scoped_resource :settings
|
|
16
|
+
|
|
17
|
+
# GET /api/v3/admin/tax_providers
|
|
18
|
+
def index
|
|
19
|
+
render json: { data: Spree.tax_providers.map { |provider| provider.to_api_hash(current_store) } }
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# Tax rates are the whole configuration of the internal tax provider, so
|
|
6
|
+
# these endpoints are how the default engine is set up and inspected.
|
|
7
|
+
class TaxRatesController < ResourceController
|
|
8
|
+
scoped_resource :settings
|
|
9
|
+
|
|
10
|
+
protected
|
|
11
|
+
|
|
12
|
+
def model_class
|
|
13
|
+
Spree::TaxRate
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def serializer_class
|
|
17
|
+
Spree.api.admin_tax_rate_serializer
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def collection_includes
|
|
21
|
+
[:tax_category]
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def permitted_params
|
|
25
|
+
params.permit(*model_additional_permitted_attributes, :name, :amount, :amount_percentage, :included_in_price,
|
|
26
|
+
:show_rate_in_label, :tax_category_id,
|
|
27
|
+
:country_code, :state_code, metadata: {})
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
class TrackingCarriersController < ResourceController
|
|
6
|
+
scoped_resource :fulfillments
|
|
7
|
+
|
|
8
|
+
# GET /api/v3/admin/tracking_carriers
|
|
9
|
+
#
|
|
10
|
+
# The registered carriers a tracking number can be pinned to
|
|
11
|
+
# (Spree.tracking_carriers), so the carrier picker renders from the
|
|
12
|
+
# registry — extensions and host apps that add carriers appear
|
|
13
|
+
# without any client change.
|
|
14
|
+
def index
|
|
15
|
+
authorize! :update, Spree::Fulfillment
|
|
16
|
+
|
|
17
|
+
data = Spree.tracking_carriers.map do |slug, carrier|
|
|
18
|
+
{ id: slug, name: carrier[:name] }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
render json: { data: data.sort_by { |carrier| carrier[:name] } }
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
protected
|
|
25
|
+
|
|
26
|
+
def model_class
|
|
27
|
+
Spree::Fulfillment
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -9,18 +9,12 @@ module Spree
|
|
|
9
9
|
class TranslatableResourcesController < Admin::BaseController
|
|
10
10
|
scoped_resource :settings
|
|
11
11
|
|
|
12
|
-
# Public resource types with a dedicated nested read route
|
|
13
|
-
# (`…/:id/translations`). Other registered types are writable via the
|
|
14
|
-
# batch endpoint and readable inline (e.g. option values are returned
|
|
15
|
-
# as children of an option type), so the dashboard must not GET a
|
|
16
|
-
# standalone matrix for them. Keep in sync with the `:translatable`
|
|
17
|
-
# route concern mounts in `spree/api/config/routes.rb`.
|
|
18
|
-
READABLE_RESOURCE_TYPES = %w[product category option_type].freeze
|
|
19
|
-
|
|
20
12
|
# GET /api/v3/admin/translatable_resources
|
|
21
13
|
def index
|
|
14
|
+
readable = readable_resource_types
|
|
15
|
+
|
|
22
16
|
data = Spree::Translations.registry.map do |entry|
|
|
23
|
-
entry.merge('readable' =>
|
|
17
|
+
entry.merge('readable' => readable.include?(entry['resource_type']))
|
|
24
18
|
end
|
|
25
19
|
|
|
26
20
|
render json: { data: data }
|
|
@@ -28,6 +22,40 @@ module Spree
|
|
|
28
22
|
|
|
29
23
|
private
|
|
30
24
|
|
|
25
|
+
# Public resource types with a dedicated nested read route
|
|
26
|
+
# (`…/:id/translations`). Other registered types are writable via the
|
|
27
|
+
# batch endpoint and readable inline (e.g. option values are returned
|
|
28
|
+
# as children of an option type), so the dashboard must not GET a
|
|
29
|
+
# standalone matrix for them.
|
|
30
|
+
#
|
|
31
|
+
# Derived from the routes rather than restated as a constant: the
|
|
32
|
+
# `:translatable` concern is mounted per resource, and a hand-kept
|
|
33
|
+
# list silently drifts the moment one is added (it had, for
|
|
34
|
+
# collections and policies).
|
|
35
|
+
#
|
|
36
|
+
# @return [Set<String>]
|
|
37
|
+
# Walked once and held on the class: the route set is immutable after
|
|
38
|
+
# boot, and in development the reloader replaces the class itself, so
|
|
39
|
+
# a route change is picked up without a cache to invalidate.
|
|
40
|
+
def readable_resource_types
|
|
41
|
+
self.class.readable_resource_types
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def self.readable_resource_types
|
|
45
|
+
@readable_resource_types ||=
|
|
46
|
+
Spree::Core::Engine.routes.routes.each_with_object(Set.new) do |route, types|
|
|
47
|
+
next unless route.defaults[:controller] == 'spree/api/v3/admin/translations'
|
|
48
|
+
next unless route.defaults[:action] == 'index'
|
|
49
|
+
|
|
50
|
+
# ".../admin/<segment>/:<segment>_id/translations" — the parent
|
|
51
|
+
# segment is what the registry token has to match.
|
|
52
|
+
segment = route.path.spec.to_s[%r{/([^/]+)/:\w+_id/translations}, 1]
|
|
53
|
+
next if segment.blank?
|
|
54
|
+
|
|
55
|
+
types << segment.singularize
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
31
59
|
def action_kind
|
|
32
60
|
'read'
|
|
33
61
|
end
|