This chapter describes the set of logical validations that are performed, and the order in which they should be performed, on the Account table data during a Cash Flow Edits rule run.
This chapter covers the following topics:
Oracle Transfer Pricing makes use of cash flow modeling to generate results. Inconsistent or incomplete Account table data can interrupt cash flow generation and further processing by the application.
Oracle Transfer Pricing provides a data validation and correction process, called Cash Flow Edits, to verify the accuracy and check the completeness of your Account table data and make corrections to it before you use it to generate cash flows and for further processing. See: Cash Flow Edits, Oracle Transfer Pricing User Guide.
The Cash Flow Edits process rule contains a set of checks to be performed on the Account table data that validate the data for consistency and ensure that the data is logically correct for handling by the cash flow engine. The set of checks and the order in which they should be performed are together known as cash flow edit logic.
The following table details the set of checks and the order in which they are performed:
Note: The cash flow edit logic cannot be modified.
Error Code | Error Condition | Assignment | Error Level | Warning | Description/Purpose |
---|---|---|---|---|---|
9106 | AMRT_TERM_MULT not equal to D, M, or Y | AMRT_TERM_MULT = 'M' | 2 | Invalid AMRT_ TERM_MULT | Checks for valid amortization term multipliers |
9107 | NEG_AMRT_EQ_MULT not equal to D, M, or Y | NEG_AMRT_EQ_MULT = M | 2 | Invalid NEG_ AMRT_EQ_ MULT | Checks for valid Neg. Amortization Eq. Multipliers |
9109 | ORG_TERM_MULT not equal to D, M, or Y | ORG_TERM_MULT = 'M' | 2 | Invalid ORG_ TERM_MULT | Checks for valid Original term multipliers |
9112 | PMT_FREQ_MULT not equal to D, M, or Y | PMT_FREQ_MULT = 'M' | 2 | Invalid PMT_ FREQ_MULT | Checks for valid payment frequency multipliers |
9117 | REPRICE_FREQ_MULT not equal to D, M, or Y | REPRICE_FREQ_MULT = 'M' | 2 | Invalid REPRICE_ FREQ_MULT | Checks for valid reprice frequency multipliers |
9115 | RATE_SET_LAG_MULT not equal to D, M, or Y | RATE_SET_LAG_MULT equal to 'M' | 2 | Invalid RATE_ SET_LAG_MULT | Checks for valid rate set lag multipliers |
9111 | PMT_CHG_FREQ_MULT not equal to D, M, or Y | PMT_CHG_FREQ_MULT equal to 'M' | 2 | Invalid PMT_ CHG_FREQ_ MULT | Checks for valid payment change frequency multipliers |
9105 | AMRT_TYPE_CODE (<= 999 and not equal to 100, 200, 400, 500, 600, 700, 710, 800, 801, 802, 820, 830, or 999) or >29999 | Set AMRT_TYPE_CODE equal to '700' | 2 | Invalid Amortization Type | Checks that amortization type codes are either in the user defined range or that they are a valid OFSA code |
9166 | If REPRICE_FREQ < 0 | REPRICE_FREQ = 0 | 2 | Reprice_Freq < 0 | Reprice frequencies must not be negative |
9167 | If AMRT_TYPE_CODE = 710 and REPRICE_FREQ < > 0 | REPRICE_FREQ = 0 | 2 | Rule of 78s Reprice_Freq<>0 | Rule of 78's instruments are implicitly fixed |
9155 | IF INTEREST_RATE_CODE < 0 or INTEREST_RATE_CODE > 99999 | INTEREST_RATE_CODE = 0 | 2 | Int Rt Code out of range | Interest rate code must be within a valid range |
9156 | NET_MARGIN_CODE <> 0 and NET_MARGIN_CODE <> 1 | NET_MARGIN_CODE = 0 | 2 | Invalid Net Margin Code | Valid net margin codes are 0 or 1 |
9157 | T_RATE_INT_RATE_CODE < 0 or T_RATE_INT_RATE_CODE > 99999 | T_RATE_INT_RATE_CODE = 999 | 2 | T Rt Int Rt Cd out of rng | T rate interest rate code must be within a valid range |
9104 | ACCRUAL_BASIS_CODE <1 or >6 | ACCRUAL_BASIS_CODE equal to '3' | 2 | Invalid Accrual Basis Cd | Accrual basis code must be between 1 and 6 inclusively |
9114 | RATE_CHG_RND_CODE <0 or >4 | RATE_CHG_RND_CODE equal to '0' | 2 | Invalid Rate Chg Rnd Cd | Rate change round code must be between 0 and 4 |
9132 | (CUR_PAYMENT < 0 and CUR_PAR_BAL > 0) or (CUR_PAYMENT > 0 and CUR_PAR_BAL < 0) | Set CUR_PAYMENT equal to 0 | 2 | Pmt, bal opposite signs | Current payment and current balance cannot have opposite signs |
9158 | If CUR_BOOK_BAL <> (CUR_PAR_BAL + DEFERRED_CUR_BAL) | Warning Only | 1 | CurBkBl <> ParBl + Def Bl | Current book balance should equal the current par balance + current deferred balance |
9159 | CUR_NET_PAR_BAL_C - CUR_PAR_BAL * ( 1 - PERCENT_SOLD/100) >.001 | Warning | 1 | NetParBl<>Com ptd NetParBl | Current net par balance should reflect the bank-owned portion of the current gross balance |
9168 | ORG_PAR_BAL = 0 and REPRICE_FREQ = 0 | Warning | 1 | OrgParBal=0! Fixed Rate | For transfer pricing of fixed rate instruments, the original balance should be populated |
9152 | ORG_PAR_BAL < CUR_PAR_BAL and AMRT_TYPE_CODE =710 | message only: OrgParBal < CurParBal | 1 | Org Par Bal < Cur Par Bal | Original balance on rule of 78's instruments should not be greater than current balance |
9160 | If AMRT_TYPE_CODE = 600 and PMT_DECR_CY < 0 | PMT_DECR_CY = 0 | 2 | Payment Decrease Cycle=0 | Payment decrease cycle cannot be less than zero (Neg Am instruments only) |
9127 | ORG_PAYMENT_AMT = 0 and PMT_DECR_LIFE > 0 and AMRT_TYPE_CODE = 600 | Set PMT_DECR_LIFE equal to 0 | 2 | Org Pmt=0, Pmt Dec Lf<>0 | Payment decrease life is expressed as a percent of a zero original payment (Neg Am instruments only) |
9162 | If AMRT_TYPE_CODE = 600 and PMT_DECR_LF <> 0 and CUR_PAYMENT < ORG_PAYMENT_AMT * (1 - PMT_DECR_LF/100) | Warning Only | 1 | Cur Pmt < Life Pay Floor | Current payment is less than the minimum payment amount (Neg Am instruments only) |
9161 | If AMRT_TYPE_CODE = 600 and PMT_DECR_LF < 0 | Set PMT_DECR_LIFE equal to 0 | 2 | PmtDecrLf<0 for Adj NegAm | Payment decrease life cannot be less than zero (Neg Am instruments only) |
9136 | AMRT_TYPE_CODE = 600 and PMT_INCR_CYCLE < 0 | Set PMT_INCR_CYCLE equal to 0 | 2 | Pmt Incr Cycle < 0 | Payment increase cycle cannot be less than zero (Neg Am instruments only) |
9128 | ORG_PAYMENT_AMT = 0 and PMT_INCR_LIFE > 0 and AMRT_TYPE_CODE = 600 | Set PMT_INCR_LIFE equal to 0 | 2 | Org Pmt=0, Pmt Incr Lf<>0 | Payment increase life is expressed as a percent of a zero original payment (Neg Am instruments only) |
9163 | If AMRT_TYPE_CODE = 600 and PMT_INCR_LF < 0 | Set PMT_INCR_LIFE equal to 0 | 2 | PmtIncrLf<0 for Adj NegAm | Payment increase life cannot be less than zero (Neg Am instruments only) |
9164 | If AMRT_TYPE_CODE = 600 and PMT_INCR_LF <> 0 and CUR_PAYMENT > ORG_PAYMENT_AMT * (1 + PMT_INCR_LF/100) | Warning Only | 1 | Cur Pmt > Life Pay Cap | Current payment is greater than the maximum payment amount (Neg Am instruments only) |
9141 | RATE_DECR_CYCLE < 0 | RATE_DECR_CYCLE equal to 0 | 2 | Rate Decr Cycle < 0 | Rate decrease cycle must not be negative |
9144 | RATE_FLOOR_LIFE > CUR_NET_RATE | message only: Rt Floor Lf > Cur Net Rt | 1 | Rt Floor Lf > Cur Net Rt | Rate floor life must not be greater than the current net rate |
9145 | RATE_INCR_CYCLE < 0 | RATE_INCR_CYCLE equal to 0 | 2 | Rate Incr Cycle < 0 | Rate increase cycle cannot be less than 0 |
9103 | CUR_NET_RATE < 0 | message only: Current Net Rate < 0 | 1 | Current Net Rate < 0 | Current net rate must not be negative |
9102 | CUR_GROSS_RATE < 0 | message only: Current Gross Rate < 0 | 1 | Current Gross Rate < 0 | Current gross rate must not be negative |
9108 | (NEG_AMRT_LIMIT >= 200)or(NEG_AMRT_LIMIT < 0) and AMRT_TYPE_CODE = 600 | Set NEG_AMRT_LIMIT equal to 0 | 2 | Invalid NgAm Limit | Neg Am limit value does not fall in a valid range (Neg Am instruments only) |
9140 | RATE_CHG_MIN < 0 | Set RATE_CHG_MIN equal to 0 | 2 | Rate Chg Min < 0 | Minimum rate change cannot be negative |
9139 | RATE_CAP_LIFE < CUR_NET_RATE and RATE_CAP_LIFE <>0 | message only: Rt Cap Life < Cur Net Rt | 1 | Rt Cap Life < Cur Net Rt | Current net rate is greater than the rate cap |
9118 | RATE_CHG_RND_FAC < 0 or RATE_CHG_RND_FAC > 1 | Set RATE_CHG_RND_FAC equal to 0 | 2 | Invalid Rt Chg Rnd Fact | Rate change round factor must be a percentage |
9138 | RATE_CAP_LIFE < CUR_GROSS_RATE and RATE_CAP_LIFE <> 0 and CUR_GROSS_RATE <> 0 and TEASER_END_DATE < CALENDAR_PERIOD_END_DATE | Set RATE_CAP_LIFE equal to CUR_GROSS_RATE | 1 | Rt Cap Lf < Cur Gross Rt | Current gross rate is greater than the rate cap life |
9143 | RATE_FLOOR_LIFE > CUR_GROSS_RATE and CUR_GROSS_RATE <> 0 and TEASER_END_DATE < CALENDAR_PERIOD_END_DATE | Set RATE_FLOOR_LIFE equal to CUR_GROSS_ RATE | 1 | Rt Floor Lf > Cur Grss Rt | Current gross rate is less than the rate floor |
9130 | (ORIGINATION_DATE < 01/01/1950) or(ORIGINATION_DATE >01/01/2099) | Set ORIGINATION_DATE = 01/01/1950 | 2 | Orig. Dt < 01/01/1950 | Origination date must be acceptable |
9165 | If ISSUE_DATE > ORIGINATION_DATE | Set ISSUE_DATE = ORIGINATION_DATE | 2 | Issue Date > Orig Date | Issue date cannot be greater than origination date |
9124 | ORIGINATION_DATE >= CALENDAR_PERIOD_END_DATE and ORIGINATION_DATE >= NEXT_PAYMENT_DATE | NEXT_PAYMENT_DATE = ORIGINATION_DATE + 1 day | 2 | Next Pmt Dt < Org Dt | Next payment date is less than origination date (future origination case) |
9123 | CALENDAR_PERIOD_END_DATE > ORIGINATION_DATE and CALENDAR_PERIOD_END_DATE >= NEXT_PAYMENT_DATE | NEXT_PAYMENT_DATE equal to CALENDAR_PERIOD_END_DATE + 1 day | 2 | Next Pmt Dt < CALENDAR_PERIOD_END_DATE | Next payment date is less than Calendar Period End Date (past origination case). Calendar Period End Date cannot be greater than the origination date and greater than the next payment date |
9125 | ORIGINATION_DATE <= CALENDAR_PERIOD_END_DATE and NEXT_REPRICE_DATE <= CALENDAR_PERIOD_END_DATE and REPRICE_FREQ > 0 | NEXT_REPRICE_DATE equal to CALENDAR_PERIOD_END_DATE + 1 day | 2 | Next Repr Dt < CALENDAR_PERIOD_END_DATE | Next reprice date is less than Calendar Period End Date (past origination case) |
9126 | ORIGINATION_DATE > CALENDAR_PERIOD_END_DATE and NEXT_REPRICE_DATE < ORIGINATION_DATE and REPRICE_FREQ > 0 | Set NEXT_REPRICE_DATE equal to ORIGINATION_ DATE + 1 day | 2 | Next Repr Dt < Org Dt | Next reprice date is less than the origination date (future origination case) |
9169 | If REPRICE_FREQ <> 0 and TEASER_END_DATE > ORIGINATION_DATE and TEASER_END_DATE > CALENDAR_PERIOD_END_DATE and NEXT_REPRICE_DATE > TEASER_END_DATE | Set NEXT_REPRICE_DATE equal to TEASER_END_ DATE | 2 | Next Repr Dt > Ts End Dt | Next reprice date is greater than tease end date |
9121 | If AMRT_TYPE_CODE = 600 and NEG_AMRT_EQ_FREQ > 0 and NEG_AMRT_EQ_DATE <= MAX(ORIGINATION_DATE, CALENDAR_PERIOD_END_DATE) | Set NEG_AMRT_EQ_DATE equal to NEXT_REPRICE_ DATE | 2 | NgAm Eq Dt < Org Dt | Neg Am equalization date is less than origination date (future origination) or less than the Calendar Period End Date (past origination) (Neg am instruments only) |
9147 | REMAIN_NO_PMTS_C < 1 | REMAIN_NO_PMTS_C = 1 | 2 | Rem No Pmts < 1 | There has to be at least 1 payment left |
9119 | MATURITY_DATE < NEXT_PAYMENT_DATE | MATURITY_DATE = NEXT_PAYMENT_DATE +((REMAIN_NO_PMTS_C-1)/PMT_FREQ) | 2 | Mat Dt < Next Pmt Dt | Maturity date cannot be before the next payment date |
9134 | If AMRT_TYPE_CODE = 600 and PMT_CHG_FREQ > 0 and CALENDAR_PERIOD_END_DATE < PMT_ADJUST_DATE and PMT_ADJUST_DATE < ORIGINATION_DATE | PMT_ADJUST_DATE = NEXT_REPRICE_DATE | 2 | Pmt Adj Dt < Org Dt | Payment adjustment date is less than origination date (future origination) (Neg am instruments only) |
9133 | If AMRT_TYPE_CODE = 600 and PMT_CHG_FREQ > 0 and CALENDAR_PERIOD_END_DATE > PMT_ADJUST_DATE | PMT_ADJUST_DATE = NEXT_REPRICE_DATE | 2 | Pmt Adj Dt < CALENDAR_PERIOD_END_DATE | Neg Am equalization date is less than the Calendar Period End Date (past origination) (Neg am instruments only) |
9154 | REPRICE_FREQ <> 0 and LAST_REPRICE_DATE > NEXT_REPRICE_DATE | LAST_REPRICE_DATE = NEXT_REPRICE_DATE minus REPRICE_FREQ | 2 | LastReprDt>Nex tReprDt | Last reprice date is greater than next reprice date |
9148 | RATE_SET_LAG < 0 | RATE_SET_LAG = 0 | 2 | Set Lag < 0 | Rate set lag cannot be negative |
9120 | NEG_AMRT_EQ_FREQ < 0 and AMRT_TYPE_CODE = 600 | NEG_AMRT_EQ_FREQ equal to 0 | 2 | NegAmEqFrq < 0 | Neg Am Equalization frequency cannot be negative (Neg Am instruments only) |
9153 | REPRICE_FREQ = 0 and (AMRT_TYPE_CODE = 500 or AMRT_TYPE_CODE = 600) | message only: AdjAmrtType, ReprFrq=0 | 1 | AdjAmrtType, ReprFrq=0 | Reprice frequency denotes fixed on adjustable amortization types (Conventional Adjustable and Adjustable Neg Am) |
9110 | If AMRT_TYPE_CODE = 600 and PMT_CHG_FREQ < 0 | PMT_CHG_FREQ equal to 0 | 2 | Invalid Pmt Chg Frq | Payment change frequency cannot be negative (Neg Am instrument only) |
9131 | PMT_FREQ > calculated original term | PMT_FREQ equal to calculated original term | 2 | Payment Freq > Org Term | Payment frequency cannot be greater than original term |
9129 | ORG_TERM <> calculated original term within 45 days or ORG_TERM = 0 | Set ORG_TRM = calculated original term | 2 | Org Term<>Mat Dt -Org Dt | Original term should equal the time between the origination date and the maturity date |
9135 | PMT_FREQ <= 0 and ORIGINATION_DATE <= CALENDAR_PERIOD_END_DATE and MATURITY_DATE > CALENDAR_PERIOD_END_DATE ORIGINATION_DATE > CALENDAR_PERIOD_END_DATE and MATURITY_DATE > ORIGINATION_DATE | NEXT_PAYMENT_DATE = MATURITY_DATE and ORG_TERM = calculated original term and PMT_ FREQ = calculated original term and REMAIN_NO_ PMTS_C = 1 | 2 | Pmt Freq <= 0, Trm Assumed | Payment frequency is less than or equal to zero, and both maturity date and origination date are valid dates and can be used to calculate payment frequency |
9135 | PMT_FREQ <= 0 and ORIGINATION_DATE <= CALENDAR_PERIOD_END_DATE, MATURITY_DATE<= CALENDAR_PERIOD_END_DATE but NEXT_PAYMENT_DATE > CALENDAR_PERIOD_END_DATE or ORIGINATION_DATE> CALENDAR_PERIOD_END_DATE, MATURITY_DATE < ORIGINATION_DATE, but NEXT_PAYMENT_DATE > ORIGINATION_DATE | MATURITY_DATE = NEXT_PAYMENT_DATE and ORG_TERM = calculated original term and PMT_FREQ = calculated original term and REMAIN_NO_PMTS_C = 1 | 2 | Pmt Freq <= 0, Trm Assumed | Payment frequency is less than or equal to zero and maturity date is invalid, but next payment date can be used to calculate a valid payment frequency |
9135 | PMT_FREQ <= 0 and ORIGINATION_DATE <= CALENDAR_PERIOD_END_DATE, MATURITY_DATE<= CALENDAR_PERIOD_END_DATE, and NEXT_PAYMENT_DATE <= CALENDAR_PERIOD_END_DATE or ORIGINATION_DATE> CALENDAR_PERIOD_END_DATE, and both MATURITY_DATE and NEXT_PAYMENT_DATE less than ORIGINATION_DATE | MATURITY DATE = CALENDAR PERIOD END DATE + 1 day and NEXT PAYMENT DATE = CALENDAR PERIOD END DATE + 1 day and ORG TERM = calculated original term and PMT_FREQ = calculated original term and REMAIN_NO_PMTS_C = 1 | 2 | Pmt Freq <= 0, Trm Assumed | Payment frequency less than or equal to zero and all dates which can be used to calculate payment frequency are in the past |
9100 | If ((AMRT_TYPE_CODE <> 700 or (AMRT_TYPE_CODE = 700 and AMRT_TERM <> 0)) and AMRT_TERM (in days) < ORG_TERM (in days) | Set AMRT_TERM equal to ORG_TERM, AMRT_ TERM_MULT = ORG_ TERM_MULT | 2 | Org Term > Amrt Term | Amortization term can only be equal to zero on Non/Amortizing instruments and cannot be < Original Term |
9170 | If REMAIN_NO_PMTS_C + (REMAIN_TERM_C (in days) / REPRICE_FREQ (in days)) >2000 | Warning | 1 | >2000 Events for Record | The maximum number of events that can be modeled has been exceeded |
9171 | LRD_BALANCE=0 | LRD_BALANCE = CUR_ PAR_BAL | 2 | LRDBalance=0 | The balance as of the last reprice date cannot be equal to 0 |
9172 | ADJUSTABLE_TYPE_CODE <> 0 and LAST_REPRICE_DATE < ISSUE_DATE | Message Only | 1 | LastRepriceDate <IssueDate | When the last reprice date is less than the issue date, transfer pricing will not occur |
9174 | REPRICE_FREQ > 0 and ADJUSTABLE_TYPE_CODE = 0 | Message Only | 1 | AdjType=0 & ReprFreq>0 | Reprice frequency and adjustable type code are inconsistent |
9175 | REPRICE_FREQ = 0 and ADJUSTABLE_TYPE_CODE <> 0 | Message Only | 1 | AdjType<>0 & ReprFreq=0 | Reprice frequency and adjustable type code are inconsistent |
9176 | AMRT_TYPE_CODE = 100 and ADJUSTABLE_TYPE_CODE <> 0 | Message Only | 1 | AdjType<>0 & AmrtType=100 | Variable adjustable type on Conventional Fixed instrument |
9177 | AMRT_TYPE_CODE = 710 and ADJUSTABLE_TYPE_CODE <> 0 | ADJUSTABLE_TYPE_CODE =0 | 2 | AdjType<>0 & AmrtType=710 | Rule of 78's instrument should only have a fixed adjustable type code |
9178 | (AMRT_TYPE_CODE = 500 or AMRT_TYPE_CODE = 600) and ADJUSTABLE_TYPE_CODE = 0 | Message Only | 1 | AdjType=0 & Amrt(500,600) | Fixed adjustable type code on adjustable amortization codes (Conventional Adjustable and Adjustable Neg Am) |
9179 | LAST_PAYMENT_DATE > NEXT_PAYMENT_DATE and PAYMENT_FREQ > 0 | LAST_PAYMENT_DATE = NEXT_PAYMENT_DATE - PMT_FREQ | 2 | LastPayDate>=NextPayDate | Last payment date is greater than next payment date and can be calculated using payment frequency |
9179 | LAST_PAYMENT_DATE > NEXT_PAYMENT_DATE and PAYMENT_FREQ <= 0 | LAST_PAYMENT_DATE = ORIGINATION_DATE | 2 | LastPayDate>=NextPayDate | Last payment date is greater than next payment date, but cannot be calculated using payment frequency |
9180 | LAST_PAYMENT_DATE < ORIGINATION_DATE | LAST_PAYMENT_DATE = ORIGINATION_DATE | 2 | LastPayDate<OrigDate | Last payment date cannot be less than the origination date |
9181 | LAST_PAYMENT_DATE > CALENDAR_PERIOD_END_DATE and ORIGINATION_DATE <= CALENDAR_PERIOD_END_DATE | LAST_PAYMENT_DATE = CALENDAR_PERIOD_END_DATE | 2 | Last Pay Date>Calendar Period End Date | Last payment date cannot be greater than the Calendar Period End Date if the instrument originated in the past |
9182 | INT_TYPE = 2 and AMRT_TYPE CD = 100, 400, 500, 600 or 800 | INT_TYPE = 1 | 2 | IntType<>1,2 / Amrt Type | Interest type can only be arrears for conventionally amortizing instruments |
9182 | INT_TYPE <> 1 or 2 | INT_TYPE = 1 | 2 | IntType<>1,2 / Amrt Type | Interest type must be a valid OFSA code |
9183 | COMPOUND_BASIS_CODE <> 110, 120, 130, 140, 150, 160, 170 or 200 | COMPOUND_BASIS_CODE = 160 | 2 | Invalid CompBasisCode | Compounding basis code must be a valid OFSA code |
9184 | (ACCRUAL_BASIS_CODE = 1, 4 or 5) and (PMT_FREQ_MULT = D or AMRT_TYPE_CODE = 800, 801, or 802) | ACCRUAL_BASIS_CODE = 3 | 2 | AmrtType/Accrl Basis Error | Accrual basis code cannot have a 30 day month assumption on instruments defined by a payment schedule |
Related Topics