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