tienda 1.0.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 (193) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +35 -0
  4. data/app/assets/images/tienda/chosen-sprite.png +0 -0
  5. data/app/assets/images/tienda/chosen-sprite@2x.png +0 -0
  6. data/app/assets/images/tienda/document.svg +1 -0
  7. data/app/assets/images/tienda/icons/bag.svg +1 -0
  8. data/app/assets/images/tienda/icons/balance.svg +1 -0
  9. data/app/assets/images/tienda/icons/box.svg +1 -0
  10. data/app/assets/images/tienda/icons/building.svg +1 -0
  11. data/app/assets/images/tienda/icons/chart.svg +1 -0
  12. data/app/assets/images/tienda/icons/chat.svg +1 -0
  13. data/app/assets/images/tienda/icons/checkbox.svg +1 -0
  14. data/app/assets/images/tienda/icons/checkbox2.svg +1 -0
  15. data/app/assets/images/tienda/icons/cloud.svg +1 -0
  16. data/app/assets/images/tienda/icons/cone.svg +1 -0
  17. data/app/assets/images/tienda/icons/credit_card.svg +1 -0
  18. data/app/assets/images/tienda/icons/currency.svg +1 -0
  19. data/app/assets/images/tienda/icons/edit.svg +14 -0
  20. data/app/assets/images/tienda/icons/flowchart.svg +1 -0
  21. data/app/assets/images/tienda/icons/gift.svg +1 -0
  22. data/app/assets/images/tienda/icons/globe.svg +1 -0
  23. data/app/assets/images/tienda/icons/id.svg +1 -0
  24. data/app/assets/images/tienda/icons/id2.svg +1 -0
  25. data/app/assets/images/tienda/icons/locked.svg +1 -0
  26. data/app/assets/images/tienda/icons/report.svg +1 -0
  27. data/app/assets/images/tienda/icons/search.svg +1 -0
  28. data/app/assets/images/tienda/icons/support.svg +1 -0
  29. data/app/assets/images/tienda/icons/tags.svg +1 -0
  30. data/app/assets/images/tienda/icons/toolbox.svg +1 -0
  31. data/app/assets/images/tienda/icons/unlocked.svg +1 -0
  32. data/app/assets/images/tienda/icons/wallet.svg +1 -0
  33. data/app/assets/images/tienda/logo.svg +47 -0
  34. data/app/assets/images/tienda/move.svg +1 -0
  35. data/app/assets/images/tienda/shoppe.svg +25 -0
  36. data/app/assets/images/tienda/square.svg +9 -0
  37. data/app/assets/images/tienda/statuses/accepted.svg +14 -0
  38. data/app/assets/images/tienda/statuses/paid.svg +16 -0
  39. data/app/assets/images/tienda/statuses/received.svg +15 -0
  40. data/app/assets/images/tienda/statuses/rejected.svg +14 -0
  41. data/app/assets/images/tienda/statuses/shipped.svg +14 -0
  42. data/app/assets/images/tienda/table-tear-off.png +0 -0
  43. data/app/assets/javascripts/tienda/application.coffee +119 -0
  44. data/app/assets/javascripts/tienda/chosen.jquery.js +1166 -0
  45. data/app/assets/javascripts/tienda/jquery_ui.js +6 -0
  46. data/app/assets/javascripts/tienda/mousetrap.js +9 -0
  47. data/app/assets/javascripts/tienda/order_form.coffee +47 -0
  48. data/app/assets/stylesheets/tienda/application.scss +585 -0
  49. data/app/assets/stylesheets/tienda/chosen.scss +424 -0
  50. data/app/assets/stylesheets/tienda/dialog.scss +25 -0
  51. data/app/assets/stylesheets/tienda/elements.scss +79 -0
  52. data/app/assets/stylesheets/tienda/printable.scss +67 -0
  53. data/app/assets/stylesheets/tienda/reset.scss +93 -0
  54. data/app/assets/stylesheets/tienda/sub.scss +106 -0
  55. data/app/assets/stylesheets/tienda/variables.scss +1 -0
  56. data/app/controllers/tienda/application_controller.rb +46 -0
  57. data/app/controllers/tienda/attachments_controller.rb +14 -0
  58. data/app/controllers/tienda/countries_controller.rb +47 -0
  59. data/app/controllers/tienda/dashboard_controller.rb +9 -0
  60. data/app/controllers/tienda/delivery_service_prices_controller.rb +45 -0
  61. data/app/controllers/tienda/delivery_services_controller.rb +47 -0
  62. data/app/controllers/tienda/orders_controller.rb +90 -0
  63. data/app/controllers/tienda/payments_controller.rb +33 -0
  64. data/app/controllers/tienda/product_categories_controller.rb +47 -0
  65. data/app/controllers/tienda/products_controller.rb +58 -0
  66. data/app/controllers/tienda/sessions_controller.rb +34 -0
  67. data/app/controllers/tienda/settings_controller.rb +16 -0
  68. data/app/controllers/tienda/stock_level_adjustments_controller.rb +40 -0
  69. data/app/controllers/tienda/tax_rates_controller.rb +49 -0
  70. data/app/controllers/tienda/users_controller.rb +53 -0
  71. data/app/controllers/tienda/variants_controller.rb +50 -0
  72. data/app/helpers/tienda/application_helper.rb +60 -0
  73. data/app/mailers/tienda/order_mailer.rb +25 -0
  74. data/app/mailers/tienda/user_mailer.rb +10 -0
  75. data/app/models/tienda/country.rb +27 -0
  76. data/app/models/tienda/delivery_service.rb +33 -0
  77. data/app/models/tienda/delivery_service_price.rb +31 -0
  78. data/app/models/tienda/order/actions.rb +98 -0
  79. data/app/models/tienda/order/billing.rb +105 -0
  80. data/app/models/tienda/order/delivery.rb +229 -0
  81. data/app/models/tienda/order/states.rb +69 -0
  82. data/app/models/tienda/order.rb +93 -0
  83. data/app/models/tienda/order_item.rb +239 -0
  84. data/app/models/tienda/payment.rb +80 -0
  85. data/app/models/tienda/product/product_attributes.rb +20 -0
  86. data/app/models/tienda/product/variants.rb +51 -0
  87. data/app/models/tienda/product.rb +169 -0
  88. data/app/models/tienda/product_attribute.rb +66 -0
  89. data/app/models/tienda/product_category.rb +23 -0
  90. data/app/models/tienda/setting.rb +68 -0
  91. data/app/models/tienda/stock_level_adjustment.rb +19 -0
  92. data/app/models/tienda/tax_rate.rb +46 -0
  93. data/app/models/tienda/user.rb +49 -0
  94. data/app/validators/permalink_validator.rb +7 -0
  95. data/app/views/layouts/tienda/application.html.haml +34 -0
  96. data/app/views/layouts/tienda/printable.html.haml +11 -0
  97. data/app/views/layouts/tienda/sub.html.haml +10 -0
  98. data/app/views/tienda/countries/_form.html.haml +35 -0
  99. data/app/views/tienda/countries/edit.html.haml +6 -0
  100. data/app/views/tienda/countries/index.html.haml +25 -0
  101. data/app/views/tienda/countries/new.html.haml +7 -0
  102. data/app/views/tienda/delivery_service_prices/_form.html.haml +44 -0
  103. data/app/views/tienda/delivery_service_prices/edit.html.haml +6 -0
  104. data/app/views/tienda/delivery_service_prices/index.html.haml +23 -0
  105. data/app/views/tienda/delivery_service_prices/new.html.haml +6 -0
  106. data/app/views/tienda/delivery_services/_form.html.haml +38 -0
  107. data/app/views/tienda/delivery_services/edit.html.haml +9 -0
  108. data/app/views/tienda/delivery_services/index.html.haml +27 -0
  109. data/app/views/tienda/delivery_services/new.html.haml +6 -0
  110. data/app/views/tienda/order_mailer/accepted.text.erb +12 -0
  111. data/app/views/tienda/order_mailer/received.text.erb +12 -0
  112. data/app/views/tienda/order_mailer/rejected.text.erb +10 -0
  113. data/app/views/tienda/order_mailer/shipped.text.erb +16 -0
  114. data/app/views/tienda/orders/_form.html.haml +55 -0
  115. data/app/views/tienda/orders/_order_details.html.haml +57 -0
  116. data/app/views/tienda/orders/_order_items.html.haml +38 -0
  117. data/app/views/tienda/orders/_order_items_form.html.haml +61 -0
  118. data/app/views/tienda/orders/_payments_form.html.haml +15 -0
  119. data/app/views/tienda/orders/_payments_table.html.haml +37 -0
  120. data/app/views/tienda/orders/_search_form.html.haml +24 -0
  121. data/app/views/tienda/orders/_status_bar.html.haml +35 -0
  122. data/app/views/tienda/orders/despatch_note.html.haml +45 -0
  123. data/app/views/tienda/orders/edit.html.haml +21 -0
  124. data/app/views/tienda/orders/index.html.haml +39 -0
  125. data/app/views/tienda/orders/new.html.haml +14 -0
  126. data/app/views/tienda/orders/show.html.haml +25 -0
  127. data/app/views/tienda/payments/refund.html.haml +13 -0
  128. data/app/views/tienda/product_categories/_form.html.haml +26 -0
  129. data/app/views/tienda/product_categories/edit.html.haml +6 -0
  130. data/app/views/tienda/product_categories/index.html.haml +19 -0
  131. data/app/views/tienda/product_categories/new.html.haml +6 -0
  132. data/app/views/tienda/products/_form.html.haml +118 -0
  133. data/app/views/tienda/products/_table.html.haml +42 -0
  134. data/app/views/tienda/products/edit.html.haml +8 -0
  135. data/app/views/tienda/products/import.html.haml +63 -0
  136. data/app/views/tienda/products/index.html.haml +9 -0
  137. data/app/views/tienda/products/new.html.haml +7 -0
  138. data/app/views/tienda/sessions/new.html.haml +12 -0
  139. data/app/views/tienda/sessions/reset.html.haml +12 -0
  140. data/app/views/tienda/settings/edit.html.haml +19 -0
  141. data/app/views/tienda/shared/error.html.haml +6 -0
  142. data/app/views/tienda/stock_level_adjustments/index.html.haml +40 -0
  143. data/app/views/tienda/tax_rates/form.html.haml +28 -0
  144. data/app/views/tienda/tax_rates/index.html.haml +17 -0
  145. data/app/views/tienda/user_mailer/new_password.text.erb +9 -0
  146. data/app/views/tienda/users/_form.html.haml +27 -0
  147. data/app/views/tienda/users/edit.html.haml +5 -0
  148. data/app/views/tienda/users/index.html.haml +17 -0
  149. data/app/views/tienda/users/new.html.haml +7 -0
  150. data/app/views/tienda/variants/form.html.haml +66 -0
  151. data/app/views/tienda/variants/index.html.haml +33 -0
  152. data/config/locales/en.yml +650 -0
  153. data/config/locales/pl.yml +650 -0
  154. data/config/locales/pt-BR.yml +643 -0
  155. data/config/routes.rb +42 -0
  156. data/db/countries.txt +252 -0
  157. data/db/migrate/20150124094549_create_tienda_initial_schema.rb +184 -0
  158. data/db/seeds.rb +128 -0
  159. data/db/seeds_data/poe400.jpg +0 -0
  160. data/db/seeds_data/snom-870-blk.jpg +0 -0
  161. data/db/seeds_data/snom-870-grey.jpg +0 -0
  162. data/db/seeds_data/snom-mm2.jpg +0 -0
  163. data/db/seeds_data/spa303.jpg +0 -0
  164. data/db/seeds_data/t18p.jpg +0 -0
  165. data/db/seeds_data/t20p.jpg +0 -0
  166. data/db/seeds_data/t22p.jpg +0 -0
  167. data/db/seeds_data/t26p.jpg +0 -0
  168. data/db/seeds_data/t41pn.jpg +0 -0
  169. data/db/seeds_data/t46gn.jpg +0 -0
  170. data/db/seeds_data/w52p.jpg +0 -0
  171. data/db/seeds_data/yhs32.jpg +0 -0
  172. data/lib/tasks/tienda.rake +29 -0
  173. data/lib/tienda/associated_countries.rb +20 -0
  174. data/lib/tienda/country_importer.rb +14 -0
  175. data/lib/tienda/default_navigation.rb +20 -0
  176. data/lib/tienda/engine.rb +48 -0
  177. data/lib/tienda/error.rb +21 -0
  178. data/lib/tienda/errors/inappropriate_delivery_service.rb +6 -0
  179. data/lib/tienda/errors/insufficient_stock_to_fulfil.rb +15 -0
  180. data/lib/tienda/errors/invalid_configuration.rb +6 -0
  181. data/lib/tienda/errors/not_enough_stock.rb +15 -0
  182. data/lib/tienda/errors/payment_declined.rb +6 -0
  183. data/lib/tienda/errors/refund_failed.rb +6 -0
  184. data/lib/tienda/errors/unorderable_item.rb +6 -0
  185. data/lib/tienda/navigation_manager.rb +81 -0
  186. data/lib/tienda/orderable_item.rb +39 -0
  187. data/lib/tienda/settings.rb +26 -0
  188. data/lib/tienda/settings_loader.rb +16 -0
  189. data/lib/tienda/setup_generator.rb +10 -0
  190. data/lib/tienda/version.rb +3 -0
  191. data/lib/tienda/view_helpers.rb +16 -0
  192. data/lib/tienda.rb +59 -0
  193. metadata +604 -0
@@ -0,0 +1,44 @@
1
+ = form_for [@delivery_service, @delivery_service_price] do |f|
2
+ = f.error_messages
3
+ = field_set_tag t('tienda.delivery_service_prices.identification_weight') do
4
+ .splitContainer
5
+ %dl.third
6
+ %dt= f.label :code, t('tienda.delivery_service_prices.code')
7
+ %dd= f.text_field :code, :class => 'focus text'
8
+
9
+ %dl.third
10
+ %dt= f.label :min_weight, t('tienda.delivery_service_prices.min_weight')
11
+ %dd= f.text_field :min_weight, :class => 'text'
12
+ %dl.third
13
+ %dt= f.label :max_weight, t('tienda.delivery_service_prices.max_weight')
14
+ %dd= f.text_field :max_weight, :class => 'text'
15
+
16
+ = field_set_tag t('tienda.delivery_service_prices.pricing') do
17
+ .splitContainer
18
+ %dl.third
19
+ %dt= f.label :price, t('tienda.delivery_service_prices.price')
20
+ %dd
21
+ .moneyInput
22
+ .currency= Tienda.settings.currency_unit.html_safe
23
+ = f.text_field :price, :class => 'text'
24
+ %dl.third
25
+ %dt= f.label :cost_price, t('tienda.delivery_service_prices.cost_price')
26
+ %dd
27
+ .moneyInput
28
+ .currency= Tienda.settings.currency_unit.html_safe
29
+ = f.text_field :cost_price, :class => 'text'
30
+ %dl.third
31
+ %dt= f.label :tax_rate_id, t('tienda.delivery_service_prices.tax_rate')
32
+ %dd= f.collection_select :tax_rate_id, Tienda::TaxRate.ordered, :id, :description, {:include_blank => true}, {:class => 'chosen-with-deselect', :data => {:placeholder => t('tienda.delivery_service_prices.no_tax')}}
33
+
34
+ = field_set_tag t('tienda.delivery_service_prices.countries') do
35
+ %dl
36
+ %dd
37
+ = f.collection_select :country_ids, Tienda::Country.ordered, :id, :name, {}, {:class => 'chosen', :multiple => true, :data => {:placeholder => t('tienda.delivery_service_prices.all_countries')}}
38
+ %p.help= t('tienda.delivery_service_prices.help.countries')
39
+
40
+ %p.submit
41
+ - unless @delivery_service_price.new_record?
42
+ %span.right= link_to t('tienda.delete'), [@delivery_service, @delivery_service_price], :class => 'button purple', :method => :delete, :data => {:confirm => "Are you sure you wish to remove this price?"}
43
+ = f.submit t('tienda.submit'), :class => 'button green'
44
+ = link_to t('tienda.cancel'), [@delivery_service, :delivery_service_prices], :class => 'button'
@@ -0,0 +1,6 @@
1
+ - @page_title = t('tienda.delivery_service_prices.delivery_services')
2
+
3
+ = content_for :header do
4
+ %p.buttons= link_to t('tienda.delivery_service_prices.back'), [@delivery_service, :delivery_service_prices], :class => 'button'
5
+ %h2.delivery_services= t('tienda.delivery_service_prices.delivery_services')
6
+ = render 'form'
@@ -0,0 +1,23 @@
1
+ - @page_title = t('tienda.delivery_service_prices.delivery_services')
2
+
3
+ = content_for :header do
4
+ %p.buttons
5
+ = link_to t('tienda.delivery_service_prices.new_price'), [:new, @delivery_service, :delivery_service_price], :class => 'button green'
6
+ = link_to t('tienda.delivery_service_prices.back_to_delivery_services'), :delivery_services, :class => 'button'
7
+ %h2.delivery_services= t('tienda.delivery_service_prices.pricing_for', delivery_name: @delivery_service.name)
8
+
9
+ .table
10
+ %table.data
11
+ %thead
12
+ %tr
13
+ %th= t('tienda.delivery_service_prices.code')
14
+ %th= t('tienda.delivery_service_prices.weight_allowance')
15
+ %th= t('tienda.delivery_service_prices.price')
16
+ %th= t('tienda.delivery_service_prices.cost')
17
+ %tbody
18
+ - for price in @delivery_service_prices
19
+ %tr
20
+ %td= link_to price.code, [:edit, @delivery_service, price]
21
+ %td #{number_to_weight price.min_weight} → #{number_to_weight price.max_weight}
22
+ %td= number_to_currency(price.price)
23
+ %td= number_to_currency price.cost_price
@@ -0,0 +1,6 @@
1
+ - @page_title = t('tienda.delivery_service_prices.delivery_services')
2
+
3
+ = content_for :header do
4
+ %p.buttons= link_to t('tienda.delivery_service_prices.back') , [@delivery_service, :delivery_service_prices], :class => 'button'
5
+ %h2.delivery_services= t('tienda.delivery_service_prices.delivery_services')
6
+ = render 'form'
@@ -0,0 +1,38 @@
1
+ = form_for @delivery_service do |f|
2
+ = f.error_messages
3
+ = field_set_tag t('tienda.delivery_services.details') do
4
+ .splitContainer
5
+ %dl.half
6
+ %dt= f.label :name, t('tienda.delivery_services.name')
7
+ %dd= f.text_field :name, :class => 'focus text'
8
+ %dl.half
9
+ %dt= f.label :code, t('tienda.delivery_services.code')
10
+ %dd= f.text_field :code, :class => 'text'
11
+ .splitContainer
12
+ %dl.half
13
+ %dt= f.label :active, t('tienda.delivery_services.active')
14
+ %dd.checkbox
15
+ = f.check_box :active
16
+ = f.label :active, t('tienda.delivery_services.active_info')
17
+ %dl.half
18
+ %dt= f.label :default, t('tienda.delivery_services.default')
19
+ %dd.checkbox
20
+ = f.check_box :default
21
+ = f.label :default, t('tienda.delivery_services.default_info')
22
+
23
+ = field_set_tag t('tienda.delivery_services.courier') do
24
+ .splitContainer
25
+ %dl.half
26
+ %dt= f.label :courier, t('tienda.delivery_services.courier_name')
27
+ %dd= f.text_field :courier, :class => 'text'
28
+ %dl.half
29
+ %dt= f.label :tracking_url, t('tienda.delivery_services.tracking_url')
30
+ %dd
31
+ = f.text_field :tracking_url, :class => 'text'
32
+ %p.help= t('tienda.delivery_services.tracking_url_help_html')
33
+
34
+ %p.submit
35
+ - unless @delivery_service.new_record?
36
+ %span.right= link_to t('tienda.delete'), [@delivery_service], :class => 'button purple', :method => :delete, :data => {:confirm => t('tienda.delivery_services.delete_confirmation')}
37
+ = f.submit t('tienda.submit'), :class => 'button green'
38
+ = link_to t('tienda.cancel'), :delivery_services, :class => 'button'
@@ -0,0 +1,9 @@
1
+ - @page_title = t('tienda.delivery_services.delivery_services')
2
+
3
+ = content_for :header do
4
+ %p.buttons
5
+ = link_to t('tienda.delivery_services.prices'), [@delivery_service, :delivery_service_prices], :class => 'button'
6
+ = link_to t('tienda.delivery_services.back'), :delivery_services, :class => 'button'
7
+ %h2.delivery_services= t('tienda.delivery_services.delivery_services')
8
+
9
+ = render 'form'
@@ -0,0 +1,27 @@
1
+ - @page_title = t('tienda.delivery_services.delivery_services')
2
+
3
+ = content_for :header do
4
+ %p.buttons= link_to t('tienda.delivery_services.new'), :new_delivery_service, :class => 'button green'
5
+ %h2.delivery_services= t('tienda.delivery_services.delivery_services')
6
+
7
+ .table
8
+ %table.data
9
+ %thead
10
+ %tr
11
+ %th= t('tienda.delivery_services.name')
12
+ %th= t('tienda.delivery_services.prices')
13
+ %th= t('tienda.delivery_services.courier')
14
+ %th= t('tienda.delivery_services.active?')
15
+ %th= t('tienda.delivery_services.default?')
16
+ %tbody
17
+ - if @delivery_services.empty?
18
+ %tr.empty
19
+ %td{:colspan => 5}= t('tienda.delivery_services.no_services')
20
+ - else
21
+ - for delivery_service in @delivery_services
22
+ %tr
23
+ %td= link_to delivery_service.name, [:edit, delivery_service]
24
+ %td= link_to t('tienda.delivery_services.set_prices'), [delivery_service, :delivery_service_prices]
25
+ %td= delivery_service.courier
26
+ %td= boolean_tag delivery_service.active?
27
+ %td= boolean_tag delivery_service.default?
@@ -0,0 +1,6 @@
1
+ - @page_title = t('tienda.delivery_services.delivery_services')
2
+
3
+ = content_for :header do
4
+ %p.buttons= link_to t('tienda.delivery_services.back'), :delivery_services, :class => 'button'
5
+ %h2.delivery_services= t('tienda.delivery_services.delivery_services')
6
+ = render 'form'
@@ -0,0 +1,12 @@
1
+ Hello <%=@order.first_name%>!
2
+
3
+ Re: Order #<%=@order.number%>
4
+
5
+ We're pleased to let you know that we have accepted your order and your payment of <%=number_to_currency @order.total%> has been taken from your card successfully.
6
+
7
+ We will e-mail you again when we ship your order from our warehouse.
8
+
9
+ Many thanks,
10
+
11
+ <%=Tienda.settings.store_name%>
12
+ <%=Tienda.settings.email_address%>
@@ -0,0 +1,12 @@
1
+ Hello <%=@order.first_name%>!
2
+
3
+ Re: Order #<%=@order.number%>
4
+
5
+ We're pleased to let you know that we have received your order and one of our team will be accepting it shortly.
6
+
7
+ We will e-mail you again when your order has been accepted.
8
+
9
+ Many thanks,
10
+
11
+ <%=Tienda.settings.store_name%>
12
+ <%=Tienda.settings.email_address%>
@@ -0,0 +1,10 @@
1
+ Hello <%=@order.first_name%>!
2
+
3
+ Re: Order #<%=@order.number%>
4
+
5
+ Unfortunately, this attached order was rejected. This is most likely due to our over-zealous fraud system so if you wish to continue with this order, please drop us an email or give us a call.
6
+
7
+ Many thanks,
8
+
9
+ <%=Tienda.settings.store_name%>
10
+ <%=Tienda.settings.email_address%>
@@ -0,0 +1,16 @@
1
+ Hello <%=@order.first_name%>!
2
+
3
+ Re: Order #<%=@order.number%>
4
+
5
+ We're pleased to let you know your order has been shipped and
6
+ will be with you shortly!
7
+
8
+ <% if @order.delivery_service && @order.courier_tracking_url -%>
9
+ You can the delivery online at:
10
+ <%=@order.courier_tracking_url%>
11
+ <% end -%>
12
+
13
+ Many thanks,
14
+
15
+ <%=Tienda.settings.store_name%>
16
+ <%=Tienda.settings.email_address%>
@@ -0,0 +1,55 @@
1
+ = field_set_tag t('tienda.orders.billing_address') do
2
+ .splitContainer
3
+ %dl.third
4
+ %dt= f.label :first_name, t('tienda.orders.first_name')
5
+ %dd= f.text_field :first_name, :class => 'focus text'
6
+ %dl.third
7
+ %dt= f.label :last_name, t('tienda.orders.last_name')
8
+ %dd= f.text_field :last_name, :class => 'text'
9
+ %dl.third
10
+ %dt= f.label :company, t('tienda.orders.company')
11
+ %dd= f.text_field :company, :class => 'text'
12
+ %dl
13
+ %dt= f.label :billing_address1, t('tienda.orders.address')
14
+ %dd.space= f.text_field :billing_address1, :class => 'text'
15
+ %dd.space= f.text_field :billing_address2, :class => 'text'
16
+ %dd.space= f.text_field :billing_address3, :class => 'text'
17
+ %dd.space= f.text_field :billing_address4, :class => 'text'
18
+ .splitContainer
19
+ %dl.half
20
+ %dt= f.label :billing_postcode, t('tienda.orders.post_code')
21
+ %dd= f.text_field :billing_postcode, :class => 'text'
22
+ %dl.half
23
+ %dt= f.label :billing_country_id, t('tienda.orders.country')
24
+ %dd= f.collection_select :billing_country_id, Tienda::Country.ordered, :id, :name, {:include_blank => true}, {:data => {:placeholder => t('tienda.orders.select_country')}}
25
+
26
+ .splitContainer
27
+ %dl.third
28
+ %dt= f.label :email_address, t('tienda.orders.email_address')
29
+ %dd= f.text_field :email_address, :class => 'text'
30
+ %dl.third
31
+ %dt= f.label :phone_number, t('tienda.orders.phone_number')
32
+ %dd= f.text_field :phone_number, :class => 'text'
33
+ %dl.third
34
+ %dt= f.label :separate_delivery_address, t('tienda.orders.separate_delivery_address')
35
+ %dd.checkbox
36
+ = f.check_box :separate_delivery_address
37
+ = f.label :separate_delivery_address, t('tienda.orders.use_separate_delivery_address?')
38
+
39
+ = field_set_tag t('tienda.orders.delivery_address'), :class => 'delivery' do
40
+ %dl
41
+ %dt= f.label :delivery_name, t('tienda.orders.delivery_name')
42
+ %dd= f.text_field :delivery_name, :class => 'text'
43
+ %dl
44
+ %dt= f.label :delivery_address1, t('tienda.orders.address')
45
+ %dd.space= f.text_field :delivery_address1, :class => 'text'
46
+ %dd.space= f.text_field :delivery_address2, :class => 'text'
47
+ %dd.space= f.text_field :delivery_address3, :class => 'text'
48
+ %dd.space= f.text_field :delivery_address4, :class => 'text'
49
+ .splitContainer
50
+ %dl.half
51
+ %dt= f.label :delivery_postcode, t('tienda.orders.post_code')
52
+ %dd= f.text_field :delivery_postcode, :class => 'text'
53
+ %dl.half
54
+ %dt= f.label :delivery_country_id, t('tienda.orders.country')
55
+ %dd= f.collection_select :delivery_country_id, Tienda::Country.ordered, :id, :name, {:include_blank => true}, {:data => {:placeholder => t('tienda.orders.select_country')}}
@@ -0,0 +1,57 @@
1
+ .details
2
+ .left
3
+ %dl
4
+ %dt= t('tienda.orders.name')
5
+ %dd= @order.full_name
6
+ %dt= t('tienda.orders.company')
7
+ %dd= @order.company.blank? ? '-' : @order.company
8
+ %dt
9
+ - if @order.separate_delivery_address?
10
+ = t('tienda.orders.billing_address')
11
+ - else
12
+ = t('tienda.orders.billing_delivery_address')
13
+
14
+ %dd= @order.billing_address1
15
+ %dd= @order.billing_address2
16
+ %dd= @order.billing_address3
17
+ %dd= @order.billing_address4
18
+ %dd= @order.billing_postcode
19
+ %dd= @order.billing_country.try(:name)
20
+ - if @order.separate_delivery_address?
21
+ %dt= t('tienda.orders.delivery_address')
22
+ %dd= @order.delivery_name
23
+ %dd= @order.delivery_address1
24
+ %dd= @order.delivery_address2
25
+ %dd= @order.delivery_address3
26
+ %dd= @order.delivery_address4
27
+ %dd= @order.delivery_postcode
28
+ %dd= @order.delivery_country.try(:name)
29
+ .right
30
+ %dl
31
+ %dt= t('tienda.orders.email_address')
32
+ %dd= mail_to @order.email_address
33
+ %dt= t('tienda.orders.telephone')
34
+ %dd= @order.phone_number
35
+ %dt= t('tienda.orders.weight')
36
+ %dd= number_to_weight @order.total_weight
37
+ - if @order.received?
38
+ %dt= t('tienda.orders.build_time')
39
+ %dd= distance_of_time_in_words(@order.created_at, @order.received_at)
40
+ - if @order.invoiced?
41
+ %dt= t('tienda.orders.invoice_number')
42
+ %dd= @order.invoice_number
43
+ %dt= t('tienda.orders.order_balance')
44
+ %dd= boolean_tag @order.paid_in_full?, nil, :true_text => number_to_currency(@order.balance), :false_text => number_to_currency(@order.balance)
45
+ - if @order.accepted? && !@order.shipped?
46
+ = form_tag [:ship, @order] do
47
+ %dl.form
48
+ %dt.padding= label_tag 'consignment_number', t('tienda.orders.consignment_number')
49
+ %dd= text_field_tag 'consignment_number', '', :class => 'text'
50
+ %dl.form
51
+ %dd= submit_tag t('tienda.orders.mark_as_shipped') , :class => 'button green button-mini'
52
+
53
+ - unless @order.accepted? || @order.rejected?
54
+ %dl.form
55
+ %dd
56
+ = link_to t('tienda.orders.accept'), [:accept, @order], :method => :post, :class => 'button green'
57
+ = link_to t('tienda.orders.reject'), [:reject, @order], :method => :post, :class => 'button purple'
@@ -0,0 +1,38 @@
1
+ .order_items
2
+ .table
3
+ %table.data
4
+ %thead
5
+ %tr
6
+ %th.qty= t('tienda.orders.qty')
7
+ %th= t('tienda.orders.item')
8
+ %th= t('tienda.orders.sku')
9
+ %th.money= t('tienda.orders.cost')
10
+ %th.money= t('tienda.orders.price')
11
+ %th.money= Tienda.settings.tax_name
12
+ %th.money= t('tienda.orders.sub_total')
13
+ %tbody
14
+ - for item in @order.order_items
15
+ %tr
16
+ %td.qty= item.quantity
17
+ %td.product= item.ordered_item.full_name
18
+ %td.sku= item.ordered_item.sku
19
+ %td.money= number_to_currency item.total_cost
20
+ %td.money= number_to_currency item.sub_total
21
+ %td.money= number_to_currency item.tax_amount
22
+ %td.money= number_to_currency item.total
23
+ - if @order.delivery_service
24
+ %td.qty
25
+ %td.product= link_to @order.delivery_service.name, [:edit, @order.delivery_service]
26
+ %td.sku
27
+ %td.money= number_to_currency @order.delivery_cost_price
28
+ %td.money= number_to_currency @order.delivery_price
29
+ %td.money= number_to_currency @order.delivery_tax_amount
30
+ %td.money= number_to_currency @order.delivery_price + @order.delivery_tax_amount
31
+ %tfoot
32
+ %tr
33
+ %td.qty= @order.total_items
34
+ %td{:colspan => 2}
35
+ %td.money= number_to_currency @order.total_cost
36
+ %td.money= number_to_currency @order.total_before_tax
37
+ %td.money= number_to_currency @order.tax
38
+ %td.money= number_to_currency @order.total
@@ -0,0 +1,61 @@
1
+ %table.data.orderItems
2
+ %thead
3
+ %tr
4
+ %th.product= t('tienda.orders.product')
5
+ %th.qty= t('tienda.orders.quantity')
6
+ %th.stock= t('tienda.orders.stock')
7
+ %th.price= t('tienda.orders.unit_price')
8
+ %th.tax= t('tienda.orders.tax')
9
+ %th.total= t('tienda.orders.sub_total')
10
+ %th.weight= t('tienda.orders.weight')
11
+ %tbody
12
+ - products = Tienda::Product.ordered
13
+ = f.fields_for :order_items do |of|
14
+ = of.hidden_field :ordered_item_type
15
+ %tr.item{:class => of.object.ordered_item ? 'existing' : 'new'}
16
+ %td.product{:colspan => of.object.ordered_item ? nil : 7}= of.collection_select :ordered_item_id, products, :id, :full_name, {:include_blank => true}, {:data => {:placeholder => t('tienda.orders.add_item')}}
17
+ - if of.object.ordered_item
18
+ %td.qty= of.text_field :quantity, :class => 'text'
19
+ %td.stock{:class => @order.new_record? && !of.object.in_stock? ? 'oos' : ''}= of.object.ordered_item.stock
20
+ %td.money-input
21
+ .moneyInput
22
+ = of.text_field :unit_price, :placeholder => number_to_currency(of.object.unit_price, :unit => ''), :class =>'text short'
23
+ %td.money-input
24
+ .moneyInput
25
+ = of.text_field :tax_amount, :placeholder => number_to_currency(of.object.tax_amount, :unit => ''), :class =>'text short'
26
+ %td
27
+ .moneyInput
28
+ = text_field_tag '_', number_to_currency(of.object.total, :unit => ''), :disabled => true, :class => 'text short'
29
+ %td= of.text_field :weight, :placeholder => of.object.weight, :class =>'text short'
30
+ - if @order.available_delivery_services.empty?
31
+ %tr.delivery
32
+ - if @order.delivery_required?
33
+ %td.none{:colspan => 7}= t('tienda.orders.missing_delivery_service')
34
+ - else
35
+ %td.none-needed{:colspan => 7 }= t('tienda.orders.no_delivery_required')
36
+ - else
37
+ %tr.delivery
38
+ %td.product= f.collection_select :delivery_service_id, @order.available_delivery_services, :id, :name
39
+ %td
40
+ %td
41
+ %td.money-input
42
+ .moneyInput
43
+ = f.text_field :delivery_price, :placeholder => number_to_currency(@order.delivery_price, :unit => ''), :class =>'text short'
44
+ %td.money-input
45
+ .moneyInput
46
+ = f.text_field :delivery_tax_amount, :placeholder => number_to_currency(@order.delivery_tax_amount, :unit => ''), :class => 'text short'
47
+ %td.money.total= text_field_tag '_', number_to_currency(@order.delivery_price + @order.delivery_tax_amount, :unit => ''), :class => 'text short', :disabled => true
48
+ %td
49
+ %tfoot
50
+ %tr
51
+ %td
52
+ %td
53
+ %td
54
+ %td= text_field_tag '_', number_to_currency(@order.total_before_tax, :unit => ''), :class => 'text short', :disabled => true
55
+ %td= text_field_tag '_', number_to_currency(@order.tax, :unit => ''), :class => 'text short', :disabled => true
56
+ %td= text_field_tag '_', number_to_currency(@order.total, :unit => ''), :class => 'text short', :disabled => true
57
+ %td.weight= text_field_tag '_', number_to_currency(@order.total_weight, :unit => ''), :class => 'text short', :disabled => true
58
+
59
+ - unless @order.new_record?
60
+ %p.slaWarning
61
+ = t('tienda.orders.sla_warning')
@@ -0,0 +1,15 @@
1
+ = form_for [@order, Tienda::Payment.new(:amount => @order.balance)] do |f|
2
+ %dl.text
3
+ %dt= f.label :method, t('tienda.orders.method')
4
+ %dd= f.text_field :method, :class => 'text'
5
+ %dl.text
6
+ %dt= f.label :reference, t('tienda.orders.reference')
7
+ %dd= f.text_field :reference, :class => 'text'
8
+ %dl.amount
9
+ %dt= f.label :amount, t('tienda.orders.amount')
10
+ %dd
11
+ .moneyInput
12
+ .currency= Tienda.settings.currency_unit.html_safe
13
+ = f.text_field :amount, :class => 'text'
14
+ %dl.submit
15
+ %dd= f.submit t('tienda.orders.add_payment') , :class => 'button green'
@@ -0,0 +1,37 @@
1
+ - unless @payments.empty?
2
+ .table
3
+ %table.data
4
+ %thead
5
+ %tr
6
+ %th= t('tienda.orders.id')
7
+ %th= t('tienda.orders.type')
8
+ %th= t('tienda.orders.method')
9
+ %th= t('tienda.orders.reference')
10
+ %th= t('tienda.orders.amount')
11
+ %th= t('tienda.orders.refunded?')
12
+ %th
13
+ %tbody
14
+ - for payment in @payments
15
+ %tr
16
+ %td= payment.id
17
+ %td
18
+ = payment.refund? ? t('tienda.orders.refund') : t('tienda.orders.payment')
19
+ %span.float-right= boolean_tag payment.confirmed?
20
+ %td= payment.method
21
+ %td= link_to_if payment.transaction_url, payment.reference, payment.transaction_url
22
+
23
+ - if payment.refund?
24
+ %td{:colspan => 2}
25
+ %b= number_to_currency payment.amount
26
+ - if payment.parent_payment_id
27
+ #{t('tienda.orders.from_payment')} ##{payment.parent_payment_id}
28
+ - else
29
+ %td= number_to_currency payment.amount
30
+ %td= boolean_tag payment.refunded?, nil, :true_text => number_to_currency(payment.amount_refunded)
31
+ %td.refund
32
+ - if payment.refundable?
33
+ = link_to t('tienda.orders.refund'), [:refund, @order, payment], :class => 'button purple button-mini', :rel => 'dialog'
34
+ - else
35
+ = link_to t('tienda.delete'), [@order, payment], :class => 'button purple button-mini', :data => {:confirm => t('tienda.orders.payment_remove_confirmation') }, :method => :delete
36
+ - else
37
+ %p.notice= t('tienda.orders.no_payments')
@@ -0,0 +1,24 @@
1
+ .orderSearch{:style => action_name == 'search' ? "display:block" : ''}
2
+ = search_form_for @query, :url => search_orders_path, :html => { :method => :post } do |f|
3
+ %dl.left
4
+ %dt= f.label :id_eq, t('tienda.orders.order_number')
5
+ %dd= f.text_field :id_eq
6
+ %dt= f.label :first_name_or_last_name_or_company_cont, t('tienda.orders.customer')
7
+ %dd= f.text_field :first_name_or_last_name_or_company_cont
8
+ %dt= f.label :address1_or_address2_or_address3_or_address4_or_postcode_cont, t('tienda.orders.billing_address')
9
+ %dd= f.text_field :billing_address1_or_billing_address2_or_billing_address3_or_billing_address4_or_billing_postcode_cont
10
+ %dt= f.label :consignment_number_cont, t('tienda.orders.consignment_number')
11
+ %dd= f.text_field :consignment_number_cont
12
+ %dt= f.label :received_at_eq, t('tienda.orders.received_between')
13
+ %dd
14
+ = f.text_field :received_at_gteq, :class => 'small'
15
+ &rarr;
16
+ = f.text_field :received_at_lteq, :class => 'small'
17
+ %dl.right
18
+ %dt= f.label :email_address_cont, t('tienda.orders.email_address')
19
+ %dd= f.text_field :email_address_cont
20
+ %dt= f.label :phone_number_cont, t('tienda.orders.phone_number')
21
+ %dd= f.text_field :phone_number_cont
22
+ %dt= f.label :status_eq, t('tienda.orders.status')
23
+ %dd= f.select :status_eq, [nil] + Tienda::Order::STATUSES.map { |s| [t("tienda.orders.statuses.#{s}"), s]}
24
+ %dd= f.submit t('tienda.orders.search'), :class => 'button green button'
@@ -0,0 +1,35 @@
1
+ .status-bar
2
+ %ul
3
+ - if @order.received?
4
+ %li.received
5
+ %h4= t('tienda.orders.order_received')
6
+ %p
7
+ = t('tienda.orders.status_bar.on_date', on: @order.received_at.to_s(:short))
8
+ = t('tienda.orders.status_bar.from_ip', ip: @order.ip_address)
9
+
10
+ - if @order.accepted?
11
+ %li.accepted
12
+ %h4= t('tienda.orders.order_accepted')
13
+ %p
14
+ = t('tienda.orders.status_bar.on_date', on: @order.accepted_at.to_s(:short))
15
+ - if @order.accepter
16
+ = t('tienda.orders.status_bar.by_user', user: @order.accepter.short_name)
17
+
18
+ - elsif @order.rejected?
19
+ %li.rejected
20
+ %h4= t('tienda.orders.order_rejected')
21
+ %p
22
+ = t('tienda.orders.status_bar.on_date', on: @order.rejected_at.to_s(:short))
23
+ - if @order.rejecter
24
+ = t('tienda.orders.status_bar.by_user', user: @order.rejecter.short_name)
25
+
26
+ - if @order.shipped?
27
+ %li.shipped
28
+ %h4= t('tienda.orders.order_shipped')
29
+ %p
30
+ = t('tienda.orders.status_bar.on_date', on: @order.shipped_at.to_s(:short))
31
+ = t('tienda.orders.status_bar.by_user', user: @order.shipper.try(:short_name) || 'Unknown')
32
+ - if @order.delivery_service && @order.courier_tracking_url
33
+ %p= link_to t('tienda.orders.status_bar.tracking_url'), @order.courier_tracking_url
34
+ - else
35
+ %p= t('tienda.orders.status_bar.consignment_no_html', consignment_number: @order.consignment_number)
@@ -0,0 +1,45 @@
1
+ - @page_title = "#{t('tienda.orders.despatch_note.order_number')} #{@order.number}"
2
+
3
+ .despatchNote
4
+ %header
5
+ %h1= Tienda.settings.store_name
6
+ %h2= t("tienda.orders.despatch_note.despatch_note")
7
+ .address
8
+ %p.name= @order.delivery_name
9
+ %p= @order.delivery_address1
10
+ %p= @order.delivery_address2
11
+ %p= @order.delivery_address3
12
+ %p= @order.delivery_address4
13
+ %p= @order.delivery_postcode
14
+ %p= @order.delivery_country.try(:name)
15
+
16
+ %table.details
17
+ %tr
18
+ %th= t("tienda.orders.despatch_note.order_number")
19
+ %th= t("tienda.orders.despatch_note.order_placed")
20
+ %th= t("tienda.orders.despatch_note.total_weight")
21
+ %th= t("tienda.orders.despatch_note.telephone")
22
+ %tr
23
+ %td= @order.number
24
+ %td= @order.received? ? @order.received_at.to_s(:long) : 'n/a'
25
+ %td= number_to_weight @order.total_weight
26
+ %td= @order.phone_number
27
+
28
+ %table.items
29
+ %thead
30
+ %tr
31
+ %th= t("tienda.orders.despatch_note.quantity")
32
+ %th= t("tienda.orders.despatch_note.product")
33
+ %th= t("tienda.orders.despatch_note.sku")
34
+ %th= t("tienda.orders.despatch_note.weight")
35
+ %th= t("tienda.orders.despatch_note.packed?")
36
+ %tbody
37
+ - for item in @order.order_items
38
+ %tr
39
+ %td= item.quantity
40
+ %td= item.ordered_item.full_name
41
+ %td= item.ordered_item.sku
42
+ %td= number_to_weight item.weight
43
+ %td.check
44
+
45
+ %p.footer= t('tienda.orders.despatch_note.footer', :default => "Thank you for your order!")
@@ -0,0 +1,21 @@
1
+ - @page_title = "#{t('tienda.orders.edit_order')} ##{@order.number}"
2
+
3
+ = content_for :header do
4
+ %p.buttons
5
+ = link_to t('tienda.orders.back_to_order'), @order, :class => 'button grey'
6
+ %h2.orders "#{t('tienda.orders.edit_order')} <b>##{@order.number}</b>"
7
+
8
+ = form_for @order, :html => {:class => 'orderForm'} do |f|
9
+ = f.error_messages
10
+ = render 'form', :f => f
11
+
12
+ = field_set_tag t('tienda.orders.notes') do
13
+ %dl
14
+ %dd= f.text_area :notes, :class => 'text'
15
+
16
+ = field_set_tag t('tienda.orders.ordered_products'), :class => 'padded' do
17
+ = render 'order_items_form', :f => f
18
+
19
+ %p.submit
20
+ = f.submit t('tienda.orders.save_order') , :class => 'button green'
21
+ = link_to t('tienda.cancel'), @order, :class => 'button'