Step 3 – Initialize Values
Set all computed value fields to zero (VB6 : pv_set_to_zero_inc_info, pv_reset_rent)(ResetSystemFields, ResetRentalDetailFields)
Set to zero all system fields (calculated fields) in MA_INCOME
Step 4 – Income Rental Detail Calculation
Income detail calculation is also based on income model. The gross rent rate (MA_INCOME_DETAIL.GROSS_RENT_RATE) is taken from MA_PARM_INC_SUBCAT.RENT_RATE_EXPRESSION_x when model is economic model or user entered when model is actual. If no rate defined in sub category parameter, gross rent rate will be taken from income parameter MA_PARM_INCOME.GROSS_RENT_RATE_EXPRESSION_x
If Room Occupancy Percent is defined and rental type =’room’, we will use Room Occupancy Percent, otherwise, the percent is taken from gross_rent_percent.
- MA_INCOME_DETAIL. RENT_NET_UNITS= MA_INCOME_DETAIL. RENT_UNITS* gross rent percent/100
- MA_INCOME_DETAIL. GROSS_RENT_VALUE= MA_INCOME_DETAIL. RENT_NET_UNITS* gross rent rate
- If MA_INCOME_DETAIL. RATE_PERIOD=’m’ (monthly rate) then
- MA_INCOME_DETAIL. GROSS_RENT_VALUE*12
- If MA_INCOME_DETAIL. RATE_PERIOD=’d’ (daily rate) then
- MA_INCOME_DETAIL. GROSS_RENT_VALUE*365
If income rental detail record is the vacant record and has a number of vacant months then
- MA_INCOME_DETAIL. GROSS_RENT_VALUE =MA_INCOME_DETAIL. GROSS_RENT_VALUE/12
*number of vacant months
Step 5 – Compute Rental Detail Adjustments
The income rental detail adjustment are defined as all MA_TABLES records having a TABLE_TYPE = “incitem” AND INC_ITEM_CODE = “a”.
NOTE:
Auto Select Unique Code
When only one code is available and the Auto Select Unique Code option is selected, that code is used for the compute. This applies regardless of what the user has previously selected.
It applies, for example, if the code is changed in GNA, after the user set the code on the form. The update is made when either the property record is opened and resaved or the Mass Appraisal Compute batch process is run.
Is Required
If you select the Is Required option for a code after the user has created property records, you must verify that a code is selected for those records. Otherwise, an error is raised and the compute fails.
a) Calculate the Adjustment Value [VA]
For each adjustment we calculate the adjustment value MA_INCOME_DETAIL.(MA_TABLES.COLUMN_NAME)_VA
If no code [CD] is recorded in the income detail record entered, the value is set to NULL
- MA_INCOME_DETAIL.(MA_TABLES.COLUMN_NAME)_CD is null
- Then MA_INCOME_DETAIL.(MA_TABLES.COLUMN_NAME)_VA is set to NULL
If a code [CD] is recorded, the expression is evaluated (computed) and stored in the value [VA]
- MA_INCOME_DETAIL.(MA_TABLES.COLUMN_NAME)_VA = evaluated from the expression in MA_PARM_INCITEM.EXPRESSION
b) Perform the adjustment by selecting ( all non nulls MA_INCOME_DETAIL.(column)_VA for MA_TABLES.INC_ITEM_CODE = “a”. where MA_INCOME_DETAIL.(column)_OV = 0 ) OR selecting ( all non nulls MA_INCOME_DETAIL.(column)_OV_VALUE for MA_TABLES.INC_ITEM_CODE = “a” where MA_INCOME_DETAIL.(column)_OV = -1 )
There are 4 MATHS sign +,-,X,/ and 2 kinds of values a (amount), p (percentage) [PCT_AMT]
We take the starting gross rent value previously calculated MA_INCOME_DETAIL.GROSS_RENT_VALUE and we apply every adjustment to it.
Adjustments are cumulative.
Case MATHS = ‘+’
- If PCT_AMT = ‘a’ then we add MA_INCOME_DETAIL.(column_name)_VA to the value (GROSS_RENT_VALUE)
- If PCT_AMT = ‘p’ then we first apply the percentage represented by MA_INCOME_DETAIL.(column_name)_VA to the value (GROSS_RENT_VALUE) and then we add the result to the value. Example gross rent value = 10 MA_INCOME_DETAIL.BEDS_VA = 5 then (10 X 5%) + 10 = 10.50
Case MATHS = ‘-’
- If PCT_AMT = ‘a’ then we subtract MA_INCOME_DETAIL.(column_name)_VA to the value (GROSS_RENT_VALUE)
- If PCT_AMT = ‘p’ then we first apply the percentage represented by MA_INCOME_DETAIL.(column_name)_VA to the value (GROSS_RENT_VALUE) and then we subtract the result to the value. Example gross rent rate = 10 MA_INCOME_DETAIL.BEDS_VA = 5 then (10 X 5%) + 10 = 9.50
Case MATHS = ‘X’
- If PCT_AMT = ‘a’ then we multiply MA_INCOME_DETAIL.(column_name)_VA to the value (GROSS_RENT_VALUE).
- If PCT_AMT = ‘p’ then we multiply by the percentage represented by MA_INCOME_DETAIL.(column_name)_VA to the value (GROSS_RENT_VALUE) . Example gross rent value = 10 MA_INCOME_DETAIL.BEDS_VA = 90 then (10 X 90%) = 9
Case MATHS = ‘/’
- If PCT_AMT = ‘a’ then we divide the value (GROSS_RENT_VALUE) by MA_INCOME_DETAIL.(column_name)_VA
- If PCT_AMT = ‘p’ then we divide the value (GROSS_RENT_VALUE) by the percentage represented by MA_INCOME_DETAIL.(column_name)_VA to. Example gross rent value = 10 MA_INCOME_DETAIL.BEDS_VA = 90 then (10 / 90%) = 11.11111
Business Rule
-
- If MATHS or PCT_AMT are null then no operation is performed. (validate)
c) Process the Features
- The income rental detail features are defined as all MA_TABLES records having a TABLE_TYPE = “incitem” AND INC_ITEM_CODE = “f”.
Business Rule
-
- If MA_INCOME_DETAIL.(column)_CD is numeric then we move it to MA_INCOME_DETAIL.(column)_VA otherwise we set MA_INCOME_DETAIL.(column)_VA to NULL. (validate if new Expression applied to income features)
Step 6 – Summarize by Rental Type
Grouping income detail revenue by rental type (VB6 : pv_compute_income_detailActual, pv_compute_income_detailEconomic)(ApplyIncomeSubCategoryByRentalType)
Fields to compute based on rental type (room, food, telecom, dept, other) defined in MA_PARM_INC_SUBCAT (RENTAL_TYPE)
- MA_INCOME.(rental type)_RENT_PCT=sum of all MA_INCOME_DETAIL.GROSS_RENT_PCT
- MA_INCOME.(rental type)_RENT_UN=sum of all MA_INCOME_DETAIL.RENT_NET_UNITS
- MA_INCOME.(rental type)_RENT_VAL=sum of all MA_INCOME_DETAIL.GROSS_RENT_VALUE
- MA_INCOME.(rental type)_RENT_RATE =sum of all MA_INCOME_DETAIL.GROSS_RENT_RATE
Step 7 – Compute Income Gross Revenue
Set income revenue value (VB6 : pv_compute_income_detailActual, pv_compute_income_detailEconomic) (ApplyIncomeSubCategoryValuesToIncome)
- MA_INCOME.GROSS_RENT_VALUE=sum of all MA_INCOME_DETAIL.GROSS_RENT_VALUE
- MA_INCOME. RENT_UNITS= sum of MA_INCOME_DETAIL. RENT_UNITS (excluded other income)
- MA_INCOME. RENT_NET_UNITS= sum of MA_INCOME_DETAIL. RENT_NET_UNITS (excluded other income and vacant without vacant rate)
- MA_INCOME.GROSS_RENT_VALUE= sum of MA_INCOME_DETAIL.GROSS_RENT_ECO (excluded other income)
- MA_INCOME.GROSS_RENT_RATE= MA_INCOME.GROSS_RENT_VALUE/ MA_INCOME. RENT_NET_UNITS
- MA_INCOME.GROSS_RENT_PERCENT= MA_INCOME. RENT_NET_UNITS / MA_INCOME. RENT_UNITS*100
- MA_INCOME.OTHER_INCOME=sum of MA_INCOME_DETAIL.GROSS_RENT_ECO if flagged as other income in sub category parameter.
The vacancy is populated from parameter for economic models, otherwise we take it from sum of vacancy from income detail.
- MA_INCOME.VACANCY_VALUE= (MA_INCOME.GROSS_RENT_VALUE/ MA_INCOME.VACANCY_PCT)/100
- MA_INCOME.VACANCY_UNIT= MA_INCOME.VACANCY_VALUE/ MA_INCOME.GROSS_RENT_RATE
- MA_INCOME.VACANCY_UNIT=sum of MA_INCOME_DETAIL.RENT_NET_UNITS
- MA_INCOME.VACANCY_VALUE=sum of MA_INCOME_DETAIL.GROSS_RENT_VALUE
- MA_INCOME.VACANCY_PCT= (MA_INCOME.VACANCY_UNIT/ MA_INCOME.RENT_NET_UNITS)*100
The Short Fall adjustment is added. The short fall will occur after the calculation of vacancy. This adjustment is populated from parameter.
- MA_INCOME_SHORTFALL_PCT=MA_PARM_INCOME.SHORTFALL_RATE_EXPRESSION (1, 2, 3, 4, 5)
- MA_INCOME.SHORTFALL_VALUE = MA_INCOME_SHORTFALL_PCT * MA_INCOME.VACANCY_VALUE
Step 8 – Quality Adjustment
Set the value of the quality adjustment (Govern for Windows: pv_compute_quality_adj)(SetQualityAdjustment)
NOTE: Is Required
If you select the Is Required option for a code after the user has created property records, you must verify that a code is selected for those records. Otherwise, an error is raised and the compute fails.
The income quality is defined in MA_PARM_INCQUA records having a QUA_CODE = MA_INCOME.INCOME_QUALITY.
- MA_INCOME.INC_QUALITY_VALUE = (GROSS_RENT_VALUE/100*evaluated from the expression in MA_PARM_INCQUA.PERCENTAGE_EXPRESSION)-GROSS_RENT_VALUE
- MA_INCOME.INC_QUALITY_UNIT= INC_QUALITY_VALUE/GROSS_RENT_RATE
- MA_INCOME.INC_QUALITY_PCT= INC_QUALITY_VALUE*100/GROSS_RENT_VALUE
Total adjustment = GROSS_RENT_VALUE + INC_QUALITY_VALUE
Step 9 – Compute Vacancy and Loss
(VB6 : pv_compute_vacancy_loss)(SetVacancyLossAdjustment)
If EXPENSE_BY=’p’ then
- VACANCY_UNIT=RENT_NET_UNITS*VACANCY_PCT/100
- VACANCY_VALUE=total adjustment* VACANCY_PCT/100
If EXPENSE_BY=’u’ then
- VACANCY_VALUE= VACANCY_UNIT * GROSS_RENT_RATE
- VACANCY_PCT= VACANCY_UNIT*100/RENT_NET_UNITS
Else
- VACANCY_UNIT=VACANCY_VALUE/GROSS_RENT_RATE
- VACANCY_PCT=VACANCY_UNIT*100/RENT_NET_UNITS
Step 10 – Compute the Effective Gross for Income Record
(VB6: pv_compute_effective_gross)(CalculateEffectiveGross)
The MA_INCOME.OTHER_INCOME is calculated only for economic models = GROSS_RENT_VALUE * other income percent/100
- MA_INCOME.GROSS_EFFECTIVE=total adjustment – VACANCY_VALUE – SHORTFALL_VALUE + OTHER_INCOME
Step 11 – Compute economic values or expenses
(VB6: pv_compute_economic, pv_reset_expense) (CalculateExpenses) VALIDATE STEP
For departmental expenses:
If ROOM_EXP_PCT<>0 then
- ROOM_EXP_UNIT= ROOM_EXP_PCT*ROOM_RENT_UN/100
If ROOM_EXP_UNIT<>0 AND ROOM_RENT_UN<>0 then
- ROOM_EXP_PCT= ROOM_EXP_UNIT/ROOM_RENT_UN *100
- ROOM_EXP_VALUE=ROOM_EXP_PCT*ROOM_RENT_VAL/100
- Repeat the same calculation are based on ROOM expenses for all expenses below:
- FOOD_EXP_UNIT, FOOD_EXP_PCT, FOOD_EXP_VALUE, TELECOM_EXP_UNIT, TELECOM_EXP_PCT, TELECOM_EXP_VALUE, DEPT_EXP_UNIT,
- DEPT_EXP_PCT, DEPT_EXP_VALUE, OTHER_EXP_UNIT, OTHER_EXP_PCT, OTHER_EXP_VALUE
For undistributed expenses:
If FIXED_EXP_PCT <> then
- FIXED_EXP_UNIT=FIXED_EXP_PCT*RENT_NET_UNITS/100
If FIXED_EXPENSE_UNIT <>0 AND RENT_NET_UNITS<>0 then
- FIXED_EXP_PCT=FIXED_EXPENSE_UNIT/RENT_NET_UNITS*100
- FIXED_EXP_VALUE=FIXED_EXP_PCT*GROSS_EFFECTIVE/100
If the option ‘Undistributed Expenses Calculation without Departmental Expenses’ is checked, the effective gross will be subtracted by all Departmental expenses values. (parm)
The product from that equation is then used to calculate the Undistributed Expenses.
- Gross effective=GROSS_EFFECTIVE-(ROOM_EXP_VALUE+FOOD_EXP_VALUE+TELECOM_EXP_VALUE+DEPT_EXP_VALUE+ OTHER_EXP_VALUE)
For fixed expenses
- FIXED_EXP_VALUE=FIXED_EXP_PCT*gross effective subtracted departmental expenses/100
- Repeat the same calculation are based on FIXED expenses for all expenses below:
- OPERATING_EX_UNIT, OPERATING_EX_PCT, OPERATING_EX_VALUE
- REPLACE_EXP_UNIT, REPLACE_EXP_PCT, REPLACE_EXP_VALUE
- MISC_EXP_UNIT, MISC_EXP_PCT, MISC_EXP_VALUE
- TAXES_EXP_UNIT, TAXES_EXP_PCT, TAXES_EXP_VALUE
For FFE expenses
- If FFE_EXP_PCT <> then
- FFE_EXP_UNIT=FFE_EXP_PCT*ROOM_RENT_UN/100
- If FFE_EXPENSE_UNIT <>0 AND ROOM_RENT_UN <>0 then
- FFE_EXP_PCT=FFE_EXPENSE_UNIT/ ROOM_RENT_UN *100
- FFE_EXP_VALUE=FFE_EXP_PCT*GROSS_EFFECTIVE/100
Step 12 – Compute Income Expenses
(VB6 : pv_compute_added_field).
We process all expenses (The income expenses are defined as all MA_TABLES records having a TABLE_TYPE = “incexp”)
1) If MA_INCOME.(column)_EB”) (expense_by)=’p’ then
- For expenses=room, food, telecom, dept and other:
- MA_INCOME.(column)_VL = MA_INCOME.(column)_PC* MA_INCOME.(MA_PARM_INCOME.INCOME_APPLY_TO = apply to)_RENT_VAL (MA_PARM_INCOME.INCOME_APPLY_TO =droom, dfood, dtelecom, ddept, dother excepted the first character, apply to=room, food, telecom, dept, other)
If option ‘Rate Unite in Income Expense’ is ‘Yes’ then
- MA_INCOME.(column)_UN = MA_INCOME.(column)_VL /
- MA_INCOME.(apply to)_RENT_UN
Else
- MA_INCOME.(column)_UN = MA_INCOME.(column)_PC *
- MA_INCOME.(apply to)_RENT_UN /100
If the option ‘Undistributed Expenses Calculation without Departmental Expenses’ is checked,
The effective gross will be subtracted by all Departmental expenses values. The product from that equation is then used to calculate the Undistributed Expenses.
- Gross effective=GROSS_EFFECTIVE-(ROOM_EXP_VALUE+ FOOD_EXP_VALUE+ TELECOM_EXP_VALUE+ DEPT_EXP_VALUE+ OTHER_EXP_VALUE)
For other expenses (Undistributed expenses and furniture/fixture/equipment)
MA_INCOME.(column)_VL = MA_INCOME.(column)_PC * Gross Effective / 100
If option ‘Rate Unite in Income Expense’ is ‘Yes’ then
- MA_INCOME.(column)_UN = MA_INCOME.(column)_VL / MA_INCOME.RENT_NET_UNITS
Else
- MA_INCOME.(column)_UN = MA_INCOME.(column)_PC *
- MA_INCOME.RENT_NET_UNITS / 100
2) If MA_INCOME.(column)_EB”) (expense_by)=’u’ then
For expenses=room, food, telecom, dept and other:
If option ‘Rate Unite in Income Expense’ is ‘Yes’ then
- MA_INCOME.(column)_VL = MA_INCOME.(column)_UN *
- MA_INCOME.(apply to “_RENT_UN”)
- MA_INCOME.(column)_PC = MA_INCOME.(column)_UN * 100 /
- MA_INCOME.(apply to & “_RENT_UN”)
Else
- MA_INCOME.(column)_VL = MA_INCOME.(column)_UN *
- MA_INCOME.(apply to & “_RENT_RATE”)
- MA_INCOME.(column)_PC = MA_INCOME.(column)_UN * 100 /
- MA_INCOME.(apply to & “_RENT_UN)
For Undistributed Expenses
If the option ‘Undistributed Expenses Calculation without Departmental Expenses’ is checked, the effective gross will be subtracted by all Departmental expenses values. The product from that equation is then used to calculate the Undistributed Expenses.
- Gross effective=GROSS_EFFECTIVE-(ROOM_EXP_VALUE+ FOOD_EXP_VALUE+ TELECOM_EXP_VALUE+ DEPT_EXP_VALUE+ OTHER_EXP_VALUE)
For other expenses,
If option ‘Rate Unite in Income Expense’ is ‘Yes’ then
- MA_INCOME.(column)_VL = MA_INCOME.(column)_UN * MA_INCOME.RENT_NET_UNITS
- MA_INCOME.(column)_PC = MA_INCOME.(column)_VL * 100 / Gross Effective
else
- MA_INCOME.(column)_VL = MA_INCOME.(column)_UN *
- MA_INCOME.GROSS_RENT_RATE
- MA_INCOME.(column)_PC = MA_INCOME.(column)_UN * 100 /
- MA_INCOME.RENT_NET_UNITS
3) If MA_INCOME.(column)_EB”) (expense_by)=’g’ then
For expenses=room, food, telecom, dept and other:
If option ‘Rate Unite in Income Expense’ is ‘Yes’ then
- MA_INCOME.(column)_UN = MA_INCOME.(column)_VL /
- MA_INCOME.(apply to & “_RENT_UN”)
- MA_INCOME.(column)_PC = MA_INCOME.(column)_VL * 100 /
- MA_INCOME.(apply to & “_RENT_VAL)
Else
- MA_INCOME.(column)_UN = MA_INCOME.(column)_VL /
- MA_INCOME.(apply to & “_RENT_RATE)
- MA_INCOME.(column)_PC = MA_INCOME.(column)_VL * 100 /
- MA_INCOME.(apply to & “_RENT_VAL)
For other expenses,
If option ‘Rate Unite in Income Expense’ is ‘Yes’ then
- MA_INCOME.(column)_UN = MA_INCOME.(column)_VL / MA_INCOME.RENT_NET_UNITS
- MA_INCOME.(column)_PC = MA_INCOME.(column)_VL * 100 / Gross Effective
else
- MA_INCOME.(column)_UN = MA_INCOME.(column)_VL / MA_INCOME.GROSS_RENT_RATE
- MA_INCOME.(column)_PC = MA_INCOME.(column)_VL * 100 / Gross Effective
If income model is Actual then
For each type of MA_PARM_INCOME.INCOME_APPLY_TO (droom, dfood, dtelecom, ddept, dother, fix, ope, rep, misc, tax, ffe):
droom: MA_INCOME.ROOM_EXP_PCT= SUM of MA_INCOME.(column)_PC
MA_INCOME.ROOM_EXP_UNIT = SUM of MA_INCOME.(column)_UN
MA_INCOME.ROOM_EXP_VALUE = SUM of MA_INCOME.(column)_VL
dfood: MA_INCOME.FOOD_EXP_PCT= SUM of MA_INCOME.(column)_PC
MA_INCOME.FOOD_EXP_UNIT = SUM of MA_INCOME.(column)_UN
MA_INCOME.FOOD_EXP_VALUE = SUM of MA_INCOME.(column)_VL
dtelecom: MA_INCOME.TELECOM_EXP_PCT= SUM of MA_INCOME.(column)_PC
MA_INCOME.TELECOM_EXP_UNIT = SUM of MA_INCOME.(column)_UN
MA_INCOME.TELECOM_EXP_VALUE = SUM of MA_INCOME.(column)_VL
ddept: MA_INCOME.DEPT_EXP_PCT= SUM of MA_INCOME.(column)_PC
MA_INCOME.DEPT_EXP_UNIT = SUM of MA_INCOME.(column)_UN
MA_INCOME.DEPT_EXP_VALUE = SUM of MA_INCOME.(column)_VL
dother: MA_INCOME.OTHER_EXP_PCT= SUM of MA_INCOME.(column)_PC
MA_INCOME.OTHER_EXP_UNIT = SUM of MA_INCOME.(column)_UN
MA_INCOME.OTHER_EXP_VALUE = SUM of MA_INCOME.(column)_VL
fix: MA_INCOME.FIXED_EXP_PCT= SUM of MA_INCOME.(column)_PC
MA_INCOME.FIXED_EXP_UNIT = SUM of MA_INCOME.(column)_UN
MA_INCOME.FIXED_EXP_VALUE = SUM of MA_INCOME.(column)_VL
ope: MA_INCOME.OPERATING_EXP_PCT= SUM of MA_INCOME.(column)_PC
MA_INCOME.OPERATING_EXP_UNIT = SUM of MA_INCOME.(column)_UN
MA_INCOME.OPERATING_EXP_VALUE = SUM of MA_INCOME.(column)_VL
rep: MA_INCOME.REPLACE_EXP_PCT= SUM of MA_INCOME.(column)_PC
MA_INCOME.REPLACE_EXP_UNIT = SUM of MA_INCOME.(column)_UN
MA_INCOME.REPLACE_EXP_VALUE = SUM of MA_INCOME.(column)_VL
misc: MA_INCOME.MISC_EXP_PCT= SUM of MA_INCOME.(column)_PC
MA_INCOME.MISC_EXP_UNIT = SUM of MA_INCOME.(column)_UN
MA_INCOME.MISC_EXP_VALUE = SUM of MA_INCOME.(column)_VL
tax: MA_INCOME.TAXES_EXP_PCT= SUM of MA_INCOME.(column)_PC
MA_INCOME.TAXES_EXP_UNIT = SUM of MA_INCOME.(column)_UN
MA_INCOME.TAXES_EXP_VALUE = SUM of MA_INCOME.(column)_VL
ffe: MA_INCOME.FFE_EXP_PCT= SUM of MA_INCOME.(column)_PC
MA_INCOME.FFE_EXP_UNIT = SUM of MA_INCOME.(column)_UN
MA_INCOME.FFE_EXP_VALUE = SUM of MA_INCOME.(column)_VL
Step 13 – Compute the Total Gross and Net By Percent
(VB6 : pv_compute_exp_to_net) (CalculateTotalValue)
- total expense percent = (ROOM_EXP_PCT+FOOD_EXP_PCT+TELECOM_EXP_PCT+DEPT_EXP_PCT+OTHER_EXP_PCT+FFE_EXP_PCT+FIXED_EXP_PCT+OPERATING_EX_PCT+REPLACE_EXP_PCT+ MISC_EXP_PCT+TAXES_EXP_PCT)
- total expense unit = (ROOM_EXP_UNIT+FOOD_EXP_UNIT+TELECOM_EXP_UNIT+DEPT_EXP_UNIT+OTHER_EXP_UNIT+FFE_EXP_UNIT+FIXED_EXP_UNIT+OPERATING_EX_UNIT+REPLACE_EXP_UNIT+ MISC_EXP_UNIT+TAXES_EXP_UNIT)
- total expense value = (ROOM_EXP_VALUE+FOOD_EXP_VALUE+TELECOM_EXP_VALUE+DEPT_EXP_VALUE+OTHER_EXP_VALUE+FFE_EXP_VALUE+FIXED_EXP_VALUE+OPERATING_EX_VALUE+REPLACE_EXP_VALUE+ MISC_EXP_VALUE+TAXES_EXP_VALUE) rounded with no decimal, or take override value
- total expense value = (ROOM_EXP_VA_OV+FOOD_EXP_VA_OV+TELECOM_EXP_VA_OV+DEPT_EXP_VA_OV+OTHER_EXP_VA_OV+FFE_EXP_VA_OV+FIXED_EXP_VA_OV+OPERATING_EX_VA_OV+REPLACE_EXP_VA_OV+ MISC_EXP_VA_OV+TAXES_EXP_VA_OV)
MA_INCOME.NET_PCT = 100 – total expense percent
MA_INCOME.OVERALL_ADJ_PCT = total expense percent
MA_INCOME.NET_UNIT = MA_INCOME.RENT_NET_UNITS – total expense unit
MA_INCOME.OVERALL_ADJ_UNIT = total expense unit
MA_INCOME.OVERALL_ADJ_VALUE = total expense value
MA_INCOME.NET_VALUE = MA_INCOME.GROSS_EFFECTIVE – MA_INCOME.OVERALL_ADJ_VALUE+ MA_INCOME.FINAL_ADJ
Step 14 – Compute the Site Adjustment for this Record
(Govern for Windows: pv_compute_site) (ApplySiteAdjustment)
Site adjustment is based on the value of MA_INCOME.SITE_NO
Note: Is Required
If you select the Is Required option for a code after the user has created property records, you must verify that a code is selected for those records. Otherwise, an error is raised and the compute fails.
The income quality is defined in MA_PARM_INCQUA records having a QUA_CODE = MA_INCOME.INCOME_QUALITY.
The adjustment (MA_INCOME.SITE_ADJ_VALUE) is calculated as
(MA_INCOME.NET_VALUE * MA_SITE.ADJ_INC_PERCENT / 100) + MA_SITE.ADJ_INC_AMOUNT
MA_INCOME.SITE_ADJ_UNIT is calculated as MA_INCOME.SITE_ADJ_VALUE
MA_INCOME.GROSS_RENT_RATE
MA_INCOME.SITE_ADJ_PCT is calculated as MA_INCOME.SITE_ADJ_VALUE
MA_INCOME.GROSS_RENT_VALUE * 100
The site adjustment (MA_INCOME.SITE_ADJ_VALUE) is added to the MA_INCOME.NET_VALUE.
Step 15 – Compute DIR and GRM Value
(VB6 : pv_compute_dir_grm) (CalculateGrmDirValues)
MA_INCOME.INCOME_DIR = (MA_INCOME.NET_VALUE + MA_INCOME.SITE_ADJ_VALUE) * 100
MA_INCOME.DIR_RATE
MA_INCOME.INCOME_GRM = (MA_INCOME.GROSS_EFFECTIVE + MA_INCOME.SITE_ADJ_VALUE) *
MA_INCOME.GRM_RATE
MA_INCOME.INCOME_DIR and MA_INCOME.INCOME_GRM could not be a negative amount. If so, it must be equal to 0