TR_MKTSEGMENTLIST_IU_ORGANIZATIONAMOUNTS

Definition

Copy


CREATE trigger [dbo].[TR_MKTSEGMENTLIST_IU_ORGANIZATIONAMOUNTS] on [dbo].[MKTSEGMENTLIST] 
after insert, update 
not for replication
as
begin
  set nocount on;

  declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(); 

  -- if we try to save an amount without explicitly setting an organization amount and an exchange rate, 

  -- copy the amount to the organization amount.

  if update(RENTALCOSTADJUSTMENT) or update(EXCHANGECOSTADJUSTMENT)
  begin
    update dbo.MKTSEGMENTLIST set
      MKTSEGMENTLIST.ORGANIZATIONRENTALCOSTADJUSTMENT = MKTSEGMENTLIST.RENTALCOSTADJUSTMENT,
      MKTSEGMENTLIST.ORGANIZATIONEXCHANGECOSTADJUSTMENT = MKTSEGMENTLIST.EXCHANGECOSTADJUSTMENT,
      MKTSEGMENTLIST.BASECURRENCYID = MKTLIST.BASECURRENCYID,
      MKTSEGMENTLIST.CHANGEDBYID = MKTSEGMENTLIST.CHANGEDBYID,
      MKTSEGMENTLIST.DATECHANGED = MKTSEGMENTLIST.DATECHANGED
    from inserted
    inner join dbo.MKTSEGMENTLIST on inserted.ID = MKTSEGMENTLIST.ID
    inner join dbo.MKTLIST on MKTSEGMENTLIST.LISTID = MKTLIST.ID
    where MKTSEGMENTLIST.CURRENCYEXCHANGERATEID is null
    and (MKTLIST.BASECURRENCYID is null or MKTLIST.BASECURRENCYID = @ORGANIZATIONCURRENCYID)
    and
    (
      MKTSEGMENTLIST.ORGANIZATIONRENTALCOSTADJUSTMENT <> MKTSEGMENTLIST.RENTALCOSTADJUSTMENT
      or MKTSEGMENTLIST.ORGANIZATIONEXCHANGECOSTADJUSTMENT <> MKTSEGMENTLIST.EXCHANGECOSTADJUSTMENT
      or (
        MKTSEGMENTLIST.RENTALCOSTADJUSTMENT = 0
        and MKTSEGMENTLIST.EXCHANGECOSTADJUSTMENT = 0
      )
    );
  end
end