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,156 @@
1
+ module Spree
2
+ module Admin
3
+ class ProductsController < ResourceController
4
+ helper 'spree/products'
5
+
6
+ before_action :load_data, except: :index
7
+ create.before :create_before
8
+ update.before :update_before
9
+ helper_method :clone_object_url
10
+
11
+ def show
12
+ session[:return_to] ||= request.referer
13
+ redirect_to action: :edit
14
+ end
15
+
16
+ def index
17
+ session[:return_to] = request.url
18
+ respond_with(@collection)
19
+ end
20
+
21
+ def update
22
+ if params[:product][:taxon_ids].present?
23
+ params[:product][:taxon_ids] = params[:product][:taxon_ids].split(',')
24
+ end
25
+ if params[:product][:option_type_ids].present?
26
+ params[:product][:option_type_ids] = params[:product][:option_type_ids].split(',')
27
+ end
28
+ invoke_callbacks(:update, :before)
29
+ if @object.update_attributes(permitted_resource_params)
30
+ invoke_callbacks(:update, :after)
31
+ flash[:success] = flash_message_for(@object, :successfully_updated)
32
+ respond_with(@object) do |format|
33
+ format.html { redirect_to location_after_save }
34
+ format.js { render layout: false }
35
+ end
36
+ else
37
+ # Stops people submitting blank slugs, causing errors when they try to
38
+ # update the product again
39
+ @product.slug = @product.slug_was if @product.slug.blank?
40
+ invoke_callbacks(:update, :fails)
41
+ respond_with(@object)
42
+ end
43
+ end
44
+
45
+ def destroy
46
+ @product = Product.friendly.find(params[:id])
47
+
48
+ begin
49
+ # TODO: why is @product.destroy raising ActiveRecord::RecordNotDestroyed instead of failing with false result
50
+ if @product.destroy
51
+ flash[:success] = Spree.t('notice_messages.product_deleted')
52
+ else
53
+ flash[:error] = Spree.t('notice_messages.product_not_deleted')
54
+ end
55
+ rescue ActiveRecord::RecordNotDestroyed => e
56
+ flash[:error] = Spree.t('notice_messages.product_not_deleted')
57
+ end
58
+
59
+ respond_with(@product) do |format|
60
+ format.html { redirect_to collection_url }
61
+ format.js { render_js_for_destroy }
62
+ end
63
+ end
64
+
65
+ def clone
66
+ @new = @product.duplicate
67
+
68
+ if @new.save
69
+ flash[:success] = Spree.t('notice_messages.product_cloned')
70
+ else
71
+ flash[:error] = Spree.t('notice_messages.product_not_cloned')
72
+ end
73
+
74
+ redirect_to edit_admin_product_url(@new)
75
+ end
76
+
77
+ def stock
78
+ @variants = @product.variants.includes(*variant_stock_includes)
79
+ @variants = [@product.master] if @variants.empty?
80
+ @stock_locations = StockLocation.accessible_by(current_ability, :read)
81
+ if @stock_locations.empty?
82
+ flash[:error] = Spree.t(:stock_management_requires_a_stock_location)
83
+ redirect_to admin_stock_locations_path
84
+ end
85
+ end
86
+
87
+ protected
88
+
89
+ def find_resource
90
+ Product.with_deleted.friendly.find(params[:id])
91
+ end
92
+
93
+ def location_after_save
94
+ spree.edit_admin_product_url(@product)
95
+ end
96
+
97
+ def load_data
98
+ @taxons = Taxon.order(:name)
99
+ @option_types = OptionType.order(:name)
100
+ @tax_categories = TaxCategory.order(:name)
101
+ @shipping_categories = ShippingCategory.order(:name)
102
+ end
103
+
104
+ def collection
105
+ return @collection if @collection.present?
106
+ params[:q] ||= {}
107
+ params[:q][:deleted_at_null] ||= "1"
108
+ params[:q][:not_discontinued] ||= "1"
109
+
110
+ params[:q][:s] ||= "name asc"
111
+ @collection = super
112
+ # Don't delete params[:q][:deleted_at_null] here because it is used in view to check the
113
+ # checkbox for 'q[deleted_at_null]'. This also messed with pagination when deleted_at_null is checked.
114
+ if params[:q][:deleted_at_null] == '0'
115
+ @collection = @collection.with_deleted
116
+ end
117
+ # @search needs to be defined as this is passed to search_form_for
118
+ # Temporarily remove params[:q][:deleted_at_null] from params[:q] to ransack products.
119
+ # This is to include all products and not just deleted products.
120
+ @search = @collection.ransack(params[:q].reject { |k, _v| k.to_s == 'deleted_at_null' })
121
+ @collection = @search.result.
122
+ distinct_by_product_ids(params[:q][:s]).
123
+ includes(product_includes).
124
+ page(params[:page]).
125
+ per(params[:per_page] || Spree::Config[:admin_products_per_page])
126
+ @collection
127
+ end
128
+
129
+ def create_before
130
+ return if params[:product][:prototype_id].blank?
131
+ @prototype = Spree::Prototype.find(params[:product][:prototype_id])
132
+ end
133
+
134
+ def update_before
135
+ # note: we only reset the product properties if we're receiving a post
136
+ # from the form on that tab
137
+ return unless params[:clear_product_properties]
138
+ params[:product] ||= {}
139
+ end
140
+
141
+ def product_includes
142
+ [{ variants: [:images], master: [:images, :default_price] }]
143
+ end
144
+
145
+ def clone_object_url(resource)
146
+ clone_admin_product_url resource
147
+ end
148
+
149
+ private
150
+
151
+ def variant_stock_includes
152
+ [:images, stock_items: :stock_location, option_values: :option_type]
153
+ end
154
+ end
155
+ end
156
+ end
@@ -0,0 +1,45 @@
1
+ class Spree::Admin::PromotionActionsController < Spree::Admin::BaseController
2
+ before_action :load_promotion, only: [:create, :destroy]
3
+ before_action :validate_promotion_action_type, only: :create
4
+
5
+ def create
6
+ @calculators = Spree::Promotion::Actions::CreateAdjustment.calculators
7
+ @promotion_action = params[:action_type].constantize.new(params[:promotion_action])
8
+ @promotion_action.promotion = @promotion
9
+ if @promotion_action.save
10
+ flash[:success] = Spree.t(:successfully_created, :resource => Spree.t(:promotion_action))
11
+ end
12
+ respond_to do |format|
13
+ format.html { redirect_to spree.edit_admin_promotion_path(@promotion)}
14
+ format.js { render :layout => false }
15
+ end
16
+ end
17
+
18
+ def destroy
19
+ @promotion_action = @promotion.promotion_actions.find(params[:id])
20
+ if @promotion_action.destroy
21
+ flash[:success] = Spree.t(:successfully_removed, :resource => Spree.t(:promotion_action))
22
+ end
23
+ respond_to do |format|
24
+ format.html { redirect_to spree.edit_admin_promotion_path(@promotion)}
25
+ format.js { render :layout => false }
26
+ end
27
+ end
28
+
29
+ private
30
+
31
+ def load_promotion
32
+ @promotion = Spree::Promotion.find(params[:promotion_id])
33
+ end
34
+
35
+ def validate_promotion_action_type
36
+ valid_promotion_action_types = Rails.application.config.spree.promotions.actions.map(&:to_s)
37
+ if !valid_promotion_action_types.include?(params[:action_type])
38
+ flash[:error] = Spree.t(:invalid_promotion_action)
39
+ respond_to do |format|
40
+ format.html { redirect_to spree.edit_admin_promotion_path(@promotion)}
41
+ format.js { render :layout => false }
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,6 @@
1
+ module Spree
2
+ module Admin
3
+ class PromotionCategoriesController < ResourceController
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,50 @@
1
+ class Spree::Admin::PromotionRulesController < Spree::Admin::BaseController
2
+ helper 'spree/promotion_rules'
3
+
4
+ before_action :load_promotion, only: [:create, :destroy]
5
+ before_action :validate_promotion_rule_type, only: :create
6
+
7
+ def create
8
+ # Remove type key from this hash so that we don't attempt
9
+ # to set it when creating a new record, as this is raises
10
+ # an error in ActiveRecord 3.2.
11
+ promotion_rule_type = params[:promotion_rule].delete(:type)
12
+ @promotion_rule = promotion_rule_type.constantize.new(params[:promotion_rule])
13
+ @promotion_rule.promotion = @promotion
14
+ if @promotion_rule.save
15
+ flash[:success] = Spree.t(:successfully_created, :resource => Spree.t(:promotion_rule))
16
+ end
17
+ respond_to do |format|
18
+ format.html { redirect_to spree.edit_admin_promotion_path(@promotion)}
19
+ format.js { render :layout => false }
20
+ end
21
+ end
22
+
23
+ def destroy
24
+ @promotion_rule = @promotion.promotion_rules.find(params[:id])
25
+ if @promotion_rule.destroy
26
+ flash[:success] = Spree.t(:successfully_removed, :resource => Spree.t(:promotion_rule))
27
+ end
28
+ respond_to do |format|
29
+ format.html { redirect_to spree.edit_admin_promotion_path(@promotion)}
30
+ format.js { render :layout => false }
31
+ end
32
+ end
33
+
34
+ private
35
+
36
+ def load_promotion
37
+ @promotion = Spree::Promotion.find(params[:promotion_id])
38
+ end
39
+
40
+ def validate_promotion_rule_type
41
+ valid_promotion_rule_types = Rails.application.config.spree.promotions.rules.map(&:to_s)
42
+ if !valid_promotion_rule_types.include?(params[:promotion_rule][:type])
43
+ flash[:error] = Spree.t(:invalid_promotion_rule)
44
+ respond_to do |format|
45
+ format.html { redirect_to spree.edit_admin_promotion_path(@promotion)}
46
+ format.js { render :layout => false }
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,36 @@
1
+ module Spree
2
+ module Admin
3
+ class PromotionsController < ResourceController
4
+ before_action :load_data
5
+
6
+ helper 'spree/promotion_rules'
7
+
8
+ protected
9
+ def location_after_save
10
+ spree.edit_admin_promotion_url(@promotion)
11
+ end
12
+
13
+ def load_data
14
+ @calculators = Rails.application.config.spree.calculators.promotion_actions_create_adjustments
15
+ @promotion_categories = Spree::PromotionCategory.order(:name)
16
+ end
17
+
18
+ def collection
19
+ return @collection if defined?(@collection)
20
+ params[:q] ||= HashWithIndifferentAccess.new
21
+ params[:q][:s] ||= 'id desc'
22
+
23
+ @collection = super
24
+ @search = @collection.ransack(params[:q])
25
+ @collection = @search.result(distinct: true).
26
+ includes(promotion_includes).
27
+ page(params[:page]).
28
+ per(params[:per_page] || Spree::Config[:promotions_per_page])
29
+ end
30
+
31
+ def promotion_includes
32
+ [:promotion_actions]
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,23 @@
1
+ module Spree
2
+ module Admin
3
+ class PropertiesController < ResourceController
4
+ def index
5
+ respond_with(@collection)
6
+ end
7
+
8
+ private
9
+
10
+ def collection
11
+ return @collection if @collection.present?
12
+ # params[:q] can be blank upon pagination
13
+ params[:q] = {} if params[:q].blank?
14
+
15
+ @collection = super
16
+ @search = @collection.ransack(params[:q])
17
+ @collection = @search.result.
18
+ page(params[:page]).
19
+ per(Spree::Config[:properties_per_page])
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,27 @@
1
+ module Spree
2
+ module Admin
3
+ class PrototypesController < ResourceController
4
+ def show
5
+ if request.xhr?
6
+ render :layout => false
7
+ else
8
+ redirect_to admin_prototypes_path
9
+ end
10
+ end
11
+
12
+ def available
13
+ @prototypes = Prototype.order('name asc')
14
+ respond_with(@prototypes) do |format|
15
+ format.html { render :layout => !request.xhr? }
16
+ format.js
17
+ end
18
+ end
19
+
20
+ def select
21
+ @prototype ||= Prototype.find(params[:id])
22
+ @prototype_properties = @prototype.properties
23
+ end
24
+
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,6 @@
1
+ module Spree
2
+ module Admin
3
+ class RefundReasonsController < ResourceController
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,38 @@
1
+ module Spree
2
+ module Admin
3
+ class RefundsController < ResourceController
4
+ belongs_to 'spree/payment', find_by: :number
5
+ before_action :load_order
6
+
7
+ helper_method :refund_reasons
8
+
9
+ rescue_from Spree::Core::GatewayError, with: :spree_core_gateway_error, only: :create
10
+
11
+ private
12
+
13
+ def location_after_save
14
+ admin_order_payments_path(@payment.order)
15
+ end
16
+
17
+ def load_order
18
+ # the spree/admin/shared/order_tabs partial expects the @order instance variable to be set
19
+ @order = @payment.order if @payment
20
+ end
21
+
22
+ def refund_reasons
23
+ @refund_reasons ||= RefundReason.active.all
24
+ end
25
+
26
+ def build_resource
27
+ super.tap do |refund|
28
+ refund.amount = refund.payment.credit_allowed
29
+ end
30
+ end
31
+
32
+ def spree_core_gateway_error(error)
33
+ flash[:error] = error.message
34
+ render :new
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,6 @@
1
+ module Spree
2
+ module Admin
3
+ class ReimbursementTypesController < ResourceController
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,45 @@
1
+ module Spree
2
+ module Admin
3
+ class ReimbursementsController < ResourceController
4
+ belongs_to 'spree/order', find_by: :number
5
+
6
+ before_action :load_simulated_refunds, only: :edit
7
+
8
+ rescue_from Spree::Core::GatewayError, with: :spree_core_gateway_error, only: :perform
9
+
10
+ def perform
11
+ @reimbursement.perform!
12
+ redirect_to location_after_save
13
+ end
14
+
15
+ private
16
+
17
+ def build_resource
18
+ if params[:build_from_customer_return_id].present?
19
+ customer_return = CustomerReturn.find(params[:build_from_customer_return_id])
20
+
21
+ Reimbursement.build_from_customer_return(customer_return)
22
+ else
23
+ super
24
+ end
25
+ end
26
+
27
+ def location_after_save
28
+ if @reimbursement.reimbursed?
29
+ admin_order_reimbursement_path(parent, @reimbursement)
30
+ else
31
+ edit_admin_order_reimbursement_path(parent, @reimbursement)
32
+ end
33
+ end
34
+
35
+ def load_simulated_refunds
36
+ @reimbursement_objects = @reimbursement.simulate
37
+ end
38
+
39
+ def spree_core_gateway_error(error)
40
+ flash[:error] = error.message
41
+ redirect_to edit_admin_order_reimbursement_path(parent, @reimbursement)
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,65 @@
1
+ module Spree
2
+ module Admin
3
+ class ReportsController < Spree::Admin::BaseController
4
+ respond_to :html
5
+
6
+ class << self
7
+ def available_reports
8
+ @@available_reports
9
+ end
10
+
11
+ def add_available_report!(report_key, report_description_key = nil)
12
+ if report_description_key.nil?
13
+ report_description_key = "#{report_key}_description"
14
+ end
15
+ @@available_reports[report_key] = {name: Spree.t(report_key), description: Spree.t(report_description_key)}
16
+ end
17
+ end
18
+
19
+ def initialize
20
+ super
21
+ ReportsController.add_available_report!(:sales_total)
22
+ end
23
+
24
+ def index
25
+ @reports = ReportsController.available_reports
26
+ end
27
+
28
+ def sales_total
29
+ params[:q] = {} unless params[:q]
30
+
31
+ if params[:q][:completed_at_gt].blank?
32
+ params[:q][:completed_at_gt] = Time.zone.now.beginning_of_month
33
+ else
34
+ params[:q][:completed_at_gt] = Time.zone.parse(params[:q][:completed_at_gt]).beginning_of_day rescue Time.zone.now.beginning_of_month
35
+ end
36
+
37
+ if params[:q] && !params[:q][:completed_at_lt].blank?
38
+ params[:q][:completed_at_lt] = Time.zone.parse(params[:q][:completed_at_lt]).end_of_day rescue ""
39
+ end
40
+
41
+ params[:q][:s] ||= "completed_at desc"
42
+
43
+ @search = Order.complete.ransack(params[:q])
44
+ @orders = @search.result
45
+
46
+ @totals = {}
47
+ @orders.each do |order|
48
+ @totals[order.currency] = { :item_total => ::Money.new(0, order.currency), :adjustment_total => ::Money.new(0, order.currency), :sales_total => ::Money.new(0, order.currency) } unless @totals[order.currency]
49
+ @totals[order.currency][:item_total] += order.display_item_total.money
50
+ @totals[order.currency][:adjustment_total] += order.display_adjustment_total.money
51
+ @totals[order.currency][:sales_total] += order.display_total.money
52
+ end
53
+ end
54
+
55
+ private
56
+
57
+ def model_class
58
+ Spree::Admin::ReportsController
59
+ end
60
+
61
+ @@available_reports = {}
62
+
63
+ end
64
+ end
65
+ end