USP_SALESDEPOSITPROCESS_GETSALESDEPOSITTEMPLATEPARAMETERS_2
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_SALESDEPOSITPROCESS_GETSALESDEPOSITTEMPLATEPARAMETERS_2
(
@ID uniqueidentifier = null
)
as begin
declare @ISRECONCILEDPROCESS bit = null
declare @ISGROUPEDBYDATE bit = null
declare @PROCESSNAME nvarchar(100) = null
declare @PAYMENTDATE date = null
select
@ISRECONCILEDPROCESS = [ISRECONCILEDPROCESS],
@ISGROUPEDBYDATE = [GROUPBYDATE],
@PROCESSNAME = NAME,
@PAYMENTDATE = dbo.UFN_SALESDEPOSITPROCESS_COMPUTEPAYMENTDATE(PAYMENTDATEOPTIONCODE, PAYMENTDATE)
from dbo.[SALESDEPOSITPROCESS]
where [ID] = @ID
declare @ALLOWGLDISTRIBUTIONS bit;
select @ALLOWGLDISTRIBUTIONS = ALLOWGLDISTRIBUTIONS from dbo.UFN_PDACCOUNTSYSTEM_DEFAULTORSYSTEM();
select
[SALESDEPOSITTEMPLATE].[ID],
[SALESDEPOSITTEMPLATE].[NAME],
[SALESDEPOSITTEMPLATE].[BANKACCOUNTID],
cast([PAYMENTS].[POSTSTATUSCODE] as tinyint) [POSTSTATUSCODE],
case [SALESDEPOSITTEMPLATE].[REFERENCECODE]
when 0 then [SALESDEPOSITTEMPLATE].[NAME]
when 1 then @PROCESSNAME
when 2 then @PROCESSNAME + ' ' + [SALESDEPOSITTEMPLATE].[NAME]
end as [REFERENCE],
dbo.UFN_SALESDEPOSITTEMPLATE_CALCULATEDEFAULTALLOWEDPAYMENTMETHODS([SALESDEPOSITTEMPLATE].[ID]) as [DEFAULTALLOWEDPAYMENTMETHODS],
[PAYMENTS].[PAYMENTTOTAL] as [PAYMENTTOTAL],
[PAYMENTS].[CREDITPAYMENTTOTAL] as [CREDITPAYMENTTOTAL],
case --If there is a cash difference, put it only in a "not posted" deposit, unless GL is turned off
when @ALLOWGLDISTRIBUTIONS = 0 or PAYMENTS.[POSTSTATUSCODE] = 1 then
dbo.UFN_SALESDEPOSITTEMPLATE_UNLINKEDRECONCILEDPAYMENTS_GETCASHDIFFERENCE_3([SALESDEPOSITTEMPLATE].[ID], [PAYMENTS].[TRANSACTIONDATE], @PAYMENTDATE)
else
0
end as [CASHDIFFERENCE],
[PAYMENTS].[PAYMENTCOUNT] as [NUMBEROFPAYMENTS],
case when [PAYMENTS].[CREDITPAYMENTTOTAL] > 0 then cast(1 as bit) else cast(0 as bit) end as [HASCREDITPAYMENTS],
@ISRECONCILEDPROCESS as [ISRECONCILEDPROCESS],
[PAYMENTS].[TRANSACTIONDATE],
case --If there is a check difference, put it only in a "not posted" deposit, unless GL is turned off
when @ALLOWGLDISTRIBUTIONS = 0 or PAYMENTS.[POSTSTATUSCODE] = 1 then
dbo.UFN_SALESDEPOSITTEMPLATE_UNLINKEDRECONCILEDPAYMENTS_GETCHECKDIFFERENCE_3([SALESDEPOSITTEMPLATE].[ID], [PAYMENTS].[TRANSACTIONDATE], @PAYMENTDATE)
else
0
end as [CHECKDIFFERENCE],
[PAYMENTS].TRANSACTIONCURRENCYID,
BANKACCOUNT.TRANSACTIONCURRENCYID as BANKACCOUNTCURRENCYID,
CS.BASECURRENCYID
from dbo.[SALESDEPOSITTEMPLATE]
inner join dbo.BANKACCOUNT on BANKACCOUNT.ID = SALESDEPOSITTEMPLATE.BANKACCOUNTID
inner join dbo.PDACCOUNTSYSTEM PDAS on BANKACCOUNT.PDACCOUNTSYSTEMID = PDAS.ID
inner join dbo.CURRENCYSET CS on CS.ID = PDAS.CURRENCYSETID
outer apply (
select
coalesce(sum([PAYMENTAMOUNT]),0) as [PAYMENTTOTAL],
coalesce(sum([CREDITPAYMENTAMOUNT]),0) as [CREDITPAYMENTTOTAL],
coalesce(sum([ISPAYMENT]),0) as [PAYMENTCOUNT],
[POSTSTATUSCODE],
cast([TRANSACTIONDATE] as datetime) as [TRANSACTIONDATE],
[TRANSACTIONCURRENCYID]
from
(
--Not yet posted payments
select
[AMOUNT] as [PAYMENTAMOUNT],
0 as [CREDITPAYMENTAMOUNT],
1 as [POSTSTATUSCODE],
case @ISGROUPEDBYDATE
when 1 then cast([TRANSACTIONDATE] as date)
else null
end as [TRANSACTIONDATE],
cast(1 as int) as [ISPAYMENT],
[TRANSACTIONCURRENCYID]
from dbo.UFN_TREASURYDEPOSITTEMPLATE_GETUNLINKEDPAYMENTS(SALESDEPOSITTEMPLATE.ID, 1, null, @PAYMENTDATE)
--Do not post payments
union all
select
[AMOUNT] as [PAYMENTAMOUNT],
0 as [CREDITPAYMENTAMOUNT],
3 as [POSTSTATUSCODE],
case @ISGROUPEDBYDATE
when 1 then cast([TRANSACTIONDATE] as date)
else null
end as [TRANSACTIONDATE],
cast(1 as int) as [ISPAYMENT],
[TRANSACTIONCURRENCYID]
from dbo.UFN_TREASURYDEPOSITTEMPLATE_GETUNLINKEDPAYMENTS(SALESDEPOSITTEMPLATE.ID, 3, null, @PAYMENTDATE)
--Credit payments
union all
select
0 as [PAYMENTAMOUNT],
[AMOUNT] as [CREDITPAYMENTAMOUNT],
1 as [POSTSTATUSCODE],
case @ISGROUPEDBYDATE
when 1 then cast([TRANSACTIONDATE] as date)
else null
end as [TRANSACTIONDATE],
cast(0 as int) as [ISPAYMENT],
[TRANSACTIONCURRENCYID]
from dbo.UFN_TREASURYDEPOSITTEMPLATE_GETUNLINKEDCREDITPAYMENTS(SALESDEPOSITTEMPLATE.ID, 1, null, null, @PAYMENTDATE)
--Credit payments (DNP)
union all
select
0 as [PAYMENTAMOUNT],
[AMOUNT] as [CREDITPAYMENTAMOUNT],
3 as [POSTSTATUSCODE],
case @ISGROUPEDBYDATE
when 1 then cast([TRANSACTIONDATE] as date)
else null
end as [TRANSACTIONDATE],
cast(0 as int) as [ISPAYMENT],
[TRANSACTIONCURRENCYID]
from dbo.UFN_TREASURYDEPOSITTEMPLATE_GETUNLINKEDCREDITPAYMENTS(SALESDEPOSITTEMPLATE.ID, 3, null, null, @PAYMENTDATE)
--Adding reconciliation submission dates for reconciliations without an order or credit payment
--These reconciliations may have an over/short amount to account for on those dates
union all
select
0 as [PAYMENTAMOUNT],
0 as [CREDITPAYMENTAMOUNT],
case when @ALLOWGLDISTRIBUTIONS = 1 then 1 else 3 end as [POSTSTATUSCODE],
case @ISGROUPEDBYDATE
when 1 then cast([ORIGINALSUBMISSIONDATE] as date)
else null
end as [TRANSACTIONDATE],
cast(0 as int) as [ISPAYMENT],
(select top 1 ID from dbo.CURRENCY where ISORGANIZATIONCURRENCY = 1) as TRANSACTIONCURRENCYID
from dbo.[RECONCILIATION]
where
[STATUSCODE] > 1 and CASHOVERSHORTDEPOSITED = 0 and
not exists(select 1
from (
select RECONCILIATIONID, PAYMENTID, DONOTRECONCILE from dbo.SALESORDERPAYMENT
union all
select RECONCILIATIONID, PAYMENTID, 0 from dbo.RESERVATIONSECURITYDEPOSITPAYMENT) SALESORDERPAYMENT
inner join dbo.REVENUEPAYMENTMETHOD on SALESORDERPAYMENT.PAYMENTID = REVENUEPAYMENTMETHOD.REVENUEID
where RECONCILIATIONID = RECONCILIATION.ID and DONOTRECONCILE = 0 and REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 0)
and not exists(select 1 from dbo.CREDITPAYMENT where RECONCILIATIONID = RECONCILIATION.ID and CREDITPAYMENT.PAYMENTMETHODCODE = 0)
union all
select
0 as [PAYMENTAMOUNT],
0 as [CREDITPAYMENTAMOUNT],
case when @ALLOWGLDISTRIBUTIONS = 1 then 1 else 3 end as [POSTSTATUSCODE],
case @ISGROUPEDBYDATE
when 1 then cast([ORIGINALSUBMISSIONDATE] as date)
else null
end as [TRANSACTIONDATE],
cast(0 as int) as [ISPAYMENT],
(select top 1 ID from dbo.CURRENCY where ISORGANIZATIONCURRENCY = 1) as TRANSACTIONCURRENCYID
from dbo.[RECONCILIATION]
where
[STATUSCODE] > 1 and CHECKOVERSHORTDEPOSITED = 0 and
not exists(select 1
from (
select RECONCILIATIONID, PAYMENTID, DONOTRECONCILE from dbo.SALESORDERPAYMENT
union all
select RECONCILIATIONID, PAYMENTID, 0 from dbo.RESERVATIONSECURITYDEPOSITPAYMENT) SALESORDERPAYMENT
inner join dbo.REVENUEPAYMENTMETHOD on SALESORDERPAYMENT.PAYMENTID = REVENUEPAYMENTMETHOD.REVENUEID
where RECONCILIATIONID = RECONCILIATION.ID and DONOTRECONCILE = 0 and REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 1)
and not exists(select 1 from dbo.CREDITPAYMENT where RECONCILIATIONID = RECONCILIATION.ID and CREDITPAYMENT.PAYMENTMETHODCODE = 1)
) [TRANSACTIONS]
group by [TRANSACTIONDATE], [POSTSTATUSCODE], [TRANSACTIONCURRENCYID]
) [PAYMENTS]
where SALESDEPOSITTEMPLATE.INCLUDEINPROCESS = 1
and SALESDEPOSITTEMPLATE.SALESDEPOSITPROCESSID = @ID
end