package models;
import javax.persistence.Entity;
import play.data.validation.*;
import play.db.jpa.Model;
@Entity
public class Concepto extends Model {
@Required(message = "Especifique concepto")
@MaxSize(250)
public String concepto;
@Required(message = "Especifique unidad")
@MaxSize(50)
public String unidad;
@Required(message = "Especifique cantidad")
@Min(0)
public Double cantidad;
@Required(message = "Especifique precio unitario")
@Min(0)
public Double precioUnitario;
@Min(0)
private Double importeIVATrasladado;
@Min(0)
public Double porcentajeIVATrasladado;
@Required(message = "Especifique importe")
@Min(0)
private Double importe;
public Concepto(String concepto, String unidad, Double cantidad, Double precioUnitario){
this.concepto = concepto;
this.unidad = unidad;
this.cantidad = (cantidad.isNaN()) ? 0.00 : cantidad ;
this.precioUnitario = (precioUnitario.isNaN()) ? 0.00 : precioUnitario ;
this.porcentajeIVATrasladado = 0.00;
this.importeIVATrasladado = getImporteIVATrasladado();
this.importe = getImporte();
}
public Concepto(String concepto, String unidad, Double cantidad, Double precioUnitario, Double porcentajeIVATrasladado){
this.concepto = concepto;
this.unidad = unidad;
this.cantidad = (cantidad.isNaN()) ? 0.00 : cantidad ;
this.precioUnitario = (precioUnitario.isNaN()) ? 0.00 : precioUnitario ;
this.porcentajeIVATrasladado = (porcentajeIVATrasladado.isNaN()) ? 0.00 : porcentajeIVATrasladado ;
this.importeIVATrasladado = getImporteIVATrasladado();
this.importe = getImporte();
}
public Double getImporteIVATrasladado(){
validar();
return (this.cantidad * this.precioUnitario) * this.porcentajeIVATrasladado / 100;
}
public Double getImporte(){
validar();
return (this.cantidad * this.precioUnitario);
}
public boolean esValido(){
validar();
return (getImporte() > 0 && this.cantidad > 0 && this.precioUnitario > 0);
}
public void validar(){
this.cantidad = (this.cantidad == null) ? 0.00 : this.cantidad ;
this.precioUnitario = (this.precioUnitario == null) ? 0.00 : this.precioUnitario ;
this.porcentajeIVATrasladado = (this.porcentajeIVATrasladado == null) ? 0.00 : this.porcentajeIVATrasladado ;
}
}