/** * 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; } }
/** * 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; }
$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;