TR_STOCKSALE_INSERTUPDATE_CURRENCY

Definition

Copy


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

                        declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(); 

                        -- If we try to save a sale amount or broker fee without explicitly setting an organization

                        -- amount and an exchange rate, copy the amount and fee to their organization and transaction

                        -- amount fields.

                        if update(SALEAMOUNT) or update(FEE) or update(LOWPRICE) or update(MEDIANPRICE) or update (HIGHPRICE)
                        begin
                            update
                                dbo.STOCKSALE
                            set
                                STOCKSALE.ORGANIZATIONSALEAMOUNT = STOCKSALE.SALEAMOUNT,
                                STOCKSALE.TRANSACTIONSALEAMOUNT = STOCKSALE.SALEAMOUNT,
                                STOCKSALE.ORGANIZATIONFEE = STOCKSALE.FEE,
                                STOCKSALE.TRANSACTIONFEE = STOCKSALE.FEE,
                                STOCKSALE.ORGANIZATIONLOWPRICE = STOCKSALE.LOWPRICE,
                                STOCKSALE.TRANSACTIONLOWPRICE = STOCKSALE.LOWPRICE,
                                STOCKSALE.ORGANIZATIONMEDIANPRICE = STOCKSALE.MEDIANPRICE,
                                STOCKSALE.TRANSACTIONMEDIANPRICE = STOCKSALE.MEDIANPRICE,
                                STOCKSALE.ORGANIZATIONHIGHPRICE = STOCKSALE.HIGHPRICE,
                                STOCKSALE.TRANSACTIONHIGHPRICE = STOCKSALE.HIGHPRICE,

                                STOCKSALE.BASECURRENCYID = @ORGANIZATIONCURRENCYID,
                                STOCKSALE.TRANSACTIONCURRENCYID = @ORGANIZATIONCURRENCYID,
                                STOCKSALE.CHANGEDBYID = STOCKSALE.CHANGEDBYID,
                                STOCKSALE.DATECHANGED = STOCKSALE.DATECHANGED
                            from
                                inserted
                            inner join
                                dbo.STOCKSALE on inserted.ID = STOCKSALE.ID
                            where
                                STOCKSALE.ORGANIZATIONEXCHANGERATEID is null
                                and (STOCKSALE.BASECURRENCYID is null or STOCKSALE.BASECURRENCYID = @ORGANIZATIONCURRENCYID)
                                and STOCKSALE.BASEEXCHANGERATEID is null
                                and (STOCKSALE.TRANSACTIONCURRENCYID is null or STOCKSALE.TRANSACTIONCURRENCYID = @ORGANIZATIONCURRENCYID)
                                and
                                (
                                    STOCKSALE.ORGANIZATIONSALEAMOUNT <> STOCKSALE.SALEAMOUNT
                                    or STOCKSALE.TRANSACTIONSALEAMOUNT <> STOCKSALE.SALEAMOUNT
                                    or STOCKSALE.ORGANIZATIONFEE <> STOCKSALE.FEE
                                    or STOCKSALE.TRANSACTIONFEE <> STOCKSALE.FEE
                                    or STOCKSALE.ORGANIZATIONLOWPRICE <> STOCKSALE.LOWPRICE
                                    or STOCKSALE.TRANSACTIONLOWPRICE <> STOCKSALE.LOWPRICE
                                    or STOCKSALE.ORGANIZATIONMEDIANPRICE <> STOCKSALE.MEDIANPRICE
                                    or STOCKSALE.TRANSACTIONMEDIANPRICE <> STOCKSALE.MEDIANPRICE
                                    or STOCKSALE.ORGANIZATIONHIGHPRICE <> STOCKSALE.HIGHPRICE
                                    or STOCKSALE.TRANSACTIONHIGHPRICE <> STOCKSALE.HIGHPRICE
                                    or (
                                        STOCKSALE.SALEAMOUNT = 0
                                        and STOCKSALE.FEE = 0
                                        and STOCKSALE.LOWPRICE = 0
                                        and STOCKSALE.MEDIANPRICE = 0
                                        and STOCKSALE.HIGHPRICE = 0
                                    )
                                );
                        end
                    end