autoship_get_calculated_scheduled_order_item_sale_price (function)
(src/scheduled-orders.php) Used to retrieve or calculate the supplied Scheduled Order items sale price including coupon discounts. It takes the $scheduled_item (array) and $scheduled_order (array) as its parameters
Code
* Retrieves or Calculates the supplied Scheduled Order items sale price including coupon discounts. * * @param array $scheduled_item An Array of Scheduled Order Item data. * @param array $scheduled_order The Scheduled Order data * @return float the price */ function autoship_get_calculated_scheduled_order_item_sale_price( $scheduled_item, $scheduled_order ){ // Get any Discounts that need to be re-applied $discounts = autoship_get_valid_coupons_from_order( $scheduled_order ); // Get the price to use $price = !empty( $scheduled_item['salePrice'] ) ? $scheduled_item['salePrice'] : $scheduled_item['price']; if ( apply_filters( 'autoship_exclude_product_coupon_discounts_in_saleprice', false ) ) return $price; /** * Apply the discounts */ foreach ( $discounts as $code => $coupon ) { // Confirm the product for this coupon is still on the order if ( $coupon['productDiscountNotAppliesWhenItHasSalePrice'] && !empty( $scheduled_item['salePrice'] ) ) continue; if ( 'ReduceProductPriceByPercentage' == $coupon['discountType'] && !empty( $coupon['productGroupId'] ) && !empty( $scheduled_item['product']['productGroupIds'] ) && in_array( $coupon['productGroupId'], $scheduled_item['product']['productGroupIds'] ) ){ // Calculate the new sale price $price = $price - ( $price * ( $coupon['amount'] / 100 ) ); } else if ( 'ReduceProductPriceByPercentage' == $coupon['discountType'] && isset( $coupon['product'] ) && ( $coupon['product']['externalId'] == $scheduled_item['productId'] ) ){ // Calculate the new sale price $price = $price - ( $price * ( $coupon['amount'] / 100 ) ); } else if ( 'ReduceProductPriceByAmount' == $coupon['discountType'] && !empty( $coupon['productGroupId'] ) && !empty( $scheduled_item['product']['productGroupIds'] ) && in_array( $coupon['productGroupId'], $scheduled_item['product']['productGroupIds'] ) ){ // Calculate the new sale price $discount_price = $price - $coupon['amount']; $price = $discount_price >= 0 ? $discount_price : 0; } else if ( 'ReduceProductPriceByAmount' == $coupon['discountType'] && isset( $coupon['product'] ) && ( $coupon['product']['externalId'] == $scheduled_item['productId'] ) ){ // Calculate the new sale price $discount_price = $price - $coupon['amount']; $price = $discount_price >= 0 ? $discount_price : 0; } // Check if the price is reduced to Free & stop discounts if ( !$price ) return 0; } return $price; }