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', 'adlib-woo2lex-manuell'),__('Datenexport', 'adlib-woo2lex-manuell'),'export','adlib_export_manuell','fuellePluginmenu',plugin_dir_url( __FILE__ ).'export.png','81.10001'); } /** * Pluginmenü mit Infos füllen * * @since 0.1 * @change */ function fuellePluginmenu() { ?>

Lexware.

PayPal . eMail

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": $artikelID=$wertArtikeldaten->meta_value; /* Die Artikelnummer ermitteln */ $abfrage="SELECT meta_value FROM ".$wpdb->prefix."postmeta WHERE post_id=$artikelID AND meta_key='_sku'"; $adlib_bestelldaten['artikel'][$artikelzaehler]['artikel_nummer']=$wpdb->get_var($abfrage); /*$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 */ $adlib_bestelldaten['remark_shipping_fee']=""; foreach ($ergebnisFracht as $wertFrachtdaten) { if ($wertFrachtdaten->meta_key=="cost") { $adlib_bestelldaten['remark_shipping_fee']=$wertFrachtdaten->meta_value; } } } } /* debug_view("adlib_bestelldaten",$adlib_bestelldaten);*/ /* debug_view("ergebnisArtikelliste",$ergebnisArtikelliste); debug_view("artikelnummer",$artikelnummer); debug_view("ergebnisArtikel",$ergebnisArtikel);*/ /* 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; /* debug_view("Befehl",$befehl);*/ $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=htmlspecialchars ($zeichenkette, ENT_QUOTES, 'UTF-8'); $zeichenkette=str_replace('#039','apos',$zeichenkette); /* sonst funktionieren die einfachen Anführungszeichen nicht */ /* debug_view("zeichenkette",$zeichenkette);*/ return $zeichenkette; } /** * Spracheinbindung * * @since 0.2 * @change 0.2 */ function load_plugin_language() { load_plugin_textdomain('adlib-woo2lex-manuell', false, basename(dirname(__FILE__)).'/lang'); } function debug_view ($name,$what) { echo "\n
$name: ";
    if ( is_array( $what ) )  {
        print_r ( $what );
    } else {
        var_dump ( $what );
    }
    echo "
\n"; } ?>