alter table estyp add mahnnummer int
go
update estyp set mahnnummer=100 where nrestyp=1
update estyp set mahnnummer=300 where nrestyp=5
go
/****** Object:  StoredProcedure [dbo].[sp_get_fakturadata]    Script Date: 30.06.2018 21:45:38 ******/
DROP PROCEDURE [dbo].[sp_get_fakturadata]
GO

/****** Object:  StoredProcedure [dbo].[sp_get_fakturadata]    Script Date: 30.06.2018 21:45:38 ******/
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
				
				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 = 0 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


