﻿-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[mfr__updt__invoices]
	@tblname as nvarchar(50)
	, @referencetable nvarchar(50)
	, @tgtid bigint
AS
BEGIN
	SET NOCOUNT ON;

    DECLARE @tmp [dbo].[mfr__tt__invoices];

	DECLARE @tmp_cmd nvarchar(1000) = N'SELECT DISTINCT * FROM ' + @tblname
	INSERT INTO @tmp EXECUTE [sp_executesql] @tmp_cmd;


	MERGE [dbo].[mfr__invoices] as TARGET
		USING @tmp as SOURCE ON TARGET.[Id] = SOURCE.[Id]
	WHEN MATCHED AND (TARGET.[Version] <= SOURCE.[Version] OR TARGET.[DateOfCreation] <= SOURCE.[DateOfCreation] )  THEN
		UPDATE
			SET [Id] = SOURCE.[Id]
				  ,[Version] = SOURCE.[Version]
				  ,[DateOfCreation] = SOURCE.[DateOfCreation]
				  ,[URI] = SOURCE.[URI]
				  ,[DocumentName] = SOURCE.[DocumentName]
				  ,[ReportDefinitionCode] = SOURCE.[ReportDefinitionCode]
				  ,[FileType] = SOURCE.[FileType]
				  ,[InvoiceBalance] = SOURCE.[InvoiceBalance]
				  ,[InvoiceBalanceNetto] = SOURCE.[InvoiceBalanceNetto]
				  ,[WageBalanceNet] = SOURCE.[WageBalanceNet]
				  ,[DatePayed] = SOURCE.[DatePayed]
				  ,[InvoiceId] = SOURCE.[InvoiceId]
				  ,[DueDate] = SOURCE.[DueDate]
				  ,[WithoutVAT] = SOURCE.[WithoutVAT]
				  ,[Skonto] = SOURCE.[Skonto]
				  ,[PartialPayment] = SOURCE.[PartialPayment]
				  ,[InvoiceState] = SOURCE.[InvoiceState]
				  ,[Note] = SOURCE.[Note]
	WHEN NOT MATCHED BY TARGET THEN
		INSERT
			   ([Id]
			   ,[Version]
			   ,[DateOfCreation]
			   ,[URI]
			   ,[DocumentName]
			   ,[ReportDefinitionCode]
			   ,[FileType]
			   ,[InvoiceBalance]
			   ,[InvoiceBalanceNetto]
			   ,[WageBalanceNet]
			   ,[DatePayed]
			   ,[InvoiceId]
			   ,[DueDate]
			   ,[WithoutVAT]
			   ,[Skonto]
			   ,[PartialPayment]
			   ,[InvoiceState]
			   ,[Note]
			   ,[file_guid])
		 VALUES
			   ( SOURCE.[Id]
			   ,SOURCE.[Version]
			   ,SOURCE.[DateOfCreation]
			   ,SOURCE.[URI]
			   ,SOURCE.[DocumentName]
			   ,SOURCE.[ReportDefinitionCode]
			   ,SOURCE.[FileType]
			   ,SOURCE.[InvoiceBalance]
			   ,SOURCE.[InvoiceBalanceNetto]
			   ,SOURCE.[WageBalanceNet]
			   ,SOURCE.[DatePayed]
			   ,SOURCE.[InvoiceId]
			   ,SOURCE.[DueDate]
			   ,SOURCE.[WithoutVAT]
			   ,SOURCE.[Skonto]
			   ,SOURCE.[PartialPayment]
			   ,SOURCE.[InvoiceState]
			   ,SOURCE.[Note]
			   ,newid());
END