USP_BATCH_VALIDATETAXDECLARATIONS
Validates tax declarations for constituent and revenue batch.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@TAXDECLARATIONS | xml | IN | |
@BATCHTYPE | tinyint | IN | |
@CONSTITUENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_BATCH_VALIDATETAXDECLARATIONS
(
@TAXDECLARATIONS xml,
@BATCHTYPE tinyint, -- 0 for Constituent, 1 for Revenue
@CONSTITUENTID uniqueidentifier = null -- Only applicable for Revenue batch. Used to include constituent's existing records.
)
as
set nocount on
-- Validate tax declarations fields. Using a table variable so the XML doesn't have to
-- to be deserialized twice.
declare @TAXDECLARATIONSFORVALIDATION table
(
ID uniqueidentifier,
DECLARATIONSTARTS datetime,
DECLARATIONENDS datetime,
CHARITYCLAIMREFERENCENUMBERID uniqueidentifier,
PAYSTAXCODE tinyint
)
if @BATCHTYPE = 0 -- Constituent batch
insert into @TAXDECLARATIONSFORVALIDATION (ID, DECLARATIONSTARTS, DECLARATIONENDS, CHARITYCLAIMREFERENCENUMBERID, PAYSTAXCODE)
select newid(), DECLARATIONSTARTS, DECLARATIONENDS, CHARITYCLAIMREFERENCENUMBERID, PAYSTAXCODE
from dbo.UFN_CONSTITUENTBATCH_GETTAXDECLARATIONS_FROMITEMLISTXML(@TAXDECLARATIONS)
else -- Revenue batch
insert into @TAXDECLARATIONSFORVALIDATION (ID, DECLARATIONSTARTS, DECLARATIONENDS, CHARITYCLAIMREFERENCENUMBERID, PAYSTAXCODE)
select newid(), DECLARATIONSTARTS, DECLARATIONENDS, CHARITYCLAIMREFERENCENUMBERID, PAYSTAXCODE
from dbo.UFN_REVENUEBATCH_GETTAXDECLARATIONS_FROMITEMLISTXML(@TAXDECLARATIONS)
if exists( select 1
from @TAXDECLARATIONSFORVALIDATION
where
DECLARATIONSTARTS is not null and
DECLARATIONENDS is not null and
DECLARATIONENDS < DECLARATIONSTARTS)
raiserror('BBERR_INVALIDDECLARATIONSSTARTANDENDDATE', 13, 1)
if exists ( select 1 from @TAXDECLARATIONSFORVALIDATION TOPTABLE
inner join
(
select
DECLARATIONSTARTS,
DECLARATIONENDS,
CHARITYCLAIMREFERENCENUMBERID,
PAYSTAXCODE
from @TAXDECLARATIONSFORVALIDATION
union all
select
DECLARATIONSTARTS,
DECLARATIONENDS,
CHARITYCLAIMREFERENCENUMBERID,
PAYSTAXCODE
from dbo.TAXDECLARATION
where
@BATCHTYPE = 1 and -- Revenue batch
CONSTITUENTID = @CONSTITUENTID
) as SUBTABLE
on
(
(
TOPTABLE.CHARITYCLAIMREFERENCENUMBERID is null and
SUBTABLE.CHARITYCLAIMREFERENCENUMBERID is null
) or
TOPTABLE.CHARITYCLAIMREFERENCENUMBERID = SUBTABLE.CHARITYCLAIMREFERENCENUMBERID
) and
TOPTABLE.PAYSTAXCODE <> SUBTABLE.PAYSTAXCODE and
dbo.UFN_DECLARATIONS_AREDATESOVERLAPPING(TOPTABLE.DECLARATIONSTARTS, TOPTABLE.DECLARATIONENDS, SUBTABLE.DECLARATIONSTARTS, SUBTABLE.DECLARATIONENDS) = 1
)
raiserror('BBERR_CONFLICTINGTAXDECLARATION', 13, 1)