USP_DATAFORMTEMPLATE_VIEW_RECONCILIATIONDETAILS

The load procedure used by the view dataform template "Reconciliation 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.
@DATALOADED bit INOUT Output parameter indicating whether or not data was actually loaded.
@USERID nvarchar(50) INOUT User name
@RECONCILIATIONDATE datetime INOUT Reconcile date
@DEPOSITDETAILS xml INOUT DEPOSITDETAILS
@OTHERDETAILS xml INOUT OTHERDETAILS
@TOTALDEPOSITAMOUNT money INOUT Total deposit amount

Definition

Copy


                CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_RECONCILIATIONDETAILS
                (
                    @ID uniqueidentifier,
                    @DATALOADED bit = 0 output,
                    @USERID nvarchar(50) = null output,
                    @RECONCILIATIONDATE datetime = null output,
                    @DEPOSITDETAILS xml = null output,
                    @OTHERDETAILS xml = null output,
                    @TOTALDEPOSITAMOUNT money = null output
                )
                as
                    set nocount on;

                    set @DATALOADED = 0;

                    select 
                        @DATALOADED = 1,
                        @USERID = dbo.UFN_APPUSER_GETNAME([APPUSER].[ID]),
                        @RECONCILIATIONDATE = [RECONCILIATION].[RECONCILIATIONDATE]
                    from dbo.[RECONCILIATION]
                    inner join dbo.[APPUSER] on [RECONCILIATION].[APPUSERID] = [APPUSER].[ID] 
                    where [RECONCILIATION].[ID] = @ID;

                    declare @RECONCILIATIONDETAILS xml = null
                    select @RECONCILIATIONDETAILS = (
                        select
                            [PAYMENTTYPES].[PAYMENTMETHODCODE],
                            [PAYMENTTYPES].[PAYMENTMETHOD],
                            [PAYMENTTYPES].[DEPOSIT],
                            [PAYMENTTYPES].[EXPECTED],
                            [PAYMENTTYPES].[OTHERPAYMENTMETHODCODEID]
                        from (
                            select 
                                isnull(EXPECTED.PAYMENTMETHODCODE, REFUND.PAYMENTMETHODCODE) as PAYMENTMETHODCODE,
                                case isnull(EXPECTED.PAYMENTMETHODCODE, REFUND.PAYMENTMETHODCODE)
                                    when 2 then dbo.UFN_CREDITTYPECODE_GETDESCRIPTION(isnull(EXPECTED.CREDITTYPECODEID, REFUND.CREDITTYPECODEID))
                                    when 10 then dbo.UFN_OTHERPAYMENTMETHODCODE_GETDESCRIPTION(isnull(EXPECTED.OTHERPAYMENTMETHODCODEID, REFUND.OTHERPAYMENTMETHODCODEID))
                                    else dbo.UFN_REVENUEPAYMENTMETHOD_PAYMENTMETHODCODE_GETDESCRIPTION(isnull(EXPECTED.PAYMENTMETHODCODE, REFUND.PAYMENTMETHODCODE))
                                end as PAYMENTMETHOD,

                                isnull([EXPECTED].[EXPECTEDAMOUNT], 0) - isnull([REFUND].[REFUNDAMOUNT],0) [DEPOSIT],
                                isnull([EXPECTED].[EXPECTEDCOUNT], 0) as [EXPECTED],
                                isnull([EXPECTED].[OTHERPAYMENTMETHODCODEID], [REFUND].[OTHERPAYMENTMETHODCODEID]) as [OTHERPAYMENTMETHODCODEID]
                            from 
                            (
                                -- expected count and amount

                                -- from payment tables

                                select
                                    [REVENUEPAYMENTMETHOD].[PAYMENTMETHODCODE] as [PAYMENTMETHODCODE],
                                    [CREDITCARDPAYMENTMETHODDETAIL].[CREDITTYPECODEID],
                                    [OTHERPAYMENTMETHODDETAIL].[OTHERPAYMENTMETHODCODEID],
                                    count(SALESORDERPAYMENT.ID)as [EXPECTEDCOUNT],
                                    sum([SALESORDERPAYMENT].[AMOUNT]) as [EXPECTEDAMOUNT]
                                from (select ID, SALESORDERID, PAYMENTID, RECONCILIATIONID, AMOUNT from dbo.SALESORDERPAYMENT where [DONOTRECONCILE] = 0
                                      union all 
                                      select ID, RESERVATIONID as SALESORDERID, PAYMENTID, RECONCILIATIONID, AMOUNT from dbo.RESERVATIONSECURITYDEPOSITPAYMENT
                                ) as SALESORDERPAYMENT 
                                inner join dbo.[REVENUE] 
                                    on [SALESORDERPAYMENT].[PAYMENTID] = [REVENUE].[ID] 
                                inner join dbo.[REVENUEPAYMENTMETHOD] 
                                    on [REVENUEPAYMENTMETHOD].[REVENUEID] = [REVENUE].[ID]
                                left join dbo.[CREDITCARDPAYMENTMETHODDETAIL] on [CREDITCARDPAYMENTMETHODDETAIL].[ID] = [REVENUEPAYMENTMETHOD].[ID]
                                left join dbo.[OTHERPAYMENTMETHODDETAIL] on [OTHERPAYMENTMETHODDETAIL].[ID] = [REVENUEPAYMENTMETHOD].[ID]
                                where 
                                    REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE in (1,2,10) and
                                    [SALESORDERPAYMENT].[RECONCILIATIONID] = @ID
                                group by 
                                    [REVENUEPAYMENTMETHOD].[PAYMENTMETHODCODE],
                                    [CREDITCARDPAYMENTMETHODDETAIL].[CREDITTYPECODEID],
                                    [OTHERPAYMENTMETHODDETAIL].[OTHERPAYMENTMETHODCODEID]

                                union all
                                select 
                                    0 as [PAYMENTMETHODCODE],
                                    null as [CREDITTYPECODEID],
                                    null as [OTHERPAYMENTMETHODCODEID],
                                    (
                                        select count(SALESORDERPAYMENT.ID)as [EXPECTEDCOUNT]
                                        from dbo.[SALESORDERPAYMENT] 
                                        inner join dbo.[REVENUE] 
                                            on [SALESORDERPAYMENT].[PAYMENTID] = [REVENUE].[ID] 
                                        inner join dbo.[REVENUEPAYMENTMETHOD] 
                                            on [REVENUEPAYMENTMETHOD].[REVENUEID] = [REVENUE].[ID]
                                        left join dbo.[CREDITCARDPAYMENTMETHODDETAIL] 
                                            on [CREDITCARDPAYMENTMETHODDETAIL].[ID] = [REVENUEPAYMENTMETHOD].[ID]
                                        left join dbo.[OTHERPAYMENTMETHODDETAIL] 
                                            on [OTHERPAYMENTMETHODDETAIL].[ID] = [REVENUEPAYMENTMETHOD].[ID]
                                        where 
                                            REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 0 and
                                            [SALESORDERPAYMENT].[RECONCILIATIONID] = [RECONCILIATION].[ID] and
                                            [SALESORDERPAYMENT].[DONOTRECONCILE] = 0
                                    ) as [EXPECTEDCOUNT],
                                    [RECONCILIATION].[ACTUALCASH] as [EXPECTEDAMOUNT]
                                from dbo.[RECONCILIATION]
                                where [RECONCILIATION].[ID] = @ID                                        
                            ) as [EXPECTED]

                            full outer join 

                            (
                                select
                                    [CREDITS].[PAYMENTMETHODCODE],
                                    [CREDITS].[CREDITTYPECODEID],
                                    [CREDITS].[OTHERPAYMENTMETHODCODEID],
                                    sum([CREDITS].[AMOUNT]) as [REFUNDAMOUNT]
                                from (
                                    select 
                                        [PAYMENTMETHODCODE],
                                        case when [PAYMENTMETHODCODE] = 2 then
                                            (
                                                select top 1 [CREDITCARDPAYMENTMETHODDETAIL].[CREDITTYPECODEID]
                                                from dbo.[CREDITCARDPAYMENTMETHODDETAIL] 
                                                inner join dbo.[REVENUEPAYMENTMETHOD]
                                                    on [CREDITCARDPAYMENTMETHODDETAIL].[ID] = [REVENUEPAYMENTMETHOD].[ID]
                                                left join dbo.[REVENUESPLIT]
                                                    on [REVENUEPAYMENTMETHOD].[REVENUEID] = [REVENUESPLIT].[REVENUEID]
                                                where 
                                                    [REVENUEPAYMENTMETHOD].[REVENUEID] = [CREDITPAYMENT].[REVENUEID] or
                                                    [REVENUESPLIT].[ID] = [CREDITPAYMENT].[REVENUESPLITID]
                                            ) 
                                            else null 
                                        end as [CREDITTYPECODEID],
                                        [OTHERPAYMENTMETHODCODEID],
                                        [AMOUNT]
                                    from dbo.[CREDITPAYMENT]
                                    where 
                                        [CREDITPAYMENT].[RECONCILIATIONID] = @ID and
                                        [CREDITPAYMENT].[PAYMENTMETHODCODE] in (2,10)
                                ) as [CREDITS]
                                group by
                                    [CREDITS].[PAYMENTMETHODCODE],
                                    [CREDITS].[CREDITTYPECODEID],
                                    [CREDITS].[OTHERPAYMENTMETHODCODEID]

                            ) as REFUND
                                on 
                                (
                                    [EXPECTED].[PAYMENTMETHODCODE] = [REFUND].[PAYMENTMETHODCODE] and
                                    (
                                        ([EXPECTED].[PAYMENTMETHODCODE] = 2 and [EXPECTED].[CREDITTYPECODEID] = [REFUND].[CREDITTYPECODEID]) or 
                                        ([EXPECTED].[PAYMENTMETHODCODE] = 10 and [EXPECTED].[OTHERPAYMENTMETHODCODEID] = [REFUND].[OTHERPAYMENTMETHODCODEID])
                                    )
                                )                
                        ) as [PAYMENTTYPES]    
                        order by 
                            [PAYMENTTYPES].[PAYMENTMETHODCODE], 
                            [PAYMENTTYPES].[PAYMENTMETHOD]
                        for xml raw ('ITEM'), type, elements, root('RECONCILIATIONDETAILS'), BINARY BASE64
                    );

                    select @DEPOSITDETAILS = (
                        select 
                            T.item.value('(PAYMENTMETHODCODE)[1]','tinyint') as [PAYMENTMETHODCODE],
                            T.item.value('(PAYMENTMETHOD)[1]','nvarchar(40)') as [PAYMENTMETHOD],
                            T.item.value('(DEPOSIT)[1]','decimal(20,4)') as [DEPOSIT],
                            T.item.value('(EXPECTED)[1]','integer') as [EXPECTED]
                        from @RECONCILIATIONDETAILS.nodes('/RECONCILIATIONDETAILS/ITEM') T(item) 
                        where T.item.value('(PAYMENTMETHODCODE)[1]','tinyint') in (0,1,2)
                            or (T.item.value('(PAYMENTMETHODCODE)[1]','tinyint') = 10 and
                                T.item.value('(OTHERPAYMENTMETHODCODEID)[1]','uniqueidentifier') not in (select ID from dbo.NONDEPOSITABLEPAYMENTMETHOD)
                                )                                    
                        for xml raw ('ITEM'), type, elements, root('DEPOSITDETAILS'), BINARY BASE64
                    );

                    select @TOTALDEPOSITAMOUNT = (
                        select coalesce(sum(T.item.value('(DEPOSIT)[1]','decimal(20,4)')),0)
                        from @DEPOSITDETAILS.nodes('/DEPOSITDETAILS/ITEM') T(item)
                    );

                    select @OTHERDETAILS = (
                        select
                            [OTHERDETAILS].[PAYMENTMETHODCODE],
                            [OTHERDETAILS].[PAYMENTMETHOD],
                            [OTHERDETAILS].[AMOUNT],
                            [OTHERDETAILS].[EXPECTED],
                            [OTHERDETAILS].[ISREFUND]
                        from (
                            select 
                                T.item.value('(PAYMENTMETHODCODE)[1]','tinyint') as [PAYMENTMETHODCODE],
                                T.item.value('(PAYMENTMETHOD)[1]','nvarchar(40)') as [PAYMENTMETHOD],
                                T.item.value('(DEPOSIT)[1]','decimal(20,4)') as [AMOUNT],
                                T.item.value('(EXPECTED)[1]','integer') as [EXPECTED],
                                cast(0 as bit) as [ISREFUND]
                            from @RECONCILIATIONDETAILS.nodes('/RECONCILIATIONDETAILS/ITEM') T(item)
                            where T.item.value('(PAYMENTMETHODCODE)[1]','tinyint') = 10
                                and T.item.value('(OTHERPAYMENTMETHODCODEID)[1]','uniqueidentifier') in (select ID from dbo.NONDEPOSITABLEPAYMENTMETHOD)
                            union all
                            select
                                [REFUNDPAYMENTTYPES].[PAYMENTMETHODCODE],
                                [REFUNDPAYMENTTYPES].[PAYMENTMETHOD],
                                -1 * [REFUNDPAYMENTTYPES].[AMOUNT],
                                [REFUNDPAYMENTTYPES].[EXPECTED],
                                [REFUNDPAYMENTTYPES].[ISREFUND]
                            from (
                                select
                                    [CREDITS].[PAYMENTMETHODCODE],
                                    case [CREDITS].[PAYMENTMETHODCODE]
                                        when 2 then dbo.UFN_CREDITTYPECODE_GETDESCRIPTION([CREDITS].[CREDITTYPECODEID])
                                        when 10 then dbo.UFN_OTHERPAYMENTMETHODCODE_GETDESCRIPTION([CREDITS].[OTHERPAYMENTMETHODCODEID])
                                        else dbo.UFN_REVENUEPAYMENTMETHOD_PAYMENTMETHODCODE_GETDESCRIPTION([CREDITS].[PAYMENTMETHODCODE])
                                    end [PAYMENTMETHOD],
                                    sum([CREDITS].[AMOUNT]) as [AMOUNT],
                                    count([CREDITS].[ID]) as [EXPECTED],
                                    cast(1 as bit) as [ISREFUND]
                                from (
                                    select 
                                        [CREDITPAYMENT].[ID] as [ID],
                                        [PAYMENTMETHODCODE],
                                        case when [PAYMENTMETHODCODE] = 2 then
                                            (
                                                select top 1 [CREDITCARDPAYMENTMETHODDETAIL].[CREDITTYPECODEID]
                                                from dbo.[CREDITCARDPAYMENTMETHODDETAIL] 
                                                inner join dbo.[REVENUEPAYMENTMETHOD]
                                                    on [CREDITCARDPAYMENTMETHODDETAIL].[ID] = [REVENUEPAYMENTMETHOD].[ID]
                                                left join dbo.[REVENUESPLIT]
                                                    on [REVENUEPAYMENTMETHOD].[REVENUEID] = [REVENUESPLIT].[REVENUEID]
                                                where 
                                                    [REVENUEPAYMENTMETHOD].[REVENUEID] = [CREDITPAYMENT].[REVENUEID] or
                                                    [REVENUESPLIT].[ID] = [CREDITPAYMENT].[REVENUESPLITID]
                                            ) 
                                            else null 
                                        end as [CREDITTYPECODEID],
                                        [OTHERPAYMENTMETHODCODEID],
                                        [AMOUNT]
                                    from dbo.[CREDITPAYMENT]
                                    where 
                                        [CREDITPAYMENT].[RECONCILIATIONID] = @ID and
                                        [CREDITPAYMENT].[PAYMENTMETHODCODE] in (0, 1, 2, 10)
                                ) as [CREDITS]
                                group by
                                    [CREDITS].[PAYMENTMETHODCODE],
                                    [CREDITS].[CREDITTYPECODEID],
                                    [CREDITS].[OTHERPAYMENTMETHODCODEID]
                            ) as [REFUNDPAYMENTTYPES]
                        ) as [OTHERDETAILS]
                        for xml raw ('ITEM'), type, elements, root('OTHERDETAILS'), BINARY BASE64
                    );

                return 0;