diff --git a/include/benutzerberechtigung.class.php b/include/benutzerberechtigung.class.php index 59ada363c..ca5228abf 100644 --- a/include/benutzerberechtigung.class.php +++ b/include/benutzerberechtigung.class.php @@ -953,5 +953,48 @@ class benutzerberechtigung extends basis_db return false; } } + + public function getKostenstelleUser($kostenstelle_id) + { + $qry = "SELECT + distinct uid, a.art, + CASE WHEN a.berechtigung_kurzbz is null + THEN tbl_rolleberechtigung.berechtigung_kurzbz + ELSE a.berechtigung_kurzbz END as berechtigung_kurzbz + FROM + ( + SELECT * FROM system.tbl_benutzerrolle WHERE kostenstelle_id='".addslashes($kostenstelle_id)."' + UNION + SELECT * FROM system.tbl_benutzerrolle WHERE + oe_kurzbz = (SELECT oe_kurzbz FROM wawi.tbl_kostenstelle WHERE kostenstelle_id='".addslashes($kostenstelle_id)."') + OR oe_kurzbz IN( + WITH RECURSIVE oes(oe_parent_kurzbz) as + ( + SELECT oe_parent_kurzbz FROM public.tbl_organisationseinheit + WHERE oe_kurzbz=(SELECT oe_kurzbz FROM wawi.tbl_kostenstelle WHERE kostenstelle_id='".addslashes($kostenstelle_id)."') + UNION ALL + SELECT o.oe_parent_kurzbz FROM public.tbl_organisationseinheit o, oes + WHERE o.oe_kurzbz=oes.oe_parent_kurzbz + ) + SELECT oe_parent_kurzbz + FROM oes) + ) as a + LEFT JOIN system.tbl_rolleberechtigung USING(rolle_kurzbz) + WHERE (start is null OR start<=now()) AND (ende is null OR ende>=now()) AND negativ=false"; + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $obj = new benutzerberechtigung(); + + $obj->berechtigung_kurzbz = $row->berechtigung_kurzbz; + $obj->uid = $row->uid; + $obj->art = $row->art; + + $this->berechtigungen[] = $obj; + } + } + } } ?> \ No newline at end of file diff --git a/include/firma.class.php b/include/firma.class.php index 3dcfde6bb..bb532736e 100644 --- a/include/firma.class.php +++ b/include/firma.class.php @@ -360,15 +360,36 @@ class firma extends basis_db */ public function getAll($firma_search = null) { - $qry = "SElECT * FROM public.tbl_firma"; + if (!empty($firma_search)) { - $qry.= " WHERE "; - $matchcode=mb_strtoupper(addslashes(str_replace(array('<','>',' ',';','*','_','-',',',"'",'"'),"%",$firma_search))); - $qry.=" UPPER(trim(public.tbl_firma.name)) like '%".$matchcode."%'"; + $matchcode=mb_strtoupper(addslashes(str_replace(array('<','>',' ',';','*','_','-',',',"'",'"'),"%",$firma_search))); + //Zuerst werden die Ergebnisse geliefert, die mit $filter_search beginnen + //danach jene Ergebnisse bei denen $filter_search innerhalb des Namens vorkommt + $qry = " + + SELECT + firma_id, name, anmerkung, firmentyp_kurzbz, updateamum, updatevon, insertamum, insertvon, + ext_id, schule, steuernummer, gesperrt, aktiv, finanzamt, '1' as sort + FROM public.tbl_firma + WHERE + UPPER(trim(public.tbl_firma.name)) like '".$matchcode."%' + UNION + SELECT + firma_id, name, anmerkung, firmentyp_kurzbz, updateamum, updatevon, insertamum, insertvon, + ext_id, schule, steuernummer, gesperrt, aktiv, finanzamt, '2' as sort + FROM public.tbl_firma + WHERE + UPPER(trim(public.tbl_firma.name)) like '%".$matchcode."%' + AND UPPER(trim(public.tbl_firma.name)) NOT like '".$matchcode."%' + ORDER BY sort, name, firma_id"; + } + else + { + $qry = "SELECT * FROM public.tbl_firma ORDER BY name"; } - $qry.= " ORDER BY NAME"; + if($this->db_query($qry)) { while($row = $this->db_fetch_object()) diff --git a/include/tw/wawi_menu_main.inc.php b/include/tw/wawi_menu_main.inc.php index dbd0a9708..a6821358d 100644 --- a/include/tw/wawi_menu_main.inc.php +++ b/include/tw/wawi_menu_main.inc.php @@ -67,7 +67,11 @@ $menu=array 'name'=>'Firma', 'link'=>'firma.php', 'target'=>'content','permissions'=>array('wawi/firma'), 'FirmaNeu'=>array('name'=>'Neu', 'link'=>'firma.php?method=new', 'target'=>'content'), 'FirmaSuchen'=>array('name'=>'Suchen', 'link'=>'firma.php', 'target'=>'content'), - ) + ), + 'Berechtigungen'=>array + ( + 'name'=>'Berechtigungen', 'link'=>'berechtigung.php', 'target'=>'content', + ), ), 'Berichte'=> array ( diff --git a/wawi/firma.php b/wawi/firma.php index 9200cb2a9..785e1b4ff 100644 --- a/wawi/firma.php +++ b/wawi/firma.php @@ -94,6 +94,10 @@ if(isset($_POST['save'])) $fax_id = $_POST['fax_id']; $telefon_id = $_POST['telefon_id']; $email_id = $_POST['email_id']; + $kundennummer_erhalter_id = $_POST['kundennummer_erhalter_id']; + $kundennummer_erhalter = $_POST['kundennummer_erhalter']; + $kundennummer_gmbh_id = $_POST['kundennummer_gmbh_id']; + $kundennummer_gmbh = $_POST['kundennummer_gmbh']; $errormsg=''; @@ -141,6 +145,74 @@ if(isset($_POST['save'])) if($firma->save()) { + //Kundennummer Erhalter + if($kundennummer_erhalter_id!='' || $kundennummer_erhalter!='') + { + $firma_oe = new firma(); + if($kundennummer_erhalter_id!='') + { + if(!$firma_oe->load_firmaorganisationseinheit($kundennummer_erhalter_id)) + { + $error = true; + $errormsg.='Fehler beim Laden der Organisationseinheitenzuordnung'; + } + $firma_oe->new = false; + } + else + { + $firma_oe->firma_id = $firma->firma_id; + $firma_oe->new = true; + $firma_oe->oe_kurzbz='etw'; + $firma_oe->insertamum = date('Y-m-d H:i:s'); + $firma_oe->insertvon = $user; + } + + $firma_oe->updateamum = date('Y-m-d H:i:s'); + $firma_oe->updatevon = $user; + $firma_oe->kundennummer=$kundennummer_erhalter; + + + if(!$firma_oe->saveorganisationseinheit()) + { + $error = true; + $errormsg.='Fehler beim Speichern der Kundennummer:'.$firma_oe->errormsg; + } + } + + //Kundennummer GmbH + if($kundennummer_gmbh_id!='' || $kundennummer_gmbh!='') + { + $firma_oe = new firma(); + if($kundennummer_gmbh_id!='') + { + if(!$firma_oe->load_firmaorganisationseinheit($kundennummer_gmbh_id)) + { + $error = true; + $errormsg.='Fehler beim Laden der Organisationseinheitenzuordnung'; + } + $firma_oe->new = false; + } + else + { + $firma_oe->firma_id = $firma->firma_id; + $firma_oe->new = true; + $firma_oe->oe_kurzbz='gmbh'; + $firma_oe->insertamum = date('Y-m-d H:i:s'); + $firma_oe->insertvon = $user; + } + + $firma_oe->updateamum = date('Y-m-d H:i:s'); + $firma_oe->updatevon = $user; + $firma_oe->kundennummer=$kundennummer_gmbh; + + + if(!$firma_oe->saveorganisationseinheit()) + { + $error = true; + $errormsg.='Fehler beim Speichern der Kundennummer:'.$firma_oe->errormsg; + } + } + //Adressdatensatz anlegen/updaten $adresse = new adresse(); @@ -314,6 +386,10 @@ if($method=='new' || $method=='update') $email_id=''; $telefon_id=''; $anmerkung=''; + $kundennummer_erhalter=''; + $kundennummer_erhalter_id=''; + $kundennummer_gmbh=''; + $kundennummer_gmbh_id=''; if($method=='new') echo '
| Name: | -+ | |
| Straße: | -+ | |
| Plz / Ort: | @@ -427,11 +520,19 @@ if($method=='new' || $method=='update')||
| E-Mail: | -+ | + |
| Kundennummer Erhalter: | ++ | |
| Kundennummer GmbH: | +||
| Anmerkungen: | -+ | |