USP_DATAFORMTEMPLATE_ADJUST_STOCKSALEGLDISTRIBUTION
The save procedure used by the edit dataform template "Stock Sale GL Distribution Adjust Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter indicating the ID of the record being edited. |
@GLDISTRIBUTION | xml | IN | Sold Stock GL distribution |
@ADJUSTMENTDATE | datetime | IN | Adjusted Date |
@ADJUSTMENTPOSTDATE | datetime | IN | Adjusted Post Date |
@ADJUSTMENTREASON | nvarchar(300) | IN | Adjustment reason |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADJUST_STOCKSALEGLDISTRIBUTION
(
@ID uniqueidentifier,
@GLDISTRIBUTION xml,
@ADJUSTMENTDATE datetime,
@ADJUSTMENTPOSTDATE datetime,
@ADJUSTMENTREASON nvarchar(300),
@CHANGEAGENTID uniqueidentifier = null
)
as
set nocount on;
declare @ADJUST bit;
declare @ADJUSTMENTEXISTS bit;
declare @STOCKSALEADJUSTMENTID uniqueidentifier;
set @ADJUST = 0;
set @ADJUSTMENTEXISTS = 0;
declare @CHANGEDATE datetime;
set @CHANGEDATE = getdate();
begin try
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
if (dbo.UFN_GLDISTRIBUTION_DEBITSEQUALCREDITS(@GLDISTRIBUTION) = 0)
raiserror('The sum of the debit accounts must equal the sum of the credit accounts.', 13, 1)
/* Already adjusted */
if exists ( select 1
from dbo.STOCKSALEADJUSTMENT as ADJUSTMENT
where STOCKSALEID = @ID and POSTSTATUSCODE = 1)
begin
set @ADJUST = 1;
set @ADJUSTMENTEXISTS = 1;
end
/* Distributions Changed */
if @ADJUST = 0
set @ADJUST = dbo.UFN_STOCKDETAIL_DISTRIBUTIONCHANGED(@ID, @GLDISTRIBUTION)
/* If there was a change to GL related data log an adjustment */
if @ADJUST = 1
begin
set @STOCKSALEADJUSTMENTID = null;
exec dbo.USP_SAVE_STOCKSALEADJUSTMENT @ID, @STOCKSALEADJUSTMENTID output, @CHANGEAGENTID, @CHANGEDATE, @ADJUSTMENTDATE, @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASON;
end
declare @POSTDATE datetime;
select @POSTDATE = SALEPOSTDATE from dbo.STOCKSALE where ID = @ID;
-- If an unposted adjustment already exists, update the stock sale GL distribution rows.
-- Otherwise, insert new stock sale gl distribution rows using @GLDISTRIBUTION.
if @ADJUSTMENTEXISTS = 1
begin
exec dbo.USP_REVENUE_GETSTOCKSALEGLDISTRIBUTION_CUSTOMUPDATEFROMXML @ID, @GLDISTRIBUTION, @POSTDATE, @CHANGEAGENTID;
end
else
begin
declare @JOURNAL nvarchar(50);
set @JOURNAL = 'Blackbaud Enterprise';
declare @REVENUEID uniqueidentifier;
select @REVENUEID = REVENUEPAYMENTMETHOD.REVENUEID
from dbo.STOCKSALE
inner join REVENUEPAYMENTMETHOD on STOCKSALE.STOCKDETAILID = REVENUEPAYMENTMETHOD.ID
where STOCKSALE.ID = @ID
declare @DISTRIBUTIONS table(
GLTRANSACTIONID uniqueidentifier,
ACCOUNT nvarchar(100),
AMOUNT money,
PROJECT nvarchar(100),
REFERENCE nvarchar(255),
TRANSACTIONTYPECODE tinyint,
GLPAYMENTMETHODREVENUETYPEMAPPINGID uniqueidentifier
);
-- Get the user-defined GL distributions for the stock detail record.
insert into @DISTRIBUTIONS(GLTRANSACTIONID, ACCOUNT, AMOUNT, PROJECT, REFERENCE, TRANSACTIONTYPECODE, GLPAYMENTMETHODREVENUETYPEMAPPINGID)
select
newid(),
STOCKDISTRIBUTIONS.ACCOUNT,
STOCKDISTRIBUTIONS.AMOUNT,
STOCKDISTRIBUTIONS.PROJECT,
STOCKDISTRIBUTIONS.REFERENCE,
STOCKDISTRIBUTIONS.TRANSACTIONTYPECODE,
STOCKDISTRIBUTIONS.GLPAYMENTMETHODREVENUETYPEMAPPINGID
from
dbo.UFN_REVENUE_GETSTOCKSALEGLDISTRIBUTION_FROMITEMLISTXML(@GLDISTRIBUTION) STOCKDISTRIBUTIONS;
-- Insert rows in GLTRANSACTION table
insert into dbo.GLTRANSACTION(ID, TRANSACTIONTYPECODE, ACCOUNT, AMOUNT, PROJECT, REFERENCE, POSTDATE, JOURNAL, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select
GLTRANSACTIONID,
TRANSACTIONTYPECODE,
ACCOUNT,
AMOUNT,
PROJECT,
REFERENCE,
@ADJUSTMENTPOSTDATE,
@JOURNAL,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
from
@DISTRIBUTIONS;
insert into dbo.STOCKSALEGLDISTRIBUTION
(ID,GLTRANSACTIONID,STOCKSALEID,REVENUEID,GLPAYMENTMETHODREVENUETYPEMAPPINGID,PROJECT,REFERENCE,AMOUNT,ACCOUNT,TRANSACTIONTYPECODE,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
select
newid(),
GLTRANSACTIONID,
@ID,
@REVENUEID,
GLPAYMENTMETHODREVENUETYPEMAPPINGID,
PROJECT,
REFERENCE,
AMOUNT,
ACCOUNT,
TRANSACTIONTYPECODE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
from
@DISTRIBUTIONS;
end
if @ADJUST = 1
exec dbo.USP_ADJUSTMENTHISTORY_STOCKSALE_SAVEHISTORY @ID, @CHANGEAGENTID, @CHANGEDATE, @STOCKSALEADJUSTMENTID;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;