Sfoglia il codice sorgente

[Issue #14] Validations when adding payments to reserved sales

Jacqueline Maldonado 7 anni fa
parent
commit
6f64734e5b

+ 10 - 10
app/views/cash_registers_moves/_abonoform.html.erb

@@ -1,6 +1,6 @@
-<%= form_for(@cash_registers_move, :remote => true, :html => {:class=>"form-horizontal", :id=> "cash_register_move_form"}) do |f| %>
-  <%= f.hidden_field(:open_cash_register_id, :value => @sale.open_cash_register_id) %>
-  <%= f.hidden_field(:sale_id, :value => @sale.id) %>
+<%= form_for(@cash_registers_move, remote: true, html: { class: "form-horizontal", id: "cash_register_move_form" }) do |f| %>
+  <%= f.hidden_field(:open_cash_register_id, value: @sale.open_cash_register_id) %>
+  <%= f.hidden_field(:sale_id, value: @sale.id) %>
   <div class="portlet-body form">
     <div class="alert alert-danger hidden" id="error_explanation_move"></div>
     <div class="row">
@@ -38,7 +38,7 @@
               <span class="help-block">monto recibido. </span>
               <div class="input-group col-md-11">
                 <span class="input-group-addon"> $ </span>
-                <%= f.number_field :received, {:class=>"form-control mask_decimal first_input", :oninput=> 'lock_button()'} %>
+                <%= f.number_field :received, { class: "form-control mask_decimal first_input", oninput: 'lock_button()' } %>
               </div>
             </div>
           </div>
@@ -48,7 +48,7 @@
               <span class="help-block">monto a ABONAR. </span>
               <div class="input-group col-md-11">
                 <span class="input-group-addon"> $ </span>
-                <%= f.number_field :quantity, {:class=>"form-control mask_decimal", :oninput => 'lock_button()'} %>
+                <%= f.number_field :quantity, { class: "form-control mask_decimal", oninput: 'lock_button()' } %>
               </div>
             </div>
           </div>
@@ -57,7 +57,7 @@
             <div class="form-group">
               <span class="help-block">forma de pago. </span>
               <div class="input-group col-md-12">
-                <%= f.select :payment_method_id, PaymentMethod.vigentes.map {|c| [c.method, c.id] }, {:include_blank => "Seleccione", :selected => @cash_id}, {:class => "form-control" }   %>
+                <%= f.select :payment_method_id, PaymentMethod.vigentes.map { |c| [c.method, c.id] }, {:include_blank => "Seleccione", :selected => @cash_id}, { class: "form-control" } %>
               </div>
             </div>
           </div>
@@ -69,11 +69,11 @@
         <!--  datos de la tarjeta cuando aplica -->
         <div class="col-md-12" id="card_info" style="display: none;">
           <div class="form-group">
-            <%= f.label :cardnumber,  {:class=>"col-md-3 control-label "} do %> Tarjeta: <span class="required">*</span>
+            <%= f.label :cardnumber, { class: "col-md-3 control-label" } do %> Tarjeta: <span class="required">*</span>
             <% end %>
             <div class="col-md-8">
-                <%= f.text_field :cardnumber, {:class => "form-control"}  %>
-                <span class="help-block">Ultimos 4 digitos de la tarjeta. </span>
+              <%= f.text_field :cardnumber, { class: "form-control", maxlength: 4 } %>
+              <span class="help-block">Últimos 4 dígitos de la tarjeta. </span>
             </div>
           </div>
         </div>
@@ -90,7 +90,7 @@
         </div>
       </div>
       <div class="col-md-12">
-        <button type="button" class="btn green btn-block" disabled id="save_move" onclick="submitForm()">Abonar a credito</button>
+        <button type="button" class="btn green btn-block" disabled id="save_move" onclick="submitForm()">Abonar a crédito</button>
       </div>
     </div>
   </div>

+ 32 - 21
app/views/cash_registers_moves/_form_liquidate_reserved_sale.html.erb

@@ -90,7 +90,7 @@
             <div class="form-group">
               <span class="help-block">forma de pago. </span>
               <div class="input-group col-md-12">
-                <%= f.select :payment_method_id, PaymentMethod.vigentes.map {|c| [c.method, c.id] }, {:include_blank => "Seleccione", :selected => @cash_id}, {:class => "form-control" }   %>
+                <%= f.select :payment_method_id, PaymentMethod.vigentes.map { |c| [c.method, c.id] }, {:include_blank => "Seleccione", :selected => @cash_id}, {:class => "form-control" }   %>
               </div>
             </div>
           </div>
@@ -100,30 +100,30 @@
           </div>
         </div>
         <!--  datos de la tarjeta cuando aplica -->
-        <div class="col-md-12" id="card_info" style="display: none;">
+        <div class="col-md-offset-6 col-md-6" id="card_info" style="display: none;">
           <div class="form-group">
-            <%= f.label :cardnumber,  {:class=>"col-md-3 control-label "} do %> Tarjeta: <span class="required">*</span>
+            <%= f.label :cardnumber, {:class=>"col-md-2 control-label "} do %> Tarjeta: <span class="required">*</span>
             <% end %>
-            <div class="col-md-8">
-                <%= f.text_field :cardnumber, {:class => "form-control"}  %>
-                <span class="help-block">Ultimos 4 digitos de la tarjeta. </span>
+            <div class="col-md-6">
+              <%= f.text_field :cardnumber, { class: "form-control input-small", maxlength: 4 } %>
+              <span class="help-block">Últimos 4 dígitos de la tarjeta. </span>
             </div>
           </div>
         </div>
       </div>
       <div class="col-md-12">
         <table class="table table-striped table-hover table-bordered" id="payments_table">
-            <thead>
-                <tr>
-                    <th> Recibido </th>
-                    <th> Cobro </th>
-                    <th> Forma de pago </th>
-                    <th> Info. adicional </th>
-                    <th> Acciones </th>
-                </tr>
-            </thead>
-            <tbody>
-            </tbody>
+          <thead>
+            <tr>
+              <th> Recibido </th>
+              <th> Cobro </th>
+              <th> Forma de pago </th>
+              <th> Info. adicional </th>
+              <th> Acciones </th>
+            </tr>
+          </thead>
+          <tbody>
+          </tbody>
         </table>
       </div>
       <!-- div para mostrar cambio -->
@@ -138,20 +138,20 @@
         </div>
       </div>
       <div class="col-md-12">
-       <span class="help-block">Este boton se habilita cuando se registre un pago. </span>
+       <span class="help-block">Este botón se habilita cuando se registre un pago. </span>
         <button type="button" class="btn green btn-block" disabled id="save_move" onclick="saveMoves()">Aceptar</button>
       </div>
     </div>
   </div>
 <% end %>
 <script type="text/javascript">
-   $('#datetimepicker2').datetimepicker({
+  $('#datetimepicker2').datetimepicker({
     icons: {
       date: "fa fa-calendar"
     },
     format: "DD/MM/YYYY",
     defaultDate: new Date()
-   });
+  });
 
   $('#cash_registers_move_payment_method_id').on('change', function() {
     if ($(this).val() != <%= @cash_id %>) {
@@ -171,7 +171,18 @@
   });
 
   function addRow() {
-    $('#cash_register_move_form').submit();
+    debt = parseFloat($('#reserve_debt').val());
+    quantity = parseFloat($('#cash_registers_move_quantity').val());
+    received = parseFloat($('#cash_registers_move_received').val());
+    payment_method = $('#cash_registers_move_payment_method_id option:selected').val();
+
+    if (((quantity <= debt && quantity > 0) && (received >= quantity && payment_method == "2")) || (payment_method == "1" && quantity > 0) ) {
+      $('#cash_register_move_form').submit();
+    } else if (quantity > debt || quantity == 0) {
+      toastr["error"]("El monto a abonar no puede ser mayor al adeudo, ni puede ir en ceros");
+    } else if ((received <= 0 || quantity > received) && payment_method == "2") {
+      toastr["error"]("La cantidad recibida no puede ir en ceros, ni se puede abonar más de lo recibido");
+    }
   }
 
   function deleteCashMove(input) {

+ 31 - 25
app/views/cash_registers_moves/_form_sale_reserve.html.erb

@@ -1,6 +1,6 @@
-<%= form_for(@cash_registers_move, :remote => true, :html => {:class=>"form-horizontal", :id=> "cash_register_move_form"}) do |f| %>
-  <%= f.hidden_field(:open_cash_register_id, :value => @sale.open_cash_register_id) %>
-  <%= f.hidden_field(:sale_id, :value => @sale.id) %>
+<%= form_for(@cash_registers_move, remote: true, html: { class: "form-horizontal", id: "cash_register_move_form" }) do |f| %>
+  <%= f.hidden_field(:open_cash_register_id, value: @sale.open_cash_register_id) %>
+  <%= f.hidden_field(:sale_id, value: @sale.id) %>
   <%= hidden_field_tag :reserve_sale_percent, @min_quantity_reserve %>
   <div class="portlet-body form">
     <div class="alert alert-danger hidden" id="error_explanation_move"></div>
@@ -52,7 +52,7 @@
             <span class="help-block">monto recibido. </span>
             <div class="input-group col-md-11">
               <span class="input-group-addon"> $ </span>
-              <%= f.number_field :received, {:class=>"form-control mask_decimal first_input"} %>
+              <%= f.number_field :received, { class: "form-control mask_decimal first_input" } %>
             </div>
           </div>
         </div>
@@ -62,7 +62,7 @@
             <span class="help-block">monto a ABONAR. </span>
             <div class="input-group col-md-11">
               <span class="input-group-addon"> $ </span>
-              <%= f.number_field :quantity, {:class=>"form-control mask_decimal"} %>
+              <%= f.number_field :quantity, { class: "form-control mask_decimal" } %>
             </div>
           </div>
         </div>
@@ -71,7 +71,7 @@
           <div class="form-group">
             <span class="help-block">forma de pago. </span>
             <div class="input-group col-md-12">
-              <%= f.select :payment_method_id, PaymentMethod.vigentes.map {|c| [c.method, c.id] }, {:include_blank => "Seleccione", :selected => @cash_id}, {:class => "form-control" }   %>
+              <%= f.select :payment_method_id, PaymentMethod.vigentes.map { |c| [c.method, c.id] }, { include_blank: "Seleccione", selected: @cash_id }, { class: "form-control" } %>
             </div>
           </div>
         </div>
@@ -80,30 +80,30 @@
           <button type="button" class="btn green pull-right" onclick="addRow()">Agregar</button>
         </div>
         <!--  datos de la tarjeta cuando aplica -->
-        <div class="col-md-12" id="card_info" style="display: none;">
+        <div class="col-md-offset-6 col-md-6" id="card_info" style="display: none;">
           <div class="form-group">
-            <%= f.label :cardnumber,  {:class=>"col-md-3 control-label", :autocomplete=> "off"} do %> Tarjeta: <span class="required">*</span>
+            <%= f.label :cardnumber, { class: "col-md-2 control-label", :autocomplete=> "off" } do %> Tarjeta: <span class="required">*</span>
             <% end %>
-            <div class="col-md-8">
-                <%= f.text_field :cardnumber, {:class => "form-control"}  %>
-                <span class="help-block">Ultimos 4 digitos de la tarjeta. </span>
+            <div class="col-md-6">
+              <%= f.text_field :cardnumber, { class: "form-control", maxlength: 4 } %>
+              <span class="help-block">Últimos 4 dígitos de la tarjeta. </span>
             </div>
           </div>
         </div>
       </div>
       <div class="col-md-12">
         <table class="table table-striped table-hover table-bordered" id="payments_table">
-            <thead>
-                <tr>
-                    <th> Recibido </th>
-                    <th> Cobro </th>
-                    <th> Forma de pago </th>
-                    <th> Info. adicional </th>
-                    <th> Acciones </th>
-                </tr>
-            </thead>
-            <tbody>
-            </tbody>
+          <thead>
+            <tr>
+              <th> Recibido </th>
+              <th> Cobro </th>
+              <th> Forma de pago </th>
+              <th> Info. adicional </th>
+              <th> Acciones </th>
+            </tr>
+          </thead>
+          <tbody>
+          </tbody>
         </table>
       </div>
       <!-- div para mostrar total -->
@@ -118,7 +118,7 @@
         </div>
       </div>
       <div class="col-md-12">
-       <span class="help-block">Este boton se habilita cuando se cubre la cantidad minima de anticipo. </span>
+       <span class="help-block">Este botón se habilita cuando se cubre la cantidad mínima de anticipo. </span>
         <button type="button" class="btn green btn-block" id="save_move" disabled onclick="confirmReserve()">Apartar</button>
       </div>
     </div>
@@ -126,7 +126,7 @@
 <script type="text/javascript">
   $('#closemodal').removeAttr('data-dismiss');
   $( "#closemodal" ).click(function() {
-    if (window.confirm("Está seguro que desea SALIR?, al salir SE CANCELARÁ EL APARTADO")) {
+    if (window.confirm("¿Está seguro que desea SALIR?, al salir SE CANCELARÁ EL APARTADO")) {
       $.ajax({
         type: "DELETE",
         url: "/sales/" + <%= @sale.id %> ,
@@ -166,7 +166,13 @@
   });
 
   function addRow() {
-    $('#cash_register_move_form').submit();
+    debt = parseFloat($('#sale_total').val());
+    quantity = parseFloat($('#cash_registers_move_quantity').val());
+    if (quantity <= debt) {
+      $('#cash_register_move_form').submit();
+    } else {
+      toastr["error"]("El monto del anticipo no puede ser mayor al total de la venta");
+    }
   }
 
   function unlockConfirmPayment() {

+ 33 - 34
app/views/cash_registers_moves/_quick_credit_payment.html.erb

@@ -1,44 +1,43 @@
 <div class="form-horizontal">
-    <div class="portlet-body form">
-        <div class="form-body">
-            <div class="row">     
-                <div class="col-md-12">
-                    <div class="form-group">
-                       <%= label_tag :customer_id,  {:class=>"col-md-4 control-label"} do %>Cliente <span class="required">*</span> <% end %> 
-                        <div class="col-md-6">
-                          <%= select_tag :customer_id, options_from_collection_for_select(@customers, :id, :nick_name), :include_blank => "Seleccione cliente",  class: "form-control select2" %>
-                        </div>
-                    </div>
-                </div>
+  <div class="portlet-body form">
+    <div class="form-body">
+      <div class="row">
+        <div class="col-md-12">
+          <div class="form-group">
+             <%= label_tag :customer_id,  {:class=>"col-md-4 control-label"} do %>Cliente <span class="required">*</span> <% end %>
+            <div class="col-md-6">
+              <%= select_tag :customer_id, options_from_collection_for_select(@customers, :id, :nick_name), :include_blank => "Seleccione cliente",  class: "form-control select2" %>
             </div>
+          </div>
         </div>
+      </div>
     </div>
-    <div class="form-actions">
-        <h4 class="form-section"> </h4>
-        <div class="row">
-            <div class="col-md-12">                     
-                <button type="submit" class="btn green" onclick="createQuickDebt()">Abonar a credito</button>
-                <button type="button" class="btn default" onclick="cerrarDialog()">Cerrar</button>
-            </div>
-        </div>
-    </div>    
+  </div>
+  <div class="form-actions">
+    <h4 class="form-section"> </h4>
+    <div class="row">
+      <div class="col-md-12">
+        <button type="submit" class="btn green" onclick="createQuickDebt()">Abonar a crédito</button>
+        <button type="button" class="btn default" onclick="cerrarDialog()">Cerrar</button>
+      </div>
+    </div>
+  </div>
 </div>
 <script>
-    App.init();
+  App.init();
 
-    function cerrarDialog() {
-        $('#dialog').modal('toggle');
-    }
+  function cerrarDialog() {
+    $('#dialog').modal('toggle');
+  }
 
-    function createQuickDebt(argument) {
-        var customerId = $('#customer_id').val();
-      $.ajax({
-        type: "GET",
-        url: "/create_quick_debt_payment/" + customerId,
-        dataType: "script",
-        success: function(xhr, status, error) {
-        }
-      }); 
+  function createQuickDebt(argument) {
+    var customerId = $('#customer_id').val();
+    $.ajax({
+    type: "GET",
+    url: "/create_quick_debt_payment/" + customerId,
+    dataType: "script",
+    success: function(xhr, status, error) {
     }
+    });
+  }
 </script>
-	

+ 1 - 0
app/views/cash_registers_moves/create.js.erb

@@ -17,6 +17,7 @@ $("#error_explanation_move").html("")
 		$('#payments_table tbody').append(newRow);
 		$('#cash_registers_move_quantity').val('');
 		$('#cash_registers_move_payment_method_id').val('');
+		$('#cash_registers_move_received').attr('disabled', false);
 		if($("#card_info").is(":visible")) {
 			$('#cash_registers_move_cardnumber').val('');
 			$("#card_info").fadeOut();