/**
 * Get Account Balance Action Sample
 * 
 * Returns the account balance for an account in real time.
 *   
 * @param Amazon_FPS_Interface $service instance of Amazon_FPS_Interface
 * @param mixed $request Amazon_FPS_Model_GetAccountBalance or array of parameters
 */
function invokeGetAccountBalance(Amazon_FPS_Interface $service, $request)
{
    try {
        $response = $service->getAccountBalance($request);
        echo "Service Response\n";
        echo "=============================================================================\n";
        echo "        GetAccountBalanceResponse\n";
        if ($response->isSetGetAccountBalanceResult()) {
            echo "            GetAccountBalanceResult\n";
            $getAccountBalanceResult = $response->getGetAccountBalanceResult();
            if ($getAccountBalanceResult->isSetAccountBalance()) {
                echo "                AccountBalance\n";
                $accountBalance = $getAccountBalanceResult->getAccountBalance();
                if ($accountBalance->isSetTotalBalance()) {
                    echo "                    TotalBalance\n";
                    $totalBalance = $accountBalance->getTotalBalance();
                    if ($totalBalance->isSetCurrencyCode()) {
                        echo "                        CurrencyCode\n";
                        echo "                            " . $totalBalance->getCurrencyCode() . "\n";
                    }
                    if ($totalBalance->isSetValue()) {
                        echo "                        Value\n";
                        echo "                            " . $totalBalance->getValue() . "\n";
                    }
                }
                if ($accountBalance->isSetPendingInBalance()) {
                    echo "                    PendingInBalance\n";
                    $pendingInBalance = $accountBalance->getPendingInBalance();
                    if ($pendingInBalance->isSetCurrencyCode()) {
                        echo "                        CurrencyCode\n";
                        echo "                            " . $pendingInBalance->getCurrencyCode() . "\n";
                    }
                    if ($pendingInBalance->isSetValue()) {
                        echo "                        Value\n";
                        echo "                            " . $pendingInBalance->getValue() . "\n";
                    }
                }
                if ($accountBalance->isSetPendingOutBalance()) {
                    echo "                    PendingOutBalance\n";
                    $pendingOutBalance = $accountBalance->getPendingOutBalance();
                    if ($pendingOutBalance->isSetCurrencyCode()) {
                        echo "                        CurrencyCode\n";
                        echo "                            " . $pendingOutBalance->getCurrencyCode() . "\n";
                    }
                    if ($pendingOutBalance->isSetValue()) {
                        echo "                        Value\n";
                        echo "                            " . $pendingOutBalance->getValue() . "\n";
                    }
                }
                if ($accountBalance->isSetAvailableBalances()) {
                    echo "                    AvailableBalances\n";
                    $availableBalances = $accountBalance->getAvailableBalances();
                    if ($availableBalances->isSetDisburseBalance()) {
                        echo "                        DisburseBalance\n";
                        $disburseBalance = $availableBalances->getDisburseBalance();
                        if ($disburseBalance->isSetCurrencyCode()) {
                            echo "                            CurrencyCode\n";
                            echo "                                " . $disburseBalance->getCurrencyCode() . "\n";
                        }
                        if ($disburseBalance->isSetValue()) {
                            echo "                            Value\n";
                            echo "                                " . $disburseBalance->getValue() . "\n";
                        }
                    }
                    if ($availableBalances->isSetRefundBalance()) {
                        echo "                        RefundBalance\n";
                        $refundBalance = $availableBalances->getRefundBalance();
                        if ($refundBalance->isSetCurrencyCode()) {
                            echo "                            CurrencyCode\n";
                            echo "                                " . $refundBalance->getCurrencyCode() . "\n";
                        }
                        if ($refundBalance->isSetValue()) {
                            echo "                            Value\n";
                            echo "                                " . $refundBalance->getValue() . "\n";
                        }
                    }
                }
            }
        }
        if ($response->isSetResponseMetadata()) {
            echo "            ResponseMetadata\n";
            $responseMetadata = $response->getResponseMetadata();
            if ($responseMetadata->isSetRequestId()) {
                echo "                RequestId\n";
                echo "                    " . $responseMetadata->getRequestId() . "\n";
            }
        }
    } catch (Amazon_FPS_Exception $ex) {
        echo "Caught Exception: " . $ex->getMessage() . "\n";
        echo "Response Status Code: " . $ex->getStatusCode() . "\n";
        echo "Error Code: " . $ex->getErrorCode() . "\n";
        echo "Error Type: " . $ex->getErrorType() . "\n";
        echo "Request ID: " . $ex->getRequestId() . "\n";
        echo "XML: " . $ex->getXML() . "\n";
    }
}