Functional Description
Purpose
The purpose of this function is to return a draft to its prior status.
Setup Notes and Prerequisites
The following validation must be done before calling this business function:
 The draft can not be at acceptance status.
 The draft can not be void or NSF.
Special Logic
None.
Technical Specification
Parameters
Data Item   Data Structure Desc   I/O   Required   Notes
PYID        mnPaymentID           I     Yes        Payment ID of draft
DGJ         jdGLDate              I     Yes        G/L date for new records
ICU         mnBatchNumber         I     Yes        Batch number for new records
ICUT        szBatchType           I     Yes        Batch type for new records
DICJ        jdDateBatch           I     Yes        Batch date for new records
PID         szProgramID           I     No         ID of calling program. If left
                                                   blank, B03B0197 will default.
Related Tables
Table     Table Description
F007101   Text Processor Header
F03B11    Customer Ledger
F03B13    Receipts Header File
F03B14    A/R Check Detail File
F03B672   Draft Remittance Work File - One World Only
Related Business Functions
Source Name   Function Name
B0000007      Batch - Revise On Transaction Commitment
B03B0190      F03B11Z2 Invoice Outbound Interoperability
B03B0191      F03B13Z2/F03B14Z2 Receipt Outbound Interoperability
B9800100      Get Audit Information
X0903         Fiscal Date Edits +
Processing
This function will return a draft at collection (draft status 0) to remittance status (draft status 
2), if the draft was remitted normally.
This function will return a draft at collection (draft status 0) to remitted w/ contingent liability 
status (draft status 3), if the draft was remitted with contingent liability.
This function will return a draft at remittance (draft status 2 or 3) to acceptance status (draft 
status 4).
The G/L date and batch information will be stored on any new records that are created during the 
process of returning a draft to its prior draft status.
The program ID will be stored on any records that are updated or created during the process of 
returning a draft to its prior draft status.
However, if a program ID is not passed in, the ID of this function will be used.
Pseudo Code
select * from F03B13 where (PYID = FI Payment ID)
if (F03B13.DDST == '0') then
   select * from F03B14 where (PYID = F03B13.PYID) and (TYIN = 'D') and (DDST >= '2') and (DDST <= 
'4') order by RC5 descending
   Last_F03B14 = FetchNext(F03B14)
   if (Last_F03B14.DDST == '2') then
      2ndLast_F03B14 = FetchNext(F03B14)
      if (2ndLast_F03B14.POST == 'D') then
         // create a D-type record to reverse the 2ndLast_F03B14
      else
         delete from F03B14 where (PYID = 2ndLast_F03B14.PYID) and (RC5 = 2ndLast_F03B14.RC5)
      end if
   end if
   if (Last_F03B14.POST == 'D') then
      F03B13.DGJ = FI G/L date
      F03B13.ICU = FI Batch Number
      F03B13.ICUT = FI Batch Type
      // create a D-type record to reverse the Last_F03B14
   else
      NextLast_F03B14 = FetchNext(F03B14)
      F03B13.DGJ = NextLast_F03B14.DGJ
      F03B13.ICU = NextLast_F03B14.ICU
      F03B13.ICUT = NextLast_F03B14.ICUT
      delete from F03B14 where (PYID = Last_F03B14.PYID) and (RC5 = Last_F03B14.RC5)
   end if
   F03B13.DDST = Last_F03B14.DDST
   if (F03B13.POST == 'D') then
      // un-post the F03B13
      F03B13.POST = ''
      F03B13.EULP = ''
      // create a D-type record to reverse the F03B13
      // the draft status of the new D-type record must be 0
   end if
   F03B11_R1.PST = 'G'
   F03B11_R1.AAP = F03B13.CKAM
   F03B11_R1.FAP = F03B13.FCAM
   F03B11_R1.JCL = ''
   if (Last_F03B14.DDST == '4') then
      F03B13.GLBA = ''
      F03B13.AM = ''
      F03B11_R1.PST = 'D'
   end if
else
   if ((F03B13.DDST == '2') or (F03B13.DDST == '3')) then
      // WARNING - the remittance batch containing this draft may already have been sent to the bank
      select * from F03B14 where (PYID = F03B13.PYID) and (TYIN = 'D') and (DDST = F03B13.DDST) order 
by RC5 descending
      F03B14 = FetchNext(F03B14)
      if (F03B14.POST == 'D') then
         // create a D-type record to reverse the F03B14 record we just fetched
      else
         delete from F03B14 where (PYID = F03B14.PYID) and (RC5 = F03B14.RC5)
      end if
      if (F03B13.DDST == '2') then
         // contingent liability writes a second remittance record
         F03B14 = FetchNext(F03B14)
         if (F03B14.POST == 'D') then
            // create a D-type record to reverse the F03B14 record we just fetched
         else
            delete from F03B14 where (PYID = F03B14.PYID) and (RC5 = F03B14.RC5)
         end if
      end if
      select * from F03B14 where (PYID = F03B13.PYID) and (TYIN = 'D') and (DDST = '4') order by RC5 
descending
      F03B14 = FetchNext(F03B14)
      Prev_F03B14 = FetchNext(F03B14)
      if (F03B14.POST == 'D') then
         F03B13.DGJ = FI G/L date
         F03B13.ICU = FI Batch Number
         F03B13.ICUT = FI Batch Type
         // create a D-type record to reverse the F03B14 record we just fetched
      else
         F03B13.DGJ = Prev_F03B14.DGJ
         F03B13.ICU = Prev_F03B14.ICU
         F03B13.ICUT = Prev_F03B14.ICUT
         delete from F03B14 where (PYID = F03B14.PYID) and (RC5 = F03B14.RC5)
      end if
      F03B11_R1.AID = Prev_F03B14.AID2
      F03B11_R1.PST = 'D'
      delete from F03B672 where (PYID = F03B13.PYID)
      // flag F007101 as invalid data
      F03B13.GLBA = ''
      F03B13.AM = ''
      F03B13.DREG = ''
      F03B13.DDST = '4'
   else
      if (F03B13.DDST == '4') then
         ERROR - No Prior Draft Status
                 The draft can not be returned to a prior status, because it is at the first draft 
status.
      else
         if (F03B13.DDST == '1') then
            ERROR - Draft Status Not Used
                    The draft status field contains a valid value, but it is not used.
         else
            ERROR - Draft Status Invalid
                    The draft status field does not contain a valid value.
         end if
      end if
   end if
end if
D03B0197 - Return To Prior Draft Status
| Parameter Name | Data Item | Data Type | Req/Opt | I/O/Both | 
|---|---|---|---|---|
| mnPaymentID | PYID | MATH_NUMERIC | REQ | INPUT | 
A number that the system assigns from Next Numbers to identify and track payment records.  | ||||
| jdGLDate | DGJ | JDEDATE | REQ | INPUT | 
A date that identifies the financial period to which the transaction will be posted. You define financial periods for a date pattern code that you 
  | ||||
| mnBatchNumber | ICU | MATH_NUMERIC | REQ | INPUT | 
A number that identifies a group of transactions that the system processes and balances as a unit. When you enter a batch, you can either 
  | ||||
| szBatchType | ICUT | char | REQ | INPUT | 
A code that specifies the system and type of transactions entered in a batch. The system assigns the value when you enter a transaction. 
  | ||||
| jdDateBatch | DICJ | JDEDATE | REQ | INPUT | 
The date of the batch. If you leave this field blank, the system date is used.  | ||||
| szProgramId | PID | char | OPT | INPUT | 
The number that identifies the batch or interactive program (batch or interactive object). For example, the number of the Sales Order Entry 
  | ||||
| B0000007 Batch - Revise On Transaction Commitment | ||||
| B03B0190 F03B11Z2 Invoice Outbound Interoperability | ||||
| B03B0191 F03B13Z2/F03B14Z2 Receipt Outbound Interoperability | ||||
| B9800100 Get Audit Information | 
| F007101 Text Processor Header | ||||
| F03B11 Customer Ledger | ||||
| F03B13 Receipts Header | ||||
| F03B14 Receipts Detail | ||||
| F03B672 Draft Remittance |