Fix assigment order issues
This commit is contained in:
@@ -16,8 +16,10 @@ class Wiaas_Access_Management {
|
||||
|
||||
add_action( 'save_post', array( __CLASS__, 'maybe_handle_product_access' ), 999, 2 );
|
||||
|
||||
add_action('woocommerce_new_order', array( __CLASS__, 'assign_order_to_organization' ));
|
||||
add_action('woocommerce_payment_complete', array( __CLASS__, 'assign_order_to_suppliers'),20,1 );
|
||||
add_action('woocommerce_checkout_order_processed', array( __CLASS__, 'assign_order_to_customer_organization' ));
|
||||
add_action('woocommerce_checkout_order_processed', array( __CLASS__, 'assign_order_to_commercial_lead_organization' ));
|
||||
add_action('woocommerce_checkout_order_processed', array( __CLASS__, 'assign_order_to_supplier_organizations'));
|
||||
add_action('wiaas_order_item_installation_assigned', array(__CLASS__, 'assign_order_to_installation_organization'), 10, 3);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -43,6 +45,7 @@ class Wiaas_Access_Management {
|
||||
empty(Wiaas_Package_Pricing::get_package_prices($product))) {
|
||||
|
||||
$access_group = Groups_Group::read_by_name('admin');
|
||||
|
||||
} else {
|
||||
|
||||
$access_group = Groups_Group::read_by_name('Registered');
|
||||
@@ -64,13 +67,20 @@ class Wiaas_Access_Management {
|
||||
*
|
||||
* @param int $order_id
|
||||
*/
|
||||
public static function assign_order_to_organization($order_id) {
|
||||
public static function assign_order_to_customer_organization($order_id) {
|
||||
// assign order to customer organization
|
||||
$customer_id = wiaas_get_current_user_organization_id();
|
||||
Wiaas_User_Organization::assign_post_to_organization($order_id, $customer_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Assign order to commercial lead organization
|
||||
*
|
||||
* @param int $order_id
|
||||
*/
|
||||
public static function assign_order_to_commercial_lead_organization($order_id) {
|
||||
$order = wc_get_order($order_id);
|
||||
|
||||
// assign order to commercial lead organization
|
||||
$commercial_lead_id = absint($order->get_meta('_wiaas_commercial_lead_id', true));
|
||||
if ($commercial_lead_id) {
|
||||
Wiaas_User_Organization::assign_post_to_organization($order_id, $commercial_lead_id);
|
||||
@@ -79,24 +89,46 @@ class Wiaas_Access_Management {
|
||||
}
|
||||
|
||||
/**
|
||||
* Assignees order to supplier organizations extracted from ordered items when order payment is complete.
|
||||
* Assignees order to supplier organizations extracted from ordered items except installation
|
||||
*
|
||||
* Order will be assigned to corresponding installation company during delivery process
|
||||
*
|
||||
* @param int $order_id
|
||||
*/
|
||||
public static function assign_order_to_suppliers($order_id){
|
||||
public static function assign_order_to_supplier_organizations($order_id) {
|
||||
|
||||
$order = wc_get_order($order_id);
|
||||
$product_from_order = $order->get_items('line_item');
|
||||
$order = wc_get_order($order_id);
|
||||
|
||||
foreach ($product_from_order as $product_item) {
|
||||
$order_items = $order->get_items('line_item');
|
||||
|
||||
$supplier_organisation_id = Wiaas_Product_Supplier
|
||||
::get_supplier_organisation_id_from_product($product_item->get_product_id());
|
||||
foreach ($order_items as $key => $order_item) {
|
||||
|
||||
Wiaas_User_Organization::assign_post_to_organization($order_id, $supplier_organisation_id);
|
||||
$supplier_organisation_id = $order_item->get_meta('_wiaas_supplier_organization_id');
|
||||
|
||||
if (! empty($supplier_organisation_id) && $order_item->get_meta('_wiaas_category') !== 'installation') {
|
||||
|
||||
Wiaas_User_Organization::assign_post_to_organization($order_id, $supplier_organisation_id);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Assign order to installation organization that handles installation of corresponding ordered bundle item
|
||||
*
|
||||
* @param WC_Order $order
|
||||
* @param WC_Order_Item $bundle_item
|
||||
* @param WC_Order_Item $installation_item
|
||||
*/
|
||||
public static function assign_order_to_installation_organization($order, $bundle_item, $installation_item) {
|
||||
|
||||
$supplier_organisation_id = $installation_item->get_meta('_wiaas_supplier_organization_id');
|
||||
|
||||
if (! empty($supplier_organisation_id) ) {
|
||||
|
||||
Wiaas_User_Organization::assign_post_to_organization($order->get_id(), $supplier_organisation_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Wiaas_Access_Management::init();
|
||||
|
||||
Reference in New Issue
Block a user