Ich versuche, das Steueretikett in WooCommerce für jede Bestellposition zu erhalten.
Zum Beispiel: 2x Produkt 1 – 19 % MwSt. (MwSt.) 4x Produkt 2 – 19 % MwSt. (MwSt.) 1x Produkt 2 – 19 % MwSt. (MwSt)
Also habe ich in den Woocommerce-Einstellungen die Steuern „19 % (Steuer)“ als Standardwert und „7 % (Steuer)“ als reduzierte Steuer hinzugefügt. Ich habe auch eingestellt, dass ich Preise in WooCommerce “ohne Steuern” anzeigen und eingeben möchte.
Jetzt habe ich eine Bestellung mit diesen beiden Artikeln (digital und herunterladbar) aufgegeben und danach versuche ich, die Steuerwerte jeder Bestellposition zu erhalten.
$wc_order = wc_get_order(143);
foreach ($wc_order->get_items(array('line_item')) as $item_id => $line_item) {
$order_product_detail = $line_item->get_data();
$item_tax_class = $order_product_detail['tax_class'];
$item_subtotal_tax = $order_product_detail['subtotal_tax'];
$item_total_tax = $order_product_detail['total_tax'];
$item_taxes_array = $order_product_detail['taxes'];
var_dump($item_tax_class);
var_dump($item_subtotal_tax);
var_dump($item_total_tax);
var_dump($item_taxes_array);
}
Dies ist die Ausgabe:
string(0) "" string(4) "0.76" string(6) "0.2185" array(2) { ["total"]=> array(1) { [1]=> string(6) "0.2185" } ["subtotal"]=> array(1) { [1]=> string(4) "0.76" } } string(0) "" string(4) "0.38" string(6) "0.2451" array(2) { ["total"]=> array(1) { [1]=> string(6) "0.2451" } ["subtotal"]=> array(1) { [1]=> string(4) "0.38" } } string(0) "" string(4) "2.85" string(5) "2.166" array(2) { ["total"]=> array(1) { [1]=> string(5) "2.166" } ["subtotal"]=> array(1) { [1]=> string(4) "2.85" } } string(0) "" string(4) "0.76" string(6) "0.6251" array(2) { ["total"]=> array(1) { [1]=> string(6) "0.6251" } ["subtotal"]=> array(1) { [1]=> string(4) "0.76" } } string(0) "" string(4) "0.95" string(6) "0.8151" array(2) { ["total"]=> array(1) { [1]=> string(6) "0.8151" } ["subtotal"]=> array(1) { [1]=> string(4) "0.95" } } string(0) "" string(4) "1.14" string(6) "1.0051" array(2) { ["total"]=> array(1) { [1]=> string(6) "1.0051" } ["subtotal"]=> array(1) { [1]=> string(4) "1.14" } } string(0) "" string(4) "1.52" string(6) "1.3851" array(2) { ["total"]=> array(1) { [1]=> string(6) "1.3851" } ["subtotal"]=> array(1) { [1]=> string(4) "1.52" } }
Da mir dies nicht die Bezeichnung der Steuer pro Position gibt, habe ich Folgendes versucht:
$wc_order = wc_get_order(143);
foreach ($wc_order->get_items(array('line_item')) as $item_id => $line_item) {
$order_item_tax = new WC_Order_Item_Tax($item_id);
var_dump($order_item_tax->get_label());
}
Dies ist die Ausgabe:
string(14) "Mehrwertsteuer" string(14) "Mehrwertsteuer" string(14) "Mehrwertsteuer" string(14) "Mehrwertsteuer" string(14) "Mehrwertsteuer" string(14) "Mehrwertsteuer" string(14) "Mehrwertsteuer"
Es müssten aber “19 % MwSt.” sein.
Also habe ich dieses ausprobiert:
$wc_order = wc_get_order(143);
foreach ($wc_order->get_items(array('tax')) as $item_id => $line_item) {
var_dump($line_item->get_label());
}
Dies gibt aus:
string(10) "19 % MwSt."
Also ja, das ist der Wert, den ich brauche, aber warum wird dieser Wert nur einmal ausgegeben, da ich sieben Artikel in der Bestellung habe?
Gibt es eine Möglichkeit, das Steueretikett jeder Bestellposition zu erhalten, oder ist dies in WooCommerce nicht möglich? Mein Ziel ist es, ein Rechnungsprogramm zu erstellen, aber ich muss berücksichtigen, ob es unterschiedliche Steuersätze pro Zeile gibt.
WooCommerce-Version ist 3.4.2
Danke im Voraus