USP_DATAFORMTEMPLATE_EDIT_PLANNEDGIFTRECEIPTSETTINGS

The save procedure used by the edit dataform template "Planned Gift Receipt Setting Edit Data Form".

Parameters

Parameter Parameter Type Mode Description
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@RECEIPTCODE tinyint IN Do not receipt
@PLANNEDGIFTRECEIPTVEHICLES xml IN Planned gift vehicles

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_PLANNEDGIFTRECEIPTSETTINGS (
  @CHANGEAGENTID uniqueidentifier = null,
  @RECEIPTCODE tinyint,
  @PLANNEDGIFTRECEIPTVEHICLES xml
)
as

  set nocount on;

  if @CHANGEAGENTID is null  
    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

  declare @CURRENTDATE datetime
  set @CURRENTDATE = getdate()

  begin try
    if @RECEIPTCODE = 1
    begin
      if (select count(*) from dbo.UFN_PLANNEDGIFTRECEIPTSETTING_GETVEHICLETYPES_FROMITEMLISTXML(@PLANNEDGIFTRECEIPTVEHICLES)) = 0
        raiserror('PLANNEDGIFTRECEIPTSETTINGS_ERR_VEHICLEISREQUIRED', 13, 1);

      -- handle updating the data

      if exists (select 1 from
                  (select VEHICLECODE from dbo.UFN_PLANNEDGIFTRECEIPTSETTING_GETVEHICLETYPES_FROMITEMLISTXML(@PLANNEDGIFTRECEIPTVEHICLES)) T
                  group by T.VEHICLECODE
                  having count(T.VEHICLECODE) > 1)
          raiserror('PLANNEDGIFTRECEIPTSETTINGS_ERR_VEHICLEISNOTUNIQUE', 13, 1);

      exec dbo.USP_PLANNEDGIFTRECEIPTSETTINGS_GETVEHICLETYPES_UPDATEFROMXML @PLANNEDGIFTRECEIPTVEHICLES, @CHANGEAGENTID, @CURRENTDATE
    end
    else
    begin
      declare @contextCache varbinary(128);

      /* cache current context information */
      set @contextCache = CONTEXT_INFO();

      /* set CONTEXT_INFO to @CHANGEAGENTID */
      if not @CHANGEAGENTID is null
        set CONTEXT_INFO @CHANGEAGENTID

      delete from dbo.PLANNEDGIFTRECEIPTVEHICLE;

      /* reset CONTEXT_INFO to previous value */
      if not @contextCache is null
        set CONTEXT_INFO @contextCache
    end
  end try
  begin catch
    exec dbo.USP_RAISE_ERROR
    return 1
  end catch

return 0;