WooCommerce: Uzyskaj eksport zamówień z liniami podatkowymi

Dec 01 2020

Chcę wyeksportować wszystkie moje zamówienia z liniami podatkowymi oddzielonymi stawką podatku.

Na przykład: Zamówienie może mieć stawki podatkowe 7% i 19%. Jeśli zamówienie obejmuje produkty z obiema stawkami podatku, otrzymam tylko jedną łączną kwotę podatku.

Powiedzmy, że zamówienie obejmuje dwa produkty po 100 € każdy. Będą następujące podatki:

  • 100 € po obniżonej stawce: 7 €
  • 100 € stawka domyślna: 19 €
  • podatki łącznie: 26 €

Używam następującego kodu (fragment) do eksportu danych zamówienia:

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

Po pobraniu danych muszę je przechowywać w tablicy:

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

Potrzebuję stałej kolumny (jak $order_date_createdpowyżej) dla każdej stawki podatku.

Lubić:

  • Kolumna 1: stawka podatku - 7%
  • Kolumna 2: kwota podatku - 7 €
  • Kolumna 3: stawka podatku - 19%
  • Kolumna 4: kwota podatku - 19 €

Jeśli nie ma kwoty dla stawki podatku, kolumna może być pusta.

Wiem, że istnieje właściwość zamówienia o nazwie tax_lines. Ale to tablica i nie wiem, jak jej używać. Nieruchomość tax_linesma własne właściwości linii podatkowych .

Czy ktoś ma wskazówkę, jak uzyskać te wartości z zamówienia?

EDYCJA: znalazłem fragment w innym pytaniu :

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>';
        }

Wygląda dobrze, ale nie jestem pewien, jak go użyć z moim przykładem kodu i przechowywać go w mojej tablicy.

EDYCJA 2: Po dłuższym kopaniu znalazłem WC_Order_Item_Tax obiekt, który zawiera pozycje podatku od zamówienia. Próbowałem więc użyć tych danych, ale jest to ogromny obiekt i nie jestem pewien, jak wybrać dane i pokazać je w prawej kolumnie.

Wygląda to tak (jest ich dużo więcej). I muszę wybrać podatek przez rate_idnp .:

[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] => 
                )

Odpowiedzi

1 LoicTheAztec Dec 02 2020 at 01:27

Możesz go użyć w ten sposób, może być po tej linii kodu

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

Następnie pętla foreach z pozycjami stawki podatku i WC_Taxmetodąget_rate_percent() uzyskiwania procentowej stawki podatku w następujący sposób:

// 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
    );
}

Związane z:

  • Jak uzyskać szczegóły dotyczące podatku od zamówienia i stawki w WooCommerce?
  • Uzyskaj oddzielne sumy podatków zamówienia z klasą podatkową