WooCommerce: Holen Sie sich den Auftragsexport mit Steuerzeilen
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_created
oben) 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_lines
hat 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_id
zum 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
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