edit_variants.html.erb 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. <!-- BEGIN CONTAINER -->
  2. <div class="page-container">
  3. <!-- BEGIN CONTENT -->
  4. <div class="page-content-wrapper">
  5. <!-- BEGIN CONTENT BODY -->
  6. <!-- BEGIN PAGE HEAD-->
  7. <div class="page-head">
  8. <div class="container-fluid">
  9. <!-- BEGIN PAGE TITLE -->
  10. <div class="page-title">
  11. <h1> Producto </h1>
  12. </div>
  13. <!-- END PAGE TITLE -->
  14. </div>
  15. </div>
  16. <!-- END PAGE HEAD-->
  17. <!-- BEGIN PAGE CONTENT BODY -->
  18. <div class="page-content">
  19. <div class="container-fluid">
  20. <%= link_to products_path(:filter => @filter, :current_page => @current_page), { class: "fr-space btn blue-hoki pull-right margin-bottom-10" } do %>
  21. <i class="fa fa-angle-left "></i>
  22. Regresar
  23. <% end %>
  24. <!-- BEGIN PAGE BREADCRUMBS -->
  25. <ul class="page-breadcrumb breadcrumb">
  26. <%= render_breadcrumbs :tag => :li, :separator => ' <i class="fa fa-circle"></i> ' %>
  27. </ul>
  28. <!-- END PAGE BREADCRUMBS -->
  29. <!-- BEGIN PAGE CONTENT INNER -->
  30. <div class="page-content-inner">
  31. <div id="notice"><%= notice %></div>
  32. <div class="row">
  33. <div class="col-md-12">
  34. <%= form_tag(product_update_variants_path(@product.id), :multipart => true, :class => "form-horizontal", :id => "form") do |f| %>
  35. <div class="portlet light">
  36. <div class="portlet-title">
  37. <div class="caption">
  38. <i class="fa fa-edit font-blue-sharp"></i>
  39. <span class="caption-subject font-blue-sharp bold uppercase">Modificar variantes del producto</span>
  40. <span class="caption-helper"></span>
  41. </div>
  42. </div>
  43. <div class="portlet-body">
  44. <div class="row">
  45. <div class="col-md-6">
  46. <div class="row static-info">
  47. <div class="col-md-4 name"> SKU: </div>
  48. <div class="col-md-8 value"> <%= @product.sku %></div>
  49. </div>
  50. <div class="row static-info">
  51. <div class="col-md-4 name"> Producto: </div>
  52. <div class="col-md-8 value"> <%= @product.name %> </div>
  53. </div>
  54. <% unless @product.parent_id.nil? %>
  55. <div class="row static-info">
  56. <div class="col-md-4 name"> Presentación: </div>
  57. <div class="col-md-8 value"> <%= @product.display_attributes %> </div>
  58. </div>
  59. <% end %>
  60. <div class="row static-info">
  61. <div class="col-md-4 name"> Descripción: </div>
  62. <div class="col-md-8 value"> <%= @product.description %> </div>
  63. </div>
  64. <div class="row static-info">
  65. <div class="col-md-4 name"> Unidad de medida: </div>
  66. <div class="col-md-8 value"> <%= @product.unit.unit %> </div>
  67. </div>
  68. <div class="row static-info">
  69. <div class="col-md-4 name"> Status: </div>
  70. <div class="col-md-8 value"> <% if @product.status == "active" %> <span class="badge badge-success"> Activo</span> <% else %> <span class="badge badge-danger"> Inactivo</span> <% end %></div>
  71. </div>
  72. </div>
  73. <div class="col-md-6">
  74. <div class="row static-info">
  75. <div class="col-md-4 name"> Inventariado: </div>
  76. <div class="col-md-8 value"> <% if @product.inventory %> <span class="label label-success"> Si</span> <% else %> <span class="label label-danger"> No</span> <% end %> </div>
  77. </div>
  78. <div class="row static-info">
  79. <div class="col-md-4 name"> Categorías: </div>
  80. <div class="col-md-8 value">
  81. <% @product.categories.each_with_index do |cat, index| %>
  82. <% if index > 0 %> <br> <% end %>
  83. <span class="badge badge-default badge-roundless" > <%= cat.category %> </span>
  84. <% end %>
  85. </div>
  86. </div>
  87. <% if current_user.usertype == "A" || current_user.usertype == "SS" %>
  88. <div class="row static-info">
  89. <div class="col-md-4 name"> Precio compra: </div>
  90. <div class="col-md-8 value"><%= (@product.is_in_dollars? ? "#{number_to_currency(@product.price_base_dollars, precision: 2)} USD" : "#{number_to_currency(@product.price_base, precision: 2)} MXN") %> </div>
  91. </div>
  92. <% end %>
  93. <div class="row static-info">
  94. <div class="col-md-4 name"> Precio venta base: </div>
  95. <div class="col-md-8 value"> $ <%= @product.price_sale %> </div>
  96. </div>
  97. </div>
  98. </div><br>
  99. <h4 class="form-section presentaciones">Variantes</h4><hr>
  100. <div class="col-md-9 col-md-offset-3">
  101. <div class="alert alert-warning hidden">
  102. Son <strong id="variantes"></strong> variantes del producto.
  103. </div>
  104. </div>
  105. <div class="form-group ">
  106. <%= label_tag :size_list, "Tallas", {:class=>"col-md-3 control-label"} %>
  107. <div class="col-md-9 div_sizes">
  108. <button class="btn btn-primary btn-sm margin-bottom-10 add_size">Agregar talla</button>
  109. <% @product.sizes.each_with_index do |s, i| %>
  110. <%= text_field_tag "#{s.id}", s.name, :class => "form-control input-medium margin-bottom-10 sizes" %>
  111. <!-- < %= hidden_field_tag "size_#{s.id}", s.name %> -->
  112. <% end %>
  113. <%= hidden_field_tag "new_size_list", @product.sizes.to_json.to_s %>
  114. </div>
  115. </div>
  116. <div class="form-group ">
  117. <%= label_tag :color_list, "Colores", {:class=>"col-md-3 control-label"} %>
  118. <div class="col-md-9 div_colors">
  119. <button class="btn btn-primary btn-sm margin-bottom-10 add_color">Agregar color</button>
  120. <% @product.colors.each_with_index do |s, i| %>
  121. <%= text_field_tag "#{s.id}", s.name, :class => "form-control input-medium margin-bottom-10 colors" %>
  122. <!-- < %= hidden_field_tag "color_#{s.id}", s.name %> -->
  123. <% end %>
  124. <%= hidden_field_tag "new_color_list", @product.colors.to_json %>
  125. </div>
  126. </div>
  127. <div class="form-group ">
  128. <%= label_tag :style_list, "Estilos", {:class=>"col-md-3 control-label"} %>
  129. <div class="col-md-9 div_styles">
  130. <button class="btn btn-primary btn-sm margin-bottom-10 add_style">Agregar estilo</button>
  131. <% @product.styles.each_with_index do |s, i| %>
  132. <%= text_field_tag "#{s.id}", s.name, :class => "form-control input-medium margin-bottom-10 styles" %>
  133. <!-- < %= hidden_field_tag "style_#{s.id}", s.name %> -->
  134. <% end %>
  135. <%= hidden_field_tag "new_style_list", @product.styles.to_json %>
  136. </div>
  137. </div>
  138. <hr>
  139. <div class="form-actions">
  140. <div class="row">
  141. <div class="col-md-9">
  142. <%= submit_tag 'Guardar', {:class=>"btn green"} %>
  143. <%= link_to 'Cancelar', products_path(:filter => @filter, :current_page => @current_page), {:class=>"btn default"} %>
  144. </div>
  145. </div>
  146. </div>
  147. <%= hidden_field_tag :variants %>
  148. </div>
  149. </div>
  150. <% end %>
  151. </div>
  152. </div>
  153. </div>
  154. <!-- END PAGE CONTENT INNER -->
  155. </div>
  156. </div>
  157. <!-- END PAGE CONTENT BODY -->
  158. <!-- END CONTENT BODY -->
  159. </div>
  160. <!-- END CONTENT -->
  161. </div>
  162. <!-- END CONTAINER -->
  163. <script>
  164. $("#form").submit(function(e) {
  165. var self = this;
  166. e.preventDefault();
  167. <% if @product.sizes.count > 0 %>
  168. var sizes = JSON.parse($('#new_size_list').val());
  169. $('.sizes').each(function () {
  170. // console.log(this);
  171. for (var i = 0; i < sizes.length ; i++) {
  172. if(sizes[i].id == this.name){
  173. sizes[i].name = this.value;
  174. }
  175. };
  176. });
  177. $('#new_size_list').val(JSON.stringify(sizes));
  178. <% end %>
  179. <% if @product.colors.count > 0 %>
  180. var colors = JSON.parse($('#new_color_list').val());
  181. $('.colors').each(function () {
  182. // console.log(this);
  183. for (var i = 0; i < colors.length ; i++) {
  184. if(colors[i].id == this.name){
  185. colors[i].name = this.value;
  186. }
  187. };
  188. });
  189. $('#new_color_list').val(JSON.stringify(colors));
  190. <% end %>
  191. <% if @product.styles.count > 0 %>
  192. var styles = JSON.parse($('#new_style_list').val());
  193. $('.styles').each(function () {
  194. // console.log(this);
  195. for (var i = 0; i < styles.length ; i++) {
  196. if(styles[i].id == this.name){
  197. styles[i].name = this.value;
  198. }
  199. };
  200. });
  201. $('#new_style_list').val(JSON.stringify(styles));
  202. <% end %>
  203. self.submit();
  204. return false; //is superfluous, but I put it here as a fallback
  205. });
  206. $(document).ready(function() {
  207. var x = 1; //initlal text box count
  208. $('.add_size').click(function(e){ //on add input button click
  209. e.preventDefault();
  210. x++; //text box increment
  211. $('.div_sizes').append('<div class="margin-bottom-10"><div class="input-group"><input type="text" name="mynewsizes[]" class="form-control input-medium "/><a href="#" class="remove_field btn btn-icon-only red"><i class="fa fa-times"></i></a></div></div>'); //add input box
  212. });
  213. $('.div_sizes').on("click",".remove_field", function(e){ //user click on remove text
  214. e.preventDefault(); $(this).parent('div').remove(); x--;
  215. });
  216. var y = 1;
  217. $('.add_color').click(function(e){ //on add input button click
  218. e.preventDefault();
  219. y++; //text box increment
  220. $('.div_colors').append('<div class="margin-bottom-10"><div class="input-group"><input type="text" name="mynewcolors[]" class="form-control input-medium "/><a href="#" class="remove_field btn btn-icon-only red"><i class="fa fa-times"></i></a></div></div>'); //add input box
  221. });
  222. $('.div_colors').on("click",".remove_field", function(e){ //user click on remove text
  223. e.preventDefault(); $(this).parent('div').remove(); y--;
  224. });
  225. var z = 1;
  226. $('.add_style').click(function(e){ //on add input button click
  227. e.preventDefault();
  228. z++; //text box increment
  229. $('.div_styles').append('<div class="margin-bottom-10"><div class="input-group"><input type="text" name="mynewstyles[]" class="form-control input-medium "/><a href="#" class="remove_field btn btn-icon-only red"><i class="fa fa-times"></i></a></div></div>'); //add input box
  230. });
  231. $('.div_styles').on("click",".remove_field", function(e){ //user click on remove text
  232. e.preventDefault(); $(this).parent('div').remove(); z--;
  233. });
  234. });
  235. </script>