public int compare(final IVerrechenbar v1, final IVerrechenbar v2) {
   int i = v1.getCodeSystemName().compareTo(v2.getCodeSystemName());
   if (i == 0) {
     i = v1.getCode().compareTo(v2.getCode());
   }
   return i;
 }
    public Result<IVerrechenbar> add(final IVerrechenbar code, final Konsultation kons) {
      List<Verrechnet> old = kons.getLeistungen();
      Verrechnet foundVerrechnet = null;
      for (Verrechnet verrechnet : old) {
        IVerrechenbar vrElement = verrechnet.getVerrechenbar();
        if (vrElement == null) {
          // #2454 This should not happen, may however if we have to consider
          // elements where the responsible plugin is not available
          if (log == null) log = LoggerFactory.getLogger(DefaultOptifier.class);
          log.error(
              "IVerrechenbar is not resolvable in "
                  + verrechnet.getId()
                  + " is "
                  + verrechnet.get(Verrechnet.CLASS)
                  + " available?");
          continue;
        }

        if (vrElement.getId().equals(code.getId())) {
          if (verrechnet.getText().equals(code.getText())) {
            foundVerrechnet = verrechnet;
            break;
          }
        }
      }

      if (foundVerrechnet != null) {
        foundVerrechnet.changeAnzahl(foundVerrechnet.getZahl() + 1);
      } else {
        newVerrechnet = new Verrechnet(code, kons, 1);
        old.add(newVerrechnet);
      }
      return new Result<IVerrechenbar>(code);
    }
  public void setLeistungen(Konsultation b) {
    List<Verrechnet> lgl = Collections.emptyList();
    if (b != null) {
      lgl = b.getLeistungen();
    }
    tVerr.setRedraw(false);
    tVerr.removeAll();
    StringBuilder sdg = new StringBuilder();
    Money sum = new Money(0);
    for (Verrechnet lst : lgl) {
      sdg.setLength(0);
      int z = lst.getZahl();
      Money preis = lst.getNettoPreis().multiply(z);
      sum.addMoney(preis);
      sdg.append(z)
          .append(" ")
          .append(lst.getCode())
          .append(" ")
          .append(lst.getText()) // $NON-NLS-1$ //$NON-NLS-2$
          .append(" (")
          .append(preis.getAmountAsString())
          .append(")"); // $NON-NLS-1$ //$NON-NLS-2$
      TableItem ti = new TableItem(tVerr, SWT.WRAP);
      ti.setText(sdg.toString());
      ti.setData(lst);

      IVerrechenbar vr = lst.getVerrechenbar();
      if (vr instanceof Artikel) {
        Artikel a = (Artikel) vr;
        int abgabeEinheit = a.getAbgabeEinheit();
        if (abgabeEinheit > 0 && abgabeEinheit < a.getPackungsGroesse()) {
          ti.setImage(Images.IMG_BLOCKS_SMALL.getImage());
        }
      }

      // set table item color
      IVerrechenbar verrBar = lst.getVerrechenbar();
      if (verrBar != null) {
        Color color = UiDesk.getColorFromRGB(defaultRGB);
        String codeName = verrBar.getCodeSystemName();

        if (codeName != null) {
          String rgbColor =
              CoreHub.globalCfg.get(Preferences.LEISTUNGSCODES_COLOR + codeName, defaultRGB);
          color = UiDesk.getColorFromRGB(rgbColor);
        }
        ti.setBackground(color);
      }
    }
    tVerr.setRedraw(true);
    sdg.setLength(0);
    sdg.append(Messages.VerrechnungsDisplay_billed)
        .append(sum.getAmountAsString())
        .append(")"); // $NON-NLS-1$ //$NON-NLS-2$
    hVer.setText(sdg.toString());
  }