Lietotāja rīki

Vietnes rīki



lv:procedures

Šī ir veca dokumenta versija!


ALTER PROCEDURE dbo.int_hooldus_klient_pvn @aeg1 datetime,
    @aeg2 datetime AS --static vars
    DECLARE @vat_declar_name nvarchar(200)
SET
    @vat_declar_name = 'PVN' DECLARE @stat_vat DECIMAL
SET
    @stat_vat = 21 DECLARE @lim DECIMAL
 
DECLARE  @stat_vat12 DECIMAL  -- Declared a new variable for 12% VAT
SET  @stat_vat12  =  12
 
SET
    @lim = ISNULL(
        (
            SELECT
                TOP 1 CAST(ISNULL(kontod, 1000) AS DECIMAL)
            FROM
                fin_aru_kaive_read WITH (NOLOCK)
            WHERE
                NUMBER = 9000
                AND kood = @vat_declar_name
                AND tyyp = 3
        ),
        1000
    ) DECLARE @account INT
SET
    @account = 57211 DECLARE @i INT
SET
    @i = 1 DECLARE @x nvarchar(10)
SET
    @x = '1' DECLARE @y nvarchar(10)
SET
    @y = '1' --numbers helper
    DECLARE @numbers TABLE (n INT)
INSERT INTO
    @numbers
SELECT
    TOP 1000 ROW_NUMBER() OVER(
        ORDER BY
            t1.number
    )
FROM
    master..spt_values t1
    CROSS JOIN master..spt_values t2 --vat summary
    DECLARE @vat_declar_sums TABLE (
        row_nr INT,
        row_type INT,
        c_class INT,
        vat_code nvarchar(30),
        nr nvarchar(30),
        description nvarchar(200),
        range_formula nvarchar(200),
        doc_sum DECIMAL(15, 2)
    )
INSERT INTO
    @vat_declar_sums
SELECT
    ROW_NUMBER() OVER (
        ORDER BY
            kood
    ),
    tyyp,
    kontoklass,
    kmkood,
    NUMBER,
    tekst,
    kontod,
    0
FROM
    fin_aru_kaive_read WITH (NOLOCK)
WHERE
    kood = @vat_declar_name
    AND (
        tyyp = 1
        OR tyyp = 2
        OR tyyp = 8
        OR tyyp = 7
    )
ORDER BY
    NUMBER --account range elements
    DECLARE @elements TABLE (nr nvarchar(30), e nvarchar(200))
INSERT INTO
    @elements
SELECT
    nr,
    RTRIM(
        LTRIM(
            SUBSTRING(
                '+' + range_formula + '+',
                n + 1,
                CHARINDEX('+', '+' + range_formula + '+', n + 1) - n -1
            )
        )
    )
FROM
    @numbers,
    @vat_declar_sums
WHERE
    n < LEN('+' + range_formula + '+')
    AND SUBSTRING('+' + range_formula + '+', n, 1) = '+'
    AND range_formula LIKE '_%'
    AND (
        row_type = 1
        OR row_type = 8
        OR row_type = 7
    ) --account ranges start-end
    DECLARE @element_ranges TABLE (
        row_nr INT,
        nr nvarchar(30),
        e_start nvarchar(200),
        e_end nvarchar(200)
    )
INSERT INTO
    @element_ranges
SELECT
    ROW_NUMBER() OVER (
        ORDER BY
            nr
    ),
    nr,
    CASE
        WHEN CHARINDEX(':', e) > 0 THEN LEFT(e, CHARINDEX(':', e) -1)
        ELSE e
    END,
    CASE
        WHEN CHARINDEX(':', e) > 0 THEN SUBSTRING(e, CHARINDEX(':', e) + 1, LEN(e))
        ELSE e
    END
FROM
    @elements --update vat declaration sums according to account ranges
    WHILE @i <= (
        SELECT
            COUNT(row_nr)
        FROM
            @element_ranges
    ) BEGIN
SET
    @x = (
        SELECT
            (
                CASE
                    WHEN ISNUMERIC(er.e_start) = 1 THEN er.e_start
                    ELSE '0'
                END
            )
        FROM
            @element_ranges er
        WHERE
            er.row_nr = @i
    )
SET
    @y = (
        SELECT
            (
                CASE
                    WHEN ISNUMERIC(er.e_end) = 1 THEN er.e_end
                    ELSE '0'
                END
            )
        FROM
            @element_ranges er
        WHERE
            er.row_nr = @i
    )
UPDATE
    @vat_declar_sums
SET
    doc_sum = doc_sum + ISNULL(
        (
            SELECT
                SUM(ISNULL(baas1deebet, 0)) - SUM(ISNULL(baas1kreedit, 0))
            FROM
                fin_kanded_read WITH (NOLOCK)
            WHERE
                CAST(r_aeg AS DATE) BETWEEN CAST(@aeg1 AS DATE)
                AND CAST(@aeg2 AS DATE)
                AND konto BETWEEN @x
                AND @y
                AND kmkood = vat_code
        ),
        0
    )
WHERE
    ISNUMERIC(vat_code) = 1
    AND c_class = 3
    AND row_type = 1
    AND nr = (
        SELECT
            er.nr
        FROM
            @element_ranges er
        WHERE
            er.row_nr = @i
    )
UPDATE
    @vat_declar_sums
SET
    doc_sum = doc_sum + ISNULL(
        (
            SELECT
                SUM(ISNULL(baas1deebet, 0)) - SUM(ISNULL(baas1kreedit, 0))
            FROM
                fin_kanded_read WITH (NOLOCK)
            WHERE
                CAST(r_aeg AS DATE) BETWEEN CAST(@aeg1 AS DATE)
                AND CAST(@aeg2 AS DATE)
                AND konto BETWEEN @x
                AND @y
                AND kmkood = vat_code
        ),
        0
    )
WHERE
    ISNUMERIC(vat_code) = 0
    AND c_class = 3
    AND row_type = 1
    AND nr = (
        SELECT
            er.nr
        FROM
            @element_ranges er
        WHERE
            er.row_nr = @i
    )
UPDATE
    @vat_declar_sums
SET
    doc_sum = doc_sum + ISNULL(
        (
            SELECT
                SUM(ISNULL(baas1kreedit, 0)) - SUM(ISNULL(baas1deebet, 0))
            FROM
                fin_kanded_read WITH (NOLOCK)
            WHERE
                CAST(r_aeg AS DATE) BETWEEN CAST(@aeg1 AS DATE)
                AND CAST(@aeg2 AS DATE)
                AND konto BETWEEN @x
                AND @y
                AND kmkood = vat_code
        ),
        0
    )
WHERE
    ISNUMERIC(vat_code) = 1
    AND c_class = 4
    AND row_type = 1
    AND nr = (
        SELECT
            er.nr
        FROM
            @element_ranges er
        WHERE
            er.row_nr = @i
    )
UPDATE
    @vat_declar_sums
SET
    doc_sum = doc_sum + ISNULL(
        (
            SELECT
                SUM(ISNULL(baas1kreedit, 0)) - SUM(ISNULL(baas1deebet, 0))
            FROM
                fin_kanded_read WITH (NOLOCK)
            WHERE
                CAST(r_aeg AS DATE) BETWEEN CAST(@aeg1 AS DATE)
                AND CAST(@aeg2 AS DATE)
                AND konto BETWEEN @x
                AND @y
                AND kmkood = vat_code
        ),
        0
    )
WHERE
    ISNUMERIC(vat_code) = 0
    AND c_class = 4
    AND row_type = 1
    AND nr = (
        SELECT
            er.nr
        FROM
            @element_ranges er
        WHERE
            er.row_nr = @i
    )
UPDATE
    @vat_declar_sums
SET
    doc_sum = doc_sum + ISNULL(
        (
            SELECT
                SUM(ISNULL(baas1kreedit, 0)) + SUM(isnull(baas1deebet * (-1), 0))
            FROM
                fin_kanded_read WITH (NOLOCK)
            WHERE
                CAST(r_aeg AS DATE) BETWEEN CAST(@aeg1 AS DATE)
                AND CAST(@aeg2 AS DATE)
                AND konto BETWEEN @x
                AND @y
                AND (
                    baas1kreedit > 0
                    OR baas1deebet < 0
                )
        ),
        0
    )
WHERE
    ISNUMERIC(vat_code) = 0
    AND c_class = 4
    AND row_type = 8
    AND nr = (
        SELECT
            er.nr
        FROM
            @element_ranges er
        WHERE
            er.row_nr = @i
    )
UPDATE
    @vat_declar_sums
SET
    doc_sum = doc_sum + ISNULL(
        (
            SELECT
                SUM(ISNULL(baas1kreedit, 0)) + SUM(isnull(baas1deebet * (-1), 0))
            FROM
                fin_kanded_read WITH (NOLOCK)
            WHERE
                CAST(r_aeg AS DATE) BETWEEN CAST(@aeg1 AS DATE)
                AND CAST(@aeg2 AS DATE)
                AND konto BETWEEN @x
                AND @y
                AND (
                    baas1kreedit > 0
                    OR baas1deebet < 0
                )
                AND kmkood = vat_code
        ),
        0
    )
WHERE
    ISNUMERIC(vat_code) = 1
    AND c_class = 4
    AND row_type = 8
    AND nr = (
        SELECT
            er.nr
        FROM
            @element_ranges er
        WHERE
            er.row_nr = @i
    )
UPDATE
    @vat_declar_sums
SET
    doc_sum = doc_sum + ISNULL(
        (
            SELECT
                SUM(ISNULL(baas1kreedit, 0)) + SUM(isnull(baas1deebet * (-1), 0))
            FROM
                fin_kanded_read WITH (NOLOCK)
            WHERE
                CAST(r_aeg AS DATE) BETWEEN CAST(@aeg1 AS DATE)
                AND CAST(@aeg2 AS DATE)
                AND konto BETWEEN @x
                AND @y
                AND (
                    baas1kreedit < 0
                    OR baas1deebet > 0
                )
        ),
        0
    )
WHERE
    ISNUMERIC(vat_code) = 0
    AND c_class = 3
    AND row_type = 7
    AND nr = (
        SELECT
            er.nr
        FROM
            @element_ranges er
        WHERE
            er.row_nr = @i
    )
UPDATE
    @vat_declar_sums
SET
    doc_sum = doc_sum + ISNULL(
        (
            SELECT
                SUM(ISNULL(baas1kreedit, 0)) + SUM(isnull(baas1deebet * (-1), 0))
            FROM
                fin_kanded_read WITH (NOLOCK)
            WHERE
                CAST(r_aeg AS DATE) BETWEEN CAST(@aeg1 AS DATE)
                AND CAST(@aeg2 AS DATE)
                AND konto BETWEEN @x
                AND @y
                AND (
                    baas1kreedit < 0
                    OR baas1deebet > 0
                )
                AND kmkood = vat_code
        ),
        0
    )
WHERE
    ISNUMERIC(vat_code) = 1
    AND c_class = 3
    AND row_type = 7
    AND nr = (
        SELECT
            er.nr
        FROM
            @element_ranges er
        WHERE
            er.row_nr = @i
    )
UPDATE
    @vat_declar_sums
SET
    doc_sum = doc_sum + ISNULL(
        (
            SELECT
                SUM(kaive / ISNULL(kurss_e, 1))
            FROM
                int_konto_ajalugu WITH (NOLOCK)
            WHERE
                CAST(aeg AS DATE) BETWEEN CAST(@aeg1 AS DATE)
                AND CAST(@aeg2 AS DATE)
                AND konto BETWEEN @x
                AND @y
        ),
        0
    )
WHERE
    ISNUMERIC(vat_code) <> 1
    AND nr = (
        SELECT
            er.nr
        FROM
            @element_ranges er
        WHERE
            er.row_nr = @i
    )
    AND row_type = 1
SET
    @i = @i + 1
END 
 
    -----------------
     ------ 1-1 ------
      -----------------
SET
    nocount ON DECLARE @pvn13_vat_codes_1_1 TABLE (
        code nvarchar(30),
        rate DECIMAL,
        proportion DECIMAL,
        description nvarchar(200),
        sales_account nvarchar(30),
        purchase_account nvarchar(30),
        info nvarchar(200),
        dar_veids nvarchar(5),
        do_limit VARCHAR(2)
    )
INSERT INTO
    @pvn13_vat_codes_1_1
SELECT
    kood,
    ilmakm,
    or_proportsioon,
    seletus,
    myykkonto,
    ostuKMkonto,
    lisainfo,
    CAST(
        ISNULL(
            (
                SELECT
                    TOP 1 sisu
                FROM
                    yld_data yd WITH (NOLOCK)
                WHERE
                    yd.kaart = fk.kood
                    AND kood = 'DARTIPS1_3'
                    AND klass = 'kmk'
            ),
            '41'
        ) AS nvarchar(10)
    ) AS dar_veids,
    CAST(
        ISNULL(
            (
                SELECT
                    TOP 1 sisu
                FROM
                    yld_data yd WITH (NOLOCK)
                WHERE
                    yd.kaart = fk.kood
                    AND kood = 'LIMITS'
                    AND klass = 'kmk'
            ),
            'Ja'
        ) AS VARCHAR(2)
    ) AS do_limit
FROM
    fin_kmkoodid fk
WHERE
    lisainfo LIKE '%pvn13%' DECLARE @pvn11_vat_codes TABLE (
        code nvarchar(30),
        rate DECIMAL,
        reverse_rate DECIMAL,
        proportion DECIMAL,
        description nvarchar(200),
        sales_account nvarchar(30),
        purchase_account nvarchar(30),
        info nvarchar(200),
        dar_veids nvarchar(5),
        do_limit VARCHAR(2)
    )
INSERT INTO
    @pvn11_vat_codes
SELECT
    kood,
    ilmakm,
    poord,
    or_proportsioon,
    seletus,
    myykkonto,
    ostuKMkonto,
    lisainfo,
    CAST(
        ISNULL(
            (
                SELECT
                    TOP 1 sisu
                FROM
                    yld_data yd WITH (NOLOCK)
                WHERE
                    yd.kaart = fk.kood
                    AND kood = 'DARTIPS1_1'
                    AND klass = 'kmk'
 
            ),
            'I'
        ) AS nvarchar(10)
    ) AS dar_veids,
    CAST(
        ISNULL(
            (
                SELECT
                    TOP 1 sisu
                FROM
                    yld_data yd WITH (NOLOCK)
                WHERE
                    yd.kaart = fk.kood
                    AND kood = 'LIMITS'
                    AND klass = 'kmk'
            ),
            'Ja'
        ) AS VARCHAR(2)
    ) AS do_limit
FROM
    fin_kmkoodid fk
WHERE
    lisainfo LIKE '%pvn11%' DECLARE @pvn1_1_temp TABLE (
        dar_veids nvarchar(5),
        do_limit VARCHAR(2),
        dok_veids nvarchar(1),
        doc_nr nvarchar(30),
        directo_nr nvarchar(30),
        vat_code nvarchar(30),
        client_name nvarchar(30),
        vat_reg_nr nvarchar(30),
        doc_sum DECIMAL(15, 2),
        doc_vat DECIMAL(15, 2),
        doc_date nvarchar(30),
        vatc_prepayment DECIMAL(15, 2)
    ) DECLARE @pvn1_1_r_rows TABLE (
        dar_veids nvarchar(5),
        do_limit VARCHAR(2),
        dok_veids nvarchar(1),
        doc_nr nvarchar(30),
        directo_nr nvarchar(30),
        vat_code nvarchar(30),
        client_name nvarchar(30),
        vat_reg_nr nvarchar(30),
        doc_sum DECIMAL(15, 2),
        doc_vat DECIMAL(15, 2),
        doc_date nvarchar(30),
        vatc_prepayment DECIMAL(15, 2)
    ) DECLARE @pvn1_1_values_by_doc TABLE (
        rn INT,
        dar_veids nvarchar(5),
        do_limit VARCHAR(2),
        dok_veids nvarchar(1),
        doc_nr nvarchar(30),
        directo_nr nvarchar(30),
        vat_code nvarchar(30),
        client_name nvarchar(30),
        vat_reg_nr nvarchar(30),
        doc_sum DECIMAL(15, 2),
        doc_vat DECIMAL(15, 2),
        doc_date nvarchar(30),
        doc_sum_total DECIMAL(15, 2),
        vatc_prepayment DECIMAL(15, 2)
    ) DECLARE @pvn1_1_top_sums_supplier TABLE (
        vat_reg_nr nvarchar(30),
        doc_sum DECIMAL(15, 2),
        doc_vat DECIMAL(15, 2)
    ) DECLARE @pvn1_1_sums_supplier TABLE (
        vat_reg_nr nvarchar(30),
        doc_sum DECIMAL(15, 2),
        doc_vat DECIMAL(15, 2)
    ) DECLARE @pvn1_1_top_table TABLE (
        dar_veids nvarchar(5),
        do_limit VARCHAR(2),
        dok_veids nvarchar(1),
        doc_nr nvarchar(30),
        directo_nr nvarchar(30),
        vat_code nvarchar(30),
        client_name nvarchar(30),
        vat_reg_nr nvarchar(30),
        doc_sum DECIMAL(15, 2),
        doc_vat DECIMAL(15, 2),
        doc_date nvarchar(30),
        rn INT
    ) DECLARE @pvn1_1_top_r_table TABLE (
        dar_veids nvarchar(5),
        do_limit VARCHAR(2),
        dok_veids nvarchar(1),
        doc_nr nvarchar(30),
        directo_nr nvarchar(30),
        vat_code nvarchar(30),
        client_name nvarchar(30),
        vat_reg_nr nvarchar(30),
        doc_sum DECIMAL(15, 2),
        doc_vat DECIMAL(15, 2),
        doc_date nvarchar(30),
        rn INT
    ) DECLARE @pvn_1_1_v_totals TABLE (
        dok_veids nvarchar(32),
        client_name nvarchar(30),
        vat_reg_nr nvarchar(32),
        doc_sum DECIMAL(15, 2),
        doc_vat DECIMAL(15, 2)
    ) DECLARE @pvn_1_1_v_totals2 TABLE (
        dok_veids nvarchar(32),
        client_name nvarchar(30),
        vat_reg_nr nvarchar(32),
        doc_sum DECIMAL(15, 2),
        doc_vat DECIMAL(15, 2)
    ) DECLARE @pvn_1_1_t_totals TABLE (
        doc_sum DECIMAL(15, 2),
        doc_vat DECIMAL(15, 2),
        doc_nr nvarchar(255)
    ) DECLARE @pvn_1_1_totals TABLE (
        doc_sum DECIMAL(15, 2),
        doc_vat DECIMAL(15, 2)
    )
INSERT
    @pvn1_1_temp --sales invoices
SELECT
    (
        SELECT
            TOP 1 dar_veids
        FROM
            @pvn11_vat_codes vc
        WHERE
            vc.code = mr_arved_read.kmk
    ) AS dar_veids,
    (
        SELECT
            TOP 1 do_limit
        FROM
            @pvn11_vat_codes vc
        WHERE
            vc.code = mr_arved_read.kmk
    ) AS do_limit,
    CASE
        WHEN (isnull(ettemaks, 0) = 0) THEN '1'
        ELSE '1'
    END AS dok_veids,
    mr_arved_read.number AS doc_nr,
    mr_arved_read.number AS doc_nr,
    kmk AS vat_code,
    CAST((klient_nimi) AS nvarchar(30)) AS client_name,
    CAST(
        CASE
            WHEN (
                kmregnumber IS NOT NULL
                OR kmregnumber != ' '
            ) THEN kmregnumber
            ELSE (
                SELECT
                    top 1 kmregnr
                FROM
                    kliendid
                WHERE
                    kood = mr_arved.klient_kood
            )
        END AS nvarchar(30)
    ) AS vat_reg_nr,
    CAST((ROUND(ISNULL(summa, 0), 4)) AS DECIMAL(15, 2)) AS doc_sum,
    isnull(
        CAST(
            (
                ROUND(ISNULL(summa, 0), 4) * (
                    NULLIF(
                        (
                            ISNULL(
                                (
                                    SELECT
                                        TOP 1 rate
                                    FROM
                                        @pvn11_vat_codes
                                    WHERE
                                        code = mr_arved_read.kmk
                                ),
                                0
                            ) / 100
                        ),
                        0
                    )
                )
            ) AS DECIMAL(15, 2)
        ),
        '0.00'
    ) AS doc_vat,
    REPLACE(CONVERT(VARCHAR, aeg, 111), '/', '-') AS doc_date,
    (
        SELECT
            SUM(summa)
        FROM
            mr_arved_ettemaksud mae
        WHERE
            mae.arve = mr_arved_read.number
            AND mae.kmk = mr_arved_read.kmk
    )
FROM
    mr_arved_read WITH (NOLOCK)
    INNER JOIN mr_arved ON mr_arved_read.number = mr_arved.number
WHERE
    CAST(aeg AS DATE) BETWEEN CAST(@aeg1 AS DATE)
    AND CAST(@aeg2 AS DATE)
    AND (kinnitatud = 1)
    AND kmk IN (
        SELECT
            code
        FROM
            @pvn11_vat_codes
    )
    AND artikkel IS NOT NULL
    AND (
        (ISNULL(NULLIF(kredarve, ''), '') = '')
        OR (
            CAST(
                (
                    SELECT
                        TOP 1 ma_inner.aeg
                    FROM
                        mr_arved ma_inner
                    WHERE
                        ma_inner.number = mr_arved.kredarve
                ) AS DATE
            ) BETWEEN CAST(@aeg1 AS DATE)
            AND CAST(@aeg2 AS DATE)
        )
    )
UNION
ALL
SELECT
    (
        SELECT
            TOP 1 dar_veids
        FROM
            @pvn13_vat_codes_1_1 vc
        WHERE
            vc.code = mr_arved_read.kmk
    ) AS dar_veids,
    (
        SELECT
            TOP 1 do_limit
        FROM
            @pvn13_vat_codes_1_1 vc
        WHERE
            vc.code = mr_arved_read.kmk
    ) AS do_limit,
    CASE
        WHEN (isnull(ettemaks, 0) = 0) THEN '4'
        ELSE 'Z'
    END AS dok_veids,
    mr_arved_read.number AS doc_nr,
    mr_arved_read.number AS doc_nr,
    kmk AS vat_code,
    CAST((klient_nimi) AS nvarchar(30)) AS client_name,
    CAST(
        CASE
            WHEN (
                kmregnumber IS NOT NULL
                OR kmregnumber != ' '
            ) THEN kmregnumber
            ELSE (
                SELECT
                    top 1 kmregnr
                FROM
                    kliendid
                WHERE
                    kood = mr_arved.klient_kood
            )
        END AS nvarchar(30)
    ) AS vat_reg_nr,
    CAST(
        (ROUND(ISNULL(summa * (-1), 0), 4)) AS DECIMAL(15, 2)
    ) AS doc_sum,
    isnull(
        CAST(
            (
                ROUND(ISNULL(summa * (-1), 0), 4) * (
                    NULLIF(
                        (
                            ISNULL(
                                (
                                    SELECT
                                        TOP 1 rate
                                    FROM
                                        @pvn13_vat_codes_1_1
                                    WHERE
                                        code = mr_arved_read.kmk
                                ),
                                0
                            ) / 100
                        ),
                        0
                    )
                )
            ) AS DECIMAL(15, 2)
        ),
        '0.00'
    ) AS doc_vat,
    REPLACE(CONVERT(VARCHAR, aeg, 111), '/', '-') AS doc_date,
    (
        SELECT
            SUM(summa) * (-1)
        FROM
            mr_arved_ettemaksud mae
        WHERE
            mae.arve = mr_arved_read.number
            AND mae.kmk = mr_arved_read.kmk
    )
FROM
    mr_arved_read WITH (NOLOCK)
    INNER JOIN mr_arved ON mr_arved_read.number = mr_arved.number
WHERE
    CAST(aeg AS DATE) BETWEEN CAST(@aeg1 AS DATE)
    AND CAST(@aeg2 AS DATE)
    AND (kinnitatud = 1)
    AND kmk IN (
        SELECT
            code
        FROM
            @pvn13_vat_codes_1_1
    )
    AND artikkel IS NOT NULL
    AND (
        kredarve IS NOT NULL
        OR mr_arved.kokku <= 0
    ) --AND ((ISNULL(NULLIF(kredarve, ''), '') = '') OR (CAST((SELECT TOP 1 ma_inner.aeg FROM mr_arved ma_inner WHERE ma_inner.number = mr_arved.kredarve) AS date) BETWEEN CAST(@aeg1 AS date) AND CAST(@aeg2 AS date)))
INSERT
    @pvn1_1_temp --purchase invoices
SELECT
    isnull(
        (
            SELECT
                TOP 1 dar_veids
            FROM
                @pvn11_vat_codes vc
            WHERE
                vc.code = oar.kmkood
        ),
        'A'
    ) AS dar_veids,
    (
        SELECT
            TOP 1 do_limit
        FROM
            @pvn11_vat_codes vc
        WHERE
            vc.code = oar.kmkood
    ) AS do_limit,
    '1',
    CAST(oa.hankija_arve AS nvarchar(30)) AS client_doc_nr,
    -- CAST(oa.number AS nvarchar(30)) AS client_doc_nr,
    CAST(oa.number AS nvarchar(30)) AS client_doc_nr,
    CAST(oar.kmkood AS nvarchar(30)) AS vat_code,
    CAST(oa.hankija_nimi AS nvarchar(30)) AS client_name,
    CAST(
        (
            SELECT
                TOP 1 kmregnr
            FROM
                hankijad
            WHERE
                hankijad.kood = oa.hankija_kood
        ) AS nvarchar(30)
    ) AS vat_reg_nr,
    --CAST(isnull(oar.a_summa,oar.summa)  * ISNULL(oa.kurssbv1, 1) AS decimal(15,2)) AS doc_sum,
    (
        CASE
            WHEN (
                (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 reverse_rate
                            FROM
                                @pvn11_vat_codes
                            WHERE
                                code = oar.kmkood
                        ),
                        0
                    )
                ) != 0
                AND oar.konto != @account
            ) THEN CAST(
                oar.summa * ISNULL(oa.kurssbv1, 1) AS DECIMAL(15, 4)
            )
            WHEN (
                (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 reverse_rate
                            FROM
                                @pvn11_vat_codes
                            WHERE
                                code = oar.kmkood
                        ),
                        0
                    )
                ) = 0
                AND (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 proportion
                            FROM
                                @pvn11_vat_codes
                            WHERE
                                code = oar.kmkood
                        ),
                        0
                    )
                ) = 0
                AND oar.konto != @account
            ) THEN CAST(
                oar.summa * ISNULL(oa.kurssbv1, 1) AS DECIMAL(15, 4)
            )
            WHEN (
                (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 proportion
                            FROM
                                @pvn11_vat_codes
                            WHERE
                                code = oar.kmkood
                        ),
                        0
                    )
                ) != 0
                AND oar.konto != @account
            ) THEN CAST(
                (oar.a_summa * ISNULL(oa.kurssbv1, 1)) * (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 proportion
                            FROM
                                @pvn11_vat_codes
                            WHERE
                                code = oar.kmkood
                        ),
                        0
                    ) / 100
                ) AS DECIMAL(15, 4)
            )
            WHEN (oar.konto = @account) THEN 0
        END
    ) AS doc_sum,
    (
        CASE
            WHEN (
                (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 reverse_rate
                            FROM
                                @pvn11_vat_codes
                            WHERE
                                code = oar.kmkood
                        ),
                        0
                    )
                ) != 0
                AND oar.konto != @account
            ) THEN CAST(
                oar.summa * ISNULL(oa.kurssbv1, 1) * (
                    (
                        ISNULL(
                            (
                                SELECT
                                    TOP 1 reverse_rate
                                FROM
                                    @pvn11_vat_codes
                                WHERE
                                    code = oar.kmkood
                            ),
                            0
                        )
                    ) / 100
                ) AS DECIMAL(15, 4)
            )
            WHEN (
                (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 reverse_rate
                            FROM
                                @pvn11_vat_codes
                            WHERE
                                code = oar.kmkood
                        ),
                        0
                    )
                ) = 0
                AND (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 proportion
                            FROM
                                @pvn11_vat_codes
                            WHERE
                                code = oar.kmkood
                        ),
                        0
                    )
                ) = 0
                AND oar.konto != @account
            ) THEN --CAST(oar.summa * ISNULL(oa.kurssbv1, 1) * ((ISNULL((SELECT TOP 1 rate FROM @pvn11_vat_codes WHERE code = oar.kmkood), 0)) / 100) AS decimal(15,4))
            CAST(km AS DECIMAL(15, 4))
            WHEN (
                (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 proportion
                            FROM
                                @pvn11_vat_codes
                            WHERE
                                code = oar.kmkood
                        ),
                        0
                    )
                ) != 0
                AND oar.konto != @account
            ) THEN CAST(oar.km * ISNULL(oa.kurssbv1, 1) AS DECIMAL(15, 4))
            /* ((ISNULL((SELECT TOP 1 rate FROM @pvn11_vat_codes WHERE code = oar.kmkood), 0)) / 100)) * (ISNULL((SELECT TOP 1 proportion FROM @pvn11_vat_codes WHERE code = oar.kmkood), 0) / 100) */
            WHEN (oar.konto = @account) THEN CAST(
                oar.summa * ISNULL(oa.kurssbv1, 1) AS DECIMAL(15, 4)
            )
        END
    ) AS doc_vat,
    REPLACE(CONVERT(VARCHAR, oa.aeg, 111), '/', '-') AS doc_date,
    (
        SELECT
            SUM(summa)
        FROM
            or_arved_ettemaksud mae
        WHERE
            mae.arve = oar.number
            AND mae.kmk = oar.kmkood
    )
FROM
    or_arved oa,
    or_arved_read oar WITH (NOLOCK)
WHERE
    CAST(oa.kande_aeg AS DATE) BETWEEN CAST(@aeg1 AS DATE)
    AND CAST(@aeg2 AS DATE)
    AND (oa.kinnitatud = 'True')
    AND (oa.number = oar.number) -- AND NOT (oar.konto = CAST(@account AS nvarchar))
    AND (
        oar.kmkood IN (
            SELECT
                code
            FROM
                @pvn11_vat_codes
        )
        OR oa.hankija_kood = '859'
    )
INSERT
    @pvn1_1_temp --payments
SELECT
    (
        SELECT
            TOP 1 dar_veids
        FROM
            @pvn11_vat_codes vc
        WHERE
            vc.code = otr.kmk
    ) AS dar_veids,
    (
        SELECT
            TOP 1 do_limit
        FROM
            @pvn11_vat_codes vc
        WHERE
            vc.code = otr.kmk
    ) AS do_limit,
    '3',
    CAST(ot.number AS nvarchar(30)) AS client_doc_nr,
    CAST(ot.number AS nvarchar(30)) AS client_doc_nr,
    CAST(otr.kmk AS nvarchar(30)) AS vat_code,
    CAST(
        (
            SELECT
                CAST(nimi AS nvarchar(30))
            FROM
                hankijad WITH (NOLOCK)
            WHERE
                (hankijad.kood = otr.hankija_kood)
        ) AS nvarchar(30)
    ) AS client_name,
    CAST(
        (
            SELECT
                CAST(kmregnr AS nvarchar(30))
            FROM
                hankijad WITH (NOLOCK)
            WHERE
                (hankijad.kood = otr.hankija_kood)
        ) AS nvarchar(30)
    ) AS vat_reg_nr,
    --CAST(otr.summa_p AS decimal(15,2)) AS doc_sum,
    --CAST((otr.summa_p * (@stat_vat / 100)) AS decimal(15,2)) AS doc_vat,
    (
        CASE
            WHEN (
                (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 reverse_rate
                            FROM
                                @pvn11_vat_codes
                            WHERE
                                code = otr.kmk
                        ),
                        0
                    )
                ) != 0
            ) THEN CAST(otr.summa_p AS DECIMAL(15, 2))
            ELSE CAST(
                (otr.summa_p / (1 + @stat_vat12 / 100)) AS DECIMAL(15, 2)  -- @stat_vat changed to @stat_vat12 
            )
        END
    ) AS doc_sum,
    (
        CASE
            WHEN (
                (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 reverse_rate
                            FROM
                                @pvn11_vat_codes
                            WHERE
                                code = otr.kmk
                        ),
                        0
                    )
                ) != 0
            ) THEN CAST(
                otr.summa_p * (
                    (
                        ISNULL(
                            (
                                SELECT
                                    TOP 1 reverse_rate
                                FROM
                                    @pvn11_vat_codes
                                WHERE
                                    code = otr.kmk
                            ),
                            0
                        )
                    ) / 100
                ) AS DECIMAL(15, 2)
            )
            ELSE CAST(
                (
                    otr.summa_p / (1 + @stat_vat12 / 100) * (@stat_vat12 / 100) -- @stat_vat changed to @stat_vat12
                ) AS DECIMAL(15, 2)
            )
        END
    ) AS doc_vat,
    REPLACE(CONVERT(VARCHAR, ot.aeg, 111), '/', '-') AS doc_date,
    0
FROM
    or_tasumised ot,
    or_tasumised_read otr WITH (NOLOCK)
WHERE
    CAST(ot.aeg AS DATE) BETWEEN CAST(@aeg1 AS DATE)
    AND CAST(@aeg2 AS DATE)
    AND (ot.kinnitatud = 'True')
    AND (ot.number = otr.number)
    AND (
        EXISTS(
            SELECT
                1
            FROM
                @pvn11_vat_codes
            WHERE
                code = otr.kmk
        )
    )
UNION
SELECT
    (
        SELECT
            TOP 1 dar_veids
        FROM
            @pvn11_vat_codes vc
        WHERE
            vc.code = oae.kmk
    ) AS dar_veids,
    (
        SELECT
            TOP 1 do_limit
        FROM
            @pvn11_vat_codes vc
        WHERE
            vc.code = oae.kmk
    ) AS do_limit,
    '9',
    CAST(
        (
            SELECT
                hankija_arve
            FROM
                or_arved
            WHERE
                NUMBER = oae.arve
        ) AS nvarchar(30)
    ),
    CAST(
        (
            SELECT
                hankija_arve
            FROM
                or_arved
            WHERE
                NUMBER = oae.arve
        ) AS nvarchar(30)
    ),
    oae.kmk,
    CAST(
        (
            SELECT
                nimi
            FROM
                hankijad h
            WHERE
                h.kood = (
                    SELECT
                        hankija_kood
                    FROM
                        or_arved oa
                    WHERE
                        oa.number = oae.arve
                )
        ) AS nvarchar(30)
    ),
    CAST(
        (
            SELECT
                kmregnr
            FROM
                hankijad h
            WHERE
                h.kood = (
                    SELECT
                        hankija_kood
                    FROM
                        or_arved oa
                    WHERE
                        oa.number = oae.arve
                )
        ) AS nvarchar(30)
    ),
    (
        CASE
            WHEN (
                (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 reverse_rate
                            FROM
                                @pvn11_vat_codes
                            WHERE
                                code = oae.kmk
                        ),
                        0
                    )
                ) != 0
            ) THEN CAST(oae.summa AS DECIMAL(15, 2)) - isnull(
                CAST(
                    (
                        SELECT
                            SUM(summa)
                        FROM
                            or_arved_read oar
                        WHERE
                            oar.number = oae.arve
                            AND oar.kmkood = oae.kmk
                    ) AS DECIMAL(15, 2)
                ),
                0
            )
            ELSE CAST(
                (oae.summa / (1 + @stat_vat / 100)) AS DECIMAL(15, 2)
            ) - isnull(
                CAST(
                    (
                        SELECT
                            SUM(summa)
                        FROM
                            or_arved_read oar
                        WHERE
                            oar.number = oae.arve
                            AND oar.kmkood = oae.kmk
                    ) AS DECIMAL(15, 2)
                ),
                0
            )
        END
    ) AS doc_sum,
    (
        CASE
            WHEN (
                (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 reverse_rate
                            FROM
                                @pvn11_vat_codes
                            WHERE
                                code = oae.kmk
                        ),
                        0
                    )
                ) != 0
            ) THEN CAST(
                oae.summa * (
                    (
                        ISNULL(
                            (
                                SELECT
                                    TOP 1 reverse_rate
                                FROM
                                    @pvn11_vat_codes
                                WHERE
                                    code = oae.kmk
                            ),
                            0
                        )
                    ) / 100
                ) AS DECIMAL(15, 2)
            ) - isnull(
                CAST(
                    (
                        SELECT
                            SUM(summa) * (
                                ISNULL(
                                    (
                                        SELECT
                                            TOP 1 reverse_rate
                                        FROM
                                            @pvn11_vat_codes
                                        WHERE
                                            code = oae.kmk
                                    ),
                                    0
                                ) / 100
                            )
                        FROM
                            or_arved_read oar
                        WHERE
                            oar.number = oae.arve
                            AND oar.kmkood = oae.kmk
                    ) AS DECIMAL(15, 2)
                ),
                0
            )
            ELSE isnull(
                CAST(
                    (
                        oae.summa / (1 + @stat_vat / 100) * (@stat_vat / 100)
                    ) AS DECIMAL(15, 2)
                ),
                0
            ) - isnull(
                CAST(
                    (
                        SELECT
                            (SUM(summa) * (1 + @stat_vat / 100))
                        FROM
                            or_arved_read oar
                        WHERE
                            oar.number = oae.arve
                            AND oar.kmkood = oae.kmk
                    ) AS DECIMAL(15, 2)
                ),
                0
            )
        END
    ) AS doc_vat,
    REPLACE(
        CONVERT(
            VARCHAR,
            (
                SELECT
                    kande_aeg
                FROM
                    or_arved
                WHERE
                    NUMBER = oae.arve
            ),
            111
        ),
        '/',
        '-'
    ) AS doc_date,
    0
FROM
    or_arved_ettemaksud oae
WHERE
    (
        SELECT
            kande_aeg
        FROM
            or_arved oa
        WHERE
            oa.number = oae.arve
    ) BETWEEN @aeg1
    AND @aeg2
    AND kmk IN (
        SELECT
            code
        FROM
            @pvn11_vat_codes
    )
INSERT INTO
    @pvn1_1_temp --expenses
    /*SELECT
     (SELECT TOP 1 dar_veids FROM @pvn11_vat_codes vc WHERE vc.code = fkr.kmkood) AS dar_veids,
     (SELECT TOP 1 do_limit FROM @pvn11_vat_codes vc WHERE vc.code = fkr.kmkood) AS do_limit,
     '9',
     CAST(fk.number AS nvarchar(30)) AS doc_nr,
     CAST(fkr.dokument AS nvarchar(30)) AS client_doc_nr,
     CAST(fkr.kmkood AS nvarchar(30)) AS vat_code,
     CAST(fkr.hankija_nimi AS nvarchar(30)) AS client_name,
     CAST((SELECT TOP 1 kmregnr FROM hankijad WHERE hankijad.kood=fkr.hankija_kood) AS nvarchar(30)) AS vat_reg_nr,
     CAST(ISNULL(fkr.summa, 0) * ISNULL(fkr.r_kurss, 1) AS decimal(15,2)) AS doc_sum,
     (CASE WHEN (ISNULL((SELECT TOP 1 reverse_rate FROM @pvn11_vat_codes WHERE code=fkr.kmkood),0) != 0)
     THEN
     cast(CAST(ISNULL(fkr.summa, 0) * (ISNULL((SELECT TOP 1 reverse_rate FROM @pvn11_vat_codes WHERE code = fkr.kmkood),0) / 100) * ISNULL(fkr.r_kurss, 1) AS decimal(15,2)) * (-1) as decimal(15,2))
     ELSE
     cast(CAST(ISNULL(fkr.reakm, 0) * ISNULL(fkr.r_kurss, 1) AS decimal(15,2)) * (-1) as decimal(15,2)) 
     END) AS doc_vat,
     REPLACE(CONVERT(VARCHAR, fkr.aeg, 111), '/', '-')  AS doc_date,
     0
     FROM fin_kulutused fk, fin_kulutused_read fkr WITH (NOLOCK)
     WHERE CAST(fk.kande_aeg AS date) BETWEEN CAST(@aeg1 AS date) AND CAST(@aeg2 AS date)
     AND (fk.kinnitatud='True')
     AND (fk.number=fkr.number)
     AND (EXISTS(SELECT 1 FROM @pvn11_vat_codes WHERE code = fkr.kmkood))*/
SELECT
    (
        SELECT
            TOP 1 dar_veids
        FROM
            @pvn11_vat_codes vc
        WHERE
            vc.code = fkr.kmkood
    ) AS dar_veids,
    (
        SELECT
            TOP 1 do_limit
        FROM
            @pvn11_vat_codes vc
        WHERE
            vc.code = fkr.kmkood
    ) AS do_limit,
    '8',
    CAST(fkr.dokument AS nvarchar(30)) AS client_doc_nr,
    CAST(fkr.number AS nvarchar(30)) AS doc_nr,
    CAST(fkr.kmkood AS nvarchar(30)) AS vat_code,
    CAST(fkr.hankija_nimi AS nvarchar(30)) AS client_name,
    CAST(
        (
            SELECT
                kmregnr
            FROM
                hankijad
            WHERE
                kood = fkr.hankija_kood
        ) AS nvarchar(30)
    ),
    (
        CASE
            WHEN (
                (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 reverse_rate
                            FROM
                                @pvn11_vat_codes
                            WHERE
                                code = fkr.kmkood
                        ),
                        0
                    )
                ) != 0
            ) THEN CAST(
                fkr.summa * isnull(fkr.r_kurss, isnull(fk.kurssbv1, 1)) AS DECIMAL(15, 4)
            )
            WHEN (
                (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 reverse_rate
                            FROM
                                @pvn11_vat_codes
                            WHERE
                                code = fkr.kmkood
                        ),
                        0
                    )
                ) = 0
                AND (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 proportion
                            FROM
                                @pvn11_vat_codes
                            WHERE
                                code = fkr.kmkood
                        ),
                        0
                    )
                ) = 0
            ) THEN CAST(
                fkr.summa * isnull(fkr.r_kurss, isnull(fk.kurssbv1, 1)) AS DECIMAL(15, 4)
            )
            WHEN (
                (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 proportion
                            FROM
                                @pvn11_vat_codes
                            WHERE
                                code = fkr.kmkood
                        ),
                        0
                    )
                ) != 0
            ) THEN CAST(
                (
                    fkr.a_summa * isnull(fkr.r_kurss, isnull(fk.kurssbv1, 1))
                ) * (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 proportion
                            FROM
                                @pvn11_vat_codes
                            WHERE
                                code = fkr.kmkood
                        ),
                        0
                    ) / 100
                ) AS DECIMAL(15, 4)
            )
        END
    ) AS doc_sum_wo_vat,
    (
        CASE
            WHEN (
                (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 reverse_rate
                            FROM
                                @pvn11_vat_codes
                            WHERE
                                code = fkr.kmkood
                        ),
                        0
                    )
                ) != 0
            ) THEN CAST(
                fkr.summa * isnull(
                    fkr.r_kurss,
                    isnull(fk.kurssbv1, 1) * (
                        ISNULL(
                            (
                                SELECT
                                    TOP 1 reverse_rate
                                FROM
                                    @pvn11_vat_codes
                                WHERE
                                    code = fkr.kmkood
                            ),
                            0
                        )
                    ) / 100
                ) AS DECIMAL(15, 4)
            )
            WHEN (
                (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 reverse_rate
                            FROM
                                @pvn11_vat_codes
                            WHERE
                                code = fkr.kmkood
                        ),
                        0
                    )
                ) = 0
                AND (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 proportion
                            FROM
                                @pvn11_vat_codes
                            WHERE
                                code = fkr.kmkood
                        ),
                        0
                    )
                ) = 0
            ) THEN --CAST((fkr.summa * isnull(fk.kurssbv1,1)) * ((ISNULL((SELECT TOP 1 rate FROM @pvn11_vat_codes WHERE code = fkr.kmkood), 0)) / 100) AS decimal(15,4))
            CAST(reakm AS DECIMAL(15, 4))
            WHEN (
                (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 proportion
                            FROM
                                @pvn11_vat_codes
                            WHERE
                                code = fkr.kmkood
                        ),
                        0
                    )
                ) != 0
            ) THEN CAST(
                (
                    fkr.reakm * isnull(fkr.r_kurss, isnull(fk.kurssbv1, 1))
                )
                /* ((ISNULL((SELECT TOP 1 rate FROM @pvn11_vat_codes WHERE code = fkr.kmkood), 0)) / 100) * (ISNULL((SELECT TOP 1 proportion FROM @pvn11_vat_codes WHERE code = fkr.kmkood), 0) / 100) */
                AS DECIMAL(15, 4)
            )
        END
    ),
    CAST(isnull(fkr.aeg, fk.aeg) AS DATE),
    '0'
FROM
    fin_kulutused_read fkr WITH(nolock)
    LEFT JOIN fin_kulutused fk ON fk.number = fkr.number
WHERE
    CAST(isnull(fkr.aeg, fk.aeg) AS DATE) BETWEEN CAST(@aeg1 AS DATE)
    AND CAST(@aeg2 AS DATE)
    AND fkr.kmkood IN (
        SELECT
            code
        FROM
            @pvn11_vat_codes
    )
    AND (kinnitatud = 'True')
INSERT
    @pvn1_1_values_by_doc
SELECT
    ROW_NUMBER() OVER(
        ORDER BY
            dar_veids,
            do_limit,
            dok_veids,
            doc_nr,
            vat_code,
            client_name,
            vat_reg_nr,
            doc_date,
            directo_nr,
            vatc_prepayment
    ) nr,
    dar_veids,
    do_limit,
    CASE
        WHEN (
            dok_veids = '9'
            OR dok_veids = '8'
        ) THEN '3'
        ELSE dok_veids
    END,
    doc_nr,
    directo_nr,
    vat_code,
    client_name,
    isnull(vat_reg_nr, ' '),
    CASE
        WHEN (dok_veids != '9') THEN SUM(doc_sum)
        ELSE (
            CASE
                WHEN (SUM(doc_sum) < 0) THEN 0
                ELSE SUM(doc_sum) * (-1)
            END
        )
    END - CASE
        WHEN (dok_veids != '3') THEN (
            CASE
                WHEN (
                    ISNULL(
                        (
                            SELECT
                                reverse_rate
                            FROM
                                @pvn11_vat_codes
                            WHERE
                                CODE = A.vat_code
                        ),
                        0
                    ) != 0
                ) THEN CAST(ISNULL(vatc_prepayment, 0) AS DECIMAL(15, 4))
                WHEN (
                    ISNULL(
                        (
                            SELECT
                                reverse_rate
                            FROM
                                @pvn11_vat_codes
                            WHERE
                                CODE = A.vat_code
                        ),
                        0
                    ) = 0
                ) THEN isnull(
                    CAST(
                        vatc_prepayment / CAST(
                            1 + (
                                SELECT
                                    TOP 1 (ilmakm / 100)
                                FROM
                                    fin_kmkoodid
                                WHERE
                                    kood = a.vat_code
                            ) AS DECIMAL(15, 4)
                        ) AS DECIMAL(15, 4)
                    ),
                    0
                )
            END
        )
        ELSE 0
    END,
    CASE
        WHEN (
            dok_veids != '9'
            OR dok_veids = '8'
        ) THEN SUM(doc_vat)
        ELSE (
            CASE
                WHEN (SUM(doc_vat) < 0) THEN 0
                ELSE SUM(doc_vat) *(-1)
            END
        )
    END - CASE
        WHEN (dok_veids != '3') THEN (
            CASE
                WHEN (
                    ISNULL(
                        (
                            SELECT
                                reverse_rate
                            FROM
                                @pvn11_vat_codes
                            WHERE
                                CODE = A.vat_code
                        ),
                        0
                    ) != 0
                ) THEN isnull(
                    (
                        CAST(
                            (
                                vatc_prepayment * CAST(
                                    (
                                        0 + (
                                            SELECT
                                                POORD / 100
                                            FROM
                                                fin_kmkoodid
                                            WHERE
                                                kood = a.vat_code
                                        )
                                    ) AS DECIMAL(15, 4)
                                )
                            ) AS DECIMAL(15, 4)
                        )
                    ),
                    0
                )
                WHEN (
                    ISNULL(
                        (
                            SELECT
                                reverse_rate
                            FROM
                                @pvn11_vat_codes
                            WHERE
                                CODE = A.vat_code
                        ),
                        0
                    ) = 0
                ) THEN isnull(
                    (
                        CAST(
                            vatc_prepayment - (
                                vatc_prepayment / CAST(
                                    1 + (
                                        SELECT
                                            ilmakm / 100
                                        FROM
                                            fin_kmkoodid
                                        WHERE
                                            kood = a.vat_code
                                    ) AS DECIMAL(15, 4)
                                )
                            ) AS DECIMAL(15, 4)
                        )
                    ),
                    0
                )
            END
        )
        ELSE 0
    END,
    doc_date,
    CASE
        WHEN (a.dok_veids = '1') THEN (
            SELECT
                SUM(doc_sum)
            FROM
                @pvn1_1_temp b
            WHERE
                a.directo_nr = b.directo_nr
                AND b.dok_veids = a.dok_veids
        )
        ELSE (
            SELECT
                SUM(doc_sum)
            FROM
                @pvn1_1_temp b
            WHERE
                a.directo_nr = b.directo_nr
                AND b.dok_veids = a.dok_veids
                AND a.doc_nr = b.doc_nr
        )
    END - CASE
        WHEN (a.dok_veids = '1') THEN (
            isnull(
                (
                    SELECT
                        SUM(summa)
                    FROM
                        or_arved_ettemaksud
                    WHERE
                        arve = a.directo_nr
                        AND kmk IN (
                            SELECT
                                DISTINCT kmkood
                            FROM
                                or_arved_read
                            WHERE
                                NUMBER = a.directo_nr
                        )
                ),
                0
            )
        )
        ELSE 0
    END,
    vatc_prepayment
FROM
    @pvn1_1_temp a
GROUP BY
    dar_veids,
    do_limit,
    dok_veids,
    doc_nr,
    vat_code,
    client_name,
    vat_reg_nr,
    doc_date,
    directo_nr,
    vatc_prepayment --update @pvn1_1_values_by_doc set dar_veids = 'N' where vat_reg_nr = ' '
    --update @pvn1_1_values_by_doc set dok_veids = '4' where doc_sum < 0 and dok_veids = '1'
INSERT
    @pvn_1_1_totals
SELECT
    SUM(doc_sum),
    SUM(doc_vat)
FROM
    @pvn1_1_values_by_doc
INSERT
    @pvn1_1_sums_supplier
SELECT
    isnull(vat_reg_nr, ' '),
    SUM(doc_sum),
    SUM(doc_vat)
FROM
    @pvn1_1_values_by_doc
WHERE
    isnull(vat_reg_nr, ' ') != ''
GROUP BY
    vat_reg_nr
INSERT
    @pvn1_1_top_table
SELECT
    dar_veids,
    do_limit,
    dok_veids,
    doc_nr,
    directo_nr,
    vat_code,
    client_name,
    vat_reg_nr,
    doc_sum,
    doc_vat,
    doc_date,
    rn
FROM
    @pvn1_1_values_by_doc
WHERE
    (
        doc_sum_total >= @lim
        OR doc_sum_total <= (@lim * (-1))
    )
GROUP BY
    dar_veids,
    do_limit,
    dok_veids,
    doc_nr,
    vat_code,
    client_name,
    vat_reg_nr,
    doc_date,
    doc_sum_total,
    doc_sum,
    doc_vat,
    directo_nr,
    rn
DELETE FROM
    @pvn1_1_values_by_doc
WHERE
    rn IN (
        SELECT
            rn
        FROM
            @pvn1_1_top_table
    )
INSERT
    @pvn1_1_top_r_table
SELECT
    dar_veids,
    do_limit,
    dok_veids,
    doc_nr,
    directo_nr,
    vat_code,
    client_name,
    vat_reg_nr,
    doc_sum,
    doc_vat,
    doc_date,
    rn
FROM
    @pvn1_1_values_by_doc
WHERE
    dar_veids IN ('R1', 'R2', 'R3', 'R4', 'R5', 'R6', 'R7', 'R8', 'R9')
    AND directo_nr + '(' + dar_veids + ')' + '[' + dok_veids + ']' NOT IN (
        SELECT
            directo_nr + '(' + dar_veids + ')' + '[' + dok_veids + ']'
        FROM
            @pvn1_1_top_table
    )
GROUP BY
    dar_veids,
    do_limit,
    dok_veids,
    doc_nr,
    vat_code,
    client_name,
    vat_reg_nr,
    doc_date,
    doc_sum_total,
    doc_sum,
    doc_vat,
    directo_nr,
    rn
DELETE FROM
    @pvn1_1_values_by_doc
WHERE
    rn IN (
        SELECT
            rn
        FROM
            @pvn1_1_top_r_table
    )
INSERT
    @pvn_1_1_v_totals
SELECT
    'V',
    CAST(
        (
            SELECT
                TOP 1 SUBSTRING(NIMI, 1, 30)
            FROM
                hankijad Y
            WHERE
                Y.KMREGNR = Z.vat_reg_nr
        ) AS NVARCHAR(30)
    ),
    vat_reg_nr,
    CAST(
        doc_sum - CAST(
            isnull(
                (
                    SELECT
                        SUM(doc_sum)
                    FROM
                        @pvn1_1_top_table x
                    WHERE
                        x.vat_reg_nr = z.vat_reg_nr
                ),
                0
            ) AS DECIMAL(15, 4)
        ) - CAST(
            isnull(
                (
                    SELECT
                        SUM(doc_sum)
                    FROM
                        @pvn1_1_top_r_table u
                    WHERE
                        u.vat_reg_nr = z.vat_reg_nr
                ),
                0
            ) AS DECIMAL(15, 4)
        ) AS DECIMAL(15, 4)
    ),
    CAST(
        CAST(doc_vat AS DECIMAL(15, 2)) - CAST(
            isnull(
                (
                    SELECT
                        SUM(doc_vat)
                    FROM
                        @pvn1_1_top_table x
                    WHERE
                        x.vat_reg_nr = z.vat_reg_nr
                ),
                0
            ) AS DECIMAL(15, 2)
        ) - CAST(
            isnull(
                (
                    SELECT
                        SUM(CAST(doc_vat AS DECIMAL(15, 2)))
                    FROM
                        @pvn1_1_top_r_table u
                    WHERE
                        u.vat_reg_nr = z.vat_reg_nr
                ),
                0
            ) AS DECIMAL(15, 2)
        ) AS DECIMAL(15, 2)
    )
FROM
    @pvn1_1_sums_supplier z
WHERE
    (
        doc_sum >= @lim
        OR doc_sum <= (@lim * (-1))
    )
    AND CAST(
        doc_sum - isnull(
            (
                SELECT
                    SUM(doc_sum)
                FROM
                    @pvn1_1_top_table x
                WHERE
                    x.vat_reg_nr = z.vat_reg_nr
            ),
            0
        ) - isnull(
            (
                SELECT
                    SUM(doc_sum)
                FROM
                    @pvn1_1_top_r_table u
                WHERE
                    u.vat_reg_nr = z.vat_reg_nr
            ),
            0
        ) AS DECIMAL(15, 4)
    ) <> 0
    AND vat_reg_nr != ''
INSERT
    @pvn_1_1_v_totals2
SELECT
    'V',
    client_name,
    vat_reg_nr,
    doc_sum,
    doc_vat
FROM
    @pvn_1_1_v_totals
WHERE
    (
        doc_sum >= @lim
        OR doc_sum <= (@lim * (-1))
    )
DELETE FROM
    @pvn1_1_values_by_doc
WHERE
    vat_reg_nr IN (
        SELECT
            vat_reg_nr
        FROM
            @pvn_1_1_v_totals2
    )
INSERT
    @pvn_1_1_t_totals
SELECT
    CAST(SUM(doc_sum) AS DECIMAL(15, 4)),
    CAST(SUM(doc_vat) AS DECIMAL(15, 4)),
    ''
FROM
    @pvn1_1_values_by_doc z
    /*
     select 
     cast(sum(doc_sum * (-1)) as decimal(15,4))
     ,   cast(sum(doc_vat * (-1)) as decimal(15,4))
     from @pvn1_1_values_by_doc z 
     where (doc_sum between (@lim * (-1)) and @lim)
     and vat_reg_nr not in (select vat_reg_nr from @pvn1_1_sums_supplier where (doc_sum >= @lim or doc_sum <= (@lim * (-1))) and isnull(vat_reg_nr,'')!='')
     and dar_veids not in ('R1','R2','R3','R4','R5','R6','R7','R8','R9')
     UNION
     select 
     cast(sum(doc_sum) as decimal(15,4))
     ,   cast(sum(doc_vat) as decimal(15,4))
     from @pvn1_1_values_by_doc z 
     where (doc_sum between (@lim * (-1)) and @lim)
     and vat_reg_nr not in (select vat_reg_nr from @pvn1_1_sums_supplier where (doc_sum >= @lim or doc_sum <= (@lim * (-1))) and isnull(vat_reg_nr,'')!='')
     UNION
     select 
     cast(sum(doc_sum) as decimal(15,4))
     ,   cast(sum(doc_vat) as decimal(15,4))
     from @pvn1_1_values_by_doc z
     where (doc_sum between (@lim * (-1)) and @lim)
     and (vat_reg_nr in (select vat_reg_nr from @pvn1_1_sums_supplier where (doc_sum >= @lim or doc_sum <= (@lim * (-1))) and isnull(vat_reg_nr,'')!='') and vat_reg_nr not in (select vat_reg_nr from  @pvn_1_1_v_totals2 where isnull(vat_reg_nr,'')=''))
     and dar_veids not in ('R1','R2','R3','R4','R5','R6','R7','R8','R9')
     UNION
     select 
     cast(sum(doc_sum) as decimal(15,4))
     ,   cast(sum(doc_vat) as decimal(15,4))
     from @pvn1_1_values_by_doc z 
     where (doc_sum between (@lim * (-1)) and @lim)
     and vat_reg_nr not in (select vat_reg_nr from @pvn1_1_sums_supplier where (doc_sum >= @lim or doc_sum <= (@lim * (-1))) and isnull(vat_reg_nr,'')='')*/
    -----------------
    ------ 1-2 ------
    -----------------
    DECLARE @pvn12_vat_codes TABLE (
        code nvarchar(30),
        rate DECIMAL,
        reverse_rate DECIMAL,
        proportion DECIMAL,
        description nvarchar(200),
        sales_account nvarchar(30),
        purchase_account nvarchar(30),
        info nvarchar(200),
        dar_veids nvarchar(5),
        do_limit VARCHAR(2)
    )
INSERT INTO
    @pvn12_vat_codes
SELECT
    kood,
    ilmakm,
    poord,
    or_proportsioon,
    seletus,
    myykkonto,
    ostuKMkonto,
    lisainfo,
    CAST(
        ISNULL(
            (
                SELECT
                    TOP 1 sisu
                FROM
                    yld_data yd WITH (NOLOCK)
                WHERE
                    yd.kaart = fk.kood
                    AND kood = 'DARTIPS1_2'
                    AND klass = 'kmk'
            ),
            'G'
        ) AS nvarchar(10)
    ) AS dar_veids,
    CAST(
        ISNULL(
            (
                SELECT
                    TOP 1 sisu
                FROM
                    yld_data yd WITH (NOLOCK)
                WHERE
                    yd.kaart = fk.kood
                    AND kood = 'LIMITS'
                    AND klass = 'kmk'
            ),
            'Ja'
        ) AS VARCHAR(2)
    ) AS do_limit
FROM
    fin_kmkoodid fk
WHERE
    lisainfo LIKE '%pvn12%' DECLARE @pvn12_currencies TABLE (currency nvarchar(3))
INSERT INTO
    @pvn12_currencies (currency)
SELECT
    DISTINCT kood
FROM
    curr_rates --pvn12 main table
    DECLARE @pvn12_main_table TABLE (
        dar_veids nvarchar(5),
        do_limit VARCHAR(2),
        doc_nr nvarchar(30),
        client_doc_nr nvarchar(30),
        vat_code nvarchar(30),
        directo_table nvarchar(30),
        doc_type nvarchar(30),
        client_name nvarchar(30),
        vat_reg_nr nvarchar(30),
        country_code nvarchar(2),
        doc_sum DECIMAL(15, 2),
        doc_vat DECIMAL(15, 2),
        rate DECIMAL(28, 18),
        currency nvarchar(30),
        alt_rate DECIMAL(28, 18),
        alt_currency nvarchar(30),
        alt_doc_currency_sum nvarchar(30),
        doc_date nvarchar(30)
    ) --pvn12 temp table
    DECLARE @pvn12_temp_table TABLE (
        dar_veids nvarchar(5),
        do_limit VARCHAR(2),
        doc_nr nvarchar(30),
        client_doc_nr nvarchar(30),
        vat_code nvarchar(30),
        directo_table nvarchar(30),
        doc_type nvarchar(30),
        client_name nvarchar(30),
        vat_reg_nr nvarchar(30),
        country_code nvarchar(2),
        doc_sum DECIMAL(15, 4),
        doc_vat DECIMAL(15, 4),
        rate DECIMAL(28, 18),
        currency nvarchar(30),
        alt_rate DECIMAL(28, 18),
        alt_currency nvarchar(30),
        alt_doc_currency_sum nvarchar(30),
        doc_date nvarchar(30),
        vat_c_prepayment DECIMAL
    )
INSERT INTO
    @pvn12_temp_table --purchase invoices - temp
SELECT
    (
        SELECT
            TOP 1 dar_veids
        FROM
            @pvn12_vat_codes vc
        WHERE
            vc.code = oar.kmkood
    ) AS dar_veids,
    '' AS do_limit,
    CAST(oa.number AS nvarchar(30)) AS doc_nr,
    CAST(oa.hankija_arve AS nvarchar(30)) AS client_doc_nr,
    CAST(oar.kmkood AS nvarchar(30)) AS vat_code,
    'purchase_invoice' AS directo_table,
    CAST(oa.tyyp AS nvarchar(30)) AS doc_type,
    CAST(oa.hankija_nimi AS nvarchar(30)) AS client_name,
    CAST(
        (
            SELECT
                TOP 1 kmregnr
            FROM
                hankijad
            WHERE
                hankijad.kood = oa.hankija_kood
        ) AS nvarchar(30)
    ) AS vat_reg_nr,
    '--' AS country_code,
    CAST(
        (
            (
                SELECT
                    SUM(summa)
                FROM
                    or_arved_read
                WHERE
                    NUMBER = oar.number
                    AND kmkood = oar.kmkood
            ) * ISNULL(oa.kurssbv1, 1)
        ) AS DECIMAL(15, 4)
    ) AS doc_sum,
    (
        CASE
            WHEN (
                (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 reverse_rate
                            FROM
                                @pvn12_vat_codes
                            WHERE
                                code = oar.kmkood
                        ),
                        0
                    )
                ) != 0
            ) THEN CAST(
                (
                    SELECT
                        SUM(summa)
                    FROM
                        or_arved_read
                    WHERE
                        NUMBER = oar.number
                        AND kmkood = oar.kmkood
                ) * ISNULL(oa.kurssbv1, 1) * (
                    (
                        ISNULL(
                            (
                                SELECT
                                    TOP 1 reverse_rate
                                FROM
                                    @pvn12_vat_codes
                                WHERE
                                    code = oar.kmkood
                            ),
                            0
                        )
                    ) / 100
                ) AS DECIMAL(15, 4)
            )
            ELSE CAST(
                (
                    SELECT
                        SUM(summa)
                    FROM
                        or_arved_read
                    WHERE
                        NUMBER = oar.number
                        AND kmkood = oar.kmkood
                ) *(@stat_vat / 100) * ISNULL(oa.kurssbv1, 1) AS DECIMAL(15, 4)
            )
        END
    ) AS doc_vat,
    CAST(ISNULL(oa.kurssbv1, 1) AS DECIMAL(28, 18)) AS rate,
    CAST(oa.valuuta AS nvarchar(30)) AS currency,
    1 AS alt_rate,
    'EUR' AS alt_currency,
    CAST(oa.lisa_field7 AS nvarchar(30)) AS alt_doc_currency_sum,
    REPLACE(CONVERT(VARCHAR, oa.aeg, 111), '/', '-') AS doc_date,
    (
        SELECT
            SUM(summa)
        FROM
            or_arved_ettemaksud oae
        WHERE
            oae.arve = oa.number
            AND oae.kmk = oar.kmkood
    )
FROM
    or_arved_read oar,
    or_arved oa WITH (NOLOCK)
WHERE
    CAST(oa.kande_aeg AS DATE) BETWEEN CAST(@aeg1 AS DATE)
    AND CAST(@aeg2 AS DATE)
    AND (kinnitatud = 'True')
    AND (oa.number = oar.number)
    AND (
        EXISTS(
            SELECT
                1
            FROM
                @pvn12_vat_codes
            WHERE
                code = oar.kmkood
        )
    )
UNION
SELECT
    (
        SELECT
            TOP 1 dar_veids
        FROM
            @pvn12_vat_codes vc
        WHERE
            vc.code = otr.kmk
    ) AS dar_veids,
    (
        SELECT
            TOP 1 do_limit
        FROM
            @pvn12_vat_codes vc
        WHERE
            vc.code = otr.kmk
    ) AS do_limit,
    CAST(
        isnull(
            (
                SELECT
                    hankija_arve
                FROM
                    or_arved
                WHERE
                    NUMBER = otr.ostuarve
            ),
            ot.number
        ) AS nvarchar(30)
    ) AS client_doc_nr,
    CAST(ot.number AS nvarchar(30)) AS client_doc_nr,
    CAST(otr.kmk AS nvarchar(30)) AS vat_code,
    'payments' AS directo_table,
    '' doc_type,
    CAST(
        (
            SELECT
                CAST(nimi AS nvarchar(30))
            FROM
                hankijad WITH (NOLOCK)
            WHERE
                (hankijad.kood = otr.hankija_kood)
        ) AS nvarchar(30)
    ) AS client_name,
    CAST(
        (
            SELECT
                CAST(kmregnr AS nvarchar(30))
            FROM
                hankijad WITH (NOLOCK)
            WHERE
                (hankijad.kood = otr.hankija_kood)
        ) AS nvarchar(30)
    ) AS vat_reg_nr,
    --CAST(otr.summa_p AS decimal(15,2)) AS doc_sum,
    --CAST((otr.summa_p * (@stat_vat / 100)) AS decimal(15,2)) AS doc_vat,
    '--' AS country_code,
    (
        CASE
            WHEN (
                (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 reverse_rate
                            FROM
                                @pvn12_vat_codes
                            WHERE
                                code = otr.kmk
                        ),
                        0
                    )
                ) != 0
            ) THEN CAST(otr.summa_p AS DECIMAL(15, 2))
            ELSE CAST(
                (otr.summa_p / (1 + @stat_vat / 100)) AS DECIMAL(15, 2)
            )
        END
    ) AS doc_sum,
    (
        CASE
            WHEN (
                (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 reverse_rate
                            FROM
                                @pvn12_vat_codes
                            WHERE
                                code = otr.kmk
                        ),
                        0
                    )
                ) != 0
            ) THEN CAST(
                otr.summa_p * (
                    (
                        ISNULL(
                            (
                                SELECT
                                    TOP 1 reverse_rate
                                FROM
                                    @pvn12_vat_codes
                                WHERE
                                    code = otr.kmk
                            ),
                            0
                        )
                    ) / 100
                ) AS DECIMAL(15, 2)
            )
            ELSE CAST(
                (
                    otr.summa_p / (1 + @stat_vat / 100) * (@stat_vat / 100)
                ) AS DECIMAL(15, 2)
            )
        END
    ) AS doc_vat,
    CAST(ISNULL(otr.kurss_a, 1) AS DECIMAL(28, 18)) AS rate,
    CAST(otr.valuuta_a AS nvarchar(30)) AS currency,
    1 AS alt_rate,
    'EUR' AS alt_currency,
    '',
    --CAST(oa.lisa_field7 AS nvarchar(30)) AS alt_doc_currency_sum,
    REPLACE(CONVERT(VARCHAR, ot.aeg, 111), '/', '-') AS doc_date,
    0
FROM
    or_tasumised ot,
    or_tasumised_read otr WITH (NOLOCK)
WHERE
    CAST(ot.aeg AS DATE) BETWEEN CAST(@aeg1 AS DATE)
    AND CAST(@aeg2 AS DATE)
    AND (ot.kinnitatud = 'True')
    AND (ot.number = otr.number)
    AND (
        EXISTS(
            SELECT
                1
            FROM
                @pvn12_vat_codes
            WHERE
                code = otr.kmk
        )
    )
    AND isnull(otr.ostuarve, '') = ''
UNION
SELECT
    (
        SELECT
            TOP 1 dar_veids
        FROM
            @pvn12_vat_codes vc
        WHERE
            vc.code = oar.kmk
    ) AS dar_veids,
    '' AS do_limit,
    CAST(oa.number AS nvarchar(30)) AS doc_nr,
    CAST(oa.hankija_arve AS nvarchar(30)) AS client_doc_nr,
    CAST(oar.kmk AS nvarchar(30)) AS vat_code,
    'prepayment' AS directo_table,
    CAST(oa.tyyp AS nvarchar(30)) AS doc_type,
    CAST(oa.hankija_nimi AS nvarchar(30)) AS client_name,
    CAST(
        (
            SELECT
                TOP 1 kmregnr
            FROM
                hankijad
            WHERE
                hankijad.kood = oa.hankija_kood
        ) AS nvarchar(30)
    ) AS vat_reg_nr,
    '--' AS country_code,
    CAST(
        (oar.summa) * ISNULL(oa.kurssbv1, 1) AS DECIMAL(15, 4)
    ) AS doc_sum,
    (
        CASE
            WHEN (
                (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 reverse_rate
                            FROM
                                @pvn12_vat_codes
                            WHERE
                                code = oar.kmk
                        ),
                        0
                    )
                ) != 0
            ) THEN CAST(
                oar.summa * ISNULL(oa.kurssbv1, 1) * (
                    (
                        ISNULL(
                            (
                                SELECT
                                    TOP 1 reverse_rate
                                FROM
                                    @pvn12_vat_codes
                                WHERE
                                    code = oar.kmk
                            ),
                            0
                        )
                    ) / 100
                ) AS DECIMAL(15, 4)
            )
            ELSE CAST(
                (oar.summa) *(@stat_vat / 100) * ISNULL(oa.kurssbv1, 1) AS DECIMAL(15, 4)
            )
        END
    ) AS doc_vat,
    CAST(ISNULL(oa.kurssbv1, 1) AS DECIMAL(28, 18)) AS rate,
    CAST(oa.valuuta AS nvarchar(30)) AS currency,
    1 AS alt_rate,
    'EUR' AS alt_currency,
    CAST(oa.lisa_field7 AS nvarchar(30)) AS alt_doc_currency_sum,
    REPLACE(CONVERT(VARCHAR, oa.aeg, 111), '/', '-') AS doc_date,
    0
FROM
    or_arved_ettemaksud oar,
    or_arved oa WITH (NOLOCK)
WHERE
    CAST(oa.kande_aeg AS DATE) BETWEEN CAST(@aeg1 AS DATE)
    AND CAST(@aeg2 AS DATE)
    AND (oa.kinnitatud = 'True')
    AND (oa.number = oar.arve)
    AND (
        EXISTS(
            SELECT
                1
            FROM
                @pvn12_vat_codes
            WHERE
                code = oar.kmk
        )
    )
    /*
     Select * from table a
     left join table b on a.blabla=b.blable
 
     Select * from table a , table b
     Where tablea.blabla = tableb.blabla
 
     */
INSERT INTO
    @pvn12_main_table --purchase invoices - main
SELECT
    dar_veids,
    do_limit,
    doc_nr,
    client_doc_nr,
    '' AS vat_code,
    directo_table,
    doc_type,
    client_name,
    vat_reg_nr,
    country_code,
    CASE
        WHEN (directo_table = 'purchase_invoice') THEN SUM(doc_sum) - isnull(
            (
                SELECT
                    SUM(doc_sum)
                FROM
                    @pvn12_temp_table
                WHERE
                    directo_table = 'prepayment'
                    AND doc_nr = b.doc_nr
            ),
            0
        )
        ELSE SUM(doc_sum)
    END,
    CASE
        WHEN (directo_table = 'purchase_invoice') THEN SUM(doc_vat) - isnull(
            (
                SELECT
                    SUM(doc_vat)
                FROM
                    @pvn12_temp_table
                WHERE
                    directo_table = 'prepayment'
                    AND doc_nr = b.doc_nr
            ),
            0
        )
        ELSE SUM(doc_vat)
    END,
    rate,
    currency,
    alt_rate,
    alt_currency,
    alt_doc_currency_sum,
    doc_date
FROM
    @pvn12_temp_table b
WHERE
    --doc_sum > 0 or doc_sum < 0 or 
    directo_table NOT IN ('prepayment')
GROUP BY
    dar_veids,
    do_limit,
    doc_nr,
    client_doc_nr,
    directo_table,
    doc_type,
    client_name,
    vat_reg_nr,
    country_code,
    rate,
    currency,
    alt_rate,
    alt_currency,
    alt_doc_currency_sum,
    doc_date
INSERT INTO
    @pvn12_main_table --expenses
    /*
     SELECT
     '' AS dar_veids,
     '' AS do_limit,
     CAST(number AS nvarchar(30)) AS doc_nr,
     CAST((SELECT TOP 1 dokument FROM fin_kulutused_read WHERE (fin_kulutused_read.number=fin_kulutused.number)) AS nvarchar(30)) AS client_doc_nr,
     CAST((SELECT TOP 1 kmkood FROM fin_kulutused_read WHERE (fin_kulutused_read.number=fin_kulutused.number)) AS nvarchar(30)) AS vat_code,
     'expense' AS directo_table,
     'Fakturrekins' AS doc_type,
     CAST((SELECT TOP 1 hankija_nimi FROM fin_kulutused_read WHERE fin_kulutused_read.number=fin_kulutused.number) AS nvarchar(30)) AS client_name,
     CAST((SELECT kmregnr FROM hankijad WHERE hankijad.kood=(SELECT TOP 1 hankija_kood FROM fin_kulutused_read WHERE fin_kulutused_read.number=fin_kulutused.number)) AS nvarchar(30)) AS vat_reg_nr,
     '--' AS country_code,
     CAST(summa*ISNULL(kurssbv1,1) AS decimal(15,2)) AS doc_sum,
     CAST(summa*(@stat_vat/100)*ISNULL(kurssbv1,1) AS decimal(15,2)) AS doc_vat,
     CAST(ISNULL(kurssbv1,1) AS decimal(28,18)) AS rate,
     CAST(valuuta AS nvarchar(30)) AS currency,
     1 AS alt_rate,
     'EUR' AS alt_currency,
     CAST(lisa_field7 AS nvarchar(30)) AS alt_doc_currency_sum,
     REPLACE(CONVERT(VARCHAR, aeg, 111), '/', '-')  AS doc_date
     FROM fin_kulutused WITH (NOLOCK) WHERE CAST(aeg AS date) BETWEEN CAST(@aeg1 AS date) AND CAST(@aeg2 AS date)
     AND (kinnitatud='True')
     AND (EXISTS(SELECT 1 FROM @pvn12_vat_codes WHERE code IN (SELECT kmkood FROM fin_kulutused_read WHERE (fin_kulutused_read.number=fin_kulutused.number))))
     */
SELECT
    (
        SELECT
            TOP 1 dar_veids
        FROM
            @pvn12_vat_codes vc
        WHERE
            vc.code = fkr.kmkood
    ) AS dar_veids,
    (
        SELECT
            TOP 1 do_limit
        FROM
            @pvn12_vat_codes vc
        WHERE
            vc.code = fkr.kmkood
    ) AS do_limit,
    CAST(fkr.number AS nvarchar(30)) AS doc_nr,
    CAST(fkr.dokument AS nvarchar(30)) AS client_doc_nr,
    CAST(fkr.kmkood AS nvarchar(30)) AS vat_code,
    'expense' AS directo_table,
    'Fakturrekins' AS doc_type,
    CAST(fkr.hankija_nimi AS nvarchar(30)) AS client_name,
    CAST(
        (
            SELECT
                kmregnr
            FROM
                hankijad
            WHERE
                kood = fkr.hankija_kood
        ) AS nvarchar(30)
    ),
    '--',
    CAST(
        fkr.summa * isnull(fkr.r_kurss, isnull(fk.kurssbv1, 1)) AS DECIMAL(15, 2)
    ),
    CAST(
        (fkr.summa * (@stat_vat / 100)) * isnull(r_kurss, 1) AS DECIMAL(15, 2)
    ),
    CAST(
        isnull(fkr.r_kurss, isnull(fk.kurssbv1, 1)) AS DECIMAL(28, 18)
    ),
    CAST(
        isnull(fkr.r_valuuta, isnull(fk.valuuta, 'EUR')) AS nvarchar(255)
    ),
    1,
    'EUR',
    CAST(fk.lisa_field7 AS nvarchar(30)) AS alt_doc_currency_sum,
    REPLACE(
        CONVERT(VARCHAR, isnull(fkr.aeg, fk.aeg), 111),
        '/',
        '-'
    ) AS doc_date
FROM
    fin_kulutused_read fkr WITH(nolock)
    LEFT JOIN fin_kulutused fk ON fk.number = fkr.number
WHERE
    CAST(isnull(fkr.aeg, fk.aeg) AS DATE) BETWEEN CAST(@aeg1 AS DATE)
    AND CAST(@aeg2 AS DATE)
    AND fkr.kmkood IN (
        SELECT
            code
        FROM
            @pvn12_vat_codes
    )
    AND (kinnitatud = 'True')
UPDATE
    @pvn12_main_table
SET
    country_code = SUBSTRING(vat_reg_nr, 1, 2)
UPDATE
    @pvn12_main_table
SET
    alt_currency = (
        CASE
            WHEN country_code = 'BG' THEN 'BGN'
            WHEN country_code = 'CZ' THEN 'CZK'
            WHEN country_code = 'DK' THEN 'DKK'
            WHEN country_code = 'GB' THEN 'GBP'
            WHEN country_code = 'HU' THEN 'HUF'
            WHEN country_code = 'LT'
            AND CAST(doc_date AS DATE) < CAST('2015.01.01' AS DATE) THEN 'LTL'
            WHEN country_code = 'PL' THEN 'PLN'
            WHEN country_code = 'RO' THEN 'RON'
            WHEN country_code = 'SE' THEN 'SEK'
            ELSE 'EUR'
        END
    )
UPDATE
    @pvn12_main_table
SET
    alt_rate = ISNULL(
        (
            SELECT
                TOP 1 CAST(curr_rates.kurss1 AS DECIMAL(28, 18))
            FROM
                curr_rates
            WHERE
                curr_rates.kood = alt_currency
                AND CAST(curr_rates.aeg AS DATE) <= DATEADD(DAY, -1, CAST(doc_date AS DATE))
            ORDER BY
                curr_rates.aeg DESC
        ),
        1
    )
UPDATE
    @pvn12_main_table
SET
    dar_veids = (
        SELECT
            TOP 1 dar_veids
        FROM
            @pvn12_vat_codes vc
        WHERE
            vc.code = vat_code
    )
WHERE
    dar_veids IS NULL
UPDATE
    @pvn12_main_table
SET
    do_limit = (
        SELECT
            TOP 1 do_limit
        FROM
            @pvn12_vat_codes vc
        WHERE
            vc.code = vat_code
    ) -----------------
    ------ 1-3 ------
    -----------------
    --izveidojam PVN 13 kodu tabulu
    DECLARE @pvn13_vat_codes TABLE (
        code nvarchar(30),
        rate DECIMAL,
        description nvarchar(200),
        sales_account nvarchar(30),
        purchase_account nvarchar(30),
        info nvarchar(200),
        dar_veids nvarchar(5),
        do_limit VARCHAR(2)
    )
INSERT INTO
    @pvn13_vat_codes
SELECT
    kood,
    ilmakm,
    seletus,
    myykkonto,
    ostuKMkonto,
    lisainfo,
    CAST(
        ISNULL(
            (
                SELECT
                    TOP 1 REPLACE(sisu, '_', '.')
                FROM
                    yld_data yd WITH (NOLOCK)
                WHERE
                    yd.kaart = fk.kood
                    AND kood = 'DARTIPS1_3'
                    AND klass = 'kmk'
            ),
            '41'
        ) AS nvarchar(10)
    ) AS dar_veids,
    CAST(
        ISNULL(
            (
                SELECT
                    TOP 1 sisu
                FROM
                    yld_data yd WITH (NOLOCK)
                WHERE
                    yd.kaart = fk.kood
                    AND kood = 'LIMITS'
                    AND klass = 'kmk'
            ),
            'Ja'
        ) AS VARCHAR(2)
    ) AS do_limit
FROM
    fin_kmkoodid fk
WHERE
    lisainfo LIKE '%pvn13%' DECLARE @pvn1_3_temp TABLE (
        dar_veids nvarchar(5),
        do_limit VARCHAR(2),
        dok_veids nvarchar(1),
        doc_nr nvarchar(30),
        vat_code nvarchar(30),
        client_name nvarchar(30),
        vat_reg_nr nvarchar(30),
        doc_sum DECIMAL(15, 4),
        doc_vat DECIMAL(15, 4),
        doc_date nvarchar(30),
        doc_sum_total DECIMAL(15, 4),
        vatc_prepayment DECIMAL(15, 4)
    ) DECLARE @pvn1_3_values_by_doc TABLE (
        dar_veids nvarchar(5),
        do_limit VARCHAR(2),
        dok_veids nvarchar(1),
        doc_nr nvarchar(30),
        vat_code nvarchar(30),
        client_name nvarchar(30),
        vat_reg_nr nvarchar(30),
        doc_sum DECIMAL(15, 4),
        doc_vat DECIMAL(15, 4),
        doc_date nvarchar(30),
        doc_sum_total DECIMAL(15, 4),
        vatc_prepayment DECIMAL(15, 4),
        rn INT
    ) DECLARE @pvn1_3_top_table TABLE (
        dar_veids nvarchar(5),
        do_limit VARCHAR(2),
        dok_veids nvarchar(1),
        doc_nr nvarchar(30),
        vat_code nvarchar(30),
        client_name nvarchar(30),
        vat_reg_nr nvarchar(30),
        doc_sum DECIMAL(15, 4),
        doc_vat DECIMAL(15, 4),
        doc_date nvarchar(30),
        doc_sum_total DECIMAL(15, 4),
        vatc_prepayment DECIMAL(15, 4),
        rn INT
    ) DECLARE @pvn1_3_top_tablex TABLE (
        dar_veids nvarchar(5),
        do_limit VARCHAR(2),
        dok_veids nvarchar(1),
        doc_nr nvarchar(30),
        vat_code nvarchar(30),
        client_name nvarchar(30),
        vat_reg_nr nvarchar(30),
        doc_sum DECIMAL(15, 4),
        doc_vat DECIMAL(15, 4),
        doc_date nvarchar(30),
        doc_sum_total DECIMAL(15, 4),
        vatc_prepayment DECIMAL(15, 4),
        rn INT
    ) DECLARE @tdeals TABLE (
        dar_veids nvarchar(5),
        do_limit VARCHAR(2),
        dok_veids nvarchar(1),
        doc_nr nvarchar(30),
        vat_code nvarchar(30),
        client_name nvarchar(30),
        vat_reg_nr nvarchar(30),
        doc_sum DECIMAL(15, 4),
        doc_vat DECIMAL(15, 4),
        doc_date nvarchar(30),
        doc_sum_total DECIMAL(15, 4),
        vatc_prepayment DECIMAL(15, 4),
        rn INT
    ) DECLARE @pvn1_3_top_sums_customer TABLE (
        vat_reg_nr nvarchar(30),
        doc_sum DECIMAL(15, 4),
        doc_vat DECIMAL(15, 4)
    ) DECLARE @pvn1_3_sums_customer TABLE (
        vat_reg_nr nvarchar(30),
        doc_sum DECIMAL(15, 4),
        doc_vat DECIMAL(15, 4)
    ) DECLARE @v_totals TABLE (
        dok_veids nvarchar(32),
        client_name nvarchar(30),
        vat_reg_nr nvarchar(34),
        doc_sum DECIMAL(15, 4),
        doc_vat DECIMAL(15, 4)
    ) DECLARE @x_totals TABLE (
        dok_veids nvarchar(32),
        client_name nvarchar(30),
        vat_reg_nr nvarchar(32),
        doc_sum DECIMAL(15, 4),
        doc_vat DECIMAL(15, 4)
    ) DECLARE @t_totals TABLE (
        doc_sum DECIMAL(15, 4),
        doc_vat DECIMAL(15, 4)
    ) --ielasam visas rēķina rindas kuras ir ar 1 - 3 atšifrējamajiem pvn kodiem
INSERT
    @pvn1_3_temp
SELECT
    (
        SELECT
            TOP 1 dar_veids
        FROM
            @pvn13_vat_codes vc
        WHERE
            vc.code = mr_arved_read.kmk
    ) AS dar_veids,
    (
        SELECT
            TOP 1 do_limit
        FROM
            @pvn13_vat_codes vc
        WHERE
            vc.code = mr_arved_read.kmk
    ) AS do_limit,
    CASE
        WHEN (isnull(ettemaks, 0) = 0) THEN '1'
        ELSE '1'
    END AS dok_veids,
    mr_arved_read.number AS doc_nr,
    kmk AS vat_code,
    CAST((klient_nimi) AS nvarchar(30)) AS client_name,
    CASE
        WHEN (
            kmregnumber IS NOT NULL
            OR kmregnumber != ' '
        ) THEN kmregnumber
        ELSE (
            SELECT
                top 1 kmregnr
            FROM
                kliendid
            WHERE
                kood = mr_arved.klient_kood
        )
    END AS vat_reg_nr,
    CAST((ROUND(ISNULL(summa, 0), 4)) AS DECIMAL(15, 4)) AS doc_sum,
    isnull(
        CAST(
            (
                ROUND(ISNULL(summa, 0), 4) * (
                    NULLIF(
                        (
                            ISNULL(
                                (
                                    SELECT
                                        TOP 1 rate
                                    FROM
                                        @pvn13_vat_codes
                                    WHERE
                                        code = mr_arved_read.kmk
                                ),
                                0
                            ) / 100
                        ),
                        0
                    )
                )
            ) AS DECIMAL(15, 4)
        ),
        '0.00'
    ) AS doc_vat,
    REPLACE(CONVERT(VARCHAR, aeg, 111), '/', '-') AS doc_date,
(
        SELECT
            SUM(summa)
        FROM
            mr_arved_read mar1
        WHERE
            mar1.number = mr_arved_read.number
            AND kmk IN (
                SELECT
                    code
                FROM
                    @pvn13_vat_codes
            )
    ),
(
        SELECT
            SUM(summa)
        FROM
            mr_arved_ettemaksud mae
        WHERE
            mae.arve = mr_arved_read.number
            AND mae.kmk = mr_arved_read.kmk
    )
FROM
    mr_arved_read WITH (NOLOCK)
    INNER JOIN mr_arved ON mr_arved_read.number = mr_arved.number
WHERE
    CAST(aeg AS DATE) BETWEEN CAST(@aeg1 AS DATE)
    AND CAST(@aeg2 AS DATE)
    AND (kinnitatud = 1)
    AND kmk IN (
        SELECT
            code
        FROM
            @pvn13_vat_codes
    )
    AND artikkel IS NOT NULL
    AND mr_arved.kokku >= 0
INSERT
    @pvn1_3_temp
SELECT
    (
        SELECT
            TOP 1 dar_veids
        FROM
            @pvn13_vat_codes vc
        WHERE
            vc.code = mlr.kmk
    ) AS dar_veids,
    (
        SELECT
            TOP 1 do_limit
        FROM
            @pvn13_vat_codes vc
        WHERE
            vc.code = mlr.kmk
    ) AS do_limit,
    '3' AS dok_veids,
    CAST(ml.number AS nvarchar(30)) AS doc_nr,
    CAST(mlr.kmk AS nvarchar(30)) AS vat_code,
    CAST(
        (
            SELECT
                TOP 1 nimi
            FROM
                kliendid WITH (NOLOCK)
            WHERE
                (kliendid.kood = mlr.klient_kood)
        ) AS nvarchar(30)
    ) AS client_name,
    CAST(
        (
            SELECT
                TOP 1 kmregnr
            FROM
                kliendid WITH (NOLOCK)
            WHERE
                (kliendid.kood = mlr.klient_kood)
        ) AS nvarchar(30)
    ) AS vat_reg_nr,
    CAST(
        (
            ROUND(mlr.tasuti, 2) /(
                (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 rate
                            FROM
                                @pvn13_vat_codes
                            WHERE
                                code = mlr.kmk
                        ),
                        0
                    ) / 100
                ) + 1
            )
        ) AS DECIMAL(15, 4)
    ) AS doc_sum,
    CAST(
        (
            (
                ROUND(mlr.tasuti, 2) /(
                    (
                        ISNULL(
                            (
                                SELECT
                                    TOP 1 rate
                                FROM
                                    @pvn13_vat_codes
                                WHERE
                                    code = mlr.kmk
                            ),
                            0
                        ) / 100
                    ) + 1
                )
            ) *(
                ISNULL(
                    (
                        SELECT
                            TOP 1 rate
                        FROM
                            @pvn13_vat_codes
                        WHERE
                            code = mlr.kmk
                    ),
                    0
                ) / 100
            )
        ) AS DECIMAL(15, 4)
    ) AS doc_vat,
    REPLACE(CONVERT(VARCHAR, ml.aeg, 111), '/', '-') AS doc_date,
    CAST(
        (
            ROUND(mlr.tasuti, 2) /(
                (
                    ISNULL(
                        (
                            SELECT
                                TOP 1 rate
                            FROM
                                @pvn13_vat_codes
                            WHERE
                                code = mlr.kmk
                        ),
                        0
                    ) / 100
                ) + 1
            )
        ) AS DECIMAL(15, 4)
    ),
    0
FROM
    mr_laekumised ml,
    mr_laekumised_read mlr WITH (NOLOCK)
WHERE
    CAST(ml.aeg AS DATE) BETWEEN CAST(@aeg1 AS DATE)
    AND CAST(@aeg2 AS DATE)
    AND (ml.kinnitatud = 'True')
    AND (ml.number = mlr.number)
    AND mlr.kmk IN (
        SELECT
            code
        FROM
            @pvn13_vat_codes
    )
    AND (
        (ISNULL(NULLIF(mlr.ettemaks, 0), 0) != 0)
        OR ((ISNULL(NULLIF(mlr.arvenumber, 0), 0) = 0))
    )
INSERT
    @pvn1_3_values_by_doc
SELECT
    dar_veids,
    do_limit,
    dok_veids,
    doc_nr,
    vat_code,
    client_name,
    isnull(vat_reg_nr, ' '),
    SUM(doc_sum) - CASE
        WHEN (dok_veids != '3') THEN (
            isnull(
                (
                    SELECT
                        CAST(
                            summa / CAST(
                                1 + (
                                    SELECT
                                        ilmakm / 100
                                    FROM
                                        fin_kmkoodid
                                    WHERE
                                        kood = mae.kmk
                                ) AS DECIMAL(15, 4)
                            ) AS DECIMAL(15, 4)
                        )
                    FROM
                        mr_arved_ettemaksud mae
                    WHERE
                        mae.arve = pvn13temp.doc_nr
                        AND mae.kmk = pvn13temp.vat_code
                ),
                0
            )
        )
        ELSE 0
    END,
    SUM(doc_vat) - CASE
        WHEN (dok_veids != '3') THEN (
            isnull(
                (
                    SELECT
                        CAST(
                            summa - (
                                summa / CAST(
                                    1 + (
                                        SELECT
                                            ilmakm / 100
                                        FROM
                                            fin_kmkoodid
                                        WHERE
                                            kood = mae.kmk
                                    ) AS DECIMAL(15, 4)
                                )
                            ) AS DECIMAL(15, 4)
                        )
                    FROM
                        mr_arved_ettemaksud mae
                    WHERE
                        mae.arve = pvn13temp.doc_nr
                        AND mae.kmk = pvn13temp.vat_code
                ),
                0
            )
        )
        ELSE 0
    END,
    doc_date,
    doc_sum_total,
    vatc_prepayment,
    ROW_NUMBER() OVER(
        ORDER BY
            dar_veids,
            do_limit,
            dok_veids,
            doc_nr,
            vat_code,
            client_name,
            vat_reg_nr,
            doc_date,
            doc_sum_total,
            vatc_prepayment
    ) nr
FROM
    @pvn1_3_temp pvn13temp
GROUP BY
    dar_veids,
    do_limit,
    dok_veids,
    doc_nr,
    vat_code,
    client_name,
    vat_reg_nr,
    doc_date,
    doc_sum_total,
    vatc_prepayment
INSERT
    @pvn1_3_sums_customer
SELECT
    isnull(vat_reg_nr, ' '),
    SUM(doc_sum),
    SUM(doc_vat)
FROM
    @pvn1_3_values_by_doc
WHERE
    isnull(vat_reg_nr, '') != ''
GROUP BY
    vat_reg_nr --delete from @pvn1_3_temp where dok_veids in ('1','Z')
    --only for anvol
    DECLARE @fin_kanded_read TABLE (
        sum_wo_vat DECIMAL(15, 4),
        vat_sum DECIMAL(15, 4)
    )
INSERT
    @fin_kanded_read
SELECT
    0,
    SUM(
        CASE
            WHEN (baas1deebet < 0) THEN (baas1deebet * (-1))
            WHEN (baas1kreedit > 0) THEN (baas1kreedit)
        END
    ) - SUM(
        CASE
            WHEN (baas1deebet > 0) THEN (baas1deebet)
            WHEN (baas1kreedit < 0) THEN (baas1kreedit * (-1))
        END
    )
FROM
    fin_kanded_read
WHERE
    tyyp = 'fin'
    AND CAST(r_aeg AS DATE) BETWEEN CAST(@aeg1 AS DATE)
    AND CAST(@aeg2 AS DATE)
    AND konto IN ('5721', '57210')
    AND kmkood IN ('1', '16')
UNION
SELECT
    SUM(
        CASE
            WHEN (baas1deebet < 0) THEN (baas1deebet * (-1))
            WHEN (baas1kreedit > 0) THEN (baas1kreedit)
        END
    ) - SUM(
        CASE
            WHEN (baas1deebet > 0) THEN (baas1deebet)
            WHEN (baas1kreedit < 0) THEN (baas1kreedit * (-1))
        END
    ),
    0
FROM
    fin_kanded_read
WHERE
    tyyp = 'fin'
    AND CAST(r_aeg AS DATE) BETWEEN CAST(@aeg1 AS DATE)
    AND CAST(@aeg2 AS DATE)
    AND SUBSTRING(CONVERT(nvarchar(32), konto), 1, 1) = '6'
    AND kmkood IN ('16', '1') DECLARE @pvn1_3tots TABLE (
        doc_sum DECIMAL(15, 4),
        doc_vat DECIMAL(15, 4)
    )
INSERT
    @pvn1_3tots
SELECT
    CAST(
        SUM(doc_sum) + (
            SELECT
                SUM(sum_wo_vat)
            FROM
                @fin_kanded_read
        ) AS DECIMAL(15, 4)
    ) AS sum_total,
    CAST(
        SUM(doc_vat) + (
            SELECT
                SUM(vat_sum)
            FROM
                @fin_kanded_read
        ) AS DECIMAL(15, 4)
    ) AS vat_total
FROM
    @pvn1_3_values_by_doc
INSERT
    @pvn1_3_top_table
SELECT
    dar_veids,
    do_limit,
    dok_veids,
    doc_nr,
    vat_code,
    client_name,
    vat_reg_nr,
    doc_sum,
    doc_vat,
    doc_date,
    doc_sum_total,
    vatc_prepayment,
    rn
FROM
    @pvn1_3_values_by_doc
WHERE
    (
        doc_sum_total >= @lim
        OR doc_sum_total <= (@lim * (-1))
    )
    AND doc_sum <> 0
    AND isnull(vat_reg_nr, '') != ''
GROUP BY
    dar_veids,
    do_limit,
    dok_veids,
    doc_nr,
    vat_code,
    client_name,
    vat_reg_nr,
    doc_date,
    doc_sum_total,
    doc_sum,
    doc_vat,
    vatc_prepayment,
    rn
DELETE FROM
    @pvn1_3_values_by_doc
WHERE
    rn IN (
        SELECT
            rn
        FROM
            @pvn1_3_top_table
    )
INSERT
    @pvn1_3_top_tablex
SELECT
    dar_veids,
    do_limit,
    dok_veids,
    doc_nr,
    vat_code,
    client_name,
    vat_reg_nr,
    doc_sum,
    doc_vat,
    doc_date,
    doc_sum_total,
    vatc_prepayment,
    rn
FROM
    @pvn1_3_values_by_doc
WHERE
    (
        doc_sum_total >= @lim
        OR doc_sum_total <= (@lim * (-1))
    )
    AND isnull(vat_reg_nr, '') = ''
GROUP BY
    dar_veids,
    do_limit,
    dok_veids,
    doc_nr,
    vat_code,
    client_name,
    vat_reg_nr,
    doc_date,
    doc_sum_total,
    doc_sum,
    doc_vat,
    vatc_prepayment,
    rn
DELETE FROM
    @pvn1_3_values_by_doc
WHERE
    rn IN (
        SELECT
            rn
        FROM
            @pvn1_3_top_tablex
    )
INSERT
    @pvn1_3_top_sums_customer
SELECT
    vat_reg_nr,
    SUM(doc_sum),
    SUM(doc_vat)
FROM
    @pvn1_3_top_table
GROUP BY
    vat_reg_nr
INSERT
    @v_totals
SELECT
    'V',
    CAST(
        (
            SELECT
                TOP 1 SUBSTRING(NIMI, 1, 30)
            FROM
                KLIENDID Y
            WHERE
                Y.KMREGNR = Z.vat_reg_nr
        ) AS NVARCHAR(30)
    ),
    vat_reg_nr,
    CAST(
        doc_sum - isnull(
            (
                SELECT
                    top 1 doc_sum
                FROM
                    @pvn1_3_top_sums_customer x
                WHERE
                    x.vat_reg_nr = z.vat_reg_nr
            ),
            0
        ) AS DECIMAL(15, 4)
    ),
    CAST(
        doc_vat - isnull(
            (
                SELECT
                    top 1 doc_vat
                FROM
                    @pvn1_3_top_sums_customer x
                WHERE
                    x.vat_reg_nr = z.vat_reg_nr
            ),
            0
        ) AS DECIMAL(15, 4)
    )
FROM
    @pvn1_3_sums_customer z
WHERE
    (
        doc_sum >= @lim
        OR doc_sum <= (@lim * (-1))
    )
    AND CAST(
        doc_sum - isnull(
            (
                SELECT
                    top 1 doc_sum
                FROM
                    @pvn1_3_top_sums_customer x
                WHERE
                    x.vat_reg_nr = z.vat_reg_nr
            ),
            0
        ) AS DECIMAL(15, 4)
    ) > 0
    AND isnull(vat_reg_nr, '') != ''
DELETE FROM
    @pvn1_3_values_by_doc
WHERE
    vat_reg_nr IN (
        SELECT
            vat_reg_nr
        FROM
            @v_totals
    )
INSERT
    @tdeals
SELECT
    dar_veids,
    do_limit,
    dok_veids,
    doc_nr,
    vat_code,
    client_name,
    vat_reg_nr,
    doc_sum,
    doc_vat,
    doc_date,
    doc_sum_total,
    vatc_prepayment,
    rn
FROM
    @pvn1_3_values_by_doc
WHERE
    (
        doc_sum BETWEEN (@lim * (-1))
        AND @lim
    )
    AND isnull(vat_reg_nr, '') != ''
GROUP BY
    dar_veids,
    do_limit,
    dok_veids,
    doc_nr,
    vat_code,
    client_name,
    vat_reg_nr,
    doc_date,
    doc_sum_total,
    doc_sum,
    doc_vat,
    vatc_prepayment,
    rn
UNION
SELECT
    dar_veids,
    do_limit,
    dok_veids,
    doc_nr,
    vat_code,
    client_name,
    vat_reg_nr,
    doc_sum,
    doc_vat,
    doc_date,
    doc_sum_total,
    vatc_prepayment,
    rn
FROM
    @pvn1_3_values_by_doc
WHERE
    (
        doc_sum BETWEEN (@lim * (-1))
        AND @lim
    )
    AND isnull(vat_reg_nr, '') = ''
GROUP BY
    dar_veids,
    do_limit,
    dok_veids,
    doc_nr,
    vat_code,
    client_name,
    vat_reg_nr,
    doc_date,
    doc_sum_total,
    doc_sum,
    doc_vat,
    vatc_prepayment,
    rn
DELETE FROM
    @pvn1_3_values_by_doc
WHERE
    rn IN (
        SELECT
            rn
        FROM
            @tdeals
    )
INSERT
    @t_totals
SELECT
    CAST(SUM(doc_sum) AS DECIMAL(15, 4)),
    CAST(SUM(doc_vat) AS DECIMAL(15, 4))
FROM
    @tdeals z
INSERT
    @x_totals
SELECT
    'X',
    '',
    '',
    CAST(SUM(doc_sum) AS DECIMAL(15, 4)),
    CAST(SUM(doc_vat) AS DECIMAL(15, 4))
FROM
    @pvn1_3_top_tablex z --where (doc_sum_total >= @lim or doc_sum_total <= (@lim * (-1)))  and doc_sum<>0 and isnull(vat_reg_nr,'')=''
    -----------------
    ------ 2-1 ------
    -----------------
    DECLARE @pvn21_vat_codes TABLE (
        code nvarchar(30),
        rate DECIMAL,
        proportion DECIMAL,
        description nvarchar(200),
        sales_account nvarchar(30),
        purchase_account nvarchar(30),
        info nvarchar(200),
        dar_veids nvarchar(5),
        do_limit VARCHAR(2)
    )
INSERT INTO
    @pvn21_vat_codes
SELECT
    kood,
    ilmakm,
    or_proportsioon,
    seletus,
    myykkonto,
    ostuKMkonto,
    lisainfo,
    CAST(
        ISNULL(
            (
                SELECT
                    TOP 1 sisu
                FROM
                    yld_data yd WITH (NOLOCK)
                WHERE
                    yd.kaart = fk.kood
                    AND kood = 'DARTIPS_2'
                    AND klass = 'kmk'
            ),
            'G'
        ) AS nvarchar(10)
    ) AS dar_veids,
    CAST(
        ISNULL(
            (
                SELECT
                    TOP 1 sisu
                FROM
                    yld_data yd WITH (NOLOCK)
                WHERE
                    yd.kaart = fk.kood
                    AND kood = 'LIMITS'
                    AND klass = 'kmk'
            ),
            'Ja'
        ) AS VARCHAR(2)
    ) AS do_limit
FROM
    fin_kmkoodid fk
WHERE
    lisainfo LIKE '%pvn21%' DECLARE @invoices TABLE (
        pazime nvarchar(5),
        do_limit VARCHAR(2),
        vat_reg_nr nvarchar(30),
        doc_nr nvarchar(30),
        vat_code nvarchar(30),
        article_sum DECIMAL(15, 2)
    )
INSERT INTO
    @invoices
    /*
     SELECT
     '' AS pazime,
     '' AS do_limit,
     (SELECT TOP 1 kmregnr FROM kliendid, mr_arved WHERE (kliendid.kood=mr_arved.klient_kood) AND (mr_arved.number=mr_arved_read.number)) AS vat_reg_nr,
     number AS doc_nr,
     CAST(kmk AS nvarchar(30)) AS vat_code,
     ISNULL(summa,0)*(SELECT ISNULL(kurssbv1,1) FROM mr_arved WITH (NOLOCK) WHERE mr_arved.number=mr_arved_read.number) AS article_sum
     FROM mr_arved_read WITH (NOLOCK)
     WHERE (SELECT CAST(aeg AS date) FROM mr_arved WITH (NOLOCK) WHERE mr_arved.number=mr_arved_read.number) BETWEEN CAST(@aeg1 AS date) AND CAST(@aeg2 AS date)
     AND ((SELECT kinnitatud FROM mr_arved WITH (NOLOCK) WHERE mr_arved.number=mr_arved_read.number)=1)
     AND (EXISTS(SELECT 1 FROM @pvn21_vat_codes WHERE code = kmk))
     */
SELECT
    DISTINCT (
        SELECT
            dar_veids
        FROM
            @pvn21_vat_codes
        WHERE
            code = kmk
    ),
    (
        SELECT
            do_limit
        FROM
            @pvn21_vat_codes
        WHERE
            code = kmk
    ),
    SUBSTRING(
        isnull(
            (
                SELECT
                    TOP 1 kmregnr
                FROM
                    kliendid
                WHERE
                    (
                        kliendid.kood =(
                            SELECT
                                klient_kood
                            FROM
                                mr_arved
                            WHERE
                                mr_arved.number = mar.number
                        )
                    )
            ),
            ''
        ),
        1,
        30
    ),
    mar.number,
    mar.kmk,
    CAST(
        SUM(summa) * (
            SELECT
                ISNULL(kurssbv1, 1)
            FROM
                mr_arved WITH (NOLOCK)
            WHERE
                mr_arved.number = mar.number
        ) AS DECIMAL(15, 4)
    )
FROM
    mr_arved_read mar
WHERE
    (
        SELECT
            CAST(aeg AS DATE)
        FROM
            mr_arved WITH (NOLOCK)
        WHERE
            mr_arved.number = mar.number
    ) BETWEEN CAST(@aeg1 AS DATE)
    AND CAST(@aeg2 AS DATE)
    AND (
        (
            SELECT
                kinnitatud
            FROM
                mr_arved WITH (NOLOCK)
            WHERE
                mr_arved.number = mar.number
        ) = 1
    )
    AND (
        EXISTS(
            SELECT
                1
            FROM
                @pvn21_vat_codes
            WHERE
                code = kmk
        )
    )
    AND kmk IN (
        SELECT
            code
        FROM
            @pvn21_vat_codes
    )
GROUP BY
    NUMBER,
    kmk
UNION
SELECT
    (
        SELECT
            dar_veids
        FROM
            @pvn21_vat_codes
        WHERE
            code = mlr.kmk
    ),
    (
        SELECT
            do_limit
        FROM
            @pvn21_vat_codes
        WHERE
            code = mlr.kmk
    ),
    SUBSTRING(
        isnull(
            (
                SELECT
                    TOP 1 kmregnr
                FROM
                    kliendid
                WHERE
                    (kliendid.kood = mlr.klient_kood)
            ),
            ''
        ),
        1,
        30
    ),
    mlr.number,
    mlr.kmk,
    CAST(
        SUM(summa_p) * (ISNULL(kurss_p, 1)) AS DECIMAL(15, 4)
    )
FROM
    mr_laekumised_read mlr
    LEFT JOIN mr_laekumised ml ON ml.number = mlr.number
WHERE
    CAST(ml.aeg AS DATE) BETWEEN CAST(@aeg1 AS DATE)
    AND CAST(@aeg2 AS DATE)
    AND isnull(ml.kinnitatud, 0) = 1
    AND mlr.kmk IN (
        SELECT
            code
        FROM
            @pvn21_vat_codes
    )
GROUP BY
    mlr.number,
    mlr.kmk,
    mlr.klient_kood,
    mlr.summa_p,
    mlr.kurss_p --UPDATE @invoices SET pazime = (SELECT TOP 1 dar_veids FROM @pvn21_vat_codes vc WHERE vc.code = vat_code)
    --UPDATE @invoices SET do_limit = (SELECT TOP 1 do_limit FROM @pvn21_vat_codes vc WHERE vc.code = vat_code)
    DECLARE @invoices_grouped TABLE (
        pazime nvarchar(1),
        vat_reg_nr nvarchar(30),
        doc_nr nvarchar(30),
        article_sum DECIMAL(15, 2)
    )
INSERT INTO
    @invoices_grouped (pazime, vat_reg_nr, doc_nr, article_sum)
SELECT
    pazime,
    vat_reg_nr,
    doc_nr,
    SUM(article_sum)
FROM
    @invoices
GROUP BY
    vat_reg_nr,
    pazime,
    doc_nr --xml out
SELECT
    (
        SELECT
            @aeg1 AS date1,
            @aeg2 AS date2,
            CURRENT_TIMESTAMP AS date_now FOR XML PATH('dates'),
            TYPE,
            ELEMENTS
    ),
    (
        SELECT
            *
        FROM
            @pvn11_vat_codes FOR XML PATH('code'),
            TYPE,
            ELEMENTS
    ) AS [pvn11_vat_codes],
    (
        SELECT
            *
        FROM
            @pvn12_vat_codes FOR XML PATH('code'),
            TYPE,
            ELEMENTS
    ) AS [pvn12_vat_codes],
    (
        SELECT
            *
        FROM
            @pvn13_vat_codes FOR XML PATH('code'),
            TYPE,
            ELEMENTS
    ) AS [pvn13_vat_codes],
    (
        SELECT
            *
        FROM
            @pvn21_vat_codes FOR XML PATH('code'),
            TYPE,
            ELEMENTS
    ) AS [pvn21_vat_codes],
    (
        SELECT
            @vat_declar_name AS vat_declar_name,
            @stat_vat AS stat_vat,
            @lim AS lim,
            @account AS account FOR XML PATH('filters'),
            TYPE,
            ELEMENTS
    ),
    (
        SELECT
            setting AS name,
            (
                SELECT
                    setting
                FROM
                    settings
                WHERE
                    id = 'firma_kmnr'
            ) AS vat_reg_nr,
            (
                SELECT
                    setting
                FROM
                    settings
                WHERE
                    id = 'firma_regnr'
            ) AS reg_nr,
            (
                SELECT
                    setting
                FROM
                    settings
                WHERE
                    id = 'firma_telefon'
            ) AS tel,
            (
                SELECT
                    setting
                FROM
                    settings
                WHERE
                    id = 'firma_faks'
            ) AS fax,
            (
                SELECT
                    setting
                FROM
                    settings
                WHERE
                    id = 'firma_aadress'
            ) AS address1,
            (
                SELECT
                    setting
                FROM
                    settings
                WHERE
                    id = 'firma_aadress2'
            ) AS address2,
            (
                SELECT
                    setting
                FROM
                    settings
                WHERE
                    id = 'firma_aadress3'
            ) AS address3,
            (
                SELECT
                    setting
                FROM
                    settings
                WHERE
                    id = 'firma_tegevusaadress'
            ) AS biz_address1,
            (
                SELECT
                    setting
                FROM
                    settings
                WHERE
                    id = 'firma_tegevusaadress2'
            ) AS biz_address2,
            (
                SELECT
                    setting
                FROM
                    settings
                WHERE
                    id = 'firma_tegevusaadress3'
            ) AS biz_address3,
            (
                SELECT
                    setting
                FROM
                    settings
                WHERE
                    id = 'firma_pank'
            ) AS bank,
            (
                SELECT
                    setting
                FROM
                    settings
                WHERE
                    id = 'firma_swift'
            ) AS bank_swift,
            (
                SELECT
                    setting
                FROM
                    settings
                WHERE
                    id = 'firma_aa'
            ) AS account,
            (
                SELECT
                    setting
                FROM
                    settings
                WHERE
                    id = 'firma_iban'
            ) AS iban,
            (
                SELECT
                    setting
                FROM
                    settings
                WHERE
                    id = 'firma_juht'
            ) AS head
        FROM
            settings
        WHERE
            id = 'firma_nimi' FOR XML PATH('company_info'),
            TYPE,
            ELEMENTS
    ),
    (
        SELECT
            *
        FROM
            @vat_declar_sums FOR XML PATH('vat_declar_sum'),
            TYPE,
            ELEMENTS
    ) AS [vat_declar_totals],
    (
        --pvn11
        SELECT
            dar_veids,
            do_limit,
            doc_nr,
            doc_nr AS client_doc_nr,
            vat_code,
            dok_veids AS TYPE,
            client_name,
            vat_reg_nr,
            doc_sum AS SUM,
            doc_vat AS vat,
            doc_date AS DATE,
            rn
        FROM
            @pvn1_1_top_table
        WHERE
            (
                doc_sum <> 0
                OR doc_vat <> 0
            ) FOR XML PATH('doc'),
            TYPE,
            ELEMENTS
    ) AS [pvn11_docs_above],
    (
        SELECT
            dar_veids,
            do_limit,
            doc_nr,
            doc_nr AS client_doc_nr,
            vat_code,
            dok_veids AS TYPE,
            client_name,
            vat_reg_nr,
            doc_sum AS SUM,
            doc_vat AS vat,
            doc_date AS DATE
        FROM
            @pvn1_1_top_r_table
        WHERE
            (
                doc_sum <> 0
                OR doc_vat <> 0
            ) FOR XML PATH('doc'),
            TYPE,
            ELEMENTS
    ) AS [pvn11_docs_above],
    (
        SELECT
            'V' AS dar_veids,
            '' AS do_limit,
            '' AS doc_nr,
            '' AS client_doc_nr,
            '' AS vat_code,
            client_name,
            vat_reg_nr,
            doc_sum AS SUM,
            doc_vat AS vat,
            '' AS doc_date
        FROM
            @pvn_1_1_v_totals2 FOR XML PATH('doc'),
            TYPE,
            ELEMENTS
    ) AS [pvn11_docs_above],
    (
        SELECT
            CAST(SUM(doc_sum) AS DECIMAL(15, 2)) AS sum_total,
            CAST(SUM(doc_vat) AS DECIMAL(15, 2)) AS vat_total
        FROM
            @pvn_1_1_t_totals FOR XML PATH('pvn11_totals_below'),
            TYPE,
            ELEMENTS
    ),
    (
        SELECT
            doc_sum AS sum_total,
            doc_vat AS vat_total
        FROM
            @pvn_1_1_totals FOR XML PATH('pvn11_totals'),
            TYPE,
            ELEMENTS
    ),
    /*
     (
     SELECT CAST(SUM((doc_sum) * (-1)) AS decimal(15,2)) AS sum_total, CAST(SUM((doc_vat) * (-1)) AS decimal(15,2)) AS vat_total
     FROM @pvn13_main_table_11
     FOR XML PATH('pvn11_totals'), TYPE, ELEMENTS
     ),--/pvn11 */
    (
        --pvn12
        SELECT
            dar_veids,
            do_limit,
            doc_nr,
            client_doc_nr,
            vat_code,
            directo_table,
            doc_type AS TYPE,
            client_name,
            vat_reg_nr,
            country_code,
            doc_sum AS SUM,
            doc_vat AS vat,
            rate,
            currency,
            alt_rate,
            alt_currency,
            alt_doc_currency_sum,
            doc_date AS DATE
        FROM
            @pvn12_main_table
        WHERE
            (doc_sum <> 0) FOR XML PATH('doc'),
            TYPE,
            ELEMENTS
    ) AS [pvn12_docs],
    (
        SELECT
            CAST(SUM(doc_sum) AS DECIMAL(15, 2)) AS sum_total,
            CAST(SUM(doc_vat) AS DECIMAL(15, 2)) AS vat_total
        FROM
            @pvn12_main_table FOR XML PATH('pvn12_totals'),
            TYPE,
            ELEMENTS
    ),
    (
        -- rates
        SELECT
            currency,
            (
                SELECT
                    TOP 1 CAST(kurss1 AS DECIMAL(28, 18)) AS rate,
                    aeg AS DATE
                FROM
                    curr_rates
                WHERE
                    kood = currency
                ORDER BY
                    aeg DESC FOR XML PATH(''),
                    TYPE
            )
        FROM
            @pvn12_currencies FOR XML PATH('rate'),
            TYPE,
            ELEMENTS
    ) AS [pvn12_currency_rates],
    --/pvn12
    (
        --pvn13
        SELECT
            dar_veids,
            do_limit,
            dok_veids,
            doc_nr,
            vat_code,
            client_name,
            vat_reg_nr,
            doc_sum AS SUM,
            doc_vat AS vat,
            doc_date AS DATE
        FROM
            @pvn1_3_top_table FOR XML PATH('doc'),
            TYPE,
            ELEMENTS
    ) AS [pvn13_docs_above],
    (
        SELECT
            dok_veids,
            client_name,
            vat_reg_nr,
            doc_sum AS SUM,
            doc_vat AS vat
        FROM
            @v_totals FOR XML PATH('doc'),
            TYPE,
            ELEMENTS
    ) AS [pvn13_docs_above],
    (
        SELECT
            dok_veids,
            client_name,
            vat_reg_nr,
            doc_sum AS SUM,
            doc_vat AS vat
        FROM
            @x_totals FOR XML PATH('doc'),
            TYPE,
            ELEMENTS
    ) AS [pvn13_docs_above],
    (
        SELECT
            isnull(SUM(doc_sum), 0) + (
                SELECT
                    SUM(sum_wo_vat)
                FROM
                    @fin_kanded_read
            ) AS sum_total,
            isnull(SUM(doc_vat), 0) + (
                SELECT
                    SUM(vat_sum)
                FROM
                    @fin_kanded_read
            ) AS vat_total
        FROM
            @t_totals FOR XML PATH('pvn13_totals_below'),
            TYPE,
            ELEMENTS
    ),
    (
        SELECT
            CAST(SUM(doc_sum) AS DECIMAL(15, 2)) AS sum_total,
            CAST(SUM(doc_vat) AS DECIMAL(15, 2)) AS vat_total
        FROM
            @pvn1_3tots FOR XML PATH('pvn13_totals'),
            TYPE,
            ELEMENTS
    ),
    --/pvn13
    /*
     (
     SELECT dok_veids, client_name, vat_reg_nr, sum(doc_sum) AS sum, sum(doc_vat) AS vat
     FROM @pvn13_sums_above_table where dok_veids!='T' group by dok_veids, client_name, vat_reg_nr
     FOR XML PATH('doc'), TYPE, ELEMENTS
     ) AS [pvn13_docs_above],
     (
     SELECT CAST(SUM(doc_sum) AS decimal(15,2)) AS sum_total, CAST(SUM(doc_vat) AS decimal(15,2)) AS vat_total
     FROM @pvn13_sums_above_table m where dok_veids='T' 
     FOR XML PATH('pvn13_totals_below'), TYPE, ELEMENTS
     ),
     (
     SELECT CAST((SUM(toptabledoc)) AS decimal(15,2)) AS sum_total, CAST(SUM(toptablevat) AS decimal(15,2)) AS vat_total
     FROM @pvn13sums
     FOR XML PATH('pvn13_totals'), TYPE, ELEMENTS
     ),*/
    --/pvn13
    (
        --pvn21
        SELECT
            pazime,
            vat_reg_nr,
            CAST(SUM(article_sum) AS DECIMAL(15, 2)) AS SUM
        FROM
            @invoices_grouped
        GROUP BY
            vat_reg_nr,
            pazime FOR XML PATH('doc'),
            TYPE,
            ELEMENTS
    ) AS [pvn21_docs],
    (
        SELECT
            CAST(SUM(article_sum) AS DECIMAL(15, 2)) AS sum_total
        FROM
            @invoices_grouped FOR XML PATH('pvn21_totals'),
            TYPE,
            ELEMENTS
    ) --/pvn21
    FOR XML PATH('document'),
    TYPE,
    ELEMENTS
lv/procedures.1601555341.txt.gz · Labota: 2020/10/01 15:29 , labojis marija