USP_DATAFORMTEMPLATE_EDIT_JOBBASECURRENCY

The save procedure used by the edit dataform template "Job Base Currency Edit Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@BASECURRENCYID uniqueidentifier IN Base currency

Definition

Copy


CREATE procedure dbo.[USP_DATAFORMTEMPLATE_EDIT_JOBBASECURRENCY] (
  @ID uniqueidentifier,
  @CHANGEAGENTID uniqueidentifier = null,
  @BASECURRENCYID uniqueidentifier
)
as
  set nocount on;

  declare @CURRENTDATE datetime;
  declare @OLDBASECURRENCYID uniqueidentifier;
  declare @ORGANIZATIONCURRENCYID uniqueidentifier;

  if exists (select top 1 1 from dbo.[JOBOCCURRENCE] where [JOBID] = @ID and [EVENTID] is not null)
    raiserror('ERR_JOBBASECURRENCYEDIT_JOBASSOCIATEDWITHEVENTS', 13, 1);

  if @CHANGEAGENTID is null  
    exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;

  set @CURRENTDATE = getdate();

  begin try
    select @OLDBASECURRENCYID = [BASECURRENCYID] from dbo.[JOB] where [ID] = @ID;

    if @OLDBASECURRENCYID <> @BASECURRENCYID
      begin
        set @ORGANIZATIONCURRENCYID = dbo.[UFN_CURRENCY_GETORGANIZATIONCURRENCY]();

        if @BASECURRENCYID = @ORGANIZATIONCURRENCYID
          begin
            update dbo.[JOB] set
              [BASECURRENCYID] = @BASECURRENCYID,
              [ORGANIZATIONEXCHANGERATEID] = null,
              [ORGANIZATIONESTIMATEDVALUE] = [ESTIMATEDVALUE],
              [CHANGEDBYID] = @CHANGEAGENTID,
              [DATECHANGED] = @CURRENTDATE
            where [ID] = @ID;

            update dbo.[JOBOCCURRENCE] set
              [BASECURRENCYID] = @BASECURRENCYID,
              [ORGANIZATIONEXCHANGERATEID] = null,
              [ORGANIZATIONESTIMATEDVALUE] = [ESTIMATEDVALUE],
              [CHANGEDBYID] = @CHANGEAGENTID,
              [DATECHANGED] = @CURRENTDATE
            where [JOBID] = @ID;
          end
        else
          begin
            update dbo.[JOB] set
              [BASECURRENCYID] = @BASECURRENCYID,
              [ORGANIZATIONEXCHANGERATEID] = dbo.[UFN_CURRENCYEXCHANGERATE_GETLATEST](@BASECURRENCYID, @ORGANIZATIONCURRENCYID, [DATEADDED], 0, null),
              [ORGANIZATIONESTIMATEDVALUE] = dbo.[UFN_CURRENCY_CONVERT]([ESTIMATEDVALUE], dbo.[UFN_CURRENCYEXCHANGERATE_GETLATEST](@BASECURRENCYID, @ORGANIZATIONCURRENCYID, [DATEADDED], 0, null)),
              [CHANGEDBYID] = @CHANGEAGENTID,
              [DATECHANGED] = @CURRENTDATE
            where [ID] = @ID;

            update dbo.[JOBOCCURRENCE] set
              [BASECURRENCYID] = @BASECURRENCYID,
              [ORGANIZATIONEXCHANGERATEID] = dbo.[UFN_CURRENCYEXCHANGERATE_GETLATEST](@BASECURRENCYID, @ORGANIZATIONCURRENCYID, [DATEADDED], 0, null),
              [ORGANIZATIONESTIMATEDVALUE] = dbo.[UFN_CURRENCY_CONVERT]([ESTIMATEDVALUE], dbo.[UFN_CURRENCYEXCHANGERATE_GETLATEST](@BASECURRENCYID, @ORGANIZATIONCURRENCYID, [DATEADDED], 0, null)),
              [CHANGEDBYID] = @CHANGEAGENTID,
              [DATECHANGED] = @CURRENTDATE
            where [JOBID] = @ID;
          end
      end
  end try

  begin catch
    exec dbo.[USP_RAISE_ERROR];
    return 1;
  end catch

  return 0;