spree_cm_commissioner 2.13.3 → 2.13.4

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 (283) hide show
  1. checksums.yaml +4 -4
  2. data/.env.example +0 -1
  3. data/Gemfile.lock +1 -1
  4. data/app/assets/config/spree_cm_commissioner_manifest.js +0 -1
  5. data/app/assets/javascripts/spree_cm_commissioner/backend.js +0 -8
  6. data/app/assets/stylesheets/spree_cm_commissioner/backend/commissioner_admin.css.scss +0 -1
  7. data/app/controllers/concerns/spree_cm_commissioner/content_cachable.rb +10 -8
  8. data/app/controllers/spree/admin/base_controller_decorator.rb +0 -12
  9. data/app/controllers/spree/admin/oauth_application_api_keys_controller.rb +118 -0
  10. data/app/controllers/spree/admin/oauth_applications_controller.rb +10 -0
  11. data/app/controllers/spree/api/v2/storefront/dynamic_field_options_controller.rb +12 -0
  12. data/app/controllers/spree/api/v2/storefront/trip_search_controller.rb +0 -5
  13. data/app/controllers/spree/api/v2/tenant/trip_search_controller.rb +0 -5
  14. data/app/helpers/spree/{billing → admin}/navigation_helper_decorator.rb +2 -9
  15. data/app/interactors/spree_cm_commissioner/user_acleda_bank_web_app_authenticator.rb +38 -0
  16. data/app/interactors/spree_cm_commissioner/user_wing_bank_web_app_authenticator.rb +39 -0
  17. data/app/models/concerns/spree_cm_commissioner/oauth_application/mini_app.rb +72 -0
  18. data/app/models/spree_cm_commissioner/dynamic_field.rb +12 -1
  19. data/app/models/spree_cm_commissioner/dynamic_field_option.rb +11 -0
  20. data/app/models/spree_cm_commissioner/guest.rb +8 -0
  21. data/app/models/spree_cm_commissioner/mini_app_provider/acleda_bank.rb +28 -0
  22. data/app/models/spree_cm_commissioner/mini_app_provider/base.rb +219 -0
  23. data/app/models/spree_cm_commissioner/mini_app_provider/vattanac_bank.rb +6 -0
  24. data/app/models/spree_cm_commissioner/mini_app_provider/wing_bank.rb +30 -0
  25. data/app/models/spree_cm_commissioner/oauth_application_decorator.rb +7 -0
  26. data/app/models/spree_cm_commissioner/product_dynamic_field.rb +9 -0
  27. data/app/models/spree_cm_commissioner/user_identity_provider.rb +1 -1
  28. data/app/services/spree_cm_commissioner/mini_app_provider/api_key_history.rb +128 -0
  29. data/app/services/spree_cm_commissioner/mini_app_provider/ip_rules.rb +26 -0
  30. data/app/services/spree_cm_commissioner/mini_app_provider/session_gate.rb +79 -0
  31. data/app/services/spree_cm_commissioner/mini_app_provider/session_throttle.rb +66 -0
  32. data/app/services/spree_cm_commissioner/payment_method_type_mapper.rb +3 -1
  33. data/app/services/spree_cm_commissioner/rate_limiter/result.rb +20 -0
  34. data/app/services/spree_cm_commissioner/rate_limiter.rb +62 -0
  35. data/app/services/spree_cm_commissioner/seeds/user_usernames.rb +3 -1
  36. data/app/services/spree_cm_commissioner/ticket_transfers/eligibility_checker.rb +5 -6
  37. data/app/services/spree_cm_commissioner/ticket_transfers/preview_rule.rb +3 -5
  38. data/app/services/spree_cm_commissioner/user_authenticator.rb +12 -2
  39. data/app/services/spree_cm_commissioner/wing_mini_app/config.rb +44 -0
  40. data/app/services/spree_cm_commissioner/wing_mini_app/find_or_create_user.rb +89 -0
  41. data/app/services/spree_cm_commissioner/wing_mini_app/profile_verifier.rb +65 -0
  42. data/app/views/spree/admin/guests/_table.html.erb +4 -0
  43. data/app/views/spree/admin/oauth_applications/_api_key_minted_modal.html.erb +71 -0
  44. data/app/views/spree/admin/oauth_applications/_api_key_modal.html.erb +68 -0
  45. data/app/views/spree/admin/oauth_applications/_api_key_restore_list.html.erb +40 -0
  46. data/app/views/spree/admin/oauth_applications/_api_key_restore_modal.html.erb +72 -0
  47. data/app/views/spree/admin/oauth_applications/_api_key_revoke_modal.html.erb +54 -0
  48. data/app/views/spree/admin/oauth_applications/_form.html.erb +152 -0
  49. data/app/views/spree/admin/oauth_applications/edit.html.erb +36 -0
  50. data/app/views/spree/admin/shared/_ticket_transfer_details.html.erb +8 -2
  51. data/config/locales/en.yml +12 -0
  52. data/config/routes.rb +15 -113
  53. data/db/migrate/20260928070109_add_provider_and_api_key_to_spree_oauth_applications.rb +11 -0
  54. data/lib/spree_cm_commissioner/test_helper/factories/vendor_factory.rb +16 -2
  55. data/lib/spree_cm_commissioner/version.rb +1 -1
  56. data/lib/spree_cm_commissioner.rb +8 -1
  57. metadata +28 -229
  58. data/app/assets/javascripts/spree_cm_commissioner/address_hide_form.js +0 -17
  59. data/app/assets/javascripts/spree_cm_commissioner/location_checkbox_manager.js +0 -45
  60. data/app/assets/javascripts/spree_cm_commissioner/report_hide_filter.js +0 -37
  61. data/app/assets/javascripts/spree_cm_commissioner/role_form.js +0 -51
  62. data/app/assets/javascripts/spree_cm_commissioner/selected_field_filter_origin_destination.js +0 -37
  63. data/app/assets/javascripts/spree_cm_commissioner/trip_stop_selection.js +0 -41
  64. data/app/assets/javascripts/spree_cm_commissioner/update_popup_confirmation.js +0 -42
  65. data/app/assets/javascripts/spree_cm_commissioner/vehicle_seat.js +0 -291
  66. data/app/assets/stylesheets/spree_cm_commissioner/backend/invoice.scss +0 -92
  67. data/app/assets/stylesheets/spree_cm_commissioner/backend/vehicle_seat.scss +0 -28
  68. data/app/controllers/concerns/spree/billing/order_parents_concern.rb +0 -31
  69. data/app/controllers/concerns/spree/billing/payment_creatable.rb +0 -64
  70. data/app/controllers/concerns/spree/billing/payment_fireable.rb +0 -35
  71. data/app/controllers/concerns/spree_cm_commissioner/billing/role_authorization.rb +0 -53
  72. data/app/controllers/spree/billing/addresses_controller.rb +0 -32
  73. data/app/controllers/spree/billing/adjustments_controller.rb +0 -72
  74. data/app/controllers/spree/billing/base_controller.rb +0 -82
  75. data/app/controllers/spree/billing/businesses_controller.rb +0 -135
  76. data/app/controllers/spree/billing/customers_controller.rb +0 -107
  77. data/app/controllers/spree/billing/errors_controller.rb +0 -14
  78. data/app/controllers/spree/billing/invoice_controller.rb +0 -36
  79. data/app/controllers/spree/billing/option_types_controller.rb +0 -32
  80. data/app/controllers/spree/billing/orders_controller.rb +0 -90
  81. data/app/controllers/spree/billing/payment_qrcodes_controller.rb +0 -14
  82. data/app/controllers/spree/billing/payments_controller.rb +0 -148
  83. data/app/controllers/spree/billing/places_controller.rb +0 -35
  84. data/app/controllers/spree/billing/products_controller.rb +0 -56
  85. data/app/controllers/spree/billing/refunds_controller.rb +0 -9
  86. data/app/controllers/spree/billing/reports_controller.rb +0 -202
  87. data/app/controllers/spree/billing/roles_controller.rb +0 -107
  88. data/app/controllers/spree/billing/store_credits_controller.rb +0 -117
  89. data/app/controllers/spree/billing/subscriptions_controller.rb +0 -49
  90. data/app/controllers/spree/billing/users_controller.rb +0 -19
  91. data/app/controllers/spree/billing/variants_controller.rb +0 -36
  92. data/app/controllers/spree/billing/vendors_controller.rb +0 -83
  93. data/app/controllers/spree/transit/amenities_controller.rb +0 -79
  94. data/app/controllers/spree/transit/amenity_values_controller.rb +0 -16
  95. data/app/controllers/spree/transit/base_controller.rb +0 -53
  96. data/app/controllers/spree/transit/branches_controller.rb +0 -35
  97. data/app/controllers/spree/transit/locations_controller.rb +0 -38
  98. data/app/controllers/spree/transit/places_controller.rb +0 -151
  99. data/app/controllers/spree/transit/reservations_controller.rb +0 -15
  100. data/app/controllers/spree/transit/routes_controller.rb +0 -66
  101. data/app/controllers/spree/transit/service_calendars_controller.rb +0 -109
  102. data/app/controllers/spree/transit/stops_controller.rb +0 -32
  103. data/app/controllers/spree/transit/trip_stops_controller.rb +0 -35
  104. data/app/controllers/spree/transit/trips_controller.rb +0 -90
  105. data/app/controllers/spree/transit/vectors/amenity_values_controller.rb +0 -40
  106. data/app/controllers/spree/transit/vectors/icons_controller.rb +0 -26
  107. data/app/controllers/spree/transit/vehicle_photos_controller.rb +0 -52
  108. data/app/controllers/spree/transit/vehicle_seats_controller.rb +0 -29
  109. data/app/controllers/spree/transit/vehicle_types_controller.rb +0 -81
  110. data/app/controllers/spree/transit/vehicles_controller.rb +0 -54
  111. data/app/controllers/spree/transit/vendors_controller.rb +0 -83
  112. data/app/helpers/spree/billing/sortable_tree_helper.rb +0 -32
  113. data/app/helpers/spree/transit/navigation_helper_decorator.rb +0 -14
  114. data/app/helpers/spree/transit/sortable_tree_helper.rb +0 -32
  115. data/app/helpers/spree_cm_commissioner/billing/monthly_orders_helper.rb +0 -66
  116. data/app/helpers/spree_cm_commissioner/billing/qrcodes_helper.rb +0 -11
  117. data/app/helpers/spree_cm_commissioner/transit/service_calendars_helper.rb +0 -17
  118. data/app/views/spree/billing/addresses/_form.html.erb +0 -38
  119. data/app/views/spree/billing/addresses/index.html.erb +0 -19
  120. data/app/views/spree/billing/adjustments/_adjustment.html.erb +0 -34
  121. data/app/views/spree/billing/adjustments/_adjustments_table.html.erb +0 -32
  122. data/app/views/spree/billing/adjustments/_form.html.erb +0 -12
  123. data/app/views/spree/billing/adjustments/edit.html.erb +0 -13
  124. data/app/views/spree/billing/adjustments/index.html.erb +0 -32
  125. data/app/views/spree/billing/adjustments/new.html.erb +0 -9
  126. data/app/views/spree/billing/businesses/_assets_form.html.erb +0 -8
  127. data/app/views/spree/billing/businesses/_form.html.erb +0 -88
  128. data/app/views/spree/billing/businesses/edit.html.erb +0 -21
  129. data/app/views/spree/billing/businesses/index.html.erb +0 -32
  130. data/app/views/spree/billing/businesses/new.html.erb +0 -16
  131. data/app/views/spree/billing/customers/_form.html.erb +0 -44
  132. data/app/views/spree/billing/customers/edit.html.erb +0 -23
  133. data/app/views/spree/billing/customers/index.html.erb +0 -160
  134. data/app/views/spree/billing/customers/new.html.erb +0 -15
  135. data/app/views/spree/billing/errors/forbidden.html.erb +0 -7
  136. data/app/views/spree/billing/invoice/show.html.erb +0 -21
  137. data/app/views/spree/billing/option_types/_form.html.erb +0 -29
  138. data/app/views/spree/billing/option_types/_option_value_fields.html.erb +0 -13
  139. data/app/views/spree/billing/option_types/edit.html.erb +0 -56
  140. data/app/views/spree/billing/option_types/index.html.erb +0 -50
  141. data/app/views/spree/billing/option_types/new.html.erb +0 -13
  142. data/app/views/spree/billing/orders/_form.html.erb +0 -54
  143. data/app/views/spree/billing/orders/_line_item.html.erb +0 -57
  144. data/app/views/spree/billing/orders/_search.html.erb +0 -62
  145. data/app/views/spree/billing/orders/edit.html.erb +0 -16
  146. data/app/views/spree/billing/orders/index.html.erb +0 -84
  147. data/app/views/spree/billing/orders/show.html.erb +0 -1
  148. data/app/views/spree/billing/payments/_list.html.erb +0 -49
  149. data/app/views/spree/billing/payments/_state_changes.html.erb +0 -33
  150. data/app/views/spree/billing/payments/index.html.erb +0 -35
  151. data/app/views/spree/billing/payments/new.html.erb +0 -24
  152. data/app/views/spree/billing/payments/show.html.erb +0 -15
  153. data/app/views/spree/billing/places/_form.html.erb +0 -16
  154. data/app/views/spree/billing/places/edit.html.erb +0 -12
  155. data/app/views/spree/billing/places/index.html.erb +0 -72
  156. data/app/views/spree/billing/places/new.html.erb +0 -15
  157. data/app/views/spree/billing/products/_add_stock_form.html.erb +0 -40
  158. data/app/views/spree/billing/products/_filters.html.erb +0 -31
  159. data/app/views/spree/billing/products/_form.html.erb +0 -123
  160. data/app/views/spree/billing/products/edit.html.erb +0 -8
  161. data/app/views/spree/billing/products/index.html.erb +0 -72
  162. data/app/views/spree/billing/products/new.html.erb +0 -85
  163. data/app/views/spree/billing/products/stock.html.erb +0 -77
  164. data/app/views/spree/billing/reports/_date_range_picker.html.erb +0 -78
  165. data/app/views/spree/billing/reports/_overview.html.erb +0 -48
  166. data/app/views/spree/billing/reports/active_subscribers.html.erb +0 -97
  167. data/app/views/spree/billing/reports/balance_due.html.erb +0 -188
  168. data/app/views/spree/billing/reports/export.html.erb +0 -70
  169. data/app/views/spree/billing/reports/failed_orders.html.erb +0 -58
  170. data/app/views/spree/billing/reports/index.html.erb +0 -62
  171. data/app/views/spree/billing/reports/overdue.html.erb +0 -61
  172. data/app/views/spree/billing/reports/paid.html.erb +0 -60
  173. data/app/views/spree/billing/roles/_form.html.erb +0 -52
  174. data/app/views/spree/billing/roles/edit.html.erb +0 -13
  175. data/app/views/spree/billing/roles/index.html.erb +0 -44
  176. data/app/views/spree/billing/roles/new.html.erb +0 -13
  177. data/app/views/spree/billing/shared/_customer_credit_form.html.erb +0 -33
  178. data/app/views/spree/billing/shared/_customer_promotion_form.html.erb +0 -29
  179. data/app/views/spree/billing/shared/_customer_promotion_table.html.erb +0 -39
  180. data/app/views/spree/billing/shared/_customer_tabs.html.erb +0 -46
  181. data/app/views/spree/billing/shared/_header.html.erb +0 -21
  182. data/app/views/spree/billing/shared/_invoice.html.erb +0 -280
  183. data/app/views/spree/billing/shared/_language_switcher.html.erb +0 -5
  184. data/app/views/spree/billing/shared/_main_menu.html.erb +0 -73
  185. data/app/views/spree/billing/shared/_order_tabs.html.erb +0 -41
  186. data/app/views/spree/billing/shared/_pop_up_confirmation.html.erb +0 -103
  187. data/app/views/spree/billing/shared/_product_tabs.html.erb +0 -24
  188. data/app/views/spree/billing/shared/_role_tabs.html.erb +0 -13
  189. data/app/views/spree/billing/shared/_subscription_tabs.html.erb +0 -20
  190. data/app/views/spree/billing/shared/_user_tabs.html.erb +0 -13
  191. data/app/views/spree/billing/shared/_vendor_logo.html.erb +0 -1
  192. data/app/views/spree/billing/shared/_vendor_switcher.html.erb +0 -57
  193. data/app/views/spree/billing/shared/sortable_tree/_taxonomy.html.erb +0 -29
  194. data/app/views/spree/billing/shared/sub_menu/_product.html.erb +0 -8
  195. data/app/views/spree/billing/shared/sub_menu/_report.html.erb +0 -23
  196. data/app/views/spree/billing/shared/sub_menu/_setting.html.erb +0 -11
  197. data/app/views/spree/billing/store_credits/_form.html.erb +0 -11
  198. data/app/views/spree/billing/store_credits/index.html.erb +0 -44
  199. data/app/views/spree/billing/store_credits/new.html.erb +0 -17
  200. data/app/views/spree/billing/subscriptions/_form.html.erb +0 -27
  201. data/app/views/spree/billing/subscriptions/_subscribed_variants_table.html.erb +0 -24
  202. data/app/views/spree/billing/subscriptions/edit.html.erb +0 -12
  203. data/app/views/spree/billing/subscriptions/index.html.erb +0 -86
  204. data/app/views/spree/billing/subscriptions/new.html.erb +0 -21
  205. data/app/views/spree/billing/users/_form.html.erb +0 -64
  206. data/app/views/spree/billing/users/edit.html.erb +0 -25
  207. data/app/views/spree/billing/users/index.html.erb +0 -116
  208. data/app/views/spree/billing/users/new.html.erb +0 -17
  209. data/app/views/spree/billing/variants/_form.html.erb +0 -28
  210. data/app/views/spree/billing/variants/edit.html.erb +0 -15
  211. data/app/views/spree/billing/variants/index.html.erb +0 -66
  212. data/app/views/spree/billing/variants/new.html.erb +0 -15
  213. data/app/views/spree/billing/vendors/_form.html.erb +0 -75
  214. data/app/views/spree/billing/vendors/edit.html.erb +0 -9
  215. data/app/views/spree/layouts/billing.html.erb +0 -74
  216. data/app/views/spree/layouts/transit.html.erb +0 -74
  217. data/app/views/spree/transit/amenities/_form.html.erb +0 -50
  218. data/app/views/spree/transit/amenities/_option_value_fields.html.erb +0 -15
  219. data/app/views/spree/transit/amenities/edit.html.erb +0 -53
  220. data/app/views/spree/transit/branches/_filter_form.erb +0 -23
  221. data/app/views/spree/transit/branches/_form.html.erb +0 -36
  222. data/app/views/spree/transit/branches/edit.html.erb +0 -15
  223. data/app/views/spree/transit/branches/index.html.erb +0 -43
  224. data/app/views/spree/transit/branches/new.html.erb +0 -19
  225. data/app/views/spree/transit/locations/_filter_form.erb +0 -30
  226. data/app/views/spree/transit/locations/_form.html.erb +0 -19
  227. data/app/views/spree/transit/locations/edit.html.erb +0 -15
  228. data/app/views/spree/transit/locations/index.html.erb +0 -49
  229. data/app/views/spree/transit/locations/new.html.erb +0 -17
  230. data/app/views/spree/transit/places/_assets_form.html.erb +0 -8
  231. data/app/views/spree/transit/places/_form.html.erb +0 -128
  232. data/app/views/spree/transit/places/edit.html.erb +0 -21
  233. data/app/views/spree/transit/places/index.html.erb +0 -32
  234. data/app/views/spree/transit/places/new.html.erb +0 -16
  235. data/app/views/spree/transit/reservations/index.html.erb +0 -5
  236. data/app/views/spree/transit/routes/_filter_form.erb +0 -24
  237. data/app/views/spree/transit/routes/_form.html.erb +0 -74
  238. data/app/views/spree/transit/routes/edit.html.erb +0 -13
  239. data/app/views/spree/transit/routes/index.html.erb +0 -79
  240. data/app/views/spree/transit/routes/new.html.erb +0 -18
  241. data/app/views/spree/transit/service_calendars/_exception_rules.html.erb +0 -44
  242. data/app/views/spree/transit/service_calendars/_filters.html.erb +0 -17
  243. data/app/views/spree/transit/service_calendars/_form.html.erb +0 -107
  244. data/app/views/spree/transit/service_calendars/index.html.erb +0 -77
  245. data/app/views/spree/transit/service_calendars/new.html.erb +0 -13
  246. data/app/views/spree/transit/shared/_amenity_tabs.html.erb +0 -21
  247. data/app/views/spree/transit/shared/_header.html.erb +0 -20
  248. data/app/views/spree/transit/shared/_main_menu.html.erb +0 -34
  249. data/app/views/spree/transit/shared/_route_tabs.html.erb +0 -25
  250. data/app/views/spree/transit/shared/_vehicle_tabs.html.erb +0 -15
  251. data/app/views/spree/transit/shared/_vendor_switcher.html.erb +0 -40
  252. data/app/views/spree/transit/shared/sortable_tree/_taxonomy.html.erb +0 -29
  253. data/app/views/spree/transit/shared/sub_menu/_setting.html.erb +0 -3
  254. data/app/views/spree/transit/stops/_filters.html.erb +0 -33
  255. data/app/views/spree/transit/stops/_form.html.erb +0 -68
  256. data/app/views/spree/transit/stops/edit.html.erb +0 -16
  257. data/app/views/spree/transit/stops/index.html.erb +0 -58
  258. data/app/views/spree/transit/stops/new.html.erb +0 -16
  259. data/app/views/spree/transit/trip_stops/index.html.erb +0 -38
  260. data/app/views/spree/transit/trips/_form.html.erb +0 -82
  261. data/app/views/spree/transit/trips/edit.html.erb +0 -15
  262. data/app/views/spree/transit/trips/new.html.erb +0 -15
  263. data/app/views/spree/transit/vectors/amenity_values/index.html.erb +0 -111
  264. data/app/views/spree/transit/vehicle_photos/_form.html.erb +0 -22
  265. data/app/views/spree/transit/vehicle_photos/edit.html.erb +0 -9
  266. data/app/views/spree/transit/vehicle_photos/index.html.erb +0 -61
  267. data/app/views/spree/transit/vehicle_photos/new.html.erb +0 -9
  268. data/app/views/spree/transit/vehicle_seats/_form.html.erb +0 -48
  269. data/app/views/spree/transit/vehicle_seats/_seats.html.erb +0 -63
  270. data/app/views/spree/transit/vehicle_types/_filter_form.html.erb +0 -29
  271. data/app/views/spree/transit/vehicle_types/_form.html.erb +0 -65
  272. data/app/views/spree/transit/vehicle_types/_seat_view.erb +0 -83
  273. data/app/views/spree/transit/vehicle_types/edit.html.erb +0 -93
  274. data/app/views/spree/transit/vehicle_types/index.html.erb +0 -94
  275. data/app/views/spree/transit/vehicle_types/new.html.erb +0 -14
  276. data/app/views/spree/transit/vehicles/_filter_form.html.erb +0 -23
  277. data/app/views/spree/transit/vehicles/_form.html.erb +0 -19
  278. data/app/views/spree/transit/vehicles/edit.html.erb +0 -19
  279. data/app/views/spree/transit/vehicles/index.html.erb +0 -57
  280. data/app/views/spree/transit/vehicles/new.html.erb +0 -19
  281. data/app/views/spree/transit/vendors/_form.html.erb +0 -34
  282. data/app/views/spree/transit/vendors/_tabs.html.erb +0 -16
  283. data/app/views/spree/transit/vendors/edit.html.erb +0 -10
@@ -1,72 +0,0 @@
1
- module Spree
2
- module Billing
3
- class AdjustmentsController < Spree::Billing::BaseController
4
- include Spree::Billing::OrderParentsConcern
5
- belongs_to 'spree/order', find_by: :number
6
-
7
- create.after :update_totals
8
- destroy.after :update_totals
9
- update.after :update_totals
10
-
11
- skip_before_action :load_resource, only: %i[toggle_state edit update destroy]
12
- before_action :set_payable, only: %i[create update]
13
- before_action :find_adjustment, only: %i[destroy edit update]
14
-
15
- after_action :delete_promotion_from_order, only: [:destroy], if: -> { @adjustment.destroyed? && @adjustment.promotion? }
16
-
17
- def set_payable
18
- @adjustment.payable = spree_current_user
19
- end
20
-
21
- def index
22
- @adjustments = @order.all_adjustments.eligible.order(created_at: :asc)
23
- end
24
-
25
- private
26
-
27
- # voids
28
- def update_payments
29
- @order.payments.map(&:void_transaction!)
30
- @order.reload.create_default_payment_if_eligble
31
- end
32
-
33
- def find_adjustment
34
- # Need to assign to @object here to keep ResourceController happy
35
- @adjustment = @object = parent.all_adjustments.find(params[:id])
36
- end
37
-
38
- def update_totals
39
- @order.reload.update_with_updater!
40
- update_payments
41
- end
42
-
43
- # Override method used to create a new instance to correctly
44
- # associate adjustment with order
45
- def build_resource
46
- parent.adjustments.build(order: parent)
47
- end
48
-
49
- def delete_promotion_from_order
50
- return if @adjustment.source.nil?
51
-
52
- @order.promotions.delete(@adjustment.source.promotion)
53
- end
54
-
55
- def location_after_save
56
- billing_order_payments_url(@order)
57
- end
58
-
59
- def model_class
60
- Spree::Adjustment
61
- end
62
-
63
- def object_name
64
- 'adjustment'
65
- end
66
-
67
- def collection_url(options = {})
68
- billing_order_adjustments_url(options)
69
- end
70
- end
71
- end
72
- end
@@ -1,82 +0,0 @@
1
- module Spree
2
- module Billing
3
- class BaseController < Spree::Admin::ResourceController
4
- include SpreeCmCommissioner::Billing::RoleAuthorization
5
-
6
- layout 'spree/layouts/billing'
7
- helper_method :current_vendor, :vendors
8
-
9
- before_action :required_vendor_user!
10
- before_action :set_locale
11
- before_action :current_vendor
12
-
13
- rescue_from SpreeCmCommissioner::UnauthorizedVendorError, with: :handle_unauthorized_vendor
14
-
15
- def set_locale
16
- I18n.locale = params[:locale] || I18n.default_locale
17
- end
18
-
19
- def default_url_options(options = {})
20
- { locale: I18n.locale }.merge(options)
21
- end
22
-
23
- def handle_unauthorized_vendor
24
- redirect_to billing_forbidden_url
25
- end
26
-
27
- def required_vendor_user!
28
- return unless vendors.empty?
29
-
30
- raise SpreeCmCommissioner::UnauthorizedVendorError
31
- end
32
-
33
- def vendors
34
- @vendors ||= spree_current_user.vendors.to_a
35
- end
36
-
37
- def current_vendor
38
- @current_vendor ||= vendors.find { |v| v[:slug] == session[:billing_current_vendor_slug] } || vendors.first
39
- session[:billing_current_vendor_slug] ||= @current_vendor&.slug
40
-
41
- @current_vendor
42
- end
43
-
44
- def page
45
- params[:page] || 1
46
- end
47
-
48
- def per_page
49
- params[:per_page] || 25
50
- end
51
-
52
- # ajax
53
- def switch_vendor
54
- head :unprocessable_entity if request.xhr?
55
-
56
- exists = vendors.find { |v| v[:slug] == params[:slug] }
57
- session[:billing_current_vendor_slug] = params[:slug] if exists
58
-
59
- head exists ? :ok : :not_found
60
- end
61
-
62
- # @overrided
63
- def edit_object_url(object, options = {})
64
- if parent_data.present?
65
- spree.send "edit_billing_#{resource.model_name}_#{resource.object_name}_url",
66
- parent, object, options
67
- else
68
- spree.send "edit_billing_#{resource.object_name}_url", object, options
69
- end
70
- end
71
-
72
- # @overrided
73
- def collection_url(options = {})
74
- if parent_data.present?
75
- spree.polymorphic_url([:billing, parent, model_class], options)
76
- else
77
- spree.polymorphic_url([:billing, model_class], options)
78
- end
79
- end
80
- end
81
- end
82
- end
@@ -1,135 +0,0 @@
1
- module Spree
2
- module Billing
3
- class BusinessesController < Spree::Billing::BaseController
4
- before_action :load_businesses_taxonomy
5
- helper 'spree/billing/sortable_tree'
6
-
7
- def load_businesses_taxonomy
8
- @businesses_taxonomy = Spree::Taxonomy.businesses
9
- end
10
-
11
- before_action :set_permalink_part, only: [:edit]
12
- respond_to :html, :js
13
-
14
- def index; end
15
-
16
- def new
17
- @taxon = Spree::Taxon.new
18
- @taxon.taxonomy = @businesses_taxonomy
19
- end
20
-
21
- def update # rubocop:disable Metrics/AbcSize
22
- successful = @taxon.transaction do
23
- parent_id = params[:taxon][:parent_id]
24
- set_position
25
- assign_parent(parent_id)
26
-
27
- @taxon.save!
28
-
29
- # regenerate permalink
30
- regenerate_permalink if parent_id
31
-
32
- set_permalink_params
33
-
34
- # check if we need to rename child taxons if parent name or permalink changes
35
- @update_children = true if params[:taxon][:name] != @taxon.name || params[:taxon][:permalink] != @taxon.permalink
36
-
37
- @taxon.create_icon(attachment: taxon_params[:icon]) if taxon_params[:icon]
38
- @taxon.update(taxon_params.except(:icon))
39
- end
40
- if successful
41
- flash[:success] = flash_message_for(@taxon, :successfully_updated)
42
-
43
- # rename child taxons
44
- rename_child_taxons if @update_children
45
-
46
- respond_with(@taxon) do |format|
47
- format.html { redirect_to spree.edit_billing_business_url(params[:id]) }
48
- format.json { render json: @taxon.to_json }
49
- end
50
- else
51
- respond_with(@taxon) do |format|
52
- format.html { render :edit, status: :unprocessable_entity }
53
- format.json { render json: @taxon.errors.full_messages.to_sentence, status: :unprocessable_entity }
54
- end
55
- end
56
- end
57
-
58
- def location_after_save
59
- spree.billing_businesses_url
60
- end
61
-
62
- def set_permalink_part
63
- @permalink_part = @object.permalink.split('/').last
64
- @parent_permalink = @object.permalink.split('/')[0...-1].join('/')
65
- @parent_permalink += '/' if @parent_permalink.present?
66
- end
67
-
68
- def set_permalink_params
69
- set_permalink_part
70
-
71
- return unless params.key? 'permalink_part'
72
-
73
- params[:taxon][:permalink] = @parent_permalink + params[:permalink_part]
74
- end
75
-
76
- def taxon_params
77
- params.require(:taxon).permit(:stop, :station, :branch, :location, permitted_taxon_attributes)
78
- end
79
-
80
- def set_position
81
- new_position = params[:taxon][:position]
82
- @taxon.child_index = new_position.to_i if new_position
83
- end
84
-
85
- def assign_parent(parent_id)
86
- @taxon.parent = current_store.taxons.find(parent_id) if parent_id
87
- end
88
-
89
- def parent_data
90
- if action_name == 'index'
91
- nil
92
- else
93
- super
94
- end
95
- end
96
-
97
- def rename_child_taxons
98
- @taxon.descendants.each do |taxon|
99
- reload_taxon_and_set_permalink(taxon)
100
- end
101
- end
102
-
103
- def regenerate_permalink
104
- reload_taxon_and_set_permalink(@taxon)
105
- @update_children = true
106
- end
107
-
108
- def reload_taxon_and_set_permalink(taxon)
109
- taxon.reload
110
- taxon.set_permalink
111
- taxon.save!
112
- end
113
-
114
- def collection_url
115
- spree.polymorphic_url([:billing, business.to_sym], options)
116
- end
117
-
118
- def edit_billing_taxon_path(taxon)
119
- spree.edit_billing_taxonomy_taxon_path(taxon.taxonomy, taxon.id)
120
- end
121
-
122
- def scope
123
- current_store.taxonomies
124
- end
125
-
126
- def model_class
127
- Spree::Taxon
128
- end
129
-
130
- def object_name
131
- 'taxon'
132
- end
133
- end
134
- end
135
- end
@@ -1,107 +0,0 @@
1
- module Spree
2
- module Billing
3
- class CustomersController < Spree::Billing::BaseController
4
- before_action :set_vendor, if: -> { member_action? }
5
- before_action :load_customer, if: -> { member_action? }
6
- before_action :load_bussinesses
7
-
8
- def scope
9
- if spree_current_user.has_spree_role?('admin')
10
- current_vendor.customers
11
- else
12
- current_vendor.customers.where(place_id: spree_current_user.place_ids)
13
- end
14
- end
15
-
16
- def collection
17
- return [] if current_vendor.blank?
18
- return @collection if defined?(@collection)
19
-
20
- @search = scope.ransack(params[:q])
21
- @collection = @search.result.includes(:subscriptions, :taxons).page(page).per(per_page)
22
- end
23
-
24
- def load_customer
25
- @customer = @object
26
- end
27
-
28
- def load_bussinesses
29
- @businesses = Spree::Taxonomy.businesses.taxons.where('depth > ? ', 1).order('parent_id ASC').uniq
30
- end
31
-
32
- # POST /billing/customers/:customer_id/re_create_order
33
- # billing_customer_re_create_order_path
34
- def re_create_order
35
- today = Time.zone.today
36
- customer = model_class.find_by(id: params[:customer_id])
37
- result = SpreeCmCommissioner::SubscriptionsOrderCreator.call(customer: customer, today: today)
38
-
39
- if result.failure?
40
- flash[:error] = I18n.t('spree.billing.customers.re_create_order.fails', error: result.error)
41
- else
42
- flash[:success] = I18n.t('spree.billing.customers.re_create_order.success', success: result.success)
43
- end
44
- redirect_back(fallback_location: billing_customer_orders_path(customer))
45
- end
46
-
47
- # POST /billing/customers/:customer_id/apply_promotion
48
- # billing_customer_apply_promotion_path
49
- def apply_promotion
50
- result = SpreeCmCommissioner::CustomerPromotionCreator.call(
51
- customer_id: params[:customer_id],
52
- reason: params[:reason],
53
- discount_amount: params[:discount_amount],
54
- store: current_store
55
- )
56
-
57
- if result.success?
58
- flash[:success] = I18n.t('spree.billing.customers.apply_promotion.success')
59
- else
60
- flash[:error] = I18n.t('spree.billing.customers.apply_promotion.fails', error: result.message)
61
- end
62
-
63
- redirect_back(fallback_location: billing_customer_orders_path(params[:customer_id]))
64
- end
65
-
66
- # delete /billing/customers/:customer_id/delete_promotion/:id
67
- # billing_customer_delete_promotion_url
68
- def delete_promotion
69
- customer = model_class.find(params[:customer_id])
70
- promotion = Spree::Promotion.find_by(code: customer.number)
71
- if promotion.destroy
72
- flash[:success] = I18n.t('spree.billing.customers.delete_promotion.success')
73
- else
74
- flash[:error] = I18n.t('spree.billing.customers.delete_promotion.fails', error: result.message)
75
- end
76
-
77
- redirect_back(fallback_location: billing_customer_orders_path(params[:customer_id]))
78
- end
79
-
80
- # @overrided
81
- def model_class
82
- SpreeCmCommissioner::Customer
83
- end
84
-
85
- def object_name
86
- 'spree_cm_commissioner_customer'
87
- end
88
-
89
- # @overrided
90
- def collection_url(options = {})
91
- billing_customers_url(options)
92
- end
93
-
94
- def location_after_save
95
- if permitted_resource_params.key?(:bill_address_attributes) && permitted_resource_params.key?(:ship_address_attributes)
96
- billing_customer_addresses_url(@customer)
97
- else
98
- edit_billing_customer_url(@customer)
99
- end
100
- end
101
-
102
- def set_vendor
103
- permitted_resource_params[:vendor] = current_vendor
104
- end
105
- end
106
- end
107
- end
@@ -1,14 +0,0 @@
1
- module Spree
2
- module Billing
3
- class ErrorsController < Spree::Admin::BaseController
4
- layout 'spree/layouts/error_template'
5
-
6
- before_action :authorize_admin
7
-
8
- def forbidden
9
- @error = 'Forbidden Access'
10
- @message = "You're either not a vendor user or the vendor isn't belonging to you."
11
- end
12
- end
13
- end
14
- end
@@ -1,36 +0,0 @@
1
- module Spree
2
- module Billing
3
- class InvoiceController < Spree::Billing::BaseController
4
- include Spree::Billing::OrderParentsConcern
5
- helper SpreeCmCommissioner::Billing::QrcodesHelper
6
-
7
- def show
8
- @invoice = @order.invoice
9
- end
10
-
11
- def create
12
- SpreeCmCommissioner::InvoiceCreator.call(order: @order)
13
- redirect_back fallback_location: admin_path
14
- end
15
-
16
- # print_invoice_date_billing_order_invoice_path => /spree/orders/:order_id/invoice/print_invoice_date
17
- # method to record the date when the invoice was printed
18
- def print_invoice_date
19
- @order.invoice.update(invoice_issued_date: Time.zone.now)
20
- end
21
-
22
- # @overrided
23
- def order
24
- @order = Spree::Order.find_by!(number: params[:order_id])
25
- end
26
-
27
- def model_class
28
- SpreeCmCommissioner::Invoice
29
- end
30
-
31
- def object_name
32
- 'spree_cm_commissioner_invoice'
33
- end
34
- end
35
- end
36
- end
@@ -1,32 +0,0 @@
1
- module Spree
2
- module Billing
3
- class OptionTypesController < Spree::Billing::BaseController
4
- before_action :setup_new_option_value, only: :edit
5
-
6
- def update_values_positions
7
- ApplicationRecord.transaction do
8
- params[:positions].each do |id, index|
9
- Spree::OptionValue.where(id: id).update_all(position: index) # rubocop:disable Rails/SkipsModelValidations
10
- end
11
- end
12
-
13
- respond_to do |format|
14
- format.html { redirect_to spree.admin_product_variants_url(params[:product_id]) }
15
- format.js { render plain: 'Ok' }
16
- end
17
- end
18
-
19
- protected
20
-
21
- def location_after_save
22
- edit_billing_option_type_url(@option_type)
23
- end
24
-
25
- private
26
-
27
- def setup_new_option_value
28
- @option_type.option_values.build if @option_type.option_values.empty?
29
- end
30
- end
31
- end
32
- end
@@ -1,90 +0,0 @@
1
- module Spree
2
- module Billing
3
- class OrdersController < Spree::Billing::BaseController
4
- include Spree::Admin::OrderConcern
5
- include Spree::Billing::OrderParentsConcern
6
-
7
- protected
8
-
9
- def scope
10
- if spree_current_user.has_spree_role?('admin')
11
- admin_scope
12
- else
13
- non_admin_scope
14
- end
15
- end
16
-
17
- # @overrided
18
-
19
- # override order method with @order
20
- attr_reader :order
21
-
22
- def collection
23
- return @collection if defined?(@collection)
24
-
25
- load_customer
26
- load_subscription
27
- load_bussinesses
28
- filter_by_month(*default_date_range)
29
-
30
- @search = scope.ransack(params[:q])
31
- @collection = @search.result.includes(:subscription, :customer, :invoice).order(created_at: :desc).page(page).per(per_page)
32
- end
33
-
34
- def load_resource_instance
35
- return scope.new if new_actions.include?(action)
36
-
37
- scope.find_by!(number: params[:id])
38
- end
39
-
40
- def load_bussinesses
41
- @businesses = Spree::Taxonomy.businesses.taxons.where('depth > ? ', 1).order('parent_id ASC').uniq
42
- end
43
-
44
- def model_class
45
- Spree::Order
46
- end
47
-
48
- def object_name
49
- 'order'
50
- end
51
-
52
- def default_date_range
53
- default_from_date = 6.months.ago.beginning_of_month
54
- default_to_date = Time.current.end_of_month
55
- [default_from_date, default_to_date]
56
- end
57
-
58
- def filter_by_month(default_from_date, default_to_date)
59
- params[:q] ||= {}
60
- if params[:month].present?
61
- date = Date.parse("#{params[:month]}-01")
62
- params[:q][:created_at_gteq] = date.beginning_of_month
63
- params[:q][:created_at_lteq] = date.end_of_month
64
- else
65
- params[:q][:created_at_gteq] = default_from_date
66
- params[:q][:created_at_lteq] = default_to_date
67
- end
68
- end
69
-
70
- private
71
-
72
- def admin_scope
73
- @subscription&.orders || @customer&.orders || current_vendor&.subscription_orders
74
- end
75
-
76
- def non_admin_scope
77
- place_ids = spree_current_user.place_ids
78
- filter_orders_by_place(@subscription&.orders, place_ids) ||
79
- filter_orders_by_place(@customer&.orders, place_ids) ||
80
- filter_orders_by_place(current_vendor&.subscription_orders, place_ids)
81
- end
82
-
83
- def filter_orders_by_place(orders, place_ids)
84
- return nil unless orders
85
-
86
- orders.joins(subscription: :customer).where(cm_customers: { place_id: place_ids })
87
- end
88
- end
89
- end
90
- end
@@ -1,14 +0,0 @@
1
- module Spree
2
- module Billing
3
- class PaymentQrcodesController < Spree::Billing::BaseController
4
- def destroy
5
- if @current_vendor.payment_qrcode.destroy
6
- flash[:success] = Spree.t('notice_messages.qrcode_removed')
7
- else
8
- flash[:error] = Spree.t('errors.messages.cannot_remove_qrcode')
9
- end
10
- redirect_to edit_billing_vendor_url(@current_vendor)
11
- end
12
- end
13
- end
14
- end