begin tran
declare @documentID uniqueidentifier ;
declare @documentFullNR varchar(20)='PZ/007/00002/09/22'
declare @newDocumentDate date = '2022-09-05' -- <<< Podaj nowa date
declare @documentDate date
declare @documenttype varchar(10)
declare @warehouseid uniqueidentifier
select @documentID = documentID,@documentDate=documentDate,@documenttype=documenttype,@warehouseid=warehouseid from document.document where documentFullNR = @documentFullNR and status >-1
/* Sprawdzenie czy dokument istnieje*/
if not exists(select * from document.document where documentid = @documentid) begin
raiserror('Dokument nie istnieje', 16, 1);
return;
end
/*Sprwadzenie czy mm/wm*/
if @documenttype like '%mm%' or @documenttype like '%wm%' begin
raiserror('Zmiana nieobslugiwana dla MM/WM, skontaktuj się z supportem', 16, 1);
return;
end
/*Sprwadzenie czy korekta i nie jest przesuniete przed dokuemnt zrodlowy*/
declare @correctedDocumentDate datetime
select @correctedDocumentDate = cd.documentDate from document.document d
inner join document.document cd on d.correctedDocumentId = cd.documentID
where d.documentID = @documentID
if @correctedDocumentDate > @newDocumentDate begin
raiserror('#error.dateCannotBeEarlierThanCorrectedDocument', 16, 1)
return
end
/*check daty czy nei jest z roznych okresów*/
if convert(varchar(6), @documentdate, 112) != convert(varchar(6), @newDocumentDate, 112) begin
raiserror('Zmiana na przełomie miesiąca niemożliwa skontaktuj się z supportem', 16, 1)
return
end
-- sprawdzenie dat z miesiaca trzeba recznie tu sprwadzic
select documentDate ,documenttype,min(documentnr) min,max(documentnr) max,count(*) total from document.document
where
convert(varchar(6), documentdate, 112) = convert(varchar(6), @documentdate, 112)
and documenttype = @documenttype
and warehouseid = @warehouseid
group by documentdate,documenttype order by 1
update document.document set documentDate = @newDocumentDate where documentid =@documentID
-- sprawdzenie dat z miesiaca trzeba recznie tu sprwadzic
select documentDate ,documenttype,min(documentnr) min,max(documentnr) max,count(*) total from document.document
where
convert(varchar(6), documentdate, 112) = convert(varchar(6), @documentdate, 112)
and documenttype = @documenttype
and warehouseid = @warehouseid
group by documentdate,documenttype order by 1
/* Stockbalance fix */
exec wms.stockbalancefix @username='sys' ,@documentID=@documentID
select * from document.document where documentfullnr = @documentFullNR
/*Uwaga jeśli zmiana na przelomie miesiaca wymagana zmiana miesiaca
update document.document set documentmonth = cast(year( @date) as varchar(4)) + right('0'+cast(month (@date) as varchar(2)),2) where documentid = @documentID
update document.documentline set documentmonth = cast(year( @date) as varchar(4)) + right('0'+cast(month (@date) as varchar(2)),2) where documentid = @documentID
*/
/*Zmiana numeru dokumentu
declare @nowyFullNR varchar(20)='RW-S/14/315/0721',
@documentNR int = 14
update document.document set documentnr = @documentNR ,documentfullnr = @nowyFullNR
where documentID = @documentid
update document.documentline set documentfullnr = @nowyFullNR
where documentID = @documentid
*/
rollback tran -- uwaga roolback