USP_DATAFORMTEMPLATE_EDIT_ADJUSTPROPERTYDETAILGLDISTRIBUTIONBYTRANSACTION
The save procedure used by the edit dataform template "Posted Sold Property GL Distribution By Transaction Edit 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 Property 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_EDIT_ADJUSTPROPERTYDETAILGLDISTRIBUTIONBYTRANSACTION
(
@ID uniqueidentifier,
@GLDISTRIBUTION xml,
@ADJUSTMENTDATE datetime,
@ADJUSTMENTPOSTDATE datetime,
@ADJUSTMENTREASON nvarchar(300),
@CHANGEAGENTID uniqueidentifier = null
)
as
set nocount on;
declare @ADJUST bit;
set @ADJUST = 0;
declare @ADJUSTMENTEXISTS bit;
set @ADJUSTMENTEXISTS = 0;
declare @CHANGEDATE datetime;
set @CHANGEDATE = getdate();
declare @PROPERTYDETAILADJUSTMENTID uniqueidentifier;
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 (select COUNT(ADJUSTMENT.ID)
from dbo.PROPERTYDETAILADJUSTMENT as ADJUSTMENT
where PROPERTYDETAILID = @ID and POSTSTATUSCODE = 1) > 0
begin
set @ADJUST = 1;
set @ADJUSTMENTEXISTS = 1;
end
/* Distributions Changed */
if @ADJUST = 0
set @ADJUST = dbo.UFN_PROPERTYDETAIL_DISTRIBUTIONCHANGED(@ID, @GLDISTRIBUTION)
/* If there was a change to GL related data log an adjustment */
if @ADJUST = 1
begin
set @PROPERTYDETAILADJUSTMENTID = null;
exec dbo.USP_SAVE_PROPERTYDETAILADJUSTMENT @ID, @PROPERTYDETAILADJUSTMENTID output, @CHANGEAGENTID, @CHANGEDATE, @ADJUSTMENTDATE, @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASON;
end
-- If user hasn't entered anything in the grid we will assume that user
-- wants to use system-generated values for Post to GL and delete any previous entries
--if (select count(*) FROM dbo.UFN_REVENUETRANSACTION_GETPROPERTYDETAILGLDISTRIBUTION_FROMITEMLISTXML(@GLDISTRIBUTION)) = 0
-- begin
-- delete dbo.PROPERTYDETAILGLDISTRIBUTION from dbo.PROPERTYDETAILGLDISTRIBUTION
-- where PROPERTYDETAILGLDISTRIBUTION.PROPERTYDETAILID = @ID;
-- return 0;
-- end
-- If an unposted adjustment already exists, update the property detail GL distribution rows.
-- Otherwise, insert new property detail gl distribution rows using @GLDISTRIBUTION.
if @ADJUSTMENTEXISTS = 1
begin
exec dbo.USP_REVENUE_GETPROPERTYDETAILGLDISTRIBUTION_CUSTOMUPDATEFROMXML @ID, @GLDISTRIBUTION, @ADJUSTMENTPOSTDATE, @CHANGEAGENTID;
end
else
begin
declare @JOURNAL nvarchar(50);
set @JOURNAL = 'Blackbaud Enterprise';
set @CHANGEDATE = getdate();
declare @REVENUEID uniqueidentifier;
select @REVENUEID = REVENUEID from dbo.REVENUEPAYMENTMETHOD where 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 property detail record.
insert into @DISTRIBUTIONS(GLTRANSACTIONID, ACCOUNT, AMOUNT, PROJECT, REFERENCE, TRANSACTIONTYPECODE, GLPAYMENTMETHODREVENUETYPEMAPPINGID)
select
newid(),
PROPERTYDISTRIBUTIONS.ACCOUNT,
PROPERTYDISTRIBUTIONS.AMOUNT,
PROPERTYDISTRIBUTIONS.PROJECT,
PROPERTYDISTRIBUTIONS.REFERENCE,
PROPERTYDISTRIBUTIONS.TRANSACTIONTYPECODE,
PROPERTYDISTRIBUTIONS.GLPAYMENTMETHODREVENUETYPEMAPPINGID
from
dbo.UFN_REVENUE_GETPROPERTYDETAILGLDISTRIBUTION_FROMITEMLISTXML(@GLDISTRIBUTION) PROPERTYDISTRIBUTIONS
-- 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.PROPERTYDETAILGLDISTRIBUTION
(ID,GLTRANSACTIONID,PROPERTYDETAILID,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_PROPERTY_SAVEHISTORY @ID, @CHANGEAGENTID, null, @PROPERTYDETAILADJUSTMENTID;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;