Blame | Letzte Änderung | Log anzeigen | RSS feed
<?php//$Id: datev_csv_export.function.php 3884 2011-09-07 08:24:40Z tiefland $/*** @author Patirck Lautsch <lautsch@weban.de>* @copyright 2010 Webagentur Niewerth* @package Content-management* @version $Rev: 3884 $* @license propietary* @filesource**//**** @author Patirck Lautsch <lautsch@weban.de>* @copyright 2010 Webagentur Niewerth* @package Content-management*//*** datev_csv_export()** Stellt auf Basis der Tabelle "rechnung" in der Datenbank des jeweiligen Kunden,* eine CSV-Datei für den Datev-Export bereit.** @param DATETIME $datum* @param ARRAY $attribute*/function datev_csv_export( $datum, $zeitraum = "", $shop = "", $attribute ){global $web_rechte;$daten = explode( ";", $web_rechte["Warenwirtschaft"]["rechnungsbuch"]["datev_export"] );if ( !isset( $daten[1] ) ){$daten[1] = 4;}// ----------------------------------------------// SQL: Hole alle Rechnungen des übergebenen Zeitraums$sql = 'SELECT*FROMrechnung';if ( $shop ){$where[] = "shops_id=$shop";}if ( $datum ){$where[] = "erstellt_am LIKE '$datum%'";}if ( $where ){$sql .= "WHERE";$sql .= implode( "AND ", $where );}$result = mysql_query( $sql ) or die( mysql_errno() . ': ' .mysql_error() . '<hr />' . $sql );for ( $i = 0; $row = mysql_fetch_assoc( $result ); $i++ ){$rechnung[$i] = $row;}// ---------------------------------------------------// Parsen/korrigieren der Wertefor ( $i = 0; $i < sizeof( $rechnung ); $i++ ){/*** Währung - Währungskennzeichen (Pflichtfeld)** WKZ | zulässige Währungen:* EUR, CAD, CHF, CZK, DKK, GBP, HKD, HUF, JPY, NOK, PLN, SEK, TND und USD*/$csv_array[$i]['Währung'] = 'EUR';/*** VorzBetrag - Vorzeichen und Betrag (Pflichtfeld)** "+"/"-" Betrag | max-Länge 10,2 | Decimalpunkt = ","| keine Tausenderpunkte*/if ( $daten[1] == 8 ){$csv_array[$i]['VorzBetrag'] = number_format( ( $rechnung[$i]['bruttobetrag'] ),2, ",", "" );}else{$csv_array[$i]['VorzBetrag'] = number_format( ( $rechnung[$i]['bruttobetrag'] *-1 ), 2, ",", "" );}if ( $csv_array[$i]['VorzBetrag'] > 0 ){$csv_array[$i]['VorzBetrag'] = "+" . $csv_array[$i]['VorzBetrag'];}/*** RechNr - Rechnungsnummer (Pflichtfeld)** max-Länge 12 | alphanumerisch*/$csv_array[$i]['RechNr'] = "\"" . $rechnung[$i]['bestellung'] ."\"";/*** Belegdatum - Belegdatum (Pflichtfeld)** ttmm | max-Länge 4 | numerisch | keine Trenner*/$csv_array[$i]['Belegdatum'] = "\"" . date( "dm", strtotime( $rechnung[$i]['erstellt_am'] ) ) ."\"";/*** InterneRechNr - Interne Rechnungsnummer** max-Länge 12 | alphanumerisch*/$csv_array[$i]['InterneRechNr'] = "\"" . $rechnung[$i]['rechnungsnummer'] ."\"";/*** KundeName - Kunden-Name** max-Länge 40 | alphanumerisch*/if ( $rechnung[$i]['firma'] ){$csv_array[$i]['KundeName'] = "\"" . $rechnung[$i]['firma'] ."\"";}else{$csv_array[$i]['KundeName'] = "\"" . $rechnung[$i]['kunde'] ."\"";}/*** KundeOrt - Ort des Kunden** max-Länge 30 | alphanumerisch*/$csv_array[$i]['KundeOrt'] = "\"" . $rechnung[$i]['ort'] . "\"";/*** KundeKonto - Kunden-Konto-Nr.** max-Länge 9 (inkl. Blank 10) | numerisch | Länge in Abhängigkeit der Sachkontolänge*//*** Kontobereichnung - Kontobereichnung** max-Länge 30 | alphanumerisch*/$rechnung[$i]['mwst_19'] = floatval( $rechnung[$i]['mwst_19'] );$rechnung[$i]['mwst_7'] = floatval( $rechnung[$i]['mwst_7'] );if ( $rechnung[$i]['mwst_19'] > 0 && empty( $rechnung[$i]['mwst_7'] ) ){$csv_array[$i]['KundeKonto'] = $daten[1] . '400';$csv_array[$i]['Kontobezeichnung'] = '"19%"';} elseif ( empty( $rechnung[$i]['mwst_19'] ) && $rechnung[$i]['mwst_7'] > 0 ){$csv_array[$i]['KundeKonto'] = $daten[1] . '300';$csv_array[$i]['Kontobezeichnung'] = '"7%"';} elseif ( $rechnung[$i]['mwst_19'] > 0 && $rechnung[$i]['mwst_7'] > 0 ){$csv_array[$i]['KundeKonto'] = $daten[1] . '400';$csv_array[$i]['Kontobezeichnung'] = '"19%"';} elseif ( $rechnung[$i]['mwst_befreiung'] == "on" ){if ( empty( $rechnung[$i]['ustid_nr'] ) ){$csv_array[$i]['KundeKonto'] = $daten[1] . '120';$csv_array[$i]['Kontobezeichnung'] = '"0% Drittland"';}else{$csv_array[$i]['KundeKonto'] = $daten[1] . '125';$csv_array[$i]['Kontobezeichnung'] = '"0% EG"';}}else{$csv_array[$i]['KundeKonto'] = $daten[1] . '000';$csv_array[$i]['Kontobezeichnung'] = '"Rest"';}/*** BU - B(erichtungsschhlüssel) U(msatzstuerschlüssel)** max-Länge 2 | numerisch | zulässige BU-SChlüssel: 1 - 3, 5, 10 - 13, 15, 40, 50 - 59*/$csv_array[$i]['BU'] = '';/*** Konto - Konto-Nr.** max-Länge 8 (inkl. Blank 9 | numerisch | Länge in Abhängigkeit der Sachkontolänge*/$csv_array[$i]['Konto'] = $daten[2];/*** Ware/Leistung - Ware/Leistung** max-Länge 30 | alphanumerisch*/$csv_array[$i]['Ware/Leistung'] = '';/*** Fällig_am - Fälligkeitsdatum** ttmmjjjj | max-Länge 8 | numerisch | keine Trenner*/$csv_array[$i]['Fällig_am'] = '';/*** gezahlt_am - Datum gezahlt am** ttmm | max-Länge 8 | numerisch | keine Trenner*/$csv_array[$i]['gezahlt_am'] = '';/*** UStSatz - Umsatzsteuer-Prozentsatz** Max-Länge 5 | numerisch | Decimalpunkt = ","*/$csv_array[$i]['UStSatz'] = '';/*** USt-IdNr. Kunde - USt-IdNr. Kunde** max-Länge 15 | alphanumerisch*/$csv_array[$i]['USt_IdNr.Kunde'] = '';/*** Kunden-Nr. - Kunden-Nr.** max-Länge 15 | alphanumerisch*/$csv_array[$i]['Kunden-Nr.'] = '"' . $rechnung[$i]['kundennr'] .'"';/*** KOST1- KOST1** max-Länge 8 | alphanumerisch*/$csv_array[$i]['KOST1'] = '';/*** KOST2- KOST2** max-Länge 8 | alphanumerisch*/$csv_array[$i]['KOST2'] = '';/*** KOSTmenge - KOST-Mengen-"Betrag"** max-Länge 9,2 | Decimalpunkt = "," | keine Tausenderpunkte*/$csv_array[$i]['KOSTmenge'] = '';/*** Kurs - Kurs-Umrechnungsbetrag** max-Länge 4,6 | Decimalpunkt = "," | keine Tausenderpunkte*/$csv_array[$i]['Kurs'] = '';/*** Skonto - Skonto-Betrag** max-Länge 8,2 | Decimalpunkt = "," | keine Tausenderpunkte*/$csv_array[$i]['Skonto'] = '';/*** Nachricht - Nachricht** max-Länge 120 | alphanummerisch*/$csv_array[$i]['Nachricht'] = '';/*** Skto_Fällig_am - Skonto-Fälligkeit = Nettofälligkeit** ttmmjjjj | max-Länge 8 | numerisch | keine Trenner | auch tt.mm.jjjj ; Abhängigkeit zum Skontobetrag ->* Sktontobetrag muss bei Skto_Fällig_am gefüllt sein*/$csv_array[$i]['Skto_Fällig_am'] = '';/*** BankKonto - Konto-Nr.** Kontonummer** Kontonummer immmer in Verbindung mit Bankleitzahl*/$csv_array[$i]['BankKonto'] = '';/*** BankBlz - BLZ** Bankleitzahl immer in Verbindung mit Kontonummer*/$csv_array[$i]['BankBlz'] = '';/*** Bankname - Name der Bank** max-Länge 27 | alphanumerisch*/$csv_array[$i]['Bankname'] = '';if ( strtolower( $daten[3] ) !== "false" ){$csv_array[$i]["shop"] = getShop( $rechnung[$i]["shops_id"] );}}// ----------------------------// Erstellen des Inhalts der CSV-Datei$csv_header ='"Währung";"VorzBetrag";"RechNr";"Belegdatum";"InterneRechNr";"KundeName";"KundeOrt";"KundeKonto";"BU";"Konto";"Kontobezeichnung";"Ware/Leistung";"Fällig_am";"gezahlt_am";"UStSatz";"USt-IdNr.Lieferant";"Kunden-Nr.";"KOST1";"KOST2";"KOSTmenge";"Kurs";"Skonto";"Nachricht";"Skto_Fällig_am";"BankKonto";"BankBlz";"Bankname";';if ( strtolower( $daten[3] ) !== "false" ){$csv_header .= '"Shop";';}$datev_csv_export = $csv_header . "\n";for ( $i = 0; $i < sizeof( $csv_array ); $i++ ){$datev_csv_export .= $csv_array[$i]['Währung'] . ';';$datev_csv_export .= $csv_array[$i]['VorzBetrag'] . ';';$datev_csv_export .= $csv_array[$i]['RechNr'] . ';';$datev_csv_export .= $csv_array[$i]['Belegdatum'] . ';';$datev_csv_export .= $csv_array[$i]['InterneRechNr'] . ';';$datev_csv_export .= $csv_array[$i]['KundeName'] . ';';$datev_csv_export .= $csv_array[$i]['KundeOrt'] . ';';$datev_csv_export .= $csv_array[$i]['KundeKonto'] . ';';$datev_csv_export .= $csv_array[$i]['BU'] . ';';$datev_csv_export .= $csv_array[$i]['Konto'] . ';';$datev_csv_export .= $csv_array[$i]['Kontobezeichnung'] . ';';$datev_csv_export .= $csv_array[$i]['Ware/Leistung'] . ';';$datev_csv_export .= $csv_array[$i]['Fällig_am'] . ';';$datev_csv_export .= $csv_array[$i]['gezahlt_am'] . ';';$datev_csv_export .= $csv_array[$i]['UStSatz'] . ';';$datev_csv_export .= $csv_array[$i]['USt_IdNr.Kunde'] . ';';$datev_csv_export .= $csv_array[$i]['Kunden-Nr.'] . ';';$datev_csv_export .= $csv_array[$i]['KOST1'] . ';';$datev_csv_export .= $csv_array[$i]['KOST2'] . ';';$datev_csv_export .= $csv_array[$i]['KOSTmenge'] . ';';$datev_csv_export .= $csv_array[$i]['Kurs'] . ';';$datev_csv_export .= $csv_array[$i]['Skonto'] . ';';$datev_csv_export .= $csv_array[$i]['Nachricht'] . ';';$datev_csv_export .= $csv_array[$i]['Skto_Fällig_am'] . ';';$datev_csv_export .= $csv_array[$i]['BankKonto'] . ';';$datev_csv_export .= $csv_array[$i]['BankBlz'] . ';';$datev_csv_export .= $csv_array[$i]['Bankname'] . ';';$datev_csv_export .= $csv_array[$i]['shop'] . ';';$datev_csv_export .= "\n";}// -----------------------------------// CSV-Datei erstellen$filename = time() . rand( 0, 9999 ) . ".csv";//file_put_contents( $filename, $datev_csv_export );// -------------------// CSV-Download initialisierenheader( "Content-Type: text/comma-separated-values" );header( "Content-Disposition: attachment; filename=\"$filename\"" );//readfile( $filename );echo $datev_csv_export;// ---------------------------// CSV-Datei auf dem Server wieder löschen//unlink( $filename );// ---------------------------------------}?>