USP_DATAFORMTEMPLATE_EDITLOAD_STOCKSALE

The load procedure used by the edit dataform template "Stock Sale Edit Form"

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter used to load the fields defined on the form.
@DATALOADED bit INOUT Output parameter indicating whether or not data was actually loaded.
@TSLONG bigint INOUT Output parameter indicating the TSLONG value of the record being edited. This is used to manage multi-user concurrency issues when multiple users access the same record.
@ISSUER nvarchar(100) INOUT Issuer
@SALEDATE datetime INOUT Date of sale
@SALEAMOUNT money INOUT Sale amount
@FEE money INOUT Fees
@NUMBEROFUNITS decimal(20, 3) INOUT Units sold
@LOWPRICE decimal(19, 4) INOUT Low
@MEDIANPRICE decimal(19, 4) INOUT Median
@HIGHPRICE decimal(19, 4) INOUT High
@SALEPOSTDATE datetime INOUT GL post date
@SALEPOSTSTATUSCODE tinyint INOUT GL post status
@UNITSREMAINING decimal(20, 3) INOUT Units remaining
@ORIGINALMEDIANPRICE decimal(19, 4) INOUT Original median price
@TRANSACTIONDONOTPOST bit INOUT Transaction marked do not post
@BASECURRENCYID uniqueidentifier INOUT Base currency
@TRANSACTIONCURRENCYID uniqueidentifier INOUT Transaction currency
@BASEEXCHANGERATEID uniqueidentifier INOUT Exchange rate ID
@EXCHANGERATE decimal(20, 8) INOUT Exchange rate
@HADSPOTRATE bit INOUT Had spot rate
@RATECHANGED bit INOUT Rate changed
@TRANSACTIONCURRENCYDESCRIPTION nvarchar(110) INOUT Transaction currency description
@ALLOWGLDISTRIBUTIONS bit INOUT Allow GL distributions

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITLOAD_STOCKSALE
                    (
                        @ID uniqueidentifier,
                        @DATALOADED bit = 0 output,
                        @TSLONG bigint = 0 output,
                        @ISSUER nvarchar(100) = null output,
                        @SALEDATE datetime = null output,
                        @SALEAMOUNT money = null output,
                        @FEE money = null output,
                        @NUMBEROFUNITS decimal(20,3) = null output,
                        @LOWPRICE decimal(19,4) = null output,
                        @MEDIANPRICE decimal(19,4) = null output,
                        @HIGHPRICE decimal(19,4) = null output,
                        @SALEPOSTDATE datetime = null output,
                        @SALEPOSTSTATUSCODE tinyint = null output,
                        @UNITSREMAINING decimal(20,3) = null output,
                        @ORIGINALMEDIANPRICE decimal(19,4) = null output,
                        @TRANSACTIONDONOTPOST bit = null output,
                        @BASECURRENCYID uniqueidentifier = null output,
                        @TRANSACTIONCURRENCYID uniqueidentifier = null output,
                        @BASEEXCHANGERATEID uniqueidentifier = null output,
                        @EXCHANGERATE decimal(20,8) = null output,
                        @HADSPOTRATE bit = null output,
                        @RATECHANGED bit = null output,
                        @TRANSACTIONCURRENCYDESCRIPTION nvarchar(110) = null output,
                        @ALLOWGLDISTRIBUTIONS bit = null output
                    )
                    as
                        set nocount on

                        -- Check GL business rule for this account system and set to 'Do not post' if needed.

                        -- ****

                        declare @PDACCOUNTSYSTEMID uniqueidentifier;

                        select 
                            @PDACCOUNTSYSTEMID=PDACCOUNTSYSTEMID
                        from dbo.STOCKSALE 
                        inner join dbo.REVENUEPAYMENTMETHOD on STOCKSALE.STOCKDETAILID = REVENUEPAYMENTMETHOD.ID
                        inner join dbo.REVENUE on REVENUEPAYMENTMETHOD.REVENUEID = REVENUE.ID
                        inner join dbo.PDACCOUNTSYSTEMFORREVENUE on REVENUE.ID = PDACCOUNTSYSTEMFORREVENUE.ID
                        where STOCKSALE.ID = @ID                        

                        select @PDACCOUNTSYSTEMID = PDACCOUNTSYSTEMID 
                        from dbo.PDACCOUNTSYSTEMFORREVENUE
                        where ID = @ID;

                        set @ALLOWGLDISTRIBUTIONS = dbo.UFN_PDACCOUNTSYSTEM_ALLOWGLDISTRIBUTIONS(@PDACCOUNTSYSTEMID);
                        -- ****                


                        select
                            @DATALOADED = 1,
                            @TSLONG = STOCKSALE.TSLONG,
                            @SALEDATE = STOCKSALE.SALEDATE,
                            @SALEAMOUNT = STOCKSALE.TRANSACTIONSALEAMOUNT,
                            @FEE = STOCKSALE.TRANSACTIONFEE,
                            @NUMBEROFUNITS = STOCKSALE.NUMBEROFUNITS,
                            @LOWPRICE = STOCKSALE.TRANSACTIONLOWPRICE,
                            @MEDIANPRICE = STOCKSALE.TRANSACTIONMEDIANPRICE,
                            @HIGHPRICE = STOCKSALE.TRANSACTIONHIGHPRICE,
                            @SALEPOSTDATE = STOCKSALE.SALEPOSTDATE,
                            @SALEPOSTSTATUSCODE = STOCKSALE.SALEPOSTSTATUSCODE,
                            @ISSUER = STOCKDETAIL.ISSUER,
                            @UNITSREMAINING = STOCKDETAIL.NUMBEROFUNITS - coalesce((select sum(NUMBEROFUNITS) from dbo.STOCKSALE where STOCKDETAILID = STOCKDETAIL.ID and STOCKSALE.ID <> @ID), 0),
                            @ORIGINALMEDIANPRICE = STOCKDETAIL.TRANSACTIONMEDIANPRICE,
                            @BASECURRENCYID = STOCKSALE.BASECURRENCYID,
                            @TRANSACTIONCURRENCYID = STOCKSALE.TRANSACTIONCURRENCYID,
                            @BASEEXCHANGERATEID = STOCKSALE.BASEEXCHANGERATEID,
                            @EXCHANGERATE = 
                                case
                                    when STOCKSALE.BASEEXCHANGERATEID is not null
                                        then CURRENCYEXCHANGERATE.RATE
                                    when STOCKSALE.TRANSACTIONCURRENCYID = STOCKSALE.BASECURRENCYID
                                        then 1
                                    else 0
                                end,
                            @HADSPOTRATE =  
                                case
                                    when CURRENCYEXCHANGERATE.TYPECODE = 2
                                        then 1
                                    else 0
                                end,
                            @RATECHANGED = 0,
                            @TRANSACTIONCURRENCYDESCRIPTION = dbo.UFN_CURRENCY_GETDESCRIPTION(STOCKSALE.TRANSACTIONCURRENCYID)
                        from
                            dbo.STOCKSALE
                            inner join dbo.STOCKDETAIL on STOCKSALE.STOCKDETAILID = STOCKDETAIL.ID
                            left join dbo.CURRENCYEXCHANGERATE on STOCKSALE.BASEEXCHANGERATEID = CURRENCYEXCHANGERATE.ID
                        where
                            STOCKSALE.ID = @ID;

                        select 
                            @TRANSACTIONDONOTPOST = DONOTPOST 
                        from dbo.STOCKSALE 
                        inner join dbo.REVENUEPAYMENTMETHOD on STOCKSALE.STOCKDETAILID = REVENUEPAYMENTMETHOD.ID
                        inner join dbo.REVENUE on REVENUEPAYMENTMETHOD.REVENUEID = REVENUE.ID
                        where STOCKSALE.ID = @ID