USP_DATAFORMTEMPLATE_VIEW_GIFTINKINDPAYMENTMETHODDETAILS

The load procedure used by the view dataform template "Gift-in-Kind Details View Form"

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter used to load the fields defined on the form.
@UNITSSOLD int INOUT Units sold
@UNITSREMAINING int INOUT Units remaining
@TOTALSALEAMOUNT money INOUT Total sale amount
@TOTALGAINLOSS money INOUT Total gain/loss
@DATALOADED bit INOUT Output parameter indicating whether or not data was actually loaded.
@BASETOTALSALEAMOUNT money INOUT Total sale amount (base)
@BASETOTALGAINLOSS money INOUT Total gain/loss (base)
@TRANSACTIONCURRENCYID uniqueidentifier INOUT Transaction currency
@BASECURRENCYID uniqueidentifier INOUT Base currency
@BASEAMOUNTSAREVALID bit INOUT Base amounts are valid

Definition

Copy


                CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_GIFTINKINDPAYMENTMETHODDETAILS
                (
                    @ID uniqueidentifier,
                    @UNITSSOLD int = null output,
                    @UNITSREMAINING int = null output,
                    @TOTALSALEAMOUNT money = null output,
                    @TOTALGAINLOSS money = null output,
                    @DATALOADED bit = 0 output,
                    @BASETOTALSALEAMOUNT money = null output,
                    @BASETOTALGAINLOSS money = null output,
                    @TRANSACTIONCURRENCYID uniqueidentifier = null output,
                    @BASECURRENCYID uniqueidentifier = null output,
                    @BASEAMOUNTSAREVALID bit = null output
                )
                as
                    set nocount on

                    set @TRANSACTIONCURRENCYID = null;
                    set @BASECURRENCYID = null;
                    set @BASEAMOUNTSAREVALID = 0;

                    select
                        @UNITSSOLD = coalesce(sum(GIFTINKINDSALE.NUMBEROFUNITS), 0),
                        @UNITSREMAINING = coalesce(GIFTINKINDPAYMENTMETHODDETAIL.NUMBEROFUNITS, 0) - coalesce(sum(GIFTINKINDSALE.NUMBEROFUNITS), 0),
                        @TOTALSALEAMOUNT = coalesce(sum(GIFTINKINDSALE.TRANSACTIONSALEAMOUNT), 0),
                        @TOTALGAINLOSS = coalesce(sum(GIFTINKINDSALE.TRANSACTIONSALEAMOUNT), 0) - (GIFTINKINDPAYMENTMETHODDETAIL.TRANSACTIONFAIRMARKETVALUE * coalesce(sum(GIFTINKINDSALE.NUMBEROFUNITS), 0)),
                        @BASETOTALSALEAMOUNT = coalesce(sum(GIFTINKINDSALE.SALEAMOUNT), 0),
                        @BASETOTALGAINLOSS = coalesce(sum(GIFTINKINDSALE.SALEAMOUNT), 0) - (GIFTINKINDPAYMENTMETHODDETAIL.FAIRMARKETVALUE * coalesce(sum(GIFTINKINDSALE.NUMBEROFUNITS), 0)),
                        @DATALOADED = 1
                    from
                        dbo.GIFTINKINDPAYMENTMETHODDETAIL
                        left join dbo.GIFTINKINDSALE on GIFTINKINDPAYMENTMETHODDETAIL.ID = GIFTINKINDSALE.GIFTINKINDPAYMENTMETHODDETAILID
                    where
                        GIFTINKINDPAYMENTMETHODDETAIL.ID = @ID
                    group by
                        GIFTINKINDPAYMENTMETHODDETAIL.NUMBEROFUNITS,
                        GIFTINKINDPAYMENTMETHODDETAIL.FAIRMARKETVALUE,
                        GIFTINKINDPAYMENTMETHODDETAIL.TRANSACTIONFAIRMARKETVALUE;

                    if @DATALOADED = 1
                    begin
                        select
                            @TRANSACTIONCURRENCYID = GIFTINKINDPAYMENTMETHODDETAIL.TRANSACTIONCURRENCYID,
                            @BASECURRENCYID = GIFTINKINDPAYMENTMETHODDETAIL.BASECURRENCYID
                        from
                            dbo.GIFTINKINDPAYMENTMETHODDETAIL
                        where
                            GIFTINKINDPAYMENTMETHODDETAIL.ID = @ID;

                        set @BASEAMOUNTSAREVALID =
                            case 
                                when (@TRANSACTIONCURRENCYID = @BASECURRENCYID)
                                    then 1
                                when exists 
                                (
                                    select
                                        1
                                    from 
                                        dbo.GIFTINKINDSALE
                                    where 
                                        GIFTINKINDSALE.GIFTINKINDPAYMENTMETHODDETAILID = @ID
                                        and GIFTINKINDSALE.BASEEXCHANGERATEID is null
                                )
                                    then 0
                                else 1
                            end;

                    end

                return 0;