USP_BALANCINGENTRY_ADDFROMXML
This procedure updates all the balancing entry elements from xml
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@BALANCINGENTRYID | uniqueidentifier | IN | |
@BALANCINGENTRYTYPECODE | tinyint | IN | |
@XML | xml | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CHANGEDATE | datetime | IN |
Definition
Copy
CREATE procedure dbo.USP_BALANCINGENTRY_ADDFROMXML(
@BALANCINGENTRYID uniqueidentifier,
@BALANCINGENTRYTYPECODE tinyint,
@XML xml,
@CHANGEAGENTID uniqueidentifier = null,
@CHANGEDATE datetime = null
)
as
begin
if @CHANGEAGENTID is null
exec USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
if @CHANGEDATE is null
set @CHANGEDATE = getdate()
-- build a temporary table containing the values from the XML
declare @TempTbl table (
[DATAELEMENTID] uniqueidentifier,
SEGMENTCOLUMN tinyint)
if @BALANCINGENTRYTYPECODE = 1
insert into @TempTbl(DATAELEMENTID, SEGMENTCOLUMN)
select f1.DATAELEMENTID, NUMBERS.NUM
from dbo.UFN_BALANCINGENTRY_GETELEMENTSDEBITFROM_FROMITEMLISTXML(@XML) f1
inner join dbo.PDACCOUNTSEGMENTVALUE on f1.DATAELEMENTID = PDACCOUNTSEGMENTVALUE.ID
inner join dbo.PDACCOUNTSTRUCTURE on PDACCOUNTSEGMENTVALUE.PDACCOUNTSTRUCTUREID = PDACCOUNTSTRUCTURE.ID
right join dbo.NUMBERS on PDACCOUNTSTRUCTURE.SEGMENTCOLUMN = NUMBERS.NUM
where NUMBERS.NUM between 1 and 30
if @BALANCINGENTRYTYPECODE = 2
insert into @TempTbl(DATAELEMENTID, SEGMENTCOLUMN)
select f1.DATAELEMENTID, NUMBERS.NUM
from dbo.UFN_BALANCINGENTRY_GETELEMENTSCREDITFROM_FROMITEMLISTXML(@XML) f1
inner join dbo.PDACCOUNTSEGMENTVALUE on f1.DATAELEMENTID = PDACCOUNTSEGMENTVALUE.ID
inner join dbo.PDACCOUNTSTRUCTURE on PDACCOUNTSEGMENTVALUE.PDACCOUNTSTRUCTUREID = PDACCOUNTSTRUCTURE.ID
right join dbo.NUMBERS on PDACCOUNTSTRUCTURE.SEGMENTCOLUMN = NUMBERS.NUM
where NUMBERS.NUM between 1 and 30
if @BALANCINGENTRYTYPECODE = 3
insert into @TempTbl(DATAELEMENTID, SEGMENTCOLUMN)
select f1.DATAELEMENTID, NUMBERS.NUM
from dbo.UFN_BALANCINGENTRY_GETELEMENTSDEBITTO_FROMITEMLISTXML(@XML) f1
inner join dbo.PDACCOUNTSEGMENTVALUE on f1.DATAELEMENTID = PDACCOUNTSEGMENTVALUE.ID
inner join dbo.PDACCOUNTSTRUCTURE on PDACCOUNTSEGMENTVALUE.PDACCOUNTSTRUCTUREID = PDACCOUNTSTRUCTURE.ID
right join dbo.NUMBERS on PDACCOUNTSTRUCTURE.SEGMENTCOLUMN = NUMBERS.NUM
where NUMBERS.NUM between 1 and 30
if @BALANCINGENTRYTYPECODE = 4
insert into @TempTbl(DATAELEMENTID, SEGMENTCOLUMN)
select f1.DATAELEMENTID, NUMBERS.NUM
from dbo.UFN_BALANCINGENTRY_GETELEMENTSCREDITTO_FROMITEMLISTXML(@XML) f1
inner join dbo.PDACCOUNTSEGMENTVALUE on f1.DATAELEMENTID = PDACCOUNTSEGMENTVALUE.ID
inner join dbo.PDACCOUNTSTRUCTURE on PDACCOUNTSEGMENTVALUE.PDACCOUNTSTRUCTUREID = PDACCOUNTSTRUCTURE.ID
right join dbo.NUMBERS on PDACCOUNTSTRUCTURE.SEGMENTCOLUMN = NUMBERS.NUM
where NUMBERS.NUM between 1 and 30;
if @@Error <> 0
return 1;
merge dbo.BALANCINGENTRYELEMENT as Target
using (select @BALANCINGENTRYID as BALANCINGENTRYID, @BALANCINGENTRYTYPECODE as BALANCINGENTRYTYPECODE,
cast([1] as uniqueidentifier) as Col1, cast([2] as uniqueidentifier) as Col2, cast([3] as uniqueidentifier) as Col3, cast([4] as uniqueidentifier) as Col4, cast([5] as uniqueidentifier) as Col5, cast([6] as uniqueidentifier) as Col6, cast([7] as uniqueidentifier) as Col7, cast([8] as uniqueidentifier) as Col8, cast([9] as uniqueidentifier) as Col9, cast([10] as uniqueidentifier) as Col10,
cast([11] as uniqueidentifier) as Col11, cast([12] as uniqueidentifier) as Col12, cast([13] as uniqueidentifier) as Col13, cast([14] as uniqueidentifier) as Col14, cast([15] as uniqueidentifier) as Col15, cast([16] as uniqueidentifier) as Col16, cast([17] as uniqueidentifier) as Col17, cast([18] as uniqueidentifier) as Col18, cast([19] as uniqueidentifier) as Col19, cast([20] as uniqueidentifier) as Col20,
cast([21] as uniqueidentifier) as Col21, cast([22] as uniqueidentifier) as Col22, cast([23] as uniqueidentifier) as Col23, cast([24] as uniqueidentifier) as Col24, cast([25] as uniqueidentifier) as Col25, cast([26] as uniqueidentifier) as Col26, cast([27] as uniqueidentifier) as Col27, cast([28] as uniqueidentifier) as Col28, cast([29] as uniqueidentifier) as Col29, cast([30] as uniqueidentifier) as Col30
from (
select cast(DATAELEMENTID as nvarchar(36)) as Element, SEGMENTCOLUMN
from @TempTbl) as S
pivot
(max(Element) for SEGMENTCOLUMN in ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30])) as P
) as Source
on Target.BALANCINGENTRYTYPECODE = Source.BALANCINGENTRYTYPECODE and Target.BALANCINGENTRYID = Source.BALANCINGENTRYID
when matched then
update set Target.DATAELEMENT1ID = Source.Col1,
Target.DATAELEMENT2ID = Source.Col2,
Target.DATAELEMENT3ID = Source.Col3,
Target.DATAELEMENT4ID = Source.Col4,
Target.DATAELEMENT5ID = Source.Col5,
Target.DATAELEMENT6ID = Source.Col6,
Target.DATAELEMENT7ID = Source.Col7,
Target.DATAELEMENT8ID = Source.Col8,
Target.DATAELEMENT9ID = Source.Col9,
Target.DATAELEMENT10ID = Source.Col10,
Target.DATAELEMENT11ID = Source.Col11,
Target.DATAELEMENT12ID = Source.Col12,
Target.DATAELEMENT13ID = Source.Col13,
Target.DATAELEMENT14ID = Source.Col14,
Target.DATAELEMENT15ID = Source.Col15,
Target.DATAELEMENT16ID = Source.Col16,
Target.DATAELEMENT17ID = Source.Col17,
Target.DATAELEMENT18ID = Source.Col18,
Target.DATAELEMENT19ID = Source.Col19,
Target.DATAELEMENT20ID = Source.Col20,
Target.DATAELEMENT21ID = Source.Col21,
Target.DATAELEMENT22ID = Source.Col22,
Target.DATAELEMENT23ID = Source.Col23,
Target.DATAELEMENT24ID = Source.Col24,
Target.DATAELEMENT25ID = Source.Col25,
Target.DATAELEMENT26ID = Source.Col26,
Target.DATAELEMENT27ID = Source.Col27,
Target.DATAELEMENT28ID = Source.Col28,
Target.DATAELEMENT29ID = Source.Col29,
Target.DATAELEMENT30ID = Source.Col30,
Target.CHANGEDBYID = @CHANGEAGENTID,
Target.DATECHANGED = @CHANGEDATE
when not matched by Target then
insert (ID, BALANCINGENTRYID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, BALANCINGENTRYTYPECODE,
DATAELEMENT1ID, DATAELEMENT2ID, DATAELEMENT3ID, DATAELEMENT4ID, DATAELEMENT5ID, DATAELEMENT6ID, DATAELEMENT7ID, DATAELEMENT8ID, DATAELEMENT9ID, DATAELEMENT10ID,
DATAELEMENT11ID, DATAELEMENT12ID, DATAELEMENT13ID, DATAELEMENT14ID, DATAELEMENT15ID, DATAELEMENT16ID, DATAELEMENT17ID, DATAELEMENT18ID, DATAELEMENT19ID, DATAELEMENT20ID,
DATAELEMENT21ID, DATAELEMENT22ID, DATAELEMENT23ID, DATAELEMENT24ID, DATAELEMENT25ID, DATAELEMENT26ID, DATAELEMENT27ID, DATAELEMENT28ID, DATAELEMENT29ID, DATAELEMENT30ID)
values (newid(), @BALANCINGENTRYID, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE, @BALANCINGENTRYTYPECODE,
Source.Col1, Source.Col2, Source.Col3, Source.Col4, Source.Col5, Source.Col6, Source.Col7, Source.Col8, Source.Col9, Source.Col10,
Source.Col11, Source.Col12, Source.Col13, Source.Col14, Source.Col15, Source.Col16, Source.Col17, Source.Col18, Source.Col19, Source.Col20,
Source.Col21, Source.Col22, Source.Col23, Source.Col24, Source.Col25, Source.Col26, Source.Col27, Source.Col28, Source.Col29, Source.Col30);
if @@Error <> 0
return 2;
return 0;
end