/**
 * Zusammenlegen der Firmen
 *
 * @param unknown_type $firmendaten
 * @return unknown
 */
function zusammenlegen($firmendaten)
{
    global $db, $user;
    $error = false;
    $firma_id_geloescht = isset($firmendaten['firma_id_geloescht']) ? $firmendaten['firma_id_geloescht'] : '';
    $firma_id_bleibt = isset($firmendaten['firma_id_bleibt']) ? $firmendaten['firma_id_bleibt'] : '';
    $standort = isset($firmendaten['standort']) ? $firmendaten['standort'] : array();
    $kontakt = isset($firmendaten['kontakt']) ? $firmendaten['kontakt'] : array();
    $personfunktionstandort = isset($firmendaten['personfunktionstandort']) ? $firmendaten['personfunktionstandort'] : array();
    $firmaorganisationseinheit = isset($firmendaten['firmaorganisationseinheit']) ? $firmendaten['firmaorganisationseinheit'] : array();
    //Überprüfung auf doppelte Organisationseinheiten
    $firmaorganisationseinheit_check = array();
    for ($i = 0; $i < count($firmaorganisationseinheit); $i++) {
        $firmaorganisationseinheit_obj->result[$i] = new firma();
        if ($firmaorganisationseinheit_obj->result[$i]->load_firmaorganisationseinheit($firmaorganisationseinheit[$i])) {
            if (isset($firmaorganisationseinheit_obj->result[$i])) {
                if (array_key_exists($firmaorganisationseinheit_obj->result[$i]->oe_kurzbz, $firmaorganisationseinheit_check)) {
                    exit("<b style='color:red'>Es wurden Zuordnungen von Organisationseiheiten mehrfach ausgewählt!<br>Bitte Auswahl korrigieren.</b>");
                }
                $firmaorganisationseinheit_check[$firmaorganisationseinheit_obj->result[$i]->oe_kurzbz] = $firmaorganisationseinheit[$i];
            }
        }
    }
    if (!$db->db_query('BEGIN;')) {
        return 'Fehler beim Starten der Transaktion';
    }
    // Ermitteln der Standorte zu den Firmen - geloescht und bleibt. Wichtiger Teil zum ermitteln welche Standorte entfernt werden sollen
    $standorte_vorhanden = array();
    $standort_obj = new standort();
    $standort_obj->result = array();
    if ($standort_obj->load_firma($firma_id_geloescht)) {
        foreach ($standort_obj->result as $key => $val) {
            $standorte_vorhanden[$val->standort_id] = $val->standort_id;
        }
    }
    $standort_obj = new standort();
    $standort_obj->result = array();
    if ($standort_obj->load_firma($firma_id_bleibt)) {
        foreach ($standort_obj->result as $key => $val) {
            $standorte_vorhanden[$val->standort_id] = $val->standort_id;
        }
    }
    $standort_check = array();
    if (is_array($standort) && count($standort)) {
        // Array mit Standort als Key fuer Kontrolle der Adressen ob der Standort noch gueltig ist oder neu zugeordnet wird
        $standort_check = array();
        for ($i = 0; $i < count($standort); $i++) {
            $standort_check[$standort[$i]] = $standort[$i];
            $standorte_vorhanden[$standort[$i]] = 'X';
            $standort_obj = new standort();
            $standort_obj->result = array();
            if ($standort_obj->load($standort[$i])) {
                // Standortwechsel zu anderer Firma
                if ($standort_obj->firma_id != $firma_id_bleibt) {
                    echo '<h5>Wechsel Standort ' . $standort[$i] . ' von Firma ID ' . $standort_obj->firma_id . ' auf => Firma ID ' . $firma_id_bleibt . '</h5>';
                    $standort_obj->new = false;
                    $standort_obj->firma_id = $firma_id_bleibt;
                    if (!$standort_obj->save()) {
                        $error = true;
                        echo 'Standort: ' . $standort_obj->errormsg . '<br>';
                    }
                }
            } else {
                $error = true;
                echo 'Standort: ' . $standort_obj->errormsg;
            }
        }
    }
    // Ende Standort
    if ($error) {
        $db->db_query('ROLLBACK;');
        return false;
    }
    // Pruefen ob Kontakte noch einen alten Standort zugewiessen ist
    $kontakt_check = array();
    $kontakt_ok = array();
    if (is_array($kontakt) && count($kontakt)) {
        foreach ($kontakt as $key => $val) {
            $standort_id = $key;
            // Kontakt wird dem ersten Standort von Firma bleibt zugeordnet
            if (!isset($standort_check[$standort_id]) && isset($standort[0])) {
                $standort_id = $standort[0];
            } elseif (!isset($standort_check[$standort_id])) {
                continue;
            }
            for ($ii = 0; $ii < count($val); $ii++) {
                $kontakt_check[$val[$ii]] = $val[$ii];
                $kontakt_ok[$standort_id][] = $val[$ii];
                if ($standort_id != $key) {
                    echo '<h5>Wechsel Kontakt ' . $val[$ii] . ' von Standort ID ' . $key . ' auf => Standort ID ' . $standort_id . '</h5>';
                } else {
                    continue;
                }
                // Keine Aenderung nechsten Datensatz pruefen
                $qry = "UPDATE public.tbl_kontakt set updateamum= now(),updatevon='" . addslashes($user) . "',standort_id='" . $standort_id . "' WHERE kontakt_id='" . $val[$ii] . "'";
                $db->errormsg = '';
                if (!$db->db_query($qry)) {
                    $error = true;
                    echo 'Fehler beim Aender der Kontaktdaten';
                }
            }
        }
        $kontakt = $kontakt_ok;
        $kontakt_ok = null;
    }
    if ($error) {
        $db->db_query('ROLLBACK;');
        return false;
    }
    // Pruefen ob personfunktionstandorte noch einen alten Standort zugewiessen ist
    $personfunktionstandort_check = array();
    $personfunktionstandort_ok = array();
    if (is_array($personfunktionstandort) && count($personfunktionstandort)) {
        foreach ($personfunktionstandort as $key => $val) {
            $standort_id = $key;
            if (!isset($standort_check[$standort_id]) && isset($standort[0])) {
                $standort_id = $standort[0];
            } elseif (!isset($standort_check[$standort_id])) {
                continue;
            }
            for ($ii = 0; $ii < count($val); $ii++) {
                $personfunktionstandort_check[$val[$ii]] = $val[$ii];
                $personfunktionstandort_ok[$standort_id][] = $val[$ii];
                if ($standort_id != $key) {
                    echo '<h5>Wechsel Personfunktionstandort ' . $val[$ii] . ' von Standort ID ' . $key . ' auf => Standort ID ' . $standort_id . '</h5>';
                } else {
                    continue;
                }
                // Keine Aenderung nechsten Datensatz pruefen
                $qry = "UPDATE public.tbl_personfunktionstandort SET standort_id='" . $standort_id . "' WHERE personfunktionstandort_id='" . $val[$ii] . "'";
                $db->errormsg = '';
                if (!$db->db_query($qry)) {
                    echo 'Fehler beim Aendern der Personenzuordnung';
                    $error = true;
                }
            }
        }
        $personfunktionstandort = $personfunktionstandort_ok;
        $personfunktionstandort_ok = null;
    }
    if ($error) {
        $db->db_query('ROLLBACK;');
        return false;
    }
    // Welche Kontakte werden entfernt
    if (is_array($standorte_vorhanden) && count($standorte_vorhanden)) {
        reset($standorte_vorhanden);
        // Array mit Standort als Key fuer Kontrolle der Adressen ob der Standort noch gueltig ist oder neu zugeordnet wird
        foreach ($standorte_vorhanden as $key => $val) {
            if (!is_numeric($val)) {
                // Kennzeichen ob bereits verarbeitet
                continue;
            }
            $qry = "DELETE FROM public.tbl_kontakt WHERE standort_id='" . $val . "'";
            $db->errormsg = '';
            if (!$db->db_query($qry)) {
                $error = true;
                echo 'Fehler beim Aendern der Kontakte';
            }
            $qry = "DELETE FROM public.tbl_personfunktionstandort WHERE standort_id='" . $val . "'";
            $db->errormsg = '';
            if (!$db->db_query($qry)) {
                $error = true;
                echo 'Fehler beim Aendern der Personenzuordnung';
            }
            $standort_obj = new standort();
            $standort_obj->result = array();
            if (!$standort_obj->load($val)) {
                $error = true;
                echo 'Fehler beim lesen Adresse zum Standort ' . $val . ' ' . $standort_obj->errormsg . '<br>';
            }
            if ($standort_obj->result) {
                foreach ($standort_obj->result as $keys => $vals) {
                    $qry = "DELETE FROM public.tbl_standort WHERE standort_id='" . $val . "'";
                    if (!$db->db_query($qry)) {
                        $error = true;
                        echo 'Fehler beim Aendern des Standorts';
                    }
                    if ($vals->adresse_id != '') {
                        $qry = "DELETE FROM public.tbl_adresse WHERE adresse_id='" . $vals->adresse_id . "'";
                        if (!$db->db_query($qry)) {
                            $error = true;
                            echo 'Fehler beim Aendern der Adresse';
                        }
                    }
                }
            }
        }
    }
    if ($error) {
        $db->db_query('ROLLBACK;');
        return false;
    }
    if (isset($firmaorganisationseinheit) && is_array($firmaorganisationseinheit) && count($firmaorganisationseinheit)) {
        $i = 0;
        foreach ($firmaorganisationseinheit as $key => $firma_organisationseinheit_id) {
            $firmaorganisationseinheit_obj->result[$i] = new firma();
            if (!$firmaorganisationseinheit_obj->result[$i]->load_firmaorganisationseinheit($firma_organisationseinheit_id)) {
                $error = true;
                echo 'Firma - Organisationseinheit: ' . $firmaorganisationseinheit_obj->errormsg . ' (' . $firma_organisationseinheit_id . ')<br>';
            } else {
                if ($firmaorganisationseinheit_obj) {
                    //var_dump($firmaorganisationseinheit_obj);
                    foreach ($firmaorganisationseinheit_obj->result as $keys => $vals) {
                        // Organisation gehoert bereits zu dieser Firma
                        if ($vals->firma_id == $firma_id_bleibt) {
                            continue;
                        }
                        // gibt es die Zuornung der Oe-Einheit zur Firma schon?
                        $qry_check = "SELECT * FROM public.tbl_firma_organisationseinheit WHERE firma_id='" . $firma_id_bleibt . "' AND oe_kurzbz='" . $vals->oe_kurzbz . "';";
                        if ($db->db_num_rows($db->db_query($qry_check)) == 0) {
                            //nein
                            $qry = 'UPDATE public.tbl_firma_organisationseinheit SET ' . 'firma_id=' . addslashes($firma_id_bleibt) . ', ' . 'updateamum= now(), ' . 'updatevon=\'' . addslashes($user) . '\' ' . " WHERE firma_organisationseinheit_id='" . addslashes($vals->firma_organisationseinheit_id) . "';";
                        } else {
                            //ja
                            $qry = 'UPDATE public.tbl_firma_organisationseinheit SET ' . 'bezeichnung=\'' . addslashes($vals->bezeichnung) . '\', ' . 'kundennummer=\'' . addslashes($vals->kundennummer) . '\', ' . 'updateamum= now(), ' . 'updatevon=\'' . addslashes($user) . '\' ' . " WHERE firma_id='" . addslashes($firma_id_bleibt) . "' AND oe_kurzbz='" . $vals->oe_kurzbz . "';";
                        }
                        $db->errormsg = '';
                        if ($result = $db->db_query($qry)) {
                            echo 'Organisation ' . $vals->firma_organisationseinheit_id . ' ' . $vals->name . ', ' . $vals->organisationseinheittyp_kurzbz . ' ' . $vals->bezeichnung . ' zu Firma ' . $firma_id_bleibt . ' zugeordnet ' . '<br>';
                        } else {
                            $error = true;
                            echo "<br>OE: " . $qry . "<br>";
                            echo 'Fehler bein Zuordnen von Organisation ' . $vals->firma_organisationseinheit_id . ' ' . $vals->name . ', ' . $vals->organisationseinheittyp_kurzbz . ' ' . $vals->bezeichnung . ' zu Firma ' . $firma_id_bleibt . '<br>';
                            echo $db->errormsg . "<br>";
                        }
                    }
                }
            }
            $i++;
        }
    }
    // Alle Organisationseinheiten die noch gebunden sind an "wird geloescht Firma" nach dem Zuordnen zu "bleibt Firma" loeschen
    $qry = "DELETE FROM public.tbl_firma_organisationseinheit WHERE firma_id='" . $firma_id_geloescht . "'";
    $db->errormsg = '';
    if (!$db->db_query($qry)) {
        echo 'Fehler beim Loeschen der Organisationseinheiten';
        $error = true;
    }
    //Alle Tags uebernehemen die der neuen Firma noch nicht zugeordnet sind
    $qry = "UPDATE public.tbl_firmatag SET firma_id='{$firma_id_bleibt}' WHERE firma_id='{$firma_id_geloescht}' AND tag NOT IN(SELECT tag FROM public.tbl_firmatag WHERE firma_id='{$firma_id_bleibt}');";
    if (!$db->db_query($qry)) {
        echo 'Fehler beim Uebernehmen der Tags';
        $error = true;
    }
    //Die Restlichen Tags loeschen
    $qry = "DELETE FROM public.tbl_firmatag WHERE firma_id='{$firma_id_geloescht}'";
    if (!$db->db_query($qry)) {
        echo 'Fehler beim Entfernen der Tags';
        $error = true;
    }
    //Projektarbeiten Zuordnungen umhaengen
    $qry = "UPDATE lehre.tbl_projektarbeit SET firma_id='{$firma_id_bleibt}' WHERE firma_id='{$firma_id_geloescht}'";
    if (!$db->db_query($qry)) {
        echo 'Fehler beim Aendern der Projektarbeitszuordnung';
        $error = true;
    }
    //Projektarbeiten Zuordnungen umhaengen
    $qry = "UPDATE public.tbl_adresse SET firma_id='{$firma_id_bleibt}' WHERE firma_id='{$firma_id_geloescht}'";
    if (!$db->db_query($qry)) {
        echo 'Fehler beim Aendern der Adresszuordnung';
        $error = true;
    }
    //Preinteressenten umhaengen
    $qry = "UPDATE public.tbl_preinteressent SET firma_id='{$firma_id_bleibt}' WHERE firma_id='{$firma_id_geloescht}'";
    if (!$db->db_query($qry)) {
        echo 'Fehler beim Aendern der Preinteressentzuordnung';
        $error = true;
    }
    //Projektarbeiten Zuordnungen umhaengen
    $qry = "UPDATE public.tbl_firma SET finanzamt='{$firma_id_bleibt}' WHERE finanzamt='{$firma_id_geloescht}'";
    if (!$db->db_query($qry)) {
        echo 'Fehler beim Aendern der Finanzamtzuordnung';
        $error = true;
    }
    //WaWi Bestellungen umhaengen
    $qry = "UPDATE wawi.tbl_bestellung SET firma_id='{$firma_id_bleibt}' WHERE firma_id='{$firma_id_geloescht}'";
    if (!$db->db_query($qry)) {
        echo 'Fehler beim Aendern der Wawi Bestellung';
        $error = true;
    }
    // Firma loeschen
    $firma = new firma();
    if (!$firma->delete($firma_id_geloescht)) {
        $error = true;
        echo 'Firma loeschen:' . $firma->errormsg;
    }
    if ($error) {
        $db->db_query('ROLLBACK;');
        return false;
    } else {
        $db->db_query('COMMIT;');
        return true;
    }
}
Exemplo n.º 2
0
/**
 * Standortliste
 */
function getStandortliste($firma_id, $adresstyp_arr, $user)
{
    // Init
    $htmlstr = '';
    // Plausib
    if (empty($firma_id) || !is_numeric($firma_id)) {
        return 'Firma fehlt.';
    }
    // Datenlesen
    $standort_obj = new standort();
    $standort_obj->result = array();
    if (!$standort_obj->load_firma($firma_id)) {
        return $standort_obj->errormsg;
    }
    // Es gibt noch keinen Standort zur Firma - Neuanlage
    if ($firma_id && !$standort_obj->result) {
        $firma_obj = new firma();
        $firma_obj->load($firma_id);
        $standort_obj->new = true;
        $standort_obj->standort_id = null;
        $standort_obj->adresse_id = null;
        $standort_obj->kurzbz = mb_substr($firma_obj->name, 0, 16);
        $standort_obj->bezeichnung = '';
        $standort_obj->updatevon = $user;
        $standort_obj->insertvon = $user;
        $standort_obj->ext_id = null;
        $standort_obj->firma_id = $firma_id;
        if (!$standort_obj->save()) {
            return 'Fehler Standort ' . $standort_obj->errormsg;
        }
        $standort_obj = new standort();
        $standort_obj->load_firma($firma_id);
    }
    $htmlstr .= '<table class="liste">
				<tr>
					<th>Kurzbz</th>
					<th>Nation</th>
					<th>Gemeinde</th>
					<th>Plz</th>
					<th>Ort</th>
					<th>Strasse</th>
					<th>Typ</th>
					<th><font size="0">Zustelladr.</font></th>
					
					<td align="center" valign="top" colspan="2"><a target="detail_workfirma" href="firma_detailwork.php?showmenue=1&firma_id=' . $firma_id . '"><input type="Button" value="Neuanlage" name="work"></a></td>
			</tr>';
    $i = 1;
    foreach ($standort_obj->result as $row) {
        if ($firma_id && $row->standort_id && !$row->adresse_id) {
            $adresse_obj = new adresse();
            $adresse_obj->new = true;
            $adresse_obj->insertamum = date('Y-m-d H:i:s');
            $adresse_obj->insertvon = $user;
            $adresse_obj->person_id = null;
            $adresse_obj->strasse = '';
            $adresse_obj->plz = '';
            $adresse_obj->ort = '';
            $adresse_obj->gemeinde = '';
            $adresse_obj->nation = '';
            $adresse_obj->typ = '';
            $adresse_obj->heimatadresse = false;
            $adresse_obj->zustelladresse = false;
            $adresse_obj->firma_id = null;
            $adresse_obj->updateamum = date('Y-m-d H:i:s');
            $adresse_obj->updatvon = $user;
            if (!$adresse_obj->save()) {
                return 'Fehler Adresse ' . $adresse_obj->errormsg;
            }
            $standort_obj = new standort($row->standort_id);
            $standort_obj->updatevon = $user;
            $standort_obj->adresse_id = $adresse_obj->adresse_id;
            if (!$standort_obj->save()) {
                return 'Fehler Standort - Adresse ' . $standort_obj->errormsg;
            }
            $row->adresse_id = $adresse_obj->adresse_id;
        }
        $htmlstr .= "<tr id='standort" . $i . "' class='liste" . $i % 2 . "'>\n";
        $i++;
        $adresse_id = $row->adresse_id;
        $adresse_obj = new adresse();
        if ($adresse_obj->load($adresse_id)) {
            $htmlstr .= '<td><a target="detail_workfirma" href="firma_detailwork.php?showmenue=1&firma_id=' . $firma_id . '&standort_id=' . $row->standort_id . '&adresse_id=' . $adresse_obj->adresse_id . '">' . $row->kurzbz . '</a></td>';
            $htmlstr .= "<td title='Nation " . $adresse_obj->nation . "'>" . (isset($nation_arr[$adresse_obj->nation]) ? $nation_arr[$adresse_obj->nation] : $adresse_obj->nation) . "</td>";
            $htmlstr .= '<td>' . $adresse_obj->gemeinde . '</td>';
            $htmlstr .= '<td>' . $adresse_obj->plz . '</td>';
            $htmlstr .= '<td>' . $adresse_obj->ort . '</td>';
            $htmlstr .= '<td>' . $adresse_obj->strasse . '</td>';
            $htmlstr .= '<td>' . $adresstyp_arr[$adresse_obj->typ] . '</td>';
            $htmlstr .= '<td align="center">' . ($adresse_obj->zustelladresse ? 'Ja' : 'Nein') . '</td>';
            $htmlstr .= '<td align="center"><a target="detail_workfirma" href="firma_detailwork.php?showmenue=1&firma_id=' . $firma_id . '&standort_id=' . $row->standort_id . '&adresse_id=' . $adresse_obj->adresse_id . '"><img src="../../skin/images/application_form_edit.png" alt="editieren" title="edit"/></a></td>';
            $htmlstr .= "<td align='center'><a href='" . $_SERVER['PHP_SELF'] . "?deleteadresse=true&standort_id={$row->standort_id}&adresse_id={$adresse_obj->adresse_id}&firma_id={$firma_id}' onclick='return confdel()'><img src='../../skin/images/application_form_delete.png' alt='loeschen' title='loeschen'/></a></td>";
        } else {
            $htmlstr .= '<td><a target="detail_workfirma" href="firma_detailwork.php?showmenue=1&firma_id=' . $firma_id . '&standort_id=' . $row->standort_id . '&adresse_id=' . $row->adresse_id . '">' . $row->kurzbz . '</a></td>';
            $htmlstr .= '<td colspan="10">' . $adresse_obj->errormsg . '</td>';
        }
        $htmlstr .= '</tr>';
    }
    $htmlstr .= '</table>';
    return $htmlstr;
}
Exemplo n.º 3
0
 $standort = new standort();
 if ($standort_id != '') {
     $standort->load($standort_id);
     $standort->new = false;
     $standort->insertamum = date('Y-m-d H:i:s');
     $standort->insertvon = $user;
     $standort->new = false;
 } else {
     $standort->insertamum = date('Y-m-d H:i:s');
     $standort->insertvon = $user;
     $standort->new = true;
 }
 $standort->firma_id = $firma->firma_id;
 $standort->adresse_id = $adresse->adresse_id;
 $standort->kurzbz = mb_substr($firma->name, 0, 16);
 if ($standort->save()) {
     //Kontaktdaten anlegen/updaten
     if ($fax != '') {
         $kontakt = new kontakt();
         if ($fax_id != '') {
             $kontakt->load($fax_id);
             $kontakt->new = false;
         } else {
             $kontakt->new = true;
         }
         $kontakt->kontakttyp = 'fax';
         $kontakt->standort_id = $standort->standort_id;
         $kontakt->kontakt = $fax;
         if (!$kontakt->save()) {
             $errormsg .= $kontakt->errormsg;
             $error = true;