USP_DATAFORMTEMPLATE_EDITLOAD_PLEDGE_3

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

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.
@CONSTITUENTID uniqueidentifier INOUT
@CONSTITUENTNAME nvarchar(700) INOUT Constituent
@DATE datetime INOUT Date
@AMOUNT money INOUT Amount
@POSTSTATUSCODE tinyint INOUT Post status
@POSTDATE datetime INOUT Post date
@SENDPLEDGEREMINDER bit INOUT Send reminders
@SPLITS xml INOUT Designations
@FREQUENCYCODE tinyint INOUT Frequency
@NUMBEROFINSTALLMENTS int INOUT No. installments remaining
@NEXTTRANSACTIONDATE datetime INOUT Next installment date
@AMOUNTPAID money INOUT Amount paid
@INSTALLMENTS xml INOUT
@FINDERNUMBER bigint INOUT Finder number
@SOURCECODE nvarchar(50) INOUT Source code
@APPEALID uniqueidentifier INOUT Appeal
@BENEFITS xml INOUT Benefits
@BENEFITSWAIVED bit INOUT Benefits waived
@GIVENANONYMOUSLY bit INOUT Pledge is anonymous
@MAILINGID uniqueidentifier INOUT Effort
@CHANNELCODEID uniqueidentifier INOUT Inbound channel
@DONOTACKNOWLEDGE bit INOUT Do not acknowledge
@PLEDGESUBTYPEID uniqueidentifier INOUT Subtype
@MAXSOFTCREDITAMOUNT money INOUT Max soft credit amount
@MAXSOLICITORAMOUNT money INOUT Max solicitor amount
@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.
@MAINSINGLEDESIGNATIONID uniqueidentifier INOUT Designation
@FINDERNUMBERVALID bit INOUT FINDERNUMBERVALID
@OPPORTUNITYID uniqueidentifier INOUT Opportunity
@OPPORTUNITYCONSTITUENTNAME nvarchar(700) INOUT
@OPPORTUNITYASKDATE datetime INOUT
@OPPORTUNITYASKAMOUNT money INOUT
@LASTPAYMENTSEQUENCE int INOUT Installment sequence of last payment
@REFERENCE nvarchar(255) INOUT Reference
@CATEGORYCODEID uniqueidentifier INOUT Revenue category
@OPPORTUNITYSTATUS nvarchar(32) INOUT
@MAXSOLICITORSPLITAMOUNTS xml INOUT
@LASTUNPAIDROW int INOUT
@HASPOSTEDPAYMENTS bit INOUT
@ADJPAYMENT_DATE datetime INOUT
@ADJPAYMENT_POSTDATE datetime INOUT
@ADJPAYMENT_REASONCODEID uniqueidentifier INOUT
@ADJPAYMENT_DETAILS nvarchar(255) INOUT
@PERCENTAGEBENEFITS xml INOUT
@BASECURRENCYID uniqueidentifier INOUT
@TRANSACTIONCURRENCYID uniqueidentifier INOUT
@BASEEXCHANGERATEID uniqueidentifier INOUT
@EXCHANGERATE decimal(20, 8) INOUT
@HADSPOTRATE bit INOUT
@RATECHANGED bit INOUT
@BASEDECIMALDIGITS tinyint INOUT
@BASEROUNDINGTYPECODE tinyint INOUT
@TRANSACTIONCURRENCYDESCRIPTION nvarchar(110) INOUT
@HASRECOGNITIONCREDIT bit INOUT
@UPDATERECOGNITIONOPTION tinyint INOUT
@USERGRANTEDSPOTRATE bit INOUT
@CURRENTAPPUSERID uniqueidentifier IN
@HASPAYMENTS bit INOUT
@UPDATETRIBUTEOPTION tinyint INOUT
@HASTRIBUTE bit INOUT
@VALIDATETRIBUTES bit INOUT
@ALLOWGLDISTRIBUTIONS bit INOUT
@ISMEMBERSHIPPLEDGE bit INOUT
@INSTALLMENTAMOUNT money INOUT
@ORIGINALINSTALLMENTAMOUNT money INOUT
@TOTALAMOUNTWRITTENOFF money INOUT

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITLOAD_PLEDGE_3 (
  @ID uniqueidentifier
  ,@DATALOADED bit = 0 output
  ,@CONSTITUENTID uniqueidentifier = null output
  ,@CONSTITUENTNAME nvarchar(700) = null output
  ,@DATE datetime = null output
  ,@AMOUNT money = null output
  ,@POSTSTATUSCODE tinyint = null output
  ,@POSTDATE datetime = null output
  ,@SENDPLEDGEREMINDER bit = null output
  ,@SPLITS xml = null output
  ,@FREQUENCYCODE tinyint = null output
  ,@NUMBEROFINSTALLMENTS int = null output
  ,@NEXTTRANSACTIONDATE datetime = null output
  ,@AMOUNTPAID money = null output
  ,@INSTALLMENTS xml = null output
  ,@FINDERNUMBER bigint = null output
  ,@SOURCECODE nvarchar(50) = null output
  ,@APPEALID uniqueidentifier = null output
  ,@BENEFITS xml = null output
  ,@BENEFITSWAIVED bit = null output
  ,@GIVENANONYMOUSLY bit = null output
  ,@MAILINGID uniqueidentifier = null output
  ,@CHANNELCODEID uniqueidentifier = null output
  ,@DONOTACKNOWLEDGE bit = null output
  ,@PLEDGESUBTYPEID uniqueidentifier = null output
  ,@MAXSOFTCREDITAMOUNT money = null output
  ,@MAXSOLICITORAMOUNT money = null output
  ,@TSLONG bigint = 0 output
  ,@MAINSINGLEDESIGNATIONID uniqueidentifier = null output
  ,@FINDERNUMBERVALID bit = null output
  ,@OPPORTUNITYID uniqueidentifier = null output
  ,@OPPORTUNITYCONSTITUENTNAME nvarchar(700) = null output
  ,@OPPORTUNITYASKDATE datetime = null output
  ,@OPPORTUNITYASKAMOUNT money = null output
  ,@LASTPAYMENTSEQUENCE int = null output
  ,@REFERENCE nvarchar(255) = null output
  ,@CATEGORYCODEID uniqueidentifier = null output
  ,@OPPORTUNITYSTATUS nvarchar(32) = null output
  ,@MAXSOLICITORSPLITAMOUNTS xml = null output
  ,@LASTUNPAIDROW int = null output
  ,@HASPOSTEDPAYMENTS bit = null output
  ,@ADJPAYMENT_DATE datetime = null output
  ,@ADJPAYMENT_POSTDATE datetime = null output
  ,@ADJPAYMENT_REASONCODEID uniqueidentifier = null output
  ,@ADJPAYMENT_DETAILS nvarchar(255) = null output
  ,@PERCENTAGEBENEFITS xml = null output
  ,@BASECURRENCYID uniqueidentifier = null output
  ,@TRANSACTIONCURRENCYID uniqueidentifier = null output
  ,@BASEEXCHANGERATEID uniqueidentifier = null output
  ,@EXCHANGERATE decimal(20, 8) = null output
  ,@HADSPOTRATE bit = null output
  ,@RATECHANGED bit = null output
  ,@BASEDECIMALDIGITS tinyint = null output
  ,@BASEROUNDINGTYPECODE tinyint = null output
  ,@TRANSACTIONCURRENCYDESCRIPTION nvarchar(110) = null output
  ,@HASRECOGNITIONCREDIT bit = null output
  ,@UPDATERECOGNITIONOPTION tinyint = null output
  ,@USERGRANTEDSPOTRATE bit = null output
  ,@CURRENTAPPUSERID uniqueidentifier = null
  ,@HASPAYMENTS bit = null output
  ,@UPDATETRIBUTEOPTION tinyint = null output
  ,@HASTRIBUTE bit = null output
  ,@VALIDATETRIBUTES bit = null output
  ,@ALLOWGLDISTRIBUTIONS bit = null output
  ,@ISMEMBERSHIPPLEDGE bit = null output
  ,@INSTALLMENTAMOUNT money = null output
  ,@ORIGINALINSTALLMENTAMOUNT money = null output
  ,@TOTALAMOUNTWRITTENOFF money = null output  
  )
as
begin
  set nocount on;
  set @DATALOADED = 0;
  set @TSLONG = 0;

  -- Check GL business rule for this account system and set to 'Do not post' if needed.
  -- ****
  declare @PDACCOUNTSYSTEMID uniqueidentifier;

  select @PDACCOUNTSYSTEMID = PDACCOUNTSYSTEMID
  from dbo.FINANCIALTRANSACTION
  where ID = @ID;

  set @ALLOWGLDISTRIBUTIONS = dbo.UFN_PDACCOUNTSYSTEM_ALLOWGLDISTRIBUTIONS(@PDACCOUNTSYSTEMID);

  -- ****                
  select @DATALOADED = 1
    ,@CONSTITUENTID = FINANCIALTRANSACTION.CONSTITUENTID
    ,@CONSTITUENTNAME = CONSTITUENT_NF.name
    ,@DATE = FINANCIALTRANSACTION.[DATE]
    ,@AMOUNT = FINANCIALTRANSACTION.TRANSACTIONAMOUNT
    ,
    --@POSTSTATUSCODE = case when REVENUE.DONOTPOST = 1 then 2 when REVENUEPOSTED.ID is not null then 0 else 1 end,
    @POSTSTATUSCODE = case FINANCIALTRANSACTION.POSTSTATUSCODE
      when 2
        then 0
      when 1
        then 1
      else 2
      end
    ,@MAXSOFTCREDITAMOUNT = 0
    ,@MAXSOLICITORAMOUNT = coalesce((
        select max(AMOUNT)
   from dbo.REVENUESOLICITOR
        where REVENUESPLITID = FINANCIALTRANSACTION.ID
        ), 0)
    ,@POSTDATE = FINANCIALTRANSACTION.POSTDATE
    ,@SENDPLEDGEREMINDER = REVENUESCHEDULE.SENDPLEDGEREMINDER
    ,@FREQUENCYCODE = REVENUESCHEDULE.FREQUENCYCODE
    ,@NUMBEROFINSTALLMENTS = REVENUESCHEDULE.NUMBEROFINSTALLMENTS
    ,@NEXTTRANSACTIONDATE = coalesce(REVENUESCHEDULE.NEXTTRANSACTIONDATE, REVENUESCHEDULE.STARTDATE)
    ,@TSLONG = FINANCIALTRANSACTION.TSLONG
    ,@FINDERNUMBER = REVENUE_EXT.FINDERNUMBER
    ,@SOURCECODE = SOURCECODE
    ,@APPEALID = APPEALID
    ,@BENEFITSWAIVED = BENEFITSWAIVED
    ,@GIVENANONYMOUSLY = GIVENANONYMOUSLY
    ,@MAILINGID = MAILINGID
    ,@CHANNELCODEID = CHANNELCODEID
    ,@DONOTACKNOWLEDGE = DONOTACKNOWLEDGE
    ,@PLEDGESUBTYPEID = PLEDGESUBTYPEID
    ,@REFERENCE = REVENUEREFERENCE.REFERENCE
    ,@CATEGORYCODEID = (
      select top 1 GLREVENUECATEGORYMAPPINGID
      from dbo.REVENUECATEGORY
      inner join dbo.FINANCIALTRANSACTIONLINEITEM on REVENUECATEGORY.ID = FINANCIALTRANSACTIONLINEITEM.ID
      where FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
      )
    ,@MAXSOLICITORSPLITAMOUNTS = dbo.UFN_REVENUEDETAIL_GETMAXSOLICITORSPLITAMOUNTS_TOITEMLISTXML(@ID)
    ,@BASECURRENCYID = V.BASECURRENCYID
    ,@TRANSACTIONCURRENCYID = FINANCIALTRANSACTION.TRANSACTIONCURRENCYID
    ,@BASEEXCHANGERATEID = FINANCIALTRANSACTION.BASEEXCHANGERATEID
    ,@EXCHANGERATE = CURRENCYEXCHANGERATE.RATE
    ,@HADSPOTRATE = case 
      when CURRENCYEXCHANGERATE.TYPECODE = 2
        then 1
      else 0
      end
    ,@RATECHANGED = 0
    ,@BASEDECIMALDIGITS = CURRENCY.DECIMALDIGITS
    ,@BASEROUNDINGTYPECODE = CURRENCY.ROUNDINGTYPECODE
    ,@TRANSACTIONCURRENCYDESCRIPTION = dbo.UFN_CURRENCY_GETDESCRIPTION(FINANCIALTRANSACTION.TRANSACTIONCURRENCYID)
    ,@ISMEMBERSHIPPLEDGE = case 
      when FINANCIALTRANSACTION.TYPECODE = 15
        then 1
      else 0
      end
  from dbo.FINANCIALTRANSACTION
  -- left join
  --   dbo.REVENUEPOSTED on REVENUEPOSTED.ID = FINANCIALTRANSACTION.ID
  inner join dbo.REVENUESCHEDULE on FINANCIALTRANSACTION.ID = REVENUESCHEDULE.ID
  inner join dbo.V_BASECURRENCYFORFINANCIALTRANSACTION_I V with (noexpand) on FINANCIALTRANSACTION.ID = V.FINANCIALTRANSACTIONID
  left join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
  cross apply dbo.UFN_CONSTITUENT_DISPLAYNAME(FINANCIALTRANSACTION.CONSTITUENTID) CONSTITUENT_NF
  inner join dbo.CURRENCY on CURRENCY.ID = V.BASECURRENCYID
  left join dbo.REVENUEREFERENCE on FINANCIALTRANSACTION.ID = REVENUEREFERENCE.ID
  left join dbo.CURRENCYEXCHANGERATE on CURRENCYEXCHANGERATE.ID = FINANCIALTRANSACTION.BASEEXCHANGERATEID
  where FINANCIALTRANSACTION.ID = @ID
    and FINANCIALTRANSACTION.TYPECODE in (
      1
      ,15
      );

  if @DATALOADED = 1
  begin
    select top 1 @OPPORTUNITYID = RO.OPPORTUNITYID
      ,@OPPORTUNITYCONSTITUENTNAME = NF.name
      ,@OPPORTUNITYASKDATE = O.ASKDATE
      ,@OPPORTUNITYASKAMOUNT = O.ASKAMOUNT
      ,@OPPORTUNITYSTATUS = O.status
    from dbo.FINANCIALTRANSACTIONLINEITEM
    left join dbo.REVENUEOPPORTUNITY RO on RO.ID = FINANCIALTRANSACTIONLINEITEM.ID
    left join dbo.OPPORTUNITY O on O.ID = RO.OPPORTUNITYID
    left join dbo.PROSPECTPLAN PP on PP.ID = O.PROSPECTPLANID
    outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(PP.PROSPECTID) NF
    where FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @ID;

    select top 1 @ADJPAYMENT_DATE = ADJ.[DATE]
      ,@ADJPAYMENT_POSTDATE = ADJ.POSTDATE
      ,@ADJPAYMENT_DETAILS = ADJ.REASON
      ,@ADJPAYMENT_REASONCODEID = ADJ.REASONCODEID
    from (
      select A.[DATE]
        ,A.POSTDATE
        ,A.REASON
        ,A.REASONCODEID
      from dbo.ADJUSTMENT A
      inner join dbo.FINANCIALTRANSACTIONLINEITEM FTL on A.ID = FTL.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID
      inner join dbo.INSTALLMENTPAYMENT I on FTL.ID = I.PAYMENTID
      where I.PLEDGEID = @ID
        and A.POSTSTATUSCODE = 1
        and FTL.DELETEDON is null

      union all

      select A.[DATE]
        ,A.POSTDATE
        ,A.REASON
        ,A.REASONCODEID
      from dbo.WRITEOFFADJUSTMENT A
      inner join dbo.FINANCIALTRANSACTIONLINEITEM FTL on A.ID = FTL.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID
      inner join dbo.FINANCIALTRANSACTION FT on FTL.FINANCIALTRANSACTIONID = FT.ID
      where FT.PARENTID = @ID
        and A.POSTSTATUSCODE = 1
        and FTL.DELETEDON is null
      ) ADJ
    order by ADJ.[DATE] desc

    set @AMOUNTPAID = @AMOUNT - dbo.UFN_PLEDGE_GETBALANCE(@ID);

    --Find the first and last installment that have a full balance/no payments
    select @LASTPAYMENTSEQUENCE = COALESCE(MAX(INSTALLMENT.SEQUENCE), 0)
      ,@NUMBEROFINSTALLMENTS = COUNT(INSTALLMENT.ID)
    from dbo.UFN_INSTALLMENT_GETINSTALLMENTS_2(@ID) INSTALLMENT
    where INSTALLMENT.BALANCE > 0;

    set @LASTUNPAIDROW = @LASTPAYMENTSEQUENCE;
    --Bug 70059 - AdamBu 12/7/09 - Ordering the list of splits so that it will be consistent with the list of
    --    installment splits, which is important when using "Distribute evenly" on the form.  This change was made
    --    here instead of in the GETSPLITS function due to performance concerns.
    set @SPLITS = (
        select SPLITS.TRANSACTIONAMOUNT AMOUNT
          ,SPLITS.APPLICATIONCODE
          ,SPLITS.CATEGORYCODEID
          ,SPLITS.DECLINESGIFTAID
          ,SPLITS.DESIGNATIONID
          ,SPLITS.ID
          ,SPLITS.TYPECODE
          ,SPLITS.TRANSACTIONCURRENCYID
          ,SPLITS.BASEEXCHANGERATEID
        from dbo.UFN_REVENUE_GETSPLITS_2(@ID) SPLITS
        left join dbo.DESIGNATION on DESIGNATION.ID = SPLITS.DESIGNATIONID
        order by DESIGNATION.VANITYNAME
        for xml raw('ITEM')
          ,type
          ,elements
          ,root('SPLITS')
          ,binary BASE64
        );
    set @INSTALLMENTS = (
        select I.ID
          ,I.[DATE]
          ,I.TRANSACTIONAMOUNT AMOUNT
          ,I.TRANSACTIONRECEIPTAMOUNT RECEIPTAMOUNT
          ,(I.TRANSACTIONAMOUNT - (I.AMOUNTPAID + I.AMOUNTWRITTENOFF)) as BALANCE
          ,(I.AMOUNTPAID + I.AMOUNTWRITTENOFF) as APPLIED
          ,I.SEQUENCE
          ,I.PAYMENTCOUNT
          ,I.WRITEOFFCOUNT
          ,I.AMOUNTWRITTENOFF
          ,(
            select SPLITINFO.ID
              ,SPLITINFO.DESIGNATIONID
              ,SPLITINFO.TRANSACTIONAMOUNT AMOUNT
              ,(SPLITINFO.AMOUNTPAID + SPLITINFO.AMOUNTWRITTENOFF) APPLIED
              ,SPLITINFO.TRANSACTIONCURRENCYID
              ,SPLITINFO.REVENUESPLITID
              ,SPLITINFO.PAYMENTCOUNT
              ,SPLITINFO.WRITEOFFCOUNT
              ,(
                select SPLITPAYMENT.ID
                      ,SPLITPAYMENT.AMOUNT
                      ,I.REVENUEID as TRANSACTIONID
                      ,SPLITINFO.REVENUESPLITID as LINEITEMID
                from dbo.INSTALLMENTSPLITPAYMENT SPLITPAYMENT
                where SPLITPAYMENT.INSTALLMENTSPLITID = SPLITINFO.ID
                for xml raw('ITEM')
                  ,type
                  ,elements
                  ,binary BASE64
               ) as INSTALLMENTSPLITPAYMENTS
              ,(
                select SPLITWRITEOFF.ID
                      ,SPLITWRITEOFF.TRANSACTIONAMOUNT as AMOUNT
                      ,I.REVENUEID as TRANSACTIONID
                      ,SPLITINFO.REVENUESPLITID as LINEITEMID
                from dbo.INSTALLMENTSPLITWRITEOFF SPLITWRITEOFF
                where SPLITWRITEOFF.INSTALLMENTSPLITID = SPLITINFO.ID
                for xml raw('ITEM')
                  ,type
                  ,elements
                  ,binary BASE64
               ) as INSTALLMENTSPLITWRITEOFFS
            from dbo.UFN_INSTALLMENT_GETINSTALLMENTSPLITINFO_BULK() SPLITINFO
            left join dbo.DESIGNATION on DESIGNATION.ID = SPLITINFO.DESIGNATIONID
            where SPLITINFO.INSTALLMENTID = I.ID
            order by DESIGNATION.VANITYNAME
            for xml raw('ITEM')
              ,type
              ,elements
              ,binary BASE64
            ) as INSTALLMENTSPLITS
          ,I.BASECURRENCYID
          ,I.ORGANIZATIONAMOUNT
          ,I.ORGANIZATIONEXCHANGERATEID
          ,I.TRANSACTIONCURRENCYID
          ,I.BASEEXCHANGERATEID
        from dbo.UFN_INSTALLMENT_GETINFO_BULK() I
        where I.REVENUEID = @ID
        order by I.[DATE]
        for xml raw('ITEM')
          ,type
          ,elements
          ,root('INSTALLMENTS')
          ,binary BASE64
        );

    exec dbo.USP_REVENUE_GETBENEFITSSPLIT @ID
      ,@BENEFITS output
      ,@PERCENTAGEBENEFITS output

    if @FINDERNUMBER = 0
      set @FINDERNUMBER = null;

    if (not @FINDERNUMBER is null)
      set @FINDERNUMBERVALID = 1;
    else
      set @FINDERNUMBERVALID = 0;
  end

  set @HASPOSTEDPAYMENTS = dbo.UFN_PLEDGEHASPOSTEDPAYMENTS(@ID) --this is a misnomer, it will actually return true if there are posted payments OR posted writeoffs
  set @HASPAYMENTS = dbo.UFN_PLEDGE_PAYMENTSEXIST(@ID)
  set @UPDATERECOGNITIONOPTION = 0;
  set @UPDATETRIBUTEOPTION = 0;
  set @VALIDATETRIBUTES = 1;

  if exists (
      select 1
      from dbo.REVENUERECOGNITION
      inner join dbo.FINANCIALTRANSACTIONLINEITEM on REVENUERECOGNITION.REVENUESPLITID = FINANCIALTRANSACTIONLINEITEM.ID
      where FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @ID
      )
    set @HASRECOGNITIONCREDIT = 1
  else
    set @HASRECOGNITIONCREDIT = 0

  if exists (
      select 1
      from dbo.REVENUETRIBUTE
      where REVENUETRIBUTE.REVENUEID = @ID
      )
    set @HASTRIBUTE = 1
  else
    set @HASTRIBUTE = 0

  --Replace with commented out code for PBI 102747:
  set @USERGRANTEDSPOTRATE = 1;

  select @INSTALLMENTAMOUNT = PLEDGEINSTALLMENTOPTION.INSTALLMENTAMOUNT
  from dbo.FINANCIALTRANSACTION
  left outer join dbo.PLEDGEINSTALLMENTOPTION on FINANCIALTRANSACTION.ID = PLEDGEINSTALLMENTOPTION.ID 
  where FINANCIALTRANSACTION.ID = @ID and FINANCIALTRANSACTION.DELETEDON is null

  set @ORIGINALINSTALLMENTAMOUNT = @INSTALLMENTAMOUNT;

  select @TOTALAMOUNTWRITTENOFF = isnull(SUM(I.AMOUNTWRITTENOFF) ,0)
    from dbo.UFN_INSTALLMENT_GETINFO_BULK() I
    where I.REVENUEID = @ID

  /*set @USERGRANTEDSPOTRATE = case 
  when dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or 
     dbo.UFN_SECURITY_APPUSER_GRANTED_SYSTEMPRIVILEGE_IN_SYSTEMROLE(@CURRENTAPPUSERID, '911f104d-ba5f-4469-b0ae-184c879aea99') = 1 
      then 1
  else 0
  end;*/
  return 0;
end