var popUp_Inv;

function OpenCalculoInverso(idname, postBack) {
	if (popUp_Inv != null) { try { popUp_Inv.close(); } catch (e) { ; } }
	popUp_Inv = window.open('_CalculoInverso.aspx?formname=' + document.forms[0].name + '&id=' + idname + '&selected=&postBack=' + postBack, 'popupinverso', 'width=500,height=300,left=0,top=0');
}

function Comas2Puntos(valor) {
	return valor.toString().replace(",", ".");
}

function Puntos2Comas(valor) {
	return valor.toString().replace(".", ",");
}

function Redondea(valor, decimales) {
	var posi = String(valor).indexOf(".");
	if (posi > 0 && ((posi + decimales) <= String(valor).length)) {
		var resto = valor.toString().substring(0, posi + decimales + 1)
		return resto;
	}
	return valor;
}

function SetValores_Conceptos_From_PopUp(formname, nombre) {
	var _fp = "document.Form1.";
	window.opener.SetValores_Conceptos(formname, nombre, document.Form1.txtConcepto_Unidades.value, document.Form1.txtImporteBase.value, document.Form1.txtPorcentajeIVA.value, document.Form1.txtPorcentajeIRPF.value,
		document.Form1.txtPorcentajeCOM.value, document.Form1.txtPorcentajeDESC.value, document.Form1.txtDesgloseIVA.value, document.Form1.txtDesgloseIVA_Cliente.value, document.Form1.txtDesgloseIRPF.value,
		document.Form1.txtDesgloseIRPF_Cliente.value, document.Form1.txtDesgloseCOM.value, document.Form1.txtDesgloseDESC.value, document.Form1.txtImporteFinal.value, document.Form1.txtImporteFinal_Cliente.value);
}

/// <summary>
/// Actualiza los campos del formulario al finalizar el cálculo inverso.
/// </summary>
function SetValores_Conceptos(formName, nombre_unidades, vUnidades, vImporteBase, vPorcentajeIVA, vPorcentajeIRPF, vPorcentajeCOM, vPorcentajeDESC, vDesgloseIVA, vDesgloseIVA_Cliente, vDesgloseIRPF, vDesgloseIRPF_Cliente,
	vDesgloseCOM, vDesgloseDESC, vImporteFinal, vImporteFinal_Cliente) {

	try {
		var _unidades, _importebase;
		var _porcentajeiva, _porcentajecom, _porcentajedesc, _porcentajeirpf;
		var _desgloseiva, _desgloseiva_cliente, _desglosecom, _desgloseirpf, _desgloseirpf_cliente, _desglosedesc;
		var _importefinal, _importefinal_cliente;

		_unidades = eval("document.Form1." + nombre_unidades);
		_importebase = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "ImporteBase"));
		_porcentajeiva = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "PorcentajeIVA"));
		_porcentajecom = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "PorcentajeCOM"));
		_porcentajedesc = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "PorcentajeDESC"));
		_porcentajeirpf = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "PorcentajeIRPF"));

		_desgloseiva = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIVA"));
		_desgloseiva_cliente = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIVA_Cliente"));
		_desglosedesc = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseDESC"));
		_desglosecom = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseCOM"));
		_desgloseirpf = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIRPF"));
		_desgloseirpf_cliente = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIRPF_Cliente"));

		_importefinal = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "ImporteFinal"));
		_importefinal_cliente = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "ImporteFinal_Cliente"));

		_unidades.value = vUnidades;
		_importebase.value = vImporteBase;
		_porcentajeiva.value = vPorcentajeIVA;
		_porcentajeirpf.value = vPorcentajeIRPF;
		_porcentajecom.value = vPorcentajeCOM;
		_porcentajedesc.value = vPorcentajeDESC;
		_desgloseiva.value = vDesgloseIVA;
		_desgloseiva_cliente.value = vDesgloseIVA_Cliente;
		_desgloseirpf.value = vDesgloseIRPF;
		_desgloseirpf_cliente.value = vDesgloseIRPF_Cliente;
		_desglosedesc.value = vDesgloseDESC;
		_desglosecom.value = vDesgloseCOM;
		_importefinal.value = vImporteFinal;
		_importefinal_cliente.value = vImporteFinal_Cliente;
		popUp_Inv.close();
	}
	catch (e) {
		alert("Ocurrió un error al asignar los valores.");
	}
}

/// <summary>
/// Actualiza los datos del formulario, al cambiar de campo.
/// Actualizado el 04.04.2007
/// Incorporados campos IRPF Ajeno (resta)
/// </summary>
function HazCalculo_Conceptos(nombre_unidades) {
	var _unidades, _importebase, _importebase1, _importebase2, _importebase3, _importebase4;
	var _porcentajeiva, _porcentajeiva2, _porcentajeiva3, _porcentajeiva4, _porcentajecom, _porcentajedesc, _porcentajeirpf, _porcentajeirpf_ajeno;
	var _desgloseiva, _desgloseiva1, _desgloseiva2, _desgloseiva3, _desgloseiva4, _desgloseiva_cliente, _desgloseiva_cliente1, _desgloseiva_cliente2, _desgloseiva_cliente3, _desgloseiva_cliente4;
	var _desglosecom, _desgloseirpf, _desgloseirpf_cliente, _desgloseirpf_ajeno, _desgloseirpf_ajeno_cliente, _desglosedesc;
	var _importefinal, _importefinal_cliente, _importefinalman_aran, _importefinalman_cliente, _id_subfamilia;

	_unidades = eval("document.Form1." + nombre_unidades);
	_importebase = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "ImporteBase"));
	_importebase1 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "ImporteBase1"));
	_importebase2 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "ImporteBase2"));
	_importebase3 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "ImporteBase3"));
	_importebase4 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "ImporteBase4"));
	_porcentajeiva = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "PorcentajeIVA1"));
	_porcentajeiva2 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "PorcentajeIVA2"));
	_porcentajeiva3 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "PorcentajeIVA3"));
	_porcentajeiva4 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "PorcentajeIVA4"));
	//	_porcentajecom = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "PorcentajeCOM"));
	_porcentajedesc = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "PorcentajeDESC"));
	//_porcentajeirpf = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "PorcentajeIRPF"));
	_porcentajeirpf_ajeno = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "PorcentajeIRPF_Ajeno"));

	_desgloseiva = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIVA"));
	_desgloseiva1 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIVA1"));
	_desgloseiva2 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIVA2"));
	_desgloseiva3 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIVA3"));
	_desgloseiva4 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIVA4"));
	_desgloseiva_cliente = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIVA_Cliente"));
	_desgloseiva_cliente1 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIVA1_Cliente"));
	_desgloseiva_cliente2 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIVA2_Cliente"));
	_desgloseiva_cliente3 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIVA3_Cliente"));
	_desgloseiva_cliente4 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIVA4_Cliente"));
	_desglosedesc = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseDESC"));
	_desglosecom = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseCOM"));
	//_desgloseirpf = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIRPF"));
	//_desgloseirpf_cliente = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIRPF_Cliente"));
	_desgloseirpf_ajeno = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIRPF_Ajeno"));
	_desgloseirpf_ajeno_cliente = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIRPF_Ajeno_Cliente"));

	_importefinal = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "ImporteFinal"));
	_importefinal_cliente = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "ImporteFinal_Cliente"));
	_id_subfamilia = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "selIdSubFamilia"));

	var _strvalidacion = new String();

	if (isNaN(parseInt(_unidades.value))) {
		_strvalidacion += " - Las unidades no son correctas." + "\r\n";
	}
	if (isNaN(parseFloat(Comas2Puntos(_importebase1.value)))) {
		_strvalidacion += " - El importe base 1 no es correcto." + "\r\n";
	}
	if (isNaN(parseFloat(Comas2Puntos(_importebase2.value)))) {
		_strvalidacion += " - El importe base 2 no es correcto." + "\r\n";
	}
	if (isNaN(parseFloat(Comas2Puntos(_importebase3.value)))) {
		_strvalidacion += " - El importe base 3 no es correcto." + "\r\n";
	}
	if (isNaN(parseFloat(Comas2Puntos(_importebase4.value)))) {
		_strvalidacion += " - El importe base 4 no es correcto." + "\r\n";
	}
	if (isNaN(parseInt(_porcentajeiva.value))) {
		_strvalidacion += " - El porcentaje de IVA 1 no es correcto." + "\r\n";
	}
	if (isNaN(parseInt(_porcentajeiva2.value))) {
		_strvalidacion += " - El porcentaje de IVA 2 no es correcto." + "\r\n";
	}
	if (isNaN(parseInt(_porcentajeiva3.value))) {
		_strvalidacion += " - El porcentaje de IVA 3 no es correcto." + "\r\n";
	}
	if (isNaN(parseInt(_porcentajeiva4.value))) {
		_strvalidacion += " - El porcentaje de IVA 4 no es correcto." + "\r\n";
	}
	if (isNaN(parseInt(_porcentajedesc.value))) {
		_strvalidacion += " - El porcentaje de Descuento no es correcto." + "\r\n";
	}
//	if (isNaN(parseInt(_porcentajecom.value))) {
//		_strvalidacion += " - El porcentaje de Comisión no es correcto." + "\r\n";
//	}
//	if (isNaN(parseInt(_porcentajeirpf.value))) {
//		_strvalidacion += " - El porcentaje de IRPF (+) no es correcto." + "\r\n";
//	}
	if (isNaN(parseInt(_porcentajeirpf_ajeno.value))) {
		_strvalidacion += " - El porcentaje de IRPF (-) no es correcto." + "\r\n";
	}

	if (_strvalidacion != "") {
		alert(_strvalidacion);
	}
	else {

		_importebase.value = Puntos2Comas(Redondea(parseFloat(Comas2Puntos(_importebase1.value)) + parseFloat(Comas2Puntos(_importebase2.value)) + parseFloat(Comas2Puntos(_importebase3.value)) + parseFloat(Comas2Puntos(_importebase4.value)), 2));
		
		var base1 = parseFloat(Comas2Puntos(_unidades.value)) * parseFloat(Comas2Puntos(_importebase1.value));
		var base2 = parseFloat(Comas2Puntos(_unidades.value)) * parseFloat(Comas2Puntos(_importebase2.value));
		var base3 = parseFloat(Comas2Puntos(_unidades.value)) * parseFloat(Comas2Puntos(_importebase3.value));
		var base4 = parseFloat(Comas2Puntos(_unidades.value)) * parseFloat(Comas2Puntos(_importebase4.value));

		

		var tmp1 = base1 + base2 + base3 + base4;
		var if_tmp = 0;
		var ifc_tmp = 0;
		var p_iva = parseFloat(_porcentajeiva.value / 100);
		var p_iva2 = parseFloat(_porcentajeiva2.value / 100);
		var p_iva3 = parseFloat(_porcentajeiva3.value / 100);
		var p_iva4 = parseFloat(_porcentajeiva4.value / 100);
		var d_iva = 0;
		var d_iva_cliente = 0;
		var p_desc = parseFloat(_porcentajedesc.value / 100);
		var d_desc = 0;
		//		var p_irpf = parseFloat((100 - _porcentajeirpf.value) / 100);
		//		var d_irpf = 0;
		//		var d_irpf_cliente = 0;
		var p_irpf_ajeno = parseFloat(_porcentajeirpf_ajeno.value / 100);
		var d_irpf_ajeno = 0;
		var d_irpf_ajeno_cliente = 0;
		//		var p_com = parseFloat(0);
		//		var d_com = 0;

		// Cálculos Nuevos
		var d1_iva, d2_iva, d3_iva, d4_iva;
		base1 -= base1 * p_desc;
		base2 -= base2 * p_desc;
		base3 -= base3 * p_desc;
		base4 -= base4 * p_desc;

		//		base1 -= base1 * p_com;
		//		base2 -= base2 * p_com;
		//		base3 -= base3 * p_com;
		//		base4 -= base4 * p_com;

		/// Cálculos para Aran
		if_tmp = tmp1;
		d_desc = if_tmp * p_desc;
		//		d_com = if_tmp * p_com;
		if_tmp -= d_desc;
		//		if_tmp -= d_com;
		d1_iva = base1 * p_iva;
		d2_iva = base2 * p_iva2;
		d3_iva = base3 * p_iva3;
		d4_iva = base4 * p_iva4;
		d_iva = d1_iva + d2_iva + d3_iva + d4_iva;
		//		d_irpf = (if_tmp / p_irpf) - if_tmp;
		d_irpf_ajeno = if_tmp * p_irpf_ajeno;
		//if_tmp += d_iva + d_irpf - d_irpf_ajeno;
		if_tmp += d_iva - d_irpf_ajeno;

		/// Cálculos para el cliente si no es comisión
		ifc_tmp = tmp1;
		d_iva_cliente = d1_iva + d2_iva + d3_iva + d4_iva; ;
		//		d_irpf_cliente = (tmp1 / p_irpf) - tmp1;
		d_irpf_ajeno_cliente = tmp1 * p_irpf_ajeno;
		ifc_tmp += d_iva_cliente - d_irpf_ajeno_cliente;


		/// Asignación de valores
		if (_id_subfamilia.value == 50) {
			_importefinal_cliente.value = Puntos2Comas(Redondea(0, 2));
			_desgloseiva_cliente.value = Puntos2Comas(Redondea(0, 2));
			_desgloseiva_cliente1.value = Puntos2Comas(Redondea(0, 2));
			_desgloseiva_cliente2.value = Puntos2Comas(Redondea(0, 2));
			_desgloseiva_cliente3.value = Puntos2Comas(Redondea(0, 2));
			_desgloseiva_cliente4.value = Puntos2Comas(Redondea(0, 2));
			//			_desgloseirpf_cliente.value = Puntos2Comas(Redondea(0, 2));
			_desgloseirpf_ajeno_cliente.value = Puntos2Comas(Redondea(0, 2));
		}
		else {
			_importefinal_cliente.value = Puntos2Comas(Redondea(ifc_tmp, 2));
			_desgloseiva_cliente1.value = Puntos2Comas(Redondea(d1_iva, 2));
			_desgloseiva_cliente2.value = Puntos2Comas(Redondea(d2_iva, 2));
			_desgloseiva_cliente3.value = Puntos2Comas(Redondea(d3_iva, 2));
			_desgloseiva_cliente4.value = Puntos2Comas(Redondea(d4_iva, 2));
			_desgloseiva_cliente.value = Puntos2Comas(Redondea(d_iva_cliente, 2));
			//			_desgloseirpf_cliente.value = Puntos2Comas(Redondea(d_irpf_cliente, 2));
			_desgloseirpf_ajeno_cliente.value = Puntos2Comas(Redondea(d_irpf_ajeno_cliente, 2));

		}
		/// Asignación de valores
		_importefinal.value = Puntos2Comas(Redondea(if_tmp, 2));
		
		_desgloseiva.value = Puntos2Comas(Redondea(d_iva, 2));
		_desgloseiva1.value = Puntos2Comas(Redondea(d1_iva, 2));
		_desgloseiva2.value = Puntos2Comas(Redondea(d2_iva, 2));
		_desgloseiva3.value = Puntos2Comas(Redondea(d3_iva, 2));
		_desgloseiva4.value = Puntos2Comas(Redondea(d4_iva, 2));
		
		_desglosedesc.value = Puntos2Comas(Redondea(d_desc, 2));
//		_desglosecom.value = Puntos2Comas(Redondea(d_com, 2));
//		_desgloseirpf.value = Puntos2Comas(Redondea(d_irpf, 2));
		
		_desgloseirpf_ajeno.value = Puntos2Comas(Redondea(d_irpf_ajeno, 2));
	}
}

function HazCalculo_ConceptosIngresos(nombre_unidades) {
	var _unidades, _importebase, _importebase1, _importebase2, _importebase3, _importebase4;
	var _porcentajeiva, _porcentajeiva2, _porcentajeiva3, _porcentajeiva4, _porcentajecom, _porcentajedesc, _porcentajeirpf, _porcentajeirpf_ajeno;
	var _desgloseiva, _desgloseiva1, _desgloseiva2, _desgloseiva3, _desgloseiva4, _desgloseiva_cliente, _desgloseiva_cliente1, _desgloseiva_cliente2, _desgloseiva_cliente3, _desgloseiva_cliente4;
	var _desglosecom, _desgloseirpf, _desgloseirpf_cliente, _desgloseirpf_ajeno, _desgloseirpf_ajeno_cliente, _desglosedesc;
	var _importefinal, _importefinal_cliente, _importefinalman_aran, _importefinalman_cliente, _concepto_descripcion;

	_unidades = eval("document.Form1." + nombre_unidades);
	_importebase = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "ImporteBase"));
	_importebase1 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "ImporteBase1"));
	_importebase2 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "ImporteBase2"));
	_importebase3 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "ImporteBase3"));
	_importebase4 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "ImporteBase4"));
	_porcentajeiva = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "PorcentajeIVA1"));
	_porcentajeiva2 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "PorcentajeIVA2"));
	_porcentajeiva3 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "PorcentajeIVA3"));
	_porcentajeiva4 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "PorcentajeIVA4"));
	//	_porcentajecom = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "PorcentajeCOM"));
	_porcentajedesc = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "PorcentajeDESC"));
	//_porcentajeirpf = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "PorcentajeIRPF"));
	_porcentajeirpf_ajeno = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "PorcentajeIRPF_Ajeno"));

	_desgloseiva = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIVA"));
	_desgloseiva1 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIVA1"));
	_desgloseiva2 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIVA2"));
	_desgloseiva3 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIVA3"));
	_desgloseiva4 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIVA4"));
	_desgloseiva_cliente = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIVA_Cliente"));
	_desgloseiva_cliente1 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIVA1_Cliente"));
	_desgloseiva_cliente2 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIVA2_Cliente"));
	_desgloseiva_cliente3 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIVA3_Cliente"));
	_desgloseiva_cliente4 = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIVA4_Cliente"));
	_desglosedesc = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseDESC"));
	_desglosecom = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseCOM"));
	//_desgloseirpf = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIRPF"));
	//_desgloseirpf_cliente = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIRPF_Cliente"));
	_desgloseirpf_ajeno = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIRPF_Ajeno"));
	_desgloseirpf_ajeno_cliente = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIRPF_Ajeno_Cliente"));

	_importefinal = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "ImporteFinal"));
	_importefinal_cliente = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "ImporteFinal_Cliente"));
	_concepto_descripcion = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "ddlConceptos"));

	var _strvalidacion = new String();

	if (isNaN(parseInt(_unidades.value))) {
		_strvalidacion += " - Las unidades no son correctas." + "\r\n";
	}
	if (isNaN(parseFloat(Comas2Puntos(_importebase1.value)))) {
		_strvalidacion += " - El importe base 1 no es correcto." + "\r\n";
	}
	if (isNaN(parseFloat(Comas2Puntos(_importebase2.value)))) {
		_strvalidacion += " - El importe base 2 no es correcto." + "\r\n";
	}
	if (isNaN(parseFloat(Comas2Puntos(_importebase3.value)))) {
		_strvalidacion += " - El importe base 3 no es correcto." + "\r\n";
	}
	if (isNaN(parseFloat(Comas2Puntos(_importebase4.value)))) {
		_strvalidacion += " - El importe base 4 no es correcto." + "\r\n";
	}
	if (isNaN(parseInt(_porcentajeiva.value))) {
		_strvalidacion += " - El porcentaje de IVA 1 no es correcto." + "\r\n";
	}
	if (isNaN(parseInt(_porcentajeiva2.value))) {
		_strvalidacion += " - El porcentaje de IVA 2 no es correcto." + "\r\n";
	}
	if (isNaN(parseInt(_porcentajeiva3.value))) {
		_strvalidacion += " - El porcentaje de IVA 3 no es correcto." + "\r\n";
	}
	if (isNaN(parseInt(_porcentajeiva4.value))) {
		_strvalidacion += " - El porcentaje de IVA 4 no es correcto." + "\r\n";
	}
	if (isNaN(parseInt(_porcentajedesc.value))) {
		_strvalidacion += " - El porcentaje de Descuento no es correcto." + "\r\n";
	}
//	if (isNaN(parseInt(_porcentajecom.value))) {
//		_strvalidacion += " - El porcentaje de Comisión no es correcto." + "\r\n";
//	}
//	if (isNaN(parseInt(_porcentajeirpf.value))) {
//		_strvalidacion += " - El porcentaje de IRPF (+) no es correcto." + "\r\n";
//	}
	if (isNaN(parseInt(_porcentajeirpf_ajeno.value))) {
		_strvalidacion += " - El porcentaje de IRPF (-) no es correcto." + "\r\n";
	}

	if (_strvalidacion != "") {
		alert(_strvalidacion);
	}
	else {

		_importebase.value = Puntos2Comas(Redondea(parseFloat(Comas2Puntos(_importebase1.value)) + parseFloat(Comas2Puntos(_importebase2.value)) + parseFloat(Comas2Puntos(_importebase3.value)) + parseFloat(Comas2Puntos(_importebase4.value)), 2));
		
		var base1 = parseFloat(Comas2Puntos(_unidades.value)) * parseFloat(Comas2Puntos(_importebase1.value));
		var base2 = parseFloat(Comas2Puntos(_unidades.value)) * parseFloat(Comas2Puntos(_importebase2.value));
		var base3 = parseFloat(Comas2Puntos(_unidades.value)) * parseFloat(Comas2Puntos(_importebase3.value));
		var base4 = parseFloat(Comas2Puntos(_unidades.value)) * parseFloat(Comas2Puntos(_importebase4.value));
	
		var tmp1 = base1 + base2 + base3 + base4;
		var if_tmp = 0;
		var ifc_tmp = 0;
		var p_iva = parseFloat(_porcentajeiva.value / 100);
		var p_iva2 = parseFloat(_porcentajeiva2.value / 100);
		var p_iva3 = parseFloat(_porcentajeiva3.value / 100);
		var p_iva4 = parseFloat(_porcentajeiva4.value / 100);
		var d_iva = 0;
		var d_iva_cliente = 0;
		var p_desc = parseFloat(_porcentajedesc.value / 100);
		var d_desc = 0;
//		var p_irpf = parseFloat((100 - _porcentajeirpf.value) / 100);
//		var d_irpf = 0;
//		var d_irpf_cliente = 0;
		var p_irpf_ajeno = parseFloat(_porcentajeirpf_ajeno.value / 100);
		var d_irpf_ajeno = 0;
		var d_irpf_ajeno_cliente = 0;
//		var p_com = parseFloat(0);
//		var d_com = 0;

		// Cálculos Nuevos
		var d1_iva, d2_iva, d3_iva, d4_iva;
		base1 -= base1 * p_desc;
		base2 -= base2 * p_desc;
		base3 -= base3 * p_desc;
		base4 -= base4 * p_desc;

//		base1 -= base1 * p_com;
//		base2 -= base2 * p_com;
//		base3 -= base3 * p_com;
//		base4 -= base4 * p_com;

		/// Cálculos para Aran
		if_tmp = tmp1;
		d_desc = if_tmp * p_desc;
//		d_com = if_tmp * p_com;
		if_tmp -= d_desc;
//		if_tmp -= d_com;
		d1_iva = base1 * p_iva;
		d2_iva = base2 * p_iva2;
		d3_iva = base3 * p_iva3;
		d4_iva = base4 * p_iva4;
		d_iva = d1_iva + d2_iva + d3_iva + d4_iva;
//		d_irpf = (if_tmp / p_irpf) - if_tmp;
		d_irpf_ajeno = if_tmp * p_irpf_ajeno;
		//if_tmp += d_iva + d_irpf - d_irpf_ajeno;
		if_tmp += d_iva - d_irpf_ajeno;

		/// Cálculos para el cliente si no es comisión
		ifc_tmp = tmp1;
		d_iva_cliente = d1_iva + d2_iva + d3_iva + d4_iva; ;
//		d_irpf_cliente = (tmp1 / p_irpf) - tmp1;
		d_irpf_ajeno_cliente = tmp1 * p_irpf_ajeno;
		ifc_tmp += d_iva_cliente - d_irpf_ajeno_cliente;

		/// Asignación de valores para clientes si es comisión
		if (_concepto_descripcion.value == 2) {
			_importefinal_cliente.value = Puntos2Comas(Redondea(0, 2));
			_desgloseiva_cliente.value = Puntos2Comas(Redondea(0, 2));
			_desgloseiva_cliente1.value = Puntos2Comas(Redondea(0, 2));
			_desgloseiva_cliente2.value = Puntos2Comas(Redondea(0, 2));
			_desgloseiva_cliente3.value = Puntos2Comas(Redondea(0, 2));
			_desgloseiva_cliente4.value = Puntos2Comas(Redondea(0, 2));
//			_desgloseirpf_cliente.value = Puntos2Comas(Redondea(0, 2));
			_desgloseirpf_ajeno_cliente.value = Puntos2Comas(Redondea(0, 2));
		}
		else {
			_importefinal_cliente.value = Puntos2Comas(Redondea(ifc_tmp, 2));
			_desgloseiva_cliente1.value = Puntos2Comas(Redondea(d1_iva, 2));
			_desgloseiva_cliente2.value = Puntos2Comas(Redondea(d2_iva, 2));
			_desgloseiva_cliente3.value = Puntos2Comas(Redondea(d3_iva, 2));
			_desgloseiva_cliente4.value = Puntos2Comas(Redondea(d4_iva, 2));
			_desgloseiva_cliente.value = Puntos2Comas(Redondea(d_iva_cliente, 2));
//			_desgloseirpf_cliente.value = Puntos2Comas(Redondea(d_irpf_cliente, 2));
			_desgloseirpf_ajeno_cliente.value = Puntos2Comas(Redondea(d_irpf_ajeno_cliente, 2));
		 }

		/// Asignación de valores
		_importefinal.value = Puntos2Comas(Redondea(if_tmp, 2));
		
		_desgloseiva.value = Puntos2Comas(Redondea(d_iva, 2));
		_desgloseiva1.value = Puntos2Comas(Redondea(d1_iva, 2));
		_desgloseiva2.value = Puntos2Comas(Redondea(d2_iva, 2));
		_desgloseiva3.value = Puntos2Comas(Redondea(d3_iva, 2));
		_desgloseiva4.value = Puntos2Comas(Redondea(d4_iva, 2));
		
		_desglosedesc.value = Puntos2Comas(Redondea(d_desc, 2));
//		_desglosecom.value = Puntos2Comas(Redondea(d_com, 2));
//		_desgloseirpf.value = Puntos2Comas(Redondea(d_irpf, 2));
		
		_desgloseirpf_ajeno.value = Puntos2Comas(Redondea(d_irpf_ajeno, 2));
		
	}
}

/// <summary>
/// Actualiza los datos del formulario, al cambiar de campo
/// </summary>
function HazCalculoInverso_Conceptos(nombre_unidades) {
	var _unidades, _importebase;
	var _porcentajeiva, _porcentajecom, _porcentajedesc, _porcentajeirpf;
	var _desgloseiva, _desgloseiva_cliente, _desglosecom, _desgloseirpf, _desgloseirpf_cliente, _desglosedesc;
	var _importefinal, _importefinal_cliente, _importefinalman_aran, _importefinalman_cliente;

	_unidades = eval("document.Form1." + nombre_unidades);
	_importebase = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "ImporteBase"));
	_porcentajeiva = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "PorcentajeIVA"));
	_porcentajecom = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "PorcentajeCOM"));
	_porcentajedesc = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "PorcentajeDESC"));
	_porcentajeirpf = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "PorcentajeIRPF"));

	_desgloseiva = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIVA"));
	_desgloseiva_cliente = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIVA_Cliente"));
	_desglosedesc = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseDESC"));
	_desglosecom = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseCOM"));
	_desgloseirpf = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIRPF"));
	_desgloseirpf_cliente = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "DesgloseIRPF_Cliente"));

	_importefinal = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "ImporteFinal"));
	_importefinal_cliente = eval("document.Form1." + nombre_unidades.replace("Concepto_Unidades", "ImporteFinal_Cliente"));

	var _strvalidacion = new String();

	if (isNaN(parseInt(_unidades.value))) {
		_strvalidacion += " - Las unidades no son correctas." + "\r\n";
	}
	if (isNaN(parseFloat(Comas2Puntos(_importefinal.value)))) {
		_strvalidacion += " - El importe base no es correcto." + "\r\n";
	}
	if (isNaN(parseFloat(Comas2Puntos(_importefinal_cliente.value)))) {
		_strvalidacion += " - El importe base no es correcto." + "\r\n";
	}
	if (isNaN(parseInt(_porcentajeiva.value))) {
		_strvalidacion += " - El porcentaje de IVA no es correcto." + "\r\n";
	}
	if (isNaN(parseInt(_porcentajedesc.value))) {
		_strvalidacion += " - El porcentaje de Descuento no es correcto." + "\r\n";
	}
	if (isNaN(parseInt(_porcentajecom.value))) {
		_strvalidacion += " - El porcentaje de Comisión no es correcto." + "\r\n";
	}
	if (isNaN(parseInt(_porcentajeirpf.value))) {
		_strvalidacion += " - El porcentaje de IRPF no es correcto." + "\r\n";
	}

	if (_strvalidacion != "") {
		alert(_strvalidacion);
	}
	else {
		//var tmp1 = parseFloat(Comas2Puntos(_importefinal.value));
		var tmp1 = 0;
		var tmp2 = parseFloat(Comas2Puntos(_importefinal_cliente.value));
		var if_tmp = 0;
		var ifc_tmp = 0;
		var p_iva = parseFloat(_porcentajeiva.value / 100);
		var d_iva = 0;
		var d_iva_cliente = 0;
		var p_desc = parseFloat(_porcentajedesc.value / 100);
		var d_desc = 0;
		var p_irpf = parseFloat((100 - _porcentajeirpf.value) / 100);
		var d_irpf = 0;
		var d_irpf_cliente = 0;
		var p_com = parseFloat(_porcentajecom.value / 100);
		var d_com = 0;

		if (p_irpf < 1) {
			if (p_iva > 0) {
				/// Cálculos para el cliente
				var tmp3 = (p_irpf * tmp2) / (1 + (p_irpf * (1 + p_iva)) - p_irpf);
				d_iva_cliente = tmp3 * p_iva;
				d_irpf_cliente = (tmp3 / p_irpf) - tmp3;
				ifc_tmp = tmp2 - d_iva_cliente - d_irpf_cliente;
			}
			else {
				/// Cálculos para el cliente
				d_iva_cliente = 0;
				d_irpf_cliente = tmp2 - (tmp2 * p_irpf);
			}
			/// Cálculos para el cliente
			ifc_tmp = tmp2 - d_iva_cliente - d_irpf_cliente;
		}
		else {
			/// Cálculos para el cliente
			ifc_tmp = tmp2 / (1 + p_iva);
			d_iva_cliente = tmp2 - ifc_tmp;
			///ifc_tmp = tmp2 / (1 + p_irpf);
			///d_irpf_cliente = tmp2 - ifc_tmp;
			ifc_tmp = tmp2 - d_iva_cliente - d_irpf_cliente;
		}

		/// Cálculos para Aran				
		d_desc = ifc_tmp * p_desc;
		d_com = ifc_tmp * p_com;
		if_tmp = ifc_tmp - d_desc - d_com;
		d_iva = if_tmp * p_iva;
		d_irpf = (if_tmp / p_irpf) - if_tmp;
		if_tmp += d_iva + d_irpf;

		/// Asignación de valores
		_importebase.value = Puntos2Comas(Redondea(ifc_tmp / _unidades.value, 2));
		_desgloseiva.value = Puntos2Comas(Redondea(d_iva, 2));
		_desgloseiva_cliente.value = Puntos2Comas(Redondea(d_iva_cliente, 2));
		_desglosedesc.value = Puntos2Comas(Redondea(d_desc, 2));
		_desglosecom.value = Puntos2Comas(Redondea(d_com, 2));
		_desgloseirpf.value = Puntos2Comas(Redondea(d_irpf, 2));
		_desgloseirpf_cliente.value = Puntos2Comas(Redondea(d_irpf_cliente, 2));
		_importefinal.value = Puntos2Comas(Redondea(if_tmp, 2));
		_importefinal_cliente.value = Puntos2Comas(Redondea(tmp2, 2));
	}
}
