/****** Object:  UserDefinedFunction [dbo].[get_offener_betrag]    Script Date: 12.05.2018 07:51:54 ******/
DROP FUNCTION [dbo].[get_offener_betrag]
GO

/****** Object:  UserDefinedFunction [dbo].[get_offener_betrag]    Script Date: 12.05.2018 07:51:54 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date, ,>
-- Description:	<Description, ,>
-- =============================================
CREATE FUNCTION [dbo].[get_offener_betrag]
(
	-- Add the parameters for the function here
	@fakturanr INT
)
RETURNS DECIMAL(10,2)
AS
BEGIN
	 DECLARE @RESULT FLOAT
	 DECLARE @result1 FLOAT
     SELECT @result=total FROM faktura WHERE nrfaktura=@fakturanr
	 SELECT  @RESULT1=ISNULL(SUM(Betrag), 0) 
FROM            dbo.Zahlung
WHERE        (Status <> 9) AND (Nrfaktura = @fakturanr) AND (CAST(aktiv AS INT) = 1)
RETURN @RESULT-@RESULt1
END

GO
/****** Object:  UserDefinedFunction [dbo].[get_adresse_direkt]    Script Date: 12.05.2018 07:52:22 ******/
DROP FUNCTION [dbo].[get_adresse_direkt]
GO

/****** Object:  UserDefinedFunction [dbo].[get_adresse_direkt]    Script Date: 12.05.2018 07:52:22 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date, ,>
-- Description:	<Description, ,>
-- =============================================
CREATE FUNCTION [dbo].[get_adresse_direkt]
(
	@keyvalue INT,
	@einzeilig INT=0
)
RETURNS VARCHAR(255)
AS
BEGIN
	DECLARE @Adresstype int
	DECLARE @Nrprivat int
	DECLARE @res VARCHAR(255)
	DECLARE @res2 VARCHAR(255)
	DECLARE @garant INT
	DECLARE @ansprechpartner INT
    declare @adresse varchar(255)
    DECLARE @crlf varchar(2)
    SET @crlf  = char(13) + char(10)
	IF @einzeilig=1 SET @crlf = ' '

	SET @garant=@keyvalue
    SET @nrprivat=@keyvalue
IF @garant > 0 AND @garant > 49000  GOTO Firmenadresse   

	SET @adresse=''
    SELECT @res=dbo.anrede.Anrede_D FROM dbo.anrede INNER JOIN dbo.privat ON dbo.anrede.NRANREDE = dbo.privat.NRANREDE 
	       WHERE (dbo.privat.NRPRIVAT = @Nrprivat)
	SET @adresse=@res
	SET @res=''
	SELECT @res=ISNULL(dbo.titel.titel_d,'') FROM dbo.Titel INNER JOIN dbo.privat ON dbo.titel.nrtitel = dbo.privat.nrtitel 
	       WHERE (dbo.privat.NRPRIVAT = @Nrprivat)
	IF @res<>'' SET @adresse=@adresse+@crlf+@res
  
    SELECT @res= vorname+' '+name FROM privat WHERE NRPRIVAT=@Nrprivat
	IF @res<>'' SET @adresse=@adresse+@crlf+@res
  
    SELECT @res=ISNULL(COADRESSE,'') FROM privat WHERE (dbo.privat.NRPRIVAT = @Nrprivat)
	IF @res<>'' SET @adresse=@adresse+@crlf+@res

    SELECT @res=ISNULL(COADRESSE,'') FROM privat WHERE (dbo.privat.NRPRIVAT = @Nrprivat)
	IF @res<>'' SET @adresse=@adresse+@crlf+@res
 
    SELECT @res= STRASSE FROM privat WHERE NRPRIVAT=@Nrprivat
	IF @res<>'' SET @adresse=@adresse+@crlf+@res

    SELECT @res=plz+' '+ort FROM privat WHERE NRPRIVAT=@Nrprivat 
	IF @res<>'' SET @adresse=@adresse+@crlf+@res
	SET @res=@adresse
	GOTO ende

firmenadresse:
    SET @adresse=''
	SET @res=''
	SELECT @adresse=name1 FROM firma WHERE NRFIRMA=@garant
	SELECT @res=ISNULL(name2,'') FROM dbo.FIRMA WHERE NRFIRMA=@garant
	IF @res<>'' SET @adresse=@adresse+@crlf+@res
	SELECT @res=ISNULL(dbo.ANREDE.Anrede_D +' '+ dbo.firmaap.NAME,'') FROM  dbo.ANREDE LEFT OUTER JOIN  dbo.FIRMAAP ON dbo.ANREDE.NRANREDE = dbo.FIRMAAP.NRANREDE 
	IF @res<>'' SET @adresse=@adresse+@crlf+@res
	SELECT @res=ISNULL(strasse,'') FROM dbo.FIRMA WHERE NRFIRMA=@garant
	IF @res<>'' SET @adresse=@adresse+@crlf+@res
	SELECT @res=ISNULL(POSTFACH,'') FROM dbo.FIRMA WHERE NRFIRMA=@garant
	IF @res<>'' SET @adresse=@adresse+@crlf+@res
	SELECT @res=ISNULL(plz+' '+ort,'') FROM dbo.FIRMA WHERE NRFIRMA=@garant
	IF @res<>'' SET @adresse=@adresse+@crlf+@res
	SET @res=@adresse



   --SET @res=''
   --IF @zeilenr=1 BEGIN
   --   SELECT @res=name1 FROM firma WHERE nrfirma=@garant
   --END
   --IF @ZeileNr=2 BEGIN
   --   IF @ansprechpartner<>0 BEGIN
   --      SELECT @res=dbo.ANREDE.Anrede_D +' '+ dbo.firmaap.NAME FROM  dbo.ANREDE LEFT OUTER JOIN  dbo.FIRMAAP ON dbo.ANREDE.NRANREDE = dbo.FIRMAAP.NRANREDE 
   --   END ELSE begin   
   --      SELECT @res=ISNULL(name2,'') FROM firma WHERE NRFIRMA=@garant
	  --end
   --END  
   --IF @ZeileNr=3 BEGIN
   --   IF @ansprechpartner<>0 BEGIN
   --      SELECT @res=ISNULL(name2,'') FROM firma WHERE NRFIRMA=@garant
	  --END ELSE BEGIN
   --      SELECT @res=ISNULL(Strasse,'') FROM firma WHERE NRFIRMA=@garant
   --   END
   --end 
   --IF @ZeileNr=4 BEGIN
   --   IF @ansprechpartner<>0 BEGIN
   --      SELECT @res=ISNULL(Strasse,'') FROM firma WHERE NRFIRMA=@garant
	  --END ELSE BEGIN
	  --   SELECT @res2=ISNULL(postfach,'') FROM firma WHERE NRFIRMA=@garant
		 --IF @res2='' SELECT @res=plz + ' '+ort FROM dbo.FIRMA WHERE NRFIRMA=@garant ELSE SET @res=@res2   
   --   END
   --end 
   --IF @ZeileNr=5 BEGIN
   --   IF @ansprechpartner<>0 BEGIN
   --      SELECT @res=plz + ' '+ort FROM dbo.FIRMA WHERE NRFIRMA=@garant 
	  --END ELSE BEGIN
   --      SELECT @res=ISNULL(Postfach,'') FROM firma WHERE NRFIRMA=@garant
   --   END
   --end 

   --RETURN @res
ende:
   RETURN @res
END

GO
/****** Object:  UserDefinedFunction [dbo].[get_offener_betrag]    Script Date: 12.05.2018 07:52:46 ******/
DROP FUNCTION [dbo].[get_offener_betrag]
GO

/****** Object:  UserDefinedFunction [dbo].[get_offener_betrag]    Script Date: 12.05.2018 07:52:46 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date, ,>
-- Description:	<Description, ,>
-- =============================================
CREATE FUNCTION [dbo].[get_offener_betrag]
(
	-- Add the parameters for the function here
	@fakturanr INT
)
RETURNS DECIMAL(10,2)
AS
BEGIN
	 DECLARE @RESULT FLOAT
	 DECLARE @result1 FLOAT
     SELECT @result=total FROM faktura WHERE nrfaktura=@fakturanr
	 SELECT  @RESULT1=ISNULL(SUM(Betrag), 0) 
FROM            dbo.Zahlung
WHERE        (Status <> 9) AND (Nrfaktura = @fakturanr) AND (CAST(aktiv AS INT) = 1)
RETURN @RESULT-@RESULt1
END

GO

/****** Object:  StoredProcedure [dbo].[sp_reset_Mahnstufe]    Script Date: 12.05.2018 08:56:39 ******/
DROP PROCEDURE [dbo].[sp_reset_Mahnstufe]
GO

/****** Object:  StoredProcedure [dbo].[sp_reset_Mahnstufe]    Script Date: 12.05.2018 08:56:39 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[sp_reset_Mahnstufe]
	@stufe INT,
	@nrfaktura INT
AS
BEGIN
	SET NOCOUNT ON;
	IF @stufe=1 UPDATE faktura SET Mahndatum1=NULL, Mahnfaelligkeit1=NULL,Mahngebuehr1=0 WHERE Nrfaktura=@nrfaktura
	IF @stufe=2 UPDATE faktura SET Mahndatum2=NULL, Mahnfaelligkeit2=NULL,Mahngebuehr2=0 WHERE Nrfaktura=@nrfaktura
	IF @stufe=3 UPDATE faktura SET Mahndatum3=NULL, Mahnfaelligkeit3=NULL,Mahngebuehr3=0 WHERE Nrfaktura=@nrfaktura

END

GO

DROP VIEW [dbo].[View_Offene_Rechnungen]
GO

/****** Object:  View [dbo].[View_Offene_Rechnungen]    Script Date: 12.05.2018 09:11:16 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE VIEW [dbo].[View_Offene_Rechnungen]
AS
SELECT        TOP (100) PERCENT dbo.DEBITOR.Nreintrag, dbo.Faktura.Nrfaktura, dbo.DEBITOR.Faelligam, dbo.DEBITOR.Betrag, dbo.DEBITOR.Status, dbo.get_adresse_direkt(dbo.DEBITOR.Nrpatient, 1) AS Patient, 
                         ISNULL(dbo.get_adresse_direkt(dbo.DEBITOR.Nrdebitor, 1), '') AS Debitor, dbo.DEBITOR.Nrpatient, dbo.get_offener_betrag(dbo.Faktura.Nrfaktura) AS Offener_Betrag, dbo.DEBITOR.Nrdebitor, dbo.Faktura.Mahndatum1, 
                         dbo.Faktura.Mahnfaelligkeit1, dbo.Faktura.Mahngebuehr1, dbo.Faktura.Mahndatum2, dbo.Faktura.Mahnfaelligkeit2, dbo.Faktura.Mahngebuehr2, dbo.Faktura.Mahndatum3, dbo.Faktura.Mahnfaelligkeit3, 
                         dbo.Faktura.Mahngebuehr3
FROM            dbo.DEBITOR INNER JOIN
                         dbo.Faktura ON dbo.DEBITOR.Nrfaktura = dbo.Faktura.Nrfaktura
WHERE        (dbo.DEBITOR.Status <> 9) AND (dbo.DEBITOR.Betrag <> 0) AND (dbo.DEBITOR.aktiv = 1) AND (dbo.get_offener_betrag(dbo.Faktura.Nrfaktura) > 0)
ORDER BY dbo.DEBITOR.Faelligam DESC

GO