Forráskód Böngészése

Validate expense quantity, must be greater than 0

Jacqueline Maldonado 7 éve
szülő
commit
c561d041b0

+ 29 - 29
app/models/expense.rb

@@ -1,41 +1,41 @@
 class Expense < ActiveRecord::Base
-	belongs_to :expensesconcept
-	belongs_to :open_cash_register
-	has_many :cash_registers_moves
+  belongs_to :expensesconcept
+  belongs_to :open_cash_register
+  has_many :cash_registers_moves
 
-  	##--- Llevar registro de Actividad del usuario
-	audited
+  ##--- Llevar registro de Actividad del usuario
+  audited
 
-	enum status: [:canceled, :active, :registered]
+  enum status: [:canceled, :active, :registered]
 
-	attr_accessor :skip_open_cash_validation
-	attr_accessor :skip_open_cash_has_money
+  attr_accessor :skip_open_cash_validation
+  attr_accessor :skip_open_cash_has_money
 
-	validates_presence_of :quantity, message: "Se debe indicar la cantidad."
-	validates_presence_of :open_cash_register_id, message: "Se debe elegir caja registradora.", unless: :skip_open_cash_validation
-	validates_presence_of :expensesconcept_id, message: "Se debe elegir concepto de egreso."
+  validates_presence_of :quantity, message: "Se debe indicar la cantidad."
+  validates_numericality_of :quantity, greater_than: 0.00, message: "La cantidad debe ser mayor a $0"
+  validates_presence_of :open_cash_register_id, message: "Se debe elegir caja registradora.", unless: :skip_open_cash_validation
+  validates_presence_of :expensesconcept_id, message: "Se debe elegir concepto de egreso."
 
-	validate :open_cash_has_money?, unless: :skip_open_cash_has_money, :on => :create
+  validate :open_cash_has_money?, unless: :skip_open_cash_has_money, on: :create
 
-	scope :activos, -> { where( "status = 2").order("created_at") }
+  scope :activos, -> { where(status: 2).order("created_at") }
 
-	def open_cash_has_money?
-		money_in_cash = 0
-	    money_in_cash += self.open_cash_register.initial_cash
+  def open_cash_has_money?
+    money_in_cash = 0
+    money_in_cash += open_cash_register.initial_cash
 
-	    CashRegistersMove.where(:open_cash_register_id => self.open_cash_register.id, :move_type => '0').each do |move|
-	    	money_in_cash -=  move.quantity
-	    end
+    CashRegistersMove.where(open_cash_register_id: open_cash_register.id, move_type: '0').each do |move|
+      money_in_cash -= move.quantity
+    end
 
-	    CashRegistersMove.where(:open_cash_register_id => self.open_cash_register.id, :move_type => '1').each do |move|
-	    	money_in_cash +=  move.quantity
-	    end
-
-	    if money_in_cash >= self.quantity
-	    	return true
-	    else
-	    	errors.add :quantity, "La cantidad es superior al efectivo disponible en caja."
-    	end
-	end
+    CashRegistersMove.where(open_cash_register_id: open_cash_register.id, move_type: '1').each do |move|
+      money_in_cash += move.quantity
+    end
 
+    if money_in_cash >= quantity
+      return true
+    else
+      errors.add :quantity, "La cantidad es superior al efectivo disponible en caja."
+    end
+  end
 end

+ 15 - 15
app/views/expenses/_expenses_for_admin.html.erb

@@ -6,8 +6,8 @@
       </li>
       <li>
           <a href="#generales" data-toggle="tab"> Generales </a>
-      </li>                    
-    </ul>                  
+      </li>
+    </ul>
   </div>
   <div class="col-md-10 col-sm-9 col-xs-9">
     <div class="tab-content">
@@ -18,9 +18,9 @@
               <thead>
                 <tr>
                   <th>#</th>
-                  <th>Codigo de egreso</th>                  
+                  <th>Código de egreso</th>
                   <th>Concepto de egreso</th>
-                  <th>Punto de venta</th>                       
+                  <th>Punto de venta</th>
                   <th>Caja registradora</th>
                   <th>Fecha</th>
                   <th>Cantidad</th>
@@ -33,7 +33,7 @@
                 <% @from_pointsale.each_with_index do |expense, key| %>
                 <tr>
                   <td><%= expense.id %></td>
-                  <td><%= expense.expense_code %></td>                  
+                  <td><%= expense.expense_code %></td>
                   <td><%= expense.expensesconcept.name %></td>
                   <td><%= expense.open_cash_register.cash_register.pointsale.name %></td>
                   <td><%= expense.open_cash_register.cash_register.name %></td>
@@ -48,8 +48,8 @@
                        <span class="label label-sm label-danger"> <i class="fa fa-close"></i> Cancelada </span>
                     <% when "registered"%>
                        <span class="label label-sm label-success"><i class="fa fa-check"></i>  Caja cerrada </span>
-                    <% end %>                          
-                  </td>                        
+                    <% end %>
+                  </td>
                   <td class="text-center">
                     <% if expense.status == "active" %>
                       <%= link_to expense , method: :delete, :class => "btn btn-icon-only btn-danger", :title=>"Cancelar egreso", data: { confirm: '¿Esta seguro que desea cancelar el egreso?'}   do %> <i class="fa fa-ban"></i><% end %>
@@ -69,7 +69,7 @@
               <thead>
                 <tr>
                   <th>#</th>
-                  <th>Codigo de egreso</th>                    
+                  <th>Código de egreso</th>
                   <th>Concepto de gasto</th>
                   <th>Fecha</th>
                   <th>Cantidad</th>
@@ -82,7 +82,7 @@
                 <% @general_expenses.each_with_index do |expense, key| %>
                 <tr>
                   <td><%= expense.id %></td>
-                  <td><%= expense.expense_code %></td>                       
+                  <td><%= expense.expense_code %></td>
                   <td><%= expense.expensesconcept.name %></td>
                   <td><%= l(expense.expense_date, :format => '%d/%B/%Y') %> </td>
                   <td><%= number_to_currency(expense.quantity, precision: 2) %> </td>
@@ -93,18 +93,18 @@
                       <span class="label label-sm label-success"> <i class="fa fa-check"></i> Activo </span>
                     <% when "canceled"%>
                        <span class="label label-sm label-danger"> <i class="fa fa-close"></i> Cancelado </span>
-                    <% end %>                          
-                  </td>                        
+                    <% end %>
+                  </td>
                   <td class="text-center">
                       <%= link_to expense , method: :delete, :class => "btn btn-icon-only btn-danger", :title=>"Cancelar egreso", data: { confirm: '¿Esta seguro que desea cancelar el egreso?'}   do %> <i class="fa fa-ban"></i><% end %>
                   </td>
                 </tr>
                 <% end %>
               </tbody>
-            </table>                            
+            </table>
           </div>
-        </div>                      
+        </div>
       </div>
-    </div>                  
-  </div>  
+    </div>
+  </div>
 </div>

+ 5 - 5
app/views/expenses/_expenses_for_manager.html.erb

@@ -2,7 +2,7 @@
   <thead>
     <tr>
       <th>#</th>
-      <th>Codigo de egreso</th>           
+      <th>Código de egreso</th>
       <th>Concepto de egreso</th>
       <th>Caja registradora</th>
       <th>Fecha</th>
@@ -16,7 +16,7 @@
     <% @expenses.each_with_index do |expense, key| %>
     <tr>
       <td><%= expense.id %></td>
-      <td><%= expense.expense_code %></td>            
+      <td><%= expense.expense_code %></td>
       <td><%= expense.expensesconcept.name %></td>
       <td><%= expense.open_cash_register.cash_register.name %></td>
       <td><%= l(expense.created_at, :format => '%d/%B/%Y') %> </td>
@@ -30,8 +30,8 @@
            <span class="label label-sm label-danger"> <i class="fa fa-close"></i> Cancelado </span>
         <% when "registered"%>
            <span class="label label-sm label-success"><i class="fa fa-check"></i>  Caja cerrada </span>
-        <% end %>                          
-      </td>                        
+        <% end %>
+      </td>
       <td class="text-center">
         <% if expense.status == "active" %>
           <%= link_to expense , method: :delete, :class => "btn btn-icon-only btn-danger", :title=>"Cancelar egreso", data: { confirm: '¿Esta seguro que desea cancelar el egreso?'}   do %> <i class="fa fa-ban"></i><% end %>
@@ -40,4 +40,4 @@
     </tr>
     <% end %>
   </tbody>
-</table>
+</table>

+ 22 - 22
app/views/expenses/_form.html.erb

@@ -11,14 +11,14 @@
       <div class="col-md-8">
         <%= hidden_field_tag :concept_purchase_payment, @concept_purchase_payment.id %>
         <div class="form-group">
-          <%= f.label :expense_code, {:class=>"col-md-3 control-label"} do %> Codigo de egreso
+          <%= f.label :expense_code, {:class=>"col-md-3 control-label"} do %> Código de egreso
           <span class="required">*</span>
           <% end %>
           <div class="col-md-4 input-group">
             <span class="input-group-addon"><i class="fa fa-barcode"></i></span>
             <%= f.text_field :expense_code, { :class=>"form-control", :readonly => true} %>
           </div>
-        </div>         
+        </div>
         <% if current_user.usertype == "A" %>
           <div class="form-group">
             <%= f.label :expense_date, "Fecha", {:class=>"col-md-3 control-label"} do %> Fecha
@@ -28,25 +28,25 @@
                     <div class='input-group date' id='datetimepicker1'>
                         <span class="input-group-addon">
                             <span class="glyphicon glyphicon-calendar"></span>
-                        </span>                    
+                        </span>
                         <%= f.text_field :expense_date, class: 'form-control'%>
                     </div>
                 </div>
-          </div> 
-        <% end %>            
+          </div>
+        <% end %>
         <% if current_user.usertype != "A" %>
           <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-4 select2-bootstrap-prepend">
-              <%= f.select :open_cash_register_id, @current_user.pointsale.open_cash_registers.abiertas.map{|o| [o.cash_register.name, o.id]}, {:prompt => "Seleccione"}, { :class => 'form-control select2', :disabled => @is_cashier} %> 
+              <%= f.select :open_cash_register_id, @current_user.pointsale.open_cash_registers.abiertas.map{|o| [o.cash_register.name, o.id]}, {:prompt => "Seleccione"}, { :class => 'form-control select2', :disabled => @is_cashier} %>
               <% if current_user.usertype == 'C' %>
                 <%= f.hidden_field :open_cash_register_id %>
-              <% end %>       
+              <% end %>
             </div>
           </div>
-        <% end %>       
+        <% end %>
         <div class="form-group">
           <%= f.label :expensesconcept_id, "Concepto", {:class=>"col-md-3 control-label"} do %>Concepto de egreso
           <span class="required">*</span>
@@ -54,7 +54,7 @@
           <div class="input-group col-md-4 select2-bootstrap-prepend">
             <%= f.collection_select :expensesconcept_id, @expenses_concepts, :id, :name, {:prompt => "Seleccione"}, {:class => "form-control select2", :style => "width: 100%"} %>
           </div>
-        </div> 
+        </div>
 
         <div class="form-group hidden" id="purchases_div">
           <%= f.label :purchases, "Concepto", {:class=>"col-md-3 control-label"} do %>Compras
@@ -64,13 +64,13 @@
             <% if current_user.usertype == 'A' %>
               <%= select_tag "purchases", options_from_collection_for_select(Purchase.notpaid, :id, :code_with_price), :include_blank => "Seleccione",  class: "form-control select2" %>
             <% else %>
-              <%= select_tag "purchases", options_from_collection_for_select(Purchase.notpaid.where(:pointsale_id => current_user.pointsale_id), :id, :code_with_price), :include_blank => "Seleccione",  class: "form-control select2" %>            
+              <%= select_tag "purchases", options_from_collection_for_select(Purchase.notpaid.where(:pointsale_id => current_user.pointsale_id), :id, :code_with_price), :include_blank => "Seleccione",  class: "form-control select2" %>
             <% end %>
           </div>
-        </div> 
+        </div>
         <div class="form-group">
           <%= f.label :quantity,  {:class=>"col-md-3 control-label"} do %>Cantidad <span class="required">*</span>
-          <% end %> 
+          <% end %>
           <div class="col-md-4" style="padding-left:0px;padding-right:0px">
             <%= f.number_field :quantity, {:class=>"form-control" }  %>
           </div>
@@ -86,7 +86,7 @@
   <div class="form-actions">
     <div class="row">
       <div class="col-md-9">
-        <%= f.submit 'Guardar', {:class=>"btn green"} %> 
+        <%= f.submit 'Guardar', {:class=>"btn green"} %>
         <%= link_to 'Cancelar', expenses_path, {:class=>"btn default"} %>
       </div>
     </div>
@@ -97,10 +97,10 @@
   $(document).on('page:change', function() {
     App.init();
     generateExpenseCode();
-    $("select.select2").select2({ 
+    $("select.select2").select2({
       allowClear: true,
       placeholder: 'Todas'
-    }); 
+    });
 
      $('#datetimepicker1').datetimepicker({
       icons: {
@@ -108,7 +108,7 @@
       },
       format: "DD/MM/YYYY",
       defaultDate: new Date()
-     });    
+     });
   });
 
   $('#expense_expensesconcept_id').on('change', function() {
@@ -133,8 +133,8 @@
         dataType: 'text',
         success: function(data) {
           $('#expense_expense_code').val(data);
-        },      
-      }); 
+        },
+      });
     <% else %>
       if($('#expense_open_cash_register_id').length > 0 && $('#expense_open_cash_register_id').val()) {
         $.ajax({
@@ -143,10 +143,10 @@
           dataType: 'text',
           success: function(data) {
             $('#expense_expense_code').val(data);
-          },      
-        });         
-      } 
+          },
+        });
+      }
     <% end %>
-  }  
+  }
 </script>