@Override
  public void addForEdit(UIResponseContext aContext) {
    ValueContext currentRecord = aContext.getValueContext();

    Adaptation currentClient =
        aContext
            .getNode(Path.PARENT.add(ClientesPath._HierarquiaCliente._IdCliente))
            .getFacetOnTableReference()
            .getLinkedRecord(currentRecord);
    AdaptationTable hierTable = aContext.getValueContext().getAdaptationTable();
    if (currentClient != null) {
      Nomenclature nomen = new Nomenclature();

      String currClientDocNum = currentClient.getString(ClientesPath._Cliente._NumDocumento);

      String docNumPrefix = currClientDocNum;
      if (currClientDocNum.length() >= 8) docNumPrefix = currClientDocNum.substring(0, 8);

      RequestResult sameBaseHierarchies =
          hierTable.createRequestResult(
              "starts-with("
                  + ClientesPath._HierarquiaCliente._ClientDocumentNumber.format()
                  + ",'"
                  + docNumPrefix
                  + "') and ("
                  + ClientesPath._HierarquiaCliente._CodGrupoConta.format()
                  + " = 'CNOH' or "
                  + ClientesPath._HierarquiaCliente._CodGrupoConta.format()
                  + " = 'CSNO')");

      try {
        for (Adaptation record; (record = sameBaseHierarchies.nextAdaptation()) != null; ) {
          nomen.addItem(
              new NomenclatureItemValue(
                  record.getOccurrencePrimaryKey().format(),
                  docNumPrefix
                      + " - "
                      + record.getString(ClientesPath._HierarquiaCliente._CodGrupoConta)
                      + " - "
                      // + record.getOccurrencePrimaryKey().format()));
                      + record.getString(ClientesPath._HierarquiaCliente._NomeGrupoComercial)));
        }
      } finally {
        sameBaseHierarchies.close();
      }

      RequestResult diffBaseHierarchies =
          hierTable.createRequestResult(
              "(osd:is-null("
                  + ClientesPath._HierarquiaCliente._ClientDocumentNumber.format()
                  + ") or not(starts-with("
                  + ClientesPath._HierarquiaCliente._ClientDocumentNumber.format()
                  + ",'"
                  + docNumPrefix
                  + "'))) and ("
                  + ClientesPath._HierarquiaCliente._CodGrupoConta.format()
                  + " = 'CNOH' or "
                  + ClientesPath._HierarquiaCliente._CodGrupoConta.format()
                  + " = 'CSNO')");

      try {
        for (Adaptation record; (record = diffBaseHierarchies.nextAdaptation()) != null; ) {
          nomen.addItem(
              new NomenclatureItemValue(
                  record.getOccurrencePrimaryKey().format(),
                  record.getString(ClientesPath._HierarquiaCliente._CodClienteSAP)
                      + " - "
                      // + record.getOccurrencePrimaryKey().format()));
                      + record.getString(ClientesPath._HierarquiaCliente._NomeGrupoComercial)));
        }
      } finally {
        diffBaseHierarchies.close();
      }

      UIComboBox combo = aContext.newComboBox(Path.SELF);
      combo.setSpecificNomenclature(nomen);

      aContext.addWidget(combo);
    }
  }
 @Override
 public void addForDisplay(UIResponseContext aContext) {
   aContext.addUIBestMatchingDisplay(Path.SELF, "");
 }