Introducción a AJAX

14.2. Ejercicio 2

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Ejercicio 2 - Clases</title>
<script type="text/javascript">
// Definición de la clase Cliente
function Cliente(nombre, direccion, telefono, nif) {
  this.nombre = nombre;
  this.direccion = direccion;
  this.telefono = telefono;
  this.nif = nif;
}

// Definición de la clase Elemento
function Elemento(descripcion, cantidad, precio) {
  this.descripcion = descripcion;
  this.cantidad = cantidad;
  this.precio = precio;
}

// Definición de la clase Factura
function Factura(cliente, elementos) {
  this.cliente = cliente;
  this.elementos = elementos;
  this.informacion = {
    baseImponible:  0,
    iva:            16,
    total:          0,
    formaPago:      "contado"
  };
};

// La información de la empresa que emite la factura se
// añade al prototype porque se supone que no cambia
Factura.prototype.empresa = {
  nombre:    "Nombre de la empresa",
  direccion: "Direccion de la empresa",
  telefono:  "900900900",
  nif:       "XXXXXXXX"
};

// Métodos añadidos al prototype de la Factura
Factura.prototype.calculaTotal = function() {
  for(var i=0; i<this.elementos.length; i++) {
    this.informacion.baseImponible += this.elementos[i].cantidad * this.elementos[i].precio;
  }
  this.informacion.total = this.informacion.baseImponible * this.informacion.iva;
}

Factura.prototype.muestraTotal = function() {
  this.calculaTotal();
  alert("TOTAL = " + this.informacion.total + " euros");
}


// Creación de una factura
var elCliente = new Cliente("Cliente 1", "", "", "");
var losElementos = [new Elemento("elemento1", "1", "5"),
                    new Elemento("elemento2", "2", "12"),
                    new Elemento("elemento3", "3", "42")
                   ];
var laFactura = new Factura(elCliente, losElementos);
laFactura.muestraTotal();
</script>
</head>

<body>
</body>
</html>

Descargar ZIP con la solución completa