diff --git a/admin/sync/fas/sync_fas_vilesci_konto.php b/admin/sync/fas/sync_fas_vilesci_konto.php new file mode 100644 index 000000000..12a6d41bf --- /dev/null +++ b/admin/sync/fas/sync_fas_vilesci_konto.php @@ -0,0 +1,271 @@ +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ + +//* +//* Synchronisiert Kontodatensaetze von FAS DB in PORTAL DB +//* +//* + +require_once('../../../vilesci/config.inc.php'); +require_once('../../../include/konto.class.php'); +require_once('../../../include/functions.inc.php'); + +$conn=pg_connect(CONN_STRING) or die("Connection zur Portal Datenbank fehlgeschlagen"); +$conn_fas=pg_connect(CONN_STRING_FAS) or die("Connection zur FAS Datenbank fehlgeschlagen"); + +$adress='ruhan@technikum-wien.at'; +//$adress='fas_sync@technikum-wien.at'; + +$error_log=''; +$text = ''; +$anzahl_quelle=0; +$anzahl_eingefuegt=0; +$anzahl_vorhanden=0; +$anzahl_fehler=0; +$ausgabe=''; +$ausgabe_adresse=''; +$update=false; + + +/************************* + * FAS-PORTAL - Synchronisation + */ +?> + + + +Synchro - FAS -> Vilesci - Konto + + + +ext_id]=$row->studiensemester_kurzbz; + } +} +$qry="SELECT studiengang_kz, ext_id FROM public.tbl_studiengang WHERE ext_id IS NOT NULL;"; +if($result = pg_query($conn, $qry)) +{ + while($row=pg_fetch_object($result)) + { + $studiengang[$row->ext_id]=$row->studiengang_kz; + } +} + + +$qry="SELECT *, student_zahlung.creationuser as cuser, student_zahlung.creationdate as cdate + FROM student_zahlung, zahlung WHERE student_zahlung.zahlung_fk=zahlung.zahlung_pk ;"; +if($result = pg_query($conn_fas, $qry)) +{ + echo "Konto Sync
--------------
"; + echo "Beginn: ".date("d.m.Y H:i:s")." von ".$_SERVER['HTTP_HOST']."

"; + $anzahl_quelle=pg_num_rows($result); + while($row = pg_fetch_object($result)) + { + $error=false; + $konto =new konto($conn); + //$konto->person_id =''; + //$konto->studiengang_kz =''; + $konto->studiensemester_kurzbz =getStudiensemesterFromDatum($conn, $row->bezahltam, true); + //$konto->buchungsnr_verweis =''; + $betrag =$row->betrag; + $konto->buchungsdatum =$row->bezahltam; + $konto->buchungstext =$row->name; + $konto->buchungstyp_kurzbz ='Sonstiges'; + $konto->mahnspanne ='30'; + $konto->updateamum =date("Y-m-d H:i:s"); + $konto->updatevon ="SYNC"; + $konto->insertamum =$row->cdate; + $konto->insertvon =$row->cuser; + $konto->ext_id =''; + + $konto->new=false; + + //ext_id "basteln": soll aus student_fk und dreistelliger zahlung_fk bestehen + if(strlen(trim($row->zahlung_fk))==1) + { + $konto->ext_id=trim($row->student_fk)."00".trim($row->zahlung_fk); + } + elseif(strlen(trim($row->zahlung_fk))==2) + { + $konto->ext_id=trim($row->student_fk)."0".trim($row->zahlung_fk); + } + elseif(strlen(trim($row->zahlung_fk))==3) + { + $konto->ext_id=trim($row->student_fk).trim($row->zahlung_fk); + } + $qry="SELECT * FROM public.tbl_konto WHERE ext_id='".$konto->ext_id."';"; + if($result3 = pg_query($conn, $qry)) + { + if(pg_num_rows($result3)>0) //kontobewegung bereits eingetragen + { + //eintrag bereits vorhanden + $konto->new=false; + //$ausgabe.="Eintrag bereits vorhanden! ('".$row->name."' - '".$row->student_fk."')\n"; + //echo "Eintrag bereits vorhanden! ('".$row->name."' - '".$row->student_fk."')
"; + $anzahl_vorhanden++; + continue; + } + } + + + //insertvon ermitteln + $qrycu="SELECT name FROM benutzer WHERE benutzer_pk='".$row->creationuser."';"; + if($resultcu = pg_query($conn_fas, $qrycu)) + { + if($rowcu=pg_fetch_object($resultcu)) + { + $konto->insertvon=$rowcu->name; + } + } + //person_id herausfinden + $qry="SELECT person_fk, studiengang_fk FROM student WHERE student_pk='".$row->student_fk."';"; + if($result2 = pg_query($conn_fas, $qry)) + { + if(pg_num_rows($result2)>0) //eintrag gefunden + { + if($row2=pg_fetch_object($result2)) + { + $konto->studiengang_kz=$studiengang[$row2->studiengang_fk]; + } + } + else + { + //person nicht gefunden + $anzahl_fehler++; + $error_log.="Person mit student_fk '".$row->student_fk."' nicht in Tabelle 'student' gefunden.\n"; + echo "Person mit student_fk '".$row->student_fk."' nicht in Tabelle 'student' gefunden.
"; + continue; + } + } + + $qry1="SELECT person_portal FROM sync.tbl_syncperson WHERE person_fas=".$row2->person_fk.";"; + if($result1 = pg_query($conn, $qry1)) + { + if(pg_num_rows($result1)>0) //person gefunden + { + if($row1=pg_fetch_object($result1)) + { + $konto->person_id=$row1->person_portal; + $konto->new=true; //vorhandene Einträge wurden bereits übersprungen + } + else + { + $ausgabe.="Person mit person_pk '".$row2->person_fk."' in tbl_syncperson nicht gefunden.\n"; + echo "Person mit person_pk '".$row2->person_fk."' in tbl_syncperson nicht gefunden.
"; + $anzahl_fehler++; + $error=true; + continue; + } + } + else + { + $ausgabe.="Person mit person_pk '".$row2->person_fk."' in tbl_syncperson nicht gefunden!\n"; + echo "Person mit person_pk '".$row2->person_fk."' in tbl_syncperson nicht gefunden!
"; + $anzahl_fehler++; + $error=true; + continue; + } + } + else + { + $error=true; + $error_log.="Fehler beim Zugriff auf tbl_syncperson bei Person mit person_pk '".$row2->person_fk."'!\n"; + echo "Fehler beim Zugriff auf tbl_syncperson bei Person mit person_pk '".$row2->person_fk."'!
"; + $anzahl_fehler++; + } + if(!$error) + { + if($konto->new) + { + if($row->art==1) + { + //Buchung1 - Belastung + $konto->buchungsnr_verweis=null; + $konto->betrag='-'.$betrag; + if(!$konto->save()) + { + $error_log.=$konto->errormsg."\n"; + echo $konto->errormsg."
"; + $anzahl_fehler++; + } + else + { + //Buchung2 - Zahlung + $konto->buchungsnr_verweis=$konto->buchungsnr; + $konto->buchungsnr=''; + $konto->betrag=$betrag; + if(!$konto->save()) + { + $error_log.=$konto->errormsg."\n"; + echo $konto->errormsg."
"; + $anzahl_fehler++; + } + else + { + $ausgabe.="Buchung (e) von Person '".$konto->person_id."' mit Zahlung '".$row->zahlung_fk."', Text '".$konto->buchungstext."' und Betrag €".$konto->betrag." eingefügt.\n"; + echo "Buchung (e) von Person '".$konto->person_id."' mit Zahlung '".$row->zahlung_fk."', Text '".$konto->buchungstext."' und Betrag €".$konto->betrag." eingefügt.
"; + $anzahl_eingefuegt++; + } + } + } + elseif($row->art==2) + { + //Buchung1 - Gutschrift + $konto->betrag=$betrag; + $konto->buchungsnr_verweis=null; + if(!$konto->save()) + { + $error_log.=$konto->errormsg."\n"; + echo $konto->errormsg."
"; + $anzahl_fehler++; + } + else + { + //Buchung2 - Zahlung + $konto->buchungsnr_verweis=$konto->buchungsnr; + $konto->buchungsnr=''; + $konto->betrag='-'.$betrag; + if(!$konto->save()) + { + $error_log.=$konto->errormsg."\n"; + echo $konto->errormsg."
"; + $anzahl_fehler++; + } + else + { + $ausgabe.="Buchung (a) von Person '".$konto->person_id."' mit Zahlung '".$row->zahlung_fk."', Text '".$konto->buchungstext."' und Betrag €".$betrag." eingefügt.\n"; + echo "Buchung (a) von Person '".$konto->person_id."' mit Zahlung '".$row->zahlung_fk."', Text '".$konto->buchungstext."' und Betrag €".$betrag." eingefügt.
"; + $anzahl_eingefuegt++; + } + } + } + } + } + } +} +echo "-------------------------------------------------------------------------------------------------------------------------------

"; +echo "Ende: ".date("d.m.Y H:i:s")." von ".$_SERVER['HTTP_HOST']."

"; +//echo nl2br($error_log); +echo nl2br("\nZahlungen\nGesamt: $anzahl_quelle / Eingefügt: $anzahl_eingefuegt / bereits vorhanden: $anzahl_vorhanden / Fehler: $anzahl_fehler"); +$ausgabe="\nZahlungen\nGesamt: ".$anzahl_quelle." / Eingefügt: ".$anzahl_eingefuegt." / bereits vorhanden: ".$anzahl_vorhanden." / Fehler: ". $anzahl_fehler."\n\n".$ausgabe; +if(strlen(trim($error_log))>0) +{ + mail($adress, 'SYNC-Fehler Konto von '.$_SERVER['HTTP_HOST'], $error_log,"From: vilesci@technikum-wien.at"); +} +mail($adress, 'SYNC Konto von '.$_SERVER['HTTP_HOST'], $ausgabe,"From: vilesci@technikum-wien.at"); +?> + + \ No newline at end of file