_form.html.erb 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. <div id="form_wizard_1">
  2. <%= form_for(@user, html: { class: "form-horizontal", id: "submit_form" }) do |f| %>
  3. <div class="portlet-body form">
  4. <% if @user.errors.any? %>
  5. <div class="alert alert-danger">
  6. <strong>Tiene <%= pluralize(@user.errors.count, "error") %> no se puede guardar el usuario</strong><br>
  7. </div>
  8. <% end %>
  9. <div id="error_explanation"></div>
  10. <div class="form-wizard">
  11. <div class="form-body">
  12. <ul class="nav nav-pills nav-justified steps">
  13. <li class="active">
  14. <a href="#tab1" data-toggle="tab" class="step" aria-expanded="true">
  15. <span class="number">1 </span>
  16. <span class="desc">
  17. <i class="fa fa-check"></i> Usuario del sistema </span>
  18. </a>
  19. </li>
  20. <li>
  21. <a href="#tab2" data-toggle="tab" class="step">
  22. <span class="number">2 </span>
  23. <span class="desc">
  24. <i class="fa fa-check"></i> Información del usuario </span>
  25. </a>
  26. </li>
  27. <li>
  28. <a href="#tab3" data-toggle="tab" class="step">
  29. <span class="number">3 </span>
  30. <span class="desc">
  31. <i class="fa fa-check"></i> Confirmar </span>
  32. </a>
  33. </li>
  34. </ul>
  35. <div id="bar" class="progress progress-striped" role="progressbar">
  36. <div class="progress-bar progress-bar-success" style="width: 25%;">
  37. </div>
  38. </div>
  39. <div class="tab-content">
  40. <div class="alert alert-error hide">
  41. <button class="close" data-dismiss="alert"></button>
  42. Tienes algunos errores. Favor de verificar.
  43. </div>
  44. <div class="alert alert-success hide">
  45. <button class="close" data-dismiss="alert"></button>
  46. Información Correcta!
  47. </div>
  48. <div class="tab-pane active" id="tab1">
  49. <h3 class="block">Proporciona la información de la cuenta de usuario</h3>
  50. <div id="error_explanation"></div>
  51. <div class="form-group">
  52. <%= f.label :usertype, "", { class: "col-md-3 control-label" } do %> Tipo de usuario <span class="required">*</span> <% end %>
  53. <div class="col-md-4">
  54. <%= f.select :usertype, (@options_for_select), { prompt: "Seleccione" }, { class: 'form-control select2' } %>
  55. </div>
  56. </div>
  57. <div class="form-group hidden" id="pointsale_div">
  58. <%= f.label :pointsale_id, "", {:class=>"col-md-3 control-label"} do %> Punto de venta <span class="required">*</span> <% end %>
  59. <div class="col-md-4">
  60. <%= f.collection_select :pointsale_id, Pointsale.activos, :id, :name, { prompt: "Seleccione", selected: (current_user.usertype == 'G' ? current_user.pointsale_id : @user.pointsale_id) }, { class: "form-control select2",
  61. disabled: (true if current_user.usertype == 'G') } %>
  62. <%= f.hidden_field :pointsale_id, value: (current_user.usertype == 'G' ? current_user.pointsale_id : @user.pointsale_id), id: 'pointsale_id' %>
  63. </div>
  64. </div>
  65. <% if current_user.usertype == "A" || current_user.usertype == "SS" %>
  66. <div class="form-group hidden" id="warehouse_div">
  67. <%= f.label :warehouse_id, "", { class: "col-md-3 control-label" } do %> Almacén <span class="required">*</span> <% end %>
  68. <div class="col-md-4">
  69. <%= f.collection_select :warehouse_id, Warehouse.activos, :id, :name, { prompt: "Seleccione" }, { class: "form-control select2" } %>
  70. </div>
  71. </div>
  72. <% end %>
  73. <div class="form-group">
  74. <%= f.label :userid, "Nombre de usuario", { class: "col-md-3 control-label" } do %> Usuario <span class="required">*</span> <% end %>
  75. <div class="col-md-4">
  76. <%= f.text_field :userid, { class: "form-control", disabled: @user.persisted? } %>
  77. <span class="help-block"> El usuario no debe de contener espacios. </span>
  78. </div>
  79. </div>
  80. <% unless @user.persisted? %>
  81. <div class="form-group">
  82. <%= f.label :password, "Contraseña", { class: "col-md-3 control-label" } do %> Contraseña <span class="required">*</span> <% end %>
  83. <div class="col-md-4">
  84. <%= f.password_field :password, { class: "form-control"} %>
  85. </div>
  86. </div>
  87. <div class="form-group">
  88. <%= f.label :password_confirmation, "Confirmar contraseña", { class: "col-md-3 control-label" } do %> Confirmar Contraseña <span class="required">*</span> <% end %>
  89. <div class="col-md-4">
  90. <%= f.password_field :password_confirmation, { class: "form-control" } %>
  91. </div>
  92. </div>
  93. <% end %>
  94. </div>
  95. <div class="tab-pane" id="tab2">
  96. <h3 class="block">Proporciona los datos particulares del usuario</h3>
  97. <div class="form-group">
  98. <%= f.label :first_name, "Nombre", { class: "col-md-3 control-label" } do %> Nombre <span class="required">*</span> <% end %>
  99. <div class="col-md-4">
  100. <%= f.text_field :first_name, { class: "form-control" } %>
  101. </div>
  102. </div>
  103. <div class="form-group">
  104. <%= f.label :last_name, "Apellidos", { class: "col-md-3 control-label" } do %> Apellidos <span class="required">*</span> <% end %>
  105. <div class="col-md-4">
  106. <%= f.text_field :last_name, { class: "form-control" } %>
  107. </div>
  108. </div>
  109. <div class="form-group">
  110. <%= f.label :email, "Correo", { class: "col-md-3 control-label" } do %> Correo electrónico <span class="required">*</span> <% end %>
  111. <div class="col-md-4">
  112. <div class="input-icon">
  113. <i class="fa fa-envelope"></i>
  114. <%= f.text_field :email, { class: "form-control", placeholder: "ejemplo@correo.com" } %>
  115. </div>
  116. </div>
  117. </div>
  118. </div>
  119. <div class="tab-pane" id="tab3">
  120. <h3 class="block">Confirma la cuenta</h3>
  121. <h4 class="form-section">Información del usuario</h4>
  122. <div class="form-group">
  123. <label class="control-label col-md-3">Usuario</label>
  124. <div class="col-md-4">
  125. <span class="form-control-static" data-display="user[userid]"></span>
  126. </div>
  127. </div>
  128. <div class="form-group hidden" id="pointsale_info_div">
  129. <label class="control-label col-md-3">Punto de venta</label>
  130. <div class="col-md-4">
  131. <span class="form-control-static" data-display="user[pointsale_id]"></span>
  132. </div>
  133. </div>
  134. <div class="form-group hidden" id="warehouse_info_div">
  135. <label class="control-label col-md-3">Almacén</label>
  136. <div class="col-md-4">
  137. <span class="form-control-static" data-display="user[warehouse_id]"></span>
  138. </div>
  139. </div>
  140. <div class="form-group">
  141. <label class="control-label col-md-3">Tipo de usuario</label>
  142. <div class="col-md-4">
  143. <span class="form-control-static" data-display="user[usertype]"></span>
  144. </div>
  145. </div>
  146. <h4 class="form-section">Datos particulares del usuario</h4>
  147. <div class="form-group">
  148. <label class="control-label col-md-3">Nombre:</label>
  149. <div class="col-md-4">
  150. <span class="form-control-static" data-display="user[first_name]"></span>
  151. </div>
  152. </div>
  153. <div class="form-group">
  154. <label class="control-label col-md-3">Apellidos:</label>
  155. <div class="col-md-4">
  156. <span class="form-control-static" data-display="user[last_name]"></span>
  157. </div>
  158. </div>
  159. <div class="form-group">
  160. <label class="control-label col-md-3">Correo electrónico:</label>
  161. <div class="col-md-4">
  162. <span class="form-control-static" data-display="user[email]"></span>
  163. </div>
  164. </div>
  165. </div>
  166. <div class="form-actions">
  167. <div class="row">
  168. <div class="col-md-offset-3 col-md-9">
  169. <a href="javascript:;" class="btn default button-previous disabled" style="display: none;">
  170. <i class="fa fa-angle-left"></i> Regresar </a>
  171. <a href="javascript:;" class="btn blue button-next">
  172. Siguiente <i class="fa fa-angle-right"></i>
  173. </a>
  174. <a href="javascript:;" class="btn green button-submit" style="display: none;">
  175. Guardar <i class="fa fa-check"></i>
  176. </a>
  177. </div>
  178. </div>
  179. </div>
  180. </div>
  181. </div>
  182. </div>
  183. </div>
  184. <% end %>
  185. </div>
  186. <script type="text/javascript">
  187. $(document).on("page:change", function() {
  188. App.init();
  189. <% if @user.persisted? %>
  190. <% if @user.pointsale.present? && @user.usertype != 'A'%>
  191. $('#pointsale_info_div').removeClass('hidden');
  192. $('#pointsale_div').removeClass('hidden');
  193. $("#user_pointsale_id").select2();
  194. <% elsif @user.warehouse.present? && @user.usertype != 'A'%>
  195. $('#warehouse_info_div').removeClass('hidden');
  196. $('#warehouse_div').removeClass('hidden');
  197. $("#user_warehouse_id").select2();
  198. <% end %>
  199. <% end %>
  200. });
  201. $('#user_pointsale_id').on('change', function() {
  202. $('#pointsale_id').val($(this).val());
  203. });
  204. $('#user_usertype').on('change', function() {
  205. var type = $(this).val();
  206. switch(type) {
  207. case 'A':
  208. $('#pointsale_info_div').addClass('hidden');
  209. $('#warehouse_info_div').addClass('hidden');
  210. $('#warehouse_div').addClass('hidden');
  211. $('#pointsale_div').addClass('hidden');
  212. $('#user_warehouse_id').select2('val', null);
  213. $('#user_pointsale_id').select2('val', null);
  214. break;
  215. case 'G':
  216. $('#pointsale_info_div').removeClass('hidden');
  217. $('#warehouse_info_div').addClass('hidden');
  218. $('#user_warehouse_id').select2('val', null);
  219. $('#pointsale_div').removeClass('hidden');
  220. $("#user_pointsale_id").select2();
  221. $('#warehouse_div').addClass('hidden');
  222. break;
  223. case 'S':
  224. $('#warehouse_info_div').removeClass('hidden');
  225. $('#pointsale_info_div').addClass('hidden');
  226. $('#user_pointsale_id').select2('val', null);
  227. $('#warehouse_div').removeClass('hidden');
  228. $("#user_warehouse_id").select2();
  229. $('#pointsale_div').addClass('hidden');
  230. break;
  231. case 'C':
  232. $('#pointsale_info_div').removeClass('hidden');
  233. $('#warehouse_info_div').addClass('hidden');
  234. $('#user_warehouse_id').select2('val', null);
  235. $('#pointsale_div').removeClass('hidden');
  236. $("#user_pointsale_id").select2();
  237. $('#warehouse_div').addClass('hidden');
  238. break;
  239. }
  240. // if($(this).val() == 'S') {
  241. // $('#warehouse_info_div').removeClass('hidden');
  242. // $('#pointsale_info_div').addClass('hidden');
  243. // $('#user_pointsale_id').select2('val', null);
  244. // $('#warehouse_div').removeClass('hidden');
  245. // $("#user_warehouse_id").select2();
  246. // $('#pointsale_div').addClass('hidden');
  247. // } else {
  248. // $('#pointsale_info_div').removeClass('hidden');
  249. // $('#warehouse_info_div').addClass('hidden');
  250. // $('#user_warehouse_id').select2('val', null);
  251. // $('#pointsale_div').removeClass('hidden');
  252. // $("#user_pointsale_id").select2();
  253. // $('#warehouse_div').addClass('hidden');
  254. // }
  255. });
  256. </script>