Pārlūkot izejas kodu

added a parcial to open cash in sales form when it not open, and lock cash register when is only 1

Jose Miguel Ledon Nieblas 9 gadi atpakaļ
vecāks
revīzija
3a50a7ff98

+ 4 - 4
app/views/dashboard/index.html.erb

@@ -46,9 +46,9 @@
 						<%= render 'dashboard/dashboard_for_manager' %>
 					<% elsif current_user.usertype == 'C' %>
 						<%= render partial: 'dashboard/dashboard_for_cashier' %>
-						<%if @open_cash == true %>
+						<%if @need_to_open_cash %>
 							<%= render partial: 'open_cash_registers/new', formats: [:js] %>
-						<% end %>					
+						<% end %>
 					<% end %>
 				</div>
 				<!-- END PAGE CONTENT INNER -->
@@ -57,5 +57,5 @@
 		<!-- END PAGE CONTENT BODY -->
 		<!-- END CONTENT BODY -->
 	</div>
-	<!-- END CONTENT -->	
-</div>
+	<!-- END CONTENT -->
+</div>

+ 36 - 21
app/views/open_cash_registers/_form.html.erb

@@ -3,30 +3,41 @@
     <div id="error_explanation"></div>
     <div class="row">
       <div class="col-md-12">
+        <%
+          available_cash = Array.new
+          open_cash_registers = current_user.pointsale.open_cash_registers.abiertas
+
+          current_user.pointsale.cash_registers.activos.each do |cash|
+            is_opened = OpenCashRegister.where(:cash_register_id => cash.id, :status => '0').any?
+            available_cash << cash if is_opened == false
+          end
+        %>
+        <% unless open_cash_registers.blank? %>
+          <div class="alert alert-warning">
+            <strong>Ya hay caja(s) abiertas en el punto de venta:</strong><br>
+              <% open_cash_registers.each do |open_cash| %>
+              -<%= open_cash.cash_register.name %> <br>
+              <% end %>
+          </div>
+        <% end %>
         <!-- caja registradora -->
         <div class="form-group">
           <%= f.label :cash_register_id, "Caja registradora", {:class=>"col-md-offset-1 col-md-3 control-label"} do %> Caja registradora
           <span class="required">*</span>
           <% end %>
           <div class="input-group col-md-4 select2-bootstrap-prepend">
-            <% 
-              available_cash = Array.new
-              CashRegister.where(:pointsale_id => current_user.pointsale_id, :status => '1').find_each do |cash|
-                is_opened = OpenCashRegister.where(:cash_register_id => cash.id, :status => '0').any?
-                available_cash << cash if is_opened == false
-              end
-            %>
-            <%= f.collection_select :cash_register_id, available_cash, :id, :name, {:prompt => "Seleccione"}, {:class => "form-control select2" } %>
+            <%= f.collection_select :cash_register_id, available_cash, :id, :name, {:prompt => "Seleccione", :selected => (available_cash[0] if available_cash.size == 1)}, {:class => "form-control select2", :disabled =>  (true if available_cash.size == 1) } %>
+            <%= f.hidden_field :cash_register_id, {:id=>'cash_id'} %>
           </div>
-        </div> 
+        </div>
         <!-- initial cash -->
         <div class="form-group">
           <%= f.label :initial_cash, "Efectivo inicial", {:class=>"col-md-offset-1 col-md-3 control-label"} do %> Efectivo inicial <span class="required">*</span>
-          <% end %> 
+          <% end %>
           <div class="col-md-4" style="padding-left: 0px;padding-right:0px">
             <%= f.number_field :initial_cash, {:class=>"form-control"} %>
           </div>
-        </div>        
+        </div>
       </div>
     </div>
     <h4 class="form-section" style="margin:20px 0px 10px 0px"></h4>
@@ -52,24 +63,27 @@
     "hideMethod": "fadeOut"
   }
 
+  if ($('#open_cash_register_cash_register_id').val()) {
+    getCashFund($('#open_cash_register_cash_register_id').val());
+    $('#cash_id').val($('#open_cash_register_cash_register_id').val());
+  }
+
   $('#open_cash_register_cash_register_id').on('change', function() {
     if ($(this).val() != "") {
-      getCashFund( $(this).val() );
-      $('#openCashButton').attr('disabled', false);
-
+      getCashFund($(this).val());
+      $('#cash_id').val($('#open_cash_register_cash_register_id').val());
     } else {
       $('#openCashButton').attr('disabled', true);
     }
   });
-  
 
-  function submitForm() {   
-    var cash = parseInt($('#open_cash_register_initial_cash').val());
+
+  function submitForm() {
     if ($('#open_cash_register_cash_register_id').val() != "") {
       $('#open_cash_register_form').submit();
     } else {
       toastr["warning"]("Se debe indicar efectivo inicial.");
-    }  
+    }
   }
 
   function getCashFund(id) {
@@ -79,7 +93,8 @@
       dataType: 'json',
       success: function(data) {
         $('#open_cash_register_initial_cash').val(data);
-      },      
-    }); 
+        $('#openCashButton').attr('disabled', false);
+      },
+    });
   }
-</script>
+</script>

+ 11 - 11
app/views/open_cash_registers/_new.js.erb

@@ -1,18 +1,18 @@
 
 <script>
 $(document).on("ready", function() {
-	
-		$('#dialog h3.modal-title').html("Activar caja registradora");
-		// Render the edit form
-		$('.modal-body').html('<%= j render("open_cash_registers/form") %>');
-		// Show the dynamic dialog
-		$('#dialog').modal("show");
 
-		// Set focus to the first element
-		$('#dialog').on('shown.bs.modal', function () {
-	       $('.first_input').focus();
-	       $('#open_cash_register_cash_register_id').select2();
-		 });
+   $('#dialog h3.modal-title').html("Activar caja registradora");
+   // Render the edit form
+   $('.modal-body').html('<%= j render("open_cash_registers/form") %>');
+   // Show the dynamic dialog
+   $('#dialog').modal("show");
+
+   // Set focus to the first element
+   $('#dialog').on('shown.bs.modal', function () {
+        $('.first_input').focus();
+        $('#open_cash_register_cash_register_id').select2();
+    });
 });
 
 </script>

+ 11 - 0
app/views/open_cash_registers/new.js.erb

@@ -0,0 +1,11 @@
+$('#dialog h3.modal-title').html("Activar caja registradora");
+ // Render the edit form
+ $('.modal-body').html('<%= j render("open_cash_registers/form") %>');
+ // Show the dynamic dialog
+ $('#dialog').modal("show");
+
+ 	// Set focus to the first element
+ 	$('#dialog').on('shown.bs.modal', function () {
+    $('.first_input').focus();
+    $('#open_cash_register_cash_register_id').select2();
+  });

+ 24 - 12
app/views/sales/_form.html.erb

@@ -5,6 +5,16 @@
 		<!-- este error explanation es cuando falla alguna validacion de la venta en sí -->
 		<div class="alert alert-danger hidden" id="error_explanation_for_sale"></div>
 		<div class="row">
+			<!-- cuando no hay caja abierta -->
+			<% if @opened_cash_registers.blank?%>
+				<div class="alert alert-block alert-danger fade in">
+	        <h4 class="alert-heading">¡AVISO! no hay caja abierta</h4>
+	        <p> Para realizar una venta es necesario abrir una caja registradora. </p>
+	        <p>
+	        	<%= link_to "Abrir caja", new_open_cash_register_path, :remote => true, :class => 'btn btn-primary' %>
+	        </p>
+	      </div>
+			<% end %>
 			<!-- boton para resetear datos -->
 			<div class="col-md-offset-10 col-md-2">
 				<button id="reset_pre_sales" type="button" class="btn btn-warning" <%= @disabled_button ? 'disabled' : '' %> onclick="deletePreSales()">Restaurar venta</button>
@@ -38,20 +48,22 @@
 					</div>
 				</div>
 				<!-- open cash register -->
-				<% if current_user.usertype == 'C' %>
-					<%= f.hidden_field :open_cash_register_id, :value => @open_cash_register.id %>
-				<% end %>
-				<% if current_user.usertype == 'G' %>
-					<div class="form-group">
-						<%= f.label :open_cash_register_id, "Caja registradora", {:class=>"col-md-3 control-label"} do %> Caja registradora
-						<span class="required">*</span>
-						<% end %>
-						<div class="input-group col-md-6 select2-bootstrap-prepend">
+			<!-- 	< % if current_user.usertype == 'C' %>
+					< %= f.hidden_field :open_cash_register_id, :value => @open_cash_register.id %>
+				< % end %> -->
+				<div class="form-group">
+					<%= f.label :open_cash_register_id, "Caja registradora", {:class=>"col-md-3 control-label"} do %> Caja registradora
+					<span class="required">*</span>
+					<% end %>
+					<div class="input-group col-md-6 select2-bootstrap-prepend">
+						<% if @sale.open_cash_register.nil? %>
 							<%= f.select :open_cash_register_id, Pointsale.find(current_user.pointsale_id).open_cash_registers.abiertas.map{|o| [o.cash_register.name, o.id]}, {:prompt => "Seleccione"}, { :class => 'form-control select2', :disabled => @disabled_select } %>
-							 <%= f.hidden_field :open_cash_register_id, {:id => 'open_cash'} %>
-						</div>
+						<% else %>
+              <%= f.select :open_cash_register_id, @opened_cash_registers.map{|o| [o.cash_register.name, o.id]}, {:include_blank => "Seleccione", :selected => @sale.open_cash_register.id}, {:class => "form-control", :disabled => true }   %>
+						<% end %>
+						<%= f.hidden_field :open_cash_register_id, {:id => 'open_cash'} %>
 					</div>
-				<% end %>
+				</div>
 				<!-- cliente -->
 				<div class="form-group">
 					<%= f.label :customer_id, "Cliente", {:class=>"col-md-3 control-label"} do %> Cliente