public String ElaborarContrato(int id_requerimiento, int id_solicitud, int id_empresa, int id_centro_Costo, int id_sub_cc, String ciudad, int ID_SERVICIO_RESPECTIVO, int servicio, int id_ARP, int id_caja_c, int id_EPS, int id_Pensiones, Decimal riesgo, String pensionado, String Clase_Contrato, String Tipo_Contrato, String Tipo_Pago, DateTime fecha_Inicia, DateTime fecha_termina, String sal_int, Decimal Salario, String vigente, String activo, String liquidado, String pago_Liquidacion, int id_entidad, String Num_Cuenta, String Forma_pago, String PAGO_DIAS_PRODUCTIVIDAD, String SENA_PRODICTIVO, String SENA_ELECTIVO, String PRACTICANTE_UNIVERSITARIO, Decimal VALOR_NOMINA, Decimal VALOR_CONTRATO, DateTime FECHA_INICIO_PERIODO, DateTime FECHA_FIN_PERIODO, String Periodo_Pago, String tipo_Cuenta, string descripcion_salario, decimal idPerfil) { String datosG = ""; int id_perfil = 0; Conexion conexion = new Conexion(Empresa); conexion.IniciarTransaccion(); try { requisicion _req = new requisicion(Empresa, Usuario); DataTable tablaReq = _req.ObtenerComRequerimientoPorIdRequerimiento(Convert.ToDecimal(id_requerimiento), conexion); DataRow filaReq = tablaReq.Rows[0]; id_perfil = Convert.ToInt32(filaReq["REGISTRO_PERFIL"].ToString()); usuario _empleado = new usuario(Empresa); radicacionHojasDeVida _sol = new radicacionHojasDeVida(Empresa, Usuario); Decimal idEmpleado = _empleado.AdicionarNomEmpleados(0, id_solicitud, id_empresa, id_centro_Costo, id_sub_cc, fecha_Inicia, Salario, pensionado, activo, liquidado, riesgo, id_ARP, id_caja_c, id_EPS, id_Pensiones, "C", id_entidad, Num_Cuenta, sal_int, ciudad, id_perfil, tipo_Cuenta, descripcion_salario, Forma_pago, conexion); if (idEmpleado <= 0) { _mensaje_error = "\n El empleado no fue creado, " + _empleado.MensajeError; conexion.DeshacerTransaccion(); } else { registroContrato _contrato = new registroContrato(Empresa, Usuario); Decimal id_Contrato = 0; /* revisado por cambio en riesgo */ id_Contrato = _contrato.AdicionarConRegContratos(Convert.ToInt32(idEmpleado), id_requerimiento, id_solicitud, id_centro_Costo, id_sub_cc, Clase_Contrato, fecha_Inicia, fecha_termina, vigente, pago_Liquidacion, sal_int, Tipo_Contrato, ID_SERVICIO_RESPECTIVO, ciudad, servicio, conexion, PAGO_DIAS_PRODUCTIVIDAD, SENA_PRODICTIVO, SENA_ELECTIVO, PRACTICANTE_UNIVERSITARIO, VALOR_NOMINA, VALOR_CONTRATO, FECHA_INICIO_PERIODO, FECHA_FIN_PERIODO, Periodo_Pago); if (String.IsNullOrEmpty(_contrato.MensajeError)) { _empleado.ActualizarNomEmpleados(Convert.ToInt32(idEmpleado), Convert.ToInt32(id_Contrato), id_solicitud, id_empresa, id_centro_Costo, id_sub_cc, fecha_Inicia, Salario, pensionado, activo, liquidado, riesgo, id_ARP, id_caja_c, id_EPS, id_Pensiones, "C", id_entidad, Num_Cuenta, sal_int, ciudad, id_perfil, Forma_pago, conexion); if (String.IsNullOrEmpty(_empleado.MensajeError)) { if (_sol.ActualizarEstadoProcesoRegSolicitudesIngreso(id_requerimiento, id_solicitud, "CONTRATADO", Usuario, conexion)) { if (_sol.ActualizarEstadoRegSolicitudesIngreso(id_requerimiento, id_solicitud, "CONTRATADO", conexion)) { datosG = id_Contrato + "," + idEmpleado; try { conexion.ExecuteNonQuery("usp_ESC_CRT_ENTREGAS_SC_adicionar " + idEmpleado + ", '" + Usuario + "'"); conexion.ExecuteNonQuery("usp_empleado_clausulas_contratar " + idEmpleado + ", " + idPerfil + ", '" + Usuario + "'"); Int32 requerimientoActualizado = Convert.ToInt32(conexion.ExecuteScalar("usp_comprobar_cierre_requisicion_por_sistema " + id_requerimiento.ToString() + ", '" + Usuario + "'")); if (requerimientoActualizado <= 0) { conexion.DeshacerTransaccion(); MensajeError = "El empleado no fue creado, Ocurrio un error al momento de determinar si la requisición debe ser cuplida por sistema."; } else { conexion.AceptarTransaccion(); } } catch { _mensaje_error += "\n No fue posible registrar los servicios complementarios o clausulas para el perfil contratado " + _sol.MensajeError; conexion.AceptarTransaccion(); } } else { _mensaje_error += "\n No fue posible actualizar el estado de la solicitud: " + _sol.MensajeError; conexion.DeshacerTransaccion(); } } else { _mensaje_error += "\n No fue posible actualizar el estado del proceso de la soliciutd: " + _sol.MensajeError; conexion.DeshacerTransaccion(); } } else { _mensaje_error += "\n Se presentó el siguiente error en la actualización del empleado: " + _empleado.MensajeError; conexion.DeshacerTransaccion(); } } else { _mensaje_error += "\n Se presentó el siguiente error en la creación del contrato: " + _contrato.MensajeError; conexion.DeshacerTransaccion(); } } } catch (Exception e) { MensajeError = e.Message; conexion.DeshacerTransaccion(); } finally { conexion.Desconectar(); } return datosG; }