USP_DATAFORMTEMPLATE_EDITLOAD_INVOICE

The load procedure used by the edit dataform template "Invoice Edit Form"

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter used to load the fields defined on the form.
@DATALOADED bit INOUT Output parameter indicating whether or not data was actually loaded.
@NUMBER nvarchar(60) INOUT Invoice number
@VENDORID uniqueidentifier INOUT Vendor
@AMOUNT money INOUT Invoice amount
@DATE datetime INOUT Invoice date
@PURCHASEORDERID nvarchar(20) INOUT PO number
@DATEDUE datetime INOUT Due date
@POSTSTATUSCODE tinyint INOUT Post status
@POSTDATE datetime INOUT Post date
@DISCOUNTPERCENT decimal(20, 4) INOUT Discount percent
@DISCOUNTAMOUNT money INOUT Discount amount
@DISCOUNTEXPIRATIONDATE datetime INOUT Discount expiration date
@DISCOUNTTOTAL money INOUT Amount after discount
@PAYMENTMETHODCODE tinyint INOUT Payment method
@BANKACCOUNTID uniqueidentifier INOUT Bank account
@REMITADDRESSID uniqueidentifier INOUT Remit to address
@SEPARATEPAYMENT bit INOUT Create a separate disbursement for this invoice
@ISEDITFORM bit INOUT
@FREQUENCYCODE smallint INOUT Frequency
@SCHEDULESTARTDATE date INOUT Starting on
@NUMBEROFINSTALLMENTS int INOUT No. installments
@INVOICESCHEDULES xml INOUT Invoice schedules
@HASSCHEDULE bit INOUT Has Schedule
@BALANCE money INOUT
@TSLONG bigint INOUT Output parameter indicating the TSLONG value of the record being edited. This is used to manage multi-user concurrency issues when multiple users access the same record.
@DESCRIPTION nvarchar(100) INOUT Invoice description
@LINEITEMS xml INOUT Line items
@PAID bit INOUT
@PAYMENTPOSTED bit INOUT

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITLOAD_INVOICE(
    @ID uniqueidentifier,
    @DATALOADED bit = 0 output,
    @NUMBER nvarchar(60) = null output,
    @VENDORID uniqueidentifier = null output,
    @AMOUNT money = null output,
    @DATE datetime = null output,
    @PURCHASEORDERID nvarchar(20) = null output,
    @DATEDUE datetime = null output,
    @POSTSTATUSCODE tinyint = null output,
    @POSTDATE datetime = null output,
    @DISCOUNTPERCENT decimal(20,4) = null output,
    @DISCOUNTAMOUNT money = null output,
    @DISCOUNTEXPIRATIONDATE datetime = null output,
  @DISCOUNTTOTAL money = null output,
    @PAYMENTMETHODCODE tinyint = null output,
    @BANKACCOUNTID uniqueidentifier = null output,
    @REMITADDRESSID uniqueidentifier = null output,
    @SEPARATEPAYMENT bit = null output,
  @ISEDITFORM bit = null output
  ,@FREQUENCYCODE smallint = null output
  ,@SCHEDULESTARTDATE date = null output
  ,@NUMBEROFINSTALLMENTS integer = null output
  ,@INVOICESCHEDULES xml = null output
  ,@HASSCHEDULE bit = null output -- Because Infinity does NOT have nulls except sometimes, like here on the left.
  ,@BALANCE money = null output -- used internally to enable/disable fields
  ,@TSLONG bigint = 0 output
    ,@DESCRIPTION nvarchar(100) = null output
    ,@LINEITEMS xml = null output
  ,@PAID bit = null output
  ,@PAYMENTPOSTED bit = null output
)
as

    set nocount on;
    -- be sure to set these, in case the select returns no rows
    set @DATALOADED = 0;
    set @TSLONG = 0;

    select top 1
        @DATALOADED = case when (select DISBURSEMENTPROCESSID from dbo.INVOICE where ID = @ID) is null then 1 else 0 end,
    @TSLONG = I.TSLONG,
        @NUMBER = F.USERDEFINEDID,
        @VENDORID = F.CONSTITUENTID,
        @AMOUNT = F.TRANSACTIONAMOUNT,
        @DATE = F.[DATE],
        @PURCHASEORDERID = I.PURCHASEORDERID,
        @DATEDUE = I.DATEDUE,
        @POSTSTATUSCODE = F.POSTSTATUSCODE,
        @POSTDATE = F.POSTDATE,
        @DISCOUNTPERCENT = I.DISCOUNTPERCENT,
        @DISCOUNTAMOUNT = I.DISCOUNTAMOUNT,
        @DISCOUNTEXPIRATIONDATE = I.DISCOUNTEXPIRATIONDATE,
    @DISCOUNTTOTAL = (F.TRANSACTIONAMOUNT - I.DISCOUNTAMOUNT),
        @PAYMENTMETHODCODE = 1,
        @BANKACCOUNTID = I.BANKACCOUNTID,
        @REMITADDRESSID = I.REMITADDRESSID,
        @SEPARATEPAYMENT = I.SEPARATEPAYMENT,
    @ISEDITFORM = 1
    ,@SCHEDULESTARTDATE = COALESCE(ISI.STARTDATE, I.DATEDUE)
    ,@NUMBEROFINSTALLMENTS = COALESCE(ISI.NUMBEROFINSTALLMENTS,1) -- Since the platform does validate even if the field has no meaning when HASSCHEDULE is false.
    ,@FREQUENCYCODE = COALESCE( ISI.FREQUENCYCODE,1
    ,@INVOICESCHEDULES = dbo.UFN_INVOICE_SCHEDULES_TOITEMLISTXML(I.ID)
    ,@HASSCHEDULE = case when ISI.STARTDATE is null then 0 else 1 end
    ,@BALANCE = I.BALANCE
        ,@DESCRIPTION = F.DESCRIPTION
        ,@LINEITEMS = dbo.UFN_FINANCIALTRANSACTION_LINEITEMS_TOITEMLISTXML(@ID)
    ,@PAID = dbo.UFN_FINANCIALTRANSACTION_PAID(@ID)
    ,@PAYMENTPOSTED = dbo.UFN_FINANCIALTRANSACTION_PAYMENTPOSTED(@ID)
    from dbo.INVOICE I
      inner join dbo.FINANCIALTRANSACTION F on F.ID = I.ID and F.TYPECODE = 101
    left outer join dbo.INVOICESCHEDULEINFORMATION as ISI
      on I.ID = ISI.ID
    where F.ID = @ID;


    return 0;