在WooCommerce中以编程方式创建税种

时间:2019-08-29 10:32:29

标签: php wordpress woocommerce

我希望在要分配给产品的不同类别中包括不同类型的税收。不幸的是,使用下面的代码,我将所有税款按标准税率计算,因此以后无法将其分配给产品。

enter image description here

问题是我无法以编程方式创建新的附加税种。

$tax_data = array(
   'tax_rate_country' => '*', 
   'tax_rate_state' => '*', 
   'tax_rate' => $tax_rate, 
   'tax_rate_name' => $tax_rate_name, 
   'tax_rate_priority' => 1, 
   'tax_rate_compound' => 0, 
   'tax_rate_shipping' => 1, 
   'tax_rate_order' => 0, 
   'tax_rate_class' => $tax_rate_class
);

$tax_rate_id = WC_Tax::_insert_tax_rate( $tax_data );
WC_Tax::_update_tax_rate_postcodes($tax_rate_id, wc_clean('*'));
WC_Tax::_update_tax_rate_cities($tax_rate_id, wc_clean('*'));

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

我开发了一个函数,在这里我简化为一个骨架,对我有用。

$tax_classes = "";

foreach( $taxes_list as $tax ) {
    $tax_information_id = $tax->KODE->__toString();
    $tax_classes .= sanitize_title( $tax_information_id ) . "\n";
}

if ( get_option( "woocommerce_tax_classes" ) ) {
   update_option( "woocommerce_tax_classes", $tax_classes );
}

foreach( $taxes_list as $tax ) {
    $tax_data = array(
      'tax_rate_country' => '*',
      'tax_rate_state' => '*',
      'tax_rate' => $tax["vat"],
      'tax_rate_name' => $tax["name"],
      'tax_rate_priority' => 1,
      'tax_rate_compound' => 0,
      'tax_rate_shipping' => 1,
      'tax_rate_order' => 0,
      'tax_rate_class' => sanitize_title( $tax["code"] )
  );

   $tax_rate_id = WC_Tax::_insert_tax_rate( $tax_data );
   WC_Tax::_update_tax_rate_postcodes($tax_rate_id, wc_clean('*'));
   WC_Tax::_update_tax_rate_cities($tax_rate_id, wc_clean('*'));
 }

答案 1 :(得分:0)

$tax_class_name = 'GST-15';
$tax_class_slug = 'gst-15';
$tax_rate = 8;
$tax_rate_name = 'SGST';

// Create tax classs
$tax_class = WC_Tax::create_tax_class($tax_class_name,$tax_class_slug);

//Invalidate the cache

WC_Cache_Helper::invalidate_cache_group( 'taxes' );
WC_Cache_Helper::get_transient_version( 'shipping', true );

//Attached the tax_rate to tax_class
$tax_rate_data = array(
    'tax_rate_country' => '*',
    'tax_rate_state' => '*',
    'tax_rate' => $tax_rate,
    'tax_rate_name' => $tax_rate_name,
    'tax_rate_priority' => 1,
    'tax_rate_compound' => 0,
    'tax_rate_shipping' => 1,
    'tax_rate_order' => 0,
    'tax_rate_class' => $tax_class_slug
);

$tax_rate_id = WC_Tax::_insert_tax_rate( $tax_rate_data );