WooCommerce: Holen Sie sich den Auftragsexport mit Steuerzeilen

Dec 01 2020

Ich möchte alle meine Bestellungen mit den durch den Steuersatz getrennten Steuerzeilen exportieren.

Zum Beispiel: Eine Bestellung kann Steuersätze von 7% und 19% haben. Wenn die Bestellung Produkte mit beiden Steuersätzen enthält, erhalte ich nur einen kombinierten Steuerbetrag.

Angenommen, die Bestellung enthält zwei Produkte für jeweils 100 €. Es würde folgende Steuern geben:

  • 100 € zum ermäßigten Preis: 7 €
  • 100 € bei Ausfallrate: 19 €
  • Steuern zusammen: 26 €

Ich verwende den folgenden Code (Auszug), um Auftragsdaten zu exportieren:

$order_data = $order->get_data(); // The Order data 
$order_date_created = $order_data['date_created']->date('d.m.Y'); // Example for oder creation date

Nachdem ich die Daten erhalten habe, muss ich sie in einem Array speichern:

$custom_data = array( 'custom_order_date_created' => $custom_order_date_created,
)

Was ich brauche, ist eine feste Spalte (wie $order_date_createdoben) für jeden Steuersatz.

Mögen:

  • Spalte 1: Steuersatz - 7%
  • Spalte 2: Steuerbetrag - 7 €
  • Spalte 3: Steuersatz - 19%
  • Spalte 4: Steuerbetrag - 19 €

Wenn für einen Steuersatz kein Betrag vorhanden ist, kann die Spalte leer sein.

Ich weiß, dass es eine Order-Eigenschaft namens gibt tax_lines. Aber es ist ein Array und ich weiß nicht, wie ich es verwenden soll. Die Eigenschaft tax_lineshat einige eigene Steuerlinien Eigenschaften .

Hat jemand eine Ahnung, wie man diese Werte aus einer Bestellung erhält?

EDIT: Ich habe einen Ausschnitt in einer anderen Frage gefunden :

foreach ( $order->get_tax_totals() as $rate_code => $tax ) {
            $tax_rate_id = $tax->rate_id;
            $tax_label = $tax->label;
            $tax_amount = $tax->amount;
            $tax_f_amount = $tax->formatted_amount;
            $compound = $tax->is_compound;
            echo '<tr><td>' . $tax_label . ': </td><td>' . $tax_f_amount . '</td></tr>';
        }

Es sieht richtig aus, aber ich bin nicht sicher, wie ich es mit meinem Codebeispiel verwenden und in meinem Array speichern soll.

EDIT 2: Nach einigem Graben habe ich das WC_Order_Item_Tax Objekt gefunden, in dem sich die Bestellsteuerposten befinden. Also habe ich versucht, diese Daten zu verwenden, aber es ist ein riesiges Objekt, und ich bin mir nicht sicher, wie ich die Daten auswählen und in der rechten Spalte anzeigen soll.

Es sieht so aus (es gibt noch viel mehr). Und ich muss die Steuer rate_idzum Beispiel auswählen durch :

[4543] => WC_Order_Item_Tax Object
        (
            [extra_data:protected] => Array
                (
                    [rate_code] => 
                    [rate_id] => 0
                    [label] => 
                    [compound] => 
                    [tax_total] => 0
                    [shipping_tax_total] => 0
                    [rate_percent] => 
                )

            [data:protected] => Array
                (
                    [order_id] => 11244
                    [name] => 
                    [rate_code] => DE-MWST.-1
                    [rate_id] => 1
                    [label] => MwSt.
                    [compound] => 1
                    [tax_total] => 7.54
                    [shipping_tax_total] => 0
                    [rate_percent] => 16
                )

            [cache_group:protected] => order-items
            [meta_type:protected] => order_item
            [object_type:protected] => order_item
            [id:protected] => 4543
            [changes:protected] => Array
                (
                )

            [object_read:protected] => 1
            [default_data:protected] => Array
                (
                    [order_id] => 0
                    [name] => 
                    [rate_code] => 
                    [rate_id] => 0
                    [label] => 
                    [compound] => 
                    [tax_total] => 0
                    [shipping_tax_total] => 0
                    [rate_percent] => 
                )

Antworten

1 LoicTheAztec Dec 02 2020 at 01:27

Sie können es so verwenden, möglicherweise nach dieser Codezeile

$custom_data = array( 'custom_order_date_created' => $custom_order_date_created,
)

Dann die foreach-Schleife mit Steuersatzpositionen und unter Verwendung der WC_TaxMethodeget_rate_percent() , um den Steuersatzprozentsatz wie folgt zu erhalten:

// Loop through order tax items
foreach ( $order->get_tax_totals() as $rate_code => $tax ) { // Store it in the array $custom_data['taxes'][] = array(
        'tax_rate'   =>  WC_Tax::get_rate_percent($tax->rate_id), // <=== the tax rate percentage 'tax_amount' => $tax->formatted_amount
    );
}

Verbunden:

  • Wie erhalte ich Bestellsteuerdetails und -sätze in WooCommerce?
  • Erhalten Sie separate Steuersummen der Bestellung mit Steuerklasse