USP_ADJUSTMENTHISTORY_STOCKSALE_SAVEHISTORY
Store historical sold stock adjustment information for reporting purposes.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@STOCKSALEID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CHANGEDATE | datetime | IN | |
@STOCKSALEADJUSTMENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_ADJUSTMENTHISTORY_STOCKSALE_SAVEHISTORY
(
@STOCKSALEID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@CHANGEDATE datetime,
@STOCKSALEADJUSTMENTID uniqueidentifier
)
as
set nocount on;
/*Before calling this procedure, be sure that you call USP_SAVE_STOCKSALEADJUSTMENT and then save changes to the STOCKSALE table*/
declare @ADJUSTMENTCOUNT int;
declare @PREVIOUSSTOCKSALEADJUSTMENTID uniqueidentifier;
declare @PREVIOUSADJUSTMENTHISTORYSTOCKID uniqueidentifier;
declare @ADJUSTMENTHISTORYSTOCKID uniqueidentifier;
declare @SALEAMOUNTCHANGED bit;
declare @BROKERFEECHANGED bit;
declare @NUMBEROFUNITSCHANGED bit;
declare @CONSTITUENTCHANGED bit;
declare @PAYMENTNUMBEROFUNITSCHANGED bit;
declare @PAYMENTMEDIANPRICECHANGED bit;
declare @BASERATECHANGED bit;
declare @ORGANIZATIONRATECHANGED bit;
declare @EDITINGADJUSTMENT bit;
if @CHANGEDATE is null
set @CHANGEDATE = getdate();
select @ADJUSTMENTCOUNT = count(ID)
from dbo.STOCKSALEADJUSTMENT
where STOCKSALEADJUSTMENT.STOCKSALEID = @STOCKSALEID;
select @ADJUSTMENTHISTORYSTOCKID = ID
from dbo.ADJUSTMENTHISTORYSTOCK
where STOCKSALEADJUSTMENTID = @STOCKSALEADJUSTMENTID
/*if this is a new adjustment, there will only be a header row (no details or distributions). Otherwise, it's an edit*/
if (select count(ID) from dbo.ADJUSTMENTHISTORYSTOCKDETAIL where ADJUSTMENTHISTORYSTOCKID = @ADJUSTMENTHISTORYSTOCKID) = 0
and (select count(ID) from dbo.ADJUSTMENTHISTORYSTOCKDISTRIBUTION where ADJUSTMENTHISTORYSTOCKID = @ADJUSTMENTHISTORYSTOCKID) = 0
set @EDITINGADJUSTMENT = 0;
else
set @EDITINGADJUSTMENT = 1;
/*delete the previous report information so we can recreate it*/
delete from ADJUSTMENTHISTORYSTOCKDETAIL where ADJUSTMENTHISTORYSTOCKID = @ADJUSTMENTHISTORYSTOCKID;
/*determine what changed by comparing the snapshot to the live data*/
if (select SALEAMOUNT from dbo.ADJUSTMENTHISTORYSTOCKSNAPSHOT where ID = @ADJUSTMENTHISTORYSTOCKID)
<> (select SALEAMOUNT from dbo.STOCKSALE where ID = @STOCKSALEID)
set @SALEAMOUNTCHANGED = 1;
else
set @SALEAMOUNTCHANGED = 0;
if (select BROKERFEE from dbo.ADJUSTMENTHISTORYSTOCKSNAPSHOT where ID = @ADJUSTMENTHISTORYSTOCKID)
<> (select FEE from dbo.STOCKSALE where ID = @STOCKSALEID)
set @BROKERFEECHANGED = 1;
else
set @BROKERFEECHANGED = 0;
if (select NUMBEROFUNITS from dbo.ADJUSTMENTHISTORYSTOCKSNAPSHOT where ID = @ADJUSTMENTHISTORYSTOCKID)
<> (select NUMBEROFUNITS from dbo.STOCKSALE where ID = @STOCKSALEID)
set @NUMBEROFUNITSCHANGED = 1;
else
set @NUMBEROFUNITSCHANGED = 0;
if (select CONSTITUENTIDENTIFIER from dbo.ADJUSTMENTHISTORYSTOCKSNAPSHOT where ID = @ADJUSTMENTHISTORYSTOCKID)
<> ( select REVENUE.CONSTITUENTID
from dbo.REVENUE
inner join dbo.REVENUEPAYMENTMETHOD on REVENUE.ID = REVENUEPAYMENTMETHOD.REVENUEID
inner join dbo.STOCKSALE on REVENUEPAYMENTMETHOD.ID = STOCKSALE.STOCKDETAILID
where STOCKSALE.ID = @STOCKSALEID)
set @CONSTITUENTCHANGED = 1;
else
set @CONSTITUENTCHANGED = 0;
if (select PAYMENTNUMBEROFUNITS from dbo.ADJUSTMENTHISTORYSTOCKSNAPSHOT where ID = @ADJUSTMENTHISTORYSTOCKID)
<> ( select STOCKDETAIL.NUMBEROFUNITS
from dbo.STOCKDETAIL
inner join dbo.STOCKSALE on STOCKDETAIL.ID = STOCKSALE.STOCKDETAILID
where STOCKSALE.ID = @STOCKSALEID)
set @PAYMENTNUMBEROFUNITSCHANGED = 1;
else
set @PAYMENTNUMBEROFUNITSCHANGED = 0;
if (select PAYMENTMEDIANPRICE from dbo.ADJUSTMENTHISTORYSTOCKSNAPSHOT where ID = @ADJUSTMENTHISTORYSTOCKID)
<> ( select STOCKDETAIL.MEDIANPRICE
from dbo.STOCKDETAIL
inner join dbo.STOCKSALE on STOCKDETAIL.ID = STOCKSALE.STOCKDETAILID
where STOCKSALE.ID = @STOCKSALEID)
set @PAYMENTMEDIANPRICECHANGED = 1;
else
set @PAYMENTMEDIANPRICECHANGED = 0;
if (select BASERATE from dbo.ADJUSTMENTHISTORYSTOCKSNAPSHOT where ID = @ADJUSTMENTHISTORYSTOCKID)
<> (select CURRENCYEXCHANGERATE.RATE from dbo.STOCKSALE left join dbo.CURRENCYEXCHANGERATE on CURRENCYEXCHANGERATE.ID = STOCKSALE.BASEEXCHANGERATEID where STOCKSALE.ID = @STOCKSALEID)
set @BASERATECHANGED = 1;
else
set @BASERATECHANGED = 0;
if (select ORGANIZATIONRATE from dbo.ADJUSTMENTHISTORYSTOCKSNAPSHOT where ID = @ADJUSTMENTHISTORYSTOCKID)
<> (select CURRENCYEXCHANGERATE.RATE from dbo.STOCKSALE left join dbo.CURRENCYEXCHANGERATE on CURRENCYEXCHANGERATE.ID = STOCKSALE.ORGANIZATIONEXCHANGERATEID where STOCKSALE.ID = @STOCKSALEID)
set @ORGANIZATIONRATECHANGED = 1;
else
set @ORGANIZATIONRATECHANGED = 0;
/*Log the detail for this adjustment*/
if @SALEAMOUNTCHANGED = 1
insert into dbo.ADJUSTMENTHISTORYSTOCKDETAIL(ADJUSTMENTHISTORYSTOCKID, ADJUSTEDFIELD, ADJUSTEDFIELDPREVIOUSVALUE, ADJUSTEDFIELDADJUSTEDVALUE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, ISMONEY, ADJUSTEDFIELDPREVIOUSMONEYVALUE, ADJUSTEDFIELDADJUSTEDMONEYVALUE, TRANSACTIONADJUSTEDFIELDPREVIOUSVALUE, TRANSACTIONADJUSTEDFIELDADJUSTEDVALUE, TRANSACTIONADJUSTEDFIELDPREVIOUSMONEYVALUE, TRANSACTIONADJUSTEDFIELDADJUSTEDMONEYVALUE, ORGANIZATIONADJUSTEDFIELDPREVIOUSVALUE, ORGANIZATIONADJUSTEDFIELDADJUSTEDVALUE, ORGANIZATIONADJUSTEDFIELDPREVIOUSMONEYVALUE, ORGANIZATIONADJUSTEDFIELDADJUSTEDMONEYVALUE, BASECURRENCYID, TRANSACTIONCURRENCYID)
select
@ADJUSTMENTHISTORYSTOCKID,
'Sale amount',
[SNAP].SALEAMOUNT,
[REAL].SALEAMOUNT,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE,
1,
[SNAP].SALEAMOUNT,
[REAL].SALEAMOUNT,
[SNAP].TRANSACTIONSALEAMOUNT,
[REAL].TRANSACTIONSALEAMOUNT,
[SNAP].TRANSACTIONSALEAMOUNT,
[REAL].TRANSACTIONSALEAMOUNT,
[SNAP].ORGANIZATIONSALEAMOUNT,
[REAL].ORGANIZATIONSALEAMOUNT,
[SNAP].ORGANIZATIONSALEAMOUNT,
[REAL].ORGANIZATIONSALEAMOUNT,
[REAL].BASECURRENCYID,
[REAL].TRANSACTIONCURRENCYID
from dbo.ADJUSTMENTHISTORYSTOCKSNAPSHOT as [SNAP]
inner join dbo.STOCKSALE as [REAL] on [REAL].ID = @STOCKSALEID
where [SNAP].ID = @ADJUSTMENTHISTORYSTOCKID
if @BROKERFEECHANGED = 1
insert into dbo.ADJUSTMENTHISTORYSTOCKDETAIL(ADJUSTMENTHISTORYSTOCKID, ADJUSTEDFIELD, ADJUSTEDFIELDPREVIOUSVALUE, ADJUSTEDFIELDADJUSTEDVALUE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, ISMONEY, ADJUSTEDFIELDPREVIOUSMONEYVALUE, ADJUSTEDFIELDADJUSTEDMONEYVALUE, TRANSACTIONADJUSTEDFIELDPREVIOUSVALUE, TRANSACTIONADJUSTEDFIELDADJUSTEDVALUE, TRANSACTIONADJUSTEDFIELDPREVIOUSMONEYVALUE, TRANSACTIONADJUSTEDFIELDADJUSTEDMONEYVALUE, ORGANIZATIONADJUSTEDFIELDPREVIOUSVALUE, ORGANIZATIONADJUSTEDFIELDADJUSTEDVALUE, ORGANIZATIONADJUSTEDFIELDPREVIOUSMONEYVALUE, ORGANIZATIONADJUSTEDFIELDADJUSTEDMONEYVALUE, BASECURRENCYID, TRANSACTIONCURRENCYID)
select
@ADJUSTMENTHISTORYSTOCKID,
'Fees',
[SNAP].BROKERFEE,
[REAL].FEE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE,
1,
[SNAP].BROKERFEE,
[REAL].FEE,
[SNAP].TRANSACTIONBROKERFEE,
[REAL].TRANSACTIONFEE,
[SNAP].TRANSACTIONBROKERFEE,
[REAL].TRANSACTIONFEE,
[SNAP].ORGANIZATIONBROKERFEE,
[REAL].ORGANIZATIONFEE,
[SNAP].ORGANIZATIONBROKERFEE,
[REAL].ORGANIZATIONFEE,
[REAL].BASECURRENCYID,
[REAL].TRANSACTIONCURRENCYID
from dbo.ADJUSTMENTHISTORYSTOCKSNAPSHOT as [SNAP]
inner join dbo.STOCKSALE as [REAL] on [REAL].ID = @STOCKSALEID
where [SNAP].ID = @ADJUSTMENTHISTORYSTOCKID
if @NUMBEROFUNITSCHANGED = 1
insert into dbo.ADJUSTMENTHISTORYSTOCKDETAIL(ADJUSTMENTHISTORYSTOCKID, ADJUSTEDFIELD, ADJUSTEDFIELDPREVIOUSVALUE, ADJUSTEDFIELDADJUSTEDVALUE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, TRANSACTIONADJUSTEDFIELDPREVIOUSVALUE, TRANSACTIONADJUSTEDFIELDADJUSTEDVALUE, ORGANIZATIONADJUSTEDFIELDPREVIOUSVALUE, ORGANIZATIONADJUSTEDFIELDADJUSTEDVALUE)
select
@ADJUSTMENTHISTORYSTOCKID,
'Units sold',
[SNAP].NUMBEROFUNITS,
[REAL].NUMBEROFUNITS,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE,
[SNAP].NUMBEROFUNITS,
[REAL].NUMBEROFUNITS,
[SNAP].NUMBEROFUNITS,
[REAL].NUMBEROFUNITS
from dbo.ADJUSTMENTHISTORYSTOCKSNAPSHOT as [SNAP]
inner join dbo.STOCKSALE as [REAL] on [REAL].ID = @STOCKSALEID
where [SNAP].ID = @ADJUSTMENTHISTORYSTOCKID
if @CONSTITUENTCHANGED = 1
insert into dbo.ADJUSTMENTHISTORYSTOCKDETAIL(ADJUSTMENTHISTORYSTOCKID, ADJUSTEDFIELD, ADJUSTEDFIELDPREVIOUSVALUE, ADJUSTEDFIELDADJUSTEDVALUE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, TRANSACTIONADJUSTEDFIELDPREVIOUSVALUE, TRANSACTIONADJUSTEDFIELDADJUSTEDVALUE, ORGANIZATIONADJUSTEDFIELDPREVIOUSVALUE, ORGANIZATIONADJUSTEDFIELDADJUSTEDVALUE)
select
@ADJUSTMENTHISTORYSTOCKID,
'Constituent',
dbo.UFN_CONSTITUENT_BUILDNAME([SNAP].CONSTITUENTIDENTIFIER),
dbo.UFN_CONSTITUENT_BUILDNAME(REVENUE.CONSTITUENTID),
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE,
dbo.UFN_CONSTITUENT_BUILDNAME([SNAP].CONSTITUENTIDENTIFIER),
dbo.UFN_CONSTITUENT_BUILDNAME(REVENUE.CONSTITUENTID),
dbo.UFN_CONSTITUENT_BUILDNAME([SNAP].CONSTITUENTIDENTIFIER),
dbo.UFN_CONSTITUENT_BUILDNAME(REVENUE.CONSTITUENTID)
from dbo.ADJUSTMENTHISTORYSTOCKSNAPSHOT as [SNAP]
inner join dbo.STOCKSALE as [REAL] on [REAL].ID = @STOCKSALEID
inner join dbo.REVENUEPAYMENTMETHOD on [REAL].ID = REVENUEPAYMENTMETHOD.ID
inner join dbo.REVENUE on REVENUEPAYMENTMETHOD.REVENUEID = REVENUE.ID
where [SNAP].ID = @ADJUSTMENTHISTORYSTOCKID
if @PAYMENTNUMBEROFUNITSCHANGED = 1
insert into dbo.ADJUSTMENTHISTORYSTOCKDETAIL(ADJUSTMENTHISTORYSTOCKID, ADJUSTEDFIELD, ADJUSTEDFIELDPREVIOUSVALUE, ADJUSTEDFIELDADJUSTEDVALUE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, TRANSACTIONADJUSTEDFIELDPREVIOUSVALUE, TRANSACTIONADJUSTEDFIELDADJUSTEDVALUE, ORGANIZATIONADJUSTEDFIELDPREVIOUSVALUE, ORGANIZATIONADJUSTEDFIELDADJUSTEDVALUE)
select
@ADJUSTMENTHISTORYSTOCKID,
'Payment''s number of units',
[SNAP].PAYMENTNUMBEROFUNITS,
[REAL].NUMBEROFUNITS,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE,
[SNAP].PAYMENTNUMBEROFUNITS,
[REAL].NUMBEROFUNITS,
[SNAP].PAYMENTNUMBEROFUNITS,
[REAL].NUMBEROFUNITS
from dbo.ADJUSTMENTHISTORYSTOCKSNAPSHOT as [SNAP]
inner join dbo.STOCKSALE on STOCKSALE.ID = @STOCKSALEID
inner join dbo.STOCKDETAIL as [REAL] on STOCKSALE.STOCKDETAILID = [REAL].ID
where [SNAP].ID = @ADJUSTMENTHISTORYSTOCKID
if @PAYMENTMEDIANPRICECHANGED = 1
insert into dbo.ADJUSTMENTHISTORYSTOCKDETAIL(ADJUSTMENTHISTORYSTOCKID, ADJUSTEDFIELD, ADJUSTEDFIELDPREVIOUSVALUE, ADJUSTEDFIELDADJUSTEDVALUE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, ISMONEY, ADJUSTEDFIELDPREVIOUSMONEYVALUE, ADJUSTEDFIELDADJUSTEDMONEYVALUE, TRANSACTIONADJUSTEDFIELDPREVIOUSVALUE, TRANSACTIONADJUSTEDFIELDADJUSTEDVALUE, TRANSACTIONADJUSTEDFIELDPREVIOUSMONEYVALUE, TRANSACTIONADJUSTEDFIELDADJUSTEDMONEYVALUE, ORGANIZATIONADJUSTEDFIELDPREVIOUSVALUE, ORGANIZATIONADJUSTEDFIELDADJUSTEDVALUE, ORGANIZATIONADJUSTEDFIELDPREVIOUSMONEYVALUE, ORGANIZATIONADJUSTEDFIELDADJUSTEDMONEYVALUE, BASECURRENCYID, TRANSACTIONCURRENCYID)
select
@ADJUSTMENTHISTORYSTOCKID,
'Payment''s median price',
[SNAP].PAYMENTMEDIANPRICE,
[REAL].MEDIANPRICE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE,
1,
[SNAP].PAYMENTMEDIANPRICE,
[REAL].MEDIANPRICE,
[SNAP].TRANSACTIONPAYMENTMEDIANPRICE,
[REAL].TRANSACTIONMEDIANPRICE,
[SNAP].TRANSACTIONPAYMENTMEDIANPRICE,
[REAL].TRANSACTIONMEDIANPRICE,
[SNAP].ORGANIZATIONPAYMENTMEDIANPRICE,
[REAL].ORGANIZATIONMEDIANPRICE,
[SNAP].ORGANIZATIONPAYMENTMEDIANPRICE,
[REAL].ORGANIZATIONMEDIANPRICE,
[REAL].BASECURRENCYID,
[REAL].TRANSACTIONCURRENCYID
from dbo.ADJUSTMENTHISTORYSTOCKSNAPSHOT as [SNAP]
inner join dbo.STOCKSALE on STOCKSALE.ID = @STOCKSALEID
inner join dbo.STOCKDETAIL as [REAL] on STOCKSALE.STOCKDETAILID = [REAL].ID
where [SNAP].ID = @ADJUSTMENTHISTORYSTOCKID
/*Record the GL reversal and adjustment information*/
if @EDITINGADJUSTMENT = 0 /*if this is a new adjustment, store the reversal that will take place*/
begin
insert into dbo.ADJUSTMENTHISTORYSTOCKDISTRIBUTION(ADJUSTMENTHISTORYSTOCKID, TYPECODE, TRANSACTIONTYPECODE, ACCOUNT, PROJECT, REFERENCE, AMOUNT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, TRANSACTIONAMOUNT, ORGANIZATIONAMOUNT, BASECURRENCYID, TRANSACTIONCURRENCYID)
select
@ADJUSTMENTHISTORYSTOCKID,
0, /*Reversal*/
TRANSACTIONTYPECODE,
ACCOUNT,
PROJECT,
REFERENCE,
AMOUNT,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE,
TRANSACTIONAMOUNT,
ORGANIZATIONAMOUNT,
BASECURRENCYID,
TRANSACTIONCURRENCYID
from dbo.ADJUSTMENTHISTORYSTOCKDISTRIBUTIONSNAPSHOT
where ADJUSTMENTHISTORYSTOCKID = @ADJUSTMENTHISTORYSTOCKID;
end
if @BASERATECHANGED = 1
begin
declare @OLDBASERATE decimal(20,8);
select @OLDBASERATE = CURRENCYEXCHANGERATE.RATE
from dbo.STOCKSALE
left join dbo.CURRENCYEXCHANGERATE on CURRENCYEXCHANGERATE.ID = STOCKSALE.BASEEXCHANGERATEID
where STOCKSALE.ID = @STOCKSALEID
insert into dbo.ADJUSTMENTHISTORYSTOCKDETAIL(ADJUSTMENTHISTORYSTOCKID, ADJUSTEDFIELD, ADJUSTEDFIELDPREVIOUSVALUE, ADJUSTEDFIELDADJUSTEDVALUE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, TRANSACTIONADJUSTEDFIELDPREVIOUSVALUE, TRANSACTIONADJUSTEDFIELDADJUSTEDVALUE, ORGANIZATIONADJUSTEDFIELDPREVIOUSVALUE, ORGANIZATIONADJUSTEDFIELDADJUSTEDVALUE)
select
@ADJUSTMENTHISTORYSTOCKID,
'Base exchange rate',
ADJUSTMENTHISTORYSTOCKSNAPSHOT.BASERATE,
@OLDBASERATE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE,
ADJUSTMENTHISTORYSTOCKSNAPSHOT.BASERATE,
@OLDBASERATE,
ADJUSTMENTHISTORYSTOCKSNAPSHOT.BASERATE,
@OLDBASERATE
from dbo.ADJUSTMENTHISTORYSTOCKSNAPSHOT
where ID = @ADJUSTMENTHISTORYSTOCKID;
end
if @ORGANIZATIONRATECHANGED = 1
begin
declare @OLDORGANIZATIONRATE decimal(20,8);
select @OLDORGANIZATIONRATE = CURRENCYEXCHANGERATE.RATE
from dbo.STOCKSALE
left join dbo.CURRENCYEXCHANGERATE on CURRENCYEXCHANGERATE.ID = STOCKSALE.ORGANIZATIONEXCHANGERATEID
where STOCKSALE.ID = @STOCKSALEID
insert into dbo.ADJUSTMENTHISTORYSTOCKDETAIL(ADJUSTMENTHISTORYSTOCKID, ADJUSTEDFIELD, ADJUSTEDFIELDPREVIOUSVALUE, ADJUSTEDFIELDADJUSTEDVALUE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, TRANSACTIONADJUSTEDFIELDPREVIOUSVALUE, TRANSACTIONADJUSTEDFIELDADJUSTEDVALUE, ORGANIZATIONADJUSTEDFIELDPREVIOUSVALUE, ORGANIZATIONADJUSTEDFIELDADJUSTEDVALUE)
select
@ADJUSTMENTHISTORYSTOCKID,
'Organization exchange rate',
ADJUSTMENTHISTORYSTOCKSNAPSHOT.ORGANIZATIONRATE,
@OLDORGANIZATIONRATE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE,
ADJUSTMENTHISTORYSTOCKSNAPSHOT.ORGANIZATIONRATE,
@OLDORGANIZATIONRATE,
ADJUSTMENTHISTORYSTOCKSNAPSHOT.ORGANIZATIONRATE,
@OLDORGANIZATIONRATE
from dbo.ADJUSTMENTHISTORYSTOCKSNAPSHOT
where ID = @ADJUSTMENTHISTORYSTOCKID;
end
if @ADJUSTMENTCOUNT > 1 /*if this is not the first adjustment, we need to copy our reversal information to be the adjustment information for the last adjustment */
begin
select top 1
@PREVIOUSSTOCKSALEADJUSTMENTID = ID
from dbo.STOCKSALEADJUSTMENT
where
STOCKSALEID = @STOCKSALEID and
ID <> @STOCKSALEADJUSTMENTID
order by TSLONG desc;
/*If there is a previous adjustment, write the same reversal as the "adjusted" portion of the previous adjustment */
if not @PREVIOUSSTOCKSALEADJUSTMENTID is null
begin
select
@PREVIOUSADJUSTMENTHISTORYSTOCKID = ID
from dbo.ADJUSTMENTHISTORYSTOCK
where STOCKSALEADJUSTMENTID = @PREVIOUSSTOCKSALEADJUSTMENTID;
if @PREVIOUSADJUSTMENTHISTORYSTOCKID is not null
begin
/*first, delete the previous adjustment record*/
delete from dbo.ADJUSTMENTHISTORYSTOCKDISTRIBUTION where ADJUSTMENTHISTORYSTOCKID = @PREVIOUSADJUSTMENTHISTORYSTOCKID and TYPECODE = 1;
/*then insert the updated ones*/
insert into dbo.ADJUSTMENTHISTORYSTOCKDISTRIBUTION(ADJUSTMENTHISTORYSTOCKID, TYPECODE, TRANSACTIONTYPECODE, ACCOUNT, PROJECT, REFERENCE, AMOUNT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, TRANSACTIONAMOUNT, ORGANIZATIONAMOUNT, BASECURRENCYID, TRANSACTIONCURRENCYID)
select
@PREVIOUSADJUSTMENTHISTORYSTOCKID,
1, /*Adjustment*/
TRANSACTIONTYPECODE,
ACCOUNT,
PROJECT,
REFERENCE,
AMOUNT,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE,
TRANSACTIONAMOUNT,
ORGANIZATIONAMOUNT,
BASECURRENCYID,
TRANSACTIONCURRENCYID
from dbo.ADJUSTMENTHISTORYSTOCKDISTRIBUTIONSNAPSHOT
where ADJUSTMENTHISTORYSTOCKID = @ADJUSTMENTHISTORYSTOCKID;
end
end
end