USP_REVENUE_ADDPAYMENTDETAILS
Stored proc to apply add payment details for a given revenue record
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@PAYMENTMETHODCODE | tinyint | IN | |
@CHECKDATE | UDT_FUZZYDATE | IN | |
@CHECKNUMBER | nvarchar(20) | IN | |
@CONSTITUENTACCOUNTID | uniqueidentifier | IN | |
@REFERENCEDATE | UDT_FUZZYDATE | IN | |
@REFERENCENUMBER | nvarchar(20) | IN | |
@CARDHOLDERNAME | nvarchar(255) | IN | |
@CREDITCARDNUMBER | nvarchar(4) | IN | |
@CREDITTYPECODEID | uniqueidentifier | IN | |
@AUTHORIZATIONCODE | nvarchar(20) | IN | |
@EXPIRESON | UDT_FUZZYDATE | IN | |
@ISSUER | nvarchar(100) | IN | |
@NUMBEROFUNITS | decimal(20, 3) | IN | |
@SYMBOL | nvarchar(25) | IN | |
@MEDIANPRICE | decimal(19, 4) | IN | |
@SALEDATE | datetime | IN | |
@SALEAMOUNT | money | IN | |
@BROKERFEE | money | IN | |
@SALEPOSTSTATUSCODE | tinyint | IN | |
@SALEPOSTDATE | datetime | IN | |
@PROPERTYSUBTYPECODEID | uniqueidentifier | IN | |
@GIFTINKINDSUBTYPECODEID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CURRENTDATE | datetime | IN | |
@KEYALREADYOPEN | bit | IN | |
@OTHERPAYMENTMETHODCODEID | uniqueidentifier | IN | |
@DIRECTDEBITRESULTCODE | nvarchar(10) | IN | |
@LOWPRICE | decimal(19, 4) | IN | |
@HIGHPRICE | decimal(19, 4) | IN | |
@NUMBEROFUNITSSOLD | decimal(20, 3) | IN | |
@USERMODIFIEDNUMBEROFUNITSSOLD | bit | IN | |
@TRANSACTIONID | uniqueidentifier | IN | |
@REVENUEAMOUNT | money | IN | |
@GIFTINKINDITEMNAME | nvarchar(100) | IN | |
@GIFTINKINDDISPOSITIONCODE | tinyint | IN | |
@GIFTINKINDNUMBEROFUNITS | int | IN | |
@GIFTINKINDFAIRMARKETVALUE | money | IN | |
@DIRECTDEBITISREJECTED | bit | IN | |
@BASECURRENCYID | uniqueidentifier | IN | |
@TRANSACTIONCURRENCYID | uniqueidentifier | IN | |
@BASEEXCHANGERATEID | uniqueidentifier | IN | |
@MERCHANTACCOUNTID | uniqueidentifier | IN | |
@SALE_LOWPRICE | decimal(19, 4) | IN | |
@SALE_MEDIANPRICE | decimal(19, 4) | IN | |
@SALE_HIGHPRICE | decimal(19, 4) | IN | |
@VENDORID | nvarchar(50) | IN | |
@SEPAMANDATEID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_REVENUE_ADDPAYMENTDETAILS
(
@ID uniqueidentifier,
@PAYMENTMETHODCODE tinyint,
@CHECKDATE dbo.UDT_FUZZYDATE = '00000000',
@CHECKNUMBER nvarchar(20) = '',
@CONSTITUENTACCOUNTID uniqueidentifier = null,
@REFERENCEDATE dbo.UDT_FUZZYDATE = '00000000',
@REFERENCENUMBER nvarchar(20) = '',
@CARDHOLDERNAME nvarchar(255) = '',
@CREDITCARDNUMBER nvarchar(4) = '',
@CREDITTYPECODEID uniqueidentifier = null,
@AUTHORIZATIONCODE nvarchar(20) = '',
@EXPIRESON dbo.UDT_FUZZYDATE = '00000000',
@ISSUER nvarchar(100) = '',
@NUMBEROFUNITS decimal(20,3) = 0,
@SYMBOL nvarchar(25) = '',
@MEDIANPRICE decimal(19,4) = 0,
@SALEDATE datetime = null,
@SALEAMOUNT money = null,
@BROKERFEE money = null,
@SALEPOSTSTATUSCODE tinyint = null,
@SALEPOSTDATE datetime = null,
@PROPERTYSUBTYPECODEID uniqueidentifier = null,
@GIFTINKINDSUBTYPECODEID uniqueidentifier = null,
@CHANGEAGENTID uniqueidentifier,
@CURRENTDATE datetime,
@KEYALREADYOPEN bit = 0,
@OTHERPAYMENTMETHODCODEID uniqueidentifier = null,
@DIRECTDEBITRESULTCODE nvarchar(10) = '',
@LOWPRICE decimal(19,4) = null,
@HIGHPRICE decimal(19,4) = null,
@NUMBEROFUNITSSOLD decimal(20,3) = null,
@USERMODIFIEDNUMBEROFUNITSSOLD bit = null,
@TRANSACTIONID uniqueidentifier = null,
@REVENUEAMOUNT money = 0, -- Note that this and all other amounts should be passed in as transaction amounts.
@GIFTINKINDITEMNAME nvarchar(100) = '',
@GIFTINKINDDISPOSITIONCODE tinyint = 0,
@GIFTINKINDNUMBEROFUNITS int = 0,
@GIFTINKINDFAIRMARKETVALUE money = 0,
@DIRECTDEBITISREJECTED bit = 0,
@BASECURRENCYID uniqueidentifier = null,
@TRANSACTIONCURRENCYID uniqueidentifier = null,
@BASEEXCHANGERATEID uniqueidentifier = null,
@MERCHANTACCOUNTID uniqueidentifier = null,
@SALE_LOWPRICE decimal(19,4) = 0,
@SALE_MEDIANPRICE decimal(19,4) = 0,
@SALE_HIGHPRICE decimal(19,4) = 0,
@VENDORID nvarchar(50) = '',
@SEPAMANDATEID uniqueidentifier = null
)
as
set nocount on;
--Set currency parameters for backwards compatibility
if @TRANSACTIONCURRENCYID is null
set @TRANSACTIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
if @BASECURRENCYID is null
set @BASECURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
declare @REVENUEID uniqueidentifier
select @REVENUEID = REVENUEID
from dbo.REVENUEPAYMENTMETHOD where ID = @ID
declare @BASELOWPRICE decimal(19,4);
declare @BASEMEDIANPRICE decimal(19,4);
declare @BASEHIGHPRICE decimal(19,4);
declare @BASESALEAMOUNT money;
declare @BASEBROKERFEE money;
declare @BASEGIFTINKINDFAIRMARKETVALUE money;
declare @ORGANIZATIONLOWPRICE decimal(19,4);
declare @ORGANIZATIONMEDIANPRICE decimal(19,4);
declare @ORGANIZATIONHIGHPRICE decimal(19,4);
declare @ORGANIZATIONSALEAMOUNT money;
declare @ORGANIZATIONBROKERFEE money;
declare @ORGANIZATIONGIFTINKINDFAIRMARKETVALUE money;
declare @BASE_SALELOWPRICE decimal(19,4);
declare @BASE_SALEMEDIANPRICE decimal(19,4);
declare @BASE_SALEHIGHPRICE decimal(19,4);
declare @ORGANIZATION_SALELOWPRICE decimal(19,4);
declare @ORGANIZATION_SALEMEDIANPRICE decimal(19,4);
declare @ORGANIZATION_SALEHIGHPRICE decimal(19,4);
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
begin try
if @PAYMENTMETHODCODE = 0 -- Cash
insert into dbo.CASHPAYMENTMETHODDETAIL(ID, REFERENCEDATE, REFERENCENUMBER, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (@ID, @REFERENCEDATE, @REFERENCENUMBER, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
if @PAYMENTMETHODCODE = 1 -- Check
insert into dbo.CHECKPAYMENTMETHODDETAIL(ID, CHECKDATE, CHECKNUMBER, CONSTITUENTACCOUNTID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (@ID, @CHECKDATE, @CHECKNUMBER, @CONSTITUENTACCOUNTID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
if @PAYMENTMETHODCODE = 2 -- Credit Card
begin
insert into dbo.CREDITCARDPAYMENTMETHODDETAIL(ID, CARDHOLDERNAME, CREDITTYPECODEID, CREDITCARDPARTIALNUMBER, EXPIRESON, AUTHORIZATIONCODE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, TRANSACTIONID, MERCHANTACCOUNTID, VENDORID)
values (@ID, coalesce(@CARDHOLDERNAME, ''), @CREDITTYPECODEID, coalesce(@CREDITCARDNUMBER, ''), coalesce(@EXPIRESON, '00000000'), coalesce(@AUTHORIZATIONCODE, ''), @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE, @TRANSACTIONID, @MERCHANTACCOUNTID, isnull(@VENDORID, ''));
end
if @PAYMENTMETHODCODE = 3 -- Direct Debit
insert into dbo.DIRECTDEBITPAYMENTMETHODDETAIL(ID, REFERENCEDATE, REFERENCENUMBER, CONSTITUENTACCOUNTID, DIRECTDEBITRESULTCODE, ISREJECTED, SEPAMANDATEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (@ID, @REFERENCEDATE, @REFERENCENUMBER, @CONSTITUENTACCOUNTID, @DIRECTDEBITRESULTCODE, coalesce(@DIRECTDEBITISREJECTED, 0), @SEPAMANDATEID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
if @PAYMENTMETHODCODE = 4 --Stock
begin
-- Verify none of the price per share values are negative
if @LOWPRICE < 0
begin
raiserror('BBERR_LOWPRICEPERSHARENEGATIVE', 13, 1)
return 1
end
if @MEDIANPRICE < 0
begin
raiserror('BBERR_MEDIANPRICEPERSHARENEGATIVE', 13, 1)
return 1
end
if @HIGHPRICE < 0
begin
raiserror('BBERR_HIGHPRICEPERSHARENEGATIVE', 13, 1)
return 1
end
-- Get currency rounding information.
declare @DECIMALDIGITS tinyint;
select
@DECIMALDIGITS = DECIMALDIGITS
from dbo.UFN_CURRENCY_GETPROPERTIES(@TRANSACTIONCURRENCYID);
-- Convert amounts to base and organization amounts.
set @LOWPRICE = coalesce(@LOWPRICE, 0);
set @MEDIANPRICE = coalesce(@MEDIANPRICE, 0);
set @HIGHPRICE = coalesce(@HIGHPRICE, 0);
set @SALE_LOWPRICE = coalesce(@SALE_LOWPRICE, 0);
set @SALE_MEDIANPRICE = coalesce(@SALE_MEDIANPRICE, 0);
set @SALE_HIGHPRICE = coalesce(@SALE_HIGHPRICE, 0);
--exec dbo.USP_CURRENCY_GETCURRENCYVALUES @LOWPRICE, @CURRENTDATE, @BASECURRENCYID, @BASEEXCHANGERATEID output, @TRANSACTIONCURRENCYID output, @BASELOWPRICE output, default, @ORGANIZATIONLOWPRICE output, @ORGANIZATIONEXCHANGERATEID output, 1;
--exec dbo.USP_CURRENCY_GETCURRENCYVALUES @MEDIANPRICE, @CURRENTDATE, @BASECURRENCYID, @BASEEXCHANGERATEID output, @TRANSACTIONCURRENCYID output, @BASEMEDIANPRICE output, default, @ORGANIZATIONMEDIANPRICE output, @ORGANIZATIONEXCHANGERATEID output, 1;
--exec dbo.USP_CURRENCY_GETCURRENCYVALUES @HIGHPRICE, @CURRENTDATE, @BASECURRENCYID, @BASEEXCHANGERATEID output, @TRANSACTIONCURRENCYID output, @BASEHIGHPRICE output, default, @ORGANIZATIONHIGHPRICE output, @ORGANIZATIONEXCHANGERATEID output, 1;
if @BASECURRENCYID <> @TRANSACTIONCURRENCYID
begin
if @BASEEXCHANGERATEID is null
set @BASEEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(@TRANSACTIONCURRENCYID, @BASECURRENCYID, @CURRENTDATE, 1, NULL);
declare @BASEROUNDINGTYPECODE tinyint;
declare @BASERATE decimal(20,8);
select
@BASEROUNDINGTYPECODE = CURRENCY.ROUNDINGTYPECODE,
@BASERATE = CURRENCYEXCHANGERATE.RATE
from
dbo.CURRENCYEXCHANGERATE
inner join dbo.CURRENCY on CURRENCY.ID = CURRENCYEXCHANGERATE.TOCURRENCYID
where
CURRENCYEXCHANGERATE.ID = @BASEEXCHANGERATEID;
set @BASELOWPRICE = coalesce(convert(decimal(20,4),@LOWPRICE) * @BASERATE,0);
set @BASEMEDIANPRICE = coalesce(convert(decimal(20,4),@MEDIANPRICE) * @BASERATE,0);
set @BASEHIGHPRICE = coalesce(convert(decimal(20,4),@HIGHPRICE) * @BASERATE,0);
set @BASE_SALELOWPRICE = coalesce(convert(decimal(20,4),@SALE_LOWPRICE) * @BASERATE,0);
set @BASE_SALEMEDIANPRICE = coalesce(convert(decimal(20,4),@SALE_MEDIANPRICE) * @BASERATE,0);
set @BASE_SALEHIGHPRICE = coalesce(convert(decimal(20,4),@SALE_HIGHPRICE) * @BASERATE,0);
end
else
begin
set @BASELOWPRICE = @LOWPRICE;
set @BASEMEDIANPRICE = @MEDIANPRICE;
set @BASEHIGHPRICE = @HIGHPRICE;
set @BASE_SALELOWPRICE = @SALE_LOWPRICE;
set @BASE_SALEMEDIANPRICE = @SALE_MEDIANPRICE;
set @BASE_SALEHIGHPRICE = @SALE_HIGHPRICE;
end
declare @ORGANIZATIONCURRENCYID uniqueidentifier;
set @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
if @ORGANIZATIONCURRENCYID <> @BASECURRENCYID
begin
set @ORGANIZATIONEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTORGANIZATIONRATE(@BASECURRENCYID, @ORGANIZATIONCURRENCYID, @CURRENTDATE, null, @TRANSACTIONCURRENCYID);
declare @ORGANIZATIONROUNDINGTYPECODE tinyint;
declare @ORGANIZATIONRATE decimal(20,8);
select
@ORGANIZATIONROUNDINGTYPECODE = CURRENCY.ROUNDINGTYPECODE,
@ORGANIZATIONRATE = CURRENCYEXCHANGERATE.RATE
from
dbo.CURRENCYEXCHANGERATE
inner join dbo.CURRENCY on CURRENCY.ID = CURRENCYEXCHANGERATE.TOCURRENCYID
where
CURRENCYEXCHANGERATE.ID = @ORGANIZATIONEXCHANGERATEID;
set @ORGANIZATIONLOWPRICE = coalesce(convert(decimal(20,4),@BASELOWPRICE) * @ORGANIZATIONRATE,0);
set @ORGANIZATIONMEDIANPRICE = coalesce(convert(decimal(20,4),@BASEMEDIANPRICE) * @ORGANIZATIONRATE,0);
set @ORGANIZATIONHIGHPRICE = coalesce(convert(decimal(20,4),@BASEHIGHPRICE) * @ORGANIZATIONRATE,0);
set @ORGANIZATION_SALELOWPRICE = coalesce(convert(decimal(20,4),@BASE_SALELOWPRICE) * @ORGANIZATIONRATE,0);
set @ORGANIZATION_SALEMEDIANPRICE = coalesce(convert(decimal(20,4),@BASE_SALEMEDIANPRICE) * @ORGANIZATIONRATE,0);
set @ORGANIZATION_SALEHIGHPRICE = coalesce(convert(decimal(20,4),@BASE_SALEHIGHPRICE) * @ORGANIZATIONRATE,0);
end
else
begin
set @ORGANIZATIONLOWPRICE = @BASELOWPRICE;
set @ORGANIZATIONMEDIANPRICE = @BASEMEDIANPRICE;
set @ORGANIZATIONHIGHPRICE = @BASEHIGHPRICE;
set @ORGANIZATION_SALELOWPRICE = @BASE_SALELOWPRICE;
set @ORGANIZATION_SALEMEDIANPRICE = @BASE_SALEMEDIANPRICE;
set @ORGANIZATION_SALEHIGHPRICE = @BASE_SALEHIGHPRICE;
end
-- Add the stock detail record.
insert into dbo.STOCKDETAIL (ID, ISSUER, NUMBEROFUNITS, SYMBOL, LOWPRICE, MEDIANPRICE, HIGHPRICE, TRANSACTIONLOWPRICE, TRANSACTIONMEDIANPRICE, TRANSACTIONHIGHPRICE, ORGANIZATIONLOWPRICE, ORGANIZATIONMEDIANPRICE, ORGANIZATIONHIGHPRICE, BASECURRENCYID, TRANSACTIONCURRENCYID, BASEEXCHANGERATEID, ORGANIZATIONEXCHANGERATEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (@ID, @ISSUER,coalesce(@NUMBEROFUNITS, 0),@SYMBOL, @BASELOWPRICE, @BASEMEDIANPRICE, @BASEHIGHPRICE, @LOWPRICE, @MEDIANPRICE, @HIGHPRICE, @ORGANIZATIONLOWPRICE, @ORGANIZATIONMEDIANPRICE, @ORGANIZATIONHIGHPRICE, @BASECURRENCYID, @TRANSACTIONCURRENCYID, @BASEEXCHANGERATEID, @ORGANIZATIONEXCHANGERATEID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
-- Default units sold to the full amount if the sold amount isn't set
if @NUMBEROFUNITSSOLD = 0 and @USERMODIFIEDNUMBEROFUNITSSOLD = 0
set @NUMBEROFUNITSSOLD = @NUMBEROFUNITS
-- Create a stock sale record if needed
if (@SALEDATE is not null or @SALEAMOUNT <> 0 or @BROKERFEE <> 0 or @SALEPOSTDATE is not null or @SALEPOSTSTATUSCODE <> 1 or (@NUMBEROFUNITSSOLD > 0 and @NUMBEROFUNITSSOLD <> @NUMBEROFUNITS)) and @NUMBEROFUNITS > 0
begin
declare @STOCKSALEID uniqueidentifier = newid()
-- Convert amounts to base and organization, then add the stock sale record.
exec dbo.USP_CURRENCY_GETCURRENCYVALUES @SALEAMOUNT, @SALEDATE, @BASECURRENCYID, @BASEEXCHANGERATEID output, @TRANSACTIONCURRENCYID output, @BASESALEAMOUNT output, default, @ORGANIZATIONSALEAMOUNT output, @ORGANIZATIONEXCHANGERATEID output, 1;
exec dbo.USP_CURRENCY_GETCURRENCYVALUES @BROKERFEE, @SALEDATE, @BASECURRENCYID, @BASEEXCHANGERATEID output, @TRANSACTIONCURRENCYID output, @BASEBROKERFEE output, default, @ORGANIZATIONBROKERFEE output, @ORGANIZATIONEXCHANGERATEID output, 1;
insert into dbo.STOCKSALE (ID, STOCKDETAILID, NUMBEROFUNITS, SALEDATE, SALEAMOUNT, FEE, LOWPRICE, MEDIANPRICE, HIGHPRICE, SALEPOSTDATE, SALEPOSTSTATUSCODE, TRANSACTIONSALEAMOUNT, TRANSACTIONFEE, TRANSACTIONLOWPRICE, TRANSACTIONMEDIANPRICE, TRANSACTIONHIGHPRICE, ORGANIZATIONSALEAMOUNT, ORGANIZATIONFEE, ORGANIZATIONLOWPRICE, ORGANIZATIONMEDIANPRICE, ORGANIZATIONHIGHPRICE, BASECURRENCYID, TRANSACTIONCURRENCYID, BASEEXCHANGERATEID, ORGANIZATIONEXCHANGERATEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (@STOCKSALEID, @ID, @NUMBEROFUNITSSOLD, @SALEDATE, @BASESALEAMOUNT, @BASEBROKERFEE, @BASE_SALELOWPRICE, @BASE_SALEMEDIANPRICE, @BASE_SALEHIGHPRICE, @SALEPOSTDATE, @SALEPOSTSTATUSCODE, @SALEAMOUNT, @BROKERFEE, @SALE_LOWPRICE, @SALE_MEDIANPRICE, @SALE_HIGHPRICE, @ORGANIZATIONSALEAMOUNT, @ORGANIZATIONBROKERFEE, @ORGANIZATION_SALELOWPRICE, @ORGANIZATION_SALEMEDIANPRICE, @ORGANIZATION_SALEHIGHPRICE, @BASECURRENCYID, @TRANSACTIONCURRENCYID, @BASEEXCHANGERATEID, @ORGANIZATIONEXCHANGERATEID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
-- Generate the GL distributions for the stock sale
if @SALEPOSTSTATUSCODE <> 2
begin
exec dbo.USP_SAVE_STOCKDETAILGLDISTRIBUTION @REVENUEID, @CHANGEAGENTID, @CURRENTDATE, @STOCKSALEID;
end
end
end
if @PAYMENTMETHODCODE = 5 --Property
begin
-- Check if any of the sold property values are set
if @SALEDATE is not null or @SALEAMOUNT <> 0 or @BROKERFEE <> 0 or @SALEPOSTDATE is not null or @SALEPOSTSTATUSCODE <> 1
begin
-- Convert amounts to base and organization, then add the property detail record.
exec dbo.USP_CURRENCY_GETCURRENCYVALUES @SALEAMOUNT, @SALEDATE, @BASECURRENCYID, @BASEEXCHANGERATEID output, @TRANSACTIONCURRENCYID output, @BASESALEAMOUNT output, default, @ORGANIZATIONSALEAMOUNT output, @ORGANIZATIONEXCHANGERATEID output, 1;
exec dbo.USP_CURRENCY_GETCURRENCYVALUES @BROKERFEE, @SALEDATE, @BASECURRENCYID, @BASEEXCHANGERATEID output, @TRANSACTIONCURRENCYID output, @BASEBROKERFEE output, default, @ORGANIZATIONBROKERFEE output, @ORGANIZATIONEXCHANGERATEID output, 1;
insert into dbo.PROPERTYDETAIL (ID, PROPERTYSUBTYPECODEID, SALEDATE, SALEAMOUNT, BROKERFEE, SALEPOSTDATE, SALEPOSTSTATUSCODE, TRANSACTIONSALEAMOUNT, TRANSACTIONBROKERFEE, ORGANIZATIONSALEAMOUNT, ORGANIZATIONBROKERFEE, BASECURRENCYID, TRANSACTIONCURRENCYID, BASEEXCHANGERATEID, ORGANIZATIONEXCHANGERATEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (@ID, @PROPERTYSUBTYPECODEID, @SALEDATE, @BASESALEAMOUNT, @BASEBROKERFEE, @SALEPOSTDATE, @SALEPOSTSTATUSCODE, @SALEAMOUNT, @BROKERFEE, @ORGANIZATIONSALEAMOUNT, @ORGANIZATIONBROKERFEE, @BASECURRENCYID, @TRANSACTIONCURRENCYID, @BASEEXCHANGERATEID, @ORGANIZATIONEXCHANGERATEID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
-- Generate the GL distributions for the property sale
if @SALEPOSTSTATUSCODE <> 2
exec dbo.USP_SAVE_PROPERTYDETAILGLDISTRIBUTION @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;
end
else
insert into dbo.PROPERTYDETAIL (ID, PROPERTYSUBTYPECODEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, BASECURRENCYID, TRANSACTIONCURRENCYID, BASEEXCHANGERATEID, ORGANIZATIONEXCHANGERATEID)
values (@ID, @PROPERTYSUBTYPECODEID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE, @BASECURRENCYID, @TRANSACTIONCURRENCYID, @BASEEXCHANGERATEID, @ORGANIZATIONEXCHANGERATEID);
end
if @PAYMENTMETHODCODE = 6 -- Gift-in-Kind
begin
declare @GIFTINKINDVALUE as money = 0;
-- Catch any overflows
begin try
set @GIFTINKINDVALUE = @GIFTINKINDNUMBEROFUNITS * @GIFTINKINDFAIRMARKETVALUE
end try
begin catch
raiserror('BBERR_REVENUEAMOUNTNOTEQUALGIFTINKINDAMOUNT', 13, 1)
return 1
end catch
if (@GIFTINKINDNUMBEROFUNITS <> 0 or @GIFTINKINDFAIRMARKETVALUE <> 0) and (@REVENUEAMOUNT <> @GIFTINKINDVALUE)
begin
raiserror('BBERR_REVENUEAMOUNTNOTEQUALGIFTINKINDAMOUNT', 13, 1)
return 1
end
-- Convert amounts to base and organization, then add the GIK payment method detail record.
exec dbo.USP_CURRENCY_GETCURRENCYVALUES @GIFTINKINDFAIRMARKETVALUE, @CURRENTDATE, @BASECURRENCYID, @BASEEXCHANGERATEID output, @TRANSACTIONCURRENCYID output, @BASEGIFTINKINDFAIRMARKETVALUE output, default, @ORGANIZATIONGIFTINKINDFAIRMARKETVALUE output, @ORGANIZATIONEXCHANGERATEID output, 1;
insert into dbo.GIFTINKINDPAYMENTMETHODDETAIL(ID, GIFTINKINDSUBTYPECODEID, ITEMNAME, DISPOSITIONCODE, NUMBEROFUNITS, FAIRMARKETVALUE, TRANSACTIONFAIRMARKETVALUE, ORGANIZATIONFAIRMARKETVALUE, TRANSACTIONCURRENCYID, BASECURRENCYID, BASEEXCHANGERATEID, ORGANIZATIONEXCHANGERATEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (@ID, @GIFTINKINDSUBTYPECODEID, @GIFTINKINDITEMNAME, @GIFTINKINDDISPOSITIONCODE, @GIFTINKINDNUMBEROFUNITS, @BASEGIFTINKINDFAIRMARKETVALUE, @GIFTINKINDFAIRMARKETVALUE, @ORGANIZATIONGIFTINKINDFAIRMARKETVALUE, @TRANSACTIONCURRENCYID, @BASECURRENCYID, @BASEEXCHANGERATEID, @ORGANIZATIONEXCHANGERATEID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
end
if @PAYMENTMETHODCODE = 10 -- Other
insert into dbo.OTHERPAYMENTMETHODDETAIL(ID, OTHERPAYMENTMETHODCODEID, REFERENCEDATE, REFERENCENUMBER, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (@ID, @OTHERPAYMENTMETHODCODEID, @REFERENCEDATE, @REFERENCENUMBER, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
if @PAYMENTMETHODCODE = 11 -- Standing Order
begin
insert into dbo.STANDINGORDERPAYMENTMETHODDETAIL(ID, REFERENCEDATE, CONSTITUENTACCOUNTID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (@ID, @REFERENCEDATE, @CONSTITUENTACCOUNTID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
insert into dbo.REVENUESTANDINGORDER(ID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values(@REVENUEID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
end
if @PAYMENTMETHODCODE = 101 -- PayPal
begin
insert into dbo.PAYPALPAYMENTMETHODDETAIL(ID, REFERENCEDATE, REFERENCENUMBER, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (@ID, @REFERENCEDATE, @REFERENCENUMBER, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
end
if @PAYMENTMETHODCODE = 102 -- Venmo
begin
insert into dbo.VENMOPAYMENTMETHODDETAIL(ID, REFERENCEDATE, REFERENCENUMBER, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (@ID, @REFERENCEDATE, @REFERENCENUMBER, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
if @KEYALREADYOPEN = 0
close symmetric key sym_BBInfinity;
end catch