spree_core 6.0.0.beta4 → 6.0.0.rc2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (575) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -5
  3. data/app/helpers/spree/images_helper.rb +0 -57
  4. data/app/jobs/spree/base_job.rb +21 -0
  5. data/app/jobs/spree/carts/reap_expired_job.rb +2 -2
  6. data/app/jobs/spree/collections/regenerate_time_based_job.rb +6 -3
  7. data/app/jobs/spree/orders/finalize_stale_drafts_job.rb +8 -5
  8. data/app/jobs/spree/payments/cancel_unused_sessions_job.rb +61 -0
  9. data/app/jobs/spree/search_provider/index_job.rb +4 -0
  10. data/app/jobs/spree/seller_payouts/sweep_seller_job.rb +2 -0
  11. data/app/jobs/spree/uploads/purge_unattached_job.rb +49 -0
  12. data/app/mailers/spree/admin_user_mailer.rb +4 -19
  13. data/app/mailers/spree/base_mailer.rb +97 -13
  14. data/app/mailers/spree/email_template_mailer.rb +27 -0
  15. data/app/mailers/spree/export_mailer.rb +3 -4
  16. data/app/mailers/spree/import_mailer.rb +3 -4
  17. data/app/mailers/spree/invitation_mailer.rb +24 -7
  18. data/app/mailers/spree/seller_user_mailer.rb +4 -16
  19. data/app/mailers/spree/webhook_mailer.rb +2 -2
  20. data/app/models/concerns/spree/acted_by.rb +1 -1
  21. data/app/models/concerns/spree/admin_user_methods.rb +15 -1
  22. data/app/models/concerns/spree/api_typed.rb +91 -0
  23. data/app/models/concerns/spree/calculated_adjustments.rb +41 -13
  24. data/app/models/concerns/spree/calculator/currency_amounts.rb +1 -1
  25. data/app/models/concerns/spree/calculator/tiers.rb +63 -0
  26. data/app/models/concerns/spree/canonical_decimals.rb +61 -0
  27. data/app/models/concerns/spree/customer_methods.rb +23 -18
  28. data/app/models/concerns/spree/derived_number.rb +11 -13
  29. data/app/models/concerns/spree/email_template_identity.rb +52 -0
  30. data/app/models/concerns/spree/parameterizable_name.rb +2 -0
  31. data/app/models/concerns/spree/payment_session_transitions.rb +8 -2
  32. data/app/models/concerns/spree/post_sale/taxation.rb +54 -0
  33. data/app/models/concerns/spree/post_sale/taxed_line.rb +51 -0
  34. data/app/models/concerns/spree/preference_schema/json_schema.rb +139 -0
  35. data/app/models/concerns/spree/preference_schema.rb +62 -32
  36. data/app/models/concerns/spree/product_scopes.rb +16 -2
  37. data/app/models/concerns/spree/provider_listing.rb +41 -0
  38. data/app/models/concerns/spree/publishable.rb +82 -14
  39. data/app/models/concerns/spree/purchase/addresses.rb +23 -10
  40. data/app/models/concerns/spree/purchase/currency.rb +1 -1
  41. data/app/models/concerns/spree/purchase/deprecated_aliases.rb +87 -0
  42. data/app/models/concerns/spree/purchase/gift_cards.rb +10 -4
  43. data/app/models/concerns/spree/purchase/locale.rb +1 -1
  44. data/app/models/concerns/spree/purchase/payment_processing.rb +8 -4
  45. data/app/models/concerns/spree/purchase/purchase_order.rb +9 -4
  46. data/app/models/concerns/spree/purchase/store_credits.rb +36 -1
  47. data/app/models/concerns/spree/purchase/totals.rb +49 -8
  48. data/app/models/concerns/spree/ransackable_attributes.rb +46 -0
  49. data/app/models/concerns/spree/receivable.rb +1 -1
  50. data/app/models/concerns/spree/searchable.rb +0 -4
  51. data/app/models/concerns/spree/secret_preferences.rb +59 -0
  52. data/app/models/concerns/spree/signed_id_attachments.rb +54 -0
  53. data/app/models/concerns/spree/single_store_resource.rb +1 -1
  54. data/app/models/concerns/spree/stores/email_branding.rb +32 -0
  55. data/app/models/concerns/spree/stores/markets.rb +5 -2
  56. data/app/models/concerns/spree/type_labels.rb +38 -0
  57. data/app/models/concerns/spree/typed_adjustment_line.rb +5 -6
  58. data/app/models/concerns/spree/typed_associations.rb +12 -18
  59. data/app/models/concerns/spree/vat_price_calculation.rb +5 -6
  60. data/app/models/spree/address.rb +12 -2
  61. data/app/models/spree/adjusters/largest_remainder.rb +14 -1
  62. data/app/models/spree/adjusters/promotion.rb +4 -19
  63. data/app/models/spree/allowed_origin.rb +3 -1
  64. data/app/models/spree/api_key.rb +5 -6
  65. data/app/models/spree/authentication/strategies/oidc_strategy.rb +5 -5
  66. data/app/models/spree/base.rb +99 -22
  67. data/app/models/spree/calculator/flat_percent_item_total.rb +2 -4
  68. data/app/models/spree/calculator/flat_rate.rb +3 -5
  69. data/app/models/spree/calculator/flexi_rate.rb +4 -6
  70. data/app/models/spree/calculator/percent_on_line_item.rb +2 -2
  71. data/app/models/spree/calculator/price_sack.rb +5 -7
  72. data/app/models/spree/calculator/shipping/digital_delivery.rb +3 -5
  73. data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +7 -7
  74. data/app/models/spree/calculator/shipping/flat_rate.rb +5 -7
  75. data/app/models/spree/calculator/shipping/flexi_rate.rb +4 -6
  76. data/app/models/spree/calculator/shipping/per_item.rb +3 -5
  77. data/app/models/spree/calculator/shipping/price_sack.rb +5 -7
  78. data/app/models/spree/calculator/tiered_flat_rate.rb +7 -24
  79. data/app/models/spree/calculator/tiered_percent.rb +7 -25
  80. data/app/models/spree/cart.rb +78 -18
  81. data/app/models/spree/catalog.rb +1 -0
  82. data/app/models/spree/catalog_price.rb +0 -7
  83. data/app/models/spree/catalog_price_tier.rb +0 -8
  84. data/app/models/spree/category.rb +3 -1
  85. data/app/models/spree/channel/gating.rb +3 -2
  86. data/app/models/spree/channel.rb +6 -4
  87. data/app/models/spree/claim.rb +22 -1
  88. data/app/models/spree/claim_line_item.rb +41 -6
  89. data/app/models/spree/collection.rb +2 -1
  90. data/app/models/spree/collection_rule.rb +5 -21
  91. data/app/models/spree/commission_line.rb +1 -1
  92. data/app/models/spree/commission_rate.rb +7 -4
  93. data/app/models/spree/commission_rate_value.rb +1 -1
  94. data/app/models/spree/commission_rule.rb +4 -11
  95. data/app/models/spree/commission_rules/category_rule.rb +2 -5
  96. data/app/models/spree/commission_rules/item_total_rule.rb +2 -2
  97. data/app/models/spree/commission_rules/product_rule.rb +1 -1
  98. data/app/models/spree/commission_rules/seller_rule.rb +2 -5
  99. data/app/models/spree/company.rb +1 -0
  100. data/app/models/spree/company_invitation.rb +1 -0
  101. data/app/models/spree/consent_record.rb +0 -1
  102. data/app/models/spree/credit_card.rb +1 -1
  103. data/app/models/spree/current.rb +23 -0
  104. data/app/models/spree/custom_field.rb +2 -2
  105. data/app/models/spree/custom_field_definition.rb +20 -35
  106. data/app/models/spree/custom_fields/boolean.rb +1 -1
  107. data/app/models/spree/custom_fields/json.rb +1 -1
  108. data/app/models/spree/customer_group.rb +1 -0
  109. data/app/models/spree/data_feed/google.rb +0 -2
  110. data/app/models/spree/data_request.rb +2 -1
  111. data/app/models/spree/delivery_method.rb +36 -14
  112. data/app/models/spree/delivery_method_rule.rb +4 -11
  113. data/app/models/spree/delivery_method_rules/channel_rule.rb +2 -5
  114. data/app/models/spree/delivery_method_rules/item_total_rule.rb +2 -2
  115. data/app/models/spree/delivery_profile.rb +1 -0
  116. data/app/models/spree/delivery_rate.rb +7 -8
  117. data/app/models/spree/delivery_rate_provider/base.rb +1 -0
  118. data/app/models/spree/delivery_zone.rb +1 -2
  119. data/app/models/spree/delivery_zone_member.rb +4 -4
  120. data/app/models/spree/digital_asset.rb +7 -0
  121. data/app/models/spree/digital_asset_provider/base.rb +2 -0
  122. data/app/models/spree/digital_link.rb +2 -5
  123. data/app/models/spree/discount.rb +1 -1
  124. data/app/models/spree/email_template.rb +25 -0
  125. data/app/models/spree/email_template_draft.rb +13 -0
  126. data/app/models/spree/email_template_revision.rb +17 -0
  127. data/app/models/spree/email_templates/entry.rb +118 -0
  128. data/app/models/spree/email_templates/sample_record.rb +16 -0
  129. data/app/models/spree/emails/branding.rb +80 -0
  130. data/app/models/spree/exchange.rb +16 -1
  131. data/app/models/spree/exchange_line_item.rb +121 -5
  132. data/app/models/spree/export.rb +0 -1
  133. data/app/models/spree/exports/products.rb +10 -1
  134. data/app/models/spree/exports/report.rb +3 -3
  135. data/app/models/spree/fee.rb +4 -2
  136. data/app/models/spree/file_upload.rb +155 -0
  137. data/app/models/spree/fulfillment.rb +66 -30
  138. data/app/models/spree/fulfillment_changer.rb +2 -2
  139. data/app/models/spree/fulfillment_group.rb +6 -1
  140. data/app/models/spree/fulfillment_item.rb +0 -4
  141. data/app/models/spree/fulfillment_provider/base.rb +1 -0
  142. data/app/models/spree/gateway/bogus.rb +6 -0
  143. data/app/models/spree/gateway/custom_payment_source_method.rb +5 -0
  144. data/app/models/spree/gateway.rb +6 -2
  145. data/app/models/spree/gift_card.rb +18 -8
  146. data/app/models/spree/gift_card_batch.rb +3 -5
  147. data/app/models/spree/import.rb +5 -7
  148. data/app/models/spree/import_mapping.rb +1 -2
  149. data/app/models/spree/import_row.rb +2 -2
  150. data/app/models/spree/import_schemas/products.rb +1 -0
  151. data/app/models/spree/integration.rb +9 -19
  152. data/app/models/spree/invitation.rb +5 -5
  153. data/app/models/spree/line_item.rb +15 -4
  154. data/app/models/spree/locale.rb +11 -8
  155. data/app/models/spree/market.rb +8 -2
  156. data/app/models/spree/media.rb +1 -9
  157. data/app/models/spree/newsletter_subscriber.rb +4 -0
  158. data/app/models/spree/option_type.rb +2 -1
  159. data/app/models/spree/option_value.rb +2 -1
  160. data/app/models/spree/order.rb +60 -142
  161. data/app/models/spree/order_group.rb +18 -4
  162. data/app/models/spree/order_inventory.rb +10 -5
  163. data/app/models/spree/order_promotion.rb +1 -1
  164. data/app/models/spree/order_routing/has_strategy_preference.rb +1 -1
  165. data/app/models/spree/order_routing/strategy/base.rb +4 -2
  166. data/app/models/spree/order_routing/strategy/rules.rb +1 -1
  167. data/app/models/spree/order_routing_rule.rb +6 -22
  168. data/app/models/spree/package_type.rb +2 -2
  169. data/app/models/spree/payment/gateway_options.rb +15 -53
  170. data/app/models/spree/payment/processing.rb +2 -4
  171. data/app/models/spree/payment.rb +21 -13
  172. data/app/models/spree/payment_method/check.rb +2 -0
  173. data/app/models/spree/payment_method/session_instrumentation.rb +1 -0
  174. data/app/models/spree/payment_method/store_credit.rb +15 -13
  175. data/app/models/spree/payment_method.rb +78 -6
  176. data/app/models/spree/payment_session.rb +5 -1
  177. data/app/models/spree/payment_setup_session.rb +1 -0
  178. data/app/models/spree/payout_provider/base.rb +3 -1
  179. data/app/models/spree/pickup_point_provider/base.rb +2 -0
  180. data/app/models/spree/policy.rb +1 -0
  181. data/app/models/spree/price.rb +17 -14
  182. data/app/models/spree/price_adjustment_tier.rb +4 -0
  183. data/app/models/spree/price_list.rb +14 -9
  184. data/app/models/spree/price_rules/channel_rule.rb +3 -6
  185. data/app/models/spree/price_rules/customer_group_rule.rb +3 -6
  186. data/app/models/spree/price_rules/market_rule.rb +2 -5
  187. data/app/models/spree/price_rules/user_rule.rb +1 -3
  188. data/app/models/spree/product/channels.rb +9 -2
  189. data/app/models/spree/product.rb +54 -30
  190. data/app/models/spree/product_submission.rb +0 -12
  191. data/app/models/spree/product_type.rb +1 -1
  192. data/app/models/spree/promotion/actions/create_line_items.rb +28 -18
  193. data/app/models/spree/promotion/rules/category.rb +1 -5
  194. data/app/models/spree/promotion/rules/channel.rb +2 -9
  195. data/app/models/spree/promotion/rules/country.rb +3 -8
  196. data/app/models/spree/promotion/rules/currency.rb +1 -5
  197. data/app/models/spree/promotion/rules/customer_group.rb +2 -9
  198. data/app/models/spree/promotion/rules/first_order.rb +0 -4
  199. data/app/models/spree/promotion/rules/item_total.rb +6 -10
  200. data/app/models/spree/promotion/rules/market.rb +2 -9
  201. data/app/models/spree/promotion/rules/one_use_per_user.rb +0 -4
  202. data/app/models/spree/promotion/rules/option_value.rb +2 -6
  203. data/app/models/spree/promotion/rules/product.rb +1 -5
  204. data/app/models/spree/promotion/rules/user.rb +0 -4
  205. data/app/models/spree/promotion/rules/user_logged_in.rb +0 -4
  206. data/app/models/spree/promotion.rb +36 -6
  207. data/app/models/spree/promotion_action.rb +7 -14
  208. data/app/models/spree/promotion_action_line_item.rb +1 -1
  209. data/app/models/spree/promotion_handler/coupon.rb +59 -27
  210. data/app/models/spree/promotion_rule.rb +7 -14
  211. data/app/models/spree/purchase_order.rb +3 -0
  212. data/app/models/spree/quantity_rule.rb +1 -1
  213. data/app/models/spree/refund.rb +41 -18
  214. data/app/models/spree/return.rb +31 -2
  215. data/app/models/spree/return_line_item.rb +65 -14
  216. data/app/models/spree/role.rb +7 -7
  217. data/app/models/spree/saved_report.rb +2 -1
  218. data/app/models/spree/search_provider/base.rb +4 -0
  219. data/app/models/spree/seller.rb +10 -2
  220. data/app/models/spree/seller_payout.rb +8 -0
  221. data/app/models/spree/seller_requirement.rb +5 -12
  222. data/app/models/spree/seller_requirement_custom_field.rb +1 -2
  223. data/app/models/spree/seller_requirement_submission.rb +3 -2
  224. data/app/models/spree/seller_requirements/accept_terms.rb +2 -3
  225. data/app/models/spree/seller_transfer.rb +6 -0
  226. data/app/models/spree/shipping_label.rb +2 -0
  227. data/app/models/spree/stock/availability_validator.rb +2 -2
  228. data/app/models/spree/stock/estimator.rb +1 -1
  229. data/app/models/spree/stock/inventory_unit_builder.rb +1 -1
  230. data/app/models/spree/stock/packer.rb +2 -2
  231. data/app/models/spree/stock/splitter/weight.rb +1 -1
  232. data/app/models/spree/stock_level/custom_events.rb +6 -0
  233. data/app/models/spree/stock_level.rb +3 -1
  234. data/app/models/spree/stock_location.rb +1 -0
  235. data/app/models/spree/stock_movement.rb +1 -1
  236. data/app/models/spree/stock_receipt_item.rb +1 -1
  237. data/app/models/spree/stock_reservation.rb +2 -2
  238. data/app/models/spree/stock_transfer.rb +6 -2
  239. data/app/models/spree/store.rb +70 -19
  240. data/app/models/spree/store_credit.rb +13 -13
  241. data/app/models/spree/store_credit_event.rb +5 -5
  242. data/app/models/spree/supplier.rb +1 -0
  243. data/app/models/spree/tax_category.rb +1 -0
  244. data/app/models/spree/tax_exemption_certificate.rb +3 -0
  245. data/app/models/spree/tax_identifier.rb +3 -1
  246. data/app/models/spree/tax_line.rb +53 -3
  247. data/app/models/spree/tax_provider/base.rb +71 -14
  248. data/app/models/spree/tax_provider/internal.rb +70 -41
  249. data/app/models/spree/tax_provider/recorded_share.rb +114 -0
  250. data/app/models/spree/tax_rate.rb +30 -8
  251. data/app/models/spree/taxon.rb +1 -1
  252. data/app/models/spree/taxonomy.rb +0 -1
  253. data/app/models/spree/update_status.rb +25 -0
  254. data/app/models/spree/variant.rb +10 -12
  255. data/app/models/spree/variant_media.rb +1 -1
  256. data/app/models/spree/webhook_delivery.rb +1 -0
  257. data/app/models/spree/webhook_endpoint.rb +46 -13
  258. data/app/models/spree/wishlist.rb +1 -6
  259. data/app/models/spree/wishlist_item/custom_events.rb +6 -0
  260. data/app/presenters/spree/csv/customer_presenter.rb +1 -1
  261. data/app/presenters/spree/csv/newsletter_subscriber_presenter.rb +1 -1
  262. data/app/presenters/spree/csv/order_line_item_presenter.rb +10 -6
  263. data/app/presenters/spree/csv/price_list_price_presenter.rb +3 -8
  264. data/app/presenters/spree/csv/product_variant_presenter.rb +59 -20
  265. data/app/presenters/spree/csv/purchase_order_item_presenter.rb +1 -3
  266. data/app/serializers/spree/emails/base_serializer.rb +14 -0
  267. data/app/serializers/spree/emails/export_serializer.rb +13 -0
  268. data/app/serializers/spree/emails/import_serializer.rb +19 -0
  269. data/app/serializers/spree/emails/invitation_serializer.rb +28 -0
  270. data/app/serializers/spree/emails/store_serializer.rb +31 -0
  271. data/app/serializers/spree/emails/user_serializer.rb +12 -0
  272. data/app/serializers/spree/emails/webhook_endpoint_serializer.rb +16 -0
  273. data/app/services/spree/carts/create.rb +8 -2
  274. data/app/services/spree/carts/destroy.rb +2 -2
  275. data/app/services/spree/carts/remove_out_of_stock_items.rb +2 -2
  276. data/app/services/spree/carts/split_by_seller.rb +1 -1
  277. data/app/services/spree/carts/update.rb +22 -8
  278. data/app/services/spree/catalogs/set_product_terms.rb +1 -1
  279. data/app/services/spree/categories/add_products.rb +13 -31
  280. data/app/services/spree/categories/remove_products.rb +12 -51
  281. data/app/services/spree/checkout/advance.rb +1 -4
  282. data/app/services/spree/collections/add_products.rb +10 -23
  283. data/app/services/spree/collections/remove_products.rb +7 -43
  284. data/app/services/spree/coupon_codes/bulk_generate.rb +8 -14
  285. data/app/services/spree/data_requests/create.rb +1 -1
  286. data/app/services/spree/deliveries/destroy.rb +2 -2
  287. data/app/services/spree/email_templates/check.rb +58 -0
  288. data/app/services/spree/email_templates/no_sample_record.rb +7 -0
  289. data/app/services/spree/email_templates/preview.rb +99 -0
  290. data/app/services/spree/emails/file_system.rb +23 -0
  291. data/app/services/spree/emails/filters.rb +84 -0
  292. data/app/services/spree/emails/liquid_context.rb +48 -0
  293. data/app/services/spree/emails/rendered_email.rb +14 -0
  294. data/app/services/spree/emails/renderer.rb +125 -0
  295. data/app/services/spree/emails/template.rb +51 -0
  296. data/app/services/spree/emails/template_data.rb +23 -0
  297. data/app/services/spree/emails/template_resolver.rb +109 -0
  298. data/app/services/spree/emails/text_converter.rb +72 -0
  299. data/app/services/spree/emails/translation_inliner.rb +134 -0
  300. data/app/services/spree/imports/row_processors/price_list_price.rb +10 -10
  301. data/app/services/spree/imports/row_processors/product_variant.rb +77 -34
  302. data/app/services/spree/imports/row_processors/purchase_order.rb +13 -13
  303. data/app/services/spree/locales.rb +43 -10
  304. data/app/services/spree/newsletter/subscribe.rb +8 -12
  305. data/app/services/spree/orders/build_fulfillments.rb +3 -2
  306. data/app/services/spree/orders/create.rb +5 -4
  307. data/app/services/spree/orders/discounts/create.rb +14 -11
  308. data/app/services/spree/orders/discounts/destroy.rb +1 -0
  309. data/app/services/spree/orders/discounts/update.rb +1 -0
  310. data/app/services/spree/orders/fees/create.rb +1 -0
  311. data/app/services/spree/orders/fees/destroy.rb +1 -0
  312. data/app/services/spree/orders/fees/update.rb +1 -0
  313. data/app/services/spree/orders/remove_line_item.rb +13 -3
  314. data/app/services/spree/orders/update.rb +10 -6
  315. data/app/services/spree/orders/update_item.rb +6 -3
  316. data/app/services/spree/orders/update_statuses.rb +3 -1
  317. data/app/services/spree/prices/bulk_upsert.rb +32 -25
  318. data/app/services/spree/product_memberships.rb +61 -0
  319. data/app/services/spree/returns/eligibility_validator.rb +1 -1
  320. data/app/services/spree/search_provider/custom_field_schema.rb +2 -2
  321. data/app/services/spree/seeds/commission_rates.rb +1 -1
  322. data/app/services/spree/seeds/digital_delivery.rb +1 -1
  323. data/app/services/spree/seeds/payment_methods.rb +2 -2
  324. data/app/services/spree/seeds/saved_reports.rb +3 -3
  325. data/app/services/spree/seeds/stores.rb +1 -1
  326. data/app/services/spree/sellers/requirements.rb +1 -2
  327. data/app/services/spree/shipping_labels/confirm_refund.rb +1 -1
  328. data/app/services/spree/shipping_labels/store_file.rb +3 -3
  329. data/app/services/spree/stock_levels/correct.rb +3 -3
  330. data/app/services/spree/stock_reservations/reserve.rb +2 -3
  331. data/app/services/spree/store_credits/apply.rb +15 -13
  332. data/app/services/spree/stores/provision_defaults.rb +23 -25
  333. data/app/services/spree/update_check.rb +160 -0
  334. data/app/services/spree/uploads/assign_stores.rb +92 -0
  335. data/app/subscribers/spree/seller_onboarding_subscriber.rb +1 -1
  336. data/app/validators/spree/attachment_content_type_validator.rb +19 -2
  337. data/app/validators/spree/locale_codes_validator.rb +22 -0
  338. data/app/views/layouts/spree/base_mailer.html.erb +2 -43
  339. data/app/views/layouts/spree/base_mailer.liquid +79 -0
  340. data/app/views/spree/admin_user_mailer/password_reset_email.liquid +14 -0
  341. data/app/views/spree/export_mailer/export_done.liquid +12 -0
  342. data/app/views/spree/import_mailer/import_done.liquid +15 -0
  343. data/app/views/spree/invitation_mailer/invitation_accepted.liquid +9 -0
  344. data/app/views/spree/invitation_mailer/invitation_email.liquid +13 -0
  345. data/app/views/spree/seller_user_mailer/password_reset_email.liquid +14 -0
  346. data/app/views/spree/shared/_mailer_button.html.erb +4 -5
  347. data/app/views/spree/shared/_mailer_hero.html.erb +6 -5
  348. data/app/views/spree/shared/_summary_row.liquid +8 -0
  349. data/app/views/spree/webhook_mailer/endpoint_disabled.liquid +21 -0
  350. data/app/workflows/spree/carts/add_item.rb +4 -4
  351. data/app/workflows/spree/carts/complete.rb +13 -3
  352. data/app/workflows/spree/carts/merge.rb +1 -1
  353. data/app/workflows/spree/carts/recalculate_totals.rb +5 -0
  354. data/app/workflows/spree/carts/upsert_items.rb +18 -9
  355. data/app/workflows/spree/claims/approve.rb +5 -22
  356. data/app/workflows/spree/claims/cancel.rb +5 -21
  357. data/app/workflows/spree/claims/create.rb +15 -0
  358. data/app/workflows/spree/claims/deny.rb +7 -0
  359. data/app/workflows/spree/claims/resolve.rb +34 -31
  360. data/app/workflows/spree/customers/anonymize.rb +3 -4
  361. data/app/workflows/spree/customers/create.rb +1 -1
  362. data/app/workflows/spree/data_requests/fulfill.rb +2 -2
  363. data/app/workflows/spree/deliveries/update_tracking.rb +1 -1
  364. data/app/workflows/spree/email_templates/discard_draft.rb +20 -0
  365. data/app/workflows/spree/email_templates/publish.rb +70 -0
  366. data/app/workflows/spree/email_templates/restore_revision.rb +33 -0
  367. data/app/workflows/spree/email_templates/revert.rb +29 -0
  368. data/app/workflows/spree/email_templates/save_draft.rb +85 -0
  369. data/app/workflows/spree/exchanges/approve.rb +5 -22
  370. data/app/workflows/spree/exchanges/cancel.rb +5 -21
  371. data/app/workflows/spree/exchanges/create.rb +6 -0
  372. data/app/workflows/spree/exchanges/fulfill.rb +75 -51
  373. data/app/workflows/spree/exchanges/receive.rb +6 -65
  374. data/app/workflows/spree/fulfillments/cancel.rb +1 -1
  375. data/app/workflows/spree/fulfillments/create.rb +53 -49
  376. data/app/workflows/spree/fulfillments/fulfill.rb +23 -27
  377. data/app/workflows/spree/fulfillments/mark_delivered.rb +1 -1
  378. data/app/workflows/spree/fulfillments/replacements.rb +59 -0
  379. data/app/workflows/spree/gift_cards/apply.rb +2 -2
  380. data/app/workflows/spree/orders/add_item.rb +5 -1
  381. data/app/workflows/spree/orders/cancel.rb +3 -3
  382. data/app/workflows/spree/orders/complete.rb +16 -8
  383. data/app/workflows/spree/payments/capture.rb +20 -5
  384. data/app/workflows/spree/payments/process.rb +5 -3
  385. data/app/workflows/spree/post_sale/approval.rb +35 -0
  386. data/app/workflows/spree/post_sale/cancellation.rb +44 -0
  387. data/app/workflows/spree/post_sale/receipt.rb +92 -0
  388. data/app/workflows/spree/price_lists/update.rb +4 -4
  389. data/app/workflows/spree/products/nested_attributes.rb +1 -1
  390. data/app/workflows/spree/purchase_orders/cancel.rb +1 -1
  391. data/app/workflows/spree/purchase_orders/close.rb +3 -31
  392. data/app/workflows/spree/purchase_orders/create.rb +3 -1
  393. data/app/workflows/spree/purchase_orders/mark_draft.rb +2 -2
  394. data/app/workflows/spree/purchase_orders/mark_ordered.rb +2 -2
  395. data/app/workflows/spree/purchase_orders/receive.rb +1 -1
  396. data/app/workflows/spree/purchase_orders/update.rb +5 -34
  397. data/app/workflows/spree/receivables/closing_short.rb +46 -0
  398. data/app/workflows/spree/receivables/draft_editing.rb +48 -0
  399. data/app/workflows/spree/refunds/create.rb +5 -2
  400. data/app/workflows/spree/refunds/order_payments.rb +14 -2
  401. data/app/workflows/spree/refunds/tax_credit.rb +67 -0
  402. data/app/workflows/spree/returns/approve.rb +5 -22
  403. data/app/workflows/spree/returns/cancel.rb +5 -22
  404. data/app/workflows/spree/returns/create.rb +8 -0
  405. data/app/workflows/spree/returns/receive.rb +5 -76
  406. data/app/workflows/spree/returns/refund.rb +31 -8
  407. data/app/workflows/spree/seller_requirement_submissions/create.rb +1 -2
  408. data/app/workflows/spree/seller_transfers/reverse.rb +28 -1
  409. data/app/workflows/spree/shipping_labels/purchase.rb +8 -8
  410. data/app/workflows/spree/shipping_labels/record.rb +7 -7
  411. data/app/workflows/spree/shipping_labels/refund.rb +2 -2
  412. data/app/workflows/spree/stock_receipts/recording.rb +4 -4
  413. data/app/workflows/spree/stock_transfers/cancel.rb +2 -2
  414. data/app/workflows/spree/stock_transfers/close.rb +3 -30
  415. data/app/workflows/spree/stock_transfers/create.rb +3 -1
  416. data/app/workflows/spree/stock_transfers/mark_draft.rb +1 -1
  417. data/app/workflows/spree/stock_transfers/mark_in_transit.rb +3 -3
  418. data/app/workflows/spree/stock_transfers/mark_ready.rb +2 -2
  419. data/app/workflows/spree/stock_transfers/receive.rb +1 -1
  420. data/app/workflows/spree/stock_transfers/update.rb +5 -33
  421. data/config/currency_exponents.json +180 -0
  422. data/config/i18n-tasks.yml +32 -18
  423. data/config/initializers/alba.rb +7 -0
  424. data/config/language_names.csv +264 -0
  425. data/config/locales/ar.yml +811 -0
  426. data/config/locales/be.yml +855 -0
  427. data/config/locales/bg.yml +723 -0
  428. data/config/locales/ca.yml +689 -0
  429. data/config/locales/content_locales.rb +9 -0
  430. data/config/locales/cs.yml +855 -0
  431. data/config/locales/da.yml +771 -0
  432. data/config/locales/de-CH.yml +248 -0
  433. data/config/locales/de.yml +835 -0
  434. data/config/locales/el.yml +769 -0
  435. data/config/locales/en.yml +47 -505
  436. data/config/locales/es-CL.yml +301 -0
  437. data/config/locales/es-EC.yml +186 -0
  438. data/config/locales/es-MX.yml +334 -0
  439. data/config/locales/es.yml +831 -0
  440. data/config/locales/et.yml +644 -0
  441. data/config/locales/fa.yml +709 -0
  442. data/config/locales/fi.yml +771 -0
  443. data/config/locales/fr.yml +830 -0
  444. data/config/locales/hu.yml +751 -0
  445. data/config/locales/id.yml +756 -0
  446. data/config/locales/it.yml +833 -0
  447. data/config/locales/ja.yml +726 -0
  448. data/config/locales/km.yml +759 -0
  449. data/config/locales/ko.yml +575 -0
  450. data/config/locales/ku.yml +753 -0
  451. data/config/locales/lt.yml +821 -0
  452. data/config/locales/lv.yml +685 -0
  453. data/config/locales/nb.yml +824 -0
  454. data/config/locales/ne.yml +823 -0
  455. data/config/locales/nl.yml +826 -0
  456. data/config/locales/pl.yml +835 -0
  457. data/config/locales/pt-BR.yml +547 -0
  458. data/config/locales/pt.yml +636 -0
  459. data/config/locales/ro.yml +750 -0
  460. data/config/locales/ru.yml +834 -0
  461. data/config/locales/sk.yml +680 -0
  462. data/config/locales/sl-SI.yml +600 -0
  463. data/config/locales/sv.yml +827 -0
  464. data/config/locales/th.yml +745 -0
  465. data/config/locales/tr.yml +777 -0
  466. data/config/locales/uk.yml +836 -0
  467. data/config/locales/vi.yml +768 -0
  468. data/config/locales/zh-CN.yml +786 -0
  469. data/config/locales/zh-TW.yml +834 -0
  470. data/db/migrate/20260925000001_add_replacement_to_spree_fulfillment_items.rb +5 -0
  471. data/db/migrate/20261001000001_add_post_sale_tax.rb +30 -0
  472. data/db/migrate/20261001000001_convert_preferences_to_json.rb +166 -0
  473. data/db/migrate/20261001000001_create_spree_email_templates.rb +52 -0
  474. data/db/migrate/20261009000001_change_money_columns_to_decimal_19_4.rb +116 -0
  475. data/db/migrate/20261010000001_add_store_id_to_active_storage_blobs.rb +12 -0
  476. data/lib/generators/spree/dummy/dummy_generator.rb +0 -9
  477. data/lib/generators/spree/dummy/templates/rails/test.rb +26 -0
  478. data/lib/spree/checkout/default_requirements.rb +37 -13
  479. data/lib/spree/core/configuration.rb +19 -1
  480. data/lib/spree/core/controller_helpers/store.rb +1 -1
  481. data/lib/spree/core/dependencies.rb +5 -4
  482. data/lib/spree/core/emails/escaped_output.rb +60 -0
  483. data/lib/spree/core/engine.rb +72 -165
  484. data/lib/spree/core/permissions/default_catalog.rb +5 -0
  485. data/lib/spree/core/preferences/invalid_preferences.rb +18 -0
  486. data/lib/spree/core/preferences/json_conversion.rb +186 -0
  487. data/lib/spree/core/preferences/masking.rb +55 -2
  488. data/lib/spree/core/preferences/preferable.rb +343 -103
  489. data/lib/spree/core/preferences/preferable_class_methods.rb +188 -136
  490. data/lib/spree/core/previews/import_preview.rb +10 -0
  491. data/lib/spree/core/ransack_configuration.rb +13 -2
  492. data/lib/spree/core/tax/provider_error.rb +37 -0
  493. data/lib/spree/core/version.rb +1 -1
  494. data/lib/spree/core.rb +91 -373
  495. data/lib/spree/emails/editable_templates.rb +82 -0
  496. data/lib/spree/events/catalog.rb +189 -0
  497. data/lib/spree/events.rb +21 -1
  498. data/lib/spree/hooks.rb +0 -17
  499. data/lib/spree/i18n.rb +32 -15
  500. data/lib/spree/iso_data.rb +7 -0
  501. data/lib/spree/localized_number.rb +6 -0
  502. data/lib/spree/migrations.rb +4 -1
  503. data/lib/spree/money.rb +196 -15
  504. data/lib/spree/reporting/adapters/base.rb +7 -6
  505. data/lib/spree/reporting/adapters/live.rb +6 -6
  506. data/lib/spree/reporting/default_vocabulary.rb +22 -10
  507. data/lib/spree/reporting/hydration.rb +1 -1
  508. data/lib/spree/reporting/query.rb +8 -0
  509. data/lib/spree/reporting/registry.rb +13 -0
  510. data/lib/spree/reporting/schema.rb +10 -10
  511. data/lib/spree/testing_support/editable_email_templates.rb +61 -0
  512. data/lib/spree/testing_support/emails.rb +22 -0
  513. data/lib/spree/testing_support/factories/cart_factory.rb +1 -1
  514. data/lib/spree/testing_support/factories/email_template_factory.rb +28 -0
  515. data/lib/spree/testing_support/factories/order_factory.rb +2 -2
  516. data/lib/spree/testing_support/factories/product_factory.rb +9 -0
  517. data/lib/spree/testing_support/factories/refund_factory.rb +1 -1
  518. data/lib/spree/testing_support/factories/stock_factory.rb +1 -1
  519. data/lib/spree/testing_support/factories/variant_factory.rb +1 -1
  520. data/lib/spree/testing_support/i18n.rb +3 -94
  521. data/lib/spree/testing_support/lifecycle_events.rb +1 -1
  522. data/lib/spree/testing_support/order_walkthrough.rb +1 -1
  523. data/lib/spree/testing_support/preferences.rb +0 -5
  524. data/lib/spree/testing_support/store.rb +9 -1
  525. data/lib/spree/upgrades/5_6_to_6_0/manifest.yml +67 -1
  526. data/lib/spree/uploads.rb +101 -0
  527. data/lib/tasks/categories_and_collections.rake +3 -3
  528. data/lib/tasks/core.rake +6 -4
  529. data/lib/tasks/markets.rake +2 -1
  530. data/lib/tasks/media.rake +3 -3
  531. data/lib/tasks/migrate_users_to_customers.rake +23 -18
  532. data/lib/tasks/money.rake +46 -0
  533. data/lib/tasks/package_types.rake +1 -1
  534. data/lib/tasks/preferences_json.rake +101 -0
  535. data/lib/tasks/seller_sample_data.rake +2 -2
  536. data/lib/tasks/store_settings.rake +13 -6
  537. data/lib/tasks/typed_adjustments_migration.rake +1 -1
  538. data/lib/tasks/uploads.rake +19 -0
  539. data/spec/fixtures/mailer_views/custom_views_probe_mailer/welcome_email.html.erb +4 -0
  540. metadata +219 -46
  541. data/app/jobs/spree/products/touch_categories_job.rb +0 -15
  542. data/app/jobs/spree/products/touch_taxons_job.rb +0 -13
  543. data/app/models/acts_as_taggable_on/tag_decorator.rb +0 -10
  544. data/app/models/concerns/spree/has_image_alt_text.rb +0 -18
  545. data/app/models/spree/base_analytics_event_handler.rb +0 -54
  546. data/app/models/spree/invitations/store.rb +0 -6
  547. data/app/models/spree/preference.rb +0 -14
  548. data/app/models/spree/promotion_handler/page.rb +0 -25
  549. data/app/models/spree/promotion_handler/promotion_duplicator.rb +0 -60
  550. data/app/models/spree/stock/differentiator.rb +0 -45
  551. data/app/presenters/spree/filters/options_presenter.rb +0 -47
  552. data/app/services/spree/carts/empty.rb +0 -42
  553. data/app/services/spree/country_to_timezone.rb +0 -273
  554. data/app/services/spree/payments/create.rb +0 -92
  555. data/app/validators/spree/url_validator.rb +0 -23
  556. data/app/views/active_storage/blobs/_blob.html.erb +0 -14
  557. data/app/views/spree/admin_user_mailer/password_reset_email.html.erb +0 -8
  558. data/app/views/spree/export_mailer/export_done.html.erb +0 -7
  559. data/app/views/spree/import_mailer/import_done.html.erb +0 -12
  560. data/app/views/spree/invitation_mailer/invitation_accepted.html.erb +0 -4
  561. data/app/views/spree/invitation_mailer/invitation_email.html.erb +0 -12
  562. data/app/views/spree/seller_user_mailer/password_reset_email.html.erb +0 -8
  563. data/app/views/spree/shared/_base_mailer_footer.html.erb +0 -19
  564. data/app/views/spree/shared/_base_mailer_header.html.erb +0 -8
  565. data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +0 -399
  566. data/app/views/spree/shared/_mailer_logo.html.erb +0 -41
  567. data/app/views/spree/shared/_purchased_items_styles.html.erb +0 -119
  568. data/app/views/spree/webhook_mailer/endpoint_disabled.html.erb +0 -51
  569. data/app/views/spree/webhook_mailer/endpoint_disabled.text.erb +0 -10
  570. data/app/workflows/spree/fulfillments/purchase_label.rb +0 -40
  571. data/app/workflows/spree/returns/purchase_label.rb +0 -32
  572. data/lib/spree/analytics.rb +0 -11
  573. data/lib/spree/core/preferences/scoped_store.rb +0 -34
  574. data/lib/spree/core/preferences/store.rb +0 -105
  575. data/lib/spree/translation_migrations.rb +0 -52
@@ -0,0 +1,723 @@
1
+ ---
2
+ bg:
3
+ activemodel:
4
+ errors:
5
+ messages:
6
+ blank: не може да бъде празно
7
+ activerecord:
8
+ attributes:
9
+ spree/address:
10
+ address1: Адрес
11
+ address2: Адрес (продъл.)
12
+ city: Град
13
+ company: Фирма
14
+ country: Държава
15
+ label: Име на адрес
16
+ phone: Телефон
17
+ state: Област
18
+ spree/country:
19
+ iso: ISO
20
+ iso3: ISO3
21
+ iso_name: ISO Име
22
+ name: Име
23
+ numcode: ISO Код
24
+ spree/credit_card:
25
+ cc_type: Тип
26
+ month: Месец
27
+ number: Номер
28
+ verification_value: Стойност за потвърждение
29
+ year: Година
30
+ spree/customer_group:
31
+ description: Описание
32
+ name: Име
33
+ spree/gift_card:
34
+ amount_used: Използвана сума
35
+ expires_at: Изтича на
36
+ spree/import:
37
+ preferred_delimiter: Разделител
38
+ spree/import_mapping:
39
+ file_column: Колона от файла
40
+ schema_field: Поле от схемата
41
+ spree/import_row:
42
+ row_number: Номер
43
+ spree/inventory_unit:
44
+ state: Държава
45
+ spree/invitation:
46
+ inviter: Поканил
47
+ spree/line_item:
48
+ price: Цена
49
+ quantity: Количество
50
+ spree/option_type:
51
+ filterable: Филтрируемо
52
+ kind: Вид
53
+ name: Име
54
+ spree/option_value:
55
+ color_code: Код на цвят
56
+ image: Изображение на мостра
57
+ spree/order:
58
+ checkout_complete: Завършена поръчка
59
+ completed_at: Завършена на
60
+ considered_risky: Оценка на риска
61
+ coupon_code: Код на ваучер
62
+ created_at: Дата на поръчка
63
+ email: Клиентски и-мейл
64
+ internal_note: Вътрешна бележка
65
+ ip_address: IP Адрес
66
+ item_count: Артикули
67
+ item_total: Общо
68
+ number: Номер
69
+ payment_state: Състояние на плащане
70
+ shipment_state: Състояние на доставка
71
+ special_instructions: Специални инструкции
72
+ state: Състояние
73
+ total: Общо
74
+ spree/order/bill_address:
75
+ address1: Адрес за плащане -улица
76
+ city: Адрес за плащане - град
77
+ phone: тел. номер
78
+ state: община
79
+ spree/order/ship_address:
80
+ address1: Адрес за доставка - улица
81
+ city: Адрес за доставка - град
82
+ phone: Адрес за доставка - тел. номер
83
+ state: Адрес за доставка - община
84
+ spree/payment:
85
+ amount: Сума
86
+ number: Номер
87
+ spree/payment_method:
88
+ name: Име
89
+ spree/policy:
90
+ body: Съдържание
91
+ owner: Политика за
92
+ spree/price_list:
93
+ description: Описание
94
+ ends_at: Завършва на
95
+ match_policy: Политика на съвпадение
96
+ name: Име
97
+ priority: Приоритет
98
+ starts_at: Започва на
99
+ status: Статус
100
+ spree/price_rule:
101
+ priority: Приоритет
102
+ type: Тип
103
+ spree/product:
104
+ available_on: В наличност от
105
+ cost_currency: Валута
106
+ cost_price: Цена
107
+ description: Описание
108
+ discontinue_on: Прекратяване на
109
+ less_than: По-малко от
110
+ make_active_at: Активиране на
111
+ master_price: Крайна цена
112
+ more_than: Повече от
113
+ name: Име
114
+ on_hand: В наличие
115
+ tax_category: Данъчна категория
116
+ spree/promotion:
117
+ advertise: Рекламирай
118
+ code: Код
119
+ description: Описание
120
+ event_name: Име на акция
121
+ expires_at: Изтича на
122
+ generate_code: Генериране на промокод
123
+ name: Име
124
+ path: Път
125
+ promotion_category: Категория на промоция
126
+ starts_at: Започва на
127
+ usage_limit: Лимит
128
+ spree/promotion_category:
129
+ code: Код
130
+ name: Промоция категория
131
+ spree/property:
132
+ name: Име
133
+ presentation: Презентация
134
+ spree/role:
135
+ name: Име
136
+ spree/shipment:
137
+ number: Номер
138
+ spree/state:
139
+ abbr: Съкращение
140
+ name: Име
141
+ spree/store:
142
+ address: Адрес
143
+ contact_phone: Телефон за контакт
144
+ mail_from_address: Имейл Адрес
145
+ meta_description: Мета Описание
146
+ meta_keywords: Мета Ключови Думи
147
+ name: Наименование на магазин
148
+ preferred_digital_asset_authorized_clicks: Лимит на изтегляния (кликвания)
149
+ preferred_digital_asset_authorized_days: Лимит на дни за изтегляне
150
+ preferred_limit_digital_download_count: Ограничаване на броя изтегляния на дигитални връзки
151
+ preferred_limit_digital_download_days: Ограничаване на дните за изтегляне на дигитални връзки
152
+ seo_robots: SEO Robots
153
+ seo_title: SEO заглавие
154
+ storefront_custom_code_body_end: Персонализиран код преди затварящия body таг
155
+ storefront_custom_code_body_start: Персонализиран код след отварящия body таг
156
+ storefront_custom_code_head: Персонализиран код в заглавната част на страницата
157
+ url: Линк
158
+ spree/store_credit:
159
+ amount_used: Използвана сума
160
+ spree/tax_category:
161
+ description: Описание
162
+ name: Име
163
+ spree/tax_rate:
164
+ amount: Процент
165
+ included_in_price: Включен в цената
166
+ show_rate_in_label: Покажи процента в цената
167
+ spree/taxon:
168
+ name: Име
169
+ permalink: Линк
170
+ position: Позиция
171
+ sort_order: Ред на сортиране
172
+ spree/taxonomy:
173
+ name: Име
174
+ spree/user:
175
+ avatar: Аватар
176
+ email: Имейл
177
+ password: Парола
178
+ password_confirmation: Повтори парола
179
+ spree/variant:
180
+ cost_currency: Валута
181
+ cost_price: Цена
182
+ depth: Дълбочина
183
+ height: Височина
184
+ price: Цена
185
+ sku: Инвентарна Единица
186
+ weight: Тежест
187
+ width: Ширина
188
+ spree/zone:
189
+ description: Описание
190
+ name: Име
191
+ user:
192
+ current_sign_in: Текущо влизане на
193
+ last_sign_in: Последно влизане на
194
+ sign_in_count: Брой влизания
195
+ errors:
196
+ messages:
197
+ blank: не може да бъде празно
198
+ models:
199
+ spree/allowed_origin:
200
+ attributes:
201
+ origin:
202
+ must_be_origin_only: трябва да бъде източник (схема и хост) без път, заявка или фрагмент
203
+ spree/credit_card:
204
+ attributes:
205
+ base:
206
+ card_expired: Картата е изтекла
207
+ spree/gift_card:
208
+ attributes:
209
+ base:
210
+ cannot_destroy_used_gift_card: Не може да се изтрие използвана подаръчна карта
211
+ spree/import:
212
+ attributes:
213
+ attachment:
214
+ content_type: има недопустим тип съдържание
215
+ type:
216
+ inclusion: не е сред списъка с разрешени типове
217
+ spree/market:
218
+ attributes:
219
+ base:
220
+ cannot_destroy_default_market: Пазарът по подразбиране не може да бъде изтрит.
221
+ cannot_destroy_last_market: Единственият пазар не може да бъде изтрит.
222
+ spree/market_country:
223
+ attributes:
224
+ country:
225
+ already_in_market: вече е присвоена на друг пазар в този магазин
226
+ not_in_shipping_zone: не е покрита от никоя зона за доставка. Моля, първо настройте зона за доставка.
227
+ spree/payment:
228
+ attributes:
229
+ amount:
230
+ greater_than_max_amount: е по-голяма от разрешената максимална сума от %{max_amount}
231
+ spree/price_list:
232
+ attributes:
233
+ ends_at:
234
+ must_be_after_starts_at: трябва да бъде след началната дата
235
+ spree/product:
236
+ attributes:
237
+ base:
238
+ cannot_destroy_if_attached_to_line_items: Не могат да се изтриват продукти, които са добавени към направени поръчки. В такива случаи, моля, прекратете ги.
239
+ discontinue_on:
240
+ invalid_date_range: трябва да бъде по-късно от датата на наличност
241
+ spree/product_publication:
242
+ attributes:
243
+ unpublished_at:
244
+ must_be_after_published_at: трябва да бъде след датата на публикуване
245
+ spree/promotion:
246
+ attributes:
247
+ expires_at:
248
+ invalid_date_range: трябва да бъде по-късно от началната дата
249
+ spree/store:
250
+ attributes:
251
+ base:
252
+ cannot_destroy_only_store: Единственият магазин не може да бъде изтрит.
253
+ spree/store_credit:
254
+ attributes:
255
+ amount_authorized:
256
+ exceeds_total_credits: Превишава общите кредити.
257
+ amount_used:
258
+ cannot_be_greater_than_amount: Не може да бъде по-голяма от сумата.
259
+ greater_than_zero_restrict_delete: е по-голяма от нула. Кредитът в магазина не може да бъде изтрит.
260
+ spree/user:
261
+ attributes:
262
+ bill_address_id:
263
+ belongs_to_other_user: принадлежи на друг потребител
264
+ deprecated_in_completed_order: е остарял в завършена поръчка
265
+ ship_address_id:
266
+ belongs_to_other_user: принадлежи на друг потребител
267
+ deprecated_in_completed_order: е остарял в завършена поръчка
268
+ spree/variant:
269
+ attributes:
270
+ base:
271
+ cannot_destroy_if_attached_to_line_items: Не могат да се изтриват варианти, които са добавени към направени поръчки. В такива случаи, моля, прекратете ги.
272
+ spree/webhook_endpoint:
273
+ attributes:
274
+ url:
275
+ internal_address_not_allowed: не трябва да сочи към вътрешен или частен мрежов адрес
276
+ models:
277
+ spree/address:
278
+ one: Адрес
279
+ other: Адреси
280
+ spree/classification:
281
+ one: Класификация
282
+ other: Класификации
283
+ spree/country:
284
+ one: Държава
285
+ other: Държави
286
+ spree/credit_card:
287
+ one: Кредитна карта
288
+ other: Кредитни карти
289
+ spree/customer_group:
290
+ one: Клиентска група
291
+ other: Клиентски групи
292
+ spree/customer_group_user:
293
+ one: Потребител в клиентска група
294
+ other: Потребители в клиентски групи
295
+ spree/export:
296
+ one: Експорт
297
+ other: Експорти
298
+ spree/integration:
299
+ one: Интеграция
300
+ other: Интеграции
301
+ spree/inventory_unit:
302
+ one: Складна единица
303
+ other: Складни единици
304
+ spree/line_item:
305
+ one: Позиция
306
+ other: Позиции
307
+ spree/option_type:
308
+ one: Параметър
309
+ other: Параметри
310
+ spree/option_value:
311
+ one: Стойност
312
+ other: Стойности
313
+ spree/order:
314
+ one: Поръчка
315
+ other: Поръчки
316
+ spree/payment:
317
+ one: Плащане
318
+ other: Плащания
319
+ spree/payment_method:
320
+ one: Начин на плащане
321
+ other: Начини на плащане
322
+ spree/price:
323
+ one: Цена
324
+ other: Цени
325
+ spree/price_list:
326
+ one: Ценоразпис
327
+ other: Ценоразписи
328
+ spree/price_rule:
329
+ one: Правило за цена
330
+ other: Правила за цена
331
+ spree/product:
332
+ one: Продукт
333
+ other: Продукти
334
+ spree/promotion:
335
+ one: Промоция
336
+ other: Промоции
337
+ spree/promotion_category:
338
+ one: Промочна категория
339
+ other: Промоции
340
+ spree/property:
341
+ one: Харатеристика
342
+ other: Характеристики
343
+ spree/refund_reason:
344
+ one: Причина за връщане
345
+ other: Причини за връщане
346
+ spree/role:
347
+ one: Роли
348
+ other: Роли
349
+ spree/shipment:
350
+ one: Доставка
351
+ other: Доставки
352
+ spree/shipping_method:
353
+ one: Доставен начин
354
+ other: Доставни начини
355
+ spree/state:
356
+ one: Държава
357
+ other: Държави
358
+ spree/stock_location:
359
+ one: Локализация на склада
360
+ other: Локализации на складове
361
+ spree/stock_movement:
362
+ one: Движение на стока
363
+ other: Движения на стоковете
364
+ spree/stock_transfer:
365
+ one: Прехвърляне на стока
366
+ other: Прехвърляня на стоковете
367
+ spree/store:
368
+ one: Магазин
369
+ other: Магазини
370
+ spree/store_credit:
371
+ one: Магазинен кредит
372
+ other: Магазинни кредити
373
+ spree/tax_category:
374
+ one: Данъчна категория
375
+ other: Данъчна категория
376
+ spree/tax_rate:
377
+ one: Данъчен процент
378
+ other: данъчни проценти
379
+ spree/taxon:
380
+ one: Tаксономична единица
381
+ other: Tаксономични единици
382
+ spree/taxonomy:
383
+ one: Tаксономия
384
+ other: Tаксономии
385
+ spree/user:
386
+ one: Потребител
387
+ other: Потребители
388
+ spree/variant:
389
+ one: Вариант
390
+ other: Варианти
391
+ spree/zone:
392
+ one: Зона
393
+ other: Зони
394
+ errors:
395
+ messages:
396
+ already_confirmed: Вече бе потвърден
397
+ not_found: не намерен
398
+ not_locked: не бе заключен
399
+ not_saved:
400
+ one: Една грешка предоотврати запазването на %{resource}
401
+ other: "%{count} грешки предоотвратиха запазването на %{resource}"
402
+ number:
403
+ percentage:
404
+ format:
405
+ precision: 1
406
+ spree:
407
+ accept: Приеми
408
+ accepted: Приемен
409
+ accepts_email_marketing: Приема имейл маркетинг
410
+ account: Акаунт
411
+ active: Активен
412
+ address: Адрес
413
+ address1: Адрес
414
+ address2: Адрес (продължение)
415
+ adjustment: Поправка
416
+ adjustment_labels:
417
+ tax_rates:
418
+ excluding_tax: "%{name}%{amount}"
419
+ including_tax: "%{name}%{amount} (включен в цената)"
420
+ adjustments_deleted: Корекциите са изтрити
421
+ all: Всички
422
+ amount: Сума
423
+ api_key_no_current_key: Никой API ключ не е удостоверил тази заявка
424
+ api_key_scopes_immutable: не може да бъде променен след създаване на ключа; създайте нов ключ с обхватите, които са ви нужни, и анулирайте този
425
+ approver: Одобрител
426
+ authorized: Ауторизирани
427
+ availability: Количество
428
+ backorderable: Продавай макар изчерпано
429
+ backordered: Продаден макар изчерпан
430
+ bill_address: Адрес на плащане
431
+ billing_address: Адрес на плащане
432
+ calculator: Калкулатор
433
+ canceled: Отказано
434
+ canceler: Отменител
435
+ cannot_be_destroyed: Поръчката не може да бъде изтрита.
436
+ capture: Картина
437
+ cart: Кошница
438
+ cart_already_updated: Количката вече беше обновена.
439
+ cart_line_item:
440
+ delivery_unavailable: "%{li_name} не може да бъде доставен до избрания адрес"
441
+ discontinued: "%{li_name} беше премахнат, защото беше прекратен"
442
+ out_of_stock: "%{li_name} беше премахнат, защото беше изчерпан"
443
+ categories: Категории
444
+ category: Категория
445
+ channel: Канал за продажби
446
+ channels: Канали за продажби
447
+ checkout: Плащане
448
+ checkout_requirements:
449
+ email_required: Имейл адресът е задължителен
450
+ line_items_required: Добавете поне един артикул в количката си
451
+ payment_required: Добавете начин на плащане
452
+ ship_address_required: Адресът за доставка е задължителен
453
+ city: Град
454
+ color_code: Код на цвят
455
+ company: Компания
456
+ compare_at_amount: Сравнение спрямо сума
457
+ compare_at_price: Сравнение спрямо цена
458
+ complete: Завърши
459
+ confirm: Потвърди
460
+ cost_price: Себестойност
461
+ count_on_hand: Общия брой
462
+ country: Страна
463
+ coupon_code: Код на ваучер
464
+ coupon_code_already_applied: Този код вече е използван за тази доставка.
465
+ coupon_code_applied: Този код бе успешно приложен към вашата поръчка
466
+ coupon_code_better_exists: Предишният ваучер предоставя по-добри условия
467
+ coupon_code_expired: Този ваучер е изтекъл
468
+ coupon_code_max_usage: Употребата на ваучери преминава лимита.
469
+ coupon_code_not_eligible: Този код не е валиден за тази поръчка.
470
+ coupon_code_not_found: Въведеният код не е валиден. Опитайте отново.
471
+ coupon_code_used: Въведеният промокод вече е използван. Моля, опитайте отново.
472
+ created_at: Създаден на
473
+ credit_card: Кредитна карта
474
+ currency: Валута
475
+ currency_not_supported_by_store: не се поддържа от този магазин
476
+ customers: Клиенти
477
+ default: По подразбиране
478
+ default_stock_location_name: Местоположение на магазина
479
+ default_wishlist_name: Списък с желания
480
+ delivery: Доставка
481
+ depth: Дълбочина
482
+ description: Описание
483
+ destroy: Унищожи
484
+ details: Детайли
485
+ digital:
486
+ digital_delivery: Дигитална доставка
487
+ digital_assets: Дигитални активи
488
+ discontinued: Прекратено
489
+ discontinued_variants_present: Някои артикули в тази поръчка съдържат продукти, които вече не са налични.
490
+ display_delivery_range: Доставка за %{delivery_range} работни дни
491
+ draft: Чернова
492
+ eligibility_errors:
493
+ messages:
494
+ no_matching_channel: Този купон код не е валиден за този канал за продажби.
495
+ no_matching_market: Този купон код не е валиден във вашия пазар.
496
+ wrong_country: Този промокод не е валиден за вашата държава
497
+ email: Имейл
498
+ error: грешка
499
+ error_user_destroy_with_orders: Потребител, свързан с поръчки, не може да бъде изтрит
500
+ error_user_does_not_have_any_store_credits: Потребителят няма налични магазинни кредити
501
+ errors:
502
+ messages:
503
+ cannot_delete_default_channel: Каналът по подразбиране не може да бъде изтрит. Първо повишете друг канал като канал по подразбиране.
504
+ channel_store_mismatch: трябва да принадлежи на същия магазин
505
+ invalid_order_routing_rule: не е регистрирано правило за маршрутизиране на поръчки
506
+ invalid_order_routing_strategy: не е регистрирана стратегия за маршрутизиране на поръчки
507
+ store_association_can_not_be_changed: Връзката с магазина не може да бъде променена
508
+ store_is_already_set: Магазинът вече е зададен
509
+ expired: Изтекло
510
+ export_mailer:
511
+ export_done:
512
+ message: Чудесна работа, вашият експорт е готов! Моля, използвайте връзката по-долу, за да го изтеглите.
513
+ subject: Вашият експорт %{export_number} беше успешно обработен!
514
+ greeting: Здравейте, %{user_name},
515
+ field: Поле
516
+ first_name: Първо име
517
+ flat_percent: Плосък процент
518
+ flat_rate_per_order: Пропорционална такса (на поръчка)
519
+ flexible_rate: Гъвкав курс
520
+ free: Безплатно
521
+ gateway: Портал
522
+ gateway_error: Грешка в портала
523
+ gift_card: Подаръчна карта
524
+ gift_card_already_redeemed: Подаръчната карта вече е използвана.
525
+ gift_card_applied: Подаръчната карта беше успешно приложена към вашата поръчка!
526
+ gift_card_customer_not_logged_in: Подаръчната карта не може да бъде приложена от гост.
527
+ gift_card_expired: Подаръчната карта е изтекла.
528
+ gift_card_mismatched_currency: Подаръчната карта не може да бъде приложена с текущата валута.
529
+ gift_card_mismatched_customer: Тази подаръчна карта е свързана с друг потребител.
530
+ gift_card_not_found: Подаръчната карта не беше намерена.
531
+ gift_card_removed: Подаръчната карта беше успешно премахната от вашата поръчка
532
+ gift_card_using_store_credit_error: Не можете да приложите подаръчната карта, след като сте приложили магазинния кредит.
533
+ height: Височина
534
+ i18n:
535
+ this_file_language: Български (BG)
536
+ idempotency_key_reused: Този Idempotency-Key вече е използван с различни параметри на заявката.
537
+ image: Образ
538
+ import: Импорт
539
+ in_stock: в наличност
540
+ internal_note: Вътрешна бележка
541
+ inventory: Инвентар
542
+ invitation_mailer:
543
+ greeting: Здравейте, %{user_name},
544
+ invitation_accepted:
545
+ body: "%{invitee_name} прие вашата покана за присъединяване към %{resource_name}"
546
+ subject: "%{invitee_name} прие вашата покана за присъединяване към %{resource_name}"
547
+ invitation_email:
548
+ body: "%{inviter_name} ви покани да се присъедините към %{resource_name}"
549
+ link_description: 'За да приемете тази покана, моля, натиснете връзката по-долу:'
550
+ subject: Покана за присъединяване към %{resource_name}
551
+ iso: ISO Alpha-2
552
+ item: Предмет
553
+ items_cannot_be_shipped: Нямаме възможносттта да доставим тези предмети до този адрес. Моля изберете друг адрес на доставка.
554
+ key: Ключ
555
+ kind: Вид
556
+ label: Етикет
557
+ last_name: Последно име
558
+ line_item: Артикул в поръчката
559
+ line_items: Артикули в поръчката
560
+ link: Връзка
561
+ locale: Локал
562
+ locale_not_supported_by_store: не се поддържа от този магазин
563
+ manual: Ръчно
564
+ market: Пазар
565
+ me_no_current_user: Никой администратор не е удостоверил тази заявка
566
+ media: Медия
567
+ meta_description: Описание
568
+ meta_keywords: Ключови думи
569
+ meta_title: Заглавие
570
+ metadata: Дата
571
+ min_quantity: Мин. количество
572
+ month: Месец
573
+ name: Име
574
+ new_variant: Нов вариант
575
+ no_cc_type: Няма
576
+ none: Нищо
577
+ number: Номер
578
+ on_hand: Наличност
579
+ only_active_products_can_be_added_to_cart: Продукти в чернова и архивирани продукти не могат да се добавят в количката, моля, първо маркирайте продукта като активен.
580
+ option_name: Име на опция
581
+ option_type: Параметър
582
+ option_value: Стойност
583
+ or: или
584
+ order_routing:
585
+ strategies:
586
+ legacy: Наследена
587
+ rules: Правила (подредени)
588
+ order_summary: Преглед на поръчка
589
+ orders: Поръчки
590
+ out_of_stock: Не е в наличност
591
+ password: Парола
592
+ path: Път
593
+ payment: Плащане
594
+ payment_method: Начин на плащане
595
+ payment_methods: Методи на плащане
596
+ payment_source: Източник на плащане
597
+ percent: Процент
598
+ phone: Телефон
599
+ price: Цена
600
+ price_rules:
601
+ channel_rule:
602
+ description: Прилагане на цени според канала за продажби
603
+ customer_group_rule:
604
+ description: Прилагане на ценообразуване за конкретни клиентски групи
605
+ prices: Цени
606
+ privacy_policy: Политика за поверителност
607
+ processing: Обработка
608
+ product: Product
609
+ product_translations: Преводи на продукти
610
+ products: Продукти
611
+ products_cannot_be_shipped: В момента не можем да доставим %{product_names} до текущото ви местоположение. Моля, променете адреса си за доставка или премахнете %{product_names} от количката си.
612
+ promotion_already_used: Не можете да изтриете промоция, която вече е приложена
613
+ promotion_label: Промоция (%{name})
614
+ promotion_rule_types:
615
+ category:
616
+ description: Поръчката включва продукти от посочените категории
617
+ name: Категории
618
+ channel:
619
+ description: Ограничаване до поръчки, направени през посочения(те) канал(и)
620
+ name: Канал(и)
621
+ country:
622
+ description: Ограничаване до поръчки с адрес за доставка в конкретна държава
623
+ name: Държава
624
+ currency:
625
+ description: Ограничаване до поръчки в конкретна валута
626
+ name: Валута
627
+ customer:
628
+ description: Достъпно само за посочените клиенти
629
+ name: Клиенти
630
+ customer_group:
631
+ description: Достъпно само за клиенти в посочените клиентски групи
632
+ name: Клиентска(и) група(и)
633
+ customer_logged_in:
634
+ description: Достъпно само за влезли клиенти
635
+ name: Само влезли клиенти
636
+ market:
637
+ description: Ограничаване до поръчки, направени на посочения(те) пазар(и)
638
+ name: Пазар(и)
639
+ option_value:
640
+ name: Стойност
641
+ product:
642
+ description: Поръчката има следният/ите продукт(и)
643
+ name: Продукт(и)
644
+ promotions: Маркетинг
645
+ quantity: Количество
646
+ query: Заявка
647
+ reason: Причина
648
+ received: Получено
649
+ refund_amount: Сума за възстановяване
650
+ registration: Регистрация
651
+ remove: Премахни
652
+ remove_gift_card_on_completed_order_error: Не можете да премахнете подаръчната карта, след като поръчката е направена
653
+ resellable: За препродажба
654
+ resend: Препрати
655
+ return: върни
656
+ returns_policy: Политика за връщане
657
+ row: Ред
658
+ rules: Правила
659
+ say_no: Не
660
+ say_yes: Да
661
+ scope: Scope
662
+ ship: прати
663
+ ship_address: Адрес
664
+ shipment: Доставка
665
+ shipped: пратена
666
+ shipping: Доставка
667
+ shipping_address: Адрес на доставка
668
+ shipping_policy: Политика за доставка
669
+ shipping_rates:
670
+ display_price:
671
+ excluding_tax: "%{price} (+ %{tax_amount} %{tax_rate_name})"
672
+ including_tax: "%{price} (вкл. %{tax_amount} %{tax_rate_name})"
673
+ stock_transfer:
674
+ errors:
675
+ must_have_variant: Трябва да добавите поне един вариант
676
+ same_location: не може да съвпада с местоположението на дестинацията
677
+ variants_unavailable: Някои варианти не са налични в %{stock}
678
+ store: Магазин
679
+ store_credit:
680
+ allocated: Добавено
681
+ authorized: Оторизирано
682
+ captured: Използвано
683
+ credit: Кредит
684
+ eligible: Допустимо
685
+ store_credit_name: Кредити
686
+ store_credit_payment_method:
687
+ currency_mismatch: Валутата на магазинния кредит не съвпада с валутата на поръчката
688
+ insufficient_authorized_amount: Не може да се удържи повече от оторизираната сума
689
+ insufficient_funds: Оставащата сума на магазинния кредит е недостатъчна
690
+ successful_action: Успешно %{action} на магазинен кредит
691
+ unable_to_credit: 'Не може да се кредитира код: %{auth_code}'
692
+ unable_to_find: Магазинният кредит не беше намерен
693
+ unable_to_find_for_action: 'Не беше намерен магазинен кредит за код за оторизация: %{auth_code} за действие: %{action}'
694
+ unable_to_void: 'Не може да се анулира код: %{auth_code}'
695
+ tags: Етикети
696
+ terms_of_service: Общи условия
697
+ total: Общо
698
+ type: Тип
699
+ updated_at: Обновено на
700
+ url: URL
701
+ user: User
702
+ validation:
703
+ must_be_int: трябва да е цяло число
704
+ value: Стойност
705
+ variant: Вариант
706
+ variants: Варианти
707
+ verified: Потвърдено
708
+ void: Откажи
709
+ webhook_mailer:
710
+ endpoint_disabled:
711
+ disabled_at_label: Деактивирано на
712
+ heading: Webhook крайната точка е деактивирана
713
+ instructions: Моля, проверете URL адреса на крайната точка и услугата, след което я активирайте отново в Настройки → Разработчици → Webhooks.
714
+ message: Webhook крайната точка „%{endpoint_name}“ беше автоматично деактивирана след многократни неуспешни доставки.
715
+ name_label: Име
716
+ reason_label: Причина
717
+ subject: 'Webhook крайната точка е деактивирана: %{endpoint_name}'
718
+ url_label: URL
719
+ weight: Тежест
720
+ weight_unit: Мерна единица за тегло
721
+ width: Ширина
722
+ year: Година
723
+ zip: пощ. кид