public Decimal AdicionarAdjuntoActoJuridico(Decimal ID_TUTELA,
            Decimal ID_DEMANDA,
            Decimal ID_DERECHO,
            DateTime FECHA_R,
            DateTime FECHA_ADJUNTO,
            String TITULO,
            String DESCRIPCION,
            Byte[] ARCHIVO_ADJUNTO,
            String ARCHIVO_ADJUNTO_EXTENSION,
            Decimal ARCHIVO_ADJUNTO_TAMANO,
            String ARCHIVO_ADJUNTO_TYPE)
        {
            String ID = null;
            String sql = null;
            String informacion = null;
            Boolean ejecutar = true;
            Boolean ejecutadoCorrectamente = true;

            tools _tools = new tools();

            sql = "usp_reg_adjuntos_actos_juridicos_adicionar ";

            #region validaciones

            if ((ID_TUTELA == 0) && (ID_DEMANDA == 0) && (ID_DERECHO == 0))
            {
                MensajeError = "ID_TUTELA, ID_DEMANDA, ID_DERECHO no pueden ser 0 al tiempo.";
                ejecutar = false;
            }
            else
            {
                if (ID_TUTELA != 0)
                {
                    sql += ID_TUTELA + ", ";
                    informacion += "ID_TUTELA = '" + ID_TUTELA + "', ";
                }
                else
                {
                    sql += "NULL, ";
                    informacion += "ID_TUTELA = 'NULL', ";
                }

                if (ID_DEMANDA != 0)
                {
                    sql += ID_DEMANDA + ", ";
                    informacion += "ID_DEMANDA = '" + ID_DEMANDA + "', ";
                }
                else
                {
                    sql += "NULL, ";
                    informacion += "ID_DEMANDA = 'NULL', ";
                }

                if (ID_DERECHO != 0)
                {
                    sql += ID_DERECHO + ", ";
                    informacion += "ID_DERECHO = '" + ID_DERECHO + "', ";
                }
                else
                {
                    sql += "NULL, ";
                    informacion += "ID_DERECHO = 'NULL', ";
                }
            }

            sql += "'" + _tools.obtenerStringConFormatoFechaSQLServer(FECHA_R) + "', ";
            informacion += "FECHA_R = '" + _tools.obtenerStringConFormatoFechaSQLServer(FECHA_R) + "', ";

            sql += "'" + _tools.obtenerStringConFormatoFechaSQLServer(FECHA_ADJUNTO) + "', ";
            informacion += "FECHA_ADJUNTO = '" + _tools.obtenerStringConFormatoFechaSQLServer(FECHA_ADJUNTO) + "', ";

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

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

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

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

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

                sql += "'" + ARCHIVO_ADJUNTO_TYPE + "', ";
                informacion += "ARCHIVO_ADJUNTO_TYPE = '" + ARCHIVO_ADJUNTO_TYPE + "', ";
            }
            else
            {
                sql += "NULL, ";
                informacion += "ARCHIVO_ADJUNTO = 'NULL', ";

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

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

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

            sql += "'" + Usuario + "'";
            informacion += "USU_MOD = '" + Usuario + "'";
            #endregion validaciones

            if (ejecutar)
            {
                Conexion conexion = new Conexion(Empresa);
                conexion.IniciarTransaccion();
                try
                {
                    #region adicionar adjunto
                    ID = conexion.ExecuteEscalarParaAdicionarAdjuntoActo(ID_TUTELA, ID_DEMANDA, ID_DERECHO, FECHA_R, FECHA_ADJUNTO, TITULO, DESCRIPCION, ARCHIVO_ADJUNTO, ARCHIVO_ADJUNTO_EXTENSION, ARCHIVO_ADJUNTO_TAMANO, ARCHIVO_ADJUNTO_TYPE, Usuario);
                    #endregion adicionar adjunto

                    #region auditoria
                    if (Convert.ToDecimal(ID) > 0)
                    {
                        auditoria _auditoria = new auditoria(Empresa);
                        if (!(_auditoria.Adicionar(Usuario, tabla.REG_ADJUNTOS_ACTOS_JURIDICOS, 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 el adjunto.";
                        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;
            }
        }