USP_DATAFORMTEMPLATE_EDIT_INVOICELINEITEMS

The save procedure used by the edit dataform template "Invoice Line Item Edit Data 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.
@INVOICEAMOUNT money IN Invoice amount
@LINEITEMS xml IN Line items

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_INVOICELINEITEMS (
    @ID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,
    @INVOICEAMOUNT money,
    @LINEITEMS 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 @INVOICEAMOUNT = 0 
      raiserror('ERR_FINANCIALTRANSACTION_LINEITEM_NOZEROAMOUNT', 16, 1);

        declare @DATEDUE datetime;
        select @DATEDUE = DATEDUE from dbo.INVOICE where ID = @ID;

        exec dbo.USP_FINANCIALTRANSACTIONSCHEDULE_UPDATE @ID, @CHANGEAGENTID, @INVOICEAMOUNT, @DATEDUE;

        if exists (
      select FTS.FINANCIALTRANSACTIONID
        from dbo.FINANCIALTRANSACTIONSCHEDULE as FTS
      where 
        FTS.FINANCIALTRANSACTIONID = @ID and FTS.DELETED = 0
      group by
        FTS.FINANCIALTRANSACTIONID
      having
        sum(AMOUNT) <> @INVOICEAMOUNT )
            raiserror('FT_SCHEDULE_AMOUNT_MUST_MATCH_INVOICEAMOUNT', 16, 1);

        if @INVOICEAMOUNT != (select sum(AMOUNT) from dbo.UFN_FINANCIALTRANSACTION_LINEITEMS_FROMITEMLISTXML(@LINEITEMS,0))
            raiserror('ERR_FINANCIALTRANSACTION_LINEITEM_TOTALAMOUNT', 13,1)

        update dbo.FINANCIALTRANSACTION
        set TRANSACTIONAMOUNT = @INVOICEAMOUNT
        where ID = @ID;

        exec dbo.USP_FINANCIALTRANSACTIOLINEITEM_EDIT @ID, @CHANGEAGENTID, @LINEITEMS;
    end try
    begin catch
        exec dbo.USP_RAISE_ERROR
        return 1
    end catch

return 0;