prefix}posts LIKE 'adl_exportiert';"; $zeilen=$wpdb->query($sqlBefehl); if ($zeilen==0) { /* Tabelle _posts um das erforderliche Feld erweitern */ $sqlBefehl="ALTER TABLE {$wpdb->prefix}posts ADD adl_exportiert BOOLEAN NOT NULL DEFAULT FALSE;"; $wpdb->query($sqlBefehl); } /* Exportverzeichnis anlegen, wenn es nicht schon existiert */ $pfad=substr(DATEIPFAD,0,strlen(DATEIPFAD)-1); /* ohne den / am Ende */ if (!is_dir($pfad)) { mkdir ($pfad); } } /** * Menü erstellen * * @since 0.1 * @change */ function adlib_erstelleMenu() { add_menu_page('Datenexport','Datenexport','export','adlib_export_manuell','fuellePluginmenu',plugin_dir_url( __FILE__ ).'export.png','81.10001'); } /** * Pluginmenü mit Infos füllen * * @since 0.1 * @change */ function fuellePluginmenu() { ?>

Manueller Datenexport

Datenexport für Lexware Warenwirtschaftsprogramme gemäß den Spezifikationen von Lexware.

Der Datenexport startet nach einem Klick auf den Button "Daten exportieren".

Exportierte Datensätze werden gekennzeichnet und können nicht erneut exportiert werden.

Der Dateiname setzt sich aus dem Datum sowie der Uhrzeit zusammen. Die Dateiendung ist xml.

Es wurden Bestellung(en) exportiert.

Es liegen keine neuen Bestellungen vor.

Exportiert die Bestellungen in das folgende Verzeichnis (der Dateiname ist ein Beispiel): woocommerce/export/20150101-115500.xml

Wenn Sie mit diesem Plugin zufrieden sind bitte ich Sie darum, mir einen selbst gewählten Betrag per PayPal zu überweisen. Herzlichen Dank dafür. Wenn Sie eine Rechnung benötigen, schreiben Sie mir bitte eine eMail mit Ihrer Anschrift und Sie bekommen eine Rechnung über den gewünschten Betrag – zuzüglich der gesetzlichen Mehrwertsteuer.

prefix."posts` WHERE post_type='shop_order' AND adl_exportiert=0 ORDER BY ID"; $ergebnis=$wpdb->get_results($abfrage); $anzahlBestellungen=$wpdb->num_rows; if ($anzahlBestellungen==0) { return false; } /* Dateiname erzeugen, Datei anlegen und öffnen */ $dateiname=DATEIPFAD.date('Ymd-His').".xml"; $datei=fopen($dateiname,"wb"); fwrite($datei,HEADER1); /*jede Bestellung anschauen */ foreach($ergebnis as $wert) { $bestellID=$wert->ID; $adlib_bestelldaten['bestellnummer']=$bestellID; $adlib_bestelldaten['bestelldatum']=strftime('%Y-%m-%dT%H:%M:%S+01:00',strtotime($wert->post_date)); $adlib_bestelldaten['remark_order']=ersetzeSonderzeichen($wert->post_excerpt); $abfrage="SELECT meta_key, meta_value FROM ".$wpdb->prefix."postmeta WHERE post_id=".$bestellID; $ergebnisPostMeta=$wpdb->get_results($abfrage); /* jetzt haben wir die Kundendaten */ foreach($ergebnisPostMeta as $wertPost) { switch ($wertPost->meta_key) { case "_order_currency": $adlib_bestelldaten['waehrung']=ersetzeSonderzeichen($wertPost->meta_value); break; case "_billing_country": $adlib_bestelldaten['rechnung_land']=ersetzeSonderzeichen($wertPost->meta_value); if (in_array($wertPost->meta_value,$EU_Laender)) { $adlib_bestelldaten['remark_tax_area']="Merchant"; } else { $adlib_bestelldaten['remark_tax_area']="Non_EU"; } break; case "_billing_first_name": $adlib_bestelldaten['rechnung_vorname']=ersetzeSonderzeichen($wertPost->meta_value); break; case "_billing_last_name": $adlib_bestelldaten['rechnung_nachname']=ersetzeSonderzeichen($wertPost->meta_value); break; case "_billing_company": $adlib_bestelldaten['rechnung_firma']=ersetzeSonderzeichen($wertPost->meta_value); break; case "_billing_address_1": $adlib_bestelldaten['rechnung_strasse']=ersetzeSonderzeichen($wertPost->meta_value); break; case "_billing_city": $adlib_bestelldaten['rechnung_ort']=ersetzeSonderzeichen($wertPost->meta_value); break; case "_billing_postcode": $adlib_bestelldaten['rechnung_plz']=ersetzeSonderzeichen($wertPost->meta_value); break; case "_billing_email": $adlib_bestelldaten['rechnung_email']=ersetzeSonderzeichen($wertPost->meta_value); break; case "_billing_phone": $adlib_bestelldaten['rechnung_fon']=ersetzeSonderzeichen($wertPost->meta_value); break; case "_shipping_country": $adlib_bestelldaten['liefer_land']=ersetzeSonderzeichen($wertPost->meta_value); break; case "_shipping_first_name": $adlib_bestelldaten['liefer_vorname']=ersetzeSonderzeichen($wertPost->meta_value); break; case "_shipping_last_name": $adlib_bestelldaten['liefer_nachname']=ersetzeSonderzeichen($wertPost->meta_value); break; case "_shipping_company": $adlib_bestelldaten['liefer_firma']=ersetzeSonderzeichen($wertPost->meta_value); break; case "_shipping_address_1": $adlib_bestelldaten['liefer_strasse']=ersetzeSonderzeichen($wertPost->meta_value); break; case "_shipping_city": $adlib_bestelldaten['liefer_ort']=ersetzeSonderzeichen($wertPost->meta_value); break; case "_shipping_postcode": $adlib_bestelldaten['liefer_plz']=ersetzeSonderzeichen($wertPost->meta_value); break; } } $adlib_bestelldaten['zahlung_zahlart']=56; $abfrage="SELECT order_item_name,order_item_type,order_item_id FROM ".$wpdb->prefix."woocommerce_order_items WHERE order_id=".$bestellID; $ergebnisArtikelliste=$wpdb->get_results($abfrage); /* jetzt haben wir die Artikelliste */ $schleifenzaehler=$wpdb->num_rows; $artikelzaehler=-1; foreach($ergebnisArtikelliste as $wertArtikelliste) { if ($wertArtikelliste->order_item_type=='line_item') { $artikelzaehler+=1; $artikelnummer=$wertArtikelliste->order_item_id; $adlib_bestelldaten['artikel'][$artikelzaehler]['artikel_bezeichnung_kurz']=ersetzeSonderzeichen($wertArtikelliste->order_item_name); $abfrage="SELECT * FROM ".$wpdb->prefix."woocommerce_order_itemmeta WHERE order_item_id=".$artikelnummer; $ergebnisArtikel=$wpdb->get_results($abfrage); /* jetzt haben wir die Artikeldaten */ foreach ($ergebnisArtikel as $wertArtikeldaten) { switch ($wertArtikeldaten->meta_key) { case "_qty": $adlib_bestelldaten['artikel'][$artikelzaehler]['artikel_anzahl']=$wertArtikeldaten->meta_value; $menge=$wertArtikeldaten->meta_value; break; case "_product_id": $adlib_bestelldaten['artikel'][$artikelzaehler]['artikel_nummer']=$wertArtikeldaten->meta_value; $abfrage="SELECT post_content FROM ".$wpdb->prefix."posts WHERE ID=".$wertArtikeldaten->meta_value; $ergebnisBeschreibung=$wpdb->get_results($abfrage); /* jetzt haben wir die lange Produktbeschreibung */ $adlib_bestelldaten['artikel'][$artikelzaehler]['artikel_bezeichnung_lang']=ersetzeSonderzeichen($ergebnisBeschreibung[0]->post_content); break; case "_line_total": $preis=$wertArtikeldaten->meta_value; $adlib_bestelldaten['artikel'][$artikelzaehler]['artikel_zeilenpreis']=$wertArtikeldaten->meta_value; break; case "_line_tax": $steuer=$wertArtikeldaten->meta_value; break; } } $adlib_bestelldaten['artikel'][$artikelzaehler]['artikel_preis']=$preis/$menge; $adlib_bestelldaten['artikel'][$artikelzaehler]['artikel_steuersatz']=$steuer/$preis; } /* Frachtart und Frachtkosten */ if ($wertArtikelliste->order_item_type=='shipping') { $adlib_bestelldaten['remark_delivery_method']=ersetzeSonderzeichen($wertArtikelliste->order_item_name); $frachtID=$wertArtikelliste->order_item_id; $abfrage="SELECT * FROM ".$wpdb->prefix."woocommerce_order_itemmeta WHERE order_item_id=".$frachtID; $ergebnisFracht=$wpdb->get_results($abfrage); /* jetzt haben wir die Frachtdaten */ foreach ($ergebnisFracht as $wertFrachtdaten) { if ($wertFrachtdaten->meta_key=="cost") { $adlib_bestelldaten['remark_shipping_fee']=$wertFrachtdaten->meta_value; } } } } /* alle Daten ermittelt, jetzt in Datei schreiben */ fwrite($datei,HEADER2); fwrite($datei,"\t\t\t\n"); fwrite($datei,"\t\t\t\t".$adlib_bestelldaten['bestellnummer']."\n"); fwrite($datei,"\t\t\t\t".$adlib_bestelldaten['bestelldatum']."\n"); fwrite($datei,"\t\t\t\t\n"); fwrite($datei,"\t\t\t\t\t\n"); fwrite($datei,"\t\t\t\t\t\t\n"); fwrite($datei,"\t\t\t\t\t\t\t
\n"); fwrite($datei,"\t\t\t\t\t\t\t\t".$adlib_bestelldaten['liefer_firma']."\n"); fwrite($datei,"\t\t\t\t\t\t\t\t".$adlib_bestelldaten['liefer_nachname']."\n"); fwrite($datei,"\t\t\t\t\t\t\t\t".$adlib_bestelldaten['liefer_vorname']."\n"); fwrite($datei,"\t\t\t\t\t\t\t\t".$adlib_bestelldaten['liefer_strasse']."\n"); fwrite($datei,"\t\t\t\t\t\t\t\t".$adlib_bestelldaten['liefer_plz']."\n"); fwrite($datei,"\t\t\t\t\t\t\t\t".$adlib_bestelldaten['liefer_ort']."\n"); fwrite($datei,"\t\t\t\t\t\t\t\t".$adlib_bestelldaten['liefer_land']."\n"); fwrite($datei,"\t\t\t\t\t\t\t\t".$adlib_bestelldaten['liefer_fon']."\n"); fwrite($datei,"\t\t\t\t\t\t\t\t".$adlib_bestelldaten['liefer_fax']."\n"); fwrite($datei,"\t\t\t\t\t\t\t\t".$adlib_bestelldaten['liefer_email']."\n"); fwrite($datei,"\t\t\t\t\t\t\t
\n"); fwrite($datei,"\t\t\t\t\t\t
\n"); fwrite($datei,"\t\t\t\t\t
\n"); fwrite($datei,"\t\t\t\t\t\n"); fwrite($datei,"\t\t\t\t\t\t\n"); fwrite($datei,"\t\t\t\t\t\t\t
\n"); fwrite($datei,"\t\t\t\t\t\t\t\t".$adlib_bestelldaten['rechnung_firma']."\n"); fwrite($datei,"\t\t\t\t\t\t\t\t".$adlib_bestelldaten['rechnung_nachname']."\n"); fwrite($datei,"\t\t\t\t\t\t\t\t".$adlib_bestelldaten['rechnung_vorname']."\n"); fwrite($datei,"\t\t\t\t\t\t\t\t".$adlib_bestelldaten['rechnung_strasse']."\n"); fwrite($datei,"\t\t\t\t\t\t\t\t".$adlib_bestelldaten['rechnung_plz']."\n"); fwrite($datei,"\t\t\t\t\t\t\t\t".$adlib_bestelldaten['rechnung_ort']."\n"); fwrite($datei,"\t\t\t\t\t\t\t\t".$adlib_bestelldaten['rechnung_land']."\n"); fwrite($datei,"\t\t\t\t\t\t\t\t".$adlib_bestelldaten['rechnung_fon']."\n"); fwrite($datei,"\t\t\t\t\t\t\t\t".$adlib_bestelldaten['rechnung_fax']."\n"); fwrite($datei,"\t\t\t\t\t\t\t\t".$adlib_bestelldaten['rechnung_email']."\n"); fwrite($datei,"\t\t\t\t\t\t\t
\n"); fwrite($datei,"\t\t\t\t\t\t
\n"); fwrite($datei,"\t\t\t\t\t
\n"); fwrite($datei,"\t\t\t\t
\n"); fwrite($datei,"\t\t\t\t".$adlib_bestelldaten['waehrung']."\n"); /* da fehlt noch der Payment-Block */ fwrite($datei,"\t\t\t\t".$adlib_bestelldaten['remark_delivery_method']."\n"); fwrite($datei,"\t\t\t\t".$adlib_bestelldaten['remark_shipping_fee']."\n"); fwrite($datei,"\t\t\t\t".$adlib_bestelldaten['remark_tax_area']."\n"); fwrite($datei,"\t\t\t\t".$adlib_bestelldaten['remark_order']."\n"); /* additional costs gehen nicht, weil WooCommerce die Extrakosten auf die Frachtkosten draufrechnet */ fwrite($datei,"\t\t\t
\n"); fwrite($datei,"\t\t\n"); fwrite($datei,"\t\t\n"); /*schleife */ $gesamtpreis=0; for($i=0;$i<=$artikelzaehler;$i++) { fwrite($datei,"\t\t\t\n"); fwrite($datei,"\t\t\t\t".$i."\n"); fwrite($datei,"\t\t\t\t\n"); fwrite($datei,"\t\t\t\t\t".$adlib_bestelldaten['artikel'][$i]['artikel_nummer']."\n"); fwrite($datei,"\t\t\t\t\t".$adlib_bestelldaten['artikel'][$i]['artikel_bezeichnung_kurz']."\n"); fwrite($datei,"\t\t\t\t\t".$adlib_bestelldaten['artikel'][$i]['artikel_bezeichnung_lang']."\n"); fwrite($datei,"\t\t\t\t\n"); fwrite($datei,"\t\t\t\t".$adlib_bestelldaten['artikel'][$i]['artikel_anzahl']."\n"); fwrite($datei,"\t\t\t\t1\n"); fwrite($datei,"\t\t\t\t\n"); fwrite($datei,"\t\t\t\t\t".number_format($adlib_bestelldaten['artikel'][$i]['artikel_preis'],2)."\n"); fwrite($datei,"\t\t\t\t\t".number_format($adlib_bestelldaten['artikel'][$i]['artikel_zeilenpreis'],2)."\n"); $gesamtpreis+=$adlib_bestelldaten['artikel'][$i]['artikel_zeilenpreis']; fwrite($datei,"\t\t\t\t\t".number_format($adlib_bestelldaten['artikel'][$i]['artikel_steuersatz'],2)."\n"); fwrite($datei,"\t\t\t\t\n"); fwrite($datei,"\t\t\t\n"); } /* schleife ende */ fwrite($datei,"\t\t\n"); fwrite($datei,"\t\t\n"); fwrite($datei,"\t\t\t".($artikelzaehler+1)."\n"); fwrite($datei,"\t\t\t".number_format($gesamtpreis,2)."\n"); fwrite($datei,"\t\t\n"); fwrite($datei,"\t\n"); /* exportierten Datensatz als exportiert kennzeichnen */ $befehl="UPDATE ".$wpdb->prefix."posts SET adl_exportiert=1 WHERE ID=".$bestellID; $wpdb->query($befehl); } /* offene Tags schließen und Daten ebenfalls schließen */ fwrite($datei,""); fclose($datei); return $anzahlBestellungen; } /** * ersetze Sonderzeichen * * @since 0.1 * @change */ function ersetzeSonderzeichen ($zeichenkette) { $zeichenkette=str_replace('€','EUR',$zeichenkette); /* $zeichenkette=htmlentities ($zeichenkette, ENT_QUOTES, 'UTF-8');*/ $zeichenkette=htmlspecialchars ($zeichenkette, ENT_QUOTES, 'UTF-8'); $zeichenkette=str_replace('#039','apos',$zeichenkette); /* sonst funktionieren die einfachen Anführungszeichen nicht */ $zeichenkette=str_replace('amp;','',$zeichenkette); /* sonst funktionieren die >< nicht */ return $zeichenkette; } function debug_view ($name,$what) { echo "\n
$name: ";
    if ( is_array( $what ) )  {
        print_r ( $what );
    } else {
        var_dump ( $what );
    }
    echo "
\n"; } ?>