
    -- Select Audit CPC
    USE hahn;

    $ToDatetime = ($ts) -> {
        RETURN DateTime::MakeDatetime(DateTime::FromSeconds(CAST($ts AS Uint32)))
    };

    $LocalizeDatetime = ($dt) -> {
        RETURN DateTime::MakeTzDatetime(AddTimezone($dt, 'Europe/Moscow'))
    };

    $ToLocalTzDatetime = ($ts) -> {
        RETURN $LocalizeDatetime($ToDatetime($ts));
    };

    $GetAvailableExceedRate = ($clicks, $periodStartTime, $periodFinishTime) -> {
        RETURN  IF($clicks < 100 OR ($ToDatetime($periodFinishTime) - $ToDatetime($periodStartTime)) < DateTime::IntervalFromDays(7), 2.0, 1.0)
    };

    $rubCurID = 643;

    $rubCompensationLimit = 300;

    -- Arguments:
    $runTimestamp = 01012022;

    SELECT
        RunTime,
        LimitType,
        A.OrderID AS OrderID,
        $ToLocalTzDatetime(AutobudgetStartTime) AS AutobudgetStartTime,
        $ToLocalTzDatetime(PeriodStartTime) AS PeriodStartTime,
        $ToLocalTzDatetime(PeriodFinishTime) AS PeriodFinishTime,
        LimitAvgCPC,
        LimitAvgCPCCur,
        AvgCPC,
        AvgCPCCur,
        LimitBudget,
        LimitBudgetCur,
        Budget,
        BudgetCur,
        Clicks,
        Exceed,
        ExceedCur,
        ExceedRate,
        ExceedCurRate,
        CurrencyCode,
        1.0 * (
            BudgetCur
            - Clicks * LimitAvgCPCCur * $GetAvailableExceedRate(Clicks, PeriodStartTime, PeriodFinishTime)
        ) * C.Ratio / 1000 / 1000 AS Compensation,
        IF(C.CurrencyID = $rubCurID, 1.0 * (
            BudgetCur
            - Clicks * LimitAvgCPCCur * $GetAvailableExceedRate(Clicks, PeriodStartTime, PeriodFinishTime)
        ) * C.Ratio / 1000 / 1000 > $rubCompensationLimit, NULL) AS IsCompensationNeeded,
        $ToLocalTzDatetime(FirstEvent) AS FirstEvent,
        $ToLocalTzDatetime(LastEvent) AS LastEvent,
    FROM
        `//home/yabs/autobudget/AuditCPC` AS A
    INNER JOIN
        `//home/yabs/dict/CaesarOrderInfo` AS O
    ON
        O.OrderID = A.OrderID
    INNER JOIN
        `//home/yabs/dict/Currency` AS C
    ON
        C.CurrencyID = O.CurrencyID
    WHERE
        RunTime = $runTimestamp
    ;
