Skip to end of metadata
Go to start of metadata

DON'T FORGET TO RUN A RELINK AFTER (GL RELINK)

--Easy select
select 'EXEC _as_ChangeInvoiceDate @InvoiceNumber = ''' + InvNumber + ''', @DocType = ' + CAST(DocType as varchar(100)) 
	+ ',@NewTxDate = ''' + CONVERT(varchar(100),DATEADD(m,1,InvDate),112 ) + ''';', * from invnum where invnumber in  ('KHL73219','KHL73302','KHL73311','KHL73303','KHL73309','KHL73312','KHL73313','KHL73314','KHL73315','KHL73316','KHL73324','KHL73325','KHL73326','KHL73327')




SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		Asamco BV, Alexander Toufexis
-- Create date: 2019-05-15
-- Description:	Change invoice date
-- =============================================
CREATE PROCEDURE _as_ChangeInvoiceDate 
	-- Add the parameters for the stored procedure here
	@InvoiceNumber varchar(100) = NULL,
	@AuditNumber varchar(100) = NULL,
	@DocType int = 0, --only needed in case of an @InvoiceNumber
	@NewTxDate datetime
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	
	--checks if not both are null
	IF (@InvoiceNumber is null AND @AuditNumber is null)
		BEGIN
			RaisError('Both parameters are NULL!',17,1)
            RETURN -1
		END

	DECLARE @InvNumID bigint
	IF (@InvoiceNumber IS NOT NULL)
		BEGIN
			SELECT @InvNumID = (SELECT TOP 1 AutoIndex FROM InvNum WHERE InvNumber = @InvoiceNumber AND DocType = @DocType )
			SELECT @AuditNumber =
				CASE --get from AR or AP table, dependent on docType
					WHEN @DocType IN (0,1,4,6) THEN (SELECT cAuditNumber FROM PostAR WHERE InvNumKey = @InvNumID)
					WHEN @DocType IN (2,3,5,7) THEN (SELECT cAuditNumber FROM PostAP WHERE InvNumKey = @InvNumID)
					END

		END
	ELSE 
		BEGIN --lookup based on audit number
			SELECT @InvNumID =
				CASE --get from AR or AP table, dependent on docType
					WHEN @DocType IN (0,1,4,6) THEN (SELECT InvNumKey FROM PostAR WHERE cAuditNumber = @AuditNumber)
					WHEN @DocType IN (2,3,5,7) THEN (SELECT InvNumKey FROM PostAP WHERE cAuditNumber = @AuditNumber)
					END
		END

	--Check if all relevant fields are found:
	IF (@InvNumID IS NULL OR @AuditNumber IS NULL)
		BEGIN
			RaisError('Values not found. Cancelling procedure!',17,1)
			RETURN -1
		END


	--now update the dates!
		--PostAR/AP
		IF (@DocType IN (0,1,4,6))
			BEGIN
				UPDATE PostAR SET TxDate = @NewTxDate WHERE cAuditNumber = @AuditNumber
			END
		ELSE
			BEGIN
				UPDATE PostAP SET TxDate = @NewTxDate WHERE cAuditNumber = @AuditNumber
			END
		--PostGL
		UPDATE PostGL SET TxDate = @NewTxDate WHERE cAuditNumber = @AuditNumber
		--PostST
		UPDATE PostST SET TxDate = @NewTxDate WHERE cAuditNumber = @AuditNumber
		--invNum
		UPDATE InvNum SET InvDate = @NewTxDate WHERE AutoIndex = @InvNumID

		DECLARE @msg varchar(max)
		SELECT @msg = 'Updated to new TxDate for audit number: ' + @AuditNumber + ' and invnumID: ' + CAST(@InvNumID as varchar(100))+  ' (invnumber: ' + COALESCE(@InvoiceNumber,'no invno provided') + ')';
		PRINT @msg;
END
GO


  • No labels