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 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')
	--select * from @pvn1_1_temp
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_vat / 100)) AS DECIMAL(15,2))
    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_vat / 100) * (@stat_vat / 100)) 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)) 
				--  isnull(cast((select sum(summa) * (ISNULL((SELECT TOP 1 reverse_rate FROM @pvn11_vat_codes WHERE code = fkr2.kmk),0)/100) from fin_kulutused_read fkr2 where fkr.number=oae.arve and oar.kmkood = oae.kmk) as decimal(15,2)),0)
		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') OR dar_veids IN (SELECT dar_veids FROM @pvn11_vat_codes WHERE SUBSTRING(do_limit,1,1)='N' AND SUBSTRING(dar_veids,1,1)!='R'))
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
 
--select * from @pvn11_vat_codes
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.1601555437.txt.gz · Labota: 2020/10/01 15:30 , labojis marija