Skip to content

Zmiana daty dokumentu magazynowego

  • UWAGA nie uzywac procedury [document].[document_toolChangeDocumentDate] - do usuniecia jest nowa zmien_date_dokumentu
  • UWAGA procedura nie zmienia numeracji na przelomie miesiaca roku
  • Dla dokuemntow mm/wm trzeba znalezc odpowiadajacy dokuemnt np w interfejsie

Reference

Procedura backup tabeli

SQL
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

Sytuacja recznego zmiany daty np na przelomie miesiaca

SQL
/*zidentyfikowanie gdzie ejst douemtn kolejnosc*/
select * from document.document
where documentdate  >='2022-10-01' and  documentdate  <='2022-10-31'
and documenttype='pz'
and warehouseid ='0198FCF9-209B-4A67-A761-8059A9FA460F'
order by documentnr

/*zmiana dokumentu*/

/*zmiana nuemratora*/

SELECT TOP (1000) numerator_ID, remoteSource, series, warehouse, param1, param2, param3, date, numerator
FROM   common.Numerator
WHERE (remoteSource = 'document') AND (series LIKE 'PZ3001022%')

Sprawdzenie zgodności numerów dokumentów z pozycjami

SQL
select  distinct
    cast(d.documentDate as date) date   ,
    d.documentNR,
    d.documentFullNR,
    w.locationCode
from document.document d
    inner join document.documentline dl on d.documentid=dl.documentid
    inner join document.documenttype dt on dt.documentType = d.documentType
    inner join wms.location w on w.locationID  = d.warehouseID
where
    (d.status >-1 and dl.status >-1)
    and (
    dl.status != d.status
    or d.documentFullNR !=dl.documentFullNR
    )
order by 1,2

FIX

SQL
update document.documentline set documentfullnr = d.documentfullnr
from document.document d
    inner join document.documentline dl on d.documentid=dl.documentid
    inner join document.documenttype dt on dt.documentType = d.documentType
    inner join wms.location w on w.locationID  = d.warehouseID
where
    (d.status >-1 and dl.status >-1)
    and (
    dl.status != d.status
    or d.documentFullNR !=dl.documentFullNR
    )