Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- add_filter( 'wcfmmp_commission_deducted_tax', function( $commission_tax, $vendor_id, $product_id, $variation_id, $order_id, $total_commission, $commission_rule ) {
- global $WCFMmp;
- if( apply_filters( 'wcfm_is_admin_fee_mode', false ) ) {
- remove_filter( 'wcfmmp_commission_deducted_tax', array($WCFMmp->wcfmmp_commission, 'wcfmmp_commission_deducted_tax_admin_mode_handler' ), 100 );
- $commission_meta_key = '_wcfmmp_vendor_commission_tax_'.$vendor_id.'_'.$product_id;
- if($variation_id) $commission_meta_key .= '_'.$variation_id;
- if($commission_tax = get_post_meta( $order_id, $commission_meta_key, true )) {
- return $commission_tax;
- }
- if( isset( $commission_rule['tax_enable'] ) && ( $commission_rule['tax_enable'] == 'yes' ) ) {
- $order = wc_get_order( $order_id );
- $admin_commission_amount = 0;
- $items = $order->get_items('line_item');
- foreach ($items as $item) {
- $line_item = new WC_Order_Item_Product($item);
- $order_item_id = $item->get_id();
- $pproduct_id = $line_item->get_product_id();
- $pvariation_id = $line_item->get_variation_id();
- $quantity = $line_item->get_quantity();
- $pvendor_id = wcfm_get_vendor_id_by_post( $pproduct_id );
- if( ( $pvariation_id && $variation_id && ( $variation_id == $pvariation_id ) ) || ( !$pvariation_id && $pproduct_id && ( $product_id == $pproduct_id ) ) ) {
- if( $pvendor_id && ( $pvendor_id == $vendor_id ) ) {
- $refunded_qty = $item_price = $item_qty = 0;
- if ( $refunded_amount = $order->get_total_refunded_for_item( absint( $order_item_id ) ) ) {
- $refunded_qty = $order->get_qty_refunded_for_item( absint( $order_item_id ) );
- $refunded_qty = $refunded_qty * -1;
- }
- $item_qty = $quantity - $refunded_qty;
- if( $WCFMmp->wcfmmp_vendor->is_vendor_deduct_discount( $vendor_id, $order_id ) ) {
- $item_price = $line_item->get_total() - $refunded_amount;
- } else {
- $item_price = $line_item->get_subtotal() - $refunded_amount;
- }
- $commission_amount = $WCFMmp->wcfmmp_commission->wcfmmp_get_order_item_commission( $order_id, $vendor_id, $product_id, $variation_id, $item_price, $item_qty, $commission_rule );
- $admin_commission_amount += $item_price - $commission_amount;
- }
- break;
- }
- }
- $shipping_items = $order->get_items('shipping');
- foreach ($shipping_items as $shipping_item_id => $shipping_item) {
- $order_item_shipping = new WC_Order_Item_Shipping($shipping_item_id);
- $shipping_vendor_id = $order_item_shipping->get_meta('vendor_id', true);
- $package_qty = $order_item_shipping->get_meta('package_qty', true);
- if( $shipping_vendor_id && $shipping_vendor_id == $vendor_id ) {
- $shipping_item_total = $order_item_shipping->get_total();
- $shipping_item_total = ($shipping_item_total/$package_qty) * $quantity ;
- $admin_commission_amount += $shipping_item_total;
- }
- }
- $commission_tax = $admin_commission_amount * ( (float)$commission_rule['tax_percent'] / 100 );
- $commission_charge_processed = (array) get_post_meta($order_id, '_wcfmmp_vendors_commission_charge_meta_key', true);
- $commission_charge_processed[] = $commission_meta_key;
- update_post_meta( $order_id, '_wcfmmp_vendors_commission_charge_meta_key', $commission_charge_processed );
- update_post_meta( $order_id, $commission_meta_key, $commission_tax );
- }
- }
- return $commission_tax;
- }, 99, 7 );
- //Delete order meta keys on Order reset
- add_action( 'wcfm_manual_order_processed', function( $order_id, $order_posted, $order = '' ) {
- if ( ! $order_id ) return;
- if ( ! $order ) $order = wc_get_order( $order_id );
- if ( ! is_a( $order, 'WC_Order' ) ) return;
- $commission_charge_processed = (array) get_post_meta($order_id, '_wcfmmp_vendors_commission_charge_meta_key', true);
- foreach($commission_charge_processed as $commission_charge_meta_key) {
- delete_post_meta( $order_id, $commission_charge_meta_key );
- }
- delete_post_meta( $order_id, '_wcfmmp_vendors_commission_charge_meta_key' );
- }, 10, 3 );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement