autoship_qpilot_orders_update_via_rest_apply_coupons (function)

(src/coupons.php) Hooks into the Order Save and applies QPilot virtual coupons. Takes whether tax is applied and the order as parameters.

 
/**
 * Hook into the Order Save and Applies any QPilot Virtual Coupons
 * @param bool $and_taxes True if Taxes should be calculated.
 * @param WC_Abstract_Order $order The current order.
 */
 function autoship_qpilot_orders_update_via_rest_apply_coupons( $and_taxes, $order ){

  // Only continue if the order is via the rest api and if it's a
  if ( !( $order instanceof WC_Order ) || ( 'rest-api' != $order->get_created_via() ) )
 	return;

  // We Use the Processing ID to ensure even though the order came through rest-api it's
  // a QPilot generated order.
  $id = autoship_get_scheduled_order_processing_id( $order );
  if ( apply_filters( 'autoship_qpilot_orders_update_via_rest_apply_coupons', empty( $id ), $id, $order ) )
 	return;

  // Get the virtual coupons for the order and if they exist apply them.
  $coupons = autoship_get_order_associated_virtual_wc_coupons( $order );
  if ( !empty( $coupons ) ){

    /**
    * Iterate through associated coupons and apply them.
    * NOTE No need to check if they already exist since apply_coupon
    * does that and ignores if they do.
    */
    foreach ($coupons as $code => $coupon){
      $order->apply_coupon($coupon);
    }

  }

 }