private function updateProductMeta(ProductModel $product, \WC_Product $wcProduct)
{
$parent = $product->getMasterProductId()->getEndpoint();
$wcProduct->set_sku($product->getSku());
$wcProduct->set_parent_id(empty($parent) ? 0 : (int)$parent);
$wcProduct->set_menu_order($product->getSort());
$wcProduct->set_featured($product->getIsTopProduct());
$wcProduct->set_height($product->getHeight());
$wcProduct->set_length($product->getLength());
$wcProduct->set_width($product->getWidth());
$wcProduct->set_weight($product->getShippingWeight());
if (SupportedPlugins::isActive(SupportedPlugins:
LUGIN_WOOCOMMERCE_GERMANIZED)
|| SupportedPlugins::isActive(SupportedPlugins:
LUGIN_WOOCOMMERCE_GERMANIZED2)
|| SupportedPlugins::isActive(SupportedPlugins:
LUGIN_WOOCOMMERCE_GERMANIZEDPRO)) {
$productId = $product->getId()->getEndpoint();
if (Util::useGtinAsEanEnabled()) {
\update_post_meta(
$productId,
'_ts_gtin',
(string)$product->getEan(),
\get_post_meta($productId, '_ts_gtin', true)
);
\update_post_meta(
$productId,
'_ts_mpn',
(string)$product->getManufacturerNumber(),
\get_post_meta($productId, '_ts_mpn', true)
);
} else {
\update_post_meta(
$productId,
'_ts_gtin',
'',
\get_post_meta($productId, '_ts_gtin', true)
);
\update_post_meta(
$productId,
'_ts_mpn',
'',
\get_post_meta($productId, '_ts_mpn', true)
);
}
}
if (SupportedPlugins::isActive(SupportedPlugins:
LUGIN_GERMAN_MARKET)) {
$productId = $product->getId()->getEndpoint();
if (Util::useGtinAsEanEnabled()) {
\update_post_meta(
$productId,
'_gm_gtin',
(string)$product->getEan(),
\get_post_meta($productId, '_gm_gtin', true)
);
} else {
\update_post_meta(
$productId,
'_gm_gtin',
'',
\get_post_meta($productId, '_gm_gtin', true)
);
}
}
if (!is_null($product->getModified())) {
$wcProduct->set_date_modified($product->getModified()->getTimestamp());
}
if (!is_null($product->getTaxClassId()) && !empty($product->getTaxClassId()->getEndpoint())) {
$taxClassName = $product->getTaxClassId()->getEndpoint();
} else {
$taxClassName = $this->database->queryOne(SqlHelper::taxClassByRate($product->getVat())) ?? '';
if (count($product->getTaxRates()) > 0 && !is_null($product->getTaxClassId())) {
$taxClassName = $this->findTaxClassName(...$product->getTaxRates()) ?? $taxClassName;
//$product->getTaxClassId()->setEndpoint($taxClassName === '' ? 'default' : $taxClassName);
}
}
$wcProduct->set_tax_class($taxClassName === 'default' ? '' : $taxClassName);
$wcProduct->save();
$tags = array_map('trim', explode(' ', $product->getKeywords()));
\wp_set_post_terms($wcProduct->get_id(), implode(',', $tags), 'product_tag', false);
$shippingClass = get_term_by(
'id',
\wc_clean($product->getShippingClassId()->getEndpoint()),
'product_shipping_class'
);
if (!empty($shippingClass)) {
\wp_set_object_terms(
$wcProduct->get_id(),
$shippingClass->term_id,
'product_shipping_class',
false
);
}
//Map to Delivery-time
(new ProductDeliveryTime())->pushData($product, $wcProduct);
//Map to Manufacturer
(new ProductManufacturer())->pushData($product);
}