USP_REVENUE_STOCK_VALIDATEGLMAPPINGS
Validates GL mappings for stock.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@PDACCOUNTSYSTEMID | uniqueidentifier | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@AMOUNT | money | IN | |
@SALEAMOUNT | money | IN | |
@NUMBEROFUNITSSOLD | money | IN | |
@MEDIANPRICE | money | IN | |
@BROKERFEE | money | IN |
Definition
Copy
CREATE procedure dbo.USP_REVENUE_STOCK_VALIDATEGLMAPPINGS
(
@PDACCOUNTSYSTEMID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier,
@AMOUNT money,
@SALEAMOUNT money,
@NUMBEROFUNITSSOLD money,
@MEDIANPRICE money,
@BROKERFEE money
)
as
begin
if (dbo.UFN_VALID_BASICGL_INSTALLED() != 0 and dbo.UFN_PDACCOUNTSYSTEM_ALLOWGLDISTRIBUTIONS(@PDACCOUNTSYSTEMID) = 1)
begin
declare @CURRENTVALUE money
declare @UNMAPPEDITEM int = null
if @PDACCOUNTSYSTEMID is NULL
set @PDACCOUNTSYSTEMID = dbo.UFN_PDACCOUNTSYSTEM_GETDEFAULTSYSTEMIDSFORUSER(@CURRENTAPPUSERID)
-- Collect IDs for all account mappings
declare @PDACCOUNTCODEMAPPINGIDS table (ID uniqueidentifier)
insert into @PDACCOUNTCODEMAPPINGIDS (ID)
select ID from PDACCOUNTCODEMAPPING where PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID and OFFICEID = 9
-- WARNING: The caller must verify that @NUMBEROFUNITSSOLD <> 0
set @CURRENTVALUE = (@SALEAMOUNT / @NUMBEROFUNITSSOLD)
-- Add mappings that are needed to complete the commit
declare @NEEDEDMAPPINGS table (NAMEID int)
insert into @NEEDEDMAPPINGS (NAMEID) values (8) -- Sold Stock
if @CURRENTVALUE > @MEDIANPRICE
insert into @NEEDEDMAPPINGS (NAMEID) values (16) -- Sold Stock Gain
if @CURRENTVALUE < @MEDIANPRICE
insert into @NEEDEDMAPPINGS (NAMEID) values (32) -- Sold Stock Loss
if @BROKERFEE <> 0
insert into @NEEDEDMAPPINGS (NAMEID) values (64); -- Fee
-- Find unmapped items
with EXISTINGMAPPINGS as
(
select
NAMEID
from
dbo.PDACCOUNTCODEMAPPING t1
inner join dbo.PDACCOUNTCODEMAPPAYMENTMETHODTYPE t2 on (t1.PAYMENTMETHOD & t2.NAMEID) > 0 and t1.OFFICEID = t2.OFFICEID
where
t1.ID in (select ID from @PDACCOUNTCODEMAPPINGIDS)
)
select top 1
@UNMAPPEDITEM = NAMEID
from
@NEEDEDMAPPINGS
where
NAMEID not in (select * from EXISTINGMAPPINGS)
-- Construct error message if needed
if @UNMAPPEDITEM is not NULL
begin
declare @MESSAGE varchar(500)
declare @ACCTSYSNAME varchar(50)
declare @OFFICENAME varchar(100)
declare @UNMAPPEDITEMNAME varchar(100)
-- Get account system name
select @ACCTSYSNAME = NAME from dbo.PDACCOUNTSYSTEM where ID = @PDACCOUNTSYSTEMID
select @OFFICENAME = NAME from dbo.PDACCOUNTCODEMAPOFFICE where OFFICEID = 9
select @UNMAPPEDITEMNAME = TYPENAME from PDACCOUNTCODEMAPPAYMENTMETHODTYPE where OFFICEID = 9 and NAMEID = @UNMAPPEDITEM
set @MESSAGE = 'In account system "' + COALESCE(@ACCTSYSNAME,'<Unknown system>') + '", a mapping does not exist for Office: ' + COALESCE(@OFFICENAME,'<Unknown office>') + ', ' + coalesce(@UNMAPPEDITEMNAME,'<Unknown mapping>')
raiserror(@MESSAGE, 13, 1)
end
end
end