/** * Adjust totals display * @param array $total_rows * @param WC_Order $order * @return array */ public function woocommerce_get_order_item_totals($total_rows, $order) { if ($this->has_deposit($order)) { $remaining = 0; $paid = 0; foreach ($order->get_items() as $item) { if (WC_Deposits_Order_Item_Manager::is_deposit($item)) { if (!WC_Deposits_Order_Item_Manager::get_payment_plan($item)) { $remaining_balance_order_id = !empty($item['remaining_balance_order_id']) ? absint($item['remaining_balance_order_id']) : 0; $remaining_balance_paid = !empty($item['remaining_balance_paid']); if (empty($remaining_balance_order_id) && !$remaining_balance_paid) { $remaining += $item['deposit_full_amount'] - ($order->get_line_subtotal($item, true) + $item['line_tax']); } } } } // PAID scheduled orders $related_orders = WC_Deposits_Scheduled_Order_Manager::get_related_orders($order->id); foreach ($related_orders as $related_order_id) { $related_order = wc_get_order($related_order_id); if ($related_order->has_status('processing', 'completed')) { $paid += $related_order->get_total(); } else { $remaining += $related_order->get_total(); } } if ($remaining && $paid) { $total_rows['future'] = array('label' => __('Future Payments ', 'woocommerce-deposits'), 'value' => '<del>' . wc_price($remaining + $paid) . '</del> <ins>' . wc_price($remaining) . '</ins>'); } elseif ($remaining) { $total_rows['future'] = array('label' => __('Future Payments ', 'woocommerce-deposits'), 'value' => wc_price($remaining)); } } return $total_rows; }
/** * Get the class instance */ public static function get_instance() { return null === self::$instance ? self::$instance = new self() : self::$instance; }