spree_core 6.0.0.beta4 → 6.0.0.rc1

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 (495) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  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/seller_payouts/sweep_seller_job.rb +2 -0
  10. data/app/mailers/spree/admin_user_mailer.rb +4 -19
  11. data/app/mailers/spree/base_mailer.rb +96 -13
  12. data/app/mailers/spree/email_template_mailer.rb +27 -0
  13. data/app/mailers/spree/export_mailer.rb +3 -4
  14. data/app/mailers/spree/import_mailer.rb +3 -4
  15. data/app/mailers/spree/invitation_mailer.rb +24 -7
  16. data/app/mailers/spree/seller_user_mailer.rb +4 -16
  17. data/app/mailers/spree/webhook_mailer.rb +2 -2
  18. data/app/models/concerns/spree/acted_by.rb +1 -1
  19. data/app/models/concerns/spree/admin_user_methods.rb +13 -1
  20. data/app/models/concerns/spree/api_typed.rb +91 -0
  21. data/app/models/concerns/spree/calculator/tiers.rb +76 -0
  22. data/app/models/concerns/spree/customer_methods.rb +15 -14
  23. data/app/models/concerns/spree/email_template_identity.rb +52 -0
  24. data/app/models/concerns/spree/parameterizable_name.rb +2 -0
  25. data/app/models/concerns/spree/payment_session_transitions.rb +8 -2
  26. data/app/models/concerns/spree/post_sale/taxation.rb +54 -0
  27. data/app/models/concerns/spree/post_sale/taxed_line.rb +51 -0
  28. data/app/models/concerns/spree/preference_schema.rb +4 -12
  29. data/app/models/concerns/spree/product_scopes.rb +11 -1
  30. data/app/models/concerns/spree/provider_listing.rb +41 -0
  31. data/app/models/concerns/spree/publishable.rb +82 -14
  32. data/app/models/concerns/spree/purchase/addresses.rb +23 -10
  33. data/app/models/concerns/spree/purchase/currency.rb +1 -1
  34. data/app/models/concerns/spree/purchase/deprecated_aliases.rb +87 -0
  35. data/app/models/concerns/spree/purchase/gift_cards.rb +10 -4
  36. data/app/models/concerns/spree/purchase/locale.rb +1 -1
  37. data/app/models/concerns/spree/purchase/payment_processing.rb +7 -3
  38. data/app/models/concerns/spree/purchase/purchase_order.rb +2 -2
  39. data/app/models/concerns/spree/purchase/totals.rb +49 -1
  40. data/app/models/concerns/spree/receivable.rb +1 -1
  41. data/app/models/concerns/spree/searchable.rb +0 -4
  42. data/app/models/concerns/spree/secret_preferences.rb +59 -0
  43. data/app/models/concerns/spree/single_store_resource.rb +1 -1
  44. data/app/models/concerns/spree/stores/email_branding.rb +31 -0
  45. data/app/models/concerns/spree/type_labels.rb +38 -0
  46. data/app/models/concerns/spree/typed_adjustment_line.rb +1 -1
  47. data/app/models/concerns/spree/typed_associations.rb +6 -0
  48. data/app/models/spree/address.rb +11 -1
  49. data/app/models/spree/adjusters/promotion.rb +1 -15
  50. data/app/models/spree/allowed_origin.rb +0 -1
  51. data/app/models/spree/api_key.rb +5 -6
  52. data/app/models/spree/authentication/strategies/oidc_strategy.rb +5 -5
  53. data/app/models/spree/base.rb +70 -22
  54. data/app/models/spree/calculator/flat_percent_item_total.rb +1 -3
  55. data/app/models/spree/calculator/flat_rate.rb +1 -3
  56. data/app/models/spree/calculator/flexi_rate.rb +1 -3
  57. data/app/models/spree/calculator/percent_on_line_item.rb +1 -1
  58. data/app/models/spree/calculator/price_sack.rb +1 -3
  59. data/app/models/spree/calculator/shipping/digital_delivery.rb +1 -3
  60. data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +1 -3
  61. data/app/models/spree/calculator/shipping/flat_rate.rb +1 -3
  62. data/app/models/spree/calculator/shipping/flexi_rate.rb +1 -3
  63. data/app/models/spree/calculator/shipping/per_item.rb +1 -3
  64. data/app/models/spree/calculator/shipping/price_sack.rb +1 -3
  65. data/app/models/spree/calculator/tiered_flat_rate.rb +6 -23
  66. data/app/models/spree/calculator/tiered_percent.rb +7 -25
  67. data/app/models/spree/cart.rb +78 -18
  68. data/app/models/spree/channel/gating.rb +1 -1
  69. data/app/models/spree/channel.rb +4 -4
  70. data/app/models/spree/claim.rb +21 -1
  71. data/app/models/spree/claim_line_item.rb +41 -6
  72. data/app/models/spree/collection.rb +0 -1
  73. data/app/models/spree/collection_rule.rb +5 -21
  74. data/app/models/spree/commission_line.rb +1 -1
  75. data/app/models/spree/commission_rate.rb +2 -3
  76. data/app/models/spree/commission_rate_value.rb +1 -1
  77. data/app/models/spree/commission_rule.rb +4 -11
  78. data/app/models/spree/commission_rules/product_rule.rb +1 -1
  79. data/app/models/spree/company_invitation.rb +1 -0
  80. data/app/models/spree/consent_record.rb +0 -1
  81. data/app/models/spree/credit_card.rb +1 -1
  82. data/app/models/spree/current.rb +23 -0
  83. data/app/models/spree/custom_field.rb +2 -2
  84. data/app/models/spree/custom_field_definition.rb +9 -23
  85. data/app/models/spree/custom_fields/boolean.rb +1 -1
  86. data/app/models/spree/custom_fields/json.rb +1 -1
  87. data/app/models/spree/data_feed/google.rb +0 -2
  88. data/app/models/spree/data_request.rb +1 -1
  89. data/app/models/spree/delivery_method.rb +30 -13
  90. data/app/models/spree/delivery_method_rule.rb +4 -11
  91. data/app/models/spree/delivery_rate.rb +4 -5
  92. data/app/models/spree/delivery_rate_provider/base.rb +1 -0
  93. data/app/models/spree/delivery_zone.rb +0 -1
  94. data/app/models/spree/delivery_zone_member.rb +4 -4
  95. data/app/models/spree/digital_asset.rb +7 -0
  96. data/app/models/spree/digital_asset_provider/base.rb +2 -0
  97. data/app/models/spree/digital_link.rb +2 -5
  98. data/app/models/spree/discount.rb +1 -1
  99. data/app/models/spree/email_template.rb +25 -0
  100. data/app/models/spree/email_template_draft.rb +13 -0
  101. data/app/models/spree/email_template_revision.rb +17 -0
  102. data/app/models/spree/email_templates/entry.rb +118 -0
  103. data/app/models/spree/email_templates/sample_record.rb +16 -0
  104. data/app/models/spree/emails/branding.rb +80 -0
  105. data/app/models/spree/exchange.rb +15 -1
  106. data/app/models/spree/exchange_line_item.rb +121 -5
  107. data/app/models/spree/export.rb +0 -1
  108. data/app/models/spree/exports/products.rb +10 -1
  109. data/app/models/spree/exports/report.rb +1 -1
  110. data/app/models/spree/fee.rb +4 -2
  111. data/app/models/spree/fulfillment.rb +53 -27
  112. data/app/models/spree/fulfillment_changer.rb +2 -2
  113. data/app/models/spree/fulfillment_item.rb +0 -4
  114. data/app/models/spree/fulfillment_provider/base.rb +1 -0
  115. data/app/models/spree/gateway/bogus.rb +4 -0
  116. data/app/models/spree/gateway/custom_payment_source_method.rb +5 -0
  117. data/app/models/spree/gateway.rb +5 -1
  118. data/app/models/spree/gift_card.rb +12 -1
  119. data/app/models/spree/gift_card_batch.rb +0 -1
  120. data/app/models/spree/import.rb +2 -7
  121. data/app/models/spree/import_mapping.rb +1 -2
  122. data/app/models/spree/import_row.rb +2 -2
  123. data/app/models/spree/import_schemas/products.rb +1 -0
  124. data/app/models/spree/integration.rb +8 -18
  125. data/app/models/spree/invitation.rb +5 -5
  126. data/app/models/spree/line_item.rb +13 -2
  127. data/app/models/spree/locale.rb +11 -8
  128. data/app/models/spree/market.rb +1 -0
  129. data/app/models/spree/newsletter_subscriber.rb +3 -0
  130. data/app/models/spree/order.rb +56 -138
  131. data/app/models/spree/order_group.rb +11 -2
  132. data/app/models/spree/order_inventory.rb +10 -5
  133. data/app/models/spree/order_promotion.rb +1 -1
  134. data/app/models/spree/order_routing/has_strategy_preference.rb +1 -1
  135. data/app/models/spree/order_routing/strategy/base.rb +4 -2
  136. data/app/models/spree/order_routing/strategy/rules.rb +1 -1
  137. data/app/models/spree/order_routing_rule.rb +6 -22
  138. data/app/models/spree/package_type.rb +1 -2
  139. data/app/models/spree/payment/gateway_options.rb +14 -52
  140. data/app/models/spree/payment/processing.rb +2 -4
  141. data/app/models/spree/payment.rb +20 -5
  142. data/app/models/spree/payment_method/session_instrumentation.rb +1 -0
  143. data/app/models/spree/payment_method/store_credit.rb +4 -4
  144. data/app/models/spree/payment_method.rb +36 -4
  145. data/app/models/spree/payment_session.rb +5 -1
  146. data/app/models/spree/payment_setup_session.rb +1 -0
  147. data/app/models/spree/payout_provider/base.rb +3 -1
  148. data/app/models/spree/pickup_point_provider/base.rb +2 -0
  149. data/app/models/spree/price_list.rb +1 -2
  150. data/app/models/spree/price_rules/channel_rule.rb +1 -1
  151. data/app/models/spree/price_rules/customer_group_rule.rb +1 -1
  152. data/app/models/spree/product.rb +31 -7
  153. data/app/models/spree/product_submission.rb +0 -12
  154. data/app/models/spree/product_type.rb +0 -1
  155. data/app/models/spree/promotion/actions/create_line_items.rb +27 -17
  156. data/app/models/spree/promotion/rules/category.rb +0 -4
  157. data/app/models/spree/promotion/rules/channel.rb +0 -4
  158. data/app/models/spree/promotion/rules/country.rb +0 -4
  159. data/app/models/spree/promotion/rules/currency.rb +0 -4
  160. data/app/models/spree/promotion/rules/customer_group.rb +0 -4
  161. data/app/models/spree/promotion/rules/first_order.rb +0 -4
  162. data/app/models/spree/promotion/rules/item_total.rb +4 -8
  163. data/app/models/spree/promotion/rules/market.rb +0 -4
  164. data/app/models/spree/promotion/rules/one_use_per_user.rb +0 -4
  165. data/app/models/spree/promotion/rules/option_value.rb +0 -3
  166. data/app/models/spree/promotion/rules/product.rb +0 -4
  167. data/app/models/spree/promotion/rules/user.rb +0 -4
  168. data/app/models/spree/promotion/rules/user_logged_in.rb +0 -4
  169. data/app/models/spree/promotion.rb +35 -6
  170. data/app/models/spree/promotion_action.rb +7 -14
  171. data/app/models/spree/promotion_action_line_item.rb +1 -1
  172. data/app/models/spree/promotion_handler/coupon.rb +59 -27
  173. data/app/models/spree/promotion_rule.rb +7 -14
  174. data/app/models/spree/purchase_order.rb +1 -0
  175. data/app/models/spree/quantity_rule.rb +1 -1
  176. data/app/models/spree/refund.rb +28 -3
  177. data/app/models/spree/return.rb +30 -2
  178. data/app/models/spree/return_line_item.rb +65 -14
  179. data/app/models/spree/role.rb +7 -7
  180. data/app/models/spree/saved_report.rb +1 -1
  181. data/app/models/spree/seller.rb +2 -1
  182. data/app/models/spree/seller_payout.rb +7 -0
  183. data/app/models/spree/seller_requirement.rb +4 -12
  184. data/app/models/spree/seller_requirement_custom_field.rb +1 -2
  185. data/app/models/spree/seller_requirement_submission.rb +2 -2
  186. data/app/models/spree/seller_requirements/accept_terms.rb +2 -3
  187. data/app/models/spree/seller_transfer.rb +5 -0
  188. data/app/models/spree/shipping_label.rb +1 -0
  189. data/app/models/spree/stock/availability_validator.rb +2 -2
  190. data/app/models/spree/stock/inventory_unit_builder.rb +1 -1
  191. data/app/models/spree/stock/packer.rb +2 -2
  192. data/app/models/spree/stock/splitter/weight.rb +1 -1
  193. data/app/models/spree/stock_level/custom_events.rb +6 -0
  194. data/app/models/spree/stock_level.rb +1 -1
  195. data/app/models/spree/stock_movement.rb +1 -1
  196. data/app/models/spree/stock_receipt_item.rb +1 -1
  197. data/app/models/spree/stock_reservation.rb +2 -2
  198. data/app/models/spree/stock_transfer.rb +4 -2
  199. data/app/models/spree/store.rb +33 -7
  200. data/app/models/spree/store_credit.rb +8 -9
  201. data/app/models/spree/store_credit_event.rb +5 -5
  202. data/app/models/spree/tax_exemption_certificate.rb +2 -0
  203. data/app/models/spree/tax_identifier.rb +3 -1
  204. data/app/models/spree/tax_line.rb +53 -3
  205. data/app/models/spree/tax_provider/base.rb +71 -14
  206. data/app/models/spree/tax_provider/internal.rb +59 -33
  207. data/app/models/spree/tax_provider/recorded_share.rb +114 -0
  208. data/app/models/spree/tax_rate.rb +1 -2
  209. data/app/models/spree/taxonomy.rb +0 -1
  210. data/app/models/spree/variant.rb +4 -3
  211. data/app/models/spree/variant_media.rb +1 -1
  212. data/app/models/spree/webhook_endpoint.rb +10 -13
  213. data/app/models/spree/wishlist.rb +1 -6
  214. data/app/models/spree/wishlist_item/custom_events.rb +6 -0
  215. data/app/presenters/spree/csv/customer_presenter.rb +1 -1
  216. data/app/presenters/spree/csv/newsletter_subscriber_presenter.rb +1 -1
  217. data/app/presenters/spree/csv/order_line_item_presenter.rb +1 -1
  218. data/app/presenters/spree/csv/product_variant_presenter.rb +42 -12
  219. data/app/serializers/spree/emails/base_serializer.rb +14 -0
  220. data/app/serializers/spree/emails/export_serializer.rb +13 -0
  221. data/app/serializers/spree/emails/import_serializer.rb +19 -0
  222. data/app/serializers/spree/emails/invitation_serializer.rb +28 -0
  223. data/app/serializers/spree/emails/store_serializer.rb +31 -0
  224. data/app/serializers/spree/emails/user_serializer.rb +12 -0
  225. data/app/serializers/spree/emails/webhook_endpoint_serializer.rb +16 -0
  226. data/app/services/spree/carts/create.rb +8 -2
  227. data/app/services/spree/carts/destroy.rb +2 -2
  228. data/app/services/spree/carts/remove_out_of_stock_items.rb +2 -2
  229. data/app/services/spree/carts/split_by_seller.rb +1 -1
  230. data/app/services/spree/carts/update.rb +19 -5
  231. data/app/services/spree/catalogs/set_product_terms.rb +1 -1
  232. data/app/services/spree/categories/add_products.rb +13 -31
  233. data/app/services/spree/categories/remove_products.rb +12 -51
  234. data/app/services/spree/checkout/advance.rb +1 -4
  235. data/app/services/spree/collections/add_products.rb +10 -23
  236. data/app/services/spree/collections/remove_products.rb +7 -43
  237. data/app/services/spree/coupon_codes/bulk_generate.rb +8 -14
  238. data/app/services/spree/data_requests/create.rb +1 -1
  239. data/app/services/spree/deliveries/destroy.rb +2 -2
  240. data/app/services/spree/email_templates/check.rb +58 -0
  241. data/app/services/spree/email_templates/no_sample_record.rb +7 -0
  242. data/app/services/spree/email_templates/preview.rb +99 -0
  243. data/app/services/spree/emails/file_system.rb +23 -0
  244. data/app/services/spree/emails/filters.rb +84 -0
  245. data/app/services/spree/emails/liquid_context.rb +48 -0
  246. data/app/services/spree/emails/rendered_email.rb +14 -0
  247. data/app/services/spree/emails/renderer.rb +125 -0
  248. data/app/services/spree/emails/template.rb +51 -0
  249. data/app/services/spree/emails/template_data.rb +23 -0
  250. data/app/services/spree/emails/template_resolver.rb +109 -0
  251. data/app/services/spree/emails/text_converter.rb +72 -0
  252. data/app/services/spree/emails/translation_inliner.rb +134 -0
  253. data/app/services/spree/imports/row_processors/price_list_price.rb +10 -10
  254. data/app/services/spree/imports/row_processors/product_variant.rb +65 -34
  255. data/app/services/spree/imports/row_processors/purchase_order.rb +13 -13
  256. data/app/services/spree/locales.rb +4 -5
  257. data/app/services/spree/newsletter/subscribe.rb +8 -12
  258. data/app/services/spree/orders/build_fulfillments.rb +3 -2
  259. data/app/services/spree/orders/create.rb +2 -1
  260. data/app/services/spree/orders/discounts/create.rb +7 -4
  261. data/app/services/spree/orders/discounts/destroy.rb +1 -0
  262. data/app/services/spree/orders/discounts/update.rb +1 -0
  263. data/app/services/spree/orders/fees/create.rb +1 -0
  264. data/app/services/spree/orders/fees/destroy.rb +1 -0
  265. data/app/services/spree/orders/fees/update.rb +1 -0
  266. data/app/services/spree/orders/remove_line_item.rb +13 -3
  267. data/app/services/spree/orders/update.rb +10 -6
  268. data/app/services/spree/orders/update_item.rb +6 -3
  269. data/app/services/spree/orders/update_statuses.rb +3 -1
  270. data/app/services/spree/product_memberships.rb +61 -0
  271. data/app/services/spree/returns/eligibility_validator.rb +1 -1
  272. data/app/services/spree/search_provider/custom_field_schema.rb +2 -2
  273. data/app/services/spree/seeds/commission_rates.rb +1 -1
  274. data/app/services/spree/seeds/digital_delivery.rb +1 -1
  275. data/app/services/spree/seeds/payment_methods.rb +2 -2
  276. data/app/services/spree/seeds/saved_reports.rb +3 -3
  277. data/app/services/spree/sellers/requirements.rb +1 -2
  278. data/app/services/spree/shipping_labels/confirm_refund.rb +1 -1
  279. data/app/services/spree/shipping_labels/store_file.rb +3 -3
  280. data/app/services/spree/stock_levels/correct.rb +3 -3
  281. data/app/services/spree/stock_reservations/reserve.rb +2 -3
  282. data/app/services/spree/store_credits/apply.rb +15 -13
  283. data/app/services/spree/stores/provision_defaults.rb +15 -14
  284. data/app/subscribers/spree/seller_onboarding_subscriber.rb +1 -1
  285. data/app/views/layouts/spree/base_mailer.html.erb +2 -43
  286. data/app/views/layouts/spree/base_mailer.liquid +79 -0
  287. data/app/views/spree/admin_user_mailer/password_reset_email.liquid +14 -0
  288. data/app/views/spree/export_mailer/export_done.liquid +12 -0
  289. data/app/views/spree/import_mailer/import_done.liquid +15 -0
  290. data/app/views/spree/invitation_mailer/invitation_accepted.liquid +9 -0
  291. data/app/views/spree/invitation_mailer/invitation_email.liquid +13 -0
  292. data/app/views/spree/seller_user_mailer/password_reset_email.liquid +14 -0
  293. data/app/views/spree/shared/_mailer_button.html.erb +4 -5
  294. data/app/views/spree/shared/_mailer_hero.html.erb +6 -5
  295. data/app/views/spree/shared/_summary_row.liquid +8 -0
  296. data/app/views/spree/webhook_mailer/endpoint_disabled.liquid +21 -0
  297. data/app/workflows/spree/carts/add_item.rb +4 -4
  298. data/app/workflows/spree/carts/complete.rb +13 -3
  299. data/app/workflows/spree/carts/merge.rb +1 -1
  300. data/app/workflows/spree/carts/recalculate_totals.rb +5 -0
  301. data/app/workflows/spree/carts/upsert_items.rb +18 -9
  302. data/app/workflows/spree/claims/approve.rb +5 -22
  303. data/app/workflows/spree/claims/cancel.rb +5 -21
  304. data/app/workflows/spree/claims/create.rb +15 -0
  305. data/app/workflows/spree/claims/deny.rb +7 -0
  306. data/app/workflows/spree/claims/resolve.rb +34 -31
  307. data/app/workflows/spree/customers/anonymize.rb +3 -4
  308. data/app/workflows/spree/customers/create.rb +1 -1
  309. data/app/workflows/spree/data_requests/fulfill.rb +2 -2
  310. data/app/workflows/spree/deliveries/update_tracking.rb +1 -1
  311. data/app/workflows/spree/email_templates/discard_draft.rb +20 -0
  312. data/app/workflows/spree/email_templates/publish.rb +70 -0
  313. data/app/workflows/spree/email_templates/restore_revision.rb +33 -0
  314. data/app/workflows/spree/email_templates/revert.rb +29 -0
  315. data/app/workflows/spree/email_templates/save_draft.rb +85 -0
  316. data/app/workflows/spree/exchanges/approve.rb +5 -22
  317. data/app/workflows/spree/exchanges/cancel.rb +5 -21
  318. data/app/workflows/spree/exchanges/create.rb +6 -0
  319. data/app/workflows/spree/exchanges/fulfill.rb +75 -51
  320. data/app/workflows/spree/exchanges/receive.rb +6 -65
  321. data/app/workflows/spree/fulfillments/cancel.rb +1 -1
  322. data/app/workflows/spree/fulfillments/create.rb +51 -47
  323. data/app/workflows/spree/fulfillments/fulfill.rb +23 -27
  324. data/app/workflows/spree/fulfillments/mark_delivered.rb +1 -1
  325. data/app/workflows/spree/fulfillments/replacements.rb +59 -0
  326. data/app/workflows/spree/gift_cards/apply.rb +2 -2
  327. data/app/workflows/spree/orders/add_item.rb +5 -1
  328. data/app/workflows/spree/orders/cancel.rb +3 -3
  329. data/app/workflows/spree/orders/complete.rb +16 -8
  330. data/app/workflows/spree/payments/process.rb +2 -2
  331. data/app/workflows/spree/post_sale/approval.rb +35 -0
  332. data/app/workflows/spree/post_sale/cancellation.rb +44 -0
  333. data/app/workflows/spree/post_sale/receipt.rb +92 -0
  334. data/app/workflows/spree/products/nested_attributes.rb +1 -1
  335. data/app/workflows/spree/purchase_orders/cancel.rb +1 -1
  336. data/app/workflows/spree/purchase_orders/close.rb +3 -31
  337. data/app/workflows/spree/purchase_orders/mark_draft.rb +2 -2
  338. data/app/workflows/spree/purchase_orders/mark_ordered.rb +2 -2
  339. data/app/workflows/spree/purchase_orders/receive.rb +1 -1
  340. data/app/workflows/spree/purchase_orders/update.rb +5 -34
  341. data/app/workflows/spree/receivables/closing_short.rb +46 -0
  342. data/app/workflows/spree/receivables/draft_editing.rb +48 -0
  343. data/app/workflows/spree/refunds/create.rb +5 -2
  344. data/app/workflows/spree/refunds/order_payments.rb +14 -2
  345. data/app/workflows/spree/refunds/tax_credit.rb +67 -0
  346. data/app/workflows/spree/returns/approve.rb +5 -22
  347. data/app/workflows/spree/returns/cancel.rb +5 -22
  348. data/app/workflows/spree/returns/create.rb +8 -0
  349. data/app/workflows/spree/returns/receive.rb +5 -76
  350. data/app/workflows/spree/returns/refund.rb +31 -8
  351. data/app/workflows/spree/seller_requirement_submissions/create.rb +1 -2
  352. data/app/workflows/spree/seller_transfers/reverse.rb +28 -1
  353. data/app/workflows/spree/shipping_labels/purchase.rb +8 -8
  354. data/app/workflows/spree/shipping_labels/record.rb +5 -5
  355. data/app/workflows/spree/shipping_labels/refund.rb +2 -2
  356. data/app/workflows/spree/stock_receipts/recording.rb +4 -4
  357. data/app/workflows/spree/stock_transfers/cancel.rb +2 -2
  358. data/app/workflows/spree/stock_transfers/close.rb +3 -30
  359. data/app/workflows/spree/stock_transfers/mark_draft.rb +1 -1
  360. data/app/workflows/spree/stock_transfers/mark_in_transit.rb +3 -3
  361. data/app/workflows/spree/stock_transfers/mark_ready.rb +2 -2
  362. data/app/workflows/spree/stock_transfers/receive.rb +1 -1
  363. data/app/workflows/spree/stock_transfers/update.rb +5 -33
  364. data/config/i18n-tasks.yml +32 -18
  365. data/config/initializers/alba.rb +7 -0
  366. data/config/language_names.csv +264 -0
  367. data/config/locales/ar.yml +811 -0
  368. data/config/locales/be.yml +855 -0
  369. data/config/locales/bg.yml +723 -0
  370. data/config/locales/ca.yml +689 -0
  371. data/config/locales/cs.yml +855 -0
  372. data/config/locales/da.yml +771 -0
  373. data/config/locales/de-CH.yml +248 -0
  374. data/config/locales/de.yml +835 -0
  375. data/config/locales/el.yml +769 -0
  376. data/config/locales/en.yml +37 -503
  377. data/config/locales/es-CL.yml +301 -0
  378. data/config/locales/es-EC.yml +186 -0
  379. data/config/locales/es-MX.yml +334 -0
  380. data/config/locales/es.yml +831 -0
  381. data/config/locales/et.yml +644 -0
  382. data/config/locales/fa.yml +709 -0
  383. data/config/locales/fi.yml +771 -0
  384. data/config/locales/fr.yml +830 -0
  385. data/config/locales/hu.yml +751 -0
  386. data/config/locales/id.yml +756 -0
  387. data/config/locales/it.yml +833 -0
  388. data/config/locales/ja.yml +726 -0
  389. data/config/locales/km.yml +759 -0
  390. data/config/locales/ko.yml +575 -0
  391. data/config/locales/ku.yml +753 -0
  392. data/config/locales/lt.yml +821 -0
  393. data/config/locales/lv.yml +685 -0
  394. data/config/locales/nb.yml +824 -0
  395. data/config/locales/ne.yml +823 -0
  396. data/config/locales/nl.yml +826 -0
  397. data/config/locales/pl.yml +835 -0
  398. data/config/locales/pt-BR.yml +547 -0
  399. data/config/locales/pt.yml +636 -0
  400. data/config/locales/ro.yml +750 -0
  401. data/config/locales/ru.yml +834 -0
  402. data/config/locales/sk.yml +680 -0
  403. data/config/locales/sl-SI.yml +600 -0
  404. data/config/locales/sv.yml +827 -0
  405. data/config/locales/th.yml +745 -0
  406. data/config/locales/tr.yml +777 -0
  407. data/config/locales/uk.yml +836 -0
  408. data/config/locales/vi.yml +768 -0
  409. data/config/locales/zh-CN.yml +786 -0
  410. data/config/locales/zh-TW.yml +834 -0
  411. data/db/migrate/20260925000001_add_replacement_to_spree_fulfillment_items.rb +5 -0
  412. data/db/migrate/20261001000001_add_post_sale_tax.rb +30 -0
  413. data/db/migrate/20261001000001_convert_preferences_to_json.rb +166 -0
  414. data/db/migrate/20261001000001_create_spree_email_templates.rb +52 -0
  415. data/lib/generators/spree/dummy/dummy_generator.rb +0 -9
  416. data/lib/generators/spree/dummy/templates/rails/test.rb +7 -0
  417. data/lib/spree/checkout/default_requirements.rb +37 -13
  418. data/lib/spree/core/configuration.rb +1 -1
  419. data/lib/spree/core/controller_helpers/store.rb +1 -1
  420. data/lib/spree/core/dependencies.rb +5 -4
  421. data/lib/spree/core/emails/escaped_output.rb +60 -0
  422. data/lib/spree/core/engine.rb +48 -167
  423. data/lib/spree/core/permissions/default_catalog.rb +5 -0
  424. data/lib/spree/core/preferences/json_conversion.rb +182 -0
  425. data/lib/spree/core/preferences/masking.rb +4 -1
  426. data/lib/spree/core/preferences/preferable.rb +137 -83
  427. data/lib/spree/core/preferences/preferable_class_methods.rb +81 -146
  428. data/lib/spree/core/previews/import_preview.rb +10 -0
  429. data/lib/spree/core/tax/provider_error.rb +37 -0
  430. data/lib/spree/core/version.rb +1 -1
  431. data/lib/spree/core.rb +85 -370
  432. data/lib/spree/emails/editable_templates.rb +82 -0
  433. data/lib/spree/events/catalog.rb +189 -0
  434. data/lib/spree/events.rb +21 -1
  435. data/lib/spree/hooks.rb +0 -17
  436. data/lib/spree/i18n.rb +32 -15
  437. data/lib/spree/reporting/adapters/live.rb +6 -6
  438. data/lib/spree/reporting/default_vocabulary.rb +22 -10
  439. data/lib/spree/reporting/hydration.rb +1 -1
  440. data/lib/spree/reporting/query.rb +8 -0
  441. data/lib/spree/reporting/schema.rb +10 -10
  442. data/lib/spree/testing_support/editable_email_templates.rb +61 -0
  443. data/lib/spree/testing_support/emails.rb +22 -0
  444. data/lib/spree/testing_support/factories/cart_factory.rb +1 -1
  445. data/lib/spree/testing_support/factories/email_template_factory.rb +28 -0
  446. data/lib/spree/testing_support/factories/order_factory.rb +2 -2
  447. data/lib/spree/testing_support/factories/refund_factory.rb +1 -1
  448. data/lib/spree/testing_support/factories/stock_factory.rb +1 -1
  449. data/lib/spree/testing_support/factories/variant_factory.rb +1 -1
  450. data/lib/spree/testing_support/i18n.rb +3 -94
  451. data/lib/spree/testing_support/lifecycle_events.rb +1 -1
  452. data/lib/spree/testing_support/order_walkthrough.rb +1 -1
  453. data/lib/spree/testing_support/preferences.rb +0 -5
  454. data/lib/spree/testing_support/store.rb +9 -1
  455. data/lib/spree/upgrades/5_6_to_6_0/manifest.yml +45 -0
  456. data/lib/tasks/categories_and_collections.rake +3 -3
  457. data/lib/tasks/core.rake +6 -4
  458. data/lib/tasks/media.rake +3 -3
  459. data/lib/tasks/package_types.rake +1 -1
  460. data/lib/tasks/preferences_json.rake +101 -0
  461. data/spec/fixtures/mailer_views/custom_views_probe_mailer/welcome_email.html.erb +4 -0
  462. metadata +188 -44
  463. data/app/models/acts_as_taggable_on/tag_decorator.rb +0 -10
  464. data/app/models/concerns/spree/has_image_alt_text.rb +0 -18
  465. data/app/models/spree/base_analytics_event_handler.rb +0 -54
  466. data/app/models/spree/invitations/store.rb +0 -6
  467. data/app/models/spree/preference.rb +0 -14
  468. data/app/models/spree/promotion_handler/page.rb +0 -25
  469. data/app/models/spree/promotion_handler/promotion_duplicator.rb +0 -60
  470. data/app/models/spree/stock/differentiator.rb +0 -45
  471. data/app/presenters/spree/filters/options_presenter.rb +0 -47
  472. data/app/services/spree/carts/empty.rb +0 -42
  473. data/app/services/spree/country_to_timezone.rb +0 -273
  474. data/app/services/spree/payments/create.rb +0 -92
  475. data/app/validators/spree/url_validator.rb +0 -23
  476. data/app/views/active_storage/blobs/_blob.html.erb +0 -14
  477. data/app/views/spree/admin_user_mailer/password_reset_email.html.erb +0 -8
  478. data/app/views/spree/export_mailer/export_done.html.erb +0 -7
  479. data/app/views/spree/import_mailer/import_done.html.erb +0 -12
  480. data/app/views/spree/invitation_mailer/invitation_accepted.html.erb +0 -4
  481. data/app/views/spree/invitation_mailer/invitation_email.html.erb +0 -12
  482. data/app/views/spree/seller_user_mailer/password_reset_email.html.erb +0 -8
  483. data/app/views/spree/shared/_base_mailer_footer.html.erb +0 -19
  484. data/app/views/spree/shared/_base_mailer_header.html.erb +0 -8
  485. data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +0 -399
  486. data/app/views/spree/shared/_mailer_logo.html.erb +0 -41
  487. data/app/views/spree/shared/_purchased_items_styles.html.erb +0 -119
  488. data/app/views/spree/webhook_mailer/endpoint_disabled.html.erb +0 -51
  489. data/app/views/spree/webhook_mailer/endpoint_disabled.text.erb +0 -10
  490. data/app/workflows/spree/fulfillments/purchase_label.rb +0 -40
  491. data/app/workflows/spree/returns/purchase_label.rb +0 -32
  492. data/lib/spree/analytics.rb +0 -11
  493. data/lib/spree/core/preferences/scoped_store.rb +0 -34
  494. data/lib/spree/core/preferences/store.rb +0 -105
  495. data/lib/spree/translation_migrations.rb +0 -52
@@ -0,0 +1,831 @@
1
+ ---
2
+ es:
3
+ activemodel:
4
+ errors:
5
+ messages:
6
+ blank: no puede estar en blanco
7
+ activerecord:
8
+ attributes:
9
+ spree/address:
10
+ address1: Dirección
11
+ address2: Dirección (cont.)
12
+ city: Ciudad
13
+ company: Compañía
14
+ country: País
15
+ label: Nombre de la dirección
16
+ phone: Teléfono
17
+ state: Provincia o Estado
18
+ spree/calculator/tiered_flat_rate:
19
+ preferred_base_amount: Monto Base
20
+ preferred_tiers: Niveles preferidos
21
+ spree/calculator/tiered_percent:
22
+ preferred_base_percent: Porcentaje Base
23
+ preferred_tiers: Niveles Preferidos
24
+ spree/country:
25
+ iso: ISO
26
+ iso3: ISO3
27
+ iso_name: Nombre ISO
28
+ name: Nombre
29
+ numcode: Código ISO
30
+ spree/credit_card:
31
+ base: Base
32
+ cc_type: Tipo
33
+ month: Mes
34
+ name: Nombre
35
+ number: Número
36
+ verification_value: Valor verificación
37
+ year: Año
38
+ spree/customer_group:
39
+ description: Descripción
40
+ name: Nombre
41
+ spree/gift_card:
42
+ amount_used: Importe usado
43
+ expires_at: Caduca el
44
+ spree/import:
45
+ preferred_delimiter: Delimitador
46
+ spree/import_mapping:
47
+ file_column: Columna del archivo
48
+ schema_field: Campo del esquema
49
+ spree/import_row:
50
+ row_number: Número
51
+ spree/inventory_unit:
52
+ state: Provincia o Estado
53
+ spree/invitation:
54
+ inviter: Quien invita
55
+ spree/line_item:
56
+ price: Precio
57
+ quantity: Cantidad
58
+ spree/option_type:
59
+ filterable: Filtrable
60
+ kind: Tipo
61
+ name: Nombre
62
+ spree/option_value:
63
+ color_code: Código de color
64
+ image: Imagen de muestra
65
+ spree/order:
66
+ checkout_complete: Completar Pedido
67
+ completed_at: Completado En
68
+ considered_risky: Arriesgado
69
+ coupon_code: Código Cupón
70
+ created_at: Fecha del Pedido
71
+ email: Email del Cliente
72
+ internal_note: Nota interna
73
+ ip_address: Dirección IP
74
+ item_count: Artículos
75
+ item_total: Total de Artículo
76
+ number: Número
77
+ payment_state: Estado del Pago
78
+ shipment_state: Estado del Envío
79
+ special_instructions: Instrucciones especiales
80
+ state: Estado
81
+ total: Total
82
+ spree/order/bill_address:
83
+ address1: Calle dirección de facturación
84
+ city: Ciudad dirección de facturación
85
+ phone: Teléfono dirección facturación
86
+ state: Provincia dirección facturación
87
+ spree/order/ship_address:
88
+ address1: Calle dirección envío
89
+ city: Ciudad dirección envío
90
+ phone: Teléfono dirección envío
91
+ state: Provincia dirección envío
92
+ spree/payment:
93
+ amount: Cuantía
94
+ number: Número
95
+ spree/payment_method:
96
+ name: Nombre
97
+ spree/policy:
98
+ body: Cuerpo
99
+ owner: Política de
100
+ spree/price_list:
101
+ description: Descripción
102
+ ends_at: Finaliza el
103
+ match_policy: Política de coincidencia
104
+ name: Nombre
105
+ priority: Prioridad
106
+ starts_at: Comienza el
107
+ status: Estado
108
+ spree/price_rule:
109
+ priority: Prioridad
110
+ type: Tipo
111
+ spree/product:
112
+ available_on: Disponible desde
113
+ cost_currency: Moneda de costo
114
+ cost_price: Precio de coste
115
+ description: Descripción
116
+ discontinue_on: Descontinuar desde
117
+ less_than: Menor que
118
+ make_active_at: Activar el
119
+ master_price: Precio maestro
120
+ more_than: Más de
121
+ name: Nombre
122
+ on_hand: Disponible
123
+ tax_category: Categoría fiscal
124
+ spree/promotion:
125
+ advertise: Anuncio
126
+ code: Código
127
+ description: Descripción
128
+ event_name: Nombre del Evento
129
+ expires_at: Termina en
130
+ generate_code: Generar código del cupón
131
+ name: Nombre
132
+ path: Ruta
133
+ promotion_category: Categoría promocional
134
+ starts_at: Empieza en
135
+ usage_limit: Limite de Uso
136
+ spree/promotion_category:
137
+ code: Código
138
+ name: Nombre
139
+ spree/property:
140
+ name: Nombre
141
+ presentation: Presentación
142
+ spree/role:
143
+ name: Nombre
144
+ spree/shipment:
145
+ number: Número
146
+ spree/state:
147
+ abbr: Abreviatura
148
+ name: Nombre
149
+ spree/store:
150
+ address: Dirección
151
+ contact_phone: Teléfono de contacto
152
+ mail_from_address: Remitente
153
+ meta_description: Meta Descripción
154
+ meta_keywords: Palabras Clave
155
+ name: Nombre
156
+ preferred_digital_asset_authorized_clicks: Límite de descargas por clics
157
+ preferred_digital_asset_authorized_days: Límite de días de descarga
158
+ preferred_limit_digital_download_count: Limitar el número de descargas de enlaces digitales
159
+ preferred_limit_digital_download_days: Limitar los días de descarga de enlaces digitales
160
+ seo_robots: Robots SEO
161
+ seo_title: Título SEO
162
+ storefront_custom_code_body_end: Código personalizado antes de cerrar la etiqueta body
163
+ storefront_custom_code_body_start: Código personalizado después de abrir la etiqueta body
164
+ storefront_custom_code_head: Código personalizado en el encabezado de la página
165
+ url: URL del sitio
166
+ spree/store_credit:
167
+ amount_used: Monto utilizado
168
+ spree/tax_category:
169
+ description: Descripción
170
+ name: Nombre
171
+ spree/tax_rate:
172
+ amount: Tarifa
173
+ included_in_price: Incluido en el precio
174
+ show_rate_in_label: Mostrar tarifa en etiqueta
175
+ spree/taxon:
176
+ name: Nombre
177
+ permalink: Enlace permanente
178
+ position: Posición
179
+ sort_order: Orden de clasificación
180
+ spree/taxonomy:
181
+ name: Nombre
182
+ spree/user:
183
+ avatar: Avatar
184
+ email: Email
185
+ password: Password
186
+ password_confirmation: Confirmación del Password
187
+ spree/variant:
188
+ cost_currency: Moneda de coste
189
+ cost_price: Precio de coste
190
+ depth: Anchura
191
+ height: Altura
192
+ price: Precio
193
+ sku: Código
194
+ weight: Peso
195
+ width: Longitud
196
+ spree/zone:
197
+ description: Descripción
198
+ name: Nombre
199
+ user:
200
+ current_sign_in: Inicio de sesión actual el
201
+ last_sign_in: Último inicio de sesión el
202
+ sign_in_count: Número de inicios de sesión
203
+ errors:
204
+ messages:
205
+ blank: no puede estar en blanco
206
+ models:
207
+ spree/allowed_origin:
208
+ attributes:
209
+ origin:
210
+ must_be_origin_only: debe ser un origen (esquema y host) sin ruta, consulta ni fragmento
211
+ spree/classification:
212
+ attributes:
213
+ taxon_id:
214
+ already_linked: Previamente vinculado
215
+ spree/credit_card:
216
+ attributes:
217
+ base:
218
+ card_expired: La Tarjeta ha expirado
219
+ expiry_invalid: Expiración inválida
220
+ spree/gift_card:
221
+ attributes:
222
+ base:
223
+ cannot_destroy_used_gift_card: No se puede eliminar una tarjeta de regalo ya utilizada
224
+ spree/import:
225
+ attributes:
226
+ attachment:
227
+ content_type: tiene un tipo de contenido no permitido
228
+ type:
229
+ inclusion: no está incluido en la lista de tipos permitidos
230
+ spree/line_item:
231
+ attributes:
232
+ currency:
233
+ must_match_order_currency: Debe coincidir con la moneda de la orden
234
+ spree/market:
235
+ attributes:
236
+ base:
237
+ cannot_destroy_default_market: No se puede eliminar el mercado predeterminado.
238
+ cannot_destroy_last_market: No se puede eliminar el único mercado.
239
+ spree/market_country:
240
+ attributes:
241
+ country:
242
+ already_in_market: ya está asignado a otro mercado en esta tienda
243
+ not_in_shipping_zone: no está cubierto por ninguna zona de envío. Configura primero una zona de envío.
244
+ spree/payment:
245
+ attributes:
246
+ amount:
247
+ greater_than_max_amount: es mayor que el importe máximo permitido de %{max_amount}
248
+ spree/price_list:
249
+ attributes:
250
+ ends_at:
251
+ must_be_after_starts_at: debe ser posterior a la fecha de inicio
252
+ spree/product:
253
+ attributes:
254
+ base:
255
+ cannot_destroy_if_attached_to_line_items: No se pueden eliminar productos que están incorporados en una orden.
256
+ discontinue_on:
257
+ invalid_date_range: debe ser posterior que la fecha de disponibilidad
258
+ spree/product_publication:
259
+ attributes:
260
+ unpublished_at:
261
+ must_be_after_published_at: debe ser posterior a la fecha de publicación
262
+ spree/promotion:
263
+ attributes:
264
+ expires_at:
265
+ invalid_date_range: debe ser posterior a la fecha de comienzo
266
+ spree/refund:
267
+ attributes:
268
+ amount:
269
+ greater_than_allowed: Mayor de la permitida
270
+ spree/store:
271
+ attributes:
272
+ base:
273
+ cannot_destroy_only_store: No se puede eliminar la única tienda.
274
+ spree/store_credit:
275
+ attributes:
276
+ amount_authorized:
277
+ exceeds_total_credits: Excede el crédito total.
278
+ amount_used:
279
+ cannot_be_greater_than_amount: No puede ser mayor al monto.
280
+ greater_than_zero_restrict_delete: es mayor que cero. No se pudo eliminar el crédito de la tienda.
281
+ spree/user:
282
+ attributes:
283
+ bill_address_id:
284
+ belongs_to_other_user: pertenece a otro usuario
285
+ deprecated_in_completed_order: obsoleto en un pedido completado
286
+ ship_address_id:
287
+ belongs_to_other_user: pertenece a otro usuario
288
+ deprecated_in_completed_order: obsoleto en un pedido completado
289
+ spree/variant:
290
+ attributes:
291
+ base:
292
+ cannot_destroy_if_attached_to_line_items: No se pueden eliminar variantes cuando están asociadas a artículos de compra.
293
+ spree/webhook_endpoint:
294
+ attributes:
295
+ url:
296
+ internal_address_not_allowed: no debe apuntar a una dirección de red interna o privada
297
+ models:
298
+ spree/address:
299
+ one: Dirección
300
+ other: Direcciones
301
+ spree/classification:
302
+ one: Clasificación
303
+ other: Clasificaciones
304
+ spree/country:
305
+ one: País.
306
+ other: Paises
307
+ spree/credit_card:
308
+ one: Tarjeta de Crédito.
309
+ other: Tarjetas de Crédito
310
+ spree/customer_group:
311
+ one: Grupo de clientes
312
+ other: Grupos de clientes
313
+ spree/customer_group_user:
314
+ one: Usuario de grupo de clientes
315
+ other: Usuarios de grupos de clientes
316
+ spree/export:
317
+ one: Exportación
318
+ other: Exportaciones
319
+ spree/integration:
320
+ one: Integración
321
+ other: Integraciones
322
+ spree/inventory_unit:
323
+ one: Unidad de inventario
324
+ other: Unidades de inventario
325
+ spree/line_item:
326
+ one: Línea de pedido
327
+ other: Líneas de pedido
328
+ spree/option_type:
329
+ one: Tipo de opción
330
+ other: Tipos de opción
331
+ spree/option_value:
332
+ one: Valor de opción
333
+ other: Valores de opción
334
+ spree/order:
335
+ one: Pedido
336
+ other: Pedidos
337
+ spree/payment:
338
+ one: Pago
339
+ other: Pagos
340
+ spree/payment_method:
341
+ one: Método de pago
342
+ other: Métodos de pago
343
+ spree/price:
344
+ one: Precio
345
+ other: Precios
346
+ spree/price_list:
347
+ one: Lista de precios
348
+ other: Listas de precios
349
+ spree/price_rule:
350
+ one: Regla de precio
351
+ other: Reglas de precio
352
+ spree/product:
353
+ one: Producto
354
+ other: Productos
355
+ spree/promotion:
356
+ one: Promoción
357
+ other: Promociones
358
+ spree/promotion_category:
359
+ one: Categoría promocional
360
+ other: Categorías promocionales
361
+ spree/property:
362
+ one: Propiedad
363
+ other: Propiedades
364
+ spree/refund_reason:
365
+ one: Razón del reembolso
366
+ other: Razones del reembolso
367
+ spree/role:
368
+ one: Rol
369
+ other: Roles
370
+ spree/shipment:
371
+ one: Envío
372
+ other: Envíos
373
+ spree/shipping_method:
374
+ one: Método de envío
375
+ other: Métodos de envío
376
+ spree/state:
377
+ one: Provincia
378
+ other: Provincias
379
+ spree/stock_location:
380
+ one: Ubicación del stock
381
+ other: Ubicaciones del stock
382
+ spree/stock_movement:
383
+ one: Movimiento de stock
384
+ other: Movimientos de stock
385
+ spree/store:
386
+ one: Tienda
387
+ other: Tiendas
388
+ spree/store_credit:
389
+ one: Crédito de la tienda
390
+ other: Créditos de la tienda
391
+ spree/tax_category:
392
+ one: Categoría fiscal
393
+ other: Categorías fiscales
394
+ spree/tax_rate:
395
+ one: Tasa de impuesto
396
+ other: Tasas de impuestos
397
+ spree/taxon:
398
+ one: Categoría
399
+ other: Categorías
400
+ spree/taxonomy:
401
+ one: Categoría
402
+ other: Categorías
403
+ spree/user:
404
+ one: Usuario
405
+ other: Usuarios
406
+ spree/variant:
407
+ one: Variante
408
+ other: Variantes
409
+ spree/zone:
410
+ one: Zona
411
+ other: Zonas
412
+ errors:
413
+ messages:
414
+ already_confirmed: fue ya confirmada.
415
+ not_found: no encontrado
416
+ not_locked: no estaba bloqueada
417
+ not_saved:
418
+ one: 1 error evitó que este %{resource} fuese grabado.
419
+ other: "%{count} errores evitaron que este %{resource} fuese grabado:"
420
+ number:
421
+ percentage:
422
+ format:
423
+ precision: 1
424
+ spree:
425
+ accept: Aceptar
426
+ accepted: Aceptado
427
+ accepts_email_marketing: Acepta marketing por correo electrónico
428
+ account: Cuenta
429
+ active: Activa
430
+ address: Dirección
431
+ address1: Dirección
432
+ address2: Dirección (cont.)
433
+ adjustment: Ajuste
434
+ adjustment_labels:
435
+ tax_rates:
436
+ excluding_tax: "%{name}%{amount}"
437
+ including_tax: "%{name}%{amount} (Incluído en el precio)"
438
+ adjustments_deleted: Ajustes eliminados
439
+ admin_user_mailer:
440
+ password_reset_email:
441
+ action: Restablecer contraseña
442
+ expiry_notice: Este enlace para restablecer la contraseña caducará en breve. Si no solicitaste esto, no es necesario que hagas nada.
443
+ greeting: 'Hola %{name}:'
444
+ ignore_notice: Si no solicitaste restablecer tu contraseña, puedes ignorar este correo electrónico sin problema. Tu contraseña no se cambiará.
445
+ instructions: Hemos recibido una solicitud para restablecer la contraseña de tu cuenta de administrador de %{store_name}. Haz clic en el botón de abajo para elegir una nueva contraseña.
446
+ subject: Instrucciones para restablecer la contraseña
447
+ all: Todos
448
+ amount: Cuantía
449
+ api_key_no_current_key: Ninguna clave API autenticó esta solicitud
450
+ api_key_scopes_immutable: no se puede cambiar después de crear la clave; crea una nueva clave con los ámbitos que necesites y revoca esta
451
+ approver: Aprobador
452
+ authorized: Autorizado
453
+ availability: disponibilidad
454
+ backorderable: Pedible
455
+ backordered: Por pedido
456
+ bill_address: Dirección de facturación
457
+ billing_address: Dirección de facturación
458
+ calculator: Calculador
459
+ canceled: Cancelado
460
+ canceler: Cancelador
461
+ cannot_be_destroyed: No se puede eliminar el pedido.
462
+ capture: Captura
463
+ cart: Carrito
464
+ cart_already_updated: El carrito ya se ha actualizado.
465
+ cart_line_item:
466
+ delivery_unavailable: "%{li_name} no se puede enviar a la dirección seleccionada"
467
+ discontinued: "%{li_name} se eliminó porque se descatalogó"
468
+ out_of_stock: "%{li_name} se eliminó porque se agotó"
469
+ categories: Categorías
470
+ category: Categoría
471
+ channel: Canal
472
+ channels: Canales de venta
473
+ checkout: Realizar pedido
474
+ checkout_requirements:
475
+ email_required: La dirección de correo electrónico es obligatoria
476
+ line_items_required: Añade al menos un artículo a tu carrito
477
+ payment_required: Añade un método de pago
478
+ ship_address_required: La dirección de envío es obligatoria
479
+ city: Ciudad
480
+ color_code: Código de color
481
+ company: Empresa
482
+ compare_at_amount: Precio comparativo
483
+ compare_at_price: Comparar precios
484
+ complete: Completar
485
+ confirm: Confirmar
486
+ cost_price: Precio de costo
487
+ count_on_hand: Disponible
488
+ country: País
489
+ coupon_code: Código Cupón
490
+ coupon_code_already_applied: El código del cupón ya ha sido aplicado a este pedido
491
+ coupon_code_applied: El código del cupón fue aplicado satisfactoriamente a este pedido.
492
+ coupon_code_better_exists: El código del cupón aplicado previamente es más conveniente para tí
493
+ coupon_code_expired: El código del cupón ha expirado
494
+ coupon_code_max_usage: Excedido el limite de uso del código del cupón
495
+ coupon_code_not_eligible: Este código de cupón no es elegible para este pedido
496
+ coupon_code_not_found: El código del cupón que has introducido no existe. Inténtalo de nuevo.
497
+ coupon_code_unknown_error: Error desconocido con el código del cupón. Intente nuevamente.
498
+ coupon_code_used: El código de cupón que introdujiste ya se ha utilizado. Inténtalo de nuevo.
499
+ created_at: Creada
500
+ credit_card: Tarjeta de Crédito
501
+ currency: Moneda
502
+ currency_not_supported_by_store: no es compatible con esta tienda
503
+ customer: Cliente
504
+ customers: Clientes
505
+ default: Por defecto
506
+ default_stock_location_name: Ubicación de la tienda
507
+ default_wishlist_name: Lista de deseos
508
+ delivery: Entregar
509
+ depth: Profundidad
510
+ description: Descripción
511
+ destination: Destino
512
+ destroy: Eliminar
513
+ details: Detalles
514
+ digital:
515
+ digital_delivery: Entrega digital
516
+ digital_assets: Recursos digitales
517
+ discontinued: Discontinuado
518
+ discontinued_variants_present: Algunos ítems de la orden son productos que ya no están disponibles.
519
+ display_delivery_range: Entrega en %{delivery_range} días hábiles
520
+ draft: Borrador
521
+ eligibility_errors:
522
+ messages:
523
+ has_excluded_product: Su carrito contiene un producto que evita que se aplique el cupón.
524
+ item_total_less_than: Este cupón no se puede aplicar a los pedidos de menos de %{amount}.
525
+ item_total_less_than_or_equal: Este cupón no se puede aplicar a los pedidos inferiores o iguales a %{amount}.
526
+ item_total_more_than: Este cupón no se puede aplicar a pedidos superiores a %{amount}.
527
+ item_total_more_than_or_equal: Este cupón no se puede aplicar a pedidos superiores o iguales a %{amount}.
528
+ limit_once_per_user: Este cupón sólo se puede utilizar una vez por usuario.
529
+ missing_product: Este cupón no se puede aplicar porque no tiene todos los productos necesarios en su carrito.
530
+ missing_taxon: Es necesario añadir un producto de todas las clasificaciónes aplicables antes de utilizar un cupón.
531
+ no_applicable_products: Usted necesita agregar un producto antes de usar un cupón.
532
+ no_matching_channel: Este código de cupón no es válido para este canal de venta.
533
+ no_matching_market: Este código de cupón no es válido en tu mercado.
534
+ no_matching_taxons: Usted necesita agregar un producto a partir de una clasificaciónes aplicable antes de la utilización de este cupón.
535
+ no_user_or_email_specified: Tienes que iniciar sesión o proporcionar su correo electrónico antes de usar este cupón.
536
+ no_user_specified: Usted tiene que iniciar sesión antes de usar un cupón.
537
+ not_first_order: Este cupón sólo se puede aplicar a su primer pedido.
538
+ wrong_country: Este código de cupón no es válido en tu país
539
+ email: Email
540
+ error: error
541
+ error_user_destroy_with_orders: El usuario asociado con órdenes no puede eliminarse
542
+ error_user_does_not_have_any_store_credits: El usuario no tiene ningún crédito de la tienda disponible
543
+ errors:
544
+ messages:
545
+ cannot_delete_default_channel: No se puede eliminar el canal predeterminado. Promueve primero otro canal a predeterminado.
546
+ channel_store_mismatch: debe pertenecer a la misma tienda
547
+ invalid_order_routing_rule: no es una regla de enrutamiento de pedidos registrada
548
+ invalid_order_routing_strategy: no es una estrategia de enrutamiento de pedidos registrada
549
+ store_association_can_not_be_changed: La asociación con la tienda no se puede cambiar
550
+ store_is_already_set: La tienda ya está establecida
551
+ expired: Caducado
552
+ export_mailer:
553
+ export_done:
554
+ message: "¡Buen trabajo, tu exportación está lista! Usa el enlace de abajo para descargarla."
555
+ subject: "¡Tu exportación %{export_number} se procesó correctamente!"
556
+ greeting: 'Hola %{user_name}:'
557
+ field: Campo
558
+ first_name: Nombre
559
+ flat_percent: Porcentaje fijo
560
+ flat_rate_per_order: Tarifa plana (por pedido)
561
+ flexible_rate: Tarifa flexible
562
+ free: Gratis
563
+ gateway: Pasarela
564
+ gateway_error: Error en pasarela
565
+ gift_card: Tarjeta de regalo
566
+ gift_card_already_redeemed: La tarjeta de regalo ya se ha canjeado.
567
+ gift_card_applied: "¡La tarjeta de regalo se aplicó correctamente a tu pedido!"
568
+ gift_card_customer_not_logged_in: La tarjeta de regalo no se puede aplicar con un usuario invitado.
569
+ gift_card_expired: La tarjeta de regalo ha caducado.
570
+ gift_card_mismatched_currency: La tarjeta de regalo no se puede aplicar con la moneda actual.
571
+ gift_card_mismatched_customer: Esta tarjeta de regalo está asociada a otro usuario.
572
+ gift_card_not_found: No se encontró la tarjeta de regalo.
573
+ gift_card_removed: La tarjeta de regalo se eliminó correctamente de tu pedido
574
+ gift_card_using_store_credit_error: No puedes aplicar la tarjeta de regalo después de haber aplicado el crédito de la tienda.
575
+ height: Altura
576
+ i18n:
577
+ this_file_language: Español (ES)
578
+ idempotency_key_reused: Esta Idempotency-Key ya se ha utilizado con parámetros de solicitud diferentes.
579
+ image: Imagen
580
+ import: Importar
581
+ in_stock: En stock
582
+ inactive: Inactivo
583
+ incomplete: Incompleto
584
+ insufficient_stock_lines_present: Insuficientes lineas de inventario presentes
585
+ internal_note: Nota interna
586
+ inventory: Inventario
587
+ invitation_mailer:
588
+ greeting: 'Hola %{user_name}:'
589
+ invitation_accepted:
590
+ body: "%{invitee_name} ha aceptado tu invitación para unirse a %{resource_name}"
591
+ subject: "%{invitee_name} ha aceptado tu invitación para unirse a %{resource_name}"
592
+ invitation_email:
593
+ body: "%{inviter_name} te ha invitado a unirte a %{resource_name}"
594
+ link_description: 'Para aceptar esta invitación, haz clic en el enlace de abajo:'
595
+ subject: Invitación para unirte a %{resource_name}
596
+ iso: ISO Alpha-2
597
+ item: Artículo
598
+ items_cannot_be_shipped: No es posible enviar los elementos seleccionados a su dirección de entrega. Por favor indica otra dirección de entrega.
599
+ key: Clave
600
+ kind: Tipo
601
+ label: Etiqueta
602
+ last_name: Apellidos
603
+ line_item: Línea de pedido
604
+ line_items: Líneas de pedido
605
+ link: Enlace
606
+ locale: Configuración regional
607
+ locale_not_supported_by_store: no es compatible con esta tienda
608
+ manual: Manual
609
+ market: Mercado
610
+ me_no_current_user: Ningún usuario administrador autenticó esta solicitud
611
+ media: Multimedia
612
+ meta_description: Descripción Meta
613
+ meta_keywords: Keywords Meta
614
+ meta_title: Título Meta
615
+ metadata: Metadata
616
+ min_quantity: Cantidad mínima
617
+ month: Mes
618
+ name: Nombre
619
+ new_variant: Nueva Variante
620
+ no_cc_type: N/D
621
+ no_payment_found: No se encontró pago
622
+ none: Ninguno
623
+ number: Número
624
+ on_hand: Disponible
625
+ only_active_products_can_be_added_to_cart: Los productos en borrador y archivados no se pueden añadir al carrito; marca primero el producto como activo.
626
+ open: Abrir
627
+ option_name: Nombre de la opción
628
+ option_type: Tipo de opción
629
+ option_value: Valor de opción
630
+ options: Opciones
631
+ or: o
632
+ order: Pedido
633
+ order_canceled: Pedido Cancelado
634
+ order_routing:
635
+ strategies:
636
+ legacy: Heredado
637
+ rules: Reglas (ordenadas)
638
+ order_summary: Resumen
639
+ orders: Pedidos
640
+ out_of_stock: Fuera de stock
641
+ password: Password
642
+ path: Ruta
643
+ payment: Pago
644
+ payment_method: Método de Pago
645
+ payment_method_not_supported: Método de Pago no soportado
646
+ payment_methods: Métodos de Pago
647
+ payment_processing_failed: El pago no pudo ser procesado, por favor comprueba los detalles que has introducido
648
+ payment_source: Fuente de pago
649
+ pending: Pendiente
650
+ percent: Porcentaje
651
+ percent_per_item: Porcentaje por artículo
652
+ phone: Teléfono
653
+ price: Precio
654
+ price_range: Rango de precios
655
+ price_rules:
656
+ channel_rule:
657
+ description: Aplicar precios según el canal de venta
658
+ customer_group_rule:
659
+ description: Aplicar precios a grupos de clientes específicos
660
+ price_sack: Saco de precios
661
+ prices: Precios
662
+ privacy_policy: Política de privacidad
663
+ processing: Procesando
664
+ product: Producto
665
+ product_translations: Traducciones de productos
666
+ products: Productos
667
+ products_cannot_be_shipped: Por el momento no podemos enviar %{product_names} a tu ubicación actual. Cambia tu dirección de envío o elimina %{product_names} de tu carrito.
668
+ promotion: Promoción
669
+ promotion_action_types:
670
+ create_adjustment:
671
+ description: Crea un ajuste de crédito en la promoción en el pedido
672
+ name: Crear ajuste
673
+ create_item_adjustments:
674
+ description: Crea un ajuste de crédito promocional por cada artículo de compra
675
+ name: Crear ajuste por cada artículo de compra
676
+ create_line_items:
677
+ description: Rellena el carrito con la cuantía especificada de la variante
678
+ name: Crea líneas de artículos
679
+ free_shipping:
680
+ description: Hace gratuitos todos los tipos de envío para el pedido
681
+ name: Envíos Gratuitos
682
+ promotion_actions: Acciones
683
+ promotion_already_used: No puedes eliminar una promoción que ya se aplicó
684
+ promotion_label: Promoción (%{name})
685
+ promotion_rule_types:
686
+ category:
687
+ description: El pedido incluye productos de categorías específicas
688
+ name: Categorías
689
+ channel:
690
+ description: Limitar a los pedidos realizados a través de los canales especificados
691
+ name: Canal(es)
692
+ country:
693
+ description: El pedido se envía a un país adecuado (o por defecto)
694
+ name: País
695
+ currency:
696
+ description: Limitar a pedidos en una moneda específica
697
+ name: Moneda
698
+ customer:
699
+ description: Disponible solo para los clientes especificados
700
+ name: Clientes
701
+ customer_group:
702
+ description: Disponible solo para clientes de los grupos de clientes especificados
703
+ name: Grupo(s) de clientes
704
+ customer_logged_in:
705
+ description: Disponible solo para clientes que han iniciado sesión
706
+ name: Solo clientes que han iniciado sesión
707
+ first_order:
708
+ description: Debe ser el primer pedido del cliente
709
+ name: Primer pedido
710
+ item_total:
711
+ description: Total del pedido cumple con estos criterios
712
+ name: Total del articulo
713
+ market:
714
+ description: Limitar a los pedidos realizados en los mercados especificados
715
+ name: Mercado(s)
716
+ one_use_per_user:
717
+ description: Un único uso por usuario
718
+ name: Un solo uso
719
+ option_value:
720
+ description: El pedido incluye los productos con los valores opcionales correspondientes
721
+ name: Valores opcionales
722
+ product:
723
+ description: El pedido incluye productos específicos
724
+ name: Producto(s)
725
+ promotions: Promociones
726
+ quantity: Cantidad
727
+ query: Consulta
728
+ reason: Razón
729
+ received: Recibido
730
+ reference: Referencia
731
+ refund: Devolución
732
+ refund_amount: Importe del reembolso
733
+ refunds: Reembolsos
734
+ registration: Registro
735
+ rejected: Rechazado
736
+ remove: Eliminar
737
+ remove_gift_card_on_completed_order_error: No puedes eliminar la tarjeta de regalo después de realizar el pedido
738
+ resellable: Revendible
739
+ resend: Reenviar
740
+ response_code: Código de respuesta
741
+ return: devolver
742
+ returned: Devuelto
743
+ returns_policy: Política de devoluciones
744
+ row: Fila
745
+ rules: Reglas
746
+ say_yes: Si
747
+ scope: Alcance
748
+ selected_quantity_not_available: Selección de %{item} no está disponible.
749
+ ship: Enviar
750
+ ship_address: Dirección de envío
751
+ shipment: Envío
752
+ shipped: Enviado
753
+ shipping: Envío
754
+ shipping_address: Dirección de envío
755
+ shipping_flat_rate_per_item: Tarifa plana por artículo empaquetado
756
+ shipping_flat_rate_per_order: Tarifa Plana
757
+ shipping_flexible_rate: Tarifa Flexible por artículo empaquetado
758
+ shipping_policy: Política de envíos
759
+ shipping_price_sack: Saco de Precio
760
+ shipping_rates:
761
+ display_price:
762
+ excluding_tax: "%{price} (+ %{tax_amount} %{tax_rate_name})"
763
+ including_tax: "%{price} (incl. %{tax_amount} %{tax_rate_name})"
764
+ sku: Referencia
765
+ slug: Slugs
766
+ source: Fuente
767
+ status: Estado
768
+ stock_location: Localización de stock
769
+ stock_locations: Localizaciones de Stock
770
+ stock_transfer:
771
+ errors:
772
+ must_have_variant: Debes agregar al menos una variante
773
+ same_location: no puede ser la misma que la ubicación de destino
774
+ variants_unavailable: Algunas variantes no están disponibles en %{stock}
775
+ store: Tienda
776
+ store_credit:
777
+ allocated: Agreado
778
+ authorized: Autorizado
779
+ captured: Usado
780
+ credit: Crédito
781
+ eligible: Elegible
782
+ store_credit_name: Crédito de la tienda
783
+ store_credit_payment_method:
784
+ currency_mismatch: La moneda del crédito no coincide con la del pedido
785
+ insufficient_authorized_amount: No se pudo capturar más del monto autorizado
786
+ insufficient_funds: El monto del crédito es insuficiente
787
+ successful_action: Acción %{action} realizada con éxito sobre el crédito de la tienda
788
+ unable_to_credit: 'No se pudo acreditar el código: %{auth_code}'
789
+ unable_to_find: No se pudo encontrar el crédito de la tienda
790
+ unable_to_find_for_action: No se pudo encontrar el código del crédito %{auth_code} para la acción %{action}
791
+ unable_to_void: 'No se pudo anular el código: %{auth_code}'
792
+ success: Éxito
793
+ tags: Etiquetas
794
+ tax: Impuestos
795
+ tax_category: Categoría Fiscal
796
+ terms_of_service: Términos del servicio
797
+ there_are_no_items_for_this_order: El pedido no contiene artículos. Por favor, añade un artículo al pedido para continuar.
798
+ tiered_flat_rate: Taza plana por niveles
799
+ tiered_percent: Porcentaje por niveles
800
+ total: Total
801
+ track_inventory: Seguir inventario
802
+ tracking: Tracking
803
+ tracking_number: Número de Tracking
804
+ tracking_url: URL de Tracking
805
+ type: Tipo
806
+ unable_to_connect_to_gateway: No es posible la conexión a la pasarela
807
+ updated_at: Actualizado el
808
+ url: URL
809
+ user: Usuario
810
+ validation:
811
+ must_be_int: debe ser un número entero
812
+ value: Valor
813
+ variant: Variante
814
+ variants: Variantes
815
+ verified: Verificado
816
+ void: Anular
817
+ webhook_mailer:
818
+ endpoint_disabled:
819
+ disabled_at_label: Deshabilitado el
820
+ heading: Endpoint de webhook deshabilitado
821
+ instructions: Comprueba la URL del endpoint y el servicio, y luego vuelve a habilitarlo en Configuración → Desarrolladores → Webhooks.
822
+ message: El endpoint de webhook «%{endpoint_name}» se ha deshabilitado automáticamente tras varios fallos de entrega.
823
+ name_label: Nombre
824
+ reason_label: Motivo
825
+ subject: 'Endpoint de webhook deshabilitado: %{endpoint_name}'
826
+ url_label: URL
827
+ weight: Peso
828
+ weight_unit: Unidad de peso
829
+ width: Longitud
830
+ year: Año
831
+ zip: Postal