USP_DATAFORMTEMPLATE_ADD_PLEDGEWRITEOFF

The save procedure used by the add dataform template "Pledge Write-off Add Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@REVENUEID uniqueidentifier IN Input parameter indicating the context ID for the record being added.
@DATE datetime IN Date
@WRITEOFFTOTALAMOUNT money IN Amount
@POSTSTATUSCODE tinyint IN GL post status
@POSTDATE datetime IN GL post date
@REASON nvarchar(300) IN Write-off reason
@INSTALLMENTS xml IN

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_PLEDGEWRITEOFF (
                        @ID uniqueidentifier = null output,
                        @CHANGEAGENTID uniqueidentifier,
                        @REVENUEID uniqueidentifier,
                        @DATE datetime,
                        @WRITEOFFTOTALAMOUNT money = 0,
                        @POSTSTATUSCODE tinyint = 1,
                        @POSTDATE datetime = null,
                        @REASON nvarchar(300) = null,
                        @INSTALLMENTS xml
                        )
                    as
                    begin
                        set nocount on;

                        declare @CURRENTDATE datetime;
                        declare @PLEDGEID uniqueidentifier;

                        if @ID is null
                            set @ID = NewID();

                        set @CURRENTDATE = GetDate();

                        select 
                            @PLEDGEID = REVENUE.ID
                        from 
                            dbo.REVENUE
                        where
                            REVENUE.ID = @REVENUEID;

                        if @CHANGEAGENTID is null
                            exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

                        begin try

                            insert into dbo.WRITEOFF (ID,REVENUEID,DATE,POSTSTATUSCODE,POSTDATE,REASON,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
                                values (@ID,@PLEDGEID,@DATE,@POSTSTATUSCODE,@POSTDATE,@REASON,@CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE);

                            exec dbo.USP_INSTALLMENT_WRITEOFFINSTALLMENTS @ID,@WRITEOFFTOTALAMOUNT,@CHANGEAGENTID,@CURRENTDATE,0,@INSTALLMENTS;

                            insert into dbo.WRITEOFFSPLIT(ID, WRITEOFFID, DESIGNATIONID, AMOUNT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                            select
                                newid(),
                                @ID
                                DESIGNATIONID,
                                AMOUNT,
                                @CHANGEAGENTID,
                                @CHANGEAGENTID,
                                @CURRENTDATE,
                                @CURRENTDATE
                            from (select INSTALLMENTSPLIT.DESIGNATIONID, sum(INSTALLMENTSPLITWRITEOFF.AMOUNT) AMOUNT
                                from dbo.INSTALLMENTSPLITWRITEOFF
                                inner join dbo.INSTALLMENTSPLIT
                                    on INSTALLMENTSPLITWRITEOFF.INSTALLMENTSPLITID = INSTALLMENTSPLIT.ID
                                where 
                                    INSTALLMENTSPLITWRITEOFF.WRITEOFFID = @ID
                                    and INSTALLMENTSPLIT.PLEDGEID = @PLEDGEID
                                group by INSTALLMENTSPLIT.DESIGNATIONID) a

                            --Save the write-off GL distributions

                            if @POSTSTATUSCODE <> 2
                                exec dbo.USP_SAVE_WRITEOFFGLDISTRIBUTION @PLEDGEID, @CHANGEAGENTID, @CURRENTDATE;

                        end try

                        begin catch
                            exec dbo.USP_RAISE_ERROR;
                            return 1;
                        end catch

                        return 0;
                    end