public function getRefundableProducts($bIncludeUnconfirmedTransactions = true)
    {
        $aProductList = array();
        $oOrderItemList = $this->order->GetFieldShopOrderItemList();
        $oOrderItemList->GoToStart();
        while ($oOrderItem = $oOrderItemList->Next()) {
            $iBilled = $this->getProductAmountWithTransactionType(
                $oOrderItem->id,
                self::TRANSACTION_TYPE_PAYMENT,
                false
            );
            $iRefunded = $this->getProductAmountWithTransactionType(
                $oOrderItem->id,
                self::TRANSACTION_TYPE_CREDIT,
                $bIncludeUnconfirmedTransactions
            );
            $iRefunded += $this->getProductAmountWithTransactionType(
                $oOrderItem->id,
                self::TRANSACTION_TYPE_PAYMENT_REVERSAL,
                $bIncludeUnconfirmedTransactions
            );
            $iRefundable = round($iBilled + $iRefunded);
            if ($iRefundable > 0) {
                $aProductList[$oOrderItem->id] = $iRefundable;
            }
        }
        $oOrderItemList->GoToStart();

        return $aProductList;
    }