camaleon_ecommerce 1.1 → 1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/plugins/ecommerce/admin_product.js.coffee +83 -0
  3. data/app/assets/javascripts/plugins/ecommerce/cart.js +3 -0
  4. data/app/controllers/plugins/ecommerce/admin/coupons_controller.rb +6 -12
  5. data/app/controllers/plugins/ecommerce/admin/orders_controller.rb +2 -8
  6. data/app/controllers/plugins/ecommerce/admin/payment_methods_controller.rb +7 -12
  7. data/app/controllers/plugins/ecommerce/admin/prices_controller.rb +0 -8
  8. data/app/controllers/plugins/ecommerce/admin/settings_controller.rb +0 -8
  9. data/app/controllers/plugins/ecommerce/admin/shipping_methods_controller.rb +6 -14
  10. data/app/controllers/plugins/ecommerce/admin/tax_rates_controller.rb +6 -12
  11. data/app/controllers/plugins/ecommerce/admin_controller.rb +27 -8
  12. data/app/controllers/plugins/ecommerce/front/checkout_controller.rb +42 -75
  13. data/app/controllers/plugins/ecommerce/front/orders_controller.rb +2 -10
  14. data/app/controllers/plugins/ecommerce/front_controller.rb +0 -8
  15. data/app/decorators/plugins/ecommerce/coupon_decorator.rb +0 -8
  16. data/app/decorators/plugins/ecommerce/product_decorator.rb +86 -35
  17. data/app/decorators/plugins/ecommerce/product_item_decorator.rb +27 -3
  18. data/app/decorators/plugins/ecommerce/product_variation_decorator.rb +18 -0
  19. data/app/helpers/plugins/ecommerce/ecommerce_email_helper.rb +11 -13
  20. data/app/helpers/plugins/ecommerce/ecommerce_functions_helper.rb +25 -11
  21. data/app/helpers/plugins/ecommerce/ecommerce_helper.rb +22 -27
  22. data/app/helpers/plugins/ecommerce/ecommerce_payment_helper.rb +1 -56
  23. data/app/models/plugins/ecommerce/attribute.rb +9 -0
  24. data/app/models/plugins/ecommerce/cart.rb +46 -28
  25. data/app/models/plugins/ecommerce/coupon.rb +0 -8
  26. data/app/models/plugins/ecommerce/legacy_cart.rb +50 -0
  27. data/app/models/plugins/ecommerce/legacy_order.rb +48 -0
  28. data/app/models/plugins/ecommerce/order.rb +0 -8
  29. data/app/models/plugins/ecommerce/order_detail.rb +0 -9
  30. data/app/models/plugins/ecommerce/payment_method.rb +0 -8
  31. data/app/models/plugins/ecommerce/product_item.rb +3 -10
  32. data/app/models/plugins/ecommerce/product_variation.rb +9 -0
  33. data/app/models/plugins/ecommerce/shipping_method.rb +0 -8
  34. data/app/models/plugins/ecommerce/tax_rate.rb +0 -8
  35. data/app/services/plugins/ecommerce/cart_service.rb +149 -0
  36. data/app/services/plugins/ecommerce/order_service.rb +26 -0
  37. data/app/services/plugins/ecommerce/product_item_service.rb +29 -0
  38. data/app/services/plugins/ecommerce/product_service.rb +17 -0
  39. data/app/services/plugins/ecommerce/site_service.rb +21 -0
  40. data/app/services/plugins/ecommerce/user_cart_service.rb +12 -0
  41. data/app/services/plugins/ecommerce/user_product_service.rb +29 -0
  42. data/app/services/plugins/ecommerce/util_service.rb +5 -0
  43. data/app/views/plugins/ecommerce/admin/orders/form.html.erb +28 -16
  44. data/app/views/plugins/ecommerce/admin/orders/index.html.erb +7 -1
  45. data/app/views/plugins/ecommerce/admin/payment_methods/form.html.erb +11 -1
  46. data/app/views/plugins/ecommerce/admin/product_attributes.html.erb +95 -0
  47. data/app/views/plugins/ecommerce/admin/products/_variations.html.erb +72 -0
  48. data/app/views/plugins/ecommerce/front/checkout/cart_index.html.erb +5 -5
  49. data/app/views/plugins/ecommerce/front/orders/show.html.erb +96 -89
  50. data/app/views/plugins/ecommerce/partials/_cart_widget.html.erb +3 -3
  51. data/app/views/plugins/ecommerce/partials/checkout/_details.html.erb +1 -1
  52. data/app/views/plugins/ecommerce/partials/checkout/_payments.html.erb +6 -1
  53. data/app/views/plugins/ecommerce/partials/checkout/_products_detail.html.erb +1 -1
  54. data/app/views/plugins/ecommerce/partials/checkout/_user_info.html.erb +26 -22
  55. data/app/views/post_types/commerce/single.html.erb +28 -12
  56. data/config/camaleon_plugin.json +4 -12
  57. data/config/custom_models.rb +10 -0
  58. data/config/locales/en.yml +3 -0
  59. data/config/locales/es.yml +112 -54
  60. data/config/routes.rb +2 -0
  61. data/db/migrate/20160527184747_add_new_cart_structure.rb +7 -4
  62. data/db/migrate/20160620200501_add_product_attributes_structure.rb +21 -0
  63. data/db/migrate/20160825174848_set_cama_post_decorator_class.rb +13 -0
  64. data/db/migrate/20160825232739_migrate_order_data.rb +87 -0
  65. data/lib/ecommerce/version.rb +1 -1
  66. metadata +22 -7
  67. data/app/assets/javascripts/plugins/ecommerce/admin.js +0 -0
  68. data/app/assets/javascripts/plugins/ecommerce/fix_form.js +0 -7
  69. data/config/currency_en.json +0 -154
  70. data/config/currency_es.json +0 -154
@@ -1,12 +1,12 @@
1
1
  <div class="row" style="min-height: 64px">
2
2
  <div class="col-md-9">
3
3
  <ol class="breadcrumb" style="margin: 0;">
4
- <% @ecommerce_bredcrumb.each_with_index do |m, index| %>
4
+ <% @ecommerce_breadcrumb.each_with_index do |m, index| %>
5
5
  <% if m[1].present? %>
6
- <li class="<%= "active" if @ecommerce_bredcrumb.size == index+1 %>">
6
+ <li class="<%= "active" if @ecommerce_breadcrumb.size == index+1 %>">
7
7
  <a href="<%= m[1] %>"><%= m[0] %></a></li>
8
8
  <% else %>
9
- <li class="<%= "active" if @ecommerce_bredcrumb.size == index+1 %>"><span><%= m[0] %></span></li>
9
+ <li class="<%= "active" if @ecommerce_breadcrumb.size == index+1 %>"><span><%= m[0] %></span></li>
10
10
  <% end %>
11
11
  <% end %>
12
12
  </ol>
@@ -31,5 +31,5 @@
31
31
  <%= render plugin_view('partials/checkout/products_detail') %>
32
32
  </div>
33
33
  <div class="text-right">
34
- <button type="submit" class="btn btn-primary">Next</button>
34
+ <button type="submit" class="btn btn-primary"><%= t('.next', default: 'Next') %></button>
35
35
  </div>
@@ -1,6 +1,6 @@
1
1
  <% if @cart.free_cart? %>
2
2
  <div class="free_order text-center col-md-12">
3
- <%= link_to('Complete Order', plugins_ecommerce_checkout_complete_free_order_url, class: 'btn btn-primary col-md-4 col-md-offset-4') %>
3
+ <%= link_to(t('.complete_order', default: 'Complete Order'), plugins_ecommerce_checkout_complete_free_order_url, class: 'btn btn-primary col-md-4 col-md-offset-4') %>
4
4
  </div>
5
5
  <% else %>
6
6
  <div id="e-payments-types" role="tabpanel">
@@ -114,6 +114,11 @@
114
114
  data-locale="<%= I18n.locale %>"></script>
115
115
  <% end %>
116
116
  <% end %>
117
+
118
+ <% if(custom_method = ecommerce_custom_payment_methods[payment.options[:type].to_sym]).present? %>
119
+ <%= render custom_method[:payment_form_view_path], payment: payment, options: payment.options, cart: @cart %>
120
+ <% end %>
121
+
117
122
  </div>
118
123
  <% end %>
119
124
  <%= content_tag(:div, 'No Payment Methods Defined', class: 'alert alert-danger') unless payment_methods.any? %>
@@ -13,7 +13,7 @@
13
13
  <% @cart.product_items.decorate.each do |item| product = item.product.decorate %>
14
14
  <tr>
15
15
  <td><%= item.qty %></td>
16
- <td><%= product.the_title %></td>
16
+ <td><%= link_to(item.the_title, product.the_url) %></td>
17
17
  <td><%= item.the_price %></td>
18
18
  <td><%= item.the_tax %></td>
19
19
  <td><%= item.the_sub_total %></td>
@@ -5,42 +5,43 @@
5
5
  %>
6
6
  <div class="row">
7
7
  <div id="billing_address" class="col-md-6">
8
- <h3><%= t('plugin.ecommerce.billing_address') %></h3>
9
-
8
+ <h3><%= t('.billing_address') %></h3>
10
9
  <div class="form-group">
11
- <label for=""><%= t('.firstname', default: 'First Name') %></label>
10
+ <label><%= t('.firstname', default: 'First Name') %></label>
12
11
  <%= text_field_tag 'order[billing_address][first_name]', billing_address[:first_name], class: 'form-control required' %>
13
-
14
12
  </div>
15
13
  <div class="form-group">
16
- <label for=""><%= t('.lastname', default: 'Last Name') %></label>
14
+ <label><%= t('.lastname', default: 'Last Name') %></label>
17
15
  <%= text_field_tag 'order[billing_address][last_name]',billing_address[:last_name], class: 'form-control required' %>
18
16
  </div>
19
17
  <div class="form-group">
20
- <label for=""><%= t('.address', default: 'Address') %></label>
18
+ <label><%= t('.address', default: 'Address') %></label>
21
19
  <%= text_field_tag 'order[billing_address][address1]',billing_address[:address1], class: 'form-control required' %>
22
20
  </div>
23
21
  <div class="form-group">
24
- <label for=""><%= t('.address', default: 'Address') %> 2</label>
22
+ <label><%= t('.address', default: 'Address') %> 2</label>
25
23
  <%= text_field_tag 'order[billing_address][address2]',billing_address[:address2], class: 'form-control' %>
26
24
  </div>
27
25
  <div class="form-group">
28
- <label for=""><%= t('.city', default: 'City') %></label>
26
+ <label><%= t('.city', default: 'City') %></label>
29
27
  <%= text_field_tag 'order[billing_address][city]',billing_address[:city], class: 'form-control required' %>
30
28
  </div>
31
29
  <div class="form-group">
32
- <label for=""><%= t('.country', default: 'Country') %></label>
30
+ <label><%= t('.country', default: 'Country') %></label>
33
31
  <%= country_select :billing_address, :country, {locale: I18n.locale.to_s, iso_codes: true, selected: billing_address[:country]}, { :name => 'order[billing_address][country]', class: 'form-control' } %>
34
32
  </div>
35
33
  <div class="form-group">
36
- <label for=""><%= t('.state', default: 'State') %></label>
34
+ <label><%= t('.state', default: 'State') %></label>
37
35
  <%= text_field_tag 'order[billing_address][state]',billing_address[:state], class: 'form-control' %>
38
36
  </div>
39
37
  <div class="form-group">
40
- <label for=""><%= t('.code_zip', default: 'Zip code') %></label>
38
+ <label><%= t('.code_zip', default: 'Zip code') %></label>
41
39
  <%= text_field_tag 'order[billing_address][zip]',billing_address[:zip], class: 'form-control' %>
42
40
  </div>
43
-
41
+ <div class="form-group">
42
+ <label><%= t('.phone_number', default: 'Phone Number') %></label>
43
+ <%= text_field_tag 'order[billing_address][phone_number]',billing_address[:phone_number], class: 'form-control' %>
44
+ </div>
44
45
  </div>
45
46
 
46
47
  <div id="shipping_address" class="col-md-6">
@@ -50,43 +51,46 @@
50
51
  </h3>
51
52
 
52
53
  <div class="form-group">
53
- <label for=""><%= t('.firstname') %></label>
54
+ <label><%= t('.firstname', default: 'First Name') %></label>
54
55
  <%= text_field_tag 'order[shipping_address][first_name]', shipping_address[:first_name], class: 'form-control required' %>
55
-
56
56
  </div>
57
57
  <div class="form-group">
58
- <label for=""><%= t('.lastname') %></label>
58
+ <label><%= t('.lastname', default: 'Last Name') %></label>
59
59
  <%= text_field_tag 'order[shipping_address][last_name]', shipping_address[:last_name], class: 'form-control required' %>
60
60
  </div>
61
61
  <div class="form-group">
62
- <label for=""><%= t('.address') %></label>
62
+ <label><%= t('.address', default: 'Address') %></label>
63
63
  <%= text_field_tag 'order[shipping_address][address1]', shipping_address[:address1], class: 'form-control required' %>
64
64
  </div>
65
65
  <div class="form-group">
66
- <label for=""><%= t('.address') %> 2</label>
66
+ <label><%= t('.address', default: 'Address') %> 2</label>
67
67
  <%= text_field_tag 'order[shipping_address][address2]', shipping_address[:address2], class: 'form-control' %>
68
68
  </div>
69
69
  <div class="form-group">
70
- <label for=""><%= t('.city') %></label>
70
+ <label><%= t('.city', default: 'City') %></label>
71
71
  <%= text_field_tag 'order[shipping_address][city]', shipping_address[:city], class: 'form-control required' %>
72
72
  </div>
73
73
  <div class="form-group">
74
- <label for=""><%= t('.country') %></label>
74
+ <label><%= t('.country', default: 'Country') %></label>
75
75
  <%= country_select :shipping_address, :country, {locale: I18n.locale.to_s, iso_codes: true, selected: billing_address[:country]}, { :name => 'order[shipping_address][country]', class: 'form-control' } %>
76
76
  </div>
77
77
  <div class="form-group">
78
- <label for=""><%= t('.state') %></label>
78
+ <label><%= t('.state', default: 'State') %></label>
79
79
  <%= text_field_tag 'order[shipping_address][state]', shipping_address[:state], class: 'form-control' %>
80
80
  </div>
81
81
  <div class="form-group">
82
- <label for=""><%= t('.code_zip') %></label>
82
+ <label><%= t('.code_zip', default: 'Zip code') %></label>
83
83
  <%= text_field_tag 'order[shipping_address][zip]', shipping_address[:zip], class: 'form-control' %>
84
84
  </div>
85
+ <div class="form-group">
86
+ <label><%= t('.phone_number', default: 'Phone Number') %></label>
87
+ <%= text_field_tag 'order[shipping_address][phone_number]', shipping_address[:phone_number], class: 'form-control' %>
88
+ </div>
85
89
  </div>
86
90
  <div class="clearfix"></div>
87
91
  <% unless defined?(as_partial) %>
88
92
  <div class="text-right col-md-12">
89
- <button type="submit" class="btn btn-primary">Next</button>
93
+ <button type="submit" class="btn btn-primary"><%= t('.next', default: 'Next') %></button>
90
94
  </div>
91
95
  <% end %>
92
96
  </div>
@@ -1,8 +1,7 @@
1
1
  <%= render plugin_view('partials/cart_widget') %>
2
- <% @field_values = @post.get_field_values_hash %>
3
2
  <div class="row">
4
3
  <div class="col-md-9 post-view">
5
- <article class="post-content">
4
+ <article class="post-content" id="product_view">
6
5
  <div class="row">
7
6
  <div class="col-md-6">
8
7
  <div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
@@ -36,16 +35,27 @@
36
35
 
37
36
  <div class="col-md-6">
38
37
  <h1><%= @post.the_title %></h1>
39
- <h3><%= t('plugins.ecommerce.single.sku', default: 'SKU') %>: <%= @post.the_sku %>
40
- <span class="pull-right"><%= raw @post.the_featured_status %></span></h3>
41
- <h4><%= @post.the_price %> <span class="pull-right"><%= raw @post.the_stock_status %></span></h4>
38
+ <h3>
39
+ <%= t('plugins.ecommerce.single.sku', default: 'SKU') %>: <span id="product_sku"><%= @post.the_sku %></span>
40
+ <span class="pull-right"><%= raw @post.the_featured_status %></span>
41
+ </h3>
42
+ <h4><span id="product_price"><%= @post.the_price %></span> <span class="pull-right"><%= raw @post.the_stock_status %></span></h4>
42
43
  <hr/>
43
44
  <p><%= @post.the_excerpt %></p>
44
45
  <hr/>
45
46
  <% if @post.in_stock? %>
46
- <p><%= t('plugins.ecommerce.single.available_items', default: 'Items available') %>: <%= @post.the_qty_real %></p>
47
47
  <% if @post.the_qty_real.to_i > 0 %>
48
48
  <%= form_tag(plugins_ecommerce_checkout_cart_add_path, :method => "post", :class => "form") do %>
49
+ <% if @post.is_variation_product? %>
50
+ <div class="form-group">
51
+ <%= label_tag :variation_id %>
52
+ <select class="form-control required" name="variation_id" id="product_variation_id">
53
+ <% @post.product_variations.each_with_index do |variation, index| %>
54
+ <option data-sku="<%= variation.sku %>" <%= 'selected' if index == 0 %> <%= 'disabled' unless @post.in_stock?(variation.id) %> data-price="<%= @post.the_price(variation.id) %>" value="<%= variation.id %>"><%= @post.the_variation_title(variation.id) %></option>
55
+ <% end %>
56
+ </select>
57
+ </div>
58
+ <% end %>
49
59
  <div class="input-group">
50
60
  <span class="input-group-addon"><%= t('plugins.ecommerce.single.qty', default: 'Qty') %></span>
51
61
  <%= number_field :cart, :qty, class: 'form-control', value: 1, min: 0, max: @post.the_qty_real.to_i %>
@@ -67,22 +77,28 @@
67
77
  <%= raw @post.the_content %>
68
78
  </div>
69
79
  </div>
70
-
71
- <% attrs = []; @field_values[:ecommerce_attrs].to_a.each { |attr| attrs << JSON.parse(attr) rescue {} } %>
72
- <% if attrs.present? %>
80
+ <% if (attrs = @post.the_attribute_fields('ecommerce_attrs').to_a).present? %>
73
81
  <div class="col-md-6">
74
82
  <h3><%= t('plugins.ecommerce.single.attrs', default: 'Attributes') %></h3>
75
83
  <table class="table table-bordered">
76
- <% attrs.each do |data| %>
84
+ <% attrs.each_with_index do |attr, index| %>
77
85
  <tr>
78
- <td><strong><%= data['attr'].to_s.translate %></strong></td>
79
- <td><%= data['value'].to_s.translate %></td>
86
+ <td><strong><%= attr['attr'].to_s.translate %></strong></td>
87
+ <td><%= attr['value'].to_s.translate %></td>
80
88
  </tr>
81
89
  <% end %>
82
90
  </table>
83
91
  </div>
84
92
  <% end %>
85
93
  </div>
94
+ <% if @post.is_variation_product? %>
95
+ <script>
96
+ jQuery(function(){
97
+ var panel = $('#product_view');
98
+ panel.find('#product_variation_id').change(function(){ var op = $(this).find('option:selected'); panel.find('#product_sku').html(op.attr('data-sku')); panel.find('#product_price').html(op.attr('data-price')); }).trigger('change');
99
+ });
100
+ </script>
101
+ <% end %>
86
102
  </article>
87
103
  </div>
88
104
  <div class="col-md-3">
@@ -26,23 +26,15 @@
26
26
  "admin_before_load": [
27
27
  "ecommerce_admin_before_load"
28
28
  ],
29
- "on_render_post": [
30
- "ecommerce_on_render_post"
31
- ],
32
- "on_render_post_type": [
33
- "ecommerce_on_render_post_type"
34
- ],
35
29
  "list_post": [
36
30
  "ecommerce_admin_list_post"
37
31
  ],
38
32
  "app_before_load": [
39
33
  "ecommerce_app_before_load"
40
34
  ],
41
- "edit_post": [
42
- "ecommerce_form_post"
43
- ],
44
- "new_post": [
45
- "ecommerce_form_post"
46
- ]
35
+ "post_form_custom_html": ["ecommerce_admin_product_form"],
36
+ "created_post": ["ecommerce_admin_product_created"],
37
+ "updated_post": ["ecommerce_admin_product_created"]
38
+
47
39
  }
48
40
  }
@@ -7,10 +7,20 @@ Rails.application.config.to_prepare do
7
7
  has_many :shipping_methods, :class_name => "Plugins::Ecommerce::ShippingMethod", foreign_key: :parent_id, dependent: :destroy
8
8
  has_many :coupons, :class_name => "Plugins::Ecommerce::Coupon", foreign_key: :parent_id, dependent: :destroy
9
9
  has_many :tax_rates, :class_name => "Plugins::Ecommerce::TaxRate", foreign_key: :parent_id, dependent: :destroy
10
+ has_many :product_attributes, :class_name => "Plugins::Ecommerce::Attribute", foreign_key: :site_id, dependent: :destroy
10
11
  def products
11
12
  post_types.where(slug: 'commerce').first.try(:posts)
12
13
  end
13
14
  end
15
+
16
+ CamaleonCms::User.class_eval do
17
+ has_many :carts, class_name: 'Plugins::Ecommerce::Cart', foreign_key: :user_id
18
+ has_many :orders, class_name: 'Plugins::Ecommerce::Order', foreign_key: :user_id
19
+ end
20
+
21
+ CamaleonCms::Post.class_eval do
22
+ has_many :product_variations, class_name: 'Plugins::Ecommerce::ProductVariation', foreign_key: :product_id, dependent: :destroy
23
+ end
14
24
 
15
25
  CamaleonCms::SiteDecorator.class_eval do
16
26
  def current_unit
@@ -190,3 +190,6 @@
190
190
  order_received_admin:
191
191
  subject: "New purchase"
192
192
 
193
+
194
+
195
+
@@ -17,6 +17,7 @@ es:
17
17
  edit_coupon: "Editar Cupón"
18
18
  edit_order: "Editar Pedido"
19
19
  all_products: "Todos los Productos"
20
+ product_attributes: 'Atributos de Productos'
20
21
  add_new: "Agregar Nuevo"
21
22
  add_tax_rate: "Agregar Tasa de Impuesto"
22
23
  add_price: "Agregar Precio"
@@ -218,6 +219,38 @@ es:
218
219
  order_received_admin:
219
220
  subject: "Nueva Compra"
220
221
 
222
+ plugins:
223
+ ecommerce:
224
+ admin:
225
+ product_attributes:
226
+ group_label: 'Etiqueta de Grupo'
227
+ label: 'Etiqueta'
228
+ value: 'Valor'
229
+ title: 'Atributos de Producto'
230
+ add_attr_group: 'Agregar nuevo grupo'
231
+ add_new_value: 'Agregar valor'
232
+ values: 'Valores'
233
+ code: 'Código'
234
+ confirm_delete: 'Esta seguro de eliminar?'
235
+
236
+ save_product_attributes:
237
+ saved_product_attributes: 'Atributos guardados'
238
+
239
+
240
+ products:
241
+ variations:
242
+ title: 'Variaciones de Producto'
243
+ attributes: 'Atributos'
244
+ add_new_variation: 'Agregar Variación'
245
+ add_new_value: 'Agregar nuevo valor'
246
+ photo: 'Foto'
247
+ sku: 'SKU'
248
+ price: 'Precio'
249
+ weight: 'Peso'
250
+ qty: 'Cantidad'
251
+ confirm_del: 'Esta seguro de eliminar esta variación?'
252
+
253
+
221
254
  # frontend
222
255
  plugins:
223
256
  ecommerce:
@@ -225,7 +258,8 @@ es:
225
258
  cart_no_products: 'No existen productos en su carro'
226
259
  checkout: 'Pago'
227
260
  saved_order: 'Orden guardado'
228
- not_enough_product_qty: 'No existen suficientes productos "%{product}" (%{qty})'
261
+ not_enough_product_qty: 'No existen suficientes productos "%{product}" (Disponible %{qty})'
262
+ missing_variation: 'Variación de producto no válido'
229
263
  added_product_in_cart: 'Producto agregado al carrito'
230
264
  cart_updated: 'Carro de compras actualizado'
231
265
  cart_deleted: 'Producto eliminado de su carro de compras'
@@ -274,50 +308,7 @@ es:
274
308
  cart_update:
275
309
  updated_products: 'Carro de compras actualizado'
276
310
 
277
- index:
278
- title: 'Información de Pedido'
279
- user_details: 'Detalles de Comprador'
280
- name: 'Nombre'
281
- email: 'Correo Electrónico'
282
- phone: 'Teléfono'
283
- coupon: 'Cupón de descuento'
284
- coupon_msg: 'Ingrese aquí su código'
285
- apply: 'Aplicar'
286
- shipping_options: 'Opciones de Envío'
287
- shipping_method: 'Método de envío'
288
- no_shipping_methods: 'No se han definido los métodos de envío'
289
- create_order: 'Crear Orden de Compra'
290
- total: 'Total'
291
- qty: 'Cantidad'
292
- item: 'Item'
293
- price: 'Precio'
294
- tax: 'Impuestos'
295
- subtotal: 'Sub Total'
296
- total_excl: 'Total (excluyendo impuestos)'
297
- discount: 'Descuento'
298
- total_shipping: 'Total envío'
299
- total_price: 'Precio Total'
300
311
  orders:
301
- select_payment:
302
- title: 'Método de Pago'
303
- paypal: 'Paypal'
304
- bank_transfer: 'Transferencia Bancaria'
305
- account_number: 'Número de Cuenta'
306
- details_transfer: 'Detalles'
307
- credit_card: 'Tarjeta de Crédito'
308
- authorize_net: 'Authorize.net'
309
- stripe: 'Stripe'
310
- order_now: 'Comprar'
311
- order_details: 'Detalles de Orden'
312
- first_name: 'Nombre'
313
- last_name: 'Apellidos'
314
- card_number: 'Tarjeta de Crédito'
315
- exp_date: 'Fecha de expiración'
316
- cvv: 'Código CVV'
317
- code_key: 'Código / ID / KEY / TICKET'
318
- bank_owner: 'Nombre de Cuenta en el banco'
319
- bank_name: 'Nombre del banco'
320
- descr: 'Descripción'
321
312
  index:
322
313
  title: 'Mis Ordenes'
323
314
  id: 'ID'
@@ -354,6 +345,18 @@ es:
354
345
  track_url: 'Url de seguimiento'
355
346
  no_shipping: 'Metodo de envío no asignado'
356
347
  no_shipped: 'No enviado'
348
+ phone_number: 'Número de Teléfono'
349
+ total: 'Total'
350
+ qty: 'Cantidad'
351
+ item: 'Item'
352
+ price: 'Precio'
353
+ tax: 'Impuestos'
354
+ subtotal: 'Sub Total'
355
+ total_excl: 'Total (excluyendo impuestos)'
356
+ discount: 'Descuento'
357
+ total_shipping: 'Total envío'
358
+ total_price: 'Precio Total'
359
+
357
360
  login:
358
361
  login: 'Acceder'
359
362
  register: 'Registro'
@@ -367,16 +370,71 @@ es:
367
370
 
368
371
 
369
372
  partials:
370
- form_address:
371
- firstname: 'Nombre(s)'
372
- lastname: 'Apellido'
373
- address: 'Dirección'
374
- city: 'Ciudad'
375
- country: 'País'
376
- state: 'Estado'
377
- code_zip: 'Código Zip'
378
- shipping_address: 'Dirección de envío'
379
- copy_address: 'Copiar mis datos de envío'
373
+ checkout:
374
+ user_info:
375
+ firstname: 'Nombre(s)'
376
+ lastname: 'Apellido'
377
+ address: 'Dirección'
378
+ city: 'Ciudad'
379
+ country: 'País'
380
+ state: 'Estado'
381
+ code_zip: 'Código Zip'
382
+ billing_address: "Dirección de facturación"
383
+ shipping_address: 'Dirección de envío'
384
+ copy_address: 'Copiar mis datos de envío'
385
+ phone_number: 'Número de Teléfono'
386
+ next: 'Siguiente'
387
+
388
+ payments:
389
+ title: 'Método de Pago'
390
+ paypal: 'Paypal'
391
+ bank_transfer: 'Transferencia Bancaria'
392
+ account_number: 'Número de Cuenta'
393
+ details_transfer: 'Detalles'
394
+ credit_card: 'Tarjeta de Crédito'
395
+ authorize_net: 'Authorize.net'
396
+ stripe: 'Stripe'
397
+ order_now: 'Comprar'
398
+ order_details: 'Detalles de Orden'
399
+ first_name: 'Nombre'
400
+ last_name: 'Apellidos'
401
+ card_number: 'Tarjeta de Crédito'
402
+ exp_date: 'Fecha de expiración'
403
+ cvv: 'Código CVV'
404
+ code_key: 'Código / ID / KEY / TICKET'
405
+ bank_owner: 'Nombre de Cuenta en el banco'
406
+ bank_name: 'Nombre del banco'
407
+ descr: 'Descripción'
408
+
409
+ products_details:
410
+ title: 'Información de Pedido'
411
+ user_details: 'Detalles de Comprador'
412
+ name: 'Nombre'
413
+ email: 'Correo Electrónico'
414
+ phone: 'Teléfono'
415
+
416
+ shipping_options: 'Opciones de Envío'
417
+ shipping_method: 'Método de envío'
418
+ no_shipping_methods: 'No se han definido los métodos de envío'
419
+ create_order: 'Crear Orden de Compra'
420
+ total: 'Total'
421
+ qty: 'Cantidad'
422
+ item: 'Item'
423
+ price: 'Precio'
424
+ tax: 'Impuestos'
425
+ subtotal: 'Sub Total'
426
+ total_excl: 'Total (excluyendo impuestos)'
427
+ discount: 'Descuento'
428
+ total_shipping: 'Total envío'
429
+ total_price: 'Precio Total'
430
+
431
+ details:
432
+ coupon: 'Cupón de descuento'
433
+ coupon_msg: 'Ingrese aquí su código'
434
+ apply: 'Aplicar'
435
+ shipping_options: 'Opciones de Envío'
436
+ next: 'Siguiente'
437
+
380
438
  cart_widget:
381
439
  shopping_cart: 'Carro de compras'
382
440
  products_list: 'Lista de productos'