diff --git a/include/wawi_rechnung.class.php b/include/wawi_rechnung.class.php index a981139b7..0e820c61a 100644 --- a/include/wawi_rechnung.class.php +++ b/include/wawi_rechnung.class.php @@ -376,7 +376,7 @@ class wawi_rechnung extends basis_db return false; } - $qry = "SELECT * FROM wawi.tbl_rechnungsbetrag WHERe rechnung_id='".addslashes($rechnung_id)."'"; + $qry = "SELECT * FROM wawi.tbl_rechnungsbetrag WHERE rechnung_id='".addslashes($rechnung_id)."' ORDER BY rechnungsbetrag_id"; if($result = $this->db_query($qry)) { @@ -401,4 +401,87 @@ class wawi_rechnung extends basis_db } } + /** + * + * Speichert einen Rechnungsbetrag + */ + public function save_betrag() + { + if($this->new) + { + $qry = 'BEGIN;INSERT INTO wawi.tbl_rechnungsbetrag(rechnung_id, mwst, betrag, bezeichnung) VALUES('. + $this->addslashes($this->rechnung_id).','. + $this->addslashes($this->mwst).','. + $this->addslashes($this->betrag).','. + $this->addslashes($this->bezeichnung).');'; + } + else + { + $qry = 'UPDATE wawi.tbl_rechnungsbetrag SET'. + ' rechnung_id='.$this->addslashes($this->rechnung_id).','. + ' mwst='.$this->addslashes($this->mwst).','. + ' betrag='.$this->addslashes($this->betrag).','. + ' bezeichnung='.$this->addslashes($this->bezeichnung). + " WHERE rechnungsbetrag_id='".addslashes($this->rechnungsbetrag_id)."'"; + } + + if($this->db_query($qry)) + { + if($this->new) + { + $qry = "SELECT currval('wawi.seq_rechnungsbetrag_rechnungsbetrag_id') as id;"; + + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object($result)) + { + $this->rechnugnsbetrag_id=$row->id;+ + $this->db_query('COMMIT;'); + } + else + { + $this->db_query('ROLLBACK'); + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + return false; + } + } + } + else + { + $this->errormsg = 'Fehler beim Speichern der Daten'; + return false; + } + } + + /** + * Loescht einen Eintrag aus der Tabelle rechnungsbetrag + * + * @param $rechnungsbetrag_id + */ + public function delete_betrag($rechnungsbetrag_id) + { + if(!is_numeric($rechnungsbetrag_id) || $rechnungsbetrag_id=='') + { + $this->errormsg = 'ungueltige ID'; + return false; + } + + $qry = "DELETE FROM wawi.tbl_rechnungsbetrag where rechnungsbetrag_id='".addslashes($rechnungsbetrag_id)."'"; + if($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Löschen der Daten'; + return false; + } + } + } \ No newline at end of file diff --git a/system/checksystem.php b/system/checksystem.php index 171a84e22..a9d0a0604 100644 --- a/system/checksystem.php +++ b/system/checksystem.php @@ -1344,7 +1344,8 @@ if(!@$db->db_query('SELECT * FROM wawi.tbl_konto LIMIT 1')) rechnung_id bigint, mwst numeric(4,2), betrag numeric(12,2), - bezeichnung text + bezeichnung text, + ext_id integer ); CREATE SEQUENCE wawi.seq_rechnungsbetrag_rechnungsbetrag_id diff --git a/system/sync/sync_rechnung.php b/system/sync/sync_rechnung.php index 9837f7479..f33e285e2 100644 --- a/system/sync/sync_rechnung.php +++ b/system/sync/sync_rechnung.php @@ -142,16 +142,17 @@ if($result=pg_query($conn_wawi, $qry)) if($row->$mwst!='') { $qry = "SELECT * FROM wawi.tbl_rechnungsbetrag - WHERE rechnung_id=".$db->addslashes($row->r_id)." AND mwst=".$db->addslashes($row->$mwst); + WHERE rechnung_id=".$db->addslashes($row->r_id)." AND ext_id='$i'"; if($result_rbetrag = $db->db_query($qry)) { if($row_rbetrag = $db->db_fetch_object($result_rbetrag)) { //Update - if($row_rbetrag->betrag!=$row->$betrag) + if($row_rbetrag->betrag!=round($row->$betrag,2)) { - $qry = "UPDATE wawi.tbl_rechnungsbetrag - SET betrag=".$db->addslashes($row->$betrag)." + $qry = "UPDATE wawi.tbl_rechnungsbetrag SET + betrag=".$db->addslashes($row->$betrag)." + mwst=".$db->addslashes($row->$betrag)." WHERE rechnungsbetrag_id=".$db->addslashes($row_rbetrag->rechnungsbetrag_id); if($db->db_query($qry)) { @@ -163,14 +164,14 @@ if($result=pg_query($conn_wawi, $qry)) else { //Insert - $qry = "INSERT INTO wawi.tbl_rechnungsbetrag(rechnung_id, mwst, betrag) VALUES(". + $qry = "INSERT INTO wawi.tbl_rechnungsbetrag(rechnung_id, mwst, betrag, ext_id) VALUES(". $db->addslashes($row->r_id).",". $db->addslashes($row->$mwst).",". - $db->addslashes($row->$betrag).");"; + $db->addslashes($row->$betrag).",'".$i."');"; if($db->db_query($qry)) { $anzahl_insert++; - $update_log.="\nRechnungsbetrag hinzugefügt Mwst $row->$mwst Betrag $row->$betrag"; + $update_log.="\nRechnungsbetrag hinzugefügt Mwst ".$row->$mwst." Betrag ".$row->$betrag; } } } @@ -225,11 +226,11 @@ if($result=pg_query($conn_wawi, $qry)) .$db->addslashes($datum_obj->formatDatum($row->lupdate))."," .$db->addslashes($row->updatevon).");"; if($row->mwst1!='') - $qry.="INSERT INTO wawi.tbl_rechnungsbetrag(rechnung_id, mwst, betrag) VALUES(".$db->addslashes($row->r_id).",".$db->addslashes($row->mwst1).",".$db->addslashes($row->betrag1).");"; + $qry.="INSERT INTO wawi.tbl_rechnungsbetrag(rechnung_id, mwst, betrag, ext_id) VALUES(".$db->addslashes($row->r_id).",".$db->addslashes($row->mwst1).",".$db->addslashes($row->betrag1).",1);"; if($row->mwst2!='') - $qry.="INSERT INTO wawi.tbl_rechnungsbetrag(rechnung_id, mwst, betrag) VALUES(".$db->addslashes($row->r_id).",".$db->addslashes($row->mwst2).",".$db->addslashes($row->betrag2).");"; + $qry.="INSERT INTO wawi.tbl_rechnungsbetrag(rechnung_id, mwst, betrag, ext_id) VALUES(".$db->addslashes($row->r_id).",".$db->addslashes($row->mwst2).",".$db->addslashes($row->betrag2).",2);"; if($row->mwst3!='') - $qry.="INSERT INTO wawi.tbl_rechnungsbetrag(rechnung_id, mwst, betrag) VALUES(".$db->addslashes($row->r_id).",".$db->addslashes($row->mwst3).",".$db->addslashes($row->betrag3).");"; + $qry.="INSERT INTO wawi.tbl_rechnungsbetrag(rechnung_id, mwst, betrag, ext_id) VALUES(".$db->addslashes($row->r_id).",".$db->addslashes($row->mwst3).",".$db->addslashes($row->betrag3).",3);"; if($db->db_query($qry)) { diff --git a/wawi/rechnung.php b/wawi/rechnung.php index f910d214a..6e1fc96c7 100644 --- a/wawi/rechnung.php +++ b/wawi/rechnung.php @@ -79,6 +79,11 @@ if(isset($_POST['getBetragRow']) && isset($_POST['id'])) }); } + function conf_del() + { + return confirm('Wollen Sie diese Rechnung wirklich löschen?'); + } + function formatItem(row) { return row[0] + "
" + row[1]; @@ -139,6 +144,9 @@ $kst->loadArray($rechte->getKostenstelle($berechtigung_kurzbz)); if($aktion == 'suche') { + if(!$rechte->isBerechtigt('wawi/rechnung',null,'s')) + die('Sie haben keine Berechtigung fuer diese Seite'); + if(!isset($_POST['submit'])) { // Suchmaske anzeigen @@ -302,7 +310,9 @@ if($aktion == 'suche') { //Zeilen der Tabelle ausgeben echo "\n"; - echo " rechnung_id\" title=\"Bearbeiten\"> rechnung_id\" onclick='return conf_del()' title='Löschen'> "; + echo " + rechnung_id\" title=\"Bearbeiten\"> + rechnung_id\" onclick='return conf_del()' title='Löschen'> "; echo ''.$row->rechnungsnr."\n"; echo ''.$row->bestellung_id."\n"; echo ''.$row->rechnungstyp_kurzbz."\n"; @@ -323,18 +333,124 @@ if($aktion == 'suche') } elseif($aktion == 'new') { + if(!$rechte->isBerechtigt('wawi/rechnung',null,'sui')) + die('Sie haben keine Berechtigung zum Anlegen von Rechnungen'); + echo '

Noch nicht implementiert

'; } elseif($aktion == 'save') { - echo '

Noch nicht implementiert

'; + if(!$rechte->isBerechtigt('wawi/rechnung',null,'su')) + die('Sie haben keine Berechtigung zum Speichern der Rechnungen'); + + if(isset($_POST['rechnung_id']) + && isset($_POST['rechnungsnummer']) + && isset($_POST['buchungstext']) + && isset($_POST['rechnungsdatum']) + && isset($_POST['bestellung_id']) + && isset($_POST['buchungsdatum'])) + { + $rechnung_id = $_POST['rechnung_id']; + $rechnungsnummer = $_POST['rechnungsnummer']; + $buchungstext = $_POST['buchungstext']; + $rechnungsdatum = $_POST['rechnungsdatum']; + $bestellung_id = $_POST['bestellung_id']; + $buchungsdatum = $_POST['buchungsdatum']; + + foreach($_POST as $key=>$value) + { + if(mb_strstr($key, 'rechnungsbetrag_id_')) + { + $id = mb_substr($key, mb_strlen('rechnungsbetrag_id_')); + $betraege[$id]['id']=$_POST['rechnungsbetrag_id_'.$id]; + $betraege[$id]['bezeichnung']=$_POST['bezeichnung_'.$id]; + $betraege[$id]['betrag']=$_POST['betrag_'.$id]; + $betraege[$id]['mwst']=$_POST['mwst_'.$id]; + } + } + + $rechnung = new wawi_rechnung(); + if(!$rechnung->load($rechnung_id)) + die('Rechnung wurde nicht gefunden'); + + $rechnung->rechnungsnr = $rechnungsnummer; + $rechnung->buchungstext = $buchungstext; + $rechnung->rechnungsdatum = $date->formatDatum($rechnungsdatum); + $rechnung->buchungsdatum = $date->formatDatum($buchungsdatum); + $rechnung->bestellung_id = $bestellung_id; + $rechnung->updateamum = date('Y-m-d H:i:s'); + $rechnung->updatevon = $user; + + if($rechnung->save()) + { + foreach($betraege as $row) + { + if($row['id']=='' && $row['betrag']=='' && $row['mwst']=='' && $row['bezeichnung']=='') + continue; + + $rb = new wawi_rechnung(); + + //Leere Zeilen werden geloescht + if($row['betrag']=='' && $row['mwst']=='' && $row['bezeichnung']=='') + { + $rb->delete_betrag($row['id']); + } + else + { + //Speichern der Zeile + $rb->rechnungsbetrag_id=$row['id']; + $rb->rechnung_id = $rechnung_id; + $rb->betrag = $row['betrag']; + $rb->bezeichnung = $row['bezeichnung']; + $rb->mwst = $row['mwst']; + if($row['id']=='') + $rb->new=true; + else + $rb->new=false; + + $rb->save_betrag(); + } + } + + echo 'Daten wurden gespeichert!'; + $_GET['id']=$rechnung_id; + $aktion = 'update'; + } + else + { + echo 'Fehler: '.$rechnung->errormsg; + } + } + else + die('Falsche Parameter uebergeben'); } elseif($aktion=='delete') { - echo '

Noch nicht implementiert

'; + if(!$rechte->isBerechtigt('wawi/rechnung',null,'suid')) + die('Sie haben keine Berechtigung zum Loeschen von Rechnungen'); + + if(isset($_GET['id'])) + { + echo '

Rechnung Löschen

'; + + $rechnung = new wawi_rechnung(); + if($rechnung->delete($_GET['id'])) + { + echo 'Rechnung wurde erfolgreich geloescht'; + } + else + { + echo 'Fehler: '.$rechnung->errormsg.''; + } + echo '

Zurück'; + } } -elseif($aktion=='update') + +if($aktion=='update') { + if(!$rechte->isBerechtigt('wawi/rechnung',null,'su')) + die('Sie haben keine Berechtigung zum Bearbeiten der Rechnungen'); + echo '

Rechnung Bearbeiten

'; if(isset($_GET['id'])) { @@ -378,11 +494,13 @@ elseif($aktion=='update') '; echo ' +
+ - + @@ -397,6 +515,11 @@ elseif($aktion=='update') + + + + +
RechnungsnummerRechnugnsdatum   Rechnungsdatum    Bestellung
 
Buchungstext