spree_core 6.0.0.beta3 → 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,636 @@
1
+ ---
2
+ pt:
3
+ activemodel:
4
+ errors:
5
+ messages:
6
+ blank: não pode ficar em branco
7
+ activerecord:
8
+ attributes:
9
+ spree/address:
10
+ address1: Endereço
11
+ address2: Endereço (cont.)
12
+ city: Cidade
13
+ company: Empresa
14
+ country: País
15
+ label: Nome da morada
16
+ phone: Telefone
17
+ state: Estado
18
+ spree/country:
19
+ iso: ISO
20
+ iso3: ISO3
21
+ iso_name: Nome ISO
22
+ name: Nome
23
+ numcode: Código ISO
24
+ spree/credit_card:
25
+ cc_type: Tipo
26
+ month: Mês
27
+ number: Número
28
+ spree/customer_group:
29
+ description: Descrição
30
+ name: Nome
31
+ spree/gift_card:
32
+ amount_used: Montante utilizado
33
+ expires_at: Expira a
34
+ spree/import:
35
+ preferred_delimiter: Delimitador
36
+ spree/import_mapping:
37
+ file_column: Coluna do ficheiro
38
+ schema_field: Campo do esquema
39
+ spree/import_row:
40
+ row_number: Número
41
+ spree/invitation:
42
+ inviter: Quem convidou
43
+ spree/line_item:
44
+ price: Preço
45
+ quantity: Quantidade
46
+ spree/option_type:
47
+ filterable: Filtrável
48
+ kind: Tipo
49
+ name: Nome
50
+ spree/option_value:
51
+ color_code: Código de cor
52
+ image: Imagem da amostra
53
+ spree/order:
54
+ internal_note: Nota interna
55
+ item_count: Artigos
56
+ number: Número
57
+ spree/payment:
58
+ amount: Quantia
59
+ number: Número
60
+ spree/payment_method:
61
+ name: Nome
62
+ spree/policy:
63
+ body: Corpo
64
+ owner: Política para
65
+ spree/price_list:
66
+ description: Descrição
67
+ ends_at: Termina a
68
+ match_policy: Política de correspondência
69
+ name: Nome
70
+ priority: Prioridade
71
+ starts_at: Começa a
72
+ status: Estado
73
+ spree/price_rule:
74
+ priority: Prioridade
75
+ type: Tipo
76
+ spree/product:
77
+ cost_price: Cost Price
78
+ description: Descrição
79
+ discontinue_on: Descontinuar em
80
+ less_than: Inferior a
81
+ make_active_at: Ativar em
82
+ master_price: Master Price
83
+ more_than: Superior a
84
+ name: Nome
85
+ spree/promotion:
86
+ advertise: Advertise
87
+ code: Código
88
+ description: Descrição
89
+ generate_code: Gerar código de cupão
90
+ promotion_category: Categoria de promoção
91
+ spree/promotion_category:
92
+ code: Código
93
+ spree/shipment:
94
+ number: Número
95
+ spree/store:
96
+ address: Morada
97
+ contact_phone: Telefone de contacto
98
+ preferred_digital_asset_authorized_clicks: Limite de cliques de transferência
99
+ preferred_digital_asset_authorized_days: Limite de dias de transferência
100
+ preferred_limit_digital_download_count: Limitar o número de transferências de ligações digitais
101
+ preferred_limit_digital_download_days: Limitar os dias de transferência de ligações digitais
102
+ seo_robots: Robots de SEO
103
+ storefront_custom_code_body_end: Código personalizado antes da etiqueta de fecho do body
104
+ storefront_custom_code_body_start: Código personalizado após a etiqueta de abertura do body
105
+ storefront_custom_code_head: Código personalizado no head da página
106
+ spree/store_credit:
107
+ amount_used: Montante utilizado
108
+ spree/taxon:
109
+ sort_order: Ordem de classificação
110
+ spree/user:
111
+ avatar: Avatar
112
+ user:
113
+ current_sign_in: Início de sessão atual em
114
+ last_sign_in: Último início de sessão em
115
+ sign_in_count: Número de inícios de sessão
116
+ errors:
117
+ messages:
118
+ blank: não pode ficar em branco
119
+ models:
120
+ spree/allowed_origin:
121
+ attributes:
122
+ origin:
123
+ must_be_origin_only: deve ser uma origem (esquema e anfitrião) sem caminho, consulta ou fragmento
124
+ spree/gift_card:
125
+ attributes:
126
+ base:
127
+ cannot_destroy_used_gift_card: Não é possível eliminar um cartão de oferta já utilizado
128
+ spree/import:
129
+ attributes:
130
+ attachment:
131
+ content_type: tem um tipo de conteúdo não permitido
132
+ type:
133
+ inclusion: não está incluído na lista de tipos permitidos
134
+ spree/market:
135
+ attributes:
136
+ base:
137
+ cannot_destroy_default_market: Não é possível eliminar o mercado predefinido.
138
+ cannot_destroy_last_market: Não é possível eliminar o único mercado.
139
+ spree/market_country:
140
+ attributes:
141
+ country:
142
+ already_in_market: já está atribuído a outro mercado nesta loja
143
+ not_in_shipping_zone: não está coberto por nenhuma zona de envio. Configure primeiro uma zona de envio.
144
+ spree/payment:
145
+ attributes:
146
+ amount:
147
+ greater_than_max_amount: é superior ao montante máximo permitido de %{max_amount}
148
+ spree/price_list:
149
+ attributes:
150
+ ends_at:
151
+ must_be_after_starts_at: deve ser posterior à data de início
152
+ spree/product:
153
+ attributes:
154
+ base:
155
+ cannot_destroy_if_attached_to_line_items: Não é possível eliminar produtos que estão adicionados a encomendas efetuadas. Nesses casos, descontinue-os.
156
+ discontinue_on:
157
+ invalid_date_range: deve ser posterior à data de disponibilidade
158
+ spree/product_publication:
159
+ attributes:
160
+ unpublished_at:
161
+ must_be_after_published_at: deve ser posterior à data de publicação
162
+ spree/promotion:
163
+ attributes:
164
+ expires_at:
165
+ invalid_date_range: deve ser posterior à data de início
166
+ spree/store:
167
+ attributes:
168
+ base:
169
+ cannot_destroy_only_store: Não é possível eliminar a única loja.
170
+ spree/store_credit:
171
+ attributes:
172
+ amount_authorized:
173
+ exceeds_total_credits: Excede o total de créditos.
174
+ amount_used:
175
+ cannot_be_greater_than_amount: Não pode ser superior ao montante.
176
+ greater_than_zero_restrict_delete: é superior a zero. Não é possível eliminar o crédito da loja.
177
+ spree/user:
178
+ attributes:
179
+ bill_address_id:
180
+ belongs_to_other_user: pertence a outro utilizador
181
+ deprecated_in_completed_order: obsoleto numa encomenda concluída
182
+ ship_address_id:
183
+ belongs_to_other_user: pertence a outro utilizador
184
+ deprecated_in_completed_order: obsoleto numa encomenda concluída
185
+ spree/variant:
186
+ attributes:
187
+ base:
188
+ cannot_destroy_if_attached_to_line_items: Não é possível eliminar variantes que estão adicionadas a encomendas efetuadas. Nesses casos, descontinue-as.
189
+ spree/webhook_endpoint:
190
+ attributes:
191
+ url:
192
+ internal_address_not_allowed: não deve apontar para um endereço de rede interna ou privada
193
+ models:
194
+ spree/address:
195
+ one: Morada
196
+ other: Moradas
197
+ spree/classification:
198
+ one: Classificação
199
+ other: Classificações
200
+ spree/country:
201
+ one: País
202
+ other: Países
203
+ spree/credit_card:
204
+ one: Cartão de crédito
205
+ other: Cartões de crédito
206
+ spree/customer_group:
207
+ one: Grupo de clientes
208
+ other: Grupos de clientes
209
+ spree/customer_group_user:
210
+ one: Utilizador de grupo de clientes
211
+ other: Utilizadores de grupo de clientes
212
+ spree/export:
213
+ one: Exportação
214
+ other: Exportações
215
+ spree/integration:
216
+ one: Integração
217
+ other: Integrações
218
+ spree/inventory_unit:
219
+ one: Unidade de inventário
220
+ other: Unidades de inventário
221
+ spree/line_item:
222
+ one: Item de linha
223
+ other: Itens de linha
224
+ spree/option_type:
225
+ one: Tipo de opção
226
+ other: Tipos de opção
227
+ spree/option_value:
228
+ one: Valor de opção
229
+ other: Valores de opção
230
+ spree/order:
231
+ one: Encomenda
232
+ other: Encomendas
233
+ spree/payment:
234
+ one: Pagamento
235
+ other: Pagamentos
236
+ spree/payment_method:
237
+ one: Método de pagamento
238
+ other: Métodos de pagamento
239
+ spree/price:
240
+ one: Preço
241
+ other: Preços
242
+ spree/price_list:
243
+ one: Lista de preços
244
+ other: Listas de preços
245
+ spree/price_rule:
246
+ one: Regra de preço
247
+ other: Regras de preço
248
+ spree/product:
249
+ one: Produto
250
+ other: Produtos
251
+ spree/promotion:
252
+ one: Promoção
253
+ other: Promoções
254
+ spree/promotion_category:
255
+ one: Categoria de promoção
256
+ other: Categorias de promoção
257
+ spree/property:
258
+ one: Propriedade
259
+ other: Propriedades
260
+ spree/refund_reason:
261
+ one: Motivo de reembolso
262
+ other: Motivos de reembolso
263
+ spree/role:
264
+ one: Funções
265
+ other: Funções
266
+ spree/shipment:
267
+ one: Envio
268
+ other: Envios
269
+ spree/shipping_method:
270
+ one: Método de envio
271
+ other: Métodos de envio
272
+ spree/state:
273
+ one: Distrito
274
+ other: Distritos
275
+ spree/stock_location:
276
+ one: Localização de stock
277
+ other: Localizações de stock
278
+ spree/stock_movement:
279
+ one: Movimento de stock
280
+ other: Movimentos de stock
281
+ spree/stock_transfer:
282
+ one: Transferência de stock
283
+ other: Transferências de stock
284
+ spree/store:
285
+ one: Loja
286
+ other: Lojas
287
+ spree/store_credit:
288
+ one: Crédito da loja
289
+ other: Créditos da loja
290
+ spree/tax_category:
291
+ one: Categoria de imposto
292
+ other: Categorias de imposto
293
+ spree/tax_rate:
294
+ one: Taxa de imposto
295
+ other: Taxas de imposto
296
+ spree/taxon:
297
+ one: Categoria
298
+ other: Categorias
299
+ spree/taxonomy:
300
+ one: Categoria
301
+ other: Categorias
302
+ spree/user:
303
+ one: Utilizador
304
+ other: Utilizadores
305
+ spree/variant:
306
+ one: Variante
307
+ other: Variantes
308
+ spree/zone:
309
+ one: Zona
310
+ other: Zonas
311
+ errors:
312
+ messages:
313
+ not_saved:
314
+ one: '1 erro impediu que este %{resource} fosse guardado:'
315
+ other: "%{count} erros impediram que este %{resource} fosse guardado:"
316
+ number:
317
+ percentage:
318
+ format:
319
+ precision: 1
320
+ spree:
321
+ accepts_email_marketing: Aceita marketing por e-mail
322
+ account: Conta
323
+ active: Ativo
324
+ address: Morada
325
+ adjustment: Acerto
326
+ adjustment_labels:
327
+ tax_rates:
328
+ excluding_tax: "%{name}%{amount}"
329
+ including_tax: "%{name}%{amount} (Incluído no preço)"
330
+ adjustments_deleted: Ajustes eliminados
331
+ admin_user_mailer:
332
+ password_reset_email:
333
+ action: Redefinir palavra-passe
334
+ expiry_notice: Esta ligação de redefinição de palavra-passe expirará em breve. Se não fez este pedido, não é necessária qualquer ação.
335
+ greeting: Olá %{name},
336
+ ignore_notice: Se não pediu a redefinição da palavra-passe, pode ignorar este e-mail com segurança. A sua palavra-passe não será alterada.
337
+ instructions: Recebemos um pedido para redefinir a palavra-passe da sua conta de administrador da %{store_name}. Clique no botão abaixo para escolher uma nova palavra-passe.
338
+ subject: Instruções para redefinição de palavra-passe
339
+ amount: Montante
340
+ api_key_no_current_key: Nenhuma chave de API autenticou este pedido
341
+ api_key_scopes_immutable: não pode ser alterado depois de a chave ser criada; crie uma nova chave com os âmbitos de que necessita e revogue esta
342
+ availability: disponibilidade
343
+ bill_address: Endereço para Faturação
344
+ billing_address: Endereço para Faturação
345
+ calculator: Calculadora
346
+ canceled: Cancelada
347
+ cannot_be_destroyed: Não é possível eliminar a encomenda.
348
+ capture: Capturar
349
+ cart: Carrinho de Compras
350
+ cart_already_updated: O carrinho já foi atualizado.
351
+ cart_line_item:
352
+ delivery_unavailable: "%{li_name} não pode ser entregue no endereço selecionado"
353
+ discontinued: "%{li_name} foi removido porque foi descontinuado"
354
+ out_of_stock: "%{li_name} foi removido porque esgotou"
355
+ categories: Categorias
356
+ category: Categoria
357
+ channel: Canal de vendas
358
+ channels: Canais de vendas
359
+ checkout: Finalizar compra
360
+ checkout_requirements:
361
+ email_required: O endereço de e-mail é obrigatório
362
+ line_items_required: Adicione pelo menos um artigo ao seu carrinho
363
+ payment_required: Adicione um método de pagamento
364
+ ship_address_required: A morada de envio é obrigatória
365
+ city: Cidade
366
+ color_code: Código de cor
367
+ compare_at_amount: Montante comparativo
368
+ compare_at_price: Preço comparativo
369
+ complete: completo
370
+ confirm: Confirme
371
+ cost_price: Preço de custo
372
+ country: País
373
+ coupon_code: Código do cupão de desconto
374
+ coupon_code_used: O código de cupão que introduziu já foi utilizado. Tente novamente.
375
+ credit_card: Cartão de Crédito
376
+ currency_not_supported_by_store: não é suportado por esta loja
377
+ customer: Cliente
378
+ customers: Clientes
379
+ default: Padrão
380
+ default_stock_location_name: Localização da loja
381
+ default_wishlist_name: Lista de desejos
382
+ delivery: Entrega
383
+ depth: Espessura
384
+ description: Descrição
385
+ destroy: Destruir
386
+ digital:
387
+ digital_delivery: Entrega digital
388
+ digital_assets: Recursos digitais
389
+ discontinued: Descontinuado
390
+ discontinued_variants_present: Alguns itens de linha desta encomenda contêm produtos que já não estão disponíveis.
391
+ display_delivery_range: Entrega em %{delivery_range} dias úteis
392
+ draft: Rascunho
393
+ eligibility_errors:
394
+ messages:
395
+ no_matching_channel: Este código de cupom não é válido para este canal de venda.
396
+ no_matching_market: Este código de cupom não é válido no seu mercado.
397
+ wrong_country: Este código de cupão não é elegível no seu país
398
+ email: Email
399
+ error: erro
400
+ error_user_destroy_with_orders: Não é possível eliminar um utilizador associado a encomendas
401
+ error_user_does_not_have_any_store_credits: O utilizador não tem créditos da loja disponíveis
402
+ errors:
403
+ messages:
404
+ cannot_delete_default_channel: Não é possível eliminar o canal predefinido. Promova primeiro outro canal a predefinido.
405
+ channel_store_mismatch: deve pertencer à mesma loja
406
+ invalid_order_routing_rule: não é uma regra de encaminhamento de encomendas registada
407
+ invalid_order_routing_strategy: não é uma estratégia de encaminhamento de encomendas registada
408
+ store_association_can_not_be_changed: A associação à loja não pode ser alterada
409
+ store_is_already_set: A loja já está definida
410
+ expired: Expirado
411
+ export_mailer:
412
+ export_done:
413
+ message: Bom trabalho, a sua exportação está pronta! Utilize a ligação abaixo para a transferir.
414
+ subject: A sua exportação %{export_number} foi processada com sucesso!
415
+ greeting: Olá %{user_name},
416
+ field: Campo
417
+ first_name: Nome
418
+ flat_percent: Percentagem (flat)
419
+ flat_rate_per_order: "(Flat) taxa (por pedido)"
420
+ flexible_rate: Taxa Flexivel
421
+ free: Grátis
422
+ gateway: Gateway
423
+ gateway_error: Erro na Gateway
424
+ gift_card: Cartão de oferta
425
+ gift_card_already_redeemed: O cartão de oferta já foi resgatado.
426
+ gift_card_applied: O cartão de oferta foi aplicado com sucesso à sua encomenda!
427
+ gift_card_customer_not_logged_in: Não é possível aplicar o cartão de oferta com um utilizador convidado.
428
+ gift_card_expired: O cartão de oferta expirou.
429
+ gift_card_mismatched_currency: Não é possível aplicar o cartão de oferta com a moeda atual.
430
+ gift_card_mismatched_customer: Este cartão de oferta está associado a outro utilizador.
431
+ gift_card_not_found: O cartão de oferta não foi encontrado.
432
+ gift_card_removed: O cartão de oferta foi removido com sucesso da sua encomenda
433
+ gift_card_using_store_credit_error: Não pode aplicar o cartão de oferta depois de ter aplicado o crédito da loja.
434
+ height: Altura
435
+ i18n:
436
+ this_file_language: Português (PT)
437
+ idempotency_key_reused: Esta Idempotency-Key já foi utilizada com parâmetros de pedido diferentes.
438
+ image: Imagem
439
+ import: Importar
440
+ in_stock: Em stock
441
+ internal_note: Nota interna
442
+ inventory: Inventário
443
+ invitation_mailer:
444
+ greeting: Olá %{user_name},
445
+ invitation_accepted:
446
+ body: "%{invitee_name} aceitou o seu convite para se juntar a %{resource_name}"
447
+ subject: "%{invitee_name} aceitou o seu convite para se juntar a %{resource_name}"
448
+ invitation_email:
449
+ body: "%{inviter_name} convidou-o a juntar-se a %{resource_name}"
450
+ link_description: 'Para aceitar este convite, clique na ligação abaixo:'
451
+ subject: Convite para se juntar a %{resource_name}
452
+ iso: ISO Alpha-2
453
+ item: Artigo
454
+ key: Chave
455
+ kind: Tipo
456
+ label: Etiqueta
457
+ last_name: Sobrenome
458
+ line_item: Item de linha
459
+ line_items: Itens de linha
460
+ link: Ligação
461
+ locale: Idioma
462
+ locale_not_supported_by_store: não é suportado por esta loja
463
+ manual: Manual
464
+ market: Mercado
465
+ me_no_current_user: Nenhum utilizador administrador autenticou este pedido
466
+ media: Multimédia
467
+ meta_description: Descrição
468
+ meta_keywords: Palavras-Chave
469
+ metadata: Metadados
470
+ min_quantity: Quantidade mínima
471
+ month: Mês
472
+ name: Nome
473
+ new_variant: Nova Variante
474
+ no_cc_type: N/D
475
+ none: Nenhum
476
+ number: Número
477
+ on_hand: Em Stock
478
+ only_active_products_can_be_added_to_cart: Os produtos em rascunho e arquivados não podem ser adicionados ao carrinho; marque o produto como ativo primeiro.
479
+ option_name: Nome da opção
480
+ option_type: Tipo de Opção
481
+ option_value: Valor da Opção
482
+ options: Opções
483
+ or: ou
484
+ order: Pedido
485
+ order_routing:
486
+ strategies:
487
+ legacy: Legado
488
+ rules: Regras (ordenadas)
489
+ order_summary: Resumo do Pedido
490
+ orders: Encomendas
491
+ out_of_stock: Esgotado
492
+ path: Caminho
493
+ payment: Pagamento
494
+ payment_method: Método de Pagamento
495
+ payment_methods: Métodos de Pagamento
496
+ payment_processing_failed: Pagamento não foi processado, por favor verifique os detalhes informados.
497
+ payment_source: Origem do pagamento
498
+ phone: Telefone
499
+ price: Preço
500
+ price_range: Intervalo de Preço
501
+ price_rules:
502
+ channel_rule:
503
+ description: Aplicar preços com base no canal de venda
504
+ customer_group_rule:
505
+ description: Aplicar preços a grupos de clientes específicos
506
+ price_sack: Saco de Preço
507
+ prices: Preços
508
+ privacy_policy: Política de privacidade
509
+ processing: A processar
510
+ product: Produto
511
+ product_translations: Traduções de produtos
512
+ products: Produtos
513
+ products_cannot_be_shipped: De momento, não podemos enviar %{product_names} para a sua localização atual. Altere a sua morada de envio ou remova %{product_names} do seu carrinho.
514
+ promotion: Promoção
515
+ promotion_already_used: Não pode eliminar uma promoção que já foi aplicada
516
+ promotion_label: Promoção (%{name})
517
+ promotion_rule_types:
518
+ category:
519
+ description: A encomenda inclui produtos das categorias especificadas
520
+ name: Categorias
521
+ channel:
522
+ description: Limitar a pedidos feitos através do(s) canal(is) especificado(s)
523
+ name: Canal(is)
524
+ country:
525
+ description: Limitar a encomendas com morada de envio num país específico
526
+ name: País
527
+ currency:
528
+ description: Limitar a encomendas numa moeda específica
529
+ name: Moeda
530
+ customer:
531
+ description: Disponível apenas para os clientes especificados
532
+ name: Clientes
533
+ customer_group:
534
+ description: Disponível apenas para clientes do(s) grupo(s) de clientes especificado(s)
535
+ name: Grupo(s) de clientes
536
+ customer_logged_in:
537
+ description: Disponível apenas para clientes com sessão iniciada
538
+ name: Apenas clientes com sessão iniciada
539
+ first_order:
540
+ description: Deve ser o primeiro pedido do utilizador
541
+ name: Primeiro pedido
542
+ item_total:
543
+ description: Total do pedio fecha com estes critérios
544
+ market:
545
+ description: Limitar a pedidos feitos no(s) mercado(s) especificado(s)
546
+ name: Mercado(s)
547
+ product:
548
+ description: Pedido inclui produto(s) específico(s)
549
+ name: Produto(s)
550
+ promotions: Promoções
551
+ query: Consulta
552
+ reason: Razões
553
+ received: Recebido
554
+ refund: Restituição
555
+ refund_amount: Montante de reembolso
556
+ registration: Registo
557
+ remove: Remover
558
+ remove_gift_card_on_completed_order_error: Não pode remover o cartão de oferta depois de a encomenda ter sido efetuada
559
+ resellable: Revendível
560
+ resend: Reenviar
561
+ response_code: Código de Resposta
562
+ return: Devolução
563
+ returned: Devolvido
564
+ returns_policy: Política de devoluções
565
+ row: Linha
566
+ rules: Regras
567
+ scope: Scopo
568
+ selected_quantity_not_available: selecionado de %{item} não está disponível.
569
+ ship: entrega
570
+ ship_address: Endereço da Entrega
571
+ shipment: Distribuição
572
+ shipped: enviado
573
+ shipping: Entrega
574
+ shipping_address: Endereço de Entrega
575
+ shipping_policy: Política de envio
576
+ shipping_rates:
577
+ display_price:
578
+ excluding_tax: "%{price} (+ %{tax_amount} %{tax_rate_name})"
579
+ including_tax: "%{price} (incl. %{tax_amount} %{tax_rate_name})"
580
+ sku: SKU
581
+ status: Estado
582
+ stock_transfer:
583
+ errors:
584
+ must_have_variant: Deve adicionar pelo menos uma variante
585
+ same_location: não pode ser igual à localização de destino
586
+ variants_unavailable: Algumas variantes não estão disponíveis em %{stock}
587
+ store: Loja
588
+ store_credit:
589
+ allocated: Adicionado
590
+ authorized: Autorizado
591
+ captured: Utilizado
592
+ credit: Crédito
593
+ eligible: Elegível
594
+ store_credit_name: Crédito da loja
595
+ store_credit_payment_method:
596
+ currency_mismatch: A moeda do crédito da loja não corresponde à moeda da encomenda
597
+ insufficient_authorized_amount: Não é possível capturar mais do que o montante autorizado
598
+ insufficient_funds: O montante de crédito da loja restante não é suficiente
599
+ successful_action: Crédito da loja %{action} com sucesso
600
+ unable_to_credit: 'Não é possível creditar o código: %{auth_code}'
601
+ unable_to_find: Não foi possível encontrar o crédito da loja
602
+ unable_to_find_for_action: 'Não foi possível encontrar o crédito da loja para o código de autorização: %{auth_code} para a ação: %{action}'
603
+ unable_to_void: 'Não é possível anular o código: %{auth_code}'
604
+ tags: Etiquetas
605
+ tax: Imposto
606
+ tax_category: Categoria de Imposto
607
+ terms_of_service: Termos do serviço
608
+ total: Total
609
+ tracking: Rastreio
610
+ type: Tipo
611
+ unable_to_connect_to_gateway: Impossível conectar-se ao Gateway
612
+ updated_at: Atualizado a
613
+ url: URL
614
+ user: utilizador
615
+ validation:
616
+ must_be_int: deve ser um inteiro
617
+ value: Valor
618
+ variant: Variant
619
+ variants: Variantes
620
+ verified: Verificado
621
+ void: Vazio
622
+ webhook_mailer:
623
+ endpoint_disabled:
624
+ disabled_at_label: Desativado a
625
+ heading: Endpoint de webhook desativado
626
+ instructions: Verifique o URL do endpoint e o serviço e, em seguida, reative-o em Definições → Programadores → Webhooks.
627
+ message: O endpoint de webhook "%{endpoint_name}" foi automaticamente desativado após repetidas falhas de entrega.
628
+ name_label: Nome
629
+ reason_label: Motivo
630
+ subject: 'Endpoint de webhook desativado: %{endpoint_name}'
631
+ url_label: URL
632
+ weight: Peso
633
+ weight_unit: Unidade de peso
634
+ width: Largura
635
+ year: Ano
636
+ zip: Código Postal