|
@@ -1,275 +1,297 @@
|
|
|
<!-- BEGIN FORM-->
|
|
<!-- BEGIN FORM-->
|
|
|
-<%= form_for(@product, html: { class: "form-horizontal" }) do |f| %>
|
|
|
|
|
- <div class="portlet-body form" id="products_form">
|
|
|
|
|
- <% if @product.errors.any? %>
|
|
|
|
|
- <div class="alert alert-danger">
|
|
|
|
|
- <strong>Tiene <%= pluralize(@product.errors.count, "error") %> no se puede guardar el producto</strong><br>
|
|
|
|
|
- </div>
|
|
|
|
|
- <% end %>
|
|
|
|
|
- <div class="form-body">
|
|
|
|
|
- <input type="text" class="hidden" value="<%= @product.id %>" id="idproduct">
|
|
|
|
|
- <h4 class="form-section">Información general</h4>
|
|
|
|
|
- <div class="row">
|
|
|
|
|
- <div class="col-md-7">
|
|
|
|
|
- <%= hidden_field_tag :gain_margin, @pos_config.gain_margin %>
|
|
|
|
|
- <%= hidden_field_tag :tax_percent, @pos_config.tax_percent %>
|
|
|
|
|
- <div class="form-group">
|
|
|
|
|
- <%= f.label :sku, { class: "col-md-3 col-sm-2 control-label" } do %>SKU <span class="required">*</span>
|
|
|
|
|
- <% end %>
|
|
|
|
|
- <div class="col-md-9 col-sm-4">
|
|
|
|
|
- <div class="input-icon">
|
|
|
|
|
- <i class="fa fa-tag"></i>
|
|
|
|
|
- <%= f.text_field :sku, { class: "form-control input-medium", readonly: true } %>
|
|
|
|
|
- </div>
|
|
|
|
|
- <span class="help-block">El SKU se genera automáticamente en base a la línea y sublínea seleccionadas. </span>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="form-group">
|
|
|
|
|
- <%= f.label :barcode, { class: "col-md-3 col-sm-2 control-label" } do %> Código de barras <span class="required">*</span> <% end %>
|
|
|
|
|
- <div class="col-md-9 col-sm-4">
|
|
|
|
|
- <div class="input-icon">
|
|
|
|
|
- <i class="fa fa-barcode"></i>
|
|
|
|
|
- <%= f.text_field :barcode, { class: "form-control input-medium", readonly: true } %>
|
|
|
|
|
- </div>
|
|
|
|
|
- <span class="help-block">Para indicar el código de barras, debe escanearlo. </span>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="form-group">
|
|
|
|
|
- <%= f.label :name, "Producto", { class: "col-md-3 col-sm-2 control-label" } do %>Nombre <span class="required">*</span> <% end %>
|
|
|
|
|
- <div class="col-md-9 col-sm-4">
|
|
|
|
|
- <%= f.text_field :name, { class: "form-control input-large" } %>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="form-group">
|
|
|
|
|
- <%= f.label :description, "Descripción", { class: "col-md-3 col-sm-2 control-label" } %>
|
|
|
|
|
- <div class="col-md-9 col-sm-4">
|
|
|
|
|
- <%= f.text_area :description, { class: "form-control input-large" } %>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="form-group">
|
|
|
|
|
- <%= f.label :unit_id, "Unidad de medida", { class: "col-md-3 col-sm-2 control-label" } do %>Unidad de medida <span class="required">*</span> <% end %>
|
|
|
|
|
- <div class="col-md-9 col-sm-4">
|
|
|
|
|
- <%= f.collection_select :unit_id, Unit.vigentes, :id, :unit, { prompt: "Seleccione" }, { class: "form-control input-medium" } %>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="col-md-5">
|
|
|
|
|
- <div class="form-group">
|
|
|
|
|
- <%= f.label :img_product, "Imagen producto", { class: "col-md-5 col-sm-2 control-label" } %>
|
|
|
|
|
- <div class="col-md-7 col-sm-4">
|
|
|
|
|
- <div class="fileinput fileinput-new" data-provides="fileinput">
|
|
|
|
|
- <div class="fileinput-new thumbnail" style="width: 200px; height: 150px;">
|
|
|
|
|
- <% if @product.img_product? %>
|
|
|
|
|
- <%= image_tag @product.img_product %>
|
|
|
|
|
- <% else %>
|
|
|
|
|
- <%= image_tag "no-image.png" %>
|
|
|
|
|
- <% end %>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="fileinput-preview fileinput-exists thumbnail" style="max-width: 200px; max-height: 150px;"> </div>
|
|
|
|
|
- <div>
|
|
|
|
|
- <span class="btn default btn-file">
|
|
|
|
|
- <span class="fileinput-new"> Seleccione imagen </span>
|
|
|
|
|
- <span class="fileinput-exists"> Cambiar </span>
|
|
|
|
|
- <%= f.file_field :img_product, { class: "default" } %>
|
|
|
|
|
- <%= f.hidden_field :img_product_cache %>
|
|
|
|
|
- </span>
|
|
|
|
|
- <a href="javascript:;" class="btn red fileinput-exists" data-dismiss="fileinput"> Borrar </a>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <h4 class="form-section">Información del producto</h4>
|
|
|
|
|
- <div class="row">
|
|
|
|
|
- <div class="form-group ">
|
|
|
|
|
- <%= f.label :inventory, "¿Se maneja inventario de este producto?", { class: "col-md-3 col-sm-3 control-label" } do %>¿Este producto tendrá inventario? <span class="required">*</span> <% end %>
|
|
|
|
|
- <div class="col-md-9 col-sm-2">
|
|
|
|
|
- <%= f.check_box(:inventory,
|
|
|
|
|
- {
|
|
|
|
|
- class: "make-switch",
|
|
|
|
|
- data: {
|
|
|
|
|
- on_color: "success",
|
|
|
|
|
- off_color: "danger",
|
|
|
|
|
- on_text: "Si",
|
|
|
|
|
- off_text: "No"
|
|
|
|
|
- }
|
|
|
|
|
- }, "true","false"
|
|
|
|
|
- ) %>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="form-group">
|
|
|
|
|
- <%
|
|
|
|
|
- @category = nil
|
|
|
|
|
- @subcategory = nil;
|
|
|
|
|
- @prompt = 'Seleccione'
|
|
|
|
|
- @disabled = true
|
|
|
|
|
- if @product.categories[0].present? && @product.categories[0].parent_id == 0
|
|
|
|
|
- @category = @product.categories[0]
|
|
|
|
|
- @prompt = ''
|
|
|
|
|
- elsif @product.categories[0].present?
|
|
|
|
|
- @category = Category.find(@product.categories[0].parent_id)
|
|
|
|
|
- @subcategory = @product.categories[0]
|
|
|
|
|
- @disabled = false
|
|
|
|
|
- end
|
|
|
|
|
- %>
|
|
|
|
|
- <%= label_tag :categorias, "Líneas de producto", { class: "col-md-3 col-sm-3 control-label" } do %>Líneas de producto <span class="required">*</span> <% end %>
|
|
|
|
|
- <div class="col-md-4 col-sm-4">
|
|
|
|
|
- <%= select_tag 'categorias', options_from_collection_for_select(Category.activos_padre, 'id', 'category', :selected => (@category.id unless @category.nil?)), { :include_blank => "Seleccione", :class => 'form-control' } %>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="form-group">
|
|
|
|
|
- <%= f.label :category_ids, "Sublinea del producto", { class: "col-md-3 col-sm-3 control-label" } %>
|
|
|
|
|
- <div class="col-md-4 col-sm-4">
|
|
|
|
|
- <%= f.collection_select(:category_ids, @category.nil? ? {} : Category.where(:parent_id => @category.id), :id, :category , options = { :include_blank => @prompt, :selected => (@subcategory.id unless @subcategory.nil?) }, :class => "form-control", :disabled => @disabled) %>
|
|
|
|
|
- <%= f.hidden_field :category_ids, { :id => 'subcategory_hidden' } %>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="form-group">
|
|
|
|
|
- <%= f.label :include_purchase_tax, "¿Incluir IVA en compra?", { class: "col-md-3 col-sm-3 control-label" } do %> ¿Incluir IVA en compra? <span class="required">*</span> <% end %>
|
|
|
|
|
- <div class="col-md-9 col-sm-2">
|
|
|
|
|
- <%= f.check_box(:include_purchase_tax,
|
|
|
|
|
- {
|
|
|
|
|
- class: "make-switch",
|
|
|
|
|
- data: {
|
|
|
|
|
- on_color: "success",
|
|
|
|
|
- off_color: "danger",
|
|
|
|
|
- on_text: "Si",
|
|
|
|
|
- off_text: "No"
|
|
|
|
|
- }
|
|
|
|
|
- }, "1","0"
|
|
|
|
|
- ) %>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="form-group">
|
|
|
|
|
- <%= f.label :include_sale_tax, "¿Incluir IVA en venta?", { class: "col-md-3 col-sm-3 control-label" } do %> ¿Incluir IVA en venta? <span class="required">*</span> <% end %>
|
|
|
|
|
- <div class="col-md-9 col-sm-2">
|
|
|
|
|
- <%= f.check_box(:include_sale_tax,
|
|
|
|
|
- {
|
|
|
|
|
- class: "make-switch",
|
|
|
|
|
- data: {
|
|
|
|
|
- on_color: "success",
|
|
|
|
|
- off_color: "danger",
|
|
|
|
|
- on_text: "Si",
|
|
|
|
|
- off_text: "No"
|
|
|
|
|
- }
|
|
|
|
|
- }, "1","0"
|
|
|
|
|
- ) %>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="form-group">
|
|
|
|
|
- <%= f.label :is_in_dollars, "¿Se compra en dólares?", { class: "col-md-3 col-sm-3 control-label" } do %> ¿Se compra en dólares? <span class="required">*</span> <% end %>
|
|
|
|
|
- <div class="col-md-9 col-sm-2">
|
|
|
|
|
- <%= f.check_box(:is_in_dollars,
|
|
|
|
|
- {
|
|
|
|
|
- class: "make-switch",
|
|
|
|
|
- data: {
|
|
|
|
|
- on_color: "success",
|
|
|
|
|
- off_color: "danger",
|
|
|
|
|
- on_text: "Si",
|
|
|
|
|
- off_text: "No"
|
|
|
|
|
- }
|
|
|
|
|
- }, "true","false"
|
|
|
|
|
- ) %>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="form-group inventory">
|
|
|
|
|
- <%= f.label :price_base_dollars, "Precio de compra neto", { class: "col-md-3 col-sm-3 control-label" } %>
|
|
|
|
|
- <div class="col-md-3 col-sm-3">
|
|
|
|
|
- <div class="input-group <%= (@product.persisted? && @product.is_in_dollars?) ? '' : 'hidden' %>" id="price_base_usd_div">
|
|
|
|
|
- <span class="input-group-addon"> $ </span>
|
|
|
|
|
- <%= f.text_field :price_base_dollars, { class: "form-control mask_decimal" } %>
|
|
|
|
|
- <span class="input-group-addon"> USD </span>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="input-group <%= (@product.persisted? && !@product.is_in_dollars?) ? '' : 'hidden' %>" id="price_base_mxn_div">
|
|
|
|
|
- <span class="input-group-addon"> $ </span>
|
|
|
|
|
- <%= f.text_field :price_base, { class: "form-control mask_decimal" } %>
|
|
|
|
|
- <span class="input-group-addon"> MXN </span>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="form-group inventory">
|
|
|
|
|
- <%= f.label :price_sale, "Precio de venta base", { class: "col-md-3 col-sm-3 control-label" } do %> Precio de venta base
|
|
|
|
|
- <span class="required">*</span>
|
|
|
|
|
- <% end %>
|
|
|
|
|
- <div class="col-md-3 col-sm-3">
|
|
|
|
|
- <div class="input-group">
|
|
|
|
|
- <span class="input-group-addon"> $ </span>
|
|
|
|
|
- <%= f.text_field :price_sale, { class: "form-control mask_decimal" } %>
|
|
|
|
|
- <span class="input-group-addon"> MXN </span>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="col-md-6 col-sm-6">
|
|
|
|
|
- <span class="help-block">El precio de venta base será calculado de acuerdo al porcentaje de utilidad especificado, sólo en caso de especificar el precio de compra neto.</span>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="form-group">
|
|
|
|
|
- <%= f.label :presentation, "¿El producto tiene variantes?", { class: "col-md-3 col-sm-3 control-label" } do %>¿El producto tiene variantes?
|
|
|
|
|
- <span class="required">*</span>
|
|
|
|
|
- <% end %>
|
|
|
|
|
- <div class="col-md-9 col-sm-2">
|
|
|
|
|
- <%= f.check_box(:presentation,
|
|
|
|
|
- {
|
|
|
|
|
- class: "make-switch",
|
|
|
|
|
- data: {
|
|
|
|
|
- on_color: "success",
|
|
|
|
|
- off_color: "danger",
|
|
|
|
|
- on_text: "Si",
|
|
|
|
|
- off_text: "No"
|
|
|
|
|
- },
|
|
|
|
|
- readonly: @with_presentation
|
|
|
|
|
- }, "true", "false"
|
|
|
|
|
- ) %>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <h4 class="form-section presentaciones">Variantes</h4>
|
|
|
|
|
- <div class="row presentaciones">
|
|
|
|
|
- <% if @product.persisted? %>
|
|
|
|
|
- <div class="col-md-offset-2 col-md-9 col-sm-offset-2 col-sm-9">
|
|
|
|
|
- <%= render 'products_children' %>
|
|
|
|
|
- </div>
|
|
|
|
|
- <% else %>
|
|
|
|
|
- <div class="col-md-9 col-md-offset-3">
|
|
|
|
|
- <div class="alert alert-warning hidden">
|
|
|
|
|
- Son <strong id="variantes"></strong> variantes del producto.
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="form-group ">
|
|
|
|
|
- <%= f.label :size_list, "Tallas", { class: "col-md-3 control-label" } %>
|
|
|
|
|
- <div class="col-md-9">
|
|
|
|
|
- <%= f.collection_select(:size_list, @product.size_list, :to_s, :to_s, { include_blank: false }, { class: "form-control input-medium", 'data-role'=>'tagsinput', multiple: true }) %>
|
|
|
|
|
- <span class="help-block">Ingrese las diferentes tallas, separándolas con coma (,) </span>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="form-group ">
|
|
|
|
|
- <%= f.label :color_list, "Colores", { class: "col-md-3 control-label" } %>
|
|
|
|
|
- <div class="col-md-9">
|
|
|
|
|
- <%= f.collection_select(:color_list, @product.color_list, :to_s, :to_s, { include_blank: false }, { class: "form-control input-medium", 'data-role'=>'tagsinput', multiple: true }) %>
|
|
|
|
|
- <span class="help-block">Ingrese los diferentes colores, separándolos con coma (,) </span>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="form-group ">
|
|
|
|
|
- <%= f.label :style_list, "Estilos", { class: "col-md-3 control-label" } %>
|
|
|
|
|
- <div class="col-md-9">
|
|
|
|
|
- <%= f.collection_select(:style_list, @product.style_list, :to_s, :to_s, { include_blank: false }, { class: "form-control input-medium", 'data-role'=>'tagsinput', multiple: true }) %>
|
|
|
|
|
- <span class="help-block">Ingrese los diferentes estilos, separándolos con coma (,) </span>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <%= hidden_field_tag :variants %>
|
|
|
|
|
- <% end %>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="form-actions">
|
|
|
|
|
- <div class="row">
|
|
|
|
|
- <div class="col-md-offset-3 col-md-9">
|
|
|
|
|
- <%= f.submit 'Guardar', { class: "btn green" } %>
|
|
|
|
|
- <%= link_to 'Cancelar', products_path(filter: @filter, current_page: @current_page), { class: "btn default" } %>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
|
|
+<%= form_for(@product, :html => {:class=>"form-horizontal"}) do |f| %>
|
|
|
|
|
+ <div class="portlet-body form" id="products_form">
|
|
|
|
|
+ <% if @product.errors.any? %>
|
|
|
|
|
+ <div class="alert alert-danger">
|
|
|
|
|
+ <strong>Tiene <%= pluralize(@product.errors.count, "error") %> no se puede guardar el producto</strong><br>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <% end %>
|
|
|
|
|
+ <div class="form-body">
|
|
|
|
|
+ <input type="text" class="hidden" value="<%= @product.id %>" id="idproduct">
|
|
|
|
|
+ <h4 class="form-section">Información general</h4>
|
|
|
|
|
+ <div class="row">
|
|
|
|
|
+ <div class="col-md-7">
|
|
|
|
|
+ <%= hidden_field_tag :gain_margin, @pos_config.gain_margin %>
|
|
|
|
|
+ <%= hidden_field_tag :tax_percent, @pos_config.tax_percent %>
|
|
|
|
|
+ <div class="form-group">
|
|
|
|
|
+ <%= f.label :sku, {:class=>"col-md-3 control-label"} do %>SKU <span class="required">*</span>
|
|
|
|
|
+ <% end %>
|
|
|
|
|
+ <div class="col-md-9">
|
|
|
|
|
+ <div class="input-icon">
|
|
|
|
|
+ <i class="fa fa-tag"></i>
|
|
|
|
|
+ <%= f.text_field :sku, {:class=>"form-control input-medium", :readonly => true } %>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <span class="help-block">El SKU se genera automaticamente en base a la linea y sublinea seleccionadas. </span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="form-group">
|
|
|
|
|
+ <%= f.label :barcode, {:class=>"col-md-3 control-label"} do %> Codigo de barras <span class="required">*</span>
|
|
|
|
|
+ <% end %>
|
|
|
|
|
+ <div class="col-md-9">
|
|
|
|
|
+ <div class="input-icon">
|
|
|
|
|
+ <i class="fa fa-barcode"></i>
|
|
|
|
|
+ <%= f.text_field :barcode, {:class=>"form-control input-medium", :readonly => true } %>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <span class="help-block">Si el codigo de barras ya existe escaneelo, si desea generarlo clickee el switch. </span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="form-group">
|
|
|
|
|
+ <%= f.label :name, "Producto", {:class=>"col-md-3 control-label"} do %>Nombre
|
|
|
|
|
+ <span class="required">*</span>
|
|
|
|
|
+ <% end %>
|
|
|
|
|
+ <div class="col-md-9">
|
|
|
|
|
+ <%= f.text_field :name, {:class=>"form-control"} %>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="form-group">
|
|
|
|
|
+ <%= f.label :description, "Descripción", {:class=>"col-md-3 control-label"} %>
|
|
|
|
|
+ <div class="col-md-9">
|
|
|
|
|
+ <%= f.text_area :description, {:class=>"form-control"} %>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="form-group">
|
|
|
|
|
+ <%= f.label :unit_id, "Unidad de medida", {:class=>"col-md-3 control-label"} do %>Unidad de medida <span class="required">*</span>
|
|
|
|
|
+ <% end %>
|
|
|
|
|
+ <div class="col-md-9">
|
|
|
|
|
+ <%= f.collection_select :unit_id, Unit.vigentes, :id, :unit, {:prompt => "Seleccione"}, {:class => "form-control input-medium"} %>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="col-md-5">
|
|
|
|
|
+ <div class="form-group">
|
|
|
|
|
+ <%= f.label :img_product, "Imagen producto", {:class=>"col-md-5 control-label"} %>
|
|
|
|
|
+ <div class="col-md-7">
|
|
|
|
|
+ <div class="fileinput fileinput-new" data-provides="fileinput">
|
|
|
|
|
+ <div class="fileinput-new thumbnail" style="width: 200px; height: 150px;">
|
|
|
|
|
+ <% if @product.img_product? %>
|
|
|
|
|
+ <%= image_tag @product.img_product %>
|
|
|
|
|
+ <% else %>
|
|
|
|
|
+ <%= image_tag "no-image.png" %>
|
|
|
|
|
+ <% end %>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fileinput-preview fileinput-exists thumbnail" style="max-width: 200px; max-height: 150px;"> </div>
|
|
|
|
|
+ <div>
|
|
|
|
|
+ <span class="btn default btn-file">
|
|
|
|
|
+ <span class="fileinput-new"> Seleccione imagen </span>
|
|
|
|
|
+ <span class="fileinput-exists"> Cambiar </span>
|
|
|
|
|
+ <%= f.file_field :img_product, {:class=>"default"} %>
|
|
|
|
|
+ <%= f.hidden_field :img_product_cache %>
|
|
|
|
|
+ </span>
|
|
|
|
|
+ <a href="javascript:;" class="btn red fileinput-exists" data-dismiss="fileinput"> Borrar </a>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <h4 class="form-section">Información del producto</h4>
|
|
|
|
|
+ <div class="row">
|
|
|
|
|
+ <div class="form-group ">
|
|
|
|
|
+ <%= f.label :inventory, "¿Se maneja inventario de este producto?", {:class=>"col-md-3 control-label"} do %>¿Este producto tendrá inventario?
|
|
|
|
|
+ <span class="required">*</span>
|
|
|
|
|
+ <% end %>
|
|
|
|
|
+ <div class="col-md-9">
|
|
|
|
|
+ <%= f.check_box(:inventory,
|
|
|
|
|
+ {
|
|
|
|
|
+ class: "make-switch",
|
|
|
|
|
+ data: {
|
|
|
|
|
+ on_color: "success",
|
|
|
|
|
+ off_color: "danger",
|
|
|
|
|
+ on_text: "Si",
|
|
|
|
|
+ off_text: "No"
|
|
|
|
|
+ }
|
|
|
|
|
+ }, "true","false"
|
|
|
|
|
+ ) %>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <div class="form-group">
|
|
|
|
|
+ <%
|
|
|
|
|
+ @category = nil
|
|
|
|
|
+ @subcategory = nil;
|
|
|
|
|
+ @prompt = 'Seleccione'
|
|
|
|
|
+ @disabled = true
|
|
|
|
|
+ if @product.categories[0].present? && @product.categories[0].parent_id == 0
|
|
|
|
|
+ @category = @product.categories[0]
|
|
|
|
|
+ @prompt = ''
|
|
|
|
|
+ elsif @product.categories[0].present?
|
|
|
|
|
+ @category = Category.find(@product.categories[0].parent_id)
|
|
|
|
|
+ @subcategory = @product.categories[0]
|
|
|
|
|
+ @disabled = false
|
|
|
|
|
+ end
|
|
|
|
|
+ %>
|
|
|
|
|
+ <%= label_tag :categorias, "Líneas de producto", {:class=>"col-md-3 control-label"} do %>Líneas de producto
|
|
|
|
|
+ <span class="required">*</span>
|
|
|
|
|
+ <% end %>
|
|
|
|
|
+ <div class="col-md-4">
|
|
|
|
|
+ <%= select_tag 'categorias',
|
|
|
|
|
+ options_from_collection_for_select(Category.activos_padre, 'id', 'category',
|
|
|
|
|
+ :selected => (@category.id unless @category.nil?)),
|
|
|
|
|
+ {:include_blank => "Seleccione", :class => 'form-control'} %>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="form-group">
|
|
|
|
|
+ <%= f.label :category_ids, "Sublinea del producto", {:class=>"col-md-3 control-label"} %>
|
|
|
|
|
+ <div class="col-md-4">
|
|
|
|
|
+ <%= f.collection_select(:category_ids, @category.nil? ? {} : Category.where(:parent_id => @category.id), :id, :category , options ={:include_blank => @prompt, :selected => (@subcategory.id unless @subcategory.nil?) }, :class => "form-control", :disabled => @disabled) %>
|
|
|
|
|
+ <%= f.hidden_field :category_ids, {:id => 'subcategory_hidden'}%>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="form-group">
|
|
|
|
|
+ <%= f.label :include_purchase_tax, "¿Incluir IVA en compra?", {:class=>"col-md-3 control-label"} do %> ¿Incluir IVA en compra?
|
|
|
|
|
+ <span class="required">*</span>
|
|
|
|
|
+ <% end %>
|
|
|
|
|
+ <div class="col-md-9">
|
|
|
|
|
+ <%= f.check_box(:include_purchase_tax,
|
|
|
|
|
+ {
|
|
|
|
|
+ class: "make-switch",
|
|
|
|
|
+ data: {
|
|
|
|
|
+ on_color: "success",
|
|
|
|
|
+ off_color: "danger",
|
|
|
|
|
+ on_text: "Si",
|
|
|
|
|
+ off_text: "No"
|
|
|
|
|
+ }
|
|
|
|
|
+ }, "1","0"
|
|
|
|
|
+ ) %>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="form-group">
|
|
|
|
|
+ <%= f.label :include_sale_tax, "¿Incluir IVA en venta?", {:class=>"col-md-3 control-label"} do %> ¿Incluir IVA en venta?
|
|
|
|
|
+ <span class="required">*</span>
|
|
|
|
|
+ <% end %>
|
|
|
|
|
+ <div class="col-md-9">
|
|
|
|
|
+ <%= f.check_box(:include_sale_tax,
|
|
|
|
|
+ {
|
|
|
|
|
+ class: "make-switch",
|
|
|
|
|
+ data: {
|
|
|
|
|
+ on_color: "success",
|
|
|
|
|
+ off_color: "danger",
|
|
|
|
|
+ on_text: "Si",
|
|
|
|
|
+ off_text: "No"
|
|
|
|
|
+ }
|
|
|
|
|
+ }, "1","0"
|
|
|
|
|
+ ) %>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="form-group">
|
|
|
|
|
+ <%= f.label :is_in_dollars, "¿Se compra en dolares?", {:class=>"col-md-3 control-label"} do %> ¿Se compra en dolares?
|
|
|
|
|
+ <span class="required">*</span>
|
|
|
|
|
+ <% end %>
|
|
|
|
|
+ <div class="col-md-9">
|
|
|
|
|
+ <%= f.check_box(:is_in_dollars,
|
|
|
|
|
+ {
|
|
|
|
|
+ class: "make-switch",
|
|
|
|
|
+ data: {
|
|
|
|
|
+ on_color: "success",
|
|
|
|
|
+ off_color: "danger",
|
|
|
|
|
+ on_text: "Si",
|
|
|
|
|
+ off_text: "No"
|
|
|
|
|
+ }
|
|
|
|
|
+ }, "true","false"
|
|
|
|
|
+ ) %>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="form-group inventory">
|
|
|
|
|
+ <%= f.label :price_base_dollars, "Precio de compra neto", {:class=>"col-md-3 control-label"} %>
|
|
|
|
|
+ <div class="col-md-3">
|
|
|
|
|
+
|
|
|
|
|
+ <div class="input-group <%=(@product.persisted? && @product.is_in_dollars?) ? '' : 'hidden' %>" id="price_base_usd_div">
|
|
|
|
|
+ <span class="input-group-addon"> $ </span>
|
|
|
|
|
+ <%= f.text_field :price_base_dollars, {:class=>"form-control mask_decimal"} %>
|
|
|
|
|
+ <span class="input-group-addon"> USD </span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <div class="input-group <%=(@product.persisted? && !@product.is_in_dollars?) ? '' : 'hidden' %>" id="price_base_mxn_div">
|
|
|
|
|
+ <span class="input-group-addon"> $ </span>
|
|
|
|
|
+ <%= f.text_field :price_base, {:class=>"form-control mask_decimal"} %>
|
|
|
|
|
+ <span class="input-group-addon"> MXN </span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="form-group inventory">
|
|
|
|
|
+ <%= f.label :price_sale, "Precio de venta base", {:class=>"col-md-3 control-label"} do %> Precio de venta base
|
|
|
|
|
+ <span class="required">*</span>
|
|
|
|
|
+ <% end %>
|
|
|
|
|
+ <div class="col-md-3">
|
|
|
|
|
+ <div class="input-group">
|
|
|
|
|
+ <span class="input-group-addon"> $ </span>
|
|
|
|
|
+ <%= f.text_field :price_sale, {:class=>"form-control mask_decimal"} %>
|
|
|
|
|
+ <span class="input-group-addon"> MXN </span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="col-md-6">
|
|
|
|
|
+ <span class="help-block">El precio de venta base será calculado de acuerdo al porcentaje de utilidad especificado, solo en en caso de especificar el precio de compra neto.</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="form-group">
|
|
|
|
|
+ <%= f.label :presentation, "¿El producto tiene variantes?", {:class=>"col-md-3 control-label"} do %>¿El producto tiene variantes?
|
|
|
|
|
+ <span class="required">*</span>
|
|
|
|
|
+ <% end %>
|
|
|
|
|
+ <div class="col-md-9">
|
|
|
|
|
+ <%= f.check_box(:presentation,
|
|
|
|
|
+ {
|
|
|
|
|
+ class: "make-switch",
|
|
|
|
|
+ data: {
|
|
|
|
|
+ on_color: "success",
|
|
|
|
|
+ off_color: "danger",
|
|
|
|
|
+ on_text: "Si",
|
|
|
|
|
+ off_text: "No"
|
|
|
|
|
+ },
|
|
|
|
|
+ readonly: @with_presentation
|
|
|
|
|
+ }, "true","false"
|
|
|
|
|
+ ) %>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <h4 class="form-section presentaciones">Variantes</h4>
|
|
|
|
|
+ <div class="row presentaciones">
|
|
|
|
|
+ <% if @product.persisted? %>
|
|
|
|
|
+ <div class="col-md-9 col-md-offset-3">
|
|
|
|
|
+ <%= render 'products_children' %>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <% else %>
|
|
|
|
|
+ <div class="col-md-9 col-md-offset-3">
|
|
|
|
|
+ <div class="alert alert-warning hidden">
|
|
|
|
|
+ Son <strong id="variantes"></strong> variantes del producto.
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="form-group ">
|
|
|
|
|
+ <%= f.label :size_list, "Tallas", {:class=>"col-md-3 control-label"} %>
|
|
|
|
|
+ <div class="col-md-9">
|
|
|
|
|
+ <%= f.collection_select(:size_list, @product.size_list, :to_s, :to_s, { :include_blank => false }, {:class=>"form-control input-medium", 'data-role'=>'tagsinput', :multiple => true} ) %>
|
|
|
|
|
+ <span class="help-block">Ingrese las diferentes tallas, separandolas con coma (,). </span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="form-group ">
|
|
|
|
|
+ <%= f.label :color_list, "Colores", {:class=>"col-md-3 control-label"} %>
|
|
|
|
|
+ <div class="col-md-9">
|
|
|
|
|
+ <%= f.collection_select(:color_list, @product.color_list, :to_s, :to_s, { :include_blank => false }, {:class=>"form-control input-medium", 'data-role'=>'tagsinput', :multiple => true} ) %>
|
|
|
|
|
+ <span class="help-block">Ingrese los diferentes colores, separandolos con coma (,). </span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="form-group ">
|
|
|
|
|
+ <%= f.label :style_list, "Estilos", {:class=>"col-md-3 control-label"} %>
|
|
|
|
|
+ <div class="col-md-9">
|
|
|
|
|
+ <%= f.collection_select(:style_list, @product.style_list, :to_s, :to_s, { :include_blank => false }, {:class=>"form-control input-medium", 'data-role'=>'tagsinput', :multiple => true} ) %>
|
|
|
|
|
+ <span class="help-block">Ingrese los diferentes estilos, separandolos con coma (,). </span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <%= hidden_field_tag :variants %>
|
|
|
|
|
+ <% end %>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="form-actions">
|
|
|
|
|
+ <div class="row">
|
|
|
|
|
+ <div class="col-md-offset-3 col-md-9">
|
|
|
|
|
+ <%= f.submit 'Guardar', {:class=>"btn green"} %>
|
|
|
|
|
+ <%= link_to 'Cancelar', products_path(:filter => @filter, :current_page => @current_page), {:class=>"btn default"} %>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
<% end %>
|
|
<% end %>
|
|
|
|
|
+
|
|
|
<script type="text/javascript">
|
|
<script type="text/javascript">
|
|
|
var timeout = null;
|
|
var timeout = null;
|
|
|
var regex = /[a,e,i,o,u]/gi;
|
|
var regex = /[a,e,i,o,u]/gi;
|
|
@@ -299,6 +321,17 @@
|
|
|
});
|
|
});
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
+ <% if @product.barcode.blank? %>
|
|
|
|
|
+ // $('#product_barcode').codeScanner({ // SE ESTA TRIGGEREANDO AL ESCRIBIR TEXTO
|
|
|
|
|
+ // maxEntryTime: 500, // milliseconds
|
|
|
|
|
+ // minEntryChars: 5, // characters
|
|
|
|
|
+ // onScan: function ($element, code) {
|
|
|
|
|
+ // $('#product_barcode').val(code);
|
|
|
|
|
+ // validateBarcode(code);
|
|
|
|
|
+ // }
|
|
|
|
|
+ // });
|
|
|
|
|
+ <% end %>
|
|
|
|
|
+
|
|
|
$('#product_size_list').on('change', function(event) { getVariants(); });
|
|
$('#product_size_list').on('change', function(event) { getVariants(); });
|
|
|
$('#product_color_list').on('change', function(event) { getVariants(); });
|
|
$('#product_color_list').on('change', function(event) { getVariants(); });
|
|
|
$('#product_style_list').on('change', function(event) { getVariants(); });
|
|
$('#product_style_list').on('change', function(event) { getVariants(); });
|