USP_DATAFORMTEMPLATE_EDITLOAD_DISBURSEMENTPROCESS_PRINT_EDIT
The load procedure used by the edit dataform template "Disbursement Process Print Checks"
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. |
@CHECKS_DISBURSEMENTDATE | date | INOUT | Disbursement date |
@CHECKS_NUMBEROFDISBURSEMENTS | int | INOUT | Number of disbursements |
@CHECKS_TOTALAMOUNT | money | INOUT | Total amount |
@ASSIGNDISBURSEMENTSCODE | tinyint | INOUT | Assign disbursements value |
@CHECKS_NEXTUNUSED | int | INOUT | Start number |
@RANGESGRID | xml | INOUT | |
@CHECKS_PRINTERID | uniqueidentifier | INOUT | Printer |
@CHECKS_FORMAT | uniqueidentifier | INOUT | Format |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITLOAD_DISBURSEMENTPROCESS_PRINT_EDIT(
@ID uniqueidentifier
,@DATALOADED bit = 0 output
,@TSLONG bigint = 0 output
,@CHECKS_DISBURSEMENTDATE date = null output
,@CHECKS_NUMBEROFDISBURSEMENTS int = null output
,@CHECKS_TOTALAMOUNT money = null output
,@ASSIGNDISBURSEMENTSCODE tinyint = null output
,@CHECKS_NEXTUNUSED int = null output
,@RANGESGRID xml = null output
,@CHECKS_PRINTERID uniqueidentifier = null output
,@CHECKS_FORMAT uniqueidentifier = null output
)
as
set nocount on;
-- be sure to set these, in case the select returns no rows
set @DATALOADED = 0
set @TSLONG = 0
-- Make sure this disbursement process has a disbursement format.
-- ****
declare @COUNT integer;
select
@COUNT = count(*)
from
dbo.DISBURSEMENTPROCESSFORMAT as DPF
where
DPF.DISBURSEMENTPROCESSID = @ID
if @COUNT = 0
raiserror ('A disbursement format is required.', 16, 1)
-- ****
-- Make sure at least one transaction is included.
-- $$$$
if not exists
(
select *
from dbo.DISBURSEMENTPROCESS as DP
inner join dbo.DISBURSEMENTPROCESSDISBURSEMENT as DPD on DP.ID = DPD.DISBURSEMENTPROCESSID
inner join dbo.FINANCIALTRANSACTION as FT on DPD.ID= FT.ID
inner join dbo.FINANCIALTRANSACTIONAPPLICATION as FTA on FT.ID = FTA.FINANCIALTRANSACTIONID AND FTA.AMOUNT <> 0
where DP.ID = @ID
)
begin
raiserror('At least one transaction must be included before creating disbursements.', 16, 1)
end
-- $$$$
select
@DATALOADED = 1
,@CHECKS_DISBURSEMENTDATE = DP.DISBURSEMENTDATE
,@CHECKS_NUMBEROFDISBURSEMENTS = DISBSUMMARY.NUMBEROFDISBURSEMENTS
,@CHECKS_TOTALAMOUNT = DISBSUMMARY.TOTALAMOUNT
,@CHECKS_NEXTUNUSED = (
select
case when max(TRANSACTIONNUMBER)>0 then max(TRANSACTIONNUMBER) else 0 end
from
dbo.BANKACCOUNTTRANSACTION as BAT
where
BAT.BANKACCOUNTID = DP.BANKACCOUNTID and BAT.DELETED = 0
)+1
,@CHECKS_PRINTERID = DPF.PRINTERID
,@CHECKS_FORMAT = DF.ID
from
dbo.DISBURSEMENTPROCESS as DP
inner join dbo.DISBURSEMENTPROCESSFORMAT as DPF on DP.ID = DPF.DISBURSEMENTPROCESSID
inner join dbo.DISBURSEMENTFORMAT as DF on DPF.DISBURSEMENTFORMATID = DF.ID and DF.PAYMENTMETHODCODE = 0
left outer join
(
select
COUNT(*) as NUMBEROFDISBURSEMENTS
,SUM(FT.TRANSACTIONAMOUNT) as TOTALAMOUNT
,DPD.DISBURSEMENTPROCESSID
from dbo.DISBURSEMENTPROCESSDISBURSEMENT as DPD
inner join dbo.FINANCIALTRANSACTION as FT on DPD.ID = FT.ID AND TYPECODE = 255
where FT.ID in (select DPD.ID
from dbo.DISBURSEMENTPROCESSDISBURSEMENT as DPD
inner join dbo.FINANCIALTRANSACTIONAPPLICATION FTA on FTA.FINANCIALTRANSACTIONID = DPD.ID
where FTA.AMOUNT != 0)
group by DPD.DISBURSEMENTPROCESSID
) as DISBSUMMARY on DISBSUMMARY.DISBURSEMENTPROCESSID = DP.ID
where
DP.ID = @ID
return 0;