Woocommerce pdf-инвойс: фильтруйте / сортируйте товары по налоговым ставкам и рассчитывайте цены товаров (сумма за идентификатор налоговой ставки) - PullRequest
0 голосов
/ 15 февраля 2019

Я делаю пользовательский расчет по счету woocommerce.В качестве плагина я использую woocommerce-pdf-invoices, и вычисления не будут сохранены в базе данных.

Я застрял в этой точке: для цен на товары я должен использовать foreach $ order-> get_items ()

Чтобы отфильтровать все продукты по идентификатору налоговой ставки, я должен использовать foreach $ order-> get_items ('tax')

Как я могу: - загрузить всетовары (налог и цены) - отфильтруйте / отсортируйте их по tax_rate_id

Это позволяет мне вычислять item_prices для идентификатора налоговой ставки (поэтому я также должен получить цены на товары)

КогдаЯ использую foreach для налога, а затем foreach для цен, позиции в счете-фактуре удваиваются, а итоговые значения для каждого tax_rate_id одинаковы.

Вот пример моего (неудачного) фрагментакод

if ( sizeof( $order->get_items() ) > 0 ) {
    foreach ( $order->get_items() as $item_key => $item_values ):
        foreach ( $order->get_items( 'tax' ) as $item_id => $item_tax ) :


            $item_id = $item_values->get_id();


            $item_name = $item_values->get_name(); // Name of the product
            $item_type = $item_values->get_type(); // Type of the order item ("line_item")

            $product_id = $item_values->get_product_id(); // the Product id
            $product    = $item_values->get_product(); // the WC_Product object


            $item_data = $item_values->get_data();

            $product_name      = $item_data['name'];
            $product_id        = $item_data['product_id'];
            $tax_class         = $item_data['tax_class'];
            $line_subtotal     = $item_data['subtotal'];
            $line_subtotal_tax = $item_data['subtotal_tax'];
            $line_total        = $item_data['total'];
            $line_total_tax    = $item_data['total_tax'];
            $item_tax_rate_id  = $item_tax['rate_id'];
            $item_tax_label    = $item_tax['label'];


            $product_type   = $product->get_type();
            $product_sku    = $product->get_sku();
            $product_price  = $product->get_price();
            $stock_quantity = $product->get_stock_quantity();

            if ( $item_tax_rate_id == 3 ) {


                $hoog += $product_price;

            }
            if ( $item_tax_rate_id == 1 ) {


                $laag += $product_price;

            }

        endforeach;
    endforeach;
}

Кстати, если есть более простой способ получить промежуточный итог по идентификатору налоговой ставки, пожалуйста, сообщите мне.Обычно я работаю с magento и продолжаю учиться каждый день.

так что я хочу: налоговая ставка 1 = (сумма цен на продукты с налоговой ставкой 1) налоговая ставка 2 = (сумма цен на продукты с налоговой ставкой2)

1 Ответ

0 голосов
/ 22 февраля 2019

Я получил ответ, к сожалению, не полностью, но он работает.Я все еще хотел бы получить код налоговой ставки.

foreach( $order->get_items() as $item ){
$tax_rates = WC_Tax::get_rates( $item->get_tax_class() );
$item_price = $item->get_total() + $item->get_total_tax();
if (!empty($tax_rates)) {
    $tax_rate = reset($tax_rates);
    $tax_rate =$tax_rate['rate'];
if (($tax_rate == 6) || ($tax_rate == 9)){

$low += $item_price ;



} 

if ($tax_rate == 21 ){

$high += $item_price ;


}


}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...