verify_transfer.html.erb 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  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>Traspasos</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. <!-- BEGIN PAGE BREADCRUMBS -->
  21. <ul class="page-breadcrumb breadcrumb">
  22. <%= render_breadcrumbs :tag => :li, :separator => ' <i class="fa fa-circle"></i> ' %>
  23. </ul>
  24. <!-- END PAGE BREADCRUMBS -->
  25. <!-- BEGIN PAGE CONTENT INNER -->
  26. <div class="page-content-inner">
  27. <div id="notice">
  28. <% if success %>
  29. <div class="alert alert-success">
  30. <p><%= success %></p>
  31. </div>
  32. <% elsif warning %>
  33. <div class="alert alert-warning">
  34. <p><%= warning %></p>
  35. </div>
  36. <% end %>
  37. </div>
  38. <div class="row">
  39. <div class="col-md-12">
  40. <div class="portlet light ">
  41. <div class="portlet-title">
  42. <div class="caption">
  43. <i class="fa fa-list "></i>
  44. <span class="caption-subject bold uppercase">Verificar traspaso</span>
  45. </div>
  46. <div class="actions">
  47. <%= link_to transfers_path, {:class=>"btn blue-hoki pull-right margin-bottom-10"} do %> <i class="fa fa-angle-left "></i> Regresar
  48. <% end %>
  49. </div>
  50. </div>
  51. <div class="form-horizontal">
  52. <div class="portlet-body form">
  53. <div class="row" style='margin-bottom: 20px'>
  54. <div class="col-md-6">
  55. <%= hidden_field_tag :transfer_id, @transfer.id %>
  56. <!-- fecha traspaso -->
  57. <div class="form-group">
  58. <%= label_tag "transfer_date", "Fecha", {:class=>"col-md-3 control-label"} do %> Fecha del traspaso
  59. <span class="required">*</span>
  60. <% end %>
  61. <div class="col-sm-6" style="padding-left:0px;padding-right:0px;">
  62. <div class='input-group date' id='datetimepicker1'>
  63. <input type='text' class="form-control" disabled/>
  64. <span class="input-group-addon">
  65. <span class="glyphicon glyphicon-calendar"></span>
  66. </span>
  67. </div>
  68. </div>
  69. </div>
  70. <!-- origen traspaso -->
  71. <div class="form-group">
  72. <%= label_tag "origin", "Punto de venta origen", {:class=>"col-md-3 control-label"} do %>Origen
  73. <span class="required">*</span>
  74. <% end %>
  75. <div class="input-group col-md-6 select2-bootstrap-prepend">
  76. <%= text_field_tag "origin", (@transfer.origin_is_pointsale == 1 ? Pointsale.find(@transfer.origin_id).name : Warehouse.find(@transfer.origin_id).name), class: 'form-control', disabled: true %>
  77. </div>
  78. </div>
  79. </div>
  80. <div class="col-md-6">
  81. <div class="form-group">
  82. <%= label_tag :observations, "Observaciones", {:class=>"col-md-3 control-label"} %>
  83. <div class="col-md-9">
  84. <%= text_area_tag :observations, nil, :rows => 5, :cols => 15, :class => 'form-control' %>
  85. </div>
  86. </div>
  87. </div>
  88. </div>
  89. <h4 class="form-section">Lista de productos</h4>
  90. <table class="table table-striped table-bordered table-hover tableadvanced" id="products_table">
  91. <thead>
  92. <tr>
  93. <th width="5%">#</th>
  94. <th width="10%">Imagen</th>
  95. <th width="15%">SKU</th>
  96. <th width="15%">Producto</th>
  97. <th width="20%">Cantidad enviada</th>
  98. <th width="20%">Cantidad recibida</th>
  99. </tr>
  100. </thead>
  101. <tbody>
  102. <% @transfer.transfer_details.each_with_index do |detail, key| %>
  103. <tr id="transfer_detail_<%= detail.id %>">
  104. <td>
  105. <%= key + 1 %>
  106. </td>
  107. <td class="text-center">
  108. <img src="<%= detail.product.small_img %>" width="100" height="100"/>
  109. </td>
  110. <td>
  111. <%= detail.product.sku %>
  112. </td>
  113. <td>
  114. <%= detail.product.name %><br>
  115. <%= detail.product.display_attributes %>
  116. </td>
  117. <td>
  118. <%= detail.quantity %>
  119. </td>
  120. <td>
  121. <input type="number" min="0" max="<%=detail.quantity %>" class="form-control input-medium" oninput="sendAdjustment($(this))" value="<%= detail.adjustment %>">
  122. </td>
  123. </tr>
  124. <% end %>
  125. </tbody>
  126. </table>
  127. </div>
  128. <!-- acciones del form -->
  129. <div class="form-actions">
  130. <div class="row">
  131. <div class="col-md-9">
  132. <button type="button" class="btn green" onclick="acceptTransfer()">Guardar</button>
  133. <%= link_to 'Cancelar', transfers_path, {:class=>"btn default"} %>
  134. </div>
  135. </div>
  136. </div>
  137. </div>
  138. </div>
  139. </div>
  140. </div>
  141. </div>
  142. </div>
  143. <!-- END PAGE CONTENT INNER -->
  144. </div>
  145. </div>
  146. <!-- END PAGE CONTENT BODY -->
  147. <!-- END CONTENT BODY -->
  148. </div>
  149. <!-- END CONTENT -->
  150. </div>
  151. <script type="text/javascript">
  152. var timeout = null;
  153. $(document).on("page:change", function() {
  154. App.init();
  155. $('#datetimepicker1').datetimepicker({
  156. icons: {
  157. date: "fa fa-calendar"
  158. },
  159. format: "DD/MM/YYYY",
  160. defaultDate: new Date(<%= Time.parse(@transfer.transfer_date.to_s).utc.to_i*1000 %>)
  161. });
  162. });
  163. function sendAdjustment(input) {
  164. if(input.val()) {
  165. clearTimeout(timeout);
  166. timeout = setTimeout(function () {
  167. var idText = input.closest('tr').attr('id');
  168. var transferDetailId = idText.substring(idText.lastIndexOf('_') + 1, idText.length);
  169. $('#products_table tbody tr td:nth-child(6) input').each(function() {
  170. $(this).attr('disabled', true);
  171. });
  172. $.ajax({
  173. type: "PUT",
  174. url: "/transfers/" + $('#transfer_id').val() +"/detail_adjustment/" + transferDetailId,
  175. dataType: "json",
  176. data: {transfer_details: {adjustment: input.val()}},
  177. success: function(xhr, status, error) {
  178. $('#products_table tbody tr td:nth-child(6) input').each(function() {
  179. $(this).attr('disabled', false);
  180. });
  181. }
  182. });
  183. }, 300);
  184. }
  185. }
  186. function acceptTransfer() {
  187. $.ajax({
  188. type: "PUT",
  189. url: "/transfers/" + $('#transfer_id').val() +"/accept_transfer",
  190. dataType: "script",
  191. data: {
  192. transfer: {
  193. observations: $('#observations').val()
  194. }
  195. },
  196. success: function(xhr, status, error) {
  197. }
  198. });
  199. }
  200. </script>