spree_core 4.3.3 → 4.4.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (518) hide show
  1. checksums.yaml +4 -4
  2. data/app/finders/spree/option_values/find_available.rb +9 -1
  3. data/app/finders/spree/products/find.rb +1 -1
  4. data/app/helpers/spree/base_helper.rb +1 -5
  5. data/app/helpers/spree/currency_helper.rb +1 -1
  6. data/app/helpers/spree/products_helper.rb +1 -15
  7. data/app/jobs/spree/base_job.rb +4 -0
  8. data/app/jobs/spree/stock_locations/stock_items/create_job.rb +13 -0
  9. data/app/models/concerns/spree/default_price.rb +1 -1
  10. data/app/models/concerns/spree/display_money.rb +3 -1
  11. data/app/models/concerns/spree/memoized_data.rb +1 -1
  12. data/app/models/concerns/spree/metadata.rb +10 -0
  13. data/app/models/concerns/spree/multi_store_resource.rb +1 -1
  14. data/app/models/concerns/spree/named_type.rb +1 -1
  15. data/app/models/concerns/spree/number_identifier.rb +18 -0
  16. data/app/models/concerns/spree/product_scopes.rb +52 -22
  17. data/app/models/concerns/spree/unique_name.rb +10 -0
  18. data/app/models/concerns/spree/user_methods.rb +9 -0
  19. data/app/models/concerns/spree/user_reporting.rb +1 -1
  20. data/app/models/concerns/spree/user_roles.rb +20 -2
  21. data/app/models/spree/ability.rb +11 -3
  22. data/app/models/spree/address.rb +4 -2
  23. data/app/models/spree/adjustment.rb +1 -0
  24. data/app/models/spree/app_configuration.rb +21 -24
  25. data/app/models/spree/asset.rb +1 -0
  26. data/app/models/spree/base.rb +14 -0
  27. data/app/models/spree/calculator/flat_rate.rb +1 -1
  28. data/app/models/spree/calculator/flexi_rate.rb +1 -1
  29. data/app/models/spree/calculator/price_sack.rb +1 -1
  30. data/app/models/spree/calculator/shipping/digital_delivery.rb +22 -0
  31. data/app/models/spree/calculator/shipping/flat_rate.rb +1 -1
  32. data/app/models/spree/calculator/shipping/flexi_rate.rb +1 -1
  33. data/app/models/spree/calculator/shipping/per_item.rb +1 -1
  34. data/app/models/spree/calculator/shipping/price_sack.rb +1 -1
  35. data/app/models/spree/calculator.rb +1 -1
  36. data/app/models/spree/cms_page.rb +3 -3
  37. data/app/models/spree/cms_section.rb +1 -1
  38. data/app/models/spree/country.rb +4 -2
  39. data/app/models/spree/credit_card.rb +10 -0
  40. data/app/models/spree/customer_return.rb +3 -1
  41. data/app/models/spree/digital.rb +15 -0
  42. data/app/models/spree/digital_link.rb +50 -0
  43. data/app/models/spree/gateway/bogus.rb +4 -0
  44. data/app/models/spree/image/configuration/active_storage.rb +2 -19
  45. data/app/models/spree/legacy_user.rb +1 -0
  46. data/app/models/spree/line_item.rb +11 -3
  47. data/app/models/spree/option_type.rb +4 -4
  48. data/app/models/spree/option_value.rb +2 -0
  49. data/app/models/spree/order/checkout.rb +7 -1
  50. data/app/models/spree/order/digital.rb +33 -0
  51. data/app/models/spree/order/store_credit.rb +0 -8
  52. data/app/models/spree/order.rb +34 -22
  53. data/app/models/spree/order_inventory.rb +1 -1
  54. data/app/models/spree/order_promotion.rb +1 -1
  55. data/app/models/spree/payment/processing.rb +1 -0
  56. data/app/models/spree/payment.rb +25 -4
  57. data/app/models/spree/payment_method.rb +3 -1
  58. data/app/models/spree/preference.rb +2 -1
  59. data/app/models/spree/preferences/configuration.rb +2 -2
  60. data/app/models/spree/preferences/store.rb +1 -1
  61. data/app/models/spree/price.rb +1 -1
  62. data/app/models/spree/product.rb +18 -17
  63. data/app/models/spree/promotion/rules/product.rb +1 -1
  64. data/app/models/spree/promotion.rb +3 -1
  65. data/app/models/spree/promotion_action.rb +1 -1
  66. data/app/models/spree/property.rb +1 -0
  67. data/app/models/spree/prototype.rb +2 -0
  68. data/app/models/spree/refund.rb +2 -0
  69. data/app/models/spree/reimbursement.rb +1 -1
  70. data/app/models/spree/return_authorization.rb +3 -2
  71. data/app/models/spree/return_item.rb +1 -1
  72. data/app/models/spree/role.rb +2 -2
  73. data/app/models/spree/shipment.rb +4 -30
  74. data/app/models/spree/shipping_category.rb +1 -1
  75. data/app/models/spree/shipping_method.rb +2 -0
  76. data/app/models/spree/state.rb +1 -1
  77. data/app/models/spree/stock/quantifier.rb +1 -1
  78. data/app/models/spree/stock/splitter/digital.rb +35 -0
  79. data/app/models/spree/stock_item.rb +2 -2
  80. data/app/models/spree/stock_location.rb +6 -28
  81. data/app/models/spree/stock_movement.rb +3 -0
  82. data/app/models/spree/stock_transfer.rb +3 -6
  83. data/app/models/spree/store.rb +41 -8
  84. data/app/models/spree/store_credit.rb +5 -1
  85. data/app/models/spree/store_credit_category.rb +2 -0
  86. data/app/models/spree/store_credit_event.rb +2 -7
  87. data/app/models/spree/store_credit_type.rb +2 -0
  88. data/app/models/spree/tax_category.rb +3 -1
  89. data/app/models/spree/tax_rate.rb +3 -1
  90. data/app/models/spree/taxon.rb +11 -0
  91. data/app/models/spree/taxon_image/configuration/active_storage.rb +2 -12
  92. data/app/models/spree/taxonomy.rb +7 -0
  93. data/app/models/spree/variant.rb +20 -10
  94. data/app/models/spree/wished_item.rb +29 -0
  95. data/app/models/spree/wishlist.rb +35 -0
  96. data/app/models/spree/zone.rb +8 -6
  97. data/app/services/spree/account/addresses/create.rb +1 -17
  98. data/app/services/spree/account/addresses/update.rb +1 -22
  99. data/app/services/spree/addresses/create.rb +24 -0
  100. data/app/services/spree/addresses/helper.rb +41 -0
  101. data/app/services/spree/addresses/update.rb +27 -0
  102. data/app/services/spree/cart/add_item.rb +4 -2
  103. data/app/services/spree/cart/create.rb +4 -2
  104. data/app/services/spree/cart/update.rb +2 -2
  105. data/app/services/spree/checkout/add_store_credit.rb +4 -1
  106. data/app/services/spree/checkout/select_shipping_method.rb +49 -0
  107. data/app/services/spree/checkout/update.rb +3 -10
  108. data/app/services/spree/line_items/create.rb +20 -0
  109. data/app/services/spree/line_items/destroy.rb +18 -0
  110. data/app/services/spree/line_items/helper.rb +11 -0
  111. data/app/services/spree/line_items/update.rb +17 -0
  112. data/app/services/spree/orders/approve.rb +18 -0
  113. data/app/services/spree/orders/cancel.rb +18 -0
  114. data/app/services/spree/payments/create.rb +66 -0
  115. data/app/services/spree/seeds/all.rb +26 -0
  116. data/app/services/spree/seeds/countries.rb +50 -0
  117. data/app/services/spree/seeds/default_reimbursement_types.rb +12 -0
  118. data/app/services/spree/seeds/roles.rb +11 -0
  119. data/app/services/spree/seeds/shipping_categories.rb +12 -0
  120. data/app/services/spree/seeds/states.rb +72 -0
  121. data/app/services/spree/seeds/stock_locations.rb +18 -0
  122. data/app/services/spree/seeds/store_credit_categories.rb +12 -0
  123. data/app/services/spree/seeds/stores.rb +31 -0
  124. data/app/services/spree/seeds/zones.rb +39 -0
  125. data/app/services/spree/shipments/add_item.rb +32 -0
  126. data/app/services/spree/shipments/change_state.rb +14 -0
  127. data/app/services/spree/shipments/create.rb +48 -0
  128. data/app/services/spree/shipments/helper.rb +23 -0
  129. data/app/services/spree/shipments/remove_item.rb +55 -0
  130. data/app/services/spree/shipments/update.rb +40 -0
  131. data/app/services/spree/stock_locations/stock_items/create.rb +31 -0
  132. data/app/services/spree/wallet/create_payment_source.rb +26 -0
  133. data/app/validators/spree/url_validator.rb +23 -0
  134. data/brakeman.ignore +20 -0
  135. data/config/initializers/active_storage.rb +0 -6
  136. data/config/locales/en.yml +14 -168
  137. data/db/migrate/20210914000000_spree_four_three.rb +1205 -0
  138. data/db/migrate/20210915064321_add_metadata_to_spree_orders.rb +13 -0
  139. data/db/migrate/20210915064322_add_metadata_to_spree_products.rb +13 -0
  140. data/db/migrate/20210915064323_add_metadata_to_spree_variants.rb +13 -0
  141. data/db/migrate/20210915064324_add_metadata_to_spree_line_items.rb +13 -0
  142. data/db/migrate/20210915064325_add_metadata_to_spree_shipments.rb +13 -0
  143. data/db/migrate/20210915064326_add_metadata_to_spree_payments.rb +13 -0
  144. data/db/migrate/20210915064327_add_metadata_to_spree_taxons_and_taxonomies.rb +18 -0
  145. data/db/migrate/20210915064328_add_metadata_to_spree_stock_transfers.rb +13 -0
  146. data/db/migrate/20210915064329_add_metadata_to_spree_multiple_tables.rb +30 -0
  147. data/db/migrate/20210920090344_add_deleted_at_to_spree_stores.rb +8 -0
  148. data/db/migrate/20210921070812_rename_column_access_hash_to_token.rb +8 -0
  149. data/db/migrate/20210921070813_create_spree_wishlists.rb +18 -0
  150. data/db/migrate/20210921070814_create_spree_wished_products.rb +16 -0
  151. data/db/migrate/20210921070815_rename_spree_wished_products_to_spree_wished_items.rb +5 -0
  152. data/db/migrate/20210921090344_add_unique_stock_item_stock_location_variant_deleted_at_index.rb +5 -0
  153. data/db/migrate/20210929090344_create_stock_item_stock_location_id_variant_id_coalesce_deleted_at_unique_index.rb +32 -0
  154. data/db/migrate/20210929091444_create_spree_digital_links.rb +13 -0
  155. data/db/migrate/20210929093238_create_spree_digitals.rb +9 -0
  156. data/db/migrate/20210930143043_rename_secret_to_token_on_spree_digital_links.rb +5 -0
  157. data/db/migrate/20210930155649_add_settings_to_spree_stores.rb +11 -0
  158. data/db/seeds.rb +1 -5
  159. data/lib/generators/spree/dummy/dummy_generator.rb +1 -1
  160. data/lib/generators/spree/dummy/templates/rails/database.yml +20 -18
  161. data/{app/models/spree → lib/spree/core}/app_dependencies.rb +32 -4
  162. data/lib/spree/core/controller_helpers/auth.rb +4 -4
  163. data/lib/spree/core/controller_helpers/common.rb +15 -1
  164. data/lib/spree/core/controller_helpers/currency.rb +1 -1
  165. data/lib/spree/core/engine.rb +10 -4
  166. data/lib/spree/core/importer/product.rb +1 -1
  167. data/lib/spree/core/number_generator.rb +0 -2
  168. data/lib/spree/core/version.rb +1 -1
  169. data/lib/spree/core.rb +21 -13
  170. data/lib/spree/money.rb +2 -2
  171. data/lib/spree/permitted_attributes.rb +31 -13
  172. data/lib/spree/testing_support/authorization_helpers.rb +3 -1
  173. data/lib/spree/testing_support/capybara_config.rb +14 -19
  174. data/lib/spree/testing_support/capybara_ext.rb +1 -6
  175. data/lib/spree/testing_support/common_rake.rb +22 -4
  176. data/lib/spree/testing_support/factories/asset_factory.rb +15 -0
  177. data/lib/spree/testing_support/factories/cms_section_factory.rb +2 -2
  178. data/lib/spree/testing_support/factories/digital_factory.rb +10 -0
  179. data/lib/spree/testing_support/factories/digital_link_factory.rb +6 -0
  180. data/lib/spree/testing_support/factories/log_entry_factory.rb +6 -0
  181. data/lib/spree/testing_support/factories/order_factory.rb +4 -1
  182. data/lib/spree/testing_support/factories/payment_capture_event_factory.rb +6 -0
  183. data/lib/spree/testing_support/factories/payment_factory.rb +3 -3
  184. data/lib/spree/testing_support/factories/promotion_action_factory.rb +5 -0
  185. data/lib/spree/testing_support/factories/reimbursement_credit_factory.rb +7 -0
  186. data/lib/spree/testing_support/factories/shipping_rate_factory.rb +7 -0
  187. data/lib/spree/testing_support/factories/state_change_factory.rb +8 -0
  188. data/lib/spree/testing_support/factories/stock_item_factory.rb +7 -0
  189. data/lib/spree/testing_support/factories/stock_location_factory.rb +1 -1
  190. data/lib/spree/testing_support/factories/stock_transfer_factory.rb +9 -0
  191. data/lib/spree/testing_support/factories/store_credit_factory.rb +1 -1
  192. data/lib/spree/testing_support/factories/store_credit_type_factory.rb +5 -0
  193. data/lib/spree/testing_support/factories/tax_rate_factory.rb +1 -0
  194. data/lib/spree/testing_support/factories/user_factory.rb +2 -0
  195. data/lib/spree/testing_support/factories/wished_variant_factory.rb +6 -0
  196. data/lib/spree/testing_support/factories/wishlist_factory.rb +18 -0
  197. data/lib/spree/testing_support/jobs.rb +9 -0
  198. data/lib/tasks/core.rake +4 -4
  199. data/spree_core.gemspec +2 -1
  200. metadata +104 -324
  201. data/app/models/spree/order_contents.rb +0 -31
  202. data/app/services/spree/account/addresses/helper.rb +0 -43
  203. data/app/services/spree/build_localized_redirect_url.rb +0 -101
  204. data/db/default/spree/countries.rb +0 -24
  205. data/db/default/spree/default_reimbursement_type.rb +0 -1
  206. data/db/default/spree/roles.rb +0 -2
  207. data/db/default/spree/states.rb +0 -49
  208. data/db/default/spree/store_credit_categories.rb +0 -1
  209. data/db/default/spree/stores.rb +0 -21
  210. data/db/default/spree/zones.rb +0 -29
  211. data/db/migrate/20120831092320_spree_one_two.rb +0 -481
  212. data/db/migrate/20120831092359_spree_promo_one_two.rb +0 -45
  213. data/db/migrate/20120905145253_add_tax_rate_label.rb +0 -5
  214. data/db/migrate/20120905151823_add_toggle_tax_rate_display.rb +0 -5
  215. data/db/migrate/20120929093553_remove_unused_preference_columns.rb +0 -8
  216. data/db/migrate/20121009142519_add_lock_version_to_variant.rb +0 -5
  217. data/db/migrate/20121010142909_add_states_required_to_countries.rb +0 -5
  218. data/db/migrate/20121012071449_add_on_demand_to_product_and_variant.rb +0 -6
  219. data/db/migrate/20121017010007_remove_not_null_constraint_from_products_on_hand.rb +0 -11
  220. data/db/migrate/20121031162139_split_prices_from_variants.rb +0 -31
  221. data/db/migrate/20121107003422_remove_not_null_from_spree_prices_amount.rb +0 -9
  222. data/db/migrate/20121107184631_add_currency_to_line_items.rb +0 -5
  223. data/db/migrate/20121107194006_add_currency_to_orders.rb +0 -5
  224. data/db/migrate/20121109173623_add_cost_currency_to_variants.rb +0 -5
  225. data/db/migrate/20121111231553_remove_display_on_from_payment_methods.rb +0 -5
  226. data/db/migrate/20121124203911_add_position_to_taxonomies.rb +0 -5
  227. data/db/migrate/20121126040517_add_last_ip_to_spree_orders.rb +0 -5
  228. data/db/migrate/20121213162028_add_state_to_spree_adjustments.rb +0 -6
  229. data/db/migrate/20130114053446_add_display_on_to_spree_payment_methods.rb +0 -9
  230. data/db/migrate/20130120201805_add_position_to_product_properties.spree.rb +0 -6
  231. data/db/migrate/20130203232234_add_identifier_to_spree_payments.rb +0 -5
  232. data/db/migrate/20130207155350_add_order_id_index_to_payments.rb +0 -9
  233. data/db/migrate/20130208032954_add_primary_to_spree_products_taxons.rb +0 -5
  234. data/db/migrate/20130211190146_create_spree_stock_items.rb +0 -14
  235. data/db/migrate/20130211191120_create_spree_stock_locations.rb +0 -11
  236. data/db/migrate/20130213191427_create_default_stock.rb +0 -33
  237. data/db/migrate/20130222032153_add_order_id_index_to_shipments.rb +0 -5
  238. data/db/migrate/20130226032817_change_meta_description_on_spree_products_to_text.rb +0 -5
  239. data/db/migrate/20130226191231_add_stock_location_id_to_spree_shipments.rb +0 -5
  240. data/db/migrate/20130227143905_add_pending_to_inventory_unit.rb +0 -6
  241. data/db/migrate/20130228164411_remove_on_demand_from_product_and_variant.rb +0 -6
  242. data/db/migrate/20130228210442_create_shipping_method_zone.rb +0 -21
  243. data/db/migrate/20130301162745_remove_shipping_category_id_from_shipping_method.rb +0 -5
  244. data/db/migrate/20130301162924_create_shipping_method_categories.rb +0 -13
  245. data/db/migrate/20130301205200_add_tracking_url_to_spree_shipping_methods.rb +0 -5
  246. data/db/migrate/20130304162240_create_spree_shipping_rates.rb +0 -24
  247. data/db/migrate/20130304192936_remove_category_match_attributes_from_shipping_method.rb +0 -7
  248. data/db/migrate/20130305143310_create_stock_movements.rb +0 -12
  249. data/db/migrate/20130306181701_add_address_fields_to_stock_location.rb +0 -22
  250. data/db/migrate/20130306191917_add_active_field_to_stock_locations.rb +0 -5
  251. data/db/migrate/20130306195650_add_backorderable_to_stock_item.rb +0 -5
  252. data/db/migrate/20130307161754_add_default_quantity_to_stock_movement.rb +0 -5
  253. data/db/migrate/20130318151756_add_source_and_destination_to_stock_movements.rb +0 -8
  254. data/db/migrate/20130319062004_change_orders_total_precision.rb +0 -8
  255. data/db/migrate/20130319063911_change_spree_payments_amount_precision.rb +0 -7
  256. data/db/migrate/20130319064308_change_spree_return_authorization_amount_precision.rb +0 -7
  257. data/db/migrate/20130319082943_change_adjustments_amount_precision.rb +0 -7
  258. data/db/migrate/20130319183250_add_originator_to_stock_movement.rb +0 -7
  259. data/db/migrate/20130319190507_drop_source_and_destination_from_stock_movement.rb +0 -15
  260. data/db/migrate/20130325163316_migrate_inventory_unit_sold_to_on_hand.rb +0 -9
  261. data/db/migrate/20130326175857_add_stock_location_to_rma.rb +0 -5
  262. data/db/migrate/20130328130308_update_shipment_state_for_canceled_orders.rb +0 -15
  263. data/db/migrate/20130328195253_add_seo_metas_to_taxons.rb +0 -9
  264. data/db/migrate/20130329134939_remove_stock_item_and_variant_lock.rb +0 -14
  265. data/db/migrate/20130413230529_add_name_to_spree_credit_cards.rb +0 -5
  266. data/db/migrate/20130414000512_update_name_fields_on_spree_credit_cards.rb +0 -13
  267. data/db/migrate/20130417120034_add_index_to_source_columns_on_adjustments.rb +0 -5
  268. data/db/migrate/20130417120035_update_adjustment_states.rb +0 -16
  269. data/db/migrate/20130417123427_add_shipping_rates_to_shipments.rb +0 -15
  270. data/db/migrate/20130418125341_create_spree_stock_transfers.rb +0 -14
  271. data/db/migrate/20130423110707_drop_products_count_on_hand.rb +0 -5
  272. data/db/migrate/20130423223847_set_default_shipping_rate_cost.rb +0 -5
  273. data/db/migrate/20130509115210_add_number_to_stock_transfer.rb +0 -23
  274. data/db/migrate/20130514151929_add_sku_index_to_spree_variants.rb +0 -5
  275. data/db/migrate/20130515180736_add_backorderable_default_to_spree_stock_location.rb +0 -5
  276. data/db/migrate/20130516151222_add_propage_all_variants_to_spree_stock_location.rb +0 -5
  277. data/db/migrate/20130611054351_rename_shipping_methods_zones_to_spree_shipping_methods_zones.rb +0 -5
  278. data/db/migrate/20130611185927_add_user_id_index_to_spree_orders.rb +0 -5
  279. data/db/migrate/20130618041418_add_updated_at_to_spree_countries.rb +0 -9
  280. data/db/migrate/20130619012236_add_updated_at_to_spree_states.rb +0 -9
  281. data/db/migrate/20130626232741_add_cvv_result_code_and_cvv_result_message_to_spree_payments.rb +0 -6
  282. data/db/migrate/20130628021056_add_unique_index_to_permalink_on_spree_products.rb +0 -5
  283. data/db/migrate/20130628022817_add_unique_index_to_orders_shipments_and_stock_transfers.rb +0 -7
  284. data/db/migrate/20130708052307_add_deleted_at_to_spree_tax_rates.rb +0 -5
  285. data/db/migrate/20130711200933_remove_lock_version_from_inventory_units.rb +0 -6
  286. data/db/migrate/20130718042445_add_cost_price_to_line_item.rb +0 -5
  287. data/db/migrate/20130718233855_set_backorderable_to_default_to_false.rb +0 -6
  288. data/db/migrate/20130725031716_add_created_by_id_to_spree_orders.rb +0 -5
  289. data/db/migrate/20130729214043_index_completed_at_on_spree_orders.rb +0 -5
  290. data/db/migrate/20130802014537_add_tax_category_id_to_spree_line_items.rb +0 -5
  291. data/db/migrate/20130802022321_migrate_tax_categories_to_line_items.rb +0 -10
  292. data/db/migrate/20130806022521_drop_spree_mail_methods.rb +0 -12
  293. data/db/migrate/20130806145853_set_default_stock_location_on_shipments.rb +0 -8
  294. data/db/migrate/20130807024301_upgrade_adjustments.rb +0 -46
  295. data/db/migrate/20130807024302_rename_adjustment_fields.rb +0 -20
  296. data/db/migrate/20130809164245_add_admin_name_column_to_spree_shipping_methods.rb +0 -5
  297. data/db/migrate/20130809164330_add_admin_name_column_to_spree_stock_locations.rb +0 -5
  298. data/db/migrate/20130813004002_add_shipment_total_to_spree_orders.rb +0 -5
  299. data/db/migrate/20130813140619_expand_order_number_size.rb +0 -9
  300. data/db/migrate/20130813232134_rename_activators_to_promotions.rb +0 -5
  301. data/db/migrate/20130815000406_add_adjustment_total_to_line_items.rb +0 -5
  302. data/db/migrate/20130815024413_add_adjustment_total_to_shipments.rb +0 -5
  303. data/db/migrate/20130826062534_add_depth_to_spree_taxons.rb +0 -16
  304. data/db/migrate/20130828234942_add_tax_total_to_line_items_shipments_and_orders.rb +0 -8
  305. data/db/migrate/20130830001033_add_shipping_category_to_shipping_methods_and_products.rb +0 -15
  306. data/db/migrate/20130830001159_migrate_old_shipping_calculators.rb +0 -19
  307. data/db/migrate/20130903183026_add_code_to_spree_promotion_rules.rb +0 -5
  308. data/db/migrate/20130909115621_change_states_required_for_countries.rb +0 -9
  309. data/db/migrate/20130915032339_add_deleted_at_to_spree_stock_items.rb +0 -5
  310. data/db/migrate/20130917024658_remove_promotions_event_name_field.rb +0 -5
  311. data/db/migrate/20130924040529_add_promo_total_to_line_items_and_shipments_and_orders.rb +0 -7
  312. data/db/migrate/20131001013410_remove_unused_credit_card_fields.rb +0 -16
  313. data/db/migrate/20131026154747_add_track_inventory_to_variant.rb +0 -5
  314. data/db/migrate/20131107132123_add_tax_category_to_variants.rb +0 -6
  315. data/db/migrate/20131113035136_add_channel_to_spree_orders.rb +0 -5
  316. data/db/migrate/20131118043959_add_included_to_adjustments.rb +0 -5
  317. data/db/migrate/20131118050234_rename_tax_total_fields.rb +0 -11
  318. data/db/migrate/20131118183431_add_line_item_id_to_spree_inventory_units.rb +0 -21
  319. data/db/migrate/20131120234456_add_updated_at_to_variants.rb +0 -5
  320. data/db/migrate/20131127001002_add_position_to_classifications.rb +0 -5
  321. data/db/migrate/20131211112807_create_spree_orders_promotions.rb +0 -8
  322. data/db/migrate/20131211192741_unique_shipping_method_categories.rb +0 -24
  323. data/db/migrate/20131218054603_add_item_count_to_spree_orders.rb +0 -5
  324. data/db/migrate/20140106065820_remove_value_type_from_spree_preferences.rb +0 -8
  325. data/db/migrate/20140106224208_rename_permalink_to_slug_for_products.rb +0 -5
  326. data/db/migrate/20140120160805_add_index_to_variant_id_and_currency_on_prices.rb +0 -5
  327. data/db/migrate/20140124023232_rename_activator_id_in_rules_and_actions_to_promotion_id.rb +0 -6
  328. data/db/migrate/20140129024326_add_deleted_at_to_spree_prices.rb +0 -5
  329. data/db/migrate/20140203161722_add_approver_id_and_approved_at_to_orders.rb +0 -6
  330. data/db/migrate/20140204115338_add_confirmation_delivered_to_spree_orders.rb +0 -5
  331. data/db/migrate/20140204192230_add_auto_capture_to_payment_methods.rb +0 -5
  332. data/db/migrate/20140205120320_create_spree_payment_capture_events.rb +0 -12
  333. data/db/migrate/20140205144710_add_uncaptured_amount_to_payments.rb +0 -5
  334. data/db/migrate/20140205181631_default_variant_weight_to_zero.rb +0 -11
  335. data/db/migrate/20140207085910_add_tax_category_id_to_shipping_methods.rb +0 -5
  336. data/db/migrate/20140207093021_add_tax_rate_id_to_shipping_rates.rb +0 -5
  337. data/db/migrate/20140211040159_add_pre_tax_amount_to_line_items_and_shipments.rb +0 -6
  338. data/db/migrate/20140213184916_add_more_indexes.rb +0 -13
  339. data/db/migrate/20140219060952_add_considered_risky_to_orders.rb +0 -5
  340. data/db/migrate/20140227112348_add_preference_store_to_everything.rb +0 -8
  341. data/db/migrate/20140307235515_add_user_id_to_spree_credit_cards.rb +0 -13
  342. data/db/migrate/20140309023735_migrate_old_preferences.rb +0 -27
  343. data/db/migrate/20140309024355_create_spree_stores.rb +0 -25
  344. data/db/migrate/20140309033438_create_store_from_preferences.rb +0 -42
  345. data/db/migrate/20140315053743_add_timestamps_to_spree_assets.rb +0 -6
  346. data/db/migrate/20140318191500_create_spree_taxons_promotion_rules.rb +0 -8
  347. data/db/migrate/20140331100557_add_additional_store_fields.rb +0 -8
  348. data/db/migrate/20140410141842_add_many_missing_indexes.rb +0 -18
  349. data/db/migrate/20140410150358_correct_some_polymorphic_index_and_add_more_missing.rb +0 -66
  350. data/db/migrate/20140415041315_add_user_id_created_by_id_index_to_order.rb +0 -5
  351. data/db/migrate/20140508151342_change_spree_price_amount_precision.rb +0 -8
  352. data/db/migrate/20140518174634_add_token_to_spree_orders.rb +0 -5
  353. data/db/migrate/20140530024945_move_order_token_from_tokenized_permission.rb +0 -29
  354. data/db/migrate/20140601011216_set_shipment_total_for_users_upgrading.rb +0 -10
  355. data/db/migrate/20140604135309_drop_credit_card_first_name_and_last_name.rb +0 -6
  356. data/db/migrate/20140609201656_add_deleted_at_to_spree_promotion_actions.rb +0 -6
  357. data/db/migrate/20140616202624_remove_uncaptured_amount_from_spree_payments.rb +0 -5
  358. data/db/migrate/20140625214618_create_spree_refunds.rb +0 -12
  359. data/db/migrate/20140702140656_create_spree_return_authorization_inventory_unit.rb +0 -12
  360. data/db/migrate/20140707125621_rename_return_authorization_inventory_unit_to_return_items.rb +0 -5
  361. data/db/migrate/20140709160534_backfill_line_item_pre_tax_amount.rb +0 -10
  362. data/db/migrate/20140710041921_recreate_spree_return_authorizations.rb +0 -55
  363. data/db/migrate/20140710181204_add_amount_fields_to_return_items.rb +0 -7
  364. data/db/migrate/20140710190048_drop_return_authorization_amount.rb +0 -5
  365. data/db/migrate/20140713140455_create_spree_return_authorization_reasons.rb +0 -28
  366. data/db/migrate/20140713140527_create_spree_refund_reasons.rb +0 -14
  367. data/db/migrate/20140713142214_rename_return_authorization_reason.rb +0 -5
  368. data/db/migrate/20140715182625_create_spree_promotion_categories.rb +0 -11
  369. data/db/migrate/20140716204111_drop_received_at_on_return_items.rb +0 -9
  370. data/db/migrate/20140716212330_add_reception_and_acceptance_status_to_return_items.rb +0 -6
  371. data/db/migrate/20140717155155_create_default_refund_reason.rb +0 -9
  372. data/db/migrate/20140717185932_add_default_to_spree_stock_locations.rb +0 -7
  373. data/db/migrate/20140718133010_create_spree_customer_returns.rb +0 -9
  374. data/db/migrate/20140718133349_add_customer_return_id_to_return_item.rb +0 -6
  375. data/db/migrate/20140718195325_create_friendly_id_slugs.rb +0 -15
  376. data/db/migrate/20140723004419_rename_spree_refund_return_authorization_id.rb +0 -5
  377. data/db/migrate/20140723152808_increase_return_item_pre_tax_amount_precision.rb +0 -13
  378. data/db/migrate/20140723214541_copy_product_slugs_to_slug_history.rb +0 -15
  379. data/db/migrate/20140725131539_create_spree_reimbursements.rb +0 -21
  380. data/db/migrate/20140728225422_add_promotionable_to_spree_products.rb +0 -5
  381. data/db/migrate/20140729133613_add_exchange_inventory_unit_foreign_keys.rb +0 -7
  382. data/db/migrate/20140730155938_add_acceptance_status_errors_to_return_item.rb +0 -5
  383. data/db/migrate/20140731150017_create_spree_reimbursement_types.rb +0 -20
  384. data/db/migrate/20140804185157_add_default_to_shipment_cost.rb +0 -10
  385. data/db/migrate/20140805171035_add_default_to_spree_credit_cards.rb +0 -5
  386. data/db/migrate/20140806144901_add_type_to_reimbursement_type.rb +0 -9
  387. data/db/migrate/20140808184039_create_spree_reimbursement_credits.rb +0 -10
  388. data/db/migrate/20140827170513_add_meta_title_to_spree_products.rb +0 -7
  389. data/db/migrate/20140911173301_add_kind_to_zone.rb +0 -11
  390. data/db/migrate/20140924164824_add_code_to_spree_tax_categories.rb +0 -5
  391. data/db/migrate/20140927193717_default_pre_tax_amount_should_be_zero.rb +0 -6
  392. data/db/migrate/20141002191113_add_code_to_spree_shipping_methods.rb +0 -5
  393. data/db/migrate/20141007230328_add_cancel_audit_fields_to_spree_orders.rb +0 -6
  394. data/db/migrate/20141009204607_add_store_id_to_orders.rb +0 -8
  395. data/db/migrate/20141012083513_create_spree_taxons_prototypes.rb +0 -8
  396. data/db/migrate/20141021194502_add_state_lock_version_to_order.rb +0 -5
  397. data/db/migrate/20141023005240_add_counter_cache_from_spree_variants_to_spree_stock_items.rb +0 -8
  398. data/db/migrate/20141101231208_fix_adjustment_order_presence.rb +0 -13
  399. data/db/migrate/20141105213646_update_classifications_positions.rb +0 -9
  400. data/db/migrate/20141120135441_add_guest_token_index_to_spree_orders.rb +0 -5
  401. data/db/migrate/20141215232040_remove_token_permissions_table.rb +0 -6
  402. data/db/migrate/20141215235502_remove_extra_products_slug_index.rb +0 -5
  403. data/db/migrate/20141217215630_update_product_slug_index.rb +0 -6
  404. data/db/migrate/20141218025915_rename_identifier_to_number_for_payment.rb +0 -5
  405. data/db/migrate/20150118210639_create_spree_store_credits.rb +0 -24
  406. data/db/migrate/20150118211500_create_spree_store_credit_categories.rb +0 -8
  407. data/db/migrate/20150118212051_create_spree_store_credit_events.rb +0 -17
  408. data/db/migrate/20150118212101_create_spree_store_credit_types.rb +0 -10
  409. data/db/migrate/20150121022521_remove_environment_from_payment_method.rb +0 -6
  410. data/db/migrate/20150122145607_add_resellable_to_return_items.rb +0 -5
  411. data/db/migrate/20150122202432_add_code_to_spree_promotion_categories.rb +0 -5
  412. data/db/migrate/20150128032538_remove_environment_from_tracker.rb +0 -8
  413. data/db/migrate/20150128060325_remove_spree_configurations.rb +0 -16
  414. data/db/migrate/20150216173445_add_index_to_spree_stock_items_variant_id.rb +0 -13
  415. data/db/migrate/20150309161154_ensure_payments_have_numbers.rb +0 -13
  416. data/db/migrate/20150314013438_add_missing_indexes_on_spree_tables.rb +0 -67
  417. data/db/migrate/20150317174308_remove_duplicated_indexes_from_multi_columns.rb +0 -18
  418. data/db/migrate/20150324104002_remove_user_index_from_spree_state_changes.rb +0 -14
  419. data/db/migrate/20150515211137_fix_adjustment_order_id.rb +0 -70
  420. data/db/migrate/20150522071831_add_position_to_spree_payment_methods.rb +0 -5
  421. data/db/migrate/20150522181728_add_deleted_at_to_friendly_id_slugs.rb +0 -6
  422. data/db/migrate/20150609093816_increase_scale_on_pre_tax_amounts.rb +0 -16
  423. data/db/migrate/20150626181949_add_taxable_adjustment_total_to_line_item.rb +0 -19
  424. data/db/migrate/20150627090949_migrate_payment_methods_display.rb +0 -12
  425. data/db/migrate/20150707204155_enable_acts_as_paranoid_on_calculators.rb +0 -6
  426. data/db/migrate/20150714154102_spree_payment_method_store_credits.rb +0 -12
  427. data/db/migrate/20150726141425_rename_has_and_belongs_to_associations_to_model_names.rb +0 -18
  428. data/db/migrate/20150727191614_spree_store_credit_types.rb +0 -11
  429. data/db/migrate/20150819154308_add_discontinued_to_products_and_variants.rb +0 -68
  430. data/db/migrate/20151220072838_remove_shipping_method_id_from_spree_orders.rb +0 -13
  431. data/db/migrate/20160207191757_add_id_column_to_earlier_habtm_tables.rb +0 -16
  432. data/db/migrate/20160219165458_add_indexes.rb +0 -14
  433. data/db/migrate/20160509064646_remove_counter_cache_from_spree_variants_to_spree_stock_items.rb +0 -10
  434. data/db/migrate/20160608090604_add_zipcode_required_to_spree_countries.rb +0 -7
  435. data/db/migrate/20161014145148_add_created_at_to_variant.rb +0 -8
  436. data/db/migrate/20161014152814_add_null_false_to_spree_variants_timestamps.rb +0 -6
  437. data/db/migrate/20161125065505_add_quantity_to_inventory_units.rb +0 -5
  438. data/db/migrate/20170119122701_add_original_return_item_id_to_spree_inventory_units.rb +0 -29
  439. data/db/migrate/20170315152755_add_unique_index_on_number_to_spree_orders.rb +0 -16
  440. data/db/migrate/20170316154338_add_unique_index_on_number_to_spree_stock_transfer.rb +0 -16
  441. data/db/migrate/20170316205511_add_unique_index_on_number_to_spree_shipment.rb +0 -16
  442. data/db/migrate/20170320134043_add_unique_index_on_number_to_spree_payments.rb +0 -17
  443. data/db/migrate/20170320142750_add_unique_index_on_number_to_spree_return_authorizations.rb +0 -16
  444. data/db/migrate/20170320145040_add_unique_index_on_number_to_spree_customer_returns.rb +0 -16
  445. data/db/migrate/20170320145518_add_unique_index_on_number_to_spree_reimbursements.rb +0 -16
  446. data/db/migrate/20170323151450_add_missing_unique_indexes_for_unique_attributes.rb +0 -37
  447. data/db/migrate/20170329110859_add_index_on_stock_location_to_spree_customer_returns.rb +0 -5
  448. data/db/migrate/20170329113917_add_index_on_prototype_to_spree_option_type_prototype.rb +0 -19
  449. data/db/migrate/20170330082155_add_indexes_to_spree_option_value_variant.rb +0 -19
  450. data/db/migrate/20170330132215_add_index_on_promotion_id_to_order_promotions.rb +0 -5
  451. data/db/migrate/20170331101758_add_indexes_for_property_prototype.rb +0 -20
  452. data/db/migrate/20170331103334_add_index_for_prototype_id_to_prototype_taxons.rb +0 -5
  453. data/db/migrate/20170331110454_add_indexes_to_refunds.rb +0 -6
  454. data/db/migrate/20170331111757_add_indexes_to_reimbursement_credits.rb +0 -6
  455. data/db/migrate/20170331115246_add_indexes_to_return_authorizations.rb +0 -6
  456. data/db/migrate/20170331120125_add_indexes_to_return_items.rb +0 -11
  457. data/db/migrate/20170331121725_add_index_to_role_users.rb +0 -18
  458. data/db/migrate/20170331123625_add_index_to_shipping_method_categories.rb +0 -5
  459. data/db/migrate/20170331123832_add_index_to_shipping_method_zones.rb +0 -20
  460. data/db/migrate/20170331124251_add_index_to_spree_shipping_rates.rb +0 -6
  461. data/db/migrate/20170331124513_add_index_to_spree_stock_items.rb +0 -5
  462. data/db/migrate/20170331124924_add_index_to_spree_stock_movement.rb +0 -5
  463. data/db/migrate/20170413211707_change_indexes_on_friendly_id_slugs.rb +0 -10
  464. data/db/migrate/20170722102643_add_analytics_kind_to_spree_trackers.rb +0 -5
  465. data/db/migrate/20170727103056_rename_tracker_kind_field.rb +0 -5
  466. data/db/migrate/20171004223836_remove_icon_from_taxons.rb +0 -8
  467. data/db/migrate/20180222133746_add_unique_index_on_spree_promotions_code.rb +0 -6
  468. data/db/migrate/20180613080857_rename_guest_token_to_token_in_orders.rb +0 -5
  469. data/db/migrate/20180915160001_add_timestamps_to_spree_prices.rb +0 -12
  470. data/db/migrate/20181024100754_add_deleted_at_to_spree_credit_cards.rb +0 -6
  471. data/db/migrate/20190305121659_add_iso_and_iso3_validation_on_presence_and_uniqueness.rb +0 -18
  472. data/db/migrate/20190523092729_add_user_id_and_deleted_at_to_spree_addresses.rb +0 -12
  473. data/db/migrate/20191005121504_add_store_id_to_payment_methods.rb +0 -7
  474. data/db/migrate/20191016134113_add_deafult_value_for_store_default_currency.rb +0 -5
  475. data/db/migrate/20191017121054_add_supported_currencies_to_store.rb +0 -11
  476. data/db/migrate/20200102141311_add_social_to_spree_stores.rb +0 -10
  477. data/db/migrate/20200212144523_add_hide_from_nav_to_taxons.rb +0 -5
  478. data/db/migrate/20200308210757_add_default_locale_to_spree_store.rb +0 -7
  479. data/db/migrate/20200310145140_add_customer_support_email_to_spree_store.rb +0 -7
  480. data/db/migrate/20200421095017_add_compare_at_amount_to_spree_prices.rb +0 -7
  481. data/db/migrate/20200423123001_add_default_country_id_to_spree_store.rb +0 -9
  482. data/db/migrate/20200430072209_add_footer_fields_to_spree_stores.rb +0 -8
  483. data/db/migrate/20200513154939_add_show_property_to_spree_product_properties.rb +0 -5
  484. data/db/migrate/20200607161221_add_store_owner_order_notification_delivered_to_spree_orders.rb +0 -7
  485. data/db/migrate/20200607161222_add_new_order_notifications_email_to_spree_stores.rb +0 -7
  486. data/db/migrate/20200610113542_add_label_to_spree_addresses.rb +0 -5
  487. data/db/migrate/20200826075557_add_unique_index_on_taxon_id_and_product_id_to_spree_products_taxons.rb +0 -5
  488. data/db/migrate/20201006110150_add_checkout_zone_field_to_store.rb +0 -12
  489. data/db/migrate/20201012091259_add_filterable_column_to_spree_option_types.rb +0 -10
  490. data/db/migrate/20201013084504_add_seo_robots_to_spree_stores.rb +0 -5
  491. data/db/migrate/20201023152810_add_filterable_to_spree_properties.rb +0 -8
  492. data/db/migrate/20201127084048_add_default_country_kind_to_spree_zones.rb +0 -5
  493. data/db/migrate/20210112193440_remove_contact_email_from_spree_stores.rb +0 -5
  494. data/db/migrate/20210114182625_create_spree_payment_methods_stores.rb +0 -10
  495. data/db/migrate/20210114220232_migrate_data_payment_methods_stores.rb +0 -15
  496. data/db/migrate/20210117112551_remove_store_id_from_spree_payment_methods.rb +0 -5
  497. data/db/migrate/20210120142527_ensure_default_locale_in_spree_stores.rb +0 -5
  498. data/db/migrate/20210205211040_add_supported_locales_to_spree_stores.rb +0 -11
  499. data/db/migrate/20210215202602_migrate_spree_i18n_globalize_config.rb +0 -22
  500. data/db/migrate/20210407200948_create_spree_menus.rb +0 -16
  501. data/db/migrate/20210408092939_create_spree_menu_items.rb +0 -31
  502. data/db/migrate/20210504163720_add_filter_param_to_spree_product_properties.rb +0 -8
  503. data/db/migrate/20210505114659_add_filter_param_to_spree_properties.rb +0 -8
  504. data/db/migrate/20210512191732_create_spree_cms_pages.rb +0 -24
  505. data/db/migrate/20210514204251_create_spree_cms_sections.rb +0 -22
  506. data/db/migrate/20210527094055_create_spree_products_stores.rb +0 -36
  507. data/db/migrate/20210608045519_ensure_store_default_country_is_set.rb +0 -5
  508. data/db/migrate/20210702112334_add_missing_timestamp_columns.rb +0 -46
  509. data/db/migrate/20210713131614_add_unique_index_on_property_id_and_product_id_to_product_properties.rb +0 -29
  510. data/db/migrate/20210715091956_add_store_id_to_spree_store_credits.rb +0 -10
  511. data/db/migrate/20210716093151_add_store_id_to_spree_taxonomies.rb +0 -11
  512. data/db/migrate/20210716104141_add_index_on_name_parent_id_and_taxonomy_id_on_spree_taxons.rb +0 -31
  513. data/db/migrate/20210721120857_add_index_on_permalink_parent_id_and_taxonomy_id_on_spree_taxons.rb +0 -31
  514. data/db/migrate/20210721125657_create_spree_promotions_stores.rb +0 -29
  515. data/db/migrate/20210722090705_add_store_id_to_spree_customer_returns.rb +0 -11
  516. data/db/migrate/20210726065456_change_integer_id_columns_into_bigint.rb +0 -305
  517. data/db/migrate/20210730154425_fix_promotion_code_and_path_unique_indexes.rb +0 -9
  518. /data/lib/spree/{dependencies_helper.rb → core/dependencies_helper.rb} +0 -0
@@ -0,0 +1,14 @@
1
+ module Spree
2
+ module Shipments
3
+ class ChangeState
4
+ prepend Spree::ServiceModule::Base
5
+
6
+ def call(shipment:, state:)
7
+ shipment.send("#{state}!")
8
+ success(shipment.reload)
9
+ rescue ActiveRecord::Rollback, ActiveRecord::RecordInvalid, StateMachines::InvalidTransition
10
+ failure(shipment)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,48 @@
1
+ # creates new shipment record
2
+ # if selected item (variant) is already added to order it will update line item
3
+ # if not - it will create new line item record
4
+ module Spree
5
+ module Shipments
6
+ class Create
7
+ prepend Spree::ServiceModule::Base
8
+ include Helper
9
+
10
+ def call(store:, shipment_attributes:)
11
+ ActiveRecord::Base.transaction do
12
+ run :prepare_arguments
13
+ run :create_shipment
14
+ run :add_or_update_line_item
15
+ end
16
+ end
17
+
18
+ protected
19
+
20
+ def prepare_arguments(store:, shipment_attributes:)
21
+ order_id_or_number = shipment_attributes[:order_id]
22
+ order = store.orders.find_by(number: order_id_or_number) || store.orders.find_by(id: order_id_or_number)
23
+
24
+ return failure(nil, :order_not_found) if order.nil?
25
+
26
+ variant = store.variants.find_by(id: shipment_attributes[:variant_id])
27
+ return failure(nil, :variant_not_found) if variant.nil?
28
+
29
+ stock_location = Spree::StockLocation.find_by(id: shipment_attributes[:stock_location_id])
30
+ return failure(nil, :stock_location_not_found) if stock_location.nil?
31
+
32
+ quantity = shipment_attributes[:quantity]&.to_i || 1
33
+
34
+ success(order: order, stock_location: stock_location, variant: variant, quantity: quantity)
35
+ end
36
+
37
+ def create_shipment(order:, stock_location:, variant:, quantity:)
38
+ shipment = order.shipments.create(
39
+ order_id: order.id,
40
+ stock_location_id: stock_location.id
41
+ )
42
+ return failure(shipment) unless shipment.persisted?
43
+
44
+ success(order: order, variant: variant, quantity: quantity, shipment: shipment)
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,23 @@
1
+ module Spree
2
+ module Shipments
3
+ module Helper
4
+ def add_or_update_line_item(order:, variant:, quantity:, shipment:)
5
+ result = add_item_service.call(order: order, variant: variant, quantity: quantity, options: { shipment: shipment })
6
+
7
+ if result.success?
8
+ success(shipment.reload)
9
+ else
10
+ failure(result.value, result.error)
11
+ end
12
+ end
13
+
14
+ def add_item_service
15
+ Spree::Dependencies.cart_add_item_service.constantize
16
+ end
17
+
18
+ def remove_item_service
19
+ Spree::Dependencies.cart_remove_item_service.constantize
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,55 @@
1
+ # removes an item (variant) from shipment
2
+ # quantity can be passed
3
+ # if there is no quantity left for this item for this shipent, shipment itself will be removed
4
+ module Spree
5
+ module Shipments
6
+ class RemoveItem
7
+ prepend Spree::ServiceModule::Base
8
+ include Helper
9
+
10
+ def call(shipment:, variant_id:, quantity: nil)
11
+ ActiveRecord::Base.transaction do
12
+ run :prepare_arguments
13
+ run :remove_item
14
+ end
15
+ end
16
+
17
+ protected
18
+
19
+ def prepare_arguments(shipment:, variant_id:, quantity: nil)
20
+ variant = Spree::Variant.find_by(id: variant_id)
21
+ return failure(nil, :variant_not_found) if variant.nil? || !shipment.include?(variant)
22
+
23
+ # if quantity isn't passed let's remove all added qty of this variant
24
+ quantity = quantity&.to_i || shipment.inventory_units_for(variant).sum(:quantity)
25
+
26
+ success(shipment: shipment, variant: variant, quantity: quantity)
27
+ end
28
+
29
+ # if the removed variant was the only one shipped via this shipment
30
+ # we need to remove the shipment itself
31
+ def remove_item(shipment:, variant:, quantity:)
32
+ result = remove_item_service.call(order: shipment.order,
33
+ variant: variant,
34
+ quantity: quantity,
35
+ options: { shipment: shipment })
36
+
37
+ if result.success?
38
+ line_item = result.value
39
+ line_item.destroy if line_item.quantity.zero?
40
+
41
+ # `OrderInventory#remove_from_shipment` is called in `remove_item_service`
42
+ # which will delete the shipment if all inventory units were removed
43
+ if shipment.inventory_units.any?
44
+ success(shipment)
45
+ else
46
+ shipment.destroy!
47
+ success(:shipment_deleted)
48
+ end
49
+ else
50
+ failure(result.value, result.error)
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,40 @@
1
+ # Update Shipment and make sure Order states follow the shipment changes
2
+ module Spree
3
+ module Shipments
4
+ class Update
5
+ prepend Spree::ServiceModule::Base
6
+
7
+ def call(shipment:, shipment_attributes: {})
8
+ ActiveRecord::Base.transaction do
9
+ return failure(shipment) unless shipment.update(shipment_attributes)
10
+
11
+ if shipment_attributes.key?(:selected_shipping_rate_id)
12
+ order = shipment.order
13
+
14
+ # Changing the selected Shipping Rate won't update the cost (for now)
15
+ # so we persist the Shipment#cost before calculating order shipment
16
+ # total and updating payment state (given a change in shipment cost
17
+ # might change the Order#payment_state)
18
+ shipment.update_amounts
19
+
20
+ order.updater.update_shipment_total
21
+ order.updater.update_payment_state
22
+
23
+ # Update shipment state only after order total is updated because it
24
+ # (via Order#paid?) affects the shipment state (YAY)
25
+ shipment.update_columns(
26
+ state: shipment.determine_state(order),
27
+ updated_at: Time.current
28
+ )
29
+
30
+ # And then it's time to update shipment states and finally persist
31
+ # order changes
32
+ order.updater.update_shipment_state
33
+ order.updater.persist_totals
34
+ end
35
+ end
36
+ success(shipment)
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,31 @@
1
+ module Spree
2
+ module StockLocations
3
+ module StockItems
4
+ class Create
5
+ prepend Spree::ServiceModule::Base
6
+
7
+ def call(stock_location:, variants_scope: Spree::Variant)
8
+ if Rails::VERSION::MAJOR >= 6
9
+ prepared_stock_items = variants_scope.ids.map do |variant_id|
10
+ Hash[
11
+ 'stock_location_id', stock_location.id,
12
+ 'variant_id', variant_id,
13
+ 'backorderable', stock_location.backorderable_default,
14
+ 'created_at', Time.current,
15
+ 'updated_at', Time.current
16
+ ]
17
+ end
18
+ if prepared_stock_items.any?
19
+ stock_location.stock_items.insert_all(prepared_stock_items)
20
+ variants_scope.touch_all
21
+ end
22
+ else
23
+ variants_scope.find_each do |variant|
24
+ stock_location.propagate_variant(variant)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,26 @@
1
+ module Spree
2
+ module Wallet
3
+ class CreatePaymentSource
4
+ prepend Spree::ServiceModule::Base
5
+
6
+ def call(payment_method:, params: {}, user: nil)
7
+ return failure(nil, :missing_attributes) if params.nil?
8
+
9
+ source_attributes = {
10
+ payment_method_id: payment_method.id,
11
+ user_id: user&.id,
12
+ gateway_payment_profile_id: params[:gateway_payment_profile_id],
13
+ gateway_customer_profile_id: params[:gateway_customer_profile_id],
14
+ last_digits: params[:last_digits],
15
+ month: params[:month],
16
+ year: params[:year],
17
+ name: params[:name]
18
+ }
19
+
20
+ source = payment_method.payment_source_class.new(source_attributes)
21
+
22
+ source.save ? success(source) : failure(source)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,23 @@
1
+ module Spree
2
+ class UrlValidator < ActiveModel::EachValidator
3
+ def validate_each(record, attribute, value)
4
+ unless url_valid?(value)
5
+ record.errors.add(attribute, (options[:message] || ERROR_MESSAGE))
6
+ end
7
+ end
8
+
9
+ private
10
+
11
+ ERROR_MESSAGE = 'must be a valid URL'
12
+ private_constant :ERROR_MESSAGE
13
+
14
+ def url_valid?(url)
15
+ uri = begin
16
+ URI.parse(url)
17
+ rescue URI::InvalidURIError
18
+ return false
19
+ end
20
+ uri.host.present? && uri.is_a?(URI::HTTP)
21
+ end
22
+ end
23
+ end
data/brakeman.ignore ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "ignored_warnings": [
3
+ {
4
+ "fingerprint": "011b2643940ba1112f7a737e403abe3616ad91764703c801cc35a48d36b721da",
5
+ "note": "interpolating table name"
6
+ },
7
+ {
8
+ "fingerprint": "965d3919f811ab63b7b8d62da528559a7f38dc122c57efea7136e7ec5ef1f062",
9
+ "note": "interpolating table name"
10
+ },
11
+ {
12
+ "fingerprint": "abd8e90e7a7dfbcdcd6d44fd3fb550598aee6d7a9ef2bb132ad1a18a3c50be30",
13
+ "note": "interpolating table name"
14
+ },
15
+ {
16
+ "fingerprint": "efcc57e1a5648d7db59d1beaf5e399d2278539a8667b19c520b305a6ca7e15e8",
17
+ "note": "interpolating table name"
18
+ }
19
+ ]
20
+ }
@@ -1,7 +1 @@
1
- class ActiveStorage::PurgeJob < ActiveStorage::BaseJob
2
- def perform(blob)
3
- blob.purge unless blob.attachments.present?
4
- end
5
- end
6
-
7
1
  Rails.application.config.active_storage.content_types_to_serve_as_binary.delete('image/svg+xml')
@@ -382,7 +382,7 @@ en:
382
382
  spree/store:
383
383
  attributes:
384
384
  base:
385
- cannot_destroy_default_store: Cannot destroy the default Store.
385
+ cannot_destroy_only_store: Cannot destroy the only Store.
386
386
  spree/store_credit:
387
387
  attributes:
388
388
  amount_used:
@@ -554,173 +554,9 @@ en:
554
554
  adjustment_successfully_opened: Adjustment has been successfully opened!
555
555
  adjustment_total: Adjustment Total
556
556
  adjustments: Adjustments
557
- admin:
558
- cms:
559
- all_pages: All Pages
560
- add_new_page: Add New Page
561
- add_new_section: Add New Section
562
- content: Content
563
- click_here: click here
564
- draft_mode: Draft Mode
565
- full_width: Full width
566
- link_to_taxon: Link to Taxon
567
- link_to_product: Link to Product
568
- title: Title
569
- fit: Fit To
570
- info_hero_image_body: "<p>The Hero Image section adds a large image with a button and tagline text to your page.</p>
571
- <p>The button can link to a Product, Taxon or Page. This section can be set to fit within the central container or to the edges of the screen.</p>
572
- <p><b>Tip:</b> Use a hero image with no button text or title, and then set the <b>Fit:</b> to <b>Container</b> and <b>Gutters</b> to <b>Use Gutters</b> this creates an image section that looks great above a Side-by-Side Images section, or an Image Gallery section.</p>
573
- <p>Experiment with the settings, and don't be afraid to use more than one Hero Image section per page.</p>"
574
- info_image_gallery_body: "<p>The Image Gallery section can be configured in several ways. For example, each image can link to a product or taxon. If you do not provide a link, you can display three images. Additionally, you can also use labels to add text to your images.</p>
575
- <p>There are two layout configurations for the Image Gallery section, with the taller image used on the left or the right. You can also set this section to fit the edges of the screen or the central container to match your website's style.</p>"
576
- info_product_carousel_body: "<p>Product Carousel is a simple section to use. Search for the taxon you wish to display, save the changes, and the products in your chosen taxon will be displayed on your page.</p>"
577
- info_featured_article_body: "<p>The Feature Article section allows you to add rich text to your page with a set title subtitle and linking button.</p>
578
- <p>This section can be set to use full screen or container and also use gutters.</p>"
579
- info_side_by_side_images_body: "<p>The Side-by-Side Images section can be configured in several ways, you have the option of using them as plane images, images with text, and either of those options can be clickable links if a link is set.</p>
580
- <p><b>Tip:</b> You can blow these images out to the edge of the screen and remove the gutters to create a completely different look.</p>"
581
- info_rich_text_content_body: "<p>The Rich Text Content section is simply a section that offers nothing more than an area of rich text editor content to be displayed on your page.</p>"
582
- brand_bar:
583
- uses_menu: This section uses your Spree Menu named <b>%{menu}</b> to manage the images and links,
584
- vist_menu_to_edit: to edit this menu.
585
- full_width_on_small: Full width on small devices
586
- button_text: Button Text
587
- go_to_fullscreen_section_manager: Go To Fullscreen Section Manager
588
- page_type: Page Type
589
- gutters: Gutters
590
- you_have_no_pages: You have no Pages, click the <b>+ Add New Page</b> button to get started.
591
- new_page: New Page
592
- toggle_page_visibility: Toggle page visibility
593
- meta_title: Meta Title
594
- meta_description: Meta Description
595
- preview_page: Preview Page
596
- full_screen_mode: '<span class="exit">Exit </span>Full Screen Mode'
597
- hero:
598
- aspect_ratio: Please use an image with the aspect ratio of 12:5 (2400px x 1000px)
599
- select_page_type: Select a page type
600
- section_type: Section Type
601
- subtitle: Subtitle
602
- set_gutters: Set Gutters
603
- click_button_to_change_page_type: Click the <b>%{button_type}</b> button to load the options for this page type.
604
- more_page_settings: '<span class="more">More</span><span class="less">Less</span> Page Settings'
605
- seo_settings: SEO Settings
606
- no_sections_found_please_add_one: Add your first section to this page by clicking the <b>+ Add New Section</b> button above.
607
- click_create_to_load_new_link: 'Click the <b>Create</b> button below to save your new page section, and load the section settings.'
608
- click_update_to_load_new_link: 'Click the <b>Update</b> button below to load the new section settings.'
609
- settings_for: 'Options For: <b>%{section}</b>'
610
- page_sections: '%{page_name} Sections'
611
- page_sections_info: 'The area below represents your %{page_type} displayed in %{store}, add sections and drag them into position'
612
- visible: Visible
613
- side_by_side:
614
- left_image: Left Image
615
- right_image: Right Image
616
- image_info: 'Please use an image with an aspect ratio of 54:35 (1468px x 952px).'
617
- image_gallery:
618
- display_labels: Display labels
619
- image_a: Image A
620
- image_b: Image B
621
- image_c: Image C
622
- layout_style: Layout Style
623
- square_image: Please use an image with an aspect ratio of 18:13 (1080px x 780px).
624
- tall_image: Please use an image with an aspect ratio of 27:40 (1080px x 1600px).
625
- linkable:
626
- seach_for_a_page: Search for a page
627
- tab:
628
- configuration: Configuration
629
- content: Content
630
- option_types: Option Types
631
- orders: Orders
632
- overview: Overview
633
- pages: Pages
634
- products: Products
635
- promotions: Promotions
636
- promotion_categories: Promotion Categories
637
- properties: Properties
638
- prototypes: Prototypes
639
- reports: Reports
640
- navigation: Navigation
641
- taxonomies: Taxonomies
642
- taxons: Taxons
643
- users: Users
644
- return_authorizations: Return Authorizations
645
- customer_returns: Customer Returns
646
- order:
647
- changing_store_warning: If you change the store this order belongs to, the order will be reset.
648
- once_an_order_is_complete_you_can_not_change_store: 'Sorry, once an order is complete, you can no longer change the store that the order belongs to.'
649
- events:
650
- approve: approve
651
- cancel: cancel
652
- resume: resume
653
- resend: Resend
654
- orders:
655
- cart: Cart
656
- reports:
657
- for: For %{store_name}
658
- return_authorization:
659
- product: Product
660
- user:
661
- account: Account
662
- addresses: Addresses
663
- items: Items
664
- items_purchased: Items Purchased
665
- order_history: Order History
666
- order_num: "Order #"
667
- orders: Orders
668
- user_information: User Information
669
- stores: Stores
670
- store_credits: Store Credits
671
- no_store_credit: User has no Store Credit available.
672
- available_store_credit: User has %{amount} in Store Credit available.
673
- navigation:
674
- all_menus: All Menus
675
- add_new_menu: Add New Menu
676
- add_new_item: 'Add New Item'
677
- code: Code
678
- default_menus_info:
679
- title: Default Menus
680
- body: "Default menus are menus whose language matches the associated store's default language.<br><br>
681
- <h5>Example</h5>If you have a store that uses Spanish as the default language but also offers the options of German and French; your default header menu for this store would be set to use <b>Español (es)</b> for the language and <b>Header</b> as the location.<br><br>
682
- <h5>Why Are Default Menus Important?</h5> Default menus are displayed to your visitor if no menu is available in the current language they are browsing. It is recommended that you create a default menu for each menu location within each store.<br><br>
683
- <h5>More Information</h5>To learn more about menus, view the official Spree user documentation by <a href='https://guides.spreecommerce.org/user/navigation/building_the_main_menu.html' target='_blank' class='alert-link'>clicking here</a>."
684
- allow_this_menu_item_to_contain_nested_menu_items: Allow this Menu Item to contain nested items
685
- back_to_all_menus: Back To All Menus
686
- click_create_to_load_new_link: 'Click the <b>Create</b> button below to change the link field.'
687
- click_update_to_load_new_link: 'Click the <b>Update</b> button below to change the link field.'
688
- give_your_menu_a_unique_name: 'Use the unique code to identify your menu: spree-eu-main'
689
- link_settings: Link Settings
690
- link_to: Link To
691
- image_alt_text: Add alt text to your image
692
- image_asset: Add a Promotion image or Link icon.
693
- move_could_not_be_saved: 'ERROR: This move could not be saved.'
694
- managing_by_store_title: 'Managing Menus By Store'
695
- managing_by_store: <p>You are managing the menus for <b>%{store}</b>. To manage menus for other stores, change the global store using the drop-down in the main navbar found at the top of the screen.</p>
696
- new_menu_item: New Menu Item
697
- new_menu: New Menu
698
- nested_under: Nested under
699
- no_menu_items: '<b>%{menu}</b> has no items. Click the <b>Add New Item</b> button to begin adding links to this menu.'
700
- nested_under_info: Quickly nest your Menu Item if you already know where it needs to be.
701
- item_type: Item Type
702
- image_info: '<b>NOTE:</b> You can attach an image to any menu item, but your image will only be displayed in the main menu when nested inside a container with the code <b>promo</b>.<br><br> For best results use images with a width of 540px and height of 350px.'
703
- open_link_in_new_window: Open this link in a new window
704
- menu_item_type_container_message: "Containers are menu items that do not link to a destination. If you are building the Spree Main Menu
705
- create containers with the code: <b>category</b> or <b>promo</b>, and then nest your links inside these containers build out your menu.
706
- <br><br> For an indepth guide to building the main menu see the documenttation page <a href='https://guides.spreecommerce.org/user/navigation/building_the_main_menu.html' target='_blank' class='alert-link'>Building The Main Menu</a>"
707
- menus: Menus
708
- menu_items: '%{menu_name} Items'
709
- public_details: Public Details
710
- subtitle: Subtitle
711
- url_info: 'The URL field can link to an external website using <b>https://example.com</b>, link to an otherwise unreachable internal path using <b>/policies/privacy</b>,
712
- launch an email client using <b>mailto:sales@example.com</b> or used to create a clickable phone number with <b>tel:123456789</b>'
713
- seach_for_a_product: Search for a Product
714
- seach_for_a_taxon: Search for a Taxon
715
- settings: Settings
716
- set_a_code: "Adding a code is optional but can be useful if you need to identify this menu item. When building
717
- the Spree main menu use the code <b>category</b> or <b>promo</b> to create the containers that organize links and promotions appropriately. To learn more view the documentation by <a href='https://guides.spreecommerce.org/user/navigation/add_menu_items.html' target='_blank' class='alert-link'>clicking here</a>."
718
- type: Type
719
- used_in: Used In
720
- you_have_no_menus: You have no Menus, click the Add New Menu button to create your first Menu.
721
- this_link_takes_you_to_your_stores_home_page: This link takes you to your stores home page.
722
557
  administration: Administration
723
558
  add_new_store: Add New Store
559
+ adjustments_deleted: Adjustments Deleted
724
560
  advertise: Advertise
725
561
  agree_to_privacy_policy: Agree to Privacy Policy
726
562
  agree_to_terms_of_service: Agree to Terms of Service
@@ -789,7 +625,7 @@ en:
789
625
  cannot_set_shipping_method_without_address: Cannot set shipping method until customer details are provided.
790
626
  capture: Capture
791
627
  capture_events: Capture events
792
- card_code: Card Varification Code (CVC)
628
+ card_code: Card Verification Code (CVC)
793
629
  card_number: Card Number
794
630
  card_type: Brand
795
631
  card_type_is: Card type is
@@ -922,9 +758,12 @@ en:
922
758
  default_refund_amount: Default Refund Amount
923
759
  default_tax: Default Tax
924
760
  default_tax_zone: Default Tax Zone
761
+ default_wishlist_name: Wishlist
925
762
  delete: Delete
926
763
  deleted: Deleted
927
764
  delete_from_taxon: Delete From Taxon
765
+ digital:
766
+ digital_delivery: Digital Delivery
928
767
  discontinued_variants_present: Some line items in this order have products that are no longer available.
929
768
  delivery: Delivery
930
769
  delivery_information: Delivery Information
@@ -985,6 +824,7 @@ en:
985
824
  one: 1 error prohibited this record from being saved
986
825
  other: ! '%{count} errors prohibited this record from being saved'
987
826
  error_user_destroy_with_orders: User associated with orders cannot be destroyed
827
+ error_user_does_not_have_any_store_credits: 'User does not have any Store Credits available'
988
828
  event: Event
989
829
  events:
990
830
  spree:
@@ -1173,6 +1013,7 @@ en:
1173
1013
  meta_title: Meta Title
1174
1014
  metadata: Metadata
1175
1015
  mutable: Mutable
1016
+ must_have_one_store: The resource must belong to a store.
1176
1017
  min: 'Min'
1177
1018
  minimal_amount: Minimal Amount
1178
1019
  missing_return_authorization: ! 'Missing Return Authorization for %{item_name}.'
@@ -1248,7 +1089,7 @@ en:
1248
1089
  no_pending_payments: No pending payments
1249
1090
  no_product_available:
1250
1091
  for_this_quantity: Sorry, it looks like some products are not available in selected quantity.
1251
- opps: Oops!
1092
+ oops: Oops!
1252
1093
  no_products_found: No products found
1253
1094
  no_results: No results
1254
1095
  no_rules_added: No rules added
@@ -1622,6 +1463,11 @@ en:
1622
1463
  say_no: 'No'
1623
1464
  say_yes: 'Yes'
1624
1465
  scope: Scope
1466
+ seed:
1467
+ shipping:
1468
+ categories:
1469
+ default: Default
1470
+ digital: Digital
1625
1471
  search: Search
1626
1472
  search_by: 'Search by:'
1627
1473
  search_order_number: Order Number