SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF EXISTS (SELECT * FROM sysobjects WHERE name = 'my_ImpDM_Dekr' AND user_name(uid) = 'CDN') DROP PROCEDURE [CDN].my_ImpDM_Dekr GO /* 2026.10.14 - KC: import linii jednostronnych (tylko Wn albo tylko Ma). Wcześniej Wn i Ma były łączone przez inner join po DT_GIDLp, więc z dekretu o kilku liniach przechodziły tylko linie mające obie strony. */ CREATE PROCEDURE [CDN].my_ImpDM_Dekr ( @DZKNr int -- 1 - DZK_DIGNumer ) AS SET NOCOUNT ON; declare @DEB table(DT_GIDNumer int, DT_GIDLp int, DT_DC int, DT_Konto varchar(100), DT_Kwota decimal(21,2), DT_DataCentrali int) declare @CRE table(DT_GIDNumer int, DT_GIDLp int, DT_DC int, DT_Konto varchar(100), DT_Kwota decimal(21,2), DT_DataCentrali int) insert into @DEB select DT_GIDNumer, DT_GIDLp, DT_DC, DT_Konto, DT_Kwota, DT_DataCentrali from CDN.Dekrety where DT_DC = 1 and DT_GIDNumer = @DZKNr insert into @CRE select DT_GIDNumer, DT_GIDLp, DT_DC, DT_Konto, DT_Kwota, DT_DataCentrali from CDN.Dekrety where DT_DC = 2 and DT_GIDNumer = @DZKNr -- linia dekretu może mieć obie strony albo tylko jedną; brakująca strona = pusty numer konta SELECT Lp = ROW_NUMBER() OVER(ORDER BY DZK_Opis, DEL_Opis, isnull(deb.DT_Konto, ''), isnull(cre.DT_Konto, ''), DEL_GIDLp), DZK_Opis = left (DZK_Opis, 80), [Data] = DEL_DataWyst, DataDokumentu = DEL_DataOper, Kwota = coalesce(deb.DT_Kwota, cre.DT_Kwota), DokZr = DZK_DokumentZrodlowy, KontoDebet = isnull(deb.DT_Konto, ''), KontoCredit = isnull(cre.DT_Konto, ''), Identyfikator = left(DZK_Opis, 80), Opis = left(DEL_Opis, 80), DataImportu = CDN.TsToDate(coalesce(deb.DT_DataCentrali, cre.DT_DataCentrali, 0), 1) FROM CDN.Dziennik inner join CDN.DziennikElem on DZK_GIDNumer = DEL_GIDNumer left outer join @DEB deb ON deb.DT_GIDNumer = DEL_GIDNumer and deb.DT_GIDLp = DEL_GIDLp left outer join @CRE cre ON cre.DT_GIDNumer = DEL_GIDNumer and cre.DT_GIDLp = DEL_GIDLp where DZK_GIDNumer = @DZKNr and (deb.DT_GIDNumer is not null or cre.DT_GIDNumer is not null) order by 1 GO GRANT execute ON CDN.my_ImpDM_Dekr TO CDNRaport GO