camaleon_ecommerce 1.2.1 → 2.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.
- checksums.yaml +4 -4
- data/app/assets/images/plugins/ecommerce/switch.png +0 -0
- data/app/assets/javascripts/plugins/ecommerce/admin_product.js.coffee +1 -1
- data/app/assets/javascripts/plugins/ecommerce/admin_settings.js +16 -0
- data/app/assets/javascripts/plugins/ecommerce/cart.js +1 -0
- data/app/assets/javascripts/plugins/ecommerce/jquery.multi-select.js +535 -0
- data/app/assets/stylesheets/plugins/ecommerce/multi-select.css.scss +94 -0
- data/app/controllers/plugins/ecommerce/admin/orders_controller.rb +37 -20
- data/app/controllers/plugins/ecommerce/admin/settings_controller.rb +2 -2
- data/app/controllers/plugins/ecommerce/front/checkout_controller.rb +16 -15
- data/app/decorators/plugins/ecommerce/cart_decorator.rb +19 -0
- data/app/decorators/plugins/ecommerce/order_decorator.rb +70 -0
- data/app/decorators/plugins/ecommerce/product_decorator.rb +16 -9
- data/app/decorators/plugins/ecommerce/product_item_decorator.rb +5 -1
- data/app/helpers/plugins/ecommerce/ecommerce_email_helper.rb +60 -59
- data/app/helpers/plugins/ecommerce/ecommerce_functions_helper.rb +5 -10
- data/app/helpers/plugins/ecommerce/ecommerce_helper.rb +12 -3
- data/app/models/plugins/ecommerce/cart.rb +3 -25
- data/app/models/plugins/ecommerce/order.rb +0 -21
- data/app/models/plugins/ecommerce/payment_method.rb +4 -0
- data/app/models/plugins/ecommerce/shipping_method.rb +4 -1
- data/app/services/plugins/ecommerce/cart_service.rb +0 -9
- data/app/views/plugins/ecommerce/admin/orders/index.html.erb +47 -51
- data/app/views/plugins/ecommerce/admin/orders/show.html.erb +1 -1
- data/app/views/plugins/ecommerce/admin/payment_methods/form.html.erb +2 -6
- data/app/views/plugins/ecommerce/admin/payment_methods/index.html.erb +4 -6
- data/app/views/plugins/ecommerce/admin/settings/index.html.erb +60 -20
- data/app/views/plugins/ecommerce/admin/shipping_methods/form.html.erb +1 -5
- data/app/views/plugins/ecommerce/admin/shipping_methods/index.html.erb +2 -4
- data/app/views/plugins/ecommerce/front/checkout/cart_index.html.erb +2 -2
- data/app/views/plugins/ecommerce/front/checkout/index.html.erb +1 -1
- data/app/views/plugins/ecommerce/front/login.html.erb +1 -1
- data/app/views/plugins/ecommerce/front/orders/index.html.erb +2 -2
- data/app/views/plugins/ecommerce/front/orders/show.html.erb +13 -14
- data/app/views/plugins/ecommerce/partials/checkout/_details.html.erb +1 -1
- data/app/views/plugins/ecommerce/partials/checkout/_payments.html.erb +116 -110
- data/app/views/plugins/ecommerce/partials/checkout/_products_detail.html.erb +5 -2
- data/app/views/plugins/ecommerce/partials/checkout/_user_info.html.erb +0 -1
- data/app/views/plugins/ecommerce/partials/email/_billing_address.html.erb +11 -0
- data/app/views/plugins/ecommerce/partials/email/_product_table.html.erb +46 -0
- data/app/views/plugins/ecommerce/partials/email/_shipping_address.html.erb +11 -0
- data/app/views/{plugins/ecommerce/partials → post_types/commerce}/_cart_widget.html.erb +0 -0
- data/app/views/post_types/commerce/_product_info.html.erb +30 -32
- data/app/views/post_types/commerce/single.html.erb +9 -13
- data/config/camaleon_plugin.json +2 -1
- data/config/custom_models.rb +43 -0
- data/config/locales/en.yml +0 -1
- data/config/locales/es.yml +69 -7
- data/config/routes.rb +1 -0
- data/db/migrate/20161213222142_add_invoice_number.rb +6 -0
- data/db/migrate/20161214224919_remove_ecommerce_stock_field.rb +7 -0
- data/lib/ecommerce/engine.rb +4 -2
- data/lib/ecommerce/version.rb +1 -1
- metadata +58 -15
- data/app/assets/javascripts/plugins/ecommerce/jquery.creditCardValidator.js +0 -208
- data/app/services/plugins/ecommerce/order_service.rb +0 -26
- data/app/views/camaleon_cms/html_mailer/order_canceled.html.erb +0 -2
- data/app/views/camaleon_cms/html_mailer/order_confirmed.html.erb +0 -2
- data/app/views/camaleon_cms/html_mailer/order_received.html.erb +0 -5
- data/app/views/camaleon_cms/html_mailer/order_received_admin.html.erb +0 -3
- data/app/views/camaleon_cms/html_mailer/order_shipped.html.erb +0 -2
- data/app/views/camaleon_cms/html_mailer/recovery_cart.html.erb +0 -4
@@ -1,3 +1,4 @@
|
|
1
|
+
<%= content_tag :div, "<small><i>#{@cart.shipping_method.description.translate}</i></small>".html_safe, class: 'shipping_method_descr text-right' if @cart.shipping_method_id.present? %>
|
1
2
|
<div id="totals_section">
|
2
3
|
<h3><%= t('.total', default: 'Total') %></h3>
|
3
4
|
<table class="table table-bordered">
|
@@ -10,10 +11,12 @@
|
|
10
11
|
<th id="tax_col"><%= t('.tax', default: 'Tax') %></th>
|
11
12
|
<th id="subtotal_col"><%= t('.subtotal', default: 'Sub Total') %></th>
|
12
13
|
</tr>
|
13
|
-
<% @cart.product_items.decorate.each do |item|
|
14
|
+
<% @cart.product_items.decorate.each do |item| %>
|
14
15
|
<tr>
|
15
16
|
<td><%= item.qty %></td>
|
16
|
-
<td
|
17
|
+
<td>
|
18
|
+
<%= link_to(item.the_title, item.the_url) %>
|
19
|
+
</td>
|
17
20
|
<td><%= item.the_price %></td>
|
18
21
|
<td><%= item.the_tax %></td>
|
19
22
|
<td><%= item.the_sub_total %></td>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<% detail = order.get_meta("billing_address", {}) %>
|
2
|
+
<ul class="ec-list-orders-address">
|
3
|
+
<li><strong><%= t('.address', default: 'Address') %>1:</strong> <%= detail[:address1] %></li>
|
4
|
+
<li><strong><%= t('.address', default: 'Address') %>2:</strong> <%= detail[:address2] %></li>
|
5
|
+
<li><strong><%= t('.city', default: 'City') %>:</strong> <%= detail[:city] %></li>
|
6
|
+
<li><strong><%= t('.state', default: 'State') %>:</strong> <%= detail[:state] %></li>
|
7
|
+
<li><strong><%= t('.zip_code', default: 'Zip code') %>:</strong> <%= detail[:zip] %></li>
|
8
|
+
<li><strong><%= t('.country', default: 'Country') %>:</strong> <%= detail[:country] %></li>
|
9
|
+
<li><strong><%= t('.phone_number', default: 'Phone Number') %>:</strong> <%= detail[:phone_number] %>
|
10
|
+
</li>
|
11
|
+
</ul>
|
@@ -0,0 +1,46 @@
|
|
1
|
+
<table style="width: 100%;">
|
2
|
+
<tbody>
|
3
|
+
<tr>
|
4
|
+
<th><%= t('.qty', default: 'Quantity') %></th>
|
5
|
+
<th><%= t('.item', default: 'Item') %></th>
|
6
|
+
<th><%= t('.price', default: 'Price') %></th>
|
7
|
+
|
8
|
+
<th><%= t('.tax', default: 'Tax') %></th>
|
9
|
+
<th><%= t('.subtotal', default: 'Sub Total') %></th>
|
10
|
+
</tr>
|
11
|
+
<% order.product_items.decorate.each do |item| %>
|
12
|
+
<tr>
|
13
|
+
<td><%= item.qty %></td>
|
14
|
+
<td><%= link_to(item.cache_the_title, item.the_url) %></td>
|
15
|
+
<td><%= item.cache_the_price %></td>
|
16
|
+
<td><%= item.cache_the_tax %></td>
|
17
|
+
<td><%= item.cache_the_sub_total %></td>
|
18
|
+
</tr>
|
19
|
+
<% end %>
|
20
|
+
<tr>
|
21
|
+
<td colspan="2"></td>
|
22
|
+
<td colspan="2" class="text-right"><%= t('.total_excl', default: 'Total (excluding Tax)') %> </td>
|
23
|
+
<td><%= order.cache_the_sub_total %></td>
|
24
|
+
</tr>
|
25
|
+
<tr>
|
26
|
+
<td colspan="2"></td>
|
27
|
+
<td colspan="2" class="text-right"><%= t('.tax', default: 'Tax') %></td>
|
28
|
+
<td id="tax_total"><%= order.cache_the_tax %></td>
|
29
|
+
</tr>
|
30
|
+
<tr>
|
31
|
+
<td colspan="2"></td>
|
32
|
+
<td colspan="2" class="text-right"><%= t('.discount', default: 'Discount') %></td>
|
33
|
+
<td><%= order.cache_the_discounts %></td>
|
34
|
+
</tr>
|
35
|
+
<tr>
|
36
|
+
<td colspan="2"></td>
|
37
|
+
<td colspan="2" class="text-right"><%= t('.total_shipping', default: 'Total shipping') %></td>
|
38
|
+
<td><%= order.cache_the_shipping %></td>
|
39
|
+
</tr>
|
40
|
+
<tr>
|
41
|
+
<td colspan="2"></td>
|
42
|
+
<td colspan="2" class="text-right"><%= t('.total_price', default: 'Total Price') %></td>
|
43
|
+
<td><%= order.cache_the_total %></td>
|
44
|
+
</tr>
|
45
|
+
</tbody>
|
46
|
+
</table>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<% detail = order.get_meta("shipping_address", {}) %>
|
2
|
+
<ul class="ec-list-orders-address">
|
3
|
+
<li><strong><%= t('.address', default: 'Address') %>1:</strong> <%= detail[:address1] %></li>
|
4
|
+
<li><strong><%= t('.address', default: 'Address') %>2:</strong> <%= detail[:address2] %></li>
|
5
|
+
<li><strong><%= t('.city', default: 'City') %>:</strong> <%= detail[:city] %></li>
|
6
|
+
<li><strong><%= t('.state', default: 'State') %>:</strong> <%= detail[:state] %></li>
|
7
|
+
<li><strong><%= t('.zip_code', default: 'Zip code') %>:</strong> <%= detail[:zip] %></li>
|
8
|
+
<li><strong><%= t('.country', default: 'Country') %>:</strong> <%= detail[:country] %></li>
|
9
|
+
<li><strong><%= t('.phone_number', default: 'Phone Number') %>:</strong> <%= detail[:phone_number] %>
|
10
|
+
</li>
|
11
|
+
</ul>
|
File without changes
|
@@ -7,39 +7,37 @@
|
|
7
7
|
<hr/>
|
8
8
|
<p><%= product.the_excerpt %></p>
|
9
9
|
<hr/>
|
10
|
-
|
11
|
-
<% if product.
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
<
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
10
|
+
<%= form_tag(plugins_ecommerce_checkout_cart_add_path, :method => "post", :class => "form") do %>
|
11
|
+
<% if product.is_variation_product? %>
|
12
|
+
<div class="form-group">
|
13
|
+
<%= label_tag :variation_id %>
|
14
|
+
<select class="form-control required" name="variation_id" id="product_variation_id">
|
15
|
+
<% product.product_variations.each_with_index do |variation, index| %>
|
16
|
+
<option data-sku="<%= variation.sku %>" <%= 'selected' if params[:variation_id].to_s == variation.id.to_s %> <%= 'data-disabled="true"' if !product.in_stock?(variation.id) %> data-price="<%= product.the_price(variation.id) %>" value="<%= variation.id %>"><%= product.the_variation_title(variation.id) %></option>
|
17
|
+
<% end %>
|
18
|
+
</select>
|
19
|
+
</div>
|
20
|
+
<script>
|
21
|
+
jQuery(function(){
|
22
|
+
var panel = $('#product_view');
|
23
|
+
panel.find('#product_variation_id').change(function(){
|
24
|
+
var op = $(this).find('option:selected');
|
25
|
+
panel.find('#product_sku').html(op.attr('data-sku'));
|
26
|
+
panel.find('#product_price').html(op.attr('data-price'));
|
27
|
+
panel.find('#e_add_to_cart_field_group input, button').prop('disabled', !!op.attr('data-disabled'))
|
28
|
+
panel.find('#ecommerce-product-slider .carousel-indicators li:eq('+$(this).children().index(op)+')').click();
|
29
|
+
}).trigger('change');
|
30
|
+
});
|
31
|
+
</script>
|
32
|
+
<% end %>
|
33
|
+
<% if product.in_stock? %>
|
34
|
+
<div class="input-group" id="e_add_to_cart_field_group">
|
35
|
+
<span class="input-group-addon"><%= t('plugins.ecommerce.single.qty', default: 'Qty') %></span>
|
36
|
+
<%= number_field :cart, :qty, class: 'form-control', value: 1, min: 0 %>
|
37
|
+
<%= hidden_field :cart, :product_id, value: product.id %>
|
38
|
+
<span class="input-group-btn"><button class="btn btn-default" type="submit"><i class="fa fa-shopping-cart"></i> <%= t('plugins.ecommerce.single.add_to_cart', default: 'Add to cart') %></button></span>
|
39
|
+
</div>
|
40
40
|
<% else %>
|
41
41
|
<p><%= t('plugins.ecommerce.single.noavailable_items', default: 'No items available') %></p>
|
42
42
|
<% end %>
|
43
|
-
<% else %>
|
44
|
-
<p><%= t('plugins.ecommerce.single.no_stock', default: 'This product is not in stock') %></p>
|
45
43
|
<% end %>
|
@@ -1,20 +1,16 @@
|
|
1
|
-
<% args={custom_slider: nil, custom_footer: nil, extra_footer: nil, custom_sidebar: nil,
|
2
|
-
|
3
|
-
<%= render plugin_view('partials/cart_widget') %>
|
4
|
-
<% else %>
|
5
|
-
<%= raw args[:custom_cart_widget] %>
|
6
|
-
<% end %>
|
1
|
+
<% args={custom_slider: nil, custom_footer: nil, extra_footer: nil, custom_sidebar: nil, product: @post}; hooks_run('ecommerce_product_page', args) # permit custom footer %>
|
2
|
+
<%= render 'post_types/commerce/cart_widget' %>
|
7
3
|
<div class="row">
|
8
4
|
<div class="col-md-9 post-view">
|
9
5
|
<article class="post-content" id="product_view">
|
10
6
|
<div class="row">
|
11
7
|
<div class="col-md-6">
|
12
8
|
<% unless args[:custom_slider].present? %>
|
13
|
-
<div id="
|
9
|
+
<div id="ecommerce-product-slider" class="carousel slide" data-ride="carousel" data-interval="false">
|
14
10
|
<!-- Indicators -->
|
15
11
|
<ol class="carousel-indicators">
|
16
12
|
<% @post.the_photos.each_with_index do |pthoto, index| %>
|
17
|
-
<li data-target="#
|
13
|
+
<li data-target="#ecommerce-product-slider" data-slide-to="<%= index %>" class="<%= 'active' if index == 0 %>"></li>
|
18
14
|
<% end %>
|
19
15
|
</ol>
|
20
16
|
|
@@ -28,11 +24,11 @@
|
|
28
24
|
</div>
|
29
25
|
|
30
26
|
<!-- Controls -->
|
31
|
-
<a class="left carousel-control" href="#
|
27
|
+
<a class="left carousel-control" href="#ecommerce-product-slider" role="button" data-slide="prev">
|
32
28
|
<span class="glyphicon glyphicon-chevron-left fa fa-chevron-left" aria-hidden="true"></span>
|
33
29
|
<span class="sr-only">Previous</span>
|
34
30
|
</a>
|
35
|
-
<a class="right carousel-control" href="#
|
31
|
+
<a class="right carousel-control" href="#ecommerce-product-slider" role="button" data-slide="next">
|
36
32
|
<span class="glyphicon glyphicon-chevron-right fa fa-chevron-right " aria-hidden="true"></span>
|
37
33
|
<span class="sr-only">Next</span>
|
38
34
|
</a>
|
@@ -49,14 +45,14 @@
|
|
49
45
|
|
50
46
|
<% unless args[:custom_footer].present? %>
|
51
47
|
<div class="row">
|
52
|
-
<div class="col-md-
|
48
|
+
<div class="col-md-12">
|
53
49
|
<h3><%= t('plugins.ecommerce.single.descr', default: 'Description') %></h3>
|
54
50
|
<div class="item-content">
|
55
51
|
<%= raw @post.the_content %>
|
56
52
|
</div>
|
57
53
|
</div>
|
58
|
-
<% if (attrs = @post.the_attribute_fields('ecommerce_attrs').to_a).present? %>
|
59
|
-
<div class="col-md-
|
54
|
+
<% if (attrs = @post.the_attribute_fields('ecommerce_attrs').to_a).present? && attrs.map{|k,v| v.present? }.any? %>
|
55
|
+
<div class="col-md-12">
|
60
56
|
<h3><%= t('plugins.ecommerce.single.attrs', default: 'Attributes') %></h3>
|
61
57
|
<table class="table table-bordered">
|
62
58
|
<% attrs.each_with_index do |attr, index| %>
|
data/config/camaleon_plugin.json
CHANGED
@@ -30,6 +30,7 @@
|
|
30
30
|
],
|
31
31
|
"post_form_custom_html": ["ecommerce_admin_product_form"],
|
32
32
|
"created_post": ["ecommerce_admin_product_saved"],
|
33
|
-
"updated_post": ["ecommerce_admin_product_saved"]
|
33
|
+
"updated_post": ["ecommerce_admin_product_saved"],
|
34
|
+
"email_late": ["ecommerce_admin_before_email_send"]
|
34
35
|
}
|
35
36
|
}
|
data/config/custom_models.rb
CHANGED
@@ -24,6 +24,49 @@ Rails.application.config.to_prepare do
|
|
24
24
|
end
|
25
25
|
payment_method
|
26
26
|
end
|
27
|
+
|
28
|
+
# return the invoice number to start
|
29
|
+
def e_invoice_number_from
|
30
|
+
(e_settings[:invoice_number_from] || 1000000000).to_s.to_i
|
31
|
+
end
|
32
|
+
|
33
|
+
# return the invoice number to end
|
34
|
+
def e_invoice_number_to
|
35
|
+
(e_settings[:invoice_number_to] || 9999999999).to_s.to_i
|
36
|
+
end
|
37
|
+
|
38
|
+
# set a new value for of a ecommerce setting
|
39
|
+
def e_set_setting(key, value)
|
40
|
+
set_option(key, value, '_setting_ecommerce')
|
41
|
+
end
|
42
|
+
|
43
|
+
# return the settings for ecommerce
|
44
|
+
def e_settings(new_settings = nil)
|
45
|
+
set_meta('_setting_ecommerce', new_settings) if new_settings.present?
|
46
|
+
get_meta("_setting_ecommerce", {})
|
47
|
+
end
|
48
|
+
|
49
|
+
# return the email template for ecommerce events
|
50
|
+
def e_email_for(key = 'email_order_paid')
|
51
|
+
(e_settings[key]) || case key.to_s
|
52
|
+
when 'email_order_received'
|
53
|
+
'<h1>ORDER SUMMARY {number}</h1> Dear {name}, please review and retain the following order information for your records.<br>{order_table}'
|
54
|
+
when 'email_order_confirmed'
|
55
|
+
'<h1>ORDER CONFIRMED {number}</h1> Dear {name}, your order has been confirmed. Please retain the following order information for your records<br>{order_table}'
|
56
|
+
when 'email_order_shipped'
|
57
|
+
'<h1>SHIPMENT SUMMARY</h1> Dear {name}, your order {number} has been shipped. Shipped method: {shipping_name} <br>{order_table}<br>{tracking_url}'
|
58
|
+
when 'email_order_cancelled'
|
59
|
+
'<h1>ORDER {number} CANCELLED</h1> Dear {name}, your order has been cancelled. Please retain this cancellation information for your records. <br>{order_table}'
|
60
|
+
when 'email_order_invoice'
|
61
|
+
'<table style="width: 100%;"><tr><td><h1>INVOICE #{invoice_number}</h1> <h4>Order #{number}</h4><div>{current_date}</div></td><td style="text-align: center;"><img src="http://camaleon.tuzitio.com/media/132/logo2.png"></td></tr></table> <table style="width: 100%;"><tr><td><strong>Billing Address</strong><br>{billing_info}</td><td><strong>Shipping Address</strong><br>{shipping_info}</td></tr><tr><td colspan="2">{order_table}</td></tr></table>'
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
# return all keys accepted to replace in ecommerce emails
|
66
|
+
def e_email_keys
|
67
|
+
'{root_url} => site url, {date} => order date, {number} => order number, {name} => client first name, {full_name}, {order_table} => table of products of the order, {shipping_name} => shipping method name, {tracking_url} => the url of tracking, {shipping_info} => Shipping info, {billing_info} => Billing info, {invoice_number} => Sequential Invoice Number, {url} => Order Url'
|
68
|
+
end
|
69
|
+
|
27
70
|
end
|
28
71
|
|
29
72
|
CamaleonCms::User.class_eval do
|
data/config/locales/en.yml
CHANGED
data/config/locales/es.yml
CHANGED
@@ -54,6 +54,8 @@ es:
|
|
54
54
|
list_payment_methods: "Lista Métodos de Pago"
|
55
55
|
list_coupons: "Lista Cupones"
|
56
56
|
mark_Shipped: "Marcar como enviado"
|
57
|
+
variations:
|
58
|
+
not_deletable_product_variations: 'Algunos variaciones de producto no pueden ser eliminados'
|
57
59
|
message:
|
58
60
|
consignment_number: "Use {{numero_envio}} para insertar el no."
|
59
61
|
error_paypal_values: "Error Valores Paypal"
|
@@ -68,6 +70,7 @@ es:
|
|
68
70
|
order_accepted: 'Orden aceptado'
|
69
71
|
order_shipped: 'Orden enviado'
|
70
72
|
order_canceled: 'Orden cancelado'
|
73
|
+
order_email_resent: 'Correo Re-Enviado'
|
71
74
|
order_updated: 'Orden actualizado'
|
72
75
|
not_deletable_product_variations: 'Algunas variaciones de producto no pueden ser eliminados.'
|
73
76
|
not_deletable_product: 'El Producto no puede ser eliminado porque existen órdenes referenciadas.'
|
@@ -228,14 +231,45 @@ es:
|
|
228
231
|
message: 'Tu orden %{order} a sido cancelado por la siguiente razon: %{message}'
|
229
232
|
|
230
233
|
email:
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
234
|
+
invoice_number_exceeded_subject: 'Número de factura excedido.'
|
235
|
+
invoice_number_exceeded_body: 'El número de factura %{number} fué excedido. Por favor revise las configuraciones de comercio electrónico.'
|
236
|
+
order_received_label: 'Orden Recibido'
|
237
|
+
order_confirmed_label: 'Orden Confirmado'
|
238
|
+
order_bank_confirmed_label: 'Orden Confirmado Por Banco'
|
239
|
+
order_on_delivery_confirmed_label: 'Orden Confirmado Contra Entrega'
|
240
|
+
order_shipped_label: 'Orden Enviado'
|
241
|
+
order_cancelled_label: 'Orden Cancelado'
|
237
242
|
|
238
243
|
admin:
|
244
|
+
settings:
|
245
|
+
index:
|
246
|
+
title: 'Configuración de Comercio Clectrónico'
|
247
|
+
keywords_to_use: 'Palabras Clave para usar'
|
248
|
+
email_settings: 'Email Settings'
|
249
|
+
system_currency_unit: 'Tipo de Moneda para el administrador'
|
250
|
+
currency_weight: 'Unidad de Peso'
|
251
|
+
invoice_number_from: 'Número de Inicio de facturación'
|
252
|
+
invoice_number_to: 'Número Final de facturación'
|
253
|
+
shipping_countries: 'Paises para envío'
|
254
|
+
available_currencies_unit: 'Unidades de Moneda disponibles para visitantes'
|
255
|
+
email_order_received: 'Orden Recibido'
|
256
|
+
email_order_confirmed: 'Orden Confirmado'
|
257
|
+
email_order_shipped: 'Orden Enviado'
|
258
|
+
email_order_cancelled: 'Orden Cancelado'
|
259
|
+
email_order_invoice: 'Formato de Factura'
|
260
|
+
select_all: 'Seleccionar todo'
|
261
|
+
deselect_all: 'Des seleccionar todo'
|
262
|
+
|
263
|
+
|
264
|
+
orders:
|
265
|
+
index:
|
266
|
+
search_field: 'Correo, Código o Cupón'
|
267
|
+
created_after: 'Creado despues de'
|
268
|
+
created_before: 'Creado antes de'
|
269
|
+
search_status: 'Estado'
|
270
|
+
search_user: 'Usuario'
|
271
|
+
resend_email: 'Reenviar Correo'
|
272
|
+
|
239
273
|
product_attributes:
|
240
274
|
group_label: 'Etiqueta de Grupo'
|
241
275
|
label: 'Etiqueta'
|
@@ -354,7 +388,8 @@ es:
|
|
354
388
|
details: 'Detalles'
|
355
389
|
shipping_address: 'Dirección de envío'
|
356
390
|
created_at: 'Fecha de Creación'
|
357
|
-
received_at: '
|
391
|
+
received_at: 'Fecha de Recepción'
|
392
|
+
invoice_number: 'Número de Factura'
|
358
393
|
shipped_at: 'Enviado En'
|
359
394
|
city: 'Ciudad'
|
360
395
|
state: 'Estado'
|
@@ -394,6 +429,33 @@ es:
|
|
394
429
|
|
395
430
|
|
396
431
|
partials:
|
432
|
+
email:
|
433
|
+
billing_address:
|
434
|
+
address: 'Dirección'
|
435
|
+
city: 'Ciudad'
|
436
|
+
state: 'Estado'
|
437
|
+
zip_code: 'Código Zip'
|
438
|
+
country: 'País'
|
439
|
+
phone_number: 'Número de Teléfono'
|
440
|
+
shipping_address:
|
441
|
+
address: 'Dirección'
|
442
|
+
city: 'Ciudad'
|
443
|
+
state: 'Estado'
|
444
|
+
zip_code: 'Código Zip'
|
445
|
+
country: 'País'
|
446
|
+
phone_number: 'Número de Teléfono'
|
447
|
+
|
448
|
+
product_table:
|
449
|
+
qty: 'Cantidad'
|
450
|
+
item: 'Item'
|
451
|
+
price: 'Precio'
|
452
|
+
tax: 'Impuestos'
|
453
|
+
subtotal: 'Sub Total'
|
454
|
+
total_excl: 'Total (excluyendo impuestos)'
|
455
|
+
discount: 'Descuento'
|
456
|
+
total_shipping: 'Total envío'
|
457
|
+
total_price: 'Precio Total'
|
458
|
+
|
397
459
|
checkout:
|
398
460
|
user_info:
|
399
461
|
firstname: 'Nombre(s)'
|
data/config/routes.rb
CHANGED
@@ -47,6 +47,7 @@ Rails.application.routes.draw do
|
|
47
47
|
post 'product_attributes' => 'admin#save_product_attributes'
|
48
48
|
resources :orders, controller: 'admin/orders' do
|
49
49
|
get 'mark_accepted'
|
50
|
+
get 'resend_email'
|
50
51
|
get 'mark_bank_confirmed'
|
51
52
|
post 'mark_shipped'
|
52
53
|
post 'mark_canceled'
|
data/lib/ecommerce/engine.rb
CHANGED
data/lib/ecommerce/version.rb
CHANGED