Import linii dekretu jednostronnych (wersja 2.0.2)

Procedura CDN.my_ImpDM_Dekr łączyła stronę Wn z Ma przez inner join
po numerze linii, więc z dekretów zapisanych w liniach jednostronnych
(np. PKI: linia 1 tylko Wn, linia 2 tylko Ma) nie przechodziła żadna
linia albo tylko linie dwustronne. Teraz przechodzi każda linia;
brakująca strona to puste konto i KKSNumer = 0 w pozycji noty.

Procedura zwraca '' zamiast NULL, więc działa też ze starą wersją
programu.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
KrzysztofandClaude Opus 5.5 committed 2026-10-14 14:43:45 +02:00
1 parent 8dc62f8986
commit 7fc8b638d7
3 files changed
+31 -20

No files matched your search

+17 -11
View File
@@ -1,4 +1,4 @@
SET ANSI_NULLS ON
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
@@ -7,6 +7,10 @@ IF EXISTS (SELECT * FROM sysobjects WHERE name = 'my_ImpDM_Dekr' AND user_name(u
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
@@ -22,21 +26,23 @@ AS
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
SELECT Lp = ROW_NUMBER() OVER(ORDER BY DZK_Opis, DEL_Opis, deb.DT_Konto, cre.DT_Konto),
-- 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 = deb.DT_Kwota,
DokZr = DZK_DokumentZrodlowy,
KontoDebet = deb.DT_Konto,
KontoCredit = cre.DT_Konto,
[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, 0), 1)
DataImportu = CDN.TsToDate(coalesce(deb.DT_DataCentrali, cre.DT_DataCentrali, 0), 1)
FROM CDN.Dziennik inner join CDN.DziennikElem on DZK_GIDNumer = DEL_GIDNumer
inner join @DEB deb ON deb.DT_GIDNumer = DEL_GIDNumer and deb.DT_GIDLp = DEL_GIDLp
inner join @CRE cre ON cre.DT_GIDNumer = DEL_GIDNumer and cre.DT_GIDLp = DEL_GIDLp
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