示例#1
0
function parseMitgliederFormular($ui, $session, &$mitglied = null, $dokument = null)
{
    global $config;
    $eintritt = $session->getTimestampVariable("eintritt");
    $austritt = $session->getTimestampVariable("austritt");
    $persontyp = $session->getVariable("persontyp");
    $anrede = $session->getVariable("anrede");
    $name = $session->getVariable("name");
    $vorname = $session->getVariable("vorname");
    $geburtsdatum = $session->getTimestampVariable("geburtsdatum");
    $nationalitaet = $session->getVariable("nationalitaet");
    $firma = $session->getVariable("firma");
    $adresszusatz = $session->getVariable("adresszusatz");
    $strasse = $session->getVariable("strasse");
    $hausnummer = $session->getVariable("hausnummer");
    $plz = $session->getVariable("plz");
    $ortname = $session->getVariable("ort");
    $stateid = is_numeric($session->getVariable("stateid")) ? $session->getVariable("stateid") : null;
    $telefon = $session->getVariable("telefon");
    $handy = $session->getVariable("handy");
    $email = $session->getVariable("email");
    $kontoinhaber = $session->getVariable("kontoinhaber");
    $iban = $session->getVariable("iban");
    $bic = $session->getVariable("bic");
    $gliederungid = intval($session->getVariable("gliederungid"));
    $gliederung = $session->getStorage()->getGliederung($gliederungid);
    $mitgliedschaftid = $session->getIntVariable("mitgliedschaftid");
    $mitgliedschaft = $session->getStorage()->getMitgliedschaft($mitgliedschaftid);
    $beitrag = $session->getDoubleVariable("beitrag");
    $beitragtimeformat = $session->getStorage()->getBeitragTimeFormat($session->getIntVariable("beitragtimeformatid"));
    $flags = $session->getListVariable("flags");
    $textfields = $session->getListVariable("textfields");
    $kommentar = $session->getVariable("kommentar");
    $natperson = null;
    $jurperson = null;
    if ($persontyp == "nat") {
        $natperson = $session->getStorage()->searchNatPerson($anrede, $name, $vorname, $geburtsdatum, $nationalitaet);
    } else {
        $jurperson = $session->getStorage()->searchJurPerson($firma);
    }
    $konto = null;
    if ($iban != null) {
        if (trim($kontoinhaber) == "") {
            $kontoinhaber = $persontyp == "nat" ? $vorname . " " . $name : $firma;
        }
        $konto = $session->getStorage()->searchKonto($kontoinhaber, $iban, $bic);
    }
    $ort = $session->getStorage()->searchOrt($plz, $ortname, $stateid);
    $email = $session->getStorage()->searchEMail($email);
    $kontakt = $session->getStorage()->searchKontakt($adresszusatz, $strasse, $hausnummer, $ort->getOrtID(), $telefon, $handy, $email->getEMailID(), $konto == null ? null : $konto->getKontoID());
    if ($mitglied == null) {
        if (!$session->isAllowed("mitglieder_create", $gliederung->getGliederungID())) {
            $ui->viewLogin();
            exit;
        }
        $mitglied = new Mitglied($session->getStorage());
        $mitglied->setGlobalID($config->generateGlobalID());
        // Zwischenspeichern, um ersten Beitrag hinzuzufuegen
        $mitglied->save();
        $beitragobj = $beitragtimeformat->getBeitrag();
        if ($beitragobj != null) {
            $mitgliedbeitrag = new MitgliedBeitrag($session->getStorage());
            $mitgliedbeitrag->setMitglied($mitglied);
            $mitgliedbeitrag->setBeitrag($beitragobj);
            $mitgliedbeitrag->setHoehe($beitragobj->getHoehe() == null ? $beitrag : $beitragobj->getHoehe());
            $mitgliedbeitrag->save();
        }
    } else {
        if (!$session->isAllowed("mitglieder_modify", $mitglied->getLatestRevision()->getGliederungID())) {
            $ui->viewLogin();
            exit;
        }
        if ($gliederung->getGliederungID() != $mitglied->getLatestRevision()->getGliederungID() && !$session->isAllowed("mitglieder_moveto", $gliederung->getGliederungID())) {
            $ui->viewLogin();
            exit;
        }
    }
    $mitglied->setEintrittsdatum($eintritt);
    $mitglied->setAustrittsdatum($austritt);
    $mitglied->save();
    $revision = new MitgliedRevision($session->getStorage());
    $revision->setTimestamp(time());
    $revision->isGeloescht($austritt != null);
    $revision->setGlobalID($config->generateGlobalID());
    $revision->setUser($session->getUser());
    $revision->setMitglied($mitglied);
    $revision->setMitgliedschaft($mitgliedschaft);
    $revision->setGliederung($gliederung);
    $revision->setBeitrag($beitrag);
    $revision->setBeitragTimeFormat($beitragtimeformat);
    $revision->setNatPerson($natperson);
    $revision->setJurPerson($jurperson);
    $revision->setKontakt($kontakt);
    $revision->setKommentar($kommentar);
    foreach ($flags as $flagid => $selected) {
        $revision->setFlag($session->getStorage()->getMitgliedFlag($flagid));
    }
    foreach ($textfields as $textfieldid => $value) {
        $revision->setTextField($session->getStorage()->getMitgliedTextField($textfieldid), $value);
    }
    $revision->save();
    if ($dokument != null) {
        $session->getStorage()->addMitgliedDokument($mitglied->getMitgliedID(), $dokument->getDokumentID());
    }
    if ($session->hasVariable("mailtemplateid")) {
        $mailtemplate = $session->getStorage()->getMailTemplate($session->getVariable("mailtemplateid"));
        if ($mailtemplate != null) {
            $mail = $mailtemplate->generateMail($mitglied->getLatestRevision()->getKontakt()->getEMail(), new MitgliedTextReplacer($mitglied));
            $mail->send();
        }
    }
}