USP_DATAFORMTEMPLATE_ADD_CREDITMEMO

The save procedure used by the add dataform template "Credit Memo 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.
@VENDORID uniqueidentifier IN Vendor
@CREDITMEMONUMBER nvarchar(60) IN Credit memo number
@PURCHASEORDERID nvarchar(20) IN PO number
@AMOUNT money IN Credit memo amount
@DATE datetime IN Credit memo date
@POSTDATE datetime IN Post date
@POSTSTATUSCODE tinyint IN Post status
@BANKACCOUNTID uniqueidentifier IN Bank account
@REMITADDRESSID uniqueidentifier IN Remit to address
@FINANCIALTRANSACTION1099DISTRIBUTIONS xml IN 1099 distribution
@DESCRIPTION nvarchar(100) IN Credit memo description
@LINEITEMS xml IN Line items

Definition

Copy


          CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_CREDITMEMO
          (
            @ID uniqueidentifier = null output,
            @CHANGEAGENTID uniqueidentifier = null,
            @VENDORID uniqueidentifier,
            @CREDITMEMONUMBER nvarchar(60) = '',
            @PURCHASEORDERID nvarchar(20) = '',
            @AMOUNT money = 0,
            @DATE datetime = null,
            @POSTDATE datetime = null,
            @POSTSTATUSCODE tinyint = 1,
              @BANKACCOUNTID uniqueidentifier = null,
            @REMITADDRESSID uniqueidentifier = null,
        @FINANCIALTRANSACTION1099DISTRIBUTIONS xml = null,
            @DESCRIPTION  nvarchar(100) = ''
                ,@LINEITEMS xml = null
          )
          as

          set nocount on;

          declare @CURRENTDATE datetime;
          declare @LINEITEMID uniqueidentifier;

          begin try

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

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

            set @CURRENTDATE = getdate();

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

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

            exec dbo.USP_FINANCIALTRANSACTION_ADD @ID, @CHANGEAGENTID, @VENDORID, @CREDITMEMONUMBER, 102, @AMOUNT, @DATE, @POSTDATE, @POSTSTATUSCODE, @DESCRIPTION, @LINEITEMS;

            insert into dbo.CREDITMEMO
            (
              ID, 
              PURCHASEORDERID, 
              BANKACCOUNTID,
              REMITADDRESSID,
              ADDEDBYID, 
              CHANGEDBYID, 
              DATEADDED, 
              DATECHANGED
            )
            values
            (
              @ID
              @PURCHASEORDERID
              @BANKACCOUNTID,
              @REMITADDRESSID,
              @CHANGEAGENTID
              @CHANGEAGENTID
              @CURRENTDATE
              @CURRENTDATE
            );

      exec USP_FINANCIALTRANSACTIONSCHEDULE_ADD null, @CHANGEAGENTID, @ID, @DATE, @AMOUNT

      if @FINANCIALTRANSACTION1099DISTRIBUTIONS is not null
        exec dbo.USP_FINANCIALTRANSACTION_1099DISTRIBUTION_UPDATEFROMXML @ID, @VENDORID, @FINANCIALTRANSACTION1099DISTRIBUTIONS, @CHANGEAGENTID, @CURRENTDATE;
      else if exists(select * from dbo.VENDOR1099DISTRIBUTION where VENDOR1099SETTINGID = @VENDORID)
        insert into dbo.FINANCIALTRANSACTION1099DISTRIBUTION (
          ID,
          FINANCIALTRANSACTIONID,
          BOXNUMBER1099ID,
          STATEID,
          [PERCENT],
          AMOUNT,
          ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
        select 
          newid(), 
          @ID
          BOXNUMBER1099ID, 
          STATEID, 
          [PERCENT],
          ((@AMOUNT * [PERCENT]) / 100),
          @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
        from dbo.VENDOR1099DISTRIBUTION 
        where VENDOR1099SETTINGID = @VENDORID;

          end try

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

          return 0;