USP_DATAFORMTEMPLATE_EDIT_TRANSACTIONSELLPROPERTY_2
The save procedure used by the edit dataform template "Revenue Transaction Sell Property Edit Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter indicating the ID of the record being edited. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@SALEDATE | datetime | IN | Date of sale |
@SALEAMOUNT | money | IN | Sale amount |
@BROKERFEE | money | IN | Fees |
@POSTSTATUSCODE | tinyint | IN | GL post status |
@POSTDATE | datetime | IN | GL post date |
@BASEEXCHANGERATEID | uniqueidentifier | IN | Exchange rate ID |
@EXCHANGERATE | decimal(20, 8) | IN | Exchange rate |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_TRANSACTIONSELLPROPERTY_2
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@SALEDATE datetime,
@SALEAMOUNT money,
@BROKERFEE money,
@POSTSTATUSCODE tinyint,
@POSTDATE datetime,
@BASEEXCHANGERATEID uniqueidentifier,
@EXCHANGERATE decimal(20,8),
@CURRENTAPPUSERID uniqueidentifier = null
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @REVENUEPAYMETHODID uniqueidentifier;
declare @PAYMENTMETHODCODE tinyint;
declare @UPDATEDISTRIBUTIONS bit;
declare @DATE datetime
set @DATE = getdate()
begin try
-- Check GL business rule for this account system and set to 'Do not post' if needed.
declare @PDACCOUNTSYSTEMID uniqueidentifier;
select @PDACCOUNTSYSTEMID = PDACCOUNTSYSTEMID from dbo.PDACCOUNTSYSTEMFORREVENUE where ID = @ID;
if dbo.UFN_PDACCOUNTSYSTEM_ALLOWGLDISTRIBUTIONS(@PDACCOUNTSYSTEMID) = 0
begin
set @POSTSTATUSCODE = 2; -- Do not post
set @POSTDATE = null;
end;
if @POSTSTATUSCODE <> 2 and (select top 1 DONOTPOST from dbo.REVENUE where ID = @ID) = 1
begin
raiserror('BBERR_TRANSACTIONDONOTPOSTSALEPOST', 13, 1);
return 1;
end
declare
@ORGANIZATIONSALEAMOUNT money,
@ORGANIZATIONBROKERFEE money,
@BASESALEAMOUNT money,
@BASEBROKERFEE money,
@BASECURRENCYID uniqueidentifier,
@ORGANIZATIONEXCHANGERATEID uniqueidentifier,
@TRANSACTIONCURRENCYID uniqueidentifier,
@ORGANIZATIONCURRENCYID uniqueidentifier;
declare @OLDSPOTRATEID uniqueidentifier;
select
@TRANSACTIONCURRENCYID = PROPERTYDETAIL.TRANSACTIONCURRENCYID,
@BASECURRENCYID = PROPERTYDETAIL.BASECURRENCYID,
@OLDSPOTRATEID =
case
when CURRENCYEXCHANGERATE.TYPECODE = 2
and not (
@BASEEXCHANGERATEID = CURRENCYEXCHANGERATE.ID
or (
@BASEEXCHANGERATEID = '00000000-0000-0000-0000-000000000001'
and @EXCHANGERATE = CURRENCYEXCHANGERATE.RATE
)
)
then CURRENCYEXCHANGERATE.ID
else null
end
from
dbo.[REVENUE]
inner join dbo.[REVENUEPAYMENTMETHOD] on [REVENUEPAYMENTMETHOD].REVENUEID = REVENUE.ID
inner join dbo.[PROPERTYDETAIL] on REVENUEPAYMENTMETHOD.ID = PROPERTYDETAIL.ID
left join dbo.CURRENCYEXCHANGERATE on PROPERTYDETAIL.BASEEXCHANGERATEID = CURRENCYEXCHANGERATE.ID
where
[REVENUE].[ID] = @ID;
--If the record uses a new spot rate, create it and set the rate ID.
if @BASEEXCHANGERATEID = '00000000-0000-0000-0000-000000000001'
begin
set @BASEEXCHANGERATEID = newid();
--Replace with call to USP_CURRENCYEXCHANGERATE_ENSURESPOTRATEEXISTS for PBI 102747 in the future
/*if not dbo.UFN_SECURITY_APPUSER_GRANTED_SYSTEMPRIVILEGE_IN_SYSTEMROLE(@CURRENTAPPUSERID,'911f104d-ba5f-4469-b0ae-184c879aea99') = 1
and not dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1
begin
raiserror('User does not have the right to add a new spot rate.', 13, 1);
return 1;
end*/
insert into dbo.CURRENCYEXCHANGERATE
(
ID,
FROMCURRENCYID,
TOCURRENCYID,
RATE,
ASOFDATE,
TYPECODE,
SOURCECODEID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values
(
@BASEEXCHANGERATEID,
@TRANSACTIONCURRENCYID,
@BASECURRENCYID,
@EXCHANGERATE,
@SALEDATE,
2,
null,
@CHANGEAGENTID,
@CHANGEAGENTID,
@DATE,
@DATE
);
end
exec dbo.USP_CURRENCY_GETCURRENCYVALUES @SALEAMOUNT, @SALEDATE, @BASECURRENCYID, @BASEEXCHANGERATEID, @TRANSACTIONCURRENCYID, @BASESALEAMOUNT output, @ORGANIZATIONCURRENCYID output, @ORGANIZATIONSALEAMOUNT output, @ORGANIZATIONEXCHANGERATEID output, 1; --Get an organization currency and exchange rate on the first call
exec dbo.USP_CURRENCY_GETCURRENCYVALUES @BROKERFEE, @SALEDATE, @BASECURRENCYID, @BASEEXCHANGERATEID, @TRANSACTIONCURRENCYID, @BASEBROKERFEE output, @ORGANIZATIONCURRENCYID, @ORGANIZATIONBROKERFEE output, @ORGANIZATIONEXCHANGERATEID, 0;
select top 1
@REVENUEPAYMETHODID = ID,
@PAYMENTMETHODCODE=PAYMENTMETHODCODE
from REVENUEPAYMENTMETHOD where REVENUEID = @ID;
if exists (select top 1 ID from dbo.PROPERTYDETAIL where ID = @REVENUEPAYMETHODID and SALEPOSTSTATUSCODE = 0)
raiserror('This information has been posted and cannot be edited.', 13, 1);
-- check to see if sale amounts, broker fees, post date, post status, or exchange rates have changed
if exists (
select 1
from dbo.PROPERTYDETAIL
where PROPERTYDETAIL.ID = @REVENUEPAYMETHODID
and (
PROPERTYDETAIL.TRANSACTIONSALEAMOUNT <> @SALEAMOUNT
or PROPERTYDETAIL.TRANSACTIONBROKERFEE <> @BROKERFEE
or @POSTSTATUSCODE <> PROPERTYDETAIL.SALEPOSTSTATUSCODE
or @POSTDATE <> PROPERTYDETAIL.SALEPOSTDATE
or PROPERTYDETAIL.SALEDATE is null
or PROPERTYDETAIL.SALEAMOUNT <> @BASESALEAMOUNT
or PROPERTYDETAIL.BROKERFEE <> @BASEBROKERFEE
or PROPERTYDETAIL.ORGANIZATIONSALEAMOUNT <> @ORGANIZATIONSALEAMOUNT
or PROPERTYDETAIL.ORGANIZATIONBROKERFEE <> @ORGANIZATIONBROKERFEE
or PROPERTYDETAIL.BASEEXCHANGERATEID <> @BASEEXCHANGERATEID
or PROPERTYDETAIL.ORGANIZATIONEXCHANGERATEID <> @ORGANIZATIONEXCHANGERATEID
)
)
begin
set @UPDATEDISTRIBUTIONS = 1;
end
update dbo.[PROPERTYDETAIL] set
[SALEDATE] = @SALEDATE,
[SALEAMOUNT] = @BASESALEAMOUNT,
[BROKERFEE] = @BASEBROKERFEE,
[SALEPOSTSTATUSCODE] = @POSTSTATUSCODE,
[SALEPOSTDATE] = @POSTDATE,
[ADDEDBYID] = @CHANGEAGENTID,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATEADDED] = @DATE,
[DATECHANGED] = @DATE,
ORGANIZATIONSALEAMOUNT = @ORGANIZATIONSALEAMOUNT,
ORGANIZATIONBROKERFEE = @ORGANIZATIONBROKERFEE,
TRANSACTIONSALEAMOUNT = @SALEAMOUNT,
TRANSACTIONBROKERFEE = @BROKERFEE,
BASEEXCHANGERATEID = @BASEEXCHANGERATEID,
ORGANIZATIONEXCHANGERATEID = @ORGANIZATIONEXCHANGERATEID
where
[PROPERTYDETAIL].[ID] = @REVENUEPAYMETHODID;
if @UPDATEDISTRIBUTIONS = 1
begin
--Clear GL
--Cache CONTEXT INFO
declare @contextCache varbinary(128);
set @contextCache = CONTEXT_INFO();
if not @CHANGEAGENTID is null
set CONTEXT_INFO @CHANGEAGENTID;
delete from dbo.PROPERTYDETAILGLDISTRIBUTION where PROPERTYDETAILID = @REVENUEPAYMETHODID and OUTDATED = 0;
-- Add new property detail GL distributions
if @POSTSTATUSCODE <> 2
exec dbo.USP_SAVE_PROPERTYDETAILGLDISTRIBUTION @ID, @CHANGEAGENTID, @DATE;
--Restore CONTEXT_INFO
if not @contextCache is null
set CONTEXT_INFO @contextCache;
end
if @OLDSPOTRATEID is not null and not exists (select 1 from dbo.REVENUE R where R.ID = @ID and R.BASEEXCHANGERATEID = @OLDSPOTRATEID)
begin
exec dbo.USP_CURRENCYEXCHANGERATE_DELETEBYID_WITHCHANGEAGENTID @OLDSPOTRATEID, @CHANGEAGENTID;
end
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0;