USP_DATAFORMTEMPLATE_EDIT_INVOICESCHEDULE

The save procedure used by the edit dataform template "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.
@INVOICESCHEDULES xml IN Invoice schedule

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_INVOICESCHEDULE (
    @ID uniqueidentifier
    ,@CHANGEAGENTID uniqueidentifier = null
  ,@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

        -- handle updating the data
        update dbo.INVOICE set
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @CURRENTDATE
        where ID = @ID;

    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;