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>
53 lines
2.2 KiB
Transact-SQL
53 lines
2.2 KiB
Transact-SQL
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
|