TR_INSTALLMENT_INSERTUPDATE_CURRENCY

Definition

Copy


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

  if update(AMOUNT)
  begin
    declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(); 

                            update
                                dbo.INSTALLMENT
                            set
                                INSTALLMENT.ORGANIZATIONAMOUNT = INSTALLMENT.AMOUNT,
                                INSTALLMENT.ORGANIZATIONRECEIPTAMOUNT = INSTALLMENT.RECEIPTAMOUNT,
                                INSTALLMENT.TRANSACTIONAMOUNT = INSTALLMENT.AMOUNT,
                                INSTALLMENT.TRANSACTIONRECEIPTAMOUNT = INSTALLMENT.RECEIPTAMOUNT,
                                INSTALLMENT.BASECURRENCYID = @ORGANIZATIONCURRENCYID,
                                INSTALLMENT.TRANSACTIONCURRENCYID = @ORGANIZATIONCURRENCYID,
                                INSTALLMENT.CHANGEDBYID = INSTALLMENT.CHANGEDBYID,
                                INSTALLMENT.DATECHANGED = INSTALLMENT.DATECHANGED
                            from
                                inserted
                            inner join
                                dbo.INSTALLMENT on inserted.ID = INSTALLMENT.ID
                            where
                                INSTALLMENT.ORGANIZATIONEXCHANGERATEID is null
                                and (INSTALLMENT.BASECURRENCYID is null or INSTALLMENT.BASECURRENCYID = @ORGANIZATIONCURRENCYID)
                                and INSTALLMENT.BASEEXCHANGERATEID is null
                                and (INSTALLMENT.TRANSACTIONCURRENCYID is null or INSTALLMENT.TRANSACTIONCURRENCYID = @ORGANIZATIONCURRENCYID)
                                and (
                                    INSTALLMENT.ORGANIZATIONAMOUNT <> INSTALLMENT.AMOUNT
                                    or INSTALLMENT.TRANSACTIONAMOUNT <> INSTALLMENT.AMOUNT
                                    or INSTALLMENT.AMOUNT = 0
                                    or INSTALLMENT.ORGANIZATIONRECEIPTAMOUNT <> INSTALLMENT.RECEIPTAMOUNT
                                    or INSTALLMENT.TRANSACTIONRECEIPTAMOUNT <> INSTALLMENT.RECEIPTAMOUNT
                                );
                        end
                    end