spree_core 6.0.0.beta4 → 6.0.0.rc2

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.
Files changed (575) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -5
  3. data/app/helpers/spree/images_helper.rb +0 -57
  4. data/app/jobs/spree/base_job.rb +21 -0
  5. data/app/jobs/spree/carts/reap_expired_job.rb +2 -2
  6. data/app/jobs/spree/collections/regenerate_time_based_job.rb +6 -3
  7. data/app/jobs/spree/orders/finalize_stale_drafts_job.rb +8 -5
  8. data/app/jobs/spree/payments/cancel_unused_sessions_job.rb +61 -0
  9. data/app/jobs/spree/search_provider/index_job.rb +4 -0
  10. data/app/jobs/spree/seller_payouts/sweep_seller_job.rb +2 -0
  11. data/app/jobs/spree/uploads/purge_unattached_job.rb +49 -0
  12. data/app/mailers/spree/admin_user_mailer.rb +4 -19
  13. data/app/mailers/spree/base_mailer.rb +97 -13
  14. data/app/mailers/spree/email_template_mailer.rb +27 -0
  15. data/app/mailers/spree/export_mailer.rb +3 -4
  16. data/app/mailers/spree/import_mailer.rb +3 -4
  17. data/app/mailers/spree/invitation_mailer.rb +24 -7
  18. data/app/mailers/spree/seller_user_mailer.rb +4 -16
  19. data/app/mailers/spree/webhook_mailer.rb +2 -2
  20. data/app/models/concerns/spree/acted_by.rb +1 -1
  21. data/app/models/concerns/spree/admin_user_methods.rb +15 -1
  22. data/app/models/concerns/spree/api_typed.rb +91 -0
  23. data/app/models/concerns/spree/calculated_adjustments.rb +41 -13
  24. data/app/models/concerns/spree/calculator/currency_amounts.rb +1 -1
  25. data/app/models/concerns/spree/calculator/tiers.rb +63 -0
  26. data/app/models/concerns/spree/canonical_decimals.rb +61 -0
  27. data/app/models/concerns/spree/customer_methods.rb +23 -18
  28. data/app/models/concerns/spree/derived_number.rb +11 -13
  29. data/app/models/concerns/spree/email_template_identity.rb +52 -0
  30. data/app/models/concerns/spree/parameterizable_name.rb +2 -0
  31. data/app/models/concerns/spree/payment_session_transitions.rb +8 -2
  32. data/app/models/concerns/spree/post_sale/taxation.rb +54 -0
  33. data/app/models/concerns/spree/post_sale/taxed_line.rb +51 -0
  34. data/app/models/concerns/spree/preference_schema/json_schema.rb +139 -0
  35. data/app/models/concerns/spree/preference_schema.rb +62 -32
  36. data/app/models/concerns/spree/product_scopes.rb +16 -2
  37. data/app/models/concerns/spree/provider_listing.rb +41 -0
  38. data/app/models/concerns/spree/publishable.rb +82 -14
  39. data/app/models/concerns/spree/purchase/addresses.rb +23 -10
  40. data/app/models/concerns/spree/purchase/currency.rb +1 -1
  41. data/app/models/concerns/spree/purchase/deprecated_aliases.rb +87 -0
  42. data/app/models/concerns/spree/purchase/gift_cards.rb +10 -4
  43. data/app/models/concerns/spree/purchase/locale.rb +1 -1
  44. data/app/models/concerns/spree/purchase/payment_processing.rb +8 -4
  45. data/app/models/concerns/spree/purchase/purchase_order.rb +9 -4
  46. data/app/models/concerns/spree/purchase/store_credits.rb +36 -1
  47. data/app/models/concerns/spree/purchase/totals.rb +49 -8
  48. data/app/models/concerns/spree/ransackable_attributes.rb +46 -0
  49. data/app/models/concerns/spree/receivable.rb +1 -1
  50. data/app/models/concerns/spree/searchable.rb +0 -4
  51. data/app/models/concerns/spree/secret_preferences.rb +59 -0
  52. data/app/models/concerns/spree/signed_id_attachments.rb +54 -0
  53. data/app/models/concerns/spree/single_store_resource.rb +1 -1
  54. data/app/models/concerns/spree/stores/email_branding.rb +32 -0
  55. data/app/models/concerns/spree/stores/markets.rb +5 -2
  56. data/app/models/concerns/spree/type_labels.rb +38 -0
  57. data/app/models/concerns/spree/typed_adjustment_line.rb +5 -6
  58. data/app/models/concerns/spree/typed_associations.rb +12 -18
  59. data/app/models/concerns/spree/vat_price_calculation.rb +5 -6
  60. data/app/models/spree/address.rb +12 -2
  61. data/app/models/spree/adjusters/largest_remainder.rb +14 -1
  62. data/app/models/spree/adjusters/promotion.rb +4 -19
  63. data/app/models/spree/allowed_origin.rb +3 -1
  64. data/app/models/spree/api_key.rb +5 -6
  65. data/app/models/spree/authentication/strategies/oidc_strategy.rb +5 -5
  66. data/app/models/spree/base.rb +99 -22
  67. data/app/models/spree/calculator/flat_percent_item_total.rb +2 -4
  68. data/app/models/spree/calculator/flat_rate.rb +3 -5
  69. data/app/models/spree/calculator/flexi_rate.rb +4 -6
  70. data/app/models/spree/calculator/percent_on_line_item.rb +2 -2
  71. data/app/models/spree/calculator/price_sack.rb +5 -7
  72. data/app/models/spree/calculator/shipping/digital_delivery.rb +3 -5
  73. data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +7 -7
  74. data/app/models/spree/calculator/shipping/flat_rate.rb +5 -7
  75. data/app/models/spree/calculator/shipping/flexi_rate.rb +4 -6
  76. data/app/models/spree/calculator/shipping/per_item.rb +3 -5
  77. data/app/models/spree/calculator/shipping/price_sack.rb +5 -7
  78. data/app/models/spree/calculator/tiered_flat_rate.rb +7 -24
  79. data/app/models/spree/calculator/tiered_percent.rb +7 -25
  80. data/app/models/spree/cart.rb +78 -18
  81. data/app/models/spree/catalog.rb +1 -0
  82. data/app/models/spree/catalog_price.rb +0 -7
  83. data/app/models/spree/catalog_price_tier.rb +0 -8
  84. data/app/models/spree/category.rb +3 -1
  85. data/app/models/spree/channel/gating.rb +3 -2
  86. data/app/models/spree/channel.rb +6 -4
  87. data/app/models/spree/claim.rb +22 -1
  88. data/app/models/spree/claim_line_item.rb +41 -6
  89. data/app/models/spree/collection.rb +2 -1
  90. data/app/models/spree/collection_rule.rb +5 -21
  91. data/app/models/spree/commission_line.rb +1 -1
  92. data/app/models/spree/commission_rate.rb +7 -4
  93. data/app/models/spree/commission_rate_value.rb +1 -1
  94. data/app/models/spree/commission_rule.rb +4 -11
  95. data/app/models/spree/commission_rules/category_rule.rb +2 -5
  96. data/app/models/spree/commission_rules/item_total_rule.rb +2 -2
  97. data/app/models/spree/commission_rules/product_rule.rb +1 -1
  98. data/app/models/spree/commission_rules/seller_rule.rb +2 -5
  99. data/app/models/spree/company.rb +1 -0
  100. data/app/models/spree/company_invitation.rb +1 -0
  101. data/app/models/spree/consent_record.rb +0 -1
  102. data/app/models/spree/credit_card.rb +1 -1
  103. data/app/models/spree/current.rb +23 -0
  104. data/app/models/spree/custom_field.rb +2 -2
  105. data/app/models/spree/custom_field_definition.rb +20 -35
  106. data/app/models/spree/custom_fields/boolean.rb +1 -1
  107. data/app/models/spree/custom_fields/json.rb +1 -1
  108. data/app/models/spree/customer_group.rb +1 -0
  109. data/app/models/spree/data_feed/google.rb +0 -2
  110. data/app/models/spree/data_request.rb +2 -1
  111. data/app/models/spree/delivery_method.rb +36 -14
  112. data/app/models/spree/delivery_method_rule.rb +4 -11
  113. data/app/models/spree/delivery_method_rules/channel_rule.rb +2 -5
  114. data/app/models/spree/delivery_method_rules/item_total_rule.rb +2 -2
  115. data/app/models/spree/delivery_profile.rb +1 -0
  116. data/app/models/spree/delivery_rate.rb +7 -8
  117. data/app/models/spree/delivery_rate_provider/base.rb +1 -0
  118. data/app/models/spree/delivery_zone.rb +1 -2
  119. data/app/models/spree/delivery_zone_member.rb +4 -4
  120. data/app/models/spree/digital_asset.rb +7 -0
  121. data/app/models/spree/digital_asset_provider/base.rb +2 -0
  122. data/app/models/spree/digital_link.rb +2 -5
  123. data/app/models/spree/discount.rb +1 -1
  124. data/app/models/spree/email_template.rb +25 -0
  125. data/app/models/spree/email_template_draft.rb +13 -0
  126. data/app/models/spree/email_template_revision.rb +17 -0
  127. data/app/models/spree/email_templates/entry.rb +118 -0
  128. data/app/models/spree/email_templates/sample_record.rb +16 -0
  129. data/app/models/spree/emails/branding.rb +80 -0
  130. data/app/models/spree/exchange.rb +16 -1
  131. data/app/models/spree/exchange_line_item.rb +121 -5
  132. data/app/models/spree/export.rb +0 -1
  133. data/app/models/spree/exports/products.rb +10 -1
  134. data/app/models/spree/exports/report.rb +3 -3
  135. data/app/models/spree/fee.rb +4 -2
  136. data/app/models/spree/file_upload.rb +155 -0
  137. data/app/models/spree/fulfillment.rb +66 -30
  138. data/app/models/spree/fulfillment_changer.rb +2 -2
  139. data/app/models/spree/fulfillment_group.rb +6 -1
  140. data/app/models/spree/fulfillment_item.rb +0 -4
  141. data/app/models/spree/fulfillment_provider/base.rb +1 -0
  142. data/app/models/spree/gateway/bogus.rb +6 -0
  143. data/app/models/spree/gateway/custom_payment_source_method.rb +5 -0
  144. data/app/models/spree/gateway.rb +6 -2
  145. data/app/models/spree/gift_card.rb +18 -8
  146. data/app/models/spree/gift_card_batch.rb +3 -5
  147. data/app/models/spree/import.rb +5 -7
  148. data/app/models/spree/import_mapping.rb +1 -2
  149. data/app/models/spree/import_row.rb +2 -2
  150. data/app/models/spree/import_schemas/products.rb +1 -0
  151. data/app/models/spree/integration.rb +9 -19
  152. data/app/models/spree/invitation.rb +5 -5
  153. data/app/models/spree/line_item.rb +15 -4
  154. data/app/models/spree/locale.rb +11 -8
  155. data/app/models/spree/market.rb +8 -2
  156. data/app/models/spree/media.rb +1 -9
  157. data/app/models/spree/newsletter_subscriber.rb +4 -0
  158. data/app/models/spree/option_type.rb +2 -1
  159. data/app/models/spree/option_value.rb +2 -1
  160. data/app/models/spree/order.rb +60 -142
  161. data/app/models/spree/order_group.rb +18 -4
  162. data/app/models/spree/order_inventory.rb +10 -5
  163. data/app/models/spree/order_promotion.rb +1 -1
  164. data/app/models/spree/order_routing/has_strategy_preference.rb +1 -1
  165. data/app/models/spree/order_routing/strategy/base.rb +4 -2
  166. data/app/models/spree/order_routing/strategy/rules.rb +1 -1
  167. data/app/models/spree/order_routing_rule.rb +6 -22
  168. data/app/models/spree/package_type.rb +2 -2
  169. data/app/models/spree/payment/gateway_options.rb +15 -53
  170. data/app/models/spree/payment/processing.rb +2 -4
  171. data/app/models/spree/payment.rb +21 -13
  172. data/app/models/spree/payment_method/check.rb +2 -0
  173. data/app/models/spree/payment_method/session_instrumentation.rb +1 -0
  174. data/app/models/spree/payment_method/store_credit.rb +15 -13
  175. data/app/models/spree/payment_method.rb +78 -6
  176. data/app/models/spree/payment_session.rb +5 -1
  177. data/app/models/spree/payment_setup_session.rb +1 -0
  178. data/app/models/spree/payout_provider/base.rb +3 -1
  179. data/app/models/spree/pickup_point_provider/base.rb +2 -0
  180. data/app/models/spree/policy.rb +1 -0
  181. data/app/models/spree/price.rb +17 -14
  182. data/app/models/spree/price_adjustment_tier.rb +4 -0
  183. data/app/models/spree/price_list.rb +14 -9
  184. data/app/models/spree/price_rules/channel_rule.rb +3 -6
  185. data/app/models/spree/price_rules/customer_group_rule.rb +3 -6
  186. data/app/models/spree/price_rules/market_rule.rb +2 -5
  187. data/app/models/spree/price_rules/user_rule.rb +1 -3
  188. data/app/models/spree/product/channels.rb +9 -2
  189. data/app/models/spree/product.rb +54 -30
  190. data/app/models/spree/product_submission.rb +0 -12
  191. data/app/models/spree/product_type.rb +1 -1
  192. data/app/models/spree/promotion/actions/create_line_items.rb +28 -18
  193. data/app/models/spree/promotion/rules/category.rb +1 -5
  194. data/app/models/spree/promotion/rules/channel.rb +2 -9
  195. data/app/models/spree/promotion/rules/country.rb +3 -8
  196. data/app/models/spree/promotion/rules/currency.rb +1 -5
  197. data/app/models/spree/promotion/rules/customer_group.rb +2 -9
  198. data/app/models/spree/promotion/rules/first_order.rb +0 -4
  199. data/app/models/spree/promotion/rules/item_total.rb +6 -10
  200. data/app/models/spree/promotion/rules/market.rb +2 -9
  201. data/app/models/spree/promotion/rules/one_use_per_user.rb +0 -4
  202. data/app/models/spree/promotion/rules/option_value.rb +2 -6
  203. data/app/models/spree/promotion/rules/product.rb +1 -5
  204. data/app/models/spree/promotion/rules/user.rb +0 -4
  205. data/app/models/spree/promotion/rules/user_logged_in.rb +0 -4
  206. data/app/models/spree/promotion.rb +36 -6
  207. data/app/models/spree/promotion_action.rb +7 -14
  208. data/app/models/spree/promotion_action_line_item.rb +1 -1
  209. data/app/models/spree/promotion_handler/coupon.rb +59 -27
  210. data/app/models/spree/promotion_rule.rb +7 -14
  211. data/app/models/spree/purchase_order.rb +3 -0
  212. data/app/models/spree/quantity_rule.rb +1 -1
  213. data/app/models/spree/refund.rb +41 -18
  214. data/app/models/spree/return.rb +31 -2
  215. data/app/models/spree/return_line_item.rb +65 -14
  216. data/app/models/spree/role.rb +7 -7
  217. data/app/models/spree/saved_report.rb +2 -1
  218. data/app/models/spree/search_provider/base.rb +4 -0
  219. data/app/models/spree/seller.rb +10 -2
  220. data/app/models/spree/seller_payout.rb +8 -0
  221. data/app/models/spree/seller_requirement.rb +5 -12
  222. data/app/models/spree/seller_requirement_custom_field.rb +1 -2
  223. data/app/models/spree/seller_requirement_submission.rb +3 -2
  224. data/app/models/spree/seller_requirements/accept_terms.rb +2 -3
  225. data/app/models/spree/seller_transfer.rb +6 -0
  226. data/app/models/spree/shipping_label.rb +2 -0
  227. data/app/models/spree/stock/availability_validator.rb +2 -2
  228. data/app/models/spree/stock/estimator.rb +1 -1
  229. data/app/models/spree/stock/inventory_unit_builder.rb +1 -1
  230. data/app/models/spree/stock/packer.rb +2 -2
  231. data/app/models/spree/stock/splitter/weight.rb +1 -1
  232. data/app/models/spree/stock_level/custom_events.rb +6 -0
  233. data/app/models/spree/stock_level.rb +3 -1
  234. data/app/models/spree/stock_location.rb +1 -0
  235. data/app/models/spree/stock_movement.rb +1 -1
  236. data/app/models/spree/stock_receipt_item.rb +1 -1
  237. data/app/models/spree/stock_reservation.rb +2 -2
  238. data/app/models/spree/stock_transfer.rb +6 -2
  239. data/app/models/spree/store.rb +70 -19
  240. data/app/models/spree/store_credit.rb +13 -13
  241. data/app/models/spree/store_credit_event.rb +5 -5
  242. data/app/models/spree/supplier.rb +1 -0
  243. data/app/models/spree/tax_category.rb +1 -0
  244. data/app/models/spree/tax_exemption_certificate.rb +3 -0
  245. data/app/models/spree/tax_identifier.rb +3 -1
  246. data/app/models/spree/tax_line.rb +53 -3
  247. data/app/models/spree/tax_provider/base.rb +71 -14
  248. data/app/models/spree/tax_provider/internal.rb +70 -41
  249. data/app/models/spree/tax_provider/recorded_share.rb +114 -0
  250. data/app/models/spree/tax_rate.rb +30 -8
  251. data/app/models/spree/taxon.rb +1 -1
  252. data/app/models/spree/taxonomy.rb +0 -1
  253. data/app/models/spree/update_status.rb +25 -0
  254. data/app/models/spree/variant.rb +10 -12
  255. data/app/models/spree/variant_media.rb +1 -1
  256. data/app/models/spree/webhook_delivery.rb +1 -0
  257. data/app/models/spree/webhook_endpoint.rb +46 -13
  258. data/app/models/spree/wishlist.rb +1 -6
  259. data/app/models/spree/wishlist_item/custom_events.rb +6 -0
  260. data/app/presenters/spree/csv/customer_presenter.rb +1 -1
  261. data/app/presenters/spree/csv/newsletter_subscriber_presenter.rb +1 -1
  262. data/app/presenters/spree/csv/order_line_item_presenter.rb +10 -6
  263. data/app/presenters/spree/csv/price_list_price_presenter.rb +3 -8
  264. data/app/presenters/spree/csv/product_variant_presenter.rb +59 -20
  265. data/app/presenters/spree/csv/purchase_order_item_presenter.rb +1 -3
  266. data/app/serializers/spree/emails/base_serializer.rb +14 -0
  267. data/app/serializers/spree/emails/export_serializer.rb +13 -0
  268. data/app/serializers/spree/emails/import_serializer.rb +19 -0
  269. data/app/serializers/spree/emails/invitation_serializer.rb +28 -0
  270. data/app/serializers/spree/emails/store_serializer.rb +31 -0
  271. data/app/serializers/spree/emails/user_serializer.rb +12 -0
  272. data/app/serializers/spree/emails/webhook_endpoint_serializer.rb +16 -0
  273. data/app/services/spree/carts/create.rb +8 -2
  274. data/app/services/spree/carts/destroy.rb +2 -2
  275. data/app/services/spree/carts/remove_out_of_stock_items.rb +2 -2
  276. data/app/services/spree/carts/split_by_seller.rb +1 -1
  277. data/app/services/spree/carts/update.rb +22 -8
  278. data/app/services/spree/catalogs/set_product_terms.rb +1 -1
  279. data/app/services/spree/categories/add_products.rb +13 -31
  280. data/app/services/spree/categories/remove_products.rb +12 -51
  281. data/app/services/spree/checkout/advance.rb +1 -4
  282. data/app/services/spree/collections/add_products.rb +10 -23
  283. data/app/services/spree/collections/remove_products.rb +7 -43
  284. data/app/services/spree/coupon_codes/bulk_generate.rb +8 -14
  285. data/app/services/spree/data_requests/create.rb +1 -1
  286. data/app/services/spree/deliveries/destroy.rb +2 -2
  287. data/app/services/spree/email_templates/check.rb +58 -0
  288. data/app/services/spree/email_templates/no_sample_record.rb +7 -0
  289. data/app/services/spree/email_templates/preview.rb +99 -0
  290. data/app/services/spree/emails/file_system.rb +23 -0
  291. data/app/services/spree/emails/filters.rb +84 -0
  292. data/app/services/spree/emails/liquid_context.rb +48 -0
  293. data/app/services/spree/emails/rendered_email.rb +14 -0
  294. data/app/services/spree/emails/renderer.rb +125 -0
  295. data/app/services/spree/emails/template.rb +51 -0
  296. data/app/services/spree/emails/template_data.rb +23 -0
  297. data/app/services/spree/emails/template_resolver.rb +109 -0
  298. data/app/services/spree/emails/text_converter.rb +72 -0
  299. data/app/services/spree/emails/translation_inliner.rb +134 -0
  300. data/app/services/spree/imports/row_processors/price_list_price.rb +10 -10
  301. data/app/services/spree/imports/row_processors/product_variant.rb +77 -34
  302. data/app/services/spree/imports/row_processors/purchase_order.rb +13 -13
  303. data/app/services/spree/locales.rb +43 -10
  304. data/app/services/spree/newsletter/subscribe.rb +8 -12
  305. data/app/services/spree/orders/build_fulfillments.rb +3 -2
  306. data/app/services/spree/orders/create.rb +5 -4
  307. data/app/services/spree/orders/discounts/create.rb +14 -11
  308. data/app/services/spree/orders/discounts/destroy.rb +1 -0
  309. data/app/services/spree/orders/discounts/update.rb +1 -0
  310. data/app/services/spree/orders/fees/create.rb +1 -0
  311. data/app/services/spree/orders/fees/destroy.rb +1 -0
  312. data/app/services/spree/orders/fees/update.rb +1 -0
  313. data/app/services/spree/orders/remove_line_item.rb +13 -3
  314. data/app/services/spree/orders/update.rb +10 -6
  315. data/app/services/spree/orders/update_item.rb +6 -3
  316. data/app/services/spree/orders/update_statuses.rb +3 -1
  317. data/app/services/spree/prices/bulk_upsert.rb +32 -25
  318. data/app/services/spree/product_memberships.rb +61 -0
  319. data/app/services/spree/returns/eligibility_validator.rb +1 -1
  320. data/app/services/spree/search_provider/custom_field_schema.rb +2 -2
  321. data/app/services/spree/seeds/commission_rates.rb +1 -1
  322. data/app/services/spree/seeds/digital_delivery.rb +1 -1
  323. data/app/services/spree/seeds/payment_methods.rb +2 -2
  324. data/app/services/spree/seeds/saved_reports.rb +3 -3
  325. data/app/services/spree/seeds/stores.rb +1 -1
  326. data/app/services/spree/sellers/requirements.rb +1 -2
  327. data/app/services/spree/shipping_labels/confirm_refund.rb +1 -1
  328. data/app/services/spree/shipping_labels/store_file.rb +3 -3
  329. data/app/services/spree/stock_levels/correct.rb +3 -3
  330. data/app/services/spree/stock_reservations/reserve.rb +2 -3
  331. data/app/services/spree/store_credits/apply.rb +15 -13
  332. data/app/services/spree/stores/provision_defaults.rb +23 -25
  333. data/app/services/spree/update_check.rb +160 -0
  334. data/app/services/spree/uploads/assign_stores.rb +92 -0
  335. data/app/subscribers/spree/seller_onboarding_subscriber.rb +1 -1
  336. data/app/validators/spree/attachment_content_type_validator.rb +19 -2
  337. data/app/validators/spree/locale_codes_validator.rb +22 -0
  338. data/app/views/layouts/spree/base_mailer.html.erb +2 -43
  339. data/app/views/layouts/spree/base_mailer.liquid +79 -0
  340. data/app/views/spree/admin_user_mailer/password_reset_email.liquid +14 -0
  341. data/app/views/spree/export_mailer/export_done.liquid +12 -0
  342. data/app/views/spree/import_mailer/import_done.liquid +15 -0
  343. data/app/views/spree/invitation_mailer/invitation_accepted.liquid +9 -0
  344. data/app/views/spree/invitation_mailer/invitation_email.liquid +13 -0
  345. data/app/views/spree/seller_user_mailer/password_reset_email.liquid +14 -0
  346. data/app/views/spree/shared/_mailer_button.html.erb +4 -5
  347. data/app/views/spree/shared/_mailer_hero.html.erb +6 -5
  348. data/app/views/spree/shared/_summary_row.liquid +8 -0
  349. data/app/views/spree/webhook_mailer/endpoint_disabled.liquid +21 -0
  350. data/app/workflows/spree/carts/add_item.rb +4 -4
  351. data/app/workflows/spree/carts/complete.rb +13 -3
  352. data/app/workflows/spree/carts/merge.rb +1 -1
  353. data/app/workflows/spree/carts/recalculate_totals.rb +5 -0
  354. data/app/workflows/spree/carts/upsert_items.rb +18 -9
  355. data/app/workflows/spree/claims/approve.rb +5 -22
  356. data/app/workflows/spree/claims/cancel.rb +5 -21
  357. data/app/workflows/spree/claims/create.rb +15 -0
  358. data/app/workflows/spree/claims/deny.rb +7 -0
  359. data/app/workflows/spree/claims/resolve.rb +34 -31
  360. data/app/workflows/spree/customers/anonymize.rb +3 -4
  361. data/app/workflows/spree/customers/create.rb +1 -1
  362. data/app/workflows/spree/data_requests/fulfill.rb +2 -2
  363. data/app/workflows/spree/deliveries/update_tracking.rb +1 -1
  364. data/app/workflows/spree/email_templates/discard_draft.rb +20 -0
  365. data/app/workflows/spree/email_templates/publish.rb +70 -0
  366. data/app/workflows/spree/email_templates/restore_revision.rb +33 -0
  367. data/app/workflows/spree/email_templates/revert.rb +29 -0
  368. data/app/workflows/spree/email_templates/save_draft.rb +85 -0
  369. data/app/workflows/spree/exchanges/approve.rb +5 -22
  370. data/app/workflows/spree/exchanges/cancel.rb +5 -21
  371. data/app/workflows/spree/exchanges/create.rb +6 -0
  372. data/app/workflows/spree/exchanges/fulfill.rb +75 -51
  373. data/app/workflows/spree/exchanges/receive.rb +6 -65
  374. data/app/workflows/spree/fulfillments/cancel.rb +1 -1
  375. data/app/workflows/spree/fulfillments/create.rb +53 -49
  376. data/app/workflows/spree/fulfillments/fulfill.rb +23 -27
  377. data/app/workflows/spree/fulfillments/mark_delivered.rb +1 -1
  378. data/app/workflows/spree/fulfillments/replacements.rb +59 -0
  379. data/app/workflows/spree/gift_cards/apply.rb +2 -2
  380. data/app/workflows/spree/orders/add_item.rb +5 -1
  381. data/app/workflows/spree/orders/cancel.rb +3 -3
  382. data/app/workflows/spree/orders/complete.rb +16 -8
  383. data/app/workflows/spree/payments/capture.rb +20 -5
  384. data/app/workflows/spree/payments/process.rb +5 -3
  385. data/app/workflows/spree/post_sale/approval.rb +35 -0
  386. data/app/workflows/spree/post_sale/cancellation.rb +44 -0
  387. data/app/workflows/spree/post_sale/receipt.rb +92 -0
  388. data/app/workflows/spree/price_lists/update.rb +4 -4
  389. data/app/workflows/spree/products/nested_attributes.rb +1 -1
  390. data/app/workflows/spree/purchase_orders/cancel.rb +1 -1
  391. data/app/workflows/spree/purchase_orders/close.rb +3 -31
  392. data/app/workflows/spree/purchase_orders/create.rb +3 -1
  393. data/app/workflows/spree/purchase_orders/mark_draft.rb +2 -2
  394. data/app/workflows/spree/purchase_orders/mark_ordered.rb +2 -2
  395. data/app/workflows/spree/purchase_orders/receive.rb +1 -1
  396. data/app/workflows/spree/purchase_orders/update.rb +5 -34
  397. data/app/workflows/spree/receivables/closing_short.rb +46 -0
  398. data/app/workflows/spree/receivables/draft_editing.rb +48 -0
  399. data/app/workflows/spree/refunds/create.rb +5 -2
  400. data/app/workflows/spree/refunds/order_payments.rb +14 -2
  401. data/app/workflows/spree/refunds/tax_credit.rb +67 -0
  402. data/app/workflows/spree/returns/approve.rb +5 -22
  403. data/app/workflows/spree/returns/cancel.rb +5 -22
  404. data/app/workflows/spree/returns/create.rb +8 -0
  405. data/app/workflows/spree/returns/receive.rb +5 -76
  406. data/app/workflows/spree/returns/refund.rb +31 -8
  407. data/app/workflows/spree/seller_requirement_submissions/create.rb +1 -2
  408. data/app/workflows/spree/seller_transfers/reverse.rb +28 -1
  409. data/app/workflows/spree/shipping_labels/purchase.rb +8 -8
  410. data/app/workflows/spree/shipping_labels/record.rb +7 -7
  411. data/app/workflows/spree/shipping_labels/refund.rb +2 -2
  412. data/app/workflows/spree/stock_receipts/recording.rb +4 -4
  413. data/app/workflows/spree/stock_transfers/cancel.rb +2 -2
  414. data/app/workflows/spree/stock_transfers/close.rb +3 -30
  415. data/app/workflows/spree/stock_transfers/create.rb +3 -1
  416. data/app/workflows/spree/stock_transfers/mark_draft.rb +1 -1
  417. data/app/workflows/spree/stock_transfers/mark_in_transit.rb +3 -3
  418. data/app/workflows/spree/stock_transfers/mark_ready.rb +2 -2
  419. data/app/workflows/spree/stock_transfers/receive.rb +1 -1
  420. data/app/workflows/spree/stock_transfers/update.rb +5 -33
  421. data/config/currency_exponents.json +180 -0
  422. data/config/i18n-tasks.yml +32 -18
  423. data/config/initializers/alba.rb +7 -0
  424. data/config/language_names.csv +264 -0
  425. data/config/locales/ar.yml +811 -0
  426. data/config/locales/be.yml +855 -0
  427. data/config/locales/bg.yml +723 -0
  428. data/config/locales/ca.yml +689 -0
  429. data/config/locales/content_locales.rb +9 -0
  430. data/config/locales/cs.yml +855 -0
  431. data/config/locales/da.yml +771 -0
  432. data/config/locales/de-CH.yml +248 -0
  433. data/config/locales/de.yml +835 -0
  434. data/config/locales/el.yml +769 -0
  435. data/config/locales/en.yml +47 -505
  436. data/config/locales/es-CL.yml +301 -0
  437. data/config/locales/es-EC.yml +186 -0
  438. data/config/locales/es-MX.yml +334 -0
  439. data/config/locales/es.yml +831 -0
  440. data/config/locales/et.yml +644 -0
  441. data/config/locales/fa.yml +709 -0
  442. data/config/locales/fi.yml +771 -0
  443. data/config/locales/fr.yml +830 -0
  444. data/config/locales/hu.yml +751 -0
  445. data/config/locales/id.yml +756 -0
  446. data/config/locales/it.yml +833 -0
  447. data/config/locales/ja.yml +726 -0
  448. data/config/locales/km.yml +759 -0
  449. data/config/locales/ko.yml +575 -0
  450. data/config/locales/ku.yml +753 -0
  451. data/config/locales/lt.yml +821 -0
  452. data/config/locales/lv.yml +685 -0
  453. data/config/locales/nb.yml +824 -0
  454. data/config/locales/ne.yml +823 -0
  455. data/config/locales/nl.yml +826 -0
  456. data/config/locales/pl.yml +835 -0
  457. data/config/locales/pt-BR.yml +547 -0
  458. data/config/locales/pt.yml +636 -0
  459. data/config/locales/ro.yml +750 -0
  460. data/config/locales/ru.yml +834 -0
  461. data/config/locales/sk.yml +680 -0
  462. data/config/locales/sl-SI.yml +600 -0
  463. data/config/locales/sv.yml +827 -0
  464. data/config/locales/th.yml +745 -0
  465. data/config/locales/tr.yml +777 -0
  466. data/config/locales/uk.yml +836 -0
  467. data/config/locales/vi.yml +768 -0
  468. data/config/locales/zh-CN.yml +786 -0
  469. data/config/locales/zh-TW.yml +834 -0
  470. data/db/migrate/20260925000001_add_replacement_to_spree_fulfillment_items.rb +5 -0
  471. data/db/migrate/20261001000001_add_post_sale_tax.rb +30 -0
  472. data/db/migrate/20261001000001_convert_preferences_to_json.rb +166 -0
  473. data/db/migrate/20261001000001_create_spree_email_templates.rb +52 -0
  474. data/db/migrate/20261009000001_change_money_columns_to_decimal_19_4.rb +116 -0
  475. data/db/migrate/20261010000001_add_store_id_to_active_storage_blobs.rb +12 -0
  476. data/lib/generators/spree/dummy/dummy_generator.rb +0 -9
  477. data/lib/generators/spree/dummy/templates/rails/test.rb +26 -0
  478. data/lib/spree/checkout/default_requirements.rb +37 -13
  479. data/lib/spree/core/configuration.rb +19 -1
  480. data/lib/spree/core/controller_helpers/store.rb +1 -1
  481. data/lib/spree/core/dependencies.rb +5 -4
  482. data/lib/spree/core/emails/escaped_output.rb +60 -0
  483. data/lib/spree/core/engine.rb +72 -165
  484. data/lib/spree/core/permissions/default_catalog.rb +5 -0
  485. data/lib/spree/core/preferences/invalid_preferences.rb +18 -0
  486. data/lib/spree/core/preferences/json_conversion.rb +186 -0
  487. data/lib/spree/core/preferences/masking.rb +55 -2
  488. data/lib/spree/core/preferences/preferable.rb +343 -103
  489. data/lib/spree/core/preferences/preferable_class_methods.rb +188 -136
  490. data/lib/spree/core/previews/import_preview.rb +10 -0
  491. data/lib/spree/core/ransack_configuration.rb +13 -2
  492. data/lib/spree/core/tax/provider_error.rb +37 -0
  493. data/lib/spree/core/version.rb +1 -1
  494. data/lib/spree/core.rb +91 -373
  495. data/lib/spree/emails/editable_templates.rb +82 -0
  496. data/lib/spree/events/catalog.rb +189 -0
  497. data/lib/spree/events.rb +21 -1
  498. data/lib/spree/hooks.rb +0 -17
  499. data/lib/spree/i18n.rb +32 -15
  500. data/lib/spree/iso_data.rb +7 -0
  501. data/lib/spree/localized_number.rb +6 -0
  502. data/lib/spree/migrations.rb +4 -1
  503. data/lib/spree/money.rb +196 -15
  504. data/lib/spree/reporting/adapters/base.rb +7 -6
  505. data/lib/spree/reporting/adapters/live.rb +6 -6
  506. data/lib/spree/reporting/default_vocabulary.rb +22 -10
  507. data/lib/spree/reporting/hydration.rb +1 -1
  508. data/lib/spree/reporting/query.rb +8 -0
  509. data/lib/spree/reporting/registry.rb +13 -0
  510. data/lib/spree/reporting/schema.rb +10 -10
  511. data/lib/spree/testing_support/editable_email_templates.rb +61 -0
  512. data/lib/spree/testing_support/emails.rb +22 -0
  513. data/lib/spree/testing_support/factories/cart_factory.rb +1 -1
  514. data/lib/spree/testing_support/factories/email_template_factory.rb +28 -0
  515. data/lib/spree/testing_support/factories/order_factory.rb +2 -2
  516. data/lib/spree/testing_support/factories/product_factory.rb +9 -0
  517. data/lib/spree/testing_support/factories/refund_factory.rb +1 -1
  518. data/lib/spree/testing_support/factories/stock_factory.rb +1 -1
  519. data/lib/spree/testing_support/factories/variant_factory.rb +1 -1
  520. data/lib/spree/testing_support/i18n.rb +3 -94
  521. data/lib/spree/testing_support/lifecycle_events.rb +1 -1
  522. data/lib/spree/testing_support/order_walkthrough.rb +1 -1
  523. data/lib/spree/testing_support/preferences.rb +0 -5
  524. data/lib/spree/testing_support/store.rb +9 -1
  525. data/lib/spree/upgrades/5_6_to_6_0/manifest.yml +67 -1
  526. data/lib/spree/uploads.rb +101 -0
  527. data/lib/tasks/categories_and_collections.rake +3 -3
  528. data/lib/tasks/core.rake +6 -4
  529. data/lib/tasks/markets.rake +2 -1
  530. data/lib/tasks/media.rake +3 -3
  531. data/lib/tasks/migrate_users_to_customers.rake +23 -18
  532. data/lib/tasks/money.rake +46 -0
  533. data/lib/tasks/package_types.rake +1 -1
  534. data/lib/tasks/preferences_json.rake +101 -0
  535. data/lib/tasks/seller_sample_data.rake +2 -2
  536. data/lib/tasks/store_settings.rake +13 -6
  537. data/lib/tasks/typed_adjustments_migration.rake +1 -1
  538. data/lib/tasks/uploads.rake +19 -0
  539. data/spec/fixtures/mailer_views/custom_views_probe_mailer/welcome_email.html.erb +4 -0
  540. metadata +219 -46
  541. data/app/jobs/spree/products/touch_categories_job.rb +0 -15
  542. data/app/jobs/spree/products/touch_taxons_job.rb +0 -13
  543. data/app/models/acts_as_taggable_on/tag_decorator.rb +0 -10
  544. data/app/models/concerns/spree/has_image_alt_text.rb +0 -18
  545. data/app/models/spree/base_analytics_event_handler.rb +0 -54
  546. data/app/models/spree/invitations/store.rb +0 -6
  547. data/app/models/spree/preference.rb +0 -14
  548. data/app/models/spree/promotion_handler/page.rb +0 -25
  549. data/app/models/spree/promotion_handler/promotion_duplicator.rb +0 -60
  550. data/app/models/spree/stock/differentiator.rb +0 -45
  551. data/app/presenters/spree/filters/options_presenter.rb +0 -47
  552. data/app/services/spree/carts/empty.rb +0 -42
  553. data/app/services/spree/country_to_timezone.rb +0 -273
  554. data/app/services/spree/payments/create.rb +0 -92
  555. data/app/validators/spree/url_validator.rb +0 -23
  556. data/app/views/active_storage/blobs/_blob.html.erb +0 -14
  557. data/app/views/spree/admin_user_mailer/password_reset_email.html.erb +0 -8
  558. data/app/views/spree/export_mailer/export_done.html.erb +0 -7
  559. data/app/views/spree/import_mailer/import_done.html.erb +0 -12
  560. data/app/views/spree/invitation_mailer/invitation_accepted.html.erb +0 -4
  561. data/app/views/spree/invitation_mailer/invitation_email.html.erb +0 -12
  562. data/app/views/spree/seller_user_mailer/password_reset_email.html.erb +0 -8
  563. data/app/views/spree/shared/_base_mailer_footer.html.erb +0 -19
  564. data/app/views/spree/shared/_base_mailer_header.html.erb +0 -8
  565. data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +0 -399
  566. data/app/views/spree/shared/_mailer_logo.html.erb +0 -41
  567. data/app/views/spree/shared/_purchased_items_styles.html.erb +0 -119
  568. data/app/views/spree/webhook_mailer/endpoint_disabled.html.erb +0 -51
  569. data/app/views/spree/webhook_mailer/endpoint_disabled.text.erb +0 -10
  570. data/app/workflows/spree/fulfillments/purchase_label.rb +0 -40
  571. data/app/workflows/spree/returns/purchase_label.rb +0 -32
  572. data/lib/spree/analytics.rb +0 -11
  573. data/lib/spree/core/preferences/scoped_store.rb +0 -34
  574. data/lib/spree/core/preferences/store.rb +0 -105
  575. data/lib/spree/translation_migrations.rb +0 -52
@@ -0,0 +1,689 @@
1
+ ---
2
+ ca:
3
+ activemodel:
4
+ errors:
5
+ messages:
6
+ blank: no pot estar en blanc
7
+ activerecord:
8
+ attributes:
9
+ spree/address:
10
+ address1: Adreça
11
+ address2: Adreça (continuació)
12
+ city: Ciutat
13
+ company: Empresa
14
+ country: País
15
+ label: Nom de l'adreça
16
+ phone: Telèfon
17
+ state: Estat
18
+ spree/country:
19
+ iso: ISO
20
+ iso3: ISO3
21
+ iso_name: Nomeni ISO
22
+ name: Nom
23
+ numcode: Codi ISO
24
+ spree/credit_card:
25
+ cc_type: Tipus
26
+ month: Mes
27
+ number: Nombre
28
+ verification_value: Codi de verificació
29
+ year: Any
30
+ spree/customer_group:
31
+ description: Descripció
32
+ name: Nom
33
+ spree/gift_card:
34
+ amount_used: Import utilitzat
35
+ expires_at: Caduca el
36
+ spree/import:
37
+ preferred_delimiter: Delimitador
38
+ spree/import_mapping:
39
+ file_column: Columna del fitxer
40
+ schema_field: Camp de l'esquema
41
+ spree/import_row:
42
+ row_number: Número
43
+ spree/inventory_unit:
44
+ state: Província
45
+ spree/invitation:
46
+ inviter: Convidant
47
+ spree/line_item:
48
+ price: Preu
49
+ quantity: Quantitat
50
+ spree/option_type:
51
+ filterable: Filtrable
52
+ kind: Tipus
53
+ spree/option_value:
54
+ color_code: Codi de color
55
+ image: Imatge de mostra
56
+ spree/order:
57
+ checkout_complete: Comanda completada
58
+ completed_at: Completat el
59
+ created_at: Data Comanda
60
+ internal_note: Nota interna
61
+ ip_address: Adreça IP
62
+ item_count: Articles
63
+ number: Nombre
64
+ payment_state: Estat Pagament
65
+ shipment_state: Estat Enviament
66
+ special_instructions: Instruccions especials
67
+ state: Estat
68
+ total: Total
69
+ spree/payment:
70
+ number: Número
71
+ spree/policy:
72
+ body: Cos
73
+ owner: Política per a
74
+ spree/price_list:
75
+ description: Descripció
76
+ ends_at: Finalitza el
77
+ match_policy: Política de coincidència
78
+ name: Nom
79
+ priority: Prioritat
80
+ starts_at: Comença el
81
+ status: Estat
82
+ spree/price_rule:
83
+ priority: Prioritat
84
+ type: Tipus
85
+ spree/product:
86
+ available_on: Disponible en
87
+ cost_currency: Cost Moneda
88
+ cost_price: Preu de cost
89
+ description: Descripció
90
+ discontinue_on: Descatalogar el
91
+ less_than: Menys de
92
+ make_active_at: Activar el
93
+ master_price: Preu principal
94
+ more_than: Més de
95
+ name: Nom
96
+ on_hand: Disponibles
97
+ tax_category: Categoria d'impostos
98
+ spree/promotion:
99
+ advertise: Advertise
100
+ code: Codi
101
+ description: Descripció
102
+ event_name: Event Name
103
+ expires_at: Caduca el
104
+ generate_code: Genera un codi de cupó
105
+ name: Nom
106
+ path: Path
107
+ promotion_category: Categoria de promoció
108
+ starts_at: Comença el
109
+ usage_limit: Límit d'ús
110
+ spree/promotion_category:
111
+ code: Codi
112
+ spree/property:
113
+ name: Nom
114
+ presentation: Presentació
115
+ spree/role:
116
+ name: Nom
117
+ spree/shipment:
118
+ number: Número
119
+ spree/state:
120
+ abbr: Abreviatura
121
+ name: Nom
122
+ spree/store:
123
+ address: Adreça
124
+ contact_phone: Telèfon de contacte
125
+ preferred_digital_asset_authorized_clicks: Límit de clics de descàrrega
126
+ preferred_digital_asset_authorized_days: Límit de dies de descàrrega
127
+ preferred_limit_digital_download_count: Limita el nombre de descàrregues d'enllaços digitals
128
+ preferred_limit_digital_download_days: Limita els dies de descàrrega d'enllaços digitals
129
+ seo_robots: Robots SEO
130
+ storefront_custom_code_body_end: Codi personalitzat abans de tancar l'etiqueta body
131
+ storefront_custom_code_body_start: Codi personalitzat després d'obrir l'etiqueta body
132
+ storefront_custom_code_head: Codi personalitzat a la capçalera de la pàgina
133
+ spree/store_credit:
134
+ amount_used: Import utilitzat
135
+ spree/tax_category:
136
+ description: Descripció
137
+ name: Nom
138
+ spree/tax_rate:
139
+ amount: Taxa
140
+ included_in_price: Included in Price
141
+ show_rate_in_label: Show rate in label
142
+ spree/taxon:
143
+ name: Nom
144
+ permalink: Enllaç permanent
145
+ position: Posició
146
+ sort_order: Ordre de classificació
147
+ spree/taxonomy:
148
+ name: Nom
149
+ spree/user:
150
+ avatar: Avatar
151
+ email: Email
152
+ password: Password
153
+ password_confirmation: Password Confirmation
154
+ spree/variant:
155
+ cost_currency: Cost Moneda
156
+ cost_price: Preu de cost
157
+ depth: Profunditat
158
+ height: Altura
159
+ price: Preu
160
+ sku: Codi de producte
161
+ weight: Pes
162
+ width: Ample
163
+ spree/zone:
164
+ description: Descripció
165
+ name: Nom
166
+ user:
167
+ current_sign_in: Sessió actual iniciada el
168
+ last_sign_in: Última sessió iniciada el
169
+ sign_in_count: Nombre d'inicis de sessió
170
+ errors:
171
+ messages:
172
+ blank: no pot estar en blanc
173
+ models:
174
+ spree/allowed_origin:
175
+ attributes:
176
+ origin:
177
+ must_be_origin_only: ha de ser un origen (esquema i amfitrió) sense ruta, consulta ni fragment
178
+ spree/gift_card:
179
+ attributes:
180
+ base:
181
+ cannot_destroy_used_gift_card: No es pot eliminar una targeta de regal utilitzada
182
+ spree/import:
183
+ attributes:
184
+ attachment:
185
+ content_type: té un tipus de contingut no permès
186
+ type:
187
+ inclusion: no està inclòs a la llista de tipus permesos
188
+ spree/market:
189
+ attributes:
190
+ base:
191
+ cannot_destroy_default_market: No es pot eliminar el mercat per defecte.
192
+ cannot_destroy_last_market: No es pot eliminar l'únic mercat.
193
+ spree/market_country:
194
+ attributes:
195
+ country:
196
+ already_in_market: ja està assignat a un altre mercat d'aquesta botiga
197
+ not_in_shipping_zone: no està cobert per cap zona d'enviament. Configureu primer una zona d'enviament.
198
+ spree/payment:
199
+ attributes:
200
+ amount:
201
+ greater_than_max_amount: és superior a l'import màxim permès de %{max_amount}
202
+ spree/price_list:
203
+ attributes:
204
+ ends_at:
205
+ must_be_after_starts_at: ha de ser posterior a la data d'inici
206
+ spree/product:
207
+ attributes:
208
+ base:
209
+ cannot_destroy_if_attached_to_line_items: No es poden eliminar productes que s'han afegit a comandes realitzades. En aquests casos, descatalogueu-los.
210
+ discontinue_on:
211
+ invalid_date_range: ha de ser posterior a la data de disponibilitat
212
+ spree/product_publication:
213
+ attributes:
214
+ unpublished_at:
215
+ must_be_after_published_at: ha de ser posterior a la data de publicació
216
+ spree/promotion:
217
+ attributes:
218
+ expires_at:
219
+ invalid_date_range: ha de ser posterior a la data d'inici
220
+ spree/store:
221
+ attributes:
222
+ base:
223
+ cannot_destroy_only_store: No es pot eliminar l'única botiga.
224
+ spree/store_credit:
225
+ attributes:
226
+ amount_authorized:
227
+ exceeds_total_credits: Supera el total de crèdits.
228
+ amount_used:
229
+ cannot_be_greater_than_amount: No pot ser superior a l'import.
230
+ greater_than_zero_restrict_delete: és superior a zero. No es pot eliminar el crèdit de botiga.
231
+ spree/user:
232
+ attributes:
233
+ bill_address_id:
234
+ belongs_to_other_user: pertany a un altre usuari
235
+ deprecated_in_completed_order: obsolet en una comanda completada
236
+ ship_address_id:
237
+ belongs_to_other_user: pertany a un altre usuari
238
+ deprecated_in_completed_order: obsolet en una comanda completada
239
+ spree/variant:
240
+ attributes:
241
+ base:
242
+ cannot_destroy_if_attached_to_line_items: No es poden eliminar variants que s'han afegit a comandes realitzades. En aquests casos, descatalogueu-les.
243
+ spree/webhook_endpoint:
244
+ attributes:
245
+ url:
246
+ internal_address_not_allowed: no ha d'apuntar a una adreça de xarxa interna o privada
247
+ models:
248
+ spree/address:
249
+ one: Adreça
250
+ other: Adreces
251
+ spree/classification:
252
+ one: Classificació
253
+ other: Classificacions
254
+ spree/country:
255
+ one: País
256
+ other: Països
257
+ spree/credit_card:
258
+ one: Targeta de crèdit
259
+ other: Targetes de crèdit
260
+ spree/customer_group:
261
+ one: Grup de clients
262
+ other: Grups de clients
263
+ spree/customer_group_user:
264
+ one: Usuari del grup de clients
265
+ other: Usuaris del grup de clients
266
+ spree/export:
267
+ one: Exportació
268
+ other: Exportacions
269
+ spree/integration:
270
+ one: Integració
271
+ other: Integracions
272
+ spree/inventory_unit:
273
+ one: Unitat en inventari
274
+ other: Unitats en inventari
275
+ spree/line_item:
276
+ one: Article
277
+ other: Articles
278
+ spree/option_type:
279
+ one: Tipus d'opció
280
+ other: Tipus d'opció
281
+ spree/option_value:
282
+ one: Valor d'opció
283
+ other: Valors d'opció
284
+ spree/order:
285
+ one: Comanda
286
+ other: Comandes
287
+ spree/payment:
288
+ one: Pagament
289
+ other: Pagaments
290
+ spree/payment_method:
291
+ one: Mètode de pagament
292
+ other: Mètodes de pagament
293
+ spree/price:
294
+ one: Preu
295
+ other: Preus
296
+ spree/price_list:
297
+ one: Llista de preus
298
+ other: Llistes de preus
299
+ spree/price_rule:
300
+ one: Regla de preu
301
+ other: Regles de preu
302
+ spree/product:
303
+ one: Producte
304
+ other: Productes
305
+ spree/promotion:
306
+ one: Promoció
307
+ other: Promocions
308
+ spree/promotion_category:
309
+ one: Categoria de promoció
310
+ other: Categories de promoció
311
+ spree/property:
312
+ one: Propietat
313
+ other: Propietats
314
+ spree/refund_reason:
315
+ one: Motiu de reemborsament
316
+ other: Motius de reemborsament
317
+ spree/role:
318
+ one: Funció
319
+ other: Funcions
320
+ spree/shipment:
321
+ one: Enviament
322
+ other: Enviaments
323
+ spree/shipping_method:
324
+ one: Mètode d'enviament
325
+ other: Mètodes d'enviament
326
+ spree/state:
327
+ one: Estat
328
+ other: Estats
329
+ spree/stock_location:
330
+ one: Ubicació d'estoc
331
+ other: Ubicacions d'estoc
332
+ spree/stock_movement:
333
+ one: Moviment d'estoc
334
+ other: Moviments d'estoc
335
+ spree/stock_transfer:
336
+ one: Transferència d'estoc
337
+ other: Transferències d'estoc
338
+ spree/store:
339
+ one: Botiga
340
+ other: Botigues
341
+ spree/store_credit:
342
+ one: Crèdit de botiga
343
+ other: Crèdits de botiga
344
+ spree/tax_category:
345
+ one: Categoria d'impostos
346
+ other: Categories d'impostos
347
+ spree/tax_rate:
348
+ one: Taxa d'impostos
349
+ other: Taxes d'impostos
350
+ spree/taxon:
351
+ one: Categoria
352
+ other: Categories
353
+ spree/taxonomy:
354
+ one: Propietat
355
+ other: Propietats
356
+ spree/user:
357
+ one: Usuari
358
+ other: Usuaris
359
+ spree/variant:
360
+ one:
361
+ other:
362
+ spree/zone:
363
+ one: Zona
364
+ other:
365
+ errors:
366
+ messages:
367
+ not_found: no trobat
368
+ not_saved:
369
+ one: '1 error ha impedit desar aquest %{resource}:'
370
+ other: "%{count} errors han impedit desar aquest %{resource}:"
371
+ number:
372
+ percentage:
373
+ format:
374
+ precision: 1
375
+ spree:
376
+ accepts_email_marketing: Accepta màrqueting per correu electrònic
377
+ account: Compte
378
+ active: Actiu
379
+ address: Adreça
380
+ address1: Adreça
381
+ address2: Adreça(cont.)
382
+ adjustment: Ajust
383
+ adjustment_labels:
384
+ tax_rates:
385
+ excluding_tax: "%{name}%{amount}"
386
+ including_tax: "%{name}%{amount} (Inclòs en el preu)"
387
+ adjustments_deleted: Ajustaments eliminats
388
+ all: Tots
389
+ amount: Quantia
390
+ api_key_no_current_key: Cap clau API ha autenticat aquesta sol·licitud
391
+ api_key_scopes_immutable: no es pot canviar després de crear la clau; creeu una clau nova amb els abasts que necessiteu i revoqueu aquesta
392
+ availability: disponibilitat
393
+ bill_address: Adreça de facturació
394
+ billing_address: Adreça de facturació
395
+ calculator: Calculadora
396
+ canceled: Cancel·lat
397
+ cannot_be_destroyed: No es pot eliminar la comanda.
398
+ capture: captura
399
+ cart: Carret
400
+ cart_already_updated: La cistella ja s'ha actualitzat.
401
+ cart_line_item:
402
+ delivery_unavailable: "%{li_name} no es pot enviar a l'adreça seleccionada"
403
+ discontinued: "%{li_name} s'ha eliminat perquè s'ha descatalogat"
404
+ out_of_stock: "%{li_name} s'ha eliminat perquè s'ha esgotat"
405
+ categories: Categories
406
+ category: Categoria
407
+ channel: Canal de venda
408
+ channels: Canals de venda
409
+ checkout: Pagar
410
+ checkout_requirements:
411
+ email_required: L'adreça de correu electrònic és obligatòria
412
+ line_items_required: Afegiu com a mínim un article a la cistella
413
+ payment_required: Afegiu un mètode de pagament
414
+ ship_address_required: L'adreça d'enviament és obligatòria
415
+ city: Ciutat
416
+ color_code: Codi de color
417
+ compare_at_amount: Import de comparació
418
+ compare_at_price: Preu de comparació
419
+ complete: complet
420
+ confirm: Confirmar
421
+ cost_price: Preu del Cost
422
+ country: País
423
+ coupon_code: Codi de cupó
424
+ coupon_code_used: El codi de cupó que heu introduït ja s'ha utilitzat. Torneu-ho a provar.
425
+ credit_card: Targeta de crèdit
426
+ currency_not_supported_by_store: no és compatible amb aquesta botiga
427
+ customer: Client
428
+ customers: Clients
429
+ default: Per omissió
430
+ default_stock_location_name: Ubicació de la botiga
431
+ default_wishlist_name: Llista de desitjos
432
+ delivery: Enviament
433
+ depth: Profunditat
434
+ description: Descripció
435
+ destroy: Eliminar
436
+ digital:
437
+ digital_delivery: Lliurament digital
438
+ digital_assets: Recursos digitals
439
+ discontinued: Descatalogat
440
+ discontinued_variants_present: Alguns articles d'aquesta comanda tenen productes que ja no estan disponibles.
441
+ display_delivery_range: Lliurament en %{delivery_range} dies laborables
442
+ draft: Esborrany
443
+ eligibility_errors:
444
+ messages:
445
+ no_matching_channel: Aquest codi de cupó no és vàlid per a aquest canal de venda.
446
+ no_matching_market: Aquest codi de cupó no és vàlid al teu mercat.
447
+ wrong_country: Aquest codi de cupó no és vàlid al vostre país
448
+ email: Correu Electrònic
449
+ error: error
450
+ error_user_destroy_with_orders: No es pot eliminar un usuari associat a comandes
451
+ error_user_does_not_have_any_store_credits: L'usuari no té cap crèdit de botiga disponible
452
+ errors:
453
+ messages:
454
+ cannot_delete_default_channel: No es pot eliminar el canal per defecte. Promociona primer un altre canal com a predeterminat.
455
+ channel_store_mismatch: ha de pertànyer a la mateixa botiga
456
+ invalid_order_routing_rule: no és una regla d'encaminament de comandes registrada
457
+ invalid_order_routing_strategy: no és una estratègia d'encaminament de comandes registrada
458
+ store_association_can_not_be_changed: L'associació de botiga no es pot canviar
459
+ store_is_already_set: La botiga ja està definida
460
+ expired: Caducat
461
+ export_mailer:
462
+ export_done:
463
+ message: Bona feina, la vostra exportació està a punt! Utilitzeu l'enllaç de sota per descarregar-la.
464
+ subject: La vostra exportació %{export_number} s'ha processat correctament!
465
+ greeting: Hola %{user_name},
466
+ field: Camp
467
+ first_name: Nom
468
+ flat_percent: Percentatge simple
469
+ flat_rate_per_order: Quantitat fixa (per comanda)
470
+ flexible_rate: Quantitat variable
471
+ free: Gratuït
472
+ gateway: mitjà
473
+ gateway_error: Error en el mitjà
474
+ gift_card: Targeta de regal
475
+ gift_card_already_redeemed: La targeta de regal ja s'ha bestreta.
476
+ gift_card_applied: La targeta de regal s'ha aplicat correctament a la vostra comanda!
477
+ gift_card_customer_not_logged_in: La targeta de regal no es pot aplicar amb un usuari convidat.
478
+ gift_card_expired: La targeta de regal ha caducat.
479
+ gift_card_mismatched_currency: La targeta de regal no es pot aplicar amb la divisa actual.
480
+ gift_card_mismatched_customer: Aquesta targeta de regal està associada a un altre usuari.
481
+ gift_card_not_found: No s'ha trobat la targeta de regal.
482
+ gift_card_removed: La targeta de regal s'ha eliminat correctament de la vostra comanda
483
+ gift_card_using_store_credit_error: No podeu aplicar la targeta de regal després d'haver aplicat el crèdit de botiga.
484
+ height: Altura
485
+ i18n:
486
+ this_file_language: Català (CA)
487
+ idempotency_key_reused: Aquesta Idempotency-Key ja s'ha utilitzat amb paràmetres de sol·licitud diferents.
488
+ image: Imatge
489
+ import: Importa
490
+ in_stock: En estoc
491
+ internal_note: Nota interna
492
+ inventory: Inventari
493
+ invitation_mailer:
494
+ greeting: Hola %{user_name},
495
+ invitation_accepted:
496
+ body: "%{invitee_name} ha acceptat la vostra invitació per unir-se a %{resource_name}"
497
+ subject: "%{invitee_name} ha acceptat la vostra invitació per unir-se a %{resource_name}"
498
+ invitation_email:
499
+ body: "%{inviter_name} us ha convidat a unir-vos a %{resource_name}"
500
+ link_description: 'Per acceptar aquesta invitació, feu clic a l''enllaç de sota:'
501
+ subject: Invitació per unir-se a %{resource_name}
502
+ iso: ISO Alpha-2
503
+ item: article
504
+ key: Clau
505
+ kind: Tipus
506
+ label: Etiqueta
507
+ last_name: Cognoms
508
+ line_item: Línia d'article
509
+ line_items: Línies d'article
510
+ link: Enllaç
511
+ locale: Configuració regional
512
+ locale_not_supported_by_store: no és compatible amb aquesta botiga
513
+ manual: Manual
514
+ market: Mercat
515
+ me_no_current_user: Cap usuari administrador ha autenticat aquesta sol·licitud
516
+ media: Mitjans
517
+ meta_description: Fiqui descripció
518
+ meta_keywords: Fiqui paraules clau
519
+ metadata: Metadades
520
+ min_quantity: Quantitat mínima
521
+ month: Mes
522
+ name: Nom
523
+ new_variant: Nova Variant
524
+ no_cc_type: N/D
525
+ none: Cap
526
+ number: Número
527
+ on_hand: Disponible
528
+ only_active_products_can_be_added_to_cart: Els productes en esborrany i arxivats no es poden afegir a la cistella; marqueu primer el producte com a actiu.
529
+ open: Obert
530
+ option_name: Nom de l'opció
531
+ option_type: Tipus d'opció
532
+ option_value: Valor de l'opció
533
+ options: Opcions
534
+ or: o
535
+ order: Demanat
536
+ order_routing:
537
+ strategies:
538
+ legacy: Antic
539
+ rules: Regles (ordenades)
540
+ order_summary: Resum de comanda
541
+ orders: Demanats
542
+ out_of_stock: Sense estoc
543
+ password: Contrasenya
544
+ path: Ruta
545
+ payment: Pagament
546
+ payment_method: Mètode de pagament
547
+ payment_methods: Mètodes de pagament
548
+ payment_processing_failed: El pagament no ha pogut ser processat, per favor, revisi les dades proporcionades.
549
+ payment_source: Font de pagament
550
+ phone: Telèfon
551
+ price: Preu
552
+ price_rules:
553
+ channel_rule:
554
+ description: Aplica preus en funció del canal de venda
555
+ customer_group_rule:
556
+ description: Aplica preus a grups de clients específics
557
+ prices: Preus
558
+ privacy_policy: Política de privadesa
559
+ processing: S'està processant
560
+ product: Producte
561
+ product_translations: Traduccions del producte
562
+ products: Productes
563
+ products_cannot_be_shipped: De moment no podem enviar %{product_names} a la vostra ubicació actual. Canvieu la vostra adreça d'enviament o elimineu %{product_names} de la vostra cistella.
564
+ promotion: Promoció
565
+ promotion_already_used: No podeu eliminar una promoció que ja s'ha aplicat
566
+ promotion_label: Promoció (%{name})
567
+ promotion_rule_types:
568
+ category:
569
+ description: La comanda inclou productes de categories especificades
570
+ name: Categories
571
+ channel:
572
+ description: Limita a les comandes fetes a través dels canals especificats
573
+ name: Canal(s)
574
+ country:
575
+ description: Limita a comandes amb adreça d'enviament en un país específic
576
+ name: País
577
+ currency:
578
+ description: Limita a comandes en una divisa específica
579
+ name: Divisa
580
+ customer:
581
+ description: Disponible només per als clients especificats
582
+ name: Clients
583
+ customer_group:
584
+ description: Disponible només per a clients dels grups de clients especificats
585
+ name: Grup(s) de clients
586
+ customer_logged_in:
587
+ description: Disponible només per a clients amb la sessió iniciada
588
+ name: Només clients amb la sessió iniciada
589
+ first_order:
590
+ description: Ha de ser la primera comanda del client
591
+ name: Primera comanda
592
+ item_total:
593
+ description: Total de la comanda coincideix amb els següents criteris
594
+ name: Total d'elements
595
+ market:
596
+ description: Limita a les comandes fetes als mercats especificats
597
+ name: Mercat(s)
598
+ product:
599
+ description: La comanda inclou els següents productes
600
+ name: Productes
601
+ promotions: Promocions
602
+ quantity: Quantitat
603
+ query: Consulta
604
+ reason: Raó
605
+ received: Rebut
606
+ refund: Retornar
607
+ refund_amount: Import del reemborsament
608
+ registration: Registre
609
+ remove: Eliminar
610
+ remove_gift_card_on_completed_order_error: No podeu eliminar la targeta de regal després de fer la comanda
611
+ resellable: Revendible
612
+ resend: Tornar a enviar
613
+ response_code: Codi de resposta
614
+ return: tornar
615
+ returned: va tornar
616
+ returns_policy: Política de devolucions
617
+ row: Fila
618
+ rules: Regles
619
+ scope: Scope
620
+ selected_quantity_not_available: seleccionat de %{item} no està disponible.
621
+ ship: enviar
622
+ ship_address: adreça d'enviament
623
+ shipment: Enviament
624
+ shipped: Enviat
625
+ shipping: Enviament
626
+ shipping_address: Adreça d'enviament
627
+ shipping_policy: Política d'enviament
628
+ shipping_rates:
629
+ display_price:
630
+ excluding_tax: "%{price} (+ %{tax_amount} %{tax_rate_name})"
631
+ including_tax: "%{price} (incl. %{tax_amount} %{tax_rate_name})"
632
+ sku: Codi
633
+ source: Font
634
+ status: Estat
635
+ stock_transfer:
636
+ errors:
637
+ must_have_variant: Heu d'afegir com a mínim una variant
638
+ same_location: no pot ser la mateixa que la ubicació de destinació
639
+ variants_unavailable: Algunes variants no estan disponibles a %{stock}
640
+ store: Tenda
641
+ store_credit:
642
+ allocated: Afegit
643
+ authorized: Autoritzat
644
+ captured: Utilitzat
645
+ credit: Crèdit
646
+ eligible: Elegible
647
+ store_credit_name: Crèdit de botiga
648
+ store_credit_payment_method:
649
+ currency_mismatch: La divisa del crèdit de botiga no coincideix amb la divisa de la comanda
650
+ insufficient_authorized_amount: No es pot capturar més de l'import autoritzat
651
+ insufficient_funds: L'import restant del crèdit de botiga no és suficient
652
+ successful_action: "%{action} de crèdit de botiga correcte"
653
+ unable_to_credit: 'No s''ha pogut acreditar el codi: %{auth_code}'
654
+ unable_to_find: No s'ha pogut trobar el crèdit de botiga
655
+ unable_to_find_for_action: 'No s''ha pogut trobar el crèdit de botiga per al codi d''autorització: %{auth_code} per a l''acció: %{action}'
656
+ unable_to_void: 'No s''ha pogut anul·lar el codi: %{auth_code}'
657
+ tags: Etiquetes
658
+ tax: Imposats
659
+ tax_category: Categoria fiscal
660
+ terms_of_service: Condicions del servei
661
+ total: Total
662
+ tracking: Seguiment
663
+ type: Tipus
664
+ unable_to_connect_to_gateway: No ha estat possible connectar-se a la passarel·la.
665
+ updated_at: Actualitzat el
666
+ url: URL
667
+ user: Usuari
668
+ validation:
669
+ must_be_int: ha de ser un sencer
670
+ value: valor
671
+ variant: Variant
672
+ variants: Variants
673
+ verified: Verificat
674
+ void: Buit
675
+ webhook_mailer:
676
+ endpoint_disabled:
677
+ disabled_at_label: Desactivat el
678
+ heading: Punt de connexió de webhook desactivat
679
+ instructions: Comproveu l'URL del punt de connexió i el servei, i torneu-lo a activar a Configuració → Desenvolupadors → Webhooks.
680
+ message: El punt de connexió de webhook "%{endpoint_name}" s'ha desactivat automàticament després de fallades de lliurament repetides.
681
+ name_label: Nom
682
+ reason_label: Motiu
683
+ subject: 'Punt de connexió de webhook desactivat: %{endpoint_name}'
684
+ url_label: URL
685
+ weight: Pes
686
+ weight_unit: Unitat de pes
687
+ width: Ample
688
+ year: Any
689
+ zip: Codi postal
@@ -0,0 +1,9 @@
1
+ # A store's content locales are the codes Spree::Locales::ALL lists,
2
+ # independent of the languages anything has translation files for. An API
3
+ # request sets I18n.locale (and so Mobility's) to its content locale, and both
4
+ # refuse a locale I18n does not know, so this registers every listed code:
5
+ # content can be stored and read in, say, Yoruba, while messages in it fall
6
+ # back along the i18n fallback chain. The backend ignores a locale with no
7
+ # keys at all, hence the one marker key. An app that limits
8
+ # `config.i18n.available_locales` keeps its own list.
9
+ Spree::Locales::ALL.to_h { |code| [code.to_sym, { spree_content_locale: true }] }