/**
   * Audita la modificación de un tipo de documento vital.
   *
   * @param service Servicio a auditar.
   * @param tipo Tipo de documento vital.
   * @param tipoAnt Tipo de documento vital anterior.
   */
  public static void auditaModificacionTipoDocumentoVital(
      Locale locale,
      IServiceBase service,
      TipoDocumentoVitalVO tipo,
      TipoDocumentoVitalVO tipoAnt) {
    // Evento de auditoría
    LoggingEvent event =
        getLogginEvent(service, ArchivoActions.DOCUMENTOS_VITALES_MODULE_MODIFICACION_TIPO);

    // Detalle de auditoría
    DataLoggingEvent data =
        event.getDataLoggingEvent(ArchivoObjects.OBJECT_TIPO_DOCUMENTO_VITAL, tipo.getId());

    // Detalles de auditoría
    data.addDetalle(locale, ArchivoDetails.DOCUMENTOS_VITALES_NOMBRE_TIPO, tipo.getNombre());
    if (!StringUtils.equals(tipo.getNombre(), tipoAnt.getNombre()))
      data.addDetalle(
          locale, ArchivoDetails.DOCUMENTOS_VITALES_NOMBRE_TIPO_ANTERIOR, tipoAnt.getNombre());

    data.addDetalle(
        locale, ArchivoDetails.DOCUMENTOS_VITALES_DESCRIPCION_TIPO, tipo.getDescripcion());
    if (!StringUtils.equals(tipo.getDescripcion(), tipoAnt.getDescripcion()))
      data.addDetalle(
          locale,
          ArchivoDetails.DOCUMENTOS_VITALES_DESCRIPCION_TIPO_ANTERIOR,
          tipoAnt.getDescripcion());
  }
  /**
   * Audita la creación de un tipo de documento vital.
   *
   * @param event Evento de auditoría.
   * @param tipo Tipo de documento vital.
   */
  public static void auditaAltaTipoDocumentoVital(
      Locale locale, LoggingEvent event, TipoDocumentoVitalVO tipo) {
    // Detalle de auditoría
    DataLoggingEvent data =
        event.getDataLoggingEvent(ArchivoObjects.OBJECT_TIPO_DOCUMENTO_VITAL, tipo.getId());

    // Detalles de auditoría
    data.addDetalle(locale, ArchivoDetails.DOCUMENTOS_VITALES_NOMBRE_TIPO, tipo.getNombre());
    data.addDetalle(
        locale, ArchivoDetails.DOCUMENTOS_VITALES_DESCRIPCION_TIPO, tipo.getDescripcion());
  }
  /**
   * Elimina una unidad documental dada
   *
   * @param udoc Unidad documental
   */
  public void eliminarUdoc(IUnidadDocumentalEliminacionVO udoc) {
    // Auditoria
    Locale locale = getServiceClient().getLocale();
    LoggingEvent logEvent = getLogginEvent(ArchivoActions.FONDOS_MODULE_BAJA_UDOC);
    DataLoggingEvent logData =
        logEvent.getDataLoggingEvent(ArchivoObjects.OBJECT_UDOC, udoc.getIdudoc());
    logData.addDetalle(locale, ArchivoDetails.SELECCION_COD_UDOC, udoc.getCodigo());
    logData.addDetalle(locale, ArchivoDetails.SELECCION_COD_UDOC, udoc.getExpedienteudoc());
    checkPermission(FondosSecurityManager.BAJAUDOC_ACTION);

    eliminarUdocBasico(udoc.getIdudoc());
  }
  /**
   * Desinstala una unidad documental de la ubicación que ocupa en el depósito físico
   *
   * @param idUdoc Identificador de unidad documental
   */
  public void desinstalarUnidadDocumental(String idUdoc) {
    // Auditoria
    LoggingEvent logEvent = getLogginEvent(ArchivoActions.FONDOS_MODULE_BAJA_UDOCENUI);
    DataLoggingEvent logData = logEvent.getDataLoggingEvent(ArchivoObjects.OBJECT_UDOC, idUdoc);
    UnidadDocumentalVO udoc = getUnidadDocumental(idUdoc);
    Locale locale = getServiceClient().getLocale();

    logData.addDetalle(locale, ArchivoDetails.SELECCION_COD_UDOC, udoc.getCodigo());
    logData.addDetalle(locale, ArchivoDetails.SELECCION_COD_UDOC, udoc.getNumExp());

    checkPermission(FondosSecurityManager.BAJAUDOC_ENUI_ACTION);
    iniciarTransaccion();
    _udocDepositoDBEntity.deleteUdoc(idUdoc);
    commit();
  }
  /**
   * Audita la eliminación de un tipo de documento vital.
   *
   * @param service Servicio a auditar.
   * @param tipo Tipo de documento vital.
   */
  public static void auditaEliminacionTipoDocumentoVital(
      Locale locale, IServiceBase service, TipoDocumentoVitalVO tipo) {
    // Evento de auditoría
    LoggingEvent event =
        getLogginEvent(service, ArchivoActions.DOCUMENTOS_VITALES_MODULE_ELIMINACION_TIPO);

    if (tipo != null) {
      // Detalle de auditoría
      DataLoggingEvent data =
          event.getDataLoggingEvent(ArchivoObjects.OBJECT_TIPO_DOCUMENTO_VITAL, tipo.getId());

      // Detalles de auditoría
      data.addDetalle(locale, ArchivoDetails.DOCUMENTOS_VITALES_NOMBRE_TIPO, tipo.getNombre());
      data.addDetalle(
          locale, ArchivoDetails.DOCUMENTOS_VITALES_DESCRIPCION_TIPO, tipo.getDescripcion());
    }
  }
  /**
   * Audita la eliminación de un documento vital.
   *
   * @param service Servicio a auditar.
   * @param docVital Documento vital.
   */
  public static void auditaEliminacionDocumentoVital(
      Locale locale, IServiceBase service, InfoBDocumentoVitalExtVO docVital) {
    // Evento de auditoría
    LoggingEvent event =
        getLogginEvent(service, ArchivoActions.DOCUMENTOS_VITALES_MODULE_ELIMINACION);

    // Detalle de auditoría
    DataLoggingEvent data =
        event.getDataLoggingEvent(ArchivoObjects.OBJECT_DOCUMENTO_VITAL, docVital.getId());

    // Detalles de auditoría
    data.addDetalle(
        locale, ArchivoDetails.DOCUMENTOS_VITALES_ID_BD_TERCEROS, docVital.getIdBdTerceros());
    data.addDetalle(
        locale, ArchivoDetails.DOCUMENTOS_VITALES_NUM_IDENTIDAD, docVital.getNumIdentidad());
    data.addDetalle(locale, ArchivoDetails.DOCUMENTOS_VITALES_IDENTIDAD, docVital.getIdentidad());
    data.addDetalle(locale, ArchivoDetails.DOCUMENTOS_VITALES_ID_TIPO, docVital.getIdTipoDocVit());
    data.addDetalle(
        locale, ArchivoDetails.DOCUMENTOS_VITALES_NOMBRE_TIPO, docVital.getNombreTipoDocVit());
    data.addDetalle(
        locale,
        ArchivoDetails.DOCUMENTOS_VITALES_FECHA_CAD,
        TypeConverter.toString(docVital.getFechaCad()));
    data.addDetalle(
        locale,
        ArchivoDetails.DOCUMENTOS_VITALES_ESTADO,
        Messages.getString(
            DocumentosVitalesConstants.LABEL_DOCVITALES_ESTADO + "." + docVital.getEstadoDocVit(),
            locale));
    data.addDetalle(
        locale,
        ArchivoDetails.DOCUMENTOS_VITALES_FECHA_CR,
        TypeConverter.toString(docVital.getFechaCr()));
    data.addDetalle(
        locale, ArchivoDetails.DOCUMENTOS_VITALES_ID_USUARIO_CR, docVital.getIdUsuarioCr());
    data.addDetalle(locale, ArchivoDetails.DOCUMENTOS_VITALES_ID_FICH, docVital.getIdFich());
    data.addDetalle(
        locale, ArchivoDetails.DOCUMENTOS_VITALES_NOMBRE_FICH, docVital.getNombreOrgFich());
    data.addDetalle(locale, ArchivoDetails.DOCUMENTOS_VITALES_EXT_FICH, docVital.getExtFich());
    data.addDetalle(
        locale,
        ArchivoDetails.DOCUMENTOS_VITALES_TAMANO_FICH,
        new Double(docVital.getTamanoFich()).toString());
    data.addDetalle(
        locale, ArchivoDetails.DOCUMENTOS_VITALES_OBSERVACIONES, docVital.getObservaciones());
  }