gemgento 2.8.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 (429) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +6 -0
  3. data/.rspec +2 -0
  4. data/Gemfile +8 -0
  5. data/README.md +9 -0
  6. data/Rakefile +21 -0
  7. data/app/adapters/gemgento/magento/address_adapter.rb +37 -0
  8. data/app/adapters/gemgento/magento/customer_adapter.rb +24 -0
  9. data/app/adapters/gemgento/magento/line_item_adapter.rb +41 -0
  10. data/app/adapters/gemgento/magento/order_adapter.rb +97 -0
  11. data/app/adapters/gemgento/magento/order_status_adapter.rb +24 -0
  12. data/app/adapters/gemgento/magento/payment_adapter.rb +38 -0
  13. data/app/adapters/gemgento/magento/product_adapater.rb +24 -0
  14. data/app/adapters/gemgento/magento/quote_adapter.rb +17 -0
  15. data/app/adapters/gemgento/magento/shipment_adapter.rb +74 -0
  16. data/app/adapters/gemgento/magento/shipment_item_adapter.rb +39 -0
  17. data/app/adapters/gemgento/magento/shipment_track_adapter.rb +31 -0
  18. data/app/adapters/gemgento/magento_adapter.rb +17 -0
  19. data/app/assets/fonts/FuturaStd-Bold.otf +0 -0
  20. data/app/assets/fonts/FuturaStd-Book.otf +0 -0
  21. data/app/assets/fonts/FuturaStd-Light.otf +0 -0
  22. data/app/assets/fonts/FuturaStd-Medium.otf +0 -0
  23. data/app/assets/fonts/Verlag-Black.otf +0 -0
  24. data/app/assets/fonts/Verlag-BlackItalic.otf +0 -0
  25. data/app/assets/fonts/Verlag-Bold.otf +0 -0
  26. data/app/assets/fonts/Verlag-BoldItalic.otf +0 -0
  27. data/app/assets/fonts/Verlag-Book.otf +0 -0
  28. data/app/assets/fonts/Verlag-BookItalic-2.otf +0 -0
  29. data/app/assets/fonts/Verlag-BookItalic-3.otf +0 -0
  30. data/app/assets/fonts/Verlag-BookItalic.otf +0 -0
  31. data/app/assets/fonts/Verlag-Light.otf +0 -0
  32. data/app/assets/fonts/Verlag-LightItalic.otf +0 -0
  33. data/app/assets/fonts/Verlag-XLight.otf +0 -0
  34. data/app/assets/fonts/Verlag-XLightItalic.otf +0 -0
  35. data/app/assets/images/about_store.jpg +0 -0
  36. data/app/assets/images/gemgento-icon-bolt.png +0 -0
  37. data/app/assets/javascripts/gemgento/active_admin.js.coffee +42 -0
  38. data/app/assets/javascripts/gemgento/checkout/address.coffee +23 -0
  39. data/app/assets/javascripts/gemgento/gemgento.js +1 -0
  40. data/app/assets/javascripts/gemgento/global.js.coffee +31 -0
  41. data/app/assets/stylesheets/gemgento/active_admin.css.scss +549 -0
  42. data/app/assets/stylesheets/gemgento/default-views/_address.scss +11 -0
  43. data/app/assets/stylesheets/gemgento/default-views/_category.scss +54 -0
  44. data/app/assets/stylesheets/gemgento/default-views/_checkout.scss +28 -0
  45. data/app/assets/stylesheets/gemgento/default-views/_footer.scss +13 -0
  46. data/app/assets/stylesheets/gemgento/default-views/_form.scss +127 -0
  47. data/app/assets/stylesheets/gemgento/default-views/_header.scss +32 -0
  48. data/app/assets/stylesheets/gemgento/default-views/_layout.css.scss +157 -0
  49. data/app/assets/stylesheets/gemgento/default-views/_pages.css.scss +83 -0
  50. data/app/assets/stylesheets/gemgento/default-views/_product.scss +57 -0
  51. data/app/assets/stylesheets/gemgento/default-views/_shopping_bag.scss +87 -0
  52. data/app/assets/stylesheets/gemgento/default-views/_subheader.css.scss +30 -0
  53. data/app/assets/stylesheets/gemgento/default-views/application.css.scss +1 -0
  54. data/app/controllers/concerns/gemgento/api/v1/base.rb +15 -0
  55. data/app/controllers/concerns/gemgento/api/v1/product_filters.rb +33 -0
  56. data/app/controllers/gemgento/addresses_controller.rb +14 -0
  57. data/app/controllers/gemgento/api/v1/categories_controller.rb +13 -0
  58. data/app/controllers/gemgento/api/v1/products_controller.rb +23 -0
  59. data/app/controllers/gemgento/api/v1/search_controller.rb +14 -0
  60. data/app/controllers/gemgento/application_controller.rb +5 -0
  61. data/app/controllers/gemgento/cart_controller.rb +99 -0
  62. data/app/controllers/gemgento/categories_controller.rb +37 -0
  63. data/app/controllers/gemgento/checkout/address_controller.rb +48 -0
  64. data/app/controllers/gemgento/checkout/confirm_controller.rb +72 -0
  65. data/app/controllers/gemgento/checkout/coupons_controller.rb +42 -0
  66. data/app/controllers/gemgento/checkout/gift_card_controller.rb +39 -0
  67. data/app/controllers/gemgento/checkout/gift_controller.rb +32 -0
  68. data/app/controllers/gemgento/checkout/login_controller.rb +123 -0
  69. data/app/controllers/gemgento/checkout/payment_controller.rb +70 -0
  70. data/app/controllers/gemgento/checkout/paypal_controller.rb +23 -0
  71. data/app/controllers/gemgento/checkout/shipping_controller.rb +46 -0
  72. data/app/controllers/gemgento/checkout/shipping_payment_controller.rb +58 -0
  73. data/app/controllers/gemgento/checkout/thank_you_controller.rb +45 -0
  74. data/app/controllers/gemgento/checkout_controller.rb +120 -0
  75. data/app/controllers/gemgento/countries_controller.rb +17 -0
  76. data/app/controllers/gemgento/errors_controller.rb +7 -0
  77. data/app/controllers/gemgento/footer_items_controller.rb +16 -0
  78. data/app/controllers/gemgento/home_controller.rb +7 -0
  79. data/app/controllers/gemgento/magento/addresses_controller.rb +61 -0
  80. data/app/controllers/gemgento/magento/base_controller.rb +18 -0
  81. data/app/controllers/gemgento/magento/categories_controller.rb +103 -0
  82. data/app/controllers/gemgento/magento/email/sales/credit_memos_controller.rb +21 -0
  83. data/app/controllers/gemgento/magento/email/sales/invoices_controller.rb +21 -0
  84. data/app/controllers/gemgento/magento/email/sales/orders_controller.rb +20 -0
  85. data/app/controllers/gemgento/magento/email/sales/shipments_controller.rb +25 -0
  86. data/app/controllers/gemgento/magento/emails_controller.rb +11 -0
  87. data/app/controllers/gemgento/magento/inventory_controller.rb +30 -0
  88. data/app/controllers/gemgento/magento/orders_controller.rb +12 -0
  89. data/app/controllers/gemgento/magento/price_rules_controller.rb +22 -0
  90. data/app/controllers/gemgento/magento/product_attribute_sets_controller.rb +37 -0
  91. data/app/controllers/gemgento/magento/product_attributes_controller.rb +70 -0
  92. data/app/controllers/gemgento/magento/products_controller.rb +240 -0
  93. data/app/controllers/gemgento/magento/recurring_profiles_controller.rb +42 -0
  94. data/app/controllers/gemgento/magento/stores_controller.rb +21 -0
  95. data/app/controllers/gemgento/magento/user_groups_controller.rb +23 -0
  96. data/app/controllers/gemgento/magento/users_controller.rb +63 -0
  97. data/app/controllers/gemgento/order_export_controller.rb +21 -0
  98. data/app/controllers/gemgento/orders_controller.rb +12 -0
  99. data/app/controllers/gemgento/products_controller.rb +12 -0
  100. data/app/controllers/gemgento/regions_controller.rb +18 -0
  101. data/app/controllers/gemgento/search_controller.rb +16 -0
  102. data/app/controllers/gemgento/shipments_controller.rb +5 -0
  103. data/app/controllers/gemgento/stock_notifications_controller.rb +22 -0
  104. data/app/controllers/gemgento/subscribers_controller.rb +35 -0
  105. data/app/controllers/gemgento/sync_controller.rb +50 -0
  106. data/app/controllers/gemgento/user/addresses_controller.rb +79 -0
  107. data/app/controllers/gemgento/user/base_controller.rb +14 -0
  108. data/app/controllers/gemgento/user/home_controller.rb +9 -0
  109. data/app/controllers/gemgento/user/orders_controller.rb +17 -0
  110. data/app/controllers/gemgento/user/passwords_controller.rb +18 -0
  111. data/app/controllers/gemgento/user/recurring_profiles_controller.rb +31 -0
  112. data/app/controllers/gemgento/user/registration_session_controller.rb +103 -0
  113. data/app/controllers/gemgento/user/registrations_controller.rb +28 -0
  114. data/app/controllers/gemgento/user/saved_credit_cards_controller.rb +56 -0
  115. data/app/controllers/gemgento/user/sessions_controller.rb +50 -0
  116. data/app/controllers/gemgento/user/wishlist_items_controller.rb +55 -0
  117. data/app/controllers/gemgento/users_controller.rb +36 -0
  118. data/app/helpers/gemgento/application_helper.rb +125 -0
  119. data/app/helpers/gemgento/categories_helper.rb +39 -0
  120. data/app/helpers/gemgento/checkout/payment_helper.rb +5 -0
  121. data/app/helpers/gemgento/products_helper.rb +23 -0
  122. data/app/jobs/gemgento/import_job.rb +12 -0
  123. data/app/mailers/gemgento/sales_mailer.rb +80 -0
  124. data/app/models/admin_user.rb +7 -0
  125. data/app/models/concerns/gemgento/product_touches.rb +26 -0
  126. data/app/models/gemgento.rb +5 -0
  127. data/app/models/gemgento/adapter/sellect/customer.rb +34 -0
  128. data/app/models/gemgento/adapter/sellect/order.rb +378 -0
  129. data/app/models/gemgento/adapter/sellect/product.rb +250 -0
  130. data/app/models/gemgento/adapter/sellect_adapter.rb +16 -0
  131. data/app/models/gemgento/adapter/shopify/address.rb +40 -0
  132. data/app/models/gemgento/adapter/shopify/category.rb +51 -0
  133. data/app/models/gemgento/adapter/shopify/customer.rb +66 -0
  134. data/app/models/gemgento/adapter/shopify/order.rb +334 -0
  135. data/app/models/gemgento/adapter/shopify/product.rb +377 -0
  136. data/app/models/gemgento/adapter/shopify/product_category_position.rb +58 -0
  137. data/app/models/gemgento/adapter/shopify_adapter.rb +63 -0
  138. data/app/models/gemgento/address.rb +206 -0
  139. data/app/models/gemgento/api_job.rb +68 -0
  140. data/app/models/gemgento/asset.rb +185 -0
  141. data/app/models/gemgento/asset_file.rb +57 -0
  142. data/app/models/gemgento/asset_type.rb +8 -0
  143. data/app/models/gemgento/bundle.rb +5 -0
  144. data/app/models/gemgento/bundle/item.rb +17 -0
  145. data/app/models/gemgento/bundle/option.rb +20 -0
  146. data/app/models/gemgento/category.rb +235 -0
  147. data/app/models/gemgento/country.rb +21 -0
  148. data/app/models/gemgento/gift_message.rb +8 -0
  149. data/app/models/gemgento/image_import.rb +141 -0
  150. data/app/models/gemgento/import.rb +125 -0
  151. data/app/models/gemgento/inventory.rb +60 -0
  152. data/app/models/gemgento/inventory_import.rb +51 -0
  153. data/app/models/gemgento/line_item.rb +142 -0
  154. data/app/models/gemgento/line_item_option.rb +10 -0
  155. data/app/models/gemgento/magento_db.rb +35 -0
  156. data/app/models/gemgento/magento_response.rb +10 -0
  157. data/app/models/gemgento/order.rb +56 -0
  158. data/app/models/gemgento/order_status.rb +7 -0
  159. data/app/models/gemgento/payment.rb +50 -0
  160. data/app/models/gemgento/price_rule.rb +258 -0
  161. data/app/models/gemgento/price_tier.rb +36 -0
  162. data/app/models/gemgento/product.rb +607 -0
  163. data/app/models/gemgento/product_attribute.rb +48 -0
  164. data/app/models/gemgento/product_attribute_option.rb +39 -0
  165. data/app/models/gemgento/product_attribute_set.rb +22 -0
  166. data/app/models/gemgento/product_attribute_value.rb +26 -0
  167. data/app/models/gemgento/product_category.rb +34 -0
  168. data/app/models/gemgento/product_import.rb +359 -0
  169. data/app/models/gemgento/quote.rb +586 -0
  170. data/app/models/gemgento/recurring_profile.rb +28 -0
  171. data/app/models/gemgento/region.rb +14 -0
  172. data/app/models/gemgento/relation.rb +10 -0
  173. data/app/models/gemgento/relation_type.rb +7 -0
  174. data/app/models/gemgento/saved_credit_card.rb +45 -0
  175. data/app/models/gemgento/search.rb +14 -0
  176. data/app/models/gemgento/session.rb +49 -0
  177. data/app/models/gemgento/shipment.rb +38 -0
  178. data/app/models/gemgento/shipment_comment.rb +19 -0
  179. data/app/models/gemgento/shipment_item.rb +11 -0
  180. data/app/models/gemgento/shipment_track.rb +21 -0
  181. data/app/models/gemgento/stock_notification.rb +17 -0
  182. data/app/models/gemgento/store.rb +31 -0
  183. data/app/models/gemgento/store_tag.rb +8 -0
  184. data/app/models/gemgento/subscriber.rb +30 -0
  185. data/app/models/gemgento/swatch.rb +9 -0
  186. data/app/models/gemgento/sync.rb +134 -0
  187. data/app/models/gemgento/tag.rb +64 -0
  188. data/app/models/gemgento/user.rb +161 -0
  189. data/app/models/gemgento/user_group.rb +13 -0
  190. data/app/models/gemgento/wishlist_item.rb +11 -0
  191. data/app/services/gemgento/magento_api.rb +173 -0
  192. data/app/services/gemgento/price.rb +67 -0
  193. data/app/validators/gemgento/credit_card_validator.rb +50 -0
  194. data/app/validators/gemgento/image_import_validator.rb +100 -0
  195. data/app/validators/gemgento/inventory_import_validator.rb +73 -0
  196. data/app/validators/gemgento/inventory_validator.rb +14 -0
  197. data/app/validators/gemgento/product_import_validator.rb +163 -0
  198. data/app/views/admin/product_positions/_index.html.haml +14 -0
  199. data/app/views/devise/registrations/edit.haml +37 -0
  200. data/app/views/gemgento/addresses/_address.json.jbuilder +6 -0
  201. data/app/views/gemgento/addresses/region_options.html.haml +1 -0
  202. data/app/views/gemgento/api/v1/categories/_category.json.jbuilder +52 -0
  203. data/app/views/gemgento/api/v1/categories/index.json.jbuilder +8 -0
  204. data/app/views/gemgento/api/v1/categories/show.json.jbuilder +7 -0
  205. data/app/views/gemgento/api/v1/products/_attributes.json.jbuilder +9 -0
  206. data/app/views/gemgento/api/v1/products/_product.json.jbuilder +18 -0
  207. data/app/views/gemgento/api/v1/products/_relationships.json.jbuilder +48 -0
  208. data/app/views/gemgento/api/v1/products/index.json.jbuilder +8 -0
  209. data/app/views/gemgento/api/v1/products/show.json.jbuilder +7 -0
  210. data/app/views/gemgento/api/v1/search/index.json.jbuilder +8 -0
  211. data/app/views/gemgento/api/v1/search/show.json.jbuilder +8 -0
  212. data/app/views/gemgento/assets/_asset.json.jbuilder +13 -0
  213. data/app/views/gemgento/cart/show.html.haml +67 -0
  214. data/app/views/gemgento/categories/_category.json.jbuilder +9 -0
  215. data/app/views/gemgento/categories/_product_tile.html.haml +16 -0
  216. data/app/views/gemgento/categories/index.html.haml +10 -0
  217. data/app/views/gemgento/categories/index.json.jbuilder +1 -0
  218. data/app/views/gemgento/categories/show.html.haml +16 -0
  219. data/app/views/gemgento/categories/show.json.jbuilder +1 -0
  220. data/app/views/gemgento/checkout/_checkout_header.html.haml +17 -0
  221. data/app/views/gemgento/checkout/address/error.js.erb +1 -0
  222. data/app/views/gemgento/checkout/address/show.html.haml +88 -0
  223. data/app/views/gemgento/checkout/address/success.js.erb +1 -0
  224. data/app/views/gemgento/checkout/confirm/error.js.erb +0 -0
  225. data/app/views/gemgento/checkout/confirm/show.html.haml +60 -0
  226. data/app/views/gemgento/checkout/confirm/success.js.erb +1 -0
  227. data/app/views/gemgento/checkout/login/login_fail.js.erb +1 -0
  228. data/app/views/gemgento/checkout/login/login_guest_fail.js.erb +1 -0
  229. data/app/views/gemgento/checkout/login/login_guest_success.js.erb +1 -0
  230. data/app/views/gemgento/checkout/login/login_success.js.erb +1 -0
  231. data/app/views/gemgento/checkout/login/registration_fail.js.erb +1 -0
  232. data/app/views/gemgento/checkout/login/registration_success.js.erb +1 -0
  233. data/app/views/gemgento/checkout/login/show.html.haml +50 -0
  234. data/app/views/gemgento/checkout/payment/error.js.erb +1 -0
  235. data/app/views/gemgento/checkout/payment/show.html.haml +56 -0
  236. data/app/views/gemgento/checkout/payment/success.js.erb +1 -0
  237. data/app/views/gemgento/checkout/shipping/error.js.erb +0 -0
  238. data/app/views/gemgento/checkout/shipping/show.html.haml +26 -0
  239. data/app/views/gemgento/checkout/shipping/success.js.erb +1 -0
  240. data/app/views/gemgento/checkout/shipping_payment/show.haml +52 -0
  241. data/app/views/gemgento/checkout/thank_you/show.html.haml +6 -0
  242. data/app/views/gemgento/countries/_country.json.jbuilder +4 -0
  243. data/app/views/gemgento/countries/index.json.jbuilder +3 -0
  244. data/app/views/gemgento/countries/show.json.jbuilder +1 -0
  245. data/app/views/gemgento/home/index.html.haml +1 -0
  246. data/app/views/gemgento/order/add_item.js.erb +0 -0
  247. data/app/views/gemgento/order/no_inventory.js.erb +1 -0
  248. data/app/views/gemgento/order/remove_item.js.erb +0 -0
  249. data/app/views/gemgento/order/update_item.js.erb +0 -0
  250. data/app/views/gemgento/order_export/index.html.haml +2 -0
  251. data/app/views/gemgento/order_items/_order_item.json.jbuilder +7 -0
  252. data/app/views/gemgento/orders/_order.json.jbuilder +29 -0
  253. data/app/views/gemgento/products/_product.json.jbuilder +40 -0
  254. data/app/views/gemgento/products/index.html.haml +19 -0
  255. data/app/views/gemgento/products/show.html.haml +67 -0
  256. data/app/views/gemgento/products/show.json.jbuilder +1 -0
  257. data/app/views/gemgento/sales_mailer/credit_memo_email.html.haml +1 -0
  258. data/app/views/gemgento/sales_mailer/invoice_email.html.haml +1 -0
  259. data/app/views/gemgento/sales_mailer/order_email.html.haml +1 -0
  260. data/app/views/gemgento/sales_mailer/shipment_email.html.haml +1 -0
  261. data/app/views/gemgento/search/index.html.haml +8 -0
  262. data/app/views/gemgento/shared/_asset.json.jbuilder +35 -0
  263. data/app/views/gemgento/shared/_asset_file.json.jbuilder +19 -0
  264. data/app/views/gemgento/shared/_asset_type.json.jbuilder +13 -0
  265. data/app/views/gemgento/shared/_error_messages.haml +7 -0
  266. data/app/views/gemgento/shared/_flash_messages.haml +4 -0
  267. data/app/views/gemgento/shared/_footer.haml +7 -0
  268. data/app/views/gemgento/shared/_header.haml +23 -0
  269. data/app/views/gemgento/shared/_mini_bag.haml +36 -0
  270. data/app/views/gemgento/shared/_product_image.haml +8 -0
  271. data/app/views/gemgento/shipments/_shipment.json.jbuilder +12 -0
  272. data/app/views/gemgento/subscribers/create.js.erb +2 -0
  273. data/app/views/gemgento/subscribers/errors.js.erb +1 -0
  274. data/app/views/gemgento/user/_user.json.jbuilder +2 -0
  275. data/app/views/gemgento/user/addresses/_form.haml +39 -0
  276. data/app/views/gemgento/user/addresses/errors.js.erb +1 -0
  277. data/app/views/gemgento/user/addresses/index.haml +33 -0
  278. data/app/views/gemgento/user/addresses/new.haml +11 -0
  279. data/app/views/gemgento/user/addresses/success.js.erb +1 -0
  280. data/app/views/gemgento/user/confirmations/new.haml +9 -0
  281. data/app/views/gemgento/user/home/index.haml +8 -0
  282. data/app/views/gemgento/user/mailer/confirmation_instructions.html.erb +5 -0
  283. data/app/views/gemgento/user/mailer/reset_password_instructions.html.erb +8 -0
  284. data/app/views/gemgento/user/mailer/unlock_instructions.html.erb +7 -0
  285. data/app/views/gemgento/user/orders/index.html.haml +29 -0
  286. data/app/views/gemgento/user/orders/show.html.haml +87 -0
  287. data/app/views/gemgento/user/passwords/edit.html.erb +18 -0
  288. data/app/views/gemgento/user/passwords/new.html.haml +21 -0
  289. data/app/views/gemgento/user/registration_session/new.haml +67 -0
  290. data/app/views/gemgento/user/registrations/new.html.haml +28 -0
  291. data/app/views/gemgento/user/saved_credit_cards/_form.haml +69 -0
  292. data/app/views/gemgento/user/saved_credit_cards/index.haml +25 -0
  293. data/app/views/gemgento/user/saved_credit_cards/new.haml +13 -0
  294. data/app/views/gemgento/user/sessions/new.html.haml +29 -0
  295. data/app/views/gemgento/user/shared/_links.erb +25 -0
  296. data/app/views/gemgento/user/shared/_user_header.haml +8 -0
  297. data/app/views/gemgento/user/wishlist_items/index.html.haml +20 -0
  298. data/app/views/kaminari/_first_page.html.haml +9 -0
  299. data/app/views/kaminari/_gap.html.haml +8 -0
  300. data/app/views/kaminari/_last_page.html.haml +9 -0
  301. data/app/views/kaminari/_next_page.html.haml +9 -0
  302. data/app/views/kaminari/_page.html.haml +10 -0
  303. data/app/views/kaminari/_paginator.html.haml +18 -0
  304. data/app/views/kaminari/_prev_page.html.haml +9 -0
  305. data/app/views/layouts/_footer.html.haml +5 -0
  306. data/app/views/layouts/_header.html.haml +39 -0
  307. data/app/views/layouts/gemgento.html.haml +22 -0
  308. data/app/workers/gemgento/apply_price_rule.rb +24 -0
  309. data/app/workers/gemgento/cart/add_item_worker.rb +23 -0
  310. data/app/workers/gemgento/cart/update_item_worker.rb +18 -0
  311. data/bin/rails +12 -0
  312. data/config/gemgento_config.yml +12 -0
  313. data/config/initializers/active_admin.rb +14 -0
  314. data/config/initializers/active_touch.rb +3 -0
  315. data/config/initializers/assets.rb +1 -0
  316. data/config/initializers/boolean_typecasting.rb +37 -0
  317. data/config/initializers/devise.rb +49 -0
  318. data/config/initializers/gemgento_config.rb +67 -0
  319. data/config/initializers/mime_types.rb +4 -0
  320. data/config/initializers/state_machine.rb +7 -0
  321. data/config/locales/en.yml +24 -0
  322. data/config/routes.rb +138 -0
  323. data/db/migrate/20151201231300_add_validation_indexes_to_gemgento_products.rb +22 -0
  324. data/db/migrate/20160122174450_gemgento2.rb +969 -0
  325. data/db/migrate/20160217142910_create_gemgento_imports.rb +15 -0
  326. data/db/migrate/20160219235858_add_timestamps_to_gemgento_asset_files.rb +6 -0
  327. data/gemgento.gemspec +44 -0
  328. data/lib/devise/models/validatable.rb +76 -0
  329. data/lib/gemgento.rb +24 -0
  330. data/lib/gemgento/admin/admin_user.rb +29 -0
  331. data/lib/gemgento/admin/api_jobs.rb +30 -0
  332. data/lib/gemgento/admin/image_import.rb +87 -0
  333. data/lib/gemgento/admin/inventory_import.rb +81 -0
  334. data/lib/gemgento/admin/product_import.rb +138 -0
  335. data/lib/gemgento/admin/product_positions.rb +49 -0
  336. data/lib/gemgento/admin/stores.rb +33 -0
  337. data/lib/gemgento/admin/subscribers.rb +31 -0
  338. data/lib/gemgento/admin/syncs.rb +26 -0
  339. data/lib/gemgento/api/soap/authnetcim/payment.rb +127 -0
  340. data/lib/gemgento/api/soap/catalog/category.rb +237 -0
  341. data/lib/gemgento/api/soap/catalog/product.rb +481 -0
  342. data/lib/gemgento/api/soap/catalog/product_attribute.rb +147 -0
  343. data/lib/gemgento/api/soap/catalog/product_attribute_media.rb +202 -0
  344. data/lib/gemgento/api/soap/catalog/product_attribute_set.rb +80 -0
  345. data/lib/gemgento/api/soap/catalog/product_tag.rb +146 -0
  346. data/lib/gemgento/api/soap/catalog/product_tier_price.rb +21 -0
  347. data/lib/gemgento/api/soap/catalog/search.rb +27 -0
  348. data/lib/gemgento/api/soap/catalog_inventory/stock_item.rb +87 -0
  349. data/lib/gemgento/api/soap/catalog_rule/rule.rb +54 -0
  350. data/lib/gemgento/api/soap/checkout/cart.rb +85 -0
  351. data/lib/gemgento/api/soap/checkout/coupon.rb +37 -0
  352. data/lib/gemgento/api/soap/checkout/customer.rb +87 -0
  353. data/lib/gemgento/api/soap/checkout/payment.rb +59 -0
  354. data/lib/gemgento/api/soap/checkout/product.rb +138 -0
  355. data/lib/gemgento/api/soap/checkout/shipping.rb +37 -0
  356. data/lib/gemgento/api/soap/customer/address.rb +143 -0
  357. data/lib/gemgento/api/soap/customer/customer.rb +200 -0
  358. data/lib/gemgento/api/soap/directory/country.rb +49 -0
  359. data/lib/gemgento/api/soap/directory/region.rb +50 -0
  360. data/lib/gemgento/api/soap/enterprise_gift_message/gift_message.rb +26 -0
  361. data/lib/gemgento/api/soap/gift_card.rb +35 -0
  362. data/lib/gemgento/api/soap/globalcollect/saved_cc.rb +58 -0
  363. data/lib/gemgento/api/soap/miscellaneous/store.rb +47 -0
  364. data/lib/gemgento/api/soap/sales/order.rb +249 -0
  365. data/lib/gemgento/api/soap/sales/order_shipment.rb +122 -0
  366. data/lib/gemgento/api/soap/sales/recurring_profile.rb +88 -0
  367. data/lib/gemgento/api/soap/stock_notification.rb +27 -0
  368. data/lib/gemgento/engine.rb +61 -0
  369. data/lib/gemgento/version.rb +3 -0
  370. data/lib/generators/gemgento/assets_generator.rb +11 -0
  371. data/lib/generators/gemgento/install_generator.rb +34 -0
  372. data/lib/generators/gemgento/templates/active_admin.css.scss +1 -0
  373. data/lib/generators/gemgento/templates/active_admin.js.coffee +1 -0
  374. data/lib/generators/gemgento/templates/active_admin.rb +3 -0
  375. data/lib/generators/gemgento/views_generator.rb +10 -0
  376. data/spec/dummy/README.rdoc +28 -0
  377. data/spec/dummy/Rakefile +6 -0
  378. data/spec/dummy/app/assets/images/.keep +0 -0
  379. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  380. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  381. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  382. data/spec/dummy/app/controllers/concerns/.keep +0 -0
  383. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  384. data/spec/dummy/app/mailers/.keep +0 -0
  385. data/spec/dummy/app/models/.keep +0 -0
  386. data/spec/dummy/app/models/concerns/.keep +0 -0
  387. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  388. data/spec/dummy/bin/bundle +3 -0
  389. data/spec/dummy/bin/rails +4 -0
  390. data/spec/dummy/bin/rake +4 -0
  391. data/spec/dummy/bin/setup +29 -0
  392. data/spec/dummy/config.ru +4 -0
  393. data/spec/dummy/config/application.rb +32 -0
  394. data/spec/dummy/config/boot.rb +5 -0
  395. data/spec/dummy/config/database.yml +20 -0
  396. data/spec/dummy/config/environment.rb +5 -0
  397. data/spec/dummy/config/environments/development.rb +41 -0
  398. data/spec/dummy/config/environments/production.rb +79 -0
  399. data/spec/dummy/config/environments/test.rb +42 -0
  400. data/spec/dummy/config/gemgento_config.yml +22 -0
  401. data/spec/dummy/config/initializers/assets.rb +11 -0
  402. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  403. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  404. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  405. data/spec/dummy/config/initializers/inflections.rb +16 -0
  406. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  407. data/spec/dummy/config/initializers/session_store.rb +3 -0
  408. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  409. data/spec/dummy/config/locales/en.yml +23 -0
  410. data/spec/dummy/config/routes.rb +4 -0
  411. data/spec/dummy/config/secrets.yml +22 -0
  412. data/spec/dummy/lib/assets/.keep +0 -0
  413. data/spec/dummy/public/404.html +67 -0
  414. data/spec/dummy/public/422.html +67 -0
  415. data/spec/dummy/public/500.html +66 -0
  416. data/spec/dummy/public/favicon.ico +0 -0
  417. data/spec/factories/gemgento/price_tiers.rb +8 -0
  418. data/spec/factories/gemgento/product_attribute_sets.rb +22 -0
  419. data/spec/factories/gemgento/product_attributes.rb +5 -0
  420. data/spec/factories/gemgento/products.rb +14 -0
  421. data/spec/factories/gemgento/stores.rb +12 -0
  422. data/spec/factories/gemgento/user_groups.rb +6 -0
  423. data/spec/factories/gemgento/users.rb +13 -0
  424. data/spec/factories/gemgento_imports.rb +12 -0
  425. data/spec/model/gemgento/price_tier_spec.rb +45 -0
  426. data/spec/rails_helper.rb +55 -0
  427. data/spec/services/gemgento/price_spec.rb +152 -0
  428. data/spec/spec_helper.rb +87 -0
  429. metadata +919 -0
@@ -0,0 +1,48 @@
1
+ module Gemgento
2
+ class Checkout::AddressController < CheckoutController
3
+
4
+ def show
5
+ build_billing_address if @quote.billing_address.nil?
6
+ build_shipping_address if @quote.shipping_address.nil?
7
+
8
+ respond_to do |format|
9
+ format.html
10
+ format.json { render json: { quote: @quote, totals: @quote.totals } }
11
+ end
12
+ end
13
+
14
+ def update
15
+ @quote.push_addresses = true
16
+
17
+ respond_to do |format|
18
+ if @quote.update(quote_params)
19
+ format.html { redirect_to (Config[:combined_shipping_payment] ? checkout_shipping_payment_path : checkout_shipping_path) }
20
+ format.json { render json: { result: true, quote: @quote, totals: @quote.totals } }
21
+ else
22
+ format.html { render 'show' }
23
+ format.json { render json: { result: false, errors: @quote.errors }, status: 422 }
24
+ end
25
+ end
26
+ end
27
+
28
+ private
29
+
30
+ def quote_params
31
+ params.require(:quote).permit(
32
+ :same_as_billing,
33
+ :same_as_shipping,
34
+ billing_address_attributes:
35
+ [
36
+ :id, :first_name, :last_name, :address1, :address2, :country_id, :city, :region_id, :postcode,
37
+ :telephone, :is_billing, :is_shipping, :copy_to_user
38
+ ],
39
+ shipping_address_attributes:
40
+ [
41
+ :id, :first_name, :last_name, :address1, :address2, :country_id, :city, :region_id, :postcode,
42
+ :telephone, :is_billing, :is_shipping, :copy_to_user
43
+ ]
44
+ )
45
+ end
46
+
47
+ end
48
+ end
@@ -0,0 +1,72 @@
1
+ module Gemgento
2
+ class Checkout::ConfirmController < CheckoutController
3
+ respond_to :json, :html
4
+
5
+ before_action :confirm_before_redirect, only: :update
6
+
7
+ def show
8
+ @quote.payment.assign_attributes(session[:payment_data]) if @quote.payment && session[:payment_data]
9
+ @shipping_method = get_magento_shipping_method
10
+
11
+ respond_to do |format|
12
+ format.html
13
+ format.json { render json: { order: @quote, shipping_method: @shipping_method, totals: @quote.totals } }
14
+ end
15
+ end
16
+
17
+ def update
18
+ @quote.payment.update(session[:payment_data]) if @quote.payment && session[:payment_data]
19
+
20
+ respond_to do |format|
21
+ if @quote.convert(request.remote_ip)
22
+ session[:order_increment_id] = @quote.order_increment_id
23
+ session.delete :payment_data
24
+
25
+ if !@quote.payment.is_redirecting_payment_method?('confirm_after')
26
+ format.html { redirect_to checkout_thank_you_path }
27
+ format.json { render json: { result: true, order: @quote.order } }
28
+
29
+ else
30
+ format.html { redirect_to confirm_after_redirect_url }
31
+ format.json { render json: { result: true, payment_redirect_url: confirm_after_redirect_url } }
32
+ end
33
+ else
34
+ @shipping_method = get_magento_shipping_method
35
+ format.html { render 'show' }
36
+ format.json { render json: { result: false, errors: @quote.errors }, status: 422 }
37
+ end
38
+ end
39
+
40
+ end
41
+
42
+ private
43
+
44
+ def confirm_before_redirect
45
+ if @quote.payment && @quote.payment.is_redirecting_payment_method?('confirm_before')
46
+ respond_to do |format|
47
+ format.html { redirect_to confirm_before_redirect_url }
48
+ format.json { render json: { result: true, payment_redirect_url: confirm_before_redirect_url } }
49
+ end
50
+ end
51
+ end
52
+
53
+ def confirm_before_redirect_url
54
+ case @quote.payment.method
55
+ when 'paypal_express'
56
+ "#{Gemgento::Config[:magento][:url]}/paypal/express/placeOrder"
57
+ else
58
+ checkout_confirm_path
59
+ end
60
+ end
61
+
62
+ def confirm_after_redirect_url
63
+ case @quote.payment.method
64
+ when 'paypal_standard'
65
+ "#{Gemgento::Config[:magento][:url]}/paypal/standard/redirect?quote_id=#{@quote.magento_id}&store_id=#{@quote.store.magento_id}"
66
+ else
67
+ checkout_confirm_path
68
+ end
69
+ end
70
+
71
+ end
72
+ end
@@ -0,0 +1,42 @@
1
+ module Gemgento
2
+ class Checkout::CouponsController < CheckoutController
3
+ skip_before_filter :validate_quote_user
4
+
5
+ respond_to :json, :html
6
+
7
+ def create
8
+ result = @quote.apply_coupon(params[:code])
9
+
10
+ respond_to do |format|
11
+ if result == true
12
+ format.html { redirect_to :back, notice: 'The coupon was successfully applied.' }
13
+ format.json { render json: { result: true, order: @quote, totals: @quote.totals } }
14
+ else
15
+ format.html { redirect_to :back, alert: @quote.errors[:base].to_sentence }
16
+ format.json { render json: { result: false, errors: @quote.errors.full_messages }, status: 422 }
17
+ end
18
+ end
19
+
20
+ rescue ActionController::RedirectBackError
21
+ redirect_to cart_path
22
+ end
23
+
24
+ def destroy
25
+ result = @quote.remove_coupons
26
+
27
+ respond_to do |format|
28
+ if result == true
29
+ format.html { redirect_to :back, notice: 'The coupons have been removed.' }
30
+ format.json { render json: { result: true, order: @quote, totals: @quote.totals } }
31
+ else
32
+ format.html { redirect_to :back, alert: @quote.errors[:base].to_sentence }
33
+ format.json { render json: { result: false, errors: @quote.errors.full_messages }, status: 422 }
34
+ end
35
+ end
36
+
37
+ rescue ActionController::RedirectBackError
38
+ redirect_to cart_path
39
+ end
40
+
41
+ end
42
+ end
@@ -0,0 +1,39 @@
1
+ module Gemgento
2
+ class Checkout::GiftCardController < CheckoutController
3
+ skip_before_filter :validate_quote_user
4
+
5
+ respond_to :json, :html
6
+
7
+ def create
8
+ result = @quote.apply_gift_card(params[:gift_card_code])
9
+
10
+ respond_to do |format|
11
+ if result == true
12
+ format.html { redirect_to :back, notice: 'The Gift Card was successfully applied.' }
13
+ format.json { render json: { result: true, order: @quote, totals: @quote.totals } }
14
+ else
15
+ format.html { redirect_to :back, alert: @quote.errors[:base].to_sentence }
16
+ format.json { render json: { result: false, errors: @quote.errors[:base] }, status: 422 }
17
+ end
18
+ end
19
+
20
+ rescue ActionController::RedirectBackError
21
+ redirect_to cart_path
22
+ end
23
+
24
+ def destroy
25
+ result = @quote.remove_gift_card(params[:gift_card_code])
26
+
27
+ if result == true
28
+ format.html { redirect_to :back, notice: 'The Gift Card was removed from the order.' }
29
+ format.json { render json: { result: true, order: @quote, totals: @quote.totals } }
30
+ else
31
+ format.html { redirect_to :back, alert: @quote.errors[:base].to_sentence }
32
+ format.json { render json: { result: false, errors: @quote.errors[:base] }, status: 422 }
33
+ end
34
+
35
+ rescue ActionController::RedirectBackError
36
+ redirect_to cart_path
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,32 @@
1
+ module Gemgento
2
+ class Checkout::GiftController < CheckoutController
3
+ skip_before_filter :validate_quote_user
4
+
5
+ def update
6
+ respond_to do |format|
7
+
8
+ if @quote.update(quote_params)
9
+ format.html { redirect_to after_gift_update_success_path }
10
+ format.json { render json: { quote: @quote } }
11
+ else
12
+ format.html { redirect_to after_gift_update_fail_path, alert: 'There was a problem saving the gift message.' }
13
+ format.json { render json: { errors: @quote.errors.full_messages }, status: 422 }
14
+ end
15
+ end
16
+ end
17
+
18
+ private
19
+
20
+ def after_gift_update_success_path
21
+ checkout_login_path
22
+ end
23
+
24
+ def after_gift_update_fail_path
25
+ cart_path
26
+ end
27
+
28
+ def quote_params
29
+ params.require(:quote).permit(:gift_message)
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,123 @@
1
+ module Gemgento
2
+ class Checkout::LoginController < CheckoutController
3
+ skip_before_filter :validate_quote_user
4
+ before_filter :verify_guest
5
+
6
+ def show
7
+ @user = @quote.user || User.new
8
+
9
+ respond_to do |format|
10
+ format.html
11
+ format.json { render json: { user: @user, quote: @quote } }
12
+ end
13
+ end
14
+
15
+ # Login user to an existing account and associate with current order.
16
+ def login
17
+ respond_to do |format|
18
+
19
+ if @user = User::is_valid_login(params[:email], params[:password])
20
+ @quote.customer_is_guest = false
21
+ @quote.user = @user
22
+ @quote.push_customer = true
23
+
24
+ if @quote.save
25
+ sign_in(:user, @user)
26
+ format.html { redirect_to after_checkout_login_path }
27
+ format.json { render json: { result: true } }
28
+ else # problem saving order
29
+ format.html { render 'show' }
30
+ format.json { render json: { result: false, errors: @quote.errors }, status: 422 }
31
+ end
32
+
33
+ else # failed login attempt
34
+ @user = User.new
35
+ flash.now[:alert] = 'Invalid username and password.'
36
+ format.html { render 'show' }
37
+ format.json { render json: { result: false, errors: flash[:alert] }, status: 422 }
38
+ end
39
+ end
40
+ end
41
+
42
+ # Register a new user and associate with order current order
43
+ def register
44
+ @user = User.new(user_params)
45
+ @user.stores << current_store
46
+ @user.user_group = UserGroup.find_by(code: 'General')
47
+
48
+ respond_to do |format|
49
+
50
+ if @user.save
51
+ @quote.customer_is_guest = false
52
+ @quote.user = @user
53
+ @quote.push_customer = true
54
+
55
+ if @quote.save
56
+ sign_in(:user, @user)
57
+ format.html { redirect_to after_checkout_login_path }
58
+ format.json { render json: { result: true } }
59
+ else
60
+ format.html { render 'show' }
61
+ format.json { render json: { result: false, errors: @quote.errors }, status: 422 }
62
+ end
63
+
64
+ else # couldn't create user
65
+ format.html { render 'show' }
66
+ format.json { render json: { result: false, errors: @user.errors }, status: 422 }
67
+ end
68
+ end
69
+ end
70
+
71
+ # Continue with current order as guest
72
+ def guest
73
+ @quote.customer_is_guest = true
74
+ @user = User.new
75
+
76
+ respond_to do |format|
77
+
78
+ if @quote.update(quote_params)
79
+ format.html { redirect_to after_checkout_login_path }
80
+ format.json { render json: { result: true } }
81
+ else # problem saving order
82
+ format.html { render 'show' }
83
+ format.json { render json: { result: false, errors: @quote.errors }, status: 422 }
84
+ end
85
+ end
86
+ end
87
+
88
+ private
89
+
90
+ def verify_guest
91
+ if user_signed_in?
92
+ @quote.customer_is_guest = false
93
+ @quote.user = current_user
94
+ @quote.push_customer = true
95
+
96
+ respond_to do |format|
97
+ if @quote.save
98
+ format.html { redirect_to after_checkout_login_path }
99
+ format.json { render json: { result: true, user: @user, quote: @quote } }
100
+
101
+ else
102
+ @user = User.new
103
+ format.html { render 'show' }
104
+ format.json { render json: { result: false, errors: @quote.errors } }
105
+ end
106
+ end
107
+ end
108
+ end
109
+
110
+ def user_params
111
+ params.require(:user).permit(:email, :password, :password_confirmation, :first_name, :last_name, :subscribe)
112
+ end
113
+
114
+ def quote_params
115
+ params.require(:quote).permit(:customer_email, :subscribe)
116
+ end
117
+
118
+ def after_checkout_login_path
119
+ checkout_address_path
120
+ end
121
+
122
+ end
123
+ end
@@ -0,0 +1,70 @@
1
+ module Gemgento
2
+ class Checkout::PaymentController < CheckoutController
3
+
4
+ before_filter :zero_total_payment, only: :show, if: -> { @quote.totals[:total] == 0 }
5
+
6
+ respond_to :json, :html
7
+
8
+ def show
9
+ initialize_payment_variables
10
+
11
+ respond_to do |format|
12
+ format.html
13
+ format.json { render json: {
14
+ quote: @quote,
15
+ payment_methods:(@payment_methods || nil),
16
+ saved_credit_cards: @saved_credit_cards,
17
+ totals: @quote.totals
18
+ } }
19
+ end
20
+ end
21
+
22
+ def update
23
+ @quote.push_payment_method = true
24
+
25
+ respond_to do |format|
26
+ if @quote.update(quote_params)
27
+ session[:payment_data] = quote_params[:payment_attributes]
28
+
29
+ if !@quote.payment.is_redirecting_payment_method?('payment_after')
30
+ format.html { redirect_to checkout_confirm_path }
31
+ format.json { render json: { result: true, order: @quote, totals: @quote.totals } }
32
+ else
33
+ format.html { redirect_to payment_after_redirect_url }
34
+ format.json { render json: { result: true, payment_redirect_url: payment_after_redirect_url } }
35
+ end
36
+
37
+ else
38
+ initialize_payment_variables
39
+ format.html { render action: :show }
40
+ format.json { render json: { result: false, errors: @quote.errors }, status: 422 }
41
+ end
42
+ end
43
+ end
44
+
45
+ private
46
+
47
+ def quote_params
48
+ params.require(:quote).permit(payment_attributes: [:id, :method, :cc_cid, :cc_number, :cc_type, :cc_exp_year, :cc_exp_month, :cc_owner, :save_card, :payment_id])
49
+ end
50
+
51
+ def zero_total_payment
52
+ payment = Gemgento::Payment.new(payable: @quote, method: 'free')
53
+ payment.save
54
+
55
+ @quote.push_payment_method = true
56
+
57
+ respond_to do |format|
58
+ if @quote.save
59
+ format.html { redirect_to checkout_confirm_path }
60
+ format.json { render json: { result: true, order: @quote, totals: @quote.totals } }
61
+ else
62
+ initialize_payment_variables
63
+ format.html { render action: :show }
64
+ format.json { render json: { result: false, errors: @quote.errors }, status: 422 }
65
+ end
66
+ end
67
+ end
68
+
69
+ end
70
+ end
@@ -0,0 +1,23 @@
1
+ module Gemgento
2
+ class Checkout::PaypalController < CheckoutController
3
+ skip_before_filter :set_quote
4
+ skip_before_filter :validate_item_quantity
5
+ skip_before_filter :validate_quote_user
6
+
7
+ respond_to :json, :html
8
+
9
+ def update
10
+
11
+ if session[:quote]
12
+ @quote = Quote.find(session[:quote])
13
+ @quote.order_increment_id = params[:increment_id]
14
+ @quote.mark_converted!
15
+ redirect_to checkout_thank_you_path
16
+
17
+ else
18
+ redirect_to '/'
19
+ end
20
+ end
21
+
22
+ end
23
+ end