BEGIN TRY
BEGIN TRANSACTION
declare @documentid uniqueidentifier = 'b523a7cf-bea6-ee11-80f4-9c8e994dc646' --naglowek odkumentu ps- /ps+
declare @incomedocumentlineid uniqueidentifier = '234c8f96-39c2-ec11-80ed-9c8e994dc647' --przychod pozycja
declare @optionalSOURCEDOCUMENTLINEID uniqueidentifier = null -- '553df59a-b4ab-ec11-930b-002590d9752e' --null
declare @itemid uniqueidentifier , @itemserialnumber varchar(50) , @value decimal (18,2)=0,
@documentnr int, @documentfullnr varchar(50),@documentordinalnumber int,@sign int,@newsign int,@itemquantityleft decimal (18,2)=0
update document.document set status=1 where documentid =@documentid
--1.pobrnaie z income
select @itemid = itemid,@value =sysItemValueLeft,@itemserialnumber =itemserialnumber ,@sign =sign ,@itemquantityleft =itemquantityleft
from document.documentLine where documentlineid =@incomedocumentlineid
if ( @value = 0 or isnull(@itemquantityleft,0) <> 0 )
raiserror('wartosc jest zerowa lub ilosc pozostala rozna od 0',16,1)
if ( @value > 0 ) --trzeba zdjac pozostala ilosc
set @newsign = -1
if ( @value < 0 )
set @newsign = 1
--2.pobranie z naglowka dokumentu korekty
select @documentnr = documentnr,@documentfullnr =documentfullnr
from document.document where documentid =@documentid
set @documentordinalnumber = isnull((select count(*) from document.documentline where documentid=@documentid)+1,1)
if (@documentnr is null)
raiserror('nie znaleziono dokumentu korekty',16,1)
--3.Scenariusz na PRzychodzie pozostala wartosc dodatnia 0 ilosc
insert into document.documentline
(
documentid,itemid ,itemserialnumber,iNITIALINCOMESOURCELINEID ,SOURCEDOCUMENTLINEID,signvalue,sign,status,
sysitemvalue,sysItemValueLeft ,itemvalue,ItemValueLeft,itemQuantity ,itemQuantityLeft,
itemprice,sysItemPrice,
documentnr,documentfullnr
)
select @documentid,@itemid,@itemserialnumber,@incomedocumentlineid,isnull(@optionalSOURCEDOCUMENTLINEID,@incomedocumentlineid),@newsign,@newsign,1,
abs(@value),abs(@value),abs(@value),abs(@value),0,0,
abs(@value),abs(@value),
@documentnr,@documentfullnr
--4.oczyszczenie income
update document.documentLine set sysItemValueLeft =0 where documentlineid=@incomedocumentlineid
--5. Fix stanów
exec wms.stockbalancefix @itemid =@itemid
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
--SELECT ERROR_NUMBER() AS ErrorNumber, ERROR_STATE() AS ErrorState, ERROR_SEVERITY() AS ErrorSeverity, ERROR_PROCEDURE() AS ErrorProcedure, ERROR_LINE() AS ErrorLine, ERROR_MESSAGE() AS ErrorMessage;
DECLARE @Message varchar(MAX) = ERROR_MESSAGE(), @Severity int = ERROR_SEVERITY(), @State smallint = ERROR_STATE();
RAISERROR (@Message, @Severity, @State);
END CATCH