goca-spree-backend 3.1.14.rails.5.0

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 (439) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +6 -0
  3. data/Rakefile +15 -0
  4. data/app/assets/images/admin/payment_banner.png +0 -0
  5. data/app/assets/images/admin/progress.gif +0 -0
  6. data/app/assets/images/credit_cards/credit_card.gif +0 -0
  7. data/app/assets/javascripts/spree/backend/address_states.js +33 -0
  8. data/app/assets/javascripts/spree/backend/adjustments.js.coffee +17 -0
  9. data/app/assets/javascripts/spree/backend/admin.js +402 -0
  10. data/app/assets/javascripts/spree/backend/calculator.js +16 -0
  11. data/app/assets/javascripts/spree/backend/checkouts/edit.js +89 -0
  12. data/app/assets/javascripts/spree/backend/gateway.js +13 -0
  13. data/app/assets/javascripts/spree/backend/general_settings.js.coffee +13 -0
  14. data/app/assets/javascripts/spree/backend/handlebar_extensions.js +7 -0
  15. data/app/assets/javascripts/spree/backend/line_items.js.coffee +64 -0
  16. data/app/assets/javascripts/spree/backend/line_items_on_order_edit.js +49 -0
  17. data/app/assets/javascripts/spree/backend/nested-attribute.js +27 -0
  18. data/app/assets/javascripts/spree/backend/option_type_autocomplete.js +43 -0
  19. data/app/assets/javascripts/spree/backend/option_value_picker.js +45 -0
  20. data/app/assets/javascripts/spree/backend/orders/edit.js +5 -0
  21. data/app/assets/javascripts/spree/backend/orders/edit_form.js +21 -0
  22. data/app/assets/javascripts/spree/backend/payments/edit.js.coffee +145 -0
  23. data/app/assets/javascripts/spree/backend/payments/new.js +50 -0
  24. data/app/assets/javascripts/spree/backend/product_picker.js +49 -0
  25. data/app/assets/javascripts/spree/backend/progress.js.coffee +6 -0
  26. data/app/assets/javascripts/spree/backend/promotions.js +170 -0
  27. data/app/assets/javascripts/spree/backend/returns/expedited_exchanges_warning.coffee +4 -0
  28. data/app/assets/javascripts/spree/backend/returns/return_item_selection.js +35 -0
  29. data/app/assets/javascripts/spree/backend/shipments.js.erb +334 -0
  30. data/app/assets/javascripts/spree/backend/spree-select2.js +7 -0
  31. data/app/assets/javascripts/spree/backend/states.js +11 -0
  32. data/app/assets/javascripts/spree/backend/stock_management.js.coffee +9 -0
  33. data/app/assets/javascripts/spree/backend/stock_movement.js.coffee +19 -0
  34. data/app/assets/javascripts/spree/backend/stock_transfer.js.coffee +198 -0
  35. data/app/assets/javascripts/spree/backend/taxon_autocomplete.js +52 -0
  36. data/app/assets/javascripts/spree/backend/taxon_tree_menu.js.coffee +22 -0
  37. data/app/assets/javascripts/spree/backend/taxonomy.js.coffee +149 -0
  38. data/app/assets/javascripts/spree/backend/taxons.js.coffee +87 -0
  39. data/app/assets/javascripts/spree/backend/user_picker.js +40 -0
  40. data/app/assets/javascripts/spree/backend/variant_autocomplete.js.coffee +38 -0
  41. data/app/assets/javascripts/spree/backend/variant_management.js.coffee +10 -0
  42. data/app/assets/javascripts/spree/backend/zone.js.coffee +43 -0
  43. data/app/assets/javascripts/spree/backend.js +79 -0
  44. data/app/assets/javascripts/spree/frontend/backend.js +1 -0
  45. data/app/assets/stylesheets/spree/backend/components/_buttons.scss +37 -0
  46. data/app/assets/stylesheets/spree/backend/components/_filters.scss +26 -0
  47. data/app/assets/stylesheets/spree/backend/components/_icons.scss +257 -0
  48. data/app/assets/stylesheets/spree/backend/components/_labels.scss +53 -0
  49. data/app/assets/stylesheets/spree/backend/components/_main.scss +11 -0
  50. data/app/assets/stylesheets/spree/backend/components/_navigation.scss +14 -0
  51. data/app/assets/stylesheets/spree/backend/components/_page_header.scss +32 -0
  52. data/app/assets/stylesheets/spree/backend/components/_panels.scss +3 -0
  53. data/app/assets/stylesheets/spree/backend/components/_progress.scss +22 -0
  54. data/app/assets/stylesheets/spree/backend/components/_sidebar.scss +122 -0
  55. data/app/assets/stylesheets/spree/backend/components/_spinner.scss +95 -0
  56. data/app/assets/stylesheets/spree/backend/components/_tables.scss +56 -0
  57. data/app/assets/stylesheets/spree/backend/components/_taxon_products_view.scss +70 -0
  58. data/app/assets/stylesheets/spree/backend/components/_variables.scss +12 -0
  59. data/app/assets/stylesheets/spree/backend/components/_wells.scss +3 -0
  60. data/app/assets/stylesheets/spree/backend/global/_variables.scss +37 -0
  61. data/app/assets/stylesheets/spree/backend/plugins/_jquery_ui.scss +109 -0
  62. data/app/assets/stylesheets/spree/backend/plugins/_js_tree.scss +0 -0
  63. data/app/assets/stylesheets/spree/backend/plugins/_select2.scss +127 -0
  64. data/app/assets/stylesheets/spree/backend/sections/_account.scss +16 -0
  65. data/app/assets/stylesheets/spree/backend/shared/_base.scss +25 -0
  66. data/app/assets/stylesheets/spree/backend/shared/_forms.scss +59 -0
  67. data/app/assets/stylesheets/spree/backend/shared/_typography.scss +5 -0
  68. data/app/assets/stylesheets/spree/backend/spree_admin.css.scss +28 -0
  69. data/app/assets/stylesheets/spree/backend.css +11 -0
  70. data/app/assets/stylesheets/spree/frontend/backend.css +1 -0
  71. data/app/controllers/spree/admin/adjustments_controller.rb +38 -0
  72. data/app/controllers/spree/admin/base_controller.rb +67 -0
  73. data/app/controllers/spree/admin/countries_controller.rb +11 -0
  74. data/app/controllers/spree/admin/customer_returns_controller.rb +68 -0
  75. data/app/controllers/spree/admin/general_settings_controller.rb +40 -0
  76. data/app/controllers/spree/admin/images_controller.rb +50 -0
  77. data/app/controllers/spree/admin/log_entries_controller.rb +19 -0
  78. data/app/controllers/spree/admin/option_types_controller.rb +48 -0
  79. data/app/controllers/spree/admin/option_values_controller.rb +11 -0
  80. data/app/controllers/spree/admin/orders/customer_details_controller.rb +74 -0
  81. data/app/controllers/spree/admin/orders_controller.rb +147 -0
  82. data/app/controllers/spree/admin/payment_methods_controller.rb +72 -0
  83. data/app/controllers/spree/admin/payments_controller.rb +103 -0
  84. data/app/controllers/spree/admin/product_properties_controller.rb +18 -0
  85. data/app/controllers/spree/admin/products_controller.rb +156 -0
  86. data/app/controllers/spree/admin/promotion_actions_controller.rb +45 -0
  87. data/app/controllers/spree/admin/promotion_categories_controller.rb +6 -0
  88. data/app/controllers/spree/admin/promotion_rules_controller.rb +50 -0
  89. data/app/controllers/spree/admin/promotions_controller.rb +36 -0
  90. data/app/controllers/spree/admin/properties_controller.rb +23 -0
  91. data/app/controllers/spree/admin/prototypes_controller.rb +27 -0
  92. data/app/controllers/spree/admin/refund_reasons_controller.rb +6 -0
  93. data/app/controllers/spree/admin/refunds_controller.rb +38 -0
  94. data/app/controllers/spree/admin/reimbursement_types_controller.rb +6 -0
  95. data/app/controllers/spree/admin/reimbursements_controller.rb +45 -0
  96. data/app/controllers/spree/admin/reports_controller.rb +65 -0
  97. data/app/controllers/spree/admin/resource_controller.rb +260 -0
  98. data/app/controllers/spree/admin/return_authorization_reasons_controller.rb +6 -0
  99. data/app/controllers/spree/admin/return_authorizations_controller.rb +51 -0
  100. data/app/controllers/spree/admin/return_index_controller.rb +28 -0
  101. data/app/controllers/spree/admin/return_items_controller.rb +9 -0
  102. data/app/controllers/spree/admin/roles_controller.rb +6 -0
  103. data/app/controllers/spree/admin/root_controller.rb +18 -0
  104. data/app/controllers/spree/admin/search_controller.rb +41 -0
  105. data/app/controllers/spree/admin/shipping_categories_controller.rb +6 -0
  106. data/app/controllers/spree/admin/shipping_methods_controller.rb +46 -0
  107. data/app/controllers/spree/admin/state_changes_controller.rb +18 -0
  108. data/app/controllers/spree/admin/states_controller.rb +29 -0
  109. data/app/controllers/spree/admin/stock_items_controller.rb +51 -0
  110. data/app/controllers/spree/admin/stock_locations_controller.rb +16 -0
  111. data/app/controllers/spree/admin/stock_movements_controller.rb +39 -0
  112. data/app/controllers/spree/admin/stock_transfers_controller.rb +51 -0
  113. data/app/controllers/spree/admin/store_credit_categories_controller.rb +6 -0
  114. data/app/controllers/spree/admin/store_credits_controller.rb +94 -0
  115. data/app/controllers/spree/admin/tax_categories_controller.rb +6 -0
  116. data/app/controllers/spree/admin/tax_rates_controller.rb +15 -0
  117. data/app/controllers/spree/admin/taxonomies_controller.rb +15 -0
  118. data/app/controllers/spree/admin/taxons_controller.rb +126 -0
  119. data/app/controllers/spree/admin/trackers_controller.rb +6 -0
  120. data/app/controllers/spree/admin/users_controller.rb +145 -0
  121. data/app/controllers/spree/admin/variants_controller.rb +57 -0
  122. data/app/controllers/spree/admin/variants_including_master_controller.rb +16 -0
  123. data/app/controllers/spree/admin/zones_controller.rb +26 -0
  124. data/app/helpers/spree/admin/adjustments_helper.rb +37 -0
  125. data/app/helpers/spree/admin/base_helper.rb +157 -0
  126. data/app/helpers/spree/admin/customer_returns_helper.rb +9 -0
  127. data/app/helpers/spree/admin/general_settings_helper.rb +13 -0
  128. data/app/helpers/spree/admin/images_helper.rb +18 -0
  129. data/app/helpers/spree/admin/inventory_settings_helper.rb +9 -0
  130. data/app/helpers/spree/admin/navigation_helper.rb +248 -0
  131. data/app/helpers/spree/admin/orders_helper.rb +69 -0
  132. data/app/helpers/spree/admin/payments_helper.rb +11 -0
  133. data/app/helpers/spree/admin/products_helper.rb +29 -0
  134. data/app/helpers/spree/admin/reimbursement_type_helper.rb +9 -0
  135. data/app/helpers/spree/admin/reimbursements_helper.rb +14 -0
  136. data/app/helpers/spree/admin/stock_locations_helper.rb +15 -0
  137. data/app/helpers/spree/admin/stock_movements_helper.rb +24 -0
  138. data/app/helpers/spree/admin/tables_helper.rb +15 -0
  139. data/app/helpers/spree/admin/taxons_helper.rb +9 -0
  140. data/app/helpers/spree/promotion_rules_helper.rb +13 -0
  141. data/app/models/spree/admin/resource.rb +35 -0
  142. data/app/models/spree/backend_configuration.rb +21 -0
  143. data/app/views/kaminari/_first_page.html.erb +11 -0
  144. data/app/views/kaminari/_gap.html.erb +8 -0
  145. data/app/views/kaminari/_last_page.html.erb +11 -0
  146. data/app/views/kaminari/_next_page.html.erb +15 -0
  147. data/app/views/kaminari/_page.html.erb +12 -0
  148. data/app/views/kaminari/_paginator.html.erb +23 -0
  149. data/app/views/kaminari/_prev_page.html.erb +15 -0
  150. data/app/views/spree/admin/adjustments/_adjustment.html.erb +17 -0
  151. data/app/views/spree/admin/adjustments/_adjustments_table.html.erb +31 -0
  152. data/app/views/spree/admin/adjustments/_form.html.erb +12 -0
  153. data/app/views/spree/admin/adjustments/edit.html.erb +19 -0
  154. data/app/views/spree/admin/adjustments/index.html.erb +34 -0
  155. data/app/views/spree/admin/adjustments/new.html.erb +19 -0
  156. data/app/views/spree/admin/countries/_form.html.erb +20 -0
  157. data/app/views/spree/admin/countries/edit.html.erb +14 -0
  158. data/app/views/spree/admin/countries/index.html.erb +31 -0
  159. data/app/views/spree/admin/countries/new.html.erb +13 -0
  160. data/app/views/spree/admin/customer_returns/_reimbursements_table.html.erb +36 -0
  161. data/app/views/spree/admin/customer_returns/_return_item_decision.html.erb +50 -0
  162. data/app/views/spree/admin/customer_returns/_return_item_selection.html.erb +45 -0
  163. data/app/views/spree/admin/customer_returns/edit.html.erb +61 -0
  164. data/app/views/spree/admin/customer_returns/index.html.erb +56 -0
  165. data/app/views/spree/admin/customer_returns/new.html.erb +47 -0
  166. data/app/views/spree/admin/general_settings/edit.html.erb +143 -0
  167. data/app/views/spree/admin/images/_form.html.erb +18 -0
  168. data/app/views/spree/admin/images/edit.html.erb +30 -0
  169. data/app/views/spree/admin/images/index.html.erb +55 -0
  170. data/app/views/spree/admin/images/new.html.erb +19 -0
  171. data/app/views/spree/admin/inventory_units/adjust.html.erb +29 -0
  172. data/app/views/spree/admin/log_entries/index.html.erb +33 -0
  173. data/app/views/spree/admin/option_types/_form.html.erb +17 -0
  174. data/app/views/spree/admin/option_types/_option_value_fields.html.erb +9 -0
  175. data/app/views/spree/admin/option_types/edit.html.erb +49 -0
  176. data/app/views/spree/admin/option_types/index.html.erb +44 -0
  177. data/app/views/spree/admin/option_types/new.html.erb +13 -0
  178. data/app/views/spree/admin/orders/_add_line_item.html.erb +17 -0
  179. data/app/views/spree/admin/orders/_add_product.html.erb +18 -0
  180. data/app/views/spree/admin/orders/_adjustments.html.erb +33 -0
  181. data/app/views/spree/admin/orders/_form.html.erb +56 -0
  182. data/app/views/spree/admin/orders/_line_item.html.erb +21 -0
  183. data/app/views/spree/admin/orders/_line_items.html.erb +46 -0
  184. data/app/views/spree/admin/orders/_line_items_edit_form.html.erb +39 -0
  185. data/app/views/spree/admin/orders/_order_actions.html.erb +12 -0
  186. data/app/views/spree/admin/orders/_risk_analysis.html.erb +47 -0
  187. data/app/views/spree/admin/orders/_shipment.html.erb +108 -0
  188. data/app/views/spree/admin/orders/_shipment_manifest.html.erb +42 -0
  189. data/app/views/spree/admin/orders/cart.html.erb +31 -0
  190. data/app/views/spree/admin/orders/customer_details/_form.html.erb +106 -0
  191. data/app/views/spree/admin/orders/customer_details/edit.html.erb +29 -0
  192. data/app/views/spree/admin/orders/edit.html.erb +35 -0
  193. data/app/views/spree/admin/orders/index.html.erb +226 -0
  194. data/app/views/spree/admin/payment_methods/_form.html.erb +56 -0
  195. data/app/views/spree/admin/payment_methods/edit.html.erb +13 -0
  196. data/app/views/spree/admin/payment_methods/index.html.erb +46 -0
  197. data/app/views/spree/admin/payment_methods/new.html.erb +13 -0
  198. data/app/views/spree/admin/payments/_capture_events.html.erb +19 -0
  199. data/app/views/spree/admin/payments/_form.html.erb +33 -0
  200. data/app/views/spree/admin/payments/_list.html.erb +38 -0
  201. data/app/views/spree/admin/payments/credit.html.erb +18 -0
  202. data/app/views/spree/admin/payments/index.html.erb +38 -0
  203. data/app/views/spree/admin/payments/new.html.erb +25 -0
  204. data/app/views/spree/admin/payments/show.html.erb +28 -0
  205. data/app/views/spree/admin/payments/source_forms/_gateway.html.erb +56 -0
  206. data/app/views/spree/admin/payments/source_forms/_storecredit.html.erb +9 -0
  207. data/app/views/spree/admin/payments/source_views/_check.html.erb +0 -0
  208. data/app/views/spree/admin/payments/source_views/_gateway.html.erb +21 -0
  209. data/app/views/spree/admin/payments/source_views/_storecredit.html.erb +29 -0
  210. data/app/views/spree/admin/product_properties/_product_property_fields.html.erb +19 -0
  211. data/app/views/spree/admin/product_properties/index.html.erb +43 -0
  212. data/app/views/spree/admin/products/_add_stock_form.html.erb +42 -0
  213. data/app/views/spree/admin/products/_autocomplete.js.erb +25 -0
  214. data/app/views/spree/admin/products/_form.html.erb +224 -0
  215. data/app/views/spree/admin/products/_properties_form.erb +10 -0
  216. data/app/views/spree/admin/products/edit.html.erb +15 -0
  217. data/app/views/spree/admin/products/index.html.erb +91 -0
  218. data/app/views/spree/admin/products/new.html.erb +89 -0
  219. data/app/views/spree/admin/products/stock.html.erb +78 -0
  220. data/app/views/spree/admin/promotion_actions/create.js.erb +12 -0
  221. data/app/views/spree/admin/promotion_actions/destroy.js.erb +1 -0
  222. data/app/views/spree/admin/promotion_categories/_form.html.erb +11 -0
  223. data/app/views/spree/admin/promotion_categories/edit.html.erb +11 -0
  224. data/app/views/spree/admin/promotion_categories/index.html.erb +34 -0
  225. data/app/views/spree/admin/promotion_categories/new.html.erb +11 -0
  226. data/app/views/spree/admin/promotion_rules/create.js.erb +10 -0
  227. data/app/views/spree/admin/promotion_rules/destroy.js.erb +3 -0
  228. data/app/views/spree/admin/promotions/_actions.html.erb +35 -0
  229. data/app/views/spree/admin/promotions/_form.html.erb +60 -0
  230. data/app/views/spree/admin/promotions/_promotion_action.html.erb +12 -0
  231. data/app/views/spree/admin/promotions/_promotion_rule.html.erb +11 -0
  232. data/app/views/spree/admin/promotions/_rules.html.erb +46 -0
  233. data/app/views/spree/admin/promotions/actions/_create_adjustment.html.erb +30 -0
  234. data/app/views/spree/admin/promotions/actions/_create_item_adjustments.html.erb +28 -0
  235. data/app/views/spree/admin/promotions/actions/_create_line_items.html.erb +25 -0
  236. data/app/views/spree/admin/promotions/calculators/_default_fields.html.erb +10 -0
  237. data/app/views/spree/admin/promotions/calculators/tiered_flat_rate/_fields.html.erb +42 -0
  238. data/app/views/spree/admin/promotions/calculators/tiered_percent/_fields.html.erb +42 -0
  239. data/app/views/spree/admin/promotions/edit.html.erb +30 -0
  240. data/app/views/spree/admin/promotions/index.html.erb +82 -0
  241. data/app/views/spree/admin/promotions/new.html.erb +11 -0
  242. data/app/views/spree/admin/promotions/rules/_item_total.html.erb +12 -0
  243. data/app/views/spree/admin/promotions/rules/_landing_page.html.erb +9 -0
  244. data/app/views/spree/admin/promotions/rules/_option_value.html.erb +42 -0
  245. data/app/views/spree/admin/promotions/rules/_product.html.erb +10 -0
  246. data/app/views/spree/admin/promotions/rules/_taxon.html.erb +10 -0
  247. data/app/views/spree/admin/promotions/rules/_user.html.erb +6 -0
  248. data/app/views/spree/admin/properties/_form.html.erb +16 -0
  249. data/app/views/spree/admin/properties/edit.html.erb +13 -0
  250. data/app/views/spree/admin/properties/index.html.erb +68 -0
  251. data/app/views/spree/admin/properties/new.html.erb +15 -0
  252. data/app/views/spree/admin/prototypes/_form.html.erb +28 -0
  253. data/app/views/spree/admin/prototypes/_prototypes.html.erb +21 -0
  254. data/app/views/spree/admin/prototypes/available.js.erb +2 -0
  255. data/app/views/spree/admin/prototypes/edit.html.erb +13 -0
  256. data/app/views/spree/admin/prototypes/index.html.erb +34 -0
  257. data/app/views/spree/admin/prototypes/new.html.erb +13 -0
  258. data/app/views/spree/admin/prototypes/select.js.erb +4 -0
  259. data/app/views/spree/admin/prototypes/show.html.erb +39 -0
  260. data/app/views/spree/admin/refund_reasons/destroy.js.erb +1 -0
  261. data/app/views/spree/admin/refund_reasons/edit.html.erb +3 -0
  262. data/app/views/spree/admin/refund_reasons/index.html.erb +6 -0
  263. data/app/views/spree/admin/refund_reasons/new.html.erb +4 -0
  264. data/app/views/spree/admin/refunds/edit.html.erb +27 -0
  265. data/app/views/spree/admin/refunds/new.html.erb +35 -0
  266. data/app/views/spree/admin/reimbursement_types/index.html.erb +30 -0
  267. data/app/views/spree/admin/reimbursements/edit.html.erb +102 -0
  268. data/app/views/spree/admin/reimbursements/index.html.erb +28 -0
  269. data/app/views/spree/admin/reimbursements/show.html.erb +90 -0
  270. data/app/views/spree/admin/reports/index.html.erb +20 -0
  271. data/app/views/spree/admin/reports/sales_total.html.erb +29 -0
  272. data/app/views/spree/admin/return_authorization_reasons/destroy.js.erb +1 -0
  273. data/app/views/spree/admin/return_authorization_reasons/edit.html.erb +3 -0
  274. data/app/views/spree/admin/return_authorization_reasons/index.html.erb +6 -0
  275. data/app/views/spree/admin/return_authorization_reasons/new.html.erb +4 -0
  276. data/app/views/spree/admin/return_authorizations/_form.html.erb +91 -0
  277. data/app/views/spree/admin/return_authorizations/edit.html.erb +26 -0
  278. data/app/views/spree/admin/return_authorizations/index.html.erb +53 -0
  279. data/app/views/spree/admin/return_authorizations/new.html.erb +18 -0
  280. data/app/views/spree/admin/return_index/customer_returns.html.erb +64 -0
  281. data/app/views/spree/admin/return_index/return_authorizations.html.erb +76 -0
  282. data/app/views/spree/admin/roles/_form.html.erb +9 -0
  283. data/app/views/spree/admin/roles/edit.html.erb +13 -0
  284. data/app/views/spree/admin/roles/index.html.erb +34 -0
  285. data/app/views/spree/admin/roles/new.html.erb +13 -0
  286. data/app/views/spree/admin/search/products.rabl +9 -0
  287. data/app/views/spree/admin/search/users.rabl +30 -0
  288. data/app/views/spree/admin/shared/_address.html.erb +38 -0
  289. data/app/views/spree/admin/shared/_address_form.html.erb +78 -0
  290. data/app/views/spree/admin/shared/_calculator_fields.html.erb +27 -0
  291. data/app/views/spree/admin/shared/_content_header.html.erb +26 -0
  292. data/app/views/spree/admin/shared/_destroy.js.erb +9 -0
  293. data/app/views/spree/admin/shared/_edit_resource_links.html.erb +5 -0
  294. data/app/views/spree/admin/shared/_error_messages.html.erb +12 -0
  295. data/app/views/spree/admin/shared/_head.html.erb +26 -0
  296. data/app/views/spree/admin/shared/_header.html.erb +32 -0
  297. data/app/views/spree/admin/shared/_index_table_options.html.erb +19 -0
  298. data/app/views/spree/admin/shared/_main_menu.html.erb +41 -0
  299. data/app/views/spree/admin/shared/_new_resource_links.html.erb +5 -0
  300. data/app/views/spree/admin/shared/_order_summary.html.erb +121 -0
  301. data/app/views/spree/admin/shared/_order_tabs.html.erb +60 -0
  302. data/app/views/spree/admin/shared/_product_tabs.html.erb +24 -0
  303. data/app/views/spree/admin/shared/_refunds.html.erb +32 -0
  304. data/app/views/spree/admin/shared/_report_order_criteria.html.erb +17 -0
  305. data/app/views/spree/admin/shared/_sidebar.html.erb +5 -0
  306. data/app/views/spree/admin/shared/_table_filter.html.erb +24 -0
  307. data/app/views/spree/admin/shared/_translations.html.erb +48 -0
  308. data/app/views/spree/admin/shared/_update_order_state.js +7 -0
  309. data/app/views/spree/admin/shared/named_types/_edit.html.erb +13 -0
  310. data/app/views/spree/admin/shared/named_types/_form.html.erb +13 -0
  311. data/app/views/spree/admin/shared/named_types/_index.html.erb +42 -0
  312. data/app/views/spree/admin/shared/named_types/_new.html.erb +13 -0
  313. data/app/views/spree/admin/shared/sub_menu/_configuration.html.erb +23 -0
  314. data/app/views/spree/admin/shared/sub_menu/_product.html.erb +8 -0
  315. data/app/views/spree/admin/shared/sub_menu/_promotion.html.erb +4 -0
  316. data/app/views/spree/admin/shared/sub_menu/_returns.html.erb +4 -0
  317. data/app/views/spree/admin/shipping_categories/_form.html.erb +9 -0
  318. data/app/views/spree/admin/shipping_categories/edit.html.erb +11 -0
  319. data/app/views/spree/admin/shipping_categories/index.html.erb +34 -0
  320. data/app/views/spree/admin/shipping_categories/new.html.erb +13 -0
  321. data/app/views/spree/admin/shipping_methods/_form.html.erb +119 -0
  322. data/app/views/spree/admin/shipping_methods/edit.html.erb +17 -0
  323. data/app/views/spree/admin/shipping_methods/index.html.erb +40 -0
  324. data/app/views/spree/admin/shipping_methods/new.html.erb +20 -0
  325. data/app/views/spree/admin/state_changes/index.html.erb +42 -0
  326. data/app/views/spree/admin/states/_form.html.erb +15 -0
  327. data/app/views/spree/admin/states/_state_list.html.erb +26 -0
  328. data/app/views/spree/admin/states/edit.html.erb +13 -0
  329. data/app/views/spree/admin/states/index.html.erb +18 -0
  330. data/app/views/spree/admin/states/new.html.erb +13 -0
  331. data/app/views/spree/admin/states/new.js.erb +2 -0
  332. data/app/views/spree/admin/stock_items/destroy.js.erb +1 -0
  333. data/app/views/spree/admin/stock_locations/_form.html.erb +95 -0
  334. data/app/views/spree/admin/stock_locations/_transfer_stock_form.html.erb +39 -0
  335. data/app/views/spree/admin/stock_locations/edit.html.erb +13 -0
  336. data/app/views/spree/admin/stock_locations/index.html.erb +41 -0
  337. data/app/views/spree/admin/stock_locations/new.html.erb +13 -0
  338. data/app/views/spree/admin/stock_movements/_form.html.erb +12 -0
  339. data/app/views/spree/admin/stock_movements/edit.html.erb +17 -0
  340. data/app/views/spree/admin/stock_movements/index.html.erb +43 -0
  341. data/app/views/spree/admin/stock_movements/new.html.erb +14 -0
  342. data/app/views/spree/admin/stock_transfers/_stock_movements.html.erb +22 -0
  343. data/app/views/spree/admin/stock_transfers/index.html.erb +82 -0
  344. data/app/views/spree/admin/stock_transfers/new.html.erb +107 -0
  345. data/app/views/spree/admin/stock_transfers/show.html.erb +44 -0
  346. data/app/views/spree/admin/store_credit_categories/_form.html.erb +9 -0
  347. data/app/views/spree/admin/store_credit_categories/edit.html.erb +13 -0
  348. data/app/views/spree/admin/store_credit_categories/index.html.erb +34 -0
  349. data/app/views/spree/admin/store_credit_categories/new.html.erb +13 -0
  350. data/app/views/spree/admin/store_credits/_form.html.erb +18 -0
  351. data/app/views/spree/admin/store_credits/edit.html.erb +14 -0
  352. data/app/views/spree/admin/store_credits/index.html.erb +46 -0
  353. data/app/views/spree/admin/store_credits/new.html.erb +14 -0
  354. data/app/views/spree/admin/tax_categories/_form.html.erb +24 -0
  355. data/app/views/spree/admin/tax_categories/edit.html.erb +13 -0
  356. data/app/views/spree/admin/tax_categories/index.html.erb +42 -0
  357. data/app/views/spree/admin/tax_categories/new.html.erb +13 -0
  358. data/app/views/spree/admin/tax_categories/show.html.erb +1 -0
  359. data/app/views/spree/admin/tax_rates/_form.html.erb +54 -0
  360. data/app/views/spree/admin/tax_rates/edit.html.erb +11 -0
  361. data/app/views/spree/admin/tax_rates/index.html.erb +46 -0
  362. data/app/views/spree/admin/tax_rates/new.html.erb +14 -0
  363. data/app/views/spree/admin/taxonomies/_form.html.erb +7 -0
  364. data/app/views/spree/admin/taxonomies/_js_head.html.erb +13 -0
  365. data/app/views/spree/admin/taxonomies/_list.html.erb +23 -0
  366. data/app/views/spree/admin/taxonomies/edit.erb +37 -0
  367. data/app/views/spree/admin/taxonomies/index.html.erb +18 -0
  368. data/app/views/spree/admin/taxonomies/new.html.erb +12 -0
  369. data/app/views/spree/admin/taxons/_form.html.erb +46 -0
  370. data/app/views/spree/admin/taxons/_taxon_table.html.erb +23 -0
  371. data/app/views/spree/admin/taxons/edit.html.erb +32 -0
  372. data/app/views/spree/admin/taxons/index.html.erb +13 -0
  373. data/app/views/spree/admin/trackers/_form.html.erb +29 -0
  374. data/app/views/spree/admin/trackers/edit.html.erb +13 -0
  375. data/app/views/spree/admin/trackers/index.html.erb +42 -0
  376. data/app/views/spree/admin/trackers/new.html.erb +13 -0
  377. data/app/views/spree/admin/users/_addresses_form.html.erb +35 -0
  378. data/app/views/spree/admin/users/_form.html.erb +36 -0
  379. data/app/views/spree/admin/users/_lifetime_stats.html.erb +30 -0
  380. data/app/views/spree/admin/users/_sidebar.html.erb +23 -0
  381. data/app/views/spree/admin/users/_user_page_actions.html.erb +3 -0
  382. data/app/views/spree/admin/users/addresses.html.erb +26 -0
  383. data/app/views/spree/admin/users/edit.html.erb +72 -0
  384. data/app/views/spree/admin/users/index.html.erb +67 -0
  385. data/app/views/spree/admin/users/items.html.erb +64 -0
  386. data/app/views/spree/admin/users/new.html.erb +18 -0
  387. data/app/views/spree/admin/users/orders.html.erb +52 -0
  388. data/app/views/spree/admin/variants/_autocomplete.js.erb +21 -0
  389. data/app/views/spree/admin/variants/_autocomplete_line_items_stock.js.erb +46 -0
  390. data/app/views/spree/admin/variants/_autocomplete_stock.js.erb +48 -0
  391. data/app/views/spree/admin/variants/_form.html.erb +49 -0
  392. data/app/views/spree/admin/variants/_split.js.erb +33 -0
  393. data/app/views/spree/admin/variants/edit.html.erb +13 -0
  394. data/app/views/spree/admin/variants/index.html.erb +65 -0
  395. data/app/views/spree/admin/variants/new.html.erb +11 -0
  396. data/app/views/spree/admin/variants/new.js.erb +3 -0
  397. data/app/views/spree/admin/variants/update.js.erb +1 -0
  398. data/app/views/spree/admin/zones/_country_members.html.erb +16 -0
  399. data/app/views/spree/admin/zones/_form.html.erb +49 -0
  400. data/app/views/spree/admin/zones/_state_members.html.erb +16 -0
  401. data/app/views/spree/admin/zones/edit.html.erb +12 -0
  402. data/app/views/spree/admin/zones/index.html.erb +44 -0
  403. data/app/views/spree/admin/zones/new.html.erb +11 -0
  404. data/app/views/spree/layouts/admin.html.erb +81 -0
  405. data/config/initializers/assets.rb +1 -0
  406. data/config/initializers/form_builder.rb +15 -0
  407. data/config/routes.rb +185 -0
  408. data/lib/spree/backend/action_callbacks.rb +26 -0
  409. data/lib/spree/backend/callbacks.rb +48 -0
  410. data/lib/spree/backend/engine.rb +34 -0
  411. data/lib/spree/backend.rb +13 -0
  412. data/lib/spree_backend.rb +3 -0
  413. data/script/rails +9 -0
  414. data/spree_backend.gemspec +28 -0
  415. data/vendor/assets/images/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  416. data/vendor/assets/images/jquery-ui/ui-bg_flat_0_eeeeee_40x100.png +0 -0
  417. data/vendor/assets/images/jquery-ui/ui-bg_flat_55_ffffff_40x100.png +0 -0
  418. data/vendor/assets/images/jquery-ui/ui-bg_flat_75_ffffff_40x100.png +0 -0
  419. data/vendor/assets/images/jquery-ui/ui-bg_glass_65_ffffff_1x400.png +0 -0
  420. data/vendor/assets/images/jquery-ui/ui-bg_highlight-soft_100_f6f6f6_1x100.png +0 -0
  421. data/vendor/assets/images/jquery-ui/ui-bg_highlight-soft_25_0073ea_1x100.png +0 -0
  422. data/vendor/assets/images/jquery-ui/ui-bg_highlight-soft_50_dddddd_1x100.png +0 -0
  423. data/vendor/assets/images/jquery-ui/ui-icons_0073ea_256x240.png +0 -0
  424. data/vendor/assets/images/jquery-ui/ui-icons_454545_256x240.png +0 -0
  425. data/vendor/assets/images/jquery-ui/ui-icons_666666_256x240.png +0 -0
  426. data/vendor/assets/images/jquery-ui/ui-icons_ff0084_256x240.png +0 -0
  427. data/vendor/assets/images/jquery-ui/ui-icons_ffffff_256x240.png +0 -0
  428. data/vendor/assets/javascripts/handlebars.js +2746 -0
  429. data/vendor/assets/javascripts/jquery.cookie.js +117 -0
  430. data/vendor/assets/javascripts/jquery.jstree/jquery.jstree.js +4564 -0
  431. data/vendor/assets/javascripts/modernizr.js +4 -0
  432. data/vendor/assets/javascripts/underscore-min.js +6 -0
  433. data/vendor/assets/javascripts/underscore-min.map +1 -0
  434. data/vendor/assets/javascripts/velocity.js +3831 -0
  435. data/vendor/assets/stylesheets/animate.css +3158 -0
  436. data/vendor/assets/stylesheets/jquery-ui.datepicker.css.erb +357 -0
  437. data/vendor/assets/stylesheets/jquery.jstree/themes/spree/style.scss +216 -0
  438. data/vendor/assets/stylesheets/jquery.jstree/themes/spree/throbber.gif +0 -0
  439. metadata +565 -0
@@ -0,0 +1,40 @@
1
+ module Spree
2
+ module Admin
3
+ class GeneralSettingsController < Spree::Admin::BaseController
4
+ include Spree::Backend::Callbacks
5
+
6
+ before_action :set_store
7
+
8
+ def edit
9
+ @preferences_security = []
10
+ end
11
+
12
+ def update
13
+ params.each do |name, value|
14
+ next unless Spree::Config.has_preference? name
15
+ Spree::Config[name] = value
16
+ end
17
+
18
+ current_store.update_attributes store_params
19
+
20
+ flash[:success] = Spree.t(:successfully_updated, resource: Spree.t(:general_settings))
21
+ redirect_to edit_admin_general_settings_path
22
+ end
23
+
24
+ def clear_cache
25
+ Rails.cache.clear
26
+ invoke_callbacks(:clear_cache, :after)
27
+ head :no_content
28
+ end
29
+
30
+ private
31
+ def store_params
32
+ params.require(:store).permit(permitted_store_attributes)
33
+ end
34
+
35
+ def set_store
36
+ @store = current_store
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,50 @@
1
+ module Spree
2
+ module Admin
3
+ class ImagesController < ResourceController
4
+ before_action :load_edit_data, except: :index
5
+ before_action :load_index_data, only: :index
6
+
7
+ create.before :set_viewable
8
+ update.before :set_viewable
9
+
10
+ private
11
+
12
+ def location_after_destroy
13
+ admin_product_images_url(@product)
14
+ end
15
+
16
+ def location_after_save
17
+ admin_product_images_url(@product)
18
+ end
19
+
20
+ def load_index_data
21
+ @product = Product.friendly.includes(*variant_index_includes).find(params[:product_id])
22
+ end
23
+
24
+ def load_edit_data
25
+ @product = Product.friendly.includes(*variant_edit_includes).find(params[:product_id])
26
+ @variants = @product.variants.map do |variant|
27
+ [variant.sku_and_options_text, variant.id]
28
+ end
29
+ @variants.insert(0, [Spree.t(:all), @product.master.id])
30
+ end
31
+
32
+ def set_viewable
33
+ @image.viewable_type = 'Spree::Variant'
34
+ @image.viewable_id = params[:image][:viewable_id]
35
+ end
36
+
37
+ def variant_index_includes
38
+ [
39
+ variant_images: [viewable: { option_values: :option_type }]
40
+ ]
41
+ end
42
+
43
+ def variant_edit_includes
44
+ [
45
+ variants_including_master: { option_values: :option_type, images: :viewable }
46
+ ]
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,19 @@
1
+ module Spree
2
+ module Admin
3
+ class LogEntriesController < Spree::Admin::BaseController
4
+ before_action :find_order_and_payment
5
+
6
+ def index
7
+ @log_entries = @payment.log_entries
8
+ end
9
+
10
+
11
+ private
12
+
13
+ def find_order_and_payment
14
+ @order = Spree::Order.friendly.find(params[:order_id])
15
+ @payment = @order.payments.friendly.find(params[:payment_id])
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,48 @@
1
+ module Spree
2
+ module Admin
3
+ class OptionTypesController < ResourceController
4
+ before_action :setup_new_option_value, only: :edit
5
+
6
+ def update_values_positions
7
+ ActiveRecord::Base.transaction do
8
+ params[:positions].each do |id, index|
9
+ Spree::OptionValue.where(id: id).update_all(position: index)
10
+ end
11
+ end
12
+
13
+ respond_to do |format|
14
+ format.html { redirect_to admin_product_variants_url(params[:product_id]) }
15
+ format.js { render text: 'Ok' }
16
+ end
17
+ end
18
+
19
+ protected
20
+
21
+ def location_after_save
22
+ if @option_type.created_at == @option_type.updated_at
23
+ edit_admin_option_type_url(@option_type)
24
+ else
25
+ admin_option_types_url
26
+ end
27
+ end
28
+
29
+
30
+ private
31
+ def load_product
32
+ @product = Product.friendly.find(params[:product_id])
33
+ end
34
+
35
+ def setup_new_option_value
36
+ @option_type.option_values.build if @option_type.option_values.empty?
37
+ end
38
+
39
+ def set_available_option_types
40
+ @available_option_types = if @product.option_type_ids.any?
41
+ OptionType.where.not(id: @product.option_type_ids)
42
+ else
43
+ OptionType.all
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,11 @@
1
+ module Spree
2
+ module Admin
3
+ class OptionValuesController < Spree::Admin::BaseController
4
+ def destroy
5
+ option_value = Spree::OptionValue.find(params[:id])
6
+ option_value.destroy
7
+ render text: nil
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,74 @@
1
+ module Spree
2
+ module Admin
3
+ module Orders
4
+ class CustomerDetailsController < Spree::Admin::BaseController
5
+ before_action :load_order
6
+ before_action :load_user, only: :update, unless: :guest_checkout?
7
+
8
+ def show
9
+ edit
10
+ render action: :edit
11
+ end
12
+
13
+ def edit
14
+ country_id = Address.default.country.id
15
+ @order.build_bill_address(country_id: country_id) if @order.bill_address.nil?
16
+ @order.build_ship_address(country_id: country_id) if @order.ship_address.nil?
17
+
18
+ @order.bill_address.country_id = country_id if @order.bill_address.country.nil?
19
+ @order.ship_address.country_id = country_id if @order.ship_address.country.nil?
20
+ end
21
+
22
+ def update
23
+ if @order.update_attributes(order_params)
24
+ @order.associate_user!(@user, @order.email.blank?) unless guest_checkout?
25
+ @order.next unless @order.complete?
26
+ @order.refresh_shipment_rates(Spree::ShippingMethod::DISPLAY_ON_FRONT_AND_BACK_END)
27
+
28
+ if @order.errors.empty?
29
+ flash[:success] = Spree.t('customer_details_updated')
30
+ redirect_to edit_admin_order_url(@order)
31
+ else
32
+ render action: :edit
33
+ end
34
+ else
35
+ render action: :edit
36
+ end
37
+ end
38
+
39
+ private
40
+
41
+ def order_params
42
+ params.require(:order).permit(
43
+ :email,
44
+ :use_billing,
45
+ bill_address_attributes: permitted_address_attributes,
46
+ ship_address_attributes: permitted_address_attributes
47
+ )
48
+ end
49
+
50
+ def load_order
51
+ @order = Order.includes(:adjustments).friendly.find(params[:order_id])
52
+ end
53
+
54
+ def model_class
55
+ Spree::Order
56
+ end
57
+
58
+ def load_user
59
+ @user = (Spree.user_class.find_by(id: params[:user_id]) ||
60
+ Spree.user_class.find_by(email: order_params[:email]))
61
+
62
+ unless @user
63
+ flash.now[:error] = Spree.t(:user_not_found)
64
+ render :edit
65
+ end
66
+ end
67
+
68
+ def guest_checkout?
69
+ params[:guest_checkout] == 'true'
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,147 @@
1
+ module Spree
2
+ module Admin
3
+ class OrdersController < Spree::Admin::BaseController
4
+ before_action :initialize_order_events
5
+ before_action :load_order, only: [:edit, :update, :cancel, :resume, :approve, :resend, :open_adjustments, :close_adjustments, :cart]
6
+
7
+ respond_to :html
8
+
9
+ def index
10
+ params[:q] ||= {}
11
+ params[:q][:completed_at_not_null] ||= '1' if Spree::Config[:show_only_complete_orders_by_default]
12
+ @show_only_completed = params[:q][:completed_at_not_null] == '1'
13
+ params[:q][:s] ||= @show_only_completed ? 'completed_at desc' : 'created_at desc'
14
+ params[:q][:completed_at_not_null] = '' unless @show_only_completed
15
+
16
+ # As date params are deleted if @show_only_completed, store
17
+ # the original date so we can restore them into the params
18
+ # after the search
19
+ created_at_gt = params[:q][:created_at_gt]
20
+ created_at_lt = params[:q][:created_at_lt]
21
+
22
+ params[:q].delete(:inventory_units_shipment_id_null) if params[:q][:inventory_units_shipment_id_null] == "0"
23
+
24
+ if params[:q][:created_at_gt].present?
25
+ params[:q][:created_at_gt] = Time.zone.parse(params[:q][:created_at_gt]).beginning_of_day rescue ""
26
+ end
27
+
28
+ if params[:q][:created_at_lt].present?
29
+ params[:q][:created_at_lt] = Time.zone.parse(params[:q][:created_at_lt]).end_of_day rescue ""
30
+ end
31
+
32
+ if @show_only_completed
33
+ params[:q][:completed_at_gt] = params[:q].delete(:created_at_gt)
34
+ params[:q][:completed_at_lt] = params[:q].delete(:created_at_lt)
35
+ end
36
+
37
+ @search = Order.preload(:user).accessible_by(current_ability, :index).ransack(params[:q])
38
+
39
+ # lazy loading other models here (via includes) may result in an invalid query
40
+ # e.g. SELECT DISTINCT DISTINCT "spree_orders".id, "spree_orders"."created_at" AS alias_0 FROM "spree_orders"
41
+ # see https://github.com/spree/spree/pull/3919
42
+ @orders = @search.result(distinct: true).
43
+ page(params[:page]).
44
+ per(params[:per_page] || Spree::Config[:orders_per_page])
45
+
46
+ # Restore dates
47
+ params[:q][:created_at_gt] = created_at_gt
48
+ params[:q][:created_at_lt] = created_at_lt
49
+ end
50
+
51
+ def new
52
+ @order = Order.create(order_params)
53
+ redirect_to cart_admin_order_url(@order)
54
+ end
55
+
56
+ def edit
57
+ can_not_transition_without_customer_info
58
+
59
+ @order.refresh_shipment_rates(ShippingMethod::DISPLAY_ON_FRONT_AND_BACK_END)
60
+ end
61
+
62
+ def cart
63
+ unless @order.completed?
64
+ @order.refresh_shipment_rates
65
+ end
66
+ if @order.shipments.shipped.count > 0
67
+ redirect_to edit_admin_order_url(@order)
68
+ end
69
+ end
70
+
71
+ def update
72
+ if @order.update_attributes(params[:order]) && @order.line_items.present?
73
+ @order.update_with_updater!
74
+ unless @order.completed?
75
+ # Jump to next step if order is not completed.
76
+ redirect_to admin_order_customer_path(@order) and return
77
+ end
78
+ else
79
+ @order.errors.add(:line_items, Spree.t('errors.messages.blank')) if @order.line_items.empty?
80
+ end
81
+
82
+ render action: :edit
83
+ end
84
+
85
+ def cancel
86
+ @order.canceled_by(try_spree_current_user)
87
+ flash[:success] = Spree.t(:order_canceled)
88
+ redirect_to :back
89
+ end
90
+
91
+ def resume
92
+ @order.resume!
93
+ flash[:success] = Spree.t(:order_resumed)
94
+ redirect_to :back
95
+ end
96
+
97
+ def approve
98
+ @order.approved_by(try_spree_current_user)
99
+ flash[:success] = Spree.t(:order_approved)
100
+ redirect_to :back
101
+ end
102
+
103
+ def resend
104
+ OrderMailer.confirm_email(@order.id, true).deliver_later
105
+ flash[:success] = Spree.t(:order_email_resent)
106
+
107
+ redirect_to :back
108
+ end
109
+
110
+ def open_adjustments
111
+ adjustments = @order.all_adjustments.closed
112
+ adjustments.update_all(state: 'open')
113
+ flash[:success] = Spree.t(:all_adjustments_opened)
114
+
115
+ respond_with(@order) { |format| format.html { redirect_to :back } }
116
+ end
117
+
118
+ def close_adjustments
119
+ adjustments = @order.all_adjustments.open
120
+ adjustments.update_all(state: 'closed')
121
+ flash[:success] = Spree.t(:all_adjustments_closed)
122
+
123
+ respond_with(@order) { |format| format.html { redirect_to :back } }
124
+ end
125
+
126
+ private
127
+ def order_params
128
+ params[:created_by_id] = try_spree_current_user.try(:id)
129
+ params.permit(:created_by_id, :user_id)
130
+ end
131
+
132
+ def load_order
133
+ @order = Order.includes(:adjustments).friendly.find(params[:id])
134
+ authorize! action, @order
135
+ end
136
+
137
+ # Used for extensions which need to provide their own custom event links on the order details view.
138
+ def initialize_order_events
139
+ @order_events = %w{approve cancel resume}
140
+ end
141
+
142
+ def model_class
143
+ Spree::Order
144
+ end
145
+ end
146
+ end
147
+ end
@@ -0,0 +1,72 @@
1
+ module Spree
2
+ module Admin
3
+ class PaymentMethodsController < ResourceController
4
+ skip_before_action :load_resource, only: :create
5
+ before_action :load_data
6
+ before_action :validate_payment_method_provider, only: :create
7
+
8
+ respond_to :html
9
+
10
+ def create
11
+ @payment_method = params[:payment_method].delete(:type).constantize.new(payment_method_params)
12
+ @object = @payment_method
13
+ invoke_callbacks(:create, :before)
14
+ if @payment_method.save
15
+ invoke_callbacks(:create, :after)
16
+ flash[:success] = Spree.t(:successfully_created, resource: Spree.t(:payment_method))
17
+ redirect_to edit_admin_payment_method_path(@payment_method)
18
+ else
19
+ invoke_callbacks(:create, :fails)
20
+ respond_with(@payment_method)
21
+ end
22
+ end
23
+
24
+ def update
25
+ invoke_callbacks(:update, :before)
26
+ payment_method_type = params[:payment_method].delete(:type)
27
+ if @payment_method['type'].to_s != payment_method_type
28
+ @payment_method.update_columns(
29
+ type: payment_method_type,
30
+ updated_at: Time.current,
31
+ )
32
+ @payment_method = PaymentMethod.find(params[:id])
33
+ end
34
+
35
+ update_params = params[ActiveModel::Naming.param_key(@payment_method)] || {}
36
+ attributes = payment_method_params.merge(update_params)
37
+ attributes.each do |k,v|
38
+ if k.include?("password") && attributes[k].blank?
39
+ attributes.delete(k)
40
+ end
41
+ end
42
+
43
+ if @payment_method.update_attributes(attributes)
44
+ invoke_callbacks(:update, :after)
45
+ flash[:success] = Spree.t(:successfully_updated, resource: Spree.t(:payment_method))
46
+ redirect_to edit_admin_payment_method_path(@payment_method)
47
+ else
48
+ invoke_callbacks(:update, :fails)
49
+ respond_with(@payment_method)
50
+ end
51
+ end
52
+
53
+ private
54
+
55
+ def load_data
56
+ @providers = Gateway.providers.sort{|p1, p2| p1.name <=> p2.name }
57
+ end
58
+
59
+ def validate_payment_method_provider
60
+ valid_payment_methods = Rails.application.config.spree.payment_methods.map(&:to_s)
61
+ if !valid_payment_methods.include?(params[:payment_method][:type])
62
+ flash[:error] = Spree.t(:invalid_payment_provider)
63
+ redirect_to new_admin_payment_method_path
64
+ end
65
+ end
66
+
67
+ def payment_method_params
68
+ params.require(:payment_method).permit!
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,103 @@
1
+ module Spree
2
+ module Admin
3
+ class PaymentsController < Spree::Admin::BaseController
4
+ include Spree::Backend::Callbacks
5
+
6
+ before_action :load_order, only: [:create, :new, :index, :fire]
7
+ before_action :load_payment, except: [:create, :new, :index]
8
+ before_action :load_data
9
+ before_action :can_not_transition_without_customer_info
10
+
11
+ respond_to :html
12
+
13
+ def index
14
+ @payments = @order.payments.includes(refunds: :reason)
15
+ @refunds = @payments.flat_map(&:refunds)
16
+ redirect_to new_admin_order_payment_url(@order) if @payments.empty?
17
+ end
18
+
19
+ def new
20
+ @payment = @order.payments.build
21
+ end
22
+
23
+ def create
24
+ invoke_callbacks(:create, :before)
25
+ @payment ||= @order.payments.build(object_params)
26
+ if @payment.payment_method.source_required? && params[:card].present? and params[:card] != 'new'
27
+ @payment.source = @payment.payment_method.payment_source_class.find_by_id(params[:card])
28
+ end
29
+
30
+ begin
31
+ if @payment.save
32
+ invoke_callbacks(:create, :after)
33
+ # Transition order as far as it will go.
34
+ while @order.next; end
35
+ # If "@order.next" didn't trigger payment processing already (e.g. if the order was
36
+ # already complete) then trigger it manually now
37
+ @payment.process! if @order.completed? && @payment.checkout?
38
+ flash[:success] = flash_message_for(@payment, :successfully_created)
39
+ redirect_to admin_order_payments_path(@order)
40
+ else
41
+ invoke_callbacks(:create, :fails)
42
+ flash[:error] = Spree.t(:payment_could_not_be_created)
43
+ render :new
44
+ end
45
+ rescue Spree::Core::GatewayError => e
46
+ invoke_callbacks(:create, :fails)
47
+ flash[:error] = "#{e.message}"
48
+ redirect_to new_admin_order_payment_path(@order)
49
+ end
50
+ end
51
+
52
+ def fire
53
+ return unless event = params[:e] and @payment.payment_source
54
+
55
+ # Because we have a transition method also called void, we do this to avoid conflicts.
56
+ event = "void_transaction" if event == "void"
57
+ if @payment.send("#{event}!")
58
+ flash[:success] = Spree.t(:payment_updated)
59
+ else
60
+ flash[:error] = Spree.t(:cannot_perform_operation)
61
+ end
62
+ rescue Spree::Core::GatewayError => ge
63
+ flash[:error] = "#{ge.message}"
64
+ ensure
65
+ redirect_to admin_order_payments_path(@order)
66
+ end
67
+
68
+ private
69
+
70
+ def object_params
71
+ if params[:payment] and params[:payment_source] and source_params = params.delete(:payment_source)[params[:payment][:payment_method_id]]
72
+ params[:payment][:source_attributes] = source_params
73
+ end
74
+
75
+ params.require(:payment).permit(permitted_payment_attributes)
76
+ end
77
+
78
+ def load_data
79
+ @amount = params[:amount] || load_order.total
80
+ @payment_methods = PaymentMethod.available_on_back_end
81
+ if @payment and @payment.payment_method
82
+ @payment_method = @payment.payment_method
83
+ else
84
+ @payment_method = @payment_methods.first
85
+ end
86
+ end
87
+
88
+ def load_order
89
+ @order = Order.friendly.find(params[:order_id])
90
+ authorize! action, @order
91
+ @order
92
+ end
93
+
94
+ def load_payment
95
+ @payment = Payment.friendly.find(params[:id])
96
+ end
97
+
98
+ def model_class
99
+ Spree::Payment
100
+ end
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,18 @@
1
+ module Spree
2
+ module Admin
3
+ class ProductPropertiesController < ResourceController
4
+ belongs_to 'spree/product', :find_by => :slug
5
+ before_action :find_properties
6
+ before_action :setup_property, only: :index
7
+
8
+ private
9
+ def find_properties
10
+ @properties = Spree::Property.pluck(:name)
11
+ end
12
+
13
+ def setup_property
14
+ @product.product_properties.build
15
+ end
16
+ end
17
+ end
18
+ end