WooCommerce: कर लाइनों के साथ आदेश निर्यात प्राप्त करें

Dec 01 2020

मैं अपने सभी आदेशों को कर की दर से अलग कर लाइनों के साथ निर्यात करना चाहता हूं।

उदाहरण के लिए: एक आदेश में कर की दर 7% और 19% हो सकती है। यदि आदेश में दोनों कर दरों वाले उत्पाद हैं, तो मुझे केवल एक संयुक्त कर राशि मिलती है।

मान लें कि ऑर्डर में 100 € प्रत्येक के लिए दो उत्पाद हैं। निम्नलिखित कर होंगे:

  • 100 € कम दर पर: 7 €
  • 100 € डिफ़ॉल्ट दर पर: 19 €
  • संयुक्त कर: 26 €

मैं ऑर्डर डेटा निर्यात करने के लिए निम्न कोड (अंश) का उपयोग कर रहा हूं:

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

डेटा प्राप्त करने के बाद, मुझे उन्हें एक सरणी में संग्रहीत करने की आवश्यकता है:

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

$order_date_createdप्रत्येक कर की दर के लिए मुझे एक निश्चित कॉलम ( ऊपर की तरह ) चाहिए।

पसंद:

  • कॉलम 1: कर की दर - 7%
  • कॉलम 2: कर राशि - 7 €
  • कॉलम 3: कर की दर - 19%
  • कॉलम 4: कर राशि - 19 €

यदि कर की दर के लिए कोई राशि नहीं है तो कॉलम खाली हो सकता है।

मुझे पता है कि एक आदेश संपत्ति कहा जाता है tax_lines। लेकिन यह एक सरणी है और मुझे नहीं पता कि इसका उपयोग कैसे करना है। संपत्ति tax_linesमें कुछ कर रेखाएँ हैं ।

क्या किसी को कोई सुराग है कि इन मूल्यों को एक आदेश से कैसे प्राप्त किया जाए?

संपादित करें: मैंने एक और प्रश्न में एक स्निपेट पाया :

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

यह सही लगता है, लेकिन मुझे यकीन नहीं है कि इसे मेरे कोड उदाहरण के साथ कैसे उपयोग किया जाए और इसे मेरे सरणी में संग्रहीत किया जाए।

EDIT 2: कुछ और खुदाई के बाद मुझे वह WC_Order_Item_Tax वस्तु मिली, जिसमें ऑर्डर कर वस्तुएं हैं। इसलिए मैंने उस डेटा का उपयोग करने की कोशिश की, लेकिन यह एक बहुत बड़ी वस्तु है और मुझे यकीन नहीं है कि डेटा का चयन कैसे करें और इसे सही कॉलम में दिखाएं।

यह इस तरह दिखता है (और भी बहुत कुछ है)। और मुझे rate_idउदाहरण के लिए कर का चयन करने की आवश्यकता है :

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

जवाब

1 LoicTheAztec Dec 02 2020 at 01:27

आप इसे इस तरह से उपयोग कर सकते हैं इस कोड लाइन के बाद हो सकता है

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

तब कर दर वस्तुओं के साथ फ़ॉरच लूप और कर दर प्रतिशत प्राप्त करने के लिए WC_Taxविधिget_rate_percent() का उपयोग इस प्रकार है:

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

सम्बंधित:

  • WooCommerce में ऑर्डर टैक्स विवरण और दरें कैसे प्राप्त करें?
  • कर वर्ग के साथ अलग-अलग ऑर्डर के कर योग प्राप्त करें