USP_DATAFORMTEMPLATE_EDIT_CHARGE

The save procedure used by the edit dataform template "Charge 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.
@CHARGEDATE date IN Charge date
@DUEDATE date IN Due date
@POSTDATE datetime IN Post date
@POSTSTATUSCODE tinyint IN Post status
@BILLINGITEMID uniqueidentifier IN Charging for
@AMOUNT money IN Charge amount
@DESCRIPTION nvarchar(100) IN Description
@CHARGEID nvarchar(60) IN
@SCHOOLID uniqueidentifier IN School
@GRADELEVELID uniqueidentifier IN Grade level

Definition

Copy

                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_CHARGE
                    (
                        @ID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier = null,            
                        @CHARGEDATE date,
                        @DUEDATE date,  
                        @POSTDATE datetime,
                        @POSTSTATUSCODE tinyint,
                        @BILLINGITEMID uniqueidentifier,
                        @AMOUNT money,
                        @DESCRIPTION nvarchar(100),
                        @CHARGEID nvarchar(60),
                        @SCHOOLID uniqueidentifier,
                        @GRADELEVELID uniqueidentifier
                    )
                    as
                        set nocount on;

                        begin try    
                            if @AMOUNT <= 0 
                                raiserror('ERR_NOT_ALLOW_ZEROAMOUNT', 13, 1);

                            declare @STUDENTPROGRESSIONID uniqueidentifier;
                            declare @STUDENTENROLLMENTID uniqueidentifier;

                            declare @CURRENTDATE datetime;
                            set @CURRENTDATE = getdate();

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

                            if @POSTSTATUSCODE = 3 and @POSTDATE is not null
                                set @POSTDATE = null;

                            declare @STUDENTID uniqueidentifier
                            select @STUDENTID=CONSTITUENTID from dbo.FINANCIALTRANSACTION where ID=@ID

                            exec dbo.USP_FINANCIALTRANSACTION_EDIT @ID, @CHANGEAGENTID, @STUDENTID, @CHARGEID, @AMOUNT, @CHARGEDATE, @POSTDATE, @POSTSTATUSCODE;

                            update dbo.CHARGE set
                                DUEDATE = @DUEDATE,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE
                            where
                                ID = @ID;            

                            -- update the line items to handle the billing item
                            update dbo.CHARGELINEITEM
                                set BILLINGITEMID = @BILLINGITEMID,
                                    CHANGEDBYID = @CHANGEAGENTID,
                                    DATECHANGED = @CURRENTDATE
                            from dbo.CHARGELINEITEM
                                inner join dbo.FINANCIALTRANSACTIONLINEITEM
                                    on CHARGELINEITEM.ID = FINANCIALTRANSACTIONLINEITEM.ID
                            where (FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @ID) and
                                    (FINANCIALTRANSACTIONLINEITEM.TYPECODE = 0) and
                                    (FINANCIALTRANSACTIONLINEITEM.DELETEDON is null);

                            -- Update the basic line items with the new description
                            update dbo.FINANCIALTRANSACTIONLINEITEM
                                set DESCRIPTION = @DESCRIPTION,
                                    TRANSACTIONAMOUNT = @AMOUNT,
                                    BASEAMOUNT = @AMOUNT,
                                    ORGAMOUNT = @AMOUNT,
                                    CHANGEDBYID = @CHANGEAGENTID,
                                    DATECHANGED = @CURRENTDATE,
                                    POSTDATE = @POSTDATE,
                                    POSTSTATUSCODE = @POSTSTATUSCODE
                            from dbo.FINANCIALTRANSACTIONLINEITEM
                            where (FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @ID) and 
                                    (FINANCIALTRANSACTIONLINEITEM.TYPECODE = 0) and
                                    (FINANCIALTRANSACTIONLINEITEM.DELETEDON is null);

                            --Update student charge information
                            declare @PRICETYPECODE tinyint

                            select @PRICETYPECODE=PRICETYPECODE from dbo.BILLINGITEM where dbo.BILLINGITEM.ID=@BILLINGITEMID

                            if ((@PRICETYPECODE=2 or @PRICETYPECODE = 3) and (@SCHOOLID IS NOT NULL))
                            begin
                                select @STUDENTPROGRESSIONID =dbo.UFN_STUDENT_GETSTUDENTPROGRESSIONBYDATE(@CHARGEDATE, @STUDENTID, @SCHOOLID)

                                --If there is no valid student progression check for valid enrollment
                                if ((@STUDENTPROGRESSIONID is null) and (@PRICETYPECODE = 3))
                                    set @STUDENTENROLLMENTID = dbo.UFN_STUDENT_GETENROLLMENTBYDATE(@STUDENTID, @SCHOOLID, @CHARGEDATE)

                                update dbo.STUDENTCHARGE set
                                    STUDENTPROGRESSIONID = @STUDENTPROGRESSIONID,
                                    EDUCATIONALHISTORYID = @STUDENTENROLLMENTID,
                                    CHANGEDBYID = @CHANGEAGENTID,
                                    DATECHANGED = @CURRENTDATE
                                where 
                                    ID = @ID
                            end
                        end try

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

                        return 0;