update package status on product update

This commit is contained in:
Bilal Catic
2018-10-09 14:34:10 +02:00
parent c7e8a526e0
commit afe4ac1676
2 changed files with 50 additions and 1 deletions

View File

@@ -4,7 +4,8 @@ class Wiaas_Product {
public static function init() {
require_once dirname( __FILE__ ) . '/product/class-wiaas-product-category.php';
require_once dirname( __FILE__ ) . '/product/class-wiaas-product-supplier.php';
require_once dirname( __FILE__ ) . '/product/class-wiaas-product-supplier.php';
require_once dirname( __FILE__ ) . '/product/class-wiaas-product-hooks.php';
}
}

View File

@@ -0,0 +1,48 @@
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
/**
* Subscribe to woocommerce product actions
*
* Class Wiaas_Product_Hooks
*/
class Wiaas_Product_Hooks {
public static function init() {
add_action('woocommerce_update_product', array(__CLASS__, 'on_product_update' ), 10, 1 );
}
/**
* Executes when woocommerce product is updated
*/
public static function on_product_update($product_id) {
$product = wc_get_product($product_id);
if ($product->get_type() === WC_Product_Simple::get_type()){
$product_price = Wiaas_Product_Pricing::get_product_price($product);
$packages_containing_updated_product = wc_pb_get_bundled_product_map( $product );
foreach($packages_containing_updated_product as $index => $package_id){
$package = new WC_Product_Bundle($package_id);
$package_total_cost = Wiaas_Pricing::get_package_total_cost($package);
$package_max_cost_margin = Wiaas_Package_Pricing::get_package_max_cost_margin($package);
if (($package_max_cost_margin !== 0) && ($package_total_cost > $package_max_cost_margin)){
Wiaas_Package_Status::set_package_status($package_id, Wiaas_Package_Status::INVALID_MARGIN);
}else{
//TODO: Check if template is valid
Wiaas_Package_Status::set_package_status($package_id, Wiaas_Package_Status::AVAILABLE);
}
}
}
}
}
Wiaas_Product_Hooks::init();