Seite 1 von 1

Miglied kopieren

Verfasst: Dienstag 10. Mai 2011, 10:05
von Ghostmaster
Hallo Heiner,

eine Mitglied kopieren Funktionalität wäre wünschenswert. Das ist vor allem hilfreich, wenn man bei Familien nicht die meisten Dinge 3-X fach eintragen muss.
Wenn man sagt Mitglied kopieren, könnte sich der Mitglied erfassen Dialog öffnen (wie bei neu), nur dass alle Felder nach Vorlage befüllt sind.

Re: Miglied kopieren

Verfasst: Dienstag 10. Mai 2011, 13:43
von Danzelot
Hallo Ghostmaster,
hallo Heiner,

ich habe das mal kurz für die Mitglieder ausprobiert.
MitgliedMenu wurde angepasst und MitgliedCopyAction neu erstellt:

Code: Alles auswählen

/**********************************************************************
 * $Source: /cvsroot/jverein/jverein/src/de/jost_net/JVerein/gui/menu/MitgliedMenu.java,v $
 * $Revision: 1.9 $
 * $Date: 2011-04-23 06:56:19 $
 * $Author: jost $
 *
 * Copyright (c) by Heiner Jostkleigrewe
 * All rights reserved
 * heiner@jverein.de
 * www.jverein.de
 * $Log: MitgliedMenu.java,v $
 * Revision 1.9  2011-04-23 06:56:19  jost
 * Neu: Freie Formulare
 *
 * Revision 1.8  2011-02-03 22:02:08  jost
 * Bugfix Kontextmenu
 *
 * Revision 1.7  2010-09-01 05:57:20  jost
 * neu: Personalbogen
 *
 * Revision 1.6  2010/02/01 20:59:57  jost
 * Neu: Einfache Mailfunktion
 *
 * Revision 1.5  2009/06/11 21:03:02  jost
 * Vorbereitung I18N
 *
 * Revision 1.4  2008/12/22 21:14:57  jost
 * Icons ins Menü aufgenommen.
 *
 * Revision 1.3  2008/07/18 20:11:31  jost
 * Neu: Spendenbescheinigung
 *
 * Revision 1.2  2007/08/31 05:36:00  jost
 * Jetzt auch bearbeiten über das Context-Menü
 *
 * Revision 1.1  2007/08/30 19:48:53  jost
 * Neues Kontext-Menü
 *
 **********************************************************************/
package de.jost_net.JVerein.gui.menu;

import java.rmi.RemoteException;

import de.jost_net.JVerein.Einstellungen;
import de.jost_net.JVerein.JVereinPlugin;
import de.jost_net.JVerein.gui.action.FreiesFormularAction;
import de.jost_net.JVerein.gui.action.MitgliedCopyAction;
import de.jost_net.JVerein.gui.action.MitgliedDeleteAction;
import de.jost_net.JVerein.gui.action.MitgliedMailSendenAction;
import de.jost_net.JVerein.gui.action.PersonalbogenAction;
import de.jost_net.JVerein.gui.action.SpendenbescheinigungAction;
import de.jost_net.JVerein.keys.Formularart;
import de.jost_net.JVerein.rmi.Formular;
import de.willuhn.datasource.rmi.DBIterator;
import de.willuhn.jameica.gui.Action;
import de.willuhn.jameica.gui.parts.CheckedContextMenuItem;
import de.willuhn.jameica.gui.parts.CheckedSingleContextMenuItem;
import de.willuhn.jameica.gui.parts.ContextMenu;

/**
 * Kontext-Menu zu den Beitragsgruppen.
 */
public class MitgliedMenu extends ContextMenu
{

  /**
   * Erzeugt ein Kontext-Menu für die Liste der Mitglieder.
   *
   * @throws RemoteException
   */
  public MitgliedMenu(Action detailaction) throws RemoteException
  {
    addItem(new CheckedSingleContextMenuItem(JVereinPlugin.getI18n().tr(
        "bearbeiten"), detailaction, "edit.png"));
    addItem(new CheckedSingleContextMenuItem(JVereinPlugin.getI18n().tr(
        "löschen..."), new MitgliedDeleteAction(), "user-trash.png"));
    addItem(new CheckedSingleContextMenuItem(JVereinPlugin.getI18n().tr(
    "kopieren..."), new MitgliedCopyAction(), "edit-copy.png"));
    addItem(new CheckedContextMenuItem(JVereinPlugin.getI18n().tr(
        "Mail senden ..."), new MitgliedMailSendenAction(),
        "mail-message-new.png"));
    addItem(new CheckedSingleContextMenuItem(JVereinPlugin.getI18n().tr(
        "Spendenbescheinigung"), new SpendenbescheinigungAction(),
        "rechnung.png"));
    addItem(new CheckedContextMenuItem(JVereinPlugin.getI18n().tr(
        "Personalbogen"), new PersonalbogenAction(), "rechnung.png"));
    DBIterator it = Einstellungen.getDBService().createList(Formular.class);
    it.addFilter("art = ?", new Object[] { Formularart.FREIESFORMULAR });
    while (it.hasNext())
    {
      Formular f = (Formular) it.next();
      addItem(new CheckedContextMenuItem(JVereinPlugin.getI18n().tr(
          f.getBezeichnung()), new FreiesFormularAction(f.getID()), "rechnung.png"));
    }
  }
}

Code: Alles auswählen

/**********************************************************************
 * $Source: /cvsroot/jverein/jverein/src/de/jost_net/JVerein/gui/action/MitgliedCopyAction.java,v $
 * $Revision: 1.0 $
 * $Date: 2011-05-10 13:31:56 $
 * $Author: jost $
 *
 * Copyright (c) by Heiner Jostkleigrewe
 * All rights reserved
 * heiner@jverein.de
 * www.jverein.de
 * $Log: MitgliedCopyAction.java,v $
 * Revision 1.7  2011-01-27 22:16:56  jost
 * Neu: Speicherung von weiteren Adressen in der Mitgliedertabelle
 *
 * Revision 1.6  2010-11-22 20:57:53  jost
 * Vorbereitungs Arbeitseinsatzüberprüfung.
 *
 * Revision 1.5  2010-07-25 18:28:31  jost
 * Neu: Mitgliedskonto
 *
 * Revision 1.4  2009/06/11 21:02:05  jost
 * Vorbereitung I18N
 *
 * Revision 1.3  2009/04/25 05:27:30  jost
 * Neu: Juristische Personen  können als Mitglied gespeichert werden.
 *
 * Revision 1.2  2007/02/23 20:26:00  jost
 * Mail- und Webadresse im Header korrigiert.
 *
 * Revision 1.1  2006/09/20 15:38:12  jost
 * *** empty log message ***
 *
 **********************************************************************/
package de.jost_net.JVerein.gui.action;

import de.jost_net.JVerein.Einstellungen;
import de.jost_net.JVerein.JVereinPlugin;
import de.jost_net.JVerein.gui.dialogs.PersonenartDialog;
import de.jost_net.JVerein.gui.view.MitgliedDetailView;
import de.jost_net.JVerein.io.ArbeitseinsatzZeile;
import de.jost_net.JVerein.rmi.Mitglied;
import de.jost_net.JVerein.rmi.Mitgliedskonto;
import de.willuhn.jameica.gui.Action;
import de.willuhn.jameica.gui.GUI;
import de.willuhn.jameica.gui.dialogs.AbstractDialog;
import de.willuhn.util.ApplicationException;

public class MitgliedCopyAction implements Action
{
  public void handleAction(Object context) throws ApplicationException
  {
    Mitglied m = null;
    try
    {
      if (context != null && context instanceof ArbeitseinsatzZeile)
      {
        ArbeitseinsatzZeile aez = (ArbeitseinsatzZeile) context;
        m = (Mitglied) aez.getAttribute("mitglied");
      }
      else if (context != null && context instanceof Mitglied)
      {
        m = (Mitglied) context;
      }
      else if (context != null && context instanceof Mitgliedskonto)
      {
        Mitgliedskonto mk = (Mitgliedskonto) context;
        m = mk.getMitglied();
      }
      else
      {
        m = (Mitglied) Einstellungen.getDBService().createObject(
            Mitglied.class, null);
        if (Einstellungen.getEinstellung().getJuristischePersonen())
        {
          PersonenartDialog pad = new PersonenartDialog(
              AbstractDialog.POSITION_CENTER);
          String pa = (String) pad.open();
          m.setPersonenart(pa);
        }
        else
        {
          m.setPersonenart("n");
        }
      }

      /* Löschen von Attributen, die nicht zu dem neuen Mitglied gehören */
      m.setID( null );
      m.setExterneMitgliedsnummer( null );
      m.setBeitragsgruppe( null );

     /* TODO: hier noch weitere Anpassungen vornehmen */

    }
    catch (Exception e)
    {
      throw new ApplicationException(JVereinPlugin.getI18n().tr(
          "Fehler bei der Erzeugung eines neuen Mitgliedes"), e);
    }
    GUI.startView(new MitgliedDetailView(), m);
  }
}
Das Kopieren eines Mitgliedes ist so möglich.
Ich habe nicht geprüft, ob alle Einstellungen auf den Reitern kopiert wird. Die Einstellungen des Eigenschaftenbaumes werden nicht übernommen, da muss Heiner noch drüber schauen.

Das gleiche könnte dann noch für Adressen übernommen werden, allerdings muss man hier noch den Adresstyp vorgeben/ändern können.

Re: Miglied kopieren

Verfasst: Dienstag 10. Mai 2011, 20:50
von heiner
Hallo Danzelot,

da, wo die Arbeit anfängt, hörst du auf. Ich würde deinen Code übernehmen, wenn er

a) komplett ist
b) leicht wartbar ist. Ich möchte nicht jedes mal bei der Erweiterung des Datenmodells noch an weiteren Stellen basteln
c) keine unnötigen Abfragen enthält (da sind eine instanceof-Abfragen drin, die nicht erforderlich sind).
d) dein Code als Eclipse-Patch verpackt ist.

Heiner

Re: Miglied kopieren

Verfasst: Donnerstag 14. Juli 2011, 09:07
von Uwe
Hallo Heiner,

ich wollte nur kurz mitteilen, dass ich eine Funktion "Mitglied kopieren" auch sehr begrüßen würde.

Gruß,
Uwe

Re: Miglied kopieren

Verfasst: Donnerstag 14. Juli 2011, 21:00
von heiner
Ich werde mal versuchen, eine einfache Lösung zu bauen.

Heiner

Re: Miglied kopieren

Verfasst: Freitag 5. August 2011, 17:41
von Uwe
Hallo Heiner,

hast du schon etwas, dass ich ausprobieren könnte?

Gruß,
Uwe

Re: Miglied kopieren

Verfasst: Freitag 5. August 2011, 17:58
von heiner
Du kannst die Entwicklerversion testen.

Heiner

Re: Miglied kopieren

Verfasst: Samstag 6. August 2011, 00:51
von Uwe
Hallo Heiner,

ich habe gerade die 310 ausprobiert.
Spitze!
Das spart mir enorm viel Zeit.

Vielen Dank!
Gruß,
Uwe