USP_DATAFORMTEMPLATE_ADD_RECEIVABLECREDITINDIVIDUAL

The save procedure used by the add dataform template "Credit Add to Individual 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.
@STUDENTID uniqueidentifier IN Input parameter indicating the context ID for the record being added.
@AMOUNT money IN Credit amount
@CREDITDATE date IN Credit date
@POSTDATE datetime IN Post date
@POSTSTATUSCODE tinyint IN Post status
@BILLINGITEMID uniqueidentifier IN Crediting for
@DESCRIPTION nvarchar(100) IN Description
@SCHOOLID uniqueidentifier IN School
@GRADELEVELID uniqueidentifier IN Grade level
@BILLINGITEMTYPE tinyint IN Type
@APPLICATIONS xml IN Applications

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_RECEIVABLECREDITINDIVIDUAL
                    (
                        @ID uniqueidentifier = null output,
                        @CHANGEAGENTID uniqueidentifier = null,
                        @STUDENTID uniqueidentifier,    
                        @AMOUNT money = 0,
                        @CREDITDATE date = null,
                        @POSTDATE datetime = null,
                        @POSTSTATUSCODE tinyint = 1,
                        @BILLINGITEMID uniqueidentifier = null,
                        @DESCRIPTION nvarchar(100) = null,
                        @SCHOOLID uniqueidentifier = null,
                        @GRADELEVELID uniqueidentifier = null,
                        @BILLINGITEMTYPE tinyint = 0,
                      @APPLICATIONS xml = null
                    )
                    as

                    set nocount on;

                    begin try

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

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

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

                        declare @CREDITID nvarchar(60);
                        declare @STUDENTPROGRESSIONID uniqueidentifier;
                          declare @STUDENTENROLLMENTID uniqueidentifier;

                        -- Transaction type 106 = Credit


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

                          set @CREDITID = dbo.UFN_FINANCIALTRANSACTION_GETNEXTFINANCIALTRANSACTIONID(106);

                          if (@DESCRIPTION is null)
                          begin
                              select @DESCRIPTION = PRODUCT.NAME
                              from dbo.PRODUCT
                              where PRODUCT.ID = @BILLINGITEMID;
                          end

                          exec dbo.USP_FINANCIALTRANSACTION_ADD @ID=@ID, @CHANGEAGENTID=@CHANGEAGENTID, @CONSTITUENTID=@STUDENTID, @TYPECODE=106, @AMOUNT=@AMOUNT, @DATE=@CREDITDATE, @POSTDATE=@POSTDATE, @POSTSTATUSCODE=@POSTSTATUSCODE, @USERDEFINEDID=@CREDITID;

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

                          -- Check the price type first

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

                          if @SCHOOLID is not null
                          begin    
                              if ((@PRICETYPECODE=2) or (@PRICETYPECODE = 3))
                                  select @STUDENTPROGRESSIONID =dbo.UFN_STUDENT_GETSTUDENTPROGRESSIONBYDATE(@CREDITDATE, @STUDENTID, @SCHOOLID)

                              if (@STUDENTPROGRESSIONID is null and @PRICETYPECODE = 3)
                                    set @STUDENTENROLLMENTID = dbo.UFN_STUDENT_GETENROLLMENTBYDATE(@STUDENTID, @SCHOOLID, @CREDITDATE)
                          end

                            insert into dbo.RECEIVABLECREDIT (
                                ID,
                                STUDENTPROGRESSIONID,
                                EDUCATIONALHISTORYID,
                                ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                            values (
                                @ID,
                                @STUDENTPROGRESSIONID,
        @STUDENTENROLLMENTID,
                                @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);

                            -- update the line items to handle the billing item

                            insert into dbo.RECEIVABLECREDITLINEITEM
                                (ID,
                                BILLINGITEMID,
                                ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                            select FINANCIALTRANSACTIONLINEITEM.ID,
                                    @BILLINGITEMID,
                                    @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
                            from dbo.FINANCIALTRANSACTIONLINEITEM
                            where (FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @ID);

                            -- Update the basic line items with the new description

                            update dbo.FINANCIALTRANSACTIONLINEITEM
                                set DESCRIPTION = @DESCRIPTION,
                                    CHANGEDBYID = @CHANGEAGENTID,
                                    DATECHANGED = @CURRENTDATE
                            from dbo.FINANCIALTRANSACTIONLINEITEM
                            where FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @ID;  

                            declare @RECEIVABLECREDITLINEITEMID uniqueidentifier;
                            select top 1 @RECEIVABLECREDITLINEITEMID = FINANCIALTRANSACTIONLINEITEM.ID
                            from FINANCIALTRANSACTION
                                inner join FINANCIALTRANSACTIONLINEITEM
                                    on FINANCIALTRANSACTION.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
                            where (FINANCIALTRANSACTION.ID = @ID) and
                                    (FINANCIALTRANSACTIONLINEITEM.DELETEDON is null) and
                                    (FINANCIALTRANSACTIONLINEITEM.TYPECODE = 0);

                            set @APPLICATIONS = 
                                (select ID uniqueidentifier,
                                        @RECEIVABLECREDITLINEITEMID as SOURCELINEITEMID,
                                        TARGETLINEITEMID,
                                        AMOUNT,
                                        POSTDATE,
                                        POSTSTATUSCODE
                                from dbo.UFN_RECEIVABLEPAYMENTCREDITAPPLICATIONS_FROMITEMLISTXML(@APPLICATIONS)
                                for xml raw('ITEM'),type,elements,root('APPLICATIONS'),BINARY BASE64);

                            exec dbo.USP_FINANCIALTRANSACTION_LINEITEMAPPLICATIONS_EDIT @RECEIVABLECREDITLINEITEMID, null, @CHANGEAGENTID, @APPLICATIONS

                      end try

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

                    return 0;