/////////////////////////////////////////////////////////////////////////////
// ESTÀNDARD LINGÜÍSTIC (C) 2002-2006
//
// calcprecio.js -> Aplica el cálculo de un presupuesto/precio de un encargo.
//
//  Version inicial programada por Gerardo García Peña
//
/////////////////////////////////////////////////////////////////////////////

function calcprecio(recconver,  preciobase, precio1k,   precio1m,
                    preciopcor, precioprvs, precioprev, purgent,
                    iva,        nbytes,     npalabras,  raw_file,
                    correccion, lexpress,   tipotrad,   urgente)
{
  // Asignamos el precio base
  resultado = new Number(preciobase);
  if(lexpress && tipotrad >= 0)
  {
    // Sumamos el precio por M
    resultado += Number(precio1m * Math.ceil(nbytes / 1048576.0));
    // Sumamos el precio por K
    resultado += Number(precio1k * Math.ceil(nbytes / 1024.0));
    // Añadimos el recargo por conversión (si hubo)
    if(raw_file) resultado += Number(recconver * Math.ceil(nbytes / 1048576.0));
  }
  // Sumamos el precio de la correccion (si hubo)
  if(correccion)   resultado += preciopcor * npalabras;
  // Sumamos el precio de la rev superf. (si hubo)
  if(tipotrad == 1) resultado += precioprvs * npalabras;
  // Sumamos el precio de la revision (si hubo)
  if(tipotrad == 2) resultado += precioprev * npalabras;
  // Incrementamos el precio si es URGENTE
  if(urgente)      resultado *= (1.0 + purgent);
  // Contamos el IVA
  resultado *= (1.0 + iva);

    // Redondeamos el resultado a solo dos cifras decimales
  resultado = Math.round(resultado * 100.0) / 100.0;

  return resultado;
}

function desglosacalcprecio(desgl,
                            recconver,  preciobase, precio1k,   precio1m,
                            preciopcor, precioprvs, precioprev, purgent,
                            iva,        nbytes,     npalabras,  raw_file,
                            correccion, lexpress,   tipotrad,   urgente,
                            ptas)
{
  var dpreciobase, dprecio1m, dprecio1k, dconversion, dcorreccion, drevsup,
      drevision, durgente, diva, total;

  total = 0;
  total += dpreciobase = Number(preciobase);

  if(lexpress && tipotrad >= 0)
  {
    total += dprecio1m   = Number(precio1m * Math.ceil(nbytes / 1048576.0));
    total += dprecio1k   = Number(precio1k * Math.ceil(nbytes / 1024.0));
    total += dconversion = raw_file && lexpress
                             ? Number(recconver * Math.ceil(nbytes / 1048576.0))
                             : 0.0;
  } else {
    dprecio1m = dprecio1k = dconversion = 0.0;
  }
  total += dcorreccion = (correccion)                ? preciopcor * npalabras                            : 0.0;
  total += drevsup     = (tipotrad == 1)             ? precioprvs * npalabras                            : 0.0;
  total += drevision   = (tipotrad == 2)             ? precioprev * npalabras                            : 0.0;
  total += durgente    = (urgente)                   ? total * purgent                                   : 0.0;
  if(desgl != "noiva")
    total += diva = total * iva;

  if(desgl == "preciobase") total = dpreciobase;
  if(desgl == "precio1m")   total = dprecio1m;
  if(desgl == "precio1k")   total = dprecio1k;
  if(desgl == "recconver")  total = dconversion;
  if(desgl == "preciopcor") total = dcorreccion;
  if(desgl == "precioprvs") total = drevsup;
  if(desgl == "precioprev") total = drevision;
  if(desgl == "purgent")    total = durgente;
  if(desgl == "iva")        total = diva;

  if(ptas)
    total = Math.round(total * 166.386);
  else
    total = Math.round(total * 100.0) / 100.0;
  
  return total;
}

