Blame | Letzte Änderung | Log anzeigen | RSS feed
<?php/*** @package content-management* @author Webagentur Niewerth <erling@weban.de>* @copyright 2012 Webagentur Niewerth* @license propietary http://www.weban.de* @version $Rev: 1042 $* @filesource**//**** @package content-management* @author Webagentur Niewerth <erling@weban.de>* @copyright 2012 Webagentur Niewerth*/// SVN: $Id: mahnung.php 1042 2012-03-26 12:33:18Z tiefland $session_start();require_once "connect2.php";require_once "includes/bestellungen/system/mysql_query_logged.php";require_once "Weban_Smarty.class.php";require_once "module/functions.common.php";require_once "includes/rechnung/rechnungsbuch.function.php";require_once "includes/bestellungen/system/artikelDatabase.php";require_once "fpdf/fpdf.php";$GLOBALS["ui"] = new Weban_Smarty();$GLOBALS["ui"]->compile_dir = $_SERVER["DOCUMENT_ROOT"] . "/templates_c/";$GLOBALS["ui"]->compile_id = "Warenwirtschaft|rechnungen";$GLOBALS["ui"]->use_sub_dirs = true;// ME: die übergebenen Werte auslesen$rechnungsnr = isset( $_GET['rechnungsnr'] ) ? $_GET['rechnungsnr']:false;$zahlungsziel = $_SESSION['Warenwirtschaft']['rechnungsbuch']['txtFaellig'];// ME: die Vorschaltseite mahnung_prepage.tpl anzeigen$show_prepage = false;if($_GET['show_prepage']==1) {$show_prepage = true;}if($show_prepage==true) {// ME: alle anderen offenen Rechnungen des Kunden holen$offRech = getOffeneRechnungen($rechnungsnr,$zahlungsziel);$mTypes = getMahnTexte($GLOBALS['shops_ID']);$GLOBALS["ui"]->assign("mTypes",$mTypes);$GLOBALS["ui"]->assign("offRech",$offRech);$GLOBALS["ui"]->assign("rechnungsnr",$rechnungsnr);$GLOBALS["ui"]->assign("action","generate_pdf");$GLOBALS["ui"]->display("mahnung_prepage.tpl");}// die FPDF Class erweitern (PDF)class PDF extends FPDF{function generate_LN( $m_id, $art, $Nummernkreis ){global $web_rechte;if ( $Nummernkreis ){if ( isset( $web_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnungsnrtrennung"] ) ){$sql_re = "SELECTre_shortFROMshopsWHEREID=" . $GLOBALS["shops_ID"] . "";$res_re = mysql_query( $sql_re );$row_re = mysql_fetch_assoc( $res_re );$re_short = $row_re["re_short"];}$sql = "SELECTl_nr AS lnFROMnummernkreis_mahnungWHEREjahr=" . date( "Y" );if ( isset( $web_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnungsnrtrennung"] ) ){$sql .= "ANDre_short='$re_short'";}$res = mysql_query_logged( $sql );if ( $res ){if ( mysql_num_rows( $res ) ){$row = mysql_fetch_assoc( $res );$ln = $row["ln"];$ln++;}else{$ln = 1;$sql = "INSERT INTOnummernkreis_mahnung(l_nr,";if ( isset( $web_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnungsnrtrennung"] ) ){$sql .= "re_short,";}$sql .= "jahr)VALUES($ln,";if ( isset( $web_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnungsnrtrennung"] ) ){$sql .= "'" . $re_short . "',";}$sql .= "" . date( "Y" ) . ")";mysql_query_logged( $sql );}}else{$ln = 1;}$sql = "UPDATEnummernkreis_mahnungSETl_nr=" . $ln . "WHEREjahr=" . date( "Y" ) . "";if ( isset( $web_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnungsnrtrennung"] ) ){$sql .= "ANDre_short='$re_short'";}mysql_query_logged( $sql );}else{$date = date( "Y-m-d" );$f_name = $art . "_" . $m_id . "_" . $date;$sql = "SELECTMAX(document) AS dokumentFROMdokumenteWHEREdocumentLIKE'$f_name%'";$res = mysql_query( $sql );if ( $res ){if ( mysql_num_rows( $res ) ){$row = mysql_fetch_assoc( $res );$dokument = substr( $row["dokument"], 0, strlen( $row["dokument"] ) -4 );$dokument = explode( "_", $dokument );$ln = $dokument[count( $dokument ) - 1];$ln++;}else{$ln = 1;}}else{$ln = 1;die( mysql_error() );}}return $ln;}//Page headerfunction Header(){global $site;$h_file = "includes/mahnung/header_" . $site . "_" . $GLOBALS["shops_ID"] .".inc.php";if ( file_exists( $h_file ) ){require ( $h_file );}else{require ( "includes/mahnung/header_" . $site . ".inc.php" );}}//Page footerfunction Footer(){global $site;if ( file_exists( "includes/mahnung/footer_" . $site . "_" . $GLOBALS["shops_ID"] .".inc.php" ) ){require ( "includes/mahnung/footer_" . $site . "_" . $GLOBALS["shops_ID"] .".inc.php" );}else{require ( "includes/mahnung/footer_" . $site . ".inc.php" );}}function NbLines( $w, $txt ){//Computes the number of lines a MultiCell of width w will take$cw = &$this->CurrentFont['cw'];if ( $w == 0 )$w = $this->w - $this->rMargin - $this->x;$wmax = ( $w - 2 * $this->cMargin ) * 1000 / $this->FontSize;$s = str_replace( "\r", '', $txt );$nb = strlen( $s );if ( $nb > 0 and $s[$nb - 1] == "\n" )$nb--;$sep = -1;$i = 0;$j = 0;$l = 0;$nl = 1;while ( $i < $nb ){$c = $s[$i];if ( $c == "\n" ){$i++;$sep = -1;$j = $i;$l = 0;$nl++;continue;}if ( $c == ' ' )$sep = $i;$l += $cw[$c];if ( $l > $wmax ){if ( $sep == -1 ){if ( $i == $j )$i++;}else$i = $sep + 1;$sep = -1;$j = $i;$l = 0;$nl++;}else$i++;}return $nl;}}$pdf = new PDF();// ME: die PDF erstellenif($_POST['action']=="generate_pdf") {generate_mahnung($pdf);}function getOffeneRechnungen($rechnungsnr,$zahlungsziel) {// ME: kundennr holen$sql = "SELECTl.ID as kundennrFROMLogins l,rechnung rWHEREl.ID = r.kundennrANDr.rechnungsnummer = '".$rechnungsnr."'";if($q = mysql_query($sql)) {if($r=mysql_fetch_assoc($q)) {$kundennr = $r['kundennr'];$GLOBALS['ui']->assign('kundennr',$kundennr);}}// ME: erstmal alles holen, gefiltert wird später (zahlungsziel ist im ser. Array)$sql = "SELECTr.rechnungsnummer as rechnungsnummer,r.shops_id,r.erstellt_am as erstellt_am,r.bestellung as bestellung,r.kundennr as kundennr,r.nettobetrag as nettobetrag,r.bruttobetrag as bruttobetrag,r.zahlungsziel as zahlungsziel,r.1_mahnung_nr as 1_mahnung_datum,r.2_mahnung_nr as 2_mahnung_datum,r.3_mahnung_nr as 3_mahnung_datum,l.ID as ID,l.Anrede as Anrede,l.Vorname as Vorname,l.Name1 as Name1,l.Name2 as Name2,l.Strasse as Strasse,l.Hausnummer as Hausnummer,l.PLZ as PLZ,l.Ort as Ort,l.Land as LandFROMrechnung r,Logins lWHEREr.kundennr = '".$kundennr."'ANDr.kundennr=l.IDANDr.bezahlt_am = '0000-00-00 00:00:00'ANDzahlungsziel != ''";if($q=mysql_query($sql)) {$i=0;while($r=mysql_fetch_assoc($q)) {if($zzArr = unserialize($r['zahlungsziel'])) {$Kundendaten['ID'] = $r['ID'];$Kundendaten['Anrede'] = $r['Anrede'];$Kundendaten['Vorname'] = $r['Vorname'];$Kundendaten['Name1'] = $r['Name1'];$Kundendaten['Name2'] = $r['Name2'];$Kundendaten['Strasse'] = $r['Strasse'];$Kundendaten['Hausnummer'] = $r['Hausnummer'];$Kundendaten['PLZ'] = $r['PLZ'];$Kundendaten['Ort'] = $r['Ort'];$Kundendaten['Land'] = $r['Land'];if(is_int($zzArr['ziel'])) {if($zzArr['ziel'] <= $zahlungsziel) {$r['zahlungsziel_datum'] = date ("d.m.Y", $zzArr['ziel'] );$rechnungsdaten[] = $r;$offRech[$i] = $r;$i++;}}else{$r['zahlungsziel_datum'] = $zzArr['ziel'];$rechnungsdaten[] = $r;$offRech[$i] = $r;$i++;}}}$_SESSION['Warenwirtschaft']['mahnung']['Rechnungsdaten'] = $rechnungsdaten;$_SESSION['Warenwirtschaft']['mahnung']['Kundendaten'] = $Kundendaten;//admin_debug($_SESSION['Warenwirtschaft']['mahnung']['Rechnungsdaten']);return $offRech;}}function getMahnTexte($shops_id) {$mText = array();$sql = "SELECT DISTINCT shops_IDFROMweb_settingsWHEREID between 291 AND 300";if($q = mysql_query($sql) ) {while($r=mysql_fetch_assoc($q)) {$shop_ids[] = $r['shops_ID'];}}if(!in_array($shops_id,$shop_ids)) {$shops_id = $shop_ids[0];}$sql = "SELECT*FROMweb_settingsWHEREID between 291 AND 300ANDshops_id = ".$shops_id."";if($q=mysql_query($sql)) {while($r=mysql_fetch_assoc($q)) {$mText[] = $r;}}return $mText;}function getRechnungForMahnung($rIDArr) {$whcl = implode("','",$rIDArr);$sql = "SELECT *FROMrechnungWHERErechnungsnummer IN ('".$whcl."')";if($q=mysql_query($sql)) {while($r=mysql_fetch_assoc($q)) {$zzArr = unserialize($r['zahlungsziel']);if(is_int($zzArr['ziel'])) {$r['zahlungsziel_datum'] = date ("d.m.Y", $zzArr['ziel'] );} else {$r['zahlungsziel_datum'] = $zzArr['ziel'];}$rechnungen[] = $r;}return $rechnungen;}}function generate_mahnung($pdf) {global $site;global $webs;global $anz_stellen;$zahlungsziel = $_POST['neues_zahlungsziel'];$bestellungen = $_POST['bestellungen'];// Welche Art Mahnung?$mTypeID = $_POST['mType'];// die Texte aus den Web_settings holen$mTexte = getMahnTexte($GLOBALS['shops_id']);foreach($mTexte as $mTxtCnt => $mTxt) {// 1. Mahnung Titelif($mTxt['ID'] == 291 && $mTypeID == 291) {$mFld = "1_mahnung_nr";if($mTexte[$mTxtCnt]['Name']) {$mTitle = $mTexte[$mTxtCnt]['Inhalt'];}else{$mTitle = "1. Mahnung";}}// 1. Mahnung Textif($mTxt['ID'] == 292 && $mTypeID == 291) {if($mTexte[$mTxtCnt]['Inhalt']) {$mInhalt = sprintf( $mTexte[$mTxtCnt]['Inhalt'], $zahlungsziel);}else{$mInhalt = utf8_decode( "haben Sie uns vergessen?\nVermutlich, denn sonst hätten Sie unsere unten aufgeführten Rechnungen sicherlich schon bis zum ".$zahlungsziel." beglichen.\nWir bitten Sie, die offenen Positionen schnellstmöglich auf unser Geschäftskonto zu überweisen." );}}// 2. Mahnung Titelif($mTxt['ID'] == 295 && $mTypeID == 295) {$mFld = "2_mahnung_nr";if($mTexte[$mTxtCnt]['Name']) {$mTitle = $mTexte[$mTxtCnt]['Inhalt'];}else{$mTitle = "2. Mahnung";}}// 2. Mahnung Textif($mTxt['ID'] == 296 && $mTypeID == 295) {if($mTexte[$mTxtCnt]['Inhalt']) {$mInhalt = sprintf( $mTexte[$mTxtCnt]['Inhalt'], $zahlungsziel);}else{$mInhalt = utf8_decode( "haben Sie uns vergessen?\nVermutlich, denn sonst hätten Sie unsere unten aufgeführten Rechnungen sicherlich schon bis zum ".$zahlungsziel." beglichen.\nWir bitten Sie, die offenen Positionen schnellstmöglich auf unser Geschäftskonto zu überweisen." );}}// 3. Mahnung Titelif($mTxt['ID'] == 299 && $mTypeID == 299) {$mFld = "3_mahnung_nr";if($mTexte[$mTxtCnt]['Name']) {$mTitle = $mTexte[$mTxtCnt]['Inhalt'];}else{$mTitle = "3. Mahnung";}}// 3. Mahnung Textif($mTxt['ID'] == 300 && $mTypeID == 299) {if($mTexte[$mTxtCnt]['Inhalt']) {$mInhalt = sprintf( $mTexte[$mTxtCnt]['Inhalt'], $zahlungsziel);}else{$mInhalt = utf8_decode( "haben Sie uns vergessen?\nVermutlich, denn sonst hätten Sie unsere unten aufgeführten Rechnungen sicherlich schon bis zum ".$zahlungsziel." beglichen.\nWir bitten Sie, die offenen Positionen schnellstmöglich auf unser Geschäftskonto zu überweisen." );}}}// ME: den Mahnstatus aktualisieren$rNr = implode("','",$_POST['rechnungsnummer']);$sql = "UPDATErechnungSET".$mFld."='".human2date($zahlungsziel)."'WHERErechnungsnummer IN ('".$rNr."')";if($q = mysql_query($sql)){}else{echo "<br>Fehler beim Update des Mahnstatus aufgetreten!";}$kundennr = $_SESSION['Warenwirtschaft']['mahnung']['Kundendaten']['ID'];$anrede = $_SESSION['Warenwirtschaft']['mahnung']['Kundendaten']['Anrede'];$name = $_SESSION['Warenwirtschaft']['mahnung']['Kundendaten']['Vorname']." ";$name .= $_SESSION['Warenwirtschaft']['mahnung']['Kundendaten']['Name1'];$firma = $_SESSION['Warenwirtschaft']['mahnung']['Kundendaten']['Name2'];$str = $_SESSION['Warenwirtschaft']['mahnung']['Kundendaten']['Strasse']." ";$str .= $_SESSION['Warenwirtschaft']['mahnung']['Kundendaten']['Hausnummer'];$plz = $_SESSION['Warenwirtschaft']['mahnung']['Kundendaten']['PLZ'];$ort = $_SESSION['Warenwirtschaft']['mahnung']['Kundendaten']['Ort'];$iso_land = getIsoCode( $_SESSION['Warenwirtschaft']['mahnung']['Kundendaten']['Land'], 2 );if($anrede=="Frau") {$mahntext = "Sehr geehrte ".$anrede;}else{$mahntext = "Sehr geehrter ".$anrede;}$mahntext .= " ". $name.",\n\n";$mahntext .= utf8_encode( $mInhalt );require( "includes/mahnung/body_" . $site . ".inc.php" );if ( $Einzug_rechts ){$Einzug = $Einzug_rechts;}else{$Einzug = 15;}$pdf->AddPage();$pdf->setSubject( "Mahnung" );$pdf->setCreator( "fpdf PHP Library" );$pdf->setAuthor( $haendler_name );$pdf->AliasNbPages();$pdf->setY( 45 );$pdf->setFont( 'Arial', '', 8 );$pdf->SetX( $Einzug );$pdf->cell( 105, 4, $umschlag, "B", 1, "L" );$pdf->setFont( 'Arial', '', 10 );$pdf->ln( 5 );$pdf->SetX( $Einzug );if ( !$firma ){$pdf->SetX( $Einzug +5);$pdf->cell( 80, 4, $anrede, 0, 1, "L" );$pdf->SetX( $Einzug +5);$pdf->cell( 80, 4, $name, 0, 1, "L" );}else{$pdf->SetX( $Einzug +5);$pdf->cell( 80, 4, $firma, 0, 1, "L" );$pdf->SetX( $Einzug +5);$pdf->cell( 80, 4, $anrede . " " . $name, 0, 1, "L" );}$pdf->SetX( $Einzug +5);$pdf->cell( 80, 4, $str, 0, 1, "L" );$pdf->SetX( $Einzug +5);if ( $iso_land == "DE" or $iso_land == "DEU" ){$pdf->cell( 80, 4, "$plz $ort", 0, 1, "L" );}else{if ( strlen( $iso_land ) > 0 ){$pdf->cell( 80, 4, "$iso_land - $plz $ort", 0, 1, "L" );}else{$pdf->cell( 80, 4, "$plz $ort", 0, 1, "L" );}}// rechte Spalte Headif ( $Infozeile != 'on' ){$pdf->setY( 80 );$nr_text = "Kunden Nr.:";$nr = $kundennr;$pdf->cell( 150, 4, $nr_text, 0, 0, "R" );$pdf->cell( 0, 4, $nr, 0, 1, "R" );$pdf->cell( 150, 4, "USt-IdNr.:", 0, 0, "R" );$pdf->cell( 0, 4, $haendler_ust_id, 0, 1, "R" );$pdf->cell( 150, 4, "Datum:", 0, 0, "R" );$pdf->cell( 0, 4, date( "d.m.Y" ), 0, 1, "R" );}// Haupttextkörper$pdf->setY( 110 );$pdf->setFont( 'Arial', 'B', 12 );$pdf->SetX( $Einzug );$pdf->cell( 0, 4, $mTitle, 0, 0, "L" );$pdf->setFont( 'Arial', '', 8 );// Einleitungstext$pdf->setY( 120 );$pdf->SetX( $Einzug );$pdf->MultiCell( 170 , 4, utf8_decode( $mahntext ), '' , 'L' );// Tabelle Kopfzeile$pdf->setY( $pdf->getY()+5);$pdf->setFont( 'Arial', 'B', 8 );$pdf->setFillColor(192,192,192);$pdf->SetX( $Einzug );$pdf->cell( 25, 4, "Datum", 1, 0, "L" ,1);$pdf->cell( 25, 4, "BestellNr.", 1, 0, "L",1 );$pdf->cell( 25, 4, utf8_decode( "Fälligkeit" ), 1, 0, "L" ,1);$pdf->cell( 25, 4, "Betrag EUR", 1, 0, "R" ,1);$pdf->cell( 25, 4, utf8_decode( "Gebühr EUR" ), 1, 0, "R" ,1);$pdf->cell( 25, 4, "Zinsen EUR", 1, 0, "R" ,1);$pdf->cell( 25, 4, "Gesamt EUR", 1, 0, "R" ,1);// Tabelle Rechnungsdaten$summe = 0;foreach( getRechnungForMahnung($_POST['rechnungsnummer']) as $rCnt => $rechnung) {$datum = datetime2human( $rechnung['erstellt_am'] );$pdf->setY( $pdf->getY()+4);$pdf->setFont( 'Arial', '', 8 );$pdf->SetX( $Einzug );$pdf->cell( 25, 4, $datum['Datum'] , 1, 0, "L" );$pdf->cell( 25, 4, $rechnung['bestellung'], 1, 0, "L" );$pdf->cell( 25, 4, $rechnung['zahlungsziel_datum'], 1, 0, "L" );$pdf->cell( 25, 4, number_format( $rechnung['bruttobetrag'],2,",","." ), 1, 0, "R" );$pdf->cell( 25, 4, "", 1, 0, "R" );$pdf->cell( 25, 4, "", 1, 0, "R" );$pdf->cell( 25, 4, number_format( $rechnung['bruttobetrag'],2,",","." ), 1, 0, "R" );$summe += $rechnung['bruttobetrag'];}$pdf->setY( $pdf->getY()+4);$pdf->setFont( 'Arial', 'B', 8 );$pdf->SetX( $Einzug );$pdf->cell(150,4,"Total:",0,0,"R");$pdf->cell(25,4,number_format( $summe,2,",","." ),0,0,"R");// Bemerkungenif(strlen( $_POST['mahnung_bemerkung'] ) > 0 ){$pdf->setY( $pdf->getY()+5);$pdf->setFont( 'Arial', 'B', 8 );$pdf->SetX( $Einzug );$pdf->cell(0,4,"Bemerkung:",0,0,"L");$pdf->setY( $pdf->getY()+4);$pdf->setFont( 'Arial', '', 8 );$pdf->SetX( $Einzug );$pdf->MultiCell( 175 , 4, ( $_POST['mahnung_bemerkung'] ), '' , 'L' );}// Schluß$pdf->setY( $pdf->getY()+30);$pdf->setFont( 'Arial', '', 8 );$pdf->SetX( $Einzug );$pdf->cell(0,4,utf8_decode( "Mit freundlichen Grüßen" ),0,0,"L");$pdf->setY( $pdf->getY()+4);$pdf->SetX( $Einzug );$pdf->cell(0,4, "(".( $haendler_name ).")",0,0,"L");// für alle BestellIDs muss die Beziehung über die Dokumente-Tabelle hergestellt werden.foreach($bestellungen as $r_nr => $b_id) {foreach( getRechnungForMahnung($_POST['rechnungsnummer']) as $rCnt => $rechnung) {if($rechnung['rechnungsnummer'] == $r_nr) {// PDF ausgeben / speichernif ( !isset( $anz_stellen ) ) {$anz_stellen = 5;}$m_id = 0;$m_nr = sprintf( "%0" . $anz_stellen . "d", $pdf->generate_LN( $m_id, "M", true ) );$m_nr = date( "y" ) . $m_nr;$fName = "M" . $m_nr . ".pdf";$sql = "INSERT INTOdokumente(table_foreign,row_foreign,data_foreign,document,letzte_Aenderung_am,letzte_Aenderung_von)VALUES('Bestellung','ID',$b_id,'$fName',NOW(),'" . $_SERVER["PHP_AUTH_USER"] . "')";mysql_query_logged( $sql ) or mail( "erling@weban.de","Fehler beim Speichern der Mahnung", mysql_errno() . ": " .mysql_error() . "<hr>$query<hr>","from: cms_Warenwirtschaft_mahnung.php into dokumente" );}}}$pdf->Output( $webs['verzeichnis'] . "/images/dokumente/" . $fName, "F" );$pdf->Output();} // END function generate_mahnung?>