function validar() {
	global $campoError;

	if (!isset($_SESSION["pcpId"]))
		throw new Exception("La sesión ha expirado.");

	// Bloque 7..
	if ($_POST["breveDescripcionTareas"] == "") {
		$campoError = "breveDescripcionTareas";
		throw new Exception("Debe ingresar una Breve descripción de tareas (máximo 250 caracteres).");
	}

	$elementosSinChequear = false;
	$arrElementos = array("electrico", "incendio", "extintor", "insecticida", "bencina", "raticida", "desinfectantes", "detergentes", "sodaCaustica", "desengrasante",
															"hipocloritoDeSodio", "amoniaco", "acidoMuriatico", "proteccionBalcones", "interiorAltura", "exteriorAltura", "escaleraBaranda", "indumentaria",
															"proteccionPersonal");
	foreach ($arrElementos as $valor) {
		if (getValorCheck($valor) == NULL) {
			if (($valor == "extintor") and (getValorCheck("incendio") == "N") and ($_POST["extintorCual"] != ""))
				continue;

			$elementosSinChequear = true;
			break;
		}
	}

	if ($elementosSinChequear	) {
		$campoError = $valor;
		throw new Exception("Debe completar todos los campos.");
	}

	if (($_POST["incendio"] == "S") and (getValorCheck("extintor") == NULL) and ($_POST["extintorCual"] != "")) {
		$campoError = "incendioS";
		throw new Exception("Hay inconsistencias en las respuestas de Riesgo de Incendio No y selecciono un item en \"Indique cual\"");
	}

	if ((getValorCheck("insecticida") == "N") and ($_POST["insecticidaCual"] != "")) {
		$campoError = "insecticidaN";
		throw new Exception("Hay inconsistencias en las respuestas de Riesgo Químico Insecticidas No y completó \"¿Cuáles?\"");
	}

	if ((getValorCheck("raticida") == "N") and ($_POST["raticidaCual"] != "")) {
		$campoError = "raticidaN";
		throw new Exception("Hay inconsistencias en las respuestas de Riesgo Químico Raticidas No y completó \"¿Cuáles?\"");
	}

	if ((getValorCheck("interiorAltura") == "N") and ($_POST["interiorAlturaCual"] != "")) {
		$campoError = "interiorAlturaN";
		throw new Exception("Hay inconsistencias en las respuestas de Instalaciones Edilicias, Realizan tareas interiores No y completó \"¿Cuáles?\"");
	}

	if ((getValorCheck("exteriorAltura") == "N") and ($_POST["exteriorAlturaCual"] != "")) {
		$campoError = "exteriorAlturaN";
		throw new Exception("Hay inconsistencias en las respuestas de Instalaciones Edilicias, Realizan tareas exteriores No y completó \"¿ Cuáles ?\"");
	}

	if ((getValorCheck("indumentaria") == "N") and ($_POST["indumentariaCual"] != "")) {
		$campoError = "indumentariaN";
		throw new Exception("Hay inconsistencias en las respuestas de Ropa y elementos de trabajo, Entrega indumentaria de trabajo No y completó \"¿Cuáles?\"");
	}

	if ((getValorCheck("proteccionPersonal") == "N") and ($_POST["proteccionPersonalCual"] != "")) {
		$campoError = "proteccionPersonalN";
		throw new Exception("Hay inconsistencias en las respuestas de Ropa y elementos de trabajo, Entrega de Elementos de protección personal No y completó \"¿Cuáles?\"");
	}
	
	return true;
}
function validar($id, $alta, $rowCotizacion, $isSoloPCP, $idVendedor, $datosEmpleadorManual, $sumaAseguradaRC, $formaPago, $iva, $iibb) {
	global $campoError;
	global $modulo;

	if (!isset($_SESSION["isAgenteComercial"]))
		throw new Exception("Usted no tiene permiso para acceder a este módulo.");

	// Bloque 1.1.1..
	if ($_POST["fechaSuscripcion"] == "") {
		$campoError = "fechaSuscripcion";
		throw new Exception("Debe ingresar la Fecha de Suscripción.");
	}

	if (!isFechaValida($_POST["fechaSuscripcion"])) {
		$campoError = "fechaSuscripcion";
		throw new Exception("La Fecha de Suscripción debe tener un formato válido.");
	}

	$params = array(":fechaalta" => $_POST["fechaSuscripcion"], ":id" => $id);
	if ($modulo == "R")		// Si es una revisión de precio..
		$sql =
			"SELECT 1
				 FROM asr_solicitudreafiliacion
				WHERE sr_id = :id
					AND TRUNC(sr_fechaalta) > TO_DATE(:fechaalta, 'DD/MM/YYYY')";
	else		// Si es una solicitud de cotización..
		$sql =
			"SELECT 1
				 FROM asc_solicitudcotizacion
				WHERE sc_id = :id
					AND TRUNC(sc_fechaalta) > TO_DATE(:fechaalta, 'DD/MM/YYYY')";
	if (existeSql($sql, $params)) {
		$campoError = "fechaSuscripcion";
		throw new Exception("La Fecha de Suscripción no puede ser anterior a la fecha de la solicitud de cotización.");
	}

	$params = array(":fechasuscripcion" => $_POST["fechaSuscripcion"], ":fechavencimiento" => $_POST["fechaVencimiento"]);
	$sql =
		"SELECT 1
			 FROM DUAL
			WHERE TO_DATE(:fechasuscripcion, 'DD/MM/YYYY') > TO_DATE(:fechavencimiento, 'DD/MM/YYYY')";
	if (existeSql($sql, $params)) {
		$campoError = "fechaSuscripcion";
		throw new Exception("La Fecha de Suscripción no puede ser posterior a la fecha de vigencia de la cotización (".$_POST["fechaVencimiento"].").");
	}

	if ($alta) {
		$params = array(":fechasuscripcion" => $_POST["fechaSuscripcion"]);
		$sql =
			"SELECT 1
				 FROM DUAL
				WHERE TO_DATE(:fechasuscripcion, 'DD/MM/YYYY') < ART.ACTUALDATE";
		if (existeSql($sql, $params)) {
			$campoError = "fechaSuscripcion";
			throw new Exception("La Fecha de Suscripción no puede ser anterior a la fecha actual.");
		}
	}
	else {
		$params = array(":fechasuscripcion" => $_POST["fechaSuscripcion"], ":id" => $id);
		$sql =
			"SELECT 1
				 FROM asa_solicitudafiliacion
				WHERE ((TO_DATE(:fechasuscripcion, 'DD/MM/YYYY') < TRUNC(sa_fechaalta)) OR (TO_DATE(:fechasuscripcion, 'DD/MM/YYYY') > ART.ACTUALDATE))
					AND TRUNC(sa_fechaafiliacion) <> TO_DATE(:fechasuscripcion, 'DD/MM/YYYY')
					AND ".$rowCotizacion["FORMULARIOFIELD"]." = :id";
		if (existeSql($sql, $params)) {
			$campoError = "fechaSuscripcion";
			throw new Exception("La Fecha de Suscripción no puede ser ni anterior a la fecha previamente cargada ni posterior a la fecha actual.");
		}
	}

	// Bloque 1.2..
	if ($_POST["razonSocial"] == "") {
		$campoError = "razonSocial";
		throw new Exception("Debe ingresar el Nombre o razón social.");
	}

	if ((isset($_POST["formaJuridica"])) and ($_POST["formaJuridica"] == -1)) {
		$campoError = "formaJuridica";
		throw new Exception("Debe seleccionar la Forma Jurídica.");
	}

	if (($_POST["fechaInicioActividad"] != "") and (!isFechaValida($_POST["fechaInicioActividad"]))) {
		$campoError = "fechaInicioActividad";
		throw new Exception("La Fecha de inicio de actividad debe tener un formato válido.");
	}

	if ($_POST["fechaInicioActividad"] != "") {
		$arrFecha = explode("/", $_POST["fechaInicioActividad"]);
		$fec = $arrFecha[2].$arrFecha[1].$arrFecha[0];
		if ($fec > date("Ymd")) {
			$campoError = "fechaInicioActividad";
			throw new Exception("La fecha de inicio de actividad no puede ser posterior a la fecha de alta.");
		}
	}

	if ($_POST["calle"] == "") {
		$campoError = "calle";
		throw new Exception("Debe ingresar la Calle.");
	}

	if ($_POST["numero"] == "") {
		$campoError = "numero";
		throw new Exception("Debe ingresar el Número.");
	}

	if ($_POST["codigoPostal"] == "") {
		$campoError = "codigoPostal";
		throw new Exception("Debe ingresar el Código Postal.");
	}

	if ((isset($_POST["provincia"])) and ($_POST["provincia"] == -1)) {
		$campoError = "provincia";
		throw new Exception("Debe seleccionar la Provincia.");
	}

	if ($_POST["localidad"] == "") {
		$campoError = "localidad";
		throw new Exception("Debe ingresar la Localidad.");
	}

	if ($_POST["email"] != "") {
		$params = array(":email" => $_POST["email"]);
		$sql = "SELECT art.varios.is_validaemail(:email) FROM DUAL";
		if (valorSql($sql, "", $params) != "S") {
			$campoError = "email";
			throw new Exception("El e-Mail debe tener un formato válido.");
		}
	}

	if (($_POST["establecimientos"] != "") and (!validarEntero($_POST["establecimientos"]))) {
		$campoError = "establecimientos";
		throw new Exception("La Cantidad de establecimientos debe tener un formato válido.");
	}

	if ((!$isSoloPCP) and ($_POST["nivel"] == "")) {
		$campoError = "nivel";
		throw new Exception("Debe indicar el Nivel de cumplimiento en Higiene y Seguridad.");
	}

	if ((!$isSoloPCP) and ($_POST["cargoResponsable"] == -1)) {
		$campoError = "cargoResponsable";
		throw new Exception("El campo Cargo del Responsable ART es obligatorio.");
	}

	if ((!$isSoloPCP) and ($_POST["sexoResponsable"] == -1)) {
		$campoError = "sexoResponsable";
		throw new Exception("El campo Sexo del Responsable ART es obligatorio.");
	}

	if ($_POST["emailResponsable"] != "") {
		$params = array(":email" => $_POST["emailResponsable"]);
		$sql = "SELECT art.varios.is_validaemail(:email) FROM DUAL";
		if (valorSql($sql, "", $params) != "S") {
			$campoError = "emailResponsable";
			throw new Exception("El e-Mail debe tener un formato válido.");
		}
	}

	// Bloque 2..
	if ($_POST["fechaVigenciaDesde"] == "") {
		$campoError = "fechaVigenciaDesde";
		throw new Exception("Debe ingresar la Vigencia Desde.");
	}

	$params = array(":fechavigenciadesde" => $_POST["fechaVigenciaDesde"]);
	$sql =
		"SELECT 1
			 FROM DUAL
			WHERE TO_DATE(:fechavigenciadesde, 'DD/MM/YYYY') < TO_DATE('01/01/1996', 'DD/MM/YYYY')";
	if (existeSql($sql, $params)) {
		$campoError = "fechaVigenciaDesde";
		throw new Exception("La vigencia no puede ser anterior al 01/01/1996.");
	}

	if ($_POST["fechaVigenciaHasta"] == "") {
		$campoError = "fechaVigenciaHasta";
		throw new Exception("Debe ingresar la Vigencia Hasta.");
	}

	$params = array(":fechavigenciadesde" => $_POST["fechaVigenciaDesde"], ":fechasuscripcion" => $_POST["fechaSuscripcion"]);
	$sql =
		"SELECT 1
			 FROM DUAL
			WHERE TO_DATE(:fechavigenciadesde, 'DD/MM/YYYY') < TO_DATE(:fechasuscripcion, 'DD/MM/YYYY')";
	if (existeSql($sql, $params)) {
		$campoError = "fechaVigenciaDesde";
		throw new Exception("La vigencia no puede ser anterior a la fecha de suscripción.");
	}

	// Bloque 3..
	if ($_POST["trabajadoresCantidad"] <= 0) {
		$campoError = "trabajadoresCantidad";
		throw new Exception("Debe especificar la cantidad de empleados de la empresa.");
	}

	if ((!$isSoloPCP) and ($_POST["trabajadoresMasaSalarial"] <= 240)) {
		$campoError = "trabajadoresMasaSalarial";
		throw new Exception("La masa salarial no puede ser inferior a los $240.");
	}

	// Bloque 4..
	if ($isSoloPCP) {
		if ($alta) {
			$params = array(":usualta" => "W_".substr($_SESSION["usuario"], 0, 18));
			$sql =
				"SELECT COUNT(*)
					 FROM afi.alt_lugartrabajo_pcp
					WHERE lt_usualta = :usualta
						AND lt_idsolicitud = -1";
		}
		else {
			$params = array(":idsolicitudcotizacion" => $id);
			$sql =
				"SELECT COUNT(*)
					 FROM afi.alt_lugartrabajo_pcp, asa_solicitudafiliacion
					WHERE lt_idsolicitud = sa_id
						AND lt_fechabaja IS NULL
						AND sa_idsolicitudcotizacion = :idsolicitudcotizacion";
		}
		if (valorSql($sql, "", $params, 0) < 1) {
			$campoError = "iframeEstablecimientos";
			throw new Exception("Debe ingresar al menos un (1) lugar de trabajo.");
		}
	}

	// Bloque 7..
	if (($isSoloPCP) and ($_POST["breveDescripcionTareas"] == "")) {
		$campoError = "breveDescripcionTareas";
		throw new Exception("Debe ingresar una Breve descripción de tareas (máximo 250 caracteres).");
	}

	if ($isSoloPCP) {
		$elementosSinChequear = false;
		$arrElementosPunto7 = array("electrico", "incendio", "extintor", "insecticida", "bencina", "raticida", "desinfectantes", "detergentes", "sodaCaustica", "desengrasante",
																"hipocloritoDeSodio", "amoniaco", "acidoMuriatico", "proteccionBalcones", "interiorAltura", "exteriorAltura", "escaleraBaranda", "indumentaria",
																"proteccionPersonal");
		foreach ($arrElementosPunto7 as $valor) {
			if (getValorCheck($valor) == NULL) {
				if (($valor == "extintor") and (getValorCheck("incendio") == "N") and ($_POST["extintorCual"] != ""))
					continue;

				$elementosSinChequear = true;
				break;
			}
		}

		if ($elementosSinChequear	) {
			$campoError = $valor;
			throw new Exception("_Debe completar el cuestionario, 7. DESCRIPCIÓN DE TAREAS Y RIESGOS LABORALES (POSEE CARÁCTER DE DECLARACIÓN JURADA DEL EMPLEADOR)");
		}
	}

	if (($isSoloPCP) and ($_POST["incendio"] == "S") and (getValorCheck("extintor") == NULL) and ($_POST["extintorCual"] != "")) {
		$campoError = "incendioS";
		throw new Exception("Hay inconsistencias en las respuestas de Riesgo de Incendio No y selecciono un item en \"Indique cual\"");
	}

	if (($isSoloPCP) and (getValorCheck("insecticida") == "N") and ($_POST["insecticidaCual"] != "")) {
		$campoError = "insecticidaN";
		throw new Exception("Hay inconsistencias en las respuestas de Riesgo Químico Insecticidas No y completó \"¿Cuáles?\"");
	}

	if (($isSoloPCP) and (getValorCheck("raticida") == "N") and ($_POST["raticidaCual"] != "")) {
		$campoError = "raticidaN";
		throw new Exception("Hay inconsistencias en las respuestas de Riesgo Químico Raticidas No y completó \"¿Cuáles?\"");
	}

	if (($isSoloPCP) and (getValorCheck("interiorAltura") == "N") and ($_POST["interiorAlturaCual"] != "")) {
		$campoError = "interiorAlturaN";
		throw new Exception("Hay inconsistencias en las respuestas de Instalaciones Edilicias, Realizan tareas interiores No y completó \"¿Cuáles?\"");
	}

	if (($isSoloPCP) and (getValorCheck("exteriorAltura") == "N") and ($_POST["exteriorAlturaCual"] != "")) {
		$campoError = "exteriorAlturaN";
		throw new Exception("Hay inconsistencias en las respuestas de Instalaciones Edilicias, Realizan tareas exteriores No y completó \"¿ Cuáles ?\"");
	}

	if (($isSoloPCP) and (getValorCheck("indumentaria") == "N") and ($_POST["indumentariaCual"] != "")) {
		$campoError = "indumentariaN";
		throw new Exception("Hay inconsistencias en las respuestas de Ropa y elementos de trabajo, Entrega indumentaria de trabajo No y completó \"¿Cuáles?\"");
	}

	if (($isSoloPCP) and (getValorCheck("proteccionPersonal") == "N") and ($_POST["proteccionPersonalCual"] != "")) {
		$campoError = "proteccionPersonalN";
		throw new Exception("Hay inconsistencias en las respuestas de Ropa y elementos de trabajo, Entrega de Elementos de protección personal No y completó \"¿Cuáles?\"");
	}
	
	// Bloque 7..
	if ($_POST["lugarSuscripcion"] == "") {
		$campoError = "lugarSuscripcion";
		throw new Exception("Debe ingresar el Lugar.");
	}

	if ($_POST["nombreComercializador"] == "") {
		$campoError = "nombreComercializador";
		throw new Exception("Debe ingresar el Nombre y Apellido.");
	}

	if ($_POST["vendedor"] == "") {
		$campoError = "vendedor";
		throw new Exception("Debe ingresar el Vendedor.");
	}

	if ($idVendedor == -1) {
		$campoError = "vendedor";
		throw new Exception("El Código de Vendedor no está dado de alta para la entidad ".$_SESSION["entidad"].".");
	}

	if (($_SESSION["canal"] != 322) or (($_SESSION["canal"] == 322) and ($datosEmpleadorManual == "N"))) {
		if ($_POST["nombreEmpleador"] == "") {
			$campoError = "nombreEmpleador";
			throw new Exception("El campo Nombre y Apellido del empleador es obligatorio.");
		}

		if ($_POST["cargoEmpleador"] < 1) {
			$campoError = "cargoEmpleador";
			throw new Exception("El campo Cargo/Personería del empleador es obligatorio.");
		}

		if (($_POST["sexoEmpleador"] != "F") and ($_POST["sexoEmpleador"] != "M")) {
			$campoError = "sexoEmpleador";
			throw new Exception("El campo Sexo del empleador es obligatorio.");
		}

		if ($_POST["dniTitular"] == "") {
			$campoError = "dniTitular";
			throw new Exception("El campo D.N.I. del empleador es obligatorio.");
		}

		if (!validarEntero($_POST["dniTitular"])) {
			$campoError = "dniTitular";
			throw new Exception("El campo D.N.I. es inválido.");
		}

		if ($_POST["telefonoEmpleador"] == "") {
			$campoError = "telefonoEmpleador";
			throw new Exception("El campo Teléfono del empleador es obligatorio.");
		}

		if ($_POST["emailTitular"] == "") {
			$campoError = "emailTitular";
			throw new Exception("El campo e-Mail del empleador es obligatorio.");
		}
	}

	if (($_POST["dniTitular"] != "") and (!validarEntero($_POST["dniTitular"]))) {
		$campoError = "dniTitular";
		throw new Exception("El D.N.I. del empleador debe tener un formato válido.");
	}

	if ((($_SESSION["canal"] != 322) or (($_SESSION["canal"] == 322) and ($datosEmpleadorManual == "N"))) and (strlen($_POST["dniTitular"]) < 7)) {
		$campoError = "dniTitular";
		throw new Exception("El D.N.I. del Empleador es inválido.");
	}

	if ($_POST["emailTitular"] != "") {
		$params = array(":email" => $_POST["emailTitular"]);
		$sql = "SELECT art.varios.is_validaemail(:email) FROM DUAL";
		if (valorSql($sql, "", $params) != "S") {
			$campoError = "emailTitular";
			throw new Exception("El e-Mail Titular debe tener un formato válido.");
		}
	}

	// Bloque 8..
	if ((!$isSoloPCP) and (!isset($_POST["rgrlImpreso"]))) {
		$campoError = "rgrlImpreso";
		throw new Exception("Debe indicar si tiene impreso el RGRL de cada establecimiento.");
	}

	// Bloque RC..
	if ((isset($_POST["suscribePolizaRC"])) and ($_POST["suscribePolizaRC"] == "S")) {		// Si es una solicitud de cotización y suscribe la póliza de responsibilidad civil, hay que validar lo de abajo..
		if ($sumaAseguradaRC == NULL) {
			$campoError = "sumaAseguradaRC";
			throw new Exception("Debe indicar la Suma Asegurada de la responsibilidad civil.");
		}
		if ($formaPago == NULL) {
			$campoError = "formaPago";
			throw new Exception("Debe indicar la Forma de Pago de la responsibilidad civil.");
		}
		if ($formaPago == "TC") {
			if ($_POST["tarjetaCredito"] == -1) {
				$campoError = "tarjetaCredito";
				throw new Exception("Debe seleccionar la Tarjeta de Crédito.");
			}
			if (strlen($_POST["cbu"]) < 16) {
				$campoError = "cbu";
				throw new Exception("El Nº Tarjeta de Crédito debe tener al menos 16 caracteres.");
			}
		}
		if (($formaPago == "DA") and (strlen($_POST["cbu"]) != 22)) {
			$campoError = "cbu";
			throw new Exception("El C.B.U. de la responsibilidad civil debe tener 22 caracteres.");
		}
		if ($iva == NULL) {
			$campoError = "iva";
			throw new Exception("Debe indicar el I.V.A. de la responsibilidad civil.");
		}
		if ($iibb == NULL) {
			$campoError = "iibb";
			throw new Exception("Debe indicar el I.I.B.B. de la responsibilidad civil.");
		}
		if ($_POST["emailPolizaRC"] == "") {
			$campoError = "emailPolizaRC";
			throw new Exception("Debe indicar el e-Mail donde quiere recepcionar la póliza de la responsibilidad civil.");
		}

		if ($_POST["emailPolizaRC"] != "") {
			$params = array(":email" => $_POST["emailPolizaRC"]);
			$sql = "SELECT art.varios.is_validaemail(:email) FROM DUAL";
			if (valorSql($sql, "", $params) != "S") {
				$campoError = "emailPolizaRC";
				throw new Exception("La Recepción de Póliza vía e-mail debe tener un formato válido.");
			}
		}
	}
}