public Decimal AdicionarTutela(Decimal ID_SOLICITUD,
            DateTime FECHA_R,
            DateTime FECHA_NOTIFICACION,
            DateTime FECHA_PLAZO_CONTESTA,
            DateTime FECHA_CONTESTACION,
            String PETICION,
            Byte[] ARCHIVO_PETICION,
            String ARCHIVO_PETICION_EXTENSION,
            Int32 ARCHIVO_PETICION_TAMANO,
            String ARCHIVO_PETICION_TYPE,
            String FALLO,
            String RESULTADO_FALLO,
            Byte[] ARCHIVO_FALLO,
            String ARCHIVO_FALLO_EXTENSION,
            Int32 ARCHIVO_FALLO_TAMANO,
            String ARCHIVO_FALLO_TYPE,
            Decimal RESPONSABLE,
            Decimal ID_EMPRESA,
            Decimal REGISTRO_CONTRATO,
            String CONSIDERACIONES
        )
        {
            String ID = null;
            String sql = null;
            String informacion = null;
            Boolean ejecutar = true;
            Boolean ejecutadoCorrectamente = true;

            tools _tools = new tools();

            sql = "usp_con_reg_tutelas_adicionar ";

            #region validaciones

            if (ID_SOLICITUD != 0)
            {
                sql += ID_SOLICITUD + ", ";
                informacion += "ID_SOLICITUD = '" + ID_SOLICITUD + "', ";
            }
            else
            {
                MensajeError = "El campo ID_SOLICITUD no puede ser vacio.";
                ejecutar = false;
            }

            sql += "'" + FECHA_R.ToString("u") + "', ";
            informacion += "FECHA_R = '" + FECHA_R.ToString("u") + "', ";

            sql += "'" + FECHA_NOTIFICACION.ToString("u") + "', ";
            informacion += "FECHA_NOTIFICACION = '" + FECHA_NOTIFICACION.ToString("u") + "', ";

            sql += "'" + FECHA_PLAZO_CONTESTA.ToString("u") + "', ";
            informacion += "FECHA_PLAZO_CONTESTA = '" + FECHA_PLAZO_CONTESTA.ToString("u") + "', ";

            if (FECHA_CONTESTACION == new DateTime())
            {
                sql += "NULL, ";
                informacion += "FECHA_CONTESTACION = 'NULL', ";
            }
            else
            {
                sql += "'" + FECHA_CONTESTACION.ToString("u") + "', ";
                informacion += "FECHA_CONTESTACION = '" + FECHA_CONTESTACION.ToString("u") + "', ";
            }

            if (String.IsNullOrEmpty(PETICION) == false)
            {
                sql += "'" + PETICION + "', ";
                informacion += "PETICION = '" + PETICION + "', ";
            }
            else
            {
                sql += "NULL, ";
                informacion += "PETICION = 'NULL', ";
            }

            if (ARCHIVO_PETICION != null)
            {
                sql += "'[DATOS_BINARIOS]', ";
                informacion += "ARCHIVO_PETICION = '[DATOS_BINARIOS]', ";

                sql += "'" + ARCHIVO_PETICION_EXTENSION + "', ";
                informacion += "ARCHIVO_PETICION_EXTENSION = '" + ARCHIVO_PETICION_EXTENSION + "', ";

                sql += ARCHIVO_PETICION_TAMANO.ToString() + ", ";
                informacion += "ARCHIVO_PETICION_TAMANO = '" + ARCHIVO_PETICION_TAMANO.ToString() + "', ";

                sql += "'" + ARCHIVO_PETICION_TYPE + "', ";
                informacion += "ARCHIVO_PETICION_TYPE = '" + ARCHIVO_PETICION_TYPE + "', ";
            }
            else
            {
                sql += "NULL, ";
                informacion += "ARCHIVO_PETICION = 'NULL', ";

                sql += "NULL, ";
                informacion += "ARCHIVO_PETICION_EXTENSION = 'NULL', ";

                sql += "NULL, ";
                informacion += "ARCHIVO_PETICION_TAMANO = 'NULL', ";

                sql += "NULL, ";
                informacion += "ARCHIVO_PETICION_TYPE = 'NULL', ";
            }

            if (String.IsNullOrEmpty(FALLO) == false)
            {
                sql += "'" + FALLO + "', ";
                informacion += "FALLO = '" + FALLO + "', ";
            }
            else
            {
                sql += "NULL, ";
                informacion += "FALLO = 'NULL', ";
            }

            if (String.IsNullOrEmpty(RESULTADO_FALLO) == false)
            {
                sql += "'" + RESULTADO_FALLO + "', ";
                informacion += "RESULTADO_FALLO = '" + RESULTADO_FALLO + "', ";
            }
            else
            {
                sql += "NULL, ";
                informacion += "RESULTADO_FALLO = 'NULL', ";
            }

            if (ARCHIVO_FALLO != null)
            {
                sql += "'[DATOS_BINARIOS]', ";
                informacion += "ARCHIVO_FALLO = '[DATOS_BINARIOS]', ";

                sql += "'" + ARCHIVO_FALLO_EXTENSION + "', ";
                informacion += "ARCHIVO_FALLO_EXTENSION = '" + ARCHIVO_FALLO_EXTENSION + "', ";

                sql += ARCHIVO_FALLO_TAMANO.ToString() + ", ";
                informacion += "ARCHIVO_FALLO_TAMANO = '" + ARCHIVO_FALLO_TAMANO.ToString() + "', ";

                sql += "'" + ARCHIVO_FALLO_TYPE + "', ";
                informacion += "ARCHIVO_FALLO_TYPE = '" + ARCHIVO_FALLO_TYPE + "', ";
            }
            else
            {
                sql += "NULL, ";
                informacion += "ARCHIVO_FALLO = 'NULL', ";

                sql += "NULL, ";
                informacion += "ARCHIVO_FALLO_EXTENSION = 'NULL', ";

                sql += "NULL, ";
                informacion += "ARCHIVO_FALLO_TAMANO = 'NULL', ";

                sql += "NULL, ";
                informacion += "ARCHIVO_FALLO_TYPE = 'NULL', ";
            }

            if (RESPONSABLE != 0)
            {
                sql += "'" + RESPONSABLE + "', ";
                informacion += "RESPONSABLE = '" + RESPONSABLE + "', ";
            }
            else
            {
                MensajeError = "El campo ABOGADO RESPONSABLE no puede ser vacio.";
                ejecutar = false;
            }

            if (ID_EMPRESA != 0)
            {
                sql += ID_EMPRESA + ", ";
                informacion += "ID_EMPRESA = '" + ID_EMPRESA + "', ";
            }
            else
            {
                MensajeError = "El campo ID_EMPRESA no puede ser vacio.";
                ejecutar = false;
            }

            if (REGISTRO_CONTRATO != 0)
            {
                sql += REGISTRO_CONTRATO + ", ";
                informacion += "REGISTRO_CONTRATO = '" + REGISTRO_CONTRATO + "', ";
            }
            else
            {
                MensajeError = "El campo REGISTRO_CONTRATO no puede ser vacio.";
                ejecutar = false;
            }

            if (String.IsNullOrEmpty(CONSIDERACIONES) == false)
            {
                sql += "'" + CONSIDERACIONES + "', ";
                informacion += "CONSIDERACIONES = '" + CONSIDERACIONES + "', ";
            }
            else
            {
                sql += "NULL, ";
                informacion += "CONSIDERACIONES = 'NULL', ";
            }

            sql += "'" + Usuario.ToString() + "'";
            informacion += "USU_CRE = '" + Usuario.ToString() + "'";
            #endregion validaciones

            if (ejecutar)
            {
                Conexion conexion = new Conexion(Empresa);
                conexion.IniciarTransaccion();
                try
                {
                    #region adicionar tutela
                    ID = conexion.ExecuteEscalarParaAdicionarTutela(ID_SOLICITUD, FECHA_R, FECHA_NOTIFICACION, FECHA_PLAZO_CONTESTA, FECHA_CONTESTACION, PETICION, ARCHIVO_PETICION, ARCHIVO_PETICION_EXTENSION, ARCHIVO_PETICION_TAMANO, ARCHIVO_PETICION_TYPE, FALLO, RESULTADO_FALLO, ARCHIVO_FALLO, ARCHIVO_FALLO_EXTENSION, ARCHIVO_FALLO_TAMANO, ARCHIVO_FALLO_TYPE, RESPONSABLE, ID_EMPRESA, REGISTRO_CONTRATO, CONSIDERACIONES, Usuario);
                    #endregion adicionar tutela

                    #region auditoria
                    if (Convert.ToDecimal(ID) > 0)
                    {
                        auditoria _auditoria = new auditoria(Empresa);
                        if (!(_auditoria.Adicionar(Usuario, tabla.CON_REG_TUTELAS, tabla.ACCION_ADICIONAR, sql, informacion, conexion)))
                        {
                            conexion.DeshacerTransaccion();
                            MensajeError = "ERROR: Al intentar ingresar la auditoría.";
                            ejecutadoCorrectamente = false;
                        }
                        else
                        {
                            conexion.AceptarTransaccion();
                        }
                    }
                    else
                    {
                        conexion.DeshacerTransaccion();
                        MensajeError = "ERROR: intenatar ingresar en la bd la tutela.";
                        ejecutadoCorrectamente = false;
                    }
                    #endregion auditoria
                }
                catch (Exception e)
                {
                    conexion.DeshacerTransaccion();
                    MensajeError = e.Message;
                    ejecutadoCorrectamente = false;
                }
                finally
                {
                    conexion.Desconectar();
                }
            }

            if (ejecutadoCorrectamente)
            {
                return Convert.ToDecimal(ID);
            }
            else
            {
                return 0;
            }
        }