USP_INVOICE_VALIDATE

Validates saving an invoice

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@DATEDUE datetime IN
@REMITADDRESSID uniqueidentifier IN
@DISCOUNTPERCENT decimal(20, 4) IN
@DISCOUNTAMOUNT money IN
@DISCOUNTEXPIRATIONDATE datetime IN
@PAYMENTMETHODCODE tinyint IN
@SEPARATEPAYMENT bit IN
@BANKACCOUNTID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_INVOICE_VALIDATE(
  @ID uniqueidentifier
  ,@DATEDUE datetime
  ,@REMITADDRESSID uniqueidentifier
  ,@DISCOUNTPERCENT decimal(20,4)
  ,@DISCOUNTAMOUNT money
  ,@DISCOUNTEXPIRATIONDATE datetime
  ,@PAYMENTMETHODCODE tinyint
  ,@SEPARATEPAYMENT bit
  ,@BANKACCOUNTID uniqueidentifier
)
as
begin

  declare @PAID bit = 0;

  if exists (
    select  I.ID
      from dbo.INVOICE I
      join dbo.FINANCIALTRANSACTION FT on FT.ID = I.ID
      join dbo.FINANCIALTRANSACTIONAPPLICATION FTA on FTA.FINANCIALTRANSACTIONSCHEDULEID = FT.ID
      where FTA.STATUSCODE <> 2 and FT.ID = I.ID) 
    set @PAID = 1;

  if @PAID = 1 
    begin 

     IF EXISTS (
            SELECT I.ID
            FROM INVOICE I
            WHERE I.ID = @ID and I.DATEDUE  <> @DATEDUE 
            )
      BEGIN
          RAISERROR ('ERR_INVOICE_LOCKEDDATEDUE', 16, 1)
      END

     IF EXISTS (
          SELECT I.ID
          FROM INVOICE I
          WHERE I.ID = @ID and I.REMITADDRESSID  <> @REMITADDRESSID 
            )
      BEGIN
          RAISERROR ('ERR_INVOICE_LOCKEDREMITADDRESSID', 16, 1)
      END

     IF EXISTS (
            SELECT I.ID
            FROM INVOICE I
            WHERE I.ID = @ID and I.DISCOUNTPERCENT  <> @DISCOUNTPERCENT 
            )
      BEGIN
          RAISERROR ('ERR_INVOICE_LOCKEDDISCOUNTPERCENT', 16, 1)
      END

     IF EXISTS (
            SELECT I.ID
            FROM INVOICE I
            WHERE I.ID = @ID and I.DISCOUNTAMOUNT  <> @DISCOUNTAMOUNT 
            )
      BEGIN
          RAISERROR ('ERR_INVOICE_LOCKEDDISCOUNTAMOUNT', 16, 1)
      END

     IF EXISTS (
              SELECT I.ID
              FROM INVOICE I
              WHERE I.ID = @ID and I.DISCOUNTEXPIRATIONDATE  <> @DISCOUNTEXPIRATIONDATE 
            )
      BEGIN
          RAISERROR ('ERR_INVOICE_LOCKEDDISCOUNTEXPIRATIONDATE', 16, 1)
      END

      IF EXISTS (
            SELECT I.ID
            FROM INVOICE I
            WHERE I.ID = @ID and I.PAYMENTMETHODCODE  <> @PAYMENTMETHODCODE 
          )
      BEGIN
          RAISERROR ('ERR_INVOICE_LOCKEDPAYMENTMETHODCODE', 16, 1)
      END


      IF EXISTS (
            SELECT I.ID
            FROM INVOICE I
            WHERE I.ID = @ID and I.SEPARATEPAYMENT  <> @SEPARATEPAYMENT 
          )
      BEGIN
          RAISERROR ('ERR_INVOICE_LOCKEDSEPARATEPAYMENT', 16, 1)
      END

     IF EXISTS (
            SELECT I.ID
            FROM INVOICE I
            WHERE I.ID = @ID and I.BANKACCOUNTID  <> @BANKACCOUNTID 
        )
      BEGIN
          RAISERROR ('ERR_INVOICE_LOCKEDBANKACCOUNTID', 16, 1)
      END

   end
end