@Override
  public Where getAdditionalCondition(HttpServletRequest request) throws I18NException {
    Where pare = super.getAdditionalCondition(request);

    Where enprogres_pausades_noiniciades =
        Where.OR(
            TIPUSESTATPETICIODEFIRMAID.equal(TIPUSESTATPETICIODEFIRMA_ENPROCES),
            TIPUSESTATPETICIODEFIRMAID.equal(TIPUSESTATPETICIODEFIRMA_PAUSAT),
            TIPUSESTATPETICIODEFIRMAID.equal(TIPUSESTATPETICIODEFIRMA_NOINICIAT));

    Where fill;
    if (isSolicitantUsuariEntitat()) {
      // Seleccionar les peticions actives més les que tenen avis web a true
      fill = Where.OR(enprogres_pausades_noiniciades, AVISWEB.equal(true));

    } else {
      // Seleccionam només les peticions actives
      fill = enprogres_pausades_noiniciades;
    }
    return Where.AND(pare, fill);
  }
  @Override
  @RolesAllowed({PFI_ADMIN})
  public void deleteFull(String usuariEntitatID, String roleID) throws Exception, I18NException {

    // Validar parametres
    Long id =
        executeQueryOne(
            ID, Where.AND(USUARIENTITATID.equal(usuariEntitatID), ROLEID.equal(roleID)));
    if (id == null) {
      return;
    }

    RoleUsuariEntitatJPA instance = new RoleUsuariEntitatJPA();
    instance.setUsuariEntitatID(usuariEntitatID);
    instance.setRoleID(roleID);
    instance.setId(id);

    RoleUsuariEntitatBeanValidator bv;
    bv = new RoleUsuariEntitatBeanValidator(validator, roleEjb, this, usuariEntitatEjb);

    final boolean isNou = false;
    List<I18NFieldError> errors = bv.validate(instance, isNou);

    if (!errors.isEmpty()) {
      throw new I18NException(errors.get(0).getTranslation());
    }

    // Mirar si existeix i obtenir ID
    List<RoleUsuariEntitat> list =
        select(Where.AND(USUARIENTITATID.equal(usuariEntitatID), ROLEID.equal(roleID)));

    if (list.isEmpty()) {
      return;
    }

    instance = (RoleUsuariEntitatJPA) list.get(0);

    if (Constants.ROLE_ADEN.equals(roleID)) {
      // NO es pot borrar el role ADEN si és el darrer administrador d'entitat d'una entitat

      // 1. recuperar de usuarientitat la entrada con usuarientitatid ==
      // instance.getUsuariEntitatID()
      UsuariEntitat usuariEntitat =
          usuariEntitatEjb.findByPrimaryKey(instance.getUsuariEntitatID());
      // 2. de la entrada anterior, obtener el entitatid
      String entitatID = usuariEntitat.getEntitatID();
      // 3. Conjunto de usuarientitatid con entitatid == entitatID
      SubQuery<UsuariEntitat, String> subQ =
          usuariEntitatEjb.getSubQuery(
              UsuariEntitatFields.USUARIENTITATID, UsuariEntitatFields.ENTITATID.equal(entitatID));
      // 3.1 Columna USUARIENTITATID
      Where w1 = USUARIENTITATID.in(subQ);
      // 3.2 Columna ROLEID
      Where w2 = ROLEID.equal(Constants.ROLE_ADEN);
      // 3.3 Combinamos las condiciones anteriores
      Where w = Where.AND(w1, w2);

      // 4. si es mayor que 1, entonces eliminar de rolesuarientitat la entrada con usuarientitatid
      // == instance.getUsuariEntitatID()

      if (count(w) == 1) {
        throw new I18NException(
            "roleusuarientitat.aden.error.esunic", usuariEntitat.getUsuariPersonaID());
      }
    }

    if (Constants.ROLE_SOLI.equals(roleID)) {
      // No es pot borrar el role SOLI si l'usuari té solicituds de firma associades
      Long count =
          peticioDeFirmaEjb.count(
              es.caib.portafib.model.fields.PeticioDeFirmaFields.USUARIENTITATID.equal(
                  instance.getUsuariEntitatID()));
      if (count != 0) {
        throw new I18NException("roleusuarientitat.solicitant.error.tepeticionsdefirma");
      }
    }

    // DEST mentre tengui firmes pendents

    // TODO faltan checks para los demás roles

    super.delete(instance);
  }