USP_BATCH_UPDATEPROJECTEDTOTALS
Executes the "Batch: Update Projected Totals" record operation.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | Input parameter indicating the ID of the record being updated. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the update. |
Definition
Copy
CREATE procedure dbo.USP_BATCH_UPDATEPROJECTEDTOTALS(@ID uniqueidentifier, @CHANGEAGENTID uniqueidentifier)
with EXECUTE AS OWNER
as
set NOCOUNT on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
begin try
declare @BASETABLENAME nvarchar(128);
declare @AMOUNTCOLUMN nvarchar(100);
select @BASETABLENAME=BASETABLENAME, @AMOUNTCOLUMN=AMOUNTCOLUMN from dbo.BATCHTYPECATALOG
inner join dbo.BATCHTEMPLATE on BATCHTYPECATALOG.ID = BATCHTEMPLATE.BATCHTYPECATALOGID
inner join dbo.BATCH on BATCH.BATCHTEMPLATEID = BATCHTEMPLATE.ID
where BATCH.ID = @ID;
if len(@BASETABLENAME) > 0 and len(@AMOUNTCOLUMN) > 0
begin
declare @sql nvarchar(516);
declare @batchid nvarchar(36);
set @batchid = Cast(@ID as nvarchar(36));
set @sql = 'update dbo.BATCH set CHANGEDBYID = ''' + cast(@CHANGEAGENTID as nvarchar(36)) + ''', DATECHANGED = getdate(), PROJECTEDTOTALAMOUNT = (select coalesce(sum(' + @AMOUNTCOLUMN + '), 0) from dbo.' + @BASETABLENAME + ' where BATCHID = ''' + @batchid + '''), PROJECTEDNUMBEROFRECORDS=(select count(*) from dbo.' + @BASETABLENAME + ' where BATCHID = ''' + @batchid + ''') where BATCH.ID = ''' + @batchid + '''';
exec(@sql);
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;