USP_DATAFORMTEMPLATE_EDIT_UNPAIDINVOICESCHEDULE
The save procedure used by the edit dataform template "Unpaid Invoice Schedule Edit Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter indicating the ID of the record being edited. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@FREQUENCYCODE | smallint | IN | Frequency |
@STARTDATE | date | IN | Starting on |
@NUMBEROFINSTALLMENTS | int | IN | Number of installments |
@INVOICESCHEDULES | xml | IN | Invoice schedules |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_UNPAIDINVOICESCHEDULE (
@ID uniqueidentifier
,@CHANGEAGENTID uniqueidentifier = null
,@FREQUENCYCODE smallint
,@STARTDATE date
,@NUMBEROFINSTALLMENTS integer
,@INVOICESCHEDULES xml
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
begin try
if exists (
select
*
from
dbo.INVOICESCHEDULEINFORMATION as ISI
where
ISI.ID = @ID
)
update dbo.INVOICESCHEDULEINFORMATION
set FREQUENCYCODE = @FREQUENCYCODE
,STARTDATE = @STARTDATE
,NUMBEROFINSTALLMENTS = @NUMBEROFINSTALLMENTS
-- boilerplate
,CHANGEDBYID = @CHANGEAGENTID
,DATECHANGED = @CURRENTDATE
where ID=@ID;
else
insert into dbo.INVOICESCHEDULEINFORMATION
(
ID
,FREQUENCYCODE
,STARTDATE
,NUMBEROFINSTALLMENTS
-- boilerplate
,ADDEDBYID
,CHANGEDBYID
,DATEADDED
,DATECHANGED
)
values
(
@ID
,@FREQUENCYCODE
,@STARTDATE
,@NUMBEROFINSTALLMENTS
-- boilerplate
,@CHANGEAGENTID
,@CHANGEAGENTID
,@CURRENTDATE
,@CURRENTDATE
)
;
exec dbo.USP_INVOICE_SCHEDULES_UPDATEFROMXML @ID, @INVOICESCHEDULES, @CHANGEAGENTID;
if exists(
select
*
from
dbo.FINANCIALTRANSACTION as FT
left outer join dbo.FINANCIALTRANSACTIONSCHEDULE as FTS
on FT.ID = FTS.FINANCIALTRANSACTIONID
where FT.ID = @ID and FTS.DELETED = 0
group by FT.ID, FT.TRANSACTIONAMOUNT
having
COALESCE(SUM(FTS.AMOUNT),FT.TRANSACTIONAMOUNT)<>FT.TRANSACTIONAMOUNT
)
raiserror('FT_SCHEDULE_AMOUNT_MUST_MATCH_INVOICEAMOUNT' , 16, 1);
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0