You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

738 lines
34 KiB

USE [DPM2018_1]
GO
/****** Object: StoredProcedure [dbo].[sp_get_fakturadata] Script Date: 11.09.2018 20:13:14 ******/
DROP PROCEDURE [dbo].[sp_get_fakturadata]
GO
/****** Object: StoredProcedure [dbo].[sp_get_fakturadata] Script Date: 11.09.2018 20:13:14 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[sp_get_fakturadata]
@behandlungsnr INT ,
@typ INT ,
@betrag FLOAT = 0 ,
@rate INT = 0,
@verbuchen INT = 0,
@kopie INT = 0,
@ifakturanr INT = 0,
@iMahnStufe int = 0
AS
BEGIN
--INSERT __log (logeintrag) VALUES(@kopie)
DECLARE @rgdatum DATETIME
SET @rgdatum=GETDATE()
IF @kopie = 1 BEGIN
SELECT @rgdatum=datum FROM faktura WHERE Nrfaktura=@ifakturanr
END
IF @iMahnStufe>0 BEGIN
SET @rgdatum=GETDATE()
end
DECLARE @type INT;
DECLARE @Tabelle_ohne_datum TABLE
(
[Typ] [INT] NULL ,
[SSO_Nummer] [VARCHAR](255) NULL ,
[Bezd] [VARCHAR](255) NULL ,
[Taxpunkte] [FLOAT] NULL ,
[Menge] [FLOAT] NULL ,
[Frankenprotaxpunkt] [FLOAT] NULL ,
[Absolut] [INT] NULL ,
[Leistungstotal] [FLOAT] NULL ,
[NrBehandlung] INT
);
DECLARE @Tabelle_mit_datum TABLE
(
[Typ] [INT] NULL ,
[Datum] [DATE] NULL ,
[SSO_Nummer] [VARCHAR](255) NULL ,
[Bezd] [VARCHAR](255) NULL ,
[Taxpunkte] [FLOAT] NULL ,
[Menge] [FLOAT] NULL ,
[Frankenprotaxpunkt] [FLOAT] NULL ,
[Absolut] [BIT] NULL ,
[Leistungstotal] [FLOAT] NULL ,
[nrbehandlu] INT
);
DECLARE @lr_tabelle_mit_Datum TABLE
(
pk INT NOT NULL
IDENTITY(1, 1) ,
[L_Datum] [DATE] NULL ,
[L_SSO_Nummer] [VARCHAR](255) NULL ,
[L_Bezd] [VARCHAR](255) NULL ,
[L_Taxpunkte] [FLOAT] NULL ,
[L_Menge] [FLOAT] NULL ,
[L_Frankenprotaxpunkt] [FLOAT] NULL ,
[L_Absolut] [BIT] NULL ,
[L_Leistungstotal] [FLOAT] NULL ,
[R_Datum] [DATE] NULL ,
[R_SSO_Nummer] [VARCHAR](255) NULL ,
[R_Bezd] [VARCHAR](255) NULL ,
[R_Taxpunkte] [FLOAT] NULL ,
[R_Menge] [FLOAT] NULL ,
[R_Frankenprotaxpunkt] [FLOAT] NULL ,
[R_Absolut] [BIT] NULL ,
[R_Leistungstotal] [FLOAT] NULL ,
PRIMARY KEY ( pk )
);
DECLARE @lr_tabelle_dentotar TABLE
(
pk INT NOT NULL
IDENTITY(1, 1) ,
datum DATE NULL ,
tarif VARCHAR(255) ,
tarifziffer VARCHAR(255) NULL ,
tariftext VARCHAR(255) NULL ,
bezugsziffer VARCHAR(255) NULL ,
si VARCHAR(255) NULL ,
st VARCHAR(255) NULL ,
anzahl INT NULL ,
tpal_preis DECIMAL(10, 2) NULL ,
f_al DECIMAL(10, 2) NULL ,
tpw_al DECIMAL(10, 2) NULL ,
f_tl DECIMAL(10, 2) NULL ,
tpw_tl DECIMAL(10, 2) NULL ,
a INT NULL ,
v INT NULL ,
p INT NULL ,
m INT NULL ,
betrag DECIMAL(10, 2) NULL PRIMARY KEY ( pk )
);
DECLARE @lr_tabelle_ohne_Datum TABLE
(
pk INT NOT NULL
IDENTITY(1, 1) ,
[L_SSO_Nummer] [VARCHAR](255) NULL ,
[L_Bezd] [VARCHAR](255) NULL ,
[L_Taxpunkte] [FLOAT] NULL ,
[L_Menge] [FLOAT] NULL ,
[L_Frankenprotaxpunkt] [FLOAT] NULL ,
[L_Absolut] [BIT] NULL ,
[L_Leistungstotal] [FLOAT] NULL ,
[R_SSO_Nummer] [VARCHAR](255) NULL ,
[R_Bezd] [VARCHAR](255) NULL ,
[R_Taxpunkte] [FLOAT] NULL ,
[R_Menge] [FLOAT] NULL ,
[R_Frankenprotaxpunkt] [FLOAT] NULL ,
[R_Absolut] [BIT] NULL ,
[R_Leistungstotal] [FLOAT] NULL ,
PRIMARY KEY ( pk )
);
DECLARE @Nrbehandlung AS INT ,
@Behandlungsbeginn AS DATE ,
@Behandlungsende AS DATE ,
@Patient AS VARCHAR(51) ,
@Behandler AS VARCHAR(51) ,
@Taxpunktwert AS FLOAT ,
@Rabatt AS FLOAT ,
@Total AS FLOAT ,
@Rechnungsbemerkung AS VARCHAR(255) ,
@Ratenzuschlag AS FLOAT ,
@Andrucken_Taxpunkte AS BIT ,
@Anzahlung AS FLOAT ,
@ESTyp INT ,
@Nrleistung AS INT ,
@Datum AS DATE ,
@SSO_Nummer AS VARCHAR(255) ,
@Taxpunkte AS FLOAT ,
@Menge AS FLOAT ,
@Frankenprotaxpunkt AS FLOAT ,
@Absolut AS BIT ,
@Leistungstotal AS FLOAT ,
@Bezd AS VARCHAR(255) ,
@@AdressZeile1 AS VARCHAR(255) ,
@AdressZeile2 AS VARCHAR(255) ,
@AdressZeile3 AS VARCHAR(255) ,
@AdressZeile4 AS VARCHAR(255) ,
@AdressZeile5 AS VARCHAR(255) ,
@Total_SSO AS FLOAT ,
@Total_Medikamente AS FLOAT ,
@Total_Labor AS FLOAT ,
@RabattTotal AS FLOAT ,
@Vorauszahlung AS FLOAT ,
@TotalTextblock AS VARCHAR(1024) ,
@TotalNumBlock AS VARCHAR(1024) ,
@Anzahlraten INT ,
@Ungeraterateamstart INT ,
@i INT ,
@franken VARCHAR(255) ,
@rappen VARCHAR(255) ,
@totalstring VARCHAR(255) ,
@faelligkeit DATETIME ,
@hauptfaktura VARCHAR(255);
DECLARE @esdaten TABLE
(
[Vs_konto] [VARCHAR](20) NULL ,
[Vs_belegart] [VARCHAR](2) NULL ,
[Vs_teilnehmernummer] [VARCHAR](20) NULL ,
[Vs_besrid] [VARCHAR](20) NULL ,
[Bankzeile1] [VARCHAR](50) NULL ,
[Bankzeile2] [VARCHAR](50) NULL ,
[Bankzeile3] [VARCHAR](50) NULL ,
[ZuGunstenVon1] [VARCHAR](50) NULL ,
[ZuGunstenVon2] [VARCHAR](50) NULL ,
[ZuGunstenVon3] [VARCHAR](50) NULL ,
[ZuGunstenVon4] [VARCHAR](50) NULL ,
[Total_Franken] FLOAT ,
[Nur_Franken] INT ,
[Nur_Rappen] VARCHAR(2) ,
Referenzzeile1 VARCHAR(255) ,
referenzzeile2 VARCHAR(255) ,
fakturanr VARCHAR(255) ,
rate INT ,
zahlungsfrist INT ,
faelligkeit DATETIME ,
hauptfaktura VARCHAR(255),
mahndatum DATETIME,
mahnfaelligkeit DATETIME,
mahnzuschlag FLOAT,
mahnstufe INT,
FakturaDatum datetime
);
IF @typ = 1
BEGIN-- Kontoinformationen / ES_Daten
DECLARE @manr INT;
DECLARE @totalbetrag FLOAT;
DECLARE @rc INT;
DECLARE @FAKTURANR INT;
DECLARE @vz FLOAT;
SELECT @vz = dbo.Get_Totale(5, @behandlungsnr);
SET @vz = 0;
SET @rc = 0;
IF @kopie=1 Or @ifakturanr<>0 BEGIN
SET @fakturanr=@ifakturanr
PRINT 'huhu'
END ELSE begin
SET @FAKTURANR = dbo.get_FakturaNr();
end
IF @betrag <> 0
SET @totalbetrag = @betrag;
SELECT @manr = Nrbehandler ,
@totalbetrag = Total ,
@Anzahlraten = Anzahlraten ,
@Ungeraterateamstart = Ungeraterateamstart
FROM Behandlu
WHERE Nrbehandlung = @behandlungsnr;
SET @totalbetrag = dbo.GetRoundedValue(@totalbetrag - @vz);
SELECT @rc = COUNT(*)
FROM dbo.VDKonti
WHERE NrPrivat = @manr;
PRINT @totalbetrag;
IF @rc = 0
SET @manr = 1;
PRINT FLOOR(@totalbetrag);
PRINT ( @totalbetrag - FLOOR(@totalbetrag) ) * 100;
DECLARE @temp FLOAT;
DECLARE @temp1 FLOAT;
DECLARE @temp2 FLOAT;
DECLARE @temp3 VARCHAR(255);
DECLARE @tage_zahlungsfrist INT;
SELECT @tage_zahlungsfrist = INHALT
FROM dbo.OPTIONS
WHERE NROPTION = 2000;
IF @Anzahlraten > 1
BEGIN
SET @temp = FLOOR(FLOOR(@totalbetrag) / @Anzahlraten); -- Rate ohne Nachkommastellen
SET @temp1 = @temp * @Anzahlraten;
SET @temp2 = @temp + ( @totalbetrag - @temp1 ); -- ungerate rate
IF @rate <= 1
BEGIN
IF @Ungeraterateamstart = 1
BEGIN
SET @totalbetrag = @temp2;
END;
ELSE
BEGIN
SET @totalbetrag = @temp;
END;
SET @hauptfaktura = @FAKTURANR;
SET @faelligkeit = DATEADD(dd,
@tage_zahlungsfrist,
GETDATE());
SET @faelligkeit = DATEADD(dd,
@tage_zahlungsfrist,
@rgdatum);
END;
ELSE
BEGIN
IF @Ungeraterateamstart = 1
AND @rate = @Anzahlraten
BEGIN
SET @totalbetrag = @temp2;
END;
ELSE
BEGIN
SET @totalbetrag = @temp;
END;
SELECT TOP 1
@hauptfaktura = Nrhauptfaktura
FROM Faktura
ORDER BY Nrfaktura DESC;
SET @faelligkeit = DATEADD(dd,
@tage_zahlungsfrist
* @rate, GETDATE());
SET @faelligkeit = DATEADD(dd,
@tage_zahlungsfrist
* @rate, @rgdatum);
END;
END;
ELSE
BEGIN
SET @hauptfaktura = @FAKTURANR;
SET @faelligkeit = DATEADD(dd, @tage_zahlungsfrist,
GETDATE());
SET @faelligkeit = DATEADD(dd, @tage_zahlungsfrist,
@rgdatum);
END;
DECLARE @mahndatum date
DECLARE @mahnfaelligkeit date
DECLARE @mahnstufe INT
DECLARE @mahnzuschlag FLOAT
DECLARE @tmp INT
DECLARE @tmpbetrag FLOAT
DECLARE @fakturadatum DATETIME
SET @mahndatum=GETDATE()
SET @mahnfaelligkeit=GETDATE()
SET @mahnzuschlag=0
SELECT @fakturadatum=datum FROM faktura WHERE Nrfaktura=@ifakturanr
IF YEAR(@fakturadatum) < 2010 SET @fakturadatum=GETDATE()
IF @iMahnStufe = 1 BEGIN
SET @mahndatum=GETDATE()
SELECT @tmp=inhalt FROM options WHERE NROPTION=5005
SET @mahnfaelligkeit=@mahndatum
SET @mahnfaelligkeit=DATEADD(d,@tmp,GETDATE())
SELECT @mahnzuschlag=inhalt FROM options WHERE nroption=5010
SELECT @fakturadatum=datum FROM faktura WHERE Nrfaktura=@ifakturanr
PRINT @ifakturanr
end
IF @iMahnStufe = 2 BEGIN
SELECT @mahndatum = mahndatum1 FROM faktura WHERE Nrfaktura=@FAKTURANR
--SET @mahndatum=GETDATE()
SELECT @tmp=inhalt FROM options WHERE NROPTION=5006
SET @mahnfaelligkeit=@mahndatum
SET @mahnfaelligkeit=DATEADD(d,@tmp,getdate())
SELECT @mahnzuschlag=inhalt FROM options WHERE nroption=5011
end
IF @iMahnStufe = 3 BEGIN
SET @mahndatum=GETDATE()
SELECT @mahndatum = mahndatum2 FROM faktura WHERE Nrfaktura=@FAKTURANR
SELECT @tmp=inhalt FROM options WHERE NROPTION=5007
SET @mahnfaelligkeit=@mahndatum
SET @mahnfaelligkeit=DATEADD(d,@tmp,GETDATE())
SELECT @mahnzuschlag=inhalt FROM options WHERE nroption=5012
end
SET @totalbetrag=@totalbetrag+@mahnzuschlag
SET @totalstring = CONVERT(NUMERIC(10, 2), @totalbetrag);
SET @franken = SUBSTRING(@totalstring, 1,
CHARINDEX('.', @totalstring) - 1);
SET @rappen = SUBSTRING(@totalstring,
CHARINDEX('.', @totalstring) + 1, 2);
WHILE LEN(@rappen)<2 BEGIN
SET @rappen='0'+LTRIM(RTRIM(STR(@rappen)))
END
PRINT @franken;
PRINT @rappen;
PRINT @totalstring;
INSERT @esdaten
SELECT Vs_konto ,
Vs_belegart ,
Vs_teilnehmernummer ,
Vs_besrid ,
Bankzeile1 ,
Bankzeile2 ,
Bankzeile3 ,
ZuGunstenVon1 ,
ZuGunstenVon2 ,
ZuGunstenVon3 ,
ZuGunstenVon4 ,
@totalbetrag ,
@franken ,--FLOOR(@totalbetrag) ,
@rappen ,--( @totalbetrag - FLOOR(@totalbetrag) ) * 100 ,
' ' ,
' ' ,
@FAKTURANR ,
@rate ,
@tage_zahlungsfrist ,
@faelligkeit ,
@hauptfaktura,
@mahndatum,
@mahnfaelligkeit,
@mahnzuschlag,
@imahnstufe,
@fakturadatum
FROM dbo.VDKonti
WHERE NrPrivat = @manr;
SELECT *
FROM @esdaten;
END;
DECLARE @mitdatum INT;
SELECT @mitdatum = MitDatum
FROM Behandlu
WHERE Nrbehandlung = @behandlungsnr;
IF @typ = 2
BEGIN -- Empfängerdaten / Allg Behandlung / Totale
DECLARE @absenderort AS VARCHAR(255)
SELECT TOP 1 @absenderort = absenderort FROM absender
SET @absenderort=@absenderort + ', '+CONVERT(VARCHAR(10),@rgdatum,104)
SELECT 1 AS Typ ,
@rgdatum AS Rechnungsdatum,
@mitdatum AS MitDatum ,
dbo.Behandlu.Nrbehandlung ,
dbo.Behandlu.Behandlungsbeginn ,
dbo.Behandlu.Behandlungsende ,
dbo.PRIVAT.NAME + ' ' + dbo.PRIVAT.VORNAME AS Patient ,
dbo.PRIVAT.NAME AS Patient_Name ,
dbo.PRIVAT.VORNAME AS Patient_Vorname ,
dbo.PRIVAT.STRASSE AS Patient_Strasse ,
dbo.PRIVAT.PLZ AS Patient_PLZ ,
dbo.PRIVAT.ORT AS Patient_Ort ,
dbo.PRIVAT.Kanton AS Patient_Kanton ,
dbo.PRIVAT.AHVNR AS Patient_AHVNr ,
CASE WHEN dbo.PRIVAT.GESCHLECHT = 2 THEN 'M'
ELSE 'W'
END AS Patient_Geschlecht ,
CONVERT(VARCHAR(10),dbo.PRIVAT.GEBDAT,104) AS Patient_Geburtsdatum ,
dbo.PRIVAT.GLN AS Patient_GLNr ,
privat_1.NAME + ' ' + privat_1.VORNAME AS Behandler ,
dbo.Behandlu.Taxpunktwert ,
dbo.Behandlu.Rabatt ,
dbo.Behandlu.Total ,
dbo.Behandlu.Rechnungsbemerkung ,
dbo.Behandlu.Ratenzuschlag ,
dbo.Behandlu.Andrucken_Taxpunkte ,
dbo.Behandlu.Anzahlung ,
dbo.Behandlu.Nrestyp ,
dbo.Behandlu.Fallnummer ,
dbo.Behandlu.Anzahlraten ,
dbo.Behandlu.Unfalldatum,
dbo.behandlu.Datum_Kostengutsprache,
dbo.behandlu.Kostengutsprache_Nummer,
dbo.behandlu.Behandlungsgrund,
dbo.behandlu.Diagnose,
dbo.behandlu.GLN_Liste,
dbo.get_adresszeile(1, dbo.Behandlu.Nrbehandlung) AS AdressZeile1 ,
dbo.get_adresszeile(2, dbo.Behandlu.Nrbehandlung) AS AdressZeile2 ,
dbo.get_adresszeile(3, dbo.Behandlu.Nrbehandlung) AS AdressZeile3 ,
dbo.get_adresszeile(4, dbo.Behandlu.Nrbehandlung) AS AdressZeile4 ,
dbo.get_adresszeile(5, dbo.Behandlu.Nrbehandlung) AS AdressZeile5 ,
dbo.Get_Dentotar_Parameter(11,
dbo.Behandlu.Nrbehandlung) AS GLN_Empfaenger ,
dbo.get_adresse(dbo.Behandlu.Nrbehandlung, 0) AS Empfaenger ,
dbo.Get_Totale(1, dbo.Behandlu.Nrbehandlung) AS Total_SSO ,
dbo.Get_Totale(2, dbo.Behandlu.Nrbehandlung) AS Total_Medikamente ,
dbo.Get_Totale(3, dbo.Behandlu.Nrbehandlung) AS Total_Labor ,
dbo.Get_Totale(4, dbo.Behandlu.Nrbehandlung) AS RabattTotal ,
dbo.Get_Totale(5, dbo.Behandlu.Nrbehandlung) AS Vorauszahlung ,
dbo.get_totalblock(1, dbo.Behandlu.Nrbehandlung) AS TotalTextblock ,
dbo.get_totalblock(2, dbo.Behandlu.Nrbehandlung) AS TotalNumBlock ,
dbo.Get_Dentotar_Parameter(1,
dbo.Behandlu.Nrbehandlung) AS Rechnungstitel ,
dbo.Get_Dentotar_Parameter(2,
dbo.Behandlu.Nrbehandlung) AS Dokument_Identifikation ,
dbo.Get_Dentotar_Parameter(3,
dbo.Behandlu.Nrbehandlung) AS RG_Steller_GLN ,
dbo.Get_Dentotar_Parameter(4,
dbo.Behandlu.Nrbehandlung) AS RG_Steller_ZSR ,
dbo.Get_Dentotar_Parameter(5,
dbo.Behandlu.Nrbehandlung) AS RG_Steller_Name ,
dbo.Get_Dentotar_Parameter(6,
dbo.Behandlu.Nrbehandlung) AS RG_Steller_Adresse ,
dbo.Get_Dentotar_Parameter(15,
dbo.Behandlu.Nrbehandlung) AS RG_Steller_Tel ,
dbo.Get_Dentotar_Parameter(16,
dbo.Behandlu.Nrbehandlung) AS RG_Steller_Fax ,
(SELECT ISNULL(GLN,'') FROM privat WHERE nrprivat=behandlu.Nrbehandler) AS Leistungserbringer_GSN,
(SELECT ISNULL(ZSR,'') FROM privat WHERE nrprivat=behandlu.Nrbehandler) AS Leistungserbringer_ZSR,
(SELECT name+' '+vorname FROM privat WHERE nrprivat=behandlu.Nrbehandler) AS Leistungserbringer_Name,
--dbo.Get_Dentotar_Parameter(7,
-- dbo.Behandlu.Nrbehandlung) AS Leistungserbringer_GSN ,
--dbo.Get_Dentotar_Parameter(8,
-- dbo.Behandlu.Nrbehandlung) AS Leistungserbringer_ZSR ,
--dbo.Get_Dentotar_Parameter(9,
-- dbo.Behandlu.Nrbehandlung) AS Leistungserbringer_Name ,
dbo.Get_Dentotar_Parameter(10,
dbo.Behandlu.Nrbehandlung) AS Leistungserbringer_Adresse ,
dbo.Get_Dentotar_Parameter(12,
dbo.Behandlu.Nrbehandlung) AS Verguetungsart ,
--dbo.Get_Dentotar_Parameter(13,
-- dbo.Behandlu.Nrbehandlung) AS Gesetz ,
dbo.get_gesetz(dbo.Behandlu.Nrbehandlung) AS Gesetz,
dbo.Get_Dentotar_Parameter(14,
dbo.Behandlu.Nrbehandlung) AS Rolle_Ort ,
dbo.Get_Dentotar_Parameter(17,
dbo.Behandlu.Nrbehandlung) AS Leistungserbringer_Tel ,
dbo.Get_Dentotar_Parameter(18,
dbo.Behandlu.Nrbehandlung) AS Leistungserbringer_Fax,
CASE WHEN @kopie=0 THEN 'nein' ELSE 'nein' END AS Kopie,
@absenderort AS Absenderort_Datum,
dbo.get_behandlungsart(dbo.behandlu.nrbehandlung) AS Behandlungsart
INTO #tmp1
FROM dbo.Behandlu
INNER JOIN dbo.PRIVAT ON dbo.Behandlu.Nrpatient = dbo.PRIVAT.NRPRIVAT
INNER JOIN dbo.PRIVAT AS privat_1 ON dbo.Behandlu.Nrbehandler = privat_1.NRPRIVAT
WHERE Behandlu.Nrbehandlung = @behandlungsnr;
SELECT *
FROM #tmp1;
END;
IF @typ = 3
OR @typ = 4
BEGIN -- Leistungen
DECLARE @pk INT;
IF @mitdatum = 1
BEGIN -- Nach Datum
INSERT @Tabelle_mit_datum
SELECT *
FROM View_Leistungen_mit_Datum
WHERE Nrbehandlung = @behandlungsnr
ORDER BY Datum ,
SSO_Nummer;
SET @i = 1;
DECLARE xc CURSOR
FOR
SELECT *
FROM @Tabelle_mit_datum
ORDER BY Datum ,
[SSO_Nummer];
OPEN xc;
FETCH NEXT FROM xc INTO @type, @Datum, @SSO_Nummer,
@Bezd, @Taxpunkte, @Menge, @Frankenprotaxpunkt,
@Absolut, @Leistungstotal, @Nrbehandlung;
WHILE @@FETCH_STATUS = 0
BEGIN
IF @i = 1
BEGIN
INSERT @lr_tabelle_mit_Datum
( L_Datum ,
L_SSO_Nummer ,
L_Bezd ,
L_Taxpunkte ,
L_Menge ,
L_Frankenprotaxpunkt ,
L_Absolut ,
L_Leistungstotal ,
R_Datum ,
R_SSO_Nummer ,
R_Bezd ,
R_Taxpunkte ,
R_Menge ,
R_Frankenprotaxpunkt ,
R_Absolut ,
R_Leistungstotal
)
VALUES ( @Datum , -- L_Datum - date
@SSO_Nummer , -- L_SSO_Nummer - int
@Bezd , -- L_Bezd - varchar(255)
@Taxpunkte , -- L_Taxpunkte - float
@Menge , -- L_Menge - float
@Frankenprotaxpunkt , -- L_Frankenprotaxpunkt - float
@Absolut , -- L_Absolut - bit
@Leistungstotal , -- L_Leistungstotal - float
NULL , -- R_Datum - date
NULL , -- R_SSO_Nummer - int
CONVERT(VARCHAR(255), '') , -- R_Bezd - varchar(255)
NULL , -- R_Taxpunkte - float
NULL , -- R_Menge - float
NULL , -- R_Frankenprotaxpunkt - float
NULL , -- R_Absolut - bit
NULL -- R_Leistungstotal - float
);
SET @i = @i + 1;
END;
ELSE
BEGIN
SELECT TOP 1
@pk = pk
FROM @lr_tabelle_mit_Datum
ORDER BY pk DESC;
UPDATE @lr_tabelle_mit_Datum
SET R_Datum = @Datum ,
R_SSO_Nummer = @SSO_Nummer ,
R_Bezd = @Bezd ,
R_Taxpunkte = @Taxpunkte ,
R_Menge = @Menge ,
R_Frankenprotaxpunkt = @Frankenprotaxpunkt ,
R_Absolut = @Absolut ,
R_Leistungstotal = @Leistungstotal
WHERE pk = @pk;
SET @i = 1;
END;
FETCH NEXT FROM xc INTO @type, @Datum,
@SSO_Nummer, @Bezd, @Taxpunkte, @Menge,
@Frankenprotaxpunkt, @Absolut,
@Leistungstotal, @Nrbehandlung;
END;
CLOSE xc;
DEALLOCATE xc;
IF @typ = 4
BEGIN
PRINT 'a0';
SELECT *
FROM @lr_tabelle_mit_Datum;
END;
ELSE
BEGIN
SELECT *
FROM @Tabelle_mit_datum;
END;
END;
ELSE
BEGIN -- ohne Datum
INSERT @Tabelle_ohne_datum
SELECT *
FROM View_Leistungen_ohne_Datum
WHERE Nrbehandlung = @behandlungsnr
ORDER BY SSO_Nummer;
SET @i = 1;
DECLARE xc CURSOR
FOR
SELECT *
FROM @Tabelle_ohne_datum
ORDER BY [SSO_Nummer];
OPEN xc;
FETCH NEXT FROM xc INTO @type, @SSO_Nummer, @Bezd,
@Taxpunkte, @Menge, @Frankenprotaxpunkt, @Absolut,
@Leistungstotal, @Nrbehandlung;
WHILE @@FETCH_STATUS = 0
BEGIN
IF @i = 1
BEGIN
INSERT @lr_tabelle_ohne_Datum
( L_SSO_Nummer ,
L_Bezd ,
L_Taxpunkte ,
L_Menge ,
L_Frankenprotaxpunkt ,
L_Absolut ,
L_Leistungstotal ,
R_SSO_Nummer ,
R_Bezd ,
R_Taxpunkte ,
R_Menge ,
R_Frankenprotaxpunkt ,
R_Absolut ,
R_Leistungstotal
)
VALUES ( @SSO_Nummer , -- L_SSO_Nummer - int
@Bezd , -- L_Bezd - varchar(255)
@Taxpunkte , -- L_Taxpunkte - float
@Menge , -- L_Menge - float
@Frankenprotaxpunkt , -- L_Frankenprotaxpunkt - float
@Absolut , -- L_Absolut - bit
@Leistungstotal , -- L_Leistungstotal - float
NULL , -- R_SSO_Nummer - int
CONVERT(VARCHAR(255), '') , -- R_Bezd - varchar(255)
NULL , -- R_Taxpunkte - float
NULL , -- R_Menge - float
NULL , -- R_Frankenprotaxpunkt - float
NULL , -- R_Absolut - bit
NULL -- R_Leistungstotal - float
);
SET @i = @i + 1;
END;
ELSE
BEGIN
SELECT TOP 1
@pk = pk
FROM @lr_tabelle_ohne_Datum
ORDER BY pk DESC;
PRINT @pk;
UPDATE @lr_tabelle_ohne_Datum
SET R_SSO_Nummer = @SSO_Nummer ,
R_Bezd = @Bezd ,
R_Taxpunkte = @Taxpunkte ,
R_Menge = @Menge ,
R_Frankenprotaxpunkt = @Frankenprotaxpunkt ,
R_Absolut = @Absolut ,
R_Leistungstotal = @Leistungstotal
WHERE pk = @pk;
SET @i = 1;
END;
FETCH NEXT FROM xc INTO @type, @SSO_Nummer,
@Bezd, @Taxpunkte, @Menge,
@Frankenprotaxpunkt, @Absolut,
@Leistungstotal, @Nrbehandlung;
END;
CLOSE xc;
DEALLOCATE xc;
IF @typ = 4
BEGIN
SELECT '' AS Datum ,
*
FROM @lr_tabelle_ohne_Datum;
END;
ELSE
BEGIN
SELECT '' AS Datum ,
*
FROM @Tabelle_ohne_datum;
END;
END;
END;
IF @typ = 5
BEGIN
SELECT *
FROM View_Leistungen_Dentotar
WHERE Nrbehandlung = @behandlungsnr;
END;
END;
GO