opensteam 0.9.2 → 0.9.3

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 (213) hide show
  1. data/CHANGELOG +53 -0
  2. data/README.rdoc +19 -10
  3. data/generators/opensteam/opensteam_generator.rb +27 -3
  4. data/generators/opensteam/templates/app/controllers/admin/configurations_controller.rb +85 -0
  5. data/generators/opensteam/templates/app/controllers/admin/inventories_controller.rb +1 -1
  6. data/generators/opensteam/templates/app/controllers/admin/invoices_controller.rb +35 -4
  7. data/generators/opensteam/templates/app/controllers/admin/orders_controller.rb +5 -4
  8. data/generators/opensteam/templates/app/controllers/admin/shipments_controller.rb +6 -3
  9. data/generators/opensteam/templates/app/controllers/admin/shipping_rate_groups_controller.rb +76 -0
  10. data/generators/opensteam/templates/app/controllers/admin/tax_groups_controller.rb +124 -0
  11. data/generators/opensteam/templates/app/controllers/admin/tax_rules_controller.rb +19 -0
  12. data/generators/opensteam/templates/app/controllers/admin/tax_zones_controller.rb +118 -0
  13. data/generators/opensteam/templates/app/controllers/admin/users_controller.rb +1 -1
  14. data/generators/opensteam/templates/app/controllers/admin_controller.rb +20 -0
  15. data/generators/opensteam/templates/app/controllers/carts_controller.rb +118 -0
  16. data/generators/opensteam/templates/app/controllers/checkout_controller.rb +119 -79
  17. data/generators/opensteam/templates/app/controllers/profile_controller.rb +2 -4
  18. data/generators/opensteam/templates/app/controllers/searches_controller.rb +1 -1
  19. data/generators/opensteam/templates/app/controllers/user_sessions_controller.rb +2 -1
  20. data/generators/opensteam/templates/app/controllers/users_controller.rb +10 -3
  21. data/generators/opensteam/templates/app/helpers/admin_helper.rb +15 -1
  22. data/generators/opensteam/templates/app/helpers/checkout_helper.rb +38 -0
  23. data/generators/opensteam/templates/app/helpers/webshop_helper.rb +6 -1
  24. data/generators/opensteam/templates/app/models/zone.rb +18 -0
  25. data/generators/opensteam/templates/app/views/admin/_menu.html.erb +18 -0
  26. data/generators/opensteam/templates/app/views/admin/catalog.html.erb +2 -3
  27. data/generators/opensteam/templates/app/views/admin/configurations/edit.html.erb +20 -0
  28. data/generators/opensteam/templates/app/views/admin/configurations/index.html.erb +22 -0
  29. data/generators/opensteam/templates/app/views/admin/configurations/new.html.erb +19 -0
  30. data/generators/opensteam/templates/app/views/admin/configurations/show.html.erb +13 -0
  31. data/generators/opensteam/templates/app/views/admin/filters/_filter.html.erb +1 -1
  32. data/generators/opensteam/templates/app/views/admin/index.html.erb +0 -19
  33. data/generators/opensteam/templates/app/views/admin/inventories/edit.html.erb +10 -6
  34. data/generators/opensteam/templates/app/views/admin/inventories/new.html.erb +5 -0
  35. data/generators/opensteam/templates/app/views/admin/inventories/show.html.erb +10 -6
  36. data/generators/opensteam/templates/app/views/admin/invoices/_invoice.html.erb +1 -0
  37. data/generators/opensteam/templates/app/views/admin/invoices/_invoice_fields.html.erb +52 -0
  38. data/generators/opensteam/templates/app/views/admin/invoices/new.html.erb +9 -37
  39. data/generators/opensteam/templates/app/views/admin/invoices/show.html.erb +10 -36
  40. data/generators/opensteam/templates/app/views/admin/invoices/show.pdf.prawn +59 -0
  41. data/generators/opensteam/templates/app/views/admin/order_config.html.erb +5 -0
  42. data/generators/opensteam/templates/app/views/admin/order_items/_item_entry.html.erb +9 -0
  43. data/generators/opensteam/templates/app/views/admin/order_items/_items_table.html.erb +16 -0
  44. data/generators/opensteam/templates/app/views/admin/orders/_order.html.erb +9 -9
  45. data/generators/opensteam/templates/app/views/admin/orders/_orders.html.erb +1 -1
  46. data/generators/opensteam/templates/app/views/admin/orders/show.html.erb +25 -9
  47. data/generators/opensteam/templates/app/views/admin/payment_types.html.erb +27 -0
  48. data/generators/opensteam/templates/app/views/admin/payments/_credit_card_payment.html.erb +26 -0
  49. data/generators/opensteam/templates/app/views/admin/payments/_credit_card_payment_info.html.erb +15 -0
  50. data/generators/opensteam/templates/app/views/admin/payments/_direct_debit_payment.html.erb +5 -0
  51. data/generators/opensteam/templates/app/views/admin/shipments/new.html.erb +45 -30
  52. data/generators/opensteam/templates/app/views/admin/shipments/show.html.erb +3 -3
  53. data/generators/opensteam/templates/app/views/admin/shipping_rate_groups/_payment_addition.html.erb +12 -0
  54. data/generators/opensteam/templates/app/views/admin/shipping_rate_groups/_rate.html.erb +16 -0
  55. data/generators/opensteam/templates/app/views/admin/shipping_rate_groups/edit.html.erb +63 -0
  56. data/generators/opensteam/templates/app/views/admin/shipping_rate_groups/index.html.erb +28 -0
  57. data/generators/opensteam/templates/app/views/admin/shipping_rate_groups/new.html.erb +60 -0
  58. data/generators/opensteam/templates/app/views/admin/shipping_rate_groups/show.html.erb +13 -0
  59. data/generators/opensteam/templates/app/views/admin/system.html.erb +5 -0
  60. data/generators/opensteam/templates/app/views/admin/tax_groups/_attributes.html.erb +11 -0
  61. data/generators/opensteam/templates/app/views/admin/tax_groups/_tax_groups.html.erb +17 -0
  62. data/generators/opensteam/templates/app/views/admin/tax_groups/_tax_groups_row.html.erb +12 -0
  63. data/generators/opensteam/templates/app/views/admin/tax_groups/_tax_rule.html.erb +14 -0
  64. data/generators/opensteam/templates/app/views/admin/tax_groups/edit.html.erb +26 -0
  65. data/generators/opensteam/templates/app/views/admin/tax_groups/index.html.erb +8 -0
  66. data/generators/opensteam/templates/app/views/admin/tax_groups/new.html.erb +27 -0
  67. data/generators/opensteam/templates/app/views/admin/tax_groups/show.html.erb +28 -0
  68. data/generators/opensteam/templates/app/views/admin/tax_zones/_attributes.html.erb +18 -0
  69. data/generators/opensteam/templates/app/views/admin/tax_zones/_tax_zone_row.html.erb +13 -0
  70. data/generators/opensteam/templates/app/views/admin/tax_zones/_tax_zones.html.erb +11 -0
  71. data/generators/opensteam/templates/app/views/admin/tax_zones/edit.html.erb +16 -0
  72. data/generators/opensteam/templates/app/views/admin/tax_zones/index.html.erb +16 -0
  73. data/generators/opensteam/templates/app/views/admin/tax_zones/new.html.erb +14 -0
  74. data/generators/opensteam/templates/app/views/admin/tax_zones/show.html.erb +15 -0
  75. data/generators/opensteam/templates/app/views/admin/users.html.erb +0 -1
  76. data/generators/opensteam/templates/app/views/admin/users/show.html.erb +10 -0
  77. data/generators/opensteam/templates/app/views/administration_mailer/order_customer.erb +1 -1
  78. data/generators/opensteam/templates/app/views/carts/_cart.html.erb +7 -0
  79. data/generators/opensteam/templates/app/views/carts/_cart_content.html.erb +45 -0
  80. data/generators/opensteam/templates/app/views/carts/create.rjs +3 -0
  81. data/generators/opensteam/templates/app/views/{cart → carts}/index.html.erb +0 -0
  82. data/generators/opensteam/templates/app/views/carts/update.rjs +11 -0
  83. data/generators/opensteam/templates/app/views/checkout/_address.html.erb +42 -0
  84. data/generators/opensteam/templates/app/views/checkout/_customer.html.erb +31 -0
  85. data/generators/opensteam/templates/app/views/checkout/_edit_checkout.html.erb +42 -0
  86. data/generators/opensteam/templates/app/views/checkout/_new_checkout.html.erb +44 -0
  87. data/generators/opensteam/templates/app/views/checkout/_shipping_buttons.html.erb +8 -0
  88. data/generators/opensteam/templates/app/views/checkout/edit.html.erb +7 -0
  89. data/generators/opensteam/templates/app/views/checkout/new.html.erb +11 -0
  90. data/generators/opensteam/templates/app/views/checkout/outro.html.erb +1 -4
  91. data/generators/opensteam/templates/app/views/checkout/show.html.erb +63 -0
  92. data/generators/opensteam/templates/app/views/common/_header_admin.html.erb +5 -0
  93. data/generators/opensteam/templates/app/views/layouts/admin.html.erb +28 -12
  94. data/generators/opensteam/templates/app/views/layouts/profile.html.erb +2 -2
  95. data/generators/opensteam/templates/app/views/layouts/webshop.html.erb +5 -4
  96. data/generators/opensteam/templates/app/views/payment/_advance_payment_payment.html.erb +1 -0
  97. data/generators/opensteam/templates/app/views/payment/_credit_card_payment.html.erb +37 -0
  98. data/generators/opensteam/templates/app/views/payment/_credit_card_payment_confirmation.html.erb +20 -0
  99. data/generators/opensteam/templates/app/views/payment/_direct_debit_payment.html.erb +5 -0
  100. data/generators/opensteam/templates/app/views/payment/_direct_debit_payment_confirmation.html.erb +5 -0
  101. data/generators/opensteam/templates/app/views/profile/index.html.erb +1 -1
  102. data/generators/opensteam/templates/app/views/profile/infos/edit.html.erb +20 -12
  103. data/generators/opensteam/templates/app/views/profile/infos/edit_password.html.erb +16 -12
  104. data/generators/opensteam/templates/app/views/profile/orders/_order.html.erb +1 -1
  105. data/generators/opensteam/templates/app/views/profile/orders/show.html.erb +10 -7
  106. data/generators/opensteam/templates/app/views/webshop/_inventory_content.html.erb +1 -0
  107. data/generators/opensteam/templates/app/views/webshop/show.html.erb +3 -1
  108. data/generators/opensteam/templates/config/initializers/init_states.rb +13 -24
  109. data/generators/opensteam/templates/config/initializers/opensteam.rb +41 -0
  110. data/generators/opensteam/templates/config/initializers/opensteam_model_tables.rb +49 -10
  111. data/generators/opensteam/templates/config/initializers/opensteam_security.rb +8 -0
  112. data/generators/opensteam/templates/config/initializers/payment_process.rb +37 -0
  113. data/generators/opensteam/templates/db/migrate/20080609095723_create_addresses.rb +8 -2
  114. data/generators/opensteam/templates/db/migrate/20080609095726_create_inventories.rb +6 -3
  115. data/generators/opensteam/templates/db/migrate/20080609095728_create_order_items.rb +12 -1
  116. data/generators/opensteam/templates/db/migrate/20080609095729_create_orders.rb +8 -12
  117. data/generators/opensteam/templates/db/migrate/20080609095730_create_payment_types.rb +2 -0
  118. data/generators/opensteam/templates/db/migrate/20080714131513_create_invoices.rb +2 -1
  119. data/generators/opensteam/templates/db/migrate/20080714131650_create_shipments.rb +3 -1
  120. data/generators/opensteam/templates/db/migrate/20080808075247_create_containers.rb +30 -0
  121. data/generators/opensteam/templates/db/migrate/20080808083011_create_container_items.rb +25 -0
  122. data/generators/opensteam/templates/db/migrate/20080812102727_create_tax_zones.rb +16 -0
  123. data/generators/opensteam/templates/db/migrate/20080812102858_create_tax_rules.rb +15 -0
  124. data/generators/opensteam/templates/db/migrate/20080812102956_create_tax_groups.rb +14 -0
  125. data/generators/opensteam/templates/db/migrate/20080831181436_create_configurations.rb +15 -0
  126. data/generators/opensteam/templates/db/migrate/20080903131506_create_payments.rb +22 -0
  127. data/generators/opensteam/templates/db/migrate/20080904133625_create_payment_transactions.rb +24 -0
  128. data/generators/opensteam/templates/db/migrate/20080916102341_create_zones.rb +19 -0
  129. data/generators/opensteam/templates/db/migrate/20080916134340_create_region_shipping_rates.rb +18 -0
  130. data/generators/opensteam/templates/db/migrate/20080916134523_create_shipping_rate_groups.rb +18 -0
  131. data/generators/opensteam/templates/db/migrate/20080916135226_create_shipping_payment_additions.rb +20 -0
  132. data/generators/opensteam/templates/db/migrate/20080916135228_init_opensteam_config.rb +60 -0
  133. data/generators/opensteam/templates/public/images/opensteam_black.jpg +0 -0
  134. data/generators/opensteam/templates/public/images/pdf.png +0 -0
  135. data/generators/opensteam/templates/public/images/shader.png +0 -0
  136. data/generators/opensteam/templates/public/index.html +1 -0
  137. data/generators/opensteam/templates/public/javascripts/opensteam.js +21 -21
  138. data/generators/opensteam/templates/public/stylesheets/opensteam_admin.css +291 -0
  139. data/generators/opensteam/templates/public/stylesheets/opensteam_white.css +47 -11
  140. data/generators/opensteam/templates/tasks/opensteam.rake +2 -12
  141. data/generators/opensteam/templates/test/fixtures/addresses.yml +26 -0
  142. data/generators/opensteam/templates/test/fixtures/configurations.yml +29 -0
  143. data/generators/opensteam/templates/test/fixtures/inventories.yml +32 -15
  144. data/generators/opensteam/templates/test/fixtures/profiles.yml +21 -0
  145. data/generators/opensteam/templates/test/fixtures/region_shipping_rates.yml +33 -0
  146. data/generators/opensteam/templates/test/fixtures/shipping_payment_additions.yml +91 -0
  147. data/generators/opensteam/templates/test/fixtures/shipping_rate_groups.yml +25 -0
  148. data/generators/opensteam/templates/test/fixtures/tax_groups.yml +13 -0
  149. data/generators/opensteam/templates/test/fixtures/tax_rules.yml +29 -0
  150. data/generators/opensteam/templates/test/fixtures/tax_zones.yml +33 -0
  151. data/generators/opensteam/templates/test/fixtures/users.yml +26 -0
  152. data/generators/opensteam/templates/test/fixtures/zones.yml +2707 -0
  153. data/generators/opensteam/templates/test/functional/carts_controller_test.rb +103 -0
  154. data/generators/opensteam/templates/test/test_helper.rb +38 -0
  155. data/generators/opensteam/templates/test/unit/container_test.rb +71 -0
  156. data/generators/opensteam/templates/test/unit/order_test.rb +93 -0
  157. data/generators/opensteam/templates/test/unit/payment_test.rb +220 -0
  158. data/generators/opensteam/templates/test/unit/product_test.rb +158 -0
  159. data/generators/opensteam/templates/vendor/plugins/prawnto/.gitignore +3 -0
  160. data/generators/opensteam/templates/vendor/plugins/prawnto/MIT-LICENSE +20 -0
  161. data/generators/opensteam/templates/vendor/plugins/prawnto/README +12 -0
  162. data/generators/opensteam/templates/vendor/plugins/prawnto/Rakefile +22 -0
  163. data/generators/opensteam/templates/vendor/plugins/prawnto/init.rb +6 -0
  164. data/generators/opensteam/templates/vendor/plugins/prawnto/lib/prawnto.rb +13 -0
  165. data/generators/opensteam/templates/vendor/plugins/prawnto/lib/prawnto/action_controller.rb +47 -0
  166. data/generators/opensteam/templates/vendor/plugins/prawnto/lib/prawnto/template_handler/base.rb +75 -0
  167. data/generators/opensteam/templates/vendor/plugins/prawnto/lib/prawnto/template_handler/raw.rb +54 -0
  168. data/generators/opensteam/templates/vendor/plugins/prawnto/tasks/prawnto_tasks.rake +4 -0
  169. data/generators/opensteam/templates/vendor/plugins/prawnto/test/action_controller_test.rb +36 -0
  170. data/generators/opensteam/templates/vendor/plugins/prawnto/test/base_template_handler_test.rb +58 -0
  171. data/generators/opensteam/templates/vendor/plugins/prawnto/test/raw_template_handler_test.rb +163 -0
  172. data/generators/opensteam/templates/vendor/plugins/prawnto/test/template_handler_test_mocks.rb +83 -0
  173. data/generators/opensteam_product/templates/views/admin/_attributes.html.erb +8 -3
  174. data/generators/opensteam_product/templates/views/admin/_inventories.html.erb +2 -0
  175. data/lib/opensteam.rb +0 -1
  176. data/lib/opensteam/base.rb +2 -1
  177. data/lib/opensteam/checkout.rb +3 -12
  178. data/lib/opensteam/config.rb +50 -2
  179. data/lib/opensteam/container.rb +196 -0
  180. data/lib/opensteam/extension_base.rb +19 -1
  181. data/lib/opensteam/finder.rb +1 -1
  182. data/lib/opensteam/helpers/config_table_helper.rb +18 -6
  183. data/lib/opensteam/initializer.rb +24 -4
  184. data/lib/opensteam/inventory_base.rb +6 -1
  185. data/lib/opensteam/invoice_base.rb +12 -13
  186. data/lib/opensteam/money.rb +230 -0
  187. data/lib/opensteam/order_base.rb +122 -48
  188. data/lib/opensteam/payment.rb +225 -0
  189. data/lib/opensteam/payment/advance_payment.rb +34 -0
  190. data/lib/opensteam/payment/credit_card_payment.rb +217 -0
  191. data/lib/opensteam/payment/direct_debit_payment.rb +53 -0
  192. data/lib/opensteam/product_base.rb +48 -12
  193. data/lib/opensteam/security.rb +54 -0
  194. data/lib/opensteam/shipment_base.rb +214 -6
  195. data/lib/opensteam/shopping_cart.rb +20 -300
  196. data/lib/opensteam/state_logic.rb +5 -3
  197. data/lib/opensteam/state_machine.rb +8 -3
  198. data/lib/opensteam/user_base.rb +48 -6
  199. data/lib/opensteam/version.rb +1 -1
  200. metadata +122 -16
  201. data/generators/opensteam/templates/app/controllers/cart_controller.rb +0 -94
  202. data/generators/opensteam/templates/app/views/admin/orders/_event.html.erb +0 -5
  203. data/generators/opensteam/templates/app/views/admin/orders/_order_item.html.erb +0 -10
  204. data/generators/opensteam/templates/app/views/cart/_cart.html.erb +0 -8
  205. data/generators/opensteam/templates/app/views/cart/_cart_content.html.erb +0 -20
  206. data/generators/opensteam/templates/app/views/cart/update.rjs +0 -1
  207. data/generators/opensteam/templates/app/views/checkout/payment.html.erb +0 -8
  208. data/generators/opensteam/templates/app/views/checkout/shipping.html.erb +0 -45
  209. data/generators/opensteam/templates/app/views/checkout/show_cart.html.erb +0 -13
  210. data/generators/opensteam/templates/app/views/checkout/update_cart_content.rjs +0 -2
  211. data/generators/opensteam/templates/app/views/profile/orders/_order_item.html.erb +0 -10
  212. data/generators/opensteam/templates/db/migrate/20080609095725_create_dummy_users.rb +0 -21
  213. data/lib/opensteam/cart_base.rb +0 -227
data/CHANGELOG CHANGED
@@ -1,3 +1,56 @@
1
+ *EDGE*
2
+
3
+ * added a ContainerModel to hold the basic ShoppingCart Logic (add/update/delete items, increment/decrement), STI
4
+
5
+ * moved Cart from session to database (into Container)
6
+
7
+ * moved OrderBase into Container (same logic as ShoppingCart)
8
+
9
+ * added a Tax-System (TaxZones, TaxGroups, Calculation, etc), MVC
10
+
11
+ * implemented ActiveMerchant Integration. (CreditCard Payment)
12
+
13
+ * added PaymentTypes and a Payment Base Class to simplify future integration of payment-methods
14
+
15
+ * added ShippingRate calculation (ShippingRates, Zones, ShippingRateGroups), MVC
16
+
17
+ * added shipping-rates, taxes, netto_price calculation, payment_type to OrderBase (Container)
18
+
19
+ * refactored Checkout-Process and OrderBase-Model in order to work with payment_type, shipping-rate and taxes
20
+
21
+ * added PDF-Export for Invoices (using the prawn-gem and prawnto-plugin http://www.cracklabs.com/prawnto )
22
+
23
+ * removed state-logic from InvoiceBase (not needed)
24
+
25
+ * added payment_process initializers (CreditCardPayment)
26
+
27
+ * added Configuration Model (Backend), to hold simple key-value pairs
28
+
29
+ * added units tests for Container::Base (Order, Cart), Payment, ProductBase and Order
30
+
31
+ * refactored the "set_properties=" method in ProductBase. Now "building" the inventory-objects instead of creating.
32
+
33
+ * refactored the _attributes partial for products in order to work with the new "set_properties=" method.
34
+
35
+ * InventoryBase: added a named_scope called :by_properties (replaces the exists_by_properties extension-method fpr the inventories-association in ProductBase):
36
+ Now: Single SQL-Query instead of fetching every single property.
37
+
38
+ * fixed bug in StateMachine caused by inheritance: declared 'observers' and 'inialstate' as class_inheritable_accessor
39
+
40
+ * StateLogic: changed state-name from .downcase to .underscore
41
+
42
+ * deleted unnecessary partials (TODO: more to delete!)
43
+
44
+ * renamed cart_controller to carts_controller (ActiveRecord Model, recources!)
45
+
46
+ * added a "init_opensteam_config" migration file, to create admin-uses and load fixtures (zones, tax_zones, shipping_rates, configuration)
47
+
48
+ * added verification_value to credit_card_payment partials
49
+
50
+ * deleted lib/cart_base.rb (not needed anymore, now Opensteam::Cart < Opensteam::Container::Base)
51
+
52
+
53
+
1
54
  *0.9.2*
2
55
 
3
56
 
data/README.rdoc CHANGED
@@ -1,4 +1,4 @@
1
- = opensteam v0.9.1
1
+ = opensteam v0.9.3
2
2
 
3
3
  * http://www.opensteam.net
4
4
  * http://rubyforge.org/projects/opensteam
@@ -26,13 +26,14 @@ see CHANGELOG File
26
26
 
27
27
  * Product Listing
28
28
  * Details-Page for Products
29
- * a Shopping-Cart (add, delete, increment/decrement quantity, checkout)
30
- * a Checkout-Process
31
- * an Admin-Backend:
32
- - create and configure Products and Properties
33
- - overview and process Orders, Shipments and Invoices
34
- - configure Admins and Customers
35
- * Profile-Page for Customers
29
+ * ShoppingCart (add/update/delete items, increment/decrement quantity, checkout)
30
+ * CheckoutProcess
31
+ * AdminBackend
32
+ * ActiveMerchant Integration
33
+ * ShippingRates
34
+ * Taxes
35
+ * ProfilePage for Customers
36
+ * Overview and process Orders, Shipments and Invoices
36
37
 
37
38
 
38
39
  === Generators
@@ -80,10 +81,14 @@ Goto /admin and configure your products
80
81
  == REQUIREMENTS:
81
82
 
82
83
  * rails (of course)
83
- * uuidtools gem (gem install uuidtools)
84
84
 
85
+ * prawnto-plugin (used for pdf-export)
86
+ http://www.cracklabs.com/prawnto
85
87
 
88
+ * ActiveMerchant gem (used for credit_card payment)
89
+ http://www.activemerchant.org/
86
90
 
91
+
87
92
  == INSTALL:
88
93
 
89
94
  sudo gem install opensteam
@@ -92,4 +97,8 @@ Goto /admin and configure your products
92
97
  == LICENSE:
93
98
  Copyright (C) DiamondDogs Webconsulting
94
99
  openSteam is licensed under the GNU General Public License (GPL) version 2
95
- see the LICENSE file for more information.
100
+ see the LICENSE file for more information.
101
+
102
+ All plugins in "vendor/plugins" belong to their respective owner. See their License files for more information.
103
+
104
+
@@ -50,7 +50,7 @@ class OpensteamGenerator < Rails::Generator::NamedBase
50
50
  Find.find("./templates/" ) do |f|
51
51
  ret = ffind_in_file(f, "<%%", "## TEMPLATE ##" )
52
52
  f = f.gsub(/^\.\/templates\//,'')
53
- ret == :directory ? m.send( ret, f =~ /webshop/ ? f.gsub(/webshop/,"#{file_name}") : f ) : m.send(ret,f , f =~ /webshop/ ? f.gsub(/webshop/,"#{file_name}") : f )
53
+ ret == :directory ? m.send( ret, f =~ /webshop/ ? f.gsub(/webshop/,"#{file_name}") : f ) : m.send(ret,f , f =~ /webshop/ ? f.gsub(/webshop/,"#{file_name}") : f, :collision => :force )
54
54
  end
55
55
 
56
56
 
@@ -69,7 +69,9 @@ class OpensteamGenerator < Rails::Generator::NamedBase
69
69
  map.resources :orders, :belongs_to => [ :users ]
70
70
  map.resource :user_session
71
71
 
72
- map.cart "/cart", :controller => 'cart', :action => 'index'
72
+ map.resource :cart
73
+ map.cart "/cart/*quantity", :controller => 'cart', :action => 'update', :conditions => { :method => :post }
74
+
73
75
  map.order_state '/orders/state/*state', :controller => 'orders', :action => 'index'
74
76
  map.connect "/admin", :controller => 'admin', :action => 'index'
75
77
  map.show_cart_item '/#{file_name}/show_cart_item/:id', :controller => '#{file_name}', :action => 'show_cart_item'
@@ -88,17 +90,27 @@ class OpensteamGenerator < Rails::Generator::NamedBase
88
90
  admin.orders_sort "orders/sort/:sort", :controller => 'orders', :action => 'sort'
89
91
  admin.users_admins "users/type/admin", :controller => 'users', :action => 'index', :type => 'admin'
90
92
  admin.users_customers "users/type/customer", :controller => 'users', :action => 'index', :type => 'customer'
93
+ admin.payment_types "payment_types", :controller => "admin", :action => "payment_types"
91
94
 
92
- admin.connect "users", :controller => 'users', :action => 'index'
93
95
  admin.connect "orders", :controller => 'orders', :action => 'index'
94
96
  admin.connect "invoices", :controller => 'invoices', :action => 'index'
95
97
  admin.connect "shipments", :controller => 'shipments', :action => 'index'
96
98
 
99
+ admin.connect "tax_zones/filter", :controller => 'tax_zones', :action => 'filter', :conditions => { :method => :post }
100
+ admin.connect "users/filter", :controller => 'users', :action => 'filter', :conditions => { :method => :post }
101
+ admin.connect "tax_groups/filter", :controller => 'tax_groups', :action => 'filter', :conditions => { :method => :post }
102
+
103
+ admin.resources :configurations
104
+
97
105
  admin.resources :inventories
98
106
  admin.resources :users, :has_many => [ :orders ]
99
107
  admin.resources :orders, :has_many => [ :shipments, :invoices ]
100
108
  admin.resources :shipments
101
109
  admin.resources :invoices
110
+ admin.resources :tax_zones
111
+ admin.resources :tax_groups
112
+ admin.resources :shipping_rate_groups
113
+ admin.connect "tax_rules/:action", :controller => "tax_rules"
102
114
 
103
115
  Opensteam::Find.find_product_tables.collect(&:to_sym).each do |m|
104
116
  if m.to_s.classify.constantize.column_names.include? m.to_s.classify.constantize.inheritance_column
@@ -127,6 +139,9 @@ class OpensteamGenerator < Rails::Generator::NamedBase
127
139
  map.admin "/admin", :controller=>"admin", :action=>"index"
128
140
  map.administration "/admin", :controller=>"admin", :action=>"index"
129
141
 
142
+ map.admin_products "/admin/products", :controller => "admin", :action => "products"
143
+ map.admin_properties "/admin/properties", :controller => "admin", :action => "properties"
144
+ map.toggle_admin_payment_type "/admin/toggle_payment_type/:id", :controller => "admin", :action => "toggle_payment_type"
130
145
  END_OPENSTEAM_ROUTES
131
146
 
132
147
  map_namespaceroutes( administration_routes )
@@ -148,6 +163,15 @@ END_OPENSTEAM_ROUTES
148
163
  "#{incl}\n\n#{match}\n"
149
164
  end
150
165
 
166
+
167
+ incl = "
168
+ config.after_initialize do
169
+ ActiveMerchant::Billing::Base.mode = :test
170
+ end"
171
+ gsub_file 'config/environment.rb', /(#{Regexp.escape(sentinel)})/mi do |match|
172
+ "#{match}\n\n#{incl}\n"
173
+ end
174
+
151
175
 
152
176
  end
153
177
  end
@@ -0,0 +1,85 @@
1
+ class Admin::ConfigurationsController < AdminController
2
+ # GET /configurations
3
+ # GET /configurations.xml
4
+ def index
5
+ @configurations = Configuration.find(:all)
6
+
7
+ respond_to do |format|
8
+ format.html # index.html.erb
9
+ format.xml { render :xml => @configurations }
10
+ end
11
+ end
12
+
13
+ # GET /configurations/1
14
+ # GET /configurations/1.xml
15
+ def show
16
+ @configuration = Configuration.find(params[:id])
17
+
18
+ respond_to do |format|
19
+ format.html # show.html.erb
20
+ format.xml { render :xml => @configuration }
21
+ end
22
+ end
23
+
24
+ # GET /configurations/new
25
+ # GET /configurations/new.xml
26
+ def new
27
+ @configuration = Configuration.new
28
+
29
+ respond_to do |format|
30
+ format.html # new.html.erb
31
+ format.xml { render :xml => @configuration }
32
+ end
33
+ end
34
+
35
+ # GET /configurations/1/edit
36
+ def edit
37
+ @configuration = Configuration.find(params[:id])
38
+ end
39
+
40
+ # POST /configurations
41
+ # POST /configurations.xml
42
+ def create
43
+ @configuration = Configuration.new(params[:configuration])
44
+
45
+ respond_to do |format|
46
+ if @configuration.save
47
+ flash[:notice] = 'Configuration was successfully created.'
48
+ format.html { redirect_to( admin_configuration_path( @configuration) ) }
49
+ format.xml { render :xml => @configuration, :status => :created, :location => @configuration }
50
+ else
51
+ format.html { render :action => "new" }
52
+ format.xml { render :xml => @configuration.errors, :status => :unprocessable_entity }
53
+ end
54
+ end
55
+ end
56
+
57
+ # PUT /configurations/1
58
+ # PUT /configurations/1.xml
59
+ def update
60
+ @configuration = Configuration.find(params[:id])
61
+
62
+ respond_to do |format|
63
+ if @configuration.update_attributes(params[:configuration])
64
+ flash[:notice] = 'Configuration was successfully updated.'
65
+ format.html { redirect_to(admin_configuration_path( @configuration)) }
66
+ format.xml { head :ok }
67
+ else
68
+ format.html { render :action => "edit" }
69
+ format.xml { render :xml => @configuration.errors, :status => :unprocessable_entity }
70
+ end
71
+ end
72
+ end
73
+
74
+ # DELETE /configurations/1
75
+ # DELETE /configurations/1.xml
76
+ def destroy
77
+ @configuration = Configuration.find(params[:id])
78
+ @configuration.destroy
79
+
80
+ respond_to do |format|
81
+ format.html { redirect_to(admin_configurations_url) }
82
+ format.xml { head :ok }
83
+ end
84
+ end
85
+ end
@@ -61,7 +61,7 @@ class Admin::InventoriesController < AdminController
61
61
  # PUT /inventories/1.xml
62
62
  def update
63
63
  @inventory = Inventory.find(params[:id])
64
-
64
+
65
65
  respond_to do |format|
66
66
  if @inventory.update_attributes(params[:inventory])
67
67
  flash[:notice] = 'Inventory was successfully updated.'
@@ -37,6 +37,10 @@ class Admin::InvoicesController < AdminController
37
37
  respond_to do |format|
38
38
  format.html # show.html.erb
39
39
  format.xml { render :xml => @invoice.to_xml( :root => 'invoice' ) }
40
+ format.pdf {
41
+ render :layout => false
42
+ prawnto( :filename => "order_#{@order.id}_invoice_#{@invoice.id}", :prawn => { :page_size => 'A4' } )
43
+ }
40
44
  end
41
45
  end
42
46
 
@@ -45,7 +49,7 @@ class Admin::InvoicesController < AdminController
45
49
  @order = Opensteam::OrderBase::Order.find( params[:order_id] )
46
50
  @invoice = @order.invoices.new
47
51
 
48
- if @order.order_items.all_invoiced?
52
+ if @order.items.all_invoiced?
49
53
  flash[:error] = "Cannot create invoice : All order-items have an invoice!"
50
54
  redirect_to admin_order_path( @order )
51
55
  end
@@ -55,13 +59,18 @@ class Admin::InvoicesController < AdminController
55
59
 
56
60
 
57
61
  def create
62
+ unless params[:order_items]
63
+ flash[:error] = "You have to select order-items to create an invoice!"
64
+ redirect_to :action => :new
65
+ return
66
+ end
67
+
68
+
58
69
  @order = Opensteam::OrderBase::Order.find( params[:order_id] )
59
70
  @invoice = @order.invoices.new( params[:invoice] )
60
71
  @address = @invoice.address
61
72
 
62
- @order_items = @order.order_items.select { |o|
63
- params[:order_items].keys.include?( o.id.to_s ) && params[:order_items][ o.id.to_s ] == "1"
64
- }
73
+ @order_items = @order.items.find( params[:order_items] )
65
74
 
66
75
  @invoice.order_items << @order_items
67
76
 
@@ -96,8 +105,30 @@ class Admin::InvoicesController < AdminController
96
105
  end
97
106
  end
98
107
 
108
+ end
109
+
110
+
111
+ def update_price
112
+
113
+ @order = Opensteam::OrderBase::Order.find( params[:invoice][:order_id] )
114
+
115
+ price = BigDecimal.new(
116
+ params[:order_items] ?
117
+ @order.items.find( params[:order_items] ).collect(&:total_price).sum.to_s :
118
+ "0.0"
119
+ ) - BigDecimal.new( params[:invoice][:discount] )
120
+
121
+ price += BigDecimal.new( params[:shipping_rate] ? @order.shipping_rate.to_s : "0.0" )
122
+
123
+ render :update do |page|
124
+ page["invoice_price"].value = price
125
+ end
126
+
99
127
 
100
128
  end
129
+
130
+
131
+
101
132
 
102
133
  private
103
134
  def set_sort_column
@@ -4,16 +4,16 @@ class Admin::OrdersController < AdminController
4
4
  before_filter :set_sort_column
5
5
 
6
6
  def index
7
- save_filter("Order") if request.post?
7
+ save_filter( "Order" ) if request.post?
8
8
  @orders = apply_filter( "Order" )
9
-
9
+
10
10
  if params[:user_id]
11
11
  @customer = Opensteam::UserBase::User.find( params[:user_id] )
12
- @orders = ( @orders || Opensteam::OrderBase.Order ).by_user( params[:user_id ] )
12
+ @orders = ( @orders || Opensteam::OrderBase::Order ).by_user( params[:user_id ] )
13
13
  end
14
14
 
15
15
  @orders = ( @orders || Opensteam::OrderBase::Order ).order_by( @sort_column.order )
16
-
16
+
17
17
  if params[:sort]
18
18
  @orders.reverse! if session[:orders]
19
19
  session[:orders] = session[:orders] ? false : true
@@ -36,6 +36,7 @@ class Admin::OrdersController < AdminController
36
36
  format.xml { render :xml => @order }
37
37
  end
38
38
  end
39
+
39
40
 
40
41
 
41
42
 
@@ -42,9 +42,12 @@ class Admin::ShipmentsController < AdminController
42
42
 
43
43
  def new
44
44
  @order = Opensteam::OrderBase::Order.find( params[:order_id] )
45
- @shipment = @order.shipments.new
45
+ @shipment = @order.shipments.build do |s|
46
+ s.address = @order.shipping_address
47
+ s.shipping_rate = @order.shipping_rate
48
+ end
46
49
 
47
- if @order.order_items.all_shipped?
50
+ if @order.items.all_shipped?
48
51
  flash[:error] = "Cannot create shipment : All order items have been shipped!!"
49
52
  redirect_to admin_order_path( @order )
50
53
  end
@@ -58,7 +61,7 @@ class Admin::ShipmentsController < AdminController
58
61
  @shipment = @order.shipments.new( params[:shipment] )
59
62
  @address = @shipment.address
60
63
 
61
- @order_items = @order.order_items.select { |o|
64
+ @order_items = @order.items.select { |o|
62
65
  params[:order_items].keys.include?( o.id.to_s ) && params[:order_items][ o.id.to_s ] == "1"
63
66
  }
64
67
 
@@ -0,0 +1,76 @@
1
+ class Admin::ShippingRateGroupsController < AdminController
2
+
3
+
4
+ ShippingRateGroup = Opensteam::ShipmentBase::ShippingRateGroup
5
+
6
+
7
+
8
+ def index
9
+ @groups = ShippingRateGroup.find( :all, :include => [ :shipping_rates, :payment_additions ] )
10
+ end
11
+
12
+
13
+ def new
14
+ @group = ShippingRateGroup.new
15
+
16
+ respond_to do |format|
17
+ format.html {}
18
+ end
19
+ end
20
+
21
+ def edit
22
+ @group = ShippingRateGroup.find( params[:id] )
23
+
24
+ respond_to do |format|
25
+ format.html {}
26
+ end
27
+ end
28
+
29
+
30
+ def create
31
+ @group = ShippingRateGroup.new( params[:group] )
32
+
33
+ respond_to do |format|
34
+ ret = @group.save
35
+ if ret && @group.errors.empty?
36
+ format.html { redirect_to :action => :index }
37
+ else
38
+ flash[:error] = "Could not save Group of ShippingRates"
39
+ format.html { render :action => :new }
40
+ end
41
+
42
+ end
43
+ end
44
+
45
+
46
+ def update
47
+ @group = ShippingRateGroup.find( params[:id] )
48
+
49
+ params[:group][:existing_rates] ||= {}
50
+
51
+ respond_to do |format|
52
+ if @group.update_attributes( params[:group] )
53
+ flash[:notice] = "Successfully updated ShippingRateGroup ##{@group.id}"
54
+ format.html { redirect_to :action => :index }
55
+ else
56
+ flash[:error] = "Error: Could not update ShippingRateGroup ##{@group.id}"
57
+ format.html { redirect_to :action => :edit }
58
+ end
59
+ end
60
+ end
61
+
62
+
63
+ def destroy
64
+ @group = ShippingRateGroup.find( params[:id] )
65
+
66
+ respond_to do |format|
67
+ @group.destroy
68
+ format.html { redirect_to :action => :index }
69
+ format.xml { head :ok }
70
+ end
71
+
72
+ end
73
+
74
+
75
+
76
+ end